00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#ifndef __kfileitem_h__
00021
#define __kfileitem_h__
00022
00023
#include <qstringlist.h>
00024
#include <sys/stat.h>
00025
00026
#include <qptrlist.h>
00027
#include <kio/global.h>
00028
#include <kurl.h>
00029
#include <kmimetype.h>
00030
#include <kfilemetainfo.h>
00031
00032
#define KFILEITEM_HAS_ISWRITABLE // only used in libkonq/konq_iconviewwidget.cc, will be removed for 3.4
00033
00040 class KIO_EXPORT KFileItem
00041 {
00042
public:
00043
enum { Unknown = (mode_t) - 1 };
00044
00056 KFileItem(
const KIO::UDSEntry& _entry,
const KURL& _url,
00057
bool _determineMimeTypeOnDemand =
false,
00058
bool _urlIsDirectory =
false );
00059
00073 KFileItem( mode_t _mode, mode_t _permissions,
const KURL& _url,
00074
bool _determineMimeTypeOnDemand =
false );
00075
00082 KFileItem(
const KURL &url,
const QString &mimeType, mode_t mode );
00083
00088 KFileItem(
const KFileItem &item );
00089
00094
virtual ~KFileItem();
00095
00100
void refresh();
00101
00106
void refreshMimeType();
00107
00112 const KURL & url()
const {
return m_url; }
00113
00119
void setURL(
const KURL &url );
00120
00127
void setName(
const QString &name );
00128
00133 mode_t permissions()
const {
return m_permissions; }
00134
00139
QString permissionsString() const;
00140
00145 mode_t mode()
const {
return m_fileMode; }
00146
00151
QString user() const;
00152
00157
QString group() const;
00158
00164 bool isLink()
const {
return m_bLink; }
00165
00170
bool isDir() const;
00171
00176 bool isFile()
const {
return !isDir(); }
00177
00184
bool isReadable() const;
00185
00193
bool isWritable() const;
00194
00199
bool isHidden() const;
00200
00205
QString linkDest() const;
00206
00213
QString localPath() const;
00214
00219 KIO::filesize_t size() const;
00220
00227 time_t time(
unsigned int which ) const;
00228
00236
QString timeString(
unsigned int which = KIO::UDS_MODIFICATION_TIME ) const;
00237
00242 bool isLocalFile()
const {
return m_bIsLocalURL; }
00243
00249 const QString& text()
const {
return m_strText; }
00250
00258 const QString& name(
bool lowerCase =
false )
const {
00259
if ( !lowerCase )
00260
return m_strName;
00261
else
00262
if ( m_strLowerCaseName.isNull() )
00263 m_strLowerCaseName = m_strName.lower();
00264
return m_strLowerCaseName;
00265 }
00266
00273
QString mimetype() const;
00274
00281
KMimeType::Ptr determineMimeType();
00282
00288 KMimeType::Ptr mimeTypePtr()
const {
return m_pMimeType; }
00289
00290
bool isMimeTypeKnown() const;
00296
QString mimeComment();
00297
00303
QString iconName();
00304
00313
QPixmap pixmap(
int _size,
int _state=0 ) const;
00314
00321
int overlays() const;
00322
00328
QString getStatusBarInfo();
00329
00338
QString getToolTipText(
int maxcount = 6);
00339
00346
bool acceptsDrops( );
00347
00352
void run();
00353
00359 const KIO::UDSEntry & entry()
const {
return m_entry; }
00360
00365 bool isMarked()
const {
return m_bMarked; }
00370 void mark() { m_bMarked =
true; }
00375 void unmark() { m_bMarked =
false; }
00376
00382
bool cmp(
const KFileItem & item );
00383
00417
virtual void setExtraData(
const void *key,
void *value );
00418
00426
virtual const void * extraData(
const void *key )
const;
00427
00435
virtual void * extraData(
const void *key );
00436
00441
virtual void removeExtraData(
const void *key );
00442
00447
void setMetaInfo(
const KFileMetaInfo & info );
00448
00454
const KFileMetaInfo & metaInfo(
bool autoget =
true,
00455
int what = KFileMetaInfo::Fastest)
const;
00456
00464
void assign(
const KFileItem & item );
00465
00483
void setUDSEntry(
const KIO::UDSEntry& entry,
const KURL& url,
00484
bool determineMimeTypeOnDemand =
false,
00485
bool urlIsDirectory =
false );
00486
00490 KFileItem& operator=(
const KFileItem& );
00491
00496
KURL mostLocalURL(
bool &local)
const;
00497
00499
00500
protected:
00505
void init(
bool _determineMimeTypeOnDemand );
00506
00512
void readUDSEntry(
bool _urlIsDirectory );
00513
00517
QString parsePermissions( mode_t perm )
const;
00518
00519
private:
00523
KIO::UDSEntry m_entry;
00527
KURL m_url;
00528
00532
QString m_strName;
00533
00538
QString m_strText;
00539
00543
mutable QString m_user, m_group;
00544
00548
mutable QString m_strLowerCaseName;
00549
00553 KMimeType::Ptr m_pMimeType;
00554
00558 mode_t m_fileMode;
00562 mode_t m_permissions;
00563
00567
bool m_bMarked:1;
00571
bool m_bLink:1;
00575
bool m_bIsLocalURL:1;
00576
00577
bool m_bMimeTypeKnown:1;
00578
00579
00580
QString m_guessedMimeType;
00581
mutable QString m_access;
00582
QMap<const void*, void*> m_extra;
00583
mutable KFileMetaInfo m_metaInfo;
00584
00585
enum { Modification = 0, Access = 1, Creation = 2, NumFlags = 3 };
00586
mutable time_t m_time[3];
00587
mutable KIO::filesize_t m_size;
00588
00589
protected:
00590
virtual void virtual_hook(
int id,
void* data );
00591
private:
00592
class KFileItemPrivate;
00593 KFileItemPrivate * d;
00594 KIO_EXPORT
friend QDataStream & operator<< (
QDataStream & s,
const KFileItem & a );
00595 KIO_EXPORT
friend QDataStream & operator>> (
QDataStream & s, KFileItem & a );
00596 };
00597
00601
typedef QPtrList<KFileItem> KFileItemList;
00602
00606
typedef QPtrListIterator<KFileItem> KFileItemListIterator;
00607
00608 KIO_EXPORT
QDataStream & operator<< (
QDataStream & s,
const KFileItem & a );
00609 KIO_EXPORT
QDataStream & operator>> (
QDataStream & s, KFileItem & a );
00610
00611
00612
#endif