[gnome-control-center] applications: Show portal permissions for snaps
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] applications: Show portal permissions for snaps
- Date: Tue, 17 Dec 2019 23:35:23 +0000 (UTC)
commit 4ffc990d939089b52fa7706ff81a1cf22de624ce
Author: Robert Ancell <robert ancell canonical com>
Date: Tue Mar 12 16:51:42 2019 +1300
applications: Show portal permissions for snaps
panels/applications/cc-applications-panel.c | 53 ++++++++++++++++++-----------
1 file changed, 34 insertions(+), 19 deletions(-)
---
diff --git a/panels/applications/cc-applications-panel.c b/panels/applications/cc-applications-panel.c
index 075c8475e..a05102fca 100644
--- a/panels/applications/cc-applications-panel.c
+++ b/panels/applications/cc-applications-panel.c
@@ -42,6 +42,8 @@
#define APP_SCHEMA MASTER_SCHEMA ".application"
#define APP_PREFIX "/org/gnome/desktop/notifications/application/"
+#define PORTAL_SNAP_PREFIX "snap."
+
struct _CcApplicationsPanel
{
CcPanel parent;
@@ -213,11 +215,23 @@ set_portal_permissions (CcApplicationsPanel *self,
g_warning ("Error setting portal permissions: %s", error->message);
}
-static char *
-get_flatpak_id (GAppInfo *info)
+static gchar *
+get_portal_app_id (GAppInfo *info)
{
if (G_IS_DESKTOP_APP_INFO (info))
- return g_desktop_app_info_get_string (G_DESKTOP_APP_INFO (info), "X-Flatpak");
+ {
+ gchar *flatpak_id;
+ g_autofree gchar *snap_name = NULL;
+ g_autofree gchar *executable = NULL;
+
+ flatpak_id = g_desktop_app_info_get_string (G_DESKTOP_APP_INFO (info), "X-Flatpak");
+ if (flatpak_id != NULL)
+ return flatpak_id;
+
+ snap_name = g_desktop_app_info_get_string (G_DESKTOP_APP_INFO (info), "X-SnapInstanceName");
+ if (snap_name != NULL)
+ return g_strdup_printf ("%s%s", PORTAL_SNAP_PREFIX, snap_name);
+ }
return NULL;
}
@@ -636,39 +650,39 @@ static void
update_permission_section (CcApplicationsPanel *self,
GAppInfo *info)
{
- g_autofree gchar *flatpak_id = get_flatpak_id (info);
+ g_autofree gchar *portal_app_id = get_portal_app_id (info);
gboolean disabled, allowed, set;
gboolean has_any = FALSE, has_builtin = FALSE;
- if (flatpak_id == NULL)
+ if (portal_app_id == NULL)
{
gtk_widget_hide (self->permission_section);
return;
}
disabled = g_settings_get_boolean (self->privacy_settings, "disable-camera");
- get_device_allowed (self, "camera", flatpak_id, &set, &allowed);
+ get_device_allowed (self, "camera", portal_app_id, &set, &allowed);
cc_toggle_row_set_allowed (CC_TOGGLE_ROW (self->camera), allowed);
gtk_widget_set_visible (self->camera, set && !disabled);
gtk_widget_set_visible (self->no_camera, set && disabled);
has_any |= set;
disabled = g_settings_get_boolean (self->privacy_settings, "disable-microphone");
- get_device_allowed (self, "microphone", flatpak_id, &set, &allowed);
+ get_device_allowed (self, "microphone", portal_app_id, &set, &allowed);
cc_toggle_row_set_allowed (CC_TOGGLE_ROW (self->microphone), allowed);
gtk_widget_set_visible (self->microphone, set && !disabled);
gtk_widget_set_visible (self->no_microphone, set && disabled);
has_any |= set;
disabled = !g_settings_get_boolean (self->location_settings, "enabled");
- get_location_allowed (self, flatpak_id, &set, &allowed);
+ get_location_allowed (self, portal_app_id, &set, &allowed);
cc_toggle_row_set_allowed (CC_TOGGLE_ROW (self->location), allowed);
gtk_widget_set_visible (self->location, set && !disabled);
gtk_widget_set_visible (self->no_location, set && disabled);
has_any |= set;
remove_static_permissions (self);
- has_builtin = add_static_permissions (self, info, flatpak_id);
+ has_builtin = add_static_permissions (self, info, portal_app_id);
gtk_widget_set_visible (self->builtin, has_builtin);
has_any |= has_builtin;
@@ -682,7 +696,7 @@ update_integration_section (CcApplicationsPanel *self,
GAppInfo *info)
{
g_autofree gchar *app_id = get_app_id (info);
- g_autofree gchar *flatpak_id = get_flatpak_id (info);
+ g_autofree gchar *portal_app_id = get_portal_app_id (info);
gboolean set, allowed, disabled;
gboolean has_any = FALSE;
@@ -692,21 +706,21 @@ update_integration_section (CcApplicationsPanel *self,
gtk_widget_set_visible (self->search, set && !disabled);
gtk_widget_set_visible (self->no_search, set && disabled);
- if (flatpak_id != NULL)
+ if (portal_app_id != NULL)
{
g_clear_object (&self->notification_settings);
- get_notification_allowed (self, flatpak_id, &set, &allowed);
+ get_notification_allowed (self, portal_app_id, &set, &allowed);
cc_toggle_row_set_allowed (CC_TOGGLE_ROW (self->notification), allowed);
gtk_widget_set_visible (self->notification, set);
has_any |= set;
- get_background_allowed (self, flatpak_id, &set, &allowed);
+ get_background_allowed (self, portal_app_id, &set, &allowed);
cc_toggle_row_set_allowed (CC_TOGGLE_ROW (self->background), allowed);
gtk_widget_set_visible (self->background, set);
has_any |= set;
disabled = g_settings_get_boolean (self->privacy_settings, "disable-sound-output");
- get_device_allowed (self, "speakers", flatpak_id, &set, &allowed);
+ get_device_allowed (self, "speakers", portal_app_id, &set, &allowed);
cc_toggle_row_set_allowed (CC_TOGGLE_ROW (self->sound), allowed);
gtk_widget_set_visible (self->sound, set && !disabled);
gtk_widget_set_visible (self->no_sound, set && disabled);
@@ -1353,7 +1367,8 @@ update_app_row (CcApplicationsPanel *self,
{
g_autofree gchar *formatted_size = NULL;
- self->app_size = get_flatpak_app_size (app_id);
+ if (!g_str_has_prefix (app_id, PORTAL_SNAP_PREFIX))
+ self->app_size = get_flatpak_app_size (app_id);
formatted_size = g_format_size (self->app_size);
g_object_set (self->app, "info", formatted_size, NULL);
update_total_size (self);
@@ -1376,12 +1391,12 @@ static void
update_usage_section (CcApplicationsPanel *self,
GAppInfo *info)
{
- g_autofree gchar *flatpak_id = get_flatpak_id (info);
+ g_autofree gchar *portal_app_id = get_portal_app_id (info);
- if (flatpak_id != NULL)
+ if (portal_app_id != NULL)
{
gtk_widget_show (self->usage_section);
- update_flatpak_sizes (self, flatpak_id);
+ update_flatpak_sizes (self, portal_app_id);
}
else
{
@@ -1426,7 +1441,7 @@ update_panel (CcApplicationsPanel *self,
update_usage_section (self, info);
self->current_app_id = get_app_id (info);
- self->current_portal_app_id = get_flatpak_id (info);
+ self->current_portal_app_id = get_portal_app_id (info);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]