diff options
Diffstat (limited to 'tderadio3/src/include/pluginmanager.h')
-rw-r--r-- | tderadio3/src/include/pluginmanager.h | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/tderadio3/src/include/pluginmanager.h b/tderadio3/src/include/pluginmanager.h new file mode 100644 index 0000000..106b884 --- /dev/null +++ b/tderadio3/src/include/pluginmanager.h @@ -0,0 +1,148 @@ +/*************************************************************************** + pluginmanager.h - description + ------------------- + begin : Mon Apr 28 2003 + copyright : (C) 2003 by Martin Witte + email : witte@kawo1.rwth-aachen.de + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef KRADIO_PLUGINMANAGER_INTERFACES_H +#define KRADIO_PLUGINMANAGER_INTERFACES_H + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <tqstring.h> +#include <tqptrdict.h> + +#include "plugins.h" + +class PluginBase; +class WidgetPluginBase; +class PluginConfigurationDialog; +class PluginManagerConfiguration; +class TQWidget; +class TDEConfig; +class TQFrame; +class KAboutDialog; +class KDialogBase; + +struct ConfigPageInfo; +class TQMenuData; +class TDERadioApp; + + +class PluginManager : public TQObject +{ +Q_OBJECT + +public : + PluginManager(const TQString &name, + TDERadioApp *app, + const TQString &configDialogTitle, + const TQString &aboutTitle); + virtual ~PluginManager(); + + // Library Functions + + void noticeLibrariesChanged(); + void unloadPlugins(const TQString &class_name); + + // managing plugins + + const PluginList &plugins() const { return m_plugins; } + void addWidgetPluginMenuItems(TQMenuData *menu, TQMap<WidgetPluginBase *,int> &map) const; + void updateWidgetPluginMenuItem(WidgetPluginBase *p, TQMenuData *menu, TQMap<WidgetPluginBase *,int> &map, bool shown) const; + + PluginBase *getPluginByName(const TQString &name) const; + + // after insert, pluginManager is responsible for deletion + void insertPlugin(PluginBase *); + + // remove and delete plugin + void deletePlugin(PluginBase *); + void deletePluginByName(const TQString &name) { deletePlugin(getPluginByName(name)); } + + // remove plugin, afterwards pluginManager is no longer responsible for deletion + void removePlugin(PluginBase *); + void removePluginByName(const TQString &name) { removePlugin(getPluginByName(name)); } + + // operations on all plugins + + virtual void saveState (TDEConfig *) const; + virtual void restoreState (TDEConfig *); + virtual void startPlugins(); + + // configuration dialog handling + + virtual PluginConfigurationDialog *getConfigDialog(); + virtual KDialogBase *getAboutDialog(); + virtual bool showsProgressBar() const { return m_showProgressBar; } + virtual void showProgressBar(bool b) { m_showProgressBar = b; } + + virtual void noticeWidgetPluginShown(WidgetPluginBase *p, bool shown); + +protected : + virtual void createConfigDialog(const TQString &title = TQString()); + virtual void createAboutDialog (const TQString &title = TQString()); + + virtual void addConfigurationPage (PluginBase *forWhom, + const ConfigPageInfo &info); + virtual void addAboutPage (PluginBase *forWhom, + const AboutPageInfo &info); + +protected slots: + + virtual void slotConfigOK(); + +public slots: + virtual void aboutToQuit(); + +signals: + + virtual void sigConfigOK(); + +private: + virtual TQFrame *addConfigurationPage (const ConfigPageInfo &info); + ConfigPageInfo createOwnConfigurationPage(); + + // PluginManager's data & types ;) +protected: + typedef TQPtrDict<TQFrame> TQFrameDict; + typedef TQPtrDictIterator<TQFrame> TQFrameDictIterator; + typedef TQPtrDict<TQWidget> TQWidgetDict; + typedef TQPtrDictIterator<TQWidget> TQWidgetDictIterator; + + TQString m_Name; + TDERadioApp *m_Application; + + PluginList m_plugins; + bool m_showProgressBar; + + TQFrameDict m_configPageFrames; + TQWidgetDict m_configPages; + + TQFrameDict m_aboutPageFrames; + TQWidgetDict m_aboutPages; + + PluginConfigurationDialog *m_configDialog; + PluginManagerConfiguration*m_pluginManagerConfiguration; + KDialogBase *m_aboutDialog; + TQString m_configDialogTitle; + TQString m_aboutDialogTitle; +}; + + + + +#endif |