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 restorePluginInstanceState (PluginBase *p, KConfig *c) const;
00088
00089 virtual void startPlugins();
00090
00091
00092
00093 virtual PluginConfigurationDialog *getConfigDialog();
00094
00095 virtual bool showsProgressBar() const { return m_showProgressBar; }
00096 virtual void showProgressBar(bool b) { m_showProgressBar = b; }
00097
00098 virtual void noticeWidgetPluginShown(WidgetPluginBase *p, bool shown);
00099 virtual void noticePluginRenamed(PluginBase *p, const QString &name);
00100
00101
00102 virtual KMenu *getPluginHideShowMenu();
00103
00104
00105 protected :
00106 virtual void createConfigDialog(const QString &title = QString::null);
00107
00108
00109 virtual KPageWidgetItem *addConfigurationPage (PluginBase *forWhom,
00110 const ConfigPageInfo &info);
00111
00112
00113 virtual void setConfigPageNameEtc(PluginBase *p);
00114
00115
00116 virtual void updatePluginHideShowMenu();
00117 virtual void notifyPluginsChanged();
00118
00119 protected slots:
00120
00121 virtual void slotConfigOK();
00122 virtual void slotDesktopChanged(int d);
00123
00124
00125 public slots:
00126 virtual void aboutToQuit();
00127 virtual void slotShowAllWidgetPlugins();
00128 virtual void slotHideAllWidgetPlugins();
00129 virtual void slotRestoreAllWidgetPlugins();
00130 virtual void slotHideRestoreAllWidgetPlugins();
00131
00132 signals:
00133
00134 void sigConfigOK();
00135
00136 private:
00137 virtual KPageWidgetItem *addConfigurationPage (const ConfigPageInfo &info);
00138 ConfigPageInfo createOwnConfigurationPage();
00139
00140
00141 protected:
00142 typedef QMap<PluginBase*, KPageWidgetItem*> QPlugin2ConfigPageMap;
00143 typedef QMap<PluginBase*, KPageWidgetItem*>::iterator QPlugin2ConfigPageMapIterator;
00144 typedef QMap<PluginBase*, QWidget*> QPlugin2WidgetMap;
00145 typedef QMap<PluginBase*, QWidget*>::iterator QPlugin2WidgetMapIterator;
00146 typedef QMap<PluginBase*, ConfigPageInfo> QPlugin2ConfigPageInfoMap;
00147 typedef QMap<PluginBase*, ConfigPageInfo>::iterator QPlugin2ConfigPageInfoMapIterator;
00148
00149 QString m_Name;
00150 KRadioApp *m_Application;
00151
00152 PluginList m_plugins;
00153 bool m_showProgressBar;
00154
00155 QPlugin2ConfigPageMap m_configPageFrames;
00156 QPlugin2WidgetMap m_configPages;
00157 QPlugin2ConfigPageInfoMap m_configPageInfos;
00158
00159
00160
00161
00162 PluginConfigurationDialog *m_configDialog;
00163 QString m_configDialogID;
00164 PluginManagerConfiguration *m_pluginManagerConfiguration;
00165
00166 QString m_configDialogTitle;
00167
00168
00169 KMenu *m_widgetPluginHideShowMenu;
00170 QMap<QString, bool> m_widgetsShownCache;
00171 };
00172
00173
00174
00175
00176 #endif