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::WarningControl:
106 qDebug() << "WARNING CLICKED: " << qVariantValue<QString>(aIndex.data());
108 emit(requestForWarning(aIndex));
112 case Delegate::ControlNone:
115 // item was clicked, but not a control
123 void TreeView::handleItemClicked(const QModelIndex &index)
125 if(!index.parent().isValid()) // time-group
127 if(isExpanded(index))
128 setExpanded(index, false);
130 setExpanded(index, true);
134 void TreeView::setAllExpanded(bool aExpanded)
136 for(int i=0; i<model()->rowCount(QModelIndex()); i++)
138 setExpanded(model()->index(i,0,QModelIndex()),aExpanded);