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)21 PictView::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)33 void PictView::SetModel(PreviewImagesModel * pm)
34 {
35 	this->setModel(pm);
36 }
37 
SetIconSize(const QSize & s)38 void PictView::SetIconSize(const QSize & s)
39 {
40 	this->setIconSize(s);
41 }
42 
SetGridSize(const QSize & s)43 void PictView::SetGridSize(const QSize & s)
44 {
45 	this->setGridSize(s);
46 }
47 
SelectionModel() const48 QItemSelectionModel * PictView::SelectionModel() const
49 {
50 	return this->selectionModel();
51 }
52 
startDrag(Qt::DropActions supportedActions)53 void 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