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 <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