kcmoduleinfo.cpp
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 
 
This file is part of the documentation for kutils Library Version 3.2.0.