TODO General:
-
-for 0.1
-- New score - first entry does not update
- - Seems to be bug in the Qt/Maemo
-
-for 0.2
-- Date picker button (widget is missing)
-- Course view - sort menu buttons
-- Edit course
-- Edit score
+- Statistics view (BIG)
- Delete score
- Delete course
-
-for 0.3
-- Stat view
- Settings
+- New score - first entry does not update
+ - Seems to be bug in the Qt/Maemo
+- Date picker button (widget is missing)
TODO Hildon 2.2
-
-- Date picker for the score dialog
- Replace LineEdit w/ HildonEntry
TODO Arch
- move scorelist (and all data handling) to table-model
-
Know issues
- Data on MMC does not work
headers << "" << "Par" << "HCP" << "Len" << "" << "Par" << "HCP" << "Len";
table->setVerticalHeaderLabels(headers);
table->horizontalHeader()->hide();
-
- //CellDelegate *cellDelegate = new CellDelegate(this);
- //table->setItemDelegate(cellDelegate);
-
table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
table->verticalHeader()->setResizeMode(QHeaderView::Stretch);
+}
+
+void CourseDialog::init(Course *course)
+{
+ QTableWidgetItem *par, *hcp;
for (int i=0; i<18; i++) {
- QTableWidgetItem *par = new QTableWidgetItem("4");
- QTableWidgetItem *hcp = new QTableWidgetItem("9");
+ 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));
table->setItem(7, i-9, len);
}
}
+
}
void CourseDialog::up(void)
#include <QLineEdit>
#include <QDebug>
+#include "data.h"
+
QT_BEGIN_NAMESPACE
class QTableWidget;
class QTableWidgetItem;
CourseDialog(QWidget *w);
void results(QVector<QString> &, QVector<QString> &, QVector<QString> &);
bool validate();
+ void init(Course *course = 0);
private slots:
void up(void);
return hcp;
}
+void Hole::setHcp(QString& s) {
+ hcp = s;
+}
+
QString Hole::getPar() {
return par;
}
+void Hole::setPar(QString& s) {
+ par = s;
+}
+
void Hole::dump() {
qDebug() << num << "(" << par << ") : " << shots << "/" << putts ;
}
return node;
}
-int Score::update(QVector<QString> scores)
+int Score::update(QVector<QString> &scores)
{
for (int i = 0; i < scores.size(); i++) {
Hole *hole = holeList.at(i);
return node;
}
+int Course::update(QVector<QString> &par,
+ QVector<QString> &hcp,
+ QVector<QString> &len)
+{
+ for (int i = 0; i < par.size(); i++) {
+ Hole *hole = holeList.at(i);
+ if (hole->getPar() != par[i])
+ hole->setPar(par[i]);
+ if (hole->getHcp() != hcp[i])
+ hole->setHcp(hcp[i]);
+ }
+ return 0;
+}
+
void Course::addHole(Hole *iHole) {
holeList << iHole;
}
QString getShots();
void setShots(QString& shots);
QString getHcp();
+ void setHcp(QString& shots);
QString getPar();
+ void setPar(QString& shots);
void dump();
private:
}
QDomElement toElement(QDomDocument doc);
- int update(QVector<QString> scores);
+ int update(QVector<QString> &scores);
void addHole(Hole *iHole);
QString getScore(int i) const;
QString getTotal(int what) const;
Course(const QDomElement node);
Course(QString &name, QVector<QString> &, QVector<QString> &);
QDomElement toElement(QDomDocument doc);
+ int update(QVector<QString> &, QVector<QString> &, QVector<QString> &);
void addHole(Hole *iHole);
QString getPar(int i);
QString getHcp(int i);
private:
QList <Hole *> holeList;
QString name;
-
};
class Club {
editScoreAct = new QAction(tr("Edit Score"), this);
connect(editScoreAct, SIGNAL(triggered()), this, SLOT(editScore()));
+ editCourseAct = new QAction(tr("Edit Course"), this);
+ connect(editCourseAct, SIGNAL(triggered()), this, SLOT(editCourse()));
+
#if 0
viewScoreAct = new QAction(tr("&View Scores"), this);
connect(viewScoreAct, SIGNAL(triggered()), this, SLOT(viewScore()));
menu->addAction(newScoreAct);
menu->addAction(newCourseAct);
menu->addAction(editScoreAct);
+ menu->addAction(editCourseAct);
}
void MainWindow::updateStatusBar()
selectDialog->results(clubName, courseName);
CourseDialog *courseDialog = new CourseDialog(this);
+ courseDialog->init();
QString title = "New Course: " + clubName + "," + courseName;
courseDialog->setWindowTitle(title);
}
}
+void MainWindow::editCourse()
+{
+ Course *course = scoreTableModel->getCourse();
+
+ CourseDialog *courseDialog = new CourseDialog(this);
+ courseDialog->init(course);
+
+ QString title = "Edit Course: " + course->getName();
+ courseDialog->setWindowTitle(title);
+
+ int result = courseDialog->exec();
+ if (result) {
+ QVector<QString> par(18);
+ QVector<QString> hcp(18);
+ QVector<QString> len(18);
+
+ courseDialog->results(par, hcp, len);
+
+ course->update(par, hcp, len);
+ saveClubFile(clubFile, clubList);
+ }
+}
+
void MainWindow::newScore()
{
SelectDialog *selectDialog = new SelectDialog(this);
qDebug() << "Error: no such course: " << courseName;
return;
}
-
scoreDialog->init(course);
-
result = scoreDialog->exec();
-
if (result) {
QVector<QString> scores(18);
MainWindow(QMainWindow *parent = 0);
void createLayout(QWidget *parent = 0);
void createStatusBar();
- void createTableView(QList<Score *> &scoreList, QList <Club *> &clubList);
- void createTreeView(QList<Score *> &scoreList, QObject *parent);
+ void createTableView(QList<Score *> &, QList <Club *> &);
+ void createTreeView(QList<Score *> &, QObject *parent = 0);
void updateStatusBar();
void loadScoreFile(QString &fileName, QList<Score *> &scoreList);
void loadClubFile(QString &fileName, QList<Club *> &clubList);
void updateTreeView(const QModelIndex & index);
void newScore();
- void newCourse();
void editScore();
+ void newCourse();
+ void editCourse();
private:
// Actions
QAction *newScoreAct;
- QAction *newCourseAct;
QAction *editScoreAct;
+ QAction *newCourseAct;
+ QAction *editCourseAct;
+
QAction *viewScoreAct;
QAction *viewCourseAct;
QAction *viewStatisticAct;