00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
#ifndef kdirlister_h
00022
#define kdirlister_h
00023
00024
#include "kfileitem.h"
00025
#include "kdirnotify.h"
00026
00027
#include <qstring.h>
00028
#include <qstringlist.h>
00029
00030
#include <kurl.h>
00031
00032
namespace KIO {
class Job;
class ListJob; }
00033
00054 class KDirLister :
public QObject
00055 {
00056
class KDirListerPrivate;
00057
friend class KDirListerPrivate;
00058
friend class KDirListerCache;
00059
00060 Q_OBJECT
00061 Q_PROPERTY(
bool autoUpdate READ autoUpdate WRITE
setAutoUpdate )
00062 Q_PROPERTY(
bool showingDotFiles READ showingDotFiles WRITE
setShowingDotFiles )
00063 Q_PROPERTY(
bool dirOnlyMode READ dirOnlyMode WRITE
setDirOnlyMode )
00064 Q_PROPERTY(
bool autoErrorHandlingEnabled READ autoErrorHandlingEnabled )
00065 Q_PROPERTY(
QString nameFilter READ nameFilter WRITE
setNameFilter )
00066 Q_PROPERTY(
QStringList mimeFilter READ
mimeFilters WRITE
setMimeFilter RESET
clearMimeFilter )
00067
public:
00073
KDirLister(
bool _delayedMimeTypes =
false );
00074
00078
virtual ~KDirLister();
00079
00102
virtual bool openURL(
const KURL& _url,
bool _keep =
false,
bool _reload =
false );
00103
00111
virtual void stop();
00112
00122
virtual void stop(
const KURL& _url );
00123
00129
bool autoUpdate()
const;
00130
00136
virtual void setAutoUpdate(
bool enable );
00137
00145
bool autoErrorHandlingEnabled()
const;
00146
00156
void setAutoErrorHandlingEnabled(
bool enable,
QWidget* parent );
00157
00165
bool showingDotFiles()
const;
00166
00175
virtual void setShowingDotFiles(
bool _showDotFiles );
00176
00183
bool dirOnlyMode()
const;
00184
00190
virtual void setDirOnlyMode(
bool dirsOnly );
00191
00201
const KURL&
url()
const;
00202
00207
virtual void emitChanges();
00208
00220
virtual void updateDirectory(
const KURL& _dir );
00221
00226
bool isFinished()
const;
00227
00232
KFileItem*
rootItem()
const;
00233
00239
virtual KFileItem*
findByURL(
const KURL& _url )
const;
00240
#ifndef KDE_NO_COMPAT
00241
KFileItem* find(
const KURL& _url )
const;
00242
#endif
00243
00249
virtual KFileItem*
findByName(
const QString& name )
const;
00250
00261
virtual void setNameFilter(
const QString &filter );
00262
00268
const QString&
nameFilter()
const;
00269
00281
virtual void setMimeFilter(
const QStringList &mimeList );
00282
00298
void setMimeExcludeFilter(
const QStringList &mimeList );
00299
00300
00306
virtual void clearMimeFilter();
00307
00312
const QStringList&
mimeFilters()
const;
00313
00320
bool matchesFilter(
const QString& name )
const;
00321
00329
bool matchesMimeFilter(
const QString& mime )
const;
00330
00337
void setMainWindow(
QWidget *window);
00338
00344
QWidget *
mainWindow();
00345
00350 enum WhichItems
00351 {
00352 AllItems = 0,
00353 FilteredItems = 1
00354 };
00355
00374
KFileItemList items( WhichItems which = FilteredItems )
const;
00375
00396
KFileItemList itemsForDir(
const KURL& dir,
00397 WhichItems which = FilteredItems )
const;
00398
00399 signals:
00409
void started(
const KURL& _url );
00410
00414
void completed();
00415
00422
void completed(
const KURL& _url );
00423
00427
void canceled();
00428
00435
void canceled(
const KURL& _url );
00436
00443
void redirection(
const KURL& _url );
00444
00450
void redirection(
const KURL& oldUrl,
const KURL& newUrl );
00451
00456
void clear();
00457
00463
void clear(
const KURL& _url );
00464
00469
void newItems(
const KFileItemList& items );
00470
00475
void itemsFilteredByMime(
const KFileItemList& items );
00476
00486
void deleteItem(
KFileItem *_fileItem );
00487
00493
void refreshItems(
const KFileItemList& items );
00494
00500
void infoMessage(
const QString& msg );
00501
00507
void percent(
int percent );
00508
00513
void totalSize( KIO::filesize_t size );
00514
00519
void processedSize( KIO::filesize_t size );
00520
00525
void speed(
int bytes_per_second );
00526
00527
protected:
00528
enum Changes {
00529 NONE=0, NAME_FILTER=1, MIME_FILTER=2, DOT_FILES=4, DIR_ONLY_MODE=8
00530 };
00531
00544
virtual bool matchesFilter(
const KFileItem * ) const;
00545
00558 virtual
bool matchesMimeFilter( const
KFileItem * ) const;
00559
00567 virtual
bool doNameFilter( const
QString& name, const
QPtrList<
QRegExp>& filters ) const;
00568
00576 virtual
bool doMimeFilter( const
QString& mime, const
QStringList& filters ) const;
00577
00581
bool doMimeExcludeFilter( const
QString& mimeExclude, const
QStringList& filters ) const;
00582
00588 virtual
bool validURL( const
KURL& ) const;
00589
00591 virtual
void handleError( KIO::Job* );
00592
00593 protected:
00594 virtual
void virtual_hook(
int id,
void* data );
00595
00596 private slots:
00597
void slotInfoMessage( KIO::Job *, const
QString& );
00598
void slotPercent( KIO::Job *,
unsigned long );
00599
void slotTotalSize( KIO::Job *, KIO::filesize_t );
00600
void slotProcessedSize( KIO::Job *, KIO::filesize_t );
00601
void slotSpeed( KIO::Job *,
unsigned long );
00602
00603 private:
00604
void jobDone( KIO::
ListJob *);
00605
void jobStarted( KIO::ListJob *);
00606 uint numJobs();
00607
00608 private:
00609 virtual
void addNewItem( const
KFileItem *item );
00610 virtual
void addNewItems( const
KFileItemList& items );
00611 virtual
void addRefreshItem( const
KFileItem *item );
00612 virtual
void emitItems();
00613 virtual
void emitDeleteItem(
KFileItem *item );
00614
00615 KDirListerPrivate *d;
00616 };
00617
00618 #endif
00619