From 7a4c88bfc137f57293919473c9230d9a9eeebb45 Mon Sep 17 00:00:00 2001 From: Louie S Date: Sun, 10 Mar 2024 14:55:13 -0400 Subject: Implemented preferencesDialog --- CMakeLists.txt | 2 ++ src/assignmentList.cpp | 5 +++- src/preferencesDialog.cpp | 59 +++++++++++++++++++++++++++++++++++++++++++++++ src/preferencesDialog.h | 28 ++++++++++++++++++++++ src/preferencesDialog.ui | 4 ++-- 5 files changed, 95 insertions(+), 3 deletions(-) create mode 100644 src/preferencesDialog.cpp create mode 100644 src/preferencesDialog.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 5a681c9..6e40f3a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,6 +56,8 @@ set(project_sources "src/lib.cpp" "src/lib.h" "src/main.cpp" + "src/preferencesDialog.cpp" + "src/preferencesDialog.h" "src/preferencesDialog.ui" "src/rule.cpp" "src/rule.h" diff --git a/src/assignmentList.cpp b/src/assignmentList.cpp index 0912031..75f524e 100644 --- a/src/assignmentList.cpp +++ b/src/assignmentList.cpp @@ -17,6 +17,7 @@ #include "backend/db_sqlite.h" #include "entryLayout.h" #include "groupLayout.h" +#include "preferencesDialog.h" #include "settings.h" AssignmentList::AssignmentList() { @@ -117,7 +118,9 @@ void AssignmentList::addGroup() { } void AssignmentList::preferences() { - qDebug() << "WIP"; + PreferencesDialog preferences_dialog; + if(preferences_dialog.exec() == QDialog::Accepted) + this->displayWidgets(); } void AssignmentList::reload() { diff --git a/src/preferencesDialog.cpp b/src/preferencesDialog.cpp new file mode 100644 index 0000000..d3b3dff --- /dev/null +++ b/src/preferencesDialog.cpp @@ -0,0 +1,59 @@ +#include +#include + +#include "preferencesDialog.h" + +PreferencesDialog::PreferencesDialog() { + // load uic + ui.setupUi(this); + + // display widgets + // TODO make this a scollable window + // FIXME could use some work on sizing + this->setupPathsTab(); + + // create button connections + QObject::connect(ui.close_button, &QPushButton::released, this, &PreferencesDialog::close); + QObject::connect(ui.apply_button, &QPushButton::released, this, &PreferencesDialog::apply); + QObject::connect(ui.reload_button, &QPushButton::released, this, &PreferencesDialog::reload); +} + +void PreferencesDialog::setupPathsTab() { + QSettings settings; + settings.beginGroup("paths"); + + ui.db_path_edit->setText(settings.value("db_path").toString()); + QObject::connect(ui.db_path_button, &QPushButton::released, this, &PreferencesDialog::dbPathDialog); +} + +void PreferencesDialog::dbPathDialog() { + QFileDialog file_dialog; + // TODO create filter to only allow selecting .db files + QString new_path = file_dialog.getOpenFileName(this, "Open File"); + + if(!new_path.isEmpty()) + ui.db_path_edit->setText(new_path); +} + +// close the dialog, returning our ret_value +void PreferencesDialog::close() { + this->done(ret_value); +} + +// update the configuration in the config file +void PreferencesDialog::apply() { + QSettings settings; + + // save paths + settings.beginGroup("paths"); + settings.setValue("db_path", ui.db_path_edit->text()); + + // set the return value to accepted + this->ret_value = QDialog::Accepted; +} + +// update, reload, and close the window +void PreferencesDialog::reload() { + this->apply(); + this->accept(); +} diff --git a/src/preferencesDialog.h b/src/preferencesDialog.h new file mode 100644 index 0000000..ac9b88e --- /dev/null +++ b/src/preferencesDialog.h @@ -0,0 +1,28 @@ +#ifndef PREFERENCESDIALOG_H +#define PREFERENCESDIALOG_H + +#include + +#include "ui_preferencesDialog.h" + +// set configuration options in the program +class PreferencesDialog : public QDialog { + Q_OBJECT + + public: + PreferencesDialog(); + + private: + Ui::preferencesDialog ui; + QDialog::DialogCode ret_value = QDialog::Rejected; + + void setupPathsTab(); + + private slots: + void dbPathDialog(); + void close(); + void apply(); + void reload(); +}; + +#endif diff --git a/src/preferencesDialog.ui b/src/preferencesDialog.ui index 244eb26..343ba33 100644 --- a/src/preferencesDialog.ui +++ b/src/preferencesDialog.ui @@ -1,7 +1,7 @@ - Dialog - + preferencesDialog + 0 -- cgit