[geary/wip/fix-main-window-shortcuts: 1/2] Convert prefs dialog to a HdyPreferencesWindow
- From: Michael Gratton <mjog src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [geary/wip/fix-main-window-shortcuts: 1/2] Convert prefs dialog to a HdyPreferencesWindow
- Date: Wed, 20 Nov 2019 13:54:48 +0000 (UTC)
commit e11e2bd2792ce15075ac352b46328a6ed0942bf0
Author: Michael Gratton <mike vee net>
Date: Wed Nov 20 17:54:15 2019 +1100
Convert prefs dialog to a HdyPreferencesWindow
Move it to the Components package, use libhandy preferences widgets
for the UI.
po/POTFILES.in | 3 +-
src/client/application/application-client.vala | 7 +-
.../components/components-preferences-window.vala | 122 ++++++++++++++++++
src/client/dialogs/preferences-dialog.vala | 46 -------
src/client/meson.build | 2 +-
ui/org.gnome.Geary.gresource.xml | 1 -
ui/preferences-dialog.ui | 136 ---------------------
7 files changed, 128 insertions(+), 189 deletions(-)
---
diff --git a/po/POTFILES.in b/po/POTFILES.in
index e2c983af..5900c7be 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -37,6 +37,7 @@ src/client/components/components-entry-undo.vala
src/client/components/components-in-app-notification.vala
src/client/components/components-inspector.vala
src/client/components/components-placeholder-pane.vala
+src/client/components/components-preferences-window.vala
src/client/components/components-validator.vala
src/client/components/count-badge.vala
src/client/components/folder-popover.vala
@@ -73,7 +74,6 @@ src/client/dialogs/attachment-dialog.vala
src/client/dialogs/certificate-warning-dialog.vala
src/client/dialogs/dialogs-problem-details-dialog.vala
src/client/dialogs/password-dialog.vala
-src/client/dialogs/preferences-dialog.vala
src/client/dialogs/upgrade-dialog.vala
src/client/folder-list/folder-list-abstract-folder-entry.vala
src/client/folder-list/folder-list-account-branch.vala
@@ -440,6 +440,5 @@ ui/main-toolbar.ui
ui/main-toolbar-menus.ui
ui/main-window-info-bar.ui
ui/password-dialog.glade
-ui/preferences-dialog.ui
ui/problem-details-dialog.ui
ui/upgrade_dialog.glade
diff --git a/src/client/application/application-client.vala b/src/client/application/application-client.vala
index 0e75cde9..88d99c5b 100644
--- a/src/client/application/application-client.vala
+++ b/src/client/application/application-client.vala
@@ -440,6 +440,7 @@ public class Application.Client : Gtk.Application {
MainWindow.add_accelerators(this);
Composer.Widget.add_accelerators(this);
Components.Inspector.add_accelerators(this);
+ Components.PreferencesWindow.add_accelerators(this);
Dialogs.ProblemDetailsDialog.add_accelerators(this);
// Manually place a hold on the application otherwise the
@@ -609,10 +610,10 @@ public class Application.Client : Gtk.Application {
public async void show_preferences() {
yield this.present();
- PreferencesDialog dialog = new PreferencesDialog(
- get_active_window(), this
+ Components.PreferencesWindow prefs = new Components.PreferencesWindow(
+ get_active_main_window()
);
- dialog.run();
+ prefs.show();
}
public async void new_composer(string? mailto) {
diff --git a/src/client/components/components-preferences-window.vala
b/src/client/components/components-preferences-window.vala
new file mode 100644
index 00000000..198395ad
--- /dev/null
+++ b/src/client/components/components-preferences-window.vala
@@ -0,0 +1,122 @@
+/*
+ * Copyright 2016 Software Freedom Conservancy Inc.
+ * Copyright 2019 Michael Gratton <mike vee net>
+ *
+ * This software is licensed under the GNU Lesser General Public License
+ * (version 2.1 or later). See the COPYING file in this distribution.
+ */
+
+public class Components.PreferencesWindow : Hdy.PreferencesWindow {
+
+
+ private const string ACTION_CLOSE = "preferences-close";
+
+ private const ActionEntry[] WINDOW_ACTIONS = {
+ { Action.Window.CLOSE, on_close },
+ { ACTION_CLOSE, on_close },
+ };
+
+
+ public static void add_accelerators(Application.Client app) {
+ app.add_window_accelerators(ACTION_CLOSE, { "Escape" } );
+ }
+
+
+ /** Returns the window's associated client application instance. */
+ public new Application.Client application {
+ get { return (Application.Client) base.get_application(); }
+ set { base.set_application(value); }
+ }
+
+
+ public PreferencesWindow(Application.MainWindow parent) {
+ Object(
+ application: parent.application,
+ transient_for: parent
+ );
+
+ var autoselect = new Gtk.Switch();
+ autoselect.valign = CENTER;
+
+ var autoselect_row = new Hdy.ActionRow();
+ /// Translators: Preferences label
+ autoselect_row.title = _("_Automatically select next message");
+ autoselect_row.use_underline = true;
+ autoselect_row.activatable_widget = autoselect;
+ autoselect_row.add_action(autoselect);
+
+ var display_preview = new Gtk.Switch();
+ display_preview.valign = CENTER;
+
+ var display_preview_row = new Hdy.ActionRow();
+ /// Translators: Preferences label
+ display_preview_row.title = _("_Display conversation preview");
+ display_preview_row.use_underline = true;
+ display_preview_row.activatable_widget = display_preview;
+ display_preview_row.add_action(display_preview);
+
+ var three_pane_view = new Gtk.Switch();
+ three_pane_view.valign = CENTER;
+
+ var three_pane_view_row = new Hdy.ActionRow();
+ /// Translators: Preferences label
+ three_pane_view_row.title = _("Use _three pane view");
+ three_pane_view_row.use_underline = true;
+ three_pane_view_row.activatable_widget = three_pane_view;
+ three_pane_view_row.add_action(three_pane_view);
+
+ var startup_notifications = new Gtk.Switch();
+ startup_notifications.valign = CENTER;
+
+ var startup_notifications_row = new Hdy.ActionRow();
+ /// Translators: Preferences label
+ startup_notifications_row.title = _("_Watch for new mail when closed");
+ startup_notifications_row.use_underline = true;
+ /// Translators: Preferences tooltip
+ startup_notifications_row.tooltip_text = _(
+ "Geary will keep running after all windows are closed"
+ );
+ startup_notifications_row.activatable_widget = startup_notifications;
+ startup_notifications_row.add_action(startup_notifications);
+
+ var group = new Hdy.PreferencesGroup();
+ /// Translators: Preferences group title
+ //group.title = _("General");
+ /// Translators: Preferences group description
+ //group.description = _("General application preferences");
+ group.add(autoselect_row);
+ group.add(display_preview_row);
+ group.add(three_pane_view_row);
+ group.add(startup_notifications_row);
+
+ var page = new Hdy.PreferencesPage();
+ page.propagate_natural_height = true;
+ page.add(group);
+ page.show_all();
+
+ add(page);
+
+ GLib.SimpleActionGroup window_actions = new GLib.SimpleActionGroup();
+ window_actions.add_action_entries(WINDOW_ACTIONS, this);
+ insert_action_group(Action.Window.GROUP_NAME, window_actions);
+
+ Application.Configuration config = this.application.config;
+ config.bind(Application.Configuration.AUTOSELECT_KEY, autoselect, "state");
+ config.bind(Application.Configuration.DISPLAY_PREVIEW_KEY, display_preview, "state");
+ config.bind(Application.Configuration.FOLDER_LIST_PANE_HORIZONTAL_KEY, three_pane_view, "state");
+ config.bind(Application.Configuration.STARTUP_NOTIFICATIONS_KEY, startup_notifications, "state");
+
+ this.delete_event.connect(on_delete);
+ }
+
+ private void on_close() {
+ close();
+ }
+
+ private bool on_delete() {
+ // Sync startup notification option with file state
+ this.application.autostart.sync_with_config();
+ return Gdk.EVENT_PROPAGATE;
+ }
+
+}
diff --git a/src/client/meson.build b/src/client/meson.build
index 3561c48e..aa76e040 100644
--- a/src/client/meson.build
+++ b/src/client/meson.build
@@ -37,6 +37,7 @@ geary_client_vala_sources = files(
'components/components-inspector-log-view.vala',
'components/components-inspector-system-view.vala',
'components/components-placeholder-pane.vala',
+ 'components/components-preferences-window.vala',
'components/components-validator.vala',
'components/count-badge.vala',
'components/folder-popover.vala',
@@ -78,7 +79,6 @@ geary_client_vala_sources = files(
'dialogs/certificate-warning-dialog.vala',
'dialogs/dialogs-problem-details-dialog.vala',
'dialogs/password-dialog.vala',
- 'dialogs/preferences-dialog.vala',
'dialogs/upgrade-dialog.vala',
'folder-list/folder-list-abstract-folder-entry.vala',
diff --git a/ui/org.gnome.Geary.gresource.xml b/ui/org.gnome.Geary.gresource.xml
index 2138e029..0f1f8881 100644
--- a/ui/org.gnome.Geary.gresource.xml
+++ b/ui/org.gnome.Geary.gresource.xml
@@ -41,7 +41,6 @@
<file compressed="true" preprocess="xml-stripblanks">main-toolbar-menus.ui</file>
<file compressed="true" preprocess="xml-stripblanks">main-window-info-bar.ui</file>
<file compressed="true" preprocess="xml-stripblanks">password-dialog.glade</file>
- <file compressed="true" preprocess="xml-stripblanks">preferences-dialog.ui</file>
<file compressed="true" preprocess="xml-stripblanks">problem-details-dialog.ui</file>
<file compressed="true">signature-web-view.js</file>
<file compressed="true" preprocess="xml-stripblanks">upgrade_dialog.glade</file>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]