#include <QFont>
#include "table-model.h"
-Qt::ItemFlags ScoreTableModel::flags ( const QModelIndex & index )
+QString empty("");
+
+QColor colorHoleBg(Qt::darkGray);
+QColor colorHoleFg(Qt::yellow);
+QColor colorBirdie(102, 102, 255);
+QColor colorPar(Qt::green);
+QColor colorBogey(Qt::darkGreen);
+QColor colorDoubleBogey(Qt::red);
+QColor colorBad(Qt::red);
+QColor colorSubTotal(Qt::black);
+QColor colorTotal(Qt::black);
+
+Qt::ItemFlags ScoreTableModel::flags (const QModelIndex & index)
{
return 0;
}
QString& ScoreTableModel::clubName(void)
{
- QString str("");
-
if (club)
- str = club->getName();
+ return club->getName();
- return str;
+ return empty;
}
QString& ScoreTableModel::courseName(void)
{
- QString str("");
-
if (course)
- str = course->getName();
+ return course->getName();
- return str;
+ return empty;
}
Course *ScoreTableModel::findCourse(const QString &clubName,
{
if (hasIndex(row, column, parent)) {
int flag = (parent.column() > 0) ? parent.column() : 0;
- //qDebug() << "index() " << row << "/" << column << "/ flag: " << flag <<"//" << parent;
return createIndex(row, column, flag);
}
else {
QVariant ScoreTableModel::data(const QModelIndex &index, int role) const
{
- if (!index.isValid())
- return QVariant();
+ // TODO: move away from the stack
- if (!course || !score)
+ if (!index.isValid())
return QVariant();
int row = index.row();
//
// COLORS
//
- QColor colorHoleBg(Qt::black);
- QColor colorHoleFg(Qt::white);
- QColor colorBirdie(Qt::yellow);
- QColor colorPar(Qt::green);
- QColor colorBogey(Qt::darkGreen);
- QColor colorDoubleBogey(Qt::cyan);
- QColor colorBad(Qt::white);
- QColor colorSubTotal(Qt::lightGray);
- QColor colorTotal(Qt::gray);
-
- if (role == Qt::ForegroundRole) {
- if (row == ROW_HOLE || row == ROW_HOLE_2) {
- QBrush brush(colorHoleFg);
- return brush;
- }
- }
if (role == Qt::BackgroundRole) {
- // Hole numbers 1-18
- if (row == ROW_HOLE || row == ROW_HOLE_2) {
+ // Hole numbers 1-18. All hole nums, in, out and tot cell but not
+ // the empty cell.
+ if ((row == ROW_HOLE && col != 10) || row == ROW_HOLE_2) {
QBrush brush(colorHoleBg);
return brush;
}
-
- if (row == ROW_SCORE || row == ROW_SCORE_2) {
+ if (score && course && (row == ROW_SCORE || row == ROW_SCORE_2)) {
int par;
int shots;
if (row == ROW_SCORE) {
QBrush brush(colorDoubleBogey);
return brush;
}
+ if (shots > (par+2)) {
+ // Very bad
+ QBrush brush(colorBad);
+ return brush;
+ }
}
}
return QVariant();
return QString("In");
// In/Out for par
- if (row == ROW_PAR)
+ if (score && course && row == ROW_PAR)
return course->getTotal(TotalOut);
- if (row == ROW_PAR_2)
+ if (score && course && row == ROW_PAR_2)
return course->getTotal(TotalIn);
// In/Out for score
- if (row == ROW_SCORE)
+ if (score && row == ROW_SCORE)
return score->getTotal(TotalOut);
- if (row == ROW_SCORE_2)
+ if (score && row == ROW_SCORE_2)
return score->getTotal(TotalIn);
}
if (row == ROW_HOLE_2)
return QString("Tot");
// Total score
- if (row == ROW_PAR_2)
+ if (score && course && row == ROW_PAR_2)
return course->getTotal(Total);
- if (row == ROW_SCORE_2)
+ if (score && row == ROW_SCORE_2)
return score->getTotal(Total);
}
else {
case ROW_HOLE_2:
return col + 10;
case ROW_PAR:
- return course->getPar(col);
+ if (score && course)
+ return course->getPar(col);
case ROW_PAR_2:
- return course->getPar(col + 9);
+ if (score && course)
+ return course->getPar(col + 9);
case ROW_HCP:
- return course->getHcp(col);
- case ROW_HCP_2:
- return course->getHcp(col + 9);
- case ROW_SCORE:
- return score->getScore(col);
+ if (score && course)
+ return course->getHcp(col);
+ case ROW_HCP_2:
+ if (score && course)
+ return course->getHcp(col + 9);
+ case ROW_SCORE:
+ if (score)
+ return score->getScore(col);
case ROW_SCORE_2:
- return score->getScore(col + 9);
+ if (score)
+ return score->getScore(col + 9);
}
}
}
QVariant ScoreTableModel::headerData(int section, Qt::Orientation orientation, int role) const
{
- if (role != Qt::DisplayRole)
- return QVariant();
-
- // TODO: how to diff between the two table views (no index?)
-
- if (orientation == Qt::Horizontal)
- if (section >= 0 && section <= 8)
- return QString("%1").arg(section+1);
- else if (section == 9)
- return QString(""); // was: I/O
- else
- return QString(""); // was: Tot
- else {
- switch(section) {
- case ROW_PAR:
- case ROW_PAR_2:
- return QString("Par");
- case ROW_HCP:
- case ROW_HCP_2:
- return QString("HCP");
- case ROW_SCORE:
- case ROW_SCORE_2:
- return QString("Score");
- }
+ // Only vertical header -- horizontal is hidden
+ if (orientation == Qt::Horizontal)
+ return QVariant();
+
+#if 1
+ if (role == Qt::BackgroundRole) {
+ QColor colorHoleBg(Qt::darkGray);
+ QBrush brush(colorHoleBg);
+ return brush;
+ }
+#endif
+ if (role == Qt::DisplayRole) {
+ switch(section) {
+ case ROW_PAR:
+ case ROW_PAR_2:
+ return QString("Par");
+ case ROW_HCP:
+ case ROW_HCP_2:
+ return QString("HCP");
+ case ROW_SCORE:
+ case ROW_SCORE_2:
+ return QString("Score");
}
return QVariant();
+ }
+
+ return QVariant();
}