From 67be44498c8cd1dd206e5ec2b26970ab52c29562 Mon Sep 17 00:00:00 2001 From: David Solbach Date: Sun, 17 Oct 2010 18:45:01 +0200 Subject: [PATCH] - don't play sounds on initial update --- BundesligaWidget.pro | 33 ----- BundesligaWidget.pro.user | 321 --------------------------------------------- buliscores.desktop | 2 +- buliscores.pro | 33 +++++ buliscores.pro.user | 227 ++++++++++++++++++++++++++++++++ src/backendkicker.cpp | 45 ++++--- src/backendkicker.h | 4 +- src/mainwidget.cpp | 48 ++++--- src/mainwidget.h | 11 +- src/match.cpp | 17 ++- src/match.h | 7 +- src/matchdaybackend.h | 2 +- src/matchdaymodel.cpp | 20 ++- src/matchdaymodel.h | 2 +- 14 files changed, 358 insertions(+), 414 deletions(-) delete mode 100644 BundesligaWidget.pro delete mode 100644 BundesligaWidget.pro.user create mode 100644 buliscores.pro create mode 100644 buliscores.pro.user diff --git a/BundesligaWidget.pro b/BundesligaWidget.pro deleted file mode 100644 index 0b357ca..0000000 --- a/BundesligaWidget.pro +++ /dev/null @@ -1,33 +0,0 @@ -include (./qmaemo5homescreenadaptor/qmaemo5homescreenadaptor.pri) - -QT += network -QT += phonon - - -OTHER_FILES += \ - buliscores.desktop - -HEADERS += \ - src/match.h \ - src/backendkicker.h \ - src/mainwidget.h \ - src/matchdaymodel.h \ - src/scoretable.h \ - src/settingsdialog.h \ - src/matchdaybackend.h - -SOURCES += \ - src/main.cpp \ - src/match.cpp \ - src/backendkicker.cpp \ - src/mainwidget.cpp \ - src/matchdaymodel.cpp \ - src/scoretable.cpp \ - src/settingsdialog.cpp \ - src/matchdaybackend.cpp - -RESOURCES += \ - resources.qrc - -FORMS += \ - src/settingsdialog.ui diff --git a/BundesligaWidget.pro.user b/BundesligaWidget.pro.user deleted file mode 100644 index f0ae3b6..0000000 --- a/BundesligaWidget.pro.user +++ /dev/null @@ -1,321 +0,0 @@ - - - - ProjectExplorer.Project.ActiveTarget - 1 - - - ProjectExplorer.Project.EditorSettings - - ISO-8859-15 - - - - ProjectExplorer.Project.Target.0 - - Desktop - Qt4ProjectManager.Target.DesktopTarget - 0 - 0 - - - qmake - QtProjectManager.QMakeBuildStep - - - - Make - Qt4ProjectManager.MakeStep - false - - - - 2 - - Make - Qt4ProjectManager.MakeStep - true - - clean - - - - 1 - false - - Debug - Qt4ProjectManager.Qt4BuildConfiguration - 2 - /home/david/Projects/BundesligaWidget-build-desktop - 2 - 0 - true - - - - qmake - QtProjectManager.QMakeBuildStep - - - - Make - Qt4ProjectManager.MakeStep - false - - - - 2 - - Make - Qt4ProjectManager.MakeStep - true - - clean - - - - 1 - false - - Release - Qt4ProjectManager.Qt4BuildConfiguration - 0 - /home/david/Projects/BundesligaWidget-build-desktop - 2 - 0 - true - - 2 - - BundesligaWidget - Qt4ProjectManager.Qt4RunConfiguration - 2 - - BundesligaWidget.pro - false - false - - false - false - - - 1 - - - - ProjectExplorer.Project.Target.1 - - Maemo - Qt4ProjectManager.Target.MaemoDeviceTarget - 0 - 0 - - - qmake - QtProjectManager.QMakeBuildStep - - - - Make - Qt4ProjectManager.MakeStep - false - - - - - - Qt4ProjectManager.MaemoPackageCreationStep - - /home/david/Projects/git-buliscores/sounds/trillerpfeife.wav - /home/david/Projects/git-buliscores/sounds/tor.wav - /home/david/Projects/git-buliscores/buliscores.desktop - - false - /usr/lib/hildon-desktop/BundesligaWidget - - /usr/share/buliscores/trillerpfeife.wav - /usr/share/buliscores/tor.wav - /usr/share/applications/hildon-home/buliscores.desktop - - - 3 - - Make - Qt4ProjectManager.MakeStep - true - - clean - - - - 1 - false - - Debug - Qt4ProjectManager.Qt4BuildConfiguration - 2 - /home/david/Projects/BundesligaWidget-build-maemo - 11 - 9 - true - - - - qmake - QtProjectManager.QMakeBuildStep - - - - Make - Qt4ProjectManager.MakeStep - false - - - - - - Qt4ProjectManager.MaemoPackageCreationStep - - true - - - - 3 - - Make - Qt4ProjectManager.MakeStep - true - - clean - - - - 1 - false - - Release - Qt4ProjectManager.Qt4BuildConfiguration - 0 - /home/david/Projects/BundesligaWidget-build-maemo - 11 - 9 - true - - 2 - - BundesligaWidget.pro - New Maemo Run Configuration - Qt4ProjectManager.MaemoRunConfiguration - - - 2010-10-09T11:30:33 - - 1 - - 2010-10-16T21:17:22 - - - 1 - - - - ProjectExplorer.Project.Target.2 - - Qt Simulator - Qt4ProjectManager.Target.QtSimulatorTarget - 0 - 0 - - - qmake - QtProjectManager.QMakeBuildStep - - - - Make - Qt4ProjectManager.MakeStep - false - - - - 2 - - Make - Qt4ProjectManager.MakeStep - true - - clean - - - - 1 - false - - Debug - Qt4ProjectManager.Qt4BuildConfiguration - 2 - /home/david/Projects/BundesligaWidget-build-simulator - 4 - 0 - true - - - - qmake - QtProjectManager.QMakeBuildStep - - - - Make - Qt4ProjectManager.MakeStep - false - - - - 2 - - Make - Qt4ProjectManager.MakeStep - true - - clean - - - - 1 - false - - Release - Qt4ProjectManager.Qt4BuildConfiguration - 0 - /home/david/Projects/BundesligaWidget-build-simulator - 4 - 0 - true - - 2 - - BundesligaWidget - Qt4ProjectManager.Qt4RunConfiguration - 2 - - BundesligaWidget.pro - false - false - - false - false - - - 1 - - - - ProjectExplorer.Project.TargetCount - 3 - - - ProjectExplorer.Project.Updater.FileVersion - 4 - - diff --git a/buliscores.desktop b/buliscores.desktop index 73ca659..220526c 100644 --- a/buliscores.desktop +++ b/buliscores.desktop @@ -2,7 +2,7 @@ Name=BuLi Scores Comment=Live scores of the German Bundesliga. Type=qt -X-Path=BundesligaWidget +X-Path=buliscores X-Multiple-Instances=false X-home-applet-minwidth=400 X-home-applet-minheight=250 diff --git a/buliscores.pro b/buliscores.pro new file mode 100644 index 0000000..0b357ca --- /dev/null +++ b/buliscores.pro @@ -0,0 +1,33 @@ +include (./qmaemo5homescreenadaptor/qmaemo5homescreenadaptor.pri) + +QT += network +QT += phonon + + +OTHER_FILES += \ + buliscores.desktop + +HEADERS += \ + src/match.h \ + src/backendkicker.h \ + src/mainwidget.h \ + src/matchdaymodel.h \ + src/scoretable.h \ + src/settingsdialog.h \ + src/matchdaybackend.h + +SOURCES += \ + src/main.cpp \ + src/match.cpp \ + src/backendkicker.cpp \ + src/mainwidget.cpp \ + src/matchdaymodel.cpp \ + src/scoretable.cpp \ + src/settingsdialog.cpp \ + src/matchdaybackend.cpp + +RESOURCES += \ + resources.qrc + +FORMS += \ + src/settingsdialog.ui diff --git a/buliscores.pro.user b/buliscores.pro.user new file mode 100644 index 0000000..82af9ea --- /dev/null +++ b/buliscores.pro.user @@ -0,0 +1,227 @@ + + + + ProjectExplorer.Project.ActiveTarget + 1 + + + ProjectExplorer.Project.EditorSettings + + ISO-8859-15 + + + + ProjectExplorer.Project.Target.0 + + Desktop + Qt4ProjectManager.Target.DesktopTarget + 0 + 0 + + + qmake + QtProjectManager.QMakeBuildStep + + + + Make + Qt4ProjectManager.MakeStep + false + + + + 2 + + Make + Qt4ProjectManager.MakeStep + true + + clean + + + + 1 + false + + Debug + Qt4ProjectManager.Qt4BuildConfiguration + 2 + /home/david/Projects/buliscores-build-desktop + 2 + 0 + true + + + + qmake + QtProjectManager.QMakeBuildStep + + + + Make + Qt4ProjectManager.MakeStep + false + + + + 2 + + Make + Qt4ProjectManager.MakeStep + true + + clean + + + + 1 + false + + Release + Qt4ProjectManager.Qt4BuildConfiguration + 0 + /home/david/Projects/buliscores-build-desktop + 2 + 0 + true + + 2 + + buliscores + Qt4ProjectManager.Qt4RunConfiguration + 2 + + buliscores.pro + false + false + + false + false + + + 1 + + + + ProjectExplorer.Project.Target.1 + + Maemo + Qt4ProjectManager.Target.MaemoDeviceTarget + 0 + 0 + + + qmake + QtProjectManager.QMakeBuildStep + + + + Make + Qt4ProjectManager.MakeStep + false + + + + + + Qt4ProjectManager.MaemoPackageCreationStep + + /home/david/Projects/git-buliscores/buliscores.desktop + /home/david/Projects/git-buliscores/sounds/tor.wav + /home/david/Projects/git-buliscores/sounds/trillerpfeife.wav + + false + /usr/lib/hildon-desktop/buliscores + + /usr/share/applications/hildon-home/buliscores.desktop + /usr/share/buliscores/tor.wav + /usr/share/buliscores/trillerpfeife.wav + + + 3 + + Make + Qt4ProjectManager.MakeStep + true + + clean + + + + 1 + false + + Debug + Qt4ProjectManager.Qt4BuildConfiguration + 2 + /home/david/Projects/buliscores-build-maemo + 11 + 9 + true + + + + qmake + QtProjectManager.QMakeBuildStep + + + + Make + Qt4ProjectManager.MakeStep + false + + + + + + Qt4ProjectManager.MaemoPackageCreationStep + + true + + + + 3 + + Make + Qt4ProjectManager.MakeStep + true + + clean + + + + 1 + false + + Release + Qt4ProjectManager.Qt4BuildConfiguration + 0 + /home/david/Projects/buliscores-build-maemo + 11 + 9 + true + + 2 + + buliscores.pro + New Maemo Run Configuration + Qt4ProjectManager.MaemoRunConfiguration + + + 1 + + 2010-10-17T14:42:24 + + + 1 + + + + ProjectExplorer.Project.TargetCount + 2 + + + ProjectExplorer.Project.Updater.FileVersion + 4 + + diff --git a/src/backendkicker.cpp b/src/backendkicker.cpp index d69280f..59c8600 100644 --- a/src/backendkicker.cpp +++ b/src/backendkicker.cpp @@ -15,12 +15,11 @@ const int BackendKicker::INTERVAL_FAST = 180; BackendKicker::BackendKicker(QObject *parent) : MatchDayBackend(parent), m_updateTimer(this), - m_netaccmgr(new QNetworkAccessManager(this)) + m_netaccmgr(new QNetworkAccessManager(this)), + m_initialUpdateDone(false) { QSettings settings(qApp->organizationName(), qApp->applicationName()); - this->selectLeague(settings.value("League", "1. Bundesliga").toString()); - connect(m_netaccmgr, SIGNAL(finished(QNetworkReply*)), this, SLOT(dlndFinished(QNetworkReply*))); @@ -29,7 +28,7 @@ BackendKicker::BackendKicker(QObject *parent) : m_updateTimer.setSingleShot(true); - this->update(); + this->selectLeague(settings.value("League", "1. Bundesliga").toString()); } Match* BackendKicker::getMatch(QString hometeam, QString awayteam, QDateTime date) @@ -99,7 +98,7 @@ static QString parseTeam(QString teamhtml) return team; } -static void parseScore(Match* match, QString scorehtml) +void BackendKicker::parseScore(Match* match, QString scorehtml) { QStringList tokens; @@ -111,34 +110,39 @@ static void parseScore(Match* match, QString scorehtml) // no extra color tag -> either not started, halftime or finished if (tokens.at(4) == "-") { // no first half results -> match not started yet - match->setState(Match::NotStarted); + match->setState(Match::NotStarted, m_initialUpdateDone); } else if (tokens.at(1) == "-") { // second half has not been started but there are first // half results -> currently half time - match->setScore(tokens.at(4).toInt(), tokens.at(5).toInt()); - match->setState(Match::HalfTime); + match->setScore(tokens.at(4).toInt(), tokens.at(5).toInt(), + m_initialUpdateDone); + match->setState(Match::HalfTime, m_initialUpdateDone); } else { // no color tag and no "-" -> game is finished - match->setScore(tokens.at(1).toInt(), tokens.at(2).toInt()); - match->setState(Match::Finished); + match->setScore(tokens.at(1).toInt(), tokens.at(2).toInt(), + m_initialUpdateDone); + match->setState(Match::Finished, m_initialUpdateDone); } } else { // there is a color tag which means that either first // half or second half are currently running if (tokens.at(4).contains("color")) { // first half score marked red -> first half running - match->setScore(tokens.at(5).toInt(), tokens.at(6).toInt()); - match->setState(Match::FirstHalf); + match->setScore(tokens.at(5).toInt(), tokens.at(6).toInt(), + m_initialUpdateDone); + match->setState(Match::FirstHalf, m_initialUpdateDone); } else if (tokens.at(1).contains("color")) { // second half score marked res -> second half running - match->setState(Match::SecondHalf); - match->setScore(tokens.at(2).toInt(), tokens.at(3).toInt()); + match->setState(Match::SecondHalf, m_initialUpdateDone); + match->setScore(tokens.at(2).toInt(), tokens.at(3).toInt(), + m_initialUpdateDone); } } qDebug() << "match state: " << match->state(); qDebug() << "match home: " << match->homeScore(); qDebug() << "match away: " << match->awayScore(); + qDebug() << "notify: " << m_initialUpdateDone; } void BackendKicker::parsePage (QString htmlstr) @@ -209,6 +213,7 @@ bool BackendKicker::selectLeague(QString league) } // delete last data + m_initialUpdateDone = false; this->m_matchlist.clear(); this->update(); @@ -229,15 +234,12 @@ void BackendKicker::dlndFinished(QNetworkReply *reply) int secstonextupdate; if (reply->error() != QNetworkReply::NoError) { - // TODO proper user friendly error handling here! qWarning() << "Download failed with error: " << reply->error(); + } else { + rawdata = reply->readAll(); + parsePage(rawdata); } - rawdata = reply->readAll(); - parsePage(rawdata); - - emit updateFinished(); - secstonextupdate = secsToNextGame(); if (secstonextupdate < INTERVAL_FAST) { secstonextupdate = INTERVAL_FAST; @@ -245,6 +247,9 @@ void BackendKicker::dlndFinished(QNetworkReply *reply) secstonextupdate = 6 * 3600; } m_updateTimer.start(secstonextupdate * 1000); + + emit updateFinished(reply->error()); + m_initialUpdateDone = true; qDebug() << "Update finished, next update in: " << secstonextupdate << "seconds."; } diff --git a/src/backendkicker.h b/src/backendkicker.h index d8b6690..3f246b9 100644 --- a/src/backendkicker.h +++ b/src/backendkicker.h @@ -23,7 +23,7 @@ public: void setAutomaticUpdate(bool); signals: - void updateFinished(void); + void updateFinished(int); void updateStarted(void); public slots: @@ -35,10 +35,12 @@ private: QDateTime m_lastUpdate; QTimer m_updateTimer; QNetworkAccessManager* m_netaccmgr; + bool m_initialUpdateDone; static const int INTERVAL_FAST; void parsePage (QString htmlstr); + void parseScore(Match* match, QString scorehtml); int secsToNextGame(void); private slots: diff --git a/src/mainwidget.cpp b/src/mainwidget.cpp index 9103add..7f0ca3d 100644 --- a/src/mainwidget.cpp +++ b/src/mainwidget.cpp @@ -10,8 +10,10 @@ MainWidget::MainWidget(QWidget *parent) : QWidget(parent), - m_mediaObject(new Phonon::MediaObject(this)), - m_audioOutput(new Phonon::AudioOutput(Phonon::MusicCategory, this)), + m_mediaObject_tor(new Phonon::MediaObject(this)), + m_mediaObject_pfeife(new Phonon::MediaObject(this)), + m_audioOutput_tor(new Phonon::AudioOutput(Phonon::MusicCategory, this)), + m_audioOutput_pfeife(new Phonon::AudioOutput(Phonon::MusicCategory, this)), m_backend(new BackendKicker(this)), m_datamodel(new MatchDayModel(this, m_backend)), m_scoretbl(new ScoreTable(m_datamodel)), @@ -21,6 +23,7 @@ MainWidget::MainWidget(QWidget *parent) : QFont f; QPalette palette; + this->hide(); this->setAttribute(Qt::WA_TranslucentBackground); // label @@ -47,16 +50,20 @@ MainWidget::MainWidget(QWidget *parent) : connect(m_settingsdlg, SIGNAL(accepted()), this, SLOT(update())); - connect(m_backend, SIGNAL(updateFinished()), - this, SLOT(onBackendUpdateFinished())); + connect(m_backend, SIGNAL(updateFinished(int)), + this, SLOT(onBackendUpdateFinished(int))); connect(m_backend, SIGNAL(updateStarted()), this, SLOT(onBackendUpdateStarted())); connect(m_backend, SIGNAL(matchAdded(Match*)), - this, SLOT(onMatchAdded(Match*))); + this, SLOT(onMatchAdded(Match*))); - Phonon::Path path = Phonon::createPath(m_mediaObject, m_audioOutput); + m_mediaObject_tor->setCurrentSource(Phonon::MediaSource("/usr/share/buliscores/tor.wav")); + m_mediaObject_pfeife->setCurrentSource(Phonon::MediaSource("/usr/share/buliscores/trillerpfeife.wav")); + + Phonon::createPath(m_mediaObject_tor, m_audioOutput_tor); + Phonon::createPath(m_mediaObject_pfeife, m_audioOutput_pfeife); } // only needed for testing on desktop @@ -70,20 +77,23 @@ void MainWidget::mousePressEvent(QMouseEvent* event) void MainWidget::update(void) { m_backend->selectLeague(m_settings.value("League", "1. Bundesliga").toString()); - m_backend->update(); } void MainWidget::onBackendUpdateStarted() { -// m_statuslbl.setText(tr("Updating...")); -// m_statuslbl.show(); -// m_scoretbl->hide(); + } -void MainWidget::onBackendUpdateFinished() +void MainWidget::onBackendUpdateFinished(int error) { - m_scoretbl->show(); - m_statuslbl.hide(); + if (error > 0) { + m_statuslbl.setText(tr("Error occured\nRetry pending...")); + m_statuslbl.show(); + m_scoretbl->hide(); + } else { + m_scoretbl->show(); + m_statuslbl.hide(); + } } void MainWidget::onMatchAdded(Match* match) { @@ -92,18 +102,20 @@ void MainWidget::onMatchAdded(Match* match) { connect(match, SIGNAL(stateChanged(Match::MatchState)), this, SLOT(onMatchStateChanged(Match::MatchState))); + qDebug() << "Match (" << match->homeTeam() << " vs " + << match->awayTeam() << ") : registering signals"; } void MainWidget::onScoreChange() { - m_mediaObject->setCurrentSource(Phonon::MediaSource("/usr/share/buliscores/tor.wav")); - m_mediaObject->play(); + m_mediaObject_tor->play(); + qDebug() << "Playing sound: tor"; } -void MainWidget::onMatchStateChanged(Match::MatchState state) +void MainWidget::onMatchStateChanged(Match::MatchState) { - m_mediaObject->setCurrentSource(Phonon::MediaSource("/usr/share/buliscores/trillerpfeife.wav")); - m_mediaObject->play(); + m_mediaObject_pfeife->play(); + qDebug() << "Playing sound: trillerpfeife"; } void MainWidget::showSettingsDialog() diff --git a/src/mainwidget.h b/src/mainwidget.h index 6cbd0eb..f9af41e 100644 --- a/src/mainwidget.h +++ b/src/mainwidget.h @@ -26,15 +26,18 @@ public slots: protected slots: void onBackendUpdateStarted(void); - void onBackendUpdateFinished(void); + void onBackendUpdateFinished(int error); void onMatchAdded(Match* match); void onScoreChange(); - void onMatchStateChanged(Match::MatchState state); + void onMatchStateChanged(Match::MatchState); private: - Phonon::MediaObject *m_mediaObject; - Phonon::AudioOutput *m_audioOutput; + Phonon::MediaObject *m_mediaObject_tor; + Phonon::MediaObject *m_mediaObject_pfeife; + Phonon::AudioOutput *m_audioOutput_tor; + Phonon::AudioOutput *m_audioOutput_pfeife; + MatchDayBackend* m_backend; MatchDayModel* m_datamodel; ScoreTable* m_scoretbl; diff --git a/src/match.cpp b/src/match.cpp index 9850d7f..64a5f90 100644 --- a/src/match.cpp +++ b/src/match.cpp @@ -4,6 +4,7 @@ Match::Match(QString hometeam, QString awayteam, QDateTime date, QObject *parent QObject(parent) { m_date = date; + m_lastevent = QDateTime::currentDateTime(); m_homeTeam = hometeam; m_awayTeam = awayteam; @@ -64,7 +65,7 @@ QIcon Match::getEmblemByName(QString team) return i; } -void Match::setScore(int home, int away) +void Match::setScore(int home, int away, bool notifyWatchers) { bool changed = false; int oldhomescore = m_homeScore; @@ -81,14 +82,20 @@ void Match::setScore(int home, int away) } if (changed) { - emit scoreChanged(oldhomescore, oldawayscore, - home, away); + m_lastevent = QDateTime::currentDateTime(); + if(notifyWatchers) { + emit scoreChanged(oldhomescore, oldawayscore, + home, away); + } } } -void Match::setState(MatchState state) { +void Match::setState(MatchState state, bool notifyWatchers) { if (m_state != state) { m_state = state; - emit stateChanged(state); + m_lastevent = QDateTime::currentDateTime(); + if (notifyWatchers) { + emit stateChanged(state); + } } } diff --git a/src/match.h b/src/match.h index d37b5d5..9a30696 100644 --- a/src/match.h +++ b/src/match.h @@ -9,6 +9,7 @@ class Match : public QObject { Q_OBJECT Q_PROPERTY(QDateTime date READ date) + Q_PROPERTY(QDateTime lastEvent READ lastEvent) Q_PROPERTY(QIcon homeEmblem READ homeEmblem) Q_PROPERTY(QIcon awayEmblem READ awayEmblem) Q_PROPERTY(QString homeTeam READ homeTeam) @@ -32,6 +33,7 @@ public: }; private: + QDateTime m_lastevent; QDateTime m_date; QString m_homeTeam; QString m_awayTeam; @@ -49,6 +51,7 @@ public: explicit Match(QString hometeam, QString awayteam, QDateTime date, QObject *parent = 0); QDateTime date() const {return m_date;} + QDateTime lastEvent() const {return m_lastevent;} QString homeTeam() const {return m_homeTeam;} QString awayTeam() const {return m_awayTeam;} @@ -59,13 +62,13 @@ public: int awayScore() const {return m_awayScore;} int awayScoreFH() const {return m_awayScoreFH;} - void setScore(int home, int away); + void setScore(int home, int away, bool notifyWatchers); QIcon homeEmblem() const {return m_homeEmblem;} QIcon awayEmblem() const {return m_awayEmblem;} MatchState state() const {return m_state;} - void setState(MatchState state); + void setState(MatchState state, bool notifyWatchers); signals: void scoreChanged(int oldhomescore, int oldawayscore, diff --git a/src/matchdaybackend.h b/src/matchdaybackend.h index 02eab60..0081d1f 100644 --- a/src/matchdaybackend.h +++ b/src/matchdaybackend.h @@ -24,7 +24,7 @@ public: signals: void matchAdded(Match* match); - void updateFinished(void); + void updateFinished(int); void updateStarted(void); public slots: diff --git a/src/matchdaymodel.cpp b/src/matchdaymodel.cpp index 7528a97..6ed7de7 100644 --- a/src/matchdaymodel.cpp +++ b/src/matchdaymodel.cpp @@ -17,8 +17,8 @@ MatchDayModel::MatchDayModel(QObject *parent, MatchDayBackend *backend) : { m_backend = backend; - connect(m_backend, SIGNAL(updateFinished()), - this, SLOT(onUpdateFinished())); + connect(m_backend, SIGNAL(updateFinished(int)), + this, SLOT(onUpdateFinished(int))); } int MatchDayModel::rowCount(const QModelIndex&) const @@ -169,7 +169,15 @@ QVariant MatchDayModel::data(const QModelIndex& index, int role) const break; case Qt::FontRole: - f.setPixelSize(14); + if ((index.column() == HomeScore || + index.column() == AwayScore) && + (match->lastEvent().secsTo((QDateTime::currentDateTime())) < 300)) { + f.setBold(true); + f.setPixelSize(16); + } else { + f.setBold(false); + f.setPixelSize(14); + } return f; @@ -181,17 +189,15 @@ QVariant MatchDayModel::data(const QModelIndex& index, int role) const } -void MatchDayModel::onUpdateFinished(void) +void MatchDayModel::onUpdateFinished(int) { //remove all rows - qDebug() << "beginRemoveRows: " << 0 << ", " << rowCount(QModelIndex()) - 1; beginRemoveRows(QModelIndex(), 0, m_lastRowCount); endRemoveRows(); //add rows - qDebug() << "beginInsertRows: " << 0 << ", " << m_backend->matchList().count() - 1; beginInsertRows(QModelIndex(), 0, m_backend->matchList().count() - 1); @@ -200,7 +206,7 @@ void MatchDayModel::onUpdateFinished(void) m_lastRowCount = m_backend->matchList().count() - 1; // invalidate complete data - qDebug() << "rowCount @ emit dataChanged: " << rowCount(QModelIndex()); + qDebug() << "MatchDayModel::emit dataChanged: " << rowCount(QModelIndex()); emit dataChanged(index(0, 0), index(rowCount(QModelIndex()) - 1, columnCount(QModelIndex()) - 1)); diff --git a/src/matchdaymodel.h b/src/matchdaymodel.h index 4d48000..e938a01 100644 --- a/src/matchdaymodel.h +++ b/src/matchdaymodel.h @@ -40,7 +40,7 @@ public: QVariant data(const QModelIndex& index, int role) const; protected slots: - void onUpdateFinished(void); + void onUpdateFinished(int); }; -- 1.7.9.5