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 <qstring.h>
00026 #include <qptrdict.h>
00027
00028 #include "plugins.h"
00029
00030 class PluginBase;
00031 class WidgetPluginBase;
00032 class PluginConfigurationDialog;
00033 class PluginManagerConfiguration;
00034 class QWidget;
00035 class KConfig;
00036 class QFrame;
00037 class KAboutDialog;
00038 class KDialogBase;
00039
00040 struct ConfigPageInfo;
00041 class QMenuData;
00042 class KRadioApp;
00043
00044
00045 class PluginManager : public QObject
00046 {
00047 Q_OBJECT
00048 public :
00049 PluginManager(const QString &name,
00050 KRadioApp *app,
00051 const QString &configDialogTitle,
00052 const QString &aboutTitle);
00053 virtual ~PluginManager();
00054
00055
00056
00057 void noticeLibrariesChanged();
00058 void unloadPlugins(const QString &class_name);
00059
00060
00061
00062 const PluginList &plugins() const { return m_plugins; }
00063 void addWidgetPluginMenuItems(QMenuData *menu, QMap<WidgetPluginBase *,int> &map) const;
00064 void updateWidgetPluginMenuItem(WidgetPluginBase *p, QMenuData *menu, QMap<WidgetPluginBase *,int> &map, bool shown) const;
00065
00066 PluginBase *getPluginByName(const QString &name) const;
00067
00068
00069 void insertPlugin(PluginBase *);
00070
00071
00072 void deletePlugin(PluginBase *);
00073 void deletePluginByName(const QString &name) { deletePlugin(getPluginByName(name)); }
00074
00075
00076 void removePlugin(PluginBase *);
00077 void removePluginByName(const QString &name) { removePlugin(getPluginByName(name)); }
00078
00079
00080
00081 virtual void saveState (KConfig *) const;
00082 virtual void restoreState (KConfig *);
00083 virtual void startPlugins();
00084
00085
00086
00087 virtual PluginConfigurationDialog *getConfigDialog();
00088 virtual KDialogBase *getAboutDialog();
00089 virtual bool showsProgressBar() const { return m_showProgressBar; }
00090 virtual void showProgressBar(bool b) { m_showProgressBar = b; }
00091
00092 virtual void noticeWidgetPluginShown(WidgetPluginBase *p, bool shown);
00093
00094 protected :
00095 virtual void createConfigDialog(const QString &title = QString::null);
00096 virtual void createAboutDialog (const QString &title = QString::null);
00097
00098 virtual void addConfigurationPage (PluginBase *forWhom,
00099 const ConfigPageInfo &info);
00100 virtual void addAboutPage (PluginBase *forWhom,
00101 const AboutPageInfo &info);
00102
00103 protected slots:
00104
00105 virtual void slotConfigOK();
00106
00107 public slots:
00108 virtual void aboutToQuit();
00109
00110 signals:
00111
00112 virtual void sigConfigOK();
00113
00114 private:
00115 virtual QFrame *addConfigurationPage (const ConfigPageInfo &info);
00116 ConfigPageInfo createOwnConfigurationPage();
00117
00118
00119 protected:
00120 typedef QPtrDict<QFrame> QFrameDict;
00121 typedef QPtrDictIterator<QFrame> QFrameDictIterator;
00122 typedef QPtrDict<QWidget> QWidgetDict;
00123 typedef QPtrDictIterator<QWidget> QWidgetDictIterator;
00124
00125 QString m_Name;
00126 KRadioApp *m_Application;
00127
00128 PluginList m_plugins;
00129 bool m_showProgressBar;
00130
00131 QFrameDict m_configPageFrames;
00132 QWidgetDict m_configPages;
00133
00134 QFrameDict m_aboutPageFrames;
00135 QWidgetDict m_aboutPages;
00136
00137 PluginConfigurationDialog *m_configDialog;
00138 PluginManagerConfiguration*m_pluginManagerConfiguration;
00139 KDialogBase *m_aboutDialog;
00140 QString m_configDialogTitle;
00141 QString m_aboutDialogTitle;
00142 };
00143
00144
00145
00146
00147 #endif