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                : emw-kradio@nocabal.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 <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 // class KAboutDialog;
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     // Library Functions
00060 
00061     void                 noticeLibrariesChanged();
00062     void                 unloadPlugins(const QString &class_name);
00063 
00064     // managing plugins
00065 
00066     const PluginList    &plugins() const { return m_plugins; }
00067     void                 addWidgetPluginMenuItems(QMenu *menu) const;
00068     //void                 updateWidgetPluginMenuItem(WidgetPluginBase *p, QMenu *menu, QMap<WidgetPluginBase *,int> &map, bool shown) const;
00069 
00070     PluginBase          *getPluginByName(const QString &name) const;
00071 
00072     // after insert, pluginManager is responsible for deletion
00073     void                 insertPlugin(PluginBase *);
00074 
00075     // remove and delete plugin
00076     void                 deletePlugin(PluginBase *);
00077     void                 deletePluginByName(const QString &name) { deletePlugin(getPluginByName(name)); }
00078 
00079     // remove plugin, afterwards pluginManager is no longer responsible for deletion
00080     void                 removePlugin(PluginBase *);
00081     void                 removePluginByName(const QString &name) { removePlugin(getPluginByName(name)); }
00082 
00083     // operations on all plugins
00084 
00085     virtual void         saveState    (KConfig *) const;
00086     virtual void         restoreState (KConfig *);
00087     virtual void         startPlugins();
00088 
00089     // configuration dialog handling
00090 
00091     virtual PluginConfigurationDialog *getConfigDialog();
00092 //     virtual KPageDialog               *getAboutDialog();
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 //     virtual void                       createAboutDialog (const QString &title = QString::null);
00106 
00107     virtual KPageWidgetItem           *addConfigurationPage (PluginBase *forWhom,
00108                                                              const ConfigPageInfo    &info);
00109 //     virtual KPageWidgetItem           *addAboutPage         (PluginBase *forWhom,
00110 //                                                              const AboutPageInfo     &info);
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     // PluginManager's data & types ;)
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 //     QPlugin2ConfigPageMap       m_aboutPageFrames;
00158 //     QPlugin2WidgetMap           m_aboutPages;
00159 
00160     PluginConfigurationDialog  *m_configDialog;
00161     QString                     m_configDialogID;
00162     PluginManagerConfiguration *m_pluginManagerConfiguration;
00163 //     KPageDialog                *m_aboutDialog;
00164     QString                     m_configDialogTitle;
00165 //     QString                     m_aboutDialogTitle;
00166 
00167     KMenu                      *m_widgetPluginHideShowMenu;
00168     QMap<QString, bool>         m_widgetsShownCache;
00169 };
00170 
00171 
00172 
00173 
00174 #endif

Generated on Tue Jun 2 19:19:57 2009 for kradio4 by  doxygen 1.5.8