Mercurial > hg > easaier-soundaccess
view widgets/GenericItemList.cpp @ 59:57c85a9d9b4a
(none)
author | benoitrigolleau |
---|---|
date | Mon, 28 May 2007 08:14:40 +0000 |
parents | 81921835ddf1 |
children | 486e44e12a5d |
line wrap: on
line source
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ /* Sound Access EASAIER client application. Silogic 2007. Benoit Rigolleau. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. See the file COPYING included with this distribution for more information. */ #include "GenericItemList.h" #include <QMouseEvent> #include <QDragEnterEvent> #include <QDragMoveEvent> #include <QMimeData> #include <QObject> #include <iostream> #include <QPixmap> #include <QApplication> GenericItemList::GenericItemList(QWidget *parent): QFrame(parent){ setAcceptDrops(true); m_clicked=false; m_acceptDrag = true; //this->setFocusPolicy(Qt::ClickFocus); } void GenericItemList::setData(QVariant &data){} void GenericItemList::setIndex(int index){ m_index = index; } void GenericItemList::configAction(){ } void GenericItemList::setAcceptDrag(bool status){ m_acceptDrag = status; } /*********************SLOT*********************/ void GenericItemList::mousePressEvent(QMouseEvent *evt) { if(evt->button()==Qt::LeftButton){ emit GenericItemList::selected(m_index); m_clicked=true; m_startPos = evt->pos(); } QFrame::mousePressEvent(evt); } void GenericItemList::mouseReleaseEvent(QMouseEvent *evt){ if(evt->button()==Qt::LeftButton){ m_clicked=false; } } void GenericItemList::mouseDoubleClickEvent(QMouseEvent *evt){ emit GenericItemList::doubleClicked(); } void GenericItemList::mouseMoveEvent(QMouseEvent *evt) { if(m_clicked){ int distance = (evt->pos() - m_startPos).manhattanLength(); if(distance>=QApplication::startDragDistance() && m_acceptDrag){ startDrag(); } } QFrame::mouseMoveEvent(evt); } void GenericItemList::dragEnterEvent(QDragEnterEvent *evt) { GenericItemList *source = qobject_cast<GenericItemList *>(evt->source()); if(source && source!=this){ evt->setDropAction(Qt::MoveAction); evt->accept(); } } void GenericItemList::dragMoveEvent(QDragMoveEvent *evt) { GenericItemList *source = qobject_cast<GenericItemList *>(evt->source()); if(source && source!=this){ evt->setDropAction(Qt::MoveAction); evt->accept(); } } void GenericItemList::dropEvent(QDropEvent *evt) { std::cerr << "dropEvent"; //std::cerr << " "<<evt->pos().x; //std::cerr << " "<<evt->pos().y; GenericItemList *source = qobject_cast<GenericItemList *>(evt->source()); if (source && source!=this){ std::cerr << "value = "<< source->m_index<<" "<<m_index <<std::endl; emit itemDropped(source->m_index,m_index); evt->setDropAction(Qt::MoveAction); evt->accept(); } } void GenericItemList::startDrag() { std::cerr << "startDrag"; QMimeData *mineData = new QMimeData; mineData->setText(""+m_index); QDrag *drag = new QDrag(this); drag->setMimeData(mineData); drag->setPixmap(QPixmap(":icons/drag.png")); if(drag->start(Qt::MoveAction) == Qt::MoveAction){ std::cerr << "delete ??????"; } } //void GenericItemList::focusOutEvent ( QFocusEvent *evt ){ // std::cerr << "focusOutEvent"<<std::endl; //} //void GenericItemList::focusInEvent ( QFocusEvent *evt ){ // std::cerr << "focusInEvent"<<std::endl; //}