////////////////////////////////////////////////////////////////////////////////
// ScoreWindow based on QMainWindow
+// Usage: view scorecard
////////////////////////////////////////////////////////////////////////////////
ScoreWindow::ScoreWindow(QWidget *parent) : QMainWindow(parent)
{
model->set(score, course);
}
-
////////////////////////////////////////////////////////////////////////////////
// SelectDialog based on QDialog
+// Usage: select course and date for entering score
////////////////////////////////////////////////////////////////////////////////
SelectDialog::SelectDialog(QWidget *parent) : QDialog(parent)
{
////////////////////////////////////////////////////////////////////////////////
// ScoreDialog based on QDialog
+// Usage: edit scorecard data
////////////////////////////////////////////////////////////////////////////////
-ScoreDialog::ScoreDialog(QWidget *parent) : QDialog(parent)
+ScoreDialog18::ScoreDialog18(QWidget *parent) : ScoreDialog(parent)
{
TRACE;
resize(800, 400);
createLayout(centralWidget);
}
-ScoreDialog::~ScoreDialog()
+ScoreDialog18::~ScoreDialog18()
{
//if (centralWidget)
// delete centralWidget;
delete table;
}
-void ScoreDialog::createLayout(QWidget *parent)
+void ScoreDialog18::createLayout(QWidget *parent)
{
TRACE;
leftLayout = new QVBoxLayout;
setLayout(mainLayout);
}
-void ScoreDialog::createTable(QWidget *parent)
+void ScoreDialog18::createTable(QWidget *parent)
{
TRACE;
table = new QTableWidget(ROWS, COLS, parent);
table->setVerticalHeaderLabels(headers);
}
-void ScoreDialog::createButton(QWidget *parent)
+void ScoreDialog18::createButton(QWidget *parent)
{
TRACE;
Q_UNUSED(parent);
connect(pushButtonFinish, SIGNAL(clicked()), this, SLOT(finish()));
}
-void ScoreDialog::init(Course *course, Score *score)
+void ScoreDialog18::init(Course *course, Score *score)
{
TRACE;
QTableWidgetItem *par, *hcp, *scoreItem, *holeNum;
}
// Set default score to par if not set
-void ScoreDialog::setDefaultScore(QTableWidget *table)
+void ScoreDialog18::setDefaultScore(QTableWidget *table)
{
int row = table->currentRow();
int col = table->currentColumn();
}
}
-void ScoreDialog::up(void)
+void ScoreDialog18::up(void)
{
QTableWidgetItem *item = table->currentItem();
item->setData(Qt::DisplayRole, value);
}
-void ScoreDialog::down(void)
+void ScoreDialog18::down(void)
{
QTableWidgetItem *item = table->currentItem();
item->setData(Qt::DisplayRole, value);
}
-void ScoreDialog::next(void)
+void ScoreDialog18::next(void)
{
if (table) {
QTableWidgetItem *item = table->currentItem();
}
}
-void ScoreDialog::moveToNextCell(QTableWidgetItem *item)
+void ScoreDialog18::moveToNextCell(QTableWidgetItem *item)
{
if (!item)
return;
table->setCurrentCell(row, col);
}
-void ScoreDialog::results(QVector<QString> &scores)
+void ScoreDialog18::results(QVector<QString> &scores)
{
TRACE;
for (int i = 0; i < 9; i++) {
}
}
-bool ScoreDialog::validate(void)
+bool ScoreDialog18::validate(void)
{
for (int i=0; i<9; i++) {
QTableWidgetItem *frontItem = table->item(ROW_SCORE, i);
return true;
}
-void ScoreDialog::finish(void)
+void ScoreDialog18::finish(void)
{
if (validate())
done(1);
}
}
-void ScoreDialog::reject(void)
+void ScoreDialog18::reject(void)
{
done(0);
}
-void ScoreDialog::showNote(QString msg)
+void ScoreDialog18::showNote(QString msg)
{
#ifdef Q_WS_MAEMO_5
QMaemo5InformationBox::information(this,
QMaemo5InformationBox::DefaultTimeout);
#endif
}
+
+////////////////////////////////////////////////////////////////////////////////
+// ScoreDialogSingle based on QDialog
+// Usage: edit scorecard data for single hole
+////////////////////////////////////////////////////////////////////////////////
+ScoreDialogSingle::ScoreDialogSingle(QWidget *parent) : QDialog(parent)
+{
+ TRACE;
+ resize(800, 400);
+ QFont font;
+ font.setPointSize(fontSize);
+ setFont(font);
+
+ QWidget *centralWidget = new QWidget(this);
+
+ createTable();
+ createButton();
+
+ createLayout(centralWidget);
+}
+
+ScoreDialogSingle::~ScoreDialogSingle()
+{
+ //if (centralWidget)
+ // delete centralWidget;
+ if (leftLayout)
+ delete leftLayout;
+ if (rightLayout)
+ delete rightLayout;
+ //if (mainLayout)
+ // delete mainLayout;
+ if (table)
+ delete table;
+}
+
+void ScoreDialogSingle::createLayout(QWidget *parent)
+{
+ TRACE;
+ 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 ScoreDialogSingle::createTable(QWidget *parent)
+{
+ TRACE;
+ table = new QTableWidget(5, 5, parent);
+
+ table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
+ table->verticalHeader()->setResizeMode(QHeaderView::Stretch);
+ table->horizontalHeader()->hide();
+
+ table->setStyleSheet(defaultStyleSheet);
+
+ QStringList headers;
+ headers << "" << "Par" << "HCP" << "Score" << "" << "Par" << "HCP" << "Score";
+ table->setVerticalHeaderLabels(headers);
+}
+
+void ScoreDialogSingle::createButton(QWidget *parent)
+{
+ TRACE;
+ 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()));
+
+ pushButtonNext = new QPushButton(tr("Next"));
+ connect(pushButtonNext, SIGNAL(clicked()), this, SLOT(next()));
+
+ pushButtonFinish = new QPushButton(tr("Finish"));
+ connect(pushButtonFinish, SIGNAL(clicked()), this, SLOT(finish()));
+}
ScoreTableModel *model;
};
-
class SelectDialog: public QDialog
{
Q_OBJECT;
void results(QString &club, QString &course, QString &date);
void init(QList<Club *> &list);
-private slots:
+ private slots:
void next(void);
private:
QLabel *labelCourse;
QPushButton *pushButtonNext;
- // Layouts
+ // Layouts
QVBoxLayout *leftLayout;
QVBoxLayout *rightLayout;
QList<Club *> clubList;
};
+// Base class for multiple score edit dialog
class ScoreDialog: public QDialog
{
- Q_OBJECT
+ Q_OBJECT;
public:
- ScoreDialog(QWidget *parent = 0);
- ~ScoreDialog();
- void init(Course *course, Score *score = 0);
- void results(QVector<QString> &scores);
- bool validate(void);
-
-private slots:
- void up(void);
- void down(void);
- void next(void);
- void finish(void);
+ ScoreDialog(QWidget *parent = 0) : QDialog(parent) {};
+
+ virtual void init(Course *course, Score *score = 0) = 0;
+ virtual void results(QVector<QString> &scores) = 0;
private:
+};
+
+// Class for editing 18 holes in one dialog
+class ScoreDialog18: public ScoreDialog
+{
+ Q_OBJECT;
+
+public:
+ ScoreDialog18(QWidget *parent = 0);
+ ~ScoreDialog18();
+ void init(Course *course, Score *score = 0);
+ void results(QVector<QString> &scores);
+ bool validate(void);
- void createTable(QWidget *parent = 0);
- void createButton(QWidget *parent = 0);
- void createLayout(QWidget *parent = 0);
- void setDefaultScore(QTableWidget *table);
- void moveToNextCell(QTableWidgetItem *item);
- void showNote(QString msg);
+ private slots:
+ void up(void);
+ void down(void);
+ void next(void);
+ void finish(void);
+
+private:
+
+ void createTable(QWidget *parent = 0);
+ void createButton(QWidget *parent = 0);
+ void createLayout(QWidget *parent = 0);
+ void setDefaultScore(QTableWidget *table);
+ void moveToNextCell(QTableWidgetItem *item);
+ void showNote(QString msg);
- enum { ROWS = 8, COLS = 9 };
- enum { ROW_HOLE = 0, ROW_PAR = 1, ROW_HCP = 2, ROW_SCORE = 3,
- ROW_HOLE_2 = 4, ROW_PAR_2 = 5, ROW_HCP_2 = 6, ROW_SCORE_2 = 7};
+ enum { ROWS = 8, COLS = 9 };
+ enum { ROW_HOLE = 0, ROW_PAR = 1, ROW_HCP = 2, ROW_SCORE = 3,
+ ROW_HOLE_2 = 4, ROW_PAR_2 = 5, ROW_HCP_2 = 6, ROW_SCORE_2 = 7};
+
+ void reject(void);
+
+ // Widgets
+ QTableWidget *table;
- void reject(void);
+ QPushButton *pushButtonFinish;
+ QPushButton *pushButtonUp;
+ QPushButton *pushButtonDown;
+ QPushButton *pushButtonNext;
+
+ // Layouts
+ QVBoxLayout *leftLayout;
+ QVBoxLayout *rightLayout;
+};
- // Widgets
- QTableWidget *table;
+// Class for editing single hole in one dialog
+class ScoreDialogSingle: public QDialog
+{
+ Q_OBJECT;
- QPushButton *pushButtonFinish;
- QPushButton *pushButtonUp;
- QPushButton *pushButtonDown;
- QPushButton *pushButtonNext;
+public:
+ ScoreDialogSingle(QWidget *parent = 0);
+ ~ScoreDialogSingle();
- // Layouts
- QVBoxLayout *leftLayout;
- QVBoxLayout *rightLayout;
+ void init(Course *course, Score *score = 0);
+ void results(QVector<QString> &scores);
+
+private:
+
+ void createTable(QWidget *parent = 0);
+ void createButton(QWidget *parent = 0);
+ void createLayout(QWidget *parent = 0);
+
+ // Widgets
+ QTableWidget *table;
+
+ QPushButton *pushButtonFinish;
+ QPushButton *pushButtonUp;
+ QPushButton *pushButtonDown;
+ QPushButton *pushButtonNext;
+
+ // Layouts
+ QVBoxLayout *leftLayout;
+ QVBoxLayout *rightLayout;
};
#endif