/*                 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. */ /* OPIE */ #include #include #include #include /* QT */ #include #include /* XPM */ static const char * view_icon_xpm[] = { "16 16 16 1", " c None", ". c #87BD88", "+ c #8BBE8B", "@ c #81BA81", "# c #6DAF6D", "$ c #87BD87", "% c #FCFDFC", "& c #AED0AE", "* c #4E9C4C", "= c #91BD91", "- c #72B172", "; c #448643", "> c #519F50", ", c #499247", "' c #356A35", ") c #686868", " ", " .+@# .+@# ", " $%&* $%&* ", " @=-; @=-; ", " #>,' #>,' ", " ", " )))))) )))))) ", " ", " ", " .+@# .+@# ", " $%&* $%&* ", " @=-; @=-; ", " #>,' #>,' ", " ", " )))))) )))))) ", " "}; /* XPM */ static const char * view_tree_xpm[] = { "16 16 17 1", " c None", ". c #3A3A3A", "+ c #87BD88", "@ c #8BBE8B", "# c #81BA81", "$ c #6DAF6D", "% c #87BD87", "& c #FCFDFC", "* c #AED0AE", "= c #4E9C4C", "- c #91BD91", "; c #72B172", "> c #448643", ", c #686868", "' c #519F50", ") c #499247", "! c #356A35", " . ", " . ", " . +@#$ ", " . %&*= ", " .. #-;> ,, ,,,", " . $')! ", " . ", " . ", " . ", " . +@#$ ", " . %&*= ", " .. #-;> ,, ,,,", " $')! ", " ", " ", " "}; OVersatileView::OVersatileView( QWidget* parent, const char* name, int mode ) :QWidgetStack( parent, name ), _viewmode( mode ), _warningpolicy( None ), _treeleaf(), _treeopened(), _treeclosed(), _iconleaf(), _iconopened(), _iconclosed() { // // Create child widgets and set some reasonable default styles // _listview = new OListView( this, "oversatileview embedded listview" ); _iconview = new QIconView( this, "oversatileview embedded iconview" ); _listview->setAllColumnsShowFocus( true ); _listview->setRootIsDecorated( true ); _listview->setShowSortIndicator( true ); _iconview->setGridX( 90 ); _iconview->setGridY( 42 ); _iconview->setAutoArrange( true ); #ifdef QWS // TODO: Let this depend on current geometry (rotation) _iconview->setArrangement( QIconView::TopToBottom ); #else _iconview->setArrangement( QIconView::LeftToRight ); #endif _iconview->setResizeMode( QIconView::Adjust ); // qt-embedded: map stylus right on hold to right button press #ifdef QWS ( (QPEApplication*) qApp)->setStylusOperation( _iconview->viewport(), QPEApplication::RightOnHold ); ( (QPEApplication*) qApp)->setStylusOperation( _listview->viewport(), QPEApplication::RightOnHold ); #endif setViewMode( mode ); // TODO: Read last style from config // setSynchronization( true ); // TODO: Implement this // create context menu allowing to switch between the views _contextmenu = new QPopupMenu( 0, "oversatileview contextmenu" ); _contextmenu->setCaption( "Style" ); _contextmenu->setCheckable( true ); QActionGroup* ag = new QActionGroup( _contextmenu, "style option group" ); QAction* a1 = new QAction( "View Items in Icon Style", QIconSet( QPixmap( view_icon_xpm ) ), "View Icons", 0, ag, "viewicon action", true ); QAction* a2 = new QAction( "View Items in Tree Style", QIconSet( QPixmap( view_tree_xpm ) ), "View Tree", 0, ag, "viewtree action", true ); ag->addTo( _contextmenu ); if ( mode == Icons ) a1->setOn( true ); else if ( mode == Tree ) a2->setOn( true ); connect( a1, SIGNAL( activated() ), this, SLOT( setIconViewMode() ) ); connect( a2, SIGNAL( activated() ), this, SLOT( setTreeViewMode() ) ); #if (QT_VERSION >= 0x030000) connect( _listview, SIGNAL( contextMenuRequested( QListViewItem*, const QPoint&, int ) ), this, SLOT( contextMenuRequested( QListViewItem*, const QPoint&, int ) ) ); connect( _iconview, SIGNAL( contextMenuRequested( QIconViewItem*, const QPoint& ) ), this, SLOT( contextMenuRequested( QIconViewItem*, const QPoint& ) ) ); #else connect( _listview, SIGNAL( rightButtonPressed( QListViewItem*, const QPoint&, int ) ), this, SLOT( contextMenuRequested( QListViewItem*, const QPoint&, int ) ) ); connect( _iconview, SIGNAL( rightButtonPressed( QIconViewItem*, const QPoint& ) ), this, SLOT( contextMenuRequested( QIconViewItem*, const QPoint& ) ) ); #endif // // signal forwarders // // unfortunately we can't short-circuit all the QListView and QIconView signals // to OVersatileView signals, because the signal/slot mechanism doesn't allow // type-conversion :-( // common signals for listview connect( _listview, SIGNAL( selectionChanged() ), this, SIGNAL( selectionChanged() ) ); connect( _listview, SIGNAL( selectionChanged( QListViewItem * ) ), this, SLOT( selectionChanged( QListViewItem * ) ) ); connect( _listview, SIGNAL( currentChanged( QListViewItem * ) ), this, SLOT( currentChanged( QListViewItem * ) ) ); connect( _listview, SIGNAL( clicked( QListViewItem * ) ), this, SLOT( clicked( QListViewItem * ) ) ); connect( _listview, SIGNAL( pressed( QListViewItem * ) ), this, SLOT( pressed( QListViewItem * ) ) ); connect( _listview, SIGNAL( doubleClicked( QListViewItem * ) ), this, SLOT( doubleClicked( QListViewItem * ) ) ); connect( _listview, SIGNAL( returnPressed( QListViewItem * ) ), this, SLOT( returnPressed( QListViewItem * ) ) ); connect( _listview, SIGNAL( onItem( QListViewItem * ) ), this, SLOT( onItem( QListViewItem * ) ) ); connect( _listview, SIGNAL( onViewport() ), this, SIGNAL( onViewport() ) ); // common signals for iconview connect( _iconview, SIGNAL( selectionChanged() ), this, SIGNAL( selectionChanged() ) ); connect( _iconview, SIGNAL( selectionChanged( QIconViewItem * ) ), this, SLOT( selectionChanged( QIconViewItem * ) ) ); connect( _iconview, SIGNAL( currentChanged( QIconViewItem * ) ), this, SLOT( currentChanged( QIconViewItem * ) ) ); connect( _iconview, SIGNAL( clicked( QIconViewItem * ) ), this, SLOT( clicked( QIconViewItem * ) ) ); connect( _iconview, SIGNAL( pressed( QIconViewItem * ) ), this, SLOT( pressed( QIconViewItem * ) ) ); connect( _iconview, SIGNAL( doubleClicked( QIconViewItem * ) ), this, SLOT( doubleClicked( QIconViewItem * ) ) ); connect( _iconview, SIGNAL( returnPressed( QIconViewItem * ) ), this, SLOT( returnPressed( QIconViewItem * ) ) ); connect( _iconview, SIGNAL( onItem( QIconViewItem * ) ), this, SLOT( onItem( QIconViewItem * ) ) ); connect( _iconview, SIGNAL( onViewport() ), this, SIGNAL( onViewport() ) ); // listview only signals connect( _listview, SIGNAL( expanded( QListViewItem * ) ), this, SLOT( expanded( QListViewItem * ) ) ); connect( _listview, SIGNAL( collapsed( QListViewItem * ) ), this, SLOT( collapsed( QListViewItem * ) ) ); // iconview only signals connect( _iconview, SIGNAL( moved() ), this, SIGNAL( moved() ) ); } OVersatileView::~OVersatileView() { } QPopupMenu* OVersatileView::contextMenu() const { return _contextmenu; } void OVersatileView::contextMenuRequested( QListViewItem* item, const QPoint& pos, int col ) { // can't use QObject::inherits here, because ListViewItems, beit Q, O or K, // do not inherit from QObject - assuming here the programmer is // disciplined enough to only add OVersatileViewItems to an OVersatileView popupContextMenu( static_cast( item ), pos, col ); } void OVersatileView::contextMenuRequested( QIconViewItem* item, const QPoint& pos ) { // see above popupContextMenu( static_cast( item ), pos, -1 ); } void OVersatileView::popupContextMenu( OVersatileViewItem* item, const QPoint& pos, int col ) { if ( !item ) _contextmenu->exec( pos ); else emit( contextMenuRequested( item, pos, col ) ); } void OVersatileView::setSynchronization( bool sync ) { _synchronization = sync; } bool OVersatileView::synchronization() { return _synchronization; } void OVersatileView::setDefaultPixmaps( int mode, QPixmap& leaf, QPixmap& opened, QPixmap& closed ) { if ( mode == Tree ) { _treeleaf = leaf; _treeopened = opened; _treeclosed = closed; } else if ( mode == Icons ) { _iconleaf = leaf; _iconopened = opened; _iconclosed = closed; } else { odebug << "OVersatileView::setDefaultPixmaps(): invalid mode" << oendl; } } QIconView* OVersatileView::iconView() const { return _iconview; } OListView* OVersatileView::listView() const { return _listview; } void OVersatileView::setViewMode( int mode ) { if ( mode == Tree ) { _viewmode = mode; raiseWidget( _listview ); } else if ( mode == Icons ) { _viewmode = mode; raiseWidget( _iconview ); } else { odebug << "OVersatileView::setViewMode(): invalid mode" << oendl; } } void OVersatileView::setIconViewMode() { setViewMode( Icons ); } void OVersatileView::setTreeViewMode() { setViewMode( Tree ); } bool OVersatileView::isValidViewMode( int mode ) const { switch ( _warningpolicy ) { case OVersatileView::None: { return true; } case OVersatileView::Warn: { if ( _viewmode != mode ) { odebug << "OVersatileView::isValidViewMode(): Requested operation not valid in current mode." << oendl; return true; } } case OVersatileView::WarnReturn: { if ( _viewmode != mode ) { odebug << "OVersatileView::isValidViewMode(): Requested operation not valid in current mode." << oendl; return false; } } default: { owarn << "OVersatileView::isValidViewMode(): Inconsistent object state!" << oendl; return true; } } } void OVersatileView::setWarningPolicy( int policy ) const { _warningpolicy = policy; } bool OVersatileView::warningPolicy() const { return _warningpolicy; } //==============================================================================================// // Stupid Signal forwarders... // Folks, this is why I like python with its dynamic typing: // I can code the following dozens of lines C++ in four Python lines... //==============================================================================================// void OVersatileView::selectionChanged( QListViewItem * item ) { emit( selectionChanged( static_cast( item ) ) ); } void OVersatileView::selectionChanged( QIconViewItem * item ) { emit( selectionChanged( static_cast( item ) ) ); } void OVersatileView::currentChanged( QListViewItem * item ) { emit( currentChanged( static_cast( item ) ) ); } void OVersatileView::currentChanged( QIconViewItem * item ) { emit( currentChanged( static_cast( item ) ) ); } void OVersatileView::clicked( QListViewItem * item ) { emit( clicked( static_cast( item ) ) ); } void OVersatileView::clicked( QIconViewItem * item ) { emit( clicked( static_cast( item ) ) ); } void OVersatileView::pressed( QListViewItem * item ) { emit( pressed( static_cast( item ) ) ); } void OVersatileView::pressed( QIconViewItem * item ) { emit( pressed( static_cast( item ) ) ); } void OVersatileView::doubleClicked( QListViewItem * item ) { emit( doubleClicked( static_cast( item ) ) ); } void OVersatileView::doubleClicked( QIconViewItem * item ) { emit( doubleClicked( static_cast( item ) ) ); } void OVersatileView::returnPressed( QListViewItem * item ) { emit( returnPressed( static_cast( item ) ) ); } void OVersatileView::returnPressed( QIconViewItem * item ) { emit( returnPressed( static_cast( item ) ) ); } void OVersatileView::onItem( QListViewItem * item ) { emit( onItem( static_cast( item ) ) ); } void OVersatileView::onItem( QIconViewItem * item ) { emit( onItem( static_cast( item ) ) ); } void OVersatileView::expanded( QListViewItem *item ) // QListView { //odebug << "OVersatileView::expanded(): opening tree..." << oendl; if ( !_treeopened.isNull() ) item->setPixmap( 0, _treeopened ); emit( expanded( static_cast( item ) ) ); } void OVersatileView::collapsed( QListViewItem *item ) // QListView { if ( !_treeclosed.isNull() ) item->setPixmap( 0, _treeclosed ); emit( collapsed( static_cast( item ) ) ); } //=============================================================================================// // OVersatileView Case I - API only existing in QListView or QIconView but not in both! //==============================================================================================// int OVersatileView::treeStepSize() const // QListView { if ( !isValidViewMode( Tree ) ) { return -1; } return _listview->treeStepSize(); } void OVersatileView::setTreeStepSize( int size ) // QListView { if ( !isValidViewMode( Tree ) ) { return; } _listview->setTreeStepSize( size ); } QHeader * OVersatileView::header() const // QListView { if ( !isValidViewMode( Tree ) ) { return 0; } return _listview->header(); } int OVersatileView::addColumn( const QString &label, int size ) // QListView { if ( !isValidViewMode( Tree ) ) { return -1; } return _listview->addColumn( label, size ); } int OVersatileView::addColumn( const QIconSet& iconset, const QString &label, int size ) // QListView { if ( !isValidViewMode( Tree ) ) { return -1; } return _listview->addColumn( iconset, label, size ); } void OVersatileView::removeColumn( int index ) // QListView { if ( !isValidViewMode( Tree ) ) { return; } _listview->removeColumn( index ); } void OVersatileView::setColumnText( int column, const QString &label ) // QListView { if ( !isValidViewMode( Tree ) ) { return; } _listview->setColumnText( column, label ); } void OVersatileView::setColumnText( int column, const QIconSet& iconset, const QString &label ) // QListView { if ( !isValidViewMode( Tree ) ) { return; } _listview->setColumnText( column, iconset, label ); } QString OVersatileView::columnText( int column ) const // QListView { if ( !isValidViewMode( Tree ) ) { return QString::null; } return _listview->columnText( column ); } void OVersatileView::setColumnWidth( int column, int width ) // QListView { if ( !isValidViewMode( Tree ) ) { return; } _listview->setColumnWidth( column, width ); } int OVersatileView::columnWidth( int column ) const // QListView { if ( !isValidViewMode( Tree ) ) { return -1; } return _listview->columnWidth( column ); } void OVersatileView::setColumnWidthMode( int column, WidthMode mode ) // QListView { if ( !isValidViewMode( Tree ) ) { return; } _listview->setColumnWidth( column, mode ); } int OVersatileView::columns() const // QListView { if ( !isValidViewMode( Tree ) ) { return -1; } return _listview->columns(); } void OVersatileView::setColumnAlignment( int column, int align ) // QListView { if ( !isValidViewMode( Tree ) ) { return; } _listview->setColumnAlignment( column, align ); } int OVersatileView::columnAlignment( int column ) const // QListView { if ( !isValidViewMode( Tree ) ) { return -1; } return _listview->columnAlignment( column ); } OVersatileViewItem * OVersatileView::itemAt( const QPoint & screenPos ) const // QListView { if ( !isValidViewMode( Tree ) ) { return 0; } return static_cast( _listview->itemAt( screenPos ) ); } QRect OVersatileView::itemRect( const OVersatileViewItem * item ) const // QListView { if ( !isValidViewMode( Tree ) ) { return QRect( -1, -1, -1, -1 ); } return _listview->itemRect( item ); } int OVersatileView::itemPos( const OVersatileViewItem * item ) // QListView { if ( !isValidViewMode( Tree ) ) { return -1; } return _listview->itemPos( item ); } bool OVersatileView::isSelected( const OVersatileViewItem * item ) const // QListView // also in QIconViewItem but !in QIconView *shrug* { if ( !isValidViewMode( Tree ) ) { return false; } return _listview->isSelected( item ); } void OVersatileView::setMultiSelection( bool enable ) { _listview->setMultiSelection( enable ); } bool OVersatileView::isMultiSelection() const { return _listview->isMultiSelection(); } OVersatileViewItem * OVersatileView::selectedItem() const // QListView { if ( !isValidViewMode( Tree ) ) { return 0; } return static_cast( _listview->selectedItem() ); } void OVersatileView::setOpen( OVersatileViewItem * item, bool open ) // QListView { if ( !isValidViewMode( Tree ) ) { return; } _listview->setOpen( item, open ); } bool OVersatileView::isOpen( const OVersatileViewItem * item ) const // QListView { if ( !isValidViewMode( Tree ) ) { return false; } return _listview->isOpen( item ); } OVersatileViewItem * OVersatileView::firstChild() const // QListView { if ( !isValidViewMode( Tree ) ) { return 0; } return static_cast( _listview->firstChild() ); } int OVersatileView::childCount() const // QListView { if ( !isValidViewMode( Tree ) ) { return -1; } return _listview->childCount(); } void OVersatileView::setAllColumnsShowFocus( bool focus ) // QListView { if ( !isValidViewMode( Tree ) ) { return; } _listview->setAllColumnsShowFocus( focus ); } bool OVersatileView::allColumnsShowFocus() const // QListView { if ( !isValidViewMode( Tree ) ) { return false; } return _listview->allColumnsShowFocus(); } void OVersatileView::setItemMargin( int margin ) // QListView { if ( !isValidViewMode( Tree ) ) { return; } _listview->setItemMargin( margin ); } int OVersatileView::itemMargin() const // QListView { if ( !isValidViewMode( Tree ) ) { return -1; } return _listview->itemMargin(); } void OVersatileView::setRootIsDecorated( bool decorate ) // QListView { if ( !isValidViewMode( Tree ) ) { return; } _listview->setRootIsDecorated( decorate ); } bool OVersatileView::rootIsDecorated() const // QListView { if ( !isValidViewMode( Tree ) ) { return false; } return _listview->rootIsDecorated(); } void OVersatileView::setShowSortIndicator( bool show ) // QListView { if ( !isValidViewMode( Tree ) ) { return; } _listview->setShowSortIndicator( show ); } bool OVersatileView::showSortIndicator() const // QListView { if ( !isValidViewMode( Tree ) ) { return false; } return _listview->showSortIndicator(); } void OVersatileView::triggerUpdate() // QListView { if ( !isValidViewMode( Tree ) ) { return; } _listview->triggerUpdate(); } // // only in QIconView // uint OVersatileView::count() const // QIconView { if ( !isValidViewMode( Icons ) ) { return 0; } return _iconview->count(); } int OVersatileView::index( const OVersatileViewItem *item ) const // QIconView { if ( !isValidViewMode( Icons ) ) { return -1; } return _iconview->index( item ); } OVersatileViewItem* OVersatileView::firstItem() const // QIconView { if ( !isValidViewMode( Icons ) ) { return 0; } return static_cast( _iconview->firstItem() ); } OVersatileViewItem* OVersatileView::lastItem() const // QIconView { if ( !isValidViewMode( Icons ) ) { return 0; } return static_cast( _iconview->lastItem() ); } OVersatileViewItem* OVersatileView::findItem( const QPoint &pos ) const // QIconView { if ( !isValidViewMode( Icons ) ) { return 0; } return static_cast( _iconview->findItem( pos ) ); } OVersatileViewItem* OVersatileView::findItem( const QString &text ) const // QIconView { if ( !isValidViewMode( Icons ) ) { return 0; } return static_cast( _iconview->findItem( text ) ); } OVersatileViewItem* OVersatileView::findFirstVisibleItem( const QRect &r ) const // QIconView { if ( !isValidViewMode( Icons ) ) { return 0; } return static_cast( _iconview->findFirstVisibleItem( r ) ); } OVersatileViewItem* OVersatileView::findLastVisibleItem( const QRect &r ) const // QIconView { if ( !isValidViewMode( Icons ) ) { return 0; } return static_cast( _iconview->findLastVisibleItem( r ) ); } void OVersatileView::setGridX( int rx ) // QIconView { if ( !isValidViewMode( Icons ) ) { return; } _iconview->setGridX( rx ); } void OVersatileView::setGridY( int ry ) // QIconView { if ( !isValidViewMode( Icons ) ) { return; } _iconview->setGridY( ry ); } int OVersatileView::gridX() const // QIconView { if ( !isValidViewMode( Icons ) ) { return -1; } return _iconview->gridX(); } int OVersatileView::gridY() const // QIconView { if ( !isValidViewMode( Icons ) ) { return -1; } return _iconview->gridY(); } void OVersatileView::setSpacing( int sp ) // QIconView { if ( !isValidViewMode( Icons ) ) { return; } _iconview->setSpacing( sp ); } int OVersatileView::spacing() const // QIconView { if ( !isValidViewMode( Icons ) ) { return -1; } return _iconview->spacing(); } void OVersatileView::setItemTextPos( QIconView::ItemTextPos pos ) // QIconView { if ( !isValidViewMode( Icons ) ) { return; } _iconview->setItemTextPos( pos ); } QIconView::ItemTextPos OVersatileView::itemTextPos() const // QIconView { if ( !isValidViewMode( Icons ) ) { return (QIconView::ItemTextPos) -1; } return _iconview->itemTextPos(); } void OVersatileView::setItemTextBackground( const QBrush &b ) // QIconView { if ( !isValidViewMode( Icons ) ) { return; } _iconview->setItemTextBackground( b ); } QBrush OVersatileView::itemTextBackground() const // QIconView { if ( !isValidViewMode( Icons ) ) { return QBrush(); } return _iconview->itemTextBackground(); } void OVersatileView::setArrangement( QIconView::Arrangement am ) // QIconView { if ( !isValidViewMode( Icons ) ) { return; } _iconview->setArrangement( am ); } QIconView::Arrangement OVersatileView::arrangement() const // QIconView { if ( !isValidViewMode( Icons ) ) { return (QIconView::Arrangement) -1; } return _iconview->arrangement(); } void OVersatileView::setResizeMode( QIconView::ResizeMode am ) // QIconView { if ( !isValidViewMode( Icons ) ) { return; } _iconview->setResizeMode( am ); } QIconView::ResizeMode OVersatileView::resizeMode() const // QIconView { if ( !isValidViewMode( Icons ) ) { return (QIconView::ResizeMode) -1; } return _iconview->resizeMode(); } void OVersatileView::setMaxItemWidth( int w ) // QIconView { if ( !isValidViewMode( Icons ) ) { return; } _iconview->setMaxItemWidth( w ); } int OVersatileView::maxItemWidth() const // QIconView { if ( !isValidViewMode( Icons ) ) { return -1; } return _iconview->maxItemWidth(); } void OVersatileView::setMaxItemTextLength( int w ) // QIconView { if ( !isValidViewMode( Icons ) ) { return; } _iconview->setMaxItemTextLength( w ); } int OVersatileView::maxItemTextLength() const // QIconView { if ( !isValidViewMode( Icons ) ) { return -1; } return _iconview->maxItemTextLength(); } void OVersatileView::setAutoArrange( bool b ) // QIconView { if ( !isValidViewMode( Icons ) ) { return; } _iconview->setAutoArrange( b ); } bool OVersatileView::autoArrange() const // QIconView { if ( !isValidViewMode( Icons ) ) { return false; } return _iconview->autoArrange(); } void OVersatileView::setShowToolTips( bool b ) // QIconView { if ( !isValidViewMode( Icons ) ) { return; } _iconview->setShowToolTips( b ); } bool OVersatileView::showToolTips() const // QIconView { if ( !isValidViewMode( Icons ) ) { return false; } return _iconview->showToolTips(); } bool OVersatileView::sorting() const // QIconView { if ( !isValidViewMode( Icons ) ) { return false; } return _iconview->sorting(); } bool OVersatileView::sortDirection() const // QIconView { if ( !isValidViewMode( Icons ) ) { return false; } return _iconview->sortDirection(); } void OVersatileView::setItemsMovable( bool b ) // QIconView { if ( !isValidViewMode( Icons ) ) { return; } _iconview->setItemsMovable( b ); } bool OVersatileView::itemsMovable() const // QIconView { if ( !isValidViewMode( Icons ) ) { return false; } return _iconview->itemsMovable(); } void OVersatileView::setWordWrapIconText( bool b ) // QIconView { if ( !isValidViewMode( Icons ) ) { return; } _iconview->setWordWrapIconText( b ); } bool OVersatileView::wordWrapIconText() const // QIconView { if ( !isValidViewMode( Icons ) ) { return false; } return _iconview->wordWrapIconText(); } void OVersatileView::arrangeItemsInGrid( const QSize &grid, bool update ) // QIconView { if ( !isValidViewMode( Icons ) ) { return; } _iconview->arrangeItemsInGrid( grid, update ); } void OVersatileView::arrangeItemsInGrid( bool update ) // QIconView { if ( !isValidViewMode( Icons ) ) { return; } _iconview->arrangeItemsInGrid( update ); } void OVersatileView::updateContents() // QIconView { if ( !isValidViewMode( Icons ) ) { return; } _iconview->updateContents(); } //==============================================================================================// // OVersatileView Case II - QListView / QIconView common API //==============================================================================================// void OVersatileView::clear() { _iconview->clear(); _listview->clear(); } void OVersatileView::setFont( const QFont & font ) { _iconview->setFont( font ); _listview->setFont( font ); } void OVersatileView::setPalette( const QPalette & palette ) { _iconview->setPalette( palette ); _listview->setPalette( palette ); } void OVersatileView::takeItem( OVersatileViewItem * item ) { _iconview->takeItem( item ); _listview->takeItem( item ); } void OVersatileView::setSelectionMode( SelectionMode mode ) { _iconview->setSelectionMode( (QIconView::SelectionMode) mode ); _listview->setSelectionMode( (QListView::SelectionMode) mode ); } OVersatileView::SelectionMode OVersatileView::selectionMode() const { return (OVersatileView::SelectionMode) _iconview->selectionMode(); } void OVersatileView::selectAll( bool select ) { _iconview->selectAll( select ); } void OVersatileView::clearSelection() { _iconview->clearSelection(); _listview->clearSelection(); } void OVersatileView::invertSelection() { _iconview->invertSelection(); _listview->invertSelection(); } void OVersatileView::ensureItemVisible( const OVersatileViewItem * item ) { _iconview->ensureItemVisible( const_cast( item ) ); _listview->ensureItemVisible( item ); } void OVersatileView::repaintItem( const OVersatileViewItem * item ) const { _iconview->repaintItem( const_cast( item ) ); _listview->repaintItem( item ); } void OVersatileView::setCurrentItem( OVersatileViewItem * item ) { _iconview->setCurrentItem( item ); _listview->setCurrentItem( item ); } OVersatileViewItem * OVersatileView::currentItem() const { return static_cast( _listview->currentItem() ); } // 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 //==============================================================================================// // OVersatileView Case III - APIs which differ slightly //==============================================================================================// /* void OVersatileView::insertItem( OVersatileViewItem * ) // QListView void OVersatileView::insertItem( OVersatileViewItem *item, OVersatileViewItem *after = 0L ) // QIconView void OVersatileView::setSelected( OVersatileViewItem *, bool ) // QListView void OVersatileView::setSelected( OVersatileViewItem *item, bool s, bool cb = FALSE ) // QIconView void OVersatileView::setSorting( int column, bool increasing = TRUE ) // QListView void OVersatileView::setSorting( bool sort, bool ascending = TRUE ) // QIconView void OVersatileView::sort() // #### make in next major release // QListView void OVersatileView::sort( bool ascending = TRUE ) // QIconView */