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 int count = m_backend->matchList().count();
31 int MatchDayModel::columnCount(const QModelIndex&) const
36 QVariant MatchDayModel::data(const QModelIndex& index, int role) const
43 if ((match = m_backend->matchList().at(index.row())) == NULL) {
44 return QVariant(QVariant::Invalid);
49 case Qt::BackgroundRole:
50 return QBrush(QColor(20, 20, 20, 100));
53 case Qt::DecorationRole:
54 switch (index.column()) {
56 i = match->awayEmblem().pixmap(25,25);
59 i = match->homeEmblem().pixmap(25,25);
62 switch(match->state()) {
63 case Match::NotStarted:
64 return QIcon(":/bullet-grey").pixmap(20,20);
66 case Match::FirstHalf:
67 case Match::SecondHalf:
68 return QIcon(":/football").pixmap(20,20);
71 return QIcon(":/bullet-yellow").pixmap(20,20);
74 return QIcon(":/bullet-red").pixmap(20,20);
77 return QVariant(QVariant::Invalid);
86 switch (index.column()) {
88 return match->awayTeam();
91 if (match->state() == Match::NotStarted) {
94 return match->awayScore();
98 return match->homeTeam();
101 if (match->state() == Match::NotStarted) {
104 return match->homeScore();
111 return match->date().toString("ddd hh:mm");
115 return QVariant(QVariant::Invalid);
120 case Qt::SizeHintRole:
122 switch (index.column()) {
155 return QVariant(QVariant::Invalid);
161 case Qt::TextAlignmentRole:
162 if (index.column() < Seperator) {
163 return 0x0002 | 0x0080;
164 } else if (index.column() > Seperator) {
165 return 0x0001 | 0x0080;
167 return Qt::AlignCenter;
171 case Qt::ForegroundRole:
172 if ((index.column() == HomeScore &&
173 match->lastHomeGoal().secsTo((QDateTime::currentDateTime())) < 300) ||
174 (index.column() == AwayScore &&
175 match->lastAwayGoal().secsTo((QDateTime::currentDateTime())) < 300)) {
176 return QColor(255, 0, 51);
181 if ((index.column() == HomeScore ||
182 index.column() == AwayScore)) {
193 return QVariant(QVariant::Invalid);
196 return QVariant(QVariant::Invalid);
200 void MatchDayModel::onUpdateFinished(int)
203 beginRemoveRows(QModelIndex(),
209 beginInsertRows(QModelIndex(),
211 m_backend->matchList().count() - 1);
214 m_lastRowCount = m_backend->matchList().count() - 1;
216 // invalidate complete data
217 qDebug() << "MatchDayModel::emit dataChanged: " << rowCount(QModelIndex());
218 emit dataChanged(index(0, 0),
219 index(rowCount(QModelIndex()) - 1, columnCount(QModelIndex()) - 1));