6 #include "eventmodel.h"
14 TreeView::TreeView(QWidget *aParent)
17 connect(this, SIGNAL(clicked(QModelIndex)), SLOT(handleItemClicked(QModelIndex)));
20 void TreeView::mouseReleaseEvent(QMouseEvent *aEvent)
22 QModelIndex index = currentIndex();
23 QPoint point = aEvent->pos();
25 // test whether we have handled the mouse event
26 if(!testForControlClicked(index,point))
28 // pass the event to the Base class, so item clicks/events are handled correctly
29 QTreeView::mouseReleaseEvent(aEvent);
33 // returns bool if some Control was clicked
34 bool TreeView::testForControlClicked(const QModelIndex &aIndex, const QPoint &aPoint)
41 QRect rect = visualRect(aIndex); // visual QRect of selected/clicked item in the list
42 Delegate *delegate = static_cast<Delegate*>(itemDelegate(aIndex));
43 switch(delegate->whichControlClicked(aIndex,aPoint))
45 case Delegate::FavouriteControlOn:
46 case Delegate::FavouriteControlOff:
48 // handle Favourite Control clicked
49 Event event = Event::getById(aIndex.data().toInt(),1);
50 if(event.isFavourite())
52 static_cast<Event*>(aIndex.internalPointer())->setFavourite(false); // list of events
53 event.setFavourite(false); // update DB
57 static_cast<Event*>(aIndex.internalPointer())->setFavourite(true); // list of events
58 event.setFavourite(true);
60 qDebug() << " FAVOURITE [" << qVariantValue<QString>(aIndex.data()) << "] -> " << event.isFavourite();
61 event.update("favourite");
62 // since the Favourite icon has changed, update TreeView accordingly
63 static_cast<EventModel*>(model())->emitDataChangedSignal(aIndex,aIndex);
67 case Delegate::AlarmControlOn:
68 case Delegate::AlarmControlOff:
70 // handle Alarm Control clicked
71 Event event = Event::getById(aIndex.data().toInt(),1);
74 static_cast<Event*>(aIndex.internalPointer())->setHasAlarm(false); // list of events
75 event.setHasAlarm(false); // update DB
77 // remove alarm from the 'alarmd' alrms list
79 alarm.deleteAlarm(event.id());
80 // TODO: test if removing was successfull
85 static_cast<Event*>(aIndex.internalPointer())->setHasAlarm(true); // list of events
86 event.setHasAlarm(true);
88 // add alarm to the 'alarmd'
90 int cookie = alarm.addAlarm(event.id(),QDateTime::currentDateTime().addSecs(10));
91 qDebug() << "cookie: " << cookie;
94 qDebug() << " ALARM [" << qVariantValue<QString>(aIndex.data()) << "] -> " << event.hasAlarm();
95 event.update("alarm");
96 // since the Alarm icon has changed, update TreeView accordingly
97 static_cast<EventModel*>(model())->emitDataChangedSignal(aIndex,aIndex);
101 case Delegate::MapControl:
103 // handle Alarm Control clicked
104 qDebug() << "MAP CLICKED: " << qVariantValue<QString>(aIndex.data());
105 emit(requestForMap(aIndex));
109 case Delegate::WarningControlOn:
110 case Delegate::WarningControlOff:
116 case Delegate::ControlNone:
119 // item was clicked, but not a control
127 void TreeView::handleItemClicked(const QModelIndex &index)
129 if(!index.parent().isValid()) // time-group
131 if(isExpanded(index))
132 setExpanded(index, false);
134 setExpanded(index, true);