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