kio Library API Documentation

kfileitem.h

00001 /* This file is part of the KDE project
00002    Copyright (C) 1999 David Faure <faure@kde.org>
00003 
00004    This library is free software; you can redistribute it and/or
00005    modify it under the terms of the GNU Library General Public
00006    License as published by the Free Software Foundation; either
00007    version 2 of the License, or (at your option) any later version.
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 // $Id: kfileitem.h,v 1.90 2004/03/18 20:48:35 craig Exp $
00020 
00021 #ifndef __kfileitem_h__
00022 #define __kfileitem_h__
00023 
00024 #include <qstringlist.h>
00025 #include <sys/stat.h>
00026 
00027 #include <qptrlist.h>
00028 #include <kio/global.h>
00029 #include <kurl.h>
00030 #include <kmimetype.h>
00031 #include <kfilemetainfo.h>
00032 
00039 class KFileItem
00040 {
00041 public:
00042   enum { Unknown = (mode_t) - 1 };
00043 
00055   KFileItem( const KIO::UDSEntry& _entry, const KURL& _url,
00056              bool _determineMimeTypeOnDemand = false,
00057              bool _urlIsDirectory = false );
00058 
00072   KFileItem( mode_t _mode, mode_t _permissions, const KURL& _url,
00073              bool _determineMimeTypeOnDemand = false );
00074 
00081   KFileItem( const KURL &url, const QString &mimeType, mode_t mode );
00082 
00087   KFileItem( const KFileItem &item );
00088 
00093   virtual ~KFileItem();
00094 
00099   void refresh();
00100 
00105   void refreshMimeType();
00106 
00111   const KURL & url() const { return m_url; }
00112 
00118   void setURL( const KURL &url );
00119 
00126   void setName( const QString &name );
00127 
00132   mode_t permissions() const { return m_permissions; }
00133 
00138   QString permissionsString() const;
00139 
00144   mode_t mode() const { return m_fileMode; }
00145 
00150   QString user() const;
00151 
00156   QString group() const;
00157 
00163   bool isLink() const { return m_bLink; }
00164 
00169   bool isDir() const;
00170 
00175   bool isFile() const { return !isDir(); }
00176 
00183   bool isReadable() const;
00184 
00189   bool isHidden() const;
00190 
00195   QString linkDest() const;
00196 
00201   KIO::filesize_t size() const;
00202 
00209   time_t time( unsigned int which ) const;
00210 
00218   QString timeString( unsigned int which = KIO::UDS_MODIFICATION_TIME ) const;
00219 
00224   bool isLocalFile() const { return m_bIsLocalURL; }
00225 
00231   const QString& text() const { return m_strText; }
00232 
00240   const QString& name( bool lowerCase = false ) const {
00241       if ( !lowerCase )
00242           return m_strName;
00243       else
00244           if ( m_strLowerCaseName.isNull() )
00245               m_strLowerCaseName = m_strName.lower();
00246       return m_strLowerCaseName;
00247   }
00248 
00255   QString mimetype() const;
00256 
00263   KMimeType::Ptr determineMimeType();
00264 
00270   KMimeType::Ptr mimeTypePtr() const { return m_pMimeType; }
00271 
00272   bool isMimeTypeKnown() const;
00278   QString mimeComment();
00279 
00285   QString iconName();
00286 
00295   QPixmap pixmap( int _size, int _state=0 ) const;
00296 
00303   int overlays() const;
00304 
00310   QString getStatusBarInfo();
00311 
00320   QString getToolTipText(int maxcount = 6);
00321 
00328   bool acceptsDrops( );
00329 
00334   void run();
00335 
00341   const KIO::UDSEntry & entry() const { return m_entry; }
00342 
00347   bool isMarked() const { return m_bMarked; }
00352   void mark() { m_bMarked = true; }
00357   void unmark() { m_bMarked = false; }
00358 
00364   bool cmp( const KFileItem & item );
00365 
00399   virtual void setExtraData( const void *key, void *value );
00400 
00408   virtual const void * extraData( const void *key ) const;
00409 
00417   virtual void * extraData( const void *key );
00418 
00423   virtual void removeExtraData( const void *key );
00424 
00429   void setMetaInfo( const KFileMetaInfo & info );
00430 
00436   const KFileMetaInfo & metaInfo(bool autoget = true,
00437                                  int what = KFileMetaInfo::Fastest) const;
00438 
00447   void assign( const KFileItem & item );
00448 
00449 
00451 
00452 protected:
00457   void init( bool _determineMimeTypeOnDemand );
00458 
00462   QString parsePermissions( mode_t perm ) const;
00463 
00464 private:
00468   KIO::UDSEntry m_entry;
00472   KURL m_url;
00473 
00477   QString m_strName;
00478 
00483   QString m_strText;
00484 
00488   mutable QString m_user, m_group;
00489 
00493   mutable QString m_strLowerCaseName;
00494 
00498   KMimeType::Ptr m_pMimeType;
00499 
00503   mode_t m_fileMode;
00507   mode_t m_permissions;
00508 
00512   bool m_bMarked:1;
00516   bool m_bLink:1;
00520   bool m_bIsLocalURL:1;
00521 
00522   bool m_bMimeTypeKnown:1;
00523 
00524    // For special case like link to dirs over FTP
00525   QString m_guessedMimeType;
00526   mutable QString m_access;
00527   QMap<const void*, void*> m_extra;
00528   mutable KFileMetaInfo m_metaInfo;
00529 
00530   enum { Modification = 0, Access = 1, Creation = 2, NumFlags = 3 };
00531   mutable time_t m_time[3];
00532   mutable KIO::filesize_t m_size;
00533 
00534 protected:
00535   virtual void virtual_hook( int id, void* data );
00536 private:
00537   class KFileItemPrivate;
00538   KFileItemPrivate * d;
00539   friend QDataStream & operator<< ( QDataStream & s, const KFileItem & a );
00540   friend QDataStream & operator>> ( QDataStream & s, KFileItem & a );
00541 };
00542 
00546 typedef QPtrList<KFileItem> KFileItemList;
00547 
00551 typedef QPtrListIterator<KFileItem> KFileItemListIterator;
00552 
00553 QDataStream & operator<< ( QDataStream & s, const KFileItem & a );
00554 QDataStream & operator>> ( QDataStream & s, KFileItem & a );
00555 
00556 
00557 #endif
KDE Logo
This file is part of the documentation for kio Library Version 3.3.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sun Jan 15 13:33:25 2006 by doxygen 1.4.2 written by Dimitri van Heesch, © 1997-2003