Mercurial > hg > octave-nkf
changeset 19828: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 +++ b/libgui/src/main-window.cc @@ -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 +++ b/libgui/src/main-window.h @@ -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 +++ b/libgui/src/settings-dialog.cc @@ -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 +++ b/libgui/src/settings-dialog.h @@ -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 +++ b/libgui/src/settings-dialog.ui @@ -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>