Merge branch 'master' of /opt/src/sb1/qt/scorecard
authorSakari Poussa <sakari.poussa@nokia.com>
Fri, 16 Jul 2010 07:07:33 +0000 (10:07 +0300)
committerSakari Poussa <sakari.poussa@nokia.com>
Fri, 16 Jul 2010 07:07:33 +0000 (10:07 +0300)
TODO
debian/changelog
debian/control
images/scorecard-icon-48x48.png
maemo/scorecard.conf
scorecard.pro
src/course-dialog.cpp
src/course-dialog.h
src/score-dialog.cpp

diff --git a/TODO b/TODO
index c50b0d0..6e36f11 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,4 +1,5 @@
 TOP Items
+- Bug: New club/score with more than one comma (e.g xxx, yyy, zzz) does not work
 
 TODO General:
 - New score dialog should be the same as main view (f.ex showing
index abcf0dc..772aaa6 100644 (file)
@@ -1,3 +1,19 @@
+scorecard (0.20) unstable; urgency=low
+
+  * Backup works now
+  * Faster editing of HCP values. Also keep correct row in HCP edits.
+  * No commas in club and score names
+
+ -- Sakari Poussa <spoussa@gmail.com>  Thu, 15 Jul 2010 22:00:00 +0300
+
+scorecard (0.19) unstable; urgency=low
+
+  * Store user data in MyDocs directory
+  * New icon
+  * Turn off trace debug
+
+ -- Sakari Poussa <spoussa@gmail.com>  Mon, 21 Jun 2010 22:00:00 +0300
+
 scorecard (0.18) unstable; urgency=low
 
   * When sorting on scores list best first
index f4f97f5..d503eca 100644 (file)
@@ -14,14 +14,74 @@ Description: N900 application to keep track of your golf scores
 XSBC-Bugtracker: https://garage.maemo.org/tracker/?group_id=622
 XB-Maemo-Display-Name: ScoreCard
 XB-Maemo-Icon-26:
- iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAA7E
- AAAOxAGVKw4bAAABk0lEQVRogd2XbbKDMAhFSacL0v0vIkuiPxQbYz5IAmg8
- M29arSHcgMADmBzXswgRcVvtyEiXHQk+EkYQABEAJWy1IiKAuEOIqADCUoiK
- AMJCiKoAQlPIV8NojGaVUhVgUV5VBFj2BVEBKcePpieMc1sXFRFQO/F1XY/v
- 3vvqdbw2vhcyVIXcNkyw0iV2onYNcBaew6SMAlyd4VyXTp4wE+C9PzmUco7u
- kZj4M4WZgBrhu0BiSVApEkPjNFUCzrPS0N6PiUAvJqNEkTiIjQG7XwBAs9Mh
- zxCQoNTchsGdlmez7KP28RexLEtm2QY/ApiY5+meGxjewnMI3gdOFwbgCEg5
- nntmREgCTurkBXAcz61pEVJoJWFjyy4vOpKB5ef+o3Yju3rAOHn2QQunVIpz
- J+5JmxLS9hJMP0r8BWidlnIUXhIB7VxVtP+SCEzM9AK6xmmD/sRm+ghML+Cf
- C5qlVDHnXhQBAJ0oKL/xL4sAgGwUDOpt139kTMsmzSK/yYgIw05X36hFyA0t
- mr9hSciTZovZ+AGp3+tB+5YenAAAAABJRU5ErkJggg==
+ iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAAK/I
+ NwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAwM
+ SURBVHjaYvz//z8DNmAdJYYhBlIrJMCSqaloUyMjrizw798/BiZGRoYz1w6e
+ uXbvqj0HGycDLcDRZa9wygEEEAspBoE88Pcfg1C8X5WUjoYhXLx/bq3oiUsn
+ BRm4/79nYWFlYGZiZmBkZGKgBwAIIBZSNTAC/fHr948/ML0gT9kae6mzsLCc
+ vfng4v57T28cfffx5Zmfv7/cAnrkBwszKwMT2EOMNPEAQACxUGrAnz9/GNSV
+ dJlMDCwVf//+o/jy9fOkG3cv/Dp/4+itWw8u7X34/NaJD5/fnP399+c9oGf+
+ MoM8BIwdankIIIBYqGHIn7+/wTQrKwuDjJQsCLO52PrqfP/+Q+f5yyf5V26f
+ /nbx5vGLtx9d2ff4xd2Tn7+9P//3358nrODkxgKMISZI3JIBAAKIhZbpk5OT
+ g0FJQQWEufxcIy0/f/5s+eT5QwagZz5evnXq1N3HV/c9e/PgzJfvny4y/P/3
+ moWFjYGZmQUcQ8QCgABiYaAj4OXlZdDk1WHQVNPhj2BIdX3//p3rg6d3GM5f
+ P/rq2p2zh+49uX7oxbvHZ//8/XOOhZnlBzFmAgQQXT2ADgQFhYDYjMFQx0yM
+ 4R9DyKu3r0LuPrr+d8GG7sVnbxxKZmfl+EfIDIAAYmIYLADoEjFRMQZLY3tm
+ bWUTo1+/fhLlNoAAGjweQAK/fv8kupQCCCCWweDgb1+/MTx99Yjh5r1LH6/d
+ PXf16IXt8zjZuf4QoxcggAbEAz++/2B49uoxw637l75cvXP+2rW7Z87fe3rt
+ yLcfnw/++vPzGRsrx19WYH3xn+E/QbMAAoguHvj18zfDc5CDH1z5du3OuVtA
+ B5+98+Tq0S/fPgId/OMRsMb+AytCuYB1A7iGJ8LxIAAQQFTxAHq75/evPwwv
+ Xj9luPPw6g+gg29fvXv27O1Hl44DK7ADwPT9gJGJ6Re4EmNmAjqYhyK7AQKI
+ hXLHMzL8/v2L4fnLZwy3ISF8F5iOL918dOHkx89v9wFD+A4jA+NPVlY2cI3L
+ ycFN1dgFCCCKPQBsxDHsPLz6+fxN3U3fvn/e+xOYJIAJ4CcbCzvEwezcNE2e
+ AAFElSR07ubuLy/ePJzBzysEdDAn2e0acgBAAFGlHgA2l5mAmZAFkhcY6Vqi
+ AQQQ3YtRWA8QUk9R7lmAAKKLB/78+c0ALN/lgY5XZ2fjkABFGjDjv/33/98d
+ Vha2W0D8l9z+AUAA0dQDv//8Zvrz91eAnKRKgraKqb28pAqfiIAkuOQCllAM
+ T17d+3Ht3rlzdx5eWfHv3/+lQM+9I9UOgACimQe+//yqIiEi0x/kkuzjYh7M
+ IMgnxsDOxs7AzALsXgLh33//gBXcD46vPz9bnbq012rFjmlp1+9dLAQ2IfaQ
+ EhsAAUQTD3z78dXIQMN8VWFsl7KqnC4DKxsLAwsrM5rFTAzsHDwMXH84Gdys
+ whiMtOx0Zqxu3LL90MpUdjbOxcR6AiCAqOUBUM4EN75+/PwuC3T8mtr0WYrS
+ YvIM7JyseDWCYgSE+f8IMeRFtLMDe2NzNh9Y+oyLg2cvMRYDBBATlZzP9Of3
+ P7Uf33+6CvAKzcuJbCHK8cgA2EcG1uh/GVKDa9n01c3n/fz5XYIYfQABRI4H
+ MHpJHFzs8rKqvOdVjPh2pcTkuKjLG5HkeNDIxo8fPxiYWZkYmP+zMcT6FMqx
+ srFl/v9PsEPGABBAJHsAmPc4gUU5SgI1sTBgNnEV57KwV2ew1PFkYGdnJcnM
+ L1++QOoHIP7w8R2DhpwRg6GmdfLPXz8FCekFCCCiPQAy/++ff0nMbCwZ7JzM
+ KDkSVAH//vuTQZxDl4GfTQaYaZmJdvzPnz/BoQ9qN/3+9YvhD7Bh+Pv3PwYD
+ dStpYLIyI6QfIICI8sC/v/+FgeYvVTcWnmvqLi3GzsmCkYX//fvLIMGnycDJ
+ xkt0BQsaW/38+TO8dv729Ss4pID9YQYlGU0Gbk4eTVxjtzAAEEAsRDhemo2T
+ eY2+rZiFpAIXwx9gXxvdUFDng5mRlYGThR/o+P9Eh/7Hjx+Bof0bHPqgWADF
+ BrCvALTzLwMvlyCw3uAQ/P7jG14zAAKIBX8I/edhZWdeZuwoYSEmwwUMGWBJ
+ +Y8R56ApKeDTp0/wpPMX6OCvwJhANuvP3z8M///9/0vIHIAAYsFbsv9naNSx
+ ELEDOf73r394BnwZgZ79w/DzD9AR/xkJNuZAjv/27Ru4SQHifwbGBKgkglVe
+ LEwsDB+/vmH48fsHI6FRboAAwin79+8/bUlFngxpFV5gxiJcnIEsevH5BtDS
+ r3iLy/fv38MdD44JoOPBSQdW8wI9xARMjp/Z7wLL5+/R//8zCuGzFyCAcHoA
+ 2MRPl9fg52JiYmT4T0SyZmFiY3jy6QLDu6+PGX7/xIz579+/M7x79w7sWMhg
+ LgPDZ1AyAoojNxuADmZg4WRkePLtNIOIHLsqsNbxwGcvQADh9AAXL4sFvzA7
+ qOgksm/MzPDpx2uGB1+OAh31G6WYBDn8w4cP4FKHCVgCg9L8R2BMfEeKCVi6
+ 5WDnYXj24yLD7ZdnGISluBhY2Bn98NkLEEA48wCvILsSCysTNDMQB0Al0dmn
+ qxjkeMyATQMVhr//fwIz/i9orw1Sev0AOvoLMMOCPIHueMb/LAzsvEwMe69M
+ BxelbJwcQA/8dsZnJ0AAMeFuZDGygcz/T0LJwsTIwvDp+xuGw08mM3wGxsbP
+ b5CMCZpHA3nkEzAWPgIxuuP/g6t2VgZBYSGGvY8mAkP/FAMbCwesksQ78QYQ
+ QDg98PPb3w//0doMoPzAzMLEgK2lCxrjYWJmZOBg4WK4/eoEw/qbVQyfGZ6D
+ 2zYf339keP/mLTy9wxwPMh+Uv7g5BRj4RDgYdj7qZDh8ZynQ8Vzw2v/fb4Zn
+ +DwAEEA4k9DnDz+v//j2V5aTmwUSQkA7v3z8yfDqKTAE1VC1vX3xg+HG1RcM
+ 8opSDIxsf4Gx8J3h6bvdDA9f32Swk05nUBezYRAQFGH48+s3uHwHe5iJGdjk
+ YGP4/f8Hw4O3ZxkOXJ7J8PjLObDjQcUyqPT88fEfsED4vwmfBwACCKcHgI7f
+ /ubZNzd5TX6Gf7/+g0Pt+eNPDPdvvWdYxzuXQfaKCgOotQiawDt9+QjD43tf
+ gbXqCwZRJXawhznZuBnu3X7EcGp/MYOMqDKDubYbg7yYBgM3Oz84P3z/9YXh
+ xbsHDKeu72a4/fgiAzM7A4O8tgADExuw1PsHGTD78OwvsBBhwOsBgABixNXW
+ sAwX5ecVYj9n6SWlxM7ODDb079//DG9efmF49eo9w9dvP4AO/gMOKTZg65OH
+ j4OBSxCYjFigGYcRHP0MXz78Yfj26SewnfMd2AdjZWBlZgNLAvvKDH/+/WTg
+ 4GBn4ORhZ+AWYGVg54akaGA9xvD9/X+Gu8d+7AJ6wOvY8lc4a2SAAGLBXQ8w
+ fvz05mfFzXPvVmpZCDH+/vMXXBFxAKsVMR5Ohp+/oUkLnNEg6RrY9EDkeiDN
+ BGxVC4izMvCLAdX+44ameUi6Z2QEjdzxgZMmIxOkRgaHPNAPoDnDZ1d+ff7z
+ 838ZMEDwNicAAogFf3ePcfXDax8Nfv3/USWuzgIux0GOBGdEKAS79R+O0eT/
+ 4MYgUrMboQe5mf4fqgaYGkFJhuHx+V9/P7/+mwl0/EVCJR9AAOFvjUJCp/r5
+ 9Z9MwNq1QlKTlYGFDdha/MNAHviPqxKEJJufn/8zPLn06+unF/+ygY5fSoyR
+ AAHERLiGBReflW/u/k26d/zX088v/4GjGWQhpXPVMIeDYuHtg78Md47+vPDp
+ 5T8foNhCYs0ACCDiRiUgFs3/+u7f/nsnflbxSzKHC8ky83ELMzOA8ySkNwih
+ cYU0I7TFzQhJ5+CBr+/ATP76L9Dxf55+eftvLtBDfcBk9JGUQAAIIJKGVYCG
+ PwA6Lu3Dk7+TPj7/m8TJy+jNJ8GiBip92HmBjTBgEQhKx4wsDEitS0iFBcw+
+ wPwAdPQPYHPi0z8GYGD8/vTi78WfX/9vAKpaANT3lJxYBAgg0seFILFxBeiw
+ ou+f/td8+/DbCmi5I1BMl42LSZmNm1ES2ABjYmaBli7ADArKmECH//755d+j
+ Pz/+3wXyLwALg13ApHkRqPc3JckQIMAAk6PyG5YPAiMAAAAASUVORK5CYII=
index 80cb702..ca0f1c8 100644 (file)
Binary files a/images/scorecard-icon-48x48.png and b/images/scorecard-icon-48x48.png differ
index 3371696..03979be 100644 (file)
@@ -1,8 +1,6 @@
 <backup-configuration>
   <locations>
-    <location type="file"
-              category="settings" auto="true">/home/user/.config/garage/ScoreCard.conf</location>
-    <location type="dir"
-              category="documents">/home/user/.scorecard</location>
+    <location type="file" category="settings" auto="true">$HOME/.config/garage/ScoreCard.conf</location>
+    <location type="dir" category="settings" auto="true">$HOME/MyDocs/.scorecard</location>
   </locations>
 </backup-configuration>
index 9c84851..a28297b 100644 (file)
@@ -10,7 +10,7 @@ CONFIG  += qt debug
 TEMPLATE = app
 QT      += xml maemo5
 
-DEFINES += WANT_DEBUG
+#DEFINES += WANT_DEBUG
 
 RESOURCES = scorecard.qrc
 
index d8192ea..6621412 100644 (file)
@@ -7,6 +7,9 @@
  */
 
 #include <QtGui>
+#ifdef Q_WS_MAEMO_5
+#include <QMaemo5InformationBox>
+#endif
 #include <QLayout>
 #include <QLineEdit>
 #include <QInputContext>
@@ -66,65 +69,77 @@ void CourseWindow::setup(Course *course)
 ////////////////////////////////////////////////////////////////////////////////
 CourseSelectDialog::CourseSelectDialog(QWidget *parent) : QDialog(parent)
 {
-  QWidget *centralWidget = new QWidget(this);
-  createLayout(centralWidget);
+    QWidget *centralWidget = new QWidget(this);
+    createLayout(centralWidget);
 
-  setWindowTitle(tr("ScoreCard: New Club and Course"));
+    setWindowTitle(tr("ScoreCard: New Club and Course"));
 }
 
 void CourseSelectDialog::createLayout(QWidget *parent)
 {
-  labelClub = new QLabel(tr("Club"));
-  labelCourse = new QLabel(tr("Course"));
-  lineEditClub = new QLineEdit;
-  lineEditCourse = new QLineEdit;
-  pushButtonNext = new QPushButton(tr("Next"));
+    labelClub = new QLabel(tr("Club"));
+    labelCourse = new QLabel(tr("Course"));
+    lineEditClub = new QLineEdit;
+    lineEditCourse = new QLineEdit;
+    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(lineEditClub);
-  leftLayout->addWidget(lineEditCourse);
+    leftLayout = new QVBoxLayout;
+    leftLayout->addWidget(lineEditClub);
+    leftLayout->addWidget(lineEditCourse);
 
-  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 CourseSelectDialog::showNote(QString msg)
+{
+#ifdef Q_WS_MAEMO_5
+    QMaemo5InformationBox::information(this, 
+                                       msg,
+                                       QMaemo5InformationBox::DefaultTimeout);
+#endif
 }
 
 void CourseSelectDialog::results(QString &club, 
                                 QString &course)
 {  
-  club = lineEditClub->text();
-  course = lineEditCourse->text();
+    club = lineEditClub->text();
+    course = lineEditCourse->text();
 }
 
 bool CourseSelectDialog::validate(void)
 {
-  QString str1 = lineEditClub->text();
-  QString str2 = lineEditCourse->text();
+    QString str1 = lineEditClub->text();
+    QString str2 = lineEditCourse->text();
 
-  if (str1.isEmpty() || str2.isEmpty())
-    return false;
+    if (str1.isEmpty() || str2.isEmpty())
+        return false;
   
-  return true;
+    if (str1.contains(",") || str2.contains(","))
+        return false;
+
+    return true;
 }
 
 void CourseSelectDialog::next(void)
 {
-  if (validate())
-    done(1);
-  else {
-    qDebug() << "CourseDialog: invalid data, cancel or correct";
-  }
+    if (validate())
+        done(1);
+    else {
+        showNote(tr("Invalid club or course name"));
+    }
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -132,221 +147,242 @@ void CourseSelectDialog::next(void)
 ////////////////////////////////////////////////////////////////////////////////
 CourseDialog::CourseDialog(QWidget *parent) : QDialog(parent)
 {
-  resize(800, 400);
+    resize(800, 400);
 
-  QWidget *centralWidget = new QWidget(this);
+    QWidget *centralWidget = new QWidget(this);
 
-  createTable();
-  createButton();
+    createTable();
+    createButton();
 
-  createLayout(centralWidget);
+    createLayout(centralWidget);
 }
 
 void CourseDialog::createLayout(QWidget *parent)
 {
-  leftLayout = new QVBoxLayout;
-  leftLayout->addWidget(table);
-
-  QDialogButtonBox * buttonBoxUp = new QDialogButtonBox(Qt::Vertical);
-  buttonBoxUp->addButton(pushButtonUp, QDialogButtonBox::ActionRole);
-  buttonBoxUp->addButton(pushButtonDown, QDialogButtonBox::ActionRole);
-  buttonBoxUp->addButton(pushButtonNext, QDialogButtonBox::ActionRole);
-
-  QDialogButtonBox * buttonBoxDown = new QDialogButtonBox(Qt::Vertical);
-  buttonBoxDown->addButton(pushButtonFinish, QDialogButtonBox::ActionRole);
-
-  rightLayout = new QVBoxLayout;
-  rightLayout->addWidget(buttonBoxUp);
-  rightLayout->addStretch();
-  rightLayout->addWidget(buttonBoxDown);
-
-  QHBoxLayout *mainLayout = new QHBoxLayout(parent);
-  mainLayout->addLayout(leftLayout);
-  mainLayout->addLayout(rightLayout);
-  setLayout(mainLayout);
+    leftLayout = new QVBoxLayout;
+    leftLayout->addWidget(table);
+
+    QDialogButtonBox * buttonBoxUp = new QDialogButtonBox(Qt::Vertical);
+    buttonBoxUp->addButton(pushButtonUp, QDialogButtonBox::ActionRole);
+    buttonBoxUp->addButton(pushButtonDown, QDialogButtonBox::ActionRole);
+    buttonBoxUp->addButton(pushButtonNext, QDialogButtonBox::ActionRole);
+
+    QDialogButtonBox * buttonBoxDown = new QDialogButtonBox(Qt::Vertical);
+    buttonBoxDown->addButton(pushButtonFinish, QDialogButtonBox::ActionRole);
+
+    rightLayout = new QVBoxLayout;
+    rightLayout->addWidget(buttonBoxUp);
+    rightLayout->addStretch();
+    rightLayout->addWidget(buttonBoxDown);
+
+    QHBoxLayout *mainLayout = new QHBoxLayout(parent);
+    mainLayout->addLayout(leftLayout);
+    mainLayout->addLayout(rightLayout);
+    setLayout(mainLayout);
 }
 
 void CourseDialog::createButton(QWidget *parent)
 {
-  Q_UNUSED(parent);
-  pushButtonUp = new QPushButton(tr("+"));
-  connect(pushButtonUp, SIGNAL(clicked()), this, SLOT(up()));
+    Q_UNUSED(parent);
+    pushButtonUp = new QPushButton(tr("+"));
+    connect(pushButtonUp, SIGNAL(clicked()), this, SLOT(up()));
 
-  pushButtonDown = new QPushButton(tr("-"));
-  connect(pushButtonDown, SIGNAL(clicked()), this, SLOT(down()));
+    pushButtonDown = new QPushButton(tr("-"));
+    connect(pushButtonDown, SIGNAL(clicked()), this, SLOT(down()));
 
-  pushButtonNext = new QPushButton(tr("Next"));
-  connect(pushButtonNext, SIGNAL(clicked()), this, SLOT(next()));
+    pushButtonNext = new QPushButton(tr("Next"));
+    connect(pushButtonNext, SIGNAL(clicked()), this, SLOT(next()));
 
-  pushButtonFinish = new QPushButton(tr("Finish"));
-  connect(pushButtonFinish, SIGNAL(clicked()), this, SLOT(finish()));
+    pushButtonFinish = new QPushButton(tr("Finish"));
+    connect(pushButtonFinish, SIGNAL(clicked()), this, SLOT(finish()));
 }
 
 void CourseDialog::createTable(QWidget *parent)
 {
-  table = new QTableWidget(ROWS, COLS, parent);
-
-  QStringList headers;
-  headers << "" << "Par" << "HCP" << "Len" << "" << "Par" << "HCP" << "Len";
-  table->setVerticalHeaderLabels(headers);
-  table->horizontalHeader()->hide();
-  table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
-  table->verticalHeader()->setResizeMode(QHeaderView::Stretch);
-  table->setStyleSheet(defaultStyleSheet);
+    table = new QTableWidget(ROWS, COLS, parent);
+
+    QStringList headers;
+    headers << "" << "Par" << "HCP" << "Len" << "" << "Par" << "HCP" << "Len";
+    table->setVerticalHeaderLabels(headers);
+    table->horizontalHeader()->hide();
+    table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
+    table->verticalHeader()->setResizeMode(QHeaderView::Stretch);
+    table->setStyleSheet(defaultStyleSheet);
 }
 
 void CourseDialog::init(Course *course)
 {
-  QTableWidgetItem *par, *hcp;
-
-  for (int i=0; i<18; i++) {
-    if (course) {
-      par = new QTableWidgetItem(course->getPar(i));
-      hcp = new QTableWidgetItem(course->getHcp(i));
-    }
-    else {
-      par = new QTableWidgetItem("4");
-      hcp = new QTableWidgetItem("9");
-    }
-    QTableWidgetItem *len = new QTableWidgetItem("");
-
-    QTableWidgetItem *holeNum = new QTableWidgetItem(QString::number(i+1));
-    holeNum->setForeground(ScoreColor::holeBg());
-    holeNum->setFlags(Qt::NoItemFlags);
-
-    holeNum->setTextAlignment(Qt::AlignCenter);
-    par->setTextAlignment(Qt::AlignCenter);
-    hcp->setTextAlignment(Qt::AlignCenter);
-    len->setTextAlignment(Qt::AlignCenter);
-    // len is not in use - here just to confuse ;(
-    len->setFlags(Qt::NoItemFlags);
+    QTableWidgetItem *par, *hcp;
+
+    for (int i=0; i<18; i++) {
+        if (course) {
+            // TODO: del or allocate statically...
+            par = new QTableWidgetItem(course->getPar(i));
+            hcp = new QTableWidgetItem(course->getHcp(i));
+        }
+        else {
+            par = new QTableWidgetItem("4");
+            if (i < 9)
+                hcp = new QTableWidgetItem("9");
+            else
+                hcp = new QTableWidgetItem("10");
+        }
+        QTableWidgetItem *len = new QTableWidgetItem("");
+
+        QTableWidgetItem *holeNum = new QTableWidgetItem(QString::number(i+1));
+        holeNum->setForeground(ScoreColor::holeBg());
+        holeNum->setFlags(Qt::NoItemFlags);
+
+        holeNum->setTextAlignment(Qt::AlignCenter);
+        par->setTextAlignment(Qt::AlignCenter);
+        hcp->setTextAlignment(Qt::AlignCenter);
+        len->setTextAlignment(Qt::AlignCenter);
+        // len is not in use - here just to confuse ;(
+        len->setFlags(Qt::NoItemFlags);
     
-    if (i < 9) {
-      table->setItem(0, i, holeNum);
-      table->setItem(1, i, par);
-      table->setItem(2, i, hcp);
-      table->setItem(3, i, len);
+        if (i < 9) {
+            table->setItem(0, i, holeNum);
+            table->setItem(1, i, par);
+            table->setItem(2, i, hcp);
+            table->setItem(3, i, len);
+        }
+        else {
+            table->setItem(4, i-9, holeNum);
+            table->setItem(5, i-9, par);
+            table->setItem(6, i-9, hcp);
+            table->setItem(7, i-9, len);
+        }
     }
-    else {
-      table->setItem(4, i-9, holeNum);
-      table->setItem(5, i-9, par);
-      table->setItem(6, i-9, hcp);
-      table->setItem(7, i-9, len);
-    }
-  }
-  table->setCurrentCell(1, 0);
+    table->setCurrentCell(1, 0);
 }
 
 void CourseDialog::up(void)
 {
-  QTableWidgetItem *item = table->currentItem();
+    QVariant value;
+    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();
+    if (item->row() == ROW_HCP || item->row() == ROW_HCP_2)
+        value.setValue(i+2);
+    else
+        value.setValue(i+1);
+
+    item->setData(Qt::DisplayRole, value);
 }
 
 void CourseDialog::down(void)
 {
-  QTableWidgetItem *item = table->currentItem();
+    QVariant value;
+    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();
+    if (item->row() == ROW_HCP || item->row() == ROW_HCP_2)
+        value.setValue(i-2);
+    else
+        value.setValue(i-1);
+
+    item->setData(Qt::DisplayRole, value);
 }
 
 void CourseDialog::next(void)
 {
-  if (table) {
-    QTableWidgetItem *item = table->currentItem();
-    moveToNextCell(item);
-    //setDefaultScore(table);
-  }
+    if (table) {
+        QTableWidgetItem *item = table->currentItem();
+        moveToNextCell(item);
+        //setDefaultScore(table);
+    }
 }
 
 void CourseDialog::moveToNextCell(QTableWidgetItem *item)
 {
-  if (!item)
-    return;
-
-  QTableWidget *table = item->tableWidget();
-
-  if (!table)
-    return;
-
-  int row = table->currentRow();
-  int col = table->currentColumn();
-
-  if (col < (COLS-1)) {
-    col++;
-  }
-  else if (col == (COLS-1)) {
-    col = 0;
-    row = (row == ROW_PAR_2) ? ROW_PAR : ROW_PAR_2;
-  }
-  //qDebug() << "new cell: " << row << "/" << col;
-  table->setCurrentCell(row, col);
+    if (!item)
+        return;
+
+    QTableWidget *table = item->tableWidget();
+
+    if (!table)
+        return;
+
+    int row = table->currentRow();
+    int col = table->currentColumn();
+
+    if (col < (COLS-1)) {
+        col++;
+    }
+    else if (col == (COLS-1)) {
+        col = 0;
+        if (row == ROW_PAR)
+            row = ROW_PAR_2;
+        else if (row == ROW_PAR_2)
+            row = ROW_PAR;
+        else if (row == ROW_HCP_2)
+            row = ROW_HCP;
+        else if (row == ROW_HCP)
+            row = ROW_HCP_2;
+    }
+    //qDebug() << "new cell: " << row << "/" << col;
+    table->setCurrentCell(row, col);
 }
 
 void CourseDialog::results(QVector<QString> &par,
-                         QVector<QString> &hcp,
-                         QVector<QString> &len)
+                           QVector<QString> &hcp,
+                           QVector<QString> &len)
 {
-  for (int i = 0; i < 9; i++) {
-    QTableWidgetItem *frontPar = table->item(ROW_PAR, i);
-    QTableWidgetItem *backPar = table->item(ROW_PAR_2, i);
-    QTableWidgetItem *frontHcp = table->item(ROW_HCP, i);
-    QTableWidgetItem *backHcp = table->item(ROW_HCP_2, i);
-    QTableWidgetItem *frontLen = table->item(ROW_LEN, i);
-    QTableWidgetItem *backLen = table->item(ROW_LEN_2, i);
-
-    if (frontPar)
-      par[i] = frontPar->text();
-    if (backPar)
-      par[i+9] = backPar->text();
-    if (frontHcp)
-      hcp[i] = frontHcp->text();
-    if (backHcp)
-      hcp[i+9] = backHcp->text();
-    if (frontLen)
-      len[i] = frontLen->text();
-    if (backLen)
-      len[i+9] = backLen->text();
-  }
+    for (int i = 0; i < 9; i++) {
+        QTableWidgetItem *frontPar = table->item(ROW_PAR, i);
+        QTableWidgetItem *backPar = table->item(ROW_PAR_2, i);
+        QTableWidgetItem *frontHcp = table->item(ROW_HCP, i);
+        QTableWidgetItem *backHcp = table->item(ROW_HCP_2, i);
+        QTableWidgetItem *frontLen = table->item(ROW_LEN, i);
+        QTableWidgetItem *backLen = table->item(ROW_LEN_2, i);
+
+        if (frontPar)
+            par[i] = frontPar->text();
+        if (backPar)
+            par[i+9] = backPar->text();
+        if (frontHcp)
+            hcp[i] = frontHcp->text();
+        if (backHcp)
+            hcp[i+9] = backHcp->text();
+        if (frontLen)
+            len[i] = frontLen->text();
+        if (backLen)
+            len[i+9] = backLen->text();
+    }
 }
 
 // Only par is mandatory
 bool CourseDialog::validate(void)
 {
-  for (int i = 0; i < 9; i++) {
-    QTableWidgetItem *frontItem = table->item(ROW_PAR, i);
-    QTableWidgetItem *backItem = table->item(ROW_PAR_2, i);
+    for (int i = 0; i < 9; i++) {
+        QTableWidgetItem *frontItem = table->item(ROW_PAR, i);
+        QTableWidgetItem *backItem = table->item(ROW_PAR_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 CourseDialog::finish(void)
 {
-  if (validate())
-    done(1);
-  else {
-    qDebug() << "CourseDialog: invalid data, cancel or correct";
-  }
+    if (validate())
+        done(1);
+    else {
+        qDebug() << "CourseDialog: invalid data, cancel or correct";
+    }
 }
 
 
index 35e7c8d..41d9535 100644 (file)
@@ -53,6 +53,7 @@ private slots:
  private:
 
   void createLayout(QWidget *parent);
+  void showNote(QString msg);
   bool validate(void);
 
   QLineEdit    *lineEditClub;
index 29b018c..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);
 }