defuze.me  Client
droplocation.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 "droplocation.hpp"
00012 #include "modulefactory.hpp"
00013 #include "gridelement.hpp"
00014 #include "tab.hpp"
00015 #include <QDragEnterEvent>
00016 #include <QDragLeaveEvent>
00017 #include <QDropEvent>
00018 
00019 using namespace Gui;
00020 
00021 DropLocation::DropLocation(Tab *tab, QPoint targetPosition, bool newColumn, QWidget *parent) :
00022     QWidget(parent), tab(tab), targetPosition(targetPosition), newColumn(newColumn)
00023 {
00024     setupUi(this);
00025     setAcceptDrops(true);
00026 }
00027 
00028 void DropLocation::dragEnterEvent(QDragEnterEvent *event)
00029 {
00030     if (event->mimeData()->hasFormat("application/x-defuzeme-gridelement"))
00031     {
00032         setStyleSheet("background-color:rgb(230, 255, 108);border-radius:2px;");
00033         event->accept();
00034     }
00035     else
00036         event->ignore();
00037 }
00038 
00039 void DropLocation::dragLeaveEvent(QDragLeaveEvent *event)
00040 {
00041     setStyleSheet("background-color:rgba(200,200,200, 128);border-radius:2px;");
00042     event->accept();
00043 }
00044 
00045 void DropLocation::dropEvent(QDropEvent *event)
00046 {
00047     if (event->mimeData()->hasFormat("application/x-defuzeme-gridelement"))
00048     {
00049         QString moduleId = QString::fromUtf8(event->mimeData()->data("application/x-defuzeme-gridelement"));
00050         Module* module = ModuleFactory::getModule(moduleId);
00051         GridElement *gridElement = tab->getGridElementByModule(module);
00052         tab->insertGridElement(gridElement, targetPosition, newColumn);
00053         event->accept();
00054         delete this;
00055     }
00056 }
00057 
00058 void DropLocation::changeEvent(QEvent *e)
00059 {
00060     QWidget::changeEvent(e);
00061     switch (e->type()) {
00062     case QEvent::LanguageChange:
00063         retranslateUi(this);
00064         break;
00065     default:
00066         break;
00067     }
00068 }