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

thomas at sita.openmoko.org thomas at sita.openmoko.org
Thu Nov 1 17:36:15 CET 2007


Author: thomas
Date: 2007-11-01 17:36:13 +0100 (Thu, 01 Nov 2007)
New Revision: 3321

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/dialer-main.c
Log:
* src/dialer/dialer-main.c: Use dbus service to initiate calls


Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog	2007-11-01 16:21:18 UTC (rev 3320)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog	2007-11-01 16:36:13 UTC (rev 3321)
@@ -1,5 +1,9 @@
 2007-11-01  Thomas Wood  <thomas at openedhand.com>
 
+	* src/dialer/dialer-main.c: Use dbus service to initiate calls
+
+2007-11-01  Thomas Wood  <thomas at openedhand.com>
+
 	* src/phone-kit/moko-talking.c:
 	Revert use of GdkPixbufSimpleAnim as it does not support looping
 

Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/dialer-main.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/dialer-main.c	2007-11-01 16:21:18 UTC (rev 3320)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/dialer-main.c	2007-11-01 16:36:13 UTC (rev 3321)
@@ -24,134 +24,63 @@
 
 // #include "moko-dialer.h"
 #include "moko-keypad.h"
+#include "moko-history.h"
 
-static gboolean show_dialer;
 static gboolean show_missed;
-static gchar *number = NULL;
 
 static GOptionEntry entries[] = {
-  {"show-dialer", 's', 0, G_OPTION_ARG_NONE, &show_dialer,
-   "Show the dialer at startup", "N"},
 
   {"show-missed", 'm', 0, G_OPTION_ARG_NONE, &show_missed,
    "Show the history window filtered by the missed, none.", "N"},
-  
-  {"dial", 'd', 0, G_OPTION_ARG_STRING, &number,
-   "Dial the specified number.", "N"},
 
   {NULL}
 };
 
 /* Callbacks from widgets */
-#if 0
 
 static void
 on_keypad_dial_clicked (MokoKeypad  *keypad,
                         const gchar *number,
-                        MokoDialer  *dialer)
+                        DBusGProxy  *proxy)
 {
-  GtkWidget *dlg;
-  MokoDialerPrivate *priv;
-  MokoContactEntry *entry = NULL;
-  
-  g_return_if_fail (MOKO_IS_DIALER (dialer));
-  priv = dialer->priv;
+  GError *error = NULL;
 
-  if (!number) {
+  if (!number)
+  {
+    /*
     gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->notebook), 1);
     moko_history_set_filter (MOKO_HISTORY (priv->history), HISTORY_FILTER_DIALED);
+    */
     return;
   }
 
-  /* check current dialer state */
-  if (0 || priv->status != DIALER_STATUS_NORMAL)
-  {
-    gchar *strings[] = {
-      "Normal",
-      "Incoming Call",
-      "Dialing",
-      "Outgoing Call"
-    };
-    dlg = gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
-        "Cannot dial when dialer is busy.\nCurrent status = %s", strings[priv->status]);
-    gtk_dialog_run (GTK_DIALOG (dlg));
-    gtk_widget_destroy (dlg);
+  g_debug ("Dial %s", number);
 
-    g_warning ("Cannot dial when dialer is busy: %d\n", priv->status);
+  dbus_g_proxy_call (proxy, "Dial", &error, G_TYPE_STRING, number, G_TYPE_INVALID, G_TYPE_INVALID);
 
-    return;
-  }
-  priv->status = DIALER_STATUS_DIALING;
-
-  /* check for network connection */
-  if (priv->registered != MOKO_GSMD_CONNECTION_NETREG_HOME
-      && priv->registered != MOKO_GSMD_CONNECTION_NETREG_ROAMING
-      && priv->registered != MOKO_GSMD_CONNECTION_NETREG_DENIED)
+  if (error)
   {
-    gchar *strings[] = {
-      "None",
-      "Home network registered",
-      "Searching for network",
-      "Network registration denied",
-      "",
-      "Roaming network registered"
-    };
-
-    dlg = gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
-        "Cannot dial number. %s", strings[priv->registered]);
-    gtk_dialog_run (GTK_DIALOG (dlg));
-    gtk_widget_destroy (dlg);
-
-    /* no point continuing if we're not connected to a network! */
-    priv->status = DIALER_STATUS_NORMAL;
-    return;
+    g_warning (error->message);
   }
-
-  entry = moko_contacts_lookup (moko_contacts_get_default (), number);
-
-  /* Prepare a voice journal entry */
-  if (priv->journal)
+  else
   {
-    priv->entry = moko_journal_entry_new (VOICE_JOURNAL_ENTRY);
-    moko_journal_entry_set_direction (priv->entry, DIRECTION_OUT);
-    moko_journal_entry_set_source (priv->entry, "Openmoko Dialer");
-    moko_journal_entry_set_gsm_location (priv->entry, &priv->gsm_location);
-    moko_journal_voice_info_set_distant_number (priv->entry, number);
-    if (entry && entry->contact->uid)
-      moko_journal_entry_set_contact_uid (priv->entry, entry->contact->uid);
+    /* the dbus object takes over now */
+    gtk_main_quit();
   }
-  moko_talking_outgoing_call (MOKO_TALKING (priv->talking), number, entry);
-
-  gtk_notebook_insert_page (GTK_NOTEBOOK (priv->notebook), priv->talking,
-                            gtk_image_new_from_file (PKGDATADIR"/phone.png"),
-                            0);
-  gtk_container_child_set (GTK_CONTAINER (priv->notebook), priv->talking,
-                           "tab-expand", TRUE,
-                           NULL);
-  
-  gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->notebook), 0);
-
-  gtk_window_present (GTK_WINDOW (priv->window));
-
-  moko_keypad_set_talking (MOKO_KEYPAD (priv->keypad), TRUE);
-
-  moko_gsmd_connection_voice_dial (priv->connection, number);
-
-  g_signal_emit (G_OBJECT (dialer), dialer_signals[OUTGOING_CALL], 0, number);
 }
 
 static void
 on_history_dial_number (MokoHistory *history,
                         const gchar *number,
-                        MokoDialer  *dialer)
+                        DBusGProxy  *proxy)
 {
-  on_keypad_dial_clicked (NULL, number, dialer);
+  on_keypad_dial_clicked (NULL, number, proxy);
 }
 
-
-#endif
 int main (int argc, char **argv)
 {
+  GtkWidget *window, *notebook, *keypad, *history;
+  MokoJournal *journal;
 
   if (argc != 1)
   {
@@ -172,14 +101,71 @@
   moko_stock_register ();
 
 
+  DBusGConnection *connection;
+  GError *error;
+  DBusGProxy *proxy;
+
+  g_type_init ();
+
+  error = NULL;
+  connection = dbus_g_bus_get (DBUS_BUS_SESSION,
+                               &error);
+  if (connection == NULL)
+    {
+      g_printerr ("Failed to open connection to bus: %s\n",
+                  error->message);
+      g_error_free (error);
+      exit (1);
+    }
+
+  proxy = dbus_g_proxy_new_for_name (connection, "org.openmoko.Dialer", "/org/openmoko/Dialer", "org.openmoko.Dialer");
+
    /* application object */
   g_set_application_name ("OpenMoko Dialer");
-#if 0
+
+  /* Set up the journal */
+  journal = moko_journal_open_default ();
+  if (!journal || !moko_journal_load_from_storage (journal))
+  {
+    g_warning ("Could not load journal");
+    journal = NULL;
+  }
+
+
+  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+  g_signal_connect (G_OBJECT (window), "delete-event",
+                    (GCallback) gtk_widget_hide_on_delete, NULL);
+  gtk_window_set_title (GTK_WINDOW (window), "Dialer");
+
+  /* Notebook */
+  notebook = gtk_notebook_new ();
+  gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_BOTTOM);
+  gtk_container_add (GTK_CONTAINER (window), notebook);
+
+
+  /* Keypad */
+  keypad = moko_keypad_new ();
+  g_signal_connect (keypad, "dial_number", G_CALLBACK (on_keypad_dial_clicked), proxy);
+
+  gtk_notebook_append_page (GTK_NOTEBOOK (notebook), keypad, gtk_image_new_from_file (PKGDATADIR"/dtmf.png"));
+  gtk_container_child_set (GTK_CONTAINER (notebook), keypad, "tab-expand", TRUE, NULL);
+
+  /* History */
+  history = moko_history_new (journal);
+  g_signal_connect (history, "dial_number", G_CALLBACK (on_history_dial_number), proxy);
+  gtk_notebook_append_page (GTK_NOTEBOOK (notebook), history,
+                            gtk_image_new_from_stock (MOKO_STOCK_CALL_HISTORY,
+                                                      GTK_ICON_SIZE_BUTTON));
+  gtk_container_child_set (GTK_CONTAINER (notebook), history,
+                           "tab-expand", TRUE,
+                           NULL);
+
+  gtk_widget_show_all (window);
   if (show_missed)
-    moko_dialer_show_missed_calls (dialer, NULL);
-  else if (show_dialer)
-    moko_dialer_show_dialer (dialer, NULL);
-#endif
+    gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 1);
+  else
+    gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 0);
+
   gtk_main ();
 
   return 0;





More information about the commitlog mailing list