common: Make SyncableObject non-copyable
[quassel.git] / src / qtui / settingspages / aliasesmodel.h
index 74a0cfd..3dc7f0d 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-09 by the Quassel Project                          *
+ *   Copyright (C) 2005-2020 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   You should have received a copy of the GNU General Public License     *
  *   along with this program; if not, write to the                         *
  *   Free Software Foundation, Inc.,                                       *
- *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
-#ifndef ALIASESMODEL_H
-#define ALIASESMODEL_H
+#pragma once
+
+#include <memory>
 
 #include <QAbstractItemModel>
-#include <QPointer>
 
 #include "clientaliasmanager.h"
 
-class AliasesModel : public QAbstractItemModel {
-  Q_OBJECT
+class AliasesModel : public QAbstractItemModel
+{
+    Q_OBJECT
 
 public:
-  AliasesModel(QObject *parent = 0);
+    AliasesModel(QObject* parent = nullptr);
 
-  virtual QVariant data(const QModelIndex &index, int role) const;
-  virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
+    QVariant data(const QModelIndex& index, int role) const override;
+    bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole) override;
 
-  virtual Qt::ItemFlags flags(const QModelIndex &index) const;
+    Qt::ItemFlags flags(const QModelIndex& index) const override;
 
-  QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
+    QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
 
-  QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
+    QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const override;
 
-  inline QModelIndex parent(const QModelIndex &) const { return QModelIndex(); }
+    inline QModelIndex parent(const QModelIndex&) const override { return {}; }
 
-  inline int rowCount(const QModelIndex &parent = QModelIndex()) const;
-  inline int columnCount(const QModelIndex &parent = QModelIndex()) const;
+    inline int rowCount(const QModelIndex& parent = QModelIndex()) const override;
+    inline int columnCount(const QModelIndex& parent = QModelIndex()) const override;
 
-  inline bool configChanged() const { return _configChanged; }
-  inline bool isReady() const { return _modelReady; }
+    inline bool hasConfigChanged() const { return static_cast<bool>(_clonedAliasManager); }
+    inline bool isReady() const { return _modelReady; }
 
 public slots:
-  void newAlias();
-  void loadDefaults();
-  void removeAlias(int index);
-  void revert();
-  void commit();
+    void newAlias();
+    void loadDefaults();
+    void removeAlias(int index);
+    void revert() override;
+    void commit();
 
 signals:
-  void configChanged(bool);
-  void modelReady(bool);
+    void configChanged(bool);
+    void modelReady(bool);
 
 private:
-  ClientAliasManager _clonedAliasManager;
-  bool _configChanged;
-  bool _modelReady;
+    std::unique_ptr<ClientAliasManager> _clonedAliasManager;
+    bool _modelReady{false};
 
-  const AliasManager &aliasManager() const;
-  AliasManager &aliasManager();
-  AliasManager &cloneAliasManager();
+    const AliasManager& aliasManager() const;
+    AliasManager& aliasManager();
+    AliasManager& cloneAliasManager();
 
 private slots:
-  void clientConnected();
-  void clientDisconnected();
-  void initDone();
+    void clientConnected();
+    void clientDisconnected();
+    void initDone();
 };
 
 // Inlines
-int AliasesModel::rowCount(const QModelIndex &parent) const {
-  Q_UNUSED(parent);
-  return isReady() ? aliasManager().count() : 0;
+int AliasesModel::rowCount(const QModelIndex& parent) const
+{
+    Q_UNUSED(parent);
+    return isReady() ? aliasManager().count() : 0;
 }
 
-int AliasesModel::columnCount(const QModelIndex &parent) const {
-  Q_UNUSED(parent);
-  return isReady() ? 2 : 0;
+int AliasesModel::columnCount(const QModelIndex& parent) const
+{
+    Q_UNUSED(parent);
+    return isReady() ? 2 : 0;
 }
-    
-
-#endif //ALIASESMODEL_H