]> Some of my projects - localmylist.git/commitdiff
Add a very basic Settings Dialog to edit settings stored in the DB.
authorAPTX <marek321@gmail.com>
Thu, 6 Jun 2013 14:46:27 +0000 (16:46 +0200)
committerAPTX <marek321@gmail.com>
Thu, 6 Jun 2013 14:46:27 +0000 (16:46 +0200)
Currently shows everything in a plain line edit, including the password.

localmylist-management/localmylist-management.pro
localmylist-management/mainwindow.cpp
localmylist-management/mainwindow.h
localmylist-management/mainwindow.ui
localmylist-management/settingsdialog.cpp [new file with mode: 0644]
localmylist-management/settingsdialog.h [new file with mode: 0644]
localmylist-management/settingsdialog.ui [new file with mode: 0644]

index 03a9f0171fa408cbc38e767a3f012c27003499e0..e5202a2a343482a07ed5c109898be9968b12b384 100644 (file)
@@ -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 \
index bbd4e56695187a402ef95fc2e08bb4456caa8dbf..d8f1fbb2a49e2432690923ef976a18d112b8f3f2 100644 (file)
@@ -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();
+}
index c36933364b9f9da419e9a13c5ac812bdafdd06a1..c1d608c512f9b80ec3479370c5c546e06a842473 100644 (file)
@@ -79,6 +79,8 @@ private slots:
 
        void on_actionConnection_triggered();
 
+       void on_actionSettings_triggered();
+
 protected:
        void dragEnterEvent(QDragEnterEvent *event);
        void dropEvent(QDropEvent *event);
index d39cd939fee114541829427f63dd54e1327eb63d..b092b2e67e4fce44c9bddc5d966a775b26eab9f0 100644 (file)
@@ -61,7 +61,9 @@
     <property name="title">
      <string>Settings</string>
     </property>
+    <addaction name="actionSettings"/>
     <addaction name="actionConnection"/>
+    <addaction name="separator"/>
     <addaction name="actionRenameScript"/>
    </widget>
    <widget class="QMenu" name="menu_Actions">
     <string>Clear Selection</string>
    </property>
   </action>
+  <action name="actionSettings">
+   <property name="text">
+    <string>Settings...</string>
+   </property>
+  </action>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
  <customwidgets>
diff --git a/localmylist-management/settingsdialog.cpp b/localmylist-management/settingsdialog.cpp
new file mode 100644 (file)
index 0000000..5fb37fa
--- /dev/null
@@ -0,0 +1,73 @@
+#include "settingsdialog.h"
+#include "ui_settingsdialog.h"
+
+#include <QFormLayout>
+#include <QLabel>
+#include <QLineEdit>
+#include <QPushButton>
+
+#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 (file)
index 0000000..2920700
--- /dev/null
@@ -0,0 +1,35 @@
+#ifndef SETTINGSDIALOG_H
+#define SETTINGSDIALOG_H
+
+#include <QDialog>
+#include <QMap>
+#include <QStringList>
+
+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<QString, QLineEdit *> editors;
+};
+
+#endif // SETTINGSDIALOG_H
diff --git a/localmylist-management/settingsdialog.ui b/localmylist-management/settingsdialog.ui
new file mode 100644 (file)
index 0000000..1cf800e
--- /dev/null
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>SettingsDialog</class>
+ <widget class="QDialog" name="SettingsDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Settings</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QGroupBox" name="settingsBox">
+     <property name="title">
+      <string>Settings</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Reset</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>SettingsDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>SettingsDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>