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 testForControlClicked(index,point);
26 // pass the event to the Base class, so item clicks/events are handled correctly
27 QTreeView::mouseReleaseEvent(aEvent);
30 void TreeView::testForControlClicked(const QModelIndex &aIndex, const QPoint &aPoint)
35 QRect rect = visualRect(aIndex); // visual QRect of selected/clicked item in the list
36 Delegate *delegate = static_cast<Delegate*>(itemDelegate(aIndex));
37 switch(delegate->whichControlClicked(aIndex,aPoint))
39 case Delegate::FavouriteControlOn:
40 case Delegate::FavouriteControlOff:
42 // handle Favourite Control clicked
43 Event event = Event::getById(aIndex.data().toInt(),1);
44 if(event.isFavourite())
46 static_cast<Event*>(aIndex.internalPointer())->setFavourite(false); // list of events
47 event.setFavourite(false); // update DB
51 static_cast<Event*>(aIndex.internalPointer())->setFavourite(true); // list of events
52 event.setFavourite(true);
54 qDebug() << " FAVOURITE [" << qVariantValue<QString>(aIndex.data()) << "] -> " << event.isFavourite();
55 event.update("favourite");
56 // since the Favourite icon has changed, update TreeView accordingly
57 static_cast<EventModel*>(model())->emitDataChangedSignal(aIndex,aIndex);
60 case Delegate::AlarmControlOn:
61 case Delegate::AlarmControlOff:
63 // handle Alarm Control clicked
64 Event event = Event::getById(aIndex.data().toInt(),1);
67 static_cast<Event*>(aIndex.internalPointer())->setHasAlarm(false); // list of events
68 event.setHasAlarm(false); // update DB
70 // remove alarm from the 'alarmd' alrms list
72 alarm.deleteAlarm(event.id());
73 // TODO: test if removing was successfull
78 static_cast<Event*>(aIndex.internalPointer())->setHasAlarm(true); // list of events
79 event.setHasAlarm(true);
81 // add alarm to the 'alarmd'
83 int cookie = alarm.addAlarm(event.id(),QDateTime::currentDateTime().addSecs(10));
84 qDebug() << "cookie: " << cookie;
87 qDebug() << " ALARM [" << qVariantValue<QString>(aIndex.data()) << "] -> " << event.hasAlarm();
88 event.update("alarm");
89 // since the Alarm icon has changed, update TreeView accordingly
90 static_cast<EventModel*>(model())->emitDataChangedSignal(aIndex,aIndex);
94 case Delegate::MapControl:
96 // handle Alarm Control clicked
97 qDebug() << "MAP CLICKED: " << qVariantValue<QString>(aIndex.data());
98 emit(requestForMap(aIndex));
101 case Delegate::ControlNone:
104 // item was clicked, but not a control