Use our Settings class everywhere

Don't use the QSettings class directly. This keeps the code more
consistent and makes it a bit easier to read. It also means that all
parts of the code profit from the settings cache that we have
implemented in the Settings class.
This commit is contained in:
Martin Kleusberg
2017-10-30 13:37:34 +01:00
parent 9f17176bf6
commit 1ca92cdde3
4 changed files with 65 additions and 49 deletions

View File

@@ -2,15 +2,10 @@
#include "ui_ExportSqlDialog.h"
#include "sqlitedb.h"
#include "FileDialog.h"
#include "Settings.h"
#include <QFile>
#include <QMessageBox>
#include <QSettings>
static QString sSettingsGroup("exportsql");
static QString sSettingsInsertColNames("insertcolnames");
static QString sSettingsInsertMultiple("insertmultiple");
static QString sSettingsOldSchema("oldschema");
enum WhatComboEntries
{
@@ -27,11 +22,10 @@ ExportSqlDialog::ExportSqlDialog(DBBrowserDB* db, QWidget* parent, const QString
// Create UI
ui->setupUi(this);
QSettings settings(QApplication::organizationName(), QApplication::organizationName());
settings.beginGroup(sSettingsGroup);
ui->checkColNames->setChecked(settings.value(sSettingsInsertColNames, false).toBool());
ui->checkMultiple->setChecked(settings.value(sSettingsInsertMultiple, false).toBool());
ui->comboOldSchema->setCurrentIndex(settings.value(sSettingsOldSchema, 0).toInt());
// Load settings
ui->checkColNames->setChecked(Settings::getValue("exportsql", "insertcolnames").toBool());
ui->checkColNames->setChecked(Settings::getValue("exportsql", "insertmultiple").toBool());
ui->comboOldSchema->setCurrentIndex(Settings::getValue("exportsql", "oldschema").toInt());
// Get list of tables to export
objectMap objects = pdb->getBrowsableObjects("main");
@@ -96,13 +90,10 @@ void ExportSqlDialog::accept()
if(fileName.isEmpty())
return;
// save settings
QSettings settings(QApplication::organizationName(), QApplication::organizationName());
settings.beginGroup(sSettingsGroup);
settings.setValue(sSettingsInsertColNames, ui->checkColNames->isChecked());
settings.setValue(sSettingsInsertMultiple, ui->checkMultiple->isChecked());
settings.setValue(sSettingsOldSchema, ui->comboOldSchema->currentIndex());
settings.endGroup();
// Save settings
Settings::setValue("exportsql", "insertcolnames", ui->checkColNames->isChecked());
Settings::setValue("exportsql", "insertmultiple", ui->checkMultiple->isChecked());
Settings::setValue("exportsql", "oldschema", ui->comboOldSchema->currentIndex());
QStringList tables;
for(const QListWidgetItem* item : ui->listTables->selectedItems())

View File

@@ -3,6 +3,7 @@
#include "sqlitedb.h"
#include "csvparser.h"
#include "sqlite.h"
#include "Settings.h"
#include <QMessageBox>
#include <QProgressDialog>
@@ -13,7 +14,6 @@
#include <QComboBox>
#include <QFile>
#include <QTextStream>
#include <QSettings>
#include <QFileInfo>
#include <memory>
@@ -54,13 +54,12 @@ ImportCsvDialog::ImportCsvDialog(const QStringList &filenames, DBBrowserDB* db,
ui->comboQuote->blockSignals(true);
ui->comboEncoding->blockSignals(true);
QSettings settings(QApplication::organizationName(), QApplication::organizationName());
ui->checkboxHeader->setChecked(settings.value("importcsv/firstrowheader", false).toBool());
ui->checkBoxTrimFields->setChecked(settings.value("importcsv/trimfields", true).toBool());
ui->checkBoxSeparateTables->setChecked(settings.value("importcsv/separatetables", false).toBool());
setSeparatorChar(QChar(settings.value("importcsv/separator", ',').toInt()));
setQuoteChar(QChar(settings.value("importcsv/quotecharacter", '"').toInt()));
setEncoding(settings.value("importcsv/encoding", "UTF-8").toString());
ui->checkboxHeader->setChecked(Settings::getValue("importcsv", "firstrowheader").toBool());
ui->checkBoxTrimFields->setChecked(Settings::getValue("importcsv", "trimfields").toBool());
ui->checkBoxSeparateTables->setChecked(Settings::getValue("importcsv", "separatetables").toBool());
setSeparatorChar(Settings::getValue("importcsv", "separator").toChar());
setQuoteChar(Settings::getValue("importcsv", "quotecharacter").toChar());
setEncoding(Settings::getValue("importcsv", "encoding").toString());
ui->checkboxHeader->blockSignals(false);
ui->checkBoxTrimFields->blockSignals(false);
@@ -157,16 +156,13 @@ private:
void ImportCsvDialog::accept()
{
// save settings
QSettings settings(QApplication::organizationName(), QApplication::organizationName());
settings.beginGroup("importcsv");
settings.setValue("firstrowheader", ui->checkboxHeader->isChecked());
settings.setValue("separator", currentSeparatorChar());
settings.setValue("quotecharacter", currentQuoteChar());
settings.setValue("trimfields", ui->checkBoxTrimFields->isChecked());
settings.setValue("separatetables", ui->checkBoxSeparateTables->isChecked());
settings.setValue("encoding", currentEncoding());
settings.endGroup();
// Save settings
Settings::setValue("importcsv", "firstrowheader", ui->checkboxHeader->isChecked());
Settings::setValue("importcsv", "separator", currentSeparatorChar());
Settings::setValue("importcsv", "quotecharacter", currentQuoteChar());
Settings::setValue("importcsv", "trimfields", ui->checkBoxTrimFields->isChecked());
Settings::setValue("importcsv", "separatetables", ui->checkBoxSeparateTables->isChecked());
Settings::setValue("importcsv", "encoding", currentEncoding());
// Get all the selected files and start the import
if (ui->filePickerBlock->isVisible())

View File

@@ -35,7 +35,6 @@
#include <QScrollBar>
#include <QSortFilterProxyModel>
#include <QElapsedTimer>
#include <QSettings>
#include <QMimeData>
#include <QColorDialog>
#include <QDesktopServices>
@@ -1909,10 +1908,9 @@ void MainWindow::checkNewVersion(const QString& versionstring, const QString& ur
if(newversion)
{
QSettings settings(QApplication::organizationName(), QApplication::organizationName());
int ignmajor = settings.value("checkversion/ignmajor", 999).toInt();
int ignminor = settings.value("checkversion/ignminor", 0).toInt();
int ignpatch = settings.value("checkversion/ignpatch", 0).toInt();
int ignmajor = Settings::getValue("checkversion", "ignmajor").toInt();
int ignminor = Settings::getValue("checkversion", "ignminor").toInt();
int ignpatch = Settings::getValue("checkversion", "ignpatch").toInt();
// check if the user doesn't care about the current update
if(!(ignmajor == major && ignminor == minor && ignpatch == patch))
@@ -1930,11 +1928,9 @@ void MainWindow::checkNewVersion(const QString& versionstring, const QString& ur
if(msgBox.clickedButton() == idontcarebutton)
{
// save that the user don't want to get bothered about this update
settings.beginGroup("checkversion");
settings.setValue("ignmajor", major);
settings.setValue("ignminor", minor);
settings.setValue("ignpatch", patch);
settings.endGroup();
Settings::setValue("checkversion", "ignmajor", major);
Settings::setValue("checkversion", "ignminor", minor);
Settings::setValue("checkversion", "ignpatch", patch);
}
}
}

View File

@@ -90,6 +90,32 @@ QVariant Settings::getDefaultValue(const QString& group, const QString& name)
if(group == "exportcsv" && name == "quotecharacter")
return '"';
// importcsv group?
if(group == "importcsv")
{
if(name == "firstrowheader")
return false;
if(name == "trimfields")
return true;
if(name == "separatetables")
return false;
if(name == "separator")
return ',';
if(name == "quotecharacter")
return '"';
if(name == "encoding")
return "UTF-8";
}
// exportsql group?
if(group == "exportsql")
{
if(name == "insertcolnames" || name == "insertmultiple")
return false;
if(name == "oldschema")
return 0;
}
// newline character
if (group == "exportcsv" && name == "newlinecharacters")
#ifdef Q_OS_WIN
@@ -122,9 +148,16 @@ QVariant Settings::getDefaultValue(const QString& group, const QString& name)
if(group == "General" && name == "language")
return QLocale::system().name();
// checkversion/enabled
if(group == "checkversion" && name == "enabled")
return true;
// checkversion group?
if(group == "checkversion")
{
if(name == "enabled")
return true;
if(name == "ignmajor")
return 999;
if(name == "ignminor" || name == "ignpatch")
return 0;
}
// Data Browser/NULL Fields
if(group == "databrowser")