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.2.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed May 5 07:16:45 2004 by doxygen 1.3.6 written by Dimitri van Heesch, © 1997-2003