Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:hmacht:SLE_10
gnome-power-manager
gnome-power-manager-powersave-dbus.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File gnome-power-manager-powersave-dbus.patch of Package gnome-power-manager
diff -upr gnome-power-manager-2.14.0-orig/data/gpm-prefs.glade gnome-power-manager-2.14.0/data/gpm-prefs.glade --- gnome-power-manager-2.14.0-orig/data/gpm-prefs.glade 2006-03-13 18:19:58.000000000 +0100 +++ gnome-power-manager-2.14.0/data/gpm-prefs.glade 2006-04-03 15:04:22.000000000 +0200 @@ -19,6 +19,7 @@ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> <property name="focus_on_map">True</property> + <property name="urgency_hint">False</property> <child> <widget class="GtkVBox" id="vbox1"> @@ -1162,6 +1163,84 @@ <property name="fill">False</property> </packing> </child> + + <child> + <widget class="GtkButton" id="button_system_settings"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + + <child> + <widget class="GtkAlignment" id="alignment21"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> + + <child> + <widget class="GtkHBox" id="hbox1"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> + + <child> + <widget class="GtkImage" id="image1"> + <property name="visible">True</property> + <property name="stock">gtk-properties</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkLabel" id="label30"> + <property name="visible">True</property> + <property name="label" translatable="yes">System settings</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> </widget> </child> </widget> diff -upr gnome-power-manager-2.14.0-orig/src/gpm-main.c gnome-power-manager-2.14.0/src/gpm-main.c --- gnome-power-manager-2.14.0-orig/src/gpm-main.c 2006-03-02 00:28:24.000000000 +0100 +++ gnome-power-manager-2.14.0/src/gpm-main.c 2006-04-03 16:09:39.000000000 +0200 @@ -28,6 +28,7 @@ #include <string.h> #include <unistd.h> #include <popt.h> +#include <powersave_dbus.h> #include <glib.h> #include <glib/gi18n.h> @@ -44,6 +45,7 @@ #include "gpm-manager.h" #include "gpm-manager-glue.h" +#include "gpm-screensaver.h" static void gpm_exit (GpmManager *manager); @@ -137,6 +139,33 @@ gpm_critical_error (const char *content) gtk_main(); } +GpmManager *manager = NULL; + +static DBusHandlerResult +powersave_filter_function (DBusConnection *connection, DBusMessage *message, void *data) +{ + const gchar *signal; + gchar *value; + + if (dbus_message_get_type (message) != DBUS_MESSAGE_TYPE_SIGNAL) + return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; + + signal = dbus_message_get_member (message); + if (dbusGetMessageString(message, &value, 0) < 0) { + gpm_warning ("Warning: Received signal from powersave daemon with no arguments."); + return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; + } + + if (!strcmp (signal, "Notification")) { + gpm_manager_notify (manager, _("System power"), value); + } else if (!strcmp (signal, "Screenlock")) { + gpm_screensaver_lock (); + } else + return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; + + return DBUS_HANDLER_RESULT_HANDLED; +} + /** Main entry point * * @param argc Number of arguments given to program @@ -154,8 +183,8 @@ main (int argc, char *argv[]) DBusGConnection *session_connection; gboolean verbose = FALSE; gboolean no_daemon; - GpmManager *manager = NULL; GError *error = NULL; + dbus_int32_t powersave_error_code; struct poptOption options[] = { { "no-daemon", '\0', POPT_ARG_NONE, NULL, 0, @@ -248,6 +277,20 @@ main (int argc, char *argv[]) loop = g_main_loop_new (NULL, FALSE); + /* Tell powersave we take care of the following capabilities */ + if ((powersave_error_code = establishConnection (CAPABILITY_NOTIFICATIONS | CAPABILITY_SCREENLOCK | CAPABILITY_BRIGHTNESS, + dbus_g_connection_get_connection (system_connection))) == REPLY_SUCCESS) { + if (dbus_connection_add_filter (dbus_g_connection_get_connection (system_connection), + powersave_filter_function, NULL, NULL)) { + dbus_bus_add_match (dbus_g_connection_get_connection (system_connection), + "type='signal'," + "interface='com.novell.powersave.manager'," "path='/com/novell/powersave',", + NULL); + } else + gpm_warning ("Not enough memory to add filter to dbus connection."); + } else + gpm_warning ("Could not establish connection to powersave daemon: %s.", DBus_Error_Array[powersave_error_code]); + g_main_loop_run (loop); gpm_exit (manager); Only in gnome-power-manager-2.14.0/src: gpm-main.c~ diff -upr gnome-power-manager-2.14.0-orig/src/gpm-manager.c gnome-power-manager-2.14.0/src/gpm-manager.c --- gnome-power-manager-2.14.0-orig/src/gpm-manager.c 2006-03-13 20:00:04.000000000 +0100 +++ gnome-power-manager-2.14.0/src/gpm-manager.c 2006-04-03 15:04:22.000000000 +0200 @@ -39,6 +39,7 @@ #include <gconf/gconf-client.h> #include <libgnomeui/gnome-client.h> /* for gnome_client_request_save */ +#include <powersave_dbus.h> #include "gpm-common.h" #include "gpm-prefs.h" @@ -188,6 +189,12 @@ gpm_manager_is_policy_timout_valid (GpmM return TRUE; } +static gboolean +powersave_can_suspend (void) +{ + return (dbusSendSimpleMessage (REQUEST_MESSAGE, "AllowedSuspendToRam") == REPLY_SUCCESS); +} + gboolean gpm_manager_can_suspend (GpmManager *manager, gboolean *can, @@ -205,13 +212,19 @@ gpm_manager_can_suspend (GpmManager *man gconf_policy = gconf_client_get_bool (manager->priv->gconf_client, GPM_PREF_CAN_SUSPEND, NULL); - if ( gconf_policy && gpm_hal_can_suspend () ) { + if ( gconf_policy && gpm_hal_can_suspend () && powersave_can_suspend ()) { *can = TRUE; } return TRUE; } +static gboolean +powersave_can_hibernate (void) +{ + return (dbusSendSimpleMessage (REQUEST_MESSAGE, "AllowedSuspendToDisk") == REPLY_SUCCESS); +} + gboolean gpm_manager_can_hibernate (GpmManager *manager, gboolean *can, @@ -229,7 +242,7 @@ gpm_manager_can_hibernate (GpmManager *m gconf_policy = gconf_client_get_bool (manager->priv->gconf_client, GPM_PREF_CAN_HIBERNATE, NULL); - if ( gconf_policy && gpm_hal_can_hibernate () ) { + if ( gconf_policy && gpm_hal_can_hibernate () && powersave_can_hibernate ()) { *can = TRUE; } @@ -1967,3 +1980,15 @@ gpm_manager_new (void) return GPM_MANAGER (manager); } + +void +gpm_manager_notify (GpmManager *manager, const gchar *title, const gchar *message) +{ + g_return_if_fail (GPM_IS_MANAGER (manager)); + + gpm_tray_icon_notify (GPM_TRAY_ICON (manager->priv->tray_icon), + GPM_NOTIFY_TIMEOUT_LONG, + title, + NULL, + message); +} diff -upr gnome-power-manager-2.14.0-orig/src/gpm-manager.h gnome-power-manager-2.14.0/src/gpm-manager.h --- gnome-power-manager-2.14.0-orig/src/gpm-manager.h 2006-03-01 00:14:54.000000000 +0100 +++ gnome-power-manager-2.14.0/src/gpm-manager.h 2006-04-03 15:04:22.000000000 +0200 @@ -96,6 +96,8 @@ gboolean gpm_manager_hibernate_dbu gboolean gpm_manager_shutdown_dbus_method (GpmManager *manager, GError **error); +void gpm_manager_notify (GpmManager *manager, const gchar *title, const gchar *message); + G_END_DECLS #endif /* __GPM_MANAGER_H */ diff -upr gnome-power-manager-2.14.0-orig/src/gpm-prefs.c gnome-power-manager-2.14.0/src/gpm-prefs.c --- gnome-power-manager-2.14.0-orig/src/gpm-prefs.c 2006-03-13 20:10:01.000000000 +0100 +++ gnome-power-manager-2.14.0/src/gpm-prefs.c 2006-04-03 15:04:22.000000000 +0200 @@ -425,6 +425,28 @@ gpm_prefs_checkbox_lock_cb (GtkWidget * } static void +gpm_system_settings_cb (GtkButton *button, gpointer user_data) +{ + GError *error = NULL; + + if (!g_spawn_command_line_async ("gnomesu /sbin/yast2 power-management", &error)) { + GtkWidget *dialog; + + dialog = gtk_message_dialog_new_with_markup (NULL, + GTK_DIALOG_MODAL, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_CLOSE, + "<span size='larger'><b>%s</b></span>", + GPM_NAME); + gtk_message_dialog_format_secondary_markup (GTK_MESSAGE_DIALOG (dialog), error->message); + gtk_dialog_run (GTK_DIALOG (dialog)); + + gtk_widget_destroy (dialog); + g_error_free (error); + } +} + +static void gpm_prefs_setup_checkbox (GtkWidget *widget, char *gpm_pref_key) { @@ -731,6 +753,12 @@ gpm_prefs_create (void) widget = glade_xml_get_widget (glade_xml, "gpm_notebook"); gtk_notebook_remove_page (GTK_NOTEBOOK(widget), 1); } + + /* setup system settings button */ + widget = glade_xml_get_widget (glade_xml, "button_system_settings"); + g_signal_connect (G_OBJECT (widget), "clicked", + G_CALLBACK (gpm_system_settings_cb), NULL); + return main_window; } diff -upr gnome-power-manager-2.14.0-orig/src/Makefile.am gnome-power-manager-2.14.0/src/Makefile.am --- gnome-power-manager-2.14.0-orig/src/Makefile.am 2006-03-07 00:37:27.000000000 +0100 +++ gnome-power-manager-2.14.0/src/Makefile.am 2006-04-03 15:04:22.000000000 +0200 @@ -86,6 +86,7 @@ gnome_power_manager_SOURCES = \ $(NULL) gnome_power_manager_LDADD = \ + -lpowersave_dbus \ $(GLIB_LIBS) \ $(GNOME_LIBS) \ $(HAL_LIBS) \
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor