X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fscore-dialog.cpp;fp=src%2Fscore-dialog.cpp;h=29b51893da24de16ee47ecba7d0361def7d326fd;hb=3a7b84c6a869df89c2e922a1af84bab3e89107f2;hp=25a4f28f478a8f6eefe3c4a1add6d2d3d6f7f0eb;hpb=37e9f2688aca7e941c62d438d44b4f7d21284493;p=scorecard diff --git a/src/score-dialog.cpp b/src/score-dialog.cpp index 25a4f28..29b5189 100644 --- a/src/score-dialog.cpp +++ b/src/score-dialog.cpp @@ -478,7 +478,7 @@ void ScoreDialog18::showNote(QString msg) // ScoreDialogSingle based on QDialog // Usage: edit scorecard data for single hole //////////////////////////////////////////////////////////////////////////////// -ScoreDialogSingle::ScoreDialogSingle(QWidget *parent) : QDialog(parent) +ScoreDialogSingle::ScoreDialogSingle(QWidget *parent) : ScoreDialog(parent) { TRACE; resize(800, 400); @@ -536,7 +536,10 @@ void ScoreDialogSingle::createLayout(QWidget *parent) void ScoreDialogSingle::createTable(QWidget *parent) { TRACE; - table = new QTableWidget(5, 5, parent); + table = new QTableWidget(ROWS, COLS, parent); + QFont font; + font.setPointSize(32); + table->setFont(font); table->horizontalHeader()->setResizeMode(QHeaderView::Stretch); table->verticalHeader()->setResizeMode(QHeaderView::Stretch); @@ -545,7 +548,7 @@ void ScoreDialogSingle::createTable(QWidget *parent) table->setStyleSheet(defaultStyleSheet); QStringList headers; - headers << "" << "Par" << "HCP" << "Score" << "" << "Par" << "HCP" << "Score"; + headers << "Hole" << "Par" << "HCP" << "Score" << "Putts" << "Fairway" << "Green"; table->setVerticalHeaderLabels(headers); } @@ -565,3 +568,139 @@ void ScoreDialogSingle::createButton(QWidget *parent) pushButtonFinish = new QPushButton(tr("Finish")); connect(pushButtonFinish, SIGNAL(clicked()), this, SLOT(finish())); } + +void ScoreDialogSingle::init(Course *course, Score *score) +{ + TRACE; + QTableWidgetItem *holeNum, *par, *hcp, *scoreItem, *putts, *fairway, *green; + + for (int i = 0; i < 3; i++) { + par = new QTableWidgetItem(course->getPar(i)); + hcp = new QTableWidgetItem(course->getHcp(i)); + + if (score) + scoreItem = new QTableWidgetItem(score->getScore(i)); + else + scoreItem = new QTableWidgetItem(""); + + putts = new QTableWidgetItem("2"); + fairway = new QTableWidgetItem("Yes"); + green = new QTableWidgetItem("Yes"); + + holeNum = new QTableWidgetItem(QString::number(i+1)); + + holeNum->setTextAlignment(Qt::AlignCenter); + holeNum->setFlags(Qt::NoItemFlags); + holeNum->setForeground(ScoreColor::holeBg()); + + par->setTextAlignment(Qt::AlignCenter); + par->setFlags(Qt::NoItemFlags); + + hcp->setTextAlignment(Qt::AlignCenter); + hcp->setFlags(Qt::NoItemFlags); + + scoreItem->setTextAlignment(Qt::AlignCenter); + putts->setTextAlignment(Qt::AlignCenter); + fairway->setTextAlignment(Qt::AlignCenter); + green->setTextAlignment(Qt::AlignCenter); + + table->setItem(ROW_HOLE, i, holeNum); + table->setItem(ROW_PAR, i, par); + table->setItem(ROW_HCP, i, hcp); + table->setItem(ROW_SCORE, i, scoreItem); + table->setItem(ROW_PUTTS, i, putts); + table->setItem(ROW_FAIRWAY, i, fairway); + table->setItem(ROW_GREEN, i, green); + } + // Set focus to 1st cell + table->setCurrentCell(ROW_SCORE, 0); + if (!score) + setDefaultScore(table); +} + +// Set default score to par if not set +// TODO: merge the two methods since they are the same +void ScoreDialogSingle::setDefaultScore(QTableWidget *table) +{ + int row = table->currentRow(); + int col = table->currentColumn(); + + if (row == ROW_SCORE) + row = ROW_PAR; + else { + qDebug() << "ERROR: unknown row in default score"; + return; + } + QTableWidgetItem *par = table->item(row, col); + QTableWidgetItem *score = table->item(row + 2, col); + + if (par && score && score->text() == "") { + QVariant value(par->text()); + score->setData(Qt::DisplayRole, value); + } +} + +void ScoreDialogSingle::up(void) +{ + QTableWidgetItem *item = table->currentItem(); + + if (!item) { + qWarning() << "ERROR: no current item"; + return; + } + + int i = (item->text()).toInt(); + QVariant value(i+1); + item->setData(Qt::DisplayRole, value); +} + +void ScoreDialogSingle::down(void) +{ + QTableWidgetItem *item = table->currentItem(); + + if (!item) + return; + + int i = (item->text()).toInt(); + QVariant value(i-1); + item->setData(Qt::DisplayRole, value); +} + +void ScoreDialogSingle::next(void) +{ + if (table) { + QTableWidgetItem *item = table->currentItem(); + moveToNextCell(item); + setDefaultScore(table); + } +} + +void ScoreDialogSingle::moveToNextCell(QTableWidgetItem *item) +{ + if (!item) + return; + + QTableWidget *table = item->tableWidget(); + + if (!table) + return; + + int row = table->currentRow(); + int col = table->currentColumn(); + + qDebug() << row << col; + if (row < (ROWS - 1)) { + row++; + } + else if (row == (ROWS - 1)) { + row = ROW_SCORE; + col = (col == COLS-1) ? 0 : col + 1; + } + qDebug() << row << col; + table->setCurrentCell(row, col); +} + +void ScoreDialogSingle::results(QVector &scores) +{ + TRACE; +}