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 *)