r2691 - in trunk/src/target/OM-2007.2/applications/openmoko-dialer2: . src
njp at sita.openmoko.org
njp at sita.openmoko.org
Fri Aug 10 19:04:15 CEST 2007
Author: njp
Date: 2007-08-10 19:04:14 +0200 (Fri, 10 Aug 2007)
New Revision: 2691
Modified:
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/moko-dialer.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-keypad.h
Log:
2007-08-10 Neil J. Patel <njp at o-hand.com>
* src/moko-dialer.c: (on_keypad_pin_entry),
(on_keypad_digit_pressed), (on_pin_requested), (moko_dialer_init):
Set the keypad to 'pin mode' when a pin is requested.
* src/moko-keypad.c: (_get_window), (moko_keypad_set_pin_mode),
(on_dial_clicked), (on_delete_event), (moko_keypad_class_init),
(moko_keypad_init):
* src/moko-keypad.h:
Implement a 'pin mode' for entering a pin.
Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog 2007-08-10 13:55:02 UTC (rev 2690)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog 2007-08-10 17:04:14 UTC (rev 2691)
@@ -1,3 +1,15 @@
+2007-08-10 Neil J. Patel <njp at o-hand.com>
+
+ * src/moko-dialer.c: (on_keypad_pin_entry),
+ (on_keypad_digit_pressed), (on_pin_requested), (moko_dialer_init):
+ Set the keypad to 'pin mode' when a pin is requested.
+
+ * src/moko-keypad.c: (_get_window), (moko_keypad_set_pin_mode),
+ (on_dial_clicked), (on_delete_event), (moko_keypad_class_init),
+ (moko_keypad_init):
+ * src/moko-keypad.h:
+ Implement a 'pin mode' for entering a pin.
+
2007-08-08 Neil J. Patel <njp at o-hand.com>
* src/moko-dialer-panel.c: (moko_dialer_panel_init),
Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/moko-dialer.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/moko-dialer.c 2007-08-10 13:55:02 UTC (rev 2690)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/moko-dialer.c 2007-08-10 17:04:14 UTC (rev 2691)
@@ -276,6 +276,22 @@
}
static void
+on_keypad_pin_entry (MokoKeypad *keypad,
+ const gchar *pin,
+ MokoDialer *dialer)
+{
+ MokoDialerPrivate *priv;
+
+ g_return_if_fail (MOKO_IS_DIALER (dialer));
+ priv = dialer->priv;
+
+ moko_gsmd_connection_send_pin (priv->connection, pin);
+
+ moko_keypad_set_pin_mode (MOKO_KEYPAD (priv->keypad), FALSE);
+}
+
+
+static void
on_talking_accept_call (MokoTalking *talking, MokoDialer *dialer)
{
MokoDialerPrivate *priv;
@@ -367,6 +383,7 @@
MokoDialer *dialer)
{
/* If in call, dtmf it, otherwise ignore */
+ /* FIXME: When libgsmd implements it, we should */
}
static void
@@ -478,8 +495,8 @@
g_return_if_fail (MOKO_IS_DIALER (dialer));
priv = dialer->priv;
-
- g_print ("Incoming pin request for type %d\n", type);
+
+ moko_keypad_set_pin_mode (MOKO_KEYPAD (priv->keypad), FALSE);
}
static void
@@ -750,6 +767,8 @@
priv->keypad = moko_keypad_new ();
g_signal_connect (G_OBJECT (priv->keypad), "dial_number",
G_CALLBACK (on_keypad_dial_clicked), (gpointer)dialer);
+ g_signal_connect (G_OBJECT (priv->keypad), "pin_entry",
+ G_CALLBACK (on_keypad_pin_entry), (gpointer)dialer);
g_signal_connect (G_OBJECT (priv->keypad), "digit_pressed",
G_CALLBACK (on_keypad_digit_pressed), (gpointer)dialer);
gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook), priv->keypad,
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-10 13:55:02 UTC (rev 2690)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/moko-keypad.c 2007-08-10 17:04:14 UTC (rev 2691)
@@ -34,10 +34,13 @@
struct _MokoKeypadPrivate
{
+ gboolean pin_mode;
+
GtkWidget *textview;
GtkWidget *panel;
GtkWidget *delete;
GtkWidget *dial;
+ GtkWidget *dial_label;
GtkWidget *dialbox;
};
@@ -45,6 +48,7 @@
enum
{
DIAL_NUMBER,
+ PIN_ENTRY,
DIGIT_PRESSED,
LAST_SIGNAL
@@ -52,7 +56,55 @@
static guint keypad_signals[LAST_SIGNAL] = {0, };
+static GtkWidget*
+_get_window (GtkWidget *widget)
+{
+ GtkWidget *parent = NULL;
+
+ while ((parent = widget->parent))
+ {
+ if (GTK_IS_WINDOW (parent))
+ break;
+ widget = parent;
+ }
+ if (GTK_IS_WINDOW (parent))
+ return parent;
+ else
+ return NULL;
+}
+
void
+moko_keypad_set_pin_mode (MokoKeypad *keypad, gboolean pin_mode)
+{
+ MokoKeypadPrivate *priv;
+ GtkWidget *window;
+
+ g_return_if_fail (MOKO_IS_KEYPAD (keypad));
+ priv = keypad->priv;
+
+ if (priv->pin_mode == pin_mode)
+ return;
+
+ priv->pin_mode = pin_mode;
+
+ if (pin_mode)
+ {
+ window = _get_window (GTK_WIDGET (keypad));
+ if (GTK_IS_WINDOW (window))
+ gtk_window_set_title (GTK_WINDOW (window), "Enter Pin");
+ gtk_label_set_markup (GTK_LABEL (priv->dial_label), "Send\nPin");
+ }
+ else
+ {
+ window = _get_window (GTK_WIDGET (keypad));
+ if (GTK_IS_WINDOW (window))
+ gtk_window_set_title (GTK_WINDOW (window), "Dialer");
+ gtk_label_set_markup (GTK_LABEL (priv->dial_label), "Dial");
+ }
+
+}
+
+void
moko_keypad_set_talking (MokoKeypad *keypad, gboolean talking)
{
MokoKeypadPrivate *priv;
@@ -79,10 +131,13 @@
number = moko_dialer_textview_get_input (
MOKO_DIALER_TEXTVIEW (priv->textview),
TRUE);
- g_signal_emit (G_OBJECT (keypad), keypad_signals[DIAL_NUMBER], 0, number);
+ if (priv->pin_mode)
+ g_signal_emit (G_OBJECT (keypad), keypad_signals[PIN_ENTRY], 0, number);
+ else
+ g_signal_emit (G_OBJECT (keypad), keypad_signals[DIAL_NUMBER], 0, number);
}
-static void
+static gboolean
on_delete_event (GtkWidget *button, GdkEventButton *event, MokoKeypad *keypad)
{
#define TAP_HOLD_TIME 800
@@ -90,7 +145,7 @@
MokoDialerTextview *textview;
static guint32 last_event = 0;
- g_return_if_fail (MOKO_IS_KEYPAD (keypad));
+ g_return_val_if_fail (MOKO_IS_KEYPAD (keypad), FALSE);
priv = keypad->priv;
textview = MOKO_DIALER_TEXTVIEW (priv->textview);
@@ -175,6 +230,16 @@
G_TYPE_NONE,
1, G_TYPE_STRING);
+ keypad_signals[PIN_ENTRY] =
+ g_signal_new ("pin_entry",
+ G_TYPE_FROM_CLASS (obj_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (MokoKeypadClass, pin_entry),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE,
+ 1, G_TYPE_STRING);
+
keypad_signals[DIGIT_PRESSED] =
g_signal_new ("digit_pressed",
G_TYPE_FROM_CLASS (obj_class),
@@ -248,6 +313,7 @@
gtk_stock_lookup (MOKO_STOCK_CALL_DIAL, &stock_item);
label = gtk_label_new (stock_item.label);
+ priv->dial_label = label;
gtk_box_pack_start (GTK_BOX (bvbox), label, FALSE, FALSE, 0);
gtk_container_add (GTK_CONTAINER (align), bvbox);
Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/moko-keypad.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/moko-keypad.h 2007-08-10 13:55:02 UTC (rev 2690)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/moko-keypad.h 2007-08-10 17:04:14 UTC (rev 2691)
@@ -61,6 +61,7 @@
/* signals */
void (*dial_number) (MokoKeypad *keypad, const gchar *number);
+ void (*pin_entry) (MokoKeypad *keypad, const gchar *number);
void (*digit_pressed) (MokoKeypad *keypad, const gchar digit);
/* future padding */
@@ -76,6 +77,9 @@
moko_keypad_new (void);
void
+moko_keypad_set_pin_mode (MokoKeypad *keypad, gboolean pin_mode);
+
+void
moko_keypad_set_talking (MokoKeypad *keypad, gboolean talking);
G_END_DECLS
More information about the commitlog
mailing list