00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
#ifndef KDIROPERATOR_H_
00022
#define KDIROPERATOR_H_
00023
00024
#include <qwidget.h>
00025
#include <qptrstack.h>
00026
00027
#include <kaction.h>
00028
#include <kcompletion.h>
00029
#include <kdirlister.h>
00030
#include <kfileview.h>
00031
#include <kfileitem.h>
00032
#include <kfile.h>
00033
00034
class QPopupMenu;
00035
class QTimer;
00036
00037
class KAction;
00038
class KDirLister;
00039
class KToggleAction;
00040
class KActionSeparator;
00041
class KActionMenu;
00042
class QWidgetStack;
00043
class KProgress;
00044
namespace KIO {
00045
class CopyJob;
00046
class DeleteJob;
00047 }
00048
00097 class KIO_EXPORT KDirOperator :
public QWidget
00098 {
00099 Q_OBJECT
00100
00101
public:
00106 enum ActionTypes { SortActions = 1,
00107 ViewActions = 2,
00108 NavActions = 4,
00109 FileActions = 8,
00110 AllActions = 15 };
00118 KDirOperator(
const KURL& urlName =
KURL(),
00119
QWidget *parent = 0,
const char* name = 0);
00123
virtual ~KDirOperator();
00124
00128
00129 void setShowHiddenFiles (
bool s ) { showHiddenAction->setChecked( s ); }
00130
00134 bool showHiddenFiles ()
const {
return showHiddenAction->isChecked(); }
00135
00139
void close();
00141 virtual bool close(
bool alsoDelete ) {
return QWidget::close( alsoDelete ); }
00142
00150
void setNameFilter(
const QString& filter);
00151
00156 const QString& nameFilter()
const {
return dir->nameFilter(); }
00157
00175
void setMimeFilter(
const QStringList& mimetypes );
00176
00180 QStringList mimeFilter()
const {
return dir->mimeFilters(); }
00181
00189
void clearFilter();
00190
00194
KURL url() const;
00195
00201
00202
void setURL(const
KURL& url,
bool clearforward);
00203
00208
void setCurrentItem( const
QString& filename );
00209
00220
00221
void setView(
KFileView *view);
00222
00227 KFileView * view()
const {
return m_fileView; }
00228
00233 QWidget * viewWidget()
const {
return m_fileView ? m_fileView->widget() : 0L; }
00234
00239
00240
void setView(KFile::FileView view);
00241
00245
void setSorting( QDir::SortSpec );
00246
00250 QDir::SortSpec sorting()
const {
return mySorting; }
00251
00255 bool isRoot()
const {
return url().
path() ==
QChar(
'/'); }
00256
00260 KDirLister *dirLister()
const {
return dir; }
00261
00266
KProgress * progressBar() const;
00267
00279
00280
void setMode(
KFile::Mode m );
00284
KFile::Mode mode() const;
00285
00291
00292
void setPreviewWidget(const
QWidget *w);
00293
00298 const
KFileItemList * selectedItems()
const {
00299
return ( m_fileView ? m_fileView->selectedItems() : 0L );
00300 }
00301
00305 inline bool isSelected(
const KFileItem *item )
const {
00306
return ( m_fileView ? m_fileView->isSelected( item ) :
false );
00307 }
00308
00313
int numDirs() const;
00314
00319
int numFiles() const;
00320
00329 KCompletion * completionObject()
const {
00330
return const_cast<KCompletion *>( &myCompletion );
00331 }
00332
00341 KCompletion *dirCompletionObject()
const {
00342
return const_cast<KCompletion *>( &myDirCompletion );
00343 }
00344
00390 KActionCollection * actionCollection()
const {
return myActionCollection; }
00391
00409
00410
void setViewConfig(
KConfig *config,
const QString& group );
00411
00419
KConfig *viewConfig();
00420
00428
QString viewConfigGroup() const;
00429
00443 virtual
void readConfig(
KConfig *, const
QString& group =
QString::null );
00444
00451 virtual
void writeConfig( KConfig *, const
QString& group =
QString::null );
00452
00453
00464
void setOnlyDoubleClickSelectsFiles(
bool enable );
00465
00471
bool onlyDoubleClickSelectsFiles() const;
00472
00481
00482
bool mkdir( const
QString& directory,
bool enterDirectory = true );
00483
00491
00492 KIO::
DeleteJob * del( const
KFileItemList& items,
00493
bool ask = true,
bool showProgress = true );
00494
00504
00505 KIO::
DeleteJob * del( const
KFileItemList& items,
QWidget *parent,
00506
bool ask = true,
bool showProgress = true );
00507
00511
void clearHistory();
00512
00522
00523
void setEnableDirHighlighting(
bool enable );
00524
00531
bool dirHighlighting() const;
00532
00537 bool dirOnlyMode()
const {
return dirOnlyMode( myMode ); }
00538
00539
static bool dirOnlyMode( uint mode ) {
00540
return ( (mode & KFile::Directory) &&
00541 (mode & (KFile::File | KFile::Files)) == 0 );
00542 }
00543
00548
void setupMenu(
int whichActions);
00549
00554
virtual void setAcceptDrops(
bool b);
00555
00561
00562
void setDropOptions(
int options);
00563
00573
00574
KIO::CopyJob *
trash(
const KFileItemList& items,
QWidget *parent,
00575
bool ask =
true,
bool showProgress =
true );
00576
00577
protected:
00592
virtual KFileView* createView(
QWidget* parent, KFile::FileView view );
00596
00597
void setDirLister(
KDirLister *lister );
00598
00599
virtual void resizeEvent(
QResizeEvent * );
00600
00605
void setupActions();
00606
00611
void updateSortActions();
00612
00617
void updateViewActions();
00618
00624
void setupMenu();
00625
00633
void prepareCompletionObjects();
00634
00640
bool checkPreviewSupport();
00641
00642
public slots:
00646
00647
void back();
00648
00652
00653
void forward();
00654
00658
00659
void home();
00660
00664
00665
void cdUp();
00666
00670
void updateDir();
00671
00675
00676
void rereadDir();
00677
00681
00682
void mkdir();
00683
00687
00688
void deleteSelected();
00689
00695
void updateSelectionDependentActions();
00696
00700
QString makeCompletion(
const QString&);
00701
00705
QString makeDirCompletion(
const QString&);
00706
00711
00712
void trashSelected(KAction::ActivationReason, Qt::ButtonState);
00713
00714
protected slots:
00719
void resetCursor();
00720
00725
void pathChanged();
00726
00731
void insertNewFiles(
const KFileItemList &newone);
00732
00737
void itemDeleted(
KFileItem *);
00738
00742
00743
void selectDir(
const KFileItem *item );
00744
00748
void selectFile(
const KFileItem *item);
00749
00753 void highlightFile(
const KFileItem* i) { emit fileHighlighted( i ); }
00754
00758
virtual void activatedMenu(
const KFileItem *,
const QPoint& pos );
00759
00763 void sortByName() { byNameAction->setChecked(
true ); }
00764
00768 void sortBySize() { bySizeAction->setChecked(
true ); }
00769
00773 void sortByDate() { byDateAction->setChecked(
true ); }
00774
00778 void sortReversed() { reverseAction->setChecked( !reverseAction->isChecked() ); }
00779
00783 void toggleDirsFirst() { dirsFirstAction->setChecked( !dirsFirstAction->isChecked() ); }
00784
00788 void toggleIgnoreCase() { caseInsensitiveAction->setChecked( !caseInsensitiveAction->isChecked() ); }
00789
00794
void slotCompletionMatch(
const QString& match);
00795
00796 signals:
00797
void urlEntered(
const KURL& );
00798
void updateInformation(
int files,
int dirs);
00799
void completion(
const QString&);
00800
void finishedLoading();
00801
00807
void viewChanged(
KFileView * newView );
00808
00814
void fileHighlighted(
const KFileItem *item );
00815
void dirActivated(
const KFileItem *item );
00816
void fileSelected(
const KFileItem *item );
00825
void dropped(
const KFileItem *item,
QDropEvent*event,
const KURL::List&urls);
00826
private:
00830
QPtrStack<KURL> backStack;
00831
00835
QPtrStack<KURL> forwardStack;
00836
00837
KDirLister *dir;
00838
KURL currUrl;
00839
00840
KCompletion myCompletion;
00841
KCompletion myDirCompletion;
00842
bool myCompleteListDirty;
00843 QDir::SortSpec mySorting;
00844
00849
bool checkPreviewInternal() const;
00850
00855
void checkPath(const
QString& txt,
bool takeFiles = false);
00856
00857
void connectView(
KFileView *);
00858
00859 KFileView *m_fileView;
00860
KFileItemList pendingMimeTypes;
00861
00862
00863
int m_viewKind;
00864
int defaultView;
00865
00866
KFile::Mode myMode;
00867
KProgress *progress;
00868
00869 const
QWidget *myPreview;
00870
00871
00872
00873
KActionMenu *actionMenu;
00874
00875
KAction *backAction;
00876
KAction *forwardAction;
00877
KAction *homeAction;
00878
KAction *upAction;
00879
KAction *reloadAction;
00880 KActionSeparator *actionSeparator;
00881
KAction *mkdirAction;
00882
00883
KActionMenu *sortActionMenu;
00884
KRadioAction *byNameAction;
00885
KRadioAction *byDateAction;
00886
KRadioAction *bySizeAction;
00887
KToggleAction *reverseAction;
00888
KToggleAction *dirsFirstAction;
00889
KToggleAction *caseInsensitiveAction;
00890
00891
KActionMenu *viewActionMenu;
00892
KRadioAction *shortAction;
00893
KRadioAction *detailedAction;
00894
KToggleAction *showHiddenAction;
00895
KToggleAction *separateDirsAction;
00896
00897
KActionCollection *myActionCollection;
00898
KActionCollection *viewActionCollection;
00899
00900 private slots:
00904
void slotDetailedView();
00905
void slotSimpleView();
00906
void slotToggleHidden(
bool );
00907
00908
void slotSeparateDirs();
00909
void slotDefaultPreview();
00910
void togglePreview(
bool );
00911
00912
void slotSortByName();
00913
void slotSortBySize();
00914
void slotSortByDate();
00915
void slotSortReversed();
00916
void slotToggleDirsFirst();
00917
void slotToggleIgnoreCase();
00918
00919
void slotStarted();
00920
void slotProgress(
int );
00921
void slotShowProgress();
00922
void slotIOFinished();
00923
void slotCanceled();
00924
void slotRedirected( const
KURL& );
00925
00926
void slotViewActionAdded(
KAction * );
00927
void slotViewActionRemoved( KAction * );
00928
void slotViewSortingChanged(
QDir::SortSpec );
00929
00930
void slotClearView();
00931
void slotRefreshItems( const
KFileItemList& items );
00932
00933
void slotProperties();
00934
00935
void insertViewDependentActions();
00936
00937 private:
00938 static
bool isReadable( const KURL& url );
00939
00940 protected:
00941 virtual
void virtual_hook(
int id,
void* data );
00942 private:
00943 class KDirOperatorPrivate;
00944 KDirOperatorPrivate *d;
00945 };
00946
00947 #endif