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
00030
#include <kdirlister.h>
00031
00032
#include <kfileview.h>
00033
#include <kfileitem.h>
00034
#include <kfile.h>
00035
00036
class QPopupMenu;
00037
class QTimer;
00038
00039
class KAction;
00040
class KDirLister;
00041
class KToggleAction;
00042
class KActionSeparator;
00043
class KActionMenu;
00044
class QWidgetStack;
00045
class KProgress;
00046
namespace KIO {
00047
class DeleteJob;
00048 }
00049
00098 class KDirOperator :
public QWidget
00099 {
00100 Q_OBJECT
00101
00102
public:
00107 enum ActionTypes { SortActions = 1,
00108 ViewActions = 2,
00109 NavActions = 4,
00110 FileActions = 8,
00111 AllActions = 15 };
00119
KDirOperator(
const KURL& urlName =
KURL(),
00120
QWidget *parent = 0,
const char* name = 0);
00124
virtual ~KDirOperator();
00125
00129
00130 void setShowHiddenFiles (
bool s ) { showHiddenAction->
setChecked( s ); }
00131
00135 bool showHiddenFiles ()
const {
return showHiddenAction->
isChecked(); }
00136
00140
void close();
00141
00149
void setNameFilter(
const QString& filter);
00150
00155 const QString&
nameFilter()
const {
return dir->
nameFilter(); }
00156
00174
void setMimeFilter(
const QStringList& mimetypes );
00175
00179 QStringList mimeFilter()
const {
return dir->
mimeFilters(); }
00180
00188
void clearFilter();
00189
00193
KURL url() const;
00194
00200
00201
void setURL(const
KURL& url,
bool clearforward);
00202
00207
void setCurrentItem( const
QString& filename );
00208
00219
00220
void setView(
KFileView *view);
00221
00226 KFileView * view()
const {
return m_fileView; }
00227
00232 QWidget *
viewWidget()
const {
return m_fileView ? m_fileView->
widget() : 0L; }
00233
00238
00239
void setView(KFile::FileView view);
00240
00244
void setSorting( QDir::SortSpec );
00245
00249 QDir::SortSpec
sorting()
const {
return mySorting; }
00250
00254 bool isRoot()
const {
return url().
path() ==
QChar(
'/'); }
00255
00259 KDirLister *
dirLister()
const {
return dir; }
00260
00265
KProgress *
progressBar() const;
00266
00278
00279
void setMode(
KFile::Mode m );
00283
KFile::Mode mode() const;
00284
00290
00291
void setPreviewWidget(const
QWidget *w);
00292
00297 const
KFileItemList * selectedItems()
const {
00298
return ( m_fileView ? m_fileView->
selectedItems() : 0L );
00299 }
00300
00304 inline bool isSelected(
const KFileItem *item )
const {
00305
return ( m_fileView ? m_fileView->
isSelected( item ) :
false );
00306 }
00307
00312
int numDirs() const;
00313
00318
int numFiles() const;
00319
00328 KCompletion * completionObject()
const {
00329
return const_cast<KCompletion *>( &myCompletion );
00330 }
00331
00340 KCompletion *
dirCompletionObject()
const {
00341
return const_cast<KCompletion *>( &myDirCompletion );
00342 }
00343
00389 KActionCollection *
actionCollection()
const {
return myActionCollection; }
00390
00408
00409
void setViewConfig(
KConfig *config,
const QString& group );
00410
00418
KConfig *
viewConfig();
00419
00427
QString viewConfigGroup() const;
00428
00442 virtual
void readConfig(
KConfig *, const
QString& group =
QString::null );
00443
00450 virtual
void writeConfig( KConfig *, const
QString& group =
QString::null );
00451
00452
00463
void setOnlyDoubleClickSelectsFiles(
bool enable );
00464
00470
bool onlyDoubleClickSelectsFiles() const;
00471
00480
00481
bool mkdir( const
QString& directory,
bool enterDirectory = true );
00482
00490
00491 KIO::
DeleteJob * del( const
KFileItemList& items,
00492
bool ask = true,
bool showProgress = true );
00493
00502
00503 KIO::
DeleteJob * del( const
KFileItemList& items,
QWidget *parent,
00504
bool ask = true,
bool showProgress = true );
00505
00509
void clearHistory();
00510
00520
00521
void setEnableDirHighlighting(
bool enable );
00522
00529
bool dirHighlighting() const;
00530
00535 bool dirOnlyMode()
const {
return dirOnlyMode( myMode ); }
00536
00537
static bool dirOnlyMode( uint mode ) {
00538
return ( (mode & KFile::Directory) &&
00539 (mode & (KFile::File | KFile::Files)) == 0 );
00540 }
00541
00546
void setupMenu(
int whichActions);
00547
00552
virtual void setAcceptDrops(
bool b);
00553
00559
00560
void setDropOptions(
int options);
00561
00562
protected:
00577
virtual KFileView*
createView(
QWidget* parent, KFile::FileView view );
00581
00582
void setDirLister(
KDirLister *lister );
00583
00584
virtual void resizeEvent(
QResizeEvent * );
00585
00590
void setupActions();
00591
00596
void updateSortActions();
00597
00602
void updateViewActions();
00603
00609
void setupMenu();
00610
00618
void prepareCompletionObjects();
00619
00625
bool checkPreviewSupport();
00626
00627
public slots:
00631
00632
void back();
00633
00637
00638
void forward();
00639
00643
00644
void home();
00645
00649
00650
void cdUp();
00651
00655
void updateDir();
00656
00660
00661
void rereadDir();
00662
00666
00667
void mkdir();
00668
00672
00673
void deleteSelected();
00674
00680
void updateSelectionDependentActions();
00681
00685
QString makeCompletion(
const QString&);
00686
00690
QString makeDirCompletion(
const QString&);
00691
00692
protected slots:
00697
void resetCursor();
00698
00703
void pathChanged();
00704
00709
void insertNewFiles(
const KFileItemList &newone);
00710
00715
void itemDeleted(
KFileItem *);
00716
00720
00721
void selectDir(
const KFileItem *item );
00722
00726
void selectFile(
const KFileItem *item);
00727
00731 void highlightFile(
const KFileItem* i) { emit
fileHighlighted( i ); }
00732
00736
virtual void activatedMenu(
const KFileItem *,
const QPoint& pos );
00737
00741 void sortByName() { byNameAction->
setChecked(
true ); }
00742
00746 void sortBySize() { bySizeAction->
setChecked(
true ); }
00747
00751 void sortByDate() { byDateAction->
setChecked(
true ); }
00752
00756 void sortReversed() { reverseAction->
setChecked( !reverseAction->
isChecked() ); }
00757
00761 void toggleDirsFirst() { dirsFirstAction->
setChecked( !dirsFirstAction->
isChecked() ); }
00762
00766 void toggleIgnoreCase() { caseInsensitiveAction->
setChecked( !caseInsensitiveAction->
isChecked() ); }
00767
00772
void slotCompletionMatch(
const QString& match);
00773
00774 signals:
00775
void urlEntered(
const KURL& );
00776
void updateInformation(
int files,
int dirs);
00777
void completion(
const QString&);
00778
void finishedLoading();
00779
00785
void viewChanged(
KFileView * newView );
00786
00792
void fileHighlighted(
const KFileItem *item );
00793
void dirActivated(
const KFileItem *item );
00794
void fileSelected(
const KFileItem *item );
00803
void dropped(
const KFileItem *item,
QDropEvent*event,
const KURL::List&urls);
00804
private:
00808
QPtrStack<KURL> backStack;
00809
00813
QPtrStack<KURL> forwardStack;
00814
00815
KDirLister *dir;
00816
KURL currUrl;
00817
00818
KCompletion myCompletion;
00819
KCompletion myDirCompletion;
00820
bool myCompleteListDirty;
00821 QDir::SortSpec mySorting;
00822
00827
bool checkPreviewInternal() const;
00828
00833
void checkPath(const
QString& txt,
bool takeFiles = false);
00834
00835
void connectView(
KFileView *);
00836
00837 KFileView *m_fileView;
00838
KFileItemList pendingMimeTypes;
00839
00840
00841
int m_viewKind;
00842
int defaultView;
00843
00844
KFile::Mode myMode;
00845
KProgress *progress;
00846
00847 const
QWidget *myPreview;
00848
00849
00850
00851
KActionMenu *actionMenu;
00852
00853
KAction *backAction;
00854
KAction *forwardAction;
00855
KAction *homeAction;
00856
KAction *upAction;
00857
KAction *reloadAction;
00858 KActionSeparator *actionSeparator;
00859
KAction *mkdirAction;
00860
00861
KActionMenu *sortActionMenu;
00862
KRadioAction *byNameAction;
00863
KRadioAction *byDateAction;
00864
KRadioAction *bySizeAction;
00865
KToggleAction *reverseAction;
00866
KToggleAction *dirsFirstAction;
00867
KToggleAction *caseInsensitiveAction;
00868
00869
KActionMenu *viewActionMenu;
00870
KRadioAction *shortAction;
00871
KRadioAction *detailedAction;
00872
KToggleAction *showHiddenAction;
00873
KToggleAction *separateDirsAction;
00874
00875
KActionCollection *myActionCollection;
00876
KActionCollection *viewActionCollection;
00877
00878 private slots:
00882
void slotDetailedView();
00883
void slotSimpleView();
00884
void slotToggleHidden(
bool );
00885
00886
void slotSeparateDirs();
00887
void slotDefaultPreview();
00888
void togglePreview(
bool );
00889
00890
void slotSortByName();
00891
void slotSortBySize();
00892
void slotSortByDate();
00893
void slotSortReversed();
00894
void slotToggleDirsFirst();
00895
void slotToggleIgnoreCase();
00896
00897
void slotStarted();
00898
void slotProgress(
int );
00899
void slotShowProgress();
00900
void slotIOFinished();
00901
void slotCanceled();
00902
void slotRedirected( const
KURL& );
00903
00904
void slotViewActionAdded(
KAction * );
00905
void slotViewActionRemoved( KAction * );
00906
void slotViewSortingChanged(
QDir::SortSpec );
00907
00908
void slotClearView();
00909
void slotRefreshItems( const
KFileItemList& items );
00910
00911
void slotProperties();
00912
00913
void insertViewDependentActions();
00914
00915 private:
00916 static
bool isReadable( const KURL& url );
00917
00918 protected:
00919 virtual
void virtual_hook(
int id,
void* data );
00920 private:
00921 class KDirOperatorPrivate;
00922 KDirOperatorPrivate *d;
00923 };
00924
00925 #endif