OpenMW
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
idtableproxymodel.hpp
Go to the documentation of this file.
1 #ifndef CSM_WOLRD_IDTABLEPROXYMODEL_H
2 #define CSM_WOLRD_IDTABLEPROXYMODEL_H
3 
4 #include <string>
5 
6 #include <map>
7 
8 #include <QSortFilterProxyModel>
9 
10 #include "../filter/node.hpp"
11 
12 #include "columns.hpp"
13 
14 namespace CSMWorld
15 {
17  {
18  Q_OBJECT
19 
20  std::shared_ptr<CSMFilter::Node> mFilter;
21  std::map<int, int> mColumnMap; // column ID, column index in this model (or -1)
22 
23  // Cache of enum values for enum columns (e.g. Modified, Record Type).
24  // Used to speed up comparisons during the sort by such columns.
25  typedef std::map<Columns::ColumnId, std::vector<std::string> > EnumColumnCache;
27 
28  protected:
29 
31 
32  private:
33 
34  void updateColumnMap();
35 
36  public:
37 
38  IdTableProxyModel (QObject *parent = 0);
39 
40  virtual QModelIndex getModelIndex (const std::string& id, int column) const;
41 
42  virtual void setSourceModel(QAbstractItemModel *model);
43 
44  void setFilter (const std::shared_ptr<CSMFilter::Node>& filter);
45 
46  void refreshFilter();
47 
48  protected:
49 
50  virtual bool lessThan(const QModelIndex &left, const QModelIndex &right) const;
51 
52  virtual bool filterAcceptsRow (int sourceRow, const QModelIndex& sourceParent) const;
53 
54  QString getRecordId(int sourceRow) const;
55 
56  protected slots:
57 
58  virtual void sourceRowsInserted(const QModelIndex &parent, int start, int end);
59 
60  virtual void sourceRowsRemoved(const QModelIndex &parent, int start, int end);
61 
62  virtual void sourceDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);
63 
64  signals:
65 
66  void rowAdded(const std::string &id);
67  };
68 }
69 
70 #endif
std::map< int, int > mColumnMap
Definition: idtableproxymodel.hpp:21
QString getRecordId(int sourceRow) const
Definition: idtableproxymodel.cpp:114
static const struct @8 signals[]
virtual bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
Definition: idtableproxymodel.cpp:33
virtual bool lessThan(const QModelIndex &left, const QModelIndex &right) const
Definition: idtableproxymodel.cpp:93
IdTableBase * mSourceModel
Definition: idtableproxymodel.hpp:30
void updateColumnMap()
Definition: idtableproxymodel.cpp:19
EnumColumnCache mEnumColumnCache
Definition: idtableproxymodel.hpp:26
virtual QModelIndex getModelIndex(const std::string &id, int column) const
Definition: idtableproxymodel.cpp:59
std::map< Columns::ColumnId, std::vector< std::string > > EnumColumnCache
Definition: idtableproxymodel.hpp:25
virtual void setSourceModel(QAbstractItemModel *model)
Definition: idtableproxymodel.cpp:66
Definition: idtableproxymodel.hpp:16
virtual void sourceRowsRemoved(const QModelIndex &parent, int start, int end)
Definition: idtableproxymodel.cpp:137
std::shared_ptr< CSMFilter::Node > mFilter
Definition: idtableproxymodel.hpp:20
IdTableProxyModel(QObject *parent=0)
Definition: idtableproxymodel.cpp:52
Definition: idtablebase.hpp:12
virtual void sourceDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)
Definition: idtableproxymodel.cpp:142
void refreshFilter()
Definition: idtableproxymodel.cpp:122
void rowAdded(const std::string &id)
void setFilter(const std::shared_ptr< CSMFilter::Node > &filter)
Definition: idtableproxymodel.cpp:85
virtual void sourceRowsInserted(const QModelIndex &parent, int start, int end)
Definition: idtableproxymodel.cpp:128