00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
#include "kcmoduleinfo.h"
00026
00027
#include <kdesktopfile.h>
00028
#include <kdebug.h>
00029
#include <kglobal.h>
00030
#include <kstandarddirs.h>
00031
00032 KCModuleInfo::KCModuleInfo(
const QString& desktopFile)
00033 : _fileName(desktopFile), d(0L)
00034 {
00035 _allLoaded =
false;
00036
00037
00038 init( KService::serviceByStorageId(desktopFile) );
00039 }
00040
00041 KCModuleInfo::KCModuleInfo(
KService::Ptr moduleInfo )
00042 : _fileName( moduleInfo->desktopEntryPath() )
00043 {
00044
kdDebug() <<
k_funcinfo << _fileName <<
endl;
00045 _allLoaded =
false;
00046
00047 init(moduleInfo);
00048 }
00049
00050 KCModuleInfo::KCModuleInfo(
const KCModuleInfo &rhs )
00051 : d( 0 )
00052 {
00053 ( *this ) = rhs;
00054 }
00055
00056
00057
00058
00059
KCModuleInfo &KCModuleInfo::operator=(
const KCModuleInfo &rhs )
00060 {
00061 _keywords = rhs.
_keywords;
00062 _name = rhs.
_name;
00063 _icon = rhs.
_icon;
00064 _lib = rhs.
_lib;
00065 _handle = rhs.
_handle;
00066 _fileName = rhs.
_fileName;
00067 _doc = rhs.
_doc;
00068 _comment = rhs.
_comment;
00069 _needsRootPrivileges = rhs.
_needsRootPrivileges;
00070 _isHiddenByDefault = rhs.
_isHiddenByDefault;
00071 _allLoaded = rhs.
_allLoaded;
00072 _service = rhs.
_service;
00073
00074
00075
00076
return *
this;
00077 }
00078
00079
bool KCModuleInfo::operator==(
const KCModuleInfo & rhs )
const
00080
{
00081
return ( ( _name == rhs.
_name ) && ( _lib == rhs.
_lib ) && ( _fileName == rhs.
_fileName ) );
00082 }
00083
00084
bool KCModuleInfo::operator!=(
const KCModuleInfo & rhs )
const
00085
{
00086
return ! operator==( rhs );
00087 }
00088
00089 KCModuleInfo::~KCModuleInfo() { }
00090
00091
void KCModuleInfo::init(
KService::Ptr s)
00092 {
00093 _service = s;
00094
00095 setName(_service->name());
00096 setComment(_service->comment());
00097 setIcon(_service->icon());
00098
00099
00100 setLibrary(_service->library());
00101
00102
00103 setKeywords(_service->keywords());
00104 }
00105
00106
void
00107 KCModuleInfo::loadAll()
00108 {
00109 _allLoaded =
true;
00110
00111
00112 setHandle(_service->property(
"X-KDE-FactoryName", QVariant::String).toString());
00113
00114
QVariant tmp;
00115
00116
00117 tmp = _service->property(
"X-KDE-Weight", QVariant::Int );
00118 setWeight( tmp.
isValid() ? tmp.
toInt() : 100 );
00119
00120
00121 tmp = _service->property(
"X-KDE-RootOnly", QVariant::Bool );
00122 setNeedsRootPrivileges( tmp.
isValid() ? tmp.
toBool() : false );
00123
00124
00125
00126 tmp = _service->property(
"X-KDE-IsHiddenByDefault", QVariant::Bool );
00127 setIsHiddenByDefault( tmp.
isValid() ? tmp.
toBool() : false );
00128
00129
00130 setDocPath( _service->property(
"DocPath", QVariant::String ).toString() );
00131 }
00132
00133
QString
00134 KCModuleInfo::docPath()
const
00135
{
00136
if (!_allLoaded)
00137 const_cast<KCModuleInfo*>(
this)->loadAll();
00138
00139
return _doc;
00140 }
00141
00142
QString
00143 KCModuleInfo::handle()
const
00144
{
00145
if (!_allLoaded)
00146 const_cast<KCModuleInfo*>(
this)->loadAll();
00147
00148
if (_handle.
isEmpty())
00149
return _lib;
00150
00151
return _handle;
00152 }
00153
00154
int
00155 KCModuleInfo::weight()
const
00156
{
00157
if (!_allLoaded)
00158 const_cast<KCModuleInfo*>(
this)->loadAll();
00159
00160
return _weight;
00161 }
00162
00163
bool
00164 KCModuleInfo::needsRootPrivileges()
const
00165
{
00166
if (!_allLoaded)
00167 const_cast<KCModuleInfo*>(
this)->loadAll();
00168
00169
return _needsRootPrivileges;
00170 }
00171
00172
bool
00173 KCModuleInfo::isHiddenByDefault()
const
00174
{
00175
if (!_allLoaded)
00176 const_cast<KCModuleInfo*>(
this)->loadAll();
00177
00178
return _isHiddenByDefault;
00179 }
00180
00181