bool dateLessThan(const Score *s1, const Score *s2)
{
- return (*s1) < (*s2);
+ return (*s1) < (*s2);
}
bool dateMoreThan(const Score *s1, const Score *s2)
{
- return (*s1) > (*s2);
+ return (*s1) > (*s2);
}
+
+bool scoreMoreThan(const Score *s1, const Score *s2)
+{
+ return s1->getTotal(Total) > s2->getTotal(Total);
+}
+
// Find score based on club and course name
Score *MainWindow::findScore(QString & clubName, QString & courseName)
{
}
}
+void MainWindow::sortScoreList()
+{
+ if (conf.sortOrder == "Date")
+ qSort(scoreList.begin(), scoreList.end(), dateMoreThan);
+ else if (conf.sortOrder == "Score")
+ qSort(scoreList.begin(), scoreList.end(), scoreMoreThan);
+}
+
MainWindow::MainWindow(QMainWindow *parent): QMainWindow(parent)
{
resize(800, 480);
loadClubFile(clubFile, clubList);
markHomeClub();
- // Sort the scores based on dates
- qSort(scoreList.begin(), scoreList.end(), dateMoreThan);
+ // Sort the scores based on settings
+ sortScoreList();
+
createActions();
createMenus();
void MainWindow::loadSettings(void)
{
TRACE;
- bool external = false;
+ bool external = false;
- QDir mmc(mmcDir);
- if (mmc.exists())
- external = true;
+ QDir mmc(mmcDir);
+ if (mmc.exists())
+ external = true;
- // TODO: make via user option, automatic will never work
- external = false;
+ // TODO: make via user option, automatic will never work
+ external = false;
#ifndef Q_WS_MAEMO_5
- dataDir = "./" + dataDirName;
+ dataDir = "./" + dataDirName;
#else
- if (external) {
- dataDir = mmcDir + "/" + appName + "/" + dataDirName;
- }
- else {
- dataDir = topDir + "/" + appName + "/" + dataDirName;
- }
-#endif
- scoreFile = dataDir + "/" + scoreFileName;
- clubFile = dataDir + "/" + clubFileName;
- masterFile = dataDir + "/" + masterFileName;
-
- QDir dir(dataDir);
- if (!dir.exists())
- if (!dir.mkpath(dataDir)) {
- qWarning() << "Unable to create: " + dataDir;
- return;
+ if (external) {
+ dataDir = mmcDir + "/" + appName + "/" + dataDirName;
}
- qDebug() << "Data is at:" + dataDir;
+ else {
+ dataDir = topDir + "/" + appName + "/" + dataDirName;
+ }
+#endif
+ scoreFile = dataDir + "/" + scoreFileName;
+ clubFile = dataDir + "/" + clubFileName;
+ masterFile = dataDir + "/" + masterFileName;
+
+ QDir dir(dataDir);
+ if (!dir.exists())
+ if (!dir.mkpath(dataDir)) {
+ qWarning() << "Unable to create: " + dataDir;
+ return;
+ }
+ qDebug() << "Data is at:" + dataDir;
+
+ settings.beginGroup(settingsGroup);
+ conf.hcp = settings.value(settingsHcp);
+ conf.homeClub = settings.value(settingsHomeClub);
+ conf.sortOrder = settings.value(settingsSortOrder);
+ conf.defaultCourses = settings.value(settingsDefaultCourses);
+ settings.endGroup();
- settings.beginGroup(settingsGroup);
- conf.hcp = settings.value(settingsHcp);
- conf.homeClub = settings.value(settingsHomeClub);
- conf.defaultCourses = settings.value(settingsDefaultCourses);
- settings.endGroup();
+ // Use default courses if no settings for that
+ if (!conf.defaultCourses.isValid())
+ conf.defaultCourses = "Yes";
- // Use default courses if no settings for that
- if (!conf.defaultCourses.isValid())
- conf.defaultCourses = "Yes";
+ // Use date sort order if no settings for that
+ if (!conf.sortOrder.isValid())
+ conf.sortOrder = "Yes";
- qDebug() << "Settings: " << conf.hcp << conf.homeClub << conf.defaultCourses;
+ qDebug() << "Settings: " << conf.hcp << conf.homeClub << conf.sortOrder << conf.defaultCourses;
}
void MainWindow::saveSettings(void)
settings.setValue(settingsHcp, conf.hcp);
if (conf.homeClub.isValid())
settings.setValue(settingsHomeClub, conf.homeClub);
+ if (conf.sortOrder.isValid())
+ settings.setValue(settingsSortOrder, conf.sortOrder);
if (conf.defaultCourses.isValid())
settings.setValue(settingsDefaultCourses, conf.defaultCourses);
settings.endGroup();
void MainWindow::viewScore(Score * score, Course * course)
{
TRACE;
- qDebug() << score << course;
scoreWindow->setup(score, course);
scoreWindow->show();
}
Score *score = new Score(scores, clubName, courseName, date);
scoreList << score;
- // Sort the scores based on dates
- qSort(scoreList.begin(), scoreList.end(), dateMoreThan);
+ // Sort the scores based on settings
+ sortScoreList();
// Save it
saveScoreFile(scoreFile, scoreList);
scoreListModel->update(scoreList);
courseListModel->update(clubList);
list->update();
}
+ // TODO: do these only if needed
markHomeClub();
+ sortScoreList();
+ scoreListModel->update(scoreList);
+ list->update();
}
}
void MainWindow::loadScoreFile(QString &fileName, QList<Score *> &list)
{
- ScoreXmlHandler handler(list);
+ ScoreXmlHandler handler(list);
- if (handler.parse(fileName))
- qDebug() << "File loaded:" << fileName << " entries:" << list.size();
+ if (handler.parse(fileName))
+ qDebug() << "File loaded:" << fileName << " entries:" << list.size();
}
void MainWindow::saveScoreFile(QString &fileName, QList<Score *> &list)
{
- ScoreXmlHandler handler(list);
+ ScoreXmlHandler handler(list);
- if (handler.save(fileName))
- // TODO: banner
- qDebug() << "File saved:" << fileName << " entries:" << list.size();
- else
- qWarning() << "Unable to save:" << fileName;
+ if (handler.save(fileName))
+ // TODO: banner
+ qDebug() << "File saved:" << fileName << " entries:" << list.size();
+ else
+ qWarning() << "Unable to save:" << fileName;
}
void MainWindow::loadClubFile(QString &fileName, QList<Club *> &list, bool readOnly)
void MainWindow::saveClubFile(QString &fileName, QList<Club *> &list)
{
- ClubXmlHandler handler(list);
-
- if (handler.save(fileName))
- // TODO: banner
- qDebug() << "File saved:" << fileName << " entries:" << list.size();
- else
- qWarning() << "Unable to save:" << fileName;
+ ClubXmlHandler handler(list);
+ if (handler.save(fileName))
+ // TODO: banner
+ qDebug() << "File saved:" << fileName << " entries:" << list.size();
+ else
+ qWarning() << "Unable to save:" << fileName;
}
homeClubButton->setPickSelector(listPickSelector2);
homeClubButton->setText(QString::fromUtf8("Home Club"));
+ // Sort Order
+ sortButton = new QMaemo5ValueButton();
+ sortButton->setValueLayout(QMaemo5ValueButton::ValueBesideText);
+ QMaemo5ListPickSelector * listPickSelector4 = new QMaemo5ListPickSelector;
+ QStringList sortList;
+ sortList << "Date" << "Score";
+ sortModel = new QStandardItemModel(sortList.count(), 0);
+ for (int i = 0; i < sortList.count(); i++) {
+ item = new QStandardItem(QString("%0").arg(sortList.at(i)));
+ item->setTextAlignment(Qt::AlignCenter);
+ sortModel->setItem(i, item);
+ }
+ listPickSelector4->setModel(sortModel);
+ sortButton->setPickSelector(listPickSelector4);
+ sortButton->setText(QString::fromUtf8("Sort Order"));
+
// Use Default Courses
defaultCoursesButton = new QMaemo5ValueButton();
defaultCoursesButton->setValueLayout(QMaemo5ValueButton::ValueBesideText);
leftLayout->addWidget(hcpButton);
leftLayout->addWidget(homeClubButton);
+ leftLayout->addWidget(sortButton);
leftLayout->addWidget(defaultCoursesButton);
#endif
}
QListIterator<Club *> i(clubList);
-
+
while (i.hasNext()) {
Club *club = i.next();
QStandardItem *item = new QStandardItem(QString("%0").arg(club->getName()));
index++;
}
+ if (conf.sortOrder.isValid()) {
+ int index = conf.sortOrder.toString() == "Date" ? 0 : 1;
+ sel = (QMaemo5ListPickSelector *)sortButton->pickSelector();
+ sel->setCurrentIndex(index);
+ }
+
if (conf.defaultCourses.isValid()) {
int index = conf.defaultCourses.toString() == "Yes" ? 0 : 1;
sel = (QMaemo5ListPickSelector *)defaultCoursesButton->pickSelector();
item = homeClubModel->item(sel->currentIndex());
conf.homeClub = item->data(Qt::DisplayRole);
}
+ sel = (QMaemo5ListPickSelector *)sortButton->pickSelector();
+ if (sel->currentIndex() != -1) {
+ item = sortModel->item(sel->currentIndex());
+ conf.sortOrder = item->data(Qt::DisplayRole);
+ }
sel = (QMaemo5ListPickSelector *)defaultCoursesButton->pickSelector();
if (sel->currentIndex() != -1) {
item = defaultCoursesModel->item(sel->currentIndex());