00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __kservicetype_h__
00022 #define __kservicetype_h__
00023
00024 #include "ksycocaentry.h"
00025 #include "kservice.h"
00026
00027 #include <qstring.h>
00028 #include <qstringlist.h>
00029 #include <qptrlist.h>
00030 #include <qmap.h>
00031 #include <qshared.h>
00032 #include <qdatastream.h>
00033 #include <qvariant.h>
00034
00035 #include <ksimpleconfig.h>
00036
00043 class KServiceType : public KSycocaEntry
00044 {
00045 K_SYCOCATYPE( KST_KServiceType, KSycocaEntry )
00046
00047 public:
00048 typedef KSharedPtr<KServiceType> Ptr;
00049 typedef QValueList<Ptr> List;
00050 public:
00051
00056 KServiceType( const QString & _fullpath, const QString& _name,
00057 const QString& _icon, const QString& _comment);
00062 KServiceType( const QString & _fullpath );
00063
00067 KServiceType( KDesktopFile *config);
00068
00073 KServiceType( QDataStream& _str, int offset );
00074
00075 virtual ~KServiceType();
00076
00084 QString icon() const { return m_strIcon; }
00085
00089 QString comment() const { return m_strComment; }
00090
00094 QString name() const { return m_strName; }
00095
00101 QString desktopEntryPath() const { return entryPath(); }
00102
00106 bool isDerived() const { return m_bDerived; }
00107
00112 QString parentServiceType() const;
00113
00118 bool inherits( const QString& servTypeName ) const;
00119
00120 virtual QVariant property( const QString& _name ) const;
00121 virtual QStringList propertyNames() const;
00122
00123 bool isValid() const { return m_bValid; }
00124
00125 virtual QVariant::Type propertyDef( const QString& _name ) const;
00126 virtual QStringList propertyDefNames() const;
00127 virtual const QMap<QString,QVariant::Type>& propertyDefs() const { return m_mapPropDefs; }
00128
00132 virtual void save( QDataStream& );
00133
00137 virtual void load( QDataStream& );
00138
00144 static Ptr serviceType( const QString& _name );
00145
00152 static KService::List offers( const QString& _servicetype );
00153
00161 static List allServiceTypes();
00162
00163 protected:
00164 void init( KDesktopFile *config );
00165
00166 protected:
00167 QString m_strName;
00168 QString m_strIcon;
00169 QString m_strComment;
00170 QMap<QString,QVariant> m_mapProps;
00171 QMap<QString,QVariant::Type> m_mapPropDefs;
00172
00173 bool m_bValid:1;
00174 bool m_bDerived:1;
00175 protected:
00176 virtual void virtual_hook( int id, void* data );
00177 private:
00178 class KServiceTypePrivate* d;
00179 };
00180
00181
00182
00183
00184 #endif