kradio4  r778
kradioapp.h
Go to the documentation of this file.
1 /***************************************************************************
2  kradioapp.h - description
3  -------------------
4  begin : Sa Feb 9 2002
5  copyright : (C) 2002 by Klas Kalass / Martin Witte / Frank Schwanz
6  email : klas.kalass@gmx.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_KRADIOAPP_H
19 #define KRADIO_KRADIOAPP_H
20 
21 #ifdef HAVE_CONFIG_H
22 #include <config.h>
23 #endif
24 
25 #include <QtCore/QMap>
26 
27 #include <kconfig.h>
28 #include <kapplication.h>
29 #include <klibrary.h>
30 
31 //#include <kaboutapplication.h>
32 #include "pluginmanager.h"
33 #include "pluginbase.h"
34 
35 class KLibrary;
36 
37 // class KRadioAbout : public PluginBase
38 // {
39 // public:
40 // KRadioAbout(const QString &name) : PluginBase(name, "KRadio Application") {}
41 //
42 // virtual QString pluginClassName() const { return "KRadioAbout"; }
43 //
44 // virtual ConfigPageInfo createConfigurationPage () { return ConfigPageInfo(); }
45 // // virtual AboutPageInfo createAboutPage ();
46 //
47 // virtual void saveState ( KConfigGroup &) const {}
48 // virtual void restoreState (const KConfigGroup &) {}
49 // };
50 
51 
52 
53 
54 typedef PluginBase *(*t_kradio_plugin_init_func)(const QString & cls, const QString &instanceID, const QString &obj);
55 typedef void (*t_kradio_plugin_info_func)(QMap<QString, QString> &);
56 typedef void (*t_kradio_plugin_libload_func)();
58 #ifdef KRADIO_ENABLE_FIXMES
59  #warning "FIXME: switch to KPluginFactory stuff"
60 #endif
62  KLibrary library;
63  QMap<QString,QString> plugins;
68 
69  PluginLibraryInfo() : library(NULL), init_func(NULL), info_func(NULL), libload_func(NULL), libunload_func(NULL) {}
70  PluginLibraryInfo(const QString &libname);
73  bool valid() { return init_func && info_func && library.isLoaded() && libload_func && libunload_func; }
74 
75 private:
76  // disable copy constructor
77 };
78 
79 
81  QString class_name;
82  QString description;
84 
85  PluginClassInfo() : create_function(NULL) {}
86  PluginClassInfo(const QString &_name, const QString &descr, t_kradio_plugin_init_func init_func)
87  : class_name(_name), description(descr), create_function(init_func) {}
88  PluginBase *CreateInstance(const QString &instanceID, const QString &obj_name) { return create_function ? create_function(class_name, instanceID, obj_name) : NULL; }
89 };
90 
91 
92 class KRadioApp : public KApplication
93 {
94 Q_OBJECT
95 public:
96  KRadioApp();
97  virtual ~KRadioApp();
98 
99  virtual void saveState (KConfig *c);
100  virtual void restoreState (KConfig *c);
101 
102  virtual PluginManager *createNewInstance(const QString &name);
103 
104  virtual void LoadLibrary (const QString &library);
105  virtual void UnloadLibrary (const QString &library);
106  virtual PluginBase *CreatePlugin (PluginManager *manager, const QString &instanceID, const QString &pclass, const QString &object_name);
107 
108  virtual const QMap<QString, PluginLibraryInfo> &getPluginLibraries() const { return m_PluginLibraries; }
109  virtual const QMap<QString, PluginClassInfo> &getPluginClasses() const { return m_PluginInfos; }
110 
111  virtual void startPlugins();
112 
113  virtual bool quitting() const { return m_quitting; }
114 
115 protected slots:
116 
117  #ifdef KRADIO_ENABLE_FIXMES
118  #warning: FIXME: implement qsessionmanagement stuff
119  #endif
120  virtual void saveState( QSessionManager& sm ) { KApplication::saveState(sm); }
121  virtual void saveState();
122  virtual void slotAboutToQuit();
123 
124 protected:
125 
126  QMap<QString, PluginManager*> m_Instances;
127  QMap<QString, PluginLibraryInfo> m_PluginLibraries;
128  QMap<QString, PluginClassInfo> m_PluginInfos;
129 
131 };
132 
133 
134 #endif
QString description
Definition: kradioapp.h:82
virtual const QMap< QString, PluginLibraryInfo > & getPluginLibraries() const
Definition: kradioapp.h:108
virtual PluginManager * createNewInstance(const QString &name)
virtual void UnloadLibrary(const QString &library)
virtual void saveState(QSessionManager &sm)
Definition: kradioapp.h:120
KLibrary library
Definition: kradioapp.h:62
virtual void restoreState(KConfig *c)
void(* t_kradio_plugin_libunload_func)()
Definition: kradioapp.h:57
QMap< QString, PluginLibraryInfo > m_PluginLibraries
Definition: kradioapp.h:127
QMap< QString, QString > plugins
Definition: kradioapp.h:63
PluginBase *(* t_kradio_plugin_init_func)(const QString &cls, const QString &instanceID, const QString &obj)
Definition: kradioapp.h:54
t_kradio_plugin_info_func info_func
Definition: kradioapp.h:65
PluginLibraryInfo & operator=(const PluginLibraryInfo &)
t_kradio_plugin_libload_func libload_func
Definition: kradioapp.h:66
QMap< QString, PluginClassInfo > m_PluginInfos
Definition: kradioapp.h:128
void(* t_kradio_plugin_info_func)(QMap< QString, QString > &)
Definition: kradioapp.h:55
virtual PluginBase * CreatePlugin(PluginManager *manager, const QString &instanceID, const QString &pclass, const QString &object_name)
virtual void startPlugins()
bool m_quitting
Definition: kradioapp.h:130
t_kradio_plugin_libunload_func libunload_func
Definition: kradioapp.h:67
t_kradio_plugin_init_func init_func
Definition: kradioapp.h:64
virtual void slotAboutToQuit()
QMap< QString, PluginManager * > m_Instances
Definition: kradioapp.h:126
PluginClassInfo(const QString &_name, const QString &descr, t_kradio_plugin_init_func init_func)
Definition: kradioapp.h:86
t_kradio_plugin_init_func create_function
Definition: kradioapp.h:83
void(* t_kradio_plugin_libload_func)()
Definition: kradioapp.h:56
virtual void saveState()
virtual const QMap< QString, PluginClassInfo > & getPluginClasses() const
Definition: kradioapp.h:109
QString class_name
Definition: kradioapp.h:81
virtual void LoadLibrary(const QString &library)
PluginBase * CreateInstance(const QString &instanceID, const QString &obj_name)
Definition: kradioapp.h:88
virtual bool quitting() const
Definition: kradioapp.h:113
virtual ~KRadioApp()