applications: Show portal permissions for snaps
This commit is contained in:
parent
fbb31cc1a7
commit
4ffc990d93
1 changed files with 34 additions and 19 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue