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())
51 event.setFavourite(false);
53 event.setFavourite(true);
54 event.update("favourite");
55 qDebug() << " FAVOURITE [" << qVariantValue<QString>(aIndex.data()) << "] -> " << event.isFavourite();
56 // since the Favourite icon has changed, update TreeViews accordingly
57 // all TreeViews have to listen on this signal
58 emit(eventHasChanged(event.id()));
62 case Delegate::AlarmControlOn:
63 case Delegate::AlarmControlOff:
65 // handle Alarm Control clicked
66 Event event = Event::getById(aIndex.data().toInt(),1);
69 event.setHasAlarm(false); // update DB
71 // remove alarm from the 'alarmd' alrms list
73 alarm.deleteAlarm(event.id());
74 // TODO: test if removing was successfull
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 event.update("alarm");
88 qDebug() << " ALARM [" << qVariantValue<QString>(aIndex.data()) << "] -> " << event.hasAlarm();
89 // since the Alarm icon has changed, update TreeView accordingly
90 // all TreeViews have to listen on this signal
91 emit(eventHasChanged(event.id()));
95 case Delegate::MapControl:
97 // handle Alarm Control clicked
98 qDebug() << "MAP CLICKED: " << qVariantValue<QString>(aIndex.data());
99 emit(requestForMap(aIndex));
103 case Delegate::WarningControlOff:
104 case Delegate::WarningControlOn:
107 qDebug() << "WARNING CLICKED: " << qVariantValue<QString>(aIndex.data());
109 emit(requestForWarning(aIndex));
113 case Delegate::ControlNone:
116 // item was clicked, but not a control
124 void TreeView::handleItemClicked(const QModelIndex &index)
126 if(!index.parent().isValid()) // time-group
128 if(isExpanded(index))
129 setExpanded(index, false);
131 setExpanded(index, true);