qDebug() << " FAVOURITE [" << event.id() << "] -> " << event.isFavourite();
- // since the Favourite icon has changed, update TreeViews accordingly
- // all TreeViews have to listen on this signal
- emit(eventHasChanged(event.id()));
-
// have to emit 'eventHasChanged' signal on all events in conflict
for(int i=0; i<conflicts.count(); i++)
emit(eventHasChanged(conflicts[i].id()));
+
+ // since the Favourite icon has changed, update TreeViews accordingly
+ // all TreeViews have to listen on this signal
+ emit(eventHasChanged(event.id(),true));
}
void EventDialog::alarmClicked()
void favouriteClicked();
void alarmClicked();
signals:
- void eventHasChanged(int aEventId); // emited when user changes some event details, eg. sets it Favourite
+ void eventHasChanged(int aEventId, bool aReloadModel = false); // emited when user changes some event details, eg. sets it Favourite
private:
int mEventId;
};
static_cast<EventModel*>(treeView->model())->loadFavEvents( aDate, aConferenceId );
}
-void FavTabContainer::updateTreeViewModel(int aEventId)
-{
- Q_UNUSED(aEventId);
-
- // requires special handling
- // we need to reload favourites, because some favourite could be deleted
- //static_cast<EventModel*>(favTreeView->model())->updateModel(aEventId);
- int confId = Conference::activeConference();
- QDate startDate = Conference::getById(confId).start();
- QDate endDate = Conference::getById(confId).end();
- dayNavigator->setDates(startDate, endDate);
- updateTreeView( Conference::getById(confId).start() );
-}
-
FavTabContainer(QWidget *aParent);
virtual ~FavTabContainer(){}
-public slots:
- virtual void updateTreeViewModel(int aEventId);
-
protected:
virtual void loadEvents( const QDate &aDate, const int aConferenceId );
};
connect(importScheduleWidget, SIGNAL(scheduleImported(int)), SLOT(scheduleImported(int)));
// event details have changed
- connect(dayTabContainer, SIGNAL(eventHasChanged(int)), SLOT(eventHasChanged(int)));
- connect(favsTabContainer, SIGNAL(eventHasChanged(int)), SLOT(eventHasChanged(int)));
- connect(tracksTabContainer, SIGNAL(eventHasChanged(int)), SLOT(eventHasChanged(int)));
- connect(roomsTabContainer, SIGNAL(eventHasChanged(int)), SLOT(eventHasChanged(int)));
- connect(nowTabContainer, SIGNAL(eventHasChanged(int)), SLOT(eventHasChanged(int)));
- connect(searchTabContainer, SIGNAL(eventHasChanged(int)), SLOT(eventHasChanged(int)));
+ connect(dayTabContainer, SIGNAL(eventHasChanged(int,bool)), SLOT(eventHasChanged(int,bool)));
+ connect(favsTabContainer, SIGNAL(eventHasChanged(int,bool)), SLOT(eventHasChanged(int,bool)));
+ connect(tracksTabContainer, SIGNAL(eventHasChanged(int,bool)), SLOT(eventHasChanged(int,bool)));
+ connect(roomsTabContainer, SIGNAL(eventHasChanged(int,bool)), SLOT(eventHasChanged(int,bool)));
+ connect(nowTabContainer, SIGNAL(eventHasChanged(int,bool)), SLOT(eventHasChanged(int,bool)));
+ connect(searchTabContainer, SIGNAL(eventHasChanged(int,bool)), SLOT(eventHasChanged(int,bool)));
// event conference map button clicked
connect(showMapButton, SIGNAL(clicked()), SLOT(conferenceMapClicked()));
window.exec();
}
-void MainWindow::eventHasChanged(int aEventId)
+void MainWindow::eventHasChanged(int aEventId, bool aReloadModel)
{
dayTabContainer->updateTreeViewModel(aEventId);
- favsTabContainer->updateTreeViewModel(aEventId);
+ favsTabContainer->updateTreeViewModel(aEventId,aReloadModel);
tracksTabContainer->updateTreeViewModel(aEventId);
nowTabContainer->updateTreeViewModel(aEventId);
roomsTabContainer->updateTreeViewModel(aEventId);
dayTabContainer->setDates(startDate, endDate);
tracksTabContainer->setDates(startDate, endDate);
roomsTabContainer->setDates(startDate, endDate);
- //favsTabContainer->setDates(startDate, endDate);
- //searchTabContainer->setDates(startDate, endDate);
+ favsTabContainer->setDates(startDate, endDate);
+ searchTabContainer->setDates(startDate, endDate);
searchTabContainer->searchAgainClicked();
nowTabContainer->updateTreeView(QDate::currentDate());
}
void scheduleImported(int aConfId);
void aboutApp();
void conferenceMapClicked();
- void eventHasChanged(int aEventId);
+ void eventHasChanged(int aEventId, bool aReloadModel);
private:
void fillAndShowConferenceHeader();
void initTabs();
connect(dayNavigator, SIGNAL(dateChanged(const QDate &)), SLOT(updateTreeView(const QDate &)));
- connect(treeView, SIGNAL(eventHasChanged(int)), SIGNAL(eventHasChanged(int)));
+ connect(treeView, SIGNAL(eventHasChanged(int,bool)), SIGNAL(eventHasChanged(int,bool)));
connect(treeView, SIGNAL(clicked(const QModelIndex &)), SLOT(itemClicked(const QModelIndex &)));
connect(treeView, SIGNAL(requestForMap(const QModelIndex &)), SLOT(displayMap(const QModelIndex &)));
connect(treeView, SIGNAL(requestForConflicts(const QModelIndex &)), SLOT(displayConflicts(const QModelIndex &)));
return;
EventDialog dialog(static_cast<Event*>(aIndex.internalPointer())->id(),this);
- connect(&dialog, SIGNAL(eventHasChanged(int)), this, SIGNAL(eventHasChanged(int)));
+ connect(&dialog, SIGNAL(eventHasChanged(int,bool)), this, SIGNAL(eventHasChanged(int,bool)));
dialog.exec();
- disconnect(&dialog, SIGNAL(eventHasChanged(int)), this, SIGNAL(eventHasChanged(int)));
+ disconnect(&dialog, SIGNAL(eventHasChanged(int,bool)), this, SIGNAL(eventHasChanged(int,bool)));
}
void TabContainer::displayMap(const QModelIndex &aIndex)
void TabContainer::displayConflicts(const QModelIndex &aIndex)
{
ConflictsDialog dialog(static_cast<Event*>(aIndex.internalPointer())->id(),this);
- connect(&dialog, SIGNAL(eventHasChanged(int)), this, SIGNAL(eventHasChanged(int)));
+ connect(&dialog, SIGNAL(eventHasChanged(int,bool)), this, SIGNAL(eventHasChanged(int,bool)));
dialog.exec();
- disconnect(&dialog, SIGNAL(eventHasChanged(int)), this, SIGNAL(eventHasChanged(int)));
+ disconnect(&dialog, SIGNAL(eventHasChanged(int,bool)), this, SIGNAL(eventHasChanged(int,bool)));
}
-void TabContainer::updateTreeViewModel(int aEventId)
+void TabContainer::updateTreeViewModel(int aEventId, bool aReloadModel)
{
- static_cast<EventModel*>(treeView->model())->updateModel(aEventId);
+ if(aReloadModel)
+ {
+ // requires special handling
+ // eg. in case of favourities - some favourities may have changed
+ // and so we need to reload them
+ int confId = Conference::activeConference();
+ QDate startDate = Conference::getById(confId).start();
+ QDate endDate = Conference::getById(confId).end();
+ dayNavigator->setDates(startDate, endDate);
+ updateTreeView( Conference::getById(confId).start() );
+ }
+ else
+ {
+ // just update event in the question
+ static_cast<EventModel*>(treeView->model())->updateModel(aEventId);
+ }
}
void TabContainer::setDates(const QDate &aStart, const QDate &aEnd)
};
signals:
- void eventHasChanged(int aEventId);
+ void eventHasChanged(int aEventId, bool aReloadModel);
public slots:
- virtual void updateTreeViewModel(int aEventId);
+ virtual void updateTreeViewModel(int aEventId, bool aReloadModel = false);
void setDates(const QDate &aStart, const QDate &aEnd);
protected slots:
conflicts = Event::conflictEvents(event.id(),Conference::activeConference());
}
- // since the Favourite icon has changed, update TreeViews accordingly
- // all TreeViews have to listen on this signal
- emit(eventHasChanged(event.id()));
-
// have to emit 'eventHasChanged' signal on all events in conflict
for(int i=0; i<conflicts.count(); i++)
emit(eventHasChanged(conflicts[i].id()));
+
+ // since the Favourite icon has changed, update TreeViews accordingly
+ // all TreeViews have to listen on this signal
+ emit(eventHasChanged(event.id(),true));
handled = true;
}
signals:
void requestForMap(const QModelIndex &aIndex);
void requestForConflicts(const QModelIndex &aIndex);
- void eventHasChanged(int aEventId); // emited when user changes some event details, eg. sets it Favourite
+ void eventHasChanged(int aEventId, bool aReloadModel = false); // emited when user changes some event details, eg. sets it Favourite
};
#endif /* TREEVIEW_H */