6 #include "eventmodel.h"
14 TreeView::TreeView(QWidget *aParent)
19 void TreeView::mouseReleaseEvent(QMouseEvent *aEvent)
21 QModelIndex index = currentIndex();
22 QPoint point = aEvent->pos();
24 // test whether we have handled the mouse event
25 if(!testForControlClicked(index,point))
27 // pass the event to the Base class, so item clicks/events are handled correctly
28 QTreeView::mouseReleaseEvent(aEvent);
32 // returns bool if some Control was clicked
33 bool TreeView::testForControlClicked(const QModelIndex &aIndex, const QPoint &aPoint)
40 QRect rect = visualRect(aIndex); // visual QRect of selected/clicked item in the list
41 Delegate *delegate = static_cast<Delegate*>(itemDelegate(aIndex));
42 switch(delegate->whichControlClicked(aIndex,aPoint))
44 case Delegate::FavouriteControlOn:
45 case Delegate::FavouriteControlOff:
47 // handle Favourite Control clicked
48 Event event = Event::getById(aIndex.data().toInt(),1);
49 if(event.isFavourite())
51 static_cast<Event*>(aIndex.internalPointer())->setFavourite(false); // list of events
52 event.setFavourite(false); // update DB
56 static_cast<Event*>(aIndex.internalPointer())->setFavourite(true); // list of events
57 event.setFavourite(true);
59 qDebug() << " FAVOURITE [" << qVariantValue<QString>(aIndex.data()) << "] -> " << event.isFavourite();
60 event.update("favourite");
61 // since the Favourite icon has changed, update TreeView accordingly
62 static_cast<EventModel*>(model())->emitDataChangedSignal(aIndex,aIndex);
66 case Delegate::AlarmControlOn:
67 case Delegate::AlarmControlOff:
69 // handle Alarm Control clicked
70 Event event = Event::getById(aIndex.data().toInt(),1);
73 static_cast<Event*>(aIndex.internalPointer())->setHasAlarm(false); // list of events
74 event.setHasAlarm(false); // update DB
76 // remove alarm from the 'alarmd' alrms list
78 alarm.deleteAlarm(event.id());
79 // TODO: test if removing was successfull
84 static_cast<Event*>(aIndex.internalPointer())->setHasAlarm(true); // list of events
85 event.setHasAlarm(true);
87 // add alarm to the 'alarmd'
89 int cookie = alarm.addAlarm(event.id(),QDateTime::currentDateTime().addSecs(10));
90 qDebug() << "cookie: " << cookie;
93 qDebug() << " ALARM [" << qVariantValue<QString>(aIndex.data()) << "] -> " << event.hasAlarm();
94 event.update("alarm");
95 // since the Alarm icon has changed, update TreeView accordingly
96 static_cast<EventModel*>(model())->emitDataChangedSignal(aIndex,aIndex);
100 case Delegate::MapControl:
102 // handle Alarm Control clicked
103 qDebug() << "MAP CLICKED: " << qVariantValue<QString>(aIndex.data());
104 emit(requestForMap(aIndex));
108 case Delegate::WarningControlOn:
109 case Delegate::WarningControlOff:
115 case Delegate::ControlNone:
118 // item was clicked, but not a control