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 // update EVENT_CONFLICT table
57 event.updateConflicts();
58 // since the Favourite icon has changed, update TreeViews accordingly
59 // all TreeViews have to listen on this signal
60 emit(eventHasChanged(event.id()));
64 case Delegate::AlarmControlOn:
65 case Delegate::AlarmControlOff:
67 // handle Alarm Control clicked
68 Event event = Event::getById(aIndex.data().toInt(),1);
71 event.setHasAlarm(false); // update DB
73 // remove alarm from the 'alarmd' alrms list
75 alarm.deleteAlarm(event.id());
76 // TODO: test if removing was successfull
81 event.setHasAlarm(true);
83 // add alarm to the 'alarmd'
85 int cookie = alarm.addAlarm(event.id(),QDateTime::currentDateTime().addSecs(10));
86 qDebug() << "cookie: " << cookie;
89 event.update("alarm");
90 qDebug() << " ALARM [" << qVariantValue<QString>(aIndex.data()) << "] -> " << event.hasAlarm();
91 // since the Alarm icon has changed, update TreeView accordingly
92 // all TreeViews have to listen on this signal
93 emit(eventHasChanged(event.id()));
97 case Delegate::MapControl:
99 // handle Alarm Control clicked
100 qDebug() << "MAP CLICKED: " << qVariantValue<QString>(aIndex.data());
101 emit(requestForMap(aIndex));
105 case Delegate::WarningControl:
108 qDebug() << "WARNING CLICKED: " << qVariantValue<QString>(aIndex.data());
109 emit(requestForConflicts(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);
135 void TreeView::setAllExpanded(bool aExpanded)
137 for(int i=0; i<model()->rowCount(QModelIndex()); i++)
139 setExpanded(model()->index(i,0,QModelIndex()),aExpanded);