r2663 - in trunk/src/target/OM-2007.2/applications/openmoko-dialer2: . src

njp at sita.openmoko.org njp at sita.openmoko.org
Wed Aug 8 13:49:29 CEST 2007


Author: njp
Date: 2007-08-08 13:49:27 +0200 (Wed, 08 Aug 2007)
New Revision: 2663

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/moko-dialer-panel.c
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/moko-keypad.c
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/moko-notify.c
Log:
2007-08-08  Neil J. Patel  <njp at o-hand.com>

	* src/moko-dialer-panel.c: (moko_dialer_panel_init),
	(moko_dialer_panel_pressed):
	Implement tap-and-hold events for the keys, so you can enter w, + and p.

	* src/moko-keypad.c: (on_delete_event), (moko_keypad_init):
	Implement tap-and-hold for the delete button, so the holf event will cause
	the texview to 'empty'.

	* src/moko-notify.c:
	Some spacing fixes.

Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog	2007-08-07 20:14:48 UTC (rev 2662)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog	2007-08-08 11:49:27 UTC (rev 2663)
@@ -1,3 +1,16 @@
+2007-08-08  Neil J. Patel  <njp at o-hand.com>
+
+	* src/moko-dialer-panel.c: (moko_dialer_panel_init),
+	(moko_dialer_panel_pressed):
+	Implement tap-and-hold events for the keys, so you can enter w, + and p.
+
+	* src/moko-keypad.c: (on_delete_event), (moko_keypad_init):
+	Implement tap-and-hold for the delete button, so the holf event will cause
+	the texview to 'empty'.
+
+	* src/moko-notify.c:
+	Some spacing fixes.
+
 2007-08-07  Neil J. Patel  <njp at o-hand.com>
 
 	* src/moko-dialer.c: (on_keypad_dial_clicked):

Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/moko-dialer-panel.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/moko-dialer-panel.c	2007-08-07 20:14:48 UTC (rev 2662)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/moko-dialer-panel.c	2007-08-08 11:49:27 UTC (rev 2663)
@@ -30,7 +30,7 @@
 //forward definition
      static gboolean moko_dialer_panel_pressed (MokoDigitButton * button,
                                                 GdkEventButton * event,
-                                                gpointer data);
+                                                MokoDialerPanel *panel);
 
      static gint moko_dialer_panel_signals[LAST_SIGNAL] = { 0 };
 
@@ -134,6 +134,10 @@
                                  i, i + 1);
 
       g_signal_connect ((gpointer) moko_dialer_panel->buttons[i][j],
+                        "button_press_event", 
+                        G_CALLBACK (moko_dialer_panel_pressed),
+                        moko_dialer_panel);
+      g_signal_connect ((gpointer) moko_dialer_panel->buttons[i][j],
                         "button_release_event",
                         G_CALLBACK (moko_dialer_panel_pressed),
                         moko_dialer_panel);
@@ -143,8 +147,49 @@
 
 }
 
+static gboolean
+moko_dialer_panel_pressed (MokoDigitButton *button, 
+                           GdkEventButton *event,
+                           MokoDialerPanel *panel)
+{
+#define TAP_HOLD_TIME 800
+  static guint32 last_event = 0;
+  gchar value = -1;
 
+  if (event->type == GDK_BUTTON_PRESS)
+  {
+    last_event = event->time;
+  }
+  else if (event->type == GDK_BUTTON_RELEASE)
+  {
+    guint32 diff = event->time - last_event;
 
+    if (diff < TAP_HOLD_TIME)
+    {
+      /* Normal 'clicked' event */
+      value = moko_digit_button_get_left (button);
+      g_signal_emit (panel,
+                     moko_dialer_panel_signals[CLICKED_SIGNAL], 0, value);
+    }
+    else
+    {
+      /* Tap-and-hold event */
+      value = moko_digit_button_get_right (button);
+      
+      if (value == -1)
+        value = moko_digit_button_get_left (button);
+      
+      g_signal_emit (panel,
+                     moko_dialer_panel_signals[CLICKED_SIGNAL], 0, value);
+    }
+  }
+  return FALSE;
+}
+
+/* 
+ * Leave this for when tap-and-hold is implemented at the Gtk-level 
+ */
+#if 0
 static gboolean
 moko_dialer_panel_pressed (MokoDigitButton * button, GdkEventButton * event,
                            gpointer data)
@@ -190,10 +235,10 @@
   /* allow the signal to propagate the event further */
   return FALSE;
 }
+#endif
 
 
 
-
 GtkWidget *
 moko_dialer_panel_new ()
 {

Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/moko-keypad.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/moko-keypad.c	2007-08-07 20:14:48 UTC (rev 2662)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/moko-keypad.c	2007-08-08 11:49:27 UTC (rev 2663)
@@ -83,17 +83,38 @@
 }
 
 static void
-on_delete_clicked (GtkWidget *button, MokoKeypad *keypad)
+on_delete_event (GtkWidget *button, GdkEventButton *event, MokoKeypad *keypad)
 {
+#define TAP_HOLD_TIME 800
   MokoKeypadPrivate *priv;
   MokoDialerTextview *textview;
-
+  static guint32 last_event = 0;
+  
   g_return_if_fail (MOKO_IS_KEYPAD (keypad));
   priv = keypad->priv;
   
   textview = MOKO_DIALER_TEXTVIEW (priv->textview);
 
-  moko_dialer_textview_delete (textview);
+  if (event->type == GDK_BUTTON_PRESS)
+  {
+    last_event = event->time;
+  }
+  else if (event->type == GDK_BUTTON_RELEASE)
+  {
+    guint32 diff = event->time - last_event;
+
+    if (diff < TAP_HOLD_TIME)
+    {
+      /* Normal 'clicked' event */
+      moko_dialer_textview_delete (textview);
+    }
+    else
+    {
+      /* Tap-and-hold event */
+      moko_dialer_textview_empty (textview);
+   }
+  }
+  return FALSE;
 }
 
 static void
@@ -198,8 +219,11 @@
   
   /* Delete button */
   priv->delete = gtk_button_new ();
-  g_signal_connect (G_OBJECT (priv->delete), "clicked",
-                    G_CALLBACK (on_delete_clicked), (gpointer)keypad); 
+  g_signal_connect (priv->delete, "button-press-event",
+                    G_CALLBACK (on_delete_event), (gpointer)keypad);
+  g_signal_connect (priv->delete, "button-release-event",
+                    G_CALLBACK (on_delete_event), (gpointer)keypad);  
+  
   bvbox = gtk_vbox_new (FALSE, 0);
   
   icon = gtk_image_new_from_stock (GTK_STOCK_GO_BACK, GTK_ICON_SIZE_BUTTON);

Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/moko-notify.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/moko-notify.c	2007-08-07 20:14:48 UTC (rev 2662)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/moko-notify.c	2007-08-08 11:49:27 UTC (rev 2663)
@@ -57,6 +57,10 @@
 static guint notify_signals[LAST_SIGNAL] = {0, };
 */
 
+
+/*
+ * Check the current screen brightness, raise it if necessary 
+ */
 static void
 moko_notify_check_brightness (void)
 {





More information about the commitlog mailing list