kinstance.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "kinstance.h"
00019
00020 #include "kconfig.h"
00021 #include "klocale.h"
00022 #include "kcharsets.h"
00023 #include "kiconloader.h"
00024 #include "kaboutdata.h"
00025 #include "kstandarddirs.h"
00026 #include "kdebug.h"
00027 #include "kglobal.h"
00028 #include "kmimesourcefactory.h"
00029
00030 #include <qfont.h>
00031
00032 class KInstancePrivate
00033 {
00034 public:
00035 KInstancePrivate ()
00036 {
00037 mimeSourceFactory = 0L;
00038 }
00039
00040 ~KInstancePrivate ()
00041 {
00042 delete mimeSourceFactory;
00043 }
00044
00045 KMimeSourceFactory* mimeSourceFactory;
00046 QString configName;
00047 bool ownAboutdata;
00048 };
00049
00050 KInstance::KInstance( const QCString& name)
00051 : _dirs (0L),
00052 _config (0L),
00053 _iconLoader (0L),
00054 _name( name ), _aboutData( new KAboutData( name, "", 0 ) )
00055 {
00056 Q_ASSERT(!name.isEmpty());
00057 if (!KGlobal::_instance)
00058 {
00059 KGlobal::_instance = this;
00060 KGlobal::setActiveInstance(this);
00061 }
00062
00063 d = new KInstancePrivate ();
00064 d->ownAboutdata = true;
00065 }
00066
00067 KInstance::KInstance( const KAboutData * aboutData )
00068 : _dirs (0L),
00069 _config (0L),
00070 _iconLoader (0L),
00071 _name( aboutData->appName() ), _aboutData( aboutData )
00072 {
00073 Q_ASSERT(!_name.isEmpty());
00074
00075 if (!KGlobal::_instance)
00076 {
00077 KGlobal::_instance = this;
00078 KGlobal::setActiveInstance(this);
00079 }
00080
00081 d = new KInstancePrivate ();
00082 d->ownAboutdata = false;
00083 }
00084
00085 KInstance::KInstance( KInstance* src )
00086 : _dirs ( src->_dirs ),
00087 _config ( src->_config ),
00088 _iconLoader ( src->_iconLoader ),
00089 _name( src->_name ), _aboutData( src->_aboutData )
00090 {
00091 Q_ASSERT(!_name.isEmpty());
00092
00093 if (!KGlobal::_instance || KGlobal::_instance == src )
00094 {
00095 KGlobal::_instance = this;
00096 KGlobal::setActiveInstance(this);
00097 }
00098
00099 d = new KInstancePrivate ();
00100 d->ownAboutdata = src->d->ownAboutdata;
00101
00102 src->_dirs = 0L;
00103 src->_config = 0L;
00104 src->_iconLoader = 0L;
00105 src->_aboutData = 0L;
00106 delete src;
00107 }
00108
00109 KInstance::~KInstance()
00110 {
00111 if (d->ownAboutdata)
00112 delete _aboutData;
00113 _aboutData = 0;
00114
00115 delete d;
00116 d = 0;
00117
00118 delete _iconLoader;
00119 _iconLoader = 0;
00120 delete _config;
00121 _config = 0;
00122 delete _dirs;
00123 _dirs = 0;
00124
00125 if (KGlobal::_instance == this)
00126 KGlobal::_instance = 0;
00127 if (KGlobal::activeInstance() == this)
00128 KGlobal::setActiveInstance(0);
00129 }
00130
00131
00132 KStandardDirs *KInstance::dirs() const
00133 {
00134 if( _dirs == 0 ) {
00135 _dirs = new KStandardDirs( );
00136 if (_config)
00137 if (_dirs->addCustomized(_config))
00138 _config->reparseConfiguration();
00139 }
00140
00141 return _dirs;
00142 }
00143
00144 KConfig *KInstance::config() const
00145 {
00146 if( _config == 0 ) {
00147 if ( !d->configName.isEmpty() )
00148 {
00149 _config = new KConfig( d->configName );
00150
00151 _config->setGroup( "KDE Action Restrictions" );
00152 if (_config->readBoolEntry( "custom_config", true))
00153 {
00154 _config->setGroup(QString::null);
00155 }
00156 else
00157 {
00158 delete _config;
00159 _config = 0;
00160 }
00161
00162 }
00163
00164 if ( _config == 0 )
00165 {
00166 if ( !_name.isEmpty() )
00167 _config = new KConfig( _name + "rc");
00168 else
00169 _config = new KConfig();
00170 }
00171 if (_dirs)
00172 if (_dirs->addCustomized(_config))
00173 _config->reparseConfiguration();
00174 }
00175
00176 return _config;
00177 }
00178
00179 void KInstance::setConfigName(const QString &configName)
00180 {
00181 d->configName = configName;
00182 }
00183
00184 KIconLoader *KInstance::iconLoader() const
00185 {
00186 if( _iconLoader == 0 ) {
00187 _iconLoader = new KIconLoader( _name, dirs() );
00188 _iconLoader->enableDelayedIconSetLoading( true );
00189 }
00190
00191 return _iconLoader;
00192 }
00193
00194 void KInstance::newIconLoader() const
00195 {
00196 KIconTheme::reconfigure();
00197 _iconLoader->reconfigure( _name, dirs() );
00198 }
00199
00200 const KAboutData * KInstance::aboutData() const
00201 {
00202 return _aboutData;
00203 }
00204
00205 QCString KInstance::instanceName() const
00206 {
00207 return _name;
00208 }
00209
00210 KMimeSourceFactory* KInstance::mimeSourceFactory () const
00211 {
00212 if (!d->mimeSourceFactory)
00213 {
00214 d->mimeSourceFactory = new KMimeSourceFactory(iconLoader());
00215 }
00216
00217 return d->mimeSourceFactory;
00218 }
00219
00220 void KInstance::virtual_hook( int, void* )
00221 { }
00222
This file is part of the documentation for kdelibs Version 3.1.4.