r2670 - in trunk/src/target/OM-2007.2/daemons/neod: . src
mickey at sita.openmoko.org
mickey at sita.openmoko.org
Thu Aug 9 15:03:29 CEST 2007
Author: mickey
Date: 2007-08-09 15:03:28 +0200 (Thu, 09 Aug 2007)
New Revision: 2670
Modified:
trunk/src/target/OM-2007.2/daemons/neod/configure.ac
trunk/src/target/OM-2007.2/daemons/neod/src/Makefile.am
trunk/src/target/OM-2007.2/daemons/neod/src/buttonactions.c
trunk/src/target/OM-2007.2/daemons/neod/src/buttonactions.h
Log:
neod: save/load power management values via gconf, enable changing PM profile via power-button-hold menu
Modified: trunk/src/target/OM-2007.2/daemons/neod/configure.ac
===================================================================
--- trunk/src/target/OM-2007.2/daemons/neod/configure.ac 2007-08-09 12:44:25 UTC (rev 2669)
+++ trunk/src/target/OM-2007.2/daemons/neod/configure.ac 2007-08-09 13:03:28 UTC (rev 2670)
@@ -5,8 +5,6 @@
AM_CONFIG_HEADER(config.h)
AM_MAINTAINER_MODE
-LIBGTK_VERSION=2.6.0
-
AC_ISC_POSIX
AC_PROG_CC
AC_PROG_CC_STDC
@@ -20,14 +18,9 @@
AC_SUBST(GETTEXT_PACKAGE)
AM_GLIB_GNU_GETTEXT
-PKG_CHECK_MODULES(GTK, gtk+-2.0 >= $LIBGTK_VERSION)
-PKG_CHECK_MODULES(PULSE, libpulse)
+PKG_CHECK_MODULES(NEOD, gtk+-2.0 gconf-2.0 libpulse)
-CFLAGS=$GTK_CFLAGS
-AC_CHECK_DECLS([g_date_set_time_t],
- [have_date=yes], [have_date=no], [#include <glib.h>])
-AM_CONDITIONAL(HAVE_GDATE_TIME_T, test "x$have_date" = "xyes")
-CFLAGS=$old_cflags
+CFLAGS=$NEOD_CFLAGS
AC_OUTPUT([
Makefile
Modified: trunk/src/target/OM-2007.2/daemons/neod/src/Makefile.am
===================================================================
--- trunk/src/target/OM-2007.2/daemons/neod/src/Makefile.am 2007-08-09 12:44:25 UTC (rev 2669)
+++ trunk/src/target/OM-2007.2/daemons/neod/src/Makefile.am 2007-08-09 13:03:28 UTC (rev 2670)
@@ -4,7 +4,7 @@
-DNEOD_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \
-DDATADIR=\""$(datadir)"\" -D_GNU_SOURCE
-AM_CFLAGS = -Wall -pedantic -std=c99 @GTK_CFLAGS@ @PULSE_CFLAGS@
+AM_CFLAGS = -Wall -pedantic -std=c99 @NEOD_CFLAGS@
bin_PROGRAMS = neod
@@ -12,7 +12,7 @@
buttonactions.c \
neod-main.c
-neod_LDADD = @GTK_LIBS@ @PULSE_LIBS@
+neod_LDADD = @NEOD_LIBS@
MAINTAINERCLEANFILES = config.h.in Makefile.in
Modified: trunk/src/target/OM-2007.2/daemons/neod/src/buttonactions.c
===================================================================
--- trunk/src/target/OM-2007.2/daemons/neod/src/buttonactions.c 2007-08-09 12:44:25 UTC (rev 2669)
+++ trunk/src/target/OM-2007.2/daemons/neod/src/buttonactions.c 2007-08-09 13:03:28 UTC (rev 2670)
@@ -14,9 +14,12 @@
*/
#include "buttonactions.h"
+#include <gconf/gconf-client.h>
+
#include <gtk/gtklabel.h>
#include <gtk/gtkmenu.h>
#include <gtk/gtkmenuitem.h>
+#include <gtk/gtkcheckmenuitem.h>
#include <gdk/gdkx.h>
@@ -66,6 +69,17 @@
GtkWidget* aux_menu = 0;
GtkWidget* power_menu = 0;
+GConfClient* gconfc = 0;
+
+enum PowerManagementMode
+{
+ FULL = 0,
+ DIM_ONLY = 1,
+ NONE = 2,
+};
+
+int pm_value = 0;
+
typedef enum _PowerState
{
NORMAL,
@@ -191,10 +205,25 @@
}
g_source_attach( button_watcher, NULL );
+ // get PM profile setting from gconf and listen for changes
+ gconfc = gconf_client_get_default();
+ if (!gconfc)
+ {
+ g_error( "can't get connection to gconfd" );
+ return FALSE;
+ }
+ GError* error = 0;
+ pm_value = gconf_client_get_int( gconfc, "/desktop/openmoko/neod/power_management", &error );
+ if ( error ) g_debug( "gconf error: %s", error->message );
+ gconf_client_add_dir( gconfc, "/desktop/openmoko/neod", GCONF_CLIENT_PRELOAD_NONE, &error );
+ if ( error ) g_debug( "gconf error: %s", error->message );
+ gconf_client_notify_add( gconfc, "/desktop/openmoko/neod/power_management", (GConfClientNotifyFunc) neod_buttonactions_gconf_cb, NULL, NULL, &error );
+ if ( error ) g_debug( "gconf error: %s", error->message );
+
+ neod_buttonactions_powersave_reset();
return TRUE;
}
-
gboolean neod_buttonactions_input_prepare( GSource* source, gint* timeout )
{
return FALSE;
@@ -348,17 +377,17 @@
void neod_buttonactions_popup_selected_fullPM( GtkMenuItem* menu, gpointer user_data )
{
- //FIXME set PM to full
+ gconf_client_set_int( gconfc, "/desktop/openmoko/neod/power_management", FULL, NULL );
}
void neod_buttonactions_popup_selected_dimOnly( GtkMenuItem* menu, gpointer user_data )
{
- //FIXME set PM to dim-only
+ gconf_client_set_int( gconfc, "/desktop/openmoko/neod/power_management", DIM_ONLY, NULL );
}
void neod_buttonactions_popup_selected_noPM( GtkMenuItem* menu, gpointer user_data )
{
- //FIXME set PM to none
+ gconf_client_set_int( gconfc, "/desktop/openmoko/neod/power_management", NONE, NULL );
}
void neod_buttonactions_popup_selected_lock( GtkMenuItem* menu, gpointer user_data )
@@ -390,6 +419,18 @@
system( "/sbin/poweroff");
}
+void neod_buttonactions_gconf_cb( GConfClient *client, guint cnxn_id, GConfEntry *entry, gpointer data )
+{
+ g_debug( "gconf callback" );
+ pm_value = gconf_client_get_int( client, "/desktop/openmoko/neod/power_management", NULL );
+ if ( pm_value < 0 || pm_value > 2 ) pm_value = 0;
+ neod_buttonactions_powersave_reset();
+ neod_buttonactions_set_display( 100 );
+ gtk_widget_destroy( power_menu );
+ //gtk_widget_unref( power_menu );
+ power_menu = 0;
+}
+
gboolean neod_buttonactions_power_timeout( guint timeout )
{
g_debug( "power pressed for %d", timeout );
@@ -444,12 +485,18 @@
// TODO build profile list dynamically from database
GtkWidget* profile = 0;
profile = gtk_check_menu_item_new_with_label( "Full PM" );
+ gtk_check_menu_item_set_draw_as_radio( GTK_CHECK_MENU_ITEM(profile), TRUE );
+ gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM(profile), pm_value == FULL );
g_signal_connect( G_OBJECT(profile), "activate", G_CALLBACK(neod_buttonactions_popup_selected_fullPM), NULL );
gtk_menu_shell_append( GTK_MENU_SHELL(power_menu), profile );
profile = gtk_check_menu_item_new_with_label( "Dim Only" );
+ gtk_check_menu_item_set_draw_as_radio( GTK_CHECK_MENU_ITEM(profile), TRUE );
+ gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM(profile), pm_value == DIM_ONLY );
g_signal_connect( G_OBJECT(profile), "activate", G_CALLBACK(neod_buttonactions_popup_selected_dimOnly), NULL );
gtk_menu_shell_append( GTK_MENU_SHELL(power_menu), profile );
profile = gtk_check_menu_item_new_with_label( "No PM" );
+ gtk_check_menu_item_set_draw_as_radio( GTK_CHECK_MENU_ITEM(profile), TRUE );
+ gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM(profile), pm_value == NONE );
g_signal_connect( G_OBJECT(profile), "activate", G_CALLBACK(neod_buttonactions_popup_selected_noPM), NULL );
gtk_menu_shell_append( GTK_MENU_SHELL(power_menu), profile );
@@ -480,6 +527,9 @@
void neod_buttonactions_powersave_reset()
{
+ if ( pm_value == NONE )
+ return;
+
g_debug( "mainmenu powersave reset" );
if ( powersave_timer1 != -1 )
g_source_remove( powersave_timer1 );
@@ -529,6 +579,8 @@
gboolean neod_buttonactions_powersave_timeout3( guint timeout )
{
+ if ( pm_value != FULL )
+ return;
g_debug( "mainmenu powersave timeout 3" );
//FIXME talk to neod
power_state = SUSPEND;
@@ -587,3 +639,4 @@
);
}
+
Modified: trunk/src/target/OM-2007.2/daemons/neod/src/buttonactions.h
===================================================================
--- trunk/src/target/OM-2007.2/daemons/neod/src/buttonactions.h 2007-08-09 12:44:25 UTC (rev 2669)
+++ trunk/src/target/OM-2007.2/daemons/neod/src/buttonactions.h 2007-08-09 13:03:28 UTC (rev 2670)
@@ -16,13 +16,14 @@
#define BUTTONACTIONS_H
#include <glib.h>
+#include <gconf/gconf-client.h>
#include <gdk/gdk.h>
gboolean neod_buttonactions_input_prepare( GSource* source, gint* timeout );
gboolean neod_buttonactions_input_check( GSource* source );
gboolean neod_buttonactions_input_dispatch( GSource* source, GSourceFunc callback, gpointer data );
-gboolean neod_buttonactions_touchscreen_cb( GIOChannel *source, GIOCondition condition, gpointer data );
+void neod_buttonactions_gconf_cb( GConfClient *client, guint cnxn_id, GConfEntry *entry, gpointer data );
gboolean neod_buttonactions_aux_timeout( guint timeout );
gboolean neod_buttonactions_power_timeout( guint timeout );
More information about the commitlog
mailing list