r1705 - in trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu: . src

mickey at sita.openmoko.org mickey at sita.openmoko.org
Sun Apr 8 01:14:24 CEST 2007


Author: mickey
Date: 2007-04-08 01:14:23 +0200 (Sun, 08 Apr 2007)
New Revision: 1705

Added:
   trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/buttonactions.c
   trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/buttonactions.h
Modified:
   trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/openmoko-panel-mainmenu.pro
   trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/Makefile.am
   trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/openmoko-panel-mainmenu.c
Log:
openmoko-panel-mainmenu: add enabling code for action button events


Modified: trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/openmoko-panel-mainmenu.pro
===================================================================
--- trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/openmoko-panel-mainmenu.pro	2007-04-07 22:06:25 UTC (rev 1704)
+++ trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/openmoko-panel-mainmenu.pro	2007-04-07 23:14:23 UTC (rev 1705)
@@ -1,8 +1,18 @@
 MOKOCONFIG = mokoui
 MOKOTYPE = panel-plugin
 
+HEADERS = \
+  src/buttonactions.h \
+  src/mokodesktop.h \
+  src/mokodesktop_item.h \
+  src/stylusmenu.h
+
 SOURCES = \
-  src/openmoko-panel-mainmenu.c
+  src/openmoko-panel-mainmenu.c \
+  src/buttonactions.c \
+  src/mokodesktop.c \
+  src/mokodesktop_item.c \
+  src/stylusmenu.c
 
 include ( $(OPENMOKODIR)/devel/qmake/openmoko-include.pro )
 

Modified: trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/Makefile.am
===================================================================
--- trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/Makefile.am	2007-04-07 22:06:25 UTC (rev 1704)
+++ trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/Makefile.am	2007-04-07 23:14:23 UTC (rev 1705)
@@ -4,7 +4,12 @@
 appletdir = $(libdir)/matchbox-panel/
 applet_LTLIBRARIES = libopenmoko-panel-mainmenu.la
 
-libopenmoko_panel_mainmenu_la_SOURCES = openmoko-panel-mainmenu.c stylusmenu.c mokodesktop.c mokodesktop_item.c
+libopenmoko_panel_mainmenu_la_SOURCES = \
+  openmoko-panel-mainmenu.c \
+  buttonactions.c \
+  stylusmenu.c \
+  mokodesktop.c \
+  mokodesktop_item.c
 libopenmoko_panel_mainmenu_la_LIBADD = @OPENMOKO_LIBS@ @LIBMB_LIBS@
 
 MAINTAINERCLEANFILES = Makefile.in

Added: trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/buttonactions.c
===================================================================
--- trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/buttonactions.c	2007-04-07 22:06:25 UTC (rev 1704)
+++ trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/buttonactions.c	2007-04-07 23:14:23 UTC (rev 1705)
@@ -0,0 +1,158 @@
+/*
+ *  openmoko-panel-mainmenu: handle action buttons
+ *
+ *  Authored by Michael 'Mickey' Lauer <mlauer at vanille-media.de>
+ *
+ *  Copyright (C) 2007 OpenMoko, Inc.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Public License as published by
+ *  the Free Software Foundation; version 2.1 of the license.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Public License for more details.
+ *
+ *  Current Version: $Rev$ ($Date$) [$Author$]
+ */
+#include "buttonactions.h"
+
+#include <fcntl.h>
+#include <string.h>
+#include <errno.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <linux/input.h>
+
+//FIXME find out through sysfs
+#if 0
+    #define AUX_BUTTON_EVENT_PATH "/dev/input/event0"
+    #define AUX_BUTTON_KEYCODE 169
+    #define POWER_BUTTON_EVENT_PATH "/dev/input/event2"
+    #define POWER_BUTTON_KEYCODE 116
+#else
+    #define AUX_BUTTON_EVENT_PATH "/dev/input/event0"
+    #define AUX_BUTTON_KEYCODE 0x25
+    #define POWER_BUTTON_EVENT_PATH "/dev/input/event2"
+    #define POWER_BUTTON_KEYCODE 0x25
+#endif
+
+GPollFD aux_fd;
+GPollFD power_fd;
+
+GTimer* aux_timer;
+GTimer* power_timer;
+
+gboolean panel_mainmenu_install_watcher()
+{
+    int auxfd = open( AUX_BUTTON_EVENT_PATH, O_RDONLY );
+    if ( auxfd < 0 )
+    {
+        g_debug( "can't open " AUX_BUTTON_EVENT_PATH " (%s)", strerror( errno ) );
+        return FALSE;
+    }
+    int powerfd = open( POWER_BUTTON_EVENT_PATH, O_RDONLY );
+    if ( powerfd < 0 )
+    {
+        g_debug( "can't open " POWER_BUTTON_EVENT_PATH " (%s)", strerror( errno ) );
+        return FALSE;
+    }
+    static GSourceFuncs funcs = {
+        panel_mainmenu_input_prepare,
+        panel_mainmenu_input_check,
+        panel_mainmenu_input_dispatch,
+    NULL,
+    };
+    GSource* button_watcher = g_source_new( &funcs, sizeof (GSource) );
+    aux_fd.fd = auxfd;
+    aux_fd.events = G_IO_IN | G_IO_HUP | G_IO_ERR;
+    aux_fd.revents = 0;
+    g_source_add_poll( button_watcher, &aux_fd );
+    aux_timer = g_timer_new();
+    power_fd.fd = powerfd;
+    power_fd.events = G_IO_IN | G_IO_HUP | G_IO_ERR;
+    power_fd.revents = 0;
+    g_source_add_poll( button_watcher, &power_fd );
+    power_timer = g_timer_new();
+    g_source_attach( button_watcher, NULL );
+    return TRUE;
+}
+
+
+gboolean panel_mainmenu_input_prepare( GSource* source, gint* timeout )
+{
+    g_debug( "prepare" );
+    return FALSE;
+}
+
+
+gboolean panel_mainmenu_input_check( GSource* source )
+{
+    g_debug( "check" );
+    return ( ( aux_fd.revents & G_IO_IN ) || ( power_fd.revents & G_IO_IN ) );
+}
+
+
+gboolean panel_mainmenu_input_dispatch( GSource* source, GSourceFunc callback, gpointer data )
+{
+    g_debug( "dispatch" );
+    if ( aux_fd.revents & G_IO_IN )
+    {
+        struct input_event event;
+        int size = read( aux_fd.fd, &event, sizeof( struct input_event ) );
+        g_debug( "read %d bytes from aux_fd %d", size, aux_fd.fd );
+        g_debug( "input event = ( %0x, %0x, %0x )", event.type, event.code, event.value );
+        //g_timeout_add( 1 * 1000, (GSourceFunc) panel_mainmenu_input_timeout, NULL);
+        if ( event.type == 1 && event.code == AUX_BUTTON_KEYCODE )
+        {
+            if ( event.value == 1 ) /* pressed */
+            {
+                g_debug( "resetting aux timer" );
+                g_timer_reset( aux_timer );
+            }
+            else if ( event.value == 0 ) /* released */
+            {
+                g_debug( "triggering aux function" );
+                panel_mainmenu_aux_timeout( g_timer_elapsed( aux_timer, NULL ) );
+            }
+        }
+    }
+    if ( power_fd.revents & G_IO_IN )
+    {
+        struct input_event event;
+        int size = read( power_fd.fd, &event, sizeof( struct input_event ) );
+        g_debug( "read %d bytes from power_fd %d", size, power_fd.fd );
+        g_debug( "input event = ( %0x, %0x, %0x )", event.type, event.code, event.value );
+        //g_timeout_add( 1 * 1000, (GSourceFunc) panel_mainmenu_power_timeout, NULL);
+        if ( event.type == 1 && event.code == POWER_BUTTON_KEYCODE )
+        {
+            if ( event.value == 1 ) /* pressed */
+            {
+                g_debug( "resetting power timer" );
+                g_timer_reset( power_timer );
+            }
+            else if ( event.value == 0 ) /* released */
+            {
+                g_debug( "triggering power function" );
+                panel_mainmenu_power_timeout( g_timer_elapsed( power_timer, NULL ) );
+            }
+        }
+    }
+    return TRUE;
+}
+
+gboolean panel_mainmenu_aux_timeout( guint timeout )
+{
+    g_debug( "aux pressed for %d", timeout );
+    return FALSE;
+}
+
+
+gboolean panel_mainmenu_power_timeout( guint timeout )
+{
+    g_debug( "power pressed for %d", timeout );
+    return FALSE;
+}
+


Property changes on: trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/buttonactions.c
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/buttonactions.h
===================================================================
--- trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/buttonactions.h	2007-04-07 22:06:25 UTC (rev 1704)
+++ trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/buttonactions.h	2007-04-07 23:14:23 UTC (rev 1705)
@@ -0,0 +1,13 @@
+#ifndef BUTTONACTIONS_H
+#define BUTTONACTIONS_H
+
+#include <glib.h>
+
+gboolean panel_mainmenu_input_prepare( GSource* source, gint* timeout );
+gboolean panel_mainmenu_input_check( GSource* source );
+gboolean panel_mainmenu_input_dispatch( GSource* source, GSourceFunc callback, gpointer data );
+
+gboolean panel_mainmenu_aux_timeout( guint timeout );
+gboolean panel_mainmenu_power_timeout( guint timeout );
+
+#endif


Property changes on: trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/buttonactions.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/openmoko-panel-mainmenu.c
===================================================================
--- trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/openmoko-panel-mainmenu.c	2007-04-07 22:06:25 UTC (rev 1704)
+++ trunk/src/target/OM-2007/panel-plugins/openmoko-panel-mainmenu/src/openmoko-panel-mainmenu.c	2007-04-07 23:14:23 UTC (rev 1705)
@@ -17,6 +17,11 @@
  *  Current Version: $Rev$ ($Date$) [$Author$]
  */
 
+#include "buttonactions.h"
+#include "stylusmenu.h"
+#include "mokodesktop.h"
+#include "mokodesktop_item.h"
+
 #include <libmokoui/moko-panel-applet.h>
 
 #include <gtk/gtk.h>
@@ -26,9 +31,6 @@
 #include <X11/Xatom.h>
 
 #include <unistd.h>
-#include "stylusmenu.h"
-#include "mokodesktop.h"
-#include "mokodesktop_item.h"
 
 static GtkWidget *sm = NULL;
 
@@ -80,17 +82,10 @@
     sm = gtk_menu_new ();
     gtk_widget_show (sm);
 
-    MokoDesktopItem *top_item = NULL;
-    int ret;
-
-    top_item = mokodesktop_item_new_with_params ("Home", 
-						       NULL,
-						       NULL,
-						       ITEM_TYPE_ROOT );
-
-    ret = mokodesktop_init(top_item, ITEM_TYPE_CNT);
-
+    MokoDesktopItem *top_item = mokodesktop_item_new_with_params ("Home", NULL, NULL, ITEM_TYPE_ROOT );
+    int ret = mokodesktop_init(top_item, ITEM_TYPE_CNT);
     moko_stylus_menu_build(GTK_MENU(sm), top_item);
+    panel_mainmenu_install_watcher();
 
     return GTK_WIDGET(applet);
 }





More information about the commitlog mailing list