r1944 - trunk/src/target/OM-2007/applications/openmoko-dialer/src

thomas at sita.openmoko.org thomas at sita.openmoko.org
Thu May 10 13:55:55 CEST 2007


Author: thomas
Date: 2007-05-10 13:55:54 +0200 (Thu, 10 May 2007)
New Revision: 1944

Modified:
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-main.h
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-outgoing.c
Log:
openmoko-dialer: implement dialing, redialing, call success, call failure


Modified: trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-main.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-main.h	2007-05-10 07:05:29 UTC (rev 1943)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-main.h	2007-05-10 11:55:54 UTC (rev 1944)
@@ -60,8 +60,9 @@
 
 //buttons
   GtkWidget *buttonSpeaker;
+  GtkWidget *buttonHandset;
+  GtkWidget *buttonRedial;
   GtkWidget *buttonCancel;
-  GtkWidget *buttonRedial;
 
   GtkWidget *imageTALK;
   GtkWidget *imageDTMF;

Modified: trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-outgoing.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-outgoing.c	2007-05-10 07:05:29 UTC (rev 1943)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-outgoing.c	2007-05-10 11:55:54 UTC (rev 1944)
@@ -33,43 +33,28 @@
 static void window_outgoing_setup_timer (MokoDialerData * appdata);
 
 static void
-cb_speaker_button_clicked (GtkButton * button, MokoDialerData * appdata)
+cb_speaker_button_clicked (GtkButton * button, MokoDialerData * data)
 {
-  DBG_ENTER ();
-  //moko_dialer_status_update_icon(appdata->status_outgoing);
+  if (GTK_WIDGET_VISIBLE (data->buttonSpeaker))
+    gtk_widget_show (data->buttonHandset);
+  else
+    gtk_widget_show (data->buttonSpeaker);
 
-
-  appdata->g_state.callstate = STATE_TALKING;
-
-  gtk_widget_hide (appdata->window_outgoing);
-
-
-  //transfer the contact info
-  window_talking_prepare (appdata);
-
-  //start dialling.
-
+  gtk_widget_hide (button);
+  // do something else here too
 }
 
 static void
-cb_redial_button_clicked (GtkButton * button, MokoDialerData * appdata)
+cb_redial_button_clicked (GtkButton * button, MokoDialerData * data)
 {
-  DBG_ENTER ();
-  gtk_widget_hide (appdata->buttonRedial);
-  gtk_widget_show (appdata->buttonSpeaker);
-  moko_dialer_status_set_title_label (appdata->status_outgoing,
-                                      "Outgoing call");
-  moko_dialer_status_set_status_label (appdata->status_outgoing,
-                                       "Calling ... (00:00:00)");
-  window_outgoing_setup_timer (appdata);
+  gchar *number = g_object_get_data (G_OBJECT (button), "current-number");
 
-  appdata->g_state.callstate = STATE_CALLING;
-  //appdata->g_state.historytype = OUTGOING;
-  /* TOOD: MokoGsmdConnection->dial
-   * gsm_dial (appdata->g_peer_info.number);
-   */
+  gtk_widget_hide (button);
+  gtk_widget_show (data->buttonCancel);
 
-  DBG_LEAVE ();
+
+  moko_gsmd_connection_voice_hangup (data->connection);
+  moko_gsmd_connection_voice_dial (data->connection, number);
 }
 
 static void
@@ -209,9 +194,9 @@
                                         "outgoing_2.png");
     moko_dialer_status_add_status_icon (MOKO_DIALER_STATUS (status),
                                         "outgoing_3.png");
-    moko_dialer_status_set_error_icon (MOKO_DIALER_STATUS (status),
-                                       "failure.png");
-    moko_dialer_status_set_icon_by_index (MOKO_DIALER_STATUS (status), 0);
+    //moko_dialer_status_set_error_icon (MOKO_DIALER_STATUS (status),
+    //                                   "failure.png");
+    //moko_dialer_status_set_icon_by_index (MOKO_DIALER_STATUS (status), 0);
 
     gtk_box_pack_start (GTK_BOX (vbox), status, FALSE, FALSE, 0);
 
@@ -227,24 +212,24 @@
     g_signal_connect (G_OBJECT (button), "clicked",
                       G_CALLBACK (cb_speaker_button_clicked), p_dialer_data);
     p_dialer_data->buttonSpeaker = button;
+    gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area), button, FALSE, FALSE, 0);
+    gtk_widget_show (button);
 
+    button = gtk_button_new_from_stock (MOKO_STOCK_HANDSET);
+    g_signal_connect (G_OBJECT (button), "clicked",
+                      G_CALLBACK (cb_speaker_button_clicked), p_dialer_data);
+    p_dialer_data->buttonHandset = button;
+    gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area), button, FALSE, FALSE, 0);
+
+
     button = gtk_button_new_from_stock (MOKO_STOCK_CALL_REDIAL);
     p_dialer_data->buttonRedial = button;
     g_signal_connect (G_OBJECT (button), "clicked",
                       G_CALLBACK (cb_redial_button_clicked), p_dialer_data);
-    g_object_set (G_OBJECT (button), "no-show-all", TRUE, NULL);
 
+    p_dialer_data->buttonCancel = gtk_dialog_add_button (GTK_DIALOG (window), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
 
-    button = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
-    p_dialer_data->buttonCancel = button;
-    g_signal_connect (G_OBJECT (button), "clicked",
-                      G_CALLBACK (cb_cancel_button_clicked), p_dialer_data);
 
-
-    gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area), p_dialer_data->buttonSpeaker, FALSE, FALSE, 0);
-    gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area), p_dialer_data->buttonCancel, FALSE, FALSE, 0);
-
-
     moko_dialer_status_set_title_label (MOKO_DIALER_STATUS (status),
                                         "Outgoing call");
     moko_dialer_status_set_status_label (MOKO_DIALER_STATUS (status),
@@ -264,8 +249,39 @@
 }
 
 void
-window_outgoing_dial (MokoDialerData *appdata, gchar *number)
+call_progress_cb (MokoGsmdConnection *connection, int type, MokoDialerData *data)
 {
-  moko_gsmd_connection_voice_dial (appdata->connection, number);
-  gtk_dialog_run (appdata->window_outgoing);
+  if (type == GSMD_CALLPROG_REJECT)
+  {
+    g_debug ("call rejected");
+    return;
+  }
+
+  if (type ==  GSMD_CALLPROG_CONNECTED)
+  {
+    gtk_dialog_response (data->window_outgoing, GTK_RESPONSE_OK);
+  }
 }
+
+void
+window_outgoing_dial (MokoDialerData *data, gchar *number)
+{
+  g_signal_connect (data->connection, "call-progress", call_progress_cb, data);
+  g_object_set_data (G_OBJECT (data->window_outgoing), "current-number", number);
+  moko_gsmd_connection_voice_dial (data->connection, number);
+  if (gtk_dialog_run (data->window_outgoing) == GTK_RESPONSE_OK)
+  {
+    /* call has connected, so open the talking window */
+    /* window_talking_show (); */
+    window_talking_prepare (data);
+    gtk_widget_show (data->window_talking);
+  }
+  else
+  {
+    /* call canceled */
+    moko_gsmd_connection_voice_hangup (data->connection);
+  }
+
+  gtk_widget_hide (data->window_outgoing);
+  g_object_steal_data (G_OBJECT (data->window_outgoing), "current-number");
+}





More information about the commitlog mailing list