kio Library API Documentation

kdiroperator.h

00001 // -*- c++ -*- 00002 /* This file is part of the KDE libraries 00003 Copyright (C) 1999 Stephan Kulow <coolo@kde.org> 00004 2000,2001 Carsten Pfeiffer <pfeiffer@kde.org> 00005 00006 This library is free software; you can redistribute it and/or 00007 modify it under the terms of the GNU Library General Public 00008 License as published by the Free Software Foundation; either 00009 version 2 of the License, or (at your option) any later version. 00010 00011 This library is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 Library General Public License for more details. 00015 00016 You should have received a copy of the GNU Library General Public License 00017 along with this library; see the file COPYING.LIB. If not, write to 00018 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00019 Boston, MA 02111-1307, USA. 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 // ### KDE4: make virtual 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 // ### KDE4: make virtual 00201 void setURL(const KURL& url, bool clearforward); 00202 00207 void setCurrentItem( const QString& filename ); 00208 00219 // ### KDE4: make virtual 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 // ### KDE4: make virtual 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 // ### KDE4: make virtual 00279 void setMode( KFile::Mode m ); 00283 KFile::Mode mode() const; 00284 00290 // ### KDE4: make virtual 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 // ### KDE4: make virtual 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 // ### KDE4: make virtual 00481 bool mkdir( const QString& directory, bool enterDirectory = true ); 00482 00490 // ### KDE4: make virtual 00491 KIO::DeleteJob * del( const KFileItemList& items, 00492 bool ask = true, bool showProgress = true ); 00493 00502 // ### KDE4: make virtual 00503 KIO::DeleteJob * del( const KFileItemList& items, QWidget *parent, 00504 bool ask = true, bool showProgress = true ); 00505 00509 void clearHistory(); 00510 00520 // ### KDE4: make virtual 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 // ### KDE4: make virtual 00560 void setDropOptions(int options); 00561 00562 protected: 00577 virtual KFileView* createView( QWidget* parent, KFile::FileView view ); 00581 // ### KDE4: make virtual 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 // ### KDE4: make virtual 00632 void back(); 00633 00637 // ### KDE4: make virtual 00638 void forward(); 00639 00643 // ### KDE4: make virtual 00644 void home(); 00645 00649 // ### KDE4: make virtual 00650 void cdUp(); 00651 00655 void updateDir(); 00656 00660 // ### KDE4: make virtual 00661 void rereadDir(); 00662 00666 // ### KDE4: make virtual 00667 void mkdir(); 00668 00672 // ### KDE4: make virtual 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 // ### KDE4: make virtual 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 // the enum KFile::FileView as an int 00841 int m_viewKind; 00842 int defaultView; 00843 00844 KFile::Mode myMode; 00845 KProgress *progress; 00846 00847 const QWidget *myPreview; // temporary pointer for the preview widget 00848 00849 // actions for the popupmenus 00850 // ### clean up all those -- we have them all in the actionMenu! 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
KDE Logo
This file is part of the documentation for kio Library Version 3.3.1.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sun Oct 17 11:29:24 2004 by doxygen 1.3.8 written by Dimitri van Heesch, © 1997-2003