pluginmanager.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef KRADIO_PLUGINMANAGER_INTERFACES_H
00019 #define KRADIO_PLUGINMANAGER_INTERFACES_H
00020
00021 #ifdef HAVE_CONFIG_H
00022 #include <config.h>
00023 #endif
00024
00025 #include <QtCore/QString>
00026 #include <QtCore/QMap>
00027
00028 #include "pluginbase.h"
00029
00030 class PluginBase;
00031 class WidgetPluginBase;
00032 class PluginConfigurationDialog;
00033 class PluginManagerConfiguration;
00034 class QWidget;
00035 class KConfig;
00036 class QFrame;
00037
00038 class KPageDialog;
00039 class KPageWidgetItem;
00040
00041 struct ConfigPageInfo;
00042 class QMenu;
00043 class KMenu;
00044 class KRadioApp;
00045
00046
00047 class KDE_EXPORT PluginManager : public QObject
00048 {
00049 Q_OBJECT
00050 public :
00051 PluginManager(const QString &name,
00052 KRadioApp *app,
00053 const QString &configDialogTitle,
00054 const QString &aboutTitle);
00055 virtual ~PluginManager();
00056
00057 const QString instanceName() const { return m_Name; }
00058
00059
00060
00061 void noticeLibrariesChanged();
00062 void unloadPlugins(const QString &class_name);
00063
00064
00065
00066 const PluginList &plugins() const { return m_plugins; }
00067 void addWidgetPluginMenuItems(QMenu *menu) const;
00068
00069
00070 PluginBase *getPluginByName(const QString &name) const;
00071
00072
00073 void insertPlugin(PluginBase *);
00074
00075
00076 void deletePlugin(PluginBase *);
00077 void deletePluginByName(const QString &name) { deletePlugin(getPluginByName(name)); }
00078
00079
00080 void removePlugin(PluginBase *);
00081 void removePluginByName(const QString &name) { removePlugin(getPluginByName(name)); }
00082
00083
00084
00085 virtual void saveState (KConfig *) const;
00086 virtual void restoreState (KConfig *);
00087 virtual void startPlugins();
00088
00089
00090
00091 virtual PluginConfigurationDialog *getConfigDialog();
00092
00093 virtual bool showsProgressBar() const { return m_showProgressBar; }
00094 virtual void showProgressBar(bool b) { m_showProgressBar = b; }
00095
00096 virtual void noticeWidgetPluginShown(WidgetPluginBase *p, bool shown);
00097 virtual void noticePluginRenamed(PluginBase *p, const QString &name);
00098
00099
00100 virtual KMenu *getPluginHideShowMenu();
00101
00102
00103 protected :
00104 virtual void createConfigDialog(const QString &title = QString::null);
00105
00106
00107 virtual KPageWidgetItem *addConfigurationPage (PluginBase *forWhom,
00108 const ConfigPageInfo &info);
00109
00110
00111 virtual void setConfigPageNameEtc(PluginBase *p);
00112
00113
00114 virtual void updatePluginHideShowMenu();
00115 virtual void notifyPluginsChanged();
00116
00117 protected slots:
00118
00119 virtual void slotConfigOK();
00120 virtual void slotDesktopChanged(int d);
00121
00122
00123 public slots:
00124 virtual void aboutToQuit();
00125 virtual void slotShowAllWidgetPlugins();
00126 virtual void slotHideAllWidgetPlugins();
00127 virtual void slotRestoreAllWidgetPlugins();
00128 virtual void slotHideRestoreAllWidgetPlugins();
00129
00130 signals:
00131
00132 virtual void sigConfigOK();
00133
00134 private:
00135 virtual KPageWidgetItem *addConfigurationPage (const ConfigPageInfo &info);
00136 ConfigPageInfo createOwnConfigurationPage();
00137
00138
00139 protected:
00140 typedef QMap<PluginBase*, KPageWidgetItem*> QPlugin2ConfigPageMap;
00141 typedef QMap<PluginBase*, KPageWidgetItem*>::iterator QPlugin2ConfigPageMapIterator;
00142 typedef QMap<PluginBase*, QWidget*> QPlugin2WidgetMap;
00143 typedef QMap<PluginBase*, QWidget*>::iterator QPlugin2WidgetMapIterator;
00144 typedef QMap<PluginBase*, ConfigPageInfo> QPlugin2ConfigPageInfoMap;
00145 typedef QMap<PluginBase*, ConfigPageInfo>::iterator QPlugin2ConfigPageInfoMapIterator;
00146
00147 QString m_Name;
00148 KRadioApp *m_Application;
00149
00150 PluginList m_plugins;
00151 bool m_showProgressBar;
00152
00153 QPlugin2ConfigPageMap m_configPageFrames;
00154 QPlugin2WidgetMap m_configPages;
00155 QPlugin2ConfigPageInfoMap m_configPageInfos;
00156
00157
00158
00159
00160 PluginConfigurationDialog *m_configDialog;
00161 QString m_configDialogID;
00162 PluginManagerConfiguration *m_pluginManagerConfiguration;
00163
00164 QString m_configDialogTitle;
00165
00166
00167 KMenu *m_widgetPluginHideShowMenu;
00168 QMap<QString, bool> m_widgetsShownCache;
00169 };
00170
00171
00172
00173
00174 #endif