kcmodule.cpp00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <qlayout.h>
00025
00026 #include <kaboutdata.h>
00027 #include <kconfigskeleton.h>
00028 #include <kconfigdialogmanager.h>
00029 #include <kdebug.h>
00030 #include <kglobal.h>
00031 #include <kinstance.h>
00032 #include <klocale.h>
00033
00034 #include "kcmodule.h"
00035 #include "kcmodule.moc"
00036
00037 class KCModulePrivate
00038 {
00039 public:
00040 KCModulePrivate():
00041 _about( 0 ),
00042 _useRootOnlyMsg( false ),
00043 _hasOwnInstance( true ),
00044 _unmanagedWidgetChangeState( false )
00045 { }
00046
00047 KInstance *_instance;
00048 KAboutData *_about;
00049 QString _rootOnlyMsg;
00050 bool _useRootOnlyMsg;
00051 bool _hasOwnInstance;
00052 QPtrList<KConfigDialogManager> managers;
00053 QString _quickHelp;
00054
00055
00056
00057
00058
00059 bool _unmanagedWidgetChangeState;
00060 };
00061
00062 KCModule::KCModule(QWidget *parent, const char *name, const QStringList &)
00063 : QWidget(parent, name)
00064 {
00065 init();
00066 if (name && strlen(name)) {
00067 d->_instance = new KInstance(name);
00068 KGlobal::locale()->insertCatalogue(name);
00069 } else
00070 d->_instance = new KInstance("kcmunnamed");
00071 KGlobal::setActiveInstance(this->instance());
00072
00073 d->managers.setAutoDelete( true );
00074
00075 }
00076
00077 KCModule::KCModule(KInstance *instance, QWidget *parent, const QStringList & )
00078 : QWidget(parent, instance ? instance->instanceName().data() : 0)
00079 {
00080 init();
00081 d->_instance = instance;
00082 KGlobal::locale()->insertCatalogue(instance->instanceName());
00083 d->_hasOwnInstance = false;
00084 KGlobal::setActiveInstance(this->instance());
00085 }
00086
00087 void KCModule::init()
00088 {
00089 d = new KCModulePrivate;
00090 _btn = Help|Default|Apply;
00091 }
00092
00093 KConfigDialogManager* KCModule::addConfig( KConfigSkeleton *config, QWidget* widget )
00094 {
00095 KConfigDialogManager* manager = new KConfigDialogManager( widget, config, name() );
00096 connect( manager, SIGNAL( widgetModified() ), SLOT( widgetChanged() ));
00097 d->managers.append( manager );
00098 return manager;
00099 }
00100
00101 KCModule::~KCModule()
00102 {
00103 if (d->_hasOwnInstance)
00104 delete d->_instance;
00105 delete d->_about;
00106 delete d;
00107 }
00108
00109 void KCModule::load()
00110 {
00111 KConfigDialogManager* manager;
00112 for( manager = d->managers.first(); manager; manager = d->managers.next() )
00113 manager->updateWidgets();
00114 }
00115
00116 void KCModule::save()
00117 {
00118 KConfigDialogManager* manager;
00119 for( manager = d->managers.first(); manager; manager = d->managers.next() )
00120 manager->updateSettings();
00121 emit( changed( false ));
00122 }
00123
00124 void KCModule::defaults()
00125 {
00126 KConfigDialogManager* manager;
00127 for( manager = d->managers.first(); manager; manager = d->managers.next() )
00128 manager->updateWidgetsDefault();
00129 }
00130
00131 void KCModule::widgetChanged()
00132 {
00133 emit changed(d->_unmanagedWidgetChangeState || managedWidgetChangeState());
00134 }
00135
00136 bool KCModule::managedWidgetChangeState() const
00137 {
00138 KConfigDialogManager* manager;
00139 for( manager = d->managers.first(); manager; manager = d->managers.next() )
00140 {
00141 if ( manager->hasChanged() )
00142 return true;
00143 }
00144
00145 return false;
00146 }
00147
00148 void KCModule::unmanagedWidgetChangeState(bool changed)
00149 {
00150 d->_unmanagedWidgetChangeState = changed;
00151 widgetChanged();
00152 }
00153
00154 const KAboutData *KCModule::aboutData() const
00155 {
00156 return d->_about;
00157 }
00158
00159 void KCModule::setAboutData( KAboutData* about )
00160 {
00161 delete d->_about;
00162 d->_about = about;
00163 }
00164
00165 void KCModule::setRootOnlyMsg(const QString& msg)
00166 {
00167 d->_rootOnlyMsg = msg;
00168 }
00169
00170 QString KCModule::rootOnlyMsg() const
00171 {
00172 return d->_rootOnlyMsg;
00173 }
00174
00175 void KCModule::setUseRootOnlyMsg(bool on)
00176 {
00177 d->_useRootOnlyMsg = on;
00178 }
00179
00180 bool KCModule::useRootOnlyMsg() const
00181 {
00182 return d->_useRootOnlyMsg;
00183 }
00184
00185 void KCModule::changed()
00186 {
00187 emit changed(true);
00188 }
00189
00190 KInstance *KCModule::instance() const
00191 {
00192 return d->_instance;
00193 }
00194
00195 void KCModule::setQuickHelp( const QString& help )
00196 {
00197 d->_quickHelp = help;
00198 emit( quickHelpChanged() );
00199 }
00200
00201 QString KCModule::quickHelp() const
00202 {
00203 return d->_quickHelp;
00204 }
00205
00206
00207 const QPtrList<KConfigDialogManager>& KCModule::configs() const
00208 {
00209 return d->managers;
00210 }
00211
00212 void KCModule::virtual_hook( int, void* )
00213 { }
00214
00215
|