on 390b5bc help sign in
unity8/plugins/Utils/appdrawerproxymodel.h
69 lines 2.0 kB history raw
1#include <QSortFilterProxyModel>
3#include <unity/shell/launcher/AppDrawerModelInterface.h>
5using namespace unity::shell::launcher;
7class AppDrawerProxyModel: public QSortFilterProxyModel
8{
9 Q_OBJECT
10 Q_ENUMS(GroupBy)
11 Q_ENUMS(SortBy)
12 Q_PROPERTY(QAbstractItemModel* source READ source WRITE setSource NOTIFY sourceChanged)
13 Q_PROPERTY(GroupBy group READ group WRITE setGroup NOTIFY groupChanged)
14 Q_PROPERTY(QString filterLetter READ filterLetter WRITE setFilterLetter NOTIFY filterLetterChanged)
15 Q_PROPERTY(QString filterString READ filterString WRITE setFilterString NOTIFY filterStringChanged)
16 Q_PROPERTY(SortBy sortBy READ sortBy WRITE setSortBy NOTIFY sortByChanged)
17 Q_PROPERTY(int count READ count NOTIFY countChanged)
19public:
20 enum GroupBy {
21 GroupByNone,
22 GroupByAll,
23 GroupByAToZ
24 };
25 enum SortBy {
26 SortByAToZ,
27 SortByUsage
28 };
30 AppDrawerProxyModel(QObject* parent = nullptr);
32 QAbstractItemModel* source() const;
33 void setSource(QAbstractItemModel* source);
35 GroupBy group() const;
36 void setGroup(GroupBy group);
38 QString filterLetter() const;
39 void setFilterLetter(const QString &filterLetter);
41 QString filterString() const;
42 void setFilterString(const QString &filterString);
44 SortBy sortBy() const;
45 void setSortBy(SortBy sortBy);
47 int count() const;
49 QVariant data(const QModelIndex &index, int role) const override;
50 QHash<int, QByteArray> roleNames() const override;
52protected:
53 bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override;
55Q_SIGNALS:
56 void sourceChanged();
57 void groupChanged();
58 void filterLetterChanged();
59 void filterStringChanged();
60 void sortByChanged();
61 void countChanged();
63private:
64 QAbstractItemModel* m_source = nullptr;
65 GroupBy m_group = GroupByNone;
66 QString m_filterLetter;
67 QString m_filterString;
68 SortBy m_sortBy = SortByAToZ;
69};