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