#include "mainwindow.h" #include #include #include #include #include #include #include #include #include #include "ui_about.h" #include #include "daynavigatorwidget.h" #include "importschedulewidget.h" #include "mapwindow.h" #include MainWindow::MainWindow(int aEventId, QWidget *aParent) : QMainWindow(aParent) { setupUi(this); int confId = Conference::activeConference(); 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))); // event conference map button clicked connect(showMapButton, SIGNAL(clicked()), SLOT(conferenceMapClicked())); connect(tabWidget, SIGNAL(infoIconClicked()), SLOT(aboutApp())); if(Conference::getAll().count()) { initTabs(); fillAndShowConferenceHeader(); setWindowTitle(Conference::getById(confId).title()); } else { conferenceHeader->hide(); } // open dialog for given Event ID // this is used in case Alarm Dialog request application to start if(aEventId) { try { EventDialog dialog(aEventId,this); dialog.exec(); } catch(OrmNoObjectException&) {} // just start application catch(...) {} // just start application } } void MainWindow::scheduleImported(int aConfId) { Q_UNUSED(aConfId); QList confs = Conference::getAll(); if(confs.count()) { initTabs(); fillAndShowConferenceHeader(); setWindowTitle(Conference::getById(Conference::activeConference()).title()); } } void MainWindow::aboutApp() { QDialog dialog(this); Ui::AboutDialog ui; ui.setupUi(&dialog); dialog.exec(); } void MainWindow::conferenceMapClicked() { QString mapPath = QString(":/maps/campus.png"); if(!QFile::exists(mapPath)) mapPath = QString(":/maps/rooms/not-available.png"); QString roomName; QPixmap map(mapPath); MapWindow window(map,roomName,this); window.exec(); } void MainWindow::eventHasChanged(int aEventId) { dayTabContainer->updateTreeViewModel(aEventId); favsTabContainer->updateTreeViewModel(aEventId); tracksTabContainer->updateTreeViewModel(aEventId); nowTabContainer->updateTreeViewModel(aEventId); roomsTabContainer->updateTreeViewModel(aEventId); searchTabContainer->updateTreeViewModel(aEventId); } void MainWindow::fillAndShowConferenceHeader() { int confId = Conference::activeConference(); conferenceTitle->setText(Conference::getById(confId).title()); conferenceSubtitle->setText(Conference::getById(confId).subtitle()); conferenceWhere->setText(Conference::getById(confId).city() + ", " + Conference::getById(confId).venue()); conferenceWhen->setText( Conference::getById(confId).start().toString("dd-MM-yyyy") + ", " + Conference::getById(confId).end().toString("dd-MM-yyyy")); conferenceHeader->show(); } void MainWindow::initTabs() { int confId = Conference::activeConference(); QDate startDate = Conference::getById(confId).start(); QDate endDate = Conference::getById(confId).end(); // 'dayNavigator' emits signal 'dateChanged' after setting valid START:END dates dayTabContainer->setDates(startDate, endDate); tracksTabContainer->setDates(startDate, endDate); roomsTabContainer->setDates(startDate, endDate); favsTabContainer->setDates(startDate, endDate); searchTabContainer->setDates(startDate, endDate); nowTabContainer->updateTreeView(QDate::currentDate()); }