From b40f86ec4f527b19cde83d6b29aa632249775498 Mon Sep 17 00:00:00 2001
From: Julien Bonjean <julien@bonjean.info>
Date: Wed, 15 Apr 2009 18:17:41 -0400
Subject: [PATCH] Fixed bug #1139 Added toolbar button deactivation and
 cleaning

---
 sflphone-gtk/src/config/addressbook-config.c |  2 --
 sflphone-gtk/src/contacts/addressbook.c      | 14 +++++++++++++-
 sflphone-gtk/src/contacts/addressbook.h      |  6 ++++++
 sflphone-gtk/src/contacts/addressbook/eds.c  |  4 +---
 sflphone-gtk/src/toolbar.c                   |  9 +++++++++
 5 files changed, 29 insertions(+), 6 deletions(-)

diff --git a/sflphone-gtk/src/config/addressbook-config.c b/sflphone-gtk/src/config/addressbook-config.c
index d1b71d1bb9..9851ce6433 100644
--- a/sflphone-gtk/src/config/addressbook-config.c
+++ b/sflphone-gtk/src/config/addressbook-config.c
@@ -158,8 +158,6 @@ addressbook_config_book_active_toggled(
   // Toggle active value
   active = !active;
 
-  printf("-> change active to : %d for %s\n", active, uid);
-
   // Store value
   gtk_list_store_set(GTK_LIST_STORE(model), &iter, COLUMN_BOOK_ACTIVE, active, -1);
 
diff --git a/sflphone-gtk/src/contacts/addressbook.c b/sflphone-gtk/src/contacts/addressbook.c
index dfb71109cb..c9fa4dcbcf 100644
--- a/sflphone-gtk/src/contacts/addressbook.c
+++ b/sflphone-gtk/src/contacts/addressbook.c
@@ -19,6 +19,7 @@
 
 #include <addressbook.h>
 #include <searchbar.h>
+#include <toolbar.h>
 #include <string.h>
 #include <addressbook-config.h>
 
@@ -45,6 +46,15 @@ addressbook_search(GtkEntry* entry)
       addressbook_config);
 }
 
+/**
+ * Return addressbook state
+ */
+gboolean
+addressbook_is_ready()
+{
+  return books_ready();
+}
+
 /**
  * Asynchronous open callback.
  * Used to handle activation of books.
@@ -69,12 +79,14 @@ addressbook_config_books()
           // If book_data exists
           if (book_data != NULL)
             {
-              printf("activating %s\n", *config_book_uid);
               book_data->active = TRUE;
             }
         }
       g_strfreev(list);
     }
+
+  // Update buttons
+  toolbar_update_buttons();
 }
 
 /**
diff --git a/sflphone-gtk/src/contacts/addressbook.h b/sflphone-gtk/src/contacts/addressbook.h
index 2128ce33d4..f83aefaf5b 100644
--- a/sflphone-gtk/src/contacts/addressbook.h
+++ b/sflphone-gtk/src/contacts/addressbook.h
@@ -29,6 +29,12 @@
 #include <gtk/gtk.h>
 #include <addressbook/eds.h>
 
+/**
+ * Return addressbook state
+ */
+gboolean
+addressbook_is_ready();
+
 /**
  * Perform a search in addressbook
  */
diff --git a/sflphone-gtk/src/contacts/addressbook/eds.c b/sflphone-gtk/src/contacts/addressbook/eds.c
index cb212e8630..ec847f5302 100644
--- a/sflphone-gtk/src/contacts/addressbook/eds.c
+++ b/sflphone-gtk/src/contacts/addressbook/eds.c
@@ -88,7 +88,7 @@ free_hit(Hit *h)
 gboolean
 books_ready()
 {
-  return (g_slist_length(books_data) == 0);
+  return (g_slist_length(books_data) > 0);
 }
 
 /**
@@ -258,8 +258,6 @@ eds_async_open_callback(EBook *book, EBookStatus status, gpointer closure)
 
   remaining_books_to_open--;
 
-  printf("async open !\n");
-
   if (status == E_BOOK_ERROR_OK)
     {
       book_data_t *book_data = g_new(book_data_t, 1);
diff --git a/sflphone-gtk/src/toolbar.c b/sflphone-gtk/src/toolbar.c
index 1e6b6bc5d0..4c03d5ea66 100644
--- a/sflphone-gtk/src/toolbar.c
+++ b/sflphone-gtk/src/toolbar.c
@@ -18,6 +18,7 @@
  */
 
 #include <toolbar.h>
+#include <contacts/addressbook.h>
 
 static gboolean
 is_inserted( GtkWidget* button )
@@ -251,6 +252,7 @@ GtkWidget *create_toolbar ()
   gtk_widget_set_tooltip_text(GTK_WIDGET(contactButton), _("Address book"));
 #endif
   gtk_tool_button_set_label (GTK_TOOL_BUTTON (contactButton), _("Address book"));
+  gtk_widget_set_state( GTK_WIDGET(contactButton), GTK_STATE_INSENSITIVE);
   g_signal_connect (G_OBJECT (contactButton), "toggled", G_CALLBACK (toggle_button_cb), contacts);
   gtk_toolbar_insert(GTK_TOOLBAR(ret), GTK_TOOL_ITEM(contactButton), -1);
 
@@ -383,4 +385,11 @@ toolbar_update_buttons ()
             gtk_widget_set_sensitive( GTK_WIDGET(callButton), FALSE);
         }
     }
+
+    // Activate addressbook button if needed
+    // TODO : should be moved in a better place
+    if(addressbook_is_ready())
+      gtk_widget_set_sensitive( GTK_WIDGET(contactButton), TRUE);
+    else
+      gtk_widget_set_sensitive( GTK_WIDGET(contactButton), FALSE);
 }
-- 
GitLab