public:
SelectionModelSynchronizer(QAbstractItemModel *parent = 0);
- void addSelectionModel(QItemSelectionModel *selectionModel);
+ void synchronizeSelectionModel(QItemSelectionModel *selectionModel);
void removeSelectionModel(QItemSelectionModel *selectionModel);
inline QAbstractItemModel *model() { return _model; }
inline QModelIndex currentIndex() const { return _selectionModel.currentIndex(); }
inline QItemSelection currentSelection() const { return _selectionModel.selection(); }
-signals:
- void setCurrentIndex(const QModelIndex ¤t, QItemSelectionModel::SelectionFlags command);
- void select(const QItemSelection &selected, QItemSelectionModel::SelectionFlags command);
-
private slots:
- void mappedCurrentChanged(const QModelIndex ¤t, const QModelIndex &previous);
- void mappedSelectionChanged(const QItemSelection &selected, const QItemSelection &previous);
+ void syncedCurrentChanged(const QModelIndex ¤t, const QModelIndex &previous);
+ void syncedSelectionChanged(const QItemSelection &selected, const QItemSelection &previous);
void setCurrentIndex(const QModelIndex &index);
void setCurrentSelection(const QItemSelection &selection);
void currentChanged(const QModelIndex ¤t, 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