aboutsummaryrefslogtreecommitdiff
path: root/settingsdialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'settingsdialog.cpp')
-rw-r--r--settingsdialog.cpp66
1 files changed, 66 insertions, 0 deletions
diff --git a/settingsdialog.cpp b/settingsdialog.cpp
new file mode 100644
index 0000000..644fa89
--- /dev/null
+++ b/settingsdialog.cpp
@@ -0,0 +1,66 @@
+#include "settingsdialog.h"
+#include "ui_settingsdialog.h"
+#include <QFontDialog>
+
+SettingsDialog::SettingsDialog(Database *db, QWidget *parent)
+ : QDialog(parent)
+ , ui(new Ui::SettingsDialog)
+ , database(db)
+ , currentAmountFont("Courier New", 10)
+ , weekStartDay(1)
+{
+ ui->setupUi(this);
+
+ connect(ui->amountFontBtn, &QPushButton::clicked, this, &SettingsDialog::onChooseAmountFont);
+ connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &SettingsDialog::saveSettings);
+
+ loadSettings();
+}
+
+SettingsDialog::~SettingsDialog()
+{
+ delete ui;
+}
+
+void SettingsDialog::loadSettings()
+{
+ // Load settings from database
+ QString currency = database->getSetting("currency_symbol", "$");
+ QString fontFamily = database->getSetting("amount_font", "Courier New");
+ int fontSize = database->getSetting("amount_font_size", "10").toInt();
+ int defaultPeriod = database->getSetting("default_period", "2").toInt();
+ bool showAccountBalances = database->getSetting("show_account_balances", "0").toInt();
+ weekStartDay = database->getSetting("week_start_day", "1").toInt();
+
+ // Set UI
+ ui->currencyEdit->setText(currency);
+ currentAmountFont = QFont(fontFamily, fontSize);
+ ui->amountFontBtn->setText(QString("%1, %2pt").arg(fontFamily).arg(fontSize));
+ ui->defaultPeriodCombo->setCurrentIndex(defaultPeriod);
+ ui->defaultShowAccountBalancesCheck->setChecked(showAccountBalances);
+ ui->weekStartDayCombo->setCurrentIndex(weekStartDay - 1);
+}
+
+void SettingsDialog::saveSettings()
+{
+ // Save to database
+ database->setSetting("currency_symbol", ui->currencyEdit->text());
+ database->setSetting("amount_font", currentAmountFont.family());
+ database->setSetting("amount_font_size", QString::number(currentAmountFont.pointSize()));
+ database->setSetting("default_period", QString::number(ui->defaultPeriodCombo->currentIndex()));
+ database->setSetting("show_account_balances", QString::number(ui->defaultShowAccountBalancesCheck->isChecked() ? 1 : 0));
+ database->setSetting("week_start_day", QString::number(ui->weekStartDayCombo->currentIndex() + 1));
+
+ weekStartDay = ui->weekStartDayCombo->currentIndex() + 1;
+}
+
+void SettingsDialog::onChooseAmountFont()
+{
+ bool ok;
+ QFont selectedFont = QFontDialog::getFont(&ok, currentAmountFont, this, "Choose Amount Font", QFontDialog::MonospacedFonts);
+
+ if (ok) {
+ currentAmountFont = selectedFont;
+ ui->amountFontBtn->setText(QString("%1, %2pt").arg(selectedFont.family()).arg(selectedFont.pointSize()));
+ }
+}