defuze.me
Client
|
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 }