4 #include <QFontMetrics>
8 #include <QApplication>
10 #include "matchdaymodel.h"
13 MatchDayModel::MatchDayModel(QObject *parent, MatchDayBackend *backend) :
14 QAbstractTableModel(parent),
16 m_settings(qApp->organizationName(), qApp->applicationName())
20 connect(m_backend, SIGNAL(updateFinished(int)),
21 this, SLOT(onUpdateFinished(int)));
24 int MatchDayModel::rowCount(const QModelIndex&) const
26 return m_backend->matchCount();
29 int MatchDayModel::columnCount(const QModelIndex&) const
34 QVariant MatchDayModel::data(const QModelIndex& index, int role) const
41 if ((match = m_backend->getMatch(index.row())) == NULL) {
42 return QVariant(QVariant::Invalid);
47 case Qt::BackgroundRole:
48 return QBrush(QColor(20, 20, 20, 100));
51 case Qt::DecorationRole:
52 switch (index.column()) {
54 i = match->awayEmblem().pixmap(25,25);
57 i = match->homeEmblem().pixmap(25,25);
60 switch(match->state()) {
61 case Match::NotStarted:
62 return QIcon(":/bullet-grey").pixmap(15,15);
64 case Match::FirstHalf:
65 case Match::SecondHalf:
66 return QIcon(":/football").pixmap(15,15);
69 return QIcon(":/bullet-yellow").pixmap(15,15);
72 return QIcon(":/bullet-red").pixmap(15,15);
75 return QVariant(QVariant::Invalid);
84 switch (index.column()) {
86 return match->awayTeam();
89 if (match->state() == Match::NotStarted) {
92 return match->awayScore();
96 return match->homeTeam();
99 if (match->state() == Match::NotStarted) {
102 return match->homeScore();
109 return match->date().toString("ddd hh:mm");
113 return QVariant(QVariant::Invalid);
118 case Qt::SizeHintRole:
120 switch (index.column()) {
153 return QVariant(QVariant::Invalid);
159 case Qt::TextAlignmentRole:
160 if (index.column() < Seperator) {
161 return 0x0002 | 0x0080;
162 } else if (index.column() > Seperator) {
163 return 0x0001 | 0x0080;
165 return Qt::AlignCenter;
169 case Qt::ForegroundRole:
170 if ((index.column() == HomeScore &&
171 match->lastHomeGoal().secsTo((QDateTime::currentDateTime())) < 300) ||
172 (index.column() == AwayScore &&
173 match->lastAwayGoal().secsTo((QDateTime::currentDateTime())) < 300)) {
174 return QColor(255, 0, 51);
179 if ((index.column() == HomeScore ||
180 index.column() == AwayScore)) {
191 return QVariant(QVariant::Invalid);
194 return QVariant(QVariant::Invalid);
198 void MatchDayModel::onUpdateFinished(int)
201 beginRemoveRows(QModelIndex(),
207 beginInsertRows(QModelIndex(),
209 m_backend->matchCount() - 1);
212 m_lastRowCount = m_backend->matchCount() - 1;
214 // invalidate complete data
215 qDebug() << "MatchDayModel::emit dataChanged: " << rowCount(QModelIndex());
216 emit dataChanged(index(0, 0),
217 index(rowCount(QModelIndex()) - 1, columnCount(QModelIndex()) - 1));