00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#ifndef __kmimetype_h__
00021
#define __kmimetype_h__
00022
00023
#include <sys/types.h>
00024
#include <sys/stat.h>
00025
00026
#include <qstringlist.h>
00027
#include <qvaluelist.h>
00028
#include <qpixmap.h>
00029
#include <kicontheme.h>
00030
00031
#include <kurl.h>
00032
#include <kdemacros.h>
00033
00034
#include "ksycocatype.h"
00035
#include "kservicetype.h"
00036
00037
class KSimpleConfig;
00049 class KMimeType :
public KServiceType
00050 {
00051 K_SYCOCATYPE( KST_KMimeType,
KServiceType )
00052
00053
public:
00054
typedef KSharedPtr<KMimeType> Ptr;
00055
typedef QValueList<Ptr> List;
00056
public:
00070
KMimeType(
const QString & _fullpath,
const QString& _type,
const QString& _icon,
00071
const QString& _comment,
const QStringList& _patterns );
00072
00077
KMimeType(
const QString & _fullpath );
00078
00083
KMimeType(
KDesktopFile *config );
00084
00090
KMimeType(
QDataStream& _str,
int offset );
00091
00092
virtual ~
KMimeType();
00093
00102 virtual QString icon(
const QString& ,
bool )
const {
return m_strIcon; }
00103
00112 virtual QString icon(
const KURL& ,
bool )
const {
return m_strIcon; }
00113
00131
virtual QPixmap pixmap( KIcon::Group group,
int force_size = 0,
int state = 0,
00132
QString * path = 0L )
const;
00133
00150
virtual QPixmap pixmap(
const KURL& _url, KIcon::Group _group,
int _force_size = 0,
00151
int _state = 0,
QString * _path = 0L )
const;
00152
00171
static QPixmap pixmapForURL(
const KURL & _url, mode_t _mode = 0, KIcon::Group _group = KIcon::Desktop,
00172
int _force_size = 0,
int _state = 0,
QString * _path = 0L );
00173
00174
00187
static QString iconForURL(
const KURL & _url, mode_t _mode = 0 );
00188
00198
static QString favIconForURL(
const KURL& url );
00199
00204 QString comment()
const {
return m_strComment; }
00205
00213 virtual QString comment(
const QString&,
bool )
const {
return m_strComment; }
00214
00222 virtual QString comment(
const KURL&,
bool )
const {
return m_strComment; }
00223
00229 const QStringList&
patterns()
const {
return m_lstPatterns; }
00230
00235
virtual void load(
QDataStream &qs );
00236
00241
virtual void save(
QDataStream &qs );
00242
00249
virtual QVariant property(
const QString& _name )
const;
00250
00257
virtual QStringList propertyNames() const;
00258
00273 static Ptr mimeType( const
QString& _name );
00274
00303 static Ptr findByURL( const
KURL& _url, mode_t _mode = 0,
00304
bool _is_local_file = false,
bool _fast_mode = false );
00305
00306 static Ptr findByURL( const
KURL& _url, mode_t _mode,
00307
bool _is_local_file,
bool _fast_mode,
00308
bool *accurate);
00335 static Ptr findByPath( const
QString& path, mode_t mode = 0,
bool fast_mode = false );
00336
00347 static Ptr findByContent( const
QByteArray &data,
int *accuracy=0 );
00348
00362 static Ptr findByFileContent( const
QString &fileName,
int *accuracy=0 );
00363
00369 struct
Format{
00370
bool text : 1;
00371
enum { NoCompression=0, GZipCompression } compression : 4;
00372
int dummy : 27;
00373 };
00374
static Format findFormatByFileContent(
const QString &fileName );
00375
00385
static List allMimeTypes();
00386
00394
static const QString &
defaultMimeType();
00395
00403
static KMimeType::Ptr defaultMimeTypePtr();
00404
00421
QString parentMimeType() const;
00422
00429
bool is( const
QString& mimeTypeName ) const;
00430
00436 static
KMimeType::
Ptr diagnoseFileName(const
QString &file,
QString &pattern);
00437
00438 protected:
00439
void loadInternal(
QDataStream& );
00440
void init(
KDesktopFile * );
00441
00446 static
void errorMissingMimeType( const
QString& _type );
00447
00451 static
void buildDefaultType();
00452
00456 static
void checkEssentialMimeTypes();
00460 static
bool s_bChecked;
00461
00462
QStringList m_lstPatterns;
00463
00464 static
Ptr s_pDefaultType;
00465
00466 protected:
00467 friend class KServiceTypeFactory;
00468
int patternsAccuracy() const;
00469
00470 protected:
00471 virtual
void virtual_hook(
int id,
void* data );
00472 };
00473
00478 class
KFolderType : public
KMimeType
00479 {
00480 K_SYCOCATYPE( KST_KFolderType, KMimeType )
00481
00482
public:
00483
00484
00485
00490 KFolderType( KDesktopFile *config) : KMimeType( config ) { }
00492
KFolderType( QDataStream& _str,
int offset ) : KMimeType( _str, offset ) { }
00493
00494
virtual QString icon(
const QString& _url,
bool _is_local )
const;
00495
virtual QString icon(
const KURL& _url,
bool _is_local )
const;
00496
virtual QString comment(
const QString& _url,
bool _is_local )
const;
00497
virtual QString comment(
const KURL& _url,
bool _is_local )
const;
00498
protected:
00499
virtual void virtual_hook(
int id,
void* data );
00500 };
00501
00507 class KDEDesktopMimeType :
public KMimeType
00508 {
00509 K_SYCOCATYPE( KST_KDEDesktopMimeType,
KMimeType )
00510
00511
public:
00512
enum ServiceType { ST_MOUNT, ST_UNMOUNT, ST_USER_DEFINED };
00513
00518 struct Service
00519 {
00520
Service() { m_display =
true; }
00521
bool isEmpty()
const {
return m_strName.isEmpty(); }
00522
QString m_strName;
00523
QString m_strIcon;
00524
QString m_strExec;
00525 ServiceType m_type;
00526
bool m_display;
00527 };
00528
00529
00530
00535 KDEDesktopMimeType(
KDesktopFile *config) :
KMimeType( config ) { }
00537
KDEDesktopMimeType(
QDataStream& _str,
int offset ) :
KMimeType( _str, offset ) { }
00538
00539
virtual QString icon(
const QString& _url,
bool _is_local )
const;
00540
virtual QString icon(
const KURL& _url,
bool _is_local )
const;
00541
virtual QPixmap pixmap(
const KURL& _url, KIcon::Group _group,
int _force_size = 0,
00542
int _state = 0,
QString * _path = 0L )
const;
00543
virtual QString comment(
const QString& _url,
bool _is_local )
const;
00544
virtual QString comment(
const KURL& _url,
bool _is_local )
const;
00545
00551
static QValueList<Service> builtinServices(
const KURL& _url );
00562
static QValueList<Service> userDefinedServices(
const QString& path,
bool bLocalFiles );
00563
00568
static void executeService(
const QString& _path,
KDEDesktopMimeType::Service& _service ) KDE_DEPRECATED;
00569
00575
static void executeService(
const KURL::List& urls,
KDEDesktopMimeType::Service& service );
00576
00588
static pid_t run(
const KURL& _url,
bool _is_local );
00589
00590
protected:
00591 virtual QPixmap pixmap(KIcon::Group a,
int b,
int c,
QString *d)
const
00592
{
return KMimeType::pixmap(a, b, c, d); }
00593
00594
static pid_t runFSDevice(
const KURL& _url,
const KSimpleConfig &cfg );
00595
static pid_t runApplication(
const KURL& _url,
const QString & _serviceFile );
00596
static pid_t runLink(
const KURL& _url,
const KSimpleConfig &cfg );
00597
static pid_t runMimeType(
const KURL& _url,
const KSimpleConfig &cfg );
00598
protected:
00599
virtual void virtual_hook(
int id,
void* data );
00600 };
00601
00606 class KExecMimeType :
public KMimeType
00607 {
00608 K_SYCOCATYPE( KST_KExecMimeType,
KMimeType )
00609
00610
public:
00611
00612
00613
00618 KExecMimeType(
KDesktopFile *config) :
KMimeType( config ) { }
00620
KExecMimeType(
QDataStream& _str,
int offset ) :
KMimeType( _str, offset ) { }
00621
protected:
00622
virtual void virtual_hook(
int id,
void* data );
00623 };
00624
00625
#endif