kdiroperator.h
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 DeleteJob;
00046 }
00047
00096 class KIO_EXPORT KDirOperator : public QWidget
00097 {
00098 Q_OBJECT
00099
00100 public:
00105 enum ActionTypes { SortActions = 1,
00106 ViewActions = 2,
00107 NavActions = 4,
00108 FileActions = 8,
00109 AllActions = 15 };
00117 KDirOperator(const KURL& urlName = KURL(),
00118 QWidget *parent = 0, const char* name = 0);
00122 virtual ~KDirOperator();
00123
00127
00128 void setShowHiddenFiles ( bool s ) { showHiddenAction->setChecked( s ); }
00129
00133 bool showHiddenFiles () const { return showHiddenAction->isChecked(); }
00134
00138 void close();
00139
00147 void setNameFilter(const QString& filter);
00148
00153 const QString& nameFilter() const { return dir->nameFilter(); }
00154
00172 void setMimeFilter( const QStringList& mimetypes );
00173
00177 QStringList mimeFilter() const { return dir->mimeFilters(); }
00178
00186 void clearFilter();
00187
00191 KURL url() const;
00192
00198
00199 void setURL(const KURL& url, bool clearforward);
00200
00205 void setCurrentItem( const QString& filename );
00206
00217
00218 void setView(KFileView *view);
00219
00224 KFileView * view() const { return m_fileView; }
00225
00230 QWidget * viewWidget() const { return m_fileView ? m_fileView->widget() : 0L; }
00231
00236
00237 void setView(KFile::FileView view);
00238
00242 void setSorting( QDir::SortSpec );
00243
00247 QDir::SortSpec sorting() const { return mySorting; }
00248
00252 bool isRoot() const { return url().path() == QChar('/'); }
00253
00257 KDirLister *dirLister() const { return dir; }
00258
00263 KProgress * progressBar() const;
00264
00276
00277 void setMode( KFile::Mode m );
00281 KFile::Mode mode() const;
00282
00288
00289 void setPreviewWidget(const QWidget *w);
00290
00295 const KFileItemList * selectedItems() const {
00296 return ( m_fileView ? m_fileView->selectedItems() : 0L );
00297 }
00298
00302 inline bool isSelected( const KFileItem *item ) const {
00303 return ( m_fileView ? m_fileView->isSelected( item ) : false );
00304 }
00305
00310 int numDirs() const;
00311
00316 int numFiles() const;
00317
00326 KCompletion * completionObject() const {
00327 return const_cast<KCompletion *>( &myCompletion );
00328 }
00329
00338 KCompletion *dirCompletionObject() const {
00339 return const_cast<KCompletion *>( &myDirCompletion );
00340 }
00341
00387 KActionCollection * actionCollection() const { return myActionCollection; }
00388
00406
00407 void setViewConfig( KConfig *config, const QString& group );
00408
00416 KConfig *viewConfig();
00417
00425 QString viewConfigGroup() const;
00426
00440 virtual void readConfig( KConfig *, const QString& group = QString::null );
00441
00448 virtual void writeConfig( KConfig *, const QString& group = QString::null );
00449
00450
00461 void setOnlyDoubleClickSelectsFiles( bool enable );
00462
00468 bool onlyDoubleClickSelectsFiles() const;
00469
00478
00479 bool mkdir( const QString& directory, bool enterDirectory = true );
00480
00488
00489 KIO::DeleteJob * del( const KFileItemList& items,
00490 bool ask = true, bool showProgress = true );
00491
00500
00501 KIO::DeleteJob * del( const KFileItemList& items, QWidget *parent,
00502 bool ask = true, bool showProgress = true );
00503
00507 void clearHistory();
00508
00518
00519 void setEnableDirHighlighting( bool enable );
00520
00527 bool dirHighlighting() const;
00528
00533 bool dirOnlyMode() const { return dirOnlyMode( myMode ); }
00534
00535 static bool dirOnlyMode( uint mode ) {
00536 return ( (mode & KFile::Directory) &&
00537 (mode & (KFile::File | KFile::Files)) == 0 );
00538 }
00539
00544 void setupMenu(int whichActions);
00545
00550 virtual void setAcceptDrops(bool b);
00551
00557
00558 void setDropOptions(int options);
00559
00560 protected:
00575 virtual KFileView* createView( QWidget* parent, KFile::FileView view );
00579
00580 void setDirLister( KDirLister *lister );
00581
00582 virtual void resizeEvent( QResizeEvent * );
00583
00588 void setupActions();
00589
00594 void updateSortActions();
00595
00600 void updateViewActions();
00601
00607 void setupMenu();
00608
00616 void prepareCompletionObjects();
00617
00623 bool checkPreviewSupport();
00624
00625 public slots:
00629
00630 void back();
00631
00635
00636 void forward();
00637
00641
00642 void home();
00643
00647
00648 void cdUp();
00649
00653 void updateDir();
00654
00658
00659 void rereadDir();
00660
00664
00665 void mkdir();
00666
00670
00671 void deleteSelected();
00672
00678 void updateSelectionDependentActions();
00679
00683 QString makeCompletion(const QString&);
00684
00688 QString makeDirCompletion(const QString&);
00689
00690 protected slots:
00695 void resetCursor();
00696
00701 void pathChanged();
00702
00707 void insertNewFiles(const KFileItemList &newone);
00708
00713 void itemDeleted(KFileItem *);
00714
00718
00719 void selectDir(const KFileItem *item );
00720
00724 void selectFile(const KFileItem *item);
00725
00729 void highlightFile(const KFileItem* i) { emit fileHighlighted( i ); }
00730
00734 virtual void activatedMenu( const KFileItem *, const QPoint& pos );
00735
00739 void sortByName() { byNameAction->setChecked( true ); }
00740
00744 void sortBySize() { bySizeAction->setChecked( true ); }
00745
00749 void sortByDate() { byDateAction->setChecked( true ); }
00750
00754 void sortReversed() { reverseAction->setChecked( !reverseAction->isChecked() ); }
00755
00759 void toggleDirsFirst() { dirsFirstAction->setChecked( !dirsFirstAction->isChecked() ); }
00760
00764 void toggleIgnoreCase() { caseInsensitiveAction->setChecked( !caseInsensitiveAction->isChecked() ); }
00765
00770 void slotCompletionMatch(const QString& match);
00771
00772 signals:
00773 void urlEntered(const KURL& );
00774 void updateInformation(int files, int dirs);
00775 void completion(const QString&);
00776 void finishedLoading();
00777
00783 void viewChanged( KFileView * newView );
00784
00790 void fileHighlighted( const KFileItem *item );
00791 void dirActivated( const KFileItem *item );
00792 void fileSelected( const KFileItem *item );
00801 void dropped(const KFileItem *item, QDropEvent*event, const KURL::List&urls);
00802 private:
00806 QPtrStack<KURL> backStack;
00807
00811 QPtrStack<KURL> forwardStack;
00812
00813 KDirLister *dir;
00814 KURL currUrl;
00815
00816 KCompletion myCompletion;
00817 KCompletion myDirCompletion;
00818 bool myCompleteListDirty;
00819 QDir::SortSpec mySorting;
00820
00825 bool checkPreviewInternal() const;
00826
00831 void checkPath(const QString& txt, bool takeFiles = false);
00832
00833 void connectView(KFileView *);
00834
00835 KFileView *m_fileView;
00836 KFileItemList pendingMimeTypes;
00837
00838
00839 int m_viewKind;
00840 int defaultView;
00841
00842 KFile::Mode myMode;
00843 KProgress *progress;
00844
00845 const QWidget *myPreview;
00846
00847
00848
00849 KActionMenu *actionMenu;
00850
00851 KAction *backAction;
00852 KAction *forwardAction;
00853 KAction *homeAction;
00854 KAction *upAction;
00855 KAction *reloadAction;
00856 KActionSeparator *actionSeparator;
00857 KAction *mkdirAction;
00858
00859 KActionMenu *sortActionMenu;
00860 KRadioAction *byNameAction;
00861 KRadioAction *byDateAction;
00862 KRadioAction *bySizeAction;
00863 KToggleAction *reverseAction;
00864 KToggleAction *dirsFirstAction;
00865 KToggleAction *caseInsensitiveAction;
00866
00867 KActionMenu *viewActionMenu;
00868 KRadioAction *shortAction;
00869 KRadioAction *detailedAction;
00870 KToggleAction *showHiddenAction;
00871 KToggleAction *separateDirsAction;
00872
00873 KActionCollection *myActionCollection;
00874 KActionCollection *viewActionCollection;
00875
00876 private slots:
00880 void slotDetailedView();
00881 void slotSimpleView();
00882 void slotToggleHidden( bool );
00883
00884 void slotSeparateDirs();
00885 void slotDefaultPreview();
00886 void togglePreview( bool );
00887
00888 void slotSortByName();
00889 void slotSortBySize();
00890 void slotSortByDate();
00891 void slotSortReversed();
00892 void slotToggleDirsFirst();
00893 void slotToggleIgnoreCase();
00894
00895 void slotStarted();
00896 void slotProgress( int );
00897 void slotShowProgress();
00898 void slotIOFinished();
00899 void slotCanceled();
00900 void slotRedirected( const KURL& );
00901
00902 void slotViewActionAdded( KAction * );
00903 void slotViewActionRemoved( KAction * );
00904 void slotViewSortingChanged( QDir::SortSpec );
00905
00906 void slotClearView();
00907 void slotRefreshItems( const KFileItemList& items );
00908
00909 void slotProperties();
00910
00911 void insertViewDependentActions();
00912
00913 private:
00914 static bool isReadable( const KURL& url );
00915
00916 protected:
00917 virtual void virtual_hook( int id, void* data );
00918 private:
00919 class KDirOperatorPrivate;
00920 KDirOperatorPrivate *d;
00921 };
00922
00923 #endif
This file is part of the documentation for kio Library Version 3.3.90.