annotate widgets/GenericItemList.cpp @ 71:a1ce307bab17

update data.pro
author lbajardsilogic
date Wed, 13 Jun 2007 13:44:59 +0000
parents 57c85a9d9b4a
children 486e44e12a5d
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@56 34 void GenericItemList::setData(QVariant &data){}
benoitrigolleau@56 35
benoitrigolleau@56 36
benoitrigolleau@56 37 void GenericItemList::setIndex(int index){
benoitrigolleau@56 38 m_index = index;
benoitrigolleau@56 39 }
benoitrigolleau@56 40
benoitrigolleau@56 41 void GenericItemList::configAction(){
benoitrigolleau@56 42
benoitrigolleau@56 43 }
benoitrigolleau@56 44
benoitrigolleau@59 45 void GenericItemList::setAcceptDrag(bool status){
benoitrigolleau@59 46 m_acceptDrag = status;
benoitrigolleau@59 47 }
benoitrigolleau@59 48
benoitrigolleau@59 49 /*********************SLOT*********************/
benoitrigolleau@56 50
benoitrigolleau@56 51 void GenericItemList::mousePressEvent(QMouseEvent *evt)
benoitrigolleau@56 52 {
benoitrigolleau@56 53 if(evt->button()==Qt::LeftButton){
benoitrigolleau@56 54 emit GenericItemList::selected(m_index);
benoitrigolleau@56 55 m_clicked=true;
benoitrigolleau@56 56 m_startPos = evt->pos();
benoitrigolleau@56 57 }
benoitrigolleau@56 58 QFrame::mousePressEvent(evt);
benoitrigolleau@56 59 }
benoitrigolleau@56 60
benoitrigolleau@56 61 void GenericItemList::mouseReleaseEvent(QMouseEvent *evt){
benoitrigolleau@56 62 if(evt->button()==Qt::LeftButton){
benoitrigolleau@56 63 m_clicked=false;
benoitrigolleau@56 64 }
benoitrigolleau@56 65 }
benoitrigolleau@56 66
benoitrigolleau@56 67 void GenericItemList::mouseDoubleClickEvent(QMouseEvent *evt){
benoitrigolleau@56 68 emit GenericItemList::doubleClicked();
benoitrigolleau@56 69 }
benoitrigolleau@56 70
benoitrigolleau@56 71 void GenericItemList::mouseMoveEvent(QMouseEvent *evt)
benoitrigolleau@56 72 {
benoitrigolleau@56 73 if(m_clicked){
benoitrigolleau@56 74 int distance = (evt->pos() - m_startPos).manhattanLength();
benoitrigolleau@59 75 if(distance>=QApplication::startDragDistance() && m_acceptDrag){
benoitrigolleau@56 76 startDrag();
benoitrigolleau@56 77 }
benoitrigolleau@56 78 }
benoitrigolleau@56 79 QFrame::mouseMoveEvent(evt);
benoitrigolleau@56 80 }
benoitrigolleau@56 81
benoitrigolleau@56 82 void GenericItemList::dragEnterEvent(QDragEnterEvent *evt)
benoitrigolleau@56 83 {
benoitrigolleau@56 84 GenericItemList *source = qobject_cast<GenericItemList *>(evt->source());
benoitrigolleau@56 85 if(source && source!=this){
benoitrigolleau@56 86 evt->setDropAction(Qt::MoveAction);
benoitrigolleau@56 87 evt->accept();
benoitrigolleau@56 88 }
benoitrigolleau@56 89 }
benoitrigolleau@56 90
benoitrigolleau@56 91 void GenericItemList::dragMoveEvent(QDragMoveEvent *evt)
benoitrigolleau@56 92 {
benoitrigolleau@56 93 GenericItemList *source = qobject_cast<GenericItemList *>(evt->source());
benoitrigolleau@56 94 if(source && source!=this){
benoitrigolleau@56 95 evt->setDropAction(Qt::MoveAction);
benoitrigolleau@56 96 evt->accept();
benoitrigolleau@56 97 }
benoitrigolleau@56 98 }
benoitrigolleau@56 99
benoitrigolleau@56 100 void GenericItemList::dropEvent(QDropEvent *evt)
benoitrigolleau@56 101 {
benoitrigolleau@56 102 std::cerr << "dropEvent";
benoitrigolleau@56 103 //std::cerr << " "<<evt->pos().x;
benoitrigolleau@56 104 //std::cerr << " "<<evt->pos().y;
benoitrigolleau@56 105
benoitrigolleau@56 106 GenericItemList *source = qobject_cast<GenericItemList *>(evt->source());
benoitrigolleau@56 107 if (source && source!=this){
benoitrigolleau@56 108 std::cerr << "value = "<< source->m_index<<" "<<m_index <<std::endl;
benoitrigolleau@56 109 emit itemDropped(source->m_index,m_index);
benoitrigolleau@56 110 evt->setDropAction(Qt::MoveAction);
benoitrigolleau@56 111 evt->accept();
benoitrigolleau@56 112 }
benoitrigolleau@56 113 }
benoitrigolleau@56 114
benoitrigolleau@56 115 void GenericItemList::startDrag()
benoitrigolleau@56 116 {
benoitrigolleau@56 117 std::cerr << "startDrag";
benoitrigolleau@56 118
benoitrigolleau@56 119 QMimeData *mineData = new QMimeData;
benoitrigolleau@56 120 mineData->setText(""+m_index);
benoitrigolleau@56 121 QDrag *drag = new QDrag(this);
benoitrigolleau@56 122 drag->setMimeData(mineData);
benoitrigolleau@56 123 drag->setPixmap(QPixmap(":icons/drag.png"));
benoitrigolleau@56 124 if(drag->start(Qt::MoveAction) == Qt::MoveAction){
benoitrigolleau@56 125 std::cerr << "delete ??????";
benoitrigolleau@56 126 }
benoitrigolleau@56 127 }
benoitrigolleau@56 128
benoitrigolleau@56 129
benoitrigolleau@56 130 //void GenericItemList::focusOutEvent ( QFocusEvent *evt ){
benoitrigolleau@56 131 // std::cerr << "focusOutEvent"<<std::endl;
benoitrigolleau@56 132 //}
benoitrigolleau@56 133
benoitrigolleau@56 134 //void GenericItemList::focusInEvent ( QFocusEvent *evt ){
benoitrigolleau@56 135 // std::cerr << "focusInEvent"<<std::endl;
benoitrigolleau@56 136 //}