r3150 - in trunk/src/target/OM-2007.2/applications/openmoko-dialer2: . src
thomas at sita.openmoko.org
thomas at sita.openmoko.org
Fri Oct 12 13:12:58 CEST 2007
Author: thomas
Date: 2007-10-12 13:12:56 +0200 (Fri, 12 Oct 2007)
New Revision: 3150
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
Log:
* src/moko-dialer-panel.c: (moko_dialer_panel_init):
* src/moko-keypad.c: (on_panel_user_hold):
- Insert digits on "button down"
- Replace primary digit with secondary digit when tap-and-hold occurs
Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog 2007-10-12 09:37:38 UTC (rev 3149)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog 2007-10-12 11:12:56 UTC (rev 3150)
@@ -1,3 +1,12 @@
+2007-10-12 Thomas Wood <thomas at openedhand.com>
+
+ * src/moko-dialer-panel.c: (moko_dialer_panel_init):
+ * src/moko-keypad.c: (on_panel_user_hold):
+
+ - Insert digits on "button down"
+ - Replace primary digit with secondary digit when tap-and-hold occurs
+
+
2007-10-10 Thomas Wood <thomas at openedhand.com>
Based on patch by: Roman Moravcik <roman.moravcik at gmail.com>
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-10-12 09:37:38 UTC (rev 3149)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/moko-dialer-panel.c 2007-10-12 11:12:56 UTC (rev 3150)
@@ -34,6 +34,13 @@
static gint moko_dialer_panel_signals[LAST_SIGNAL] = { 0 };
+
+typedef struct
+{
+ gchar value;
+ MokoDialerPanel *panel;
+} HoldTimeoutData;
+
static void
moko_dialer_panel_class_init (MokoDialerPanelClass * class)
{
@@ -140,97 +147,53 @@
}
static gboolean
-moko_dialer_panel_pressed (MokoDigitButton *button,
- GdkEventButton *event,
- MokoDialerPanel *panel)
+moko_dialer_panel_hold_timeout (HoldTimeoutData *data)
{
-#define TAP_HOLD_TIME 800
- static guint32 last_event = 0;
- gchar value = -1;
+ g_signal_emit (data->panel, moko_dialer_panel_signals[HOLD_SIGNAL], 0, data->value);
- 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);
- }
- }
+ g_free (data);
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)
+moko_dialer_panel_pressed (MokoDigitButton *button,
+ GdkEventButton *event,
+ MokoDialerPanel *panel)
{
+ static gint hold_timeout_source = 0;
- MokoDialerPanel *moko_dialer_panel;
+ if (event->type == GDK_BUTTON_PRESS)
+ {
+ HoldTimeoutData *timeout_data;
+ gchar value = -1;
-//here! check it tomorrow!
- moko_dialer_panel = (MokoDialerPanel *) data;
+ /* Normal 'clicked' event */
+ value = moko_digit_button_get_left (button);
+ g_signal_emit (panel, moko_dialer_panel_signals[CLICKED_SIGNAL], 0, value);
- gchar value = -1;
-
- if (event->button == 3)
- { //right button
+ /* Set up for a tap-and-hold event */
value = moko_digit_button_get_right (button);
+
+ /* this button doesn't have a "hold" value */
if (value == -1)
- { //button 1-9 pressed with hold , we emit another signal: HOLD_SIGNAL, with the para of the number
- value = moko_digit_button_get_left (button);
- if (value != -1)
- {
- g_signal_emit (moko_dialer_panel,
- moko_dialer_panel_signals[HOLD_SIGNAL], 0, value);
- }
- }
- else
- { //*, 0, # buttons are right clicked or pressed with hold
- if (value != -1)
- g_signal_emit (moko_dialer_panel,
- moko_dialer_panel_signals[CLICKED_SIGNAL], 0, value);
+ return FALSE;
- }
+ timeout_data = g_new0 (HoldTimeoutData, 1);
- }
- else if (event->button == 1)
- { //left button
- value = moko_digit_button_get_left (button);
- if (value != -1)
- g_signal_emit (moko_dialer_panel,
- moko_dialer_panel_signals[CLICKED_SIGNAL], 0, value);
+ timeout_data->panel = panel;
+ timeout_data->value = value;
- }
+ hold_timeout_source = g_timeout_add (800, (GSourceFunc) moko_dialer_panel_hold_timeout, timeout_data);
- /* allow the signal to propagate the event further */
+ }
+ else if (event->type == GDK_BUTTON_RELEASE)
+ {
+ if (hold_timeout_source != 0)
+ g_source_remove (hold_timeout_source);
+ }
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-10-12 09:37:38 UTC (rev 3149)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/moko-keypad.c 2007-10-12 11:12:56 UTC (rev 3150)
@@ -262,7 +262,37 @@
const gchar digit,
MokoKeypad *keypad)
{
- g_debug ("on_panel_user_hold: %c", digit);
+ MokoKeypadPrivate *priv;
+ gchar buf[3];
+ GList *matches = NULL;
+
+ g_return_if_fail (MOKO_IS_KEYPAD (keypad));
+ priv = keypad->priv;
+
+ /* Phones use '#' for PIN 'entered' signal */
+ if (priv->pin_mode && digit == '#')
+ {
+ on_dial_clicked (NULL, keypad);
+ return;
+ }
+
+ /* Create a string to insert into the textview */
+ buf[0] = digit;
+ buf[1] = '\0';
+
+ moko_dialer_textview_delete (MOKO_DIALER_TEXTVIEW (priv->textview));
+ moko_dialer_textview_insert (MOKO_DIALER_TEXTVIEW (priv->textview), buf);
+
+ if (!priv->pin_mode)
+ {
+ /* Some autocomplete stuff */
+ matches = moko_contacts_fuzzy_lookup (moko_contacts_get_default (),
+ moko_dialer_textview_get_input (
+ MOKO_DIALER_TEXTVIEW (priv->textview),
+ TRUE));
+ moko_tips_set_matches (MOKO_TIPS (priv->tips), matches);
+ g_signal_emit (G_OBJECT (keypad), keypad_signals[DIGIT_PRESSED], 0, digit);
+ }
}
/* GObject functions */
More information about the commitlog
mailing list