Updating branch refs/heads/master
         to 23116a1fca688d481ed8f7d3448b829d0f54eb32 (commit)
       from cdc132a83cd7785319170eef508338bedf52fc21 (commit)

commit 23116a1fca688d481ed8f7d3448b829d0f54eb32
Author: Ali Abdallah <[email protected]>
Date:   Fri Nov 6 13:05:34 2009 +0100

    Support for shutdown via the session manager.

 Makefile.am                                  |    2 +-
 TODO                                         |    1 -
 configure.ac.in                              |    2 +-
 panel-plugins/brightness/brightness-button.c |    2 +-
 src/xfpm-dkp.c                               |   46 +++++++++++++++++++++++---
 src/xfpm-dkp.h                               |    2 +
 src/xfpm-manager.c                           |   15 ++++++++-
 7 files changed, 60 insertions(+), 10 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index dc3cd5c..7827b2d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -10,8 +10,8 @@ endif
 
 SUBDIRS =              \
        data            \
-       $(libhal_dir)   \
        libdbus         \
+       $(libhal_dir)   \
        common          \
        src             \
        settings        \
diff --git a/TODO b/TODO
index 23a6f0a..c1a5c9e 100644
--- a/TODO
+++ b/TODO
@@ -1,4 +1,3 @@
-* Make xrandr brightness control working.
 * Reimplement the org.freedesktop.PowerManagement interface.
 * Hard drive spinning.
 * Survive D-Bus restarts.
diff --git a/configure.ac.in b/configure.ac.in
index 3e0c3ca..2d80340 100644
--- a/configure.ac.in
+++ b/configure.ac.in
@@ -190,8 +190,8 @@ XDT_FEATURE_DEBUG
 
 AC_OUTPUT([
 Makefile
-libhal/Makefile
 libdbus/Makefile
+libhal/Makefile
 common/Makefile
 src/Makefile
 settings/Makefile
diff --git a/panel-plugins/brightness/brightness-button.c 
b/panel-plugins/brightness/brightness-button.c
index 0318c95..8574ec9 100644
--- a/panel-plugins/brightness/brightness-button.c
+++ b/panel-plugins/brightness/brightness-button.c
@@ -445,7 +445,7 @@ brightness_button_up (BrightnessButton *button)
 static void
 brightness_button_down (BrightnessButton *button)
 {
-    guint level;
+    gint level;
     xfpm_brightness_get_level (button->priv->brightness, &level);
     
     if ( level != 0 )
diff --git a/src/xfpm-dkp.c b/src/xfpm-dkp.c
index 13b83ba..e2ad3e2 100644
--- a/src/xfpm-dkp.c
+++ b/src/xfpm-dkp.c
@@ -110,6 +110,7 @@ enum
     WAKING_UP,
     SLEEPING,
     ASK_SHUTDOWN,
+    SHUTDOWN,
     LAST_SIGNAL
 };
 
@@ -396,6 +397,14 @@ xfpm_dkp_suspend_clicked (XfpmDkp *dkp)
 }
 
 static void
+xfpm_dkp_shutdown_clicked (XfpmDkp *dkp)
+{
+    gtk_widget_destroy (dkp->priv->dialog );
+    dkp->priv->dialog = NULL;
+    g_signal_emit (G_OBJECT (dkp), signals [SHUTDOWN], 0);
+}
+
+static void
 xfpm_dkp_battery_info_cb (GtkStatusIcon *icon)
 {
     xfpm_battery_show_info (XFPM_BATTERY (icon));
@@ -570,12 +579,11 @@ static void
 xfpm_dkp_notify_action_callback (NotifyNotification *n, gchar *action, XfpmDkp 
*dkp)
 {
     if ( !g_strcmp0 (action, "Shutdown") )
-       ;
+       g_signal_emit (G_OBJECT (dkp), signals [SHUTDOWN], 0);
     else
        xfpm_dkp_sleep (dkp, action, TRUE);
 }
 
-
 static void
 xfpm_dkp_add_actions_to_notification (XfpmDkp *dkp, NotifyNotification *n)
 {
@@ -600,7 +608,14 @@ xfpm_dkp_add_actions_to_notification (XfpmDkp *dkp, 
NotifyNotification *n)
                                
(NotifyActionCallback)xfpm_dkp_notify_action_callback,
                                dkp);      
     }
-    //FIXME, Shutdown
+    
+    xfpm_notify_add_action_to_notification(
+                              dkp->priv->notify,
+                              n,
+                               "Shutdown",
+                               _("Shutdown the system"),
+                               
(NotifyActionCallback)xfpm_dkp_notify_action_callback,
+                               dkp);    
 }
 
 static void
@@ -680,6 +695,18 @@ xfpm_dkp_show_critical_action_gtk (XfpmDkp *dkp)
                                  G_CALLBACK (xfpm_dkp_suspend_clicked), dkp);
     }
     
+    {
+       GtkWidget *shutdown;
+       
+       shutdown = gtk_button_new_with_label (_("Shutdown"));
+       img = gtk_image_new_from_icon_name (XFPM_SUSPEND_ICON, 
GTK_ICON_SIZE_BUTTON);
+       gtk_button_set_image (GTK_BUTTON (shutdown), img);
+       gtk_dialog_add_action_widget (GTK_DIALOG (dialog), shutdown, 
GTK_RESPONSE_NONE);
+       
+       g_signal_connect_swapped (shutdown, "clicked",
+                                 G_CALLBACK (xfpm_dkp_shutdown_clicked), dkp);
+    }
+    
     cancel = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
     gtk_dialog_add_action_widget (GTK_DIALOG (dialog), cancel, 
GTK_RESPONSE_NONE);
     
@@ -722,8 +749,8 @@ xfpm_dkp_process_critical_action (XfpmDkp *dkp, 
XfpmShutdownRequest req)
        xfpm_dkp_sleep (dkp, "Suspend", TRUE);
     else if ( req == XFPM_DO_HIBERNATE )
        xfpm_dkp_sleep (dkp, "Hibernate", TRUE);
-    //FIXME, Shutdown also.
-    
+    else if ( req == XFPM_DO_SHUTDOWN )
+       g_signal_emit (G_OBJECT (dkp), signals [SHUTDOWN], 0);
 }
 
 static void
@@ -1019,6 +1046,15 @@ xfpm_dkp_class_init (XfpmDkpClass *klass)
                       g_cclosure_marshal_VOID__VOID,
                       G_TYPE_NONE, 0, G_TYPE_NONE);
 
+    signals [SHUTDOWN] = 
+        g_signal_new ("shutdown",
+                      XFPM_TYPE_DKP,
+                      G_SIGNAL_RUN_LAST,
+                      G_STRUCT_OFFSET(XfpmDkpClass, shutdown),
+                      NULL, NULL,
+                      g_cclosure_marshal_VOID__VOID,
+                      G_TYPE_NONE, 0, G_TYPE_NONE);
+
     g_object_class_install_property (object_class,
                                      PROP_ON_BATTERY,
                                      g_param_spec_boolean ("on-battery",
diff --git a/src/xfpm-dkp.h b/src/xfpm-dkp.h
index e928831..8c5714b 100644
--- a/src/xfpm-dkp.h
+++ b/src/xfpm-dkp.h
@@ -89,6 +89,8 @@ typedef struct
     
     void               (*ask_shutdown)                 (XfpmDkp *dkp);
     
+    void               (*shutdown)                     (XfpmDkp *dkp);
+    
 } XfpmDkpClass;
 
 GType                  xfpm_dkp_get_type               (void) G_GNUC_CONST;
diff --git a/src/xfpm-manager.c b/src/xfpm-manager.c
index 5366637..38b41da 100644
--- a/src/xfpm-manager.c
+++ b/src/xfpm-manager.c
@@ -169,6 +169,14 @@ xfpm_manager_reserve_names (XfpmManager *manager)
 }
 
 static void
+xfpm_manager_shutdown (XfpmManager *manager)
+{
+    //FIXME, try other solutions.
+    if ( manager->priv->session_managed )
+       xfce_sm_client_request_shutdown (manager->priv->client, 
XFCE_SM_CLIENT_SHUTDOWN_HINT_HALT);
+}
+
+static void
 xfpm_manager_ask_shutdown (XfpmManager *manager)
 {
     if ( manager->priv->session_managed )
@@ -189,7 +197,7 @@ xfpm_manager_sleep_request (XfpmManager *manager, 
XfpmShutdownRequest req, gbool
            xfpm_dkp_hibernate (manager->priv->dkp, force);
            break;
        case XFPM_DO_SHUTDOWN:
-           /*FIXME ConsoleKit*/
+           xfpm_manager_shutdown (manager);
            break;
        case XFPM_ASK:
            xfpm_manager_ask_shutdown (manager);
@@ -342,6 +350,7 @@ xfpm_manager_new (DBusGConnection *bus, const gchar 
*client_id)
     
     xfpm_manager_dbus_class_init (XFPM_MANAGER_GET_CLASS (manager));
     xfpm_manager_dbus_init (manager);
+    
     return manager;
 }
 
@@ -378,6 +387,10 @@ void xfpm_manager_start (XfpmManager *manager)
                              
     g_signal_connect_swapped (manager->priv->dkp, "ask-shutdown",
                              G_CALLBACK (xfpm_manager_ask_shutdown), manager);
+    
+    g_signal_connect_swapped (manager->priv->dkp, "shutdown",
+                             G_CALLBACK (xfpm_manager_shutdown), manager);
+                             
 out:
        ;
 }
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to