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 #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     // ### KDE4: make virtual
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     // ### KDE4: make virtual
00199     void setURL(const KURL& url, bool clearforward);
00200 
00205     void setCurrentItem( const QString& filename );
00206 
00217     // ### KDE4: make virtual
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     // ### KDE4: make virtual
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     // ### KDE4: make virtual
00277     void setMode( KFile::Mode m );
00281     KFile::Mode mode() const;
00282 
00288     // ### KDE4: make virtual
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     // ### KDE4: make virtual
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     // ### KDE4: make virtual
00479     bool mkdir( const QString& directory, bool enterDirectory = true );
00480 
00488     // ### KDE4: make virtual
00489     KIO::DeleteJob * del( const KFileItemList& items,
00490                           bool ask = true, bool showProgress = true );
00491 
00500     // ### KDE4: make virtual
00501     KIO::DeleteJob * del( const KFileItemList& items, QWidget *parent,
00502                           bool ask = true, bool showProgress = true );
00503 
00507     void clearHistory();
00508 
00518     // ### KDE4: make virtual
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      // ### KDE4: make virtual
00558     void setDropOptions(int options);
00559 
00560 protected:
00575      virtual KFileView* createView( QWidget* parent, KFile::FileView view );
00579     // ### KDE4: make virtual
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     // ### KDE4: make virtual
00630     void back();
00631 
00635     // ### KDE4: make virtual
00636     void forward();
00637 
00641     // ### KDE4: make virtual
00642     void home();
00643 
00647     // ### KDE4: make virtual
00648     void cdUp();
00649 
00653     void updateDir();
00654 
00658     // ### KDE4: make virtual
00659     void rereadDir();
00660 
00664     // ### KDE4: make virtual
00665     void mkdir();
00666 
00670     // ### KDE4: make virtual
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     // ### KDE4: make virtual
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     // the enum KFile::FileView as an int
00839     int m_viewKind;
00840     int defaultView;
00841 
00842     KFile::Mode myMode;
00843     KProgress *progress;
00844 
00845     const QWidget *myPreview;    // temporary pointer for the preview widget
00846 
00847     // actions for the popupmenus
00848     // ### clean up all those -- we have them all in the actionMenu!
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
KDE Logo
This file is part of the documentation for kio Library Version 3.3.90.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Mar 30 10:15:28 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003