pluginmanager.h

Go to the documentation of this file.
00001 /***************************************************************************
00002                           pluginmanager.h  -  description
00003                              -------------------
00004     begin                : Mon Apr 28 2003
00005     copyright            : (C) 2003 by Martin Witte
00006     email                : witte@kawo1.rwth-aachen.de
00007  ***************************************************************************/
00008 
00009 /***************************************************************************
00010  *                                                                         *
00011  *   This program is free software; you can redistribute it and/or modify  *
00012  *   it under the terms of the GNU General Public License as published by  *
00013  *   the Free Software Foundation; either version 2 of the License, or     *
00014  *   (at your option) any later version.                                   *
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     // Library Functions
00056 
00057     void                 noticeLibrariesChanged();
00058     void                 unloadPlugins(const QString &class_name);
00059 
00060     // managing plugins
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     // after insert, pluginManager is responsible for deletion
00069     void                 insertPlugin(PluginBase *);
00070 
00071     // remove and delete plugin
00072     void                 deletePlugin(PluginBase *);
00073     void                 deletePluginByName(const QString &name) { deletePlugin(getPluginByName(name)); }
00074 
00075     // remove plugin, afterwards pluginManager is no longer responsible for deletion
00076     void                 removePlugin(PluginBase *);
00077     void                 removePluginByName(const QString &name) { removePlugin(getPluginByName(name)); }
00078 
00079     // operations on all plugins
00080 
00081     virtual void         saveState    (KConfig *) const;
00082     virtual void         restoreState (KConfig *);
00083     virtual void         startPlugins();
00084 
00085     // configuration dialog handling
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     // PluginManager's data & types ;)
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
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 28 Jan 2011 for kradio by  doxygen 1.6.1