1 /* 2 SPDX-FileCopyrightText: 2014-2015 Eike Hein <hein@kde.org> 3 SPDX-FileCopyrightText: 2016-2017 Ivan Cukic <ivan.cukic@kde.org> 4 5 SPDX-License-Identifier: GPL-2.0-or-later 6 */ 7 8 #pragma once 9 10 #include "placeholdermodel.h" 11 12 #include <QPointer> 13 14 #include <KConfig> 15 16 class PlaceholderModel; 17 18 namespace KActivities 19 { 20 class Consumer; 21 namespace Stats 22 { 23 namespace Terms 24 { 25 class Activity; 26 } // namespace Terms 27 } // namespace Stats 28 } // namespace KActivities 29 30 class KAStatsFavoritesModel : public PlaceholderModel 31 { 32 Q_OBJECT 33 34 Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged) 35 Q_PROPERTY(QStringList favorites READ favorites WRITE setFavorites NOTIFY favoritesChanged) 36 Q_PROPERTY(int maxFavorites READ maxFavorites WRITE setMaxFavorites NOTIFY maxFavoritesChanged) 37 38 Q_PROPERTY(QObject *activities READ activities CONSTANT) 39 40 public: 41 explicit KAStatsFavoritesModel(QObject *parent = nullptr); 42 ~KAStatsFavoritesModel() override; 43 44 QString description() const override; 45 46 Q_INVOKABLE bool trigger(int row, const QString &actionId, const QVariant &argument) override; 47 48 bool enabled() const; 49 void setEnabled(bool enable); 50 51 QStringList favorites() const; 52 void setFavorites(const QStringList &favorites); 53 54 int maxFavorites() const; 55 void setMaxFavorites(int max); 56 57 Q_INVOKABLE bool isFavorite(const QString &id) const; 58 59 Q_INVOKABLE void addFavorite(const QString &id, int index = -1); 60 Q_INVOKABLE void removeFavorite(const QString &id); 61 62 Q_INVOKABLE void addFavoriteTo(const QString &id, const QString &activityId, int index = -1); 63 Q_INVOKABLE void removeFavoriteFrom(const QString &id, const QString &activityId); 64 65 Q_INVOKABLE void setFavoriteOn(const QString &id, const QString &activityId); 66 67 Q_INVOKABLE void portOldFavorites(const QStringList &ids); 68 69 Q_INVOKABLE QStringList linkedActivitiesFor(const QString &id) const; 70 71 Q_INVOKABLE void moveRow(int from, int to); 72 73 Q_INVOKABLE void initForClient(const QString &client); 74 75 QObject *activities() const; 76 Q_INVOKABLE QString activityNameForId(const QString &activityId) const; 77 78 AbstractModel *favoritesModel() override; 79 80 public Q_SLOTS: 81 void refresh() override; 82 83 Q_SIGNALS: 84 void enabledChanged() const; 85 void favoritesChanged() const; 86 void maxFavoritesChanged() const; 87 88 private: 89 class Private; 90 Private *d; 91 92 AbstractEntry *favoriteFromId(const QString &id) const; 93 94 void addFavoriteTo(const QString &id, const KActivities::Stats::Terms::Activity &activityId, int index = -1); 95 void removeFavoriteFrom(const QString &id, const KActivities::Stats::Terms::Activity &activityId); 96 97 bool m_enabled; 98 99 int m_maxFavorites; 100 101 KActivities::Consumer *m_activities; 102 }; 103