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

thomas at sita.openmoko.org thomas at sita.openmoko.org
Thu Apr 26 14:16:51 CEST 2007


Author: thomas
Date: 2007-04-26 14:16:43 +0200 (Thu, 26 Apr 2007)
New Revision: 1843

Added:
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-main.c
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-main.h
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-dialer.c
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-dialer.h
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-history.c
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-history.h
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-incoming.c
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-incoming.h
   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.h
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-pin.c
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-pin.h
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-talking.c
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-talking.h
Removed:
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-main.c
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-main.h
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-dialer.c
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-dialer.h
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-history.c
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-history.h
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-incoming.c
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-incoming.h
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-outgoing.c
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-outgoing.h
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-pin.c
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-pin.h
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-talking.c
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-talking.h
Modified:
   trunk/src/target/OM-2007/applications/openmoko-dialer/src/Makefile.am
Log:
* Reduce filename lengths


Modified: trunk/src/target/OM-2007/applications/openmoko-dialer/src/Makefile.am
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/Makefile.am	2007-04-26 03:38:14 UTC (rev 1842)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/Makefile.am	2007-04-26 12:16:43 UTC (rev 1843)
@@ -6,7 +6,7 @@
 
 openmoko_dialer_SOURCES = \
 dialer-callbacks-connection.c\
-openmoko-dialer-main.c\
+dialer-main.c\
 moko-digit-button.c\
 moko-dialer-panel.c\
 moko-dialer-textview.c\
@@ -15,12 +15,12 @@
 history.c\
 contacts.c\
 common.c\
-openmoko-dialer-window-history.c\
-openmoko-dialer-window-dialer.c\
-openmoko-dialer-window-outgoing.c\
-openmoko-dialer-window-incoming.c\
-openmoko-dialer-window-talking.c\
-openmoko-dialer-window-pin.c\
+dialer-window-history.c\
+dialer-window-dialer.c\
+dialer-window-outgoing.c\
+dialer-window-incoming.c\
+dialer-window-talking.c\
+dialer-window-pin.c\
 moko-dialer-status.c\
 alsa.c
 

Copied: trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-main.c (from rev 1842, trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-main.c)
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-main.c	2007-04-26 03:38:14 UTC (rev 1842)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-main.c	2007-04-26 12:16:43 UTC (rev 1843)
@@ -0,0 +1,218 @@
+/*   openmoko-dialer.c
+ *
+ *  Authored by Tony Guan<tonyguan at fic-sh.com.cn>
+ *
+ *  Copyright (C) 2006 FIC Shanghai Lab
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Public License as published by
+ *  the Free Software Foundation; version 2 of the license.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Lesser Public License for more details.
+ *
+ *  Current Version: $Rev$ ($Date) [$Author: Tony Guan $]
+ */
+#include <libmokoui/moko-application.h>
+#include <libmokoui/moko-finger-tool-box.h>
+#include <libmokoui/moko-finger-window.h>
+#include <libmokoui/moko-finger-wheel.h>
+
+#include <libmokogsmd/moko-gsmd-connection.h>
+
+
+#include <gtk/gtk.h>
+#include <signal.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include "contacts.h"
+#include  "history.h"
+#include "error.h"
+#include "errno.h"
+#include "dialer-main.h"
+#include "dialer-window-dialer.h"
+#include "dialer-window-talking.h"
+#include "dialer-window-outgoing.h"
+#include "dialer-window-incoming.h"
+#include "dialer-window-pin.h"
+#include "dialer-window-history.h"
+
+#include "dialer-callbacks-connection.h"
+
+MokoDialerData *p_dialer_data = 0;
+MokoDialerData *
+moko_get_app_data ()
+{
+  return p_dialer_data;
+}
+
+static void
+handle_sigusr1 (int value)
+{
+  DBG_ENTER ();
+  MokoDialerData *p_data = moko_get_app_data ();
+  if (!p_data)
+    return;
+  GtkWidget *mainwindow = p_data->window_present;
+  if (mainwindow == 0)
+    mainwindow = p_data->window_dialer;
+
+  if (mainwindow == NULL)
+  {
+    return;
+  }
+  gtk_widget_show_all (mainwindow);
+  gtk_window_present (GTK_WINDOW (mainwindow));
+  DBG_TRACE ();
+  signal (SIGUSR1, handle_sigusr1);
+  DBG_LEAVE ();
+}
+
+static pid_t
+testlock (char *fname)
+{
+  int fd;
+  struct flock fl;
+
+  fd = open (fname, O_WRONLY, S_IWUSR);
+  if (fd < 0)
+  {
+    if (errno == ENOENT)
+    {
+      return 0;
+    }
+    else
+    {
+      perror ("Test lock open file");
+      return -1;
+    }
+  }
+
+  fl.l_type = F_WRLCK;
+  fl.l_whence = SEEK_SET;
+  fl.l_start = 0;
+  fl.l_len = 0;
+
+  if (fcntl (fd, F_GETLK, &fl) < 0)
+  {
+    close (fd);
+    return -1;
+  }
+  close (fd);
+
+  if (fl.l_type == F_UNLCK)
+    return 0;
+
+  return fl.l_pid;
+}
+
+static void
+setlock (char *fname)
+{
+  int fd;
+  struct flock fl;
+
+  fd = open (fname, O_WRONLY | O_CREAT, S_IWUSR);
+  if (fd < 0)
+  {
+    perror ("Set lock open file");
+    return;
+  }
+
+  fl.l_type = F_WRLCK;
+  fl.l_whence = SEEK_SET;
+  fl.l_start = 0;
+  fl.l_len = 0;
+
+  if (fcntl (fd, F_SETLK, &fl) < 0)
+  {
+    perror ("Lock file");
+    close (fd);
+  }
+}
+
+static gboolean show_gui;
+
+static GOptionEntry entries[] = {
+  {"show-gui", 's', 0, G_OPTION_ARG_NONE, &show_gui,
+   "Show the GUI at startup (default off)", "N"},
+  {NULL}
+};
+
+
+int
+main (int argc, char **argv)
+{
+  pid_t lockapp;
+
+  /* Initialize GTK+ */
+  gtk_init (&argc, &argv);
+
+  if (argc != 1)
+  {
+    /* Add init code. */
+    GError *error = NULL;
+    GOptionContext *context = g_option_context_new ("");
+
+    g_option_context_add_main_entries (context, entries, NULL);
+    g_option_context_add_group (context, gtk_get_option_group (TRUE));
+    g_option_context_parse (context, &argc, &argv, &error);
+
+    g_option_context_free (context);
+  }
+  //FIXME: the following lines to enable unique instance will be changed.
+  lockapp = testlock ("/tmp/dialer.lock");
+  if (lockapp > 0)
+  {
+    kill (lockapp, SIGUSR1);
+    return 0;
+  }
+  setlock ("/tmp/dialer.lock");
+
+
+  p_dialer_data = g_new0 (MokoDialerData, 1);
+
+  //init application data
+  contact_init_contact_data (&(p_dialer_data->g_contactlist));
+  history_init_history_data (&(p_dialer_data->g_historylist));
+
+
+  /* application object */
+//    MokoApplication* app = MOKO_APPLICATION(moko_application_get_instance());
+  g_set_application_name ("OpenMoko Dialer");
+
+  /* Set up gsmd connection object */
+  MokoGsmdConnection* conn = p_dialer_data->connection = moko_gsmd_connection_new ();
+  g_signal_connect (G_OBJECT (conn), "network-registration", (GCallback) network_registration_cb, NULL);
+  g_signal_connect (G_OBJECT (conn), "incoming-call", (GCallback) incoming_call_cb, NULL);
+  g_signal_connect (G_OBJECT (conn), "incoming-clip", (GCallback) incoming_clip_cb, NULL);
+
+  signal (SIGUSR1, handle_sigusr1);
+
+  //init the dialer window
+  window_dialer_init (p_dialer_data);
+  window_incoming_init (p_dialer_data);
+  window_pin_init (p_dialer_data);
+  window_outgoing_init (p_dialer_data);
+  window_history_init (p_dialer_data);
+  DBG_MSG
+    ("\nusage: \"dialer\" will not show any GUI initialy until you reactivate the app using another \"openmoko-dialer\" command");
+
+  if (show_gui)
+  {
+    handle_sigusr1 (SIGUSR1);
+  }
+
+  gtk_main ();
+
+
+//release everything    
+  contact_release_contact_list (&(p_dialer_data->g_contactlist));
+
+  history_release_history_list (&(p_dialer_data->g_historylist));
+  return 0;
+}

Copied: trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-main.h (from rev 1842, trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-main.h)

Copied: trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-dialer.c (from rev 1842, trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-dialer.c)
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-dialer.c	2007-04-26 03:38:14 UTC (rev 1842)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-dialer.c	2007-04-26 12:16:43 UTC (rev 1843)
@@ -0,0 +1,476 @@
+/*   openmoko-dialer-window-dialer.c
+ *
+ *  Authored by Tony Guan<tonyguan at fic-sh.com.cn>
+ *
+ *  Copyright (C) 2006 FIC Shanghai Lab
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Public License as published by
+ *  the Free Software Foundation; version 2 of the license.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Lesser Public License for more details.
+ *
+ *  Current Version: $Rev$ ($Date) [$Author: Tony Guan $]
+ */
+
+#include <libmokoui/moko-finger-tool-box.h>
+#include <libmokoui/moko-finger-window.h>
+#include <libmokoui/moko-finger-wheel.h>
+#include <libmokoui/moko-pixmap-button.h>
+
+#include <gtk/gtkalignment.h>
+#include <gtk/gtkbutton.h>
+#include <gtk/gtkhbox.h>
+#include <gtk/gtklabel.h>
+#include <gtk/gtkmain.h>
+#include <gtk/gtkmenu.h>
+#include <gtk/gtkmenuitem.h>
+#include <gtk/gtkvbox.h>
+
+#include "common.h"
+#include "contacts.h"
+#include "dialer-main.h"
+#include "dialer-window-dialer.h"
+#include "dialer-window-history.h"
+#include "dialer-window-outgoing.h"
+
+void
+cb_delete_button_clicked (GtkButton * button, MokoDialerData * appdata)
+{
+  g_debug ("delete button clicked");
+
+  if (moko_dialer_autolist_has_selected (appdata->moko_dialer_autolist))
+  {
+//first of all, we un-select the selection.
+    moko_dialer_autolist_set_select (appdata->moko_dialer_autolist, -1);
+
+//fill the textview with ""
+    moko_dialer_textview_fill_it (appdata->moko_dialer_text_view, "");
+//moko_dialer_textview_set_color(moko_dialer_textview);
+  }
+  else
+  {
+    moko_dialer_textview_delete (appdata->moko_dialer_text_view);
+//refresh the autolist,but do not automaticall fill the textview
+    gchar *codesinput = 0;
+    codesinput =
+      g_strdup (moko_dialer_textview_get_input
+                (appdata->moko_dialer_text_view, FALSE));
+
+    if (codesinput)
+    {
+      DBG_MESSAGE ("input %s", codesinput);
+      if (g_utf8_strlen (codesinput, -1) >= MOKO_DIALER_MIN_SENSATIVE_LEN)
+      {
+        moko_dialer_autolist_refresh_by_string (appdata->
+                                                moko_dialer_autolist,
+                                                codesinput, FALSE);
+        moko_dialer_textview_set_color (appdata->moko_dialer_text_view);
+      }
+      else
+        moko_dialer_autolist_hide_all_tips (appdata->moko_dialer_autolist);
+      g_free (codesinput);
+    }
+    else
+    {
+      DBG_WARN ("No input now.");
+    }
+
+
+  }
+
+}
+
+void
+cb_history_button_clicked (GtkButton * button, MokoDialerData * appdata)
+{
+  if (!appdata->window_history)
+    window_history_init (appdata);
+
+//start dialling.
+  gtk_widget_show_all (appdata->window_history);
+
+}
+
+void
+window_dialer_dial_out (MokoDialerData * appdata)
+{
+  gchar *codesinput;
+  //get the input digits
+  codesinput =
+    g_strdup (moko_dialer_textview_get_input
+              (appdata->moko_dialer_text_view, FALSE));
+  DBG_TRACE ();
+  if ((!codesinput)
+      || ((codesinput != NULL) && g_utf8_strlen (codesinput, -1)) < 1)
+  {
+    //user didn't input anything, maybe it's a redial, so we just insert the last dialed number and return this time.
+    if (g_utf8_strlen (appdata->g_state.lastnumber, -1) > 0)
+    {
+      moko_dialer_textview_insert (appdata->moko_dialer_text_view,
+                                   appdata->g_state.lastnumber);
+      moko_dialer_autolist_refresh_by_string (appdata->
+                                              moko_dialer_autolist,
+                                              appdata->g_state.lastnumber,
+                                              TRUE);
+    }
+    return;
+  }
+//empty the textview
+  moko_dialer_textview_empty (appdata->moko_dialer_text_view);
+
+//and we set the selected autolist to be No
+  moko_dialer_autolist_set_select (appdata->moko_dialer_autolist, -1);
+  moko_dialer_autolist_hide_all_tips (appdata->moko_dialer_autolist);
+
+//got the number;//FIXME:which function should I use if not g_strdup. & strcpy.
+  //strcpy(appdata->g_peer_info.number, codesinput );
+  g_stpcpy (appdata->g_peer_info.number, codesinput);
+
+//retrieve the contact information if any.
+  contact_get_peer_info_from_number (appdata->g_contactlist.contacts,
+                                     &(appdata->g_peer_info));
+// contact_get_peer_info_from_number
+
+/*
+if(!appdata->window_outgoing)
+	window_incoming_init(appdata);
+
+//transfer the contact info
+window_incoming_prepare(appdata);
+
+//start dialling.
+gtk_widget_show(appdata->window_incoming);
+*/
+
+//transfer the contact info
+  window_outgoing_prepare (appdata);
+
+//start dialling.
+  gtk_widget_show_all (appdata->window_outgoing);
+
+  g_free (codesinput);
+
+}
+
+void
+cb_dialer_button_clicked (GtkButton * button, MokoDialerData * appdata)
+{
+  window_dialer_dial_out (appdata);
+}
+
+
+
+void
+on_dialer_autolist_user_selected (GtkWidget * widget, gpointer para_pointer,
+                                  gpointer user_data)
+{
+  gchar *codesinput;
+  gint lenstring = 0;
+  gint leninput = 0;
+  MokoDialerData *appdata = (MokoDialerData *) user_data;
+  MokoDialerTextview *moko_dialer_text_view = appdata->moko_dialer_text_view;
+  DIALER_READY_CONTACT *ready_contact = (DIALER_READY_CONTACT *) para_pointer;
+  codesinput = moko_dialer_textview_get_input (moko_dialer_text_view, FALSE);
+  if (ready_contact->p_entry->content)
+    lenstring = g_utf8_strlen (ready_contact->p_entry->content, -1);
+  else
+    lenstring = 0;
+
+  if (codesinput)
+    leninput = g_utf8_strlen (codesinput, -1);
+  else
+    leninput = 0;
+  if (lenstring > leninput)
+  {
+
+    moko_dialer_textview_fill_it (moko_dialer_text_view,
+                                  &(ready_contact->p_entry->
+                                    content[leninput]));
+
+  }
+  else
+    moko_dialer_textview_fill_it (moko_dialer_text_view, "");
+  g_free (codesinput);
+
+}
+
+void
+on_dialer_autolist_user_confirmed (GtkWidget * widget, gpointer para_pointer,
+                                   gpointer user_data)
+{
+
+  MokoDialerData *appdata = (MokoDialerData *) user_data;
+  MokoDialerTextview *moko_dialer_text_view = appdata->moko_dialer_text_view;
+  DIALER_READY_CONTACT *ready_contact = (DIALER_READY_CONTACT *) para_pointer;
+  DBG_MESSAGE ("GOT THE MESSAGE OF confirmed:%s",
+               ready_contact->p_entry->content);
+  moko_dialer_textview_confirm_it (moko_dialer_text_view,
+                                   ready_contact->p_entry->content);
+  DBG_MESSAGE ("And here we are supposed to call out directly");
+  window_dialer_dial_out (appdata);
+
+
+}
+
+void
+on_dialer_autolist_nomatch (GtkWidget * widget, gpointer user_data)
+{
+
+  MokoDialerData *appdata = (MokoDialerData *) user_data;
+  MokoDialerTextview *moko_dialer_text_view = appdata->moko_dialer_text_view;
+
+  DBG_MESSAGE ("GOT THE MESSAGE OF no match");
+  moko_dialer_textview_fill_it (moko_dialer_text_view, "");
+
+}
+
+void
+on_dialer_menu_close (GtkWidget * widget, gpointer user_data)
+{
+  MokoDialerData *appdata = (MokoDialerData *) user_data;
+  gtk_main_quit ();
+}
+
+void
+on_dialer_menu_hide (GtkWidget * widget, MokoDialerData * appdata)
+{
+  gtk_widget_hide (appdata->window_dialer);
+}
+
+
+
+
+void
+on_dialer_panel_user_input (GtkWidget * widget, gchar parac,
+                            gpointer user_data)
+{
+  char input[2];
+  input[0] = parac;
+  input[1] = 0;
+  gchar *codesinput = NULL;
+
+//DBG_TRACE();
+  MokoDialerData *appdata = (MokoDialerData *) user_data;
+  MokoDialerTextview *moko_dialer_text_view = appdata->moko_dialer_text_view;
+
+
+  moko_dialer_textview_insert (moko_dialer_text_view, input);
+//DBG_TRACE();
+
+
+  codesinput =
+    g_strdup (moko_dialer_textview_get_input (moko_dialer_text_view, FALSE));
+
+  if (codesinput
+      && (g_utf8_strlen (codesinput, -1) >= MOKO_DIALER_MIN_SENSATIVE_LEN))
+  {
+    moko_dialer_autolist_refresh_by_string (appdata->moko_dialer_autolist,
+                                            codesinput, TRUE);
+  }
+  else
+  {
+    moko_dialer_autolist_hide_all_tips (appdata->moko_dialer_autolist);
+  }
+
+  if (codesinput)
+    g_free (codesinput);
+
+}
+
+void
+on_dialer_panel_user_hold (GtkWidget * widget, gchar parac,
+                           gpointer user_data)
+{
+  g_print ("on_dialer_panel_user_hold:%c\n", parac);
+}
+
+void
+on_window_dialer_hide (GtkWidget * widget, MokoDialerData * appdata)
+{
+  appdata->window_present = 0;
+}
+
+void
+on_window_dialer_show (GtkWidget * widget, MokoDialerData * appdata)
+{
+  DBG_ENTER ();
+  appdata->window_present = widget;
+  DBG_LEAVE ();
+}
+
+
+
+
+
+
+#define WINDOW_DIALER_BUTTON_SIZE_X 100
+#define WINDOW_DIALER_BUTTON_SIZE_Y 100
+gint
+window_dialer_init (MokoDialerData * p_dialer_data)
+{
+
+  if (!p_dialer_data->window_dialer)
+  {
+
+    GdkColor color;
+    gdk_color_parse ("black", &color);
+
+    GtkWidget *vbox = NULL;
+
+
+    GtkWidget *window = moko_finger_window_new ();
+
+    GtkMenu *appmenu = GTK_MENU (gtk_menu_new ());
+    GtkWidget *closeitem = gtk_menu_item_new_with_label ("Close");
+    g_signal_connect (G_OBJECT (closeitem), "activate",
+                      G_CALLBACK (on_dialer_menu_close), p_dialer_data);
+    gtk_menu_shell_append (GTK_MENU_SHELL (appmenu), closeitem);
+
+    GtkMenuItem *hideitem =
+      GTK_MENU_ITEM (gtk_menu_item_new_with_label ("Hide"));
+    g_signal_connect (G_OBJECT (hideitem), "activate",
+                      G_CALLBACK (on_dialer_menu_hide), p_dialer_data);
+    gtk_menu_shell_append (GTK_MENU_SHELL (appmenu), GTK_WIDGET (hideitem));
+
+
+    moko_finger_window_set_application_menu (MOKO_FINGER_WINDOW (window),
+                                             appmenu);
+
+    g_signal_connect (G_OBJECT (window), "delete_event",
+                      G_CALLBACK (gtk_widget_hide_on_delete), NULL);
+    g_signal_connect (G_OBJECT (window), "show",
+                      G_CALLBACK (on_window_dialer_show), p_dialer_data);
+    g_signal_connect (G_OBJECT (window), "hide",
+                      G_CALLBACK (on_window_dialer_hide), p_dialer_data);
+
+
+
+    /* contents */
+    vbox = gtk_vbox_new (FALSE, 0);
+    GtkWidget *hbox = gtk_hbox_new (FALSE, 10);
+
+
+    GtkWidget *eventbox1 = gtk_event_box_new ();
+    gtk_widget_set_name (eventbox1, "gtkeventbox-black");
+
+    GtkWidget *autolist = moko_dialer_autolist_new ();
+    moko_dialer_autolist_set_data (MOKO_DIALER_AUTOLIST (autolist),
+                                   &(p_dialer_data->g_contactlist));
+    p_dialer_data->moko_dialer_autolist = MOKO_DIALER_AUTOLIST (autolist);
+
+    gtk_container_add (GTK_CONTAINER (eventbox1), autolist);
+    gtk_box_pack_start (GTK_BOX (vbox), eventbox1, FALSE, FALSE, 0);
+
+    gtk_widget_modify_bg (eventbox1, GTK_STATE_NORMAL, &color);
+
+    g_signal_connect (GTK_OBJECT (autolist), "user_selected",
+                      G_CALLBACK (on_dialer_autolist_user_selected),
+                      p_dialer_data);
+
+
+    g_signal_connect (GTK_OBJECT (autolist), "user_confirmed",
+                      G_CALLBACK (on_dialer_autolist_user_confirmed),
+                      p_dialer_data);
+
+    g_signal_connect (GTK_OBJECT (autolist), "autolist_nomatch",
+                      G_CALLBACK (on_dialer_autolist_nomatch), p_dialer_data);
+
+
+
+
+
+    eventbox1 = gtk_event_box_new ();
+    gtk_widget_set_name (eventbox1, "gtkeventbox-black");
+    gtk_widget_modify_bg (eventbox1, GTK_STATE_NORMAL, &color);
+
+    GtkWidget *mokotextview = moko_dialer_textview_new ();
+    p_dialer_data->moko_dialer_text_view =
+      MOKO_DIALER_TEXTVIEW (mokotextview);
+
+    gtk_container_add (GTK_CONTAINER (eventbox1), mokotextview);
+    gtk_box_pack_start (GTK_BOX (vbox), eventbox1, FALSE, FALSE, 0);
+
+    GtkWidget *mokodialerpanel = moko_dialer_panel_new ();
+
+    gtk_widget_set_size_request (mokodialerpanel, 380, 384);
+
+
+    g_signal_connect (GTK_OBJECT (mokodialerpanel), "user_input",
+                      G_CALLBACK (on_dialer_panel_user_input), p_dialer_data);
+
+
+    g_signal_connect (GTK_OBJECT (mokodialerpanel), "user_hold",
+                      G_CALLBACK (on_dialer_panel_user_hold), p_dialer_data);
+
+    gtk_box_pack_start (GTK_BOX (hbox), mokodialerpanel, TRUE, TRUE, 5);
+
+
+
+//the buttons
+
+    GtkWidget *vbox2 = gtk_vbox_new (FALSE, 0);
+    GtkWidget *button1 = moko_pixmap_button_new ();
+    g_signal_connect (G_OBJECT (button1), "clicked",
+                      G_CALLBACK (cb_delete_button_clicked), p_dialer_data);
+    gtk_widget_set_name (button1, "mokofingerbutton-orange");
+    moko_pixmap_button_set_finger_toolbox_btn_center_image
+      (MOKO_PIXMAP_BUTTON (button1),
+       file_new_image_from_relative_path ("delete.png"));
+    moko_pixmap_button_set_action_btn_lower_label (MOKO_PIXMAP_BUTTON
+                                                   (button1), "Delete");
+    gtk_widget_set_size_request (button1, WINDOW_DIALER_BUTTON_SIZE_X,
+                                 WINDOW_DIALER_BUTTON_SIZE_Y);
+
+    gtk_box_pack_start (GTK_BOX (vbox2), button1, FALSE, FALSE, 5);
+
+    GtkWidget *button3 = moko_pixmap_button_new ();
+    g_signal_connect (G_OBJECT (button3), "clicked",
+                      G_CALLBACK (cb_history_button_clicked), p_dialer_data);
+    gtk_widget_set_name (button3, "mokofingerbutton-orange");
+    moko_pixmap_button_set_finger_toolbox_btn_center_image
+      (MOKO_PIXMAP_BUTTON (button3),
+       file_new_image_from_relative_path ("history.png"));
+    moko_pixmap_button_set_action_btn_lower_label (MOKO_PIXMAP_BUTTON
+                                                   (button3), "History");
+    gtk_widget_set_size_request (button3, WINDOW_DIALER_BUTTON_SIZE_X,
+                                 WINDOW_DIALER_BUTTON_SIZE_Y);
+    gtk_box_pack_start (GTK_BOX (vbox2), button3, FALSE, FALSE, 5);
+
+
+    GtkWidget *button2 = moko_pixmap_button_new ();
+
+    g_signal_connect (G_OBJECT (button2), "clicked",
+                      G_CALLBACK (cb_dialer_button_clicked), p_dialer_data);
+    gtk_widget_set_name (button2, "mokofingerbutton-black");
+    moko_pixmap_button_set_finger_toolbox_btn_center_image
+      (MOKO_PIXMAP_BUTTON (button2),
+       file_new_image_from_relative_path ("phone.png"));
+    moko_pixmap_button_set_action_btn_lower_label (MOKO_PIXMAP_BUTTON
+                                                   (button2), "Dial");
+    gtk_widget_set_size_request (button2, WINDOW_DIALER_BUTTON_SIZE_X + 20,
+                                 WINDOW_DIALER_BUTTON_SIZE_Y + 80);
+
+    gtk_box_pack_start (GTK_BOX (vbox2), button2, FALSE, FALSE, 20);
+
+
+    gtk_box_pack_start (GTK_BOX (hbox), vbox2, TRUE, TRUE, 5);
+
+
+
+    gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 5);
+
+
+
+
+    moko_finger_window_set_contents (MOKO_FINGER_WINDOW (window), vbox);
+
+    p_dialer_data->window_dialer = window;
+
+  }
+
+  return 1;
+}

Copied: trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-dialer.h (from rev 1842, trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-dialer.h)

Copied: trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-history.c (from rev 1842, trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-history.c)
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-history.c	2007-04-26 03:38:14 UTC (rev 1842)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-history.c	2007-04-26 12:16:43 UTC (rev 1843)
@@ -0,0 +1,1042 @@
+/*   openmoko-dialer-window-talking.c
+ *
+ *  Authored by Tony Guan<tonyguan at fic-sh.com.cn>
+ *
+ *  Copyright (C) 2006 FIC Shanghai Lab
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Public License as published by
+ *  the Free Software Foundation; version 2 of the license.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Lesser Public License for more details.
+ *
+ *  Current Version: $Rev$ ($Date) [$Author: Tony Guan $]
+ */
+
+#include <libmokoui/moko-finger-tool-box.h>
+#include <libmokoui/moko-finger-window.h>
+#include <libmokoui/moko-finger-wheel.h>
+#include <libmokoui/moko-pixmap-button.h>
+
+#include <gtk/gtkalignment.h>
+#include <gtk/gtkbutton.h>
+#include <gtk/gtkhbox.h>
+#include <gtk/gtklabel.h>
+#include <gtk/gtkmain.h>
+#include <gtk/gtkmenu.h>
+#include <gtk/gtkmenuitem.h>
+#include <gtk/gtkvbox.h>
+#include <gtk/gtktreeview.h>
+#include <gtk/gtktreemodelfilter.h>
+#include <gtk/gtkscrolledwindow.h>
+#include <gtk/gtkimagemenuitem.h>
+#include <gtk/gtkmenu.h>
+
+#include "common.h"
+#include "contacts.h"
+#include "dialer-main.h"
+#include "moko-dialer-status.h"
+#include "history.h"
+#include "dialer-window-history.h"
+
+
+/* function declarations */
+
+gint history_update_counter (MokoDialerData * p_dialer_data);
+
+
+/**
+ * @brief re-filter the treeview widget by the history type
+ *
+ * 
+ *
+ * @param type HISTORY_TYPE, indicating only the history items of that type will be displayed
+ * @return 1
+ * @retval
+ */
+
+int
+history_view_change_filter (MokoDialerData * p_dialer_data,
+                            HISTORY_TYPE type)
+{
+  GtkTreePath *path;
+  DBG_TRACE ();
+  p_dialer_data->g_history_filter_type = type;
+  gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER
+                                  (p_dialer_data->g_list_store_filter));
+
+  path = gtk_tree_path_new_first ();
+  gtk_tree_view_set_cursor (GTK_TREE_VIEW (p_dialer_data->treeview_history),
+                            path, 0, 0);
+  gtk_tree_path_free (path);
+
+
+  return 1;
+}
+
+void
+on_all_calls_activate (GtkMenuItem * menuitem, gpointer user_data)
+{
+  MokoDialerData *p_dialer_data = (MokoDialerData *) user_data;
+  GtkWidget *label = p_dialer_data->label_filter_history;
+  gtk_label_set_text (GTK_LABEL (label), "All");
+  history_view_change_filter (p_dialer_data, ALL);
+  history_update_counter (p_dialer_data);
+}
+
+
+void
+on_missed_calls_activate (GtkMenuItem * menuitem, gpointer user_data)
+{
+  MokoDialerData *p_dialer_data = (MokoDialerData *) user_data;
+  GtkWidget *label = p_dialer_data->label_filter_history;
+  gtk_label_set_text (GTK_LABEL (label), "Missed");
+  history_view_change_filter (p_dialer_data, MISSED);
+  history_update_counter (p_dialer_data);
+}
+
+
+void
+on_dialed_calls_activate (GtkMenuItem * menuitem, gpointer user_data)
+{
+  MokoDialerData *p_dialer_data = (MokoDialerData *) user_data;
+  GtkWidget *label = p_dialer_data->label_filter_history;
+  gtk_label_set_text (GTK_LABEL (label), "Dialed");
+  history_view_change_filter (p_dialer_data, OUTGOING);
+  history_update_counter (p_dialer_data);
+}
+
+
+void
+on_received_calls_activate (GtkMenuItem * menuitem, gpointer user_data)
+{
+  MokoDialerData *p_dialer_data = (MokoDialerData *) user_data;
+  GtkWidget *label = p_dialer_data->label_filter_history;
+  gtk_label_set_text (GTK_LABEL (label), "Received");
+  history_view_change_filter (p_dialer_data, INCOMING);
+  history_update_counter (p_dialer_data);
+}
+
+gboolean
+on_eventboxTop_button_release_event (GtkWidget * widget,
+                                     GdkEventButton * event,
+                                     MokoDialerData * appdata)
+{
+
+  gtk_menu_popup (GTK_MENU (appdata->menu_history), 0, 0, 0, 0, 0, 0);
+
+  return FALSE;
+}
+
+void
+cb_openmoko_history_wheel_press_left_up (GtkWidget * widget,
+                                         MokoDialerData * appdata)
+{
+  DBG_ENTER ();
+  GtkTreeSelection *selection;
+  GtkTreeModel *model;
+  GtkTreeIter iter;
+  GtkTreePath *path;
+  GtkTreeView *treeview;
+  //DBG_ENTER();
+
+  treeview = GTK_TREE_VIEW (appdata->treeview_history);
+  if (treeview == 0)
+    return;
+
+  selection = gtk_tree_view_get_selection (treeview);
+
+  if (!gtk_tree_selection_get_selected (selection, &model, &iter))
+  {
+    DBG_WARN ("no current selection\n");
+    return;
+  }
+  path = gtk_tree_model_get_path (model, &iter);
+  if (!gtk_tree_path_prev (path))
+  {
+    DBG_WARN ("no prev for the top level\n");
+    gtk_tree_path_free (path);
+    return;
+  }
+  gtk_tree_view_set_cursor (treeview, path, 0, 0);
+  return;
+
+
+}
+
+void
+cb_openmoko_history_wheel_press_right_down (GtkWidget * widget,
+                                            MokoDialerData * appdata)
+{
+  DBG_ENTER ();
+  GtkTreeSelection *selection;
+  GtkTreeModel *model;
+  GtkTreeIter iter;
+  GtkTreePath *path;
+  GtkTreeView *treeview;
+  //DBG_ENTER();
+  treeview = GTK_TREE_VIEW (appdata->treeview_history);
+  if (treeview == 0)
+    return;
+
+  selection = gtk_tree_view_get_selection (treeview);
+
+  if (!gtk_tree_selection_get_selected (selection, &model, &iter))
+  {
+    DBG_WARN ("no current selection\n");
+    return;
+  }
+  if (gtk_tree_model_iter_next (model, &iter))
+  {
+    path = gtk_tree_model_get_path (model, &iter);
+    gtk_tree_view_set_cursor (treeview, path, 0, 0);
+    gtk_tree_path_free (path);
+    return;
+  }
+
+  return;
+}
+
+
+void
+cb_tool_button_history_delete_clicked (GtkButton * button,
+                                       MokoDialerData * appdata)
+{
+  GtkTreeIter iter;             //iter of the filter store
+  GtkTreeIter iter0;            //iter of the back store
+  GtkTreeModel *model;
+  GtkTreeModel *model0;
+  GtkTreeSelection *selection;
+  GtkTreeView *treeview;
+  GtkTreePath *path;
+  treeview = GTK_TREE_VIEW (appdata->treeview_history);
+  selection = gtk_tree_view_get_selection (treeview);
+
+
+  if (!gtk_tree_selection_get_selected (selection, &model, &iter))
+  {
+    return;
+  }
+
+  if (appdata->g_currentselected)
+  {
+    DBG_MESSAGE ("to delete %s", appdata->g_currentselected->number);
+    history_delete_entry (&(appdata->g_historylist),
+                          appdata->g_currentselected);
+  }
+
+  path = gtk_tree_model_get_path (model, &iter);
+
+
+  model0 = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (model));
+
+
+  gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER
+                                                    (model), &iter0, &iter);
+
+  gtk_list_store_remove (GTK_LIST_STORE (model0), &iter0);
+
+
+  gtk_tree_view_set_cursor (treeview, path, 0, 0);
+
+
+  if (!gtk_tree_selection_get_selected (selection, &model, &iter))
+  {
+    if (!gtk_tree_path_prev (path))
+    {
+      gtk_tree_view_set_cursor (treeview, path, 0, 0);
+      DBG_WARN ("history is empty now!");
+      history_update_counter (appdata);
+    }
+    else
+    {
+      gtk_tree_view_set_cursor (treeview, path, 0, 0);
+    }
+    //we deleted the last one.
+
+  }
+
+  gtk_tree_path_free (path);
+
+  return;
+
+  DBG_ENTER ();
+}
+
+void
+cb_tool_button_history_call_clicked (GtkButton * button,
+                                     MokoDialerData * appdata)
+{
+  DBG_ENTER ();
+
+
+
+}
+
+void
+cb_tool_button_history_sms_clicked (GtkButton * button,
+                                    MokoDialerData * appdata)
+{
+  DBG_ENTER ();
+
+
+
+}
+
+void
+cb_tool_button_history_back_clicked (GtkButton * button,
+                                     MokoDialerData * appdata)
+{
+  gtk_widget_hide (appdata->window_history);
+
+}
+
+
+void
+on_window_history_hide (GtkWidget * widget, MokoDialerData * appdata)
+{
+
+  gtk_widget_hide (appdata->wheel_history);
+  gtk_widget_hide (appdata->toolbox_history);
+
+}
+
+void
+on_window_history_show (GtkWidget * widget, MokoDialerData * appdata)
+{
+  DBG_ENTER ();
+
+
+
+  if (appdata->toolbox_history)
+    gtk_widget_show (appdata->toolbox_history);
+
+  if (appdata->wheel_history)
+    gtk_widget_show (appdata->wheel_history);
+
+//FIXME: some day later, the contact changed infor will be sent to the dialer.
+  if (appdata->history_need_to_update)
+  {
+    DBG_MESSAGE ("NEED TO UPDATE HISTORY");
+  }
+  history_update_counter (appdata);
+
+  DBG_LEAVE ();
+}
+
+
+
+
+gint
+window_history_init (MokoDialerData * p_dialer_data)
+{
+
+  DBG_ENTER ();
+
+
+  if (p_dialer_data->window_history == 0)
+  {
+
+    history_create_menu_history (p_dialer_data);
+
+    MokoFingerWindow *window = NULL;
+    MokoFingerToolBox *tools = NULL;
+    GtkWidget *button;
+    GtkWidget *image;
+
+//now the container--window
+    window = MOKO_FINGER_WINDOW (moko_finger_window_new ());
+    p_dialer_data->window_history = GTK_WIDGET (window);
+
+
+    moko_finger_window_set_contents (window,
+                                     create_window_history_content
+                                     (p_dialer_data));
+
+    g_signal_connect ((gpointer) window, "show",
+                      G_CALLBACK (on_window_history_show), p_dialer_data);
+    g_signal_connect ((gpointer) window, "hide",
+                      G_CALLBACK (on_window_history_hide), p_dialer_data);
+
+    //FIXME: without gtk_widget_show_all first and then hide, the history view will not show properly. -tony
+    //gtk_widget_show_all(GTK_WIDGET(window));
+
+    //now the wheel and tool box, why should the wheel and toolbox created after the gtk_widget_show_all???
+    // This causes a segfault for me... maybe a problem in libmokoui? - thomas
+    //gtk_widget_show (GTK_WIDGET (moko_finger_window_get_wheel (window)));
+
+    g_signal_connect (G_OBJECT (moko_finger_window_get_wheel (window)),
+                      "press_left_up",
+                      G_CALLBACK (cb_openmoko_history_wheel_press_left_up),
+                      p_dialer_data);
+    g_signal_connect (G_OBJECT (moko_finger_window_get_wheel (window)),
+                      "press_right_down",
+                      G_CALLBACK
+                      (cb_openmoko_history_wheel_press_right_down),
+                      p_dialer_data);
+
+    g_signal_connect (G_OBJECT (moko_finger_window_get_wheel (window)),
+                      "press_bottom",
+                      G_CALLBACK (cb_tool_button_history_back_clicked),
+                      p_dialer_data);
+
+
+    tools = moko_finger_window_get_toolbox (window);
+
+    /* TODO: remove the GTK_WIDGET() casts when libmokoui is fixed */
+    button = moko_finger_tool_box_add_button_without_label (tools);
+    image = file_new_image_from_relative_path ("phone.png");
+    moko_pixmap_button_set_finger_toolbox_btn_center_image
+      (MOKO_PIXMAP_BUTTON (button), image);
+    g_signal_connect (G_OBJECT (button), "clicked",
+                      G_CALLBACK (cb_tool_button_history_call_clicked),
+                      p_dialer_data);
+
+    button =
+      GTK_WIDGET (moko_finger_tool_box_add_button_without_label (tools));
+    image = file_new_image_from_relative_path ("sms.png");
+    moko_pixmap_button_set_finger_toolbox_btn_center_image
+      (MOKO_PIXMAP_BUTTON (button), image);
+    g_signal_connect (G_OBJECT (button), "clicked",
+                      G_CALLBACK (cb_tool_button_history_sms_clicked),
+                      p_dialer_data);
+
+
+    button =
+      GTK_WIDGET (moko_finger_tool_box_add_button_without_label (tools));
+    image = file_new_image_from_relative_path ("delete_01.png");
+    moko_pixmap_button_set_finger_toolbox_btn_center_image
+      (MOKO_PIXMAP_BUTTON (button), image);
+    g_signal_connect (G_OBJECT (button), "clicked",
+                      G_CALLBACK (cb_tool_button_history_delete_clicked),
+                      p_dialer_data);
+    button =
+      GTK_WIDGET (moko_finger_tool_box_add_button_without_label (tools));
+    image = file_new_image_from_relative_path ("exit.png");
+    moko_pixmap_button_set_finger_toolbox_btn_center_image
+      (MOKO_PIXMAP_BUTTON (button), image);
+    g_signal_connect (G_OBJECT (button), "clicked",
+                      G_CALLBACK (cb_tool_button_history_back_clicked),
+                      p_dialer_data);
+
+    p_dialer_data->wheel_history =
+      GTK_WIDGET (moko_finger_window_get_wheel (window));
+    p_dialer_data->toolbox_history = GTK_WIDGET (tools);
+    DBG_LEAVE ();
+  }
+  else
+  {
+    //here we have to refresh it.
+    DBG_TRACE ();
+  }
+  return 1;
+}
+
+void
+on_treeviewHistory_cursor_changed (GtkTreeView * treeview, gpointer user_data)
+{
+  GtkTreeIter iter;
+  GtkTreeModel *model;
+  GtkTreeSelection *selection;
+  HISTORY_ENTRY *p;
+  int hasname;
+  MokoDialerData *p_dialer_data = (MokoDialerData *) user_data;
+
+  selection =
+    gtk_tree_view_get_selection (GTK_TREE_VIEW
+                                 (p_dialer_data->treeview_history));
+
+  if (!gtk_tree_selection_get_selected (selection, &model, &iter))
+  {
+    p_dialer_data->g_currentselected = 0;
+    return;
+  }
+
+  gtk_tree_model_get (model, &iter, COLUMN_ENTRYPOINTER, &p, -1);
+
+  p_dialer_data->g_currentselected = p;
+
+  gtk_tree_model_get (model, &iter, COLUMN_HASNAME, &hasname, -1);
+  history_update_counter (p_dialer_data);
+
+}
+
+
+
+GtkWidget *
+create_window_history_content (MokoDialerData * p_dialer_data)
+{
+
+  GtkWidget *treeviewHistory;
+  GtkWidget *vbox = gtk_vbox_new (FALSE, 0);
+  gtk_widget_show (vbox);
+  //FIRST of all, the top title area;
+  GtkWidget *eventboxTop = gtk_event_box_new ();
+  gtk_widget_show (eventboxTop);
+  gtk_box_pack_start (GTK_BOX (vbox), eventboxTop, FALSE, FALSE, 5);
+  gtk_widget_set_size_request (eventboxTop, 480, 64);
+  gtk_widget_set_name (eventboxTop, "gtkeventbox-black");
+
+  GtkWidget *hbox67 = gtk_hbox_new (FALSE, 0);
+  gtk_widget_show (hbox67);
+  gtk_container_add (GTK_CONTAINER (eventboxTop), hbox67);
+
+  GtkWidget *eventboxLeftTop = gtk_event_box_new ();
+  gtk_widget_show (eventboxLeftTop);
+  gtk_box_pack_start (GTK_BOX (hbox67), eventboxLeftTop, FALSE, TRUE, 0);
+  gtk_widget_set_name (eventboxLeftTop, "gtkeventbox-black");
+
+
+
+  GtkWidget *imageLeftMenu = file_new_image_from_relative_path ("all.png");
+  gtk_widget_show (imageLeftMenu);
+  gtk_container_add (GTK_CONTAINER (eventboxLeftTop), imageLeftMenu);
+
+  GtkWidget *labelHistoryTitle = gtk_label_new (("History-"));
+  gtk_widget_show (labelHistoryTitle);
+  gtk_box_pack_start (GTK_BOX (hbox67), labelHistoryTitle, FALSE, FALSE, 0);
+  gtk_widget_set_size_request (labelHistoryTitle, 221, -1);
+  gtk_label_set_justify (GTK_LABEL (labelHistoryTitle), GTK_JUSTIFY_RIGHT);
+  gtk_misc_set_alignment (GTK_MISC (labelHistoryTitle), 1, 0.5);
+
+  GtkWidget *labelFilter = gtk_label_new (("All"));
+  gtk_widget_show (labelFilter);
+  gtk_box_pack_start (GTK_BOX (hbox67), labelFilter, TRUE, TRUE, 0);
+  gtk_misc_set_alignment (GTK_MISC (labelFilter), 0, 0.5);
+  p_dialer_data->label_filter_history = labelFilter;
+
+  GtkWidget *labelCounter = gtk_label_new (("0/0"));
+  gtk_widget_show (labelCounter);
+  gtk_box_pack_start (GTK_BOX (hbox67), labelCounter, TRUE, TRUE, 0);
+  gtk_label_set_justify (GTK_LABEL (labelCounter), GTK_JUSTIFY_RIGHT);
+  gtk_misc_set_alignment (GTK_MISC (labelCounter), 0.8, 0.5);
+  p_dialer_data->label_counter_history = labelCounter;
+
+  g_signal_connect ((gpointer) eventboxTop, "button_release_event",
+                    G_CALLBACK (on_eventboxTop_button_release_event),
+                    p_dialer_data);
+
+  GtkWidget *align = gtk_alignment_new (0, 0, 1, 1);
+  gtk_alignment_set_padding (GTK_ALIGNMENT (align), 0, 150, 0, 0);      //FIXME too many numbers has to be retrieved from style
+
+  GtkWidget *scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
+  gtk_widget_show (scrolledwindow);
+  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow),
+                                  GTK_POLICY_NEVER, GTK_POLICY_NEVER);
+
+  treeviewHistory = gtk_tree_view_new ();
+  gtk_widget_show (treeviewHistory);
+  gtk_container_add (GTK_CONTAINER (align), scrolledwindow);
+  gtk_container_add (GTK_CONTAINER (scrolledwindow), treeviewHistory);
+
+
+  gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeviewHistory), FALSE);
+  gtk_tree_view_set_enable_search (GTK_TREE_VIEW (treeviewHistory), FALSE);
+//   gtk_misc_set_alignment (GTK_MISC (treeviewHistory), 0.5, 0.5);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
+
+
+  gtk_widget_set_name (treeviewHistory, "gtktreeview-black");
+  p_dialer_data->treeview_history = treeviewHistory;
+  history_build_history_list_view (p_dialer_data);
+  gtk_widget_set_size_request (scrolledwindow, -1, 400);
+//  gtk_misc_set_alignment (GTK_MISC (treeviewHistory),1,0.1);
+
+
+  g_signal_connect ((gpointer) treeviewHistory, "cursor_changed",
+                    G_CALLBACK (on_treeviewHistory_cursor_changed),
+                    p_dialer_data);
+
+  gtk_widget_show (vbox);
+  return vbox;
+}
+
+
+/**
+ * @brief re-filter the treeview widget by current history type,a callback when the history treeview refreshes
+ *
+ * this callback will be called for every treemodel iters,whenever the treeview filter is refreshing
+ *
+ * @param model GtkTreeModel *, the background database of the treeview
+ * @param iter GtkTreeIter *, the iterator of every item of the model.
+ * @param  data gpointer , of no use currently
+ * @return boolean
+ * @retval TRUE means the iter will be displayed
+ * @retval  FALSE means the iter will not be displayed
+ */
+static gboolean
+history_view_filter_visible_function (GtkTreeModel * model,
+                                      GtkTreeIter * iter, gpointer data)
+{
+  MokoDialerData *p_dialer_data = (MokoDialerData *) data;
+  HISTORY_TYPE type;
+  if (p_dialer_data->g_history_filter_type == ALL)
+    return TRUE;
+  gtk_tree_model_get (model, iter, COLUMN_TYPE, &type, -1);
+  if (type == p_dialer_data->g_history_filter_type)
+    return TRUE;
+  else
+    return FALSE;
+}
+
+
+
+/**
+ * @brief find the treeview in the window, fill-in the data and show it on the screen.
+ *
+ *
+ *
+ * @param window GtkWidget* the window which contains the history treeview. but it's not necessarilly
+ *to be a window, any widget that can help to lookup the treeview will be OK.
+ * @return 
+ * @retval 0 error occured
+ * @retval 1 everything is OK
+ */
+
+gint
+history_build_history_list_view (MokoDialerData * p_dialer_data)
+{
+  GtkListStore *list_store;
+
+  GtkTreeIter iter;
+  HISTORY_ENTRY *entry;
+
+  //copied
+  GtkTreeViewColumn *col;
+  GtkCellRenderer *renderer;
+
+  //GtkTreeModel        *model;
+  GtkWidget *contactview = NULL;
+
+  //DBG_ENTER();
+
+  //DBG_TRACE();
+  p_dialer_data->g_history_filter_type = ALL;
+  contactview = p_dialer_data->treeview_history;
+
+  if (contactview == NULL)
+    return 0;
+//pack image and label
+  col = gtk_tree_view_column_new ();
+
+  gtk_tree_view_column_set_title (col, ("Title"));
+  gtk_tree_view_column_set_resizable (col, TRUE);
+
+
+
+  renderer = gtk_cell_renderer_pixbuf_new ();
+  gtk_tree_view_column_pack_start (col, renderer, FALSE);
+  gtk_tree_view_column_set_attributes (col, renderer,
+                                       "pixbuf", COLUMN_TYPEICON, NULL);
+
+  renderer = gtk_cell_renderer_text_new ();
+  gtk_tree_view_column_pack_start (col, renderer, FALSE);
+  gtk_tree_view_column_set_attributes (col, renderer,
+                                       "text", COLUMN_TIME, NULL);
+
+  renderer = gtk_cell_renderer_text_new ();
+  gtk_tree_view_column_pack_start (col, renderer, FALSE);
+  gtk_tree_view_column_set_attributes (col, renderer,
+                                       "text", COLUMN_SEPRATE, NULL);
+
+  renderer = gtk_cell_renderer_text_new ();
+  gtk_tree_view_column_pack_start (col, renderer, TRUE);
+  gtk_tree_view_column_set_attributes (col, renderer,
+                                       "text", COLUMN_NAME_NUMBER, NULL);
+
+
+  gtk_tree_view_append_column (GTK_TREE_VIEW (contactview), col);
+
+
+  entry = p_dialer_data->g_historylist.first;
+
+  list_store = gtk_list_store_new (N_COLUMN, G_TYPE_INT, GDK_TYPE_PIXBUF,
+                                   G_TYPE_STRING, G_TYPE_STRING,
+                                   G_TYPE_STRING, G_TYPE_INT, G_TYPE_POINTER,
+                                   G_TYPE_INT, -1);
+  //we will use a filter to facilitate the filtering in treeview without rebuilding the database.                         
+  p_dialer_data->g_list_store_filter =
+    gtk_tree_model_filter_new (GTK_TREE_MODEL (list_store), NULL);
+  gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER
+                                          (p_dialer_data->
+                                           g_list_store_filter),
+                                          history_view_filter_visible_function,
+                                          p_dialer_data, NULL);
+
+  //load the three icons to memory.
+
+  // GError *error = NULL;
+  p_dialer_data->g_iconReceived = create_pixbuf ("received.png");
+
+  /* FIXME: error handling hasn't been implemented yet!
+     p_dialer_data->g_iconReceived = create_pixbuf ("received.png", &error);
+     if (error)
+     {
+     DBG_WARN ("Cound not load icon :%s", error->message);
+     g_error_free (error);
+     p_dialer_data->g_iconReceived = NULL;
+     error = NULL;
+     }
+   */
+
+  p_dialer_data->g_iconDialed = create_pixbuf ("dialed.png");
+  /* FIXME: error handling hasn't been implemented yet!
+     p_dialer_data->g_iconDialed = create_pixbuf ("dialed.png", &error);
+     if (error)
+     {
+     DBG_WARN ("Cound not load icon :%s", error->message);
+     g_error_free (error);
+     p_dialer_data->g_iconDialed = NULL;
+     error = NULL;
+     }
+   */
+
+  p_dialer_data->g_iconMissed = create_pixbuf ("missed.png");
+  /* FIXME: error handling hasn't been implemented yet!
+     p_dialer_data->g_iconMissed = create_pixbuf ("missed.png", &error);
+     if (error)
+     {
+     DBG_WARN ("Cound not load icon :%s", error->message);
+     g_error_free (error);
+     p_dialer_data->g_iconMissed = NULL;
+     error = NULL;
+     }
+   */
+
+  while (entry)
+  {
+    //DBG_MESSAGE(entry->number);
+    gtk_list_store_append (list_store, &iter);
+    gtk_list_store_set (list_store, &iter, COLUMN_TYPE, entry->type,
+                        COLUMN_SEPRATE, "--", COLUMN_TIME, entry->time,
+                        COLUMN_DURATION, entry->durationsec,
+                        COLUMN_ENTRYPOINTER, entry, COLUMN_HASNAME, 0, -1);
+    if (entry->name == 0)
+    {
+      //DBG_MESSAGE(entry->number);
+      gtk_list_store_set (list_store, &iter, COLUMN_NAME_NUMBER,
+                          entry->number, -1);
+      gtk_list_store_set (list_store, &iter, COLUMN_HASNAME, 0, -1);
+    }
+    else
+    {
+      gtk_list_store_set (list_store, &iter, COLUMN_NAME_NUMBER,
+                          entry->name, -1);
+      gtk_list_store_set (list_store, &iter, COLUMN_HASNAME, 1, -1);
+    }
+    switch (entry->type)
+    {
+    case INCOMING:
+      {
+        gtk_list_store_set (list_store, &iter, COLUMN_TYPEICON,
+                            p_dialer_data->g_iconReceived, -1);
+        //      icon=gdk_pixbuf_new_from_file("./received.png",&error);
+        break;
+      }
+    case OUTGOING:
+      {                         //     icon=gdk_pixbuf_new_from_file("./dialed.png",&error);
+        gtk_list_store_set (list_store, &iter, COLUMN_TYPEICON,
+                            p_dialer_data->g_iconDialed, -1);
+        break;
+      }
+    case MISSED:
+      {                         //icon=gdk_pixbuf_new_from_file("./missed.png",&error);
+        gtk_list_store_set (list_store, &iter, COLUMN_TYPEICON,
+                            p_dialer_data->g_iconMissed, -1);
+        break;
+      }
+
+    default:
+
+      {                         //icon=gdk_pixbuf_new_from_file("./missed.png",&error);
+        gtk_list_store_set (list_store, &iter, COLUMN_TYPEICON,
+                            p_dialer_data->g_iconMissed, -1);
+        break;
+      }
+    }
+
+
+
+    entry = entry->next;
+  }
+
+  gtk_tree_view_set_model (GTK_TREE_VIEW (contactview),
+                           GTK_TREE_MODEL (p_dialer_data->
+                                           g_list_store_filter));
+
+  g_object_unref (list_store);
+
+  return 1;
+}
+
+
+/**
+ * @brief update the counter display widget - labelCounter
+ *
+ * @param widget GtkWidget*, any widget in the same window with treeviewHistory and labelCounter
+ *
+ * @return 1
+ */
+gint
+history_update_counter (MokoDialerData * p_dialer_data)
+{
+  DBG_ENTER ();
+  GtkTreeIter iter;
+  GtkTreeModel *model;
+  GtkTreeSelection *selection;
+  GtkTreePath *path;
+  GtkTreeView *treeview;
+  int count = 0;
+  int nth = 0;
+  char *pathstring;
+  char display[10];
+
+  treeview = GTK_TREE_VIEW (p_dialer_data->treeview_history);
+  if (!p_dialer_data->treeview_history)
+  {
+    DBG_WARN ("COUNTER NOT READY ");
+    return 0;
+  }
+
+
+  model = gtk_tree_view_get_model (treeview);
+
+  count = gtk_tree_model_iter_n_children (model, NULL);
+
+  selection = gtk_tree_view_get_selection (treeview);
+
+  if (!gtk_tree_selection_get_selected (selection, &model, &iter))
+  {
+    nth = 0;
+  }
+  else
+  {
+    path = gtk_tree_model_get_path (model, &iter);
+    pathstring = gtk_tree_path_to_string (path);
+    nth = atoi (pathstring) + 1;
+    gtk_tree_path_free (path);
+
+  }
+
+  GtkWidget *labelcounter;
+  labelcounter = p_dialer_data->label_counter_history;
+  sprintf (display, "%d/%d", nth, count);
+  gtk_label_set_text (GTK_LABEL (labelcounter), display);
+  return 1;
+
+}
+
+GtkWidget *
+history_create_menu_history (MokoDialerData * p_dialer_data)
+{
+  if (!p_dialer_data->menu_history)
+  {
+    GtkWidget *menu_history;
+    GtkWidget *all_calls;
+    GtkWidget *imageAll;
+    GtkWidget *separator1;
+    GtkWidget *missed_calls;
+    GtkWidget *imageMissed;
+    GtkWidget *separator3;
+    GtkWidget *dialed_calls;
+    GtkWidget *imageDialed;
+    GtkWidget *separator2;
+    GtkWidget *received_calls;
+    GtkWidget *imageReceived;
+
+    menu_history = gtk_menu_new ();
+    gtk_container_set_border_width (GTK_CONTAINER (menu_history), 2);
+
+    all_calls = gtk_image_menu_item_new_with_mnemonic (("Calls All"));
+    gtk_widget_show (all_calls);
+    gtk_container_add (GTK_CONTAINER (menu_history), all_calls);
+    gtk_widget_set_size_request (all_calls, 250, 60);
+
+
+    imageAll = file_new_image_from_relative_path ("all.png");
+    gtk_widget_show (imageAll);
+    gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (all_calls), imageAll);
+
+    separator1 = gtk_separator_menu_item_new ();
+    gtk_widget_show (separator1);
+    gtk_container_add (GTK_CONTAINER (menu_history), separator1);
+    gtk_widget_set_size_request (separator1, 120, -1);
+    gtk_widget_set_sensitive (separator1, FALSE);
+
+    missed_calls = gtk_image_menu_item_new_with_mnemonic (("Calls Missed "));
+    gtk_widget_show (missed_calls);
+    gtk_container_add (GTK_CONTAINER (menu_history), missed_calls);
+    gtk_widget_set_size_request (missed_calls, 120, 60);
+
+    //imageMissed = gtk_image_new_from_stock ("gtk-goto-bottom", GTK_ICON_SIZE_MENU);
+    imageMissed = file_new_image_from_relative_path ("missed.png");
+
+    gtk_widget_show (imageMissed);
+    gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (missed_calls),
+                                   imageMissed);
+
+    separator3 = gtk_separator_menu_item_new ();
+    gtk_widget_show (separator3);
+    gtk_container_add (GTK_CONTAINER (menu_history), separator3);
+    gtk_widget_set_size_request (separator3, 120, -1);
+    gtk_widget_set_sensitive (separator3, FALSE);
+
+    dialed_calls = gtk_image_menu_item_new_with_mnemonic (("Calls Dialed"));
+    gtk_widget_show (dialed_calls);
+    gtk_container_add (GTK_CONTAINER (menu_history), dialed_calls);
+    gtk_widget_set_size_request (dialed_calls, 120, 60);
+
+    // imageDialed = gtk_image_new_from_stock ("gtk-go-up", GTK_ICON_SIZE_MENU);
+    imageDialed = file_new_image_from_relative_path ("dialed.png");
+    gtk_widget_show (imageDialed);
+    gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (dialed_calls),
+                                   imageDialed);
+
+    separator2 = gtk_separator_menu_item_new ();
+    gtk_widget_show (separator2);
+    gtk_container_add (GTK_CONTAINER (menu_history), separator2);
+    gtk_widget_set_size_request (separator2, 120, -1);
+    gtk_widget_set_sensitive (separator2, FALSE);
+
+    received_calls =
+      gtk_image_menu_item_new_with_mnemonic (("Calls Received "));
+    gtk_widget_show (received_calls);
+    gtk_container_add (GTK_CONTAINER (menu_history), received_calls);
+    gtk_widget_set_size_request (received_calls, 120, 60);
+
+//  imageReceived = gtk_image_new_from_stock ("gtk-go-down", GTK_ICON_SIZE_MENU);
+    imageReceived = file_new_image_from_relative_path ("received.png");
+    gtk_widget_show (imageReceived);
+    gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (received_calls),
+                                   imageReceived);
+
+    g_signal_connect ((gpointer) all_calls, "activate",
+                      G_CALLBACK (on_all_calls_activate), p_dialer_data);
+    g_signal_connect ((gpointer) missed_calls, "activate",
+                      G_CALLBACK (on_missed_calls_activate), p_dialer_data);
+    g_signal_connect ((gpointer) dialed_calls, "activate",
+                      G_CALLBACK (on_dialed_calls_activate), p_dialer_data);
+    g_signal_connect ((gpointer) received_calls, "activate",
+                      G_CALLBACK (on_received_calls_activate), p_dialer_data);
+
+    p_dialer_data->menu_history = menu_history;
+    return menu_history;
+  }
+  else
+    return p_dialer_data->menu_history;
+}
+
+
+
+/**
+ * @brief add an entry to the history treeview
+ *
+ *
+ *
+ * @param entry HISTORY_ENTRY *, the history entry to be added to the treeview.
+ * @return 
+ * @retval 0 error occured
+ * @retval 1 everything is OK
+ */
+gint
+history_list_view_add (MokoDialerData * appdata, HISTORY_ENTRY * entry)
+{
+  DBG_ENTER ();
+  if (entry == 0)
+  {
+    DBG_ERROR ("THE ENTRY IS ZERO");
+    return 0;
+  }
+
+  if (appdata->treeview_history == 0)
+  {
+    DBG_WARN ("treeview_history not ready");
+    return 0;
+
+  }
+  //
+  GtkTreeIter iter;             //iter of the filter store
+  GtkTreeModel *model;
+  GtkListStore *list_store;
+  GtkTreeView *treeview;
+
+  treeview = GTK_TREE_VIEW (appdata->treeview_history);
+
+  model =
+    gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER
+                                     (appdata->g_list_store_filter));
+
+  list_store = GTK_LIST_STORE (model);
+  //
+
+
+  //DBG_MESSAGE(entry->number);
+  gtk_list_store_insert (list_store, &iter, 0);
+  gtk_list_store_set (list_store, &iter, COLUMN_TYPE, entry->type,
+                      COLUMN_SEPRATE, "--", COLUMN_TIME, entry->time,
+                      COLUMN_DURATION, entry->durationsec,
+                      COLUMN_ENTRYPOINTER, entry, COLUMN_HASNAME, 0, -1);
+  if (entry->name == 0)
+  {
+    //DBG_MESSAGE(entry->number);
+    gtk_list_store_set (list_store, &iter, COLUMN_NAME_NUMBER,
+                        entry->number, -1);
+    gtk_list_store_set (list_store, &iter, COLUMN_HASNAME, 0, -1);
+  }
+  else
+  {
+    gtk_list_store_set (list_store, &iter, COLUMN_NAME_NUMBER, entry->name,
+                        -1);
+    gtk_list_store_set (list_store, &iter, COLUMN_HASNAME, 1, -1);
+  }
+  switch (entry->type)
+  {
+  case INCOMING:
+    {
+      gtk_list_store_set (list_store, &iter, COLUMN_TYPEICON,
+                          appdata->g_iconReceived, -1);
+      //      icon=gdk_pixbuf_new_from_file("./received.png",&error);
+      break;
+    }
+  case OUTGOING:
+    {                           //     icon=gdk_pixbuf_new_from_file("./dialed.png",&error);
+      gtk_list_store_set (list_store, &iter, COLUMN_TYPEICON,
+                          appdata->g_iconDialed, -1);
+      break;
+    }
+  case MISSED:
+    {                           //icon=gdk_pixbuf_new_from_file("./missed.png",&error);
+      gtk_list_store_set (list_store, &iter, COLUMN_TYPEICON,
+                          appdata->g_iconMissed, -1);
+      break;
+    }
+
+  default:
+
+    {                           //icon=gdk_pixbuf_new_from_file("./missed.png",&error);
+      gtk_list_store_set (list_store, &iter, COLUMN_TYPEICON,
+                          appdata->g_iconMissed, -1);
+      break;
+    }
+  }
+  history_update_counter (appdata);
+  return 1;
+}
+
+
+gint
+add_histroy_entry (MokoDialerData * appdata, HISTORY_TYPE type,
+                   const char *name, const char *number, const char *id,
+                   char *time, char *date, int durationsec)
+{
+
+//DBG_ENTER();
+  //DBG_MESSAGE("History add:%s,%s,%s,%s,%s,%d",name,number,picpath,time,date,durationsec);
+  HISTORY_ENTRY *pentry =
+    history_add_entry (&(appdata->g_historylist), type, name, number, id,
+                       time, date, durationsec);
+  return history_list_view_add (appdata, pentry);
+}

Copied: trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-history.h (from rev 1842, trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-history.h)

Copied: trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-incoming.c (from rev 1842, trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-incoming.c)
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-incoming.c	2007-04-26 03:38:14 UTC (rev 1842)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-incoming.c	2007-04-26 12:16:43 UTC (rev 1843)
@@ -0,0 +1,281 @@
+/*   openmoko-dialer-window-incoming.c
+ *
+ *  Authored by Tony Guan<tonyguan at fic-sh.com.cn>
+ *
+ *  Copyright (C) 2006 FIC Shanghai Lab
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Public License as published by
+ *  the Free Software Foundation; version 2 of the license.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Lesser Public License for more details.
+ *
+ *  Current Version: $Rev$ ($Date) [$Author: Tony Guan $]
+ */  
+  
+#include <libmokoui/moko-finger-tool-box.h>
+#include <libmokoui/moko-finger-window.h>
+#include <libmokoui/moko-finger-wheel.h>
+#include <libmokoui/moko-pixmap-button.h>
+  
+#include <gtk/gtkalignment.h>
+#include <gtk/gtkbutton.h>
+#include <gtk/gtkhbox.h>
+#include <gtk/gtklabel.h>
+#include <gtk/gtkmain.h>
+#include <gtk/gtkmenu.h>
+#include <gtk/gtkmenuitem.h>
+#include <gtk/gtkvbox.h>
+  
+#include "contacts.h"
+#include "dialer-main.h"
+#include "moko-dialer-status.h"
+#include "dialer-window-incoming.h"
+#include "dialer-window-talking.h"
+#include "dialer-window-history.h"
+#include "history.h"
+void 
+cb_answer_button_clicked (GtkButton * button,
+                          MokoDialerData * appdata) 
+{
+  DBG_ENTER ();
+  appdata->g_state.callstate = STATE_TALKING;
+  /* TODO: MokoGsmdConnection->answer
+   * gsm_answer ();
+   */
+
+  gtk_widget_hide (appdata->window_incoming);
+
+  //transfer the contact info
+   window_talking_prepare (appdata);
+  gtk_widget_show (appdata->window_talking);
+  DBG_LEAVE ();
+} 
+
+void
+cb_ignore_button_clicked (GtkButton * button,
+                          MokoDialerData * appdata) 
+{
+  DBG_ENTER ();
+  DBG_MESSAGE ("We will mute the phone for this call.");
+  appdata->g_state.callstate = STATE_IGNORED;
+  DBG_LEAVE ();
+} void 
+
+cb_reject_button_clicked (GtkButton * button,
+                          MokoDialerData * appdata) 
+{
+  DBG_ENTER ();
+  /* TODO: MokoGsmdConnection->hangup
+   * gsm_hangup ();
+   */
+  appdata->g_state.callstate = STATE_REJECTED;
+  gtk_widget_hide (appdata->window_incoming);
+  DBG_LEAVE ();
+}
+
+void
+window_incoming_prepare (MokoDialerData * appdata) 
+{
+  if (!appdata)
+    
+  {
+    DBG_WARN ("appdata=NULL!");
+    return;
+  }
+  if (appdata->window_incoming == 0)
+    
+  {
+    window_incoming_init (appdata);
+  }
+  moko_dialer_status_set_person_number (appdata->status_incoming,
+                                          appdata->g_peer_info.number);
+  if (appdata->g_peer_info.hasname)
+    
+  {
+    moko_dialer_status_set_person_image (appdata->status_incoming,
+                                           appdata->g_peer_info.ID);
+    moko_dialer_status_set_person_name (appdata->status_incoming,
+                                         appdata->g_peer_info.name);
+  }
+  
+  else
+    
+  {
+    moko_dialer_status_set_person_image (appdata->status_incoming, "");
+    moko_dialer_status_set_person_name (appdata->status_incoming, "");
+  }
+}
+void 
+window_incoming_fails (MokoDialerData * appdata) 
+{
+  DBG_ENTER ();
+  DBG_LEAVE ();
+} gint  timer_incoming_time_out (MokoDialerData * appdata) 
+{
+  
+//DBG_ENTER();
+    TIMER_DATA * timer_data = &(appdata->g_timer_data);
+  moko_dialer_status_update_icon (appdata->status_incoming);
+  
+//now that we have the incoming call status report correctly, the timeout mechanism is not needed.
+/*
+  if (event_get_keep_calling ())
+  {
+    event_reset_keep_calling ();
+    timer_data->ticks = 0;
+  }
+  else
+  {                             //we count 4 before we confirm that there are no calling at all.
+    if (timer_data->ticks >= 3)
+    {
+      DBG_MESSAGE ("THE CALLER aborted, we quit.");
+      gsm_hangup ();
+      appdata->g_state.callstate = STATE_MISSED;
+      appdata->g_state.historytype = MISSED;
+      gdk_threads_enter ();
+      gtk_widget_hide (appdata->window_incoming);
+      gdk_threads_leave ();
+      return 0;                 //don't lookout the timeout.
+    }
+    else
+    {
+      DBG_MESSAGE ("ticks=%d", timer_data->ticks);
+      timer_data->ticks++;
+    }
+  }
+*/ 
+    return 1;
+}
+void 
+on_window_incoming_hide (GtkWidget * widget, MokoDialerData * appdata) 
+{
+  DBG_ENTER ();
+  if (appdata->g_timer_data.ptimer != 0)
+    
+  {
+    g_source_remove (appdata->g_timer_data.ptimer);
+    appdata->g_timer_data.ptimer = 0;
+  }
+  /*
+  event_reset_clip_signaled ();
+  event_reset_incoming_signaled ();
+  event_reset_keep_calling ();
+  */
+  if (appdata->g_state.callstate != STATE_TALKING)
+    
+  {                             //     add_histroy_entry(g_state.historytype,g_state.contactinfo.name,g_state.contactinfo.number,g_state.contactinfo.picpath,g_state.starttime,0);
+    add_histroy_entry (appdata, appdata->g_state.historytype,
+                        appdata->g_peer_info.name,
+                        appdata->g_peer_info.number,
+                        appdata->g_peer_info.ID,
+                        appdata->g_state.starttime,
+                        appdata->g_state.startdate, 0);
+  }
+  DBG_LEAVE ();
+}
+void 
+window_incoming_setup_timer (MokoDialerData * appdata) 
+{
+  time_t timep;
+  struct tm *p;
+  time (&timep);
+  p = localtime (&timep);
+  sprintf (appdata->g_state.starttime, "%02d:%02d:%02d", p->tm_hour,
+             p->tm_min, p->tm_sec);
+  sprintf (appdata->g_state.startdate, "%04d/%02d/%02d", p->tm_year,
+            p->tm_mon, p->tm_mday);
+  if (appdata->g_timer_data.ptimer != 0)
+    
+  {
+    g_source_remove (appdata->g_timer_data.ptimer);
+    appdata->g_timer_data.ptimer = 0;
+  }
+  memset (&(appdata->g_timer_data), 0, sizeof (appdata->g_timer_data));
+  appdata->g_timer_data.stopsec = 0;
+  appdata->g_timer_data.ptimer =
+    g_timeout_add (1000, (GSourceFunc) timer_incoming_time_out,
+                    (gpointer) appdata);
+}
+void 
+on_window_incoming_show (GtkWidget * widget, MokoDialerData * appdata) 
+{
+  DBG_ENTER ();
+  appdata->g_state.callstate = STATE_INCOMING;
+  window_incoming_setup_timer (appdata);
+  DBG_LEAVE ();
+} gint  window_incoming_init (MokoDialerData * p_dialer_data) 
+{
+  DBG_ENTER ();
+  MokoFingerWindow * window;
+  GtkWidget * vbox;
+  GtkWidget * status;
+  if (p_dialer_data->window_incoming == 0)
+    
+  {
+    vbox = gtk_vbox_new (FALSE, 0);
+    status = moko_dialer_status_new ();
+    moko_dialer_status_add_status_icon (MOKO_DIALER_STATUS (status),
+                                         "incoming_0.png");
+    moko_dialer_status_add_status_icon (MOKO_DIALER_STATUS (status),
+                                         "incoming_1.png");
+    moko_dialer_status_add_status_icon (MOKO_DIALER_STATUS (status),
+                                         "incoming_2.png");
+    moko_dialer_status_add_status_icon (MOKO_DIALER_STATUS (status),
+                                         "incoming_3.png");
+    moko_dialer_status_set_icon_by_index (MOKO_DIALER_STATUS (status), 0);
+    gtk_box_pack_start (GTK_BOX (vbox), status, FALSE, FALSE, 0);
+    GtkWidget * hbox2 = gtk_hbox_new (FALSE, 0);
+    GtkWidget * button = gtk_button_new_with_label ("Answer");
+    gtk_button_set_image (GTK_BUTTON (button),
+                           file_new_image_from_relative_path ("answer.png"));
+    g_signal_connect (G_OBJECT (button), "clicked",
+                       G_CALLBACK (cb_answer_button_clicked), p_dialer_data);
+    gtk_box_pack_start (GTK_BOX (hbox2), GTK_WIDGET (button), TRUE, TRUE,
+                          10);
+    button = gtk_button_new_with_label ("Ignore");
+    g_signal_connect (G_OBJECT (button), "clicked",
+                       G_CALLBACK (cb_ignore_button_clicked), p_dialer_data);
+    gtk_box_pack_start (GTK_BOX (hbox2), GTK_WIDGET (button), TRUE, TRUE,
+                         10);
+    button = gtk_button_new_with_label ("Reject");
+    gtk_button_set_image (GTK_BUTTON (button),
+                           file_new_image_from_relative_path ("cancel.png"));
+    g_signal_connect (G_OBJECT (button), "clicked",
+                       G_CALLBACK (cb_reject_button_clicked), p_dialer_data);
+    gtk_box_pack_start (GTK_BOX (hbox2), GTK_WIDGET (button), TRUE, TRUE,
+                         10);
+    gtk_box_pack_start (GTK_BOX (vbox), hbox2, FALSE, FALSE, 50);
+    
+//currently     MokoDialogWindow is not finished, wating...
+//   MokoDialogWindow* window = (MokoDialogWindow *)(moko_dialog_window_new());
+//  moko_dialog_window_set_contents( window, GTK_WIDGET(vbox) );
+      window = MOKO_FINGER_WINDOW (moko_finger_window_new ());
+    moko_finger_window_set_contents (window, GTK_WIDGET (vbox));
+    
+      //FIXME: dear thomas, I know that show & hide is not good, but when you removed the following 2 lines, the incoming window
+      //is simply not displaying well. please have a try and then commit. If you cannot test the incoming window, you can simply modify the code to show it out debuggingly.
+      //Pardon me to re-add the 2 lines. Tony Guan 14,3,2007
+      gtk_widget_show_all (GTK_WIDGET (window));
+    gtk_widget_hide (GTK_WIDGET (window));
+    moko_dialer_status_set_title_label (MOKO_DIALER_STATUS (status),
+                                          "Incoming call");
+    moko_dialer_status_set_status_label (MOKO_DIALER_STATUS (status), "");
+    p_dialer_data->window_incoming = GTK_WIDGET (window);
+    p_dialer_data->status_incoming = MOKO_DIALER_STATUS (status);
+    
+//   DBG_MESSAGE("p_dialer_data->status_incoming=0X%x",p_dialer_data->status_incoming);
+      g_signal_connect ((gpointer) window, "show",
+                          G_CALLBACK (on_window_incoming_show),
+                          p_dialer_data);
+    g_signal_connect ((gpointer) window, "hide",
+                       G_CALLBACK (on_window_incoming_hide), p_dialer_data);
+  }
+  DBG_LEAVE ();
+  return 1;
+}
+
+

Copied: trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-incoming.h (from rev 1842, trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-incoming.h)

Copied: trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-outgoing.c (from rev 1842, trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-outgoing.c)
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-outgoing.c	2007-04-26 03:38:14 UTC (rev 1842)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-outgoing.c	2007-04-26 12:16:43 UTC (rev 1843)
@@ -0,0 +1,345 @@
+/*   openmoko-dialer-window-outgoing.c
+ *
+ *  Authored by Tony Guan<tonyguan at fic-sh.com.cn>
+ *
+ *  Copyright (C) 2006 FIC Shanghai Lab
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Public License as published by
+ *  the Free Software Foundation; version 2 of the license.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Lesser Public License for more details.
+ *
+ *  Current Version: $Rev$ ($Date) [$Author: Tony Guan $]
+ */
+
+#include <libmokoui/moko-finger-tool-box.h>
+#include <libmokoui/moko-finger-window.h>
+#include <libmokoui/moko-finger-wheel.h>
+#include <libmokoui/moko-pixmap-button.h>
+
+#include <gtk/gtkalignment.h>
+#include <gtk/gtkbutton.h>
+#include <gtk/gtkhbox.h>
+#include <gtk/gtklabel.h>
+#include <gtk/gtkmain.h>
+#include <gtk/gtkmenu.h>
+#include <gtk/gtkmenuitem.h>
+#include <gtk/gtkvbox.h>
+
+#include "contacts.h"
+#include "dialer-main.h"
+#include "moko-dialer-status.h"
+#include "dialer-window-outgoing.h"
+#include "dialer-window-history.h"
+#include "dialer-window-talking.h"
+
+/* function declerations */
+void window_outgoing_setup_timer (MokoDialerData * appdata);
+
+void
+cb_speaker_button_clicked (GtkButton * button, MokoDialerData * appdata)
+{
+  DBG_ENTER ();
+  //moko_dialer_status_update_icon(appdata->status_outgoing);
+
+
+  appdata->g_state.callstate = STATE_TALKING;
+
+  gtk_widget_hide (appdata->window_outgoing);
+
+
+  //transfer the contact info
+  window_talking_prepare (appdata);
+
+  //start dialling.
+
+  DBG_TRACE ();
+//  gtk_widget_show_all (appdata->window_talking);
+  gtk_widget_show (appdata->window_talking);
+
+
+  DBG_LEAVE ();
+}
+
+void
+cb_redial_button_clicked (GtkButton * button, MokoDialerData * appdata)
+{
+  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);
+
+  appdata->g_state.callstate = STATE_CALLING;
+  appdata->g_state.historytype = OUTGOING;
+  /* TOOD: MokoGsmdConnection->dial
+   * gsm_dial (appdata->g_peer_info.number);
+   */
+
+  DBG_LEAVE ();
+}
+
+void
+cb_cancel_button_clicked (GtkButton * button, MokoDialerData * appdata)
+{
+  DBG_ENTER ();
+  /* TODO: MokoGsmdConnection->hangup
+   * gsm_hangup ();
+   */
+  appdata->g_state.callstate = STATE_FAILED;
+  DBG_TRACE ();
+  gtk_widget_hide (appdata->window_outgoing);
+  DBG_LEAVE ();
+}
+
+void
+window_outgoing_prepare (MokoDialerData * appdata)
+{
+  DBG_ENTER ();
+  if (appdata->window_outgoing == 0)
+    window_outgoing_init (appdata);
+
+
+  moko_dialer_status_set_person_number (appdata->status_outgoing,
+                                        appdata->g_peer_info.number);
+  if (appdata->g_peer_info.hasname)
+  {
+    moko_dialer_status_set_person_image (appdata->status_outgoing,
+                                         appdata->g_peer_info.ID);
+    moko_dialer_status_set_person_name (appdata->status_outgoing,
+                                        appdata->g_peer_info.name);
+  }
+  else
+  {
+    moko_dialer_status_set_person_image (appdata->status_outgoing, "");
+    moko_dialer_status_set_person_name (appdata->status_outgoing, "");
+
+  }
+//  strcpy (appdata->g_state.lastnumber, appdata->g_peer_info.number);
+  g_stpcpy (appdata->g_state.lastnumber, appdata->g_peer_info.number);
+  DBG_LEAVE ();
+
+}
+
+void
+window_outgoing_fails (MokoDialerData * appdata)
+{
+  DBG_ENTER ();
+  moko_dialer_status_set_error (appdata->status_outgoing);
+  moko_dialer_status_set_title_label (appdata->status_outgoing,
+                                      "Call Failure");
+  gtk_widget_hide (appdata->buttonSpeaker);
+  gtk_widget_show (appdata->buttonRedial);
+  DBG_LEAVE ();
+}
+
+gint
+timer_outgoing_time_out (MokoDialerData * appdata)
+{
+//DBG_ENTER();
+  TIMER_DATA *timer_data = &(appdata->g_timer_data);
+
+
+  timer_data->ticks++;
+  timer_data->hour = timer_data->ticks / 3600;
+  timer_data->min = (timer_data->ticks - timer_data->hour * 3600) / 60;
+  timer_data->sec = timer_data->ticks % 60;
+
+
+  sprintf (timer_data->timestring, "Calling ... (%02d:%02d:%02d)",
+           timer_data->hour, timer_data->min, timer_data->sec);
+
+//ok,we update the label now.
+
+
+  moko_dialer_status_set_status_label (appdata->status_outgoing,
+                                       timer_data->timestring);
+  moko_dialer_status_update_icon (appdata->status_outgoing);
+
+  if (timer_data->stopsec != 0 && timer_data->ticks >= timer_data->stopsec)
+  {
+
+    timer_data->timeout = 1;
+    g_source_remove (timer_data->ptimer);
+    timer_data->ptimer = 0;
+//maybe it failes
+    window_outgoing_fails (appdata);
+    return 0;                   //0 stops the timer.
+  }
+  else
+    return 1;
+}
+
+
+
+void
+on_window_outgoing_hide (GtkWidget * widget, MokoDialerData * appdata)
+{
+  if (appdata->g_timer_data.ptimer != 0)
+  {
+    g_source_remove (appdata->g_timer_data.ptimer);
+    appdata->g_timer_data.ptimer = 0;
+  }
+  if (appdata->g_state.callstate != STATE_TALKING)
+  {                             //     add_histroy_entry(g_state.historytype,g_state.contactinfo.name,g_state.contactinfo.number,g_state.contactinfo.picpath,g_state.starttime,0);
+
+    add_histroy_entry (appdata, appdata->g_state.historytype,
+                       appdata->g_peer_info.name,
+                       appdata->g_peer_info.number,
+                       appdata->g_peer_info.picpath,
+                       appdata->g_state.starttime,
+                       appdata->g_state.startdate, 0);
+
+  }
+
+
+}
+
+void
+window_outgoing_setup_timer (MokoDialerData * appdata)
+{
+  time_t timep;
+  struct tm *p;
+  time (&timep);
+  p = localtime (&timep);
+
+  sprintf (appdata->g_state.starttime, "%02d:%02d:%02d", p->tm_hour,
+           p->tm_min, p->tm_sec);
+  sprintf (appdata->g_state.startdate, "%04d/%02d/%02d", p->tm_year,
+           p->tm_mon, p->tm_mday);
+
+  if (appdata->g_timer_data.ptimer != 0)
+  {
+    g_source_remove (appdata->g_timer_data.ptimer);
+    appdata->g_timer_data.ptimer = 0;
+  }
+
+  memset (&(appdata->g_timer_data), 0, sizeof (appdata->g_timer_data));
+// 1:30 timeout
+  appdata->g_timer_data.stopsec = 90;
+
+  appdata->g_timer_data.ptimer =
+    g_timeout_add (1000, (GSourceFunc) timer_outgoing_time_out, appdata);
+
+
+}
+
+void
+on_window_outgoing_show (GtkWidget * widget, MokoDialerData * appdata)
+{
+
+  //DBG_ENTER ();
+  window_outgoing_setup_timer (appdata);
+  //DBG_TRACE ();
+  appdata->g_state.callstate = STATE_CALLING;
+  //DBG_TRACE ();
+  appdata->g_state.historytype = OUTGOING;
+  //DBG_TRACE ();
+  /* TODO: MokoGsmdConnection->dial
+   * int retv = gsm_dial (appdata->g_peer_info.number);
+   * DBG_MESSAGE ("GSM_DIAL returns %d", retv);
+   */
+  //DBG_LEAVE ();
+}
+
+
+gint
+window_outgoing_init (MokoDialerData * p_dialer_data)
+{
+
+  DBG_ENTER ();
+  MokoFingerWindow *window;
+  GtkWidget *vbox;
+  GtkWidget *status;
+
+  if (p_dialer_data->window_outgoing == 0)
+  {
+
+    vbox = gtk_vbox_new (FALSE, 0);
+    status = moko_dialer_status_new ();
+    moko_dialer_status_add_status_icon (MOKO_DIALER_STATUS (status),
+                                        "outgoing_0.png");
+    moko_dialer_status_add_status_icon (MOKO_DIALER_STATUS (status),
+                                        "outgoing_1.png");
+    moko_dialer_status_add_status_icon (MOKO_DIALER_STATUS (status),
+                                        "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);
+
+    gtk_box_pack_start (GTK_BOX (vbox), status, FALSE, FALSE, 0);
+
+
+    GtkWidget *hbox2 = gtk_hbox_new (FALSE, 0);
+    GtkWidget *button = gtk_button_new_with_label ("Speaker");
+    gtk_button_set_image (GTK_BUTTON (button),
+                          file_new_image_from_relative_path ("speaker.png"));
+    g_signal_connect (G_OBJECT (button), "clicked",
+                      G_CALLBACK (cb_speaker_button_clicked), p_dialer_data);
+    p_dialer_data->buttonSpeaker = button;
+//gtk_widget_set_size_request(button,100,32);
+    gtk_box_pack_start (GTK_BOX (hbox2), GTK_WIDGET (button), TRUE, TRUE, 40);
+
+    button = gtk_button_new_with_label ("Redial");
+    gtk_button_set_image (GTK_BUTTON (button),
+                          file_new_image_from_relative_path ("redial.png"));
+    p_dialer_data->buttonRedial = button;
+    g_signal_connect (G_OBJECT (button), "clicked",
+                      G_CALLBACK (cb_redial_button_clicked), p_dialer_data);
+    gtk_box_pack_start (GTK_BOX (hbox2), GTK_WIDGET (button), TRUE, TRUE, 40);
+    g_object_set (G_OBJECT (button), "no-show-all", TRUE, NULL);
+
+
+    button = gtk_button_new_with_label ("Cancel");
+    gtk_button_set_image (GTK_BUTTON (button),
+                          file_new_image_from_relative_path ("cancel.png"));
+    p_dialer_data->buttonCancel = button;
+    g_signal_connect (G_OBJECT (button), "clicked",
+                      G_CALLBACK (cb_cancel_button_clicked), p_dialer_data);
+//gtk_widget_set_size_request(button,100,32);
+    gtk_box_pack_start (GTK_BOX (hbox2), GTK_WIDGET (button), TRUE, TRUE, 40);
+
+    gtk_box_pack_start (GTK_BOX (vbox), hbox2, FALSE, FALSE, 50);
+
+
+//currently     MokoDialogWindow is not finished, wating...
+//   MokoDialogWindow* window = (MokoDialogWindow *)(moko_dialog_window_new());
+//  moko_dialog_window_set_contents( window, GTK_WIDGET(vbox) );
+
+    window = MOKO_FINGER_WINDOW (moko_finger_window_new ());
+    moko_finger_window_set_contents (window, GTK_WIDGET (vbox));
+
+    moko_dialer_status_set_title_label (MOKO_DIALER_STATUS (status),
+                                        "Outgoing call");
+    moko_dialer_status_set_status_label (MOKO_DIALER_STATUS (status),
+                                         "Calling ... (00:00:00)");
+
+    p_dialer_data->window_outgoing = GTK_WIDGET (window);
+    p_dialer_data->status_outgoing = MOKO_DIALER_STATUS (status);
+
+//   DBG_MESSAGE("p_dialer_data->status_outgoing=0X%x",p_dialer_data->status_outgoing);
+
+
+    g_signal_connect ((gpointer) window, "show",
+                      G_CALLBACK (on_window_outgoing_show), p_dialer_data);
+    g_signal_connect ((gpointer) window, "hide",
+                      G_CALLBACK (on_window_outgoing_hide), p_dialer_data);
+
+  }
+
+
+
+// gtk_widget_show(p_dialer_data->window_outgoing);
+
+  DBG_LEAVE ();
+  return 1;
+}

Copied: trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-outgoing.h (from rev 1842, trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-outgoing.h)

Copied: trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-pin.c (from rev 1842, trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-pin.c)
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-pin.c	2007-04-26 03:38:14 UTC (rev 1842)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-pin.c	2007-04-26 12:16:43 UTC (rev 1843)
@@ -0,0 +1,220 @@
+/*   openmoko-dialer-window-dialer.c
+ *
+ *  Authored by Tony Guan<tonyguan at fic-sh.com.cn>
+ *
+ *  Copyright (C) 2006 FIC Shanghai Lab
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Public License as published by
+ *  the Free Software Foundation; version 2 of the license.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Lesser Public License for more details.
+ *
+ *  Current Version: $Rev$ ($Date) [$Author: Tony Guan $]
+ */
+
+#include <libmokoui/moko-finger-window.h>
+#include <libmokoui/moko-pixmap-button.h>
+#include <gtk/gtkalignment.h>
+#include <gtk/gtkbutton.h>
+#include <gtk/gtkhbox.h>
+#include <gtk/gtklabel.h>
+#include <gtk/gtkmain.h>
+#include <gtk/gtkmenu.h>
+#include <gtk/gtkmenuitem.h>
+#include <gtk/gtkvbox.h>
+#include "dialer-main.h"
+
+void
+pin_delete_button_clicked (GtkButton * button, MokoDialerData * appdata)
+{
+  if (appdata->int_sim_pin_end_point)
+  {
+    moko_dialer_textview_delete (appdata->moko_pin_text_view);
+    appdata->int_sim_pin_end_point--;
+    appdata->str_sim_pin[appdata->int_sim_pin_end_point] = 0;
+  }
+
+}
+
+
+void
+pin_ok_button_clicked (GtkButton * button, MokoDialerData * appdata)
+{
+  //   gchar *codesinput;
+//    codesinput =g_strdup(moko_dialer_textview_get_input (appdata->moko_pin_text_view, TRUE));
+
+  if (!appdata->str_sim_pin || g_utf8_strlen (appdata->str_sim_pin, -1) < 1)
+  {
+    //user didn't input anything
+    DBG_MESSAGE ("no input for pin");
+  }
+  else
+  {                             //here send the pin codes and hide our window.
+
+    DBG_MESSAGE ("here we send the pin:%s", appdata->str_sim_pin);
+    //FIXME:why this call will cause segment fault?
+    //lgsm_pin (appdata->lh, appdata->str_sim_pin);
+    //lgsm_pin (appdata->lh, "1234");
+    DBG_MESSAGE ("pin:%s sent", appdata->str_sim_pin);
+    gtk_widget_hide (appdata->window_pin);
+  }
+
+}
+
+
+
+
+void
+on_pin_panel_user_input (GtkWidget * widget, gchar parac, gpointer user_data)
+{
+  char input[2];
+  input[0] = parac;
+  input[1] = 0;
+
+//DBG_TRACE();
+  MokoDialerData *appdata = (MokoDialerData *) user_data;
+  MokoDialerTextview *moko_pin_text_view = appdata->moko_pin_text_view;
+  if (appdata->int_sim_pin_end_point < MOKO_DIALER_MAX_NUMBER_LEN)
+  {
+    appdata->str_sim_pin[appdata->int_sim_pin_end_point] = parac;
+    appdata->int_sim_pin_end_point++;
+    moko_dialer_textview_insert (moko_pin_text_view, "*");
+  }
+  else
+  {
+    appdata->str_sim_pin[0] = parac;
+    appdata->int_sim_pin_end_point = 1;
+  }
+//DBG_TRACE();
+
+}
+
+void
+on_window_pin_hide (GtkWidget * widget, MokoDialerData * appdata)
+{
+  appdata->window_present = 0;
+
+}
+
+void
+on_window_pin_show (GtkWidget * widget, MokoDialerData * appdata)
+{
+  DBG_ENTER ();
+  appdata->window_present = widget;
+
+  DBG_LEAVE ();
+}
+
+
+
+
+gint
+window_pin_init (MokoDialerData * p_dialer_data)
+{
+
+  if (!p_dialer_data->window_pin)
+  {
+
+    g_stpcpy (p_dialer_data->str_sim_pin, "");
+    p_dialer_data->int_sim_pin_end_point = 0;
+    GdkColor color;
+    gdk_color_parse ("black", &color);
+
+    GtkVBox *vbox = NULL;
+
+
+    MokoFingerWindow *window = MOKO_FINGER_WINDOW (moko_finger_window_new ());
+    g_signal_connect ((gpointer) window, "show",
+                      G_CALLBACK (on_window_pin_show), p_dialer_data);
+    g_signal_connect ((gpointer) window, "hide",
+                      G_CALLBACK (on_window_pin_hide), p_dialer_data);
+
+
+    /* contents */
+    vbox = gtk_vbox_new (FALSE, 0);
+    GtkHBox *hbox = gtk_hbox_new (FALSE, 10);
+
+
+    GtkEventBox *eventbox1 = gtk_event_box_new ();
+    gtk_widget_show (eventbox1);
+    gtk_widget_set_name (GTK_WIDGET (eventbox1), "gtkeventbox-black");
+    gtk_widget_modify_bg (eventbox1, GTK_STATE_NORMAL, &color);
+//        gtk_widget_set_size_request (eventbox1, 480, 132);
+
+    MokoDialerTextview *mokotextview = moko_dialer_textview_new ();
+    p_dialer_data->moko_pin_text_view = mokotextview;
+//    moko_dialer_textview_fill_it(mokotextview , "Please input the pin:");
+
+    gtk_container_add (GTK_CONTAINER (eventbox1), mokotextview);
+    gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (eventbox1), FALSE,
+                        FALSE, 0);
+
+    MokoDialerPanel *mokodialerpanel = moko_dialer_panel_new ();
+
+    gtk_widget_set_size_request (mokodialerpanel, 380, 384);
+
+
+    g_signal_connect (GTK_OBJECT (mokodialerpanel), "user_input",
+                      G_CALLBACK (on_pin_panel_user_input), p_dialer_data);
+
+    gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (mokodialerpanel), TRUE,
+                        TRUE, 5);
+
+
+
+//the buttons
+
+    GtkVBox *vbox2 = gtk_vbox_new (FALSE, 0);
+    GtkButton *button1 = moko_pixmap_button_new ();
+    g_signal_connect (G_OBJECT (button1), "clicked",
+                      G_CALLBACK (pin_delete_button_clicked), p_dialer_data);
+    gtk_widget_set_name (GTK_WIDGET (button1), "mokofingerbutton-orange");
+
+    moko_pixmap_button_set_finger_toolbox_btn_center_image
+      (MOKO_PIXMAP_BUTTON (button1),
+       file_new_image_from_relative_path ("delete.png"));
+
+    moko_pixmap_button_set_action_btn_lower_label (MOKO_PIXMAP_BUTTON
+                                                   (button1), "Delete");
+//    gtk_widget_set_size_request (button1, WINDOW_DIALER_BUTTON_SIZE_X,
+    //                              WINDOW_DIALER_BUTTON_SIZE_Y);
+
+    gtk_box_pack_start (GTK_BOX (vbox2), GTK_WIDGET (button1), FALSE, FALSE,
+                        5);
+
+    GtkButton *button2 = moko_pixmap_button_new ();
+
+    g_signal_connect (G_OBJECT (button2), "clicked",
+                      G_CALLBACK (pin_ok_button_clicked), p_dialer_data);
+    gtk_widget_set_name (GTK_WIDGET (button1), "mokofingerbutton-orange");
+    moko_pixmap_button_set_finger_toolbox_btn_center_image
+      (MOKO_PIXMAP_BUTTON (button2),
+       file_new_image_from_relative_path ("phone.png"));
+    moko_pixmap_button_set_action_btn_lower_label (MOKO_PIXMAP_BUTTON
+                                                   (button2), "OK");
+    //gtk_widget_set_size_request (button2, WINDOW_DIALER_BUTTON_SIZE_X,
+    //                         WINDOW_DIALER_BUTTON_SIZE_Y);
+
+    gtk_box_pack_start (GTK_BOX (vbox2), GTK_WIDGET (button2), FALSE, FALSE,
+                        20);
+
+    gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (vbox2), TRUE, TRUE, 5);
+
+
+
+    gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (hbox), TRUE, TRUE, 5);
+
+
+    moko_finger_window_set_contents (window, GTK_WIDGET (vbox));
+
+
+    p_dialer_data->window_pin = window;
+
+  }
+
+  return 1;
+}

Copied: trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-pin.h (from rev 1842, trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-pin.h)

Copied: trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-talking.c (from rev 1842, trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-talking.c)
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-talking.c	2007-04-26 03:38:14 UTC (rev 1842)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-talking.c	2007-04-26 12:16:43 UTC (rev 1843)
@@ -0,0 +1,450 @@
+/*   openmoko-dialer-window-talking.c
+ *
+ *  Authored by Tony Guan<tonyguan at fic-sh.com.cn>
+ *
+ *  Copyright (C) 2006 FIC Shanghai Lab
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU Public License as published by
+ *  the Free Software Foundation; version 2 of the license.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Lesser Public License for more details.
+ *
+ *  Current Version: $Rev$ ($Date) [$Author: Tony Guan $]
+ */
+#include "alsa.h"
+#include <libmokoui/moko-finger-tool-box.h>
+#include <libmokoui/moko-finger-window.h>
+#include <libmokoui/moko-finger-wheel.h>
+#include <libmokoui/moko-pixmap-button.h>
+
+#include <gtk/gtkalignment.h>
+#include <gtk/gtkbutton.h>
+#include <gtk/gtkhbox.h>
+#include <gtk/gtklabel.h>
+#include <gtk/gtkmain.h>
+#include <gtk/gtkmenu.h>
+#include <gtk/gtkmenuitem.h>
+#include <gtk/gtkvbox.h>
+
+#include "contacts.h"
+#include "common.h"
+#include "dialer-main.h"
+#include "moko-dialer-status.h"
+#include "dialer-window-talking.h"
+#include "dialer-window-history.h"
+
+void
+openmoko_wheel_press_left_up_cb (GtkWidget * widget,
+                                 MokoDialerData * appdata)
+{
+  DBG_ENTER ();
+  gint l, r;
+  alsa_get_volume (&l, &r);
+  alsa_set_volume (l + 10, r + 10);
+
+  alsa_get_volume (&l, &r);
+  g_print ("l = %d, r = %d\n", l, r);
+
+/*
+    l = 90; 
+    r = 90;
+
+*/
+
+}
+
+void
+openmoko_wheel_press_right_down_cb (GtkWidget * widget,
+                                    MokoDialerData * appdata)
+{
+  gint l, r;
+  alsa_get_volume (&l, &r);
+  alsa_set_volume (l - 10, r - 10);
+  alsa_get_volume (&l, &r);
+  g_print ("l = %d, r = %d\n", l, r);
+
+  DBG_ENTER ();
+}
+
+
+void
+cb_tool_button_speaker_clicked (GtkButton * button,
+                                MokoDialerData * appdata)
+{
+  DBG_ENTER ();
+}
+
+void
+cb_tool_button_dtmf_talk_clicked (GtkButton * button,
+                                  MokoDialerData * appdata)
+{
+  DBG_ENTER ();
+
+  appdata->dtmf_in_talking_window = !appdata->dtmf_in_talking_window;
+  if (appdata->dtmf_in_talking_window)
+  {
+
+
+    moko_pixmap_button_set_finger_toolbox_btn_center_image
+      (MOKO_PIXMAP_BUTTON (button), appdata->imageTALK);
+    gtk_widget_hide (appdata->content_talk);
+    gtk_widget_show (appdata->content_dtmf);
+  }
+  else
+  {
+    moko_pixmap_button_set_finger_toolbox_btn_center_image
+      (MOKO_PIXMAP_BUTTON (button), appdata->imageDTMF);
+    gtk_widget_hide (appdata->content_dtmf);
+    gtk_widget_show (appdata->content_talk);
+
+
+  }
+
+
+}
+
+void
+cb_tool_button_hangup_clicked (GtkButton * button,
+                               MokoDialerData * appdata)
+{
+  /* TODO: MokoGsmdConnection->hangup
+   * gsm_hangup ();
+   */
+  gtk_widget_hide (appdata->window_talking);
+
+}
+
+
+void
+on_dtmf_panel_user_input (GtkWidget * widget, gchar parac, gpointer user_data)
+{
+  char input[2];
+  input[0] = parac;
+  input[1] = 0;
+
+
+  MokoDialerData *appdata = (MokoDialerData *) user_data;
+  MokoDialerTextview *moko_dtmf_text_view = appdata->moko_dtmf_text_view;
+
+  moko_dialer_textview_insert (moko_dtmf_text_view, input);
+
+
+  /* TODO: MokoGsmdConnection->dtmf_send
+   * gsm_dtmf_send (input[0]);
+   */
+//lgsm_voice_dtmf(lgsmh, buf[1]);
+
+}
+
+
+
+void
+window_talking_prepare (MokoDialerData * appdata)
+{
+  DBG_ENTER ();
+
+//   moko_dialer_status_set_person_number(appdata->status_talking, appdata->g_peer_info.number);
+
+  if (!appdata->window_talking)
+    window_talking_init (appdata);
+
+  if (!appdata->window_talking)
+  {
+    DBG_WARN ("NO TALKING WINDOW INITIATED");
+    return;
+  }
+
+
+  if (appdata->g_peer_info.hasname)
+  {
+    DBG_TRACE ();
+    moko_dialer_status_set_person_image (appdata->status_talking,
+                                         appdata->g_peer_info.ID);
+    DBG_TRACE ();
+    moko_dialer_status_set_person_name (appdata->status_talking,
+                                        appdata->g_peer_info.name);
+    DBG_TRACE ();
+  }
+  else
+  {
+    moko_dialer_status_set_person_image (appdata->status_talking, "");
+    moko_dialer_status_set_person_name (appdata->status_talking, "");
+
+  }
+
+  DBG_LEAVE ();
+
+}
+
+gint
+timer_talking_time_out (MokoDialerData * appdata)
+{
+//DBG_ENTER();
+  TIMER_DATA *timer_data = &(appdata->g_timer_data);
+
+
+  timer_data->ticks++;
+  timer_data->hour = timer_data->ticks / 3600;
+  timer_data->min = (timer_data->ticks - timer_data->hour * 3600) / 60;
+  timer_data->sec = timer_data->ticks % 60;
+
+
+  sprintf (timer_data->timestring, "Talking (%02d:%02d:%02d)",
+           timer_data->hour, timer_data->min, timer_data->sec);
+
+//ok,we update the label now.
+
+
+  moko_dialer_status_set_status_label (appdata->status_talking,
+                                       timer_data->timestring);
+  moko_dialer_status_update_icon (appdata->status_talking);
+
+  if (timer_data->stopsec != 0 && timer_data->ticks >= timer_data->stopsec)
+  {
+
+    timer_data->timeout = 1;
+    g_source_remove (timer_data->ptimer);
+    timer_data->ptimer = 0;
+    return 0;                   //0 stops the timer.
+  }
+  else
+    return 1;
+}
+
+void
+on_window_talking_hide (GtkWidget * widget, MokoDialerData * appdata)
+{
+
+
+  if (appdata->g_timer_data.ptimer != 0)
+  {
+    g_source_remove (appdata->g_timer_data.ptimer);
+    appdata->g_timer_data.ptimer = 0;
+  }
+
+  gtk_widget_hide (appdata->wheel_talking);
+  gtk_widget_hide (appdata->toolbox_talking);
+
+  moko_dialer_textview_empty (appdata->moko_dtmf_text_view);
+  add_histroy_entry (appdata, appdata->g_state.historytype,
+                     appdata->g_peer_info.name,
+                     appdata->g_peer_info.number,
+                     appdata->g_peer_info.picpath,
+                     appdata->g_state.starttime,
+                     appdata->g_state.startdate, appdata->g_timer_data.ticks);
+
+
+}
+
+void
+on_window_talking_show (GtkWidget * widget, MokoDialerData * appdata)
+{
+  DBG_ENTER ();
+
+  appdata->dtmf_in_talking_window = TRUE;
+  //hide the talking button in talking mode.
+
+  time_t timep;
+  struct tm *p;
+  time (&timep);
+  p = localtime (&timep);
+
+  sprintf (appdata->g_state.starttime, "%02d:%02d:%02d", p->tm_hour,
+           p->tm_min, p->tm_sec);
+  sprintf (appdata->g_state.startdate, "%04d/%02d/%02d", p->tm_year + 1900,
+           p->tm_mon, p->tm_mday);
+
+  memset (&(appdata->g_timer_data), 0, sizeof (appdata->g_timer_data));
+
+  appdata->g_timer_data.stopsec = 0;
+
+  appdata->g_timer_data.ptimer =
+    g_timeout_add (1000, (GSourceFunc) timer_talking_time_out, appdata);
+
+  if (appdata->toolbox_talking)
+  {
+    gtk_widget_show (appdata->toolbox_talking);
+    moko_pixmap_button_set_finger_toolbox_btn_center_image
+      (MOKO_PIXMAP_BUTTON (appdata->buttonTalk_DTMF), appdata->imageDTMF);
+    gtk_widget_hide (appdata->content_dtmf);
+    gtk_widget_show (appdata->content_talk);
+  }
+
+
+
+  if (appdata->wheel_talking)
+    gtk_widget_show (appdata->wheel_talking);
+
+
+
+
+  DBG_LEAVE ();
+}
+
+
+
+
+gint
+window_talking_init (MokoDialerData * p_dialer_data)
+{
+
+  DBG_ENTER ();
+
+
+  if (p_dialer_data->window_talking == 0)
+  {
+
+    MokoFingerWindow *window = NULL;
+    GtkWidget *vbox = gtk_vbox_new (FALSE, 0);;
+    GtkWidget *status = NULL;
+    GtkWidget *content_talk = NULL;
+    GtkWidget *content_dtmf = NULL;
+    MokoFingerToolBox *tools = NULL;
+    MokoFingerWheel *wheel = NULL;
+    GtkWidget *mokodialerpanel = NULL;
+    MokoPixmapButton *button;
+    GtkWidget *image;
+
+
+//first, the talking content.
+
+    content_talk = gtk_vbox_new (FALSE, 0);
+    status = moko_dialer_status_new ();
+    moko_dialer_status_add_status_icon (MOKO_DIALER_STATUS (status),
+                                        "talking_0.png");
+    moko_dialer_status_add_status_icon (MOKO_DIALER_STATUS (status),
+                                        "talking_1.png");
+    moko_dialer_status_add_status_icon (MOKO_DIALER_STATUS (status),
+                                        "talking_2.png");
+    moko_dialer_status_add_status_icon (MOKO_DIALER_STATUS (status),
+                                        "talking_3.png");
+    moko_dialer_status_set_icon_by_index (MOKO_DIALER_STATUS (status), 0);
+
+
+    moko_dialer_status_set_title_label (MOKO_DIALER_STATUS (status),
+                                        "In Call");
+    moko_dialer_status_set_status_label (MOKO_DIALER_STATUS (status),
+                                         "Talking ...(00:00:00)");
+
+    gtk_box_pack_start (GTK_BOX (content_talk), status, FALSE, FALSE, 0);
+
+
+    p_dialer_data->status_talking = MOKO_DIALER_STATUS (status);
+    p_dialer_data->content_talk = content_talk;
+
+    gtk_box_pack_start (GTK_BOX (vbox), content_talk, FALSE, FALSE, 0);
+
+
+    //now the dtmf content
+    content_dtmf = gtk_vbox_new (FALSE, 0);
+    GtkWidget *eventbox1 = gtk_event_box_new ();
+    gtk_widget_show (eventbox1);
+    gtk_widget_set_name (eventbox1, "gtkeventbox-black");
+
+    GtkWidget *mokotextview = moko_dialer_textview_new ();
+
+    gtk_container_add (GTK_CONTAINER (eventbox1), mokotextview);
+
+    p_dialer_data->moko_dtmf_text_view = MOKO_DIALER_TEXTVIEW (mokotextview);
+
+    gtk_box_pack_start (GTK_BOX (content_dtmf), GTK_WIDGET (eventbox1),
+                        FALSE, FALSE, 2);
+
+
+
+    mokodialerpanel = moko_dialer_panel_new ();
+
+    gtk_widget_set_size_request (mokodialerpanel, 380, 384);
+    g_signal_connect (GTK_OBJECT (mokodialerpanel), "user_input",
+                      G_CALLBACK (on_dtmf_panel_user_input), p_dialer_data);
+    gtk_box_pack_start (GTK_BOX (content_dtmf),
+                        GTK_WIDGET (mokodialerpanel), TRUE, TRUE, 5);
+
+    gtk_box_pack_start (GTK_BOX (vbox), content_dtmf, FALSE, FALSE, 0);
+    p_dialer_data->content_dtmf = content_dtmf;
+    //g_object_set (G_OBJECT (content_dtmf), "no-show-all", TRUE);
+
+
+    //now the container--window
+    window = MOKO_FINGER_WINDOW (moko_finger_window_new ());
+    p_dialer_data->window_talking = GTK_WIDGET (window);
+    moko_finger_window_set_contents (window, GTK_WIDGET (vbox));
+    g_signal_connect ((gpointer) window, "show",
+                      G_CALLBACK (on_window_talking_show), p_dialer_data);
+    g_signal_connect ((gpointer) window, "hide",
+                      G_CALLBACK (on_window_talking_hide), p_dialer_data);
+
+
+    //now the wheel and tool box, why should the wheel and toolbox created after the gtk_widget_show_all???
+    //please refer to bug 175.
+    //FIXME:Dear Thomas, please modify the libmokoui before deleting the show_all & hide codes. I don't want to splash
+    //any window either, but for now, it's the most convenient way to debug the application. We will remove it, but later, OK?
+    //Tony Guan 14/3/2007
+    gtk_widget_show_all (GTK_WIDGET (window));
+    gtk_widget_hide (content_dtmf);     //And this line is necessary because dtmf interface & talking interface share the same window.
+    //we have to hide it first.
+    wheel = moko_finger_window_get_wheel (window);
+
+    g_signal_connect (G_OBJECT (wheel),
+                      "press_left_up",
+                      G_CALLBACK (openmoko_wheel_press_left_up_cb),
+                      p_dialer_data);
+    g_signal_connect (G_OBJECT (wheel),
+                      "press_right_down",
+                      G_CALLBACK (openmoko_wheel_press_right_down_cb),
+                      p_dialer_data);
+
+
+
+
+    tools = moko_finger_window_get_toolbox (window);
+    button =
+      MOKO_PIXMAP_BUTTON (moko_finger_tool_box_add_button_without_label
+                          (tools));
+    image = file_new_image_from_relative_path ("speaker.png");
+    moko_pixmap_button_set_finger_toolbox_btn_center_image
+      (MOKO_PIXMAP_BUTTON (button), image);
+    g_signal_connect (G_OBJECT (button), "clicked",
+                      G_CALLBACK (cb_tool_button_speaker_clicked),
+                      p_dialer_data);
+
+    button =
+      MOKO_PIXMAP_BUTTON (moko_finger_tool_box_add_button_without_label
+                          (tools));
+    image = file_new_image_from_relative_path ("dtmf.png");
+    moko_pixmap_button_set_finger_toolbox_btn_center_image
+      (MOKO_PIXMAP_BUTTON (button), image);
+    g_signal_connect (G_OBJECT (button), "clicked",
+                      G_CALLBACK (cb_tool_button_dtmf_talk_clicked),
+                      p_dialer_data);
+    p_dialer_data->buttonTalk_DTMF = button;
+    p_dialer_data->imageDTMF = image;
+    p_dialer_data->imageTALK =
+      file_new_image_from_relative_path ("talking.png");
+
+
+    button =
+      MOKO_PIXMAP_BUTTON (moko_finger_tool_box_add_button_without_label
+                          (tools));
+    image = file_new_image_from_relative_path ("hangup.png");
+    moko_pixmap_button_set_finger_toolbox_btn_center_image
+      (MOKO_PIXMAP_BUTTON (button), image);
+    g_signal_connect (G_OBJECT (button), "clicked",
+                      G_CALLBACK (cb_tool_button_hangup_clicked),
+                      p_dialer_data);
+    gtk_widget_show (GTK_WIDGET (tools));
+    gtk_widget_show (GTK_WIDGET (wheel));
+
+    p_dialer_data->dtmf_in_talking_window = 0;
+    p_dialer_data->wheel_talking = GTK_WIDGET (wheel);
+    p_dialer_data->toolbox_talking = GTK_WIDGET (tools);
+
+    DBG_LEAVE ();
+  }
+
+  return 1;
+}

Copied: trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-talking.h (from rev 1842, trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-talking.h)

Deleted: trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-main.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-main.c	2007-04-26 03:38:14 UTC (rev 1842)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-main.c	2007-04-26 12:16:43 UTC (rev 1843)
@@ -1,218 +0,0 @@
-/*   openmoko-dialer.c
- *
- *  Authored by Tony Guan<tonyguan at fic-sh.com.cn>
- *
- *  Copyright (C) 2006 FIC Shanghai Lab
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU Public License as published by
- *  the Free Software Foundation; version 2 of the license.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Lesser Public License for more details.
- *
- *  Current Version: $Rev$ ($Date) [$Author: Tony Guan $]
- */
-#include <libmokoui/moko-application.h>
-#include <libmokoui/moko-finger-tool-box.h>
-#include <libmokoui/moko-finger-window.h>
-#include <libmokoui/moko-finger-wheel.h>
-
-#include <libmokogsmd/moko-gsmd-connection.h>
-
-
-#include <gtk/gtk.h>
-#include <signal.h>
-#include <unistd.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-
-#include "contacts.h"
-#include  "history.h"
-#include "error.h"
-#include "errno.h"
-#include "openmoko-dialer-main.h"
-#include "openmoko-dialer-window-dialer.h"
-#include "openmoko-dialer-window-talking.h"
-#include "openmoko-dialer-window-outgoing.h"
-#include "openmoko-dialer-window-incoming.h"
-#include "openmoko-dialer-window-pin.h"
-#include "openmoko-dialer-window-history.h"
-
-#include "dialer-callbacks-connection.h"
-
-MokoDialerData *p_dialer_data = 0;
-MokoDialerData *
-moko_get_app_data ()
-{
-  return p_dialer_data;
-}
-
-static void
-handle_sigusr1 (int value)
-{
-  DBG_ENTER ();
-  MokoDialerData *p_data = moko_get_app_data ();
-  if (!p_data)
-    return;
-  GtkWidget *mainwindow = p_data->window_present;
-  if (mainwindow == 0)
-    mainwindow = p_data->window_dialer;
-
-  if (mainwindow == NULL)
-  {
-    return;
-  }
-  gtk_widget_show_all (mainwindow);
-  gtk_window_present (GTK_WINDOW (mainwindow));
-  DBG_TRACE ();
-  signal (SIGUSR1, handle_sigusr1);
-  DBG_LEAVE ();
-}
-
-static pid_t
-testlock (char *fname)
-{
-  int fd;
-  struct flock fl;
-
-  fd = open (fname, O_WRONLY, S_IWUSR);
-  if (fd < 0)
-  {
-    if (errno == ENOENT)
-    {
-      return 0;
-    }
-    else
-    {
-      perror ("Test lock open file");
-      return -1;
-    }
-  }
-
-  fl.l_type = F_WRLCK;
-  fl.l_whence = SEEK_SET;
-  fl.l_start = 0;
-  fl.l_len = 0;
-
-  if (fcntl (fd, F_GETLK, &fl) < 0)
-  {
-    close (fd);
-    return -1;
-  }
-  close (fd);
-
-  if (fl.l_type == F_UNLCK)
-    return 0;
-
-  return fl.l_pid;
-}
-
-static void
-setlock (char *fname)
-{
-  int fd;
-  struct flock fl;
-
-  fd = open (fname, O_WRONLY | O_CREAT, S_IWUSR);
-  if (fd < 0)
-  {
-    perror ("Set lock open file");
-    return;
-  }
-
-  fl.l_type = F_WRLCK;
-  fl.l_whence = SEEK_SET;
-  fl.l_start = 0;
-  fl.l_len = 0;
-
-  if (fcntl (fd, F_SETLK, &fl) < 0)
-  {
-    perror ("Lock file");
-    close (fd);
-  }
-}
-
-static gboolean show_gui;
-
-static GOptionEntry entries[] = {
-  {"show-gui", 's', 0, G_OPTION_ARG_NONE, &show_gui,
-   "Show the GUI at startup (default off)", "N"},
-  {NULL}
-};
-
-
-int
-main (int argc, char **argv)
-{
-  pid_t lockapp;
-
-  /* Initialize GTK+ */
-  gtk_init (&argc, &argv);
-
-  if (argc != 1)
-  {
-    /* Add init code. */
-    GError *error = NULL;
-    GOptionContext *context = g_option_context_new ("");
-
-    g_option_context_add_main_entries (context, entries, NULL);
-    g_option_context_add_group (context, gtk_get_option_group (TRUE));
-    g_option_context_parse (context, &argc, &argv, &error);
-
-    g_option_context_free (context);
-  }
-  //FIXME: the following lines to enable unique instance will be changed.
-  lockapp = testlock ("/tmp/dialer.lock");
-  if (lockapp > 0)
-  {
-    kill (lockapp, SIGUSR1);
-    return 0;
-  }
-  setlock ("/tmp/dialer.lock");
-
-
-  p_dialer_data = g_new0 (MokoDialerData, 1);
-
-  //init application data
-  contact_init_contact_data (&(p_dialer_data->g_contactlist));
-  history_init_history_data (&(p_dialer_data->g_historylist));
-
-
-  /* application object */
-//    MokoApplication* app = MOKO_APPLICATION(moko_application_get_instance());
-  g_set_application_name ("OpenMoko Dialer");
-
-  /* Set up gsmd connection object */
-  MokoGsmdConnection* conn = p_dialer_data->connection = moko_gsmd_connection_new ();
-  g_signal_connect (G_OBJECT (conn), "network-registration", (GCallback) network_registration_cb, NULL);
-  g_signal_connect (G_OBJECT (conn), "incoming-call", (GCallback) incoming_call_cb, NULL);
-  g_signal_connect (G_OBJECT (conn), "incoming-clip", (GCallback) incoming_clip_cb, NULL);
-
-  signal (SIGUSR1, handle_sigusr1);
-
-  //init the dialer window
-  window_dialer_init (p_dialer_data);
-  window_incoming_init (p_dialer_data);
-  window_pin_init (p_dialer_data);
-  window_outgoing_init (p_dialer_data);
-  window_history_init (p_dialer_data);
-  DBG_MSG
-    ("\nusage: \"openmoko-dialer\" will not show any GUI initialy until you reactivate the app using another \"openmoko-dialer\" command");
-
-  if (show_gui)
-  {
-    handle_sigusr1 (SIGUSR1);
-  }
-
-  gtk_main ();
-
-
-//release everything    
-  contact_release_contact_list (&(p_dialer_data->g_contactlist));
-
-  history_release_history_list (&(p_dialer_data->g_historylist));
-  return 0;
-}

Deleted: trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-main.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-main.h	2007-04-26 03:38:14 UTC (rev 1842)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-main.h	2007-04-26 12:16:43 UTC (rev 1843)
@@ -1,103 +0,0 @@
-/*  openmoko-dialer.h
- *
- *  Authored by Tony Guan<tonyguan at fic-sh.com.cn>
- *
- *  Copyright (C) 2006 FIC Shanghai Lab
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU Public License as published by
- *  the Free Software Foundation; version 2.1 of the license.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Lesser Public License for more details.
- *
- *  Current Version: $Rev$ ($Date) [$Author: Tony Guan $]
- */
-#include "moko-dialer-includes.h"
-#include <libmokogsmd/moko-gsmd-connection.h>
-/*
-
-typedef struct _window_outgoing
-{
-
-MokoDialerStatus * status_outgoing;
-
-GtkWidget* window_outgoing;
-
-GtkWidget* buttonSpeaker;
-GtkWidget* buttonCancel;
-GtkWidget* buttonRedial;
-}WindowOutgoing;
-*/
-typedef struct _dialer_data
-{
-  //the global data area begins here
-  MokoGsmdConnection *connection;
-
-  char str_sim_pin[MOKO_DIALER_MAX_PIN_LEN + 1];
-  gint int_sim_pin_end_point;
-  MokoDialerTextview *moko_dialer_text_view;    ///<the textview for the dialer window 
-
-  MokoDialerTextview *moko_dtmf_text_view;      ///<the textview for the dtmf window
-  MokoDialerTextview *moko_pin_text_view;
-
-  MokoDialerAutolist *moko_dialer_autolist;
-
-  DIALER_CONTACTS_LIST_HEAD g_contactlist;      ///< the whole list of the contacts from the contact book.
-
-  DIALER_CONTACT_PEER_INFO g_peer_info; ///<hold the peer's name, number, etc.
-
-  HISTORY_LIST_HEAD g_historylist;      ///< the whole list of the talk history
-  HISTORY_ENTRY *g_currentselected;     ///<pointer to the history entry which in the GUI the user selects.
-  GLOBAL_STATE g_state;         ///< the global states holder. we count on it a lot.
-
-
-  TIMER_DATA g_timer_data;      ///< the data used by the timers
-
-  MokoDialerStatus *status_outgoing;
-  MokoDialerStatus *status_talking;
-  MokoDialerStatus *status_incoming;
-
-  GtkWidget *window_incoming;
-  GtkWidget *window_outgoing;
-  GtkWidget *window_talking;
-  GtkWidget *window_history;
-  GtkWidget *window_dialer;
-  GtkWidget *window_pin;
-  GtkWidget *window_present;
-
-//buttons
-  GtkWidget *buttonSpeaker;
-  GtkWidget *buttonCancel;
-  GtkWidget *buttonRedial;
-
-  GtkWidget *imageTALK;
-  GtkWidget *imageDTMF;
-
-  GtkWidget *buttonTalk_DTMF;
-  GtkWidget *content_talk;
-  GtkWidget *content_dtmf;
-
-
-  GtkWidget *wheel_talking;
-  GtkWidget *toolbox_talking;
-
-
-  GtkWidget *wheel_history;
-  GtkWidget *toolbox_history;
-  GtkWidget *label_filter_history;
-  GtkWidget *label_counter_history;
-  GtkWidget *treeview_history;
-  GtkWidget *menu_history;
-
-  gboolean dtmf_in_talking_window;
-  gboolean history_need_to_update;
-
-  GtkTreeModel *g_list_store_filter;    ///<the list store used by the gtktreeview, for displaying the history list dynamically.
-
-  HISTORY_TYPE g_history_filter_type;   ///<indicates the current history filter type, the gtktreeview will be filtered on the value.
-
-  GdkPixbuf *g_iconReceived, *g_iconMissed, *g_iconDialed;      ///<the global pixbuf for the 3 icons displayed in the history window.}DIALER_APP_DATA;
-} MokoDialerData;

Deleted: trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-dialer.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-dialer.c	2007-04-26 03:38:14 UTC (rev 1842)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-dialer.c	2007-04-26 12:16:43 UTC (rev 1843)
@@ -1,476 +0,0 @@
-/*   openmoko-dialer-window-dialer.c
- *
- *  Authored by Tony Guan<tonyguan at fic-sh.com.cn>
- *
- *  Copyright (C) 2006 FIC Shanghai Lab
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU Public License as published by
- *  the Free Software Foundation; version 2 of the license.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Lesser Public License for more details.
- *
- *  Current Version: $Rev$ ($Date) [$Author: Tony Guan $]
- */
-
-#include <libmokoui/moko-finger-tool-box.h>
-#include <libmokoui/moko-finger-window.h>
-#include <libmokoui/moko-finger-wheel.h>
-#include <libmokoui/moko-pixmap-button.h>
-
-#include <gtk/gtkalignment.h>
-#include <gtk/gtkbutton.h>
-#include <gtk/gtkhbox.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkmain.h>
-#include <gtk/gtkmenu.h>
-#include <gtk/gtkmenuitem.h>
-#include <gtk/gtkvbox.h>
-
-#include "common.h"
-#include "contacts.h"
-#include "openmoko-dialer-main.h"
-#include "openmoko-dialer-window-dialer.h"
-#include "openmoko-dialer-window-history.h"
-#include "openmoko-dialer-window-outgoing.h"
-
-void
-cb_delete_button_clicked (GtkButton * button, MokoDialerData * appdata)
-{
-  g_debug ("delete button clicked");
-
-  if (moko_dialer_autolist_has_selected (appdata->moko_dialer_autolist))
-  {
-//first of all, we un-select the selection.
-    moko_dialer_autolist_set_select (appdata->moko_dialer_autolist, -1);
-
-//fill the textview with ""
-    moko_dialer_textview_fill_it (appdata->moko_dialer_text_view, "");
-//moko_dialer_textview_set_color(moko_dialer_textview);
-  }
-  else
-  {
-    moko_dialer_textview_delete (appdata->moko_dialer_text_view);
-//refresh the autolist,but do not automaticall fill the textview
-    gchar *codesinput = 0;
-    codesinput =
-      g_strdup (moko_dialer_textview_get_input
-                (appdata->moko_dialer_text_view, FALSE));
-
-    if (codesinput)
-    {
-      DBG_MESSAGE ("input %s", codesinput);
-      if (g_utf8_strlen (codesinput, -1) >= MOKO_DIALER_MIN_SENSATIVE_LEN)
-      {
-        moko_dialer_autolist_refresh_by_string (appdata->
-                                                moko_dialer_autolist,
-                                                codesinput, FALSE);
-        moko_dialer_textview_set_color (appdata->moko_dialer_text_view);
-      }
-      else
-        moko_dialer_autolist_hide_all_tips (appdata->moko_dialer_autolist);
-      g_free (codesinput);
-    }
-    else
-    {
-      DBG_WARN ("No input now.");
-    }
-
-
-  }
-
-}
-
-void
-cb_history_button_clicked (GtkButton * button, MokoDialerData * appdata)
-{
-  if (!appdata->window_history)
-    window_history_init (appdata);
-
-//start dialling.
-  gtk_widget_show_all (appdata->window_history);
-
-}
-
-void
-window_dialer_dial_out (MokoDialerData * appdata)
-{
-  gchar *codesinput;
-  //get the input digits
-  codesinput =
-    g_strdup (moko_dialer_textview_get_input
-              (appdata->moko_dialer_text_view, FALSE));
-  DBG_TRACE ();
-  if ((!codesinput)
-      || ((codesinput != NULL) && g_utf8_strlen (codesinput, -1)) < 1)
-  {
-    //user didn't input anything, maybe it's a redial, so we just insert the last dialed number and return this time.
-    if (g_utf8_strlen (appdata->g_state.lastnumber, -1) > 0)
-    {
-      moko_dialer_textview_insert (appdata->moko_dialer_text_view,
-                                   appdata->g_state.lastnumber);
-      moko_dialer_autolist_refresh_by_string (appdata->
-                                              moko_dialer_autolist,
-                                              appdata->g_state.lastnumber,
-                                              TRUE);
-    }
-    return;
-  }
-//empty the textview
-  moko_dialer_textview_empty (appdata->moko_dialer_text_view);
-
-//and we set the selected autolist to be No
-  moko_dialer_autolist_set_select (appdata->moko_dialer_autolist, -1);
-  moko_dialer_autolist_hide_all_tips (appdata->moko_dialer_autolist);
-
-//got the number;//FIXME:which function should I use if not g_strdup. & strcpy.
-  //strcpy(appdata->g_peer_info.number, codesinput );
-  g_stpcpy (appdata->g_peer_info.number, codesinput);
-
-//retrieve the contact information if any.
-  contact_get_peer_info_from_number (appdata->g_contactlist.contacts,
-                                     &(appdata->g_peer_info));
-// contact_get_peer_info_from_number
-
-/*
-if(!appdata->window_outgoing)
-	window_incoming_init(appdata);
-
-//transfer the contact info
-window_incoming_prepare(appdata);
-
-//start dialling.
-gtk_widget_show(appdata->window_incoming);
-*/
-
-//transfer the contact info
-  window_outgoing_prepare (appdata);
-
-//start dialling.
-  gtk_widget_show_all (appdata->window_outgoing);
-
-  g_free (codesinput);
-
-}
-
-void
-cb_dialer_button_clicked (GtkButton * button, MokoDialerData * appdata)
-{
-  window_dialer_dial_out (appdata);
-}
-
-
-
-void
-on_dialer_autolist_user_selected (GtkWidget * widget, gpointer para_pointer,
-                                  gpointer user_data)
-{
-  gchar *codesinput;
-  gint lenstring = 0;
-  gint leninput = 0;
-  MokoDialerData *appdata = (MokoDialerData *) user_data;
-  MokoDialerTextview *moko_dialer_text_view = appdata->moko_dialer_text_view;
-  DIALER_READY_CONTACT *ready_contact = (DIALER_READY_CONTACT *) para_pointer;
-  codesinput = moko_dialer_textview_get_input (moko_dialer_text_view, FALSE);
-  if (ready_contact->p_entry->content)
-    lenstring = g_utf8_strlen (ready_contact->p_entry->content, -1);
-  else
-    lenstring = 0;
-
-  if (codesinput)
-    leninput = g_utf8_strlen (codesinput, -1);
-  else
-    leninput = 0;
-  if (lenstring > leninput)
-  {
-
-    moko_dialer_textview_fill_it (moko_dialer_text_view,
-                                  &(ready_contact->p_entry->
-                                    content[leninput]));
-
-  }
-  else
-    moko_dialer_textview_fill_it (moko_dialer_text_view, "");
-  g_free (codesinput);
-
-}
-
-void
-on_dialer_autolist_user_confirmed (GtkWidget * widget, gpointer para_pointer,
-                                   gpointer user_data)
-{
-
-  MokoDialerData *appdata = (MokoDialerData *) user_data;
-  MokoDialerTextview *moko_dialer_text_view = appdata->moko_dialer_text_view;
-  DIALER_READY_CONTACT *ready_contact = (DIALER_READY_CONTACT *) para_pointer;
-  DBG_MESSAGE ("GOT THE MESSAGE OF confirmed:%s",
-               ready_contact->p_entry->content);
-  moko_dialer_textview_confirm_it (moko_dialer_text_view,
-                                   ready_contact->p_entry->content);
-  DBG_MESSAGE ("And here we are supposed to call out directly");
-  window_dialer_dial_out (appdata);
-
-
-}
-
-void
-on_dialer_autolist_nomatch (GtkWidget * widget, gpointer user_data)
-{
-
-  MokoDialerData *appdata = (MokoDialerData *) user_data;
-  MokoDialerTextview *moko_dialer_text_view = appdata->moko_dialer_text_view;
-
-  DBG_MESSAGE ("GOT THE MESSAGE OF no match");
-  moko_dialer_textview_fill_it (moko_dialer_text_view, "");
-
-}
-
-void
-on_dialer_menu_close (GtkWidget * widget, gpointer user_data)
-{
-  MokoDialerData *appdata = (MokoDialerData *) user_data;
-  gtk_main_quit ();
-}
-
-void
-on_dialer_menu_hide (GtkWidget * widget, MokoDialerData * appdata)
-{
-  gtk_widget_hide (appdata->window_dialer);
-}
-
-
-
-
-void
-on_dialer_panel_user_input (GtkWidget * widget, gchar parac,
-                            gpointer user_data)
-{
-  char input[2];
-  input[0] = parac;
-  input[1] = 0;
-  gchar *codesinput = NULL;
-
-//DBG_TRACE();
-  MokoDialerData *appdata = (MokoDialerData *) user_data;
-  MokoDialerTextview *moko_dialer_text_view = appdata->moko_dialer_text_view;
-
-
-  moko_dialer_textview_insert (moko_dialer_text_view, input);
-//DBG_TRACE();
-
-
-  codesinput =
-    g_strdup (moko_dialer_textview_get_input (moko_dialer_text_view, FALSE));
-
-  if (codesinput
-      && (g_utf8_strlen (codesinput, -1) >= MOKO_DIALER_MIN_SENSATIVE_LEN))
-  {
-    moko_dialer_autolist_refresh_by_string (appdata->moko_dialer_autolist,
-                                            codesinput, TRUE);
-  }
-  else
-  {
-    moko_dialer_autolist_hide_all_tips (appdata->moko_dialer_autolist);
-  }
-
-  if (codesinput)
-    g_free (codesinput);
-
-}
-
-void
-on_dialer_panel_user_hold (GtkWidget * widget, gchar parac,
-                           gpointer user_data)
-{
-  g_print ("on_dialer_panel_user_hold:%c\n", parac);
-}
-
-void
-on_window_dialer_hide (GtkWidget * widget, MokoDialerData * appdata)
-{
-  appdata->window_present = 0;
-}
-
-void
-on_window_dialer_show (GtkWidget * widget, MokoDialerData * appdata)
-{
-  DBG_ENTER ();
-  appdata->window_present = widget;
-  DBG_LEAVE ();
-}
-
-
-
-
-
-
-#define WINDOW_DIALER_BUTTON_SIZE_X 100
-#define WINDOW_DIALER_BUTTON_SIZE_Y 100
-gint
-window_dialer_init (MokoDialerData * p_dialer_data)
-{
-
-  if (!p_dialer_data->window_dialer)
-  {
-
-    GdkColor color;
-    gdk_color_parse ("black", &color);
-
-    GtkWidget *vbox = NULL;
-
-
-    GtkWidget *window = moko_finger_window_new ();
-
-    GtkMenu *appmenu = GTK_MENU (gtk_menu_new ());
-    GtkWidget *closeitem = gtk_menu_item_new_with_label ("Close");
-    g_signal_connect (G_OBJECT (closeitem), "activate",
-                      G_CALLBACK (on_dialer_menu_close), p_dialer_data);
-    gtk_menu_shell_append (GTK_MENU_SHELL (appmenu), closeitem);
-
-    GtkMenuItem *hideitem =
-      GTK_MENU_ITEM (gtk_menu_item_new_with_label ("Hide"));
-    g_signal_connect (G_OBJECT (hideitem), "activate",
-                      G_CALLBACK (on_dialer_menu_hide), p_dialer_data);
-    gtk_menu_shell_append (GTK_MENU_SHELL (appmenu), GTK_WIDGET (hideitem));
-
-
-    moko_finger_window_set_application_menu (MOKO_FINGER_WINDOW (window),
-                                             appmenu);
-
-    g_signal_connect (G_OBJECT (window), "delete_event",
-                      G_CALLBACK (gtk_widget_hide_on_delete), NULL);
-    g_signal_connect (G_OBJECT (window), "show",
-                      G_CALLBACK (on_window_dialer_show), p_dialer_data);
-    g_signal_connect (G_OBJECT (window), "hide",
-                      G_CALLBACK (on_window_dialer_hide), p_dialer_data);
-
-
-
-    /* contents */
-    vbox = gtk_vbox_new (FALSE, 0);
-    GtkWidget *hbox = gtk_hbox_new (FALSE, 10);
-
-
-    GtkWidget *eventbox1 = gtk_event_box_new ();
-    gtk_widget_set_name (eventbox1, "gtkeventbox-black");
-
-    GtkWidget *autolist = moko_dialer_autolist_new ();
-    moko_dialer_autolist_set_data (MOKO_DIALER_AUTOLIST (autolist),
-                                   &(p_dialer_data->g_contactlist));
-    p_dialer_data->moko_dialer_autolist = MOKO_DIALER_AUTOLIST (autolist);
-
-    gtk_container_add (GTK_CONTAINER (eventbox1), autolist);
-    gtk_box_pack_start (GTK_BOX (vbox), eventbox1, FALSE, FALSE, 0);
-
-    gtk_widget_modify_bg (eventbox1, GTK_STATE_NORMAL, &color);
-
-    g_signal_connect (GTK_OBJECT (autolist), "user_selected",
-                      G_CALLBACK (on_dialer_autolist_user_selected),
-                      p_dialer_data);
-
-
-    g_signal_connect (GTK_OBJECT (autolist), "user_confirmed",
-                      G_CALLBACK (on_dialer_autolist_user_confirmed),
-                      p_dialer_data);
-
-    g_signal_connect (GTK_OBJECT (autolist), "autolist_nomatch",
-                      G_CALLBACK (on_dialer_autolist_nomatch), p_dialer_data);
-
-
-
-
-
-    eventbox1 = gtk_event_box_new ();
-    gtk_widget_set_name (eventbox1, "gtkeventbox-black");
-    gtk_widget_modify_bg (eventbox1, GTK_STATE_NORMAL, &color);
-
-    GtkWidget *mokotextview = moko_dialer_textview_new ();
-    p_dialer_data->moko_dialer_text_view =
-      MOKO_DIALER_TEXTVIEW (mokotextview);
-
-    gtk_container_add (GTK_CONTAINER (eventbox1), mokotextview);
-    gtk_box_pack_start (GTK_BOX (vbox), eventbox1, FALSE, FALSE, 0);
-
-    GtkWidget *mokodialerpanel = moko_dialer_panel_new ();
-
-    gtk_widget_set_size_request (mokodialerpanel, 380, 384);
-
-
-    g_signal_connect (GTK_OBJECT (mokodialerpanel), "user_input",
-                      G_CALLBACK (on_dialer_panel_user_input), p_dialer_data);
-
-
-    g_signal_connect (GTK_OBJECT (mokodialerpanel), "user_hold",
-                      G_CALLBACK (on_dialer_panel_user_hold), p_dialer_data);
-
-    gtk_box_pack_start (GTK_BOX (hbox), mokodialerpanel, TRUE, TRUE, 5);
-
-
-
-//the buttons
-
-    GtkWidget *vbox2 = gtk_vbox_new (FALSE, 0);
-    GtkWidget *button1 = moko_pixmap_button_new ();
-    g_signal_connect (G_OBJECT (button1), "clicked",
-                      G_CALLBACK (cb_delete_button_clicked), p_dialer_data);
-    gtk_widget_set_name (button1, "mokofingerbutton-orange");
-    moko_pixmap_button_set_finger_toolbox_btn_center_image
-      (MOKO_PIXMAP_BUTTON (button1),
-       file_new_image_from_relative_path ("delete.png"));
-    moko_pixmap_button_set_action_btn_lower_label (MOKO_PIXMAP_BUTTON
-                                                   (button1), "Delete");
-    gtk_widget_set_size_request (button1, WINDOW_DIALER_BUTTON_SIZE_X,
-                                 WINDOW_DIALER_BUTTON_SIZE_Y);
-
-    gtk_box_pack_start (GTK_BOX (vbox2), button1, FALSE, FALSE, 5);
-
-    GtkWidget *button3 = moko_pixmap_button_new ();
-    g_signal_connect (G_OBJECT (button3), "clicked",
-                      G_CALLBACK (cb_history_button_clicked), p_dialer_data);
-    gtk_widget_set_name (button3, "mokofingerbutton-orange");
-    moko_pixmap_button_set_finger_toolbox_btn_center_image
-      (MOKO_PIXMAP_BUTTON (button3),
-       file_new_image_from_relative_path ("history.png"));
-    moko_pixmap_button_set_action_btn_lower_label (MOKO_PIXMAP_BUTTON
-                                                   (button3), "History");
-    gtk_widget_set_size_request (button3, WINDOW_DIALER_BUTTON_SIZE_X,
-                                 WINDOW_DIALER_BUTTON_SIZE_Y);
-    gtk_box_pack_start (GTK_BOX (vbox2), button3, FALSE, FALSE, 5);
-
-
-    GtkWidget *button2 = moko_pixmap_button_new ();
-
-    g_signal_connect (G_OBJECT (button2), "clicked",
-                      G_CALLBACK (cb_dialer_button_clicked), p_dialer_data);
-    gtk_widget_set_name (button2, "mokofingerbutton-black");
-    moko_pixmap_button_set_finger_toolbox_btn_center_image
-      (MOKO_PIXMAP_BUTTON (button2),
-       file_new_image_from_relative_path ("phone.png"));
-    moko_pixmap_button_set_action_btn_lower_label (MOKO_PIXMAP_BUTTON
-                                                   (button2), "Dial");
-    gtk_widget_set_size_request (button2, WINDOW_DIALER_BUTTON_SIZE_X + 20,
-                                 WINDOW_DIALER_BUTTON_SIZE_Y + 80);
-
-    gtk_box_pack_start (GTK_BOX (vbox2), button2, FALSE, FALSE, 20);
-
-
-    gtk_box_pack_start (GTK_BOX (hbox), vbox2, TRUE, TRUE, 5);
-
-
-
-    gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 5);
-
-
-
-
-    moko_finger_window_set_contents (MOKO_FINGER_WINDOW (window), vbox);
-
-    p_dialer_data->window_dialer = window;
-
-  }
-
-  return 1;
-}

Deleted: trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-dialer.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-dialer.h	2007-04-26 03:38:14 UTC (rev 1842)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-dialer.h	2007-04-26 12:16:43 UTC (rev 1843)
@@ -1,38 +0,0 @@
-/*  openmoko-dialer-window-dialer.h
- *
- *  Authored By Tony Guan<tonyguan at fic-sh.com.cn>
- *
- *  Copyright (C) 2006 FIC Shanghai Lab
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU Public License as published by
- *  the Free Software Foundation; version 2.1 of the license.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Lesser Public License for more details.
- *
- *  Current Version: $Rev$ ($Date) [$Author: Tony Guan $]
- */
-#include "moko-dialer-includes.h"
-
-#ifndef _OPENMOKO_DIALER_WINDOW_DIALER_H
-#define _OPENMOKO_DIALER_WINDOW_DIALER_H
-
-#ifdef __cplusplus
-
-
-
-extern "C"
-{
-#endif
-
-
-  gint window_dialer_init (MokoDialerData * p_dialer_data);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif

Deleted: trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-history.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-history.c	2007-04-26 03:38:14 UTC (rev 1842)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-history.c	2007-04-26 12:16:43 UTC (rev 1843)
@@ -1,1042 +0,0 @@
-/*   openmoko-dialer-window-talking.c
- *
- *  Authored by Tony Guan<tonyguan at fic-sh.com.cn>
- *
- *  Copyright (C) 2006 FIC Shanghai Lab
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU Public License as published by
- *  the Free Software Foundation; version 2 of the license.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Lesser Public License for more details.
- *
- *  Current Version: $Rev$ ($Date) [$Author: Tony Guan $]
- */
-
-#include <libmokoui/moko-finger-tool-box.h>
-#include <libmokoui/moko-finger-window.h>
-#include <libmokoui/moko-finger-wheel.h>
-#include <libmokoui/moko-pixmap-button.h>
-
-#include <gtk/gtkalignment.h>
-#include <gtk/gtkbutton.h>
-#include <gtk/gtkhbox.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkmain.h>
-#include <gtk/gtkmenu.h>
-#include <gtk/gtkmenuitem.h>
-#include <gtk/gtkvbox.h>
-#include <gtk/gtktreeview.h>
-#include <gtk/gtktreemodelfilter.h>
-#include <gtk/gtkscrolledwindow.h>
-#include <gtk/gtkimagemenuitem.h>
-#include <gtk/gtkmenu.h>
-
-#include "common.h"
-#include "contacts.h"
-#include "openmoko-dialer-main.h"
-#include "moko-dialer-status.h"
-#include "history.h"
-#include "openmoko-dialer-window-history.h"
-
-
-/* function declarations */
-
-gint history_update_counter (MokoDialerData * p_dialer_data);
-
-
-/**
- * @brief re-filter the treeview widget by the history type
- *
- * 
- *
- * @param type HISTORY_TYPE, indicating only the history items of that type will be displayed
- * @return 1
- * @retval
- */
-
-int
-history_view_change_filter (MokoDialerData * p_dialer_data,
-                            HISTORY_TYPE type)
-{
-  GtkTreePath *path;
-  DBG_TRACE ();
-  p_dialer_data->g_history_filter_type = type;
-  gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER
-                                  (p_dialer_data->g_list_store_filter));
-
-  path = gtk_tree_path_new_first ();
-  gtk_tree_view_set_cursor (GTK_TREE_VIEW (p_dialer_data->treeview_history),
-                            path, 0, 0);
-  gtk_tree_path_free (path);
-
-
-  return 1;
-}
-
-void
-on_all_calls_activate (GtkMenuItem * menuitem, gpointer user_data)
-{
-  MokoDialerData *p_dialer_data = (MokoDialerData *) user_data;
-  GtkWidget *label = p_dialer_data->label_filter_history;
-  gtk_label_set_text (GTK_LABEL (label), "All");
-  history_view_change_filter (p_dialer_data, ALL);
-  history_update_counter (p_dialer_data);
-}
-
-
-void
-on_missed_calls_activate (GtkMenuItem * menuitem, gpointer user_data)
-{
-  MokoDialerData *p_dialer_data = (MokoDialerData *) user_data;
-  GtkWidget *label = p_dialer_data->label_filter_history;
-  gtk_label_set_text (GTK_LABEL (label), "Missed");
-  history_view_change_filter (p_dialer_data, MISSED);
-  history_update_counter (p_dialer_data);
-}
-
-
-void
-on_dialed_calls_activate (GtkMenuItem * menuitem, gpointer user_data)
-{
-  MokoDialerData *p_dialer_data = (MokoDialerData *) user_data;
-  GtkWidget *label = p_dialer_data->label_filter_history;
-  gtk_label_set_text (GTK_LABEL (label), "Dialed");
-  history_view_change_filter (p_dialer_data, OUTGOING);
-  history_update_counter (p_dialer_data);
-}
-
-
-void
-on_received_calls_activate (GtkMenuItem * menuitem, gpointer user_data)
-{
-  MokoDialerData *p_dialer_data = (MokoDialerData *) user_data;
-  GtkWidget *label = p_dialer_data->label_filter_history;
-  gtk_label_set_text (GTK_LABEL (label), "Received");
-  history_view_change_filter (p_dialer_data, INCOMING);
-  history_update_counter (p_dialer_data);
-}
-
-gboolean
-on_eventboxTop_button_release_event (GtkWidget * widget,
-                                     GdkEventButton * event,
-                                     MokoDialerData * appdata)
-{
-
-  gtk_menu_popup (GTK_MENU (appdata->menu_history), 0, 0, 0, 0, 0, 0);
-
-  return FALSE;
-}
-
-void
-cb_openmoko_history_wheel_press_left_up (GtkWidget * widget,
-                                         MokoDialerData * appdata)
-{
-  DBG_ENTER ();
-  GtkTreeSelection *selection;
-  GtkTreeModel *model;
-  GtkTreeIter iter;
-  GtkTreePath *path;
-  GtkTreeView *treeview;
-  //DBG_ENTER();
-
-  treeview = GTK_TREE_VIEW (appdata->treeview_history);
-  if (treeview == 0)
-    return;
-
-  selection = gtk_tree_view_get_selection (treeview);
-
-  if (!gtk_tree_selection_get_selected (selection, &model, &iter))
-  {
-    DBG_WARN ("no current selection\n");
-    return;
-  }
-  path = gtk_tree_model_get_path (model, &iter);
-  if (!gtk_tree_path_prev (path))
-  {
-    DBG_WARN ("no prev for the top level\n");
-    gtk_tree_path_free (path);
-    return;
-  }
-  gtk_tree_view_set_cursor (treeview, path, 0, 0);
-  return;
-
-
-}
-
-void
-cb_openmoko_history_wheel_press_right_down (GtkWidget * widget,
-                                            MokoDialerData * appdata)
-{
-  DBG_ENTER ();
-  GtkTreeSelection *selection;
-  GtkTreeModel *model;
-  GtkTreeIter iter;
-  GtkTreePath *path;
-  GtkTreeView *treeview;
-  //DBG_ENTER();
-  treeview = GTK_TREE_VIEW (appdata->treeview_history);
-  if (treeview == 0)
-    return;
-
-  selection = gtk_tree_view_get_selection (treeview);
-
-  if (!gtk_tree_selection_get_selected (selection, &model, &iter))
-  {
-    DBG_WARN ("no current selection\n");
-    return;
-  }
-  if (gtk_tree_model_iter_next (model, &iter))
-  {
-    path = gtk_tree_model_get_path (model, &iter);
-    gtk_tree_view_set_cursor (treeview, path, 0, 0);
-    gtk_tree_path_free (path);
-    return;
-  }
-
-  return;
-}
-
-
-void
-cb_tool_button_history_delete_clicked (GtkButton * button,
-                                       MokoDialerData * appdata)
-{
-  GtkTreeIter iter;             //iter of the filter store
-  GtkTreeIter iter0;            //iter of the back store
-  GtkTreeModel *model;
-  GtkTreeModel *model0;
-  GtkTreeSelection *selection;
-  GtkTreeView *treeview;
-  GtkTreePath *path;
-  treeview = GTK_TREE_VIEW (appdata->treeview_history);
-  selection = gtk_tree_view_get_selection (treeview);
-
-
-  if (!gtk_tree_selection_get_selected (selection, &model, &iter))
-  {
-    return;
-  }
-
-  if (appdata->g_currentselected)
-  {
-    DBG_MESSAGE ("to delete %s", appdata->g_currentselected->number);
-    history_delete_entry (&(appdata->g_historylist),
-                          appdata->g_currentselected);
-  }
-
-  path = gtk_tree_model_get_path (model, &iter);
-
-
-  model0 = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (model));
-
-
-  gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER
-                                                    (model), &iter0, &iter);
-
-  gtk_list_store_remove (GTK_LIST_STORE (model0), &iter0);
-
-
-  gtk_tree_view_set_cursor (treeview, path, 0, 0);
-
-
-  if (!gtk_tree_selection_get_selected (selection, &model, &iter))
-  {
-    if (!gtk_tree_path_prev (path))
-    {
-      gtk_tree_view_set_cursor (treeview, path, 0, 0);
-      DBG_WARN ("history is empty now!");
-      history_update_counter (appdata);
-    }
-    else
-    {
-      gtk_tree_view_set_cursor (treeview, path, 0, 0);
-    }
-    //we deleted the last one.
-
-  }
-
-  gtk_tree_path_free (path);
-
-  return;
-
-  DBG_ENTER ();
-}
-
-void
-cb_tool_button_history_call_clicked (GtkButton * button,
-                                     MokoDialerData * appdata)
-{
-  DBG_ENTER ();
-
-
-
-}
-
-void
-cb_tool_button_history_sms_clicked (GtkButton * button,
-                                    MokoDialerData * appdata)
-{
-  DBG_ENTER ();
-
-
-
-}
-
-void
-cb_tool_button_history_back_clicked (GtkButton * button,
-                                     MokoDialerData * appdata)
-{
-  gtk_widget_hide (appdata->window_history);
-
-}
-
-
-void
-on_window_history_hide (GtkWidget * widget, MokoDialerData * appdata)
-{
-
-  gtk_widget_hide (appdata->wheel_history);
-  gtk_widget_hide (appdata->toolbox_history);
-
-}
-
-void
-on_window_history_show (GtkWidget * widget, MokoDialerData * appdata)
-{
-  DBG_ENTER ();
-
-
-
-  if (appdata->toolbox_history)
-    gtk_widget_show (appdata->toolbox_history);
-
-  if (appdata->wheel_history)
-    gtk_widget_show (appdata->wheel_history);
-
-//FIXME: some day later, the contact changed infor will be sent to the dialer.
-  if (appdata->history_need_to_update)
-  {
-    DBG_MESSAGE ("NEED TO UPDATE HISTORY");
-  }
-  history_update_counter (appdata);
-
-  DBG_LEAVE ();
-}
-
-
-
-
-gint
-window_history_init (MokoDialerData * p_dialer_data)
-{
-
-  DBG_ENTER ();
-
-
-  if (p_dialer_data->window_history == 0)
-  {
-
-    history_create_menu_history (p_dialer_data);
-
-    MokoFingerWindow *window = NULL;
-    MokoFingerToolBox *tools = NULL;
-    GtkWidget *button;
-    GtkWidget *image;
-
-//now the container--window
-    window = MOKO_FINGER_WINDOW (moko_finger_window_new ());
-    p_dialer_data->window_history = GTK_WIDGET (window);
-
-
-    moko_finger_window_set_contents (window,
-                                     create_window_history_content
-                                     (p_dialer_data));
-
-    g_signal_connect ((gpointer) window, "show",
-                      G_CALLBACK (on_window_history_show), p_dialer_data);
-    g_signal_connect ((gpointer) window, "hide",
-                      G_CALLBACK (on_window_history_hide), p_dialer_data);
-
-    //FIXME: without gtk_widget_show_all first and then hide, the history view will not show properly. -tony
-    //gtk_widget_show_all(GTK_WIDGET(window));
-
-    //now the wheel and tool box, why should the wheel and toolbox created after the gtk_widget_show_all???
-    // This causes a segfault for me... maybe a problem in libmokoui? - thomas
-    //gtk_widget_show (GTK_WIDGET (moko_finger_window_get_wheel (window)));
-
-    g_signal_connect (G_OBJECT (moko_finger_window_get_wheel (window)),
-                      "press_left_up",
-                      G_CALLBACK (cb_openmoko_history_wheel_press_left_up),
-                      p_dialer_data);
-    g_signal_connect (G_OBJECT (moko_finger_window_get_wheel (window)),
-                      "press_right_down",
-                      G_CALLBACK
-                      (cb_openmoko_history_wheel_press_right_down),
-                      p_dialer_data);
-
-    g_signal_connect (G_OBJECT (moko_finger_window_get_wheel (window)),
-                      "press_bottom",
-                      G_CALLBACK (cb_tool_button_history_back_clicked),
-                      p_dialer_data);
-
-
-    tools = moko_finger_window_get_toolbox (window);
-
-    /* TODO: remove the GTK_WIDGET() casts when libmokoui is fixed */
-    button = moko_finger_tool_box_add_button_without_label (tools);
-    image = file_new_image_from_relative_path ("phone.png");
-    moko_pixmap_button_set_finger_toolbox_btn_center_image
-      (MOKO_PIXMAP_BUTTON (button), image);
-    g_signal_connect (G_OBJECT (button), "clicked",
-                      G_CALLBACK (cb_tool_button_history_call_clicked),
-                      p_dialer_data);
-
-    button =
-      GTK_WIDGET (moko_finger_tool_box_add_button_without_label (tools));
-    image = file_new_image_from_relative_path ("sms.png");
-    moko_pixmap_button_set_finger_toolbox_btn_center_image
-      (MOKO_PIXMAP_BUTTON (button), image);
-    g_signal_connect (G_OBJECT (button), "clicked",
-                      G_CALLBACK (cb_tool_button_history_sms_clicked),
-                      p_dialer_data);
-
-
-    button =
-      GTK_WIDGET (moko_finger_tool_box_add_button_without_label (tools));
-    image = file_new_image_from_relative_path ("delete_01.png");
-    moko_pixmap_button_set_finger_toolbox_btn_center_image
-      (MOKO_PIXMAP_BUTTON (button), image);
-    g_signal_connect (G_OBJECT (button), "clicked",
-                      G_CALLBACK (cb_tool_button_history_delete_clicked),
-                      p_dialer_data);
-    button =
-      GTK_WIDGET (moko_finger_tool_box_add_button_without_label (tools));
-    image = file_new_image_from_relative_path ("exit.png");
-    moko_pixmap_button_set_finger_toolbox_btn_center_image
-      (MOKO_PIXMAP_BUTTON (button), image);
-    g_signal_connect (G_OBJECT (button), "clicked",
-                      G_CALLBACK (cb_tool_button_history_back_clicked),
-                      p_dialer_data);
-
-    p_dialer_data->wheel_history =
-      GTK_WIDGET (moko_finger_window_get_wheel (window));
-    p_dialer_data->toolbox_history = GTK_WIDGET (tools);
-    DBG_LEAVE ();
-  }
-  else
-  {
-    //here we have to refresh it.
-    DBG_TRACE ();
-  }
-  return 1;
-}
-
-void
-on_treeviewHistory_cursor_changed (GtkTreeView * treeview, gpointer user_data)
-{
-  GtkTreeIter iter;
-  GtkTreeModel *model;
-  GtkTreeSelection *selection;
-  HISTORY_ENTRY *p;
-  int hasname;
-  MokoDialerData *p_dialer_data = (MokoDialerData *) user_data;
-
-  selection =
-    gtk_tree_view_get_selection (GTK_TREE_VIEW
-                                 (p_dialer_data->treeview_history));
-
-  if (!gtk_tree_selection_get_selected (selection, &model, &iter))
-  {
-    p_dialer_data->g_currentselected = 0;
-    return;
-  }
-
-  gtk_tree_model_get (model, &iter, COLUMN_ENTRYPOINTER, &p, -1);
-
-  p_dialer_data->g_currentselected = p;
-
-  gtk_tree_model_get (model, &iter, COLUMN_HASNAME, &hasname, -1);
-  history_update_counter (p_dialer_data);
-
-}
-
-
-
-GtkWidget *
-create_window_history_content (MokoDialerData * p_dialer_data)
-{
-
-  GtkWidget *treeviewHistory;
-  GtkWidget *vbox = gtk_vbox_new (FALSE, 0);
-  gtk_widget_show (vbox);
-  //FIRST of all, the top title area;
-  GtkWidget *eventboxTop = gtk_event_box_new ();
-  gtk_widget_show (eventboxTop);
-  gtk_box_pack_start (GTK_BOX (vbox), eventboxTop, FALSE, FALSE, 5);
-  gtk_widget_set_size_request (eventboxTop, 480, 64);
-  gtk_widget_set_name (eventboxTop, "gtkeventbox-black");
-
-  GtkWidget *hbox67 = gtk_hbox_new (FALSE, 0);
-  gtk_widget_show (hbox67);
-  gtk_container_add (GTK_CONTAINER (eventboxTop), hbox67);
-
-  GtkWidget *eventboxLeftTop = gtk_event_box_new ();
-  gtk_widget_show (eventboxLeftTop);
-  gtk_box_pack_start (GTK_BOX (hbox67), eventboxLeftTop, FALSE, TRUE, 0);
-  gtk_widget_set_name (eventboxLeftTop, "gtkeventbox-black");
-
-
-
-  GtkWidget *imageLeftMenu = file_new_image_from_relative_path ("all.png");
-  gtk_widget_show (imageLeftMenu);
-  gtk_container_add (GTK_CONTAINER (eventboxLeftTop), imageLeftMenu);
-
-  GtkWidget *labelHistoryTitle = gtk_label_new (("History-"));
-  gtk_widget_show (labelHistoryTitle);
-  gtk_box_pack_start (GTK_BOX (hbox67), labelHistoryTitle, FALSE, FALSE, 0);
-  gtk_widget_set_size_request (labelHistoryTitle, 221, -1);
-  gtk_label_set_justify (GTK_LABEL (labelHistoryTitle), GTK_JUSTIFY_RIGHT);
-  gtk_misc_set_alignment (GTK_MISC (labelHistoryTitle), 1, 0.5);
-
-  GtkWidget *labelFilter = gtk_label_new (("All"));
-  gtk_widget_show (labelFilter);
-  gtk_box_pack_start (GTK_BOX (hbox67), labelFilter, TRUE, TRUE, 0);
-  gtk_misc_set_alignment (GTK_MISC (labelFilter), 0, 0.5);
-  p_dialer_data->label_filter_history = labelFilter;
-
-  GtkWidget *labelCounter = gtk_label_new (("0/0"));
-  gtk_widget_show (labelCounter);
-  gtk_box_pack_start (GTK_BOX (hbox67), labelCounter, TRUE, TRUE, 0);
-  gtk_label_set_justify (GTK_LABEL (labelCounter), GTK_JUSTIFY_RIGHT);
-  gtk_misc_set_alignment (GTK_MISC (labelCounter), 0.8, 0.5);
-  p_dialer_data->label_counter_history = labelCounter;
-
-  g_signal_connect ((gpointer) eventboxTop, "button_release_event",
-                    G_CALLBACK (on_eventboxTop_button_release_event),
-                    p_dialer_data);
-
-  GtkWidget *align = gtk_alignment_new (0, 0, 1, 1);
-  gtk_alignment_set_padding (GTK_ALIGNMENT (align), 0, 150, 0, 0);      //FIXME too many numbers has to be retrieved from style
-
-  GtkWidget *scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
-  gtk_widget_show (scrolledwindow);
-  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow),
-                                  GTK_POLICY_NEVER, GTK_POLICY_NEVER);
-
-  treeviewHistory = gtk_tree_view_new ();
-  gtk_widget_show (treeviewHistory);
-  gtk_container_add (GTK_CONTAINER (align), scrolledwindow);
-  gtk_container_add (GTK_CONTAINER (scrolledwindow), treeviewHistory);
-
-
-  gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeviewHistory), FALSE);
-  gtk_tree_view_set_enable_search (GTK_TREE_VIEW (treeviewHistory), FALSE);
-//   gtk_misc_set_alignment (GTK_MISC (treeviewHistory), 0.5, 0.5);
-  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
-
-
-  gtk_widget_set_name (treeviewHistory, "gtktreeview-black");
-  p_dialer_data->treeview_history = treeviewHistory;
-  history_build_history_list_view (p_dialer_data);
-  gtk_widget_set_size_request (scrolledwindow, -1, 400);
-//  gtk_misc_set_alignment (GTK_MISC (treeviewHistory),1,0.1);
-
-
-  g_signal_connect ((gpointer) treeviewHistory, "cursor_changed",
-                    G_CALLBACK (on_treeviewHistory_cursor_changed),
-                    p_dialer_data);
-
-  gtk_widget_show (vbox);
-  return vbox;
-}
-
-
-/**
- * @brief re-filter the treeview widget by current history type,a callback when the history treeview refreshes
- *
- * this callback will be called for every treemodel iters,whenever the treeview filter is refreshing
- *
- * @param model GtkTreeModel *, the background database of the treeview
- * @param iter GtkTreeIter *, the iterator of every item of the model.
- * @param  data gpointer , of no use currently
- * @return boolean
- * @retval TRUE means the iter will be displayed
- * @retval  FALSE means the iter will not be displayed
- */
-static gboolean
-history_view_filter_visible_function (GtkTreeModel * model,
-                                      GtkTreeIter * iter, gpointer data)
-{
-  MokoDialerData *p_dialer_data = (MokoDialerData *) data;
-  HISTORY_TYPE type;
-  if (p_dialer_data->g_history_filter_type == ALL)
-    return TRUE;
-  gtk_tree_model_get (model, iter, COLUMN_TYPE, &type, -1);
-  if (type == p_dialer_data->g_history_filter_type)
-    return TRUE;
-  else
-    return FALSE;
-}
-
-
-
-/**
- * @brief find the treeview in the window, fill-in the data and show it on the screen.
- *
- *
- *
- * @param window GtkWidget* the window which contains the history treeview. but it's not necessarilly
- *to be a window, any widget that can help to lookup the treeview will be OK.
- * @return 
- * @retval 0 error occured
- * @retval 1 everything is OK
- */
-
-gint
-history_build_history_list_view (MokoDialerData * p_dialer_data)
-{
-  GtkListStore *list_store;
-
-  GtkTreeIter iter;
-  HISTORY_ENTRY *entry;
-
-  //copied
-  GtkTreeViewColumn *col;
-  GtkCellRenderer *renderer;
-
-  //GtkTreeModel        *model;
-  GtkWidget *contactview = NULL;
-
-  //DBG_ENTER();
-
-  //DBG_TRACE();
-  p_dialer_data->g_history_filter_type = ALL;
-  contactview = p_dialer_data->treeview_history;
-
-  if (contactview == NULL)
-    return 0;
-//pack image and label
-  col = gtk_tree_view_column_new ();
-
-  gtk_tree_view_column_set_title (col, ("Title"));
-  gtk_tree_view_column_set_resizable (col, TRUE);
-
-
-
-  renderer = gtk_cell_renderer_pixbuf_new ();
-  gtk_tree_view_column_pack_start (col, renderer, FALSE);
-  gtk_tree_view_column_set_attributes (col, renderer,
-                                       "pixbuf", COLUMN_TYPEICON, NULL);
-
-  renderer = gtk_cell_renderer_text_new ();
-  gtk_tree_view_column_pack_start (col, renderer, FALSE);
-  gtk_tree_view_column_set_attributes (col, renderer,
-                                       "text", COLUMN_TIME, NULL);
-
-  renderer = gtk_cell_renderer_text_new ();
-  gtk_tree_view_column_pack_start (col, renderer, FALSE);
-  gtk_tree_view_column_set_attributes (col, renderer,
-                                       "text", COLUMN_SEPRATE, NULL);
-
-  renderer = gtk_cell_renderer_text_new ();
-  gtk_tree_view_column_pack_start (col, renderer, TRUE);
-  gtk_tree_view_column_set_attributes (col, renderer,
-                                       "text", COLUMN_NAME_NUMBER, NULL);
-
-
-  gtk_tree_view_append_column (GTK_TREE_VIEW (contactview), col);
-
-
-  entry = p_dialer_data->g_historylist.first;
-
-  list_store = gtk_list_store_new (N_COLUMN, G_TYPE_INT, GDK_TYPE_PIXBUF,
-                                   G_TYPE_STRING, G_TYPE_STRING,
-                                   G_TYPE_STRING, G_TYPE_INT, G_TYPE_POINTER,
-                                   G_TYPE_INT, -1);
-  //we will use a filter to facilitate the filtering in treeview without rebuilding the database.                         
-  p_dialer_data->g_list_store_filter =
-    gtk_tree_model_filter_new (GTK_TREE_MODEL (list_store), NULL);
-  gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER
-                                          (p_dialer_data->
-                                           g_list_store_filter),
-                                          history_view_filter_visible_function,
-                                          p_dialer_data, NULL);
-
-  //load the three icons to memory.
-
-  // GError *error = NULL;
-  p_dialer_data->g_iconReceived = create_pixbuf ("received.png");
-
-  /* FIXME: error handling hasn't been implemented yet!
-     p_dialer_data->g_iconReceived = create_pixbuf ("received.png", &error);
-     if (error)
-     {
-     DBG_WARN ("Cound not load icon :%s", error->message);
-     g_error_free (error);
-     p_dialer_data->g_iconReceived = NULL;
-     error = NULL;
-     }
-   */
-
-  p_dialer_data->g_iconDialed = create_pixbuf ("dialed.png");
-  /* FIXME: error handling hasn't been implemented yet!
-     p_dialer_data->g_iconDialed = create_pixbuf ("dialed.png", &error);
-     if (error)
-     {
-     DBG_WARN ("Cound not load icon :%s", error->message);
-     g_error_free (error);
-     p_dialer_data->g_iconDialed = NULL;
-     error = NULL;
-     }
-   */
-
-  p_dialer_data->g_iconMissed = create_pixbuf ("missed.png");
-  /* FIXME: error handling hasn't been implemented yet!
-     p_dialer_data->g_iconMissed = create_pixbuf ("missed.png", &error);
-     if (error)
-     {
-     DBG_WARN ("Cound not load icon :%s", error->message);
-     g_error_free (error);
-     p_dialer_data->g_iconMissed = NULL;
-     error = NULL;
-     }
-   */
-
-  while (entry)
-  {
-    //DBG_MESSAGE(entry->number);
-    gtk_list_store_append (list_store, &iter);
-    gtk_list_store_set (list_store, &iter, COLUMN_TYPE, entry->type,
-                        COLUMN_SEPRATE, "--", COLUMN_TIME, entry->time,
-                        COLUMN_DURATION, entry->durationsec,
-                        COLUMN_ENTRYPOINTER, entry, COLUMN_HASNAME, 0, -1);
-    if (entry->name == 0)
-    {
-      //DBG_MESSAGE(entry->number);
-      gtk_list_store_set (list_store, &iter, COLUMN_NAME_NUMBER,
-                          entry->number, -1);
-      gtk_list_store_set (list_store, &iter, COLUMN_HASNAME, 0, -1);
-    }
-    else
-    {
-      gtk_list_store_set (list_store, &iter, COLUMN_NAME_NUMBER,
-                          entry->name, -1);
-      gtk_list_store_set (list_store, &iter, COLUMN_HASNAME, 1, -1);
-    }
-    switch (entry->type)
-    {
-    case INCOMING:
-      {
-        gtk_list_store_set (list_store, &iter, COLUMN_TYPEICON,
-                            p_dialer_data->g_iconReceived, -1);
-        //      icon=gdk_pixbuf_new_from_file("./received.png",&error);
-        break;
-      }
-    case OUTGOING:
-      {                         //     icon=gdk_pixbuf_new_from_file("./dialed.png",&error);
-        gtk_list_store_set (list_store, &iter, COLUMN_TYPEICON,
-                            p_dialer_data->g_iconDialed, -1);
-        break;
-      }
-    case MISSED:
-      {                         //icon=gdk_pixbuf_new_from_file("./missed.png",&error);
-        gtk_list_store_set (list_store, &iter, COLUMN_TYPEICON,
-                            p_dialer_data->g_iconMissed, -1);
-        break;
-      }
-
-    default:
-
-      {                         //icon=gdk_pixbuf_new_from_file("./missed.png",&error);
-        gtk_list_store_set (list_store, &iter, COLUMN_TYPEICON,
-                            p_dialer_data->g_iconMissed, -1);
-        break;
-      }
-    }
-
-
-
-    entry = entry->next;
-  }
-
-  gtk_tree_view_set_model (GTK_TREE_VIEW (contactview),
-                           GTK_TREE_MODEL (p_dialer_data->
-                                           g_list_store_filter));
-
-  g_object_unref (list_store);
-
-  return 1;
-}
-
-
-/**
- * @brief update the counter display widget - labelCounter
- *
- * @param widget GtkWidget*, any widget in the same window with treeviewHistory and labelCounter
- *
- * @return 1
- */
-gint
-history_update_counter (MokoDialerData * p_dialer_data)
-{
-  DBG_ENTER ();
-  GtkTreeIter iter;
-  GtkTreeModel *model;
-  GtkTreeSelection *selection;
-  GtkTreePath *path;
-  GtkTreeView *treeview;
-  int count = 0;
-  int nth = 0;
-  char *pathstring;
-  char display[10];
-
-  treeview = GTK_TREE_VIEW (p_dialer_data->treeview_history);
-  if (!p_dialer_data->treeview_history)
-  {
-    DBG_WARN ("COUNTER NOT READY ");
-    return 0;
-  }
-
-
-  model = gtk_tree_view_get_model (treeview);
-
-  count = gtk_tree_model_iter_n_children (model, NULL);
-
-  selection = gtk_tree_view_get_selection (treeview);
-
-  if (!gtk_tree_selection_get_selected (selection, &model, &iter))
-  {
-    nth = 0;
-  }
-  else
-  {
-    path = gtk_tree_model_get_path (model, &iter);
-    pathstring = gtk_tree_path_to_string (path);
-    nth = atoi (pathstring) + 1;
-    gtk_tree_path_free (path);
-
-  }
-
-  GtkWidget *labelcounter;
-  labelcounter = p_dialer_data->label_counter_history;
-  sprintf (display, "%d/%d", nth, count);
-  gtk_label_set_text (GTK_LABEL (labelcounter), display);
-  return 1;
-
-}
-
-GtkWidget *
-history_create_menu_history (MokoDialerData * p_dialer_data)
-{
-  if (!p_dialer_data->menu_history)
-  {
-    GtkWidget *menu_history;
-    GtkWidget *all_calls;
-    GtkWidget *imageAll;
-    GtkWidget *separator1;
-    GtkWidget *missed_calls;
-    GtkWidget *imageMissed;
-    GtkWidget *separator3;
-    GtkWidget *dialed_calls;
-    GtkWidget *imageDialed;
-    GtkWidget *separator2;
-    GtkWidget *received_calls;
-    GtkWidget *imageReceived;
-
-    menu_history = gtk_menu_new ();
-    gtk_container_set_border_width (GTK_CONTAINER (menu_history), 2);
-
-    all_calls = gtk_image_menu_item_new_with_mnemonic (("Calls All"));
-    gtk_widget_show (all_calls);
-    gtk_container_add (GTK_CONTAINER (menu_history), all_calls);
-    gtk_widget_set_size_request (all_calls, 250, 60);
-
-
-    imageAll = file_new_image_from_relative_path ("all.png");
-    gtk_widget_show (imageAll);
-    gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (all_calls), imageAll);
-
-    separator1 = gtk_separator_menu_item_new ();
-    gtk_widget_show (separator1);
-    gtk_container_add (GTK_CONTAINER (menu_history), separator1);
-    gtk_widget_set_size_request (separator1, 120, -1);
-    gtk_widget_set_sensitive (separator1, FALSE);
-
-    missed_calls = gtk_image_menu_item_new_with_mnemonic (("Calls Missed "));
-    gtk_widget_show (missed_calls);
-    gtk_container_add (GTK_CONTAINER (menu_history), missed_calls);
-    gtk_widget_set_size_request (missed_calls, 120, 60);
-
-    //imageMissed = gtk_image_new_from_stock ("gtk-goto-bottom", GTK_ICON_SIZE_MENU);
-    imageMissed = file_new_image_from_relative_path ("missed.png");
-
-    gtk_widget_show (imageMissed);
-    gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (missed_calls),
-                                   imageMissed);
-
-    separator3 = gtk_separator_menu_item_new ();
-    gtk_widget_show (separator3);
-    gtk_container_add (GTK_CONTAINER (menu_history), separator3);
-    gtk_widget_set_size_request (separator3, 120, -1);
-    gtk_widget_set_sensitive (separator3, FALSE);
-
-    dialed_calls = gtk_image_menu_item_new_with_mnemonic (("Calls Dialed"));
-    gtk_widget_show (dialed_calls);
-    gtk_container_add (GTK_CONTAINER (menu_history), dialed_calls);
-    gtk_widget_set_size_request (dialed_calls, 120, 60);
-
-    // imageDialed = gtk_image_new_from_stock ("gtk-go-up", GTK_ICON_SIZE_MENU);
-    imageDialed = file_new_image_from_relative_path ("dialed.png");
-    gtk_widget_show (imageDialed);
-    gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (dialed_calls),
-                                   imageDialed);
-
-    separator2 = gtk_separator_menu_item_new ();
-    gtk_widget_show (separator2);
-    gtk_container_add (GTK_CONTAINER (menu_history), separator2);
-    gtk_widget_set_size_request (separator2, 120, -1);
-    gtk_widget_set_sensitive (separator2, FALSE);
-
-    received_calls =
-      gtk_image_menu_item_new_with_mnemonic (("Calls Received "));
-    gtk_widget_show (received_calls);
-    gtk_container_add (GTK_CONTAINER (menu_history), received_calls);
-    gtk_widget_set_size_request (received_calls, 120, 60);
-
-//  imageReceived = gtk_image_new_from_stock ("gtk-go-down", GTK_ICON_SIZE_MENU);
-    imageReceived = file_new_image_from_relative_path ("received.png");
-    gtk_widget_show (imageReceived);
-    gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (received_calls),
-                                   imageReceived);
-
-    g_signal_connect ((gpointer) all_calls, "activate",
-                      G_CALLBACK (on_all_calls_activate), p_dialer_data);
-    g_signal_connect ((gpointer) missed_calls, "activate",
-                      G_CALLBACK (on_missed_calls_activate), p_dialer_data);
-    g_signal_connect ((gpointer) dialed_calls, "activate",
-                      G_CALLBACK (on_dialed_calls_activate), p_dialer_data);
-    g_signal_connect ((gpointer) received_calls, "activate",
-                      G_CALLBACK (on_received_calls_activate), p_dialer_data);
-
-    p_dialer_data->menu_history = menu_history;
-    return menu_history;
-  }
-  else
-    return p_dialer_data->menu_history;
-}
-
-
-
-/**
- * @brief add an entry to the history treeview
- *
- *
- *
- * @param entry HISTORY_ENTRY *, the history entry to be added to the treeview.
- * @return 
- * @retval 0 error occured
- * @retval 1 everything is OK
- */
-gint
-history_list_view_add (MokoDialerData * appdata, HISTORY_ENTRY * entry)
-{
-  DBG_ENTER ();
-  if (entry == 0)
-  {
-    DBG_ERROR ("THE ENTRY IS ZERO");
-    return 0;
-  }
-
-  if (appdata->treeview_history == 0)
-  {
-    DBG_WARN ("treeview_history not ready");
-    return 0;
-
-  }
-  //
-  GtkTreeIter iter;             //iter of the filter store
-  GtkTreeModel *model;
-  GtkListStore *list_store;
-  GtkTreeView *treeview;
-
-  treeview = GTK_TREE_VIEW (appdata->treeview_history);
-
-  model =
-    gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER
-                                     (appdata->g_list_store_filter));
-
-  list_store = GTK_LIST_STORE (model);
-  //
-
-
-  //DBG_MESSAGE(entry->number);
-  gtk_list_store_insert (list_store, &iter, 0);
-  gtk_list_store_set (list_store, &iter, COLUMN_TYPE, entry->type,
-                      COLUMN_SEPRATE, "--", COLUMN_TIME, entry->time,
-                      COLUMN_DURATION, entry->durationsec,
-                      COLUMN_ENTRYPOINTER, entry, COLUMN_HASNAME, 0, -1);
-  if (entry->name == 0)
-  {
-    //DBG_MESSAGE(entry->number);
-    gtk_list_store_set (list_store, &iter, COLUMN_NAME_NUMBER,
-                        entry->number, -1);
-    gtk_list_store_set (list_store, &iter, COLUMN_HASNAME, 0, -1);
-  }
-  else
-  {
-    gtk_list_store_set (list_store, &iter, COLUMN_NAME_NUMBER, entry->name,
-                        -1);
-    gtk_list_store_set (list_store, &iter, COLUMN_HASNAME, 1, -1);
-  }
-  switch (entry->type)
-  {
-  case INCOMING:
-    {
-      gtk_list_store_set (list_store, &iter, COLUMN_TYPEICON,
-                          appdata->g_iconReceived, -1);
-      //      icon=gdk_pixbuf_new_from_file("./received.png",&error);
-      break;
-    }
-  case OUTGOING:
-    {                           //     icon=gdk_pixbuf_new_from_file("./dialed.png",&error);
-      gtk_list_store_set (list_store, &iter, COLUMN_TYPEICON,
-                          appdata->g_iconDialed, -1);
-      break;
-    }
-  case MISSED:
-    {                           //icon=gdk_pixbuf_new_from_file("./missed.png",&error);
-      gtk_list_store_set (list_store, &iter, COLUMN_TYPEICON,
-                          appdata->g_iconMissed, -1);
-      break;
-    }
-
-  default:
-
-    {                           //icon=gdk_pixbuf_new_from_file("./missed.png",&error);
-      gtk_list_store_set (list_store, &iter, COLUMN_TYPEICON,
-                          appdata->g_iconMissed, -1);
-      break;
-    }
-  }
-  history_update_counter (appdata);
-  return 1;
-}
-
-
-gint
-add_histroy_entry (MokoDialerData * appdata, HISTORY_TYPE type,
-                   const char *name, const char *number, const char *id,
-                   char *time, char *date, int durationsec)
-{
-
-//DBG_ENTER();
-  //DBG_MESSAGE("History add:%s,%s,%s,%s,%s,%d",name,number,picpath,time,date,durationsec);
-  HISTORY_ENTRY *pentry =
-    history_add_entry (&(appdata->g_historylist), type, name, number, id,
-                       time, date, durationsec);
-  return history_list_view_add (appdata, pentry);
-}

Deleted: trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-history.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-history.h	2007-04-26 03:38:14 UTC (rev 1842)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-history.h	2007-04-26 12:16:43 UTC (rev 1843)
@@ -1,49 +0,0 @@
-/*  openmoko-dialer-window-history.h
- *
- *  Authored By Tony Guan<tonyguan at fic-sh.com.cn>
- *
- *  Copyright (C) 2006 FIC Shanghai Lab
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU Public License as published by
- *  the Free Software Foundation; version 2.1 of the license.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Lesser Public License for more details.
- *
- *  Current Version: $Rev$ ($Date) [$Author: Tony Guan $]
- */
-#include "moko-dialer-includes.h"
-
-#ifndef _OPENMOKO_DIALER_WINDOW_HISTORY_H
-#define _OPENMOKO_DIALER_WINDOW_HISTORY_H
-
-#ifdef __cplusplus
-
-
-
-extern "C"
-{
-#endif
-
-
-  GtkWidget *create_window_history_content (MokoDialerData *
-                                            p_dialer_data);
-  gint window_history_init (MokoDialerData * p_dialer_data);
-  gint history_build_history_list_view (MokoDialerData * p_dialer_data);
-  void window_history_prepare (MokoDialerData * appdata);
-  GtkWidget *history_create_menu_history (MokoDialerData *
-                                          p_dialer_data);
-  gint add_histroy_entry (MokoDialerData * appdata, HISTORY_TYPE type,
-                          const char *name, const char *number,
-                          const char *picpath, char *time, char *date,
-                          int durationsec);
-  gint history_list_view_add (MokoDialerData * appdata,
-                              HISTORY_ENTRY * entry);
-#ifdef __cplusplus
-}
-#endif
-
-#endif

Deleted: trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-incoming.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-incoming.c	2007-04-26 03:38:14 UTC (rev 1842)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-incoming.c	2007-04-26 12:16:43 UTC (rev 1843)
@@ -1,281 +0,0 @@
-/*   openmoko-dialer-window-incoming.c
- *
- *  Authored by Tony Guan<tonyguan at fic-sh.com.cn>
- *
- *  Copyright (C) 2006 FIC Shanghai Lab
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU Public License as published by
- *  the Free Software Foundation; version 2 of the license.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Lesser Public License for more details.
- *
- *  Current Version: $Rev$ ($Date) [$Author: Tony Guan $]
- */  
-  
-#include <libmokoui/moko-finger-tool-box.h>
-#include <libmokoui/moko-finger-window.h>
-#include <libmokoui/moko-finger-wheel.h>
-#include <libmokoui/moko-pixmap-button.h>
-  
-#include <gtk/gtkalignment.h>
-#include <gtk/gtkbutton.h>
-#include <gtk/gtkhbox.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkmain.h>
-#include <gtk/gtkmenu.h>
-#include <gtk/gtkmenuitem.h>
-#include <gtk/gtkvbox.h>
-  
-#include "contacts.h"
-#include "openmoko-dialer-main.h"
-#include "moko-dialer-status.h"
-#include "openmoko-dialer-window-incoming.h"
-#include "openmoko-dialer-window-talking.h"
-#include "openmoko-dialer-window-history.h"
-#include "history.h"
-void 
-cb_answer_button_clicked (GtkButton * button,
-                          MokoDialerData * appdata) 
-{
-  DBG_ENTER ();
-  appdata->g_state.callstate = STATE_TALKING;
-  /* TODO: MokoGsmdConnection->answer
-   * gsm_answer ();
-   */
-
-  gtk_widget_hide (appdata->window_incoming);
-
-  //transfer the contact info
-   window_talking_prepare (appdata);
-  gtk_widget_show (appdata->window_talking);
-  DBG_LEAVE ();
-} 
-
-void
-cb_ignore_button_clicked (GtkButton * button,
-                          MokoDialerData * appdata) 
-{
-  DBG_ENTER ();
-  DBG_MESSAGE ("We will mute the phone for this call.");
-  appdata->g_state.callstate = STATE_IGNORED;
-  DBG_LEAVE ();
-} void 
-
-cb_reject_button_clicked (GtkButton * button,
-                          MokoDialerData * appdata) 
-{
-  DBG_ENTER ();
-  /* TODO: MokoGsmdConnection->hangup
-   * gsm_hangup ();
-   */
-  appdata->g_state.callstate = STATE_REJECTED;
-  gtk_widget_hide (appdata->window_incoming);
-  DBG_LEAVE ();
-}
-
-void
-window_incoming_prepare (MokoDialerData * appdata) 
-{
-  if (!appdata)
-    
-  {
-    DBG_WARN ("appdata=NULL!");
-    return;
-  }
-  if (appdata->window_incoming == 0)
-    
-  {
-    window_incoming_init (appdata);
-  }
-  moko_dialer_status_set_person_number (appdata->status_incoming,
-                                          appdata->g_peer_info.number);
-  if (appdata->g_peer_info.hasname)
-    
-  {
-    moko_dialer_status_set_person_image (appdata->status_incoming,
-                                           appdata->g_peer_info.ID);
-    moko_dialer_status_set_person_name (appdata->status_incoming,
-                                         appdata->g_peer_info.name);
-  }
-  
-  else
-    
-  {
-    moko_dialer_status_set_person_image (appdata->status_incoming, "");
-    moko_dialer_status_set_person_name (appdata->status_incoming, "");
-  }
-}
-void 
-window_incoming_fails (MokoDialerData * appdata) 
-{
-  DBG_ENTER ();
-  DBG_LEAVE ();
-} gint  timer_incoming_time_out (MokoDialerData * appdata) 
-{
-  
-//DBG_ENTER();
-    TIMER_DATA * timer_data = &(appdata->g_timer_data);
-  moko_dialer_status_update_icon (appdata->status_incoming);
-  
-//now that we have the incoming call status report correctly, the timeout mechanism is not needed.
-/*
-  if (event_get_keep_calling ())
-  {
-    event_reset_keep_calling ();
-    timer_data->ticks = 0;
-  }
-  else
-  {                             //we count 4 before we confirm that there are no calling at all.
-    if (timer_data->ticks >= 3)
-    {
-      DBG_MESSAGE ("THE CALLER aborted, we quit.");
-      gsm_hangup ();
-      appdata->g_state.callstate = STATE_MISSED;
-      appdata->g_state.historytype = MISSED;
-      gdk_threads_enter ();
-      gtk_widget_hide (appdata->window_incoming);
-      gdk_threads_leave ();
-      return 0;                 //don't lookout the timeout.
-    }
-    else
-    {
-      DBG_MESSAGE ("ticks=%d", timer_data->ticks);
-      timer_data->ticks++;
-    }
-  }
-*/ 
-    return 1;
-}
-void 
-on_window_incoming_hide (GtkWidget * widget, MokoDialerData * appdata) 
-{
-  DBG_ENTER ();
-  if (appdata->g_timer_data.ptimer != 0)
-    
-  {
-    g_source_remove (appdata->g_timer_data.ptimer);
-    appdata->g_timer_data.ptimer = 0;
-  }
-  /*
-  event_reset_clip_signaled ();
-  event_reset_incoming_signaled ();
-  event_reset_keep_calling ();
-  */
-  if (appdata->g_state.callstate != STATE_TALKING)
-    
-  {                             //     add_histroy_entry(g_state.historytype,g_state.contactinfo.name,g_state.contactinfo.number,g_state.contactinfo.picpath,g_state.starttime,0);
-    add_histroy_entry (appdata, appdata->g_state.historytype,
-                        appdata->g_peer_info.name,
-                        appdata->g_peer_info.number,
-                        appdata->g_peer_info.ID,
-                        appdata->g_state.starttime,
-                        appdata->g_state.startdate, 0);
-  }
-  DBG_LEAVE ();
-}
-void 
-window_incoming_setup_timer (MokoDialerData * appdata) 
-{
-  time_t timep;
-  struct tm *p;
-  time (&timep);
-  p = localtime (&timep);
-  sprintf (appdata->g_state.starttime, "%02d:%02d:%02d", p->tm_hour,
-             p->tm_min, p->tm_sec);
-  sprintf (appdata->g_state.startdate, "%04d/%02d/%02d", p->tm_year,
-            p->tm_mon, p->tm_mday);
-  if (appdata->g_timer_data.ptimer != 0)
-    
-  {
-    g_source_remove (appdata->g_timer_data.ptimer);
-    appdata->g_timer_data.ptimer = 0;
-  }
-  memset (&(appdata->g_timer_data), 0, sizeof (appdata->g_timer_data));
-  appdata->g_timer_data.stopsec = 0;
-  appdata->g_timer_data.ptimer =
-    g_timeout_add (1000, (GSourceFunc) timer_incoming_time_out,
-                    (gpointer) appdata);
-}
-void 
-on_window_incoming_show (GtkWidget * widget, MokoDialerData * appdata) 
-{
-  DBG_ENTER ();
-  appdata->g_state.callstate = STATE_INCOMING;
-  window_incoming_setup_timer (appdata);
-  DBG_LEAVE ();
-} gint  window_incoming_init (MokoDialerData * p_dialer_data) 
-{
-  DBG_ENTER ();
-  MokoFingerWindow * window;
-  GtkWidget * vbox;
-  GtkWidget * status;
-  if (p_dialer_data->window_incoming == 0)
-    
-  {
-    vbox = gtk_vbox_new (FALSE, 0);
-    status = moko_dialer_status_new ();
-    moko_dialer_status_add_status_icon (MOKO_DIALER_STATUS (status),
-                                         "incoming_0.png");
-    moko_dialer_status_add_status_icon (MOKO_DIALER_STATUS (status),
-                                         "incoming_1.png");
-    moko_dialer_status_add_status_icon (MOKO_DIALER_STATUS (status),
-                                         "incoming_2.png");
-    moko_dialer_status_add_status_icon (MOKO_DIALER_STATUS (status),
-                                         "incoming_3.png");
-    moko_dialer_status_set_icon_by_index (MOKO_DIALER_STATUS (status), 0);
-    gtk_box_pack_start (GTK_BOX (vbox), status, FALSE, FALSE, 0);
-    GtkWidget * hbox2 = gtk_hbox_new (FALSE, 0);
-    GtkWidget * button = gtk_button_new_with_label ("Answer");
-    gtk_button_set_image (GTK_BUTTON (button),
-                           file_new_image_from_relative_path ("answer.png"));
-    g_signal_connect (G_OBJECT (button), "clicked",
-                       G_CALLBACK (cb_answer_button_clicked), p_dialer_data);
-    gtk_box_pack_start (GTK_BOX (hbox2), GTK_WIDGET (button), TRUE, TRUE,
-                          10);
-    button = gtk_button_new_with_label ("Ignore");
-    g_signal_connect (G_OBJECT (button), "clicked",
-                       G_CALLBACK (cb_ignore_button_clicked), p_dialer_data);
-    gtk_box_pack_start (GTK_BOX (hbox2), GTK_WIDGET (button), TRUE, TRUE,
-                         10);
-    button = gtk_button_new_with_label ("Reject");
-    gtk_button_set_image (GTK_BUTTON (button),
-                           file_new_image_from_relative_path ("cancel.png"));
-    g_signal_connect (G_OBJECT (button), "clicked",
-                       G_CALLBACK (cb_reject_button_clicked), p_dialer_data);
-    gtk_box_pack_start (GTK_BOX (hbox2), GTK_WIDGET (button), TRUE, TRUE,
-                         10);
-    gtk_box_pack_start (GTK_BOX (vbox), hbox2, FALSE, FALSE, 50);
-    
-//currently     MokoDialogWindow is not finished, wating...
-//   MokoDialogWindow* window = (MokoDialogWindow *)(moko_dialog_window_new());
-//  moko_dialog_window_set_contents( window, GTK_WIDGET(vbox) );
-      window = MOKO_FINGER_WINDOW (moko_finger_window_new ());
-    moko_finger_window_set_contents (window, GTK_WIDGET (vbox));
-    
-      //FIXME: dear thomas, I know that show & hide is not good, but when you removed the following 2 lines, the incoming window
-      //is simply not displaying well. please have a try and then commit. If you cannot test the incoming window, you can simply modify the code to show it out debuggingly.
-      //Pardon me to re-add the 2 lines. Tony Guan 14,3,2007
-      gtk_widget_show_all (GTK_WIDGET (window));
-    gtk_widget_hide (GTK_WIDGET (window));
-    moko_dialer_status_set_title_label (MOKO_DIALER_STATUS (status),
-                                          "Incoming call");
-    moko_dialer_status_set_status_label (MOKO_DIALER_STATUS (status), "");
-    p_dialer_data->window_incoming = GTK_WIDGET (window);
-    p_dialer_data->status_incoming = MOKO_DIALER_STATUS (status);
-    
-//   DBG_MESSAGE("p_dialer_data->status_incoming=0X%x",p_dialer_data->status_incoming);
-      g_signal_connect ((gpointer) window, "show",
-                          G_CALLBACK (on_window_incoming_show),
-                          p_dialer_data);
-    g_signal_connect ((gpointer) window, "hide",
-                       G_CALLBACK (on_window_incoming_hide), p_dialer_data);
-  }
-  DBG_LEAVE ();
-  return 1;
-}
-
-

Deleted: trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-incoming.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-incoming.h	2007-04-26 03:38:14 UTC (rev 1842)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-incoming.h	2007-04-26 12:16:43 UTC (rev 1843)
@@ -1,40 +0,0 @@
-/*  openmoko-dialer-window-outgoing.h
- *
- *  Authored By Tony Guan<tonyguan at fic-sh.com.cn>
- *
- *  Copyright (C) 2006 FIC Shanghai Lab
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU Public License as published by
- *  the Free Software Foundation; version 2.1 of the license.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Lesser Public License for more details.
- *
- *  Current Version: $Rev$ ($Date) [$Author: Tony Guan $]
- */
-#include "moko-dialer-includes.h"
-
-#ifndef _OPENMOKO_DIALER_WINDOW_INCOMING_H
-#define _OPENMOKO_DIALER_WINDOW_INCOMING_H
-
-#ifdef __cplusplus
-
-
-
-extern "C"
-{
-#endif
-
-
-
-  gint window_incoming_init (MokoDialerData * p_dialer_data);
-
-  void window_incoming_prepare (MokoDialerData * appdata);
-#ifdef __cplusplus
-}
-#endif
-
-#endif

Deleted: trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-outgoing.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-outgoing.c	2007-04-26 03:38:14 UTC (rev 1842)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-outgoing.c	2007-04-26 12:16:43 UTC (rev 1843)
@@ -1,345 +0,0 @@
-/*   openmoko-dialer-window-outgoing.c
- *
- *  Authored by Tony Guan<tonyguan at fic-sh.com.cn>
- *
- *  Copyright (C) 2006 FIC Shanghai Lab
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU Public License as published by
- *  the Free Software Foundation; version 2 of the license.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Lesser Public License for more details.
- *
- *  Current Version: $Rev$ ($Date) [$Author: Tony Guan $]
- */
-
-#include <libmokoui/moko-finger-tool-box.h>
-#include <libmokoui/moko-finger-window.h>
-#include <libmokoui/moko-finger-wheel.h>
-#include <libmokoui/moko-pixmap-button.h>
-
-#include <gtk/gtkalignment.h>
-#include <gtk/gtkbutton.h>
-#include <gtk/gtkhbox.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkmain.h>
-#include <gtk/gtkmenu.h>
-#include <gtk/gtkmenuitem.h>
-#include <gtk/gtkvbox.h>
-
-#include "contacts.h"
-#include "openmoko-dialer-main.h"
-#include "moko-dialer-status.h"
-#include "openmoko-dialer-window-outgoing.h"
-#include "openmoko-dialer-window-history.h"
-#include "openmoko-dialer-window-talking.h"
-
-/* function declerations */
-void window_outgoing_setup_timer (MokoDialerData * appdata);
-
-void
-cb_speaker_button_clicked (GtkButton * button, MokoDialerData * appdata)
-{
-  DBG_ENTER ();
-  //moko_dialer_status_update_icon(appdata->status_outgoing);
-
-
-  appdata->g_state.callstate = STATE_TALKING;
-
-  gtk_widget_hide (appdata->window_outgoing);
-
-
-  //transfer the contact info
-  window_talking_prepare (appdata);
-
-  //start dialling.
-
-  DBG_TRACE ();
-//  gtk_widget_show_all (appdata->window_talking);
-  gtk_widget_show (appdata->window_talking);
-
-
-  DBG_LEAVE ();
-}
-
-void
-cb_redial_button_clicked (GtkButton * button, MokoDialerData * appdata)
-{
-  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);
-
-  appdata->g_state.callstate = STATE_CALLING;
-  appdata->g_state.historytype = OUTGOING;
-  /* TOOD: MokoGsmdConnection->dial
-   * gsm_dial (appdata->g_peer_info.number);
-   */
-
-  DBG_LEAVE ();
-}
-
-void
-cb_cancel_button_clicked (GtkButton * button, MokoDialerData * appdata)
-{
-  DBG_ENTER ();
-  /* TODO: MokoGsmdConnection->hangup
-   * gsm_hangup ();
-   */
-  appdata->g_state.callstate = STATE_FAILED;
-  DBG_TRACE ();
-  gtk_widget_hide (appdata->window_outgoing);
-  DBG_LEAVE ();
-}
-
-void
-window_outgoing_prepare (MokoDialerData * appdata)
-{
-  DBG_ENTER ();
-  if (appdata->window_outgoing == 0)
-    window_outgoing_init (appdata);
-
-
-  moko_dialer_status_set_person_number (appdata->status_outgoing,
-                                        appdata->g_peer_info.number);
-  if (appdata->g_peer_info.hasname)
-  {
-    moko_dialer_status_set_person_image (appdata->status_outgoing,
-                                         appdata->g_peer_info.ID);
-    moko_dialer_status_set_person_name (appdata->status_outgoing,
-                                        appdata->g_peer_info.name);
-  }
-  else
-  {
-    moko_dialer_status_set_person_image (appdata->status_outgoing, "");
-    moko_dialer_status_set_person_name (appdata->status_outgoing, "");
-
-  }
-//  strcpy (appdata->g_state.lastnumber, appdata->g_peer_info.number);
-  g_stpcpy (appdata->g_state.lastnumber, appdata->g_peer_info.number);
-  DBG_LEAVE ();
-
-}
-
-void
-window_outgoing_fails (MokoDialerData * appdata)
-{
-  DBG_ENTER ();
-  moko_dialer_status_set_error (appdata->status_outgoing);
-  moko_dialer_status_set_title_label (appdata->status_outgoing,
-                                      "Call Failure");
-  gtk_widget_hide (appdata->buttonSpeaker);
-  gtk_widget_show (appdata->buttonRedial);
-  DBG_LEAVE ();
-}
-
-gint
-timer_outgoing_time_out (MokoDialerData * appdata)
-{
-//DBG_ENTER();
-  TIMER_DATA *timer_data = &(appdata->g_timer_data);
-
-
-  timer_data->ticks++;
-  timer_data->hour = timer_data->ticks / 3600;
-  timer_data->min = (timer_data->ticks - timer_data->hour * 3600) / 60;
-  timer_data->sec = timer_data->ticks % 60;
-
-
-  sprintf (timer_data->timestring, "Calling ... (%02d:%02d:%02d)",
-           timer_data->hour, timer_data->min, timer_data->sec);
-
-//ok,we update the label now.
-
-
-  moko_dialer_status_set_status_label (appdata->status_outgoing,
-                                       timer_data->timestring);
-  moko_dialer_status_update_icon (appdata->status_outgoing);
-
-  if (timer_data->stopsec != 0 && timer_data->ticks >= timer_data->stopsec)
-  {
-
-    timer_data->timeout = 1;
-    g_source_remove (timer_data->ptimer);
-    timer_data->ptimer = 0;
-//maybe it failes
-    window_outgoing_fails (appdata);
-    return 0;                   //0 stops the timer.
-  }
-  else
-    return 1;
-}
-
-
-
-void
-on_window_outgoing_hide (GtkWidget * widget, MokoDialerData * appdata)
-{
-  if (appdata->g_timer_data.ptimer != 0)
-  {
-    g_source_remove (appdata->g_timer_data.ptimer);
-    appdata->g_timer_data.ptimer = 0;
-  }
-  if (appdata->g_state.callstate != STATE_TALKING)
-  {                             //     add_histroy_entry(g_state.historytype,g_state.contactinfo.name,g_state.contactinfo.number,g_state.contactinfo.picpath,g_state.starttime,0);
-
-    add_histroy_entry (appdata, appdata->g_state.historytype,
-                       appdata->g_peer_info.name,
-                       appdata->g_peer_info.number,
-                       appdata->g_peer_info.picpath,
-                       appdata->g_state.starttime,
-                       appdata->g_state.startdate, 0);
-
-  }
-
-
-}
-
-void
-window_outgoing_setup_timer (MokoDialerData * appdata)
-{
-  time_t timep;
-  struct tm *p;
-  time (&timep);
-  p = localtime (&timep);
-
-  sprintf (appdata->g_state.starttime, "%02d:%02d:%02d", p->tm_hour,
-           p->tm_min, p->tm_sec);
-  sprintf (appdata->g_state.startdate, "%04d/%02d/%02d", p->tm_year,
-           p->tm_mon, p->tm_mday);
-
-  if (appdata->g_timer_data.ptimer != 0)
-  {
-    g_source_remove (appdata->g_timer_data.ptimer);
-    appdata->g_timer_data.ptimer = 0;
-  }
-
-  memset (&(appdata->g_timer_data), 0, sizeof (appdata->g_timer_data));
-// 1:30 timeout
-  appdata->g_timer_data.stopsec = 90;
-
-  appdata->g_timer_data.ptimer =
-    g_timeout_add (1000, (GSourceFunc) timer_outgoing_time_out, appdata);
-
-
-}
-
-void
-on_window_outgoing_show (GtkWidget * widget, MokoDialerData * appdata)
-{
-
-  //DBG_ENTER ();
-  window_outgoing_setup_timer (appdata);
-  //DBG_TRACE ();
-  appdata->g_state.callstate = STATE_CALLING;
-  //DBG_TRACE ();
-  appdata->g_state.historytype = OUTGOING;
-  //DBG_TRACE ();
-  /* TODO: MokoGsmdConnection->dial
-   * int retv = gsm_dial (appdata->g_peer_info.number);
-   * DBG_MESSAGE ("GSM_DIAL returns %d", retv);
-   */
-  //DBG_LEAVE ();
-}
-
-
-gint
-window_outgoing_init (MokoDialerData * p_dialer_data)
-{
-
-  DBG_ENTER ();
-  MokoFingerWindow *window;
-  GtkWidget *vbox;
-  GtkWidget *status;
-
-  if (p_dialer_data->window_outgoing == 0)
-  {
-
-    vbox = gtk_vbox_new (FALSE, 0);
-    status = moko_dialer_status_new ();
-    moko_dialer_status_add_status_icon (MOKO_DIALER_STATUS (status),
-                                        "outgoing_0.png");
-    moko_dialer_status_add_status_icon (MOKO_DIALER_STATUS (status),
-                                        "outgoing_1.png");
-    moko_dialer_status_add_status_icon (MOKO_DIALER_STATUS (status),
-                                        "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);
-
-    gtk_box_pack_start (GTK_BOX (vbox), status, FALSE, FALSE, 0);
-
-
-    GtkWidget *hbox2 = gtk_hbox_new (FALSE, 0);
-    GtkWidget *button = gtk_button_new_with_label ("Speaker");
-    gtk_button_set_image (GTK_BUTTON (button),
-                          file_new_image_from_relative_path ("speaker.png"));
-    g_signal_connect (G_OBJECT (button), "clicked",
-                      G_CALLBACK (cb_speaker_button_clicked), p_dialer_data);
-    p_dialer_data->buttonSpeaker = button;
-//gtk_widget_set_size_request(button,100,32);
-    gtk_box_pack_start (GTK_BOX (hbox2), GTK_WIDGET (button), TRUE, TRUE, 40);
-
-    button = gtk_button_new_with_label ("Redial");
-    gtk_button_set_image (GTK_BUTTON (button),
-                          file_new_image_from_relative_path ("redial.png"));
-    p_dialer_data->buttonRedial = button;
-    g_signal_connect (G_OBJECT (button), "clicked",
-                      G_CALLBACK (cb_redial_button_clicked), p_dialer_data);
-    gtk_box_pack_start (GTK_BOX (hbox2), GTK_WIDGET (button), TRUE, TRUE, 40);
-    g_object_set (G_OBJECT (button), "no-show-all", TRUE, NULL);
-
-
-    button = gtk_button_new_with_label ("Cancel");
-    gtk_button_set_image (GTK_BUTTON (button),
-                          file_new_image_from_relative_path ("cancel.png"));
-    p_dialer_data->buttonCancel = button;
-    g_signal_connect (G_OBJECT (button), "clicked",
-                      G_CALLBACK (cb_cancel_button_clicked), p_dialer_data);
-//gtk_widget_set_size_request(button,100,32);
-    gtk_box_pack_start (GTK_BOX (hbox2), GTK_WIDGET (button), TRUE, TRUE, 40);
-
-    gtk_box_pack_start (GTK_BOX (vbox), hbox2, FALSE, FALSE, 50);
-
-
-//currently     MokoDialogWindow is not finished, wating...
-//   MokoDialogWindow* window = (MokoDialogWindow *)(moko_dialog_window_new());
-//  moko_dialog_window_set_contents( window, GTK_WIDGET(vbox) );
-
-    window = MOKO_FINGER_WINDOW (moko_finger_window_new ());
-    moko_finger_window_set_contents (window, GTK_WIDGET (vbox));
-
-    moko_dialer_status_set_title_label (MOKO_DIALER_STATUS (status),
-                                        "Outgoing call");
-    moko_dialer_status_set_status_label (MOKO_DIALER_STATUS (status),
-                                         "Calling ... (00:00:00)");
-
-    p_dialer_data->window_outgoing = GTK_WIDGET (window);
-    p_dialer_data->status_outgoing = MOKO_DIALER_STATUS (status);
-
-//   DBG_MESSAGE("p_dialer_data->status_outgoing=0X%x",p_dialer_data->status_outgoing);
-
-
-    g_signal_connect ((gpointer) window, "show",
-                      G_CALLBACK (on_window_outgoing_show), p_dialer_data);
-    g_signal_connect ((gpointer) window, "hide",
-                      G_CALLBACK (on_window_outgoing_hide), p_dialer_data);
-
-  }
-
-
-
-// gtk_widget_show(p_dialer_data->window_outgoing);
-
-  DBG_LEAVE ();
-  return 1;
-}

Deleted: trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-outgoing.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-outgoing.h	2007-04-26 03:38:14 UTC (rev 1842)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-outgoing.h	2007-04-26 12:16:43 UTC (rev 1843)
@@ -1,39 +0,0 @@
-/*  openmoko-dialer-window-outgoing.h
- *
- *  Authored By Tony Guan<tonyguan at fic-sh.com.cn>
- *
- *  Copyright (C) 2006 FIC Shanghai Lab
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU Public License as published by
- *  the Free Software Foundation; version 2.1 of the license.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Lesser Public License for more details.
- *
- *  Current Version: $Rev$ ($Date) [$Author: Tony Guan $]
- */
-#include "moko-dialer-includes.h"
-
-#ifndef _OPENMOKO_DIALER_WINDOW_OUTGOING_H
-#define _OPENMOKO_DIALER_WINDOW_OUTGOING_H
-
-#ifdef __cplusplus
-
-
-
-extern "C"
-{
-#endif
-
-  gint window_outgoing_init (MokoDialerData * p_dialer_data);
-  void window_outgoing_prepare (MokoDialerData * appdata);
-  void window_outgoing_fails (MokoDialerData * appdata);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif

Deleted: trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-pin.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-pin.c	2007-04-26 03:38:14 UTC (rev 1842)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-pin.c	2007-04-26 12:16:43 UTC (rev 1843)
@@ -1,220 +0,0 @@
-/*   openmoko-dialer-window-dialer.c
- *
- *  Authored by Tony Guan<tonyguan at fic-sh.com.cn>
- *
- *  Copyright (C) 2006 FIC Shanghai Lab
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU Public License as published by
- *  the Free Software Foundation; version 2 of the license.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Lesser Public License for more details.
- *
- *  Current Version: $Rev$ ($Date) [$Author: Tony Guan $]
- */
-
-#include <libmokoui/moko-finger-window.h>
-#include <libmokoui/moko-pixmap-button.h>
-#include <gtk/gtkalignment.h>
-#include <gtk/gtkbutton.h>
-#include <gtk/gtkhbox.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkmain.h>
-#include <gtk/gtkmenu.h>
-#include <gtk/gtkmenuitem.h>
-#include <gtk/gtkvbox.h>
-#include "openmoko-dialer-main.h"
-
-void
-pin_delete_button_clicked (GtkButton * button, MokoDialerData * appdata)
-{
-  if (appdata->int_sim_pin_end_point)
-  {
-    moko_dialer_textview_delete (appdata->moko_pin_text_view);
-    appdata->int_sim_pin_end_point--;
-    appdata->str_sim_pin[appdata->int_sim_pin_end_point] = 0;
-  }
-
-}
-
-
-void
-pin_ok_button_clicked (GtkButton * button, MokoDialerData * appdata)
-{
-  //   gchar *codesinput;
-//    codesinput =g_strdup(moko_dialer_textview_get_input (appdata->moko_pin_text_view, TRUE));
-
-  if (!appdata->str_sim_pin || g_utf8_strlen (appdata->str_sim_pin, -1) < 1)
-  {
-    //user didn't input anything
-    DBG_MESSAGE ("no input for pin");
-  }
-  else
-  {                             //here send the pin codes and hide our window.
-
-    DBG_MESSAGE ("here we send the pin:%s", appdata->str_sim_pin);
-    //FIXME:why this call will cause segment fault?
-    //lgsm_pin (appdata->lh, appdata->str_sim_pin);
-    //lgsm_pin (appdata->lh, "1234");
-    DBG_MESSAGE ("pin:%s sent", appdata->str_sim_pin);
-    gtk_widget_hide (appdata->window_pin);
-  }
-
-}
-
-
-
-
-void
-on_pin_panel_user_input (GtkWidget * widget, gchar parac, gpointer user_data)
-{
-  char input[2];
-  input[0] = parac;
-  input[1] = 0;
-
-//DBG_TRACE();
-  MokoDialerData *appdata = (MokoDialerData *) user_data;
-  MokoDialerTextview *moko_pin_text_view = appdata->moko_pin_text_view;
-  if (appdata->int_sim_pin_end_point < MOKO_DIALER_MAX_NUMBER_LEN)
-  {
-    appdata->str_sim_pin[appdata->int_sim_pin_end_point] = parac;
-    appdata->int_sim_pin_end_point++;
-    moko_dialer_textview_insert (moko_pin_text_view, "*");
-  }
-  else
-  {
-    appdata->str_sim_pin[0] = parac;
-    appdata->int_sim_pin_end_point = 1;
-  }
-//DBG_TRACE();
-
-}
-
-void
-on_window_pin_hide (GtkWidget * widget, MokoDialerData * appdata)
-{
-  appdata->window_present = 0;
-
-}
-
-void
-on_window_pin_show (GtkWidget * widget, MokoDialerData * appdata)
-{
-  DBG_ENTER ();
-  appdata->window_present = widget;
-
-  DBG_LEAVE ();
-}
-
-
-
-
-gint
-window_pin_init (MokoDialerData * p_dialer_data)
-{
-
-  if (!p_dialer_data->window_pin)
-  {
-
-    g_stpcpy (p_dialer_data->str_sim_pin, "");
-    p_dialer_data->int_sim_pin_end_point = 0;
-    GdkColor color;
-    gdk_color_parse ("black", &color);
-
-    GtkVBox *vbox = NULL;
-
-
-    MokoFingerWindow *window = MOKO_FINGER_WINDOW (moko_finger_window_new ());
-    g_signal_connect ((gpointer) window, "show",
-                      G_CALLBACK (on_window_pin_show), p_dialer_data);
-    g_signal_connect ((gpointer) window, "hide",
-                      G_CALLBACK (on_window_pin_hide), p_dialer_data);
-
-
-    /* contents */
-    vbox = gtk_vbox_new (FALSE, 0);
-    GtkHBox *hbox = gtk_hbox_new (FALSE, 10);
-
-
-    GtkEventBox *eventbox1 = gtk_event_box_new ();
-    gtk_widget_show (eventbox1);
-    gtk_widget_set_name (GTK_WIDGET (eventbox1), "gtkeventbox-black");
-    gtk_widget_modify_bg (eventbox1, GTK_STATE_NORMAL, &color);
-//        gtk_widget_set_size_request (eventbox1, 480, 132);
-
-    MokoDialerTextview *mokotextview = moko_dialer_textview_new ();
-    p_dialer_data->moko_pin_text_view = mokotextview;
-//    moko_dialer_textview_fill_it(mokotextview , "Please input the pin:");
-
-    gtk_container_add (GTK_CONTAINER (eventbox1), mokotextview);
-    gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (eventbox1), FALSE,
-                        FALSE, 0);
-
-    MokoDialerPanel *mokodialerpanel = moko_dialer_panel_new ();
-
-    gtk_widget_set_size_request (mokodialerpanel, 380, 384);
-
-
-    g_signal_connect (GTK_OBJECT (mokodialerpanel), "user_input",
-                      G_CALLBACK (on_pin_panel_user_input), p_dialer_data);
-
-    gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (mokodialerpanel), TRUE,
-                        TRUE, 5);
-
-
-
-//the buttons
-
-    GtkVBox *vbox2 = gtk_vbox_new (FALSE, 0);
-    GtkButton *button1 = moko_pixmap_button_new ();
-    g_signal_connect (G_OBJECT (button1), "clicked",
-                      G_CALLBACK (pin_delete_button_clicked), p_dialer_data);
-    gtk_widget_set_name (GTK_WIDGET (button1), "mokofingerbutton-orange");
-
-    moko_pixmap_button_set_finger_toolbox_btn_center_image
-      (MOKO_PIXMAP_BUTTON (button1),
-       file_new_image_from_relative_path ("delete.png"));
-
-    moko_pixmap_button_set_action_btn_lower_label (MOKO_PIXMAP_BUTTON
-                                                   (button1), "Delete");
-//    gtk_widget_set_size_request (button1, WINDOW_DIALER_BUTTON_SIZE_X,
-    //                              WINDOW_DIALER_BUTTON_SIZE_Y);
-
-    gtk_box_pack_start (GTK_BOX (vbox2), GTK_WIDGET (button1), FALSE, FALSE,
-                        5);
-
-    GtkButton *button2 = moko_pixmap_button_new ();
-
-    g_signal_connect (G_OBJECT (button2), "clicked",
-                      G_CALLBACK (pin_ok_button_clicked), p_dialer_data);
-    gtk_widget_set_name (GTK_WIDGET (button1), "mokofingerbutton-orange");
-    moko_pixmap_button_set_finger_toolbox_btn_center_image
-      (MOKO_PIXMAP_BUTTON (button2),
-       file_new_image_from_relative_path ("phone.png"));
-    moko_pixmap_button_set_action_btn_lower_label (MOKO_PIXMAP_BUTTON
-                                                   (button2), "OK");
-    //gtk_widget_set_size_request (button2, WINDOW_DIALER_BUTTON_SIZE_X,
-    //                         WINDOW_DIALER_BUTTON_SIZE_Y);
-
-    gtk_box_pack_start (GTK_BOX (vbox2), GTK_WIDGET (button2), FALSE, FALSE,
-                        20);
-
-    gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (vbox2), TRUE, TRUE, 5);
-
-
-
-    gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (hbox), TRUE, TRUE, 5);
-
-
-    moko_finger_window_set_contents (window, GTK_WIDGET (vbox));
-
-
-    p_dialer_data->window_pin = window;
-
-  }
-
-  return 1;
-}

Deleted: trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-pin.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-pin.h	2007-04-26 03:38:14 UTC (rev 1842)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-pin.h	2007-04-26 12:16:43 UTC (rev 1843)
@@ -1,37 +0,0 @@
-/*  openmoko-dialer-window-dialer.h
- *
- *  Authored By Tony Guan<tonyguan at fic-sh.com.cn>
- *
- *  Copyright (C) 2006 FIC Shanghai Lab
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU Public License as published by
- *  the Free Software Foundation; version 2.1 of the license.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Lesser Public License for more details.
- *
- *  Current Version: $Rev$ ($Date) [$Author: Tony Guan $]
- */
-#include "moko-dialer-includes.h"
-
-#ifndef _OPENMOKO_DIALER_WINDOW_PIN_H
-#define _OPENMOKO_DIALER_WINDOW_PIN_H
-
-#ifdef __cplusplus
-
-
-
-extern "C"
-{
-#endif
-
-  gint window_pin_init (MokoDialerData * p_dialer_data);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif

Deleted: trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-talking.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-talking.c	2007-04-26 03:38:14 UTC (rev 1842)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-talking.c	2007-04-26 12:16:43 UTC (rev 1843)
@@ -1,450 +0,0 @@
-/*   openmoko-dialer-window-talking.c
- *
- *  Authored by Tony Guan<tonyguan at fic-sh.com.cn>
- *
- *  Copyright (C) 2006 FIC Shanghai Lab
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU Public License as published by
- *  the Free Software Foundation; version 2 of the license.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Lesser Public License for more details.
- *
- *  Current Version: $Rev$ ($Date) [$Author: Tony Guan $]
- */
-#include "alsa.h"
-#include <libmokoui/moko-finger-tool-box.h>
-#include <libmokoui/moko-finger-window.h>
-#include <libmokoui/moko-finger-wheel.h>
-#include <libmokoui/moko-pixmap-button.h>
-
-#include <gtk/gtkalignment.h>
-#include <gtk/gtkbutton.h>
-#include <gtk/gtkhbox.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkmain.h>
-#include <gtk/gtkmenu.h>
-#include <gtk/gtkmenuitem.h>
-#include <gtk/gtkvbox.h>
-
-#include "contacts.h"
-#include "common.h"
-#include "openmoko-dialer-main.h"
-#include "moko-dialer-status.h"
-#include "openmoko-dialer-window-talking.h"
-#include "openmoko-dialer-window-history.h"
-
-void
-openmoko_wheel_press_left_up_cb (GtkWidget * widget,
-                                 MokoDialerData * appdata)
-{
-  DBG_ENTER ();
-  gint l, r;
-  alsa_get_volume (&l, &r);
-  alsa_set_volume (l + 10, r + 10);
-
-  alsa_get_volume (&l, &r);
-  g_print ("l = %d, r = %d\n", l, r);
-
-/*
-    l = 90; 
-    r = 90;
-
-*/
-
-}
-
-void
-openmoko_wheel_press_right_down_cb (GtkWidget * widget,
-                                    MokoDialerData * appdata)
-{
-  gint l, r;
-  alsa_get_volume (&l, &r);
-  alsa_set_volume (l - 10, r - 10);
-  alsa_get_volume (&l, &r);
-  g_print ("l = %d, r = %d\n", l, r);
-
-  DBG_ENTER ();
-}
-
-
-void
-cb_tool_button_speaker_clicked (GtkButton * button,
-                                MokoDialerData * appdata)
-{
-  DBG_ENTER ();
-}
-
-void
-cb_tool_button_dtmf_talk_clicked (GtkButton * button,
-                                  MokoDialerData * appdata)
-{
-  DBG_ENTER ();
-
-  appdata->dtmf_in_talking_window = !appdata->dtmf_in_talking_window;
-  if (appdata->dtmf_in_talking_window)
-  {
-
-
-    moko_pixmap_button_set_finger_toolbox_btn_center_image
-      (MOKO_PIXMAP_BUTTON (button), appdata->imageTALK);
-    gtk_widget_hide (appdata->content_talk);
-    gtk_widget_show (appdata->content_dtmf);
-  }
-  else
-  {
-    moko_pixmap_button_set_finger_toolbox_btn_center_image
-      (MOKO_PIXMAP_BUTTON (button), appdata->imageDTMF);
-    gtk_widget_hide (appdata->content_dtmf);
-    gtk_widget_show (appdata->content_talk);
-
-
-  }
-
-
-}
-
-void
-cb_tool_button_hangup_clicked (GtkButton * button,
-                               MokoDialerData * appdata)
-{
-  /* TODO: MokoGsmdConnection->hangup
-   * gsm_hangup ();
-   */
-  gtk_widget_hide (appdata->window_talking);
-
-}
-
-
-void
-on_dtmf_panel_user_input (GtkWidget * widget, gchar parac, gpointer user_data)
-{
-  char input[2];
-  input[0] = parac;
-  input[1] = 0;
-
-
-  MokoDialerData *appdata = (MokoDialerData *) user_data;
-  MokoDialerTextview *moko_dtmf_text_view = appdata->moko_dtmf_text_view;
-
-  moko_dialer_textview_insert (moko_dtmf_text_view, input);
-
-
-  /* TODO: MokoGsmdConnection->dtmf_send
-   * gsm_dtmf_send (input[0]);
-   */
-//lgsm_voice_dtmf(lgsmh, buf[1]);
-
-}
-
-
-
-void
-window_talking_prepare (MokoDialerData * appdata)
-{
-  DBG_ENTER ();
-
-//   moko_dialer_status_set_person_number(appdata->status_talking, appdata->g_peer_info.number);
-
-  if (!appdata->window_talking)
-    window_talking_init (appdata);
-
-  if (!appdata->window_talking)
-  {
-    DBG_WARN ("NO TALKING WINDOW INITIATED");
-    return;
-  }
-
-
-  if (appdata->g_peer_info.hasname)
-  {
-    DBG_TRACE ();
-    moko_dialer_status_set_person_image (appdata->status_talking,
-                                         appdata->g_peer_info.ID);
-    DBG_TRACE ();
-    moko_dialer_status_set_person_name (appdata->status_talking,
-                                        appdata->g_peer_info.name);
-    DBG_TRACE ();
-  }
-  else
-  {
-    moko_dialer_status_set_person_image (appdata->status_talking, "");
-    moko_dialer_status_set_person_name (appdata->status_talking, "");
-
-  }
-
-  DBG_LEAVE ();
-
-}
-
-gint
-timer_talking_time_out (MokoDialerData * appdata)
-{
-//DBG_ENTER();
-  TIMER_DATA *timer_data = &(appdata->g_timer_data);
-
-
-  timer_data->ticks++;
-  timer_data->hour = timer_data->ticks / 3600;
-  timer_data->min = (timer_data->ticks - timer_data->hour * 3600) / 60;
-  timer_data->sec = timer_data->ticks % 60;
-
-
-  sprintf (timer_data->timestring, "Talking (%02d:%02d:%02d)",
-           timer_data->hour, timer_data->min, timer_data->sec);
-
-//ok,we update the label now.
-
-
-  moko_dialer_status_set_status_label (appdata->status_talking,
-                                       timer_data->timestring);
-  moko_dialer_status_update_icon (appdata->status_talking);
-
-  if (timer_data->stopsec != 0 && timer_data->ticks >= timer_data->stopsec)
-  {
-
-    timer_data->timeout = 1;
-    g_source_remove (timer_data->ptimer);
-    timer_data->ptimer = 0;
-    return 0;                   //0 stops the timer.
-  }
-  else
-    return 1;
-}
-
-void
-on_window_talking_hide (GtkWidget * widget, MokoDialerData * appdata)
-{
-
-
-  if (appdata->g_timer_data.ptimer != 0)
-  {
-    g_source_remove (appdata->g_timer_data.ptimer);
-    appdata->g_timer_data.ptimer = 0;
-  }
-
-  gtk_widget_hide (appdata->wheel_talking);
-  gtk_widget_hide (appdata->toolbox_talking);
-
-  moko_dialer_textview_empty (appdata->moko_dtmf_text_view);
-  add_histroy_entry (appdata, appdata->g_state.historytype,
-                     appdata->g_peer_info.name,
-                     appdata->g_peer_info.number,
-                     appdata->g_peer_info.picpath,
-                     appdata->g_state.starttime,
-                     appdata->g_state.startdate, appdata->g_timer_data.ticks);
-
-
-}
-
-void
-on_window_talking_show (GtkWidget * widget, MokoDialerData * appdata)
-{
-  DBG_ENTER ();
-
-  appdata->dtmf_in_talking_window = TRUE;
-  //hide the talking button in talking mode.
-
-  time_t timep;
-  struct tm *p;
-  time (&timep);
-  p = localtime (&timep);
-
-  sprintf (appdata->g_state.starttime, "%02d:%02d:%02d", p->tm_hour,
-           p->tm_min, p->tm_sec);
-  sprintf (appdata->g_state.startdate, "%04d/%02d/%02d", p->tm_year + 1900,
-           p->tm_mon, p->tm_mday);
-
-  memset (&(appdata->g_timer_data), 0, sizeof (appdata->g_timer_data));
-
-  appdata->g_timer_data.stopsec = 0;
-
-  appdata->g_timer_data.ptimer =
-    g_timeout_add (1000, (GSourceFunc) timer_talking_time_out, appdata);
-
-  if (appdata->toolbox_talking)
-  {
-    gtk_widget_show (appdata->toolbox_talking);
-    moko_pixmap_button_set_finger_toolbox_btn_center_image
-      (MOKO_PIXMAP_BUTTON (appdata->buttonTalk_DTMF), appdata->imageDTMF);
-    gtk_widget_hide (appdata->content_dtmf);
-    gtk_widget_show (appdata->content_talk);
-  }
-
-
-
-  if (appdata->wheel_talking)
-    gtk_widget_show (appdata->wheel_talking);
-
-
-
-
-  DBG_LEAVE ();
-}
-
-
-
-
-gint
-window_talking_init (MokoDialerData * p_dialer_data)
-{
-
-  DBG_ENTER ();
-
-
-  if (p_dialer_data->window_talking == 0)
-  {
-
-    MokoFingerWindow *window = NULL;
-    GtkWidget *vbox = gtk_vbox_new (FALSE, 0);;
-    GtkWidget *status = NULL;
-    GtkWidget *content_talk = NULL;
-    GtkWidget *content_dtmf = NULL;
-    MokoFingerToolBox *tools = NULL;
-    MokoFingerWheel *wheel = NULL;
-    GtkWidget *mokodialerpanel = NULL;
-    MokoPixmapButton *button;
-    GtkWidget *image;
-
-
-//first, the talking content.
-
-    content_talk = gtk_vbox_new (FALSE, 0);
-    status = moko_dialer_status_new ();
-    moko_dialer_status_add_status_icon (MOKO_DIALER_STATUS (status),
-                                        "talking_0.png");
-    moko_dialer_status_add_status_icon (MOKO_DIALER_STATUS (status),
-                                        "talking_1.png");
-    moko_dialer_status_add_status_icon (MOKO_DIALER_STATUS (status),
-                                        "talking_2.png");
-    moko_dialer_status_add_status_icon (MOKO_DIALER_STATUS (status),
-                                        "talking_3.png");
-    moko_dialer_status_set_icon_by_index (MOKO_DIALER_STATUS (status), 0);
-
-
-    moko_dialer_status_set_title_label (MOKO_DIALER_STATUS (status),
-                                        "In Call");
-    moko_dialer_status_set_status_label (MOKO_DIALER_STATUS (status),
-                                         "Talking ...(00:00:00)");
-
-    gtk_box_pack_start (GTK_BOX (content_talk), status, FALSE, FALSE, 0);
-
-
-    p_dialer_data->status_talking = MOKO_DIALER_STATUS (status);
-    p_dialer_data->content_talk = content_talk;
-
-    gtk_box_pack_start (GTK_BOX (vbox), content_talk, FALSE, FALSE, 0);
-
-
-    //now the dtmf content
-    content_dtmf = gtk_vbox_new (FALSE, 0);
-    GtkWidget *eventbox1 = gtk_event_box_new ();
-    gtk_widget_show (eventbox1);
-    gtk_widget_set_name (eventbox1, "gtkeventbox-black");
-
-    GtkWidget *mokotextview = moko_dialer_textview_new ();
-
-    gtk_container_add (GTK_CONTAINER (eventbox1), mokotextview);
-
-    p_dialer_data->moko_dtmf_text_view = MOKO_DIALER_TEXTVIEW (mokotextview);
-
-    gtk_box_pack_start (GTK_BOX (content_dtmf), GTK_WIDGET (eventbox1),
-                        FALSE, FALSE, 2);
-
-
-
-    mokodialerpanel = moko_dialer_panel_new ();
-
-    gtk_widget_set_size_request (mokodialerpanel, 380, 384);
-    g_signal_connect (GTK_OBJECT (mokodialerpanel), "user_input",
-                      G_CALLBACK (on_dtmf_panel_user_input), p_dialer_data);
-    gtk_box_pack_start (GTK_BOX (content_dtmf),
-                        GTK_WIDGET (mokodialerpanel), TRUE, TRUE, 5);
-
-    gtk_box_pack_start (GTK_BOX (vbox), content_dtmf, FALSE, FALSE, 0);
-    p_dialer_data->content_dtmf = content_dtmf;
-    //g_object_set (G_OBJECT (content_dtmf), "no-show-all", TRUE);
-
-
-    //now the container--window
-    window = MOKO_FINGER_WINDOW (moko_finger_window_new ());
-    p_dialer_data->window_talking = GTK_WIDGET (window);
-    moko_finger_window_set_contents (window, GTK_WIDGET (vbox));
-    g_signal_connect ((gpointer) window, "show",
-                      G_CALLBACK (on_window_talking_show), p_dialer_data);
-    g_signal_connect ((gpointer) window, "hide",
-                      G_CALLBACK (on_window_talking_hide), p_dialer_data);
-
-
-    //now the wheel and tool box, why should the wheel and toolbox created after the gtk_widget_show_all???
-    //please refer to bug 175.
-    //FIXME:Dear Thomas, please modify the libmokoui before deleting the show_all & hide codes. I don't want to splash
-    //any window either, but for now, it's the most convenient way to debug the application. We will remove it, but later, OK?
-    //Tony Guan 14/3/2007
-    gtk_widget_show_all (GTK_WIDGET (window));
-    gtk_widget_hide (content_dtmf);     //And this line is necessary because dtmf interface & talking interface share the same window.
-    //we have to hide it first.
-    wheel = moko_finger_window_get_wheel (window);
-
-    g_signal_connect (G_OBJECT (wheel),
-                      "press_left_up",
-                      G_CALLBACK (openmoko_wheel_press_left_up_cb),
-                      p_dialer_data);
-    g_signal_connect (G_OBJECT (wheel),
-                      "press_right_down",
-                      G_CALLBACK (openmoko_wheel_press_right_down_cb),
-                      p_dialer_data);
-
-
-
-
-    tools = moko_finger_window_get_toolbox (window);
-    button =
-      MOKO_PIXMAP_BUTTON (moko_finger_tool_box_add_button_without_label
-                          (tools));
-    image = file_new_image_from_relative_path ("speaker.png");
-    moko_pixmap_button_set_finger_toolbox_btn_center_image
-      (MOKO_PIXMAP_BUTTON (button), image);
-    g_signal_connect (G_OBJECT (button), "clicked",
-                      G_CALLBACK (cb_tool_button_speaker_clicked),
-                      p_dialer_data);
-
-    button =
-      MOKO_PIXMAP_BUTTON (moko_finger_tool_box_add_button_without_label
-                          (tools));
-    image = file_new_image_from_relative_path ("dtmf.png");
-    moko_pixmap_button_set_finger_toolbox_btn_center_image
-      (MOKO_PIXMAP_BUTTON (button), image);
-    g_signal_connect (G_OBJECT (button), "clicked",
-                      G_CALLBACK (cb_tool_button_dtmf_talk_clicked),
-                      p_dialer_data);
-    p_dialer_data->buttonTalk_DTMF = button;
-    p_dialer_data->imageDTMF = image;
-    p_dialer_data->imageTALK =
-      file_new_image_from_relative_path ("talking.png");
-
-
-    button =
-      MOKO_PIXMAP_BUTTON (moko_finger_tool_box_add_button_without_label
-                          (tools));
-    image = file_new_image_from_relative_path ("hangup.png");
-    moko_pixmap_button_set_finger_toolbox_btn_center_image
-      (MOKO_PIXMAP_BUTTON (button), image);
-    g_signal_connect (G_OBJECT (button), "clicked",
-                      G_CALLBACK (cb_tool_button_hangup_clicked),
-                      p_dialer_data);
-    gtk_widget_show (GTK_WIDGET (tools));
-    gtk_widget_show (GTK_WIDGET (wheel));
-
-    p_dialer_data->dtmf_in_talking_window = 0;
-    p_dialer_data->wheel_talking = GTK_WIDGET (wheel);
-    p_dialer_data->toolbox_talking = GTK_WIDGET (tools);
-
-    DBG_LEAVE ();
-  }
-
-  return 1;
-}

Deleted: trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-talking.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-talking.h	2007-04-26 03:38:14 UTC (rev 1842)
+++ trunk/src/target/OM-2007/applications/openmoko-dialer/src/openmoko-dialer-window-talking.h	2007-04-26 12:16:43 UTC (rev 1843)
@@ -1,40 +0,0 @@
-/*  openmoko-dialer-window-outgoing.h
- *
- *  Authored By Tony Guan<tonyguan at fic-sh.com.cn>
- *
- *  Copyright (C) 2006 FIC Shanghai Lab
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU Public License as published by
- *  the Free Software Foundation; version 2.1 of the license.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Lesser Public License for more details.
- *
- *  Current Version: $Rev$ ($Date) [$Author: Tony Guan $]
- */
-#include "moko-dialer-includes.h"
-
-#ifndef _OPENMOKO_DIALER_WINDOW_TALKING_H
-#define _OPENMOKO_DIALER_WINDOW_TALKING_H
-
-#ifdef __cplusplus
-
-
-
-extern "C"
-{
-#endif
-
-
-
-  gint window_talking_init (MokoDialerData * p_dialer_data);
-
-  void window_talking_prepare (MokoDialerData * appdata);
-#ifdef __cplusplus
-}
-#endif
-
-#endif





More information about the commitlog mailing list