- New course: Default HCP values are odd for front nine, and even for
[scorecard] / src / score-dialog.cpp
index faa8d82..20b839b 100644 (file)
@@ -61,7 +61,7 @@ ScoreWindow::~ScoreWindow()
 void ScoreWindow::setup(Score *score, Course *course)
 {
     TRACE;
-    QString title = QString("Score: %1, %2 - %3").arg(score->getClubName()).arg(score->getCourseName()).arg(score->getDate());
+    QString title = QString("%1, %2 - %3").arg(score->getClubName()).arg(score->getCourseName()).arg(score->getDate());
     setWindowTitle(title);
     model->set(score, course);
 }
@@ -72,121 +72,128 @@ void ScoreWindow::setup(Score *score, Course *course)
 ////////////////////////////////////////////////////////////////////////////////
 SelectDialog::SelectDialog(QWidget *parent) : QDialog(parent)
 {
-  resize(800, 350);
+    resize(800, 350);
 
-  QWidget *centralWidget = new QWidget(this);
-  createLayout(centralWidget);
+    QWidget *centralWidget = new QWidget(this);
+    createLayout(centralWidget);
 
-  setWindowTitle(tr("ScoreCard: Select Course and Date"));
+    setWindowTitle(tr("ScoreCard: Select Course and Date"));
 }
 
 void SelectDialog::createLayout(QWidget *parent)
 {
-  listClub = new QListWidget(parent);
-  pushButtonNext = new QPushButton(tr("Next"));
+    listWidgetClub = new QListWidget(parent);
+    pushButtonNext = new QPushButton(tr("Next"));
 
-  connect(pushButtonNext, SIGNAL(clicked()), this, SLOT(next()));
+    connect(pushButtonNext, SIGNAL(clicked()), this, SLOT(next()));
 
-  QDialogButtonBox * buttonBox = new QDialogButtonBox(Qt::Vertical);
-  buttonBox->addButton(pushButtonNext, QDialogButtonBox::ActionRole);
+    QDialogButtonBox * buttonBox = new QDialogButtonBox(Qt::Vertical);
+    buttonBox->addButton(pushButtonNext, QDialogButtonBox::ActionRole);
 
-  leftLayout = new QVBoxLayout;
-  leftLayout->addWidget(listClub);
+    leftLayout = new QVBoxLayout;
+    leftLayout->addWidget(listWidgetClub);
 
 #ifdef Q_WS_MAEMO_5
-  dateButton = new QMaemo5ValueButton();
-  dateButton->setValueLayout(QMaemo5ValueButton::ValueUnderText);
-  dateButton->setPickSelector(new QMaemo5DatePickSelector());
-  dateButton->setText(QString::fromUtf8("Date"));
-  leftLayout->addWidget(dateButton);
+    dateButton = new QMaemo5ValueButton();
+    dateButton->setValueLayout(QMaemo5ValueButton::ValueUnderText);
+    dateButton->setPickSelector(new QMaemo5DatePickSelector());
+    dateButton->setText(QString::fromUtf8("Date"));
+    leftLayout->addWidget(dateButton);
 #else
-  QDate today(QDate::currentDate());
-  lineEditDate = new QLineEdit;
-  lineEditDate->setText(today.toString("yyyy-MM-dd"));
-  date = new QDateEdit;
-  leftLayout->addWidget(date);
-  leftLayout->addWidget(lineEditDate);
+    QDate today(QDate::currentDate());
+    lineEditDate = new QLineEdit;
+    lineEditDate->setText(today.toString("yyyy-MM-dd"));
+    date = new QDateEdit;
+    leftLayout->addWidget(date);
+    leftLayout->addWidget(lineEditDate);
 #endif
 
-  rightLayout = new QVBoxLayout;
-  rightLayout->addStretch();
-  rightLayout->addWidget(buttonBox);
+    rightLayout = new QVBoxLayout;
+    rightLayout->addStretch();
+    rightLayout->addWidget(buttonBox);
 
-  QHBoxLayout *mainLayout = new QHBoxLayout(parent);
-  mainLayout->addLayout(leftLayout);
-  mainLayout->addLayout(rightLayout);
+    QHBoxLayout *mainLayout = new QHBoxLayout(parent);
+    mainLayout->addLayout(leftLayout);
+    mainLayout->addLayout(rightLayout);
 
-  setLayout(mainLayout);
+    setLayout(mainLayout);
 }
 
 void SelectDialog::init(QList<Club *> &list)
 {
-  clubList = list;
-
-  QListIterator<Club *> i(clubList);
-  int index = 0;
+    TRACE;
+    clubList = list;
 
-  while (i.hasNext()) {
-    Club *club = i.next();
+    QListIterator<Club *> i(clubList);
+    int index = 0;
+    bool markedFlag = false;
 
-    QList<Course *> courseList = club->getCourseList();
+    while (i.hasNext()) {
+        Club *club = i.next();
 
-    QListIterator<Course *> j(courseList);
-    while (j.hasNext()) {
-      Course *course = j.next();
+        QList<Course *> courseList = club->getCourseList();
 
-      QListWidgetItem *newItem = new QListWidgetItem;
+        QListIterator<Course *> j(courseList);
+        while (j.hasNext()) {
+            Course *course = j.next();
 
-      QString entry = club->getName() + ", " + course->getName();
+            QListWidgetItem *newItem = new QListWidgetItem;
+            
+            QString entry = club->getName() + ", " + course->getName();
 
-      newItem->setText(entry);
-      listClub->insertItem(index, newItem);
+            newItem->setText(entry);
+            listWidgetClub->insertItem(index, newItem);
 
-      index++;
+            if (!markedFlag & club->isHomeClub()) {
+                listWidgetClub->setCurrentRow(index);
+                // Mark the 1st course of the home club the selection
+                markedFlag = true;
+            }
+            index++;
+        }
     }
-  }
 }
 
 void SelectDialog::results(QString &club, 
                           QString &course, 
                           QString &date)
 {  
-  QListWidgetItem *current = listClub->currentItem();
+    QListWidgetItem *current = listWidgetClub->currentItem();
 
-  if (current) {
-    QString tmp = current->text();
+    if (current) {
+        QString tmp = current->text();
 
-    QStringList stringList = tmp.split(", ");
-    club = stringList[0];
-    course = stringList[1];
+        QStringList stringList = tmp.split(", ");
+        club = stringList[0];
+        course = stringList[1];
 #ifdef Q_WS_MAEMO_5
-    QMaemo5DatePickSelector *sel = (QMaemo5DatePickSelector *)dateButton->pickSelector();
-    QDate d = sel->currentDate();
-    // TODO: change to QDate
-    date = d.toString(Qt::ISODate);
+        QMaemo5DatePickSelector *sel = (QMaemo5DatePickSelector *)dateButton->pickSelector();
+        QDate d = sel->currentDate();
+        // TODO: change to QDate
+        date = d.toString(Qt::ISODate);
 #else
-    date = lineEditDate->text();
+        date = lineEditDate->text();
 #endif
-  }
+    }
 }
 
 bool SelectDialog::validate(void)
 {
-  return true;
+    return true;
 }
 
 void SelectDialog::next(void)
 {
-  if (validate())
-    done(1);
-  else {
-    qDebug() << "SelectDialog: invalid data, cancel or correct";
-  }
+    if (validate())
+        done(1);
+    else {
+        qDebug() << "SelectDialog: invalid data, cancel or correct";
+    }
 }
 
 void SelectDialog::reject(void)
 {
-  done(0);
+    done(0);
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -329,82 +336,82 @@ void ScoreDialog::init(Course *course, Score *score)
 // Set default score to par if not set
 void ScoreDialog::setDefaultScore(QTableWidget *table)
 {
-  int row = table->currentRow();
-  int col = table->currentColumn();
+    int row = table->currentRow();
+    int col = table->currentColumn();
   
-  if (row == ROW_SCORE)
-    row = ROW_PAR;
-  else if (row == ROW_SCORE_2)
-    row = ROW_PAR_2;
-  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);
-  }
+    if (row == ROW_SCORE)
+        row = ROW_PAR;
+    else if (row == ROW_SCORE_2)
+        row = ROW_PAR_2;
+    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 ScoreDialog::up(void)
 {
-  QTableWidgetItem *item = table->currentItem();
+    QTableWidgetItem *item = table->currentItem();
 
-  if (!item) {
-    qWarning() << "ERROR: no current item";
-    return;
-  }
+    if (!item) {
+        qWarning() << "ERROR: no current item";
+        return;
+    }
 
-  int i = (item->text()).toInt();
-  QVariant value(i+1);
-  item->setData(Qt::DisplayRole, value);
+    int i = (item->text()).toInt();
+    QVariant value(i+1);
+    item->setData(Qt::DisplayRole, value);
 }
 
 void ScoreDialog::down(void)
 {
-  QTableWidgetItem *item = table->currentItem();
+    QTableWidgetItem *item = table->currentItem();
 
-  if (!item)
-    return;
+    if (!item)
+        return;
 
-  int i = (item->text()).toInt();
-  QVariant value(i-1);
-  item->setData(Qt::DisplayRole, value);
+    int i = (item->text()).toInt();
+    QVariant value(i-1);
+    item->setData(Qt::DisplayRole, value);
 }
 
 void ScoreDialog::next(void)
 {
-  if (table) {
-    QTableWidgetItem *item = table->currentItem();
-    moveToNextCell(item);
-    setDefaultScore(table);
-  }
+    if (table) {
+        QTableWidgetItem *item = table->currentItem();
+        moveToNextCell(item);
+        setDefaultScore(table);
+    }
 }
 
 void ScoreDialog::moveToNextCell(QTableWidgetItem *item)
 {
-  if (!item)
-    return;
+    if (!item)
+        return;
 
-  QTableWidget *table = item->tableWidget();
+    QTableWidget *table = item->tableWidget();
 
-  if (!table)
-    return;
+    if (!table)
+        return;
 
-  int row = table->currentRow();
-  int col = table->currentColumn();
+    int row = table->currentRow();
+    int col = table->currentColumn();
 
-  if (col < (COLS-1)) {
-    col++;
-  }
-  else if (col == (COLS-1)) {
-    col = 0;
-    row = (row == ROW_SCORE_2) ? ROW_SCORE : ROW_SCORE_2;
-  }
-  table->setCurrentCell(row, col);
+    if (col < (COLS-1)) {
+        col++;
+    }
+    else if (col == (COLS-1)) {
+        col = 0;
+        row = (row == ROW_SCORE_2) ? ROW_SCORE : ROW_SCORE_2;
+    }
+    table->setCurrentCell(row, col);
 }
 
 void ScoreDialog::results(QVector<QString> &scores)
@@ -424,20 +431,20 @@ void ScoreDialog::results(QVector<QString> &scores)
 
 bool ScoreDialog::validate(void)
 {
-  for (int i=0; i<9; i++) {
-    QTableWidgetItem *frontItem = table->item(ROW_SCORE, i);
-    QTableWidgetItem *backItem = table->item(ROW_SCORE_2, i);
+    for (int i=0; i<9; i++) {
+        QTableWidgetItem *frontItem = table->item(ROW_SCORE, i);
+        QTableWidgetItem *backItem = table->item(ROW_SCORE_2, i);
     
-    if (!frontItem || !backItem)
-      return false;
+        if (!frontItem || !backItem)
+            return false;
     
-    QString str1 = frontItem->text();
-    QString str2 = backItem->text();
+        QString str1 = frontItem->text();
+        QString str2 = backItem->text();
     
-    if (str1.isEmpty() || str2.isEmpty())
-      return false;
-  }
-  return true;
+        if (str1.isEmpty() || str2.isEmpty())
+            return false;
+    }
+    return true;
 }
 
 void ScoreDialog::finish(void)
@@ -451,7 +458,7 @@ void ScoreDialog::finish(void)
 
 void ScoreDialog::reject(void)
 {
-  done(0);
+    done(0);
 }
 
 void ScoreDialog::showNote(QString msg)