00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __tdefileitem_h__
00021 #define __tdefileitem_h__
00022
00023 #include <tqstringlist.h>
00024 #include <sys/stat.h>
00025
00026 #include <tqptrlist.h>
00027 #include <tdeio/global.h>
00028 #include <kurl.h>
00029 #include <kacl.h>
00030 #include <kmimetype.h>
00031 #include <tdefilemetainfo.h>
00032
00033 #define TDEFILEITEM_HAS_ISWRITABLE // only used in libkonq/konq_iconviewwidget.cc, will be removed for 3.4
00034
00041 class TDEIO_EXPORT KFileItem
00042 {
00043 public:
00044 enum { Unknown = (mode_t) - 1 };
00045
00057 KFileItem( const TDEIO::UDSEntry& _entry, const KURL& _url,
00058 bool _determineMimeTypeOnDemand = false,
00059 bool _urlIsDirectory = false );
00060
00074 KFileItem( mode_t _mode, mode_t _permissions, const KURL& _url,
00075 bool _determineMimeTypeOnDemand = false );
00076
00083 KFileItem( const KURL &url, const TQString &mimeType, mode_t mode );
00084
00089 KFileItem( const KFileItem &item );
00090
00095 virtual ~KFileItem();
00096
00101 void refresh();
00102
00107 void refreshMimeType();
00108
00113 const KURL & url() const { return m_url; }
00114
00120 void setURL( const KURL &url );
00121
00127 const KURL & listerURL() const { return m_listerURL; }
00128
00134 void setListerURL( const KURL &url );
00135
00142 void setName( const TQString &name );
00143
00148 mode_t permissions() const { return m_permissions; }
00149
00154 TQString permissionsString() const;
00155
00161 bool hasExtendedACL() const;
00162
00168 KACL ACL() const;
00169
00175 KACL defaultACL() const;
00176
00181 mode_t mode() const { return m_fileMode; }
00182
00187 TQString user() const;
00188
00193 TQString group() const;
00194
00200 bool isLink() const { return m_bLink; }
00201
00206 bool isDir() const;
00207
00212 bool isFile() const { return !isDir(); }
00213
00220 bool isReadable() const;
00221
00229 bool isWritable() const;
00230
00235 bool isHidden() const;
00236
00241 TQString linkDest() const;
00242
00249 TQString localPath() const;
00250
00251
00256 TDEIO::filesize_t size() const;
00257
00263 TDEIO::filesize_t size(bool &hasSize) const;
00264
00265
00272 time_t time( unsigned int which ) const;
00273
00281 time_t time( unsigned int which, bool &hasTime ) const;
00282
00290 TQString timeString( unsigned int which = TDEIO::UDS_MODIFICATION_TIME ) const;
00291
00296 bool isLocalFile() const { return m_bIsLocalURL; }
00297
00303 const TQString& text() const { return m_strText; }
00304
00312 const TQString& name( bool lowerCase = false ) const {
00313 if ( !lowerCase )
00314 return m_strName;
00315 else
00316 if ( m_strLowerCaseName.isNull() )
00317 m_strLowerCaseName = m_strName.lower();
00318 return m_strLowerCaseName;
00319 }
00320
00327 TQString mimetype() const;
00328
00335 TQString mimetypeFast() const;
00336
00343 KMimeType::Ptr mimeTypePtrFast();
00344
00351 KMimeType::Ptr determineMimeType();
00352
00358 KMimeType::Ptr mimeTypePtr() const { return m_pMimeType; }
00359
00360 bool isMimeTypeKnown() const;
00366 TQString mimeComment();
00367
00373 TQString iconName();
00374
00383 TQPixmap pixmap( int _size, int _state=0 ) const;
00384
00391 int overlays() const;
00392
00398 TQString getStatusBarInfo();
00399
00408 TQString getToolTipText(int maxcount = 6);
00409
00416 bool acceptsDrops( );
00417
00422 void run();
00423
00429 const TDEIO::UDSEntry & entry() const { return m_entry; }
00430
00435 bool isMarked() const { return m_bMarked; }
00440 void mark() { m_bMarked = true; }
00445 void unmark() { m_bMarked = false; }
00446
00452 bool cmp( const KFileItem & item );
00453
00487 virtual void setExtraData( const void *key, void *value );
00488
00496 virtual const void * extraData( const void *key ) const;
00497
00505 virtual void * extraData( const void *key );
00506
00511 virtual void removeExtraData( const void *key );
00512
00517 void setMetaInfo( const KFileMetaInfo & info );
00518
00526 void setFileMode( mode_t m );
00527
00533 void setMimeType( const TQString& mimetype );
00534
00540 const KFileMetaInfo & metaInfo(bool autoget = true,
00541 int what = KFileMetaInfo::Fastest) const;
00542
00550 void assign( const KFileItem & item );
00551
00569 void setUDSEntry( const TDEIO::UDSEntry& entry, const KURL& url,
00570 bool determineMimeTypeOnDemand = false,
00571 bool urlIsDirectory = false );
00572
00576 KFileItem& operator=( const KFileItem& );
00577
00582 KURL mostLocalURL(bool &local) const;
00583
00585
00586 protected:
00591 void init( bool _determineMimeTypeOnDemand );
00592
00598 void readUDSEntry( bool _urlIsDirectory );
00599
00603 TQString parsePermissions( mode_t perm ) const;
00604
00605 private:
00609 TDEIO::UDSEntry m_entry;
00613 KURL m_url;
00614
00618 KURL m_listerURL;
00619
00623 TQString m_strName;
00624
00629 TQString m_strText;
00630
00634 mutable TQString m_user, m_group;
00635
00639 mutable TQString m_strLowerCaseName;
00640
00644 KMimeType::Ptr m_pMimeType;
00645
00649 mode_t m_fileMode;
00653 mode_t m_permissions;
00654
00658 bool m_bMarked:1;
00662 bool m_bLink:1;
00666 bool m_bIsLocalURL:1;
00667
00668 bool m_bMimeTypeKnown:1;
00669
00670
00671 enum { Auto, Hidden, Shown } m_hidden:3;
00672
00673
00674 TQString m_guessedMimeType;
00675 mutable TQString m_access;
00676 TQMap<const void*, void*> m_extra;
00677 mutable KFileMetaInfo m_metaInfo;
00678
00679 enum { Modification = 0, Access = 1, Creation = 2, NumFlags = 3 };
00680 mutable time_t m_time[3];
00681 mutable TDEIO::filesize_t m_size;
00682
00683 protected:
00684 virtual void virtual_hook( int id, void* data );
00685 private:
00686 class KFileItemPrivate;
00687 KFileItemPrivate * d;
00688 TDEIO_EXPORT friend TQDataStream & operator<< ( TQDataStream & s, const KFileItem & a );
00689 TDEIO_EXPORT friend TQDataStream & operator>> ( TQDataStream & s, KFileItem & a );
00690 };
00691
00695 typedef TQPtrList<KFileItem> KFileItemList;
00696
00700 typedef TQPtrListIterator<KFileItem> KFileItemListIterator;
00701
00702 TDEIO_EXPORT TQDataStream & operator<< ( TQDataStream & s, const KFileItem & a );
00703 TDEIO_EXPORT TQDataStream & operator>> ( TQDataStream & s, KFileItem & a );
00704
00705
00706 #endif