annotate widgets/GenericItemList.cpp @ 282:d9319859a4cf tip

(none)
author benoitrigolleau
date Fri, 31 Oct 2008 11:00:24 +0000
parents 894b45c9b787
children
rev   line source
benoitrigolleau@56 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
benoitrigolleau@56 2
benoitrigolleau@56 3 /*
benoitrigolleau@56 4 Sound Access
benoitrigolleau@56 5 EASAIER client application.
benoitrigolleau@56 6 Silogic 2007. Benoit Rigolleau.
benoitrigolleau@56 7
benoitrigolleau@56 8 This program is free software; you can redistribute it and/or
benoitrigolleau@56 9 modify it under the terms of the GNU General Public License as
benoitrigolleau@56 10 published by the Free Software Foundation; either version 2 of the
benoitrigolleau@56 11 License, or (at your option) any later version. See the file
benoitrigolleau@56 12 COPYING included with this distribution for more information.
benoitrigolleau@56 13 */
benoitrigolleau@56 14
benoitrigolleau@56 15
benoitrigolleau@56 16 #include "GenericItemList.h"
benoitrigolleau@56 17
benoitrigolleau@56 18 #include <QMouseEvent>
benoitrigolleau@56 19 #include <QDragEnterEvent>
benoitrigolleau@56 20 #include <QDragMoveEvent>
benoitrigolleau@56 21 #include <QMimeData>
benoitrigolleau@56 22 #include <QObject>
benoitrigolleau@56 23 #include <iostream>
benoitrigolleau@56 24 #include <QPixmap>
benoitrigolleau@56 25 #include <QApplication>
benoitrigolleau@56 26
benoitrigolleau@56 27 GenericItemList::GenericItemList(QWidget *parent): QFrame(parent){
benoitrigolleau@56 28 setAcceptDrops(true);
benoitrigolleau@56 29 m_clicked=false;
benoitrigolleau@59 30 m_acceptDrag = true;
benoitrigolleau@56 31 //this->setFocusPolicy(Qt::ClickFocus);
benoitrigolleau@56 32 }
benoitrigolleau@56 33
benoitrigolleau@133 34 GenericItemList::~GenericItemList(){
benoitrigolleau@133 35
benoitrigolleau@133 36 }
benoitrigolleau@133 37
benoitrigolleau@56 38 void GenericItemList::setData(QVariant &data){}
benoitrigolleau@56 39
benoitrigolleau@56 40
benoitrigolleau@56 41 void GenericItemList::setIndex(int index){
benoitrigolleau@56 42 m_index = index;
benoitrigolleau@56 43 }
benoitrigolleau@56 44
benoitrigolleau@56 45 void GenericItemList::configAction(){
benoitrigolleau@56 46
benoitrigolleau@56 47 }
benoitrigolleau@56 48
benoitrigolleau@59 49 void GenericItemList::setAcceptDrag(bool status){
benoitrigolleau@59 50 m_acceptDrag = status;
benoitrigolleau@59 51 }
benoitrigolleau@59 52
benoitrigolleau@59 53 /*********************SLOT*********************/
benoitrigolleau@56 54
benoitrigolleau@56 55 void GenericItemList::mousePressEvent(QMouseEvent *evt)
benoitrigolleau@56 56 {
benoitrigolleau@56 57 if(evt->button()==Qt::LeftButton){
benoitrigolleau@56 58 emit GenericItemList::selected(m_index);
benoitrigolleau@56 59 m_clicked=true;
benoitrigolleau@56 60 m_startPos = evt->pos();
benoitrigolleau@56 61 }
benoitrigolleau@56 62 QFrame::mousePressEvent(evt);
benoitrigolleau@56 63 }
benoitrigolleau@56 64
benoitrigolleau@56 65 void GenericItemList::mouseReleaseEvent(QMouseEvent *evt){
benoitrigolleau@56 66 if(evt->button()==Qt::LeftButton){
benoitrigolleau@56 67 m_clicked=false;
benoitrigolleau@56 68 }
benoitrigolleau@56 69 }
benoitrigolleau@56 70
benoitrigolleau@56 71 void GenericItemList::mouseDoubleClickEvent(QMouseEvent *evt){
benoitrigolleau@56 72 emit GenericItemList::doubleClicked();
benoitrigolleau@56 73 }
benoitrigolleau@56 74
benoitrigolleau@56 75 void GenericItemList::mouseMoveEvent(QMouseEvent *evt)
benoitrigolleau@56 76 {
benoitrigolleau@56 77 if(m_clicked){
benoitrigolleau@56 78 int distance = (evt->pos() - m_startPos).manhattanLength();
benoitrigolleau@59 79 if(distance>=QApplication::startDragDistance() && m_acceptDrag){
benoitrigolleau@56 80 startDrag();
benoitrigolleau@56 81 }
benoitrigolleau@56 82 }
benoitrigolleau@56 83 QFrame::mouseMoveEvent(evt);
benoitrigolleau@56 84 }
benoitrigolleau@56 85
benoitrigolleau@56 86 void GenericItemList::dragEnterEvent(QDragEnterEvent *evt)
benoitrigolleau@56 87 {
benoitrigolleau@56 88 GenericItemList *source = qobject_cast<GenericItemList *>(evt->source());
benoitrigolleau@97 89 if(source && source!=this && source->parentWidget()==this->parentWidget()){
benoitrigolleau@56 90 evt->setDropAction(Qt::MoveAction);
benoitrigolleau@56 91 evt->accept();
benoitrigolleau@56 92 }
benoitrigolleau@56 93 }
benoitrigolleau@56 94
benoitrigolleau@56 95 void GenericItemList::dragMoveEvent(QDragMoveEvent *evt)
benoitrigolleau@56 96 {
benoitrigolleau@56 97 GenericItemList *source = qobject_cast<GenericItemList *>(evt->source());
benoitrigolleau@97 98 if(source && source!=this && source->parentWidget()==this->parentWidget()){
benoitrigolleau@56 99 evt->setDropAction(Qt::MoveAction);
benoitrigolleau@56 100 evt->accept();
benoitrigolleau@56 101 }
benoitrigolleau@56 102 }
benoitrigolleau@56 103
benoitrigolleau@56 104 void GenericItemList::dropEvent(QDropEvent *evt)
benoitrigolleau@56 105 {
benoitrigolleau@56 106 std::cerr << "dropEvent";
benoitrigolleau@56 107 //std::cerr << " "<<evt->pos().x;
benoitrigolleau@56 108 //std::cerr << " "<<evt->pos().y;
benoitrigolleau@56 109
benoitrigolleau@56 110 GenericItemList *source = qobject_cast<GenericItemList *>(evt->source());
benoitrigolleau@97 111 if (source && source!=this && source->parentWidget()==this->parentWidget()){
benoitrigolleau@56 112 std::cerr << "value = "<< source->m_index<<" "<<m_index <<std::endl;
benoitrigolleau@56 113 emit itemDropped(source->m_index,m_index);
benoitrigolleau@56 114 evt->setDropAction(Qt::MoveAction);
benoitrigolleau@56 115 evt->accept();
benoitrigolleau@56 116 }
benoitrigolleau@56 117 }
benoitrigolleau@56 118
benoitrigolleau@56 119 void GenericItemList::startDrag()
benoitrigolleau@56 120 {
benoitrigolleau@56 121 std::cerr << "startDrag";
benoitrigolleau@56 122
benoitrigolleau@56 123 QMimeData *mineData = new QMimeData;
benoitrigolleau@56 124 mineData->setText(""+m_index);
benoitrigolleau@56 125 QDrag *drag = new QDrag(this);
benoitrigolleau@56 126 drag->setMimeData(mineData);
benoitrigolleau@56 127 drag->setPixmap(QPixmap(":icons/drag.png"));
benoitrigolleau@56 128 if(drag->start(Qt::MoveAction) == Qt::MoveAction){
benoitrigolleau@56 129 std::cerr << "delete ??????";
benoitrigolleau@56 130 }
benoitrigolleau@56 131 }
benoitrigolleau@56 132
benoitrigolleau@56 133
benoitrigolleau@56 134 //void GenericItemList::focusOutEvent ( QFocusEvent *evt ){
benoitrigolleau@56 135 // std::cerr << "focusOutEvent"<<std::endl;
benoitrigolleau@56 136 //}
benoitrigolleau@56 137
benoitrigolleau@56 138 //void GenericItemList::focusInEvent ( QFocusEvent *evt ){
benoitrigolleau@56 139 // std::cerr << "focusInEvent"<<std::endl;
benoitrigolleau@56 140 //}