defuze.me  Client
gridelementmovewidget.cpp
00001 /**************************************************************************
00002 ** defuze.me Epitech Innovative Project
00003 **
00004 ** Copyright 2010-2011
00005 **   Athena Calmettes - Jocelyn De La Rosa - Francois Gaillard
00006 **   Adrien Jarthon - Alexandre Moore - Luc Peres - Arnaud Sellier
00007 **
00008 ** All rights reserved.
00009 **************************************************************************/
00010 
00011 #include "gridelementmovewidget.hpp"
00012 #include "gridelement.hpp"
00013 #include "exception.hpp"
00014 #include "gridwidget.hpp"
00015 #include "tab.hpp"
00016 #include <QMouseEvent>
00017 
00018 using namespace Gui;
00019 
00020 GridElementMoveWidget::GridElementMoveWidget(QWidget *parent) :
00021     QLabel(parent)
00022 {
00023     setAcceptDrops(true);
00024     if (!(gridElement = dynamic_cast<GridElement*>(parent->parentWidget())))
00025         throw_exception(0x01, tr("Move widget parent must be a GridElement."));
00026     tab = gridElement->getGridWidget()->getTab();
00027 }
00028 
00029 void GridElementMoveWidget::mousePressEvent(QMouseEvent *event)
00030 {
00031     if (event->button() == Qt::LeftButton)
00032     {
00033         QDrag *drag = new QDrag(this);
00034         QMimeData *mimeData = new QMimeData;
00035         mimeData->setData("application/x-defuzeme-gridelement", gridElement->getModule()->getUniqId().toUtf8());
00036         drag->setMimeData(mimeData);
00037         drag->setPixmap(QPixmap::grabWidget(gridElement).scaledToWidth(qMin(200, gridElement->width()),
00038                                                                        Qt::SmoothTransformation));
00039         tab->showDropLocations(gridElement->getPosition());
00040         drag->exec();
00041         tab->cleanGrid();
00042     }
00043 }