From 7016b09c822faac15351420da97c9e8f804f05bc Mon Sep 17 00:00:00 2001
From: Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>
Date: Tue, 20 May 2008 16:42:51 -0400
Subject: [PATCH] Add a menu item to clear the history

In the edit menu
---
 po/fr.po                 | 12 ++++++++++
 po/sflphone.pot          |  4 ++++
 sflphone-gtk/src/menus.c | 48 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 64 insertions(+)

diff --git a/po/fr.po b/po/fr.po
index 2beb3d9eb8..c79d4c5f81 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -67,6 +67,18 @@ msgstr "_Assistant SFLphone"
 msgid "_Accounts"
 msgstr "Co_mptes"
 
+#: sflphone-gtk/src/menus.c: 523
+msgid "_Clear history"
+msgstr "Effacer l'historique"
+
+#: sflphone-gtk/src/menus.c: 523
+msgid "History empty"
+msgstr "L'historique est vide"
+
+#: sflphone-gtk/src/menus.c: 523
+msgid "Clear the call history?"
+msgstr "Effacer l'historique des appels?"
+
 #: sflphone-gtk/src/menus.c: 438
 msgid "_Edit"
 msgstr "_Options"
diff --git a/po/sflphone.pot b/po/sflphone.pot
index 95a0deb37b..e8c3ba7b8c 100644
--- a/po/sflphone.pot
+++ b/po/sflphone.pot
@@ -65,6 +65,10 @@ msgstr ""
 msgid "_Accounts"
 msgstr ""
 
+#: sflphone-gtk/src/menus.c: 523
+msgid "_Clear history"
+msgstr ""
+
 #: sflphone-gtk/src/menus.c: 438
 msgid "_Edit"
 msgstr ""
diff --git a/sflphone-gtk/src/menus.c b/sflphone-gtk/src/menus.c
index c4e35a202d..bb24a9b2b8 100644
--- a/sflphone-gtk/src/menus.c
+++ b/sflphone-gtk/src/menus.c
@@ -37,6 +37,8 @@ GtkWidget * newCallMenu;
 GtkWidget * holdMenu;
 GtkWidget * copyMenu;
 GtkWidget * pasteMenu;
+GtkWidget * clearhistoryMenu;
+
 guint holdConnId;     //The hold_menu signal connection ID
 
 GtkWidget * dialpadMenu;
@@ -482,12 +484,46 @@ edit_paste ( void * foo)
     update_call_tree(current_calls,selectedCall);
   }
 
+}
+
+  static void
+clear_history( void* foo )
+{
+  gchar *markup;
+  GtkWidget *dialog;
+  int response;
+
+  if( call_list_get_size( history ) == 0 ){
+    markup = g_markup_printf_escaped(_("History empty"));
+    dialog = gtk_message_dialog_new_with_markup ( GTK_WINDOW(get_main_window()),
+							    GTK_DIALOG_DESTROY_WITH_PARENT,
+							    GTK_MESSAGE_INFO,
+							    GTK_BUTTONS_OK,
+							    markup);
+    response = gtk_dialog_run (GTK_DIALOG(dialog));
+    gtk_widget_destroy (GTK_WIDGET(dialog));
+  }
+  else{  
+    markup = g_markup_printf_escaped(_("Clear the call history?"));
+    dialog = gtk_message_dialog_new_with_markup ( GTK_WINDOW(get_main_window()),
+							    GTK_DIALOG_DESTROY_WITH_PARENT,
+							    GTK_MESSAGE_INFO,
+							    GTK_BUTTONS_YES_NO,
+							    markup);
+    response = gtk_dialog_run (GTK_DIALOG(dialog));
+    gtk_widget_destroy (GTK_WIDGET(dialog));
+    if (response == GTK_RESPONSE_YES)
+    {
+      call_list_clean_history();
+    }
+  }
 }
 
   GtkWidget * 
 create_edit_menu()
 {
   GtkWidget * menu;
+  GtkWidget * image;
   GtkWidget * root_menu;
   GtkWidget * menu_items;
 
@@ -510,6 +546,18 @@ create_edit_menu()
   menu_items = gtk_separator_menu_item_new ();
   gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
 
+  menu_items = gtk_image_menu_item_new_with_mnemonic(_("_Clear history"));
+  image = gtk_image_new_from_stock( GTK_STOCK_CLEAR , GTK_ICON_SIZE_MENU );
+  gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( menu_items ), image );
+  gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
+  g_signal_connect_swapped (G_OBJECT (menu_items), "activate",
+      G_CALLBACK (clear_history), 
+      NULL);
+  gtk_widget_show (menu_items);  
+
+  menu_items = gtk_separator_menu_item_new ();
+  gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
+
   menu_items = gtk_menu_item_new_with_mnemonic( _("_Accounts") );
   gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
   g_signal_connect_swapped (G_OBJECT (menu_items), "activate",
-- 
GitLab