File indexing completed on 2024-06-16 04:40:27
0001 /* 0002 * SPDX-FileCopyrightText: 2012-2016 Ivan Cukic <ivan.cukic@kde.org> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #ifndef FILE_ITEM_LINKING_PLUGIN_P_H 0008 #define FILE_ITEM_LINKING_PLUGIN_P_H 0009 0010 #include "FileItemLinkingPlugin.h" 0011 0012 #include <QPointer> 0013 0014 #include <KFileItemListProperties> 0015 0016 #include <PlasmaActivities/Consumer> 0017 #include <PlasmaActivities/Info> 0018 0019 struct Action { 0020 QString title; 0021 QString icon; 0022 QString activity; 0023 bool link; 0024 }; 0025 typedef QList<Action> ActionList; 0026 0027 class FileItemLinkingPlugin::Private : public QObject 0028 { 0029 Q_OBJECT 0030 0031 public: 0032 Private(); 0033 0034 QPointer<QAction> root; 0035 QMenu *rootMenu = nullptr; 0036 KFileItemListProperties items; 0037 0038 QAction *basicAction(QWidget *parentWidget); 0039 0040 KActivities::Consumer activities; 0041 0042 public Q_SLOTS: 0043 void activitiesServiceStatusChanged(KActivities::Consumer::ServiceStatus status); 0044 void rootActionHovered(); 0045 void setActions(const ActionList &actions); 0046 0047 void actionTriggered(); 0048 void loadAllActions(); 0049 0050 private: 0051 enum class Status { LoadingBlocked, ShouldLoad, Loaded }; 0052 Status status = Status::LoadingBlocked; 0053 }; 0054 0055 class FileItemLinkingPluginActionStaticInit 0056 { 0057 public: 0058 FileItemLinkingPluginActionStaticInit(); 0059 }; 0060 0061 #endif // FILE_ITEM_LINKING_PLUGIN_P_H