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