From cef9a23e6a64c1a6f01b72ca2bdd158f4d55c922 Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Tue, 8 Dec 2020 18:34:20 +0000 Subject: [PATCH] cc-permission-infobar: Support customisable titles MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some panels may want to provide more specific context than ‘Change Settings’. Signed-off-by: Philip Withnall --- panels/common/cc-permission-infobar.c | 26 ++++++++++++++++++++++++++ panels/common/cc-permission-infobar.h | 3 +++ panels/common/cc-permission-infobar.ui | 5 +++-- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/panels/common/cc-permission-infobar.c b/panels/common/cc-permission-infobar.c index 31329ad81..afe207bb1 100644 --- a/panels/common/cc-permission-infobar.c +++ b/panels/common/cc-permission-infobar.c @@ -27,12 +27,15 @@ # include #endif +#include + #include "cc-permission-infobar.h" struct _CcPermissionInfobar { GtkRevealer parent_instance; + GtkLabel *title; GtkLockButton *lock_button; }; @@ -59,6 +62,7 @@ cc_permission_infobar_class_init (CcPermissionInfobarClass *klass) "/org/gnome/control-center/" "common/cc-permission-infobar.ui"); + gtk_widget_class_bind_template_child (widget_class, CcPermissionInfobar, title); gtk_widget_class_bind_template_child (widget_class, CcPermissionInfobar, lock_button); } @@ -66,6 +70,9 @@ static void cc_permission_infobar_init (CcPermissionInfobar *self) { gtk_widget_init_template (GTK_WIDGET (self)); + + /* Set the default title. */ + cc_permission_infobar_set_title (self, NULL); } void @@ -82,3 +89,22 @@ cc_permission_infobar_set_permission (CcPermissionInfobar *self, G_CONNECT_SWAPPED); on_permission_changed (self); } + +/** + * cc_permission_infobar_set_title: + * @self: a #CcPermissionInfobar + * @title: (nullable): title to display in the infobar, or %NULL for the default + * + * Set the title text to display in the infobar. + */ +void +cc_permission_infobar_set_title (CcPermissionInfobar *self, + const gchar *title) +{ + g_return_if_fail (CC_IS_PERMISSION_INFOBAR (self)); + + if (title == NULL) + title = _("Unlock to Change Settings"); + + gtk_label_set_text (self->title, title); +} diff --git a/panels/common/cc-permission-infobar.h b/panels/common/cc-permission-infobar.h index 4595a8b47..03b8ad988 100644 --- a/panels/common/cc-permission-infobar.h +++ b/panels/common/cc-permission-infobar.h @@ -31,4 +31,7 @@ G_DECLARE_FINAL_TYPE (CcPermissionInfobar, cc_permission_infobar, CC, PERMISSION void cc_permission_infobar_set_permission (CcPermissionInfobar *self, GPermission *permission); +void cc_permission_infobar_set_title (CcPermissionInfobar *self, + const gchar *title); + G_END_DECLS diff --git a/panels/common/cc-permission-infobar.ui b/panels/common/cc-permission-infobar.ui index 12eea7577..770765e08 100644 --- a/panels/common/cc-permission-infobar.ui +++ b/panels/common/cc-permission-infobar.ui @@ -39,10 +39,11 @@ True vertical - + True start - Unlock to Change Settings + +