File indexing completed on 2024-04-28 11:20:48

0001 /*
0002     SPDX-License-Identifier: GPL-2.0-or-later
0003     SPDX-FileCopyrightText: 2010 Alexander Rieder <alexanderrieder@gmail.com>
0004 */
0005 
0006 #ifndef _PANELPLUGINHANDLER_H
0007 #define _PANELPLUGINHANDLER_H
0008 
0009 #include <QObject>
0010 #include "panelplugin.h"
0011 #include "cantor_export.h"
0012 
0013 namespace Cantor
0014 {
0015 class PanelPluginHandlerPrivate;
0016 class Session;
0017 
0018 /**
0019  * Simple interface that exports a list of known PanelPlugins.
0020  * Needed as the Panel must be handled by the Shell
0021  */
0022 
0023 class CANTOR_EXPORT PanelPluginHandler : public QObject
0024 {
0025   Q_OBJECT
0026   public:
0027     explicit PanelPluginHandler(QObject* parent);
0028     ~PanelPluginHandler() override;
0029 
0030     QList<PanelPlugin*> allPlugins();
0031     QList<PanelPlugin*> plugins(Session*);
0032 
0033     using PanelStates = QMap<QString, Cantor::PanelPlugin::State>;
0034     QList<PanelPlugin*> activePluginsForSession(Session*, const PanelStates&);
0035 
0036     void loadPlugins();
0037 
0038   private:
0039     PanelPluginHandlerPrivate* d;
0040 
0041 };
0042 
0043 }
0044 
0045 #endif /* _PANELPLUGINHANDLER_H */