kdeui Library API Documentation

kcmodule.cpp

00001 /*
00002    This file is part of the KDE libraries
00003 
00004 <<<Copyright (c) 2001 Michael Goffioul <kdeprint@swing.be>
00005    Copyright (C) 2004 Frans Englich <frans.englich@telia.com>
00006 
00007    This library is free software; you can redistribute it and/or
00008    modify it under the terms of the GNU Library General Public
00009    License as published by the Free Software Foundation; either
00010    version 2 of the License, or (at your option) any later version.
00011 
00012    This library is distributed in the hope that it will be useful,
00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015    Library General Public License for more details.
00016 
00017    You should have received a copy of the GNU Library General Public License
00018    along with this library; see the file COPYING.LIB.  If not, write to
00019    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00020    Boston, MA 02111-1307, USA.
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         { }
00045 
00046     KInstance *_instance;
00047     KAboutData *_about;
00048     QString _rootOnlyMsg;
00049     bool _useRootOnlyMsg;
00050     bool _hasOwnInstance;
00051     QPtrList<KConfigDialogManager> managers;
00052     QString _quickHelp;
00053 
00054 };
00055 
00056 KCModule::KCModule(QWidget *parent, const char *name, const QStringList &)
00057     : QWidget(parent, name)
00058 {
00059     init();
00060     if (name && strlen(name)) {
00061         d->_instance = new KInstance(name);
00062         KGlobal::locale()->insertCatalogue(name);
00063     } else
00064         d->_instance = new KInstance("kcmunnamed");
00065     KGlobal::setActiveInstance(this->instance());
00066 
00067     d->managers.setAutoDelete( true );
00068 
00069 }
00070 
00071 KCModule::KCModule(KInstance *instance, QWidget *parent, const QStringList & )
00072     : QWidget(parent, instance ? instance->instanceName().data() : 0)
00073 {
00074     init();
00075     d->_instance = instance;
00076     KGlobal::locale()->insertCatalogue(instance->instanceName());
00077     d->_hasOwnInstance = false;
00078     KGlobal::setActiveInstance(this->instance());
00079 }
00080 
00081 void KCModule::init()
00082 { 
00083     d = new KCModulePrivate;
00084    _btn = Help|Default|Apply;
00085 }
00086 
00087 KConfigDialogManager* KCModule::addConfig( KConfigSkeleton *config, QWidget* widget )
00088 {
00089     KConfigDialogManager* manager = new KConfigDialogManager( widget, config, name() );
00090     connect( manager, SIGNAL( widgetModified() ), SLOT( widgetChanged() ));
00091     d->managers.append( manager );
00092     return manager;
00093 }
00094 
00095 KCModule::~KCModule()
00096 {
00097     if (d->_hasOwnInstance)
00098        delete d->_instance;
00099     delete d->_about;
00100     delete d;
00101 }
00102 
00103 void KCModule::load()
00104 {
00105     KConfigDialogManager* manager;
00106     for( manager = d->managers.first(); manager; manager = d->managers.next() )
00107         manager->updateWidgets();
00108 }
00109 
00110 void KCModule::save()
00111 {
00112     KConfigDialogManager* manager;
00113     for( manager = d->managers.first(); manager; manager = d->managers.next() )
00114         manager->updateSettings();
00115     emit( changed( false ));
00116 }
00117 
00118 void KCModule::defaults()
00119 {
00120     KConfigDialogManager* manager;
00121     for( manager = d->managers.first(); manager; manager = d->managers.next() )
00122         manager->updateWidgetsDefault();
00123 }
00124 
00125 void KCModule::widgetChanged()
00126 {
00127     bool bChanged = false;
00128     KConfigDialogManager* manager;
00129     for( manager = d->managers.first(); manager; manager = d->managers.next() )
00130         bChanged |= manager->hasChanged();
00131     emit( changed( bChanged ));
00132 }
00133 
00134 const KAboutData *KCModule::aboutData() const
00135 {
00136     return d->_about;
00137 }
00138 
00139 void KCModule::setAboutData( KAboutData* about )
00140 {
00141     delete d->_about;
00142     d->_about = about;
00143 }
00144 
00145 void KCModule::setRootOnlyMsg(const QString& msg)
00146 {
00147     d->_rootOnlyMsg = msg;
00148 }
00149 
00150 QString KCModule::rootOnlyMsg() const
00151 {
00152     return d->_rootOnlyMsg;
00153 }
00154 
00155 void KCModule::setUseRootOnlyMsg(bool on)
00156 {
00157     d->_useRootOnlyMsg = on;
00158 }
00159 
00160 bool KCModule::useRootOnlyMsg() const
00161 {
00162     return d->_useRootOnlyMsg;
00163 }
00164 
00165 void KCModule::changed()
00166 {
00167     emit changed(true);
00168 }
00169 
00170 KInstance *KCModule::instance() const
00171 {
00172     return d->_instance;
00173 }
00174 
00175 void KCModule::setQuickHelp( const QString& help )
00176 {
00177     d->_quickHelp = help;
00178     emit( quickHelpChanged() );
00179 }
00180 
00181 QString KCModule::quickHelp() const
00182 {
00183     return d->_quickHelp;
00184 }
00185 
00186 
00187 const QPtrList<KConfigDialogManager>& KCModule::configs() const
00188 {
00189     return d->managers;
00190 }
00191 
00192 void KCModule::virtual_hook( int, void* )
00193 { /*BASE::virtual_hook( id, data );*/ }
00194 
00195 // vim: sw=4 et sts=4
KDE Logo
This file is part of the documentation for kdeui Library Version 3.4.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Feb 8 06:22:41 2006 by doxygen 1.4.4 written by Dimitri van Heesch, © 1997-2003