Index: /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.c	(revision 2168)
+++ /trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-history.c	(revision 2169)
@@ -34,12 +34,4 @@
 #include "dialer-window-outgoing.h"
 
-/* call types */
-typedef enum {
-  ALL =0,
-  MISSED,
-  OUTGOING,
-  INCOMING
-} CallFilter;
-
 #define HISTORY_MAX_ENTRIES 50
 
@@ -75,5 +67,5 @@
 static int
 history_view_change_filter (MokoDialerData * p_dialer_data,
-                            CallFilter type)
+                            CallHistoryFilter type)
 {
  p_dialer_data->g_history_filter_type = type;
@@ -90,5 +82,5 @@
   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_view_change_filter (p_dialer_data, CALLS_ALL);
   history_update_counter (p_dialer_data);
 }
@@ -101,5 +93,5 @@
   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_view_change_filter (p_dialer_data, CALLS_MISSED);
   history_update_counter (p_dialer_data);
 }
@@ -112,5 +104,5 @@
   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_view_change_filter (p_dialer_data, CALLS_OUTGOING);
   history_update_counter (p_dialer_data);
 }
@@ -123,6 +115,20 @@
   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_view_change_filter (p_dialer_data, CALLS_INCOMING);
   history_update_counter (p_dialer_data);
+}
+
+void window_history_filter (MokoDialerData *data, CallHistoryFilter filter)
+{
+  /* FIXME: this is ugly */
+  switch (filter)
+  {
+    case CALLS_INCOMING: on_received_calls_activate (NULL, data); break;
+    case CALLS_OUTGOING: on_dialed_calls_activate (NULL, data); break;
+    case CALLS_MISSED: on_missed_calls_activate (NULL, data); break;
+    case CALLS_ALL:
+    default:
+         on_all_calls_activate (NULL, data);
+  }
 }
 
@@ -639,6 +645,6 @@
 {
   MokoDialerData *p_dialer_data = (MokoDialerData *) data;
-  CallFilter type;
-  if (p_dialer_data->g_history_filter_type == ALL)
+  CallHistoryFilter type;
+  if (p_dialer_data->g_history_filter_type == CALLS_ALL)
     return TRUE;
   
@@ -666,5 +672,5 @@
   const MokoTime *time;
   MokoJournalVoiceInfo *info = NULL;
-  CallFilter type;
+  CallHistoryFilter type;
     
   /* We're not interested in anything other than voice entrys */
@@ -690,5 +696,5 @@
   {
     icon = history_out_icon;
-    type = OUTGOING;
+    type = CALLS_OUTGOING;
   }
   else
@@ -697,10 +703,10 @@
     {
       icon = history_missed_icon;
-      type = MISSED;
+      type = CALLS_MISSED;
     }
     else
     { 
       icon = history_in_icon;
-      type = INCOMING;      
+      type = CALLS_INCOMING;
     }
   }
@@ -788,5 +794,5 @@
   
   /* We setup the default filter */
-  p_dialer_data->g_history_filter_type = ALL;
+  p_dialer_data->g_history_filter_type = CALLS_ALL;
   
   //we will use a filter to facilitate the filtering in treeview without rebuilding the database.  p_dialer_data->g_list_store_filter =
Index: /trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-history.h
===================================================================
--- /trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-history.h	(revision 2168)
+++ /trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-window-history.h	(revision 2169)
@@ -30,7 +30,14 @@
 };
 
+typedef enum {
+  CALLS_ALL = 0,
+  CALLS_MISSED,
+  CALLS_OUTGOING,
+  CALLS_INCOMING
+} CallHistoryFilter;
+
 
 gint window_history_init (MokoDialerData * p_dialer_data);
-
+void window_history_filter (MokoDialerData *data, CallHistoryFilter filter);
 #define _OPENMOKO_DIALER_WINDOW_HISTORY_H
 
Index: /trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-main.c
===================================================================
--- /trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-main.c	(revision 2168)
+++ /trunk/src/target/OM-2007/applications/openmoko-dialer/src/dialer-main.c	(revision 2169)
@@ -49,5 +49,4 @@
 handle_sigusr1 (int value)
 {
-  DBG_ENTER ();
   MokoDialerData *p_data = moko_get_app_data ();
   if (!p_data)
@@ -63,8 +62,30 @@
   gtk_widget_show_all (mainwindow);
   gtk_window_present (GTK_WINDOW (mainwindow));
-  DBG_TRACE ();
   signal (SIGUSR1, handle_sigusr1);
-  DBG_LEAVE ();
-}
+}
+
+static void
+handle_sigusr2 (int value)
+{
+  /* Show missed calls */
+  MokoDialerData *p_data = moko_get_app_data ();
+  if (!p_data)
+    return;
+  GtkWidget *window = p_data->window_history;
+
+  if (!window)
+    return;
+
+  /*
+   * Filter history on missed calls
+   */
+  window_history_filter (p_data, CALLS_MISSED);
+
+  gtk_widget_show_all (window);
+  gtk_window_present (GTK_WINDOW (window));
+  signal (SIGUSR2, handle_sigusr2);
+}
+
+
 
 static pid_t
@@ -131,9 +152,12 @@
 }
 
-static gboolean show_gui;
+static gboolean show_dialer;
+static gboolean show_missed;
 
 static GOptionEntry entries[] = {
-  {"show-gui", 's', 0, G_OPTION_ARG_NONE, &show_gui,
-   "Show the GUI at startup (default off)", "N"},
+  {"show-dialer", 's', 0, G_OPTION_ARG_NONE, &show_dialer,
+   "Show the dialer at startup", "N"},
+  {"show-missed", 'm', 0, G_OPTION_ARG_NONE, &show_missed,
+   "Show the history window filtered by the missed, none.", "N"},
   {NULL}
 };
@@ -161,7 +185,11 @@
   //FIXME: the following lines to enable unique instance will be changed.
   lockapp = testlock ("/tmp/dialer.lock");
+
   if (lockapp > 0)
   {
-    kill (lockapp, SIGUSR1);
+    if (show_missed)
+      kill (lockapp, SIGUSR2);
+    else
+      kill (lockapp, SIGUSR1);
 
     /* make sure startup notifaction is terminated */
@@ -201,5 +229,7 @@
   moko_journal_load_from_storage (p_dialer_data->journal);
 
+  /* set up signal handling */
   signal (SIGUSR1, handle_sigusr1);
+  signal (SIGUSR2, handle_sigusr2);
 
   //init the dialer windows
@@ -210,9 +240,14 @@
   window_history_init (p_dialer_data);
 
-  if (show_gui)
+  if (show_dialer)
   {
     handle_sigusr1 (SIGUSR1);
   }
-  
+
+  if (show_missed)
+  {
+    handle_sigusr2 (SIGUSR2);
+  }
+ 
   gtk_main ();
   
