Quassel no longer gets a nervous breakdown when you select too many buffers - fixes...
[quassel.git] / src / client / selectionmodelsynchronizer.h
index 2e153b6..b43ef26 100644 (file)
@@ -32,7 +32,7 @@ class SelectionModelSynchronizer : public QObject {
 public:
   SelectionModelSynchronizer(QAbstractItemModel *parent = 0);
 
-  void addSelectionModel(QItemSelectionModel *selectionModel);
+  void synchronizeSelectionModel(QItemSelectionModel *selectionModel);
   void removeSelectionModel(QItemSelectionModel *selectionModel);
 
   inline QAbstractItemModel *model() { return _model; }
@@ -40,13 +40,9 @@ public:
   inline QModelIndex currentIndex() const { return _selectionModel.currentIndex(); }
   inline QItemSelection currentSelection() const { return _selectionModel.selection(); }
 
-signals:
-  void setCurrentIndex(const QModelIndex &current, QItemSelectionModel::SelectionFlags command);
-  void select(const QItemSelection &selected, QItemSelectionModel::SelectionFlags command);
-
 private slots:
-  void mappedCurrentChanged(const QModelIndex &current, const QModelIndex &previous);
-  void mappedSelectionChanged(const QItemSelection &selected, const QItemSelection &previous);
+  void syncedCurrentChanged(const QModelIndex &current, const QModelIndex &previous);
+  void syncedSelectionChanged(const QItemSelection &selected, const QItemSelection &previous);
 
   void setCurrentIndex(const QModelIndex &index);
   void setCurrentSelection(const QItemSelection &selection);
@@ -54,15 +50,21 @@ private slots:
   void currentChanged(const QModelIndex &current, const QModelIndex &previous);
   void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
 
+  void selectionModelDestroyed(QObject *object);
+
 private:
   QAbstractItemModel *_model;
   QItemSelectionModel _selectionModel;
+  bool _changeCurrentEnabled;
+  bool _changeSelectionEnabled;
 
   bool checkBaseModel(QItemSelectionModel *model);
+  QModelIndex mapFromSource(const QModelIndex &sourceIndex, const QItemSelectionModel *selectionModel);
+  QItemSelection mapSelectionFromSource(const QItemSelection &sourceSelection, const QItemSelectionModel *selectionModel);
   QModelIndex mapToSource(const QModelIndex &index, QItemSelectionModel *selectionModel);
   QItemSelection mapSelectionToSource(const QItemSelection &selection, QItemSelectionModel *selectionModel);
 
-
+  QSet<QItemSelectionModel *> _selectionModels;
 };
 
 #endif