00001
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 { }
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 { }
00194
00195