defuze.me
Client
|
00001 /************************************************************************** 00002 ** defuze.me Epitech Innovative Project 00003 ** 00004 ** Copyright 2010-2012 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 "liststreeview.hpp" 00012 #include "listsplugin.hpp" 00013 00014 using namespace Lists; 00015 00016 ListsTreeView::ListsTreeView(QWidget *parent) : 00017 QTreeView(parent) 00018 { 00019 } 00020 00021 void ListsTreeView::dragEnterEvent(QDragEnterEvent *event) 00022 { 00023 if (event->mimeData()->hasFormat("application/x-defuzeme-audiotrack") 00024 || event->mimeData()->hasFormat("application/x-defuzeme-artist") 00025 || event->mimeData()->hasFormat("application/x-defuzeme-genre") 00026 || event->mimeData()->hasFormat("application/x-defuzeme-album")) 00027 event->accept(); 00028 else 00029 event->ignore(); 00030 00031 } 00032 00033 void ListsTreeView::dragMoveEvent(QDragMoveEvent *event) 00034 { 00035 QModelIndex idx = indexAt(event->pos()); 00036 00037 if (!idx.isValid()) 00038 { 00039 event->ignore(); 00040 return; 00041 } 00042 ListsItem *item = static_cast<ListsItem*>(idx.internalPointer()); 00043 00044 foreach (QString format, event->mimeData()->formats()) 00045 { 00046 if (lists->getModel()->getDropTypesForItem(item).contains(format, Qt::CaseInsensitive)) 00047 { 00048 event->accept(); 00049 return; 00050 } 00051 } 00052 event->ignore(); 00053 } 00054 00055 void ListsTreeView::dropEvent(QDropEvent *event) 00056 { 00057 lists->getModel()->lastDropIndex = indexAt(event->pos()); 00058 QTreeView::dropEvent(event); 00059 } 00060 00061 void ListsTreeView::keyReleaseEvent(QKeyEvent *event) 00062 { 00063 if (event->matches(QKeySequence::Delete) /*|| (event->key() == Qt::Key_Backspace)*/) 00064 { 00065 emit deleteElements(); 00066 } 00067 else 00068 QWidget::keyReleaseEvent(event); 00069 } 00070 00071 void ListsTreeView::setListsPlugin(ListsPlugin *lists) 00072 { 00073 this->lists = lists; 00074 }