diff options
author | Christopher Davis <christopherdavis@gnome.org> | 2022-02-23 17:44:44 -0800 |
---|---|---|
committer | Christopher Davis <christopherdavis@gnome.org> | 2022-02-23 18:01:06 -0800 |
commit | dbfea26c45f3a340bbcefa7e1591504f2c7b4026 (patch) | |
tree | bd62d61bbb931b8aeac9fbefeb5ccb8f086728fa | |
parent | a4f2842b2aec7e44320a812a68820d88a1e79f94 (diff) | |
download | gnome-control-center-sharing-consistency-tweaks.tar.gz |
sharing: Re-work dialog widgetrysharing-consistency-tweaks
Rework the widgetry of the dialogs to use
AdwPreferences{Page,Group} and AdwActionRows.
This lets the dialogs be freely resizable,
and gives them sensible default sizes.
-rw-r--r-- | panels/sharing/cc-sharing-panel.c | 149 | ||||
-rw-r--r-- | panels/sharing/cc-sharing-panel.ui | 382 |
2 files changed, 135 insertions, 396 deletions
diff --git a/panels/sharing/cc-sharing-panel.c b/panels/sharing/cc-sharing-panel.c index c2b92a3de..c320172b8 100644 --- a/panels/sharing/cc-sharing-panel.c +++ b/panels/sharing/cc-sharing-panel.c @@ -37,7 +37,7 @@ #include <glib/gi18n.h> #include <config.h> -static void cc_sharing_panel_setup_label_with_hostname (CcSharingPanel *self, GtkWidget *label); +static void cc_sharing_panel_setup_group_with_hostname (CcSharingPanel *self, GtkWidget *group); static GtkWidget *cc_sharing_panel_new_media_sharing_row (const char *uri_or_path, CcSharingPanel *self); @@ -64,32 +64,28 @@ struct _CcSharingPanel GtkWidget *media_sharing_row; GtkWidget *media_sharing_switch; GtkWidget *personal_file_sharing_dialog; - GtkWidget *personal_file_sharing_grid; + GtkWidget *personal_file_sharing_page; GtkWidget *personal_file_sharing_headerbar; - GtkWidget *personal_file_sharing_label; + GtkWidget *personal_file_sharing_group; GtkWidget *personal_file_sharing_password_entry; - GtkWidget *personal_file_sharing_password_label; GtkWidget *personal_file_sharing_require_password_switch; GtkWidget *personal_file_sharing_row; GtkWidget *personal_file_sharing_switch; - GtkWidget *password_grid; - GtkWidget *remote_control_box; - GtkWidget *remote_control_checkbutton; + GtkWidget *screen_sharing_page; + GtkWidget *remote_control_switch; GtkWidget *remote_control_password_entry; GtkWidget *remote_login_dialog; - GtkWidget *remote_login_label; + GtkWidget *remote_login_group; GtkWidget *remote_login_row; GtkWidget *remote_login_switch; GtkWidget *require_password_radiobutton; GtkWidget *screen_sharing_dialog; - GtkWidget *screen_sharing_grid; GtkWidget *screen_sharing_headerbar; - GtkWidget *screen_sharing_label; + GtkWidget *screen_sharing_group; GtkWidget *screen_sharing_row; GtkWidget *screen_sharing_switch; - GtkWidget *shared_folders_grid; + GtkWidget *shared_folders_page; GtkWidget *shared_folders_listbox; - GtkWidget *show_password_checkbutton; GDBusProxy *sharing_proxy; @@ -171,11 +167,10 @@ cc_sharing_panel_run_dialog (CcSharingPanel *self, GtkWidget *parent; /* ensure labels with the hostname are updated if the hostname has changed */ - cc_sharing_panel_setup_label_with_hostname (self, - self->screen_sharing_label); - cc_sharing_panel_setup_label_with_hostname (self, self->remote_login_label); - cc_sharing_panel_setup_label_with_hostname (self, - self->personal_file_sharing_label); + cc_sharing_panel_setup_group_with_hostname (self, self->screen_sharing_group); + cc_sharing_panel_setup_group_with_hostname (self, self->remote_login_group); + cc_sharing_panel_setup_group_with_hostname (self, + self->personal_file_sharing_group); parent = cc_shell_get_toplevel (cc_panel_get_shell (CC_PANEL (self))); @@ -219,36 +214,32 @@ cc_sharing_panel_class_init (CcSharingPanelClass *klass) gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, approve_connections_radiobutton); gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, hostname_entry); - gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, screen_sharing_grid); - gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, shared_folders_grid); + gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, shared_folders_page); gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, master_switch); gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, main_group); gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, media_sharing_dialog); gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, media_sharing_headerbar); gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, media_sharing_row); gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, personal_file_sharing_dialog); - gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, personal_file_sharing_grid); + gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, personal_file_sharing_page); gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, personal_file_sharing_headerbar); - gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, personal_file_sharing_label); + gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, personal_file_sharing_group); gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, personal_file_sharing_password_entry); - gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, personal_file_sharing_password_label); gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, personal_file_sharing_require_password_switch); gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, personal_file_sharing_row); - gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, password_grid); - gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, remote_control_box); - gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, remote_control_checkbutton); + gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, screen_sharing_page); + gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, remote_control_switch); gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, remote_control_password_entry); gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, remote_login_dialog); - gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, remote_login_label); + gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, remote_login_group); gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, remote_login_row); gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, remote_login_switch); gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, require_password_radiobutton); gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, screen_sharing_dialog); gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, screen_sharing_headerbar); - gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, screen_sharing_label); + gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, screen_sharing_group); gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, screen_sharing_row); gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, shared_folders_listbox); - gtk_widget_class_bind_template_child (widget_class, CcSharingPanel, show_password_checkbutton); gtk_widget_class_bind_template_callback (widget_class, cc_sharing_panel_main_list_box_row_activated); @@ -344,28 +335,6 @@ cc_sharing_panel_bind_networks_to_label (CcSharingPanel *self, } static void -cc_sharing_panel_bind_switch_to_widgets (GtkWidget *gtkswitch, - GtkWidget *first_widget, - ...) -{ - va_list w; - GtkWidget *widget; - - va_start (w, first_widget); - - g_object_bind_property (gtkswitch, "active", first_widget, - "sensitive", G_BINDING_SYNC_CREATE); - - while ((widget = va_arg (w, GtkWidget*))) - { - g_object_bind_property (gtkswitch, "active", widget, - "sensitive", G_BINDING_SYNC_CREATE); - } - - va_end (w); -} - -static void on_add_folder_dialog_response_cb (GtkDialog *dialog, gint response, CcSharingPanel *self) @@ -633,7 +602,8 @@ cc_sharing_panel_setup_media_sharing_dialog (CcSharingPanel *self) G_CALLBACK (cc_sharing_panel_add_folder), self, G_CONNECT_SWAPPED); networks = cc_sharing_networks_new (self->sharing_proxy, "rygel"); - gtk_grid_attach (GTK_GRID (self->shared_folders_grid), networks, 0, 4, 2, 1); + adw_preferences_page_add (ADW_PREFERENCES_PAGE (self->shared_folders_page), + ADW_PREFERENCES_GROUP (networks)); w = create_switch_with_bindings (GTK_SWITCH (g_object_get_data (G_OBJECT (networks), "switch"))); gtk_header_bar_pack_start (GTK_HEADER_BAR (self->media_sharing_headerbar), w); @@ -644,25 +614,25 @@ cc_sharing_panel_setup_media_sharing_dialog (CcSharingPanel *self) } static void -cc_sharing_panel_setup_label (CcSharingPanel *self, - GtkWidget *label, +cc_sharing_panel_setup_group (CcSharingPanel *self, + GtkWidget *group, const gchar *hostname) { g_autofree gchar *text = NULL; - if (label == self->personal_file_sharing_label) + if (group == self->personal_file_sharing_group) { g_autofree gchar *url = g_strdup_printf ("<a href=\"dav://%s\">dav://%s</a>", hostname, hostname); /* TRANSLATORS: %s is replaced with a link to a dav://<hostname> URL */ text = g_strdup_printf (_("File Sharing allows you to share your Public folder with others on your current network using: %s"), url); } - else if (label == self->remote_login_label) + else if (group == self->remote_login_group) { g_autofree gchar *command = g_strdup_printf ("<a href=\"ssh %s\">ssh %s</a>", hostname, hostname); /* TRANSLATORS: %s is replaced with a link to a "ssh <hostname>" command to run */ text = g_strdup_printf (_("When remote login is enabled, remote users can connect using the Secure Shell command:\n%s"), command); } - else if (label == self->screen_sharing_label) + else if (group == self->screen_sharing_group) { g_autofree gchar *url = g_strdup_printf ("<a href=\"vnc://%s\">vnc://%s</a>", hostname, hostname); /* TRANSLATORS: %s is replaced with a link to a vnc://<hostname> URL */ @@ -671,13 +641,13 @@ cc_sharing_panel_setup_label (CcSharingPanel *self, else g_assert_not_reached (); - gtk_label_set_label (GTK_LABEL (label), text); + adw_preferences_group_set_description (ADW_PREFERENCES_GROUP (group), text); } typedef struct { CcSharingPanel *panel; - GtkWidget *label; + GtkWidget *group; } GetHostNameData; G_DEFINE_AUTOPTR_CLEANUP_FUNC (GetHostNameData, g_free); @@ -706,7 +676,7 @@ cc_sharing_panel_get_host_name_fqdn_done (GObject *object, hostname = cc_hostname_entry_get_hostname (CC_HOSTNAME_ENTRY (data->panel->hostname_entry)); - cc_sharing_panel_setup_label (data->panel, data->label, hostname); + cc_sharing_panel_setup_group (data->panel, data->group, hostname); } return; @@ -714,7 +684,7 @@ cc_sharing_panel_get_host_name_fqdn_done (GObject *object, g_variant_get (variant, "(&s)", &fqdn); - cc_sharing_panel_setup_label (data->panel, data->label, fqdn); + cc_sharing_panel_setup_group (data->panel, data->group, fqdn); } static void @@ -738,7 +708,7 @@ cc_sharing_panel_bus_ready (GObject *object, hostname = cc_hostname_entry_get_hostname (CC_HOSTNAME_ENTRY (data->panel->hostname_entry)); - cc_sharing_panel_setup_label (data->panel, data->label, hostname); + cc_sharing_panel_setup_group (data->panel, data->group, hostname); } return; @@ -761,8 +731,8 @@ cc_sharing_panel_bus_ready (GObject *object, static void -cc_sharing_panel_setup_label_with_hostname (CcSharingPanel *self, - GtkWidget *label) +cc_sharing_panel_setup_group_with_hostname (CcSharingPanel *self, + GtkWidget *group) { GetHostNameData *get_hostname_data; @@ -770,7 +740,7 @@ cc_sharing_panel_setup_label_with_hostname (CcSharingPanel *self, /* set the hostname */ get_hostname_data = g_new (GetHostNameData, 1); get_hostname_data->panel = self; - get_hostname_data->label = label; + get_hostname_data->group = group; g_bus_get (G_BUS_TYPE_SYSTEM, cc_panel_get_cancellable (CC_PANEL (self)), cc_sharing_panel_bus_ready, @@ -813,13 +783,8 @@ cc_sharing_panel_setup_personal_file_sharing_dialog (CcSharingPanel *self) GSettings *settings; GtkWidget *networks, *w; - cc_sharing_panel_bind_switch_to_widgets (self->personal_file_sharing_require_password_switch, - self->personal_file_sharing_password_entry, - self->personal_file_sharing_password_label, - NULL); - - cc_sharing_panel_setup_label_with_hostname (self, - self->personal_file_sharing_label); + cc_sharing_panel_setup_group_with_hostname (self, + self->personal_file_sharing_group); /* the password cannot be read, so just make sure the entry is not empty */ gtk_editable_set_text (GTK_EDITABLE (self->personal_file_sharing_password_entry), @@ -838,7 +803,8 @@ cc_sharing_panel_setup_personal_file_sharing_dialog (CcSharingPanel *self) NULL); networks = cc_sharing_networks_new (self->sharing_proxy, "gnome-user-share-webdav"); - gtk_grid_attach (GTK_GRID (self->personal_file_sharing_grid), networks, 0, 3, 2, 1); + adw_preferences_page_add (ADW_PREFERENCES_PAGE (self->personal_file_sharing_page), + ADW_PREFERENCES_GROUP (networks)); w = create_switch_with_bindings (GTK_SWITCH (g_object_get_data (G_OBJECT (networks), "switch"))); gtk_header_bar_pack_start (GTK_HEADER_BAR (self->personal_file_sharing_headerbar), w); @@ -861,7 +827,7 @@ cc_sharing_panel_setup_remote_login_dialog (CcSharingPanel *self) cc_sharing_panel_bind_switch_to_label (self, self->remote_login_switch, self->remote_login_row); - cc_sharing_panel_setup_label_with_hostname (self, self->remote_login_label); + cc_sharing_panel_setup_group_with_hostname (self, self->remote_login_group); g_signal_connect_object (self->remote_login_switch, "notify::active", G_CALLBACK (remote_login_switch_activate), self, G_CONNECT_SWAPPED); @@ -891,22 +857,13 @@ cc_sharing_panel_check_schema_available (CcSharingPanel *self, } static void -screen_sharing_show_cb (CcSharingPanel *self) -{ - gtk_check_button_set_active (GTK_CHECK_BUTTON (self->show_password_checkbutton), - FALSE); -} - -static void screen_sharing_hide_cb (CcSharingPanel *self) { GtkCheckButton *ac_radio; - GtkEntry *pw_entry; const gchar *password; ac_radio = GTK_CHECK_BUTTON (self->approve_connections_radiobutton); - pw_entry = GTK_ENTRY (self->remote_control_password_entry); - password = gtk_editable_get_text (GTK_EDITABLE (pw_entry)); + password = gtk_editable_get_text (GTK_EDITABLE (self->remote_control_password_entry)); if (password == NULL || *password == '\0') gtk_check_button_set_active (ac_radio, TRUE); @@ -919,9 +876,11 @@ screen_sharing_password_insert_text_cb (CcSharingPanel *self, gint new_text_length, gpointer position) { + GtkText *text; int l, available_size; - l = gtk_entry_buffer_get_bytes (gtk_entry_get_buffer (GTK_ENTRY (self->remote_control_password_entry))); + text = GTK_TEXT (gtk_editable_get_delegate (GTK_EDITABLE (self->remote_control_password_entry))); + l = gtk_entry_buffer_get_bytes (gtk_text_get_buffer (text)); if (l + new_text_length <= MAX_PASSWORD_SIZE) return; @@ -957,22 +916,7 @@ cc_sharing_panel_setup_screen_sharing_dialog_gnome_remote_desktop (CcSharingPane g_autoptr(GSettings) vnc_settings = NULL; GtkWidget *networks, *w; - cc_sharing_panel_bind_switch_to_widgets (self->require_password_radiobutton, self->password_grid, NULL); - - cc_sharing_panel_setup_label_with_hostname (self, self->screen_sharing_label); - - g_object_bind_property (self->show_password_checkbutton, - "active", - self->remote_control_password_entry, - "visibility", - G_BINDING_SYNC_CREATE); - - /* make sure the password entry is hidden by default */ - g_signal_connect_object (self->screen_sharing_dialog, - "show", - G_CALLBACK (screen_sharing_show_cb), - self, - G_CONNECT_SWAPPED); + cc_sharing_panel_setup_group_with_hostname (self, self->screen_sharing_group); g_signal_connect_object (self->screen_sharing_dialog, "hide", @@ -996,7 +940,7 @@ cc_sharing_panel_setup_screen_sharing_dialog_gnome_remote_desktop (CcSharingPane g_settings_bind (vnc_settings, "view-only", - self->remote_control_checkbutton, + self->remote_control_switch, "active", G_SETTINGS_BIND_DEFAULT | G_SETTINGS_BIND_INVERT_BOOLEAN); @@ -1027,7 +971,8 @@ cc_sharing_panel_setup_screen_sharing_dialog_gnome_remote_desktop (CcSharingPane G_CONNECT_SWAPPED); networks = cc_sharing_networks_new (self->sharing_proxy, "gnome-remote-desktop"); - gtk_box_append (GTK_BOX (self->remote_control_box), networks); + adw_preferences_page_add (ADW_PREFERENCES_PAGE (self->screen_sharing_page), + ADW_PREFERENCES_GROUP (networks)); w = create_switch_with_bindings (GTK_SWITCH (g_object_get_data (G_OBJECT (networks), "switch"))); gtk_header_bar_pack_start (GTK_HEADER_BAR (self->screen_sharing_headerbar), w); diff --git a/panels/sharing/cc-sharing-panel.ui b/panels/sharing/cc-sharing-panel.ui index 9a26d69b1..f48eef7e5 100644 --- a/panels/sharing/cc-sharing-panel.ui +++ b/panels/sharing/cc-sharing-panel.ui @@ -67,93 +67,33 @@ </template> <object class="GtkDialog" id="personal_file_sharing_dialog"> <property name="title" translatable="yes">File Sharing</property> - <property name="resizable">False</property> - <property name="use_header_bar">1</property> + <property name="resizable">True</property> <property name="modal">True</property> + <property name="default-width">558</property> + <property name="default-height">378</property> <child> - <object class="GtkBox"> - <property name="margin-top">12</property> - <property name="margin-bottom">12</property> - <property name="margin-start">12</property> - <property name="margin-end">12</property> - <property name="spacing">12</property> - <property name="orientation">vertical</property> + <object class="AdwPreferencesPage" id="personal_file_sharing_page"> <child> - <object class="GtkGrid" id="personal_file_sharing_grid"> - <property name="margin_start">12</property> - <property name="margin_end">6</property> - <property name="margin_top">12</property> - <property name="margin_bottom">12</property> - <property name="row_spacing">12</property> - <property name="column_spacing">6</property> - <child> - <object class="GtkLabel" id="personal_file_sharing_label"> - <property name="xalign">0</property> - <property name="label">File Sharing allows you to share your Public folder with others on your current network using: <a href="dav://%s">dav://%s</a></property> - <property name="use_markup">True</property> - <property name="wrap">True</property> - <property name="max-width-chars">36</property> - <layout> - <property name="column">0</property> - <property name="row">0</property> - <property name="column-span">2</property> - </layout> - </object> - </child> + <object class="AdwPreferencesGroup" id="personal_file_sharing_group"> <child> - <object class="GtkGrid" id="require_password_grid"> - <property name="row_spacing">12</property> - <property name="column_spacing">6</property> - <layout> - <property name="column">0</property> - <property name="row">2</property> - <property name="column-span">2</property> - </layout> - <child> - <object class="GtkLabel" id="label17"> - <property name="halign">start</property> - <property name="label" translatable="yes">_Require Password</property> - <property name="use_markup">True</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">personal_file_sharing_require_password_switch</property> - <layout> - <property name="column">0</property> - <property name="row">0</property> - </layout> - </object> - </child> - <child> - <object class="GtkLabel" id="personal_file_sharing_password_label"> - <property name="halign">start</property> - <property name="hexpand">True</property> - <property name="label" translatable="yes">_Password</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">personal_file_sharing_password_entry</property> - <layout> - <property name="column">0</property> - <property name="row">1</property> - </layout> - </object> - </child> - <child> + <object class="AdwActionRow"> + <property name="title" translatable="yes">_Require Password</property> + <property name="use-underline">True</property> + <property name="activatable-widget">personal_file_sharing_require_password_switch</property> + <child type="suffix"> <object class="GtkSwitch" id="personal_file_sharing_require_password_switch"> - <property name="halign">end</property> - <layout> - <property name="column">1</property> - <property name="row">0</property> - </layout> + <property name="valign">center</property> </object> </child> + </object> + </child> + <child> + <object class="AdwActionRow"> + <property name="title" translatable="yes">Password</property> + <property name="sensitive" bind-source="personal_file_sharing_require_password_switch" bind-flags="sync-create" bind-property="active"/> <child> - <object class="GtkEntry" id="personal_file_sharing_password_entry"> - <property name="visibility">False</property> - <property name="invisible_char">●</property> - <property name="invisible_char_set">True</property> - <property name="input_purpose">password</property> - <layout> - <property name="column">1</property> - <property name="row">1</property> - </layout> + <object class="GtkPasswordEntry" id="personal_file_sharing_password_entry"> + <property name="valign">center</property> </object> </child> </object> @@ -170,49 +110,22 @@ </object> <object class="GtkDialog" id="remote_login_dialog"> <property name="title" translatable="yes">Remote Login</property> - <property name="resizable">False</property> + <property name="resizable">True</property> <property name="use_header_bar">1</property> <property name="modal">True</property> + <property name="default-width">558</property> + <property name="default-height">222</property> <child> - <object class="GtkBox"> - <property name="margin-top">12</property> - <property name="margin-bottom">12</property> - <property name="margin-start">12</property> - <property name="margin-end">12</property> - <property name="spacing">12</property> - <property name="orientation">vertical</property> - <child> - <object class="GtkLabel" id="remote_login_label"> - <property name="xalign">0</property> - <property name="label">When remote login is enabled, remote users can connect using the Secure Shell command: -<a href="ssh %s">ssh %s</a></property> - <property name="use_markup">True</property> - <property name="wrap">True</property> - <property name="max-width-chars">36</property> - </object> - </child> + <object class="AdwPreferencesPage"> <child> - <object class="GtkBox"> - <style> - <class name="frame"/> - <class name="view"/> - </style> + <object class="AdwPreferencesGroup" id="remote_login_group"> <child> - <object class="GtkBox"> - <property name="margin-top">12</property> - <property name="margin-bottom">12</property> - <property name="margin-start">12</property> - <property name="margin-end">12</property> - <child> - <object class="GtkLabel"> - <property name="label" translatable="yes">Remote Login</property> - <property name="hexpand">True</property> - <property name="xalign">0</property> - </object> - </child> - <child> + <object class="AdwActionRow"> + <property name="title" translatable="yes">Remote Login</property> + <property name="activatable-widget">remote_login_switch</property> + <child type="suffix"> <object class="GtkSwitch" id="remote_login_switch"> - <property name="halign">end</property> + <property name="valign">center</property> </object> </child> </object> @@ -221,144 +134,59 @@ </child> </object> </child> - </object> <object class="GtkDialog" id="screen_sharing_dialog"> <property name="title" translatable="yes">Screen Sharing</property> - <property name="resizable">False</property> - <property name="use_header_bar">1</property> + <property name="resizable">True</property> <property name="modal">True</property> + <property name="default-width">558</property> + <property name="default-height">498</property> <child> - <object class="GtkBox"> - <property name="margin-top">12</property> - <property name="margin-bottom">12</property> - <property name="margin-start">12</property> - <property name="margin-end">12</property> - <property name="orientation">vertical</property> + <object class="AdwPreferencesPage" id="screen_sharing_page"> <child> - <object class="GtkBox" id="box8"> - <property name="orientation">vertical</property> + <object class="AdwPreferencesGroup" id="screen_sharing_group"> <child> - <object class="GtkGrid" id="screen_sharing_grid"> - <property name="margin_start">12</property> - <property name="margin_end">6</property> - <property name="margin_bottom">12</property> - <property name="row_spacing">12</property> - <property name="column_spacing">6</property> - <child> - <object class="GtkLabel" id="screen_sharing_label"> - <property name="xalign">0</property> - <property name="label">Screen sharing allows remote users to view or control your screen by connecting to: <a href="vnc://%s">vnc://%s</a></property> - <property name="use_markup">True</property> - <property name="wrap">True</property> - <property name="max-width-chars">36</property> - <property name="margin_bottom">6</property> - <layout> - <property name="column">0</property> - <property name="row">0</property> - <property name="column-span">2</property> - </layout> + <object class="AdwActionRow"> + <property name="title" translatable="yes">_Allow connections to control the screen</property> + <property name="use-underline">True</property> + <property name="activatable-widget">remote_control_switch</property> + <child type="suffix"> + <object class="GtkSwitch" id="remote_control_switch"> + <property name="valign">center</property> </object> </child> - <child> - <object class="GtkBox" id="remote_control_box"> - <property name="orientation">vertical</property> - <property name="spacing">12</property> - <layout> - <property name="column">0</property> - <property name="row">2</property> - <property name="column-span">2</property> - </layout> - <child> - <object class="GtkCheckButton" id="remote_control_checkbutton"> - <property name="use_underline">True</property> - <property name="label" translatable="yes">_Allow connections to control the screen</property> - </object> - </child> - <child> - <object class="GtkGrid" id="remote_control_grid"> - <property name="row_spacing">6</property> - <child> - <object class="GtkGrid" id="password_grid"> - <property name="row_spacing">6</property> - <property name="column_spacing">6</property> - <layout> - <property name="column">0</property> - <property name="row">3</property> - </layout> - <child> - <object class="GtkLabel" id="remote_control_password_label"> - <property name="halign">start</property> - <property name="margin_start">12</property> - <property name="label" translatable="yes">_Password:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">remote_control_password_entry</property> - <layout> - <property name="column">0</property> - <property name="row">0</property> - </layout> - </object> - </child> - <child> - <object class="GtkEntry" id="remote_control_password_entry"> - <property name="hexpand">True</property> - <property name="visibility">False</property> - <property name="invisible_char">●</property> - <property name="input_purpose">password</property> - <layout> - <property name="column">1</property> - <property name="row">0</property> - </layout> - </object> - </child> - <child> - <object class="GtkCheckButton" id="show_password_checkbutton"> - <property name="label" translatable="yes">_Show Password</property> - <property name="use_underline">True</property> - <layout> - <property name="column">1</property> - <property name="row">1</property> - </layout> - </object> - </child> - </object> - </child> - <child> - <object class="GtkLabel" id="label2"> - <property name="xalign">0</property> - <property name="label" translatable="yes">Access Options</property> - <layout> - <property name="column">0</property> - <property name="row">0</property> - </layout> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> - </object> - </child> - <child> - <object class="GtkCheckButton" id="approve_connections_radiobutton"> - <property name="label" translatable="yes">_New connections must ask for access</property> - <property name="group">require_password_radiobutton</property> - <property name="use_underline">True</property> - <layout> - <property name="column">0</property> - <property name="row">1</property> - </layout> - </object> - </child> - <child> - <object class="GtkCheckButton" id="require_password_radiobutton"> - <property name="label" translatable="yes">_Require a password</property> - <property name="use_underline">True</property> - <layout> - <property name="column">0</property> - <property name="row">2</property> - </layout> - </object> - </child> - </object> - </child> + </object> + </child> + </object> + </child> + <child> + <object class="AdwPreferencesGroup"> + <property name="title" translatable="yes">Access Options</property> + <child> + <object class="AdwActionRow"> + <property name="title" translatable="yes">_New connections must ask for access</property> + <property name="use-underline">True</property> + <property name="activatable-widget">approve_connections_radiobutton</property> + <child type="prefix"> + <object class="GtkCheckButton" id="approve_connections_radiobutton"> + <property name="group">require_password_radiobutton</property> + </object> + </child> + </object> + </child> + <child> + <object class="AdwActionRow"> + <property name="title" translatable="yes">_Require a password</property> + <property name="use-underline">True</property> + <property name="activatable-widget">require_password_radiobutton</property> + <child type="prefix"> + <object class="GtkCheckButton" id="require_password_radiobutton"/> + </child> + <child type="suffix"> + <object class="GtkPasswordEntry" id="remote_control_password_entry"> + <property name="valign">center</property> + <property name="show-peek-icon">True</property> + <property name="sensitive" bind-source="require_password_radiobutton" bind-flags="sync-create" bind-property="active"/> </object> </child> </object> @@ -375,63 +203,29 @@ </object> <object class="GtkDialog" id="media_sharing_dialog"> <property name="title" translatable="yes">Media Sharing</property> - <property name="resizable">False</property> + <property name="resizable">True</property> <property name="modal">True</property> + <property name="default-width">558</property> + <property name="default-height">528</property> <child> - <object class="GtkBox"> - <property name="margin-top">12</property> - <property name="margin-bottom">12</property> - <property name="margin-start">12</property> - <property name="margin-end">12</property> - <property name="spacing">12</property> - <property name="orientation">vertical</property> + <object class="AdwPreferencesPage" id="shared_folders_page"> <child> - <object class="GtkGrid" id="shared_folders_grid"> - <property name="margin_start">12</property> - <property name="margin_end">6</property> - <property name="margin_top">12</property> - <property name="margin_bottom">12</property> - <property name="row_spacing">12</property> - <property name="column_spacing">6</property> - <child> - <object class="GtkLabel" id="label13"> - <property name="xalign">0</property> - <property name="label" translatable="yes">Share music, photos and videos over the network.</property> - <property name="max-width-chars">36</property> - <property name="wrap">True</property> - <layout> - <property name="column">0</property> - <property name="row">0</property> - <property name="column-span">2</property> - </layout> - </object> - </child> - <child> - <object class="GtkLabel" id="label15"> - <property name="xalign">0</property> - <property name="label" translatable="yes">Folders</property> - <property name="mnemonic_widget">shared_folders_listbox</property> - <layout> - <property name="column">0</property> - <property name="row">1</property> - <property name="column-span">2</property> - </layout> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> - </object> - </child> + <object class="AdwPreferencesGroup"> + <property name="description" translatable="yes">Share music, photos and videos over the network.</property> + </object> + </child> + <child> + <object class="AdwPreferencesGroup" id="shared_folders_group"> + <property name="title" translatable="yes">Folders</property> <child> <object class="GtkListBox" id="shared_folders_listbox"> <property name="selection-mode">none</property> + <accessibility> + <relation name="labelled-by">shared_folders_group</relation> + </accessibility> <style> - <class name="boxed-list" /> + <class name="boxed-list"/> </style> - <layout> - <property name="column">0</property> - <property name="row">3</property> - <property name="column-span">2</property> - </layout> </object> </child> </object> |