kdiroperator.h00001
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 bool openURL( const KURL& url, bool keep = false, bool reload = false );
00860
00861 KFileView *m_fileView;
00862 KFileItemList pendingMimeTypes;
00863
00864
00865 int m_viewKind;
00866 int defaultView;
00867
00868 KFile::Mode myMode;
00869 KProgress *progress;
00870
00871 const QWidget *myPreview;
00872
00873
00874
00875 KActionMenu *actionMenu;
00876
00877 KAction *backAction;
00878 KAction *forwardAction;
00879 KAction *homeAction;
00880 KAction *upAction;
00881 KAction *reloadAction;
00882 KActionSeparator *actionSeparator;
00883 KAction *mkdirAction;
00884
00885 KActionMenu *sortActionMenu;
00886 KRadioAction *byNameAction;
00887 KRadioAction *byDateAction;
00888 KRadioAction *bySizeAction;
00889 KToggleAction *reverseAction;
00890 KToggleAction *dirsFirstAction;
00891 KToggleAction *caseInsensitiveAction;
00892
00893 KActionMenu *viewActionMenu;
00894 KRadioAction *shortAction;
00895 KRadioAction *detailedAction;
00896 KToggleAction *showHiddenAction;
00897 KToggleAction *separateDirsAction;
00898
00899 KActionCollection *myActionCollection;
00900 KActionCollection *viewActionCollection;
00901
00902 private slots:
00906 void slotDetailedView();
00907 void slotSimpleView();
00908 void slotToggleHidden( bool );
00909
00910 void slotSeparateDirs();
00911 void slotDefaultPreview();
00912 void togglePreview( bool );
00913
00914 void slotSortByName();
00915 void slotSortBySize();
00916 void slotSortByDate();
00917 void slotSortReversed();
00918 void slotToggleDirsFirst();
00919 void slotToggleIgnoreCase();
00920
00921 void slotStarted();
00922 void slotProgress( int );
00923 void slotShowProgress();
00924 void slotIOFinished();
00925 void slotCanceled();
00926 void slotRedirected( const KURL& );
00927
00928 void slotViewActionAdded( KAction * );
00929 void slotViewActionRemoved( KAction * );
00930 void slotViewSortingChanged( QDir::SortSpec );
00931
00932 void slotClearView();
00933 void slotRefreshItems( const KFileItemList& items );
00934
00935 void slotProperties();
00936
00937 void insertViewDependentActions();
00938
00939 private:
00940 static bool isReadable( const KURL& url );
00941
00942 protected:
00943 virtual void virtual_hook( int id, void* data );
00944 private:
00945 class KDirOperatorPrivate;
00946 KDirOperatorPrivate *d;
00947 };
00948
00949 #endif
|