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