kio Library API Documentation

kfileview.h

00001 // -*- c++ -*-
00002 /* This file is part of the KDE libraries
00003     Copyright (C) 1997 Stephan Kulow <coolo@kde.org>
00004     Copyright (C) 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 
00022 #ifndef KFILEVIEW_H
00023 #define KFILEVIEW_H
00024 
00025 class QPoint;
00026 class KActionCollection;
00027 
00028 #include <qwidget.h>
00029 
00030 #include "kfileitem.h"
00031 #include "kfile.h"
00032 
00037 class KFileViewSignaler : public QObject
00038 {
00039     Q_OBJECT
00040 
00041 public:
00046     void activate( const KFileItem *item ) {
00047         if ( item->isDir() )
00048             emit dirActivated( item );
00049         else
00050             emit fileSelected( item );
00051     }
00056     void highlightFile(const KFileItem *i) { emit fileHighlighted(i); }
00057 
00058     void activateMenu( const KFileItem *i, const QPoint& pos ) {
00059         emit activatedMenu( i, pos );
00060     }
00061 
00062     void changeSorting( QDir::SortSpec sorting ) {
00063         emit sortingChanged( sorting );
00064     }
00065     
00066     void dropURLs(const KFileItem *i, QDropEvent*e, const KURL::List&urls) {
00067         emit dropped(i, e, urls);
00068     }
00069 
00070 signals:
00071     void dirActivated(const KFileItem*);
00072 
00073     void sortingChanged( QDir::SortSpec );
00074 
00079     void fileHighlighted(const KFileItem*);
00080     void fileSelected(const KFileItem*);
00081     void activatedMenu( const KFileItem *i, const QPoint& );
00082     void dropped(const KFileItem *, QDropEvent*, const KURL::List&);
00083 };
00084 
00099 class KFileView {
00100 
00101 public:
00102     KFileView();
00103 
00107     virtual ~KFileView();
00108 
00112     void addItemList(const KFileItemList &list);
00113 
00119     virtual QWidget *widget() = 0;
00120 
00124     QWidget *widget() const { return const_cast<KFileView*>(this)->widget(); }
00125 
00129     void setCurrentItem( const QString &filename );
00130 
00135     virtual void setCurrentItem( const KFileItem *item ) = 0;
00136 
00142     virtual KFileItem *currentFileItem() const = 0;
00143 
00147     virtual void clear();
00148 
00157     virtual void updateView(bool f = true);
00158 
00159     virtual void updateView(const KFileItem*);
00160 
00165     virtual void removeItem(const KFileItem *item);
00166 
00172     virtual void listingCompleted();
00173 
00178     QDir::SortSpec sorting() const { return m_sorting; }
00179 
00194     virtual void setSorting(QDir::SortSpec sort);
00195 
00200     bool isReversed() const { return (m_sorting & QDir::Reversed); }
00201 
00202     void sortReversed();
00203 
00207     uint count() const { return filesNumber + dirsNumber; }
00208 
00212     uint numFiles() const { return filesNumber; }
00213 
00217     uint numDirs() const { return dirsNumber; }
00218 
00219     virtual void setSelectionMode( KFile::SelectionMode sm );
00220     virtual KFile::SelectionMode selectionMode() const;
00221 
00222     enum ViewMode {
00223     Files       = 1,
00224     Directories = 2,
00225     All = Files | Directories
00226     };
00227     virtual void setViewMode( ViewMode vm );
00228     virtual ViewMode viewMode() const { return view_mode; }
00229 
00235     QString viewName() const { return m_viewName; }
00236 
00241     void setViewName( const QString& name ) { m_viewName = name; }
00242 
00243     virtual void setParentView(KFileView *parent);
00244 
00253     virtual void insertItem( KFileItem *i);
00254 
00259     virtual void clearView() = 0;
00260 
00265     virtual void ensureItemVisible( const KFileItem *i ) = 0;
00266 
00271     virtual void clearSelection() = 0;
00272 
00278     virtual void selectAll();
00279 
00284     virtual void invertSelection();
00285 
00290     virtual void setSelected(const KFileItem *, bool enable) = 0;
00291 
00296     virtual bool isSelected( const KFileItem * ) const = 0;
00297 
00301     const KFileItemList * selectedItems() const;
00302 
00306     const KFileItemList * items() const;
00307 
00308     virtual KFileItem * firstFileItem() const = 0;
00309     virtual KFileItem * nextItem( const KFileItem * ) const = 0;
00310     virtual KFileItem * prevItem( const KFileItem * ) const = 0;
00311 
00322     void setOnlyDoubleClickSelectsFiles( bool enable ) {
00323     myOnlyDoubleClickSelectsFiles = enable;
00324     }
00325 
00331     bool onlyDoubleClickSelectsFiles() const {
00332     return myOnlyDoubleClickSelectsFiles;
00333     }
00334 
00339     bool updateNumbers(const KFileItem *i);
00340 
00346     virtual KActionCollection * actionCollection() const;
00347 
00348     KFileViewSignaler * signaler() const { return sig; }
00349 
00350     virtual void readConfig( KConfig *, const QString& group = QString::null );
00351     virtual void writeConfig( KConfig *, const QString& group = QString::null);
00352 
00360     enum DropOptions {
00361     AutoOpenDirs  = 1
00362     };
00368     // KDE 4: Make virtual
00369     void setDropOptions(int options);
00370     
00376     int dropOptions();
00377     
00391     static QString sortingKey( const QString& value, bool isDir, int sortSpec);
00392 
00399     static QString sortingKey( KIO::filesize_t value, bool isDir,int sortSpec);
00400 
00405     static int autoOpenDelay();
00406 
00407 protected:
00412     KFileViewSignaler *sig;
00413 
00414 private:
00415     static QDir::SortSpec defaultSortSpec;
00416     QDir::SortSpec m_sorting;
00417     QString m_viewName;
00418 
00422     uint filesNumber;
00423     uint dirsNumber;
00424 
00425     ViewMode view_mode;
00426     KFile::SelectionMode selection_mode;
00427 
00428     // never use! It's only guaranteed to contain valid items in the items()
00429     // method!
00430     mutable KFileItemList m_itemList;
00431 
00432     mutable KFileItemList *m_selectedList;
00433     bool myOnlyDoubleClickSelectsFiles;
00434 
00435 protected:
00436     virtual void virtual_hook( int id, void* data );
00437     /* @internal for virtual_hook */
00438     enum { VIRTUAL_SET_DROP_OPTIONS = 1 };
00439     void setDropOptions_impl(int options);
00440 private:
00441     class KFileViewPrivate;
00442     KFileViewPrivate *d;
00443 };
00444 
00445 #endif // KFILEINFOLISTWIDGET_H
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 Sun May 16 22:03:15 2004 by doxygen 1.2.15 written by Dimitri van Heesch, © 1997-2003