summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Davis <christopherdavis@gnome.org>2022-02-23 17:44:44 -0800
committerChristopher Davis <christopherdavis@gnome.org>2022-02-23 18:01:06 -0800
commitdbfea26c45f3a340bbcefa7e1591504f2c7b4026 (patch)
treebd62d61bbb931b8aeac9fbefeb5ccb8f086728fa
parenta4f2842b2aec7e44320a812a68820d88a1e79f94 (diff)
downloadgnome-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.c149
-rw-r--r--panels/sharing/cc-sharing-panel.ui382
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: &lt;a href="dav://%s"&gt;dav://%s&lt;/a&gt;</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:
-&lt;a href="ssh %s"&gt;ssh %s&lt;/a&gt;</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: &lt;a href="vnc://%s"&gt;vnc://%s&lt;/a&gt;</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>