File indexing completed on 2024-06-09 05:30:57
0001 /* 0002 SPDX-FileCopyrightText: 2014-2015 Eike Hein <hein@kde.org> 0003 SPDX-FileCopyrightText: 2016-2017 Ivan Cukic <ivan.cukic@kde.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #pragma once 0009 0010 #include "placeholdermodel.h" 0011 0012 #include <QPointer> 0013 0014 #include <KConfig> 0015 0016 class PlaceholderModel; 0017 0018 namespace KActivities 0019 { 0020 class Consumer; 0021 namespace Stats 0022 { 0023 namespace Terms 0024 { 0025 class Activity; 0026 } // namespace Terms 0027 } // namespace Stats 0028 } // namespace KActivities 0029 0030 class KAStatsFavoritesModel : public PlaceholderModel 0031 { 0032 Q_OBJECT 0033 0034 Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged) 0035 Q_PROPERTY(QStringList favorites READ favorites WRITE setFavorites NOTIFY favoritesChanged) 0036 Q_PROPERTY(int maxFavorites READ maxFavorites WRITE setMaxFavorites NOTIFY maxFavoritesChanged) 0037 0038 Q_PROPERTY(QObject *activities READ activities CONSTANT) 0039 0040 public: 0041 explicit KAStatsFavoritesModel(QObject *parent = nullptr); 0042 ~KAStatsFavoritesModel() override; 0043 0044 QString description() const override; 0045 0046 Q_INVOKABLE bool trigger(int row, const QString &actionId, const QVariant &argument) override; 0047 0048 bool enabled() const; 0049 void setEnabled(bool enable); 0050 0051 QStringList favorites() const; 0052 void setFavorites(const QStringList &favorites); 0053 0054 int maxFavorites() const; 0055 void setMaxFavorites(int max); 0056 0057 Q_INVOKABLE bool isFavorite(const QString &id) const; 0058 0059 Q_INVOKABLE void addFavorite(const QString &id, int index = -1); 0060 Q_INVOKABLE void removeFavorite(const QString &id); 0061 0062 Q_INVOKABLE void addFavoriteTo(const QString &id, const QString &activityId, int index = -1); 0063 Q_INVOKABLE void removeFavoriteFrom(const QString &id, const QString &activityId); 0064 0065 Q_INVOKABLE void setFavoriteOn(const QString &id, const QString &activityId); 0066 0067 Q_INVOKABLE void portOldFavorites(const QStringList &ids); 0068 0069 Q_INVOKABLE QStringList linkedActivitiesFor(const QString &id) const; 0070 0071 Q_INVOKABLE void moveRow(int from, int to); 0072 0073 Q_INVOKABLE void initForClient(const QString &client); 0074 0075 QObject *activities() const; 0076 Q_INVOKABLE QString activityNameForId(const QString &activityId) const; 0077 0078 AbstractModel *favoritesModel() override; 0079 0080 public Q_SLOTS: 0081 void refresh() override; 0082 0083 Q_SIGNALS: 0084 void enabledChanged() const; 0085 void favoritesChanged() const; 0086 void maxFavoritesChanged() const; 0087 0088 private: 0089 class Private; 0090 Private *d; 0091 0092 AbstractEntry *favoriteFromId(const QString &id) const; 0093 0094 void addFavoriteTo(const QString &id, const KActivities::Stats::Terms::Activity &activityId, int index = -1); 0095 void removeFavoriteFrom(const QString &id, const KActivities::Stats::Terms::Activity &activityId); 0096 0097 bool m_enabled; 0098 0099 int m_maxFavorites; 0100 0101 KActivities::Consumer *m_activities; 0102 };