File indexing completed on 2024-06-16 05:09:58
0001 /* 0002 SPDX-FileCopyrightText: 2014-2015 Eike Hein <hein@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "abstractmodel.h" 0010 0011 #include <QPointer> 0012 0013 class SimpleFavoritesModel : public AbstractModel 0014 { 0015 Q_OBJECT 0016 0017 Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged) 0018 Q_PROPERTY(QStringList favorites READ favorites WRITE setFavorites NOTIFY favoritesChanged) 0019 Q_PROPERTY(int maxFavorites READ maxFavorites WRITE setMaxFavorites NOTIFY maxFavoritesChanged) 0020 Q_PROPERTY(int dropPlaceholderIndex READ dropPlaceholderIndex WRITE setDropPlaceholderIndex NOTIFY dropPlaceholderIndexChanged) 0021 0022 public: 0023 explicit SimpleFavoritesModel(QObject *parent = nullptr); 0024 ~SimpleFavoritesModel() override; 0025 0026 QString description() const override; 0027 0028 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 0029 0030 int rowCount(const QModelIndex &parent = QModelIndex()) const override; 0031 0032 Q_INVOKABLE bool trigger(int row, const QString &actionId, const QVariant &argument) override; 0033 0034 bool enabled() const; 0035 void setEnabled(bool enable); 0036 0037 QStringList favorites() const; 0038 void setFavorites(const QStringList &favorites); 0039 0040 int maxFavorites() const; 0041 void setMaxFavorites(int max); 0042 0043 Q_INVOKABLE bool isFavorite(const QString &id) const; 0044 Q_INVOKABLE void addFavorite(const QString &id, int index = -1); 0045 Q_INVOKABLE void removeFavorite(const QString &id); 0046 0047 Q_INVOKABLE void moveRow(int from, int to); 0048 0049 int dropPlaceholderIndex() const; 0050 void setDropPlaceholderIndex(int index); 0051 0052 AbstractModel *favoritesModel() override; 0053 0054 public Q_SLOTS: 0055 void refresh() override; 0056 0057 Q_SIGNALS: 0058 void enabledChanged() const; 0059 void favoritesChanged() const; 0060 void maxFavoritesChanged() const; 0061 void dropPlaceholderIndexChanged(); 0062 0063 private: 0064 AbstractEntry *favoriteFromId(const QString &id); 0065 0066 bool m_enabled; 0067 0068 QList<AbstractEntry *> m_entryList; 0069 QStringList m_favorites; 0070 int m_maxFavorites; 0071 0072 int m_dropPlaceholderIndex; 0073 };