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