kcmoduleinfo.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 <qvariant.h>
00025
00026 #include <kdesktopfile.h>
00027 #include <kdebug.h>
00028 #include <kglobal.h>
00029 #include <kstandarddirs.h>
00030 #include <klocale.h>
00031
00032 #include "kcmoduleinfo.h"
00033
00034 class KCModuleInfo::KCModuleInfoPrivate
00035 {
00036 public:
00037 KCModuleInfoPrivate() :
00038 testModule( false )
00039 {};
00040 ~KCModuleInfoPrivate()
00041 { };
00042
00043 QString factoryName;
00044 bool testModule;
00045
00046 };
00047
00048 KCModuleInfo::KCModuleInfo()
00049 {
00050 _allLoaded = false;
00051 d = new KCModuleInfoPrivate;
00052 }
00053
00054 KCModuleInfo::KCModuleInfo(const QString& desktopFile)
00055 {
00056 KService::Ptr service = KService::serviceByStorageId(desktopFile);
00057 if(!service) setName(desktopFile);
00058 init(service);
00059 }
00060
00061 KCModuleInfo::KCModuleInfo( KService::Ptr moduleInfo )
00062 {
00063 init(moduleInfo);
00064 }
00065
00066 KCModuleInfo::KCModuleInfo( const KCModuleInfo &rhs )
00067 {
00068 d = new KCModuleInfoPrivate;
00069 ( *this ) = rhs;
00070 }
00071
00072
00073
00074
00075 KCModuleInfo &KCModuleInfo::operator=( const KCModuleInfo &rhs )
00076 {
00077 _keywords = rhs._keywords;
00078 _name = rhs._name;
00079 _icon = rhs._icon;
00080 _lib = rhs._lib;
00081 _handle = rhs._handle;
00082 _fileName = rhs._fileName;
00083 _doc = rhs._doc;
00084 _comment = rhs._comment;
00085 _needsRootPrivileges = rhs._needsRootPrivileges;
00086 _isHiddenByDefault = rhs._isHiddenByDefault;
00087 _allLoaded = rhs._allLoaded;
00088 _service = rhs._service;
00089
00090 *d = *(rhs.d);
00091
00092 return *this;
00093 }
00094
00095 QString KCModuleInfo::factoryName() const
00096 {
00097 if( d->factoryName.isEmpty() )
00098 {
00099 d->factoryName = _service->property("X-KDE-FactoryName", QVariant::String).toString();
00100 if ( d->factoryName.isEmpty() )
00101 d->factoryName = library();
00102 }
00103
00104 return d->factoryName;
00105 }
00106
00107 bool KCModuleInfo::operator==( const KCModuleInfo & rhs ) const
00108 {
00109 return ( ( _name == rhs._name ) && ( _lib == rhs._lib ) && ( _fileName == rhs._fileName ) );
00110 }
00111
00112 bool KCModuleInfo::operator!=( const KCModuleInfo & rhs ) const
00113 {
00114 return ! operator==( rhs );
00115 }
00116
00117 KCModuleInfo::~KCModuleInfo()
00118 {
00119 delete d;
00120 }
00121
00122 void KCModuleInfo::init(KService::Ptr s)
00123 {
00124 _allLoaded = false;
00125 d = new KCModuleInfoPrivate;
00126
00127 if ( s )
00128 _service = s;
00129 else
00130 {
00131 kdDebug(712) << "Could not find the service." << endl;
00132 return;
00133 }
00134
00135
00136 setName(_service->name());
00137 setComment(_service->comment());
00138 setIcon(_service->icon());
00139
00140 _fileName = ( _service->desktopEntryPath() );
00141
00142
00143 setLibrary(_service->library());
00144
00145
00146 setKeywords(_service->keywords());
00147 }
00148
00149 void
00150 KCModuleInfo::loadAll()
00151 {
00152 if( !_service )
00153 return;
00154
00155 _allLoaded = true;
00156
00157
00158 setHandle(_service->property("X-KDE-FactoryName", QVariant::String).toString());
00159
00160 QVariant tmp;
00161
00162
00163 tmp = _service->property( "X-KDE-Weight", QVariant::Int );
00164 setWeight( tmp.isValid() ? tmp.toInt() : 100 );
00165
00166
00167 tmp = _service->property( "X-KDE-RootOnly", QVariant::Bool );
00168 setNeedsRootPrivileges( tmp.isValid() ? tmp.toBool() : false );
00169
00170
00171
00172 tmp = _service->property( "X-KDE-IsHiddenByDefault", QVariant::Bool );
00173 setIsHiddenByDefault( tmp.isValid() ? tmp.toBool() : false );
00174
00175
00176 setDocPath( _service->property( "DocPath", QVariant::String ).toString() );
00177
00178 tmp = _service->property( "X-KDE-Test-Module", QVariant::Bool );
00179 setNeedsTest( tmp.isValid() ? tmp.asBool() : false );
00180 }
00181
00182 QString
00183 KCModuleInfo::docPath() const
00184 {
00185 if (!_allLoaded)
00186 const_cast<KCModuleInfo*>(this)->loadAll();
00187
00188 return _doc;
00189 }
00190
00191 QString
00192 KCModuleInfo::handle() const
00193 {
00194 if (!_allLoaded)
00195 const_cast<KCModuleInfo*>(this)->loadAll();
00196
00197 if (_handle.isEmpty())
00198 return _lib;
00199
00200 return _handle;
00201 }
00202
00203 int
00204 KCModuleInfo::weight() const
00205 {
00206 if (!_allLoaded)
00207 const_cast<KCModuleInfo*>(this)->loadAll();
00208
00209 return _weight;
00210 }
00211
00212 bool
00213 KCModuleInfo::needsRootPrivileges() const
00214 {
00215 if (!_allLoaded)
00216 const_cast<KCModuleInfo*>(this)->loadAll();
00217
00218 return _needsRootPrivileges;
00219 }
00220
00221 bool
00222 KCModuleInfo::isHiddenByDefault() const
00223 {
00224 if (!_allLoaded)
00225 const_cast<KCModuleInfo*>(this)->loadAll();
00226
00227 return _isHiddenByDefault;
00228 }
00229
00230 bool KCModuleInfo::needsTest() const
00231 {
00232 return d->testModule;
00233 }
00234
00235 void KCModuleInfo::setNeedsTest( bool val )
00236 {
00237 d->testModule = val;
00238 }
00239
00240
00241
00242
|