remove all gtk3 conditionals
[claws.git] / src / addr_compl.c
index 44303a6a2b2fa0f70240a664b3a327b8d6daa31e..08534085b22161f6ba4ae00b5fa34f13679d2b6a 100644 (file)
@@ -46,7 +46,7 @@
 #include "stock_pixmap.h"
 #include <pthread.h>
 
-#ifndef USE_NEW_ADDRBOOK
+#ifndef USE_ALT_ADDRBOOK
        #include "addrindex.h"
 #else
        #include "addressbook-dbus.h"
@@ -187,7 +187,9 @@ static gint weight_addr_match(const address_entry* addr)
        gint    a_weight = addr->address ? strlen(addr->address) : n_weight;
        gchar*  match = NULL;
 
-       match = strcasestr(addr->name, g_completion_prefix);
+       if (addr->name)
+               match = strcasestr(addr->name, g_completion_prefix);
+
        if (match != NULL) {
                if (match == addr->name)
                        n_weight = -4;
@@ -373,7 +375,7 @@ static void read_address_book(gchar *folderpath) {
        free_all_addresses();
        free_completion_list();
 
-#ifndef USE_NEW_ADDRBOOK
+#ifndef USE_ALT_ADDRBOOK
        addrindex_load_completion( add_address, folderpath );
 #else
        GError* error = NULL;
@@ -435,7 +437,7 @@ static void clear_completion_cache(void)
  * address completion.
  * \return The number of addresses in the completion list.
  */
-gint start_address_completion(gchar *folderpath)
+guint start_address_completion(gchar *folderpath)
 {
        gboolean different_book = FALSE;
        clear_completion_cache();
@@ -855,7 +857,7 @@ static CompletionWindow *addrcompl_create_window( void ) {
  */
 static void addrcompl_destroy_window( CompletionWindow *cw ) {
        /* Stop all searches currently in progress */
-#ifndef USE_NEW_ADDRBOOK
+#ifndef USE_ALT_ADDRBOOK
        addrindex_stop_search( _queryID_ );
 #endif
        /* Remove idler function... or application may not terminate */
@@ -946,11 +948,7 @@ static void addrcompl_resize_window( CompletionWindow *cw ) {
        gint x, y, width, height, depth;
 
        /* Get current geometry of window */
-#if !GTK_CHECK_VERSION(3, 0, 0)
        gdk_window_get_geometry( gtk_widget_get_window( cw->window ), &x, &y, &width, &height, &depth );
-#else
-       gdk_window_get_geometry( gtk_widget_get_window( cw->window ), &x, &y, &width, &height );
-#endif
 
        gtk_widget_queue_resize_no_redraw(cw->list_view);
        gtk_widget_size_request( cw->list_view, &r );
@@ -988,11 +986,11 @@ static void addrcompl_add_entry( CompletionWindow *cw, gchar *address ) {
        GdkPixbuf *pixbuf;
        
        if (!group_pixbuf) {
-               stock_pixbuf_gdk(cw->list_view, STOCK_PIXMAP_ADDR_TWO, &group_pixbuf);
+               stock_pixbuf_gdk(STOCK_PIXMAP_ADDR_TWO, &group_pixbuf);
                g_object_ref(G_OBJECT(group_pixbuf));
        }
        if (!email_pixbuf) {
-               stock_pixbuf_gdk(cw->list_view, STOCK_PIXMAP_ADDR_ONE, &email_pixbuf);
+               stock_pixbuf_gdk(STOCK_PIXMAP_ADDR_ONE, &email_pixbuf);
                g_object_ref(G_OBJECT(email_pixbuf));
        }
        /* g_print( "\t\tAdding :%s\n", address ); */
@@ -1024,14 +1022,15 @@ static void addrcompl_add_entry( CompletionWindow *cw, gchar *address ) {
        gtk_grab_add( cw->window );
 
        selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(cw->list_view));
-       gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter);
+       if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter))
+               return;
 
-       if( cw->listCount == 1 ) {
+       if (cw->listCount == 1) {
                /* Select first row for now */
                gtk_tree_selection_select_iter(selection, &iter);
        }
 #ifndef GENERIC_UMPC
-       else if( cw->listCount == 2 ) {
+       else if (cw->listCount == 2) {
                if (gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter)) {
                        /* Move off first row */
                        gtk_tree_selection_select_iter(selection, &iter);
@@ -1092,7 +1091,7 @@ static gboolean addrcompl_idle( gpointer data ) {
  *                   criteria.
  * \param data       Query data.
  */
-#ifndef USE_NEW_ADDRBOOK
+#ifndef USE_ALT_ADDRBOOK
 static gint addrcompl_callback_entry(
        gpointer sender, gint queryID, GList *listEMail, gpointer data )
 {
@@ -1127,7 +1126,7 @@ static void addrcompl_clear_queue( void ) {
        /* Clear out display queue */
        pthread_mutex_lock( & _completionMutex_ );
 
-       g_list_free( _displayQueue_ );
+       g_list_free_full( _displayQueue_, g_free );
        _displayQueue_ = NULL;
 
        pthread_mutex_unlock( & _completionMutex_ );
@@ -1164,7 +1163,7 @@ static void addrcompl_load_local( void ) {
  * Start the search.
  */
 static void addrcompl_start_search( void ) {
-#ifndef USE_NEW_ADDRBOOK
+#ifndef USE_ALT_ADDRBOOK
        gchar *searchTerm;
 
        searchTerm = g_strdup( _compWindow_->searchTerm );
@@ -1184,7 +1183,7 @@ static void addrcompl_start_search( void ) {
                g_idle_add( (GSourceFunc) addrcompl_idle, NULL );
        /* g_print( "addrindex_start_search::queryID=%d\n", _queryID_ ); */
 
-#ifndef USE_NEW_ADDRBOOK
+#ifndef USE_ALT_ADDRBOOK
        addrindex_start_search( _queryID_ );
 #else
        
@@ -1214,7 +1213,7 @@ static void completion_window_apply_selection(GtkTreeView *list_view,
        GList *grp_emails = NULL;
 
        selection = gtk_tree_view_get_selection(list_view);
-       if (! gtk_tree_selection_get_selected(selection, &model, &iter))
+       if (!gtk_tree_selection_get_selected(selection, &model, &iter))
                return;
 
        /* First remove the idler */
@@ -1428,9 +1427,10 @@ static gboolean address_completion_complete_address_in_entry(GtkEntry *entry,
        else 
 #endif
        if( ncount == 0 ) {
-               addrcompl_add_queue( g_strdup( searchTerm ) );
+               addrcompl_add_queue( searchTerm );
+       } else {
+               g_free( searchTerm );
        }
-       g_free( searchTerm );
 
        return TRUE;
 }
@@ -1471,11 +1471,7 @@ static void address_completion_create_completion_window( GtkEntry *entry_ )
                GTK_SHADOW_OUT);
        /* Use entry widget to create initial window */
        gdkwin = gtk_widget_get_window(entry),
-#if !GTK_CHECK_VERSION(3, 0, 0)
        gdk_window_get_geometry(gdkwin, &x, &y, &width, &height, &depth);
-#else
-       gdk_window_get_geometry(gdkwin, &x, &y, &width, &height);
-#endif
        gdk_window_get_origin (gdkwin, &x, &y);
        y += height;
        gtk_window_move(GTK_WINDOW(window), x, y);
@@ -1831,8 +1827,33 @@ static gboolean addr_compl_defer_select_destruct(CompletionWindow *window)
        return FALSE;
 }
 
+gboolean found_in_addressbook(const gchar *address)
+{
+       gchar *addr = NULL;
+       gboolean found = FALSE;
+       gint num_addr = 0;
+
+       if (!address)
+               return FALSE;
+
+       addr = g_strdup(address);
+       extract_address(addr);
+       num_addr = complete_address(addr);
+       if (num_addr > 1) {
+               /* skip first item (this is the search string itself) */
+               int i = 1;
+               for (; i < num_addr && !found; i++) {
+                       gchar *caddr = get_complete_address(i);
+                       extract_address(caddr);
+                       if (strcasecmp(caddr, addr) == 0)
+                               found = TRUE;
+                       g_free(caddr);
+               }
+       }
+       g_free(addr);
+       return found;
+}
 
 /*
  * End of Source.
  */
-