kcmoduleproxy.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "kcmoduleproxy.h"
00021 #include "kcmoduleloader.h"
00022 #include "kcmoduleinfo.h"
00023 #include <qlayout.h>
00024 #include <qapplication.h>
00025 #include <qcursor.h>
00026
00027 class KCModuleProxy::KCModuleProxyPrivate
00028 {
00029 public:
00030 KCModuleProxyPrivate( const KCModuleInfo & info )
00031 : kcm( 0 )
00032 , modinfo( info )
00033 , changed( false )
00034 , failed( false )
00035 {}
00036
00037 ~KCModuleProxyPrivate()
00038 {
00039 delete kcm;
00040 }
00041
00042 QStringList args;
00043 KCModule * kcm;
00044 KCModuleInfo modinfo;
00045 bool withfallback;
00046 bool changed;
00047 bool failed;
00048 };
00049
00050 KCModuleProxy::KCModuleProxy( const KCModuleInfo & info, bool fallback,
00051 QWidget * parent, const char * name, const QStringList & args )
00052 : QWidget( parent, name )
00053 , d( new KCModuleProxyPrivate( info ) )
00054 {
00055 d->args = args;
00056 d->withfallback = fallback;
00057 }
00058
00059 KCModuleProxy::~KCModuleProxy()
00060 {
00061 KCModuleLoader::unloadModule( d->modinfo );
00062 delete d;
00063 }
00064
00065 void KCModuleProxy::load()
00066 {
00067 if( d->kcm )
00068 {
00069 d->kcm->load();
00070 moduleChanged( false );
00071 }
00072 }
00073
00074 void KCModuleProxy::save()
00075 {
00076 if( d->kcm )
00077 {
00078 d->kcm->save();
00079 moduleChanged( false );
00080 }
00081 }
00082
00083 void KCModuleProxy::defaults()
00084 {
00085 if( d->kcm )
00086 {
00087 d->kcm->defaults();
00088 }
00089 }
00090
00091 QString KCModuleProxy::quickHelp() const
00092 {
00093 return realModule() ? realModule()->quickHelp() : QString::null;
00094 }
00095
00096 const KAboutData * KCModuleProxy::aboutData() const
00097 {
00098 return realModule() ? realModule()->aboutData() : 0;
00099 }
00100
00101 int KCModuleProxy::buttons() const
00102 {
00103 return realModule() ? realModule()->buttons() :
00104 KCModule::Help | KCModule::Default | KCModule::Apply ;
00105 }
00106
00107 QString KCModuleProxy::rootOnlyMsg() const
00108 {
00109 return realModule() ? realModule()->rootOnlyMsg() : QString::null;
00110 }
00111
00112 bool KCModuleProxy::useRootOnlyMsg() const
00113 {
00114 return realModule() ? realModule()->useRootOnlyMsg() : true;
00115 }
00116
00117 KInstance * KCModuleProxy::instance() const
00118 {
00119 return realModule() ? realModule()->instance() : 0;
00120 }
00121
00122 bool KCModuleProxy::changed() const
00123 {
00124 return d->changed;
00125 }
00126
00127 KCModule * KCModuleProxy::realModule() const
00128 {
00129 if( ! d->kcm && ! d->failed )
00130 {
00131 QApplication::setOverrideCursor(Qt::WaitCursor);
00132 KCModuleProxy * that = const_cast<KCModuleProxy*>( this );
00133 ( new QHBoxLayout( that, 0, 0 ) )->setAutoAdd( true );
00134 d->kcm = KCModuleLoader::loadModule( d->modinfo, d->withfallback,
00135 that, name(), d->args );
00136 if( ! d->kcm )
00137 {
00138 QApplication::restoreOverrideCursor();
00139 KCModuleLoader::showLastLoaderError( that );
00140 d->failed = true;
00141 return 0;
00142 }
00143 connect( d->kcm, SIGNAL( changed( bool ) ),
00144 this, SLOT( moduleChanged( bool ) ) );
00145 connect( d->kcm, SIGNAL( destroyed() ),
00146 this, SLOT( moduleDestroyed() ) );
00147 QApplication::restoreOverrideCursor();
00148 }
00149 return d->kcm;
00150 }
00151
00152 const KCModuleInfo & KCModuleProxy::moduleInfo() const
00153 {
00154 return d->modinfo;
00155 }
00156
00157 void KCModuleProxy::showEvent( QShowEvent * ev )
00158 {
00159 ( void )realModule();
00160 QWidget::showEvent( ev );
00161 }
00162
00163 void KCModuleProxy::moduleChanged( bool c )
00164 {
00165 if( d->changed != c )
00166 {
00167 d->changed = c;
00168 emit changed( c );
00169 }
00170 }
00171
00172 void KCModuleProxy::moduleDestroyed()
00173 {
00174 d->kcm = 0;
00175 }
00176
00177 #include "kcmoduleproxy.moc"
00178
00179
This file is part of the documentation for kutils Library Version 3.3.90.