Browse Source

edited settings, created wrapper around QSettings

fiffty-50 4 years ago
parent
commit
2f8e640b4d

+ 2 - 0
openPilotLog.pro

@@ -23,6 +23,7 @@ SOURCES += \
     src/classes/completionlist.cpp \
     src/classes/flight.cpp \
     src/classes/pilot.cpp \
+    src/classes/settings.cpp \
     src/classes/stat.cpp \
     src/classes/strictrxvalidator.cpp \
     src/database/db.cpp \
@@ -45,6 +46,7 @@ HEADERS += \
     src/classes/completionlist.h \
     src/classes/flight.h \
     src/classes/pilot.h \
+    src/classes/settings.h \
     src/classes/stat.h \
     src/classes/strictrxvalidator.h \
     src/database/db.h \

+ 8 - 8
src/classes/calc.cpp

@@ -456,20 +456,20 @@ void Calc::updateAutoTimes(int acft_id)
  */
 void Calc::updateNightTimes()
 {
-    QSettings settings;
-    int nightAngle = settings.value("flightlogging/nightangle").toInt();
-    QVector<QString> columns = {"id"};
+    const int nightAngle = Settings::read("flightlogging/nightangle").toInt();
+    const QVector<QString> columns = {"id"};
     auto flights = Db::multiSelect(columns,"flights");
     for (const auto& item : flights) {
         auto flt = new Flight(item.toInt());
         auto dateTime = QDateTime(QDate::fromString(flt->data.value("doft"),Qt::ISODate),
                                   QTime().addSecs(flt->data.value("tofb").toInt() * 60),
                                   Qt::UTC);
-        flt->data.insert("tNIGHT", QString::number(calculateNightTime(flt->data.value("dept"),
-                                                                      flt->data.value("dest"),
-                                                                      dateTime,
-                                                                      flt->data.value("tblk").toInt(),
-                                                                      nightAngle)));
+        flt->data.insert("tNIGHT", QString::number(
+                             calculateNightTime(flt->data.value("dept"),
+                             flt->data.value("dest"),
+                             dateTime,
+                             flt->data.value("tblk").toInt(),
+                             nightAngle)));
         flt->commit();
     }
 }

+ 1 - 1
src/classes/calc.h

@@ -22,10 +22,10 @@
 #include "src/database/db.h"
 #include "src/classes/aircraft.h"
 #include "src/classes/flight.h"
+#include "src/classes/settings.h"
 #include <QDateTime>
 #include <cmath>
 #include <QDebug>
-#include <QSettings>
 /*!
  * \brief The calc class provides functionality for various calculations that are performed
  * outside of the database. This includes tasks like converting different units and formats,

+ 30 - 0
src/classes/settings.cpp

@@ -0,0 +1,30 @@
+/*
+ *openPilot Log - A FOSS Pilot Logbook Application
+ *Copyright (C) 2020  Felix Turowsky
+ *
+ *This program is free software: you can redistribute it and/or modify
+ *it under the terms of the GNU General Public License as published by
+ *the Free Software Foundation, either version 3 of the License, or
+ *(at your option) any later version.
+ *
+ *This program is distributed in the hope that it will be useful,
+ *but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *GNU General Public License for more details.
+ *
+ *You should have received a copy of the GNU General Public License
+ *along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ */
+#include "settings.h"
+
+QVariant Settings::read(const QString &key)
+{
+    QSettings settings;
+    return settings.value(key);
+}
+
+void Settings::write(const QString& key, const QVariant& val)
+{
+    QSettings settings;
+    settings.setValue(key, val);
+}

+ 35 - 0
src/classes/settings.h

@@ -0,0 +1,35 @@
+/*
+ *openPilot Log - A FOSS Pilot Logbook Application
+ *Copyright (C) 2020  Felix Turowsky
+ *
+ *This program is free software: you can redistribute it and/or modify
+ *it under the terms of the GNU General Public License as published by
+ *the Free Software Foundation, either version 3 of the License, or
+ *(at your option) any later version.
+ *
+ *This program is distributed in the hope that it will be useful,
+ *but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *GNU General Public License for more details.
+ *
+ *You should have received a copy of the GNU General Public License
+ *along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ */
+#ifndef SETTINGS_H
+#define SETTINGS_H
+#include <QtCore>
+#include <QSettings>
+
+/*!
+ * \brief The Settings class is a thin wrapper for the QSettings class,
+ * simplifying reading and writing of settings.
+ */
+class Settings
+{
+public:
+    static QVariant read(const QString& key);
+
+    static void write(const QString& key, const QVariant& val);
+};
+
+#endif // SETTINGS_H

+ 14 - 16
src/gui/dialogues/firstrundialog.cpp

@@ -36,8 +36,7 @@ void FirstRunDialog::on_nextPushButton_clicked()
 
 void FirstRunDialog::themeGroup_toggled(int id)
 {
-    QSettings settings;
-    settings.setValue("main/theme", id);
+    Settings::write("main/theme", id);
 }
 
 void FirstRunDialog::on_finishButton_clicked()
@@ -47,31 +46,30 @@ void FirstRunDialog::on_finishButton_clicked()
         mb->setText("You have to enter a valid first and last name for the logbook.");
         mb->show();
     } else {
-        QSettings settings;
-        settings.setValue("userdata/piclastname",ui->piclastnameLineEdit->text());
-        settings.setValue("userdata/picfirstname",ui->picfirstnameLineEdit->text());
-        settings.setValue("userdata/employeeid",ui->employeeidLineEdit->text());
-        settings.setValue("userdata/phone",ui->phoneLineEdit->text());
-        settings.setValue("userdata/email",ui->emailLineEdit->text());
+        Settings::write("userdata/piclastname",ui->piclastnameLineEdit->text());
+        Settings::write("userdata/picfirstname",ui->picfirstnameLineEdit->text());
+        Settings::write("userdata/employeeid",ui->employeeidLineEdit->text());
+        Settings::write("userdata/phone",ui->phoneLineEdit->text());
+        Settings::write("userdata/email",ui->emailLineEdit->text());
 
-        settings.setValue("flightlogging/function", ui->functionComboBox->currentText());
-        settings.setValue("flightlogging/rules", ui->rulesComboBox->currentText());
-        settings.setValue("flightlogging/approach", ui->approachComboBox->currentText());
-        settings.setValue("flightlogging/nightlogging", ui->nightComboBox->currentIndex());
-        settings.setValue("flightlogging/flightnumberPrefix", ui->prefixLineEdit->text());
+        Settings::write("flightlogging/function", ui->functionComboBox->currentText());
+        Settings::write("flightlogging/rules", ui->rulesComboBox->currentText());
+        Settings::write("flightlogging/approach", ui->approachComboBox->currentText());
+        Settings::write("flightlogging/nightlogging", ui->nightComboBox->currentIndex());
+        Settings::write("flightlogging/flightnumberPrefix", ui->prefixLineEdit->text());
 
         QMap<QString,QString> data;
         switch (ui->aliasComboBox->currentIndex()) {
         case 0:
-            settings.setValue("userdata/displayselfas",ui->aliasComboBox->currentIndex());
+            Settings::write("userdata/displayselfas",ui->aliasComboBox->currentIndex());
             data.insert("displayname","self");
             break;
         case 1:
-            settings.setValue("userdata/displayselfas",ui->aliasComboBox->currentIndex());
+            Settings::write("userdata/displayselfas",ui->aliasComboBox->currentIndex());
             data.insert("displayname","SELF");
             break;
         case 2:{
-            settings.setValue("userdata/displayselfas",ui->aliasComboBox->currentIndex());
+            Settings::write("userdata/displayselfas",ui->aliasComboBox->currentIndex());
             QString name;
             name.append(ui->piclastnameLineEdit->text());
             name.append(QLatin1String(", "));

+ 1 - 1
src/gui/dialogues/firstrundialog.h

@@ -3,9 +3,9 @@
 
 #include <QDialog>
 #include <QButtonGroup>
-#include <QSettings>
 #include <QMessageBox>
 #include <QRegularExpressionValidator>
+#include "src/classes/settings.h"
 #include "src/classes/pilot.h"
 
 namespace Ui {

+ 1 - 2
src/gui/dialogues/newtail.cpp

@@ -296,8 +296,7 @@ void NewTail::on_buttonBox_accepted()
             submitForm(role);
             accept();
         } else {
-            QSettings setting;
-            if (!setting.value("userdata/acAllowIncomplete").toInt()) {
+            if (!Settings::read("userdata/acAllowIncomplete").toInt()) {
                 auto nope = new QMessageBox(this);
                 nope->setText("Some or all fields are empty.\nPlease go back and "
                               "complete the form.\n\nYou can allow logging incomplete entries on the settings page.");

+ 2 - 1
src/gui/dialogues/newtail.h

@@ -21,8 +21,9 @@
 #include <QDialog>
 #include <QCompleter>
 #include <QMessageBox>
-#include <QSettings>
 #include <QRegularExpression>
+
+#include "src/classes/settings.h"
 #include "src/classes/completionlist.h"
 #include "src/classes/aircraft.h"
 #include "src/classes/strictrxvalidator.h"

+ 1 - 2
src/gui/widgets/aircraftwidget.cpp

@@ -136,8 +136,7 @@ void AircraftWidget::refreshView()
     view->setAlternatingRowColors(true);
     view->setSortingEnabled(true);
 
-    QSettings settings;
-    view->sortByColumn(settings.value("userdata/acSortColumn").toInt(), Qt::AscendingOrder);
+    view->sortByColumn(Settings::read("userdata/acSortColumn").toInt(), Qt::AscendingOrder);
 
     view->show();
 

+ 3 - 1
src/gui/widgets/aircraftwidget.h

@@ -23,11 +23,13 @@
 #include <QSqlTableModel>
 #include <QDebug>
 #include <QLabel>
-#include <QSettings>
+
+#include "src/classes/settings.h"
 #include "src/gui/dialogues/newtail.h"
 #include "src/classes/aircraft.h"
 #include "src/database/db.h"
 
+
 namespace Ui {
 class AircraftWidget;
 }

+ 3 - 6
src/gui/widgets/logbookwidget.cpp

@@ -30,8 +30,7 @@ LogbookWidget::LogbookWidget(QWidget *parent) :
     ui->filterDateEdit->setDate(QDate::currentDate());
     ui->filterDateEdit_2->setDate(QDate::currentDate());
     ui->newFlightButton->setFocus();
-    QSettings settings;
-    refreshView(settings.value("logbook/view").toInt());
+    refreshView(Settings::read("logbook/view").toInt());
 }
 
 LogbookWidget::~LogbookWidget()
@@ -91,8 +90,7 @@ void LogbookWidget::on_deleteFlightPushButton_clicked()
             DEB("Deleting flight with ID# " << selectedFlight);
             auto en = new Flight(selectedFlight);
             en->remove();
-            QSettings settings;
-            refreshView(settings.value("logbook/view").toInt());
+            refreshView(Settings::read("logbook/view").toInt());
         }
     } else {
         QMessageBox NoFlight;
@@ -119,8 +117,7 @@ void LogbookWidget::on_filterFlightsByDateButton_clicked()
 
 void LogbookWidget::on_showAllButton_clicked()
 {
-    QSettings settings;
-    refreshView(settings.value("logbook/view").toInt());
+    refreshView(Settings::read("logbook/view").toInt());
 }
 
 void LogbookWidget::refreshView(int view_id)

+ 1 - 1
src/gui/widgets/logbookwidget.h

@@ -24,8 +24,8 @@
 #include <QMessageBox>
 #include <chrono>
 #include <QDebug>
-#include <QSettings>
 
+#include "src/classes/settings.h"
 #include "src/database/db.h"
 #include "src/classes/flight.h"
 

+ 1 - 2
src/gui/widgets/pilotswidget.cpp

@@ -137,9 +137,8 @@ void PilotsWidget::refreshView()
     view->verticalHeader()->hide();
     view->setAlternatingRowColors(true);
     view->setSortingEnabled(true);
-    QSettings settings;
 
-    view->sortByColumn(settings.value("userdata/pilSortColumn").toInt(), Qt::AscendingOrder);
+    view->sortByColumn(Settings::read("userdata/pilSortColumn").toInt(), Qt::AscendingOrder);
 
     view->show();
 

+ 1 - 1
src/gui/widgets/pilotswidget.h

@@ -23,7 +23,7 @@
 #include <QSqlTableModel>
 #include <QDebug>
 #include <QLabel>
-#include <QSettings>
+#include "src/classes/settings.h"
 #include "src/classes/pilot.h"
 #include "src/gui/dialogues/newpilot.h"
 

+ 41 - 61
src/gui/widgets/settingswidget.cpp

@@ -68,29 +68,28 @@ SettingsWidget::~SettingsWidget()
 
 void SettingsWidget::fillSettings()
 {
-    QSettings settings;
     /*
      * Personal Tab
      */
-    ui->piclastnameLineEdit->setText(settings.value("userdata/piclastname").toString());
-    ui->picfirstnameLineEdit->setText(settings.value("userdata/picfirstname").toString());
-    ui->companyLineEdit->setText(settings.value("userdata/company").toString());
-    ui->employeeidLineEdit->setText(settings.value("userdata/employeeid").toString());
-    ui->phoneLineEdit->setText(settings.value("userdata/phone").toString());
-    ui->emailLineEdit->setText(settings.value("userdata/email").toString());
+    ui->piclastnameLineEdit->setText(Settings::read("userdata/piclastname").toString());
+    ui->picfirstnameLineEdit->setText(Settings::read("userdata/picfirstname").toString());
+    ui->companyLineEdit->setText(Settings::read("userdata/company").toString());
+    ui->employeeidLineEdit->setText(Settings::read("userdata/employeeid").toString());
+    ui->phoneLineEdit->setText(Settings::read("userdata/phone").toString());
+    ui->emailLineEdit->setText(Settings::read("userdata/email").toString());
     /*
      * Flight Logging Tab
      */
-    ui->aliasComboBox->setCurrentIndex(settings.value("userdata/displayselfas").toInt());
-    ui->functionComboBox->setCurrentText(settings.value("flightlogging/function").toString());
-    ui->rulesComboBox->setCurrentText(settings.value("flightlogging/rules").toString());
-    ui->approachComboBox->setCurrentText(settings.value("flightlogging/approach").toString());
-    ui->nightComboBox->setCurrentIndex(settings.value("flightlogging/nightlogging").toInt());
-    ui->prefixLineEdit->setText(settings.value("flightlogging/flightnumberPrefix").toString());
+    ui->aliasComboBox->setCurrentIndex(Settings::read("userdata/displayselfas").toInt());
+    ui->functionComboBox->setCurrentText(Settings::read("flightlogging/function").toString());
+    ui->rulesComboBox->setCurrentText(Settings::read("flightlogging/rules").toString());
+    ui->approachComboBox->setCurrentText(Settings::read("flightlogging/approach").toString());
+    ui->nightComboBox->setCurrentIndex(Settings::read("flightlogging/nightlogging").toInt());
+    ui->prefixLineEdit->setText(Settings::read("flightlogging/flightnumberPrefix").toString());
     /*
-     * Theme Group
+     * Misc Tab
      */
-    switch (settings.value("main/theme").toInt()) {
+    switch (Settings::read("main/theme").toInt()) {
     case 0:
         ui->systemThemeCheckBox->setChecked(true);
         break;
@@ -100,12 +99,13 @@ void SettingsWidget::fillSettings()
     case 2:
         ui->darkThemeCheckBox->setChecked(true);
     }
+    ui->logbookViewComboBox->setCurrentIndex(Settings::read("logbook/view").toInt());
     /*
      * Aircraft Tab
      */
-    ui->acSortComboBox->setCurrentIndex(settings.value("userdata/acSortColumn").toInt());
-    ui->pilotSortComboBox->setCurrentIndex(settings.value("userdata/pilSortColumn").toInt());
-    ui->acAllowIncompleteComboBox->setCurrentIndex(settings.value("userdata/acAllowIncomplete").toInt());
+    ui->acSortComboBox->setCurrentIndex(Settings::read("userdata/acSortColumn").toInt());
+    ui->pilotSortComboBox->setCurrentIndex(Settings::read("userdata/pilSortColumn").toInt());
+    ui->acAllowIncompleteComboBox->setCurrentIndex(Settings::read("userdata/acAllowIncomplete").toInt());
 }
 
 void SettingsWidget::setupValidators()
@@ -120,7 +120,6 @@ void SettingsWidget::setupValidators()
 
 void SettingsWidget::updatePersonalDetails()
 {
-    QSettings settings;
     QMap<QString,QString> data;
     switch (ui->aliasComboBox->currentIndex()) {
     case 0:
@@ -164,53 +163,47 @@ void SettingsWidget::updatePersonalDetails()
 
 void SettingsWidget::on_piclastnameLineEdit_editingFinished()
 {
-    QSettings settings;
     if(ui->piclastnameLineEdit->text().isEmpty()){
-        ui->piclastnameLineEdit->setText(settings.value("userdata/piclastname").toString());
+        ui->piclastnameLineEdit->setText(Settings::read("userdata/piclastname").toString());
         ui->piclastnameLineEdit->setFocus();
     } else {
-        settings.setValue("userdata/piclastname",ui->piclastnameLineEdit->text());
+        Settings::write("userdata/piclastname",ui->piclastnameLineEdit->text());
         updatePersonalDetails();
     }
 }
 
 void SettingsWidget::on_picfirstnameLineEdit_editingFinished()
 {
-    QSettings settings;
     if(ui->picfirstnameLineEdit->text().isEmpty()){
-        ui->picfirstnameLineEdit->setText(settings.value("userdata/picfirstname").toString());
+        ui->picfirstnameLineEdit->setText(Settings::read("userdata/picfirstname").toString());
         ui->picfirstnameLineEdit->setFocus();
     } else {
-        settings.setValue("userdata/picfirstname",ui->picfirstnameLineEdit->text());
+        Settings::write("userdata/picfirstname",ui->picfirstnameLineEdit->text());
         updatePersonalDetails();
     }
 }
 
 void SettingsWidget::on_companyLineEdit_editingFinished()
 {
-    QSettings settings;
-    settings.setValue("userdata/company",ui->companyLineEdit->text());
+    Settings::write("userdata/company",ui->companyLineEdit->text());
     updatePersonalDetails();
 }
 
 void SettingsWidget::on_employeeidLineEdit_editingFinished()
 {
-    QSettings settings;
-    settings.setValue("userdata/employeeid",ui->employeeidLineEdit->text());
+    Settings::write("userdata/employeeid",ui->employeeidLineEdit->text());
     updatePersonalDetails();
 }
 
 void SettingsWidget::on_emailLineEdit_editingFinished()
 {
-    QSettings settings;
-    settings.setValue("userdata/email",ui->emailLineEdit->text());
+    Settings::write("userdata/email",ui->emailLineEdit->text());
     updatePersonalDetails();
 }
 
 void SettingsWidget::on_phoneLineEdit_editingFinished()
 {
-    QSettings settings;
-    settings.setValue("userdata/phone",ui->phoneLineEdit->text());
+    Settings::write("userdata/phone",ui->phoneLineEdit->text());
     updatePersonalDetails();
 }
 
@@ -220,49 +213,43 @@ void SettingsWidget::on_phoneLineEdit_editingFinished()
 
 void SettingsWidget::on_aliasComboBox_currentIndexChanged(int index)
 {
-    QSettings settings;
-    settings.setValue("userdata/displayselfas",index);
+    Settings::write("userdata/displayselfas",index);
     updatePersonalDetails();
 }
 
 void SettingsWidget::on_functionComboBox_currentIndexChanged(const QString &arg1)
 {
-    QSettings settings;
-    settings.setValue("flightlogging/function", arg1);
+    Settings::write("flightlogging/function", arg1);
 }
 
 void SettingsWidget::on_rulesComboBox_currentIndexChanged(const QString &arg1)
 {
-    QSettings settings;
-    settings.setValue("flightlogging/rules", arg1);
+    Settings::write("flightlogging/rules", arg1);
 }
 
 void SettingsWidget::on_approachComboBox_currentIndexChanged(const QString &arg1)
 {
-    QSettings settings;
-    settings.setValue("flightlogging/approach", arg1);
+    Settings::write("flightlogging/approach", arg1);
 }
 
 void SettingsWidget::on_nightComboBox_currentIndexChanged(int index)
 {
-    QSettings settings;
-    settings.setValue("flightlogging/nightlogging", index);
+    Settings::write("flightlogging/nightlogging", index);
     switch (index) {
     case 1:
-        settings.setValue("flightlogging/nightangle",-6);
+        Settings::write("flightlogging/nightangle",-6);
         break;
     case 2:
-        settings.setValue("flightlogging/nightangle",0);
+        Settings::write("flightlogging/nightangle",0);
         break;
     default:
-        settings.setValue("flightlogging/nightangle",-6);
+        Settings::write("flightlogging/nightangle",-6);
     }
 }
 
 void SettingsWidget::on_prefixLineEdit_textChanged(const QString &arg1)
 {
-    QSettings settings;
-    settings.setValue("flightlogging/flightnumberPrefix", arg1);
+    Settings::write("flightlogging/flightnumberPrefix", arg1);
 }
 
 /*
@@ -270,9 +257,7 @@ void SettingsWidget::on_prefixLineEdit_textChanged(const QString &arg1)
  */
 void SettingsWidget::themeGroup_toggled(int id)
 {
-    QSettings settings;
-    settings.setValue("main/theme", id);
-
+    Settings::write("main/theme", id);
 
     QMessageBox::StandardButton reply;
     reply = QMessageBox::question(this, "Changing Themes",
@@ -290,25 +275,21 @@ void SettingsWidget::themeGroup_toggled(int id)
 }
 void SettingsWidget::on_logbookViewComboBox_currentIndexChanged(int index)
 {
-    QSettings settings;
-    settings.setValue("logbook/view", index);
+    Settings::write("logbook/view", index);
 }
 void SettingsWidget::on_pilotSortComboBox_currentIndexChanged(int index)
 {
-    QSettings settings;
-    settings.setValue("userdata/pilSortColumn", index);
+    Settings::write("userdata/pilSortColumn", index);
 }
 
 void SettingsWidget::on_acSortComboBox_currentIndexChanged(int index)
 {
-    QSettings settings;
-    settings.setValue("userdata/acSortColumn", index);
+    Settings::write("userdata/acSortColumn", index);
 }
 
 void SettingsWidget::on_acAllowIncompleteComboBox_currentIndexChanged(int index)
 {
-    QSettings settings;
-    settings.setValue("userdata/acAllowIncomplete", index);
+    Settings::write("userdata/acAllowIncomplete", index);
     if (index) {
         QMessageBox::StandardButton reply;
         reply = QMessageBox::warning(this, "Warning",
@@ -320,8 +301,7 @@ void SettingsWidget::on_acAllowIncompleteComboBox_currentIndexChanged(int index)
                                       "Are you sure you want to proceed?",
                                       QMessageBox::Yes | QMessageBox::No);
         if (reply == QMessageBox::Yes) {
-            QSettings settings;
-            settings.setValue("userdata/acAllowIncomplete", index);
+            Settings::write("userdata/acAllowIncomplete", index);
         } else {
             ui->acAllowIncompleteComboBox->setCurrentIndex(0);
         }

+ 1 - 2
src/gui/widgets/settingswidget.h

@@ -25,8 +25,7 @@
 #include <QMessageBox>
 #include <QProcess>
 #include <QDebug>
-#include <QSettings>
-#include <QCloseEvent>
+#include "src/classes/settings.h"
 #include "src/database/db.h"
 #include "src/classes/pilot.h"