Unity 8
qlimitproxymodelqml.h
1 /*
2  * Copyright (C) 2012, 2013 Canonical, Ltd.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; version 3.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  */
16 
17 #ifndef QLIMITPROXYMODELQML_H
18 #define QLIMITPROXYMODELQML_H
19 
20 #include <QIdentityProxyModel>
21 
22 class QLimitProxyModelQML : public QIdentityProxyModel
23 {
24  Q_OBJECT
25 
26  Q_PROPERTY(QAbstractItemModel* model READ sourceModel WRITE setModel NOTIFY modelChanged)
27  Q_PROPERTY(int limit READ limit WRITE setLimit NOTIFY limitChanged)
28  Q_PROPERTY(int count READ rowCount NOTIFY countChanged)
29 
30 public:
31  explicit QLimitProxyModelQML(QObject *parent = 0);
32 
33  /* getters */
34  int limit() const;
35  int rowCount(const QModelIndex &parent = QModelIndex()) const override;
36  QHash<int, QByteArray> roleNames() const override;
37 
38  /* setters */
39  void setModel(QAbstractItemModel *model);
40  void setLimit(int limit);
41 
42 Q_SIGNALS:
43  void limitChanged();
44  void totalCountChanged();
45  void countChanged();
46  void modelChanged();
47 
48 private Q_SLOTS:
49  void sourceRowsAboutToBeInserted(const QModelIndex &parent, int start, int end);
50  void sourceRowsAboutToBeRemoved(const QModelIndex &parent, int start, int end);
51  void sourceRowsInserted(const QModelIndex &parent, int start, int end);
52  void sourceRowsRemoved(const QModelIndex &parent, int start, int end);
53 
54 private:
55  int m_limit;
56  bool m_sourceInserting;
57  bool m_sourceRemoving;
58  int m_dataChangedBegin;
59  int m_dataChangedEnd;
60 };
61 
62 #endif // QLIMITPROXYMODELQML_H