- write logfile for debugging purposes
[buliscores] / src / mainwidget.cpp
1 #include <QSettings>
2 #include <QMouseEvent>
3 #include <QApplication>
4 #include <QProcess>
5
6 #include "mainwidget.h"
7 #include "backendkicker.h"
8 #include "matchdaymodel.h"
9 #include "settingsdialog.h"
10
11 MainWidget::MainWidget(QWidget *parent) :
12     QWidget(parent),
13     m_mediaObject(new Phonon::MediaObject(this)),
14     m_audioOutput(new Phonon::AudioOutput(Phonon::MusicCategory, this)),
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     this->setAttribute(Qt::WA_TranslucentBackground);
25
26     // label
27     m_statuslbl.hide();
28     m_statuslbl.setText(tr("BuLi Scores!"));
29     f.setPixelSize(40);
30     palette.setColor(QPalette::Background, QColor(0, 0, 0, 127));
31     palette.setColor(QPalette::Foreground, QColor(255, 255, 255, 127));
32     m_statuslbl.setPalette(palette);
33     m_statuslbl.setAttribute(Qt::WA_TransparentForMouseEvents);
34     m_statuslbl.setAutoFillBackground(true);
35     m_statuslbl.setBackgroundRole(QPalette::Background);
36     m_statuslbl.setAlignment(Qt::AlignCenter);
37
38     m_statuslbl.setFont(f);
39
40     // table
41     m_statuslbl.show();
42
43     this->setLayout(&m_layout);
44     m_layout.addWidget(&m_statuslbl);
45     m_layout.addWidget(m_scoretbl);
46
47     connect(m_settingsdlg, SIGNAL(accepted()),
48             this, SLOT(update()));
49
50     connect(m_backend, SIGNAL(updateFinished()),
51             this, SLOT(onBackendUpdateFinished()));
52
53     connect(m_backend, SIGNAL(updateStarted()),
54             this, SLOT(onBackendUpdateStarted()));
55
56     connect(m_backend, SIGNAL(matchAdded(Match*)),
57             this, SLOT(onMatchAdded(Match*)));
58
59     Phonon::Path path = Phonon::createPath(m_mediaObject, m_audioOutput);
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     m_scoretbl->show();
86     m_statuslbl.hide();
87 }
88
89 void MainWidget::onMatchAdded(Match* match) {
90     connect(match, SIGNAL(scoreChanged(int,int,int,int)),
91             this, SLOT(onScoreChange()));
92
93     connect(match, SIGNAL(stateChanged(Match::MatchState)),
94             this, SLOT(onMatchStateChanged(Match::MatchState)));
95 }
96
97 void MainWidget::onScoreChange()
98 {
99     m_mediaObject->setCurrentSource(Phonon::MediaSource("/usr/share/buliscores/tor.wav"));
100     m_mediaObject->play();
101 }
102
103 void MainWidget::onMatchStateChanged(Match::MatchState state)
104 {
105     m_mediaObject->setCurrentSource(Phonon::MediaSource("/usr/share/buliscores/trillerpfeife.wav"));
106     m_mediaObject->play();
107 }
108
109 void MainWidget::showSettingsDialog()
110 {
111     m_settingsdlg->show();
112 }
113