From 31f255e1e4438bd350c5cdf38ea687f367418653 Mon Sep 17 00:00:00 2001 From: Sakari Poussa Date: Tue, 11 May 2010 23:55:46 +0300 Subject: [PATCH] - Add and flush default courses when settings change - Store settings in QSettings --- src/main-window.cpp | 71 +++++++++++++++++++++++++++++++++++++++------------ src/main-window.h | 2 +- 2 files changed, 55 insertions(+), 18 deletions(-) diff --git a/src/main-window.cpp b/src/main-window.cpp index 33c4e20..c22be4d 100644 --- a/src/main-window.cpp +++ b/src/main-window.cpp @@ -34,6 +34,10 @@ QString masterFile; QString logFile("/tmp/scorecard.log"); QString titleScores("ScoreCard - Scores"); QString titleCourses("ScoreCard - Courses"); +QString settingsGroup("Settings"); +QString settingsHcp("hcp"); +QString settingsHomeClub("home-club"); +QString settingsDefaultCourses("default-courses"); bool dateLessThan(const Score *s1, const Score *s2) { @@ -105,6 +109,21 @@ Course *MainWindow::findCourse() return findCourse(strList[0], strList[1]); } +void MainWindow::flushReadOnlyItems() +{ + QMutableListIterator i(clubList); + Club *c; + + while (i.hasNext()) { + c = i.next(); + if (c->isReadOnly()) { + qDebug() << "Del:" << c->getName(); + i.remove(); + } + } +} + + MainWindow::MainWindow(QMainWindow *parent): QMainWindow(parent) { resize(800, 480); @@ -120,7 +139,8 @@ MainWindow::MainWindow(QMainWindow *parent): QMainWindow(parent) setCentralWidget(centralWidget); loadScoreFile(scoreFile, scoreList); - loadClubFile(masterFile, clubList, true); + if (conf.defaultCourses == "Yes") + loadClubFile(masterFile, clubList, true); loadClubFile(clubFile, clubList); // Sort the scores based on dates @@ -166,27 +186,31 @@ void MainWindow::loadSettings(void) } qDebug() << "Data is at:" + dataDir; - settings.beginGroup("Settings"); - conf.hcp = settings.value("hcp"); - conf.homeClub = settings.value("home-club"); - conf.defaultCourses = settings.value("default-courses"); + 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"; + qDebug() << "Settings: " << conf.hcp << conf.homeClub << conf.defaultCourses; } void MainWindow::saveSettings(void) { - settings.beginGroup("Settings"); + settings.beginGroup(settingsGroup); if (conf.hcp.isValid()) - settings.setValue("hcp", conf.hcp); + settings.setValue(settingsHcp, conf.hcp); if (conf.homeClub.isValid()) - settings.setValue("home-club", conf.homeClub); + settings.setValue(settingsHomeClub, conf.homeClub); if (conf.defaultCourses.isValid()) - settings.setValue("default-courses", conf.defaultCourses); + settings.setValue(settingsDefaultCourses, conf.defaultCourses); settings.endGroup(); } - void MainWindow::createLayoutList(QWidget *parent) { QVBoxLayout * tableLayout = new QVBoxLayout; @@ -344,7 +368,7 @@ void MainWindow::newCourse() if (club) { course = club->getCourse(courseName); if (course) { - qDebug() << "Error: club/course already in the database"; + showNote(tr("Club/course already in the database")); return; } else { @@ -645,11 +669,24 @@ void MainWindow::viewSettings() int result = dlg->exec(); if (result) { - QString a, b, c; - + QString oldValue = conf.defaultCourses.toString(); dlg->results(conf); - //qDebug() << << b << c; + QString newValue = conf.defaultCourses.toString(); saveSettings(); + + qDebug() << "Settings:" << oldValue << "->" << newValue; + + // Reload club list, or drop r/o courses from list + if (oldValue == "Yes" && newValue == "No") { + flushReadOnlyItems(); + courseListModel->update(clubList); + list->update(); + } + else if ((oldValue == "No" || oldValue == "") && newValue == "Yes") { + loadClubFile(masterFile, clubList, true); + courseListModel->update(clubList); + list->update(); + } } } @@ -674,10 +711,10 @@ void MainWindow::saveScoreFile(QString &fileName, QList &list) void MainWindow::loadClubFile(QString &fileName, QList &list, bool readOnly) { - ClubXmlHandler handler(list); + ClubXmlHandler handler(list); - if (handler.parse(fileName, readOnly)) - qDebug() << "File loaded:" << fileName << " entries:" << list.size(); + if (handler.parse(fileName, readOnly)) + qDebug() << "File loaded:" << fileName << " entries:" << list.size(); } void MainWindow::saveClubFile(QString &fileName, QList &list) diff --git a/src/main-window.h b/src/main-window.h index 95bf002..d587a77 100644 --- a/src/main-window.h +++ b/src/main-window.h @@ -64,6 +64,7 @@ private: Course * findCourse(const QString &clubName, const QString &courseName); Course * findCourse(); Score * findScore(QString & clubName, QString & courseName); + void flushReadOnlyItems(); void showNote(QString msg); void getStat(QTextEdit *); @@ -80,7 +81,6 @@ private: QItemSelectionModel *selectionModel; - QTableView *table; QListView *list; // Layouts -- 1.7.9.5