KUtils
kcmodulecontainer.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef KCMODULECONTAINER_H
00021 #define KCMODULECONTAINER_H
00022
00023 #include <qvaluelist.h>
00024 #include <qstring.h>
00025 #include <qstringlist.h>
00026
00027 #include <kcmodule.h>
00028 #include <kcmoduleloader.h>
00029
00030 class QTabWidget;
00031 class QWidget;
00032 class QVBoxLayout;
00033
00034 class KCModuleProxy;
00035
00053 class KUTILS_EXPORT KCModuleContainer : public KCModule
00054 {
00055 Q_OBJECT
00056 public:
00068 KCModuleContainer( QWidget* parent, const char* name, const QStringList& mods );
00069
00087 KCModuleContainer( QWidget *parent, const char* name, const QString& mods = QString() );
00088
00096 void addModule( const QString& module );
00097
00101 virtual ~KCModuleContainer();
00102
00107 void save();
00108
00113 void load();
00114
00119 void defaults();
00120
00121 protected:
00122
00129 void finalize();
00130
00131 typedef QValueList<KCModuleProxy*> ModuleList;
00132
00137 ModuleList changedModules;
00138
00142 ModuleList allModules;
00143
00144 private slots:
00145
00149 void tabSwitched( QWidget * module );
00150
00151 void moduleChanged(KCModuleProxy *proxy);
00152
00156 void runAsRoot();
00157
00161 void rootExited();
00162
00163 private:
00164
00165 void init();
00166
00167 class KCModuleContainerPrivate;
00168 KCModuleContainerPrivate *d;
00169
00170 };
00171
00188 #define KCMODULECONTAINER( modules, factoryName ) \
00189 extern "C" \
00190 { \
00191 KCModule *create_## factoryName(QWidget *parent, const char *name) \
00192 { \
00193 return new KCModuleContainer( parent, name, QString( modules ) ); \
00194 } \
00195 \
00196 bool test_## factoryName() \
00197 { \
00198 QStringList modList = QStringList::split( ",", QString(modules).remove( " " )); \
00199 for ( QStringList::Iterator it = modList.begin(); it != modList.end(); ++it ) \
00200 if ( KCModuleLoader::testModule( *it ) ) \
00201 return true; \
00202 return false; \
00203 } \
00204 }
00205
00206 #endif // KCMODULECONTAINER_H
00207