Qt::ItemFlags ScoreTableModel::flags ( const QModelIndex & index )
{
- return Qt::NoItemFlags;
+ return 0;
+}
+
+void ScoreTableModel::setMode(int m)
+{
+ currentMode = m;
+}
+
+int ScoreTableModel::mode(void)
+{
+ return currentMode;
}
// Assign the 'sList' to internal 'scoreList'. Set the current score
return str;
}
+QString& ScoreTableModel::clubName(void)
+{
+ QString str("");
+
+ if (club)
+ str = club->getName();
+
+ return str;
+}
+
+QString& ScoreTableModel::courseName(void)
+{
+ QString str("");
+
+ if (course)
+ str = course->getName();
+
+ return str;
+}
+
Course *ScoreTableModel::findCourse(const QString &clubName,
const QString &courseName)
{
return 0;
}
+Club *ScoreTableModel::getClub(void)
+{
+ return club;
+}
+
+Course *ScoreTableModel::getCourse(void)
+{
+ return course;
+}
+
+Score *ScoreTableModel::getScore(void)
+{
+ return score;
+}
+
void ScoreTableModel::first()
{
if (score && course) {
int ScoreTableModel::rowCount(const QModelIndex & parent) const
{
- return ROW_COUNT;
+ return 8;
}
int ScoreTableModel::columnCount(const QModelIndex & parent) const
{
- return COL_COUNT + 2; // 2 for in/out and tot columns
+ return 9 + 2; // 2 for in/out and tot columns
}
QModelIndex ScoreTableModel::index(int row, int column, const QModelIndex &parent) const
}
}
-#define ROW_PAR 0
-#define ROW_HCP 1
-#define ROW_SCORE 2
-
QVariant ScoreTableModel::data(const QModelIndex &index, int role) const
{
- if (!index.isValid())
- return QVariant();
+ // TODO: move away from the stack
+ 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 (!course || !score)
+ if (!index.isValid())
return QVariant();
int row = index.row();
return Qt::AlignCenter;
}
- // Does this item belog to front or back nine
- int offset = index.internalId() ? 9 : 0;
if (index.column() > 10)
return QVariant();
//
// COLORS
//
- 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) {
- int par = (course->getPar(index.column() + offset)).toInt();
- int shots = (score->getScore(index.column() + offset)).toInt();
+ // Hole numbers 1-18
+ if (row == ROW_HOLE || row == ROW_HOLE_2) {
+ QBrush brush(colorHoleBg);
+ return brush;
+ }
- if (index.row() == ROW_SCORE) {
- if (index.column() == 10 && offset == 9) {
+ if (score && course && (row == ROW_SCORE || row == ROW_SCORE_2)) {
+ int par;
+ int shots;
+ if (row == ROW_SCORE) {
+ par = course->getPar(col).toInt();
+ shots = score->getScore(col).toInt();
+ }
+ else {
+ par = course->getPar(col + 9).toInt();
+ shots = score->getScore(col + 9).toInt();
+ }
+
+ if (col == 10 && row == ROW_SCORE_2) {
// Total score
QBrush brush(colorTotal);
- //brush.setStyle(Qt::Dense6Pattern);
return brush;
}
- if (col == 9 && row == 2) {
+ if (col == 9) {
// In and Out scores
QBrush brush(colorSubTotal);
- //brush.setStyle(Qt::Dense7Pattern);
return brush;
}
- if (index.column() < 9) {
+ if (col < 9) {
if (shots == par) {
// Par
QBrush brush(colorPar);
// FONT
//
if (role == Qt::FontRole) {
- if (index.row() == ROW_SCORE) {
- if (index.column() == 10 && offset == 9) {
+ if (row == ROW_SCORE_2 && col == 10) {
QFont font;
font.setBold(true);
return font;
- }
}
}
//
// DATA
//
if (role == Qt::DisplayRole) {
- // In/Out column
- if (index.column() == 9) {
- if (index.row() == ROW_PAR)
- if (offset == 0)
- return course->getTotal(TotalOut);
- else
- return course->getTotal(TotalIn);
- else if (index.row() == ROW_SCORE) {
- if (offset == 0)
- return score->getTotal(TotalOut);
- else
- return score->getTotal(TotalIn);
- }
- else
- return QVariant();
- }
- // Tot column
- if (index.column() == 10) {
- if (index.row() == ROW_PAR && offset == 9)
+ if (col == 9) {
+ // In/out label
+ if (row == ROW_HOLE)
+ return QString("Out");
+ if (row == ROW_HOLE_2)
+ return QString("In");
+
+ // In/Out for par
+ if (score && course && row == ROW_PAR)
+ return course->getTotal(TotalOut);
+ if (score && course && row == ROW_PAR_2)
+ return course->getTotal(TotalIn);
+
+ // In/Out for score
+ if (score && row == ROW_SCORE)
+ return score->getTotal(TotalOut);
+ if (score && row == ROW_SCORE_2)
+ return score->getTotal(TotalIn);
+
+ }
+ else if (col == 10) {
+ // Total label
+ if (row == ROW_HOLE_2)
+ return QString("Tot");
+ // Total score
+ if (score && course && row == ROW_PAR_2)
return course->getTotal(Total);
- else if (index.row() == ROW_SCORE && offset == 9)
+ if (score && row == ROW_SCORE_2)
return score->getTotal(Total);
- else
- return QVariant();
}
-
- //qDebug() << "data() " << index << "/" << offset;
- switch(index.row()) {
- case ROW_PAR:
- return course->getPar(index.column() + offset);
- case ROW_HCP:
- return course->getHcp(index.column() + offset);
- case ROW_SCORE:
- return score->getScore(index.column() + offset);
+ else {
+ // data cells
+ switch(row) {
+ case ROW_HOLE:
+ return col + 1;
+ case ROW_HOLE_2:
+ return col + 10;
+ case ROW_PAR:
+ if (score && course)
+ return course->getPar(col);
+ case ROW_PAR_2:
+ if (score && course)
+ return course->getPar(col + 9);
+ case ROW_HCP:
+ 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:
+ if (score)
+ return score->getScore(col + 9);
+ }
}
}
return QVariant();
QVariant ScoreTableModel::headerData(int section, Qt::Orientation orientation, int role) const
{
- if (role != Qt::DisplayRole)
+ if (role != Qt::DisplayRole)
return QVariant();
// TODO: how to diff between the two table views (no index?)
return QString(""); // was: Tot
else {
switch(section) {
- case 0:
+ case ROW_PAR:
+ case ROW_PAR_2:
return QString("Par");
- case 1:
+ case ROW_HCP:
+ case ROW_HCP_2:
return QString("HCP");
- case 2:
+ case ROW_SCORE:
+ case ROW_SCORE_2:
return QString("Score");
}
}
return QVariant();
}
-
+