From fcfd04d5d5a1fe7f7b034464d6564ba4e8e09bfe Mon Sep 17 00:00:00 2001
From: Pierre-Luc Beaudoin <pierre-luc.beaudoin@savoirfairelinux.com>
Date: Tue, 18 Sep 2007 17:32:50 -0400
Subject: [PATCH] Show/Hide Dialpad

---
 sflphone-gtk/src/dbus.c       |  1 -
 sflphone-gtk/src/dialpad.c    | 10 +++-------
 sflphone-gtk/src/mainwindow.c | 26 ++++++++++++++++++++++----
 sflphone-gtk/src/mainwindow.h | 10 ++++++++++
 sflphone-gtk/src/menus.c      | 21 +++++++++++----------
 5 files changed, 46 insertions(+), 22 deletions(-)

diff --git a/sflphone-gtk/src/dbus.c b/sflphone-gtk/src/dbus.c
index a47121bb2f..fdaa8b1f6b 100644
--- a/sflphone-gtk/src/dbus.c
+++ b/sflphone-gtk/src/dbus.c
@@ -231,7 +231,6 @@ dbus_unhold (const call_t * c)
     g_print ("DBus called unhold() on CallManager\n");
   
   }
-
 }
 
 void
diff --git a/sflphone-gtk/src/dialpad.c b/sflphone-gtk/src/dialpad.c
index 402066a39a..272368bf2a 100644
--- a/sflphone-gtk/src/dialpad.c
+++ b/sflphone-gtk/src/dialpad.c
@@ -51,15 +51,12 @@ get_numpad_button (const gchar* number, gboolean twolines, const gchar * letters
 GtkWidget * 
 create_dialpad()
 {
-  GtkWidget * ext;
   GtkWidget * button;
   GtkWidget * table;
   
-  ext = gtk_expander_new ("Dialpad");
-  gtk_expander_set_spacing ( GTK_EXPANDER(ext), 10 );
   table = gtk_table_new ( 4, 3, TRUE /* homogeneous */);
-  gtk_table_set_row_spacings( GTK_TABLE(table), 10);
-  gtk_table_set_col_spacings( GTK_TABLE(table), 10);
+  gtk_table_set_row_spacings( GTK_TABLE(table), 5);
+  gtk_table_set_col_spacings( GTK_TABLE(table), 5);
   
   button = get_numpad_button("1", TRUE, "");
   gtk_table_attach ( GTK_TABLE( table ), button, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
@@ -100,7 +97,6 @@ create_dialpad()
   button = get_numpad_button("*", FALSE, "");
   gtk_table_attach ( GTK_TABLE( table ), button, 2, 3, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
   
-  gtk_container_add (GTK_CONTAINER (ext), table);
-  return ext;
+  return table;
   
 }
diff --git a/sflphone-gtk/src/mainwindow.c b/sflphone-gtk/src/mainwindow.c
index 4626e2dca2..463f72e671 100644
--- a/sflphone-gtk/src/mainwindow.c
+++ b/sflphone-gtk/src/mainwindow.c
@@ -28,8 +28,11 @@
 #include <gtk/gtk.h>
 
 /** Local variables */
-GtkAccelGroup * accelGroup;
-GtkWidget * window;
+GtkAccelGroup * accelGroup = NULL;
+GtkWidget * window = NULL;
+GtkWidget *subvbox = NULL;
+GtkWidget * dialpad = NULL;
+gboolean showDialpad = FALSE; // true if the dialpad have been showned
 
 /**
  * Terminate the main loop.
@@ -101,7 +104,6 @@ create_main_window ()
   GtkWidget *button;
   GtkWidget *hbox;
   GtkWidget *vbox;
-  GtkWidget *subvbox;
 
   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
   gtk_container_set_border_width (GTK_CONTAINER (window), 0);
@@ -138,7 +140,6 @@ create_main_window ()
   button = create_screen();
   gtk_box_pack_start (GTK_BOX (subvbox), button, FALSE /*expand*/, TRUE /*fill*/, 0 /*padding*/);
   
-  //gtk_box_pack_start (GTK_BOX (subvbox), create_dialpad(), FALSE /*expand*/, TRUE /*fill*/, 0 /*padding*/);
   gtk_box_pack_start (GTK_BOX (subvbox), create_call_tree(), TRUE /*expand*/, TRUE /*fill*/,  0 /*padding*/);
   
   /* Status bar */
@@ -191,6 +192,23 @@ main_window_info_message(gchar * markup){
   main_window_message(GTK_MESSAGE_INFO, markup);
 }
 
+void
+main_window_dialpad(gboolean show){
+  if(show && !showDialpad)
+  {
+    dialpad = create_dialpad();
+    gtk_box_pack_end (GTK_BOX (subvbox), dialpad, FALSE /*expand*/, TRUE /*fill*/, 0 /*padding*/);
+    gtk_box_reorder_child(GTK_BOX (subvbox), dialpad, 1);
+    gtk_widget_show_all (dialpad);
+  }
+  else if (!show && showDialpad)
+  {
+    gtk_container_remove(GTK_BOX (subvbox), dialpad);
+  }
+  showDialpad = show;
+    
+}
+
 
 
 
diff --git a/sflphone-gtk/src/mainwindow.h b/sflphone-gtk/src/mainwindow.h
index 3a1e3fd716..46094bf627 100644
--- a/sflphone-gtk/src/mainwindow.h
+++ b/sflphone-gtk/src/mainwindow.h
@@ -28,5 +28,15 @@ GtkWidget * get_main_window();
 void create_main_window ( );
 
 void main_window_ask_quit() ;
+/**
+  * Shows the dialpad on the mainwindow 
+  * @param show TRUE if you want to show the dialpad, FALSE to hide it
+  */
+void main_window_dialpad(gboolean show);
 
+void main_window_error_message(gchar * markup);
+
+void main_window_warning_message(gchar * markup);
+
+void main_window_warning_message(gchar * markup);
 #endif 
diff --git a/sflphone-gtk/src/menus.c b/sflphone-gtk/src/menus.c
index 59883ed2ca..94a25067a5 100644
--- a/sflphone-gtk/src/menus.c
+++ b/sflphone-gtk/src/menus.c
@@ -166,6 +166,14 @@ create_debug_menu()
   return root_menu;
 }
 /* ----------------------------------------------------------------- */
+
+void 
+view_dial_pad  (GtkCheckMenuItem *checkmenuitem,
+                void* foo)
+{
+  main_window_dialpad(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(checkmenuitem)));
+}
+
 GtkWidget * 
 create_view_menu()
 {
@@ -175,19 +183,12 @@ create_view_menu()
   
   menu      = gtk_menu_new ();
 
-  menu_items = gtk_menu_item_new_with_label ("Show Dialpad");
+  menu_items = gtk_check_menu_item_new_with_mnemonic ("Show _Dialpad");
   gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
-  g_signal_connect_swapped (G_OBJECT (menu_items), "activate",
-                  G_CALLBACK (debug_hang_up), 
+  g_signal_connect(G_OBJECT (menu_items), "toggled",
+                  G_CALLBACK (view_dial_pad), 
                   NULL);
   gtk_widget_show (menu_items);
-    
-  /*menu_items = gtk_menu_item_new_with_label ("Transfert current call");
-  gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items);
-  g_signal_connect_swapped (G_OBJECT (menu_items), "activate",
-                  G_CALLBACK (debug_transfert), 
-                  NULL);
-  gtk_widget_show (menu_items);*/
   
   root_menu = gtk_menu_item_new_with_mnemonic ("_View");
   gtk_menu_item_set_submenu (GTK_MENU_ITEM (root_menu), menu);
-- 
GitLab