00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
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
QString linkDest() const;
00190
00195 KIO::filesize_t size() const;
00196
00203 time_t time(
unsigned int which ) const;
00204
00212
QString timeString(
unsigned int which = KIO::UDS_MODIFICATION_TIME ) const;
00213
00218 bool isLocalFile()
const {
return m_bIsLocalURL; }
00219
00225 const QString&
text()
const {
return m_strText; }
00226
00234 const QString&
name(
bool lowerCase =
false )
const {
00235
if ( !lowerCase )
00236
return m_strName;
00237
else
00238
if ( m_strLowerCaseName.
isNull() )
00239 m_strLowerCaseName = m_strName.
lower();
00240
return m_strLowerCaseName;
00241 }
00242
00249
QString mimetype() const;
00250
00257
KMimeType::Ptr determineMimeType();
00258
00264 KMimeType::Ptr mimeTypePtr()
const {
return m_pMimeType; }
00265
00266
bool isMimeTypeKnown() const;
00272
QString mimeComment();
00273
00279
QString iconName();
00280
00289
QPixmap pixmap(
int _size,
int _state=0 ) const;
00290
00297
int overlays() const;
00298
00304
QString getStatusBarInfo();
00305
00314
QString getToolTipText(
int maxcount = 6);
00315
00322
bool acceptsDrops( );
00323
00328
void run();
00329
00335 const KIO::UDSEntry & entry()
const {
return m_entry; }
00336
00341 bool isMarked()
const {
return m_bMarked; }
00346 void mark() { m_bMarked =
true; }
00351 void unmark() { m_bMarked =
false; }
00352
00358
bool cmp(
const KFileItem & item );
00359
00393
virtual void setExtraData(
const void *key,
void *value );
00394
00402
virtual const void *
extraData(
const void *key )
const;
00403
00411
virtual void *
extraData(
const void *key );
00412
00417
virtual void removeExtraData(
const void *key );
00418
00423
void setMetaInfo(
const KFileMetaInfo & info );
00424
00430
const KFileMetaInfo &
metaInfo(
bool autoget =
true,
00431
int what = KFileMetaInfo::Fastest)
const;
00432
00441
void assign(
const KFileItem & item );
00442
00443
00445
00446
protected:
00451
void init(
bool _determineMimeTypeOnDemand );
00452
00456
QString parsePermissions( mode_t perm )
const;
00457
00458
private:
00462
KIO::UDSEntry m_entry;
00466
KURL m_url;
00467
00471
QString m_strName;
00472
00477
QString m_strText;
00478
00482
mutable QString m_user, m_group;
00483
00487
mutable QString m_strLowerCaseName;
00488
00492 KMimeType::Ptr m_pMimeType;
00493
00497 mode_t m_fileMode;
00501 mode_t m_permissions;
00502
00506
bool m_bMarked:1;
00510
bool m_bLink:1;
00514
bool m_bIsLocalURL:1;
00515
00516
bool m_bMimeTypeKnown:1;
00517
00518
00519
QString m_guessedMimeType;
00520
mutable QString m_access;
00521
QMap<const void*, void*> m_extra;
00522
mutable KFileMetaInfo m_metaInfo;
00523
00524
enum { Modification = 0, Access = 1, Creation = 2, NumFlags = 3 };
00525
mutable time_t m_time[3];
00526
mutable KIO::filesize_t m_size;
00527
00528
protected:
00529
virtual void virtual_hook(
int id,
void* data );
00530
private:
00531
class KFileItemPrivate;
00532 KFileItemPrivate * d;
00533
friend QDataStream & operator<< (
QDataStream & s,
const KFileItem & a );
00534
friend QDataStream & operator>> (
QDataStream & s,
KFileItem & a );
00535 };
00536
00540
typedef QPtrList<KFileItem> KFileItemList;
00541
00545
typedef QPtrListIterator<KFileItem> KFileItemListIterator;
00546
00547
QDataStream & operator<< (
QDataStream & s,
const KFileItem & a );
00548
QDataStream & operator>> (
QDataStream & s,
KFileItem & a );
00549
00550
00551
#endif