diff options
Diffstat (limited to 'kio/kfile/kfileview.h')
-rw-r--r-- | kio/kfile/kfileview.h | 444 |
1 files changed, 0 insertions, 444 deletions
diff --git a/kio/kfile/kfileview.h b/kio/kfile/kfileview.h deleted file mode 100644 index 7e88fc9d8..000000000 --- a/kio/kfile/kfileview.h +++ /dev/null @@ -1,444 +0,0 @@ -// -*- c++ -*- -/* This file is part of the KDE libraries - Copyright (C) 1997 Stephan Kulow <coolo@kde.org> - Copyright (C) 2001 Carsten Pfeiffer <pfeiffer@kde.org> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef KFILEVIEW_H -#define KFILEVIEW_H - -class TQPoint; -class KActionCollection; - -#include <tqwidget.h> - -#include "kfileitem.h" -#include "kfile.h" - -/** - * internal class to make easier to use signals possible - * @internal - **/ -class TDEIO_EXPORT KFileViewSignaler : public TQObject -{ - Q_OBJECT - -public: - /** - * Call this method when an item is selected (depends on single click / - * double click configuration). Emits the appropriate signal. - **/ - void activate( const KFileItem *item ) { - if ( item->isDir() ) - emit dirActivated( item ); - else - emit fileSelected( item ); - } - /** - * emits the highlighted signal for item. Call this in your view class - * whenever the selection changes. - */ - void highlightFile(const KFileItem *i) { emit fileHighlighted(i); } - - void activateMenu( const KFileItem *i, const TQPoint& pos ) { - emit activatedMenu( i, pos ); - } - - void changeSorting( TQDir::SortSpec sorting ) { - emit sortingChanged( sorting ); - } - - void dropURLs(const KFileItem *i, TQDropEvent*e, const KURL::List&urls) { - emit dropped(i, e, urls); - } - -signals: - void dirActivated(const KFileItem*); - - void sortingChanged( TQDir::SortSpec ); - - /** - * the item maybe be 0L, indicating that we're in multiselection mode and - * the selection has changed. - */ - void fileHighlighted(const KFileItem*); - void fileSelected(const KFileItem*); - void activatedMenu( const KFileItem *i, const TQPoint& ); - void dropped(const KFileItem *, TQDropEvent*, const KURL::List&); -}; - -/** - * This class defines an interface to all file views. Its intent is - * to allow to switch the view of the files in the selector very easily. - * It defines some pure virtual functions, that must be implemented to - * make a file view working. - * - * Since this class is not a widget, but it's meant to be added to other - * widgets, its most important function is widget. This should return - * a pointer to the implemented widget. - * - * @short A base class for views of the KDE file selector - * @author Stephan Kulow <coolo@kde.org> - **/ -class TDEIO_EXPORT KFileView { - -public: - KFileView(); - - /** - * Destructor - */ - virtual ~KFileView(); - - /** - * inserts a list of items. - **/ - void addItemList(const KFileItemList &list); - - /** - * a pure virtual function to get a TQWidget, that can be added to - * other widgets. This function is needed to make it possible for - * derived classes to derive from other widgets. - **/ - virtual TQWidget *widget() = 0; - - /** - * ### As const-method, to be fixed in 3.0 - */ - TQWidget *widget() const { return const_cast<KFileView*>(this)->widget(); } - - /** - * Sets @p filename the current item in the view, if available. - */ - void setCurrentItem( const TQString &filename ); - - /** - * Reimplement this to set @p item the current item in the view, e.g. - * the item having focus. - */ - virtual void setCurrentItem( const KFileItem *item ) = 0; - - /** - * @returns the "current" KFileItem, e.g. where the cursor is. - * Returns 0L when there is no current item (e.g. in an empty view). - * Subclasses have to implement this. - */ - virtual KFileItem *currentFileItem() const = 0; - - /** - * Clears the view and all item lists. - */ - virtual void clear(); - - /** - * does a repaint of the view. - * - * The default implementation calls - * \code - * widget()->repaint(f) - * \endcode - **/ - virtual void updateView(bool f = true); - - virtual void updateView(const KFileItem*); - - /** - * Removes an item from the list; has to be implemented by the view. - * Call KFileView::removeItem( item ) after removing it. - */ - virtual void removeItem(const KFileItem *item); - - /** - * This hook is called when all items of the currently listed directory - * are listed and inserted into the view, i.e. there won't come any new - * items anymore. - */ - virtual void listingCompleted(); - - /** - * Returns the sorting order of the internal list. Newly added files - * are added through this sorting. - */ - TQDir::SortSpec sorting() const { return m_sorting; } - - /** - * Sets the sorting order of the view. - * - * Default is TQDir::Name | TQDir::IgnoreCase | TQDir::DirsFirst - * Override this in your subclass and sort accordingly (usually by - * setting the sorting-key for every item and telling QIconView - * or TQListView to sort. - * - * A view may choose to use a different sorting than TQDir::Name, Time - * or Size. E.g. to sort by mimetype or any possible string. Set the - * sorting to TQDir::Unsorted for that and do the rest internally. - * - * @see sortingKey - */ - virtual void setSorting(TQDir::SortSpec sort); - - /** - * Tells whether the current items are in reversed order (shortcut to - * sorting() & TQDir::Reversed). - */ - bool isReversed() const { return (m_sorting & TQDir::Reversed); } - - void sortReversed(); - - /** - * @returns the number of dirs and files - **/ - uint count() const { return filesNumber + dirsNumber; } - - /** - * @returns the number of files. - **/ - uint numFiles() const { return filesNumber; } - - /** - * @returns the number of directories - **/ - uint numDirs() const { return dirsNumber; } - - virtual void setSelectionMode( KFile::SelectionMode sm ); - virtual KFile::SelectionMode selectionMode() const; - - enum ViewMode { - Files = 1, - Directories = 2, - All = Files | Directories - }; - virtual void setViewMode( ViewMode vm ); - virtual ViewMode viewMode() const { return view_mode; } - - /** - * @returns the localized name of the view, which could be displayed - * somewhere, e.g. in a menu, where the user can choose between views. - * @see setViewName - */ - TQString viewName() const { return m_viewName; } - - /** - * Sets the name of the view, which could be displayed somewhere. - * E.g. "Image Preview". - */ - void setViewName( const TQString& name ) { m_viewName = name; } - - virtual void setParentView(KFileView *parent); - - /** - * The derived view must implement this function to add - * the file in the widget. - * - * Make sure to call this implementation, i.e. - * KFileView::insertItem( i ); - * - */ - virtual void insertItem( KFileItem *i); - - /** - * pure virtual function, that should be implemented to clear - * the view. At this moment the list is already empty - **/ - virtual void clearView() = 0; - - /** - * pure virtual function, that should be implemented to make item i - * visible, i.e. by scrolling the view appropriately. - */ - virtual void ensureItemVisible( const KFileItem *i ) = 0; - - /** - * Clears any selection, unhighlights everything. Must be implemented by - * the view. - */ - virtual void clearSelection() = 0; - - /** - * Selects all items. You may want to override this, if you can implement - * it more efficiently than calling setSelected() with every item. - * This works only in Multiselection mode of course. - */ - virtual void selectAll(); - - /** - * Inverts the current selection, i.e. selects all items, that were up to - * now not selected and deselects the other. - */ - virtual void invertSelection(); - - /** - * Tells the view that it should highlight the item. - * This function must be implemented by the view. - **/ - virtual void setSelected(const KFileItem *, bool enable) = 0; - - /** - * @returns whether the given item is currently selected. - * Must be implemented by the view. - */ - virtual bool isSelected( const KFileItem * ) const = 0; - - /** - * @returns all currently highlighted items. - */ - const KFileItemList * selectedItems() const; - - /** - * @returns all items currently available in the current sort-order - */ - const KFileItemList * items() const; - - virtual KFileItem * firstFileItem() const = 0; - virtual KFileItem * nextItem( const KFileItem * ) const = 0; - virtual KFileItem * prevItem( const KFileItem * ) const = 0; - - /** - * This is a KFileDialog specific hack: we want to select directories with - * single click, but not files. But as a generic class, we have to be able - * to select files on single click as well. - * - * This gives us the opportunity to do both. - * - * Every view has to decide when to call select( item ) when a file was - * single-clicked, based on onlyDoubleClickSelectsFiles(). - */ - void setOnlyDoubleClickSelectsFiles( bool enable ) { - myOnlyDoubleClickSelectsFiles = enable; - } - - /** - * @returns whether files (not directories) should only be select()ed by - * double-clicks. - * @see setOnlyDoubleClickSelectsFiles - */ - bool onlyDoubleClickSelectsFiles() const { - return myOnlyDoubleClickSelectsFiles; - } - - /** - * increases the number of dirs and files. - * @returns true if the item fits the view mode - */ - bool updateNumbers(const KFileItem *i); - - /** - * @returns the view-specific action-collection. Every view should - * add its actions here (if it has any) to make them available to - * e.g. the KDirOperator's popup-menu. - */ - virtual KActionCollection * actionCollection() const; - - KFileViewSignaler * signaler() const { return sig; } - - virtual void readConfig( TDEConfig *, const TQString& group = TQString::null ); - virtual void writeConfig( TDEConfig *, const TQString& group = TQString::null); - - /** - * Various options for drag and drop support. - * These values can be or'd together. - * @li @p AutoOpenDirs Automatically open directory after hovering above it - * for a short while while dragging. - * @since 3.2 - */ - enum DropOptions { - AutoOpenDirs = 1 - }; - /** - * Specify DND options. See DropOptions for details. - * All options are disabled by default. - * @since 3.2 - */ - // KDE 4: Make virtual - void setDropOptions(int options); - - /** - * Returns the DND options in effect. - * See DropOptions for details. - * @since 3.2 - */ - int dropOptions(); - - /** - * This method calculates a TQString from the given parameters, that is - * suitable for sorting with e.g. TQIconView or TQListView. Their - * Item-classes usually have a setKey( const TQString& ) method or a virtual - * method TQString key() that is used for sorting. - * - * @param value Any string that should be used as sort criterion - * @param isDir Tells whether the key is computed for an item representing - * a directory (directories are usually sorted before files) - * @param sortSpec An ORed combination of TQDir::SortSpec flags. - * Currently, the values IgnoreCase, Reversed and - * DirsFirst are taken into account. - */ - static TQString sortingKey( const TQString& value, bool isDir, int sortSpec); - - /** - * An overloaded method that takes not a TQString, but a number as sort - * criterion. You can use this for file-sizes or dates/times for example. - * If you use a time_t, you need to cast that to TDEIO::filesize_t because - * of ambiguity problems. - */ - static TQString sortingKey( TDEIO::filesize_t value, bool isDir,int sortSpec); - - /** - * @internal - * delay before auto opening a directory - */ - static int autoOpenDelay(); - -protected: - /** - * @internal - * class to distribute the signals - **/ - KFileViewSignaler *sig; - -private: - static TQDir::SortSpec defaultSortSpec; - TQDir::SortSpec m_sorting; - TQString m_viewName; - - /** - * counters - **/ - uint filesNumber; - uint dirsNumber; - - ViewMode view_mode; - KFile::SelectionMode selection_mode; - - // never use! It's only guaranteed to contain valid items in the items() - // method! - mutable KFileItemList m_itemList; - - mutable KFileItemList *m_selectedList; - bool myOnlyDoubleClickSelectsFiles; - -protected: - virtual void virtual_hook( int id, void* data ); - /* @internal for virtual_hook */ - enum { VIRTUAL_SET_DROP_OPTIONS = 1 }; - void setDropOptions_impl(int options); -private: - class KFileViewPrivate; - KFileViewPrivate *d; -}; - -#endif // KFILEINFOLISTWIDGET_H |