home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2002 November / SGI Freeware 2002 November - Disc 3.iso / dist / fw_qt3.idb / usr / freeware / Qt / examples / demo / dnd / iconview.cpp.z / iconview.cpp
Encoding:
C/C++ Source or Header  |  2002-04-08  |  1.0 KB  |  44 lines

  1. #include <iostream.h>
  2. #include <qdragobject.h>
  3.  
  4. #include "dnd.h"
  5. #include "iconview.h"
  6.  
  7.  
  8. IconView::IconView( QWidget* parent, const char* name )
  9.     : QIconView( parent, name )
  10. {
  11.     connect( this, SIGNAL(dropped(QDropEvent*, const QValueList<QIconDragItem>&)),
  12.              SLOT(slotNewItem(QDropEvent*, const QValueList<QIconDragItem>&)));
  13. }
  14.  
  15. IconView::~IconView()
  16. {
  17.  
  18. }
  19.  
  20.  
  21. QDragObject *IconView::dragObject()
  22. {
  23.     if ( !currentItem() ) return 0;
  24.  
  25.     QTextDrag * drg = new QTextDrag( ((IconViewItem*)currentItem())->tag(), this );
  26.     drg->setSubtype("dragdemotag");
  27.     drg->setPixmap( *currentItem()->pixmap() );
  28.  
  29.     return drg;
  30. }
  31.  
  32. void IconView::slotNewItem( QDropEvent *e, const QValueList<QIconDragItem>& )
  33. {
  34.     QString tag;
  35.     if ( !e->provides( "text/dragdemotag" ) ) return;
  36.  
  37.     if ( QTextDrag::decode( e, tag ) ) {
  38.         IconItem item = ((DnDDemo*) parentWidget())->findItem( tag );
  39.         IconViewItem *iitem = new IconViewItem( this, item.name(), *item.pixmap(), tag );
  40.         iitem->setRenameEnabled( TRUE );
  41.     }
  42.     e->acceptAction();
  43. }
  44.