1 // 2 // C++ Implementation: pictview 3 // 4 // Description: 5 // 6 // 7 // Author: Pierre Marchand <pierremarc@oep-h.com>, (C) 2009 8 // 9 // Copyright: See COPYING file that comes with this distribution 10 // 11 // 12 13 #include "pictview.h" 14 #include "previewimage.h" 15 16 #include <QMimeData> 17 #include <QDrag> 18 19 #include <QDebug> 20 PictView(QWidget * parent)21PictView::PictView(QWidget * parent ) 22 :QListView(parent) 23 { 24 setViewMode ( QListView::IconMode ); 25 setUniformItemSizes ( true ); 26 setContextMenuPolicy ( Qt::CustomContextMenu ); 27 setSelectionMode ( QAbstractItemView::SingleSelection ); 28 setMovement ( QListView::Static); 29 setResizeMode ( QListView::Adjust ); 30 setSelectionRectVisible( false ); 31 } 32 SetModel(PreviewImagesModel * pm)33void PictView::SetModel(PreviewImagesModel * pm) 34 { 35 this->setModel(pm); 36 } 37 SetIconSize(const QSize & s)38void PictView::SetIconSize(const QSize & s) 39 { 40 this->setIconSize(s); 41 } 42 SetGridSize(const QSize & s)43void PictView::SetGridSize(const QSize & s) 44 { 45 this->setGridSize(s); 46 } 47 SelectionModel() const48QItemSelectionModel * PictView::SelectionModel() const 49 { 50 return this->selectionModel(); 51 } 52 startDrag(Qt::DropActions supportedActions)53void PictView::startDrag(Qt::DropActions supportedActions) 54 { 55 QModelIndex mdx(currentIndex()); 56 QModelIndexList mil; 57 if(mdx.isValid()) 58 { 59 mil << mdx; 60 PreviewImagesModel * pim(static_cast<PreviewImagesModel*>(model())); 61 QMimeData *md = pim->mimeData(mil); 62 QDrag *drag = new QDrag(this); 63 drag->setMimeData(md); 64 QIcon icn(pim->data(mdx, Qt::DecorationRole).value<QIcon>()); 65 if(!icn.isNull()) 66 { 67 drag->setPixmap(icn.pixmap(64,64)); 68 } 69 drag->exec(Qt::CopyAction); 70 } 71 72 } 73 74