on c868502 help sign in
unity8/plugins/Unity/categories.h
77 lines 1.8 kB history raw
1/*
2 * Copyright (C) 2013 Canonical, Ltd.
3 *
4 * Authors:
5 * Michał Sawicz <michal.sawicz@canonical.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; version 3.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
21#ifndef CATEGORIES_H
22#define CATEGORIES_H
24// unity-core
25#include <UnityCore/Scope.h>
27// dee-qt
28#include "deelistmodel.h"
30#include <QSet>
31#include <QTimer>
33class Categories : public DeeListModel
35 Q_OBJECT
37 Q_ENUMS(Roles)
39public:
40 explicit Categories(QObject* parent = 0);
41 ~Categories();
43 enum Roles {
44 RoleId,
45 RoleName,
46 RoleIcon,
47 RoleRenderer,
48 RoleContentType,
49 RoleHints,
50 RoleResults,
51 RoleCount
52 };
54 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
56 QHash<int, QByteArray> roleNames() const;
58 /* setters */
59 void setUnityScope(const unity::dash::Scope::Ptr& scope);
61private Q_SLOTS:
62 void onCountChanged();
63 void onEmitCountChanged();
65private:
66 void onCategoriesModelChanged(unity::glib::Object<DeeModel> model);
68 DeeListModel* getFilter(int index) const;
70 unity::dash::Scope::Ptr m_unityScope;
71 QTimer m_timer;
72 QSet<DeeListModel*> m_timerFilters;
73 QHash<int, QByteArray> m_roles;
74 mutable QMap<int, std::shared_ptr<DeeListModel>> m_filters;
75};
77#endif // CATEGORIES_H