summaryrefslogtreecommitdiff
path: root/src/frontend/qtwidgets/preferencesDialog.cpp
blob: d3b3dff17967539f9654bcec38aef981b9aa5ac8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <QFileDialog>
#include <QSettings>

#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();
}