00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
#ifndef KFILEVIEW_H
00023
#define KFILEVIEW_H
00024
00025
class QPoint;
00026
class KActionCollection;
00027
00028
#include <qwidget.h>
00029
00030
#include "kfileitem.h"
00031
#include "kfile.h"
00032
00037 class KFileViewSignaler :
public QObject
00038 {
00039 Q_OBJECT
00040
00041
public:
00046 void activate(
const KFileItem *item ) {
00047
if ( item->
isDir() )
00048 emit dirActivated( item );
00049
else
00050 emit fileSelected( item );
00051 }
00056 void highlightFile(
const KFileItem *i) { emit
fileHighlighted(i); }
00057
00058
void activateMenu(
const KFileItem *i,
const QPoint& pos ) {
00059 emit activatedMenu( i, pos );
00060 }
00061
00062
void changeSorting( QDir::SortSpec sorting ) {
00063 emit sortingChanged( sorting );
00064 }
00065
00066
void dropURLs(
const KFileItem *i,
QDropEvent*e,
const KURL::List&urls) {
00067 emit dropped(i, e, urls);
00068 }
00069
00070 signals:
00071
void dirActivated(
const KFileItem*);
00072
00073
void sortingChanged( QDir::SortSpec );
00074
00079
void fileHighlighted(
const KFileItem*);
00080
void fileSelected(
const KFileItem*);
00081
void activatedMenu(
const KFileItem *i,
const QPoint& );
00082
void dropped(
const KFileItem *,
QDropEvent*,
const KURL::List&);
00083 };
00084
00099 class KFileView {
00100
00101
public:
00102
KFileView();
00103
00107
virtual ~KFileView();
00108
00112
void addItemList(
const KFileItemList &list);
00113
00119
virtual QWidget *
widget() = 0;
00120
00124 QWidget *
widget()
const {
return const_cast<KFileView*>(
this)->widget(); }
00125
00129
void setCurrentItem(
const QString &filename );
00130
00135
virtual void setCurrentItem(
const KFileItem *item ) = 0;
00136
00142
virtual KFileItem *
currentFileItem() const = 0;
00143
00147 virtual
void clear();
00148
00157 virtual
void updateView(
bool f = true);
00158
00159 virtual
void updateView(const
KFileItem*);
00160
00165 virtual
void removeItem(const KFileItem *item);
00166
00172 virtual
void listingCompleted();
00173
00178 QDir::SortSpec sorting()
const {
return m_sorting; }
00179
00194
virtual void setSorting(QDir::SortSpec sort);
00195
00200 bool isReversed()
const {
return (m_sorting & QDir::Reversed); }
00201
00202
void sortReversed();
00203
00207 uint
count()
const {
return filesNumber + dirsNumber; }
00208
00212 uint
numFiles()
const {
return filesNumber; }
00213
00217 uint
numDirs()
const {
return dirsNumber; }
00218
00219
virtual void setSelectionMode( KFile::SelectionMode sm );
00220
virtual KFile::SelectionMode selectionMode() const;
00221
00222 enum ViewMode {
00223 Files = 1,
00224 Directories = 2,
00225 All = Files | Directories
00226 };
00227
virtual void setViewMode( ViewMode vm );
00228
virtual ViewMode viewMode()
const {
return view_mode; }
00229
00235 QString viewName()
const {
return m_viewName; }
00236
00241 void setViewName(
const QString& name ) { m_viewName = name; }
00242
00243
virtual void setParentView(
KFileView *parent);
00244
00253
virtual void insertItem(
KFileItem *i);
00254
00259
virtual void clearView() = 0;
00260
00265
virtual void ensureItemVisible(
const KFileItem *i ) = 0;
00266
00271
virtual void clearSelection() = 0;
00272
00278
virtual void selectAll();
00279
00284
virtual void invertSelection();
00285
00290
virtual void setSelected(
const KFileItem *,
bool enable) = 0;
00291
00296
virtual bool isSelected(
const KFileItem * ) const = 0;
00297
00301 const
KFileItemList * selectedItems() const;
00302
00306 const
KFileItemList * items() const;
00307
00308 virtual
KFileItem * firstFileItem() const = 0;
00309 virtual
KFileItem * nextItem( const
KFileItem * ) const = 0;
00310 virtual
KFileItem * prevItem( const
KFileItem * ) const = 0;
00311
00322 void setOnlyDoubleClickSelectsFiles(
bool enable ) {
00323 myOnlyDoubleClickSelectsFiles = enable;
00324 }
00325
00331 bool onlyDoubleClickSelectsFiles()
const {
00332
return myOnlyDoubleClickSelectsFiles;
00333 }
00334
00339
bool updateNumbers(
const KFileItem *i);
00340
00346
virtual KActionCollection *
actionCollection() const;
00347
00348
KFileViewSignaler * signaler()
const {
return sig; }
00349
00350
virtual void readConfig(
KConfig *,
const QString& group = QString::null );
00351
virtual void writeConfig(
KConfig *,
const QString& group = QString::null);
00352
00360 enum DropOptions {
00361 AutoOpenDirs = 1
00362 };
00368
00369
void setDropOptions(
int options);
00370
00376
int dropOptions();
00377
00391
static QString sortingKey(
const QString& value,
bool isDir,
int sortSpec);
00392
00399
static QString sortingKey( KIO::filesize_t value,
bool isDir,
int sortSpec);
00400
00405
static int autoOpenDelay();
00406
00407
protected:
00412
KFileViewSignaler *sig;
00413
00414
private:
00415
static QDir::SortSpec defaultSortSpec;
00416 QDir::SortSpec m_sorting;
00417
QString m_viewName;
00418
00422 uint filesNumber;
00423 uint dirsNumber;
00424
00425 ViewMode view_mode;
00426 KFile::SelectionMode selection_mode;
00427
00428
00429
00430
mutable KFileItemList m_itemList;
00431
00432
mutable KFileItemList *m_selectedList;
00433
bool myOnlyDoubleClickSelectsFiles;
00434
00435
protected:
00436
virtual void virtual_hook(
int id,
void* data );
00437
00438
enum { VIRTUAL_SET_DROP_OPTIONS = 1 };
00439
void setDropOptions_impl(
int options);
00440
private:
00441
class KFileViewPrivate;
00442 KFileViewPrivate *d;
00443 };
00444
00445
#endif // KFILEINFOLISTWIDGET_H