dbffeee98451d57609a5bcf720aea007eaa86139
[buliscores] / src / mainwidget.cpp
1 #include <QSettings>
2 #include <QMouseEvent>
3 #include <QApplication>
4 #include <QProcess>
5 #include <phonon/AudioOutput>
6 #include <phonon/MediaObject>
7
8 #include "mainwidget.h"
9 #include "backendkicker.h"
10 #include "matchdaymodel.h"
11 #include "settingsdialog.h"
12
13 MainWidget::MainWidget(QWidget *parent) :
14     QWidget(parent),
15     m_backend(new BackendKicker(this)),
16     m_datamodel(new MatchDayModel(this, m_backend)),
17     m_scoretbl(new ScoreTable(m_datamodel)),
18     m_settingsdlg(new SettingsDialog(this)),
19     m_settings(qApp->organizationName(), qApp->applicationName())
20 {
21     QFont f;
22     QPalette palette;
23
24     // label
25     m_statuslbl.setText(tr("BuLi Scores!"));
26     f.setPixelSize(40);
27     palette.setColor(QPalette::Background, QColor(0, 0, 0, 127));
28     palette.setColor(QPalette::Foreground, QColor(255, 255, 255, 127));
29     m_statuslbl.show();
30     m_statuslbl.setPalette(palette);
31     m_statuslbl.setAttribute(Qt::WA_TransparentForMouseEvents);
32     m_statuslbl.setAutoFillBackground(true);
33     m_statuslbl.setBackgroundRole(QPalette::Background);
34     m_statuslbl.setAlignment(Qt::AlignCenter);
35
36     m_statuslbl.setFont(f);
37
38     // table
39     m_scoretbl->hide();
40
41     this->setAttribute(Qt::WA_TranslucentBackground);
42
43     this->setLayout(&m_layout);
44     m_layout.addWidget(&m_statuslbl);
45     m_layout.addWidget(m_scoretbl);
46
47     // sounds
48     Phonon::MediaObject *m_mediaObject = new Phonon::MediaObject(this);
49     Phonon::AudioOutput *m_audioOutput =  new Phonon::AudioOutput(Phonon::MusicCategory, this);
50     Phonon::createPath(m_mediaObject, m_audioOutput);
51
52     connect(m_settingsdlg, SIGNAL(accepted()),
53             this, SLOT(update()));
54
55     connect(m_backend, SIGNAL(matchListChanged()),
56             this, SLOT(onBackendUpdateFinished()));
57
58     connect(m_backend, SIGNAL(updateStarted()),
59             this, SLOT(onBackendUpdateStarted()));
60 }
61
62 // only needed for testing on desktop
63 void MainWidget::mousePressEvent(QMouseEvent* event)
64 {
65     if (event->button() == Qt::RightButton) {
66         this->showSettingsDialog();
67     }
68 }
69
70 void MainWidget::update(void)
71 {
72     m_backend->selectLeague(m_settings.value("League", "1. Bundesliga").toString());
73     m_backend->update();
74 }
75
76 void MainWidget::onBackendUpdateStarted()
77 {
78     m_statuslbl.setText(tr("Updating..."));
79     m_statuslbl.show();
80     m_scoretbl->hide();
81 }
82
83 void MainWidget::onBackendUpdateFinished()
84 {
85     //mediaObject->play();
86
87     m_scoretbl->show();
88     m_statuslbl.hide();
89 }
90
91 void MainWidget::showSettingsDialog()
92 {
93     m_settingsdlg->show();
94 }
95