kradio4  r778
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
pluginmanager.h
Go to the documentation of this file.
1 /***************************************************************************
2  pluginmanager.h - description
3  -------------------
4  begin : Mon Apr 28 2003
5  copyright : (C) 2003 by Martin Witte
6  email : emw-kradio@nocabal.de
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #ifndef KRADIO_PLUGINMANAGER_INTERFACES_H
19 #define KRADIO_PLUGINMANAGER_INTERFACES_H
20 
21 #ifdef HAVE_CONFIG_H
22 #include <config.h>
23 #endif
24 
25 #include <QtCore/QString>
26 #include <QtCore/QMap>
27 
28 #include "pluginbase.h"
29 
30 class PluginBase;
31 class WidgetPluginBase;
34 class QWidget;
35 class KConfig;
36 class QFrame;
37 // class KAboutDialog;
38 class KPageDialog;
39 class KPageWidgetItem;
40 
41 struct ConfigPageInfo;
42 class QMenu;
43 class KMenu;
44 class KRadioApp;
45 
46 
47 class KDE_EXPORT PluginManager : public QObject
48 {
49 Q_OBJECT
50 public :
51  PluginManager(const QString &name,
52  KRadioApp *app,
53  const QString &configDialogTitle,
54  const QString &aboutTitle);
55  virtual ~PluginManager();
56 
57  const QString instanceName() const { return m_Name; }
58 
59  // Library Functions
60 
61  void noticeLibrariesChanged();
62  void unloadPlugins(const QString &class_name);
63 
64  // managing plugins
65 
66  const PluginList &plugins() const { return m_plugins; }
67  void addWidgetPluginMenuItems(QMenu *menu) const;
68  //void updateWidgetPluginMenuItem(WidgetPluginBase *p, QMenu *menu, QMap<WidgetPluginBase *,int> &map, bool shown) const;
69 
70  PluginBase *getPluginByName(const QString &name) const;
71 
72  // after insert, pluginManager is responsible for deletion
73  void insertPlugin(PluginBase *);
74 
75  // remove and delete plugin
76  void deletePlugin(PluginBase *);
77  void deletePluginByName(const QString &name) { deletePlugin(getPluginByName(name)); }
78 
79  // remove plugin, afterwards pluginManager is no longer responsible for deletion
80  void removePlugin(PluginBase *);
81  void removePluginByName(const QString &name) { removePlugin(getPluginByName(name)); }
82 
83  // operations on all plugins
84 
85  virtual void saveState (KConfig *) const;
86  virtual void restoreState (KConfig *);
87  virtual void restorePluginInstanceState (PluginBase *p, KConfig *c) const;
88 
89  virtual void startPlugins();
90 
91  // configuration dialog handling
92 
93  virtual PluginConfigurationDialog *getConfigDialog();
94 // virtual KPageDialog *getAboutDialog();
95  virtual bool showsProgressBar() const { return m_showProgressBar; }
96  virtual void showProgressBar(bool b) { m_showProgressBar = b; }
97 
98  virtual void noticeWidgetPluginShown(WidgetPluginBase *p, bool shown);
99  virtual void noticePluginRenamed(PluginBase *p, const QString &name);
100 
101 
102  virtual KMenu *getPluginHideShowMenu();
103 
104 
105 protected :
106  virtual void createConfigDialog(const QString &title = QString::null);
107 // virtual void createAboutDialog (const QString &title = QString::null);
108 
109  virtual KPageWidgetItem *addConfigurationPage (PluginBase *forWhom,
110  const ConfigPageInfo &info);
111 // virtual KPageWidgetItem *addAboutPage (PluginBase *forWhom,
112 // const AboutPageInfo &info);
113  virtual void setConfigPageNameEtc(PluginBase *p);
114 
115 
116  virtual void updatePluginHideShowMenu();
117  virtual void notifyPluginsChanged();
118 
119 protected slots:
120 
121  virtual void slotConfigOK();
122  virtual void slotDesktopChanged(int d);
123 
124 
125 public slots:
126  virtual void aboutToQuit();
127  virtual void slotShowAllWidgetPlugins();
128  virtual void slotHideAllWidgetPlugins();
129  virtual void slotRestoreAllWidgetPlugins();
130  virtual void slotHideRestoreAllWidgetPlugins();
131 
132 signals:
133 
134  void sigConfigOK();
135 
136 private:
137  virtual KPageWidgetItem *addConfigurationPage (const ConfigPageInfo &info);
138  ConfigPageInfo createOwnConfigurationPage();
139 
140  // PluginManager's data & types ;)
141 protected:
142  typedef QMap<PluginBase*, KPageWidgetItem*> QPlugin2ConfigPageMap;
143  typedef QMap<PluginBase*, KPageWidgetItem*>::iterator QPlugin2ConfigPageMapIterator;
144  typedef QMap<PluginBase*, QWidget*> QPlugin2WidgetMap;
145  typedef QMap<PluginBase*, QWidget*>::iterator QPlugin2WidgetMapIterator;
146  typedef QMap<PluginBase*, ConfigPageInfo> QPlugin2ConfigPageInfoMap;
147  typedef QMap<PluginBase*, ConfigPageInfo>::iterator QPlugin2ConfigPageInfoMapIterator;
148 
149  QString m_Name;
151 
154 
158 
159 // QPlugin2ConfigPageMap m_aboutPageFrames;
160 // QPlugin2WidgetMap m_aboutPages;
161 
165 // KPageDialog *m_aboutDialog;
167 // QString m_aboutDialogTitle;
168 
170  QMap<QString, bool> m_widgetsShownCache;
171 };
172 
173 
174 
175 
176 #endif