static void gsm_logout_dialog_init (GsmLogoutDialog *logout_dialog) { logout_dialog->priv = GSM_LOGOUT_DIALOG_GET_PRIVATE (logout_dialog); logout_dialog->priv->timeout_id = 0; logout_dialog->priv->timeout = 0; logout_dialog->priv->default_response = GTK_RESPONSE_CANCEL; gtk_window_set_skip_taskbar_hint (GTK_WINDOW (logout_dialog), TRUE); gtk_window_set_keep_above (GTK_WINDOW (logout_dialog), TRUE); gtk_window_stick (GTK_WINDOW (logout_dialog)); #ifdef HAVE_UPOWER logout_dialog->priv->up_client = up_client_new (); #endif #ifdef HAVE_SYSTEMD if (LOGIND_RUNNING()) logout_dialog->priv->systemd = gsm_get_systemd (); else #endif logout_dialog->priv->consolekit = gsm_get_consolekit (); g_signal_connect (logout_dialog, "destroy", G_CALLBACK (gsm_logout_dialog_destroy), NULL); g_signal_connect (logout_dialog, "show", G_CALLBACK (gsm_logout_dialog_show), NULL); }
static void maybe_load_saved_session_apps(GsmManager* manager) { GsmConsolekit* consolekit = NULL; #ifdef HAVE_SYSTEMD GsmSystemd* systemd = NULL; #endif char* session_type; gboolean is_login; #ifdef HAVE_SYSTEMD if (LOGIND_RUNNING()) { systemd = gsm_get_systemd(); session_type = gsm_systemd_get_current_session_type(systemd); is_login = g_strcmp0 (session_type, GSM_SYSTEMD_SESSION_TYPE_LOGIN_WINDOW) == 0; } else { #endif consolekit = gsm_get_consolekit(); session_type = gsm_consolekit_get_current_session_type(consolekit); is_login = g_strcmp0 (session_type, GSM_CONSOLEKIT_SESSION_TYPE_LOGIN_WINDOW) == 0; #ifdef HAVE_SYSTEMD } #endif if (!is_login) { GSettings* settings; gboolean autostart; settings = g_settings_new (GSM_SCHEMA); autostart = g_settings_get_boolean (settings, KEY_AUTOSAVE); g_object_unref (settings); if (autostart == TRUE) gsm_manager_add_autostart_apps_from_dir(manager, gsm_util_get_saved_session_dir()); } if (consolekit != NULL) g_object_unref(consolekit); #ifdef HAVE_SYSTEMD if (systemd != NULL) g_object_unref(systemd); #endif g_free(session_type); }
static void gsm_logout_dialog_init (GsmLogoutDialog *logout_dialog) { logout_dialog->priv = GSM_LOGOUT_DIALOG_GET_PRIVATE (logout_dialog); logout_dialog->priv->timeout_id = 0; logout_dialog->priv->timeout = 0; logout_dialog->priv->default_response = GTK_RESPONSE_CANCEL; logout_dialog->priv->info_label = NULL; gtk_window_set_resizable (GTK_WINDOW (logout_dialog), FALSE); gtk_dialog_set_has_separator (GTK_DIALOG (logout_dialog), FALSE); gtk_window_set_keep_above (GTK_WINDOW (logout_dialog), TRUE); gtk_window_stick (GTK_WINDOW (logout_dialog)); /* use HIG spacings */ gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (logout_dialog)->vbox), 12); gtk_container_set_border_width (GTK_CONTAINER (logout_dialog), 6); gtk_dialog_add_button (GTK_DIALOG (logout_dialog), GTK_STOCK_HELP, GTK_RESPONSE_HELP); logout_dialog->priv->cancel_button = gtk_dialog_add_button (GTK_DIALOG (logout_dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL); logout_dialog->priv->up_client = up_client_new (); logout_dialog->priv->consolekit = gsm_get_consolekit (); g_signal_connect (logout_dialog, "destroy", G_CALLBACK (gsm_logout_dialog_destroy), NULL); g_signal_connect (logout_dialog, "show", G_CALLBACK (gsm_logout_dialog_show), NULL); }
static gboolean gsm_logout_dialog_timeout (gpointer data) { GsmLogoutDialog *logout_dialog; char *seconds_warning; char *secondary_text; static char *session_type = NULL; static gboolean is_not_login; logout_dialog = (GsmLogoutDialog *) data; if (!logout_dialog->priv->timeout) { gtk_dialog_response (GTK_DIALOG (logout_dialog), logout_dialog->priv->default_response); return FALSE; } switch (logout_dialog->priv->type) { case GSM_DIALOG_LOGOUT_TYPE_LOGOUT: seconds_warning = ngettext ("You will be automatically logged " "out in %d second", "You will be automatically logged " "out in %d seconds", logout_dialog->priv->timeout); break; case GSM_DIALOG_LOGOUT_TYPE_SHUTDOWN: seconds_warning = ngettext ("This system will be automatically " "shut down in %d second", "This system will be automatically " "shut down in %d seconds", logout_dialog->priv->timeout); break; default: g_assert_not_reached (); } seconds_warning = g_strdup_printf (seconds_warning, logout_dialog->priv->timeout); if (session_type == NULL) { #ifdef HAVE_SYSTEMD if (LOGIND_RUNNING()) { GsmSystemd *systemd; systemd = gsm_get_systemd (); session_type = gsm_systemd_get_current_session_type (systemd); g_object_unref (systemd); is_not_login = (g_strcmp0 (session_type, GSM_SYSTEMD_SESSION_TYPE_LOGIN_WINDOW) != 0); } else { #endif GsmConsolekit *consolekit; consolekit = gsm_get_consolekit (); session_type = gsm_consolekit_get_current_session_type (consolekit); g_object_unref (consolekit); is_not_login = (g_strcmp0 (session_type, GSM_CONSOLEKIT_SESSION_TYPE_LOGIN_WINDOW) != 0); #ifdef HAVE_SYSTEMD } #endif } if (is_not_login) { char *name; name = g_locale_to_utf8 (g_get_real_name (), -1, NULL, NULL, NULL); if (!name || name[0] == '\0' || strcmp (name, "Unknown") == 0) { name = g_locale_to_utf8 (g_get_user_name (), -1 , NULL, NULL, NULL); } if (!name) { name = g_strdup (g_get_user_name ()); } secondary_text = g_strdup_printf (_("You are currently logged in as \"%s\"."), name); g_free (name); } else { secondary_text = g_strdup (seconds_warning); } gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (logout_dialog->priv->progressbar), logout_dialog->priv->timeout / 60.0); gtk_progress_bar_set_text (GTK_PROGRESS_BAR (logout_dialog->priv->progressbar), seconds_warning); gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (logout_dialog), secondary_text, NULL); logout_dialog->priv->timeout--; g_free (secondary_text); g_free (seconds_warning); return TRUE; }
static void gsm_logout_set_info_text (GsmLogoutDialog *logout_dialog, int seconds) { const char *info_text; char *markup = NULL; static char *session_type = NULL; switch (logout_dialog->priv->default_response) { case GSM_LOGOUT_RESPONSE_LOGOUT: info_text = ngettext ("You will be automatically logged " "out in %d second.", "You will be automatically logged " "out in %d seconds.", seconds); break; case GSM_LOGOUT_RESPONSE_SHUTDOWN: info_text = ngettext ("This system will be automatically " "shut down in %d second.", "This system will be automatically " "shut down in %d seconds.", seconds); break; case GTK_RESPONSE_CANCEL: info_text = NULL; break; default: g_assert_not_reached (); } if (session_type == NULL) { GsmConsolekit *consolekit; consolekit = gsm_get_consolekit (); session_type = gsm_consolekit_get_current_session_type (consolekit); g_object_unref (consolekit); } if (g_strcmp0 (session_type, GSM_CONSOLEKIT_SESSION_TYPE_LOGIN_WINDOW) != 0) { char *name, *buf, *buf2; name = g_locale_to_utf8 (g_get_real_name (), -1, NULL, NULL, NULL); if (!name || name[0] == '\0' || strcmp (name, "Unknown") == 0) { name = g_locale_to_utf8 (g_get_user_name (), -1 , NULL, NULL, NULL); } if (!name) { name = g_strdup (g_get_user_name ()); } buf = g_strdup_printf (_("You are currently logged in as \"%s\"."), name); if (info_text != NULL) { buf2 = g_strdup_printf (info_text, seconds); markup = g_markup_printf_escaped ("<i>%s</i>", g_strconcat (buf, "\n", buf2, NULL)); g_free (buf2); } else { markup = g_markup_printf_escaped ("<i>%s</i>", buf); } g_free (buf); g_free (name); } else if (info_text != NULL) { char *buf2; buf2 = g_strdup_printf (info_text, seconds); markup = g_markup_printf_escaped ("<i>%s</i>", buf2); g_free (buf2); } gtk_label_set_markup (GTK_LABEL (logout_dialog->priv->info_label), markup ? markup : ""); if (markup != NULL) g_free (markup); }