/*                 This file is part of the Opie Project =. (C) 2003 Michael 'Mickey' Lauer .=l.            .>+-=  _;:,     .>    :=|. This program is free software; you can .> <`_,   >  .   <= redistribute it and/or modify it under :`=1 )Y*s>-.--   : the terms of the GNU Library General Public .="- .-=="i,     .._ License as published by the Free Software  - .   .-<_>     .<> Foundation; either version 2 of the License,      ._= =}       : or (at your option) any later version.     .%`+i>       _;_.     .i_,=:_.      -`: 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef OVERSATILEVIEW_H #define OVERSATILEVIEW_H /* QT */ #include #include /* OPIE */ #include /* FORWARDS */ class QHeader; class QIconSet; class QIconViewItem; class QListViewItem; class QPopupMenu; class QString; #ifndef QT_NO_DRAGANDDROP class QIconDragItem; #endif namespace Opie { namespace Ui { class OListView; class OVersatileView : public QWidgetStack { Q_OBJECT friend class OVersatileViewItem; //==============================================================================================// // OVersatileView High Level API //==============================================================================================// public: OVersatileView( QWidget* parent = 0, const char* name = 0, int mode = 0 ); ~OVersatileView(); QPopupMenu* contextMenu() const; void setSynchronization( bool sync ); bool synchronization(); enum ViewMode { Tree = 0, Icons }; int viewMode(); QIconView* iconView() const; OListView* listView() const; enum WarningPolicy { None = 0, Warn, WarnReturn }; void setWarningPolicy( int ) const; // warn, if calling a method which doesn't apply to the current viewmode bool warningPolicy() const; void setDefaultPixmaps( int mode, QPixmap& leaf, QPixmap& opened, QPixmap& closed ); public slots: void setViewMode( int mode ); void setIconViewMode(); void setTreeViewMode(); protected: virtual bool isValidViewMode( int mode ) const; virtual void popupContextMenu( OVersatileViewItem* item, const QPoint& pos, int col = 0 ); private: int _viewmode; bool _synchronization; mutable int _warningpolicy; OListView* _listview; QIconView* _iconview; QPixmap _treeleaf; QPixmap _treeopened; QPixmap _treeclosed; QPixmap _iconleaf; QPixmap _iconopened; QPixmap _iconclosed; QPopupMenu* _contextmenu; int _iconstyle; int _treestyle; private slots: void contextMenuRequested( QListViewItem*, const QPoint&, int ); void contextMenuRequested( QIconViewItem*, const QPoint& ); // type converting signal forwarders void selectionChanged( QListViewItem * ); void currentChanged( QListViewItem * ); void clicked( QListViewItem * ); void pressed( QListViewItem * ); void doubleClicked( QListViewItem * ); void returnPressed( QListViewItem * ); void onItem( QListViewItem * ); void selectionChanged( QIconViewItem * ); void currentChanged( QIconViewItem * ); void clicked( QIconViewItem * ); void pressed( QIconViewItem * ); void doubleClicked( QIconViewItem * ); void returnPressed( QIconViewItem * ); void onItem( QIconViewItem * ); void expanded( QListViewItem * item ); // QListView void collapsed( QListViewItem * item ); // QListView signals: void contextMenuRequested( Opie::Ui::OVersatileViewItem * item, const QPoint& pos, int col ); /*#ifndef QT_NO_DRAGANDDROP void dropped( QDropEvent *e, const QValueList &lst ); // QIconView #endif void itemRenamed( OVersatileViewItem *item, const QString & ); // QIconView void itemRenamed( OVersatileViewItem *item ); // QIconView */ //==============================================================================================// // "Derived" API - Case 1: Methods existing either only in QListView or only in QIconView //==============================================================================================// public: /* enum Arrangement { // QIconView LeftToRight = 0, TopToBottom }; enum ResizeMode { // QIconView Fixed = 0, Adjust }; enum ItemTextPos { // QIconView Bottom = 0, Right }; */ // // only in QListView // int treeStepSize() const; // QListView virtual void setTreeStepSize( int ); // QListView QHeader * header() const; // QListView virtual int addColumn( const QString &label, int size = -1); // QListView virtual int addColumn( const QIconSet& iconset, const QString &label, int size = -1); // QListView void removeColumn( int index ); // #### make virtual in next major release! // QListView virtual void setColumnText( int column, const QString &label ); // QListView virtual void setColumnText( int column, const QIconSet& iconset, const QString &label ); // QListView QString columnText( int column ) const; // QListView virtual void setColumnWidth( int column, int width ); // QListView int columnWidth( int column ) const; // QListView enum WidthMode { Manual, Maximum }; // QListView virtual void setColumnWidthMode( int column, WidthMode ); // QListView WidthMode columnWidthMode( int column ) const; // QListView int columns() const; // QListView virtual void setColumnAlignment( int, int ); // QListView int columnAlignment( int ) const; // QListView OVersatileViewItem * itemAt( const QPoint & screenPos ) const; // QListView QRect itemRect( const OVersatileViewItem * ) const; // QListView int itemPos( const OVersatileViewItem * ); // QListView bool isSelected( const OVersatileViewItem * ) const; // QListView // also in QIconViewItem but not in QIconView *shrug* virtual void setMultiSelection( bool enable ); // QListView bool isMultiSelection() const; // QListView OVersatileViewItem * selectedItem() const; // QListView virtual void setOpen( OVersatileViewItem *, bool ); // QListView bool isOpen( const OVersatileViewItem * ) const; // QListView OVersatileViewItem * firstChild() const; // QListView int childCount() const; // QListView virtual void setAllColumnsShowFocus( bool ); // QListView bool allColumnsShowFocus() const; // QListView virtual void setItemMargin( int ); // QListView int itemMargin() const; // QListView virtual void setRootIsDecorated( bool ); // QListView bool rootIsDecorated() const; // QListView void setShowSortIndicator( bool show ); // QListView bool showSortIndicator() const; // QListView int index( const OVersatileViewItem *item ) const; // QIconView public slots: void triggerUpdate(); // QListView signals: void expanded( Opie::Ui::OVersatileViewItem *item ); // QListView void collapsed( Opie::Ui::OVersatileViewItem *item ); // QListView // // only in QIconView // public: uint count() const; // QIconView OVersatileViewItem *firstItem() const; // QIconView OVersatileViewItem *lastItem() const; // QIconView OVersatileViewItem *findItem( const QPoint &pos ) const; // QIconView OVersatileViewItem *findItem( const QString &text ) const; // QIconView OVersatileViewItem* findFirstVisibleItem( const QRect &r ) const; // QIconView OVersatileViewItem* findLastVisibleItem( const QRect &r ) const; // QIconView virtual void setGridX( int rx ); // QIconView virtual void setGridY( int ry ); // QIconView int gridX() const; // QIconView int gridY() const; // QIconView virtual void setSpacing( int sp ); // QIconView int spacing() const; // QIconView virtual void setItemTextPos( QIconView::ItemTextPos pos ); // QIconView QIconView::ItemTextPos itemTextPos() const; // QIconView virtual void setItemTextBackground( const QBrush &b ); // QIconView QBrush itemTextBackground() const; // QIconView virtual void setArrangement( QIconView::Arrangement am ); // QIconView QIconView::Arrangement arrangement() const; // QIconView virtual void setResizeMode( QIconView::ResizeMode am ); // QIconView QIconView::ResizeMode resizeMode() const; // QIconView virtual void setMaxItemWidth( int w ); // QIconView int maxItemWidth() const; // QIconView virtual void setMaxItemTextLength( int w ); // QIconView int maxItemTextLength() const; // QIconView virtual void setAutoArrange( bool b ); // QIconView bool autoArrange() const; // QIconView virtual void setShowToolTips( bool b ); // QIconView bool showToolTips() const; // QIconView bool sorting() const; // QIconView bool sortDirection() const; // QIconView virtual void setItemsMovable( bool b ); // QIconView bool itemsMovable() const; // QIconView virtual void setWordWrapIconText( bool b ); // QIconView bool wordWrapIconText() const; // QIconView public slots: virtual void arrangeItemsInGrid( const QSize &grid, bool update = TRUE ); // QIconView virtual void arrangeItemsInGrid( bool update = TRUE ); // QIconView virtual void updateContents(); // QIconView signals: /*#ifndef QT_NO_DRAGANDDROP void dropped( QDropEvent *e, const QValueList &lst ); // QIconView #endif */ void moved(); // QIconView void itemRenamed( Opie::Ui::OVersatileViewItem *item, const QString & ); // QIconView void itemRenamed( Opie::Ui::OVersatileViewItem *item ); // QIconView //==============================================================================================// // "Derived" API - Case 2: Methods existing in QListView and QIconView with the same signatures //==============================================================================================// public: enum SelectionMode { Single = 0, Multi, Extended, NoSelection }; virtual void clear(); virtual void setFont( const QFont & ); virtual void setPalette( const QPalette & ); virtual void takeItem( OVersatileViewItem * ); void setSelectionMode( SelectionMode mode ); SelectionMode selectionMode() const; virtual void selectAll( bool select ); virtual void clearSelection(); virtual void invertSelection(); void ensureItemVisible( const OVersatileViewItem * ); virtual void repaintItem( const OVersatileViewItem * ) const; virtual void setCurrentItem( OVersatileViewItem * ); OVersatileViewItem * currentItem() const; // bool eventFilter( QObject * o, QEvent * ); // use QWidgetStack implementation // QSize minimumSizeHint() const; // use QWidgetStack implementation // QSizePolicy sizePolicy() const; // use QWidgetStack implementation // QSize sizeHint() const; // use QWidgetStack implementation signals: void selectionChanged(); void selectionChanged( Opie::Ui::OVersatileViewItem * ); void currentChanged( Opie::Ui::OVersatileViewItem * ); void clicked( Opie::Ui::OVersatileViewItem * ); void pressed( Opie::Ui::OVersatileViewItem * ); void doubleClicked( Opie::Ui::OVersatileViewItem * ); void returnPressed( Opie::Ui::OVersatileViewItem * ); void onItem( Opie::Ui::OVersatileViewItem * ); void onViewport(); //==============================================================================================// // "Derived" API - Case 2: Methods existing in QListView and QIconView with differing signatures //==============================================================================================// /* public: virtual void insertItem( OVersatileViewItem * ); // QListView virtual void insertItem( OVersatileViewItem *item, OVersatileViewItem *after = 0L ); // QIconView virtual void setSelected( OVersatileViewItem *, bool ); // QListView virtual void setSelected( OVersatileViewItem *item, bool s, bool cb = FALSE ); // QIconView virtual void setSorting( int column, bool increasing = TRUE ); // QListView void setSorting( bool sort, bool ascending = TRUE ); // QIconView void sort(); // #### make virtual in next major release // QListView virtual void sort( bool ascending = TRUE ); // QIconView */ signals: void clicked( Opie::Ui::OVersatileViewItem *, const QPoint &, int ); // QListView void clicked( Opie::Ui::OVersatileViewItem *, const QPoint & ); // QIconView void pressed( Opie::Ui::OVersatileViewItem *, const QPoint &, int ); // QListView void pressed( Opie::Ui::OVersatileViewItem *, const QPoint & ); // QIconView void rightButtonClicked( Opie::Ui::OVersatileViewItem* item, const QPoint& pos ); // QIconView void rightButtonClicked( Opie::Ui::OVersatileViewItem *, const QPoint&, int ); // QListView void rightButtonPressed( Opie::Ui::OVersatileViewItem* item, const QPoint& pos ); // QIconView void rightButtonPressed( Opie::Ui::OVersatileViewItem *, const QPoint&, int ); // QListView void mouseButtonPressed( int, Opie::Ui::OVersatileViewItem *, const QPoint& , int ); // QListView void mouseButtonPressed( int button, Opie::Ui::OVersatileViewItem* item, const QPoint& pos ); // QIconView void mouseButtonClicked( int, Opie::Ui::OVersatileViewItem *, const QPoint&, int ); // QListView void mouseButtonClicked( int button, Opie::Ui::OVersatileViewItem* item, const QPoint& pos ); // QIconView }; } } #endif