6 #include "eventmodel.h"
10 TreeView::TreeView(QWidget *aParent)
15 void TreeView::mouseReleaseEvent(QMouseEvent *aEvent)
17 QModelIndex index = currentIndex();
18 QPoint point = aEvent->pos();
20 testForControlClicked(index,point);
22 // pass the event to the Base class, so item clicks/events are handled correctly
23 QTreeView::mouseReleaseEvent(aEvent);
26 void TreeView::testForControlClicked(const QModelIndex &aIndex, const QPoint &aPoint)
31 QRect rect = visualRect(aIndex); // visual QRect of selected/clicked item in the list
32 Delegate *delegate = static_cast<Delegate*>(itemDelegate(aIndex));
33 switch(delegate->whichControlClicked(aIndex,aPoint))
35 case Delegate::FavouriteControlOn:
36 case Delegate::FavouriteControlOff:
38 // handle Favourite Control clicked
39 Event event = Event::getById(aIndex.data().toInt(),1);
40 if(event.isFavourite())
42 static_cast<Event*>(aIndex.internalPointer())->setFavourite(false); // list of events
43 event.setFavourite(false); // update DB
47 static_cast<Event*>(aIndex.internalPointer())->setFavourite(true); // list of events
48 event.setFavourite(true);
50 qDebug() << " FAVOURITE [" << qVariantValue<QString>(aIndex.data()) << "] -> " << event.isFavourite();
51 event.update("favourite");
52 // since the Favourite icon has changed, update TreeView accordingly
53 static_cast<EventModel*>(model())->emitDataChangedSignal(aIndex,aIndex);
56 case Delegate::AlarmControlOn:
57 case Delegate::AlarmControlOff:
59 // handle Alarm Control clicked
60 Event event = Event::getById(aIndex.data().toInt(),1);
63 static_cast<Event*>(aIndex.internalPointer())->setHasAlarm(false); // list of events
64 event.setHasAlarm(false); // update DB
68 static_cast<Event*>(aIndex.internalPointer())->setHasAlarm(true); // list of events
69 event.setHasAlarm(true);
71 qDebug() << " ALARM [" << qVariantValue<QString>(aIndex.data()) << "] -> " << event.hasAlarm();
72 event.update("alarm");
73 // since the Alarm icon has changed, update TreeView accordingly
74 static_cast<EventModel*>(model())->emitDataChangedSignal(aIndex,aIndex);
78 case Delegate::MapControl:
80 // handle Alarm Control clicked
81 qDebug() << "MAP CLICKED: " << qVariantValue<QString>(aIndex.data());
82 emit(requestForMap(aIndex));
85 case Delegate::ControlNone:
88 // item was clicked, but not a control