gdm r5802 - in trunk: . gui/simple-greeter



Author: mccann
Date: Tue Feb 19 18:17:49 2008
New Revision: 5802
URL: http://svn.gnome.org/viewvc/gdm?rev=5802&view=rev

Log:
2008-02-19  William Jon McCann  <jmccann redhat com>

	* gui/simple-greeter/gdm-greeter-login-window.c:
	(get_show_restart_buttons), (do_suspend), (suspend_button_clicked),
	(get_action_from_error), (load_theme):
	Hook up Suspend button.  Probably won't work due to dbus
	security policy... need to fix that.



Modified:
   trunk/ChangeLog
   trunk/gui/simple-greeter/gdm-greeter-login-window.c

Modified: trunk/gui/simple-greeter/gdm-greeter-login-window.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-greeter-login-window.c	(original)
+++ trunk/gui/simple-greeter/gdm-greeter-login-window.c	Tue Feb 19 18:17:49 2008
@@ -1,6 +1,7 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
  *
  * Copyright (C) 2007 William Jon McCann <mccann jhu edu>
+ * Copyright (C) 2008 Red Hat, Inc.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -78,6 +79,10 @@
 #define CK_SEAT_INTERFACE    "org.freedesktop.ConsoleKit.Seat"
 #define CK_SESSION_INTERFACE "org.freedesktop.ConsoleKit.Session"
 
+#define GPM_DBUS_NAME      "org.freedesktop.PowerManagement"
+#define GPM_DBUS_PATH      "/org/freedesktop/PowerManagement"
+#define GPM_DBUS_INTERFACE "org.freedesktop.PowerManagement"
+
 #define GLADE_XML_FILE       "gdm-greeter-login-window.glade"
 
 #define LOGO_KEY             "/apps/gdm/simple-greeter/logo-icon-name"
@@ -211,10 +216,10 @@
                 username = g_get_user_name ();
                 if (username == NULL || !chkauthattr (RBAC_SHUTDOWN_KEY, username)) {
                         show = FALSE;
-                        g_debug ("Not showing stop/restart buttons for user %s due to RBAC key %s",
+                        g_debug ("GdmGreeterLoginWindow: Not showing stop/restart buttons for user %s due to RBAC key %s",
                                  username, RBAC_SHUTDOWN_KEY);
                 } else {
-                        g_debug ("Showing stop/restart buttons for user %s due to RBAC key %s",
+                        g_debug ("GdmGreeterLoginWindow: Showing stop/restart buttons for user %s due to RBAC key %s",
                                  username, RBAC_SHUTDOWN_KEY);
                 }
         }
@@ -301,6 +306,41 @@
 }
 
 static void
+do_suspend (GdmGreeterLoginWindow *login_window)
+{
+        GError          *error;
+        DBusGConnection *connection;
+        DBusGProxy      *proxy;
+
+        g_debug ("GdmGreeterLoginWindow: Suspend button clicked");
+
+        error = NULL;
+        connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
+        if (error != NULL) {
+                g_warning ("Couldn't suspend: %s", error->message);
+                g_error_free (error);
+                return;
+        }
+        proxy = dbus_g_proxy_new_for_name (connection,
+                                           GPM_DBUS_NAME,
+                                           GPM_DBUS_PATH,
+                                           GPM_DBUS_INTERFACE);
+        error = NULL;
+        dbus_g_proxy_call (proxy,
+                           "Suspend",
+                           &error,
+                           G_TYPE_INVALID,
+                           G_TYPE_INVALID);
+        if (error != NULL) {
+                g_warning ("Couldn't suspend: %s", error->message);
+                g_error_free (error);
+                return;
+        }
+
+        g_object_unref (proxy);
+}
+
+static void
 do_cancel (GdmGreeterLoginWindow *login_window)
 {
 
@@ -503,6 +543,14 @@
 }
 
 static void
+suspend_button_clicked (GtkButton             *button,
+                        GdmGreeterLoginWindow *login_window)
+{
+        do_suspend (login_window);
+}
+
+
+static void
 cancel_button_clicked (GtkButton             *button,
                        GdmGreeterLoginWindow *login_window)
 {
@@ -647,7 +695,7 @@
         if (g_str_has_prefix (error->message, "Not privileged for action: ")) {
                 paction = error->message + strlen ("Not privileged for action: ");
         }
-        g_debug ("Requesting priv for '%s'", paction);
+        g_debug ("GdmGreeterLoginWindow: Requesting priv for '%s'", paction);
 
         polkit_action_set_action_id (action, paction);
 
@@ -1025,6 +1073,9 @@
 
         gtk_widget_show (login_window->priv->user_chooser);
 
+        button = glade_xml_get_widget (login_window->priv->xml, "suspend-button");
+        g_signal_connect (button, "clicked", G_CALLBACK (suspend_button_clicked), login_window);
+
         button = glade_xml_get_widget (login_window->priv->xml, "log-in-button");
         gtk_widget_grab_default (button);
         g_signal_connect (button, "clicked", G_CALLBACK (log_in_button_clicked), login_window);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]