File indexing completed on 2024-05-12 05:35:50
0001 /* 0002 SPDX-FileCopyrightText: 2009 Ben Cooksley <ben@eclipse.endoftheinternet.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <QMap> 0010 #include <QObject> 0011 0012 #include <Solid/Predicate> 0013 0014 class QString; 0015 0016 class KDesktopFile; 0017 class KConfigGroup; 0018 0019 class ActionItem : public QObject 0020 { 0021 Q_OBJECT 0022 0023 public: 0024 ActionItem(const QString &pathToDesktop, const QString &action, QObject *parent = nullptr); 0025 ~ActionItem() override; 0026 0027 bool isUserSupplied() const; 0028 0029 QString icon() const; 0030 QString exec() const; 0031 QString name() const; 0032 Solid::Predicate predicate() const; 0033 QString involvedTypes() const; 0034 void setIcon(const QString &nameOfIcon); 0035 void setName(const QString &nameOfAction); 0036 void setExec(const QString &execUrl); 0037 void setPredicate(const QString &newPredicate); 0038 0039 QString desktopMasterPath; 0040 QString desktopWritePath; 0041 QString actionName; 0042 0043 private: 0044 enum DesktopAction { DesktopRead = 0, DesktopWrite = 1 }; 0045 enum GroupType { GroupDesktop = 0, GroupAction = 1 }; 0046 0047 QString readKey(GroupType keyGroup, const QString &keyName, const QString &defaultValue) const; 0048 void setKey(GroupType keyGroup, const QString &keyName, const QString &keyContents); 0049 bool hasKey(GroupType keyGroup, const QString &keyName) const; 0050 0051 KConfigGroup &configItem(DesktopAction actionType, GroupType keyGroup, const QString &keyName = QString()); 0052 const KConfigGroup &configItem(DesktopAction actionType, GroupType keyGroup, const QString &keyName = QString()) const; 0053 qsizetype configItemIndex(DesktopAction actionType, GroupType keyGroup, const QString &keyName = QString()) const; 0054 0055 KDesktopFile *desktopFileMaster; 0056 KDesktopFile *desktopFileWrite; 0057 QMultiMap<GroupType, qsizetype> actionGroupIndices; 0058 QList<KConfigGroup> configGroups; 0059 Solid::Predicate predicateItem; 0060 }; 0061 0062 Q_DECLARE_METATYPE(ActionItem *)