1 #include "OB_ListView.h"
4 #include "OB_ListItem.h"
6 #include <SUIT_DataObject.h>
8 #include <qdragobject.h>
10 OB_ListView::OB_ListView( QWidget* parent, const char* name, WFlags f )
11 : QtxListView( parent, name, f ),
16 OB_ListView::OB_ListView( const int state, QWidget* parent, const char* name, WFlags f )
17 : QtxListView( state, parent, name, f ),
22 OB_ListView::~OB_ListView()
27 OB_Filter* OB_ListView::filter() const
32 void OB_ListView::setFilter( OB_Filter* f )
41 bool OB_ListView::isOk( QListViewItem* item ) const
44 SUIT_DataObject* obj = dataObject( item );
45 if ( obj && filter() )
46 ok = filter()->isOk( obj );
50 int OB_ListView::addColumn( const QString& label, int width )
52 int res = QListView::addColumn( label, width );
59 int OB_ListView::addColumn( const QIconSet& iconset, const QString& label, int width )
61 int res = QListView::addColumn( iconset, label, width );
68 QDragObject* OB_ListView::dragObject()
72 for ( QListViewItemIterator it( this ); it.current(); ++it )
73 if ( it.current()->isSelected() )
74 myItems.append( it.current() );
76 return new QTextDrag( "", this );
79 void OB_ListView::dragEnterEvent( QDragEnterEvent* e )
84 void OB_ListView::dragMoveEvent( QDragMoveEvent* e )
86 QListViewItem* item = dropItem( e );
88 if ( isDropAccepted( item ) )
90 setCurrentItem( item );
97 void OB_ListView::dropEvent( QDropEvent* e )
99 QListViewItem* item = dropItem( e );
100 if ( isDropAccepted( item ) )
103 emit dropped( myItems, item, e->action() );
108 QListViewItem* OB_ListView::dropItem( QDropEvent* e ) const
110 QListViewItem* item = 0;
112 item = itemAt( QPoint( e->pos().x() - viewport()->x(), e->pos().y() - viewport()->y() ) );
117 SUIT_DataObject* OB_ListView::dataObject( QListViewItem* item ) const
122 SUIT_DataObject* obj = 0;
124 if ( dynamic_cast<OB_ListItem*>( item ) )
125 obj = dynamic_cast<OB_ListItem*>( item )->dataObject();
126 else if ( dynamic_cast<OB_CheckListItem*>( item ) )
127 obj = dynamic_cast<OB_CheckListItem*>( item )->dataObject();
132 bool OB_ListView::isDropAccepted( QListViewItem* item ) const
136 for ( QPtrListIterator<QListViewItem> it( myItems ); it.current() && res; ++it )
137 res = res && isDropAccepted( it.current(), item );
142 bool OB_ListView::isDropAccepted( QListViewItem* drag, QListViewItem* drop ) const
144 SUIT_DataObject* dragObj = dataObject( drag );
145 SUIT_DataObject* dropObj = dataObject( drop );
147 if ( !dragObj || !dropObj )
150 return dropObj->isDropAccepted( dragObj );
153 void OB_ListView::updateHeader()