From: APTX Date: Thu, 6 Jun 2013 14:46:27 +0000 (+0200) Subject: Add a very basic Settings Dialog to edit settings stored in the DB. X-Git-Url: https://gitweb.aptx.org/?a=commitdiff_plain;h=5b40935fb202ff24a8a7f4c8acabf75cb5759262;p=localmylist.git Add a very basic Settings Dialog to edit settings stored in the DB. Currently shows everything in a plain line edit, including the password. --- diff --git a/localmylist-management/localmylist-management.pro b/localmylist-management/localmylist-management.pro index 03a9f01..e5202a2 100644 --- a/localmylist-management/localmylist-management.pro +++ b/localmylist-management/localmylist-management.pro @@ -29,7 +29,8 @@ SOURCES += main.cpp\ tabs/databaselogtab.cpp \ tabs/clientlogtab.cpp \ fonts.cpp \ - aniaddsyntaxhighlighter.cpp + aniaddsyntaxhighlighter.cpp \ + settingsdialog.cpp HEADERS += mainwindow.h \ databaseconnectiondialog.h \ @@ -49,10 +50,12 @@ HEADERS += mainwindow.h \ tabs/databaselogtab.h \ tabs/clientlogtab.h \ fonts.h \ - aniaddsyntaxhighlighter.h + aniaddsyntaxhighlighter.h \ + settingsdialog.h FORMS += mainwindow.ui \ databaseconnectiondialog.ui \ + settingsdialog.ui \ tabs/mylisttab.ui \ tabs/searchtab.ui \ tabs/reportstab.ui \ diff --git a/localmylist-management/mainwindow.cpp b/localmylist-management/mainwindow.cpp index bbd4e56..d8f1fbb 100644 --- a/localmylist-management/mainwindow.cpp +++ b/localmylist-management/mainwindow.cpp @@ -23,6 +23,7 @@ #include "addrelatedepisodestask.h" #include "filelocationchecktask.h" #include "reportengine.h" +#include "settingsdialog.h" #ifndef LOCALMYLIST_NO_ANIDBUDPCLIENT # include "renamesettingsdialog.h" #endif @@ -361,3 +362,13 @@ void MainWindow::on_actionConnection_triggered() if (!d.exec()) return; } + +void MainWindow::on_actionSettings_triggered() +{ + SettingsDialog d; + + if (!d.exec()) + return; + + d.apply(); +} diff --git a/localmylist-management/mainwindow.h b/localmylist-management/mainwindow.h index c369333..c1d608c 100644 --- a/localmylist-management/mainwindow.h +++ b/localmylist-management/mainwindow.h @@ -79,6 +79,8 @@ private slots: void on_actionConnection_triggered(); + void on_actionSettings_triggered(); + protected: void dragEnterEvent(QDragEnterEvent *event); void dropEvent(QDropEvent *event); diff --git a/localmylist-management/mainwindow.ui b/localmylist-management/mainwindow.ui index d39cd93..b092b2e 100644 --- a/localmylist-management/mainwindow.ui +++ b/localmylist-management/mainwindow.ui @@ -61,7 +61,9 @@ Settings + + @@ -283,6 +285,11 @@ Clear Selection + + + Settings... + + diff --git a/localmylist-management/settingsdialog.cpp b/localmylist-management/settingsdialog.cpp new file mode 100644 index 0000000..5fb37fa --- /dev/null +++ b/localmylist-management/settingsdialog.cpp @@ -0,0 +1,73 @@ +#include "settingsdialog.h" +#include "ui_settingsdialog.h" + +#include +#include +#include +#include + +#include "mylist.h" +#include "settings.h" + +SettingsDialog::SettingsDialog(QWidget *parent) : + QDialog(parent), + ui(new Ui::SettingsDialog) +{ + ui->setupUi(this); + + QPushButton *button = ui->buttonBox->button(QDialogButtonBox::Reset); + connect(button, SIGNAL(clicked()), this, SLOT(reset())); + + button = ui->buttonBox->button(QDialogButtonBox::Apply); + connect(button, SIGNAL(clicked()), this, SLOT(apply())); + + settings = LocalMyList::instance()->settings()->availableSettings(); + generateSettings(); +} + +SettingsDialog::~SettingsDialog() +{ + delete ui; +} + +void SettingsDialog::reset() +{ + for (auto it = editors.begin(); it != editors.end(); ++it) + { + it.value()->setText(LocalMyList::instance()->settings()->get(it.key()).toString()); + } +} + +void SettingsDialog::apply() +{ + LocalMyList::Settings *s = LocalMyList::instance()->settings(); + for (auto it = editors.begin(); it != editors.end(); ++it) + { + if (it.value()->text() != s->get(it.key()).toString()) + s->set(it.key(), it.value()->text()); + } + s->commit(); +} + +void SettingsDialog::generateSettings() +{ + editors.clear(); + qDeleteAll(ui->settingsBox->children()); + + QFormLayout *layout = new QFormLayout(ui->settingsBox); + + for (const QString &setting : settings) + { + QLabel *label = new QLabel(ui->settingsBox); + QLineEdit *lineEdit = new QLineEdit(ui->settingsBox); + + label->setText(setting); + label->setBuddy(lineEdit); + + lineEdit->setText(LocalMyList::instance()->settings()->get(setting).toString()); + + layout->addRow(label, lineEdit); + + editors.insert(setting, lineEdit); + } +} diff --git a/localmylist-management/settingsdialog.h b/localmylist-management/settingsdialog.h new file mode 100644 index 0000000..2920700 --- /dev/null +++ b/localmylist-management/settingsdialog.h @@ -0,0 +1,35 @@ +#ifndef SETTINGSDIALOG_H +#define SETTINGSDIALOG_H + +#include +#include +#include + +class QLineEdit; + +namespace Ui { +class SettingsDialog; +} + +class SettingsDialog : public QDialog +{ + Q_OBJECT + +public: + explicit SettingsDialog(QWidget *parent = 0); + ~SettingsDialog(); + +public slots: + void reset(); + void apply(); + +private: + void generateSettings(); + + Ui::SettingsDialog *ui; + + QStringList settings; + QMap editors; +}; + +#endif // SETTINGSDIALOG_H diff --git a/localmylist-management/settingsdialog.ui b/localmylist-management/settingsdialog.ui new file mode 100644 index 0000000..1cf800e --- /dev/null +++ b/localmylist-management/settingsdialog.ui @@ -0,0 +1,71 @@ + + + SettingsDialog + + + + 0 + 0 + 400 + 300 + + + + Settings + + + + + + Settings + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Reset + + + + + + + + + buttonBox + accepted() + SettingsDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + SettingsDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + +