static void gs_plugin_systemd_updates_permission_cb (GPermission *permission, GParamSpec *pspec, gpointer data) { GsPlugin *plugin = GS_PLUGIN (data); gboolean ret = g_permission_get_allowed (permission) || g_permission_get_can_acquire (permission); gs_plugin_set_allow_updates (plugin, ret); }
static void language_changed (CcLanguageChooser *chooser, GParamSpec *pspec, GisLanguagePage *page) { GisLanguagePagePrivate *priv = gis_language_page_get_instance_private (page); ActUser *user; GisDriver *driver; if (priv->selection_done_source > 0) { g_source_remove (priv->selection_done_source); priv->selection_done_source = 0; } priv->new_locale_id = cc_language_chooser_get_language (chooser); driver = GIS_PAGE (page)->driver; setlocale (LC_MESSAGES, priv->new_locale_id); gis_driver_locale_changed (driver); if (gis_driver_get_mode (driver) == GIS_DRIVER_MODE_NEW_USER) { if (g_permission_get_allowed (priv->permission)) { set_localed_locale (page); } else if (g_permission_get_can_acquire (priv->permission)) { g_permission_acquire_async (priv->permission, NULL, change_locale_permission_acquired, page); } } user = act_user_manager_get_user (act_user_manager_get_default (), g_get_user_name ()); if (act_user_is_loaded (user)) act_user_set_language (user, priv->new_locale_id); else g_signal_connect (user, "notify::is-loaded", G_CALLBACK (user_loaded), g_strdup (priv->new_locale_id)); gis_driver_set_user_language (driver, priv->new_locale_id); priv->selection_done_source = g_timeout_add (500, _selection_done, (gpointer)driver); }
static void on_permission_changed (GPermission *permission, GParamSpec *pspec, GtkBuilder *dialog) { GtkWidget *button; GtkWidget *label; gboolean can_acquire; gboolean allowed; if (permission) { can_acquire = g_permission_get_can_acquire (permission); allowed = g_permission_get_allowed (permission); } else { can_acquire = FALSE; allowed = FALSE; } button = WID ("copy_settings_button"); label = WID ("system-title"); if (!allowed && !can_acquire) { gtk_label_set_text (GTK_LABEL (label), _("The login screen, system accounts and new user accounts use the system-wide Region and Language settings.")); gtk_widget_hide (button); } else { gtk_label_set_text (GTK_LABEL (label), _("The login screen, system accounts and new user accounts use the system-wide Region and Language settings. You may change the system settings to match yours.")); gtk_widget_show (button); if (allowed) { gtk_button_set_label (GTK_BUTTON (button), _("Copy Settings")); } else { gtk_button_set_label (GTK_BUTTON (button), _("Copy Settings...")); } } }