void panel_session_manager_request_shutdown (PanelSessionManager *manager) { GVariant *ret; GError *error; g_return_if_fail (PANEL_IS_SESSION_MANAGER (manager)); if (!manager->priv->session_proxy) { g_warning ("Session manager service not available."); return; } error = NULL; ret = g_dbus_proxy_call_sync (manager->priv->session_proxy, "Shutdown", NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); if (ret) g_variant_unref (ret); if (error) { g_warning ("Could not ask session manager to shut down: %s", error->message); g_error_free (error); } }
PanelSessionManagerPresenceType panel_session_manager_get_presence (PanelSessionManager *manager) { GVariant *variant; PanelSessionManagerPresenceType ret; g_return_val_if_fail (PANEL_IS_SESSION_MANAGER (manager), PANEL_SESSION_MANAGER_PRESENCE_AVAILABLE); if (!manager->priv->presence_proxy) { g_warning ("Session manager service not available."); return PANEL_SESSION_MANAGER_PRESENCE_AVAILABLE; } variant = g_dbus_proxy_get_cached_property (manager->priv->presence_proxy, "status"); if (!variant) { g_warning ("Could not get presence from session manager."); return PANEL_SESSION_MANAGER_PRESENCE_AVAILABLE; } g_variant_get (variant, "u", &ret); g_variant_unref (variant); return ret; }
void panel_session_manager_set_presence (PanelSessionManager *manager, PanelSessionManagerPresenceType presence) { GVariant *ret; GError *error; g_return_if_fail (PANEL_IS_SESSION_MANAGER (manager)); if (!manager->priv->presence_proxy) { g_warning ("Session manager service not available."); return; } error = NULL; ret = g_dbus_proxy_call_sync (manager->priv->presence_proxy, "SetStatus", g_variant_new ("(u)", presence), G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); if (ret) g_variant_unref (ret); if (error) { g_warning ("Could not ask session manager to change presence: %s", error->message); g_error_free (error); } }
void panel_session_manager_request_logout (PanelSessionManager *manager, PanelSessionManagerLogoutType mode) { GError *error; DBusGProxy *proxy; g_return_if_fail (PANEL_IS_SESSION_MANAGER (manager)); error = NULL; if (!panel_dbus_service_ensure_connection (PANEL_DBUS_SERVICE (manager), &error)) { g_warning ("Could not connect to session manager: %s", error->message); g_error_free (error); return; } proxy = panel_dbus_service_get_proxy (PANEL_DBUS_SERVICE (manager)); if (!dbus_g_proxy_call (proxy, "Logout", &error, G_TYPE_UINT, mode, G_TYPE_INVALID, G_TYPE_INVALID) && error != NULL) { g_warning ("Could not ask session manager to log out: %s", error->message); g_error_free (error); } }
gboolean panel_session_manager_is_shutdown_available (PanelSessionManager *manager) { GError *error; DBusGProxy *proxy; gboolean is_shutdown_available; g_return_val_if_fail (PANEL_IS_SESSION_MANAGER (manager), FALSE); error = NULL; if (!panel_dbus_service_ensure_connection (PANEL_DBUS_SERVICE (manager), &error)) { g_warning ("Could not connect to session manager: %s", error->message); g_error_free (error); return FALSE; } proxy = panel_dbus_service_get_proxy (PANEL_DBUS_SERVICE (manager)); if (!dbus_g_proxy_call (proxy, "CanShutdown", &error, G_TYPE_INVALID, G_TYPE_BOOLEAN, &is_shutdown_available, G_TYPE_INVALID) && error != NULL) { g_warning ("Could not ask session manager if shut down is available: %s", error->message); g_error_free (error); return FALSE; } return is_shutdown_available; }
gboolean panel_session_manager_is_shutdown_available (PanelSessionManager *manager) { GVariant *ret; GError *error; gboolean is_shutdown_available = FALSE; g_return_val_if_fail (PANEL_IS_SESSION_MANAGER (manager), FALSE); if (!manager->priv->session_proxy) { g_warning ("Session manager service not available."); return FALSE; } error = NULL; ret = g_dbus_proxy_call_sync (manager->priv->session_proxy, "CanShutdown", NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); if (error) { g_warning ("Could not ask session manager if shut down is available: %s", error->message); g_error_free (error); return FALSE; } else { g_variant_get (ret, "(b)", &is_shutdown_available); g_variant_unref (ret); } return is_shutdown_available; }