From: pavelpa Date: Fri, 29 Jan 2010 10:06:55 +0000 (+0000) Subject: possible to have multiple conferences in the DB X-Git-Tag: 0.5.0~146 X-Git-Url: https://git.toastfreeware.priv.at/toast/confclerk.git/commitdiff_plain/1fb7a333b552e5d73812dc7373ae0898686c7c31 possible to have multiple conferences in the DB - possible to switch among them - conference schedules have to follow FOSDEM conference xml structure - 'select Conference' bar is visible only if there are more than one conference available --- diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index 8283787..8b650cc 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -43,15 +43,35 @@ MainWindow::MainWindow(int aEventId, QWidget *aParent) connect(tabWidget, SIGNAL(infoIconClicked()), SLOT(aboutApp())); - if(Conference::getAll().count()) + selectConference->setDuplicatesEnabled(false); + int confCount = Conference::getAll().count(); + if(confCount) { initTabs(); fillAndShowConferenceHeader(); setWindowTitle(Conference::getById(confId).title()); + + if(confCount==1) // don't have to show 'selectConference' widget, if there is only one conference in the DB + selectConferenceWidget->hide(); + else + { + // have to fill comboBox with available conferences + QList confs = Conference::getAll(); + QListIterator i(confs); + while(i.hasNext()) + { + Conference conf = i.next(); + selectConference->addItem(conf.title(),conf.id()); + } + int idx = selectConference->findText(Conference::getById(Conference::activeConference()).title()); + selectConference->setCurrentIndex(idx); + } + connect(selectConference, SIGNAL(currentIndexChanged(int)), SLOT(conferenceChanged(int))); } else { conferenceHeader->hide(); + selectConferenceWidget->hide(); // go to the 'conferenceTab', so the user can import the schedule tabWidget->setCurrentIndex(6); // 6 - conference tab } @@ -74,12 +94,23 @@ void MainWindow::scheduleImported(int aConfId) { Q_UNUSED(aConfId); - QList confs = Conference::getAll(); - if(confs.count()) + Conference conf = Conference::getById(aConfId); + if( selectConference->findText(conf.title()) < 0 ) // item doesn't exist { - initTabs(); - fillAndShowConferenceHeader(); - setWindowTitle(Conference::getById(Conference::activeConference()).title()); + disconnect(selectConference, SIGNAL(currentIndexChanged(int)), this, SLOT(conferenceChanged(int))); + selectConference->addItem(conf.title(),conf.id()); + connect(selectConference, SIGNAL(currentIndexChanged(int)), SLOT(conferenceChanged(int))); + } + int confCount = Conference::getAll().count(); + if(confCount) + { + int idx = selectConference->findText(conf.title()); + selectConference->setCurrentIndex(idx); + + if(confCount>1) + selectConferenceWidget->show(); + + conferenceChanged(idx); } } @@ -143,3 +174,13 @@ void MainWindow::initTabs() nowTabContainer->updateTreeView(QDate::currentDate()); } +void MainWindow::conferenceChanged(int aIndex) +{ + Conference::getById(Conference::activeConference()).update("active",0); + Conference::getById(selectConference->itemData(aIndex).toInt()).update("active",1); + + initTabs(); + fillAndShowConferenceHeader(); + setWindowTitle(Conference::getById(Conference::activeConference()).title()); +} + diff --git a/src/gui/mainwindow.h b/src/gui/mainwindow.h index a02a193..c2ed074 100644 --- a/src/gui/mainwindow.h +++ b/src/gui/mainwindow.h @@ -18,6 +18,7 @@ private slots: void aboutApp(); void conferenceMapClicked(); void eventHasChanged(int aEventId, bool aReloadModel); + void conferenceChanged(int aIndex); private: void fillAndShowConferenceHeader(); void initTabs(); diff --git a/src/gui/mainwindow.ui b/src/gui/mainwindow.ui index 2391f4a..94765da 100644 --- a/src/gui/mainwindow.ui +++ b/src/gui/mainwindow.ui @@ -231,6 +231,48 @@ + + + + + 0 + 0 + + + + + + + Select conference: + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + + + + diff --git a/src/mvc/treeview.cpp b/src/mvc/treeview.cpp index f907830..c855aef 100644 --- a/src/mvc/treeview.cpp +++ b/src/mvc/treeview.cpp @@ -39,6 +39,7 @@ bool TreeView::testForControlClicked(const QModelIndex &aIndex, const QPoint &aP if(!aIndex.isValid()) return handled; + int confId = Conference::activeConference(); QRect rect = visualRect(aIndex); // visual QRect of selected/clicked item in the list Delegate *delegate = static_cast(itemDelegate(aIndex)); switch(delegate->whichControlClicked(aIndex,aPoint)) @@ -47,7 +48,7 @@ bool TreeView::testForControlClicked(const QModelIndex &aIndex, const QPoint &aP case Delegate::FavouriteControlOff: { // handle Favourite Control clicked - Event event = Event::getById(aIndex.data().toInt(),1); + Event event = Event::getById(aIndex.data().toInt(),confId); QList conflicts = Event::conflictEvents(event.id(),Conference::activeConference()); if(event.isFavourite()) @@ -79,7 +80,7 @@ bool TreeView::testForControlClicked(const QModelIndex &aIndex, const QPoint &aP case Delegate::AlarmControlOff: { // handle Alarm Control clicked - Event event = Event::getById(aIndex.data().toInt(),1); + Event event = Event::getById(aIndex.data().toInt(),confId); if(event.hasAlarm()) { event.setHasAlarm(false); // update DB @@ -96,7 +97,8 @@ bool TreeView::testForControlClicked(const QModelIndex &aIndex, const QPoint &aP #ifdef MAEMO // add alarm to the 'alarmd' Alarm alarm; - int cookie = alarm.addAlarm(event.id(),QDateTime::currentDateTime().addSecs(10)); + //int cookie = alarm.addAlarm(event.id(),QDateTime::currentDateTime().addSecs(10)); // testing + int cookie = alarm.addAlarm(event.id(),event.start().addSecs(-15*60)); // 15 minutes before real start qDebug() << "cookie: " << cookie; #endif /* MAEMO */ }