- Add and flush default courses when settings change
authorSakari Poussa <spoussa@gmail.com>
Tue, 11 May 2010 20:55:46 +0000 (23:55 +0300)
committerSakari Poussa <spoussa@gmail.com>
Tue, 11 May 2010 20:55:46 +0000 (23:55 +0300)
- Store settings in QSettings

src/main-window.cpp
src/main-window.h

index 33c4e20..c22be4d 100644 (file)
@@ -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<Club *> 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<Score *> &list)
 
 void MainWindow::loadClubFile(QString &fileName, QList<Club *> &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<Club *> &list)
index 95bf002..d587a77 100644 (file)
@@ -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