changeset 19631:4e85ca0b4887 gui-release

add apply button to the settings dialog (bug #44081) * main-window.cc (process_settings_dialog_request) connect signal for applying the changes, settings dialog is non modal now; (request_reload_settings): new slot for siganl from settings dialog when when apply button was clicked * main-window .h: new slot request_reload_settings * settings-dialog.cc (constructor): connect signal when button box is clicked to the new slot button_clicked; (button_clicked): new slot * settings-dialog.h: new signal and related slot * settings-dialog.ui: new applay button
author Torsten <ttl@justmail.de>
date Sun, 25 Jan 2015 12:22:48 +0100
parents 8ef79bc61d8a
children 101ce4eaa56c
files libgui/src/main-window.cc libgui/src/main-window.h libgui/src/settings-dialog.cc libgui/src/settings-dialog.h libgui/src/settings-dialog.ui
diffstat 5 files changed, 41 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/main-window.cc	Sat Jan 24 22:46:20 2015 +0100
+++ b/libgui/src/main-window.cc	Sun Jan 25 12:22:48 2015 +0100
@@ -669,17 +669,23 @@
 main_window::process_settings_dialog_request (const QString& desired_tab)
 {
   settings_dialog *settingsDialog = new settings_dialog (this, desired_tab);
-  int change_settings = settingsDialog->exec ();
-  if (change_settings == QDialog::Accepted)
-    {
-      settingsDialog->write_changed_settings ();
-      QSettings *settings = resource_manager::get_settings ();
-      if (settings)
-        emit settings_changed (settings);
-    }
-  delete settingsDialog;
+
+  connect (settingsDialog, SIGNAL (apply_new_settings ()),
+           this, SLOT (request_reload_settings ()));
+
+  settingsDialog->setModal (false);
+  settingsDialog->setAttribute (Qt::WA_DeleteOnClose);
+  settingsDialog->show ();
 }
 
+void
+main_window::request_reload_settings ()
+{
+  QSettings *settings = resource_manager::get_settings ();
+
+  if (settings)
+    emit settings_changed (settings);
+}
 
 void
 main_window::notice_settings (const QSettings *settings)
--- a/libgui/src/main-window.h	Sat Jan 24 22:46:20 2015 +0100
+++ b/libgui/src/main-window.h	Sun Jan 25 12:22:48 2015 +0100
@@ -103,6 +103,7 @@
 public slots:
 
   void focus_changed (QWidget *w_old, QWidget *w_new);
+  void request_reload_settings ();
 
 
   void report_status_message (const QString& statusMessage);
--- a/libgui/src/settings-dialog.cc	Sat Jan 24 22:46:20 2015 +0100
+++ b/libgui/src/settings-dialog.cc	Sun Jan 25 12:22:48 2015 +0100
@@ -400,7 +400,8 @@
         ui->tabWidget->indexOf (tab_hash.value (desired_tab)));
     }
 
-
+  connect (ui->button_box, SIGNAL (clicked (QAbstractButton *)),
+           this,           SLOT (button_clicked (QAbstractButton *)));
 }
 
 settings_dialog::~settings_dialog ()
@@ -946,6 +947,19 @@
 // internal slots
 
 void
+settings_dialog::button_clicked (QAbstractButton *button)
+{
+  QDialogButtonBox::ButtonRole button_role = ui->button_box->buttonRole (button);
+
+  if (button_role == QDialogButtonBox::ApplyRole ||
+      button_role == QDialogButtonBox::AcceptRole)
+    {
+      write_changed_settings ();
+      emit apply_new_settings ();
+    }
+}
+
+void
 settings_dialog::get_dir (QLineEdit *line_edit, const QString& title)
 {
   QString dir = QFileDialog::getExistingDirectory(this,
--- a/libgui/src/settings-dialog.h	Sat Jan 24 22:46:20 2015 +0100
+++ b/libgui/src/settings-dialog.h	Sun Jan 25 12:22:48 2015 +0100
@@ -46,12 +46,18 @@
   ~settings_dialog ();
   void write_changed_settings ();
 
+signals:
+  void apply_new_settings ();
+
 private slots:
   void get_octave_dir ();
   void get_file_browser_dir ();
   void get_dir (QLineEdit*, const QString&);
   void set_disabled_pref_file_browser_dir (bool disable);
 
+  // slots for dialog's buttons
+  void button_clicked (QAbstractButton *button);
+
   // slots for import/export-buttons of shortcut sets
   void import_shortcut_set1 ();
   void export_shortcut_set1 ();
--- a/libgui/src/settings-dialog.ui	Sat Jan 24 22:46:20 2015 +0100
+++ b/libgui/src/settings-dialog.ui	Sun Jan 25 12:22:48 2015 +0100
@@ -2273,9 +2273,9 @@
     </widget>
    </item>
    <item>
-    <widget class="QDialogButtonBox" name="buttonBox">
+    <widget class="QDialogButtonBox" name="button_box">
      <property name="standardButtons">
-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+      <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
      </property>
     </widget>
    </item>
@@ -2460,7 +2460,7 @@
    </hints>
   </connection>
   <connection>
-   <sender>buttonBox</sender>
+   <sender>button_box</sender>
    <signal>accepted()</signal>
    <receiver>settings_dialog</receiver>
    <slot>accept()</slot>
@@ -2476,7 +2476,7 @@
    </hints>
   </connection>
   <connection>
-   <sender>buttonBox</sender>
+   <sender>button_box</sender>
    <signal>rejected()</signal>
    <receiver>settings_dialog</receiver>
    <slot>reject()</slot>