# HG changeset patch # User Torsten # Date 1422184968 -3600 # Node ID 4e85ca0b48878e185fc49664d878c44147b68d33 # Parent 8ef79bc61d8a2377e0760f64ba7866ce249c9b1f 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 diff -r 8ef79bc61d8a -r 4e85ca0b4887 libgui/src/main-window.cc --- 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) diff -r 8ef79bc61d8a -r 4e85ca0b4887 libgui/src/main-window.h --- 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); diff -r 8ef79bc61d8a -r 4e85ca0b4887 libgui/src/settings-dialog.cc --- 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, diff -r 8ef79bc61d8a -r 4e85ca0b4887 libgui/src/settings-dialog.h --- 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 (); diff -r 8ef79bc61d8a -r 4e85ca0b4887 libgui/src/settings-dialog.ui --- 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 @@ - + - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok @@ -2460,7 +2460,7 @@ - buttonBox + button_box accepted() settings_dialog accept() @@ -2476,7 +2476,7 @@ - buttonBox + button_box rejected() settings_dialog reject()