X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FTocModel.h;h=7475416160198a57ac531b2341acaeee25b3f959;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=59e83a999c39fc92b424008802e5082525534dd0;hpb=6ad1b1cd0968021c7aba0b3358a3e0e860c61ed7;p=lyx.git diff --git a/src/frontends/qt4/TocModel.h b/src/frontends/qt4/TocModel.h index 59e83a999c..7475416160 100644 --- a/src/frontends/qt4/TocModel.h +++ b/src/frontends/qt4/TocModel.h @@ -14,9 +14,10 @@ #include "qt_helpers.h" -#include +#include #include -#include + +class QSortFilterProxyModel; namespace lyx { @@ -28,26 +29,42 @@ class TocItem; namespace frontend { +/// A QStandardItemModel that gives access to the reset method. +/// This is needed in order to fix http://www.lyx.org/trac/ticket/3740 class TocTypeModel : public QStandardItemModel { public: /// - TocTypeModel(QObject * parent = 0); + TocTypeModel(QObject * parent); /// void reset(); }; - -class TocModel : public QStandardItemModel +/// A class that adapt the TocBackend of a Buffer into standard Qt models for +/// GUI visualisation. +/// There is one TocModel per list in the TocBackend. +class TocModel { public: /// - TocModel(QObject * parent = 0); + TocModel(QObject * parent); /// void reset(Toc const & toc); /// void reset(); /// + void updateItem(DocIterator const & dit); + /// + void clear(); + /// + QAbstractItemModel * model(); + /// + QAbstractItemModel const * model() const; + /// + void sort(bool sort_it); + /// + bool isSorted() const { return is_sorted_; } + /// TocItem const & tocItem(QModelIndex const & index) const; /// QModelIndex modelIndex(DocIterator const & dit) const; @@ -58,33 +75,35 @@ private: /// void populate(unsigned int & index, QModelIndex const & parent); /// - QList toc_indexes_; + TocTypeModel * model_; + /// + QSortFilterProxyModel * sorted_model_; + /// + bool is_sorted_; /// Toc const * toc_; /// int maxdepth_; + /// int mindepth_; }; -class TocModels: public QObject +/// A container for the different TocModels. +class TocModels : public QObject { Q_OBJECT public: /// TocModels(); /// - typedef QHash::const_iterator const_iterator; - const_iterator begin() const { return models_.begin(); } - const_iterator end() const { return models_.end(); } - /// void reset(BufferView const * bv); /// int depth(QString const & type); /// - QStandardItemModel * model(QString const & type); + QAbstractItemModel * model(QString const & type); /// - QStandardItemModel * nameModel() { return names_; } + QAbstractItemModel * nameModel(); /// QModelIndex currentIndex(QString const & type) const; /// @@ -93,23 +112,33 @@ public: void init(Buffer const & buffer); /// void updateBackend() const; + /// + void updateItem(QString const & type, DocIterator const & dit); + /// + void sort(QString const & type, bool sort_it); + /// + bool isSorted(QString const & type) const; + /// the item that is currently selected + TocItem const currentItem(QString const & type, + QModelIndex const & index) const; Q_SIGNALS: /// Signal that the internal toc_models_ has been reset. void modelReset(); private: + typedef QHash::const_iterator const_iterator; typedef QHash::iterator iterator; /// void clear(); /// - void deleteAll(); - /// BufferView const * bv_; /// QHash models_; /// TocTypeModel * names_; + /// + QSortFilterProxyModel * names_sorted_; }; } // namespace frontend