kio Library API Documentation

kmimetype.h

00001 /*  This file is part of the KDE libraries
00002  *  Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
00003  *                     David Faure   <faure@kde.org>
00004  *
00005  *  This library is free software; you can redistribute it and/or
00006  *  modify it under the terms of the GNU Library General Public
00007  *  License version 2 as published by the Free Software Foundation;
00008  *
00009  *  This library is distributed in the hope that it will be useful,
00010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  *  Library General Public License for more details.
00013  *
00014  *  You should have received a copy of the GNU Library General Public License
00015  *  along with this library; see the file COPYING.LIB.  If not, write to
00016  *  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00017  *  Boston, MA 02111-1307, USA.
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 //  KFolderType( const QString & _fullpath, const QString& _type, const QString& _icon, const QString& _comment,
00484 //             const QStringList& _patterns );
00485 //  KFolderType( const QString & _fullpath ) : KMimeType( _fullpath ) { }
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_PROPERTIES, */ 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   // KDEDesktopMimeType( const QString & _fullpath, const QString& _type, const QString& _icon,
00529   //                     const QString& _comment, const QStringList& _patterns );
00530   // KDEDesktopMimeType( const QString & _fullpath ) : KMimeType( _fullpath ) { }
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   // KExecMimeType( const QString & _fullpath, const QString& _type, const QString& _icon,
00612   //                 const QString& _comment, const QStringList& _patterns );
00613   // KExecMimeType( const QString & _fullpath ) : KMimeType( _fullpath ) { }
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
KDE Logo
This file is part of the documentation for kio Library Version 3.2.3.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Sep 30 05:18:25 2004 by doxygen 1.3.4 written by Dimitri van Heesch, © 1997-2003