source: src/gui/mainwindow.cpp @ 07ae23a

qt5
Last change on this file since 07ae23a was 07ae23a, checked in by timkoma <timkoma@…>, 12 years ago

refactoring of the TABS

  • Property mode set to 100644
File size: 4.9 KB
Line 
1#include "mainwindow.h"
2#include <appsettings.h>
3
4#include <QTreeView>
5#include <QFile>
6
7#include <sqlengine.h>
8
9#include <track.h>
10#include <eventmodel.h>
11#include <delegate.h>
12
13#include <conference.h>
14
15#include <QDialog>
16#include <QMessageBox>
17#include "ui_about.h"
18#include <eventdialog.h>
19#include "daynavigatorwidget.h"
20#include "importschedulewidget.h"
21#include "mapwindow.h"
22
23#include <tabcontainer.h>
24
25MainWindow::MainWindow(int aEventId, QWidget *aParent)
26    : QMainWindow(aParent)
27{
28    setupUi(this);
29
30    // Sanity check for existence of any Conference in the DB
31    // it AppSettings::confId() is 0, but there are any Conference(s) in the DB
32    // set the confId in the AppSettings for the ID of the first conference in the DB
33    QList<Conference> confs = Conference::getAll();
34    if(!confs.count()) // no conference(s) in the DB
35    {
36        AppSettings::setConfId(0); // no conference in the DB
37    }
38    else
39    {
40        if(AppSettings::confId() == 0)
41            AppSettings::setConfId(confs[0].id());
42
43        setWindowTitle(confs[0].title());
44    }
45
46    connect(importScheduleWidget, SIGNAL(scheduleImported(int)), SLOT(scheduleImported(int)));
47
48    // event details have changed
49    connect(dayTabContainer, SIGNAL(eventHasChanged(int)), SLOT(eventHasChanged(int)));
50    connect(favsTabContainer, SIGNAL(eventHasChanged(int)), SLOT(eventHasChanged(int)));
51    connect(favsTabContainer, SIGNAL(eventHasChanged(int)), SLOT(eventHasChanged(int)));
52    connect(roomsTabContainer, SIGNAL(eventHasChanged(int)), SLOT(eventHasChanged(int)));
53    connect(nowTabContainer, SIGNAL(eventHasChanged(int)), SLOT(eventHasChanged(int)));
54    connect(searchTabContainer, SIGNAL(eventHasChanged(int)), SLOT(eventHasChanged(int)));
55
56
57    // event conference map button clicked
58    connect(showMapButton, SIGNAL(clicked()), SLOT(conferenceMapClicked()));
59
60    connect(tabWidget, SIGNAL(infoIconClicked()), SLOT(aboutApp()));
61
62    if(Conference::getAll().count()) // no conference(s) in the DB
63    {
64        QDate startDate = Conference::getById(AppSettings::confId()).start();
65        QDate endDate = Conference::getById(AppSettings::confId()).end();
66        //
67        dayTabContainer->setDates(startDate, endDate);
68        tracksTabContainer->setDates(startDate, endDate);
69        roomsTabContainer->setDates(startDate, endDate);
70        favsTabContainer->setDates(startDate, endDate);
71        searchTabContainer->setDates(startDate, endDate);
72        //
73        conferenceTitle->setText(Conference::getById(AppSettings::confId()).title());
74        conferenceSubtitle->setText(Conference::getById(AppSettings::confId()).subtitle());
75        conferenceWhere->setText(Conference::getById(AppSettings::confId()).city() + ", " + Conference::getById(AppSettings::confId()).venue());
76        conferenceWhen->setText(
77                Conference::getById(AppSettings::confId()).start().toString("dd-MM-yyyy")
78                + ", " +
79                Conference::getById(AppSettings::confId()).end().toString("dd-MM-yyyy"));
80    }
81
82    // open dialog for given Event ID
83    // this is used in case Alarm Dialog request application to start
84    if(aEventId)
85    {
86        try
87        {
88            EventDialog dialog(aEventId,this);
89            dialog.exec();
90        }
91        catch(OrmNoObjectException&) {} // just start application
92        catch(...) {} // just start application
93    }
94}
95
96void MainWindow::scheduleImported(int aConfId)
97{
98    Q_UNUSED(aConfId);
99
100    QList<Conference> confs = Conference::getAll();
101    if(!confs.count()) // no conference(s) in the DB
102    {
103        AppSettings::setConfId(0); // no conference in the DB
104    }
105    else
106    {
107        if(AppSettings::confId() == 0)
108            AppSettings::setConfId(confs[0].id());
109
110        // 'dayNavigator' emits signal 'dateChanged' after setting valid START:END dates
111        QDate startDate = Conference::getById(AppSettings::confId()).start();
112        QDate endDate = Conference::getById(AppSettings::confId()).end();
113        dayTabContainer->setDates(startDate, endDate);
114        tracksTabContainer->setDates(startDate, endDate);
115        roomsTabContainer->setDates(startDate, endDate);
116        favsTabContainer->setDates(startDate, endDate);
117    }
118}
119
120void MainWindow::aboutApp()
121{
122    QDialog dialog(this);
123    Ui::AboutDialog ui;
124    ui.setupUi(&dialog);
125    dialog.exec();
126}
127
128void MainWindow::conferenceMapClicked()
129{
130    QString mapPath = QString(":/maps/campus.png");
131    if(!QFile::exists(mapPath))
132        mapPath = QString(":/maps/rooms/not-available.png");
133
134    QString roomName;
135
136    QPixmap map(mapPath);
137    MapWindow window(map,roomName,this);
138    window.exec();
139}
140
141void MainWindow::eventHasChanged(int aEventId)
142{
143    dayTabContainer->updateTreeViewModel(aEventId);
144    favsTabContainer->updateTreeViewModel(aEventId);
145    tracksTabContainer->updateTreeViewModel(aEventId);
146    nowTabContainer->updateTreeViewModel(aEventId);
147    roomsTabContainer->updateTreeViewModel(aEventId);
148    searchTabContainer->updateTreeViewModel(aEventId);
149}
150
Note: See TracBrowser for help on using the repository browser.