talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit 2fbce58effd0272187cadc4d0601b9ddaa529403
parent cd4249b27a444c8cae26a23bf681461ce31db5ad
Author: Oliver Lowe <o@olowe.co>
Date:   Mon,  4 Aug 2025 17:48:19 +0700

Remove experimental address book via DBUS

ifdef hell no more

Diffstat:
Mconfigure.ac | 39---------------------------------------
Msrc/Makefile.am | 8+-------
Msrc/addr_compl.c | 27++-------------------------
Msrc/addressadd.c | 113++++---------------------------------------------------------------------------
Msrc/addressadd.h | 11++---------
Dsrc/addressbook-dbus.c | 487-------------------------------------------------------------------------------
Dsrc/addressbook-dbus.h | 75---------------------------------------------------------------------------
Msrc/addrgather.c | 92+++----------------------------------------------------------------------------
Msrc/addrgather.h | 6------
Msrc/addrharvest.c | 69---------------------------------------------------------------------
Msrc/addrharvest.h | 10+---------
Msrc/compose.c | 29+----------------------------
Msrc/filtering.c | 99++++++++++++++++++++++++++++++++++---------------------------------------------
Msrc/headerview.c | 28+++++++++-------------------
Msrc/main.c | 21+--------------------
Msrc/mainwindow.c | 18+-----------------
Msrc/messageview.c | 329+++++++++++++++++++++++++++++++++++++------------------------------------------
Msrc/prefs_common.c | 74++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/prefs_filtering_action.c | 150+++++++++++++++++++++++++++++++++++--------------------------------------------
Msrc/prefs_matcher.c | 244++++++++++++++++++++++++++++++++++++++-----------------------------------------
Msrc/summaryview.c | 13+------------
Msrc/textview.c | 273+++++++++++++++++++++++++++++++++++++------------------------------------------
Msrc/toolbar.c | 16+---------------
23 files changed, 569 insertions(+), 1662 deletions(-)

diff --git a/configure.ac b/configure.ac @@ -308,10 +308,6 @@ AC_ARG_ENABLE(valgrind, [ --disable-valgrind Do not build valgrind support for debugging], [enable_valgrind=$enableval], [enable_valgrind=yes]) -AC_ARG_ENABLE(alternate-addressbook, - [ --enable-alternate-addressbook Build alternate external address book support], - [enable_alternate_addressbook=$enableval], [enable_alternate_addressbook=no]) - AC_ARG_ENABLE(svg, [ --disable-svg Do not build SVG support], [enable_svg=$enableval], [enable_svg=yes]) @@ -737,38 +733,6 @@ if test "x$enable_dbus" = "xyes"; then fi dnl ####################################################################### -dnl # Configure address book support -dnl ####################################################################### - -dnl ####################################################################### -dnl # Check for alternate address book support -dnl ####################################################################### -AC_MSG_CHECKING([whether DBUS support for alternate address book is present]) -if test x"$enable_dbus" = xyes; then - AC_MSG_RESULT([yes]) - AC_MSG_CHECKING([whether to enable alternate address book]) - if test x"$enable_alternate_addressbook" = xyes; then - AC_MSG_RESULT([yes]) - PKG_CHECK_MODULES(CONTACTS, [claws-contacts], - [ - AC_DEFINE(USE_ALT_ADDRBOOK, 1, [Define if alternate address book is to be activated.]) - enable_alternate_addressbook=yes - AC_SUBST(CONTACTS_CFLAGS) - AC_SUBST(CONTACTS_LIBS) - ], - [ - enable_alternate_addressbook=no - ]) - else - AC_MSG_RESULT([no]) - enable_alternate_addressbook=no - fi -else - AC_MSG_RESULT([no]) - enable_alternate_addressbook=no -fi - -dnl ####################################################################### dnl # Check for NetworkManager support dnl ####################################################################### if test x"$enable_dbus" = xyes; then @@ -1195,9 +1159,6 @@ dnl Output the configuration summary echo "" echo "$PACKAGE $VERSION" echo "" -if test x"$enable_alternate_addressbook" = xyes; then - echo "Using Address Book : Alternate experimental interface" -fi echo "gnuTLS : $enable_gnutls" echo "OAuth2 : $enable_oauth2" echo "iconv : $am_cv_func_iconv" diff --git a/src/Makefile.am b/src/Makefile.am @@ -31,9 +31,7 @@ claws_mail_platform_ldflags = claws_mail_deps = endif -alt_abook_source = \ - addressbook-dbus.c -orig_abook_source = \ +abook_source = \ addrbook.c \ addrclip.c \ addrcustomattr.c \ @@ -53,11 +51,7 @@ orig_abook_source = \ exporthtml.c \ vcard.c -abook_source = $(orig_abook_source) -abook_extra = $(alt_abook_source) - abook_headers = \ - addressbook-dbus.h \ adbookbase.h \ addrbook.h \ addrclip.h \ diff --git a/src/addr_compl.c b/src/addr_compl.c @@ -45,11 +45,8 @@ #include "stock_pixmap.h" #include <pthread.h> -#ifndef USE_ALT_ADDRBOOK - #include "addrindex.h" -#else - #include "addressbook-dbus.h" -#endif +#include "addrindex.h" + /*! *\brief For the GtkListStore @@ -384,18 +381,8 @@ static void read_address_book(gchar *folderpath) { free_all_addresses(); free_completion_list(); -#ifndef USE_ALT_ADDRBOOK addrindex_load_completion( add_address, folderpath ); -#else - GError* error = NULL; - addrcompl_initialize(); - if (! addrindex_dbus_load_completion(add_address, &error)) { - g_warning("failed to populate address completion list"); - g_error_free(error); - return; - } -#endif /* plugins may hook in here to modify/extend the completion list */ if(!folderpath) { hooks_invoke(ADDDRESS_COMPLETION_BUILD_ADDRESS_LIST_HOOKLIST, &g_address_list); @@ -871,9 +858,7 @@ static void addrcompl_destroy_window( CompletionWindow *cw ) { display = gdk_display_get_default(); seat = gdk_display_get_default_seat(display); /* Stop all searches currently in progress */ -#ifndef USE_ALT_ADDRBOOK addrindex_stop_search( _queryID_ ); -#endif /* Remove idler function... or application may not terminate */ if( _completionIdleID_ != 0 ) { g_source_remove( _completionIdleID_ ); @@ -1112,7 +1097,6 @@ static gboolean addrcompl_idle( gpointer data ) { * criteria. * \param data Query data. */ -#ifndef USE_ALT_ADDRBOOK static gint addrcompl_callback_entry( gpointer sender, gint queryID, GList *listEMail, gpointer data ) { @@ -1138,7 +1122,6 @@ static gint addrcompl_callback_entry( return 0; } -#endif /** * Clear the display queue. @@ -1184,7 +1167,6 @@ static void addrcompl_load_local( void ) { * Start the search. */ static void addrcompl_start_search( void ) { -#ifndef USE_ALT_ADDRBOOK gchar *searchTerm; searchTerm = g_strdup( _compWindow_->searchTerm ); @@ -1193,7 +1175,6 @@ static void addrcompl_start_search( void ) { _queryID_ = addrindex_setup_search( searchTerm, NULL, addrcompl_callback_entry ); g_free( searchTerm ); -#endif /* g_print( "addrcompl_start_search::queryID=%d\n", _queryID_ ); */ /* Load local stuff */ @@ -1204,11 +1185,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_ALT_ADDRBOOK addrindex_start_search( _queryID_ ); -#else - -#endif } /** diff --git a/src/addressadd.c b/src/addressadd.c @@ -37,26 +37,16 @@ #include "prefs_common.h" #include "prefs_gtk.h" #include "addressadd.h" -#ifndef USE_ALT_ADDRBOOK - #include "addritem.h" - #include "addrbook.h" - #include "addrindex.h" -#else - #include "addressbook-dbus.h" -#endif +#include "addritem.h" +#include "addrbook.h" +#include "addrindex.h" #include "manage_window.h" #include "alertpanel.h" -#ifndef USE_ALT_ADDRBOOK typedef struct { AddressBookFile *book; ItemFolder *folder; } FolderInfo; -#else -typedef struct { - gchar* book; -} FolderInfo; -#endif static struct _AddressAdd_dlg { GtkWidget *window; @@ -82,7 +72,6 @@ enum { N_ADDRADD_COLS }; -#ifndef USE_ALT_ADDRBOOK static FolderInfo *addressadd_create_folderinfo( AddressBookFile *abf, ItemFolder *folder ) { FolderInfo *fi = g_new0( FolderInfo, 1 ); @@ -90,26 +79,12 @@ static FolderInfo *addressadd_create_folderinfo( AddressBookFile *abf, ItemFolde fi->folder = folder; return fi; } -#else -static FolderInfo *addressadd_create_folderinfo(gchar* book) { - FolderInfo *fi = g_new0( FolderInfo, 1 ); - fi->book = book; - return fi; -} -#endif -#ifndef USE_ALT_ADDRBOOK static void addressadd_free_folderinfo( FolderInfo *fi ) { fi->book = NULL; fi->folder = NULL; g_free( fi ); } -#else -static void addressadd_free_folderinfo( FolderInfo *fi ) { - fi->book = NULL; - g_free( fi ); -} -#endif static gint addressadd_delete_event( GtkWidget *widget, GdkEventAny *event, gboolean *cancelled ) { addressadd_cancelled = TRUE; @@ -359,7 +334,6 @@ static void addressadd_tree_clear() gtk_tree_store_clear(GTK_TREE_STORE(model)); } -#ifndef USE_ALT_ADDRBOOK static void addressadd_load_folder( GtkTreeIter *parent_iter, ItemFolder *parentFolder, FolderInfo *fiParent ) { @@ -443,57 +417,19 @@ static void addressadd_load_data( AddressIndex *addrIndex ) { if (gtk_tree_model_get_iter_first(model, &iter)) gtk_tree_selection_select_iter(sel, &iter); } -#else -static void addressadd_load_data() { - GSList *list; - FolderInfo *fi = NULL; - GError* error = NULL; - GtkWidget *view = addressadd_dlg.tree_folder; - GtkTreeIter iter; - GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(view)); - GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(view)); - gchar *name; - - addressadd_tree_clear(); - list = addressbook_dbus_get_books(&error); - for (; list; list = g_slist_next(list)) { - name = (gchar *) list->data; - fi = addressadd_create_folderinfo(name); - gtk_tree_store_append(GTK_TREE_STORE(model), &iter, NULL); - gtk_tree_store_set(GTK_TREE_STORE(model), &iter, - ADDRADD_COL_ICON, bookXpm,ADDRADD_COL_NAME, (gchar *)list->data, - ADDRADD_COL_PTR, fi, - -1); - } - - if (gtk_tree_model_get_iter_first(model, &iter)) - gtk_tree_selection_select_iter(sel, &iter); -} -#endif - -#ifndef USE_ALT_ADDRBOOK gboolean addressadd_selection( AddressIndex *addrIndex, const gchar *name, const gchar *address, const gchar *remarks, GdkPixbuf *picture ) { -#else -gboolean addressadd_selection(const gchar *name, const gchar *address, - const gchar *remarks, GdkPixbuf *picture ) { -#endif gboolean retVal = FALSE; -#ifndef USE_ALT_ADDRBOOK ItemPerson *person = NULL; -#endif FolderInfo *fi = NULL; addressadd_cancelled = FALSE; if( ! addressadd_dlg.window ) addressadd_create(); addressadd_dlg.fiSelected = NULL; -#ifndef USE_ALT_ADDRBOOK addressadd_load_data( addrIndex ); -#else - addressadd_load_data(); -#endif + gtk_widget_show(addressadd_dlg.window); gtk_window_set_modal(GTK_WINDOW(addressadd_dlg.window), TRUE); gtk_widget_grab_focus(addressadd_dlg.ok_btn); @@ -527,7 +463,6 @@ gboolean addressadd_selection(const gchar *name, const gchar *address, fi = addressadd_dlg.fiSelected; -#ifndef USE_ALT_ADDRBOOK person = addrbook_add_contact( fi->book, fi->folder, returned_name, address, @@ -549,47 +484,10 @@ gboolean addressadd_selection(const gchar *name, const gchar *address, g_free( name ); } } -#else - ContactData* contact = g_new0(ContactData, 1); - GError* error = NULL; - - if (returned_name) - contact->cn = g_strdup(returned_name); - else - contact->cn = g_strdup(address); - - contact->name = g_strdup(returned_name); - contact->email = g_strdup(address); - contact->remarks = g_strdup(returned_remarks); - contact->book = g_strdup(fi->book); - contact->picture = picture; - - if (addressbook_dbus_add_contact(contact, &error) == 0) { - debug_print("Added to addressbook:\n%s\n%s\n%s\n%s\n", - returned_name, address, returned_remarks, fi->book); - retVal = TRUE; - } - else { - retVal = FALSE; - if (error) { - GtkWidget* dialog = gtk_message_dialog_new ( - GTK_WINDOW(addressadd_dlg.window), - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_CLOSE, - "%s", error->message); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - g_error_free(error); - } - } - contact_data_free(&contact); -#endif + g_free(returned_name); g_free(returned_remarks); -#ifndef USE_ALT_ADDRBOOK if( person ) retVal = TRUE; -#endif } } @@ -597,4 +495,3 @@ gboolean addressadd_selection(const gchar *name, const gchar *address, return retVal; } - diff --git a/src/addressadd.h b/src/addressadd.h @@ -14,7 +14,7 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * */ /* @@ -24,17 +24,10 @@ #ifndef __ADDRESS_ADD_H__ #define __ADDRESS_ADD_H__ -#ifndef USE_ALT_ADDRBOOK - #include "addrindex.h" -#endif +#include "addrindex.h" #include "gtk/gtk.h" -#ifndef USE_ALT_ADDRBOOK gboolean addressadd_selection( AddressIndex *addrIndex, const gchar *name, const gchar *address, const gchar *remarks, GdkPixbuf *picture ); -#else -gboolean addressadd_selection(const gchar *name, const gchar *address, const gchar *remarks, - GdkPixbuf *picture ); -#endif #endif /* __ADDRESS_ADD_H__ */ diff --git a/src/addressbook-dbus.c b/src/addressbook-dbus.c @@ -1,487 +0,0 @@ -/* - * $Id$ - */ -/* vim:et:ts=4:sw=4:et:sts=4:ai:set list listchars=tab\:��,trail\:�: */ - -/* - * Claws-contacts is a proposed new design for the address book feature - * in Claws Mail. The goal for this new design was to create a - * solution more suitable for the term lightweight and to be more - * maintainable than the present implementation. - * - * More lightweight is achieved by design, in that sence that the whole - * structure is based on a plugable design. - * - * Claws Mail is Copyright (C) 1999-2018 by the Claws Mail Team and - * Claws-contacts is Copyright (C) 2018 by Michael Rasmussen. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <glib.h> -#include <glib/gi18n.h> -#include <dbus/dbus.h> -#include <dbus/dbus-glib-bindings.h> -#include "dbus-contact.h" -#include "addrgather.h" -#include "folder.h" -#include "compose.h" -#include "hooks.h" - -#include "addressbook-dbus.h" -#include "client-bindings.h" - -static DBusGProxy* proxy = NULL; -static DBusGConnection* connection = NULL; -static Compose* compose_instance = NULL; - -static GQuark client_object_error_quark() { - static GQuark quark = 0; - if (!quark) - quark = g_quark_from_static_string ("client_object_error"); - - return quark; -} - -static gboolean init(GError** error) { - connection = dbus_g_bus_get (DBUS_BUS_SESSION, error); - if (connection == NULL || *error) { - if (! *error) - g_set_error(error, client_object_error_quark(), 1, "Unable to connect to dbus"); - g_warning("unable to connect to dbus: %s", (*error)->message); - return FALSE; - } - - proxy = dbus_g_proxy_new_for_name (connection, - "org.clawsmail.Contacts", - "/org/clawsmail/contacts", - "org.clawsmail.Contacts"); - if (proxy == NULL) { - g_warning("could not get a proxy object"); - g_set_error(error, client_object_error_quark(), 1, "Could not get a proxy object"); - return FALSE; - } - - return TRUE; -} - -static void dbus_contact_free(const DBusContact* contact) { - g_hash_table_destroy(contact->data); - g_ptr_array_free(contact->emails, TRUE); -} - -static GHashTable* hash_table_new(void) { - GHashTable* hash_table; - - hash_table = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); - - return hash_table; -} - -static void g_value_email_free(gpointer data) { - GArray* email = (GArray *) data; - GValue* email_member; - guint i; - - for (i = 0; i < email->len; i++) { - email_member = g_array_index(email, GValue*, i); - g_value_unset(email_member); - } -} - -static GPtrArray* g_value_email_new() { - return g_ptr_array_new_with_free_func(g_value_email_free); -} - -static gchar* convert_2_utf8(gchar* locale) { - gsize read, write; - GError* error = NULL; - gchar *current, *utf8; - const gchar* charset; - - if (g_get_charset(&charset) || g_utf8_validate(locale, -1, 0)) - return g_strdup(locale); - - if (strcmp("ANSI_X3.4-1968", charset) == 0) - current = g_strdup("ISO-8859-1"); - else - current = g_strdup(charset); - - utf8 = g_convert(locale, -1, "UTF-8", current, &read, &write, &error); - if (error) { - g_warning("failed to convert [%s]: %s", charset, error->message); - g_free(current); - return NULL; - } - g_free(current); - - return utf8; -} - -static void format_contact(DBusContact* contact, ContactData* c) { - gchar* firstname; - gchar* lastname; - GArray* email = NULL; - GValue email_member = {0}; - gchar* str; - gchar* image = NULL; - gsize size; - - contact->data = hash_table_new(); - contact->emails = g_value_email_new(); - firstname = lastname = NULL; - - if (c->name) { - gchar* pos = strchr(c->name, ' '); - if (pos) { - firstname = g_strndup(c->name, pos - c->name); - lastname = g_strdup(++pos); - g_hash_table_replace(contact->data, - g_strdup("first-name"), convert_2_utf8(firstname)); - g_hash_table_replace(contact->data, - g_strdup("last-name"), convert_2_utf8(lastname)); - } - else { - lastname = g_strdup(c->name); - g_hash_table_replace(contact->data, - g_strdup("last-name"), convert_2_utf8(lastname)); - } - g_free(firstname); - g_free(lastname); - } - if (c->cn) { - g_hash_table_replace(contact->data, - g_strdup("cn"), convert_2_utf8(c->cn)); - } - - if (c->picture) { - gdk_pixbuf_save_to_buffer( - c->picture, &image, &size, "png", NULL, NULL); - g_hash_table_replace(contact->data, - g_strdup("image"), g_base64_encode((const guchar *) image, size)); - } - - email = g_array_new(FALSE, FALSE, sizeof(GValue*)); - - /* Alias is not available but needed so make an empty string */ - g_value_init(&email_member, G_TYPE_STRING); - g_value_set_string(&email_member, ""); - g_array_append_val(email, email_member); - g_value_unset(&email_member); - - if (c->email) - str = convert_2_utf8(c->email); - else - str = g_strdup(""); - - g_value_init(&email_member, G_TYPE_STRING); - g_value_set_string(&email_member, str); - g_array_append_val(email, email_member); - g_value_unset(&email_member); - g_free(str); - - if (c->remarks) - str = convert_2_utf8(c->remarks); - else - str = g_strdup(""); - - g_value_init(&email_member, G_TYPE_STRING); - g_value_set_string(&email_member, str); - g_array_append_val(email, email_member); - g_value_unset(&email_member); - g_free(str); - - g_ptr_array_add(contact->emails, email); -} - -static DBusHandlerResult contact_add_signal(DBusConnection* bus, - DBusMessage* message, - gpointer data) { - DBusError error; - gchar *s = NULL; - - if (! compose_instance) { - g_message("Missing compose instance\n"); - return DBUS_HANDLER_RESULT_HANDLED; - } - - dbus_error_init (&error); - - if (dbus_message_is_signal(message, "org.clawsmail.Contacts", "ContactMailTo")) { - if (dbus_message_get_args( - message, &error, DBUS_TYPE_STRING, &s, DBUS_TYPE_INVALID)) { - debug_print("ContactMailTo address received: %s\n", s); - compose_entry_append(compose_instance, s, COMPOSE_TO, PREF_NONE); - } - else { - debug_print("ContactMailTo received with error: %s\n", error.message); - dbus_error_free(&error); - } - } - else if (dbus_message_is_signal(message, "org.clawsmail.Contacts", "ContactMailCc")) { - if (dbus_message_get_args( - message, &error, DBUS_TYPE_STRING, &s, DBUS_TYPE_INVALID)) { - debug_print("ContactMailTo address received: %s\n", s); - compose_entry_append(compose_instance, s, COMPOSE_CC, PREF_NONE); - } - else { - debug_print("ContactMailTo received with error: %s\n", error.message); - dbus_error_free(&error); - } - } - else if (dbus_message_is_signal(message, "org.clawsmail.Contacts", "ContactMailBcc")) { - if (dbus_message_get_args( - message, &error, DBUS_TYPE_STRING, &s, DBUS_TYPE_INVALID)) { - debug_print("ContactMailTo address received: %s\n", s); - compose_entry_append(compose_instance, s, COMPOSE_BCC, PREF_NONE); - } - else { - debug_print("ContactMailTo received with error: %s\n", error.message); - dbus_error_free(&error); - } - } - else { - if (error.message) { - g_warning("reception error: %s", error.message); - dbus_error_free(&error); - } - debug_print("Unhandled signal received\n"); - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; - } - - return DBUS_HANDLER_RESULT_HANDLED; -} - -gboolean addressbook_start_service(GError** error) { - gchar* reply = NULL; - gboolean result = FALSE; - - if (! init(error)) - return result; - - if (!org_clawsmail_Contacts_ping(proxy, &reply, error)) { - if (! *error) - g_set_error(error, client_object_error_quark(), 1, "Woops remote method failed"); - g_warning("woops remote method failed: %s", (*error)->message); - } - if (reply && strcmp("PONG", reply) == 0) - result = TRUE; - - return result; -} - -int addressbook_dbus_add_contact(ContactData* contact, GError** error) { - DBusContact dbus_contact; - - if (! init(error)) - return -1; - - format_contact(&dbus_contact, contact); - if (!org_clawsmail_Contacts_add_contact( - proxy, contact->book, dbus_contact.data, dbus_contact.emails, error)) { - if (! *error) - g_set_error(error, client_object_error_quark(), 1, "Woops remote method failed"); - g_warning("woops remote method failed: %s", (*error)->message); - dbus_contact_free(&dbus_contact); - return -1; - } - dbus_contact_free(&dbus_contact); - return 0; -} - -gboolean addrindex_dbus_load_completion(gint (*callBackFunc) - (const gchar* name, - const gchar* address, - const gchar* nick, - const gchar* alias, - GList* grp_emails), - GError** error) { - gchar **list = NULL, **contacts; - gchar *name, *email; - - if (! init(error)) - return FALSE; - - if (!org_clawsmail_Contacts_search_addressbook( - proxy, "*", NULL, &list, error)) { - if (! *error) - g_set_error(error, client_object_error_quark(), 1, "Woops remote method failed"); - g_warning("woops remote method failed: %s", (*error)->message); - g_strfreev(list); - return FALSE; - } - for (contacts = list; *contacts != NULL; contacts += 1) { - gchar* tmp = g_strdup(*contacts); - gchar* pos = g_strrstr(tmp, "\""); - if (pos) { - /* Contact has a name as part of email address */ - *pos = '\0'; - name = tmp; - name += 1; - pos += 3; - email = pos; - pos = g_strrstr(email, ">"); - if (pos) - *pos = '\0'; - } - else { - name = ""; - email = tmp; - } - debug_print("Adding: %s <%s> to completition\n", name, email); - callBackFunc(name, email, NULL, NULL, NULL); - g_free(tmp); - } - - return TRUE; -} - -void addressbook_dbus_open(gboolean compose, GError** error) { - if (! init(error)) - return; - - if (!org_clawsmail_Contacts_show_addressbook(proxy, compose, error)) { - if (! *error) - g_set_error(error, client_object_error_quark(), 1, "Woops remote method failed"); - g_warning("woops remote method failed: %s", (*error)->message); - } -} - -GSList* addressbook_dbus_get_books(GError** error) { - gchar **book_names = NULL, **cur; - GSList* books = NULL; - - if (! init(error)) { - return books; - } - - if (!org_clawsmail_Contacts_book_list(proxy, &book_names, error)) { - if (! *error) - g_set_error(error, client_object_error_quark(), 1, "Woops remote method failed"); - g_warning("woops remote method failed: %s", (*error)->message); - g_strfreev(book_names); - return books; - } - for (cur = book_names; *cur; cur += 1) - books = g_slist_prepend(books, g_strdup(*cur)); - - g_strfreev(book_names); - - return books; -} - -void contact_data_free(ContactData** data) { - ContactData* contact; - - if (! data && ! *data) - return; - - contact = *data; - g_free(contact->cn); - g_free(contact->email); - g_free(contact->remarks); - g_free(contact->name); - g_free(contact->book); - g_free(contact); - *data = NULL; -} - -void addressbook_harvest(FolderItem *folderItem, - gboolean sourceInd, - GList *msgList ) { - addrgather_dlg_execute(folderItem, sourceInd, msgList); -} - -void addressbook_connect_signals(Compose* compose) { - DBusConnection* bus; - DBusError* error = NULL; - - g_return_if_fail(compose != NULL); - - bus = dbus_bus_get (DBUS_BUS_SESSION, error); - if (!bus) { - g_warning("failed to connect to the D-BUS daemon: %s", error->message); - dbus_error_free(error); - return; - } - - debug_print("Compose: %p\n", compose); - compose_instance = compose; - dbus_bus_add_match(bus, "type='signal',interface='org.clawsmail.Contacts'", error); - if (error) { - debug_print("Failed to add match to the D-BUS daemon: %s\n", error->message); - dbus_error_free(error); - return; - } - dbus_connection_add_filter(bus, contact_add_signal, NULL, NULL); -} - -gchar* addressbook_get_vcard(const gchar* account, GError** error) { - gchar* vcard = NULL; - - g_return_val_if_fail(account != NULL, vcard); - - if (! init(error)) { - return vcard; - } - - if (!org_clawsmail_Contacts_get_vcard(proxy, account, &vcard, error)) { - if (! *error) - g_set_error(error, client_object_error_quark(), 1, "Woops remote method failed"); - g_warning("woops remote method failed: %s", (*error)->message); - g_free(vcard); - vcard = NULL; -} - - return vcard; -} - -gboolean addressbook_add_vcard(const gchar* abook, const gchar* vcard, GError** error) { - gboolean result = FALSE; - - return result; -} - -static gboolean my_compose_create_hook(gpointer source, gpointer user_data) { - //Compose *compose = (Compose*) source; - GError* error = NULL; - - gchar* vcard = addressbook_get_vcard("test", &error); - if (error) { - g_warning("%s", error->message); - g_clear_error(&error); - } - else { - debug_print("test.vcf:\n%s\n", vcard); - g_free(vcard); -} - - return FALSE; -} - -void addressbook_install_hooks(GError** error) { - if ((guint)-1 == hooks_register_hook(COMPOSE_CREATED_HOOKLIST, my_compose_create_hook, NULL)) { - g_warning("could not register hook for adding vCards"); - if (error) { - g_set_error(error, client_object_error_quark(), 1, - "Could not register hook for adding vCards"); - } - } -} - diff --git a/src/addressbook-dbus.h b/src/addressbook-dbus.h @@ -1,75 +0,0 @@ -/* - * $Id$ - */ -/* vim:et:ts=4:sw=4:et:sts=4:ai:set list listchars=tab\:��,trail\:�: */ - -/* - * Claws-contacts is a proposed new design for the address book feature - * in Claws Mail. The goal for this new design was to create a - * solution more suitable for the term lightweight and to be more - * maintainable than the present implementation. - * - * More lightweight is achieved by design, in that sence that the whole - * structure is based on a plugable design. - * - * Claws Mail is Copyright (C) 1999-2012 by the Claws Mail Team and - * Claws-contacts is Copyright (C) 2011 by Michael Rasmussen. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -#ifndef __ADDRESSBOOK_DBUS_H__ -#define __ADDRESSBOOK_DBUS_H__ - -#include <glib.h> - -G_BEGIN_DECLS - -#include <gtk/gtk.h> -#include "folder.h" -#include "compose.h" - -typedef struct { - gchar* cn; - gchar* email; - gchar* remarks; - gchar* name; - gchar* book; - GdkPixbuf* picture; -} ContactData; - -gboolean addressbook_start_service(GError** error); -void addressbook_install_hooks(GError** error); -int addressbook_dbus_add_contact(ContactData* contact, GError** error); -gboolean addrindex_dbus_load_completion(gint (*callBackFunc) - (const gchar* name, - const gchar* address, - const gchar* nick, - const gchar* alias, - GList* grp_emails), - GError** error); -void addressbook_dbus_open(gboolean compose, GError** error); -GSList* addressbook_dbus_get_books(GError** error); -void contact_data_free(ContactData** data); -void addressbook_harvest(FolderItem *folderItem, - gboolean sourceInd, - GList *msgList ); -void addressbook_connect_signals(Compose* compose); -gchar* addressbook_get_vcard(const gchar* account, GError** error); -gboolean addressbook_add_vcard(const gchar* abook, const gchar* vcard, GError** error); - -G_END_DECLS - -#endif diff --git a/src/addrgather.c b/src/addrgather.c @@ -46,12 +46,8 @@ #include "prefs_gtk.h" #include "addrharvest.h" -#ifndef USE_ALT_ADDRBOOK - #include "addrindex.h" - #include "addrbook.h" -#else - #include "addressbook-dbus.h" -#endif +#include "addrindex.h" +#include "addrbook.h" #define PAGE_FIELDS 0 #define PAGE_FINISH 1 @@ -78,9 +74,7 @@ static struct _AddrHarvest { GtkWidget *labelFolder; GtkWidget *entryBook; GtkWidget *checkHeader[ NUM_FIELDS ]; -#ifndef USE_ALT_ADDRBOOK GtkWidget *spinbtnFolder; -#endif GtkWidget *checkRecurse; GtkWidget *btnOk; GtkWidget *btnCancel; @@ -92,10 +86,8 @@ static struct _AddrHarvest { GtkWidget *viewCount; } addrgather_dlg; -#ifndef USE_ALT_ADDRBOOK static AddressIndex *_harv_addressIndex_; static AddressBookFile *_harv_addressBook_; -#endif static gchar *_harv_headerNames_[] = { HEADER_FROM, HEADER_REPLY_TO, @@ -159,18 +151,11 @@ static gboolean addrgather_dlg_harvest() { GtkTreeIter iter; AddressHarvester *harvester; gchar *name; -#ifndef USE_ALT_ADDRBOOK AddressBookFile *abf; gchar *newFile; -#else - GList* list; - ContactData* contact; - GError* error = NULL; -#endif gchar str[ FMT_BUFSIZE ]; gint cnt; gint i; -#ifndef USE_ALT_ADDRBOOK gint sz; name = gtk_editable_get_chars( GTK_EDITABLE(addrgather_dlg.entryBook), 0, -1 ); @@ -179,14 +164,6 @@ static gboolean addrgather_dlg_harvest() { _( "Please specify name for address book." ) ); g_free( name ); return FALSE; -#else - name = gtk_editable_get_chars( GTK_EDITABLE(addrgather_dlg.entryBook), 0, -1 ); - if( name == NULL || strlen( name ) < 1 ) { - addrgather_dlg_status_show( - _("No available address book.")); - g_free( name ); - return FALSE; -#endif } /* Create harvest helper */ @@ -213,13 +190,10 @@ static gboolean addrgather_dlg_harvest() { /* Go fer it */ addrgather_dlg_status_show( _( "Collecting addresses..." ) ); GTK_EVENTS_FLUSH(); -#ifndef USE_ALT_ADDRBOOK sz = gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON( addrgather_dlg.spinbtnFolder ) ); addrharvest_set_folder_size( harvester, sz ); -#endif -#ifndef USE_ALT_ADDRBOOK /* Create address book */ abf = addrbook_create_book(); addrbook_set_path( abf, _harv_addressIndex_->filePath ); @@ -228,38 +202,11 @@ static gboolean addrgather_dlg_harvest() { addrbook_set_name( abf, name ); g_free( newFile ); g_free( name ); -#endif - /* Harvest addresses */ -#ifndef USE_ALT_ADDRBOOK addrharvest_harvest( harvester, abf->addressCache, _harv_messageList_ ); - /* save address book */ addrbook_save_data( abf ); _harv_addressBook_ = abf; -#else - addrharvest_harvest( - harvester, NULL, _harv_messageList_ ); - list = g_hash_table_get_values(harvester->dupTable); - for (; list; list = g_list_next(list)) { - contact = g_new0(ContactData, 1); - ContactEntry* person = (ContactEntry *) list->data; - if (person->first_name) - contact->name = g_strconcat( - person->first_name, " ", person->last_name, NULL); - else - contact->name = g_strdup(person->last_name); - if (! contact->name || strlen(contact->name) < 1) - contact->name = g_strdup(person->email); - contact->remarks = g_strdup(N_("address added by Claws Mail")); - contact->email = g_strdup(person->email); - contact->book = g_strdup(name); - addressbook_dbus_add_contact(contact, &error); - contact_data_free(&contact); - } - g_list_free(list); - g_free(name); -#endif /* Update summary count */ view = addrgather_dlg.viewCount; @@ -324,17 +271,13 @@ static void addrgather_page_fields(gint pageNum, gchar *pageLbl) GtkWidget *entryBook; GtkWidget *frameHeader; GtkWidget *checkHeader[NUM_FIELDS]; -#ifndef USE_ALT_ADDRBOOK GtkWidget *hboxs; GtkWidget *spinbtnFolder; GtkAdjustment *adjFolder; -#endif GtkWidget *checkRecurse; gint i; -#ifdef USE_ALT_ADDRBOOK GError* error = NULL; GSList *books, *cur; -#endif /* Container */ vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6); @@ -368,29 +311,13 @@ static void addrgather_page_fields(gint pageNum, gchar *pageLbl) gtk_grid_attach(GTK_GRID(table), label, 0, 1, 1, 1); gtk_label_set_xalign(GTK_LABEL(label), 1.0); -#ifndef USE_ALT_ADDRBOOK entryBook = gtk_entry_new(); -#else - books = addressbook_dbus_get_books(&error); - entryBook = gtk_combo_box_text_new(); - if (books) { - for (cur = books; cur; cur = g_slist_next(cur)) { - gchar* book = (gchar *) cur->data; - gtk_combo_box_text_prepend_text(GTK_COMBO_BOX_TEXT(entryBook), book); - g_free(book); - } - g_slist_free(books); - } - else - gtk_combo_box_text_prepend_text(GTK_COMBO_BOX_TEXT(entryBook), ""); - gtk_combo_box_set_active(GTK_COMBO_BOX(entryBook), 0); -#endif + gtk_grid_attach(GTK_GRID(table), entryBook, 1, 1, 2, 1); gtk_widget_set_hexpand(entryBook, TRUE); gtk_widget_set_halign(entryBook, GTK_ALIGN_FILL); -#ifndef USE_ALT_ADDRBOOK /* Third row */ label = gtk_label_new(_("Address book folder size:")); gtk_grid_attach(GTK_GRID(table), label, 0, 2, 1, 1); @@ -407,7 +334,6 @@ static void addrgather_page_fields(gint pageNum, gchar *pageLbl) CLAWS_SET_TIP(spinbtnFolder, _("Maximum amount of entries per folder within the newly created address book")); -#endif /* Fourth row */ frameHeader = gtk_frame_new(_("Process these mail header fields")); gtk_widget_show(frameHeader); @@ -434,9 +360,7 @@ static void addrgather_page_fields(gint pageNum, gchar *pageLbl) addrgather_dlg.labelFolder = labelFolder; addrgather_dlg.entryBook = entryBook; -#ifndef USE_ALT_ADDRBOOK addrgather_dlg.spinbtnFolder = spinbtnFolder; -#endif addrgather_dlg.checkRecurse = checkRecurse; } @@ -595,19 +519,13 @@ static void addrgather_dlg_create(void) * msgList List of message numbers, or NULL to process folder. * Return: Populated address book file, or NULL if none created. */ -#ifndef USE_ALT_ADDRBOOK AddressBookFile *addrgather_dlg_execute(FolderItem *folderItem, AddressIndex *addrIndex, gboolean sourceInd, GList *msgList) -#else -void addrgather_dlg_execute(FolderItem *folderItem, gboolean sourceInd, GList *msgList) -#endif { gint i; -#ifndef USE_ALT_ADDRBOOK _harv_addressIndex_ = addrIndex; _harv_addressBook_ = NULL; -#endif _harv_messageList_ = msgList; /* Create dialog */ @@ -622,9 +540,7 @@ void addrgather_dlg_execute(FolderItem *folderItem, gboolean sourceInd, GList *m /* Setup some default values */ gtk_label_set_text(GTK_LABEL(addrgather_dlg.labelFolder), folderItem->path); -#ifndef USE_ALT_ADDRBOOK gtk_entry_set_text(GTK_ENTRY(addrgather_dlg.entryBook), folderItem->path); -#endif for (i = 0; i < NUM_FIELDS; i++) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(addrgather_dlg.checkHeader[i]), @@ -661,12 +577,10 @@ void addrgather_dlg_execute(FolderItem *folderItem, gboolean sourceInd, GList *m addrgather_dlg.folderPath = NULL; gtk_widget_hide(addrgather_dlg.window); gtk_window_set_modal(GTK_WINDOW(addrgather_dlg.window), FALSE); -#ifndef USE_ALT_ADDRBOOK _harv_addressIndex_ = NULL; if (addrgather_dlg.cancelled == TRUE) return NULL; return _harv_addressBook_; -#endif } diff --git a/src/addrgather.h b/src/addrgather.h @@ -27,16 +27,10 @@ /* Function prototypes */ #include "folder.h" -#ifndef USE_ALT_ADDRBOOK #include "addrbook.h" AddressBookFile *addrgather_dlg_execute( FolderItem *folderItem, AddressIndex *addrIndex, gboolean sourceInd, GList *msgList ); -#else -void addrgather_dlg_execute( FolderItem *folderItem, - gboolean sourceInd, - GList *msgList ); -#endif #endif /* __ADDR_GATHER_H__ */ diff --git a/src/addrharvest.c b/src/addrharvest.c @@ -35,9 +35,6 @@ #include "addrharvest.h" #include "codeconv.h" #include "addritem.h" -#ifdef USE_ALT_ADDRBOOK - #include "addressbook-dbus.h" -#endif #include "file-utils.h" /* Mail header names of interest */ @@ -70,14 +67,6 @@ struct _HeaderEntry { gint count; }; -#ifdef USE_ALT_ADDRBOOK -typedef enum { - FIRST = 0, - LAST, -} Namepart; - -#endif - /* * Build header table entry. * Enter: harvester Harvester object. @@ -284,32 +273,6 @@ void addrharvest_free( AddressHarvester *harvester ) { g_free( harvester ); } -#ifdef USE_ALT_ADDRBOOK -static gchar* get_namepart(const gchar* name, Namepart namepart) { - gchar *pos, *part = NULL; - gchar *token = g_strdup(name); - - pos = g_strrstr(token, " "); - if (namepart == FIRST) { - if (pos) { - *pos = '\0'; - part = g_strdup(token); - *pos = ' '; - } - } - else { - if (! pos) - part = g_strdup(token); - else { - pos +=1; - part = g_strdup(pos); - } - } - g_free(token); - return part; -} -#endif - /* * Insert address into cache. * Enter: harvester Harvester object. @@ -323,7 +286,6 @@ static void addrharvest_insert_cache( AddressCache *cache, const gchar *name, const gchar *address ) { -#ifndef USE_ALT_ADDRBOOK ItemPerson *person; ItemFolder *folder; gchar *folderName; @@ -339,15 +301,10 @@ static void addrharvest_insert_cache( if( entry->count % harvester->folderSize == 0 ) { newFolder = TRUE; /* Folder is full */ } -#else - ContactEntry* person; - gchar* key; -#endif /* Insert address */ key = g_utf8_strdown( address, -1 ); person = g_hash_table_lookup( harvester->dupTable, key ); -#ifndef USE_ALT_ADDRBOOK if( person ) { /* Update existing person to use longest name */ value = ADDRITEM_NAME(person); @@ -378,16 +335,6 @@ static void addrharvest_insert_cache( entry->count++; } addritem_parse_first_last( person ); -#else - if (! person) { - person = g_new0(ContactEntry, 1); - person->first_name = get_namepart(name, FIRST); - person->last_name = get_namepart(name, LAST); - person->email = g_strdup(address); - g_hash_table_insert(harvester->dupTable, key, person); - entry->count++; - } -#endif } /* @@ -587,13 +534,8 @@ static void addrharvest_parse_address( name = conv_unmime_header(buffer, NULL, TRUE); /* Insert into address book */ -#ifndef USE_ALT_ADDRBOOK addrharvest_insert_cache( harvester, entry, cache, name, email ); -#else - addrharvest_insert_cache( - harvester, entry, NULL, name, email); -#endif g_free( email ); g_free( name ); } @@ -839,13 +781,11 @@ static void addrharvest_harvest_list( } /* - * ============================================================================ * Read all files in specified directory into address book. * Enter: harvester Harvester object. * cache Address cache to load. * msgList List of message numbers, or NULL to process folder. * Return: Status. - * ============================================================================ */ gint addrharvest_harvest( AddressHarvester *harvester, AddressCache *cache, GList *msgList ) @@ -856,16 +796,11 @@ gint addrharvest_harvest( retVal = MGU_BAD_ARGS; cm_return_val_if_fail( harvester != NULL, retVal ); -#ifndef USE_ALT_ADDRBOOK cm_return_val_if_fail( cache != NULL, retVal ); -#endif cm_return_val_if_fail( harvester->path != NULL, retVal ); -#ifndef USE_ALT_ADDRBOOK - /* Clear cache */ addrcache_clear( cache ); cache->dataRead = FALSE; -#endif /* Build list of headers of interest */ listHdr = NULL; node = harvester->headerTable; @@ -891,20 +826,16 @@ gint addrharvest_harvest( } g_list_free_full( listHdr, g_free ); -#ifndef USE_ALT_ADDRBOOK /* Mark cache */ cache->modified = FALSE; cache->dataRead = TRUE; -#endif return retVal; } /* - * ============================================================================ * Test whether any headers have been selected for processing. * Enter: harvester Harvester object. * Return: TRUE if a header was selected, FALSE if none were selected. - * ============================================================================ */ gboolean addrharvest_check_header( AddressHarvester *harvester ) { gboolean retVal; diff --git a/src/addrharvest.h b/src/addrharvest.h @@ -14,7 +14,7 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. - * + * */ /* @@ -47,14 +47,6 @@ struct _AddressHarvester { gboolean folderRecurse; }; -#ifdef USE_ALT_ADDRBOOK -typedef struct { - gchar* first_name; - gchar* last_name; - gchar* email; -} ContactEntry; -#endif - /* Function prototypes */ AddressHarvester *addrharvest_create ( void ); void addrharvest_free ( AddressHarvester *harvester ); diff --git a/src/compose.c b/src/compose.c @@ -65,12 +65,7 @@ #include "main.h" #include "mainwindow.h" #include "compose.h" -#ifndef USE_ALT_ADDRBOOK - #include "addressbook.h" -#else - #include "addressbook-dbus.h" - #include "addressadd.h" -#endif +#include "addressbook.h" #include "folderview.h" #include "procmsg.h" #include "menu.h" @@ -7073,14 +7068,7 @@ static void compose_add_to_addressbook_cb(GtkMenuItem *menuitem, gpointer user_d if (*address != '\0') { gchar *name = procheader_get_fromname(address); extract_address(address); -#ifndef USE_ALT_ADDRBOOK addressbook_add_contact(name, address, NULL, NULL); -#else - debug_print("%s: %s\n", name, address); - if (addressadd_selection(name, address, NULL, NULL)) { - debug_print( "addressbook_add_contact - added\n" ); - } -#endif } g_free(address); } @@ -8326,9 +8314,7 @@ static Compose *compose_create(PrefsAccount *account, gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN((compose->header_last->combo)))), prefs_common_translated_header_name("Newsgroups:")); -#ifndef USE_ALT_ADDRBOOK addressbook_set_target_compose(compose); -#endif if (mode != COMPOSE_REDIRECT) compose_set_template_menu(compose); else { @@ -9157,10 +9143,8 @@ static void compose_destroy(Compose *compose) g_free(compose->privacy_system); g_free(compose->encdata); -#ifndef USE_ALT_ADDRBOOK if (addressbook_get_target_compose() == compose) addressbook_set_target_compose(NULL); -#endif #if USE_ENCHANT if (compose->gtkaspell) { gtkaspell_delete(compose->gtkaspell); @@ -10772,18 +10756,7 @@ static void compose_set_encoding_cb(GtkAction *action, GtkRadioAction *current, static void compose_address_cb(GtkAction *action, gpointer data) { Compose *compose = (Compose *)data; - -#ifndef USE_ALT_ADDRBOOK addressbook_open(compose); -#else - GError* error = NULL; - addressbook_connect_signals(compose); - addressbook_dbus_open(TRUE, &error); - if (error) { - g_warning("%s", error->message); - g_error_free(error); - } -#endif } static void about_show_cb(GtkAction *action, gpointer data) diff --git a/src/filtering.c b/src/filtering.c @@ -35,13 +35,8 @@ #include "compose.h" #include "prefs_common.h" #include "addritem.h" -#ifndef USE_ALT_ADDRBOOK - #include "addrbook.h" - #include "addressbook.h" -#else - #include "addressbook-dbus.h" - #include "addressadd.h" -#endif +#include "addrbook.h" +#include "addressbook.h" #include "addr_compl.h" #include "tags.h" #include "log.h" @@ -77,7 +72,7 @@ FilteringAction * filteringaction_new(int type, int account_id, } else { action->header = NULL; } - action->labelcolor = labelcolor; + action->labelcolor = labelcolor; action->score = score; return action; } @@ -94,7 +89,7 @@ static gint action_list_sort(gconstpointer a, gconstpointer b) { int first = filtering_is_final_action((FilteringAction *) a) ? 1 : 0; int second = filtering_is_final_action((FilteringAction *) b) ? 1 : 0; - + return (first - second); } @@ -124,14 +119,14 @@ FilteringProp * filteringprop_new(gboolean enabled, static FilteringAction * filteringaction_copy(FilteringAction * src) { FilteringAction * new; - + new = g_new0(FilteringAction, 1); - + new->type = src->type; new->account_id = src->account_id; if (src->destination) new->destination = g_strdup(src->destination); - else + else new->destination = NULL; new->labelcolor = src->labelcolor; new->score = src->score; @@ -143,13 +138,13 @@ FilteringProp * filteringprop_copy(FilteringProp *src) { FilteringProp * new; GSList *tmp; - + new = g_new0(FilteringProp, 1); new->matchers = g_new0(MatcherList, 1); for (tmp = src->matchers->matchers; tmp != NULL && tmp->data != NULL;) { MatcherProp *matcher = (MatcherProp *)tmp->data; - + new->matchers->matchers = g_slist_append(new->matchers->matchers, matcherprop_copy(matcher)); tmp = tmp->next; @@ -161,9 +156,9 @@ FilteringProp * filteringprop_copy(FilteringProp *src) for (tmp = src->action_list ; tmp != NULL ; tmp = tmp->next) { FilteringAction *filtering_action; - + filtering_action = tmp->data; - + new->action_list = g_slist_append(new->action_list, filteringaction_copy(filtering_action)); } @@ -180,7 +175,7 @@ void filteringprop_free(FilteringProp * prop) cm_return_if_fail(prop); matcherlist_free(prop->matchers); - + for (tmp = prop->action_list ; tmp != NULL ; tmp = tmp->next) { filteringaction_free(tmp->data); } @@ -219,13 +214,13 @@ void filtering_move_and_copy_msgs(GSList *msgs) cur_op = IS_DELE; } if (info->filter_op == IS_COPY || info->filter_op == IS_MOVE) { - if (info->to_filter_folder == last_item + if (info->to_filter_folder == last_item && cur_op == info->filter_op) { found++; batch = g_slist_prepend(batch, info); } } else if (info->filter_op == IS_DELE) { - if (info->folder == last_item + if (info->folder == last_item && cur_op == info->filter_op) { found++; batch = g_slist_prepend(batch, info); @@ -237,7 +232,7 @@ void filtering_move_and_copy_msgs(GSList *msgs) break; } else { debug_print("%d messages to %s in %s\n", found, - cur_op==IS_COPY ? "copy":(cur_op==IS_DELE ?"delete":"move"), + cur_op==IS_COPY ? "copy":(cur_op==IS_DELE ?"delete":"move"), last_item->name ? last_item->name:"(noname)"); } for (cur = batch; cur; cur = cur->next) { @@ -254,7 +249,7 @@ void filtering_move_and_copy_msgs(GSList *msgs) } else if (cur_op == IS_MOVE && last_item != info->folder) { if (folder_item_move_msgs(last_item, batch) < 0) folder_item_move_msgs( - folder_get_default_inbox(), + folder_get_default_inbox(), batch); } else if (cur_op == IS_DELE && last_item == info->folder) { folder_item_remove_msgs(last_item, batch); @@ -299,7 +294,7 @@ static gboolean filteringaction_apply(FilteringAction * action, MsgInfo * info) case MATCHACTION_MOVE: if (MSG_IS_LOCKED(info->flags)) return FALSE; - + dest_folder = folder_find_item_from_identifier(action->destination); if (!dest_folder) { @@ -307,9 +302,9 @@ static gboolean filteringaction_apply(FilteringAction * action, MsgInfo * info) action->destination ?action->destination :"(null)"); return FALSE; } - + FLUSH_COPY_IF_NEEDED(info); - /* mark message to be moved */ + /* mark message to be moved */ info->filter_op = IS_MOVE; info->to_filter_folder = dest_folder; return TRUE; @@ -325,7 +320,7 @@ static gboolean filteringaction_apply(FilteringAction * action, MsgInfo * info) } FLUSH_COPY_IF_NEEDED(info); - /* mark message to be copied */ + /* mark message to be copied */ info->filter_op = IS_COPY; info->to_filter_folder = dest_folder; return TRUE; @@ -369,9 +364,9 @@ static gboolean filteringaction_apply(FilteringAction * action, MsgInfo * info) case MATCHACTION_UNLOCK: FLUSH_COPY_IF_NEEDED(info); - procmsg_msginfo_unset_flags(info, MSG_LOCKED, 0); + procmsg_msginfo_unset_flags(info, MSG_LOCKED, 0); return TRUE; - + case MATCHACTION_MARK_AS_READ: FLUSH_COPY_IF_NEEDED(info); procmsg_msginfo_unset_flags(info, MSG_UNREAD | MSG_NEW, 0); @@ -381,7 +376,7 @@ static gboolean filteringaction_apply(FilteringAction * action, MsgInfo * info) FLUSH_COPY_IF_NEEDED(info); procmsg_msginfo_change_flags(info, MSG_UNREAD, 0, MSG_NEW, 0); return TRUE; - + case MATCHACTION_MARK_AS_SPAM: FLUSH_COPY_IF_NEEDED(info); procmsg_spam_learner_learn(info, NULL, TRUE); @@ -393,10 +388,10 @@ static gboolean filteringaction_apply(FilteringAction * action, MsgInfo * info) procmsg_spam_learner_learn(info, NULL, FALSE); procmsg_msginfo_unset_flags(info, MSG_SPAM, 0); return TRUE; - + case MATCHACTION_COLOR: FLUSH_COPY_IF_NEEDED(info); - procmsg_msginfo_unset_flags(info, MSG_CLABEL_FLAG_MASK, 0); + procmsg_msginfo_unset_flags(info, MSG_CLABEL_FLAG_MASK, 0); procmsg_msginfo_set_flags(info, MSG_COLORLABEL_TO_FLAGS(action->labelcolor), 0); return TRUE; @@ -425,7 +420,7 @@ static gboolean filteringaction_apply(FilteringAction * action, MsgInfo * info) COMPOSE_TO, PREF_NONE); val = compose_send(compose); - + return val == 0 ? TRUE : FALSE; case MATCHACTION_EXECUTE: @@ -469,16 +464,13 @@ static gboolean filteringaction_apply(FilteringAction * action, MsgInfo * info) case MATCHACTION_ADD_TO_ADDRESSBOOK: { -#ifndef USE_ALT_ADDRBOOK AddressDataSource *book = NULL; AddressBookFile *abf = NULL; ItemFolder *folder = NULL; -#endif gchar *buf = NULL; Header *header = NULL; gint errors = 0; -#ifndef USE_ALT_ADDRBOOK if (!addressbook_peek_folder_exists(action->destination, &book, &folder)) { g_warning("addressbook folder not found '%s'", action->destination?action->destination:"(null)"); return FALSE; @@ -489,7 +481,6 @@ static gboolean filteringaction_apply(FilteringAction * action, MsgInfo * info) } abf = book->rawDataSource; -#endif /* get the header */ if (procheader_get_header_from_msginfo(info, &buf, action->header) < 0) return FALSE; @@ -520,11 +511,7 @@ static gboolean filteringaction_apply(FilteringAction * action, MsgInfo * info) gchar *name = procheader_get_fromname(walk->data); debug_print("adding '%s <%s>' to addressbook '%s'\n", name, stripped_addr, action->destination); -#ifndef USE_ALT_ADDRBOOK if (!addrbook_add_contact(abf, folder, name, stripped_addr, NULL)) { -#else - if (!addressadd_selection(name, stripped_addr, NULL, NULL)) { -#endif g_warning("contact could not be added"); errors++; } @@ -563,7 +550,7 @@ gboolean filteringaction_apply_action_list(GSList *action_list, MsgInfo *info) break; } else return FALSE; - + } return TRUE; } @@ -773,7 +760,7 @@ static gboolean filtering_match_condition(FilteringProp *filtering, MsgInfo *inf *\param filtering List of filtering rules. *\param info Message to apply rules on. *\param final Variable returning TRUE or FALSE if one of the - * encountered actions was final. + * encountered actions was final. * See also \ref filtering_is_final_action. * *\return gboolean TRUE to continue applying rules. @@ -784,7 +771,7 @@ static gboolean filtering_apply_rule(FilteringProp *filtering, MsgInfo *info, gboolean result = TRUE; gchar *buf; GSList * tmp; - + * final = FALSE; for (tmp = filtering->action_list ; tmp != NULL ; tmp = tmp->next) { FilteringAction * action; @@ -808,7 +795,7 @@ static gboolean filtering_apply_rule(FilteringProp *filtering, MsgInfo *info, * final = TRUE; break; } - + } return result; } @@ -819,7 +806,7 @@ static gboolean filtering_apply_rule(FilteringProp *filtering, MsgInfo *info, * *\param filtering_action Action to check. * - *\return gboolean TRUE if \a filtering_action is final. + *\return gboolean TRUE if \a filtering_action is final. */ static gboolean filtering_is_final_action(FilteringAction *filtering_action) { @@ -849,9 +836,9 @@ static gboolean filter_msginfo(GSList * filtering_list, MsgInfo * info, PrefsAcc GSList *l; gboolean final; gboolean apply_next; - + cm_return_val_if_fail(info != NULL, TRUE); - + for (l = filtering_list, final = FALSE, apply_next = FALSE; l != NULL; l = g_slist_next(l)) { FilteringProp * filtering = (FilteringProp *) l->data; @@ -915,8 +902,8 @@ static gboolean filter_msginfo(GSList * filtering_list, MsgInfo * info, PrefsAcc * *\note Returning FALSE means the message was not handled, * and that the calling code should do the default - * processing. E.g. \ref inc.c::inc_start moves the - * message to the inbox. + * processing. E.g. \ref inc.c::inc_start moves the + * message to the inbox. */ gboolean filter_message_by_msginfo(GSList *flist, MsgInfo *info, PrefsAccount* ac_prefs, FilteringInvocationType context, gchar *extra_info) @@ -997,7 +984,7 @@ gchar *filteringaction_to_string(FilteringAction *action) g_string_free(dest, TRUE); return NULL; } - + switch(action->type) { case MATCHACTION_MOVE: case MATCHACTION_COPY: @@ -1068,11 +1055,11 @@ gchar * filteringaction_list_to_string(GSList * action_list) for (tmp = action_list ; tmp != NULL ; tmp = tmp->next) { gchar *action_str; FilteringAction * action; - + action = tmp->data; - + action_str = filteringaction_to_string(action); - + if (action_list_str != NULL) { list_str = g_strconcat(action_list_str, " ", action_str, NULL); g_free(action_list_str); @@ -1178,7 +1165,7 @@ gboolean filtering_peek_per_account_rules(GSList *filtering_list) if (filtering->enabled && (filtering->account_id != 0)) { return TRUE; - } + } } return FALSE; @@ -1212,9 +1199,9 @@ again: if (action->type == MATCHACTION_SET_TAG || action->type == MATCHACTION_UNSET_TAG) continue; - if (!action->destination) + if (!action->destination) continue; - + destlen = strlen(action->destination); if (destlen > oldpathlen) { @@ -1259,7 +1246,7 @@ again: } } } - + g_free(old_path_with_sep); #ifdef G_OS_WIN32 if (!strcmp(separator, G_DIR_SEPARATOR_S) && !matched) { diff --git a/src/headerview.c b/src/headerview.c @@ -149,7 +149,7 @@ void headerview_set_font(HeaderView *headerview) { PangoFontDescription *boldfont = NULL; PangoFontDescription *normalfont = NULL; - + normalfont = pango_font_description_from_string(NORMAL_FONT); if (normalfont) { gtk_widget_override_font(headerview->from_body_label, normalfont); @@ -261,7 +261,6 @@ static gint headerview_show_avatar (HeaderView *headerview, MsgInfo *msginfo) static void headerview_save_contact_pic (HeaderView *headerview, MsgInfo *msginfo) { -#ifndef USE_ALT_ADDRBOOK gchar *filename = NULL; GError *error = NULL; GdkPixbuf *picture = NULL; @@ -271,7 +270,7 @@ static void headerview_save_contact_pic (HeaderView *headerview, MsgInfo *msginf if (headerview->image) { picture = gtk_image_get_pixbuf(GTK_IMAGE(headerview->image)); } - + filename = addrindex_get_picture_file(msginfo->from); if (!filename) return; @@ -284,14 +283,10 @@ static void headerview_save_contact_pic (HeaderView *headerview, MsgInfo *msginf } } g_free(filename); -#else - /* new address book */ -#endif -} +} static gint headerview_show_contact_pic (HeaderView *headerview, MsgInfo *msginfo) { -#ifndef USE_ALT_ADDRBOOK GtkWidget *hbox = headerview->hbox; GtkWidget *image; gchar *filename = NULL; @@ -305,9 +300,9 @@ static gint headerview_show_contact_pic (HeaderView *headerview, MsgInfo *msginf gtk_widget_destroy(headerview->image); headerview->image = NULL; } - + filename = addrindex_get_picture_file(msginfo->from); - + if (!filename) return -1; if (!is_file_exist(filename)) { @@ -315,9 +310,9 @@ static gint headerview_show_contact_pic (HeaderView *headerview, MsgInfo *msginf return -1; } gdk_pixbuf_get_file_info(filename, &w, &h); - + if (w > 48 || h > 48) - picture = gdk_pixbuf_new_from_file_at_scale(filename, + picture = gdk_pixbuf_new_from_file_at_scale(filename, 48, 48, TRUE, &error); else picture = gdk_pixbuf_new_from_file(filename, &error); @@ -331,7 +326,7 @@ static gint headerview_show_contact_pic (HeaderView *headerview, MsgInfo *msginf } if (picture) image = gtk_image_new_from_pixbuf(picture); - else + else return -1; g_object_unref(picture); @@ -343,12 +338,7 @@ static gint headerview_show_contact_pic (HeaderView *headerview, MsgInfo *msginf headerview->image = image; if (image == NULL) return -1; - else - return 0; -#else - /* new address book */ - return -1; -#endif + return 0; } void headerview_clear(HeaderView *headerview) diff --git a/src/main.c b/src/main.c @@ -108,11 +108,7 @@ #include "manage_window.h" #include "alertpanel.h" #include "statusbar.h" -#ifndef USE_ALT_ADDRBOOK - #include "addressbook.h" -#else - #include "addressbook-dbus.h" -#endif +#include "addressbook.h" #include "compose.h" #include "folder.h" #include "folder_item_prefs.h" @@ -1164,18 +1160,7 @@ int main(int argc, char *argv[]) prefs_actions_read_config(); prefs_display_header_read_config(); /* prefs_filtering_read_config(); */ -#ifndef USE_ALT_ADDRBOOK addressbook_read_file(); -#else - g_clear_error(&error); - if (! addressbook_start_service(&error)) { - g_warning("%s", error->message); - g_clear_error(&error); - } - else { - addressbook_install_hooks(&error); - } -#endif gtkut_widget_init(); priv_pixbuf_gdk(PRIV_PIXMAP_CLAWS_MAIL_ICON, &icon); gtk_window_set_default_icon(icon); @@ -1542,9 +1527,7 @@ static void exit_claws(MainWindow *mainwin) prefs_common_write_config(); account_write_config_all(); passwd_store_write_config(); -#ifndef USE_ALT_ADDRBOOK addressbook_export_to_file(); -#endif filename = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, MENU_RC, NULL); gtk_accel_map_save(filename); g_free(filename); @@ -1583,9 +1566,7 @@ static void exit_claws(MainWindow *mainwin) prefs_toolbar_done(); avatars_done(); -#ifndef USE_ALT_ADDRBOOK addressbook_destroy(); -#endif prefs_themes_done(); prefs_fonts_done(); prefs_ext_prog_done(); diff --git a/src/mainwindow.c b/src/mainwindow.c @@ -63,11 +63,7 @@ #include "prefs_template.h" #include "action.h" #include "account.h" -#ifndef USE_ALT_ADDRBOOK - #include "addressbook.h" -#else - #include "addressbook-dbus.h" -#endif +#include "addressbook.h" #include "logwindow.h" #include "manage_window.h" #include "alertpanel.h" @@ -2295,9 +2291,7 @@ static gboolean reflect_prefs_timeout_cb(gpointer data) folderview_init(mainwin->folderview); summary_reflect_prefs_pixmap_theme(mainwin->summaryview); foldersel_reflect_prefs_pixmap_theme(); -#ifndef USE_ALT_ADDRBOOK addressbook_reflect_prefs_pixmap_theme(); -#endif #ifndef GENERIC_UMPC pixmap = stock_pixmap_widget(STOCK_PIXMAP_ONLINE); gtk_container_remove(GTK_CONTAINER(mainwin->online_switch), @@ -4258,17 +4252,7 @@ static void online_switch_clicked (GtkButton *btn, gpointer data) static void addressbook_open_cb(GtkAction *action, gpointer data) { -#ifndef USE_ALT_ADDRBOOK addressbook_open(NULL); -#else - GError* error = NULL; - - addressbook_dbus_open(FALSE, &error); - if (error) { - g_warning("failed to open address book: %s", error->message); - g_error_free(error); - } -#endif } static void log_window_show_cb(GtkAction *action, gpointer data) diff --git a/src/messageview.c b/src/messageview.c @@ -70,12 +70,7 @@ #include "avatars.h" #include "file-utils.h" -#ifndef USE_ALT_ADDRBOOK - #include "addressbook.h" -#else - #include "addressadd.h" - #include "addressbook-dbus.h" -#endif +#include "addressbook.h" static GList *messageview_list = NULL; static gint messageview_delete_cb (GtkWidget *widget, @@ -86,17 +81,17 @@ static void messageview_size_allocate_cb(GtkWidget *widget, static gboolean key_pressed (GtkWidget *widget, GdkEventKey *event, MessageView *messageview); -static void return_receipt_show (NoticeView *noticeview, - MsgInfo *msginfo); -static void return_receipt_send_clicked (NoticeView *noticeview, +static void return_receipt_show (NoticeView *noticeview, + MsgInfo *msginfo); +static void return_receipt_send_clicked (NoticeView *noticeview, MsgInfo *msginfo); -static void partial_recv_show (NoticeView *noticeview, - MsgInfo *msginfo); -static void partial_recv_dload_clicked (NoticeView *noticeview, +static void partial_recv_show (NoticeView *noticeview, + MsgInfo *msginfo); +static void partial_recv_dload_clicked (NoticeView *noticeview, MsgInfo *msginfo); -static void partial_recv_del_clicked (NoticeView *noticeview, +static void partial_recv_del_clicked (NoticeView *noticeview, MsgInfo *msginfo); -static void partial_recv_unmark_clicked (NoticeView *noticeview, +static void partial_recv_unmark_clicked (NoticeView *noticeview, MsgInfo *msginfo); static void save_as_cb (GtkAction *action, gpointer data); @@ -231,7 +226,7 @@ static GtkActionEntry msgview_entries[] = {"Edit/SelectAll", NULL, N_("_Select all"), "<control>A", NULL, G_CALLBACK(allsel_cb) }, {"Edit/---", NULL, "---", NULL, NULL, NULL }, {"Edit/Find", NULL, N_("_Find"), "<control>F", NULL, G_CALLBACK(search_cb) }, - + /* View menu */ {"View/Goto", NULL, N_("_Go to"), NULL, NULL, NULL }, {"View/Goto/Prev", NULL, N_("_Previous message"), "P", NULL, G_CALLBACK(prev_cb) }, @@ -296,14 +291,14 @@ static GtkActionEntry msgview_entries[] = {"View/Part/OpenWith", NULL, N_("Open with..."), "O", NULL, G_CALLBACK(open_part_with_cb) }, #endif - {"View/Quotes", NULL, N_("Quotes"), NULL, NULL, NULL }, + {"View/Quotes", NULL, N_("Quotes"), NULL, NULL, NULL }, /* Message menu */ {"Message/Compose", NULL, N_("Write _new message"), "<control>M", NULL, G_CALLBACK(compose_cb) }, {"Message/---", NULL, "---", NULL, NULL, NULL }, {"Message/Reply", NULL, N_("_Reply"), "<control>R", NULL, G_CALLBACK(reply_cb) }, /* COMPOSE_REPLY */ - {"Message/ReplyTo", NULL, N_("Repl_y to"), NULL, NULL, NULL }, + {"Message/ReplyTo", NULL, N_("Repl_y to"), NULL, NULL, NULL }, {"Message/ReplyTo/All", NULL, N_("_All"), "<control><shift>R", NULL, G_CALLBACK(reply_cb) }, /* COMPOSE_REPLY_TO_ALL */ {"Message/ReplyTo/Sender", NULL, N_("_Sender"), NULL, NULL, G_CALLBACK(reply_cb) }, /* COMPOSE_REPLY_TO_SENDER */ {"Message/ReplyTo/List", NULL, N_("Mailing _list"), "<control>L", NULL, G_CALLBACK(reply_cb) }, /* COMPOSE_REPLY_TO_LIST */ @@ -314,9 +309,9 @@ static GtkActionEntry msgview_entries[] = {"Message/Redirect", NULL, N_("Redirec_t"), NULL, NULL, G_CALLBACK(reply_cb) }, /* COMPOSE_REDIRECT */ {"Message/CheckSignature", NULL, N_("Check signature"), "C", NULL, G_CALLBACK(check_signature_cb) }, -/* Tools menu */ - {"Tools/AddressBook", NULL, N_("_Address book"), "<control><shift>A", NULL, G_CALLBACK(addressbook_open_cb) }, - {"Tools/AddSenderToAB", NULL, N_("Add sender to address boo_k"), NULL, NULL, G_CALLBACK(add_address_cb) }, +/* Tools menu */ + {"Tools/AddressBook", NULL, N_("_Address book"), "<control><shift>A", NULL, G_CALLBACK(addressbook_open_cb) }, + {"Tools/AddSenderToAB", NULL, N_("Add sender to address boo_k"), NULL, NULL, G_CALLBACK(add_address_cb) }, {"Tools/---", NULL, "---", NULL, NULL, NULL }, {"Tools/CreateFilterRule", NULL, N_("_Create filter rule"), NULL, NULL, NULL }, @@ -327,21 +322,21 @@ static GtkActionEntry msgview_entries[] = {"Tools/CreateFilterRule/BySender", NULL, N_("By S_ender"), NULL, NULL, G_CALLBACK(create_filter_cb) }, /* FILTER_BY_SENDER */ {"Tools/CreateProcessingRule", NULL, N_("Create processing rule"), NULL, NULL, NULL }, - {"Tools/CreateProcessingRule/Automatically", NULL, N_("_Automatically"), NULL, NULL, G_CALLBACK(create_processing_cb) }, - {"Tools/CreateProcessingRule/ByFrom", NULL, N_("By _From"), NULL, NULL, G_CALLBACK(create_processing_cb) }, - {"Tools/CreateProcessingRule/ByTo", NULL, N_("By _To"), NULL, NULL, G_CALLBACK(create_processing_cb) }, - {"Tools/CreateProcessingRule/BySubject", NULL, N_("By _Subject"), NULL, NULL, G_CALLBACK(create_processing_cb) }, + {"Tools/CreateProcessingRule/Automatically", NULL, N_("_Automatically"), NULL, NULL, G_CALLBACK(create_processing_cb) }, + {"Tools/CreateProcessingRule/ByFrom", NULL, N_("By _From"), NULL, NULL, G_CALLBACK(create_processing_cb) }, + {"Tools/CreateProcessingRule/ByTo", NULL, N_("By _To"), NULL, NULL, G_CALLBACK(create_processing_cb) }, + {"Tools/CreateProcessingRule/BySubject", NULL, N_("By _Subject"), NULL, NULL, G_CALLBACK(create_processing_cb) }, {"Tools/CreateProcessingRule/BySender", NULL, N_("By S_ender"), NULL, NULL, G_CALLBACK(create_processing_cb) }, /* {"Tools/---", NULL, "---", NULL, NULL, NULL }, */ - {"Tools/ListUrls", NULL, N_("List _URLs..."), "<control><shift>U", NULL, G_CALLBACK(open_urls_cb) }, + {"Tools/ListUrls", NULL, N_("List _URLs..."), "<control><shift>U", NULL, G_CALLBACK(open_urls_cb) }, /* {"Tools/---", NULL, "---", NULL, NULL, NULL }, */ {"Tools/Actions", NULL, N_("Actio_ns"), NULL, NULL, NULL }, {"Tools/Actions/PlaceHolder", NULL, "Placeholder", NULL, NULL, G_CALLBACK(messageview_nothing_cb) }, /* Help menu */ - {"Help/About", NULL, N_("_About"), NULL, NULL, G_CALLBACK(about_cb) }, + {"Help/About", NULL, N_("_About"), NULL, NULL, G_CALLBACK(about_cb) }, }; static GtkToggleActionEntry msgview_toggle_entries[] = @@ -462,7 +457,7 @@ void messageview_update_actions_menu(MessageView *msgview) action_update_msgview_menu(msgview->ui_manager, "/Menu/Tools/Actions", msgview); } -static void messageview_add_toolbar(MessageView *msgview, GtkWidget *window) +static void messageview_add_toolbar(MessageView *msgview, GtkWidget *window) { GtkWidget *handlebox; GtkWidget *vbox; @@ -475,7 +470,7 @@ static void messageview_add_toolbar(MessageView *msgview, GtkWidget *window) vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_widget_show(vbox); - gtk_container_add(GTK_CONTAINER(window), vbox); + gtk_container_add(GTK_CONTAINER(window), vbox); msgview->ui_manager = gtk_ui_manager_new(); action_group = cm_menu_create_action_group_full(msgview->ui_manager,"Menu", msgview_entries, @@ -660,7 +655,7 @@ static void messageview_add_toolbar(MessageView *msgview, GtkWidget *window) MENUITEM_ADDUI_MANAGER(msgview->ui_manager, "/Menu/Tools/CreateProcessingRule", "BySubject", "Tools/CreateProcessingRule/BySubject", GTK_UI_MANAGER_MENUITEM) MENUITEM_ADDUI_MANAGER(msgview->ui_manager, "/Menu/Tools/CreateProcessingRule", "BySender", "Tools/CreateProcessingRule/BySender", GTK_UI_MANAGER_MENUITEM) MENUITEM_ADDUI_MANAGER(msgview->ui_manager, "/Menu/Tools", "Separator2", "Tools/---", GTK_UI_MANAGER_SEPARATOR) - + MENUITEM_ADDUI_MANAGER(msgview->ui_manager, "/Menu/Tools", "ListUrls", "Tools/ListUrls", GTK_UI_MANAGER_MENUITEM) MENUITEM_ADDUI_MANAGER(msgview->ui_manager, "/Menu/Tools", "Separator3", "Tools/---", GTK_UI_MANAGER_SEPARATOR) @@ -753,7 +748,7 @@ static MessageView *messageview_create_with_new_window_visible(MainWindow *mainw msgview->window = window; msgview->visible = TRUE; - toolbar_set_style(msgview->toolbar->toolbar, msgview->handlebox, + toolbar_set_style(msgview->toolbar->toolbar, msgview->handlebox, prefs_common.toolbar_style); messageview_init(msgview); @@ -828,8 +823,8 @@ static gint disposition_notification_send(MsgInfo *msginfo) if (!msginfo->extradata) return -1; - if (!msginfo->extradata->returnreceiptto && - !msginfo->extradata->dispositionnotificationto) + if (!msginfo->extradata->returnreceiptto && + !msginfo->extradata->dispositionnotificationto) return -1; /* RFC2298: Test for Return-Path */ @@ -848,7 +843,7 @@ static gint disposition_notification_send(MsgInfo *msginfo) } else { buf = g_strdup(_("<No Return-Path found>")); } - + if (ok != 0) { AlertValue val; gchar *message; @@ -863,7 +858,7 @@ static gint disposition_notification_send(MsgInfo *msginfo) NULL, _("_Don't Send"), NULL, _("_Send"), NULL, NULL, ALERTFOCUS_FIRST, FALSE, NULL, ALERT_WARNING); - g_free(message); + g_free(message); if (val != G_ALERTALTERNATE) { g_free(buf); return -1; @@ -908,12 +903,12 @@ static gint disposition_notification_send(MsgInfo *msginfo) FILE_OP_ERROR(tmp, "chmod"); g_warning("can't change file mode"); } - + addr = g_strdup(to); - + extract_address(addr); addrp = addr; - + /* write queue headers */ ok = fprintf(fp, "AF:\n" "NF:0\n" @@ -928,7 +923,7 @@ static gint disposition_notification_send(MsgInfo *msginfo) "RQ:\n" "SSV:%s\n" "SSH:\n" - "R:<%s>\n", + "R:<%s>\n", account->address, account->smtp_server?account->smtp_server:"", addrp); @@ -936,19 +931,19 @@ static gint disposition_notification_send(MsgInfo *msginfo) g_free(addrp); if (ok < 0) goto FILE_ERROR; - + /* check whether we need to save the message */ - outbox = account_get_special_folder(account, F_OUTBOX); + outbox = account_get_special_folder(account, F_OUTBOX); if (folder_get_default_outbox() == outbox && !prefs_common.savemsg) outbox = NULL; if (outbox) { path = folder_item_get_identifier(outbox); ok = fprintf(fp, "SCF:%s\n", path); g_free(path); - + if (ok < 0) goto FILE_ERROR; - } + } if (fprintf(fp, "X-Claws-End-Special-Headers: 1\n") < 0) goto FILE_ERROR; @@ -1042,10 +1037,10 @@ static gint disposition_notification_send(MsgInfo *msginfo) "Original-Message-ID: <%s>\n" "Disposition: manual-action/MDN-sent-manually; displayed\n" "\n" - "--%s--\n", - boundary, + "--%s--\n", + boundary, boundary, - msginfo->date, + msginfo->date, orig_to?orig_to:"No To:", enc_sub?enc_sub:"No subject", date, @@ -1067,7 +1062,7 @@ static gint disposition_notification_send(MsgInfo *msginfo) g_free(boundary); if (ok < 0) - goto FILE_ERROR; + goto FILE_ERROR; if (claws_safe_fclose(fp) == EOF) { FILE_OP_ERROR(tmp, "claws_fclose"); @@ -1089,8 +1084,8 @@ static gint disposition_notification_send(MsgInfo *msginfo) claws_unlink(tmp); return -1; } - - if (prefs_common.work_offline && + + if (prefs_common.work_offline && !inc_offline_should_override(TRUE, _("Claws Mail needs network access in order " "to send this email."))) @@ -1116,12 +1111,12 @@ static gboolean find_encrypted_func(GNode *node, gpointer data) { MimeInfo *mimeinfo = (MimeInfo *) node->data; MimeInfo **encinfo = (MimeInfo **) data; - + if (privacy_mimeinfo_is_encrypted(mimeinfo)) { *encinfo = mimeinfo; return TRUE; } - + return FALSE; } @@ -1131,7 +1126,7 @@ static MimeInfo *find_encrypted_part(MimeInfo *rootinfo) g_node_traverse(rootinfo->node, G_IN_ORDER, G_TRAVERSE_ALL, -1, find_encrypted_func, &encinfo); - + return encinfo; } @@ -1139,12 +1134,12 @@ static gboolean find_broken_func(GNode *node, gpointer data) { MimeInfo *mimeinfo = (MimeInfo *) node->data; MimeInfo **brokeninfo = (MimeInfo **) data; - + if (mimeinfo->broken) { *brokeninfo = mimeinfo; return TRUE; } - + return FALSE; } @@ -1154,7 +1149,7 @@ static MimeInfo *find_broken_part(MimeInfo *rootinfo) g_node_traverse(rootinfo->node, G_IN_ORDER, G_TRAVERSE_ALL, -1, find_broken_func, &brokeninfo); - + return brokeninfo; } @@ -1193,7 +1188,7 @@ static void messageview_register_nav(MessageView *messageview) } messageview->trail = g_list_append(messageview->trail, id); messageview->trail_pos = (gint)g_list_length(messageview->trail) - 1; - + /* Cut the beginning if needed */ while (messageview->trail_pos > prefs_common.nav_history_length) { g_free(messageview->trail->data); @@ -1213,7 +1208,7 @@ gboolean messageview_nav_has_prev(MessageView *messageview) { gboolean messageview_nav_has_next(MessageView *messageview) { if (!messageview || !messageview->trail) return FALSE; - + return sc_g_list_bigger(messageview->trail, messageview->trail_pos + 1); } @@ -1265,7 +1260,7 @@ MsgInfo *messageview_nav_get_next(MessageView *messageview) { g_free(item->data); messageview->trail = g_list_delete_link(messageview->trail, item); } while (info == NULL); - + return info; } @@ -1360,11 +1355,11 @@ gint messageview_show(MessageView *messageview, MsgInfo *msginfo, can_learn = TRUE; gtk_widget_set_sensitive( - messageview->toolbar->learn_spam_btn, + messageview->toolbar->learn_spam_btn, can_learn); } } - + noticeview_hide(messageview->noticeview); mimeview_clear(messageview->mimeview); messageview->updating = TRUE; @@ -1372,7 +1367,7 @@ gint messageview_show(MessageView *messageview, MsgInfo *msginfo, if (msginfo->size > 1024*1024) statusbar_print_all(_("Fetching message (%s)..."), to_human_readable(msginfo->size)); - + file = procmsg_get_message_file_path(msginfo); if (msginfo->size > 1024*1024) @@ -1383,7 +1378,7 @@ gint messageview_show(MessageView *messageview, MsgInfo *msginfo, textview_show_error(messageview->mimeview->textview); return -1; } - + if (!folder_has_parent_of_type(msginfo->folder, F_QUEUE) && !folder_has_parent_of_type(msginfo->folder, F_DRAFT)) mimeinfo = procmime_scan_file(file); @@ -1391,7 +1386,7 @@ gint messageview_show(MessageView *messageview, MsgInfo *msginfo, mimeinfo = procmime_scan_queue_file(file); messageview->updating = FALSE; - + if (messageview->deferred_destroy) { g_free(file); messageview_destroy(messageview); @@ -1418,12 +1413,12 @@ gint messageview_show(MessageView *messageview, MsgInfo *msginfo, break; } } - + if (messageview->msginfo != msginfo) { procmsg_msginfo_free(&(messageview->msginfo)); messageview->msginfo = NULL; messageview_set_menu_sensitive(messageview); - messageview->msginfo = + messageview->msginfo = procmsg_msginfo_get_full_info_from_file(msginfo, file); if (!messageview->msginfo) messageview->msginfo = procmsg_msginfo_copy(msginfo); @@ -1439,14 +1434,14 @@ gint messageview_show(MessageView *messageview, MsgInfo *msginfo, messageview_set_position(messageview, 0); if (messageview->window) { - gtk_window_set_title(GTK_WINDOW(messageview->window), + gtk_window_set_title(GTK_WINDOW(messageview->window), _("Claws Mail - Message View")); GTK_EVENTS_FLUSH(); } mimeview_show_message(messageview->mimeview, mimeinfo, file); - + summary_open_msg(messageview->mainwin->summaryview, FALSE, TRUE); - + #ifndef GENERIC_UMPC messageview_set_position(messageview, 0); #endif @@ -1456,17 +1451,17 @@ gint messageview_show(MessageView *messageview, MsgInfo *msginfo, if (!g_utf8_validate(subject, -1, NULL)) { g_free(subject); subject = g_malloc(strlen(msginfo->subject)*2 +1); - conv_localetodisp(subject, strlen(msginfo->subject)*2 +1, + conv_localetodisp(subject, strlen(msginfo->subject)*2 +1, msginfo->subject); } if (g_utf8_validate(subject, -1, NULL)) - gtk_window_set_title(GTK_WINDOW(messageview->window), + gtk_window_set_title(GTK_WINDOW(messageview->window), subject); g_free(subject); } if (msginfo->folder) { - msginfo->folder->last_seen = msginfo->msgnum; + msginfo->folder->last_seen = msginfo->msgnum; } main_create_mailing_list_menu(messageview->mainwin, messageview->msginfo); @@ -1474,15 +1469,15 @@ gint messageview_show(MessageView *messageview, MsgInfo *msginfo, if (messageview->msginfo && messageview->msginfo->extradata && messageview->msginfo->extradata->partial_recv && !noticeview_is_visible(messageview->noticeview)) - partial_recv_show(messageview->noticeview, + partial_recv_show(messageview->noticeview, messageview->msginfo); else if (messageview->msginfo && messageview->msginfo->extradata && - (messageview->msginfo->extradata->dispositionnotificationto || + (messageview->msginfo->extradata->dispositionnotificationto || messageview->msginfo->extradata->returnreceiptto) && !MSG_IS_RETRCPT_SENT(messageview->msginfo->flags) && !prefs_common.never_send_retrcpt && !noticeview_is_visible(messageview->noticeview)) - return_receipt_show(messageview->noticeview, + return_receipt_show(messageview->noticeview, messageview->msginfo); if (find_broken_part(mimeinfo) != NULL) { @@ -1495,8 +1490,8 @@ gint messageview_show(MessageView *messageview, MsgInfo *msginfo, gtk_widget_hide(messageview->noticeview->button2); } else { gchar *full = g_strconcat( - gtk_label_get_text(GTK_LABEL(messageview->noticeview->text)), - "\n", + gtk_label_get_text(GTK_LABEL(messageview->noticeview->text)), + "\n", _("Message doesn't conform to MIME standard. " "It may render wrongly."), NULL); noticeview_set_text(messageview->noticeview, full); @@ -1504,7 +1499,7 @@ gint messageview_show(MessageView *messageview, MsgInfo *msginfo, } noticeview_show(messageview->noticeview); } - + root = mimeinfo; mimeinfo = procmime_mimeinfo_next(mimeinfo); if (!all_headers && mimeinfo @@ -1594,7 +1589,7 @@ void messageview_clear(MessageView *messageview) messageview->filtered = FALSE; if (messageview->window) { - gtk_window_set_title(GTK_WINDOW(messageview->window), + gtk_window_set_title(GTK_WINDOW(messageview->window), _("Claws Mail - Message View")); GTK_EVENTS_FLUSH(); } @@ -1627,7 +1622,7 @@ void messageview_destroy(MessageView *messageview) gtk_widget_hide(messageview->window); return; } - + if (messageview->mimeview->textview && messageview->mimeview->textview->loading) { debug_print("uh oh, better not touch that now (loading text)\n"); @@ -1651,7 +1646,7 @@ void messageview_destroy(MessageView *messageview) message_search_close(messageview); list_free_strings_full(messageview->trail); - msgview_list = g_list_remove(msgview_list, messageview); + msgview_list = g_list_remove(msgview_list, messageview); if (messageview->window) gtk_widget_destroy(messageview->window); @@ -1666,13 +1661,13 @@ void messageview_delete(MessageView *msgview) if (msgview->msginfo && msgview->mainwin && msgview->mainwin->summaryview) msginfo = summary_get_selected_msg(msgview->mainwin->summaryview); - + /* need a procmsg_msginfo_equal() */ - if (msginfo && msgview->msginfo && - msginfo->msgnum == msgview->msginfo->msgnum && + if (msginfo && msgview->msginfo && + msginfo->msgnum == msgview->msginfo->msgnum && msginfo->folder == msgview->msginfo->folder) { summary_delete_trash(msgview->mainwin->summaryview); - } else { + } else { msginfo = msgview->msginfo; cm_return_if_fail(msginfo != NULL); @@ -1687,12 +1682,12 @@ void messageview_delete(MessageView *msgview) if (msginfo->folder) { if (NULL != (ac = account_find_from_item(msginfo->folder))) trash = account_get_special_folder(ac, F_TRASH); - if (!trash && msginfo->folder->folder) + if (!trash && msginfo->folder->folder) trash = msginfo->folder->folder->trash; /* if still not found, use the default */ - if (!trash) + if (!trash) trash = folder_get_default_trash(); - } + } cm_return_if_fail(trash != NULL); @@ -1714,25 +1709,25 @@ void messageview_delete(MessageView *msgview) #endif } -/* +/* * \brief update messageview with currently selected message in summaryview * leave unchanged if summaryview is empty * \param pointer to MessageView - */ + */ static void messageview_update(MessageView *msgview, MsgInfo *old_msginfo) { SummaryView *summaryview = (SummaryView*)msgview->mainwin->summaryview; cm_return_if_fail(summaryview != NULL); - + if (summaryview->selected) { MsgInfo *msginfo = summary_get_selected_msg(summaryview); if (msginfo == NULL || msginfo == old_msginfo) return; - messageview_show(msgview, msginfo, + messageview_show(msgview, msginfo, msgview->all_headers); - } + } } TextView *messageview_get_current_textview(MessageView *messageview) @@ -1817,7 +1812,7 @@ gboolean messageview_search_string_backward(MessageView *messageview, } text = messageview_get_current_textview(messageview); - if (text) + if (text) return textview_search_string_backward(text, str, case_sens); return FALSE; @@ -1856,7 +1851,7 @@ static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, if (event && (event->state & (GDK_MOD1_MASK|GDK_CONTROL_MASK)) != 0) return FALSE; - if (event && (event->state & GDK_SHIFT_MASK) && event->keyval != GDK_KEY_space) + if (event && (event->state & GDK_SHIFT_MASK) && event->keyval != GDK_KEY_space) return FALSE; if (event && (event->keyval == GDK_KEY_KP_Enter || event->keyval == GDK_KEY_Return) && @@ -1899,7 +1894,7 @@ static void return_receipt_show(NoticeView *noticeview, MsgInfo *msginfo) { gchar *addr = NULL; gboolean from_me = FALSE; - if (msginfo->folder + if (msginfo->folder && (folder_has_parent_of_type(msginfo->folder, F_QUEUE) || folder_has_parent_of_type(msginfo->folder, F_DRAFT))) return; @@ -1952,7 +1947,7 @@ static void return_receipt_send_clicked(NoticeView *noticeview, MsgInfo *msginfo if (disposition_notification_send(tmpmsginfo) >= 0) { procmsg_msginfo_set_flags(msginfo, MSG_RETRCPT_SENT, 0); noticeview_hide(noticeview); - } + } procmsg_msginfo_free(&tmpmsginfo); g_free(file); @@ -2010,7 +2005,7 @@ static void partial_recv_show(NoticeView *noticeview, MsgInfo *msginfo) return; } } - + noticeview_set_icon(noticeview, STOCK_PIXMAP_NOTICE_WARN); noticeview_set_text(noticeview, text); g_free(text); @@ -2025,7 +2020,7 @@ static void partial_recv_show(NoticeView *noticeview, MsgInfo *msginfo) noticeview_show(noticeview); } -static void partial_recv_dload_clicked(NoticeView *noticeview, +static void partial_recv_dload_clicked(NoticeView *noticeview, MsgInfo *msginfo) { if (partial_mark_for_download(msginfo) == 0) { @@ -2033,7 +2028,7 @@ static void partial_recv_dload_clicked(NoticeView *noticeview, } } -static void partial_recv_del_clicked(NoticeView *noticeview, +static void partial_recv_del_clicked(NoticeView *noticeview, MsgInfo *msginfo) { if (partial_mark_for_delete(msginfo) == 0) { @@ -2041,7 +2036,7 @@ static void partial_recv_del_clicked(NoticeView *noticeview, } } -static void partial_recv_unmark_clicked(NoticeView *noticeview, +static void partial_recv_unmark_clicked(NoticeView *noticeview, MsgInfo *msginfo) { if (partial_unmark(msginfo) == 0) { @@ -2102,11 +2097,11 @@ static PrefsAccount *select_account_from_list(GList *ac_list, gboolean has_accou return account_find_from_id(account_id); } -/* - * \brief return selected messageview text, when nothing is +/* + * \brief return selected messageview text, when nothing is * selected and message was filtered, return complete text * - * \param pointer to Messageview + * \param pointer to Messageview * * \return pointer to text (needs to be free'd by calling func) */ @@ -2119,7 +2114,7 @@ gchar *messageview_get_selection(MessageView *msgview) gint body_pos = 0; GtkTextIter start_iter, end_iter; GtkTextMark *body_start, *body_end; - + cm_return_val_if_fail(msgview != NULL, NULL); if (msgview->mimeview->type == MIMEVIEW_VIEWER) { @@ -2189,7 +2184,7 @@ void messageview_save_as(MessageView *messageview) AlertValue aval = 0; if (!messageview->msginfo) return; - + if (messageview->msginfo->subject) { Xstrdup_a(filename, messageview->msginfo->subject, return); subst_for_filename(filename); @@ -2207,7 +2202,7 @@ void messageview_save_as(MessageView *messageview) if (!filename) return; - if (prefs_common.attach_save_dir && *prefs_common.attach_save_dir) + if (prefs_common.attach_save_dir && *prefs_common.attach_save_dir) filepath = g_strconcat(prefs_common.attach_save_dir, G_DIR_SEPARATOR_S, filename, NULL); dest = filesel_select_file_save(_("Save as"), filepath ? filepath : filename); @@ -2231,7 +2226,7 @@ void messageview_save_as(MessageView *messageview) tmp = g_path_get_basename(dest); if (aval == 0) { - if (append_file(src, dest, TRUE) < 0) + if (append_file(src, dest, TRUE) < 0) alertpanel_error(_("Couldn't save the file '%s'."), tmp); } else { if (copy_file(src, dest, TRUE) < 0) @@ -2251,10 +2246,10 @@ void messageview_save_as(MessageView *messageview) g_free(tmp); } -static void print_mimeview(MimeView *mimeview, gint sel_start, gint sel_end, gint partnum) +static void print_mimeview(MimeView *mimeview, gint sel_start, gint sel_end, gint partnum) { MainWindow *mainwin; - if (!mimeview + if (!mimeview || !mimeview->textview || !mimeview->textview->text) alertpanel_warning(_("Cannot print: the message doesn't " @@ -2297,14 +2292,14 @@ static void print_mimeview(MimeView *mimeview, gint sel_start, gint sel_end, gin printing_print(GTK_TEXT_VIEW(mimeview->textview->text), mainwin ? GTK_WINDOW(mainwin->window) : NULL, sel_start, sel_end, - (mimeview->textview->image + (mimeview->textview->image ? GTK_IMAGE(mimeview->textview->image) : NULL)); } } -void messageview_print(MsgInfo *msginfo, gboolean all_headers, - gint sel_start, gint sel_end, gint partnum) +void messageview_print(MsgInfo *msginfo, gboolean all_headers, + gint sel_start, gint sel_end, gint partnum) { PangoFontDescription *font_desc = NULL; MessageView *tmpview = messageview_create_with_new_window_visible( @@ -2318,15 +2313,15 @@ void messageview_print(MsgInfo *msginfo, gboolean all_headers, (prefs_common.textfont); } if (font_desc) { - gtk_widget_override_font(tmpview->mimeview->textview->text, + gtk_widget_override_font(tmpview->mimeview->textview->text, font_desc); pango_font_description_free(font_desc); } tmpview->all_headers = all_headers; - if (msginfo && messageview_show(tmpview, msginfo, + if (msginfo && messageview_show(tmpview, msginfo, tmpview->all_headers) >= 0) { - print_mimeview(tmpview->mimeview, + print_mimeview(tmpview->mimeview, sel_start, sel_end, partnum); } messageview_clear(tmpview); @@ -2350,7 +2345,7 @@ static void print_cb(GtkAction *action, gpointer data) partnum = mimeview_get_selected_part_num(messageview->mimeview); textview_get_selection_offsets(messageview->mimeview->textview, &sel_start, &sel_end); - messageview_print(messageview->msginfo, messageview->all_headers, + messageview_print(messageview->msginfo, messageview->all_headers, sel_start, sel_end, partnum); } @@ -2393,9 +2388,9 @@ static void prev_cb(GtkAction *action, gpointer data) if (messageview->mainwin->summaryview->selected) { #ifndef GENERIC_UMPC MsgInfo * msginfo = summary_get_selected_msg(messageview->mainwin->summaryview); - + if (msginfo) - messageview_show(messageview, msginfo, + messageview_show(messageview, msginfo, messageview->all_headers); #endif } else { @@ -2418,9 +2413,9 @@ static void next_cb(GtkAction *action, gpointer data) if (messageview->mainwin->summaryview->selected) { #ifndef GENERIC_UMPC MsgInfo * msginfo = summary_get_selected_msg(messageview->mainwin->summaryview); - + if (msginfo) - messageview_show(messageview, msginfo, + messageview_show(messageview, msginfo, messageview->all_headers); #endif } else { @@ -2443,9 +2438,9 @@ static void prev_unread_cb(GtkAction *action, gpointer data) if (messageview->mainwin->summaryview->selected) { #ifndef GENERIC_UMPC MsgInfo * msginfo = summary_get_selected_msg(messageview->mainwin->summaryview); - + if (msginfo) - messageview_show(messageview, msginfo, + messageview_show(messageview, msginfo, messageview->all_headers); #endif } else { @@ -2468,9 +2463,9 @@ static void next_unread_cb(GtkAction *action, gpointer data) if (messageview->mainwin->summaryview->selected) { #ifndef GENERIC_UMPC MsgInfo * msginfo = summary_get_selected_msg(messageview->mainwin->summaryview); - + if (msginfo) - messageview_show(messageview, msginfo, + messageview_show(messageview, msginfo, messageview->all_headers); #endif } else { @@ -2493,9 +2488,9 @@ static void prev_new_cb(GtkAction *action, gpointer data) if (messageview->mainwin->summaryview->selected) { #ifndef GENERIC_UMPC MsgInfo * msginfo = summary_get_selected_msg(messageview->mainwin->summaryview); - + if (msginfo) - messageview_show(messageview, msginfo, + messageview_show(messageview, msginfo, messageview->all_headers); #endif } else { @@ -2518,9 +2513,9 @@ static void next_new_cb(GtkAction *action, gpointer data) if (messageview->mainwin->summaryview->selected) { #ifndef GENERIC_UMPC MsgInfo * msginfo = summary_get_selected_msg(messageview->mainwin->summaryview); - + if (msginfo) - messageview_show(messageview, msginfo, + messageview_show(messageview, msginfo, messageview->all_headers); #endif } else { @@ -2543,9 +2538,9 @@ static void prev_marked_cb(GtkAction *action, gpointer data) if (messageview->mainwin->summaryview->selected) { #ifndef GENERIC_UMPC MsgInfo * msginfo = summary_get_selected_msg(messageview->mainwin->summaryview); - + if (msginfo) - messageview_show(messageview, msginfo, + messageview_show(messageview, msginfo, messageview->all_headers); #endif } else { @@ -2568,9 +2563,9 @@ static void next_marked_cb(GtkAction *action, gpointer data) if (messageview->mainwin->summaryview->selected) { #ifndef GENERIC_UMPC MsgInfo * msginfo = summary_get_selected_msg(messageview->mainwin->summaryview); - + if (msginfo) - messageview_show(messageview, msginfo, + messageview_show(messageview, msginfo, messageview->all_headers); #endif } else { @@ -2593,9 +2588,9 @@ static void prev_labeled_cb(GtkAction *action, gpointer data) if (messageview->mainwin->summaryview->selected) { #ifndef GENERIC_UMPC MsgInfo * msginfo = summary_get_selected_msg(messageview->mainwin->summaryview); - + if (msginfo) - messageview_show(messageview, msginfo, + messageview_show(messageview, msginfo, messageview->all_headers); #endif } else { @@ -2618,9 +2613,9 @@ static void next_labeled_cb(GtkAction *action, gpointer data) if (messageview->mainwin->summaryview->selected) { #ifndef GENERIC_UMPC MsgInfo * msginfo = summary_get_selected_msg(messageview->mainwin->summaryview); - + if (msginfo) - messageview_show(messageview, msginfo, + messageview_show(messageview, msginfo, messageview->all_headers); #endif } else { @@ -2634,7 +2629,7 @@ static void prev_history_cb(GtkAction *action, gpointer data) MsgInfo *info = messageview_nav_get_prev(messageview); if (info) { messageview->updating = TRUE; - messageview_show(messageview, info, + messageview_show(messageview, info, messageview->all_headers); messageview->updating = FALSE; procmsg_msginfo_free(&info); @@ -2652,7 +2647,7 @@ static void next_history_cb(GtkAction *action, gpointer data) MsgInfo *info = messageview_nav_get_next(messageview); if (info) { messageview->updating = TRUE; - messageview_show(messageview, info, + messageview_show(messageview, info, messageview->all_headers); messageview->updating = FALSE; procmsg_msginfo_free(&info); @@ -2679,9 +2674,9 @@ static void parent_cb(GtkAction *action, gpointer data) if (messageview->mainwin->summaryview->selected) { #ifndef GENERIC_UMPC MsgInfo * msginfo = summary_get_selected_msg(messageview->mainwin->summaryview); - + if (msginfo) - messageview_show(messageview, msginfo, + messageview_show(messageview, msginfo, messageview->all_headers); #endif } else { @@ -2705,9 +2700,9 @@ static void goto_unread_folder_cb(GtkAction *action, gpointer data) if (messageview->mainwin->summaryview->selected) { #ifndef GENERIC_UMPC MsgInfo * msginfo = summary_get_selected_msg(messageview->mainwin->summaryview); - + if (msginfo) - messageview_show(messageview, msginfo, + messageview_show(messageview, msginfo, messageview->all_headers); #endif } else { @@ -2734,9 +2729,9 @@ static void goto_folder_cb(GtkAction *action, gpointer data) if (messageview->mainwin->summaryview->selected) { #ifndef GENERIC_UMPC MsgInfo * msginfo = summary_get_selected_msg(messageview->mainwin->summaryview); - + if (msginfo) - messageview_show(messageview, msginfo, + messageview_show(messageview, msginfo, messageview->all_headers); #endif } else { @@ -2781,7 +2776,7 @@ static void set_charset_cb(GtkAction *action, GtkRadioAction *current, gpointer g_free(messageview->forced_charset); messageview->forced_charset = g_strdup(charset); procmime_force_charset(charset); - + messageview_show(messageview, messageview->msginfo, FALSE); } } @@ -2850,9 +2845,9 @@ static void msg_hide_quotes_cb(GtkToggleAction *action, gpointer data) else if (!strcmp(a_name, "View/Quotes/Collapse3")) prefs_common.hide_quotes = 3; } else prefs_common.hide_quotes = 0; - + updating_menu=TRUE; - + cm_toggle_menu_set_active_full(messageview->ui_manager, "Menu/View/Quotes/CollapseAll", (prefs_common.hide_quotes == 1)); cm_toggle_menu_set_active_full(messageview->ui_manager, "Menu/View/Quotes/Collapse2", (prefs_common.hide_quotes == 2)); cm_toggle_menu_set_active_full(messageview->ui_manager, "Menu/View/Quotes/Collapse3", (prefs_common.hide_quotes == 3)); @@ -2863,7 +2858,7 @@ static void msg_hide_quotes_cb(GtkToggleAction *action, gpointer data) messageview_show(messageview, msginfo, messageview->all_headers); procmsg_msginfo_free(&msginfo); - + /* update main window */ main_window_set_menu_sensitive(messageview->mainwin); summary_redisplay_msg(messageview->mainwin->summaryview); @@ -2899,7 +2894,7 @@ static void reply_cb(GtkAction *gaction, gpointer data) GSList *msginfo_list = NULL; gint action = COMPOSE_REPLY; const gchar *a_name = gtk_action_get_name(gaction); - + cm_return_if_fail(messageview->msginfo); DO_ACTION("Message/Reply", COMPOSE_REPLY); @@ -2917,17 +2912,7 @@ static void reply_cb(GtkAction *gaction, gpointer data) static void addressbook_open_cb(GtkAction *action, gpointer data) { -#ifndef USE_ALT_ADDRBOOK addressbook_open(NULL); -#else - GError* error = NULL; - - addressbook_dbus_open(FALSE, &error); - if (error) { - g_warning("failed to open address book: %s", error->message); - g_error_free(error); - } -#endif } static void add_address_cb(GtkAction *action, gpointer data) @@ -2938,14 +2923,14 @@ static void add_address_cb(GtkAction *action, gpointer data) GdkPixbuf *picture = NULL; AvatarRender *avatarr; - if (!messageview->msginfo || !messageview->msginfo->from) + if (!messageview->msginfo || !messageview->msginfo->from) return; msginfo = messageview->msginfo; Xstrdup_a(from, msginfo->from, return); eliminate_address_comment(from); extract_address(from); - + full_msginfo = procmsg_msginfo_get_full_info(msginfo); avatarr = avatars_avatarrender_new(full_msginfo); @@ -2956,13 +2941,7 @@ static void add_address_cb(GtkAction *action, gpointer data) if (avatarr->image != NULL) picture = gtk_image_get_pixbuf(GTK_IMAGE(avatarr->image)); -#ifndef USE_ALT_ADDRBOOK addressbook_add_contact(msginfo->fromname, from, NULL, picture); -#else - if (addressadd_selection(msginfo->fromname, from, NULL, picture)) { - debug_print( "addressbook_add_contact - added\n" ); - } -#endif avatars_avatarrender_free(avatarr); } @@ -2980,7 +2959,7 @@ static void create_filter_cb(GtkAction *gaction, gpointer data) DO_ACTION("Tools/CreateFilterRule/ByTo", FILTER_BY_TO); DO_ACTION("Tools/CreateFilterRule/BySubject", FILTER_BY_SUBJECT); DO_ACTION("Tools/CreateFilterRule/BySender", FILTER_BY_SENDER); - + item = messageview->msginfo->folder; summary_msginfo_filter_open(item, messageview->msginfo, (PrefsFilterType)action, 0); @@ -2992,9 +2971,9 @@ static void create_processing_cb(GtkAction *gaction, gpointer data) FolderItem * item; gint action = -1; const gchar *a_name = gtk_action_get_name(gaction); - + if (!messageview->msginfo) return; - + DO_ACTION("Tools/CreateProcessingRule/Automatically", FILTER_BY_AUTO); DO_ACTION("Tools/CreateProcessingRule/ByFrom", FILTER_BY_FROM); DO_ACTION("Tools/CreateProcessingRule/ByTo", FILTER_BY_TO); @@ -3035,7 +3014,7 @@ static gboolean messageview_update_msg(gpointer source, gpointer data) _("\n There are no messages in this folder")); return FALSE; } - + if (!OPEN_SELECTED_ON_DELETEMOVE && !OPEN_SELECTED_ON_PREVNEXT) { messageview_clear(messageview); textview_show_info(messageview->mimeview->textview, @@ -3074,7 +3053,7 @@ void messageview_learn (MessageView *msgview, gboolean is_spam) procmsg_msginfo_set_flags(msgview->msginfo, MSG_SPAM, 0); else log_error(LOG_PROTOCOL, _("An error happened while learning.\n")); - + } else { if (procmsg_spam_learner_learn(msgview->msginfo, NULL, FALSE) == 0) procmsg_msginfo_unset_flags(msgview->msginfo, MSG_SPAM, 0); @@ -3097,10 +3076,10 @@ void messageview_list_urls (MessageView *msgview) GSList *newlist = NULL; GHashTable *uri_hashtable; gchar *tmp; - + uri_hashtable = g_hash_table_new_full(g_str_hash, g_str_equal, (GDestroyNotify) g_free, NULL); - + for (; cur; cur = cur->next) { ClickableText *uri = (ClickableText *)cur->data; if (uri->uri && @@ -3115,12 +3094,12 @@ void messageview_list_urls (MessageView *msgview) !g_ascii_strncasecmp(uri->uri, "https:", 6))) { tmp = g_utf8_strdown(uri->uri, -1); - + if (g_hash_table_lookup(uri_hashtable, tmp)) { g_free(tmp); continue; } - + newlist = g_slist_prepend(newlist, uri); g_hash_table_insert(uri_hashtable, tmp, GUINT_TO_POINTER(g_str_hash(tmp))); diff --git a/src/prefs_common.c b/src/prefs_common.c @@ -62,9 +62,7 @@ #include "passwordstore.h" #include "file-utils.h" -#ifndef USE_ALT_ADDRBOOK - #include "addrcustomattr.h" -#endif +#include "addrcustomattr.h" enum { DATEFMT_FMT, @@ -122,7 +120,7 @@ static PrefParam param_os_specific[] = { &prefs_common.mime_open_cmd, P_STRING, NULL, NULL, NULL}, /* Interface */ - {"pixmap_theme_path", DEFAULT_PIXMAP_THEME, + {"pixmap_theme_path", DEFAULT_PIXMAP_THEME, &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL}, #ifdef HAVE_SVG {"enable_alpha_svg", "TRUE", @@ -190,7 +188,7 @@ static PrefParam param[] = { P_BOOL, NULL, NULL, NULL}, {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog, P_BOOL, NULL, NULL, NULL}, - + /* Send */ {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL, NULL, NULL, NULL}, @@ -686,7 +684,7 @@ static PrefParam param[] = { {"messagewin_height", "540", &prefs_common.msgwin_height, P_INT, NULL, NULL, NULL}, {"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT, - NULL, NULL, NULL}, + NULL, NULL, NULL}, {"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT, NULL, NULL, NULL}, {"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT, @@ -816,7 +814,7 @@ static PrefParam param[] = { &SPECIFIC_PREFS.mime_textviewer, P_STRING, NULL, NULL, NULL}, {"mime_open_command", "xdg-open '%s'", &SPECIFIC_PREFS.mime_open_cmd, P_STRING, NULL, NULL, NULL}, - {"show_inline_attachments", "TRUE", + {"show_inline_attachments", "TRUE", &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL}, /* Interface */ @@ -878,7 +876,7 @@ static PrefParam param[] = { &prefs_common.mark_as_read_on_new_window, P_BOOL, NULL, NULL, NULL}, {"mark_as_read_delay", "0", - &prefs_common.mark_as_read_delay, P_INT, + &prefs_common.mark_as_read_delay, P_INT, NULL, NULL, NULL}, {"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL, NULL, NULL, NULL}, @@ -887,7 +885,7 @@ static PrefParam param[] = { {"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM, NULL, NULL, NULL}, - {"pixmap_theme_path", DEFAULT_PIXMAP_THEME, + {"pixmap_theme_path", DEFAULT_PIXMAP_THEME, &SPECIFIC_PREFS.pixmap_theme_path, P_STRING, NULL, NULL, NULL}, #ifdef HAVE_SVG @@ -1197,7 +1195,7 @@ static PrefParam param[] = { NULL, NULL, NULL}, #else {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL, - NULL, NULL, NULL}, + NULL, NULL, NULL}, #endif {"folderview_vscrollbar_policy", "0", &prefs_common.folderview_vscrollbar_policy, P_ENUM, @@ -1382,7 +1380,7 @@ GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, co /* * Read history list from the specified history file in the specified directory (subdir of rc_dir) */ -static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history) +static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history) { return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL); } @@ -1390,7 +1388,7 @@ static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gch /* * Read history list from the specified history file */ -static GList *prefs_common_read_history(const gchar *history) +static GList *prefs_common_read_history(const gchar *history) { return prefs_common_read_history_from_dir(NULL, history); } @@ -1430,9 +1428,7 @@ void prefs_common_read_config(void) prefs_common_read_history(MESSAGE_SEARCH_HISTORY); prefs_common.compose_save_to_history = prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY); -#ifndef USE_ALT_ADDRBOOK prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs(); -#endif colorlabel_update_colortable_from_prefs(); } @@ -1471,7 +1467,7 @@ static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar * FILE_OP_ERROR(history, "chmod"); g_warning("can't change file mode: %s", history); } - + for (cur = list; cur != NULL; cur = cur->next) { TRY(claws_fputs((gchar *)cur->data, fp) != EOF && claws_fputc('\n', fp) != EOF); @@ -1515,30 +1511,28 @@ void prefs_common_write_config(void) prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC); #endif - prefs_common_save_history(COMMAND_HISTORY, + prefs_common_save_history(COMMAND_HISTORY, prefs_common.mime_open_cmd_history); - prefs_common_save_history(QUICKSEARCH_HISTORY, + prefs_common_save_history(QUICKSEARCH_HISTORY, prefs_common.summary_quicksearch_history); - prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY, + prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY, prefs_common.summary_search_from_history); - prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY, + prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY, prefs_common.summary_search_to_history); - prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY, + prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY, prefs_common.summary_search_subject_history); - prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY, + prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY, prefs_common.summary_search_body_history); - prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY, + prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY, prefs_common.summary_search_adv_condition_history); - prefs_common_save_history(MESSAGE_SEARCH_HISTORY, + prefs_common_save_history(MESSAGE_SEARCH_HISTORY, prefs_common.message_search_history); - prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY, + prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY, prefs_common.compose_save_to_history); -#ifndef USE_ALT_ADDRBOOK prefs_common_save_history_to_dir(ADDRBOOK_DIR, - ADDRESSBOOK_CUSTOM_ATTRIBUTES, + ADDRESSBOOK_CUSTOM_ATTRIBUTES, prefs_common.addressbook_custom_attributes); -#endif } /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences. @@ -1611,7 +1605,7 @@ void pref_get_escaped_pref(gchar *out, const gchar *in) } *o = '\0'; } - + /* set the contents of a textview widget from the internal \-escaped representation of a pref string. both txt and textview must be non-NULL. */ void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt) @@ -1656,12 +1650,12 @@ void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt) /* get the \-escaped internal representation of a pref from the contents of a textview widget. textview must be non-NULL. */ -gchar *pref_get_pref_from_textview(GtkTextView *textview) +gchar *pref_get_pref_from_textview(GtkTextView *textview) { GtkTextBuffer *buffer; GtkTextIter start, end; gchar *out, *tmp; - + cm_return_val_if_fail( textview != NULL, "" ); buffer = gtk_text_view_get_buffer(textview); @@ -1678,7 +1672,7 @@ gchar *pref_get_pref_from_textview(GtkTextView *textview) /* get the \-escaped internal representation of a pref from the contents of a gtkentry widget. entry must be non-NULL. */ -gchar *pref_get_pref_from_entry(GtkEntry *entry) +gchar *pref_get_pref_from_entry(GtkEntry *entry) { gchar *out, *tmp; @@ -1686,7 +1680,7 @@ gchar *pref_get_pref_from_entry(GtkEntry *entry) tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1); out = malloc(2*strlen(tmp)+1); - + if (out) pref_get_escaped_pref(out, tmp); g_free(tmp); @@ -1741,14 +1735,14 @@ const gchar *prefs_common_get_uri_cmd(void) return NULL; #else gchar *tmp = NULL; - + if (!prefs_common.cmds_use_system_default) return prefs_common.uri_cmd; - + tmp = g_find_program_in_path("xdg-open"); - if (!tmp) + if (!tmp) return prefs_common.uri_cmd; - + g_free(tmp); return "xdg-open %s"; #endif @@ -1760,14 +1754,14 @@ const gchar *prefs_common_get_ext_editor_cmd(void) #if 0 /* we should do that, but it detaches the editor and breaks compose.c's external composition. */ gchar *tmp = NULL; - + if (!prefs_common.cmds_use_system_default) return prefs_common.ext_editor_cmd; - + tmp = g_find_program_in_path("xdg-open"); - if (!tmp) + if (!tmp) return prefs_common.ext_editor_cmd; - + g_free(tmp); return "xdg-open %s"; #endif /* 0 */ diff --git a/src/prefs_filtering_action.c b/src/prefs_filtering_action.c @@ -52,9 +52,7 @@ #include "colorlabel.h" #include "combobox.h" #include "account.h" -#ifndef USE_ALT_ADDRBOOK - #include "addressbook.h" -#endif +#include "addressbook.h" enum { PFA_ACTION, @@ -77,9 +75,7 @@ static gint prefs_filtering_action_deleted(GtkWidget *widget, static void prefs_filtering_action_type_selection_changed(GtkWidget *widget, gpointer user_data); static void prefs_filtering_action_select_dest(void); -#ifndef USE_ALT_ADDRBOOK static void prefs_filtering_action_select_addressbook(void); -#endif static void prefs_filtering_action_up(void); static void prefs_filtering_action_down(void); static void prefs_filtering_action_set_dialog(GSList *action_list); @@ -93,7 +89,7 @@ static void prefs_filtering_action_list_view_insert_action (GtkWidget *list_vi static GtkWidget *prefs_filtering_action_list_view_create (void); static void prefs_filtering_action_create_list_view_columns (GtkTreeView *list_view); static gboolean prefs_filtering_actions_selected (GtkTreeSelection *selector, - GtkTreeModel *model, + GtkTreeModel *model, GtkTreePath *path, gboolean currently_selected, gpointer data); @@ -121,9 +117,7 @@ static struct FilteringAction_ { GtkWidget *color_optmenu; GtkWidget *header_combo; GtkWidget *header_entry; -#ifndef USE_ALT_ADDRBOOK GtkWidget *addressbook_btn; -#endif GtkWidget *score_entry; GtkWidget *tags_combo; @@ -166,7 +160,7 @@ static struct { gchar *text; Action action; } action_menu [] = { - { NULL, N_("Move"), ACTION_MOVE }, + { NULL, N_("Move"), ACTION_MOVE }, { NULL, N_("Copy"), ACTION_COPY }, { NULL, N_("Delete"), ACTION_DELETE }, { NULL, N_("Hide"), ACTION_HIDE }, @@ -213,10 +207,10 @@ static GtkTreeModel *prefs_filtering_action_create_model(void) GtkTreeStore *store; gchar *curr_menu = NULL; gint i; - + store = gtk_tree_store_new(N_ACTION_COMBO, G_TYPE_STRING, G_TYPE_INT, G_TYPE_BOOLEAN); - + for (i = 0; action_menu[i].menu || action_menu[i].text; i++) { if (action_menu[i].menu) { @@ -228,8 +222,8 @@ static GtkTreeModel *prefs_filtering_action_create_model(void) ACTION_COMBO_SENS, TRUE, -1); curr_menu = action_menu[i].menu; - } - + } + gtk_tree_store_append(store, &iter2, &iter); gtk_tree_store_set(store, &iter2, ACTION_COMBO_TEXT, gettext(action_menu[i].text), @@ -238,18 +232,18 @@ static GtkTreeModel *prefs_filtering_action_create_model(void) -1); } else { curr_menu = NULL; - + gtk_tree_store_append(store, &iter, NULL); gtk_tree_store_set(store, &iter, ACTION_COMBO_TEXT, gettext(action_menu[i].text), ACTION_COMBO_DATA, action_menu[i].action, ACTION_COMBO_SENS, TRUE, - -1); - } + -1); + } } - + return GTK_TREE_MODEL(store); -} +} static void cell_is_sensitive(GtkCellLayout *cell_layout, GtkCellRenderer *cell, @@ -311,7 +305,7 @@ static void prefs_filtering_action_size_allocate_cb(GtkWidget *widget, static void prefs_filtering_action_check_widget_width(GtkWidget *widget) { GtkRequisition req; - + gtk_widget_get_preferred_size(widget, &req, NULL); if(req.width > SECOND_ROW_WIDTH) gtk_widget_set_size_request(widget, SECOND_ROW_WIDTH, -1); @@ -340,9 +334,7 @@ static void prefs_filtering_action_create(void) GtkWidget *account_combo; GtkWidget *header_combo; GtkWidget *header_entry; -#ifndef USE_ALT_ADDRBOOK GtkWidget *addressbook_btn; -#endif GtkWidget *dest_entry; GtkWidget *dest_btn; GtkWidget *score_entry; @@ -415,14 +407,14 @@ static void prefs_filtering_action_create(void) frame = gtk_frame_new(_("Rule")); gtk_frame_set_label_align(GTK_FRAME(frame), 0.01, 0.5); - gtk_box_pack_start (GTK_BOX (vbox1), frame, FALSE, FALSE, 0); - + gtk_box_pack_start (GTK_BOX (vbox1), frame, FALSE, FALSE, 0); + table = gtk_grid_new(); gtk_container_set_border_width(GTK_CONTAINER(table), VSPACING_NARROW); gtk_grid_set_row_spacing(GTK_GRID(table), VSPACING_NARROW_2); gtk_grid_set_column_spacing(GTK_GRID(table), HSPACING_NARROW); gtk_container_add(GTK_CONTAINER(frame), table); - + /* first row labels */ label1 = gtk_label_new (_("Action")); @@ -446,12 +438,12 @@ static void prefs_filtering_action_create(void) gtk_widget_set_halign(label3, GTK_ALIGN_FILL); /* action combo */ - + hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_grid_attach(GTK_GRID(table), hbox1, 1, 0, 1, 1); gtk_widget_set_hexpand(hbox1, TRUE); gtk_widget_set_halign(hbox1, GTK_ALIGN_FILL); - + model = prefs_filtering_action_create_model(); action_combo = gtk_combo_box_new_with_model(model); gtk_size_group_add_widget(size_action, action_combo); @@ -512,10 +504,10 @@ static void prefs_filtering_action_create(void) dest_entry = gtk_entry_new (); gtk_box_pack_start (GTK_BOX (hbox1), dest_entry, TRUE, TRUE, 0); - + score_entry = gtk_spin_button_new_with_range(-1000, 1000, 1); gtk_box_pack_start(GTK_BOX(hbox1), score_entry, FALSE, FALSE, 0); - + color_optmenu = colorlabel_create_combobox_colormenu(); gtk_size_group_add_widget(size_action, color_optmenu); prefs_filtering_action_check_widget_width(color_optmenu); @@ -549,13 +541,11 @@ static void prefs_filtering_action_create(void) G_CALLBACK(prefs_filtering_action_select_dest), NULL); -#ifndef USE_ALT_ADDRBOOK addressbook_btn = gtk_button_new_with_label (_("Select...")); gtk_box_pack_start (GTK_BOX (hbox1), addressbook_btn, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (addressbook_btn), "clicked", G_CALLBACK(prefs_filtering_action_select_addressbook), NULL); -#endif exec_btn = gtkut_stock_button("dialog-information", _("_Information")); gtk_box_pack_start (GTK_BOX (hbox1), exec_btn, FALSE, FALSE, 0); @@ -649,12 +639,10 @@ static void prefs_filtering_action_create(void) filtering_action.score_entry = score_entry; filtering_action.header_combo = header_combo; filtering_action.header_entry = header_entry; -#ifndef USE_ALT_ADDRBOOK filtering_action.addressbook_btn = addressbook_btn; -#endif filtering_action.ok_btn = ok_btn; filtering_action.action_list_view = action_list_view; - + prefs_filtering_action_type_selection_changed(NULL, NULL); } @@ -665,7 +653,7 @@ static void prefs_filtering_action_create(void) *\param prop Condition to set * */ -static void prefs_filtering_action_list_view_set_row(GtkTreeIter *row, +static void prefs_filtering_action_list_view_set_row(GtkTreeIter *row, FilteringAction *action) { gchar *buf; @@ -675,7 +663,7 @@ static void prefs_filtering_action_list_view_set_row(GtkTreeIter *row, (filtering_action.action_list_view, NULL, _("(New)"), FALSE); return; - } + } buf = filteringaction_to_string(action); @@ -706,9 +694,9 @@ static void prefs_filtering_action_set_dialog(GSList *action_list) prefs_filtering_action_list_view_set_row(NULL, action); } } - + prefs_filtering_action_reset_dialog(); - + combobox_set_sensitive(GTK_COMBO_BOX(filtering_action.action_combo), 9, (tags_get_size() > 0) ? TRUE : FALSE); } @@ -733,19 +721,19 @@ static GSList *prefs_filtering_action_get_list(void) while (gtk_tree_model_iter_nth_child(model, &iter, NULL, row)) { - gtk_tree_model_get(model, &iter, + gtk_tree_model_get(model, &iter, PFA_ACTION, &action_str, PFA_VALID_ACTION, &is_valid, -1); - if (is_valid) { + if (is_valid) { GSList * tmp_action_list; tmp_action_list = matcher_parser_get_action_list(action_str); - + if (tmp_action_list == NULL) { g_free(action_str); break; - } + } action_list = g_slist_concat(action_list, tmp_action_list); @@ -754,7 +742,7 @@ static GSList *prefs_filtering_action_get_list(void) g_free(action_str); action_str = NULL; row ++; - + } return action_list; @@ -886,14 +874,14 @@ static FilteringAction * prefs_filtering_action_dialog_to_action(gboolean alert) FilteringAction * action; gint score; gchar * header = NULL; - + action_id = combobox_get_active_data(GTK_COMBO_BOX(filtering_action.action_combo)); action_type = prefs_filtering_action_get_matching_from_action(action_id); list_id = gtk_combo_box_get_active(GTK_COMBO_BOX(filtering_action.account_combo)); account_id = get_account_id_from_list_id(list_id); score = 0; destination = NULL; - + switch (action_id) { case ACTION_MOVE: case ACTION_COPY: @@ -901,7 +889,7 @@ static FilteringAction * prefs_filtering_action_dialog_to_action(gboolean alert) destination = gtk_editable_get_chars(GTK_EDITABLE(filtering_action.dest_entry), 0, -1); if (*destination == '\0') { if (alert) - alertpanel_error(action_id == ACTION_EXECUTE + alertpanel_error(action_id == ACTION_EXECUTE ? _("Command-line not set.") : _("Destination is not set.")); g_free(destination); @@ -922,7 +910,7 @@ static FilteringAction * prefs_filtering_action_dialog_to_action(gboolean alert) case ACTION_COLOR: labelcolor = colorlabel_get_combobox_colormenu_active( GTK_COMBO_BOX(filtering_action.color_optmenu)); - destination = NULL; + destination = NULL; break; case ACTION_CHANGE_SCORE: case ACTION_SET_SCORE: @@ -979,7 +967,7 @@ static FilteringAction * prefs_filtering_action_dialog_to_action(gboolean alert) } action = filteringaction_new(action_type, account_id, destination, labelcolor, score, header); - + g_free(destination); return action; } @@ -990,7 +978,7 @@ static FilteringAction * prefs_filtering_action_dialog_to_action(gboolean alert) static void prefs_filtering_action_register_cb(void) { FilteringAction *action; - + action = prefs_filtering_action_dialog_to_action(TRUE); if (action == NULL) return; @@ -999,9 +987,9 @@ static void prefs_filtering_action_register_cb(void) filteringaction_free(action); /* GTK 1 NOTE: - * (presumably gtk_list_select_item(), called by - * prefs_filtering_action_reset_dialog() activates - * what seems to be a bug. this causes any other + * (presumably gtk_list_select_item(), called by + * prefs_filtering_action_reset_dialog() activates + * what seems to be a bug. this causes any other * list items to be unselectable) * prefs_filtering_action_reset_dialog(); */ gtk_combo_box_set_active(GTK_COMBO_BOX(filtering_action.account_combo), 0); @@ -1059,7 +1047,7 @@ static void prefs_filtering_action_delete_cb(void) if (!is_valid) return; - gtk_list_store_remove(GTK_LIST_STORE(model), &row); + gtk_list_store_remove(GTK_LIST_STORE(model), &row); prefs_filtering_action_reset_dialog(); } @@ -1074,18 +1062,18 @@ static void prefs_filtering_action_up(void) GtkListStore *store = NULL; GtkTreeModel *model = NULL; GtkTreeIter iprev; - + if (!gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW(filtering_action.action_list_view)), - &model, + &model, &isel)) return; store = (GtkListStore *)model; sel = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &isel); if (!sel) return; - + /* no move if we're at row 0 or 1, looks phony, but other * solutions are more convoluted... */ try = gtk_tree_path_copy(sel); @@ -1096,7 +1084,7 @@ static void prefs_filtering_action_up(void) } gtk_tree_path_free(try); - prev = gtk_tree_path_copy(sel); + prev = gtk_tree_path_copy(sel); if (gtk_tree_path_prev(prev)) { gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iprev, prev); @@ -1117,7 +1105,7 @@ static void prefs_filtering_action_down(void) GtkTreeModel *model = NULL; GtkTreeIter next, sel; GtkTreePath *try; - + if (!gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW(filtering_action.action_list_view)), @@ -1126,16 +1114,16 @@ static void prefs_filtering_action_down(void) return; store = (GtkListStore *)model; try = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &sel); - if (!try) + if (!try) return; - + /* move when not at row 0 ... */ if (gtk_tree_path_prev(try)) { next = sel; if (gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &next)) gtk_list_store_swap(store, &next, &sel); } - + gtk_tree_path_free(try); } @@ -1151,7 +1139,7 @@ static gboolean prefs_filtering_action_key_pressed(GtkWidget *widget, { if (event && event->keyval == GDK_KEY_Escape) { prefs_filtering_action_cancel(); - return TRUE; + return TRUE; } return FALSE; } @@ -1211,7 +1199,7 @@ static gint prefs_filtering_action_deleted(GtkWidget *widget, /* * Strings describing exec format strings - * + * * When adding new lines, remember to put 2 strings for each line */ static gchar *exec_desc_strings[] = { @@ -1231,7 +1219,7 @@ static gchar *exec_desc_strings[] = { NULL, NULL }; -static DescriptionWindow exec_desc_win = { +static DescriptionWindow exec_desc_win = { NULL, NULL, TRUE, @@ -1267,7 +1255,6 @@ static void prefs_filtering_action_select_dest(void) g_free(path); } -#ifndef USE_ALT_ADDRBOOK static void prefs_filtering_action_select_addressbook(void) { const gchar *folderpath = NULL; @@ -1278,9 +1265,8 @@ static void prefs_filtering_action_select_addressbook(void) if (new_path) { gtk_entry_set_text(GTK_ENTRY(filtering_action.dest_entry), new_path); g_free(new_path); - } + } } -#endif static void prefs_filtering_action_enable_widget(GtkWidget* widget, const gboolean enable) { @@ -1296,7 +1282,7 @@ static void prefs_filtering_action_enable_widget(GtkWidget* widget, const gboole gtk_entry_set_text(GTK_ENTRY(widget), ""); else if(GTK_IS_COMBO_BOX(widget)) gtk_combo_box_set_active(GTK_COMBO_BOX(widget), 0); - + gtk_widget_set_sensitive(widget, TRUE); gtk_widget_show(widget); } else { @@ -1338,12 +1324,12 @@ static void prefs_filtering_action_type_selection_changed(GtkWidget *combo, (ACTION_SEND(value) || value == ACTION_ADD_TO_ADDRESSBOOK)); prefs_filtering_action_enable_widget(filtering_action.label3, - (ACTION_SEND(value) || ACTION_TAG(value) || + (ACTION_SEND(value) || ACTION_TAG(value) || ACTION_SCORE(value) || ACTION_FILEOP(value) || value == ACTION_COLOR || value == ACTION_EXECUTE || value == ACTION_ADD_TO_ADDRESSBOOK)); - prefs_filtering_action_enable_widget(filtering_action.account_combo, + prefs_filtering_action_enable_widget(filtering_action.account_combo, ACTION_SEND(value)); prefs_filtering_action_enable_widget(filtering_action.tags_combo, @@ -1352,7 +1338,7 @@ static void prefs_filtering_action_type_selection_changed(GtkWidget *combo, prefs_filtering_action_enable_widget(filtering_action.dest_entry, (ACTION_FILEOP(value) || value == ACTION_EXECUTE || ACTION_SEND(value) || value == ACTION_ADD_TO_ADDRESSBOOK)); - + prefs_filtering_action_enable_widget(filtering_action.dest_btn, ACTION_FILEOP(value)); @@ -1363,19 +1349,17 @@ static void prefs_filtering_action_type_selection_changed(GtkWidget *combo, (value == ACTION_COLOR)); prefs_filtering_action_enable_widget(filtering_action.header_combo, - (value == ACTION_ADD_TO_ADDRESSBOOK)); -#ifndef USE_ALT_ADDRBOOK + (value == ACTION_ADD_TO_ADDRESSBOOK)); prefs_filtering_action_enable_widget(filtering_action.addressbook_btn, (value == ACTION_ADD_TO_ADDRESSBOOK)); -#endif prefs_filtering_action_enable_widget(filtering_action.score_entry, ACTION_SCORE(value)); - + switch(value) { case ACTION_FORWARD: case ACTION_FORWARD_AS_ATTACHMENT: case ACTION_REDIRECT: - gtk_label_set_text(GTK_LABEL(filtering_action.label2), _("Account")); + gtk_label_set_text(GTK_LABEL(filtering_action.label2), _("Account")); gtk_label_set_text(GTK_LABEL(filtering_action.label3), _("Recipient")); break; case ACTION_ADD_TO_ADDRESSBOOK: @@ -1427,8 +1411,8 @@ static void prefs_filtering_action_list_view_insert_action(GtkWidget *list_vie GtkListStore *store = GTK_LIST_STORE(gtk_tree_view_get_model (GTK_TREE_VIEW(list_view))); GtkTreeIter iter; - - + + /* see if row exists, if not append */ if (row == NULL) gtk_list_store_append(store, &iter); @@ -1449,7 +1433,7 @@ static GtkWidget *prefs_filtering_action_list_view_create(void) model = GTK_TREE_MODEL(prefs_filtering_action_create_data_store()); list_view = GTK_TREE_VIEW(gtk_tree_view_new_with_model(model)); - g_object_unref(model); + g_object_unref(model); gtk_tree_view_set_reorderable(list_view, TRUE); @@ -1457,7 +1441,7 @@ static GtkWidget *prefs_filtering_action_list_view_create(void) gtk_tree_selection_set_mode(selector, GTK_SELECTION_BROWSE); gtk_tree_selection_set_select_function (selector, prefs_filtering_actions_selected, NULL, NULL); - + /* create the columns */ prefs_filtering_action_create_list_view_columns(list_view); @@ -1475,12 +1459,12 @@ static void prefs_filtering_action_create_list_view_columns(GtkTreeView *list_vi renderer, "text", PFA_ACTION, NULL); - gtk_tree_view_append_column(list_view, column); + gtk_tree_view_append_column(list_view, column); } static gboolean prefs_filtering_actions_selected (GtkTreeSelection *selector, - GtkTreeModel *model, + GtkTreeModel *model, GtkTreePath *path, gboolean currently_selected, gpointer data) @@ -1498,7 +1482,7 @@ static gboolean prefs_filtering_actions_selected if (!gtk_tree_model_get_iter(model, &iter, path)) return TRUE; - gtk_tree_model_get(model, &iter, + gtk_tree_model_get(model, &iter, PFA_VALID_ACTION, &is_valid, -1); @@ -1507,7 +1491,7 @@ static gboolean prefs_filtering_actions_selected return TRUE; } - gtk_tree_model_get(model, &iter, + gtk_tree_model_get(model, &iter, PFA_ACTION, &action_str, -1); diff --git a/src/prefs_matcher.c b/src/prefs_matcher.c @@ -52,13 +52,9 @@ #include "matcher_parser.h" #include "colorlabel.h" #include "tags.h" -#ifndef USE_ALT_ADDRBOOK - #include "addressbook.h" -#endif +#include "addressbook.h" -#ifndef USE_ALT_ADDRBOOK static void prefs_matcher_addressbook_select(void); -#endif static void prefs_matcher_test_info(GtkWidget *widget, GtkWidget *parent); enum { @@ -120,10 +116,10 @@ static struct Matcher { GtkTreeModel *model_tags; GtkTreeModel *model_test; GtkTreeModel *model_thread; - + GtkWidget *cond_list_view; - gint selected_criteria; /*!< selected criteria in combobox */ + gint selected_criteria; /*!< selected criteria in combobox */ } matcher; /*! @@ -131,7 +127,7 @@ static struct Matcher { * have the same CRITERIA_XXX id). I.e. both unread and ~unread * have criteria id CRITERIA_UNREAD. This id is passed as the * first parameter to #matcherprop_new and #matcherprop_unquote_new. - */ + */ enum { CRITERIA_ALL = 0, @@ -171,11 +167,11 @@ enum { CRITERIA_SIZE_GREATER = 30, CRITERIA_SIZE_SMALLER = 31, CRITERIA_SIZE_EQUAL = 32, - + CRITERIA_PARTIAL = 33, CRITERIA_FOUND_IN_ADDRESSBOOK = 34, - + CRITERIA_TAG = 35, CRITERIA_TAGGED = 36, @@ -232,7 +228,7 @@ enum { }; /*! - *\brief Contains predicate + *\brief Contains predicate */ enum { PREDICATE_CONTAINS = 0, @@ -256,7 +252,7 @@ static PrefsMatcherSignal *matchers_callback; static void prefs_matcher_create (void); static void prefs_matcher_set_dialog (MatcherList *matchers); -static void prefs_matcher_list_view_set_row (GtkTreeIter *row, +static void prefs_matcher_list_view_set_row (GtkTreeIter *row, MatcherProp *prop); /* callback functions */ @@ -293,7 +289,7 @@ static GtkWidget *prefs_matcher_list_view_create (void); static void prefs_matcher_create_list_view_columns (GtkWidget *list_view); static gboolean prefs_matcher_selected (GtkTreeSelection *selector, - GtkTreeModel *model, + GtkTreeModel *model, GtkTreePath *path, gboolean currently_selected, gpointer data); @@ -329,7 +325,7 @@ static void prefs_matcher_models_create(void) { GtkListStore *store; GtkTreeIter iter; - + store = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_INT, G_TYPE_BOOLEAN); COMBOBOX_ADD(store, _("more than"), CRITERIA_AGE_GREATER); COMBOBOX_ADD(store, _("less than"), CRITERIA_AGE_LOWER); @@ -351,7 +347,7 @@ static void prefs_matcher_models_create(void) COMBOBOX_ADD(store, _("lower than"), CRITERIA_SCORE_LOWER); COMBOBOX_ADD(store, _("exactly"), CRITERIA_SCORE_EQUAL); matcher.model_score = GTK_TREE_MODEL(store); - + store = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_INT, G_TYPE_BOOLEAN); COMBOBOX_ADD(store, _("greater than"), CRITERIA_SIZE_GREATER); COMBOBOX_ADD(store, _("smaller than"), CRITERIA_SIZE_SMALLER); @@ -363,12 +359,12 @@ static void prefs_matcher_models_create(void) COMBOBOX_ADD(store, _("kibibytes"), SIZE_UNIT_KBYTES); COMBOBOX_ADD(store, _("mebibytes"), SIZE_UNIT_MBYTES); matcher.model_size_units = GTK_TREE_MODEL(store); - + store = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_INT, G_TYPE_BOOLEAN); COMBOBOX_ADD(store, _("contains"), 0); COMBOBOX_ADD(store, _("doesn't contain"), 0); matcher.model_contain = GTK_TREE_MODEL(store); - + store = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_INT, G_TYPE_BOOLEAN); COMBOBOX_ADD(store, "Subject", CRITERIA_SUBJECT); COMBOBOX_ADD(store, "From", CRITERIA_FROM); @@ -388,14 +384,14 @@ static void prefs_matcher_models_create(void) COMBOBOX_ADD(store, "List-Post", CRITERIA_HEADER); COMBOBOX_ADD(store, "List-Id", CRITERIA_HEADER); matcher.model_headers = GTK_TREE_MODEL(store); - + store = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_INT, G_TYPE_BOOLEAN); COMBOBOX_ADD(store, _("headers part"), CRITERIA_HEADERS_PART); COMBOBOX_ADD(store, _("headers values"), CRITERIA_HEADERS_CONT); COMBOBOX_ADD(store, _("body part"), CRITERIA_BODY_PART); COMBOBOX_ADD(store, _("whole message"), CRITERIA_MESSAGE); matcher.model_phrase = GTK_TREE_MODEL(store); - + store = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_INT, G_TYPE_BOOLEAN); COMBOBOX_ADD(store, _("Unread"), CRITERIA_UNREAD); COMBOBOX_ADD(store, _("New"), CRITERIA_NEW); @@ -408,7 +404,7 @@ static void prefs_matcher_models_create(void) COMBOBOX_ADD(store, _("Has attachment"), CRITERIA_HAS_ATTACHMENT); COMBOBOX_ADD(store, _("Signed"), CRITERIA_SIGNED); matcher.model_flags = GTK_TREE_MODEL(store); - + store = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_INT, G_TYPE_BOOLEAN); COMBOBOX_ADD(store, _("set"), 0); COMBOBOX_ADD(store, _("not set"), 1); @@ -430,7 +426,7 @@ static void prefs_matcher_models_create(void) COMBOBOX_ADD(store, _("watched"), CRITERIA_WATCH_THREAD); COMBOBOX_ADD(store, _("not watched"), CRITERIA_WATCH_THREAD); matcher.model_thread = GTK_TREE_MODEL(store); - + store = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_INT, G_TYPE_BOOLEAN); COMBOBOX_ADD(store, _("found"), 0); COMBOBOX_ADD(store, _("not found"), 1); @@ -512,7 +508,7 @@ static void prefs_matcher_create(void) GtkWidget *hbox; GtkWidget *upper_filler; GtkWidget *lower_filler; - + GtkWidget *criteria_combo2; GtkWidget *header_entry; GtkWidget *header_addr_combo; @@ -526,7 +522,7 @@ static void prefs_matcher_create(void) GtkWidget *numeric_hbox; GtkWidget *numeric_entry; GtkWidget *numeric_label; - + GtkWidget *regexp_checkbtn; GtkWidget *case_checkbtn; @@ -595,13 +591,13 @@ static void prefs_matcher_create(void) frame = gtk_frame_new(_("Rule")); gtk_frame_set_label_align(GTK_FRAME(frame), 0.01, 0.5); gtk_box_pack_start(GTK_BOX(vbox1), frame, FALSE, FALSE, 0); - + table = gtk_grid_new(); gtk_container_set_border_width(GTK_CONTAINER(table), VSPACING_NARROW); gtk_grid_set_row_spacing(GTK_GRID(table), VSPACING_NARROW_2); gtk_grid_set_column_spacing(GTK_GRID(table), HSPACING_NARROW); gtk_container_add(GTK_CONTAINER(frame), table); - + upper_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, HSPACING_NARROW); hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start(GTK_BOX(hbox), upper_hbox, FALSE, FALSE, 0); @@ -609,7 +605,7 @@ static void prefs_matcher_create(void) gtk_grid_attach(GTK_GRID(table), hbox, 2, 0, 1, 1); gtk_widget_set_hexpand(hbox, TRUE); gtk_widget_set_halign(hbox, GTK_ALIGN_FILL); - + lower_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, HSPACING_NARROW); hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start(GTK_BOX(hbox), lower_hbox, FALSE, FALSE, 0); @@ -621,7 +617,7 @@ static void prefs_matcher_create(void) size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); gtk_size_group_add_widget(size_group, upper_hbox); gtk_size_group_add_widget(size_group, lower_hbox); - + /* criteria combo box */ criteria_label = gtk_label_new(_("Match criteria")); gtk_label_set_xalign(GTK_LABEL(criteria_label), 1.0); @@ -652,13 +648,13 @@ static void prefs_matcher_create(void) g_signal_connect(G_OBJECT(criteria_combo), "changed", G_CALLBACK(prefs_matcher_criteria_select), NULL); - + upper_filler = gtk_label_new(""); - gtk_box_pack_start(GTK_BOX(upper_hbox), upper_filler, TRUE, TRUE, 0); - + gtk_box_pack_start(GTK_BOX(upper_hbox), upper_filler, TRUE, TRUE, 0); + lower_filler = gtk_label_new(""); gtk_box_pack_start(GTK_BOX(lower_hbox), lower_filler, TRUE, TRUE, 0); - + criteria_label2 = gtk_label_new(""); gtk_box_pack_start(GTK_BOX(upper_hbox), criteria_label2, FALSE, FALSE, 0); @@ -685,17 +681,13 @@ static void prefs_matcher_create(void) /* book/folder value */ addressbook_folder_combo = combobox_text_new(TRUE, _("Any"), NULL); gtk_widget_set_size_request(addressbook_folder_combo, 250, -1); - gtk_box_pack_start(GTK_BOX(upper_hbox), addressbook_folder_combo, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(upper_hbox), addressbook_folder_combo, TRUE, TRUE, 0); addressbook_select_btn = gtk_button_new_with_label(_("Select...")); gtk_box_pack_start(GTK_BOX(upper_hbox), addressbook_select_btn, FALSE, FALSE, 0); -#ifndef USE_ALT_ADDRBOOK g_signal_connect(G_OBJECT (addressbook_select_btn), "clicked", G_CALLBACK(prefs_matcher_addressbook_select), NULL); -#else - gtk_widget_set_sensitive(GTK_WIDGET(addressbook_select_btn), FALSE); -#endif match_label = gtk_label_new(""); gtk_label_set_xalign(GTK_LABEL(match_label), 1.0); gtk_grid_attach(GTK_GRID(table), match_label, 0, 1, 1, 1); @@ -707,11 +699,11 @@ static void prefs_matcher_create(void) match_combo = gtkut_sc_combobox_create(NULL, TRUE); gtk_box_pack_start(GTK_BOX(match_hbox), match_combo, TRUE, TRUE, 0); - + /* color labels combo */ color_optmenu = colorlabel_create_combobox_colormenu(); gtk_box_pack_start(GTK_BOX(match_hbox), color_optmenu, FALSE, FALSE, 0); - + /* address header name */ header_addr_combo = combobox_text_new(TRUE, C_("Filtering Matcher Menu", "All"), _("Any"), @@ -719,7 +711,7 @@ static void prefs_matcher_create(void) gtk_box_pack_start(GTK_BOX(match_hbox), header_addr_combo, FALSE, FALSE, 0); header_addr_entry = gtk_bin_get_child(GTK_BIN((header_addr_combo))); gtk_widget_set_size_request(header_addr_combo, 150, -1); - + match_label2 = gtk_label_new(""); gtk_box_pack_start(GTK_BOX(lower_hbox), match_label2, FALSE, FALSE, 0); @@ -730,14 +722,14 @@ static void prefs_matcher_create(void) numeric_entry = gtk_spin_button_new_with_range(0, 1000, 1); gtk_spin_button_set_digits(GTK_SPIN_BUTTON(numeric_entry), 0); gtk_box_pack_start(GTK_BOX(numeric_hbox), numeric_entry, FALSE, FALSE, 0); - + numeric_label = gtk_label_new(""); gtk_box_pack_start(GTK_BOX(numeric_hbox), numeric_label, FALSE, FALSE, 0); gtk_box_pack_end(GTK_BOX(numeric_hbox), gtk_label_new(""), TRUE, TRUE, 0); match_combo2 = gtkut_sc_combobox_create(NULL, TRUE); gtk_box_pack_start(GTK_BOX(lower_hbox), match_combo2, TRUE, TRUE, 0); - + /* string value */ string_entry = gtk_entry_new(); gtk_box_pack_start(GTK_BOX(lower_hbox), string_entry, TRUE, TRUE, 0); @@ -771,7 +763,7 @@ static void prefs_matcher_create(void) gtk_label_set_xalign(GTK_LABEL(time_label),0); gtk_label_set_yalign(GTK_LABEL(time_label),0.5); gtk_box_pack_start(GTK_BOX(date_hbox), time_label, FALSE, FALSE, 0); - + /* test info button */ test_btn = gtkut_stock_button("dialog-information", _("_Information")); gtk_box_pack_start(GTK_BOX(lower_hbox), test_btn, FALSE, FALSE, 0); @@ -817,7 +809,7 @@ static void prefs_matcher_create(void) GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - cond_list_view = prefs_matcher_list_view_create(); + cond_list_view = prefs_matcher_list_view_create(); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(cond_scrolledwin), GTK_SHADOW_ETCHED_IN); gtk_container_add(GTK_CONTAINER(cond_scrolledwin), cond_list_view); @@ -843,7 +835,7 @@ static void prefs_matcher_create(void) gtk_box_pack_start(GTK_BOX(hbox_bool), bool_op_label, FALSE, FALSE, 0); - bool_op_combo = combobox_text_new(FALSE, _("at least one"), + bool_op_combo = combobox_text_new(FALSE, _("at least one"), _("all"), NULL); gtk_box_pack_start(GTK_BOX(hbox_bool), bool_op_combo, FALSE, FALSE, 0); @@ -851,7 +843,7 @@ static void prefs_matcher_create(void) FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox_bool), gtk_label_new(""), TRUE, TRUE, 0); - + if (!geometry.min_height) { geometry.min_width = 630; geometry.min_height = 368; @@ -885,9 +877,7 @@ static void prefs_matcher_create(void) matcher.calendar = calendar; matcher.time_label = time_label; matcher.time_entry = time_entry; -#ifndef USE_ALT_ADDRBOOK matcher.addressbook_select_btn = addressbook_select_btn; -#endif matcher.color_optmenu = color_optmenu; matcher.match_label = match_label; matcher.criteria_label2 = criteria_label2; @@ -896,7 +886,7 @@ static void prefs_matcher_create(void) matcher.match_label2 = match_label2; matcher.upper_filler = upper_filler; matcher.lower_filler = lower_filler; - + matcher.cond_list_view = cond_list_view; matcher.selected_criteria = -1; @@ -918,7 +908,7 @@ static void prefs_matcher_list_view_set_row(GtkTreeIter *row, MatcherProp *prop) if (prop == NULL) { prefs_matcher_list_view_insert_matcher(matcher.cond_list_view, NULL, _("(New)"), FALSE); - return; + return; } matcher_str = matcherprop_to_string(prop); @@ -928,7 +918,7 @@ static void prefs_matcher_list_view_set_row(GtkTreeIter *row, MatcherProp *prop) TRUE); else prefs_matcher_list_view_insert_matcher(matcher.cond_list_view, - row, matcher_str, + row, matcher_str, TRUE); g_free(matcher_str); } @@ -1003,7 +993,7 @@ static void prefs_matcher_set_dialog(MatcherList *matchers) GtkListStore *store = GTK_LIST_STORE(gtk_tree_view_get_model (GTK_TREE_VIEW(matcher.cond_list_view))); - gtk_list_store_clear(store); + gtk_list_store_clear(store); prefs_matcher_list_view_set_row(NULL, NULL); if (matchers != NULL) { @@ -1016,11 +1006,11 @@ static void prefs_matcher_set_dialog(MatcherList *matchers) bool_op = matchers->bool_and; } - + gtk_combo_box_set_active(GTK_COMBO_BOX(matcher.bool_op_combo), bool_op); prefs_matcher_reset_condition(); - + combobox_set_sensitive(GTK_COMBO_BOX(matcher.criteria_combo), MATCH_TAGS, (tags_get_size() > 0) ? TRUE : FALSE); } @@ -1049,12 +1039,12 @@ static MatcherList *prefs_matcher_get_list(void) do { gboolean is_valid; - + gtk_tree_model_get(model, &iter, PREFS_MATCHER_COND, &matcher_str, PREFS_MATCHER_COND_VALID, &is_valid, -1); - + if (is_valid) { /* tmp = matcher_str; */ prop = matcher_parser_get_prop(matcher_str); @@ -1062,7 +1052,7 @@ static MatcherList *prefs_matcher_get_list(void) g_free(matcher_str); break; } - + matcher_list = g_slist_append(matcher_list, prop); } g_free(matcher_str); @@ -1076,7 +1066,7 @@ static MatcherList *prefs_matcher_get_list(void) } /*! - *\brief Maps a keyword id (see #get_matchparser_tab_id) to a + *\brief Maps a keyword id (see #get_matchparser_tab_id) to a * criteria type (see first parameter of #matcherprop_new * or #matcherprop_unquote_new) * @@ -1324,7 +1314,7 @@ static gint prefs_matcher_get_matching_from_criteria(gint criteria_id) *\brief Returns the negate matcher keyword id from a matcher keyword * id. * - *\param matcher_criteria Matcher keyword id. + *\param matcher_criteria Matcher keyword id. * *\return gint A matcher keyword id. See #get_matchparser_tab_id. */ @@ -1405,10 +1395,10 @@ static gint prefs_matcher_get_criteria(void) gint match_criteria = gtk_combo_box_get_active(GTK_COMBO_BOX( matcher.criteria_combo)); const gchar *header = NULL; - + switch (match_criteria) { case MATCH_ABOOK: - return CRITERIA_FOUND_IN_ADDRESSBOOK; + return CRITERIA_FOUND_IN_ADDRESSBOOK; case MATCH_ALL: return CRITERIA_ALL; case MATCH_AGE: @@ -1433,7 +1423,7 @@ static gint prefs_matcher_get_criteria(void) return combobox_get_active_data(GTK_COMBO_BOX( matcher.criteria_combo2)); } - + return -1; } @@ -1477,12 +1467,12 @@ static gint prefs_matcher_get_pred(const gint criteria) case CRITERIA_PARTIAL: return gtk_combo_box_get_active(GTK_COMBO_BOX(matcher.criteria_combo2)); } - + return 0; } /*! - *\brief Converts the text in the selected row to a + *\brief Converts the text in the selected row to a * matcher structure * *\return MatcherProp * Newly allocated matcher structure. @@ -1558,7 +1548,7 @@ static MatcherProp *prefs_matcher_dialog_to_matcher(void) case CRITERIA_BODY_PART: case CRITERIA_MESSAGE: expr = gtk_entry_get_text(GTK_ENTRY(matcher.string_entry)); - + if(*expr == '\0') { alertpanel_error(_("Search pattern is not set.")); return NULL; @@ -1582,7 +1572,7 @@ static MatcherProp *prefs_matcher_dialog_to_matcher(void) case CRITERIA_TEST: expr = gtk_entry_get_text(GTK_ENTRY(matcher.string_entry)); - + if(*expr == '\0') { alertpanel_error(_("Test command is not set.")); return NULL; @@ -1599,18 +1589,18 @@ static MatcherProp *prefs_matcher_dialog_to_matcher(void) else if (sel == AGE_HOURS) { if (value_criteria == CRITERIA_AGE_GREATER) value_criteria = CRITERIA_AGE_GREATER_HOURS; - else + else value_criteria = CRITERIA_AGE_LOWER_HOURS; } break; - + case CRITERIA_SCORE_GREATER: case CRITERIA_SCORE_LOWER: case CRITERIA_SCORE_EQUAL: value = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON( matcher.numeric_entry)); break; - + case CRITERIA_SIZE_GREATER: case CRITERIA_SIZE_SMALLER: case CRITERIA_SIZE_EQUAL: @@ -1622,7 +1612,7 @@ static MatcherProp *prefs_matcher_dialog_to_matcher(void) if(sel == SIZE_UNIT_KBYTES) value *= KB_SIZE; break; - + case CRITERIA_COLORLABEL: value = colorlabel_get_combobox_colormenu_active( GTK_COMBO_BOX(matcher.color_optmenu)); @@ -1636,11 +1626,11 @@ static MatcherProp *prefs_matcher_dialog_to_matcher(void) alertpanel_error(_("Header name is not set.")); return NULL; } - + if(*expr == '\0') { alertpanel_error(_("Search pattern is not set.")); return NULL; - } + } break; case CRITERIA_FOUND_IN_ADDRESSBOOK: @@ -1700,7 +1690,7 @@ static MatcherProp *prefs_matcher_dialog_to_matcher(void) static void prefs_matcher_register_cb(void) { MatcherProp *matcherprop; - + matcherprop = prefs_matcher_dialog_to_matcher(); if (matcherprop == NULL) return; @@ -1708,7 +1698,7 @@ static void prefs_matcher_register_cb(void) prefs_matcher_list_view_set_row(NULL, matcherprop); matcherprop_free(matcherprop); - + prefs_matcher_reset_condition(); } @@ -1725,11 +1715,11 @@ static void prefs_matcher_substitute_cb(void) selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(matcher.cond_list_view)); - + if (!gtk_tree_selection_get_selected(selection, &model, &row)) return; - - gtk_tree_model_get(model, &row, + + gtk_tree_model_get(model, &row, PREFS_MATCHER_COND_VALID, &is_valid, -1); if (!is_valid) @@ -1756,18 +1746,18 @@ static void prefs_matcher_delete_cb(void) selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(matcher.cond_list_view)); - + if (!gtk_tree_selection_get_selected(selection, &model, &row)) return; - - gtk_tree_model_get(model, &row, + + gtk_tree_model_get(model, &row, PREFS_MATCHER_COND_VALID, &is_valid, -1); if (!is_valid) return; - gtk_list_store_remove(GTK_LIST_STORE(model), &row); + gtk_list_store_remove(GTK_LIST_STORE(model), &row); prefs_matcher_reset_condition(); } @@ -1782,18 +1772,18 @@ static void prefs_matcher_up(void) GtkListStore *store = NULL; GtkTreeModel *model = NULL; GtkTreeIter iprev; - + if (!gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW(matcher.cond_list_view)), - &model, + &model, &isel)) return; store = (GtkListStore *)model; sel = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &isel); if (!sel) return; - + /* no move if we're at row 0 or 1, looks phony, but other * solutions are more convoluted... */ try = gtk_tree_path_copy(sel); @@ -1804,7 +1794,7 @@ static void prefs_matcher_up(void) } gtk_tree_path_free(try); - prev = gtk_tree_path_copy(sel); + prev = gtk_tree_path_copy(sel); if (gtk_tree_path_prev(prev)) { gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iprev, prev); @@ -1825,7 +1815,7 @@ static void prefs_matcher_down(void) GtkTreeModel *model = NULL; GtkTreeIter next, sel; GtkTreePath *try; - + if (!gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW(matcher.cond_list_view)), @@ -1834,16 +1824,16 @@ static void prefs_matcher_down(void) return; store = (GtkListStore *)model; try = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &sel); - if (!try) + if (!try) return; - + /* move when not at row 0 ... */ if (gtk_tree_path_prev(try)) { next = sel; if (gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &next)) gtk_list_store_swap(store, &next, &sel); } - + gtk_tree_path_free(try); } @@ -1853,7 +1843,7 @@ static void prefs_matcher_enable_widget(GtkWidget* widget, const gboolean enable if(enable == TRUE) { gtk_widget_set_sensitive(widget, TRUE); - gtk_widget_show(widget); + gtk_widget_show(widget); } else { gtk_widget_set_sensitive(widget, FALSE); gtk_widget_hide(widget); @@ -1864,7 +1854,7 @@ static void prefs_matcher_set_model(GtkWidget *widget, GtkTreeModel *model) { cm_return_if_fail(widget != NULL); cm_return_if_fail(model != NULL); - + gtk_combo_box_set_model(GTK_COMBO_BOX(widget), model); gtk_combo_box_set_active(GTK_COMBO_BOX(widget), 0); } @@ -1876,9 +1866,9 @@ static void prefs_matcher_second_criteria_sel(GtkWidget *widget, matcher.criteria_combo)); gint criteria2 = combobox_get_active_data(GTK_COMBO_BOX( matcher.criteria_combo2)); - + if(criteria != MATCH_PHRASE && criteria != MATCH_TAGS) return; - + if(criteria == MATCH_PHRASE) { switch(criteria2) { case CRITERIA_HEADERS_PART: @@ -1892,14 +1882,14 @@ static void prefs_matcher_second_criteria_sel(GtkWidget *widget, case CRITERIA_BODY_PART: gtk_label_set_text(GTK_LABEL(matcher.match_label), _("Body part")); - break; + break; case CRITERIA_MESSAGE: gtk_label_set_text(GTK_LABEL(matcher.match_label), _("Whole message")); break; } } - + if(criteria == MATCH_TAGS) { if(criteria2 == CRITERIA_TAGGED) { prefs_matcher_enable_widget(matcher.upper_filler, FALSE); @@ -1923,7 +1913,7 @@ static void prefs_matcher_second_criteria_sel(GtkWidget *widget, #define MATCH_COMBO_IS_ENABLED(x) (x != MATCH_ALL && x != MATCH_ABOOK && \ x != MATCH_PARTIAL && x != MATCH_THREAD && x != MATCH_LABEL) ? TRUE : FALSE -#define MATCH_CASE_REGEXP(x) (x == MATCH_HEADER || x == MATCH_PHRASE) ? TRUE : FALSE +#define MATCH_CASE_REGEXP(x) (x == MATCH_HEADER || x == MATCH_PHRASE) ? TRUE : FALSE #define MATCH_NUMERIC(x) (x == MATCH_AGE || x == MATCH_SCORE || \ x == MATCH_SIZE) ? TRUE : FALSE @@ -1931,7 +1921,7 @@ static void prefs_matcher_second_criteria_sel(GtkWidget *widget, *\brief Change widgets depending on the selected condition * *\param criteria combo widget - *\param user_data Not used + *\param user_data Not used */ static void prefs_matcher_criteria_select(GtkWidget *widget, gpointer user_data) @@ -2003,13 +1993,13 @@ static void prefs_matcher_criteria_select(GtkWidget *widget, MATCH_CASE_REGEXP(value)); prefs_matcher_enable_widget(matcher.lower_filler, (value == MATCH_ABOOK)); - + gtk_label_set_text(GTK_LABEL(matcher.match_label), ""); gtk_entry_set_text(GTK_ENTRY(matcher.string_entry), ""); switch(value) { case MATCH_ABOOK: - gtk_combo_box_set_active(GTK_COMBO_BOX(matcher.header_addr_combo), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(matcher.header_addr_combo), 0); gtk_combo_box_set_active(GTK_COMBO_BOX(matcher.addressbook_folder_combo), 0); prefs_matcher_set_model(matcher.match_combo2, matcher.model_found); gtk_label_set_text(GTK_LABEL(matcher.criteria_label2), _("in")); @@ -2062,7 +2052,7 @@ static void prefs_matcher_criteria_select(GtkWidget *widget, gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(matcher.regexp_checkbtn), FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(matcher.case_checkbtn), FALSE); prefs_matcher_second_criteria_sel(NULL, NULL); - break; + break; case MATCH_SCORE: prefs_matcher_set_model(matcher.match_combo, matcher.model_score); gtk_spin_button_set_range(GTK_SPIN_BUTTON( @@ -2070,7 +2060,7 @@ static void prefs_matcher_criteria_select(GtkWidget *widget, gtk_spin_button_set_value(GTK_SPIN_BUTTON(matcher.numeric_entry), 0); gtk_label_set_text(GTK_LABEL(matcher.match_label), _("Score is")); gtk_label_set_text(GTK_LABEL(matcher.numeric_label), _("points")); - break; + break; case MATCH_SIZE: prefs_matcher_set_model(matcher.match_combo, matcher.model_size); prefs_matcher_set_model(matcher.match_combo2, matcher.model_size_units); @@ -2097,7 +2087,7 @@ static void prefs_matcher_criteria_select(GtkWidget *widget, prefs_matcher_set_model(matcher.match_combo, matcher.model_test); gtk_label_set_text(GTK_LABEL(matcher.match_label), _("Program returns")); break; - } + } } /*! @@ -2112,7 +2102,7 @@ static gboolean prefs_matcher_key_pressed(GtkWidget *widget, GdkEventKey *event, { if (event && event->keyval == GDK_KEY_Escape) { prefs_matcher_cancel(); - return TRUE; + return TRUE; } return FALSE; } @@ -2156,7 +2146,7 @@ static void prefs_matcher_ok(void) gtk_tree_model_get(model, &iter, PREFS_MATCHER_COND, &matcher_str, -1); - if (matcher_str && strcmp(matcher_str, str) == 0) + if (matcher_str && strcmp(matcher_str, str) == 0) break; row++; g_free(matcher_str); @@ -2171,7 +2161,7 @@ static void prefs_matcher_ok(void) NULL, NULL, ALERTFOCUS_SECOND); if (G_ALERTDEFAULT != val) { - g_free(matcher_str); + g_free(matcher_str); g_free(str); matcherlist_free(matchers); return; @@ -2208,7 +2198,7 @@ static gint prefs_matcher_deleted(GtkWidget *widget, GdkEventAny *event, /* * Strings describing test format strings - * + * * When adding new lines, remember to put 2 strings for each line */ static gchar *test_desc_strings[] = { @@ -2228,9 +2218,9 @@ static gchar *test_desc_strings[] = { NULL, NULL }; -static DescriptionWindow test_desc_win = { +static DescriptionWindow test_desc_win = { NULL, - NULL, + NULL, TRUE, 2, N_("Match Type: 'Test'"), @@ -2252,7 +2242,6 @@ static void prefs_matcher_test_info(GtkWidget *widget, GtkWidget *parent) description_window_create(&test_desc_win); } -#ifndef USE_ALT_ADDRBOOK static void prefs_matcher_addressbook_select(void) { const gchar *folderpath = NULL; @@ -2263,9 +2252,8 @@ static void prefs_matcher_addressbook_select(void) if (new_path) { gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN((matcher.addressbook_folder_combo)))), new_path); g_free(new_path); - } + } } -#endif /* * list view @@ -2274,7 +2262,7 @@ static void prefs_matcher_addressbook_select(void) static GtkListStore* prefs_matcher_create_data_store(void) { return gtk_list_store_new(N_PREFS_MATCHER_COLUMNS, - G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_BOOLEAN, -1); } @@ -2282,7 +2270,7 @@ static GtkListStore* prefs_matcher_create_data_store(void) static void prefs_matcher_list_view_insert_matcher(GtkWidget *list_view, GtkTreeIter *row_iter, const gchar *matcher, - gboolean is_valid) + gboolean is_valid) { GtkTreeIter iter; GtkListStore *list_store = GTK_LIST_STORE(gtk_tree_view_get_model @@ -2310,10 +2298,10 @@ static GtkWidget *prefs_matcher_list_view_create(void) model = GTK_TREE_MODEL(prefs_matcher_create_data_store()); list_view = GTK_TREE_VIEW(gtk_tree_view_new_with_model(model)); - g_object_unref(model); + g_object_unref(model); gtk_tree_view_set_reorderable(list_view, TRUE); - + selector = gtk_tree_view_get_selection(list_view); gtk_tree_selection_set_mode(selector, GTK_SELECTION_BROWSE); gtk_tree_selection_set_select_function(selector, prefs_matcher_selected, @@ -2336,17 +2324,17 @@ static void prefs_matcher_create_list_view_columns(GtkWidget *list_view) renderer, "text", PREFS_MATCHER_COND, NULL); - gtk_tree_view_append_column(GTK_TREE_VIEW(list_view), column); + gtk_tree_view_append_column(GTK_TREE_VIEW(list_view), column); } static void prefs_matcher_set_criteria(const gint criteria) { gint match_criteria = 0; - + switch (criteria) { case CRITERIA_FOUND_IN_ADDRESSBOOK: match_criteria = MATCH_ABOOK; - break; + break; case CRITERIA_ALL: match_criteria = MATCH_ALL; break; @@ -2418,10 +2406,10 @@ static void prefs_matcher_set_criteria(const gint criteria) match_criteria = MATCH_THREAD; break; } - + gtk_combo_box_set_active(GTK_COMBO_BOX(matcher.criteria_combo), match_criteria); - + switch(match_criteria) { case MATCH_HEADER: if(criteria != CRITERIA_HEADER) @@ -2446,7 +2434,7 @@ static void prefs_matcher_set_criteria(const gint criteria) } static gboolean prefs_matcher_selected(GtkTreeSelection *selector, - GtkTreeModel *model, + GtkTreeModel *model, GtkTreePath *path, gboolean currently_selected, gpointer data) @@ -2466,11 +2454,11 @@ static gboolean prefs_matcher_selected(GtkTreeSelection *selector, if (!gtk_tree_model_get_iter(model, &iter, path)) return TRUE; - gtk_tree_model_get(model, &iter, + gtk_tree_model_get(model, &iter, PREFS_MATCHER_COND_VALID, &is_valid, PREFS_MATCHER_COND, &matcher_str, -1); - + if (!is_valid) { g_free(matcher_str); prefs_matcher_reset_condition(); @@ -2483,7 +2471,7 @@ static gboolean prefs_matcher_selected(GtkTreeSelection *selector, if (prop == NULL) { g_free(matcher_str); return TRUE; - } + } criteria = prefs_matcher_get_criteria_from_matching(prop->criteria); prefs_matcher_set_criteria(criteria); @@ -2524,7 +2512,7 @@ static gboolean prefs_matcher_selected(GtkTreeSelection *selector, negative_cond = TRUE; break; } - + switch(prop->criteria) { case MATCHCRITERIA_ALL: break; @@ -2611,7 +2599,7 @@ static gboolean prefs_matcher_selected(GtkTreeSelection *selector, matcher.numeric_entry), prop->value); } break; - + case MATCHCRITERIA_AGE_GREATER_HOURS: case MATCHCRITERIA_AGE_LOWER_HOURS: gtk_combo_box_set_active(GTK_COMBO_BOX(matcher.match_combo2), @@ -2619,7 +2607,7 @@ static gboolean prefs_matcher_selected(GtkTreeSelection *selector, gtk_spin_button_set_value(GTK_SPIN_BUTTON( matcher.numeric_entry), prop->value); break; - + case MATCHCRITERIA_SCORE_GREATER: case MATCHCRITERIA_SCORE_LOWER: case MATCHCRITERIA_SCORE_EQUAL: @@ -2644,7 +2632,7 @@ static gboolean prefs_matcher_selected(GtkTreeSelection *selector, gtk_combo_box_set_active(GTK_COMBO_BOX(matcher.match_combo2), SIZE_UNIT_BYTES); gtk_spin_button_set_value(GTK_SPIN_BUTTON( - matcher.numeric_entry), prop->value); + matcher.numeric_entry), prop->value); } break; @@ -2708,7 +2696,7 @@ static gboolean prefs_matcher_selected(GtkTreeSelection *selector, gtk_combo_box_set_active(GTK_COMBO_BOX(matcher.criteria_combo2), negative_cond ? THREAD_NOT_IGNORED : THREAD_IGNORED); - break; + break; case CRITERIA_PARTIAL: gtk_combo_box_set_active(GTK_COMBO_BOX(matcher.criteria_combo2), negative_cond ? PREDICATE_FLAG_DISABLED : diff --git a/src/summaryview.c b/src/summaryview.c @@ -59,12 +59,7 @@ #include "colorlabel.h" #include "inc.h" #include "imap.h" -#ifndef USE_ALT_ADDRBOOK - #include "addressbook.h" -#else - #include "addressbook-dbus.h" - #include "addressadd.h" -#endif +#include "addressbook.h" #include "addr_compl.h" #include "folder_item_prefs.h" #include "filtering.h" @@ -4900,13 +4895,7 @@ void summary_add_address(SummaryView *summaryview) if (avatarr->image) picture = gtk_image_get_pixbuf(GTK_IMAGE(avatarr->image)); -#ifndef USE_ALT_ADDRBOOK addressbook_add_contact(msginfo->fromname, from, NULL, picture); -#else - if (addressadd_selection(msginfo->fromname, from, NULL, picture)) { - debug_print( "addressbook_add_contact - added\n" ); - } -#endif avatars_avatarrender_free(avatarr); } diff --git a/src/textview.c b/src/textview.c @@ -48,13 +48,8 @@ #include "html.h" #include "enriched.h" #include "compose.h" -#ifndef USE_ALT_ADDRBOOK - #include "addressbook.h" - #include "addrindex.h" -#else - #include "addressbook-dbus.h" - #include "addressadd.h" -#endif +#include "addressbook.h" +#include "addrindex.h" #include "displayheader.h" #include "account.h" #include "mimeview.h" @@ -85,7 +80,7 @@ static GdkRGBA quote_bgcolors[3] = { static GdkRGBA signature_color = { 0.5, 0.5, 0.5, 1 }; - + static GdkRGBA uri_color = { 0, 0, 0, 1 }; @@ -216,7 +211,7 @@ static gboolean textview_uri_button_pressed (GtkTextTag *tag, static void textview_uri_list_remove_all (GSList *uri_list); -static void textview_toggle_quote (TextView *textview, +static void textview_toggle_quote (TextView *textview, GSList *start_list, ClickableText *uri, gboolean expand_only); @@ -235,14 +230,14 @@ static void copy_mail_to_uri_cb (GtkAction *action, TextView *textview); static void textview_show_tags(TextView *textview); -static GtkActionEntry textview_link_popup_entries[] = +static GtkActionEntry textview_link_popup_entries[] = { {"TextviewPopupLink", NULL, "TextviewPopupLink", NULL, NULL, NULL }, {"TextviewPopupLink/Open", NULL, N_("_Open in web browser"), NULL, NULL, G_CALLBACK(open_uri_cb) }, {"TextviewPopupLink/Copy", NULL, N_("Copy this _link"), NULL, NULL, G_CALLBACK(copy_uri_cb) }, }; -static GtkActionEntry textview_mail_popup_entries[] = +static GtkActionEntry textview_mail_popup_entries[] = { {"TextviewPopupMail", NULL, "TextviewPopupMail", NULL, NULL, NULL }, {"TextviewPopupMail/Compose", NULL, N_("Write _new message"), NULL, NULL, G_CALLBACK(mail_to_uri_cb) }, @@ -361,7 +356,7 @@ TextView *textview_create(void) gtk_widget_show(vbox); - + textview->ui_manager = gtk_ui_manager_new(); textview->link_action_group = cm_menu_create_action_group_full(textview->ui_manager, "TextviewPopupLink", @@ -373,22 +368,22 @@ TextView *textview_create(void) G_N_ELEMENTS(textview_mail_popup_entries), (gpointer)textview); MENUITEM_ADDUI_MANAGER(textview->ui_manager, "/", "Menus", "Menus", GTK_UI_MANAGER_MENUBAR) - MENUITEM_ADDUI_MANAGER(textview->ui_manager, + MENUITEM_ADDUI_MANAGER(textview->ui_manager, "/Menus", "TextviewPopupLink", "TextviewPopupLink", GTK_UI_MANAGER_MENU) - MENUITEM_ADDUI_MANAGER(textview->ui_manager, + MENUITEM_ADDUI_MANAGER(textview->ui_manager, "/Menus", "TextviewPopupMail", "TextviewPopupMail", GTK_UI_MANAGER_MENU) - MENUITEM_ADDUI_MANAGER(textview->ui_manager, + MENUITEM_ADDUI_MANAGER(textview->ui_manager, "/Menus/TextviewPopupLink", "Open", "TextviewPopupLink/Open", GTK_UI_MANAGER_MENUITEM) - MENUITEM_ADDUI_MANAGER(textview->ui_manager, + MENUITEM_ADDUI_MANAGER(textview->ui_manager, "/Menus/TextviewPopupLink", "Copy", "TextviewPopupLink/Copy", GTK_UI_MANAGER_MENUITEM) - MENUITEM_ADDUI_MANAGER(textview->ui_manager, + MENUITEM_ADDUI_MANAGER(textview->ui_manager, "/Menus/TextviewPopupMail", "Compose", "TextviewPopupMail/Compose", GTK_UI_MANAGER_MENUITEM) - MENUITEM_ADDUI_MANAGER(textview->ui_manager, + MENUITEM_ADDUI_MANAGER(textview->ui_manager, "/Menus/TextviewPopupMail", "ReplyTo", "TextviewPopupMail/ReplyTo", GTK_UI_MANAGER_MENUITEM) - MENUITEM_ADDUI_MANAGER(textview->ui_manager, + MENUITEM_ADDUI_MANAGER(textview->ui_manager, "/Menus/TextviewPopupMail", "AddAB", "TextviewPopupMail/AddAB", GTK_UI_MANAGER_MENUITEM) - MENUITEM_ADDUI_MANAGER(textview->ui_manager, + MENUITEM_ADDUI_MANAGER(textview->ui_manager, "/Menus/TextviewPopupMail", "Copy", "TextviewPopupMail/Copy", GTK_UI_MANAGER_MENUITEM) textview->link_popup_menu = gtk_menu_item_get_submenu(GTK_MENU_ITEM( @@ -411,7 +406,7 @@ static void textview_create_tags(GtkTextView *text, TextView *textview) GtkTextBuffer *buffer; GtkTextTag *tag, *qtag; static PangoFontDescription *font_desc, *bold_font_desc; - + if (!font_desc) font_desc = pango_font_description_from_string (NORMAL_FONT); @@ -655,7 +650,7 @@ static void textview_add_part(TextView *textview, MimeInfo *mimeinfo) buffer = gtk_text_view_get_buffer(text); charcount = gtk_text_buffer_get_char_count(buffer); gtk_text_buffer_get_end_iter(buffer, &iter); - + if (textview->stop_loading) { return; } @@ -687,7 +682,7 @@ static void textview_add_part(TextView *textview, MimeInfo *mimeinfo) if (headers) { if (charcount > 0) gtk_text_buffer_insert(buffer, &iter, "\n", 1); - + if (procmime_mimeinfo_parent(mimeinfo) == NULL && !prefs_common.display_header_pane) textview_show_tags(textview); @@ -711,10 +706,10 @@ static void textview_add_part(TextView *textview, MimeInfo *mimeinfo) g_snprintf(buf, sizeof(buf), _("[%s (%ld bytes)]"), content_type, mimeinfo->length); - g_free(content_type); + g_free(content_type); if (mimeinfo->disposition == DISPOSITIONTYPE_ATTACHMENT - || (mimeinfo->disposition == DISPOSITIONTYPE_INLINE && + || (mimeinfo->disposition == DISPOSITIONTYPE_INLINE && mimeinfo->type != MIMETYPE_TEXT)) { gtk_text_buffer_insert(buffer, &iter, "\n", 1); TEXTVIEW_INSERT_LINK(buf, "cm://select_attachment", mimeinfo); @@ -802,11 +797,11 @@ static void recursive_add_parts(TextView *textview, GNode *node) START_TIMING(""); mimeinfo = (MimeInfo *) node->data; - + textview_add_part(textview, mimeinfo); #ifdef GENERIC_UMPC textview_set_position(textview, 0); -#endif +#endif if ((mimeinfo->type != MIMETYPE_MULTIPART) && (mimeinfo->type != MIMETYPE_MESSAGE)) { END_TIMING(); @@ -833,7 +828,7 @@ static void recursive_add_parts(TextView *textview, GNode *node) submime = (MimeInfo *) iter->data; if (submime->type == MIMETYPE_TEXT) score = 2; - + if (submime->subtype != NULL) { if (g_ascii_strcasecmp(submime->subtype, "plain") == 0) score = 3; @@ -948,7 +943,7 @@ void textview_show_mime_part(TextView *textview, MimeInfo *partinfo) TEXTVIEW_INSERT(", "); TEXTVIEW_INSERT(to_human_readable((goffset)partinfo->length)); TEXTVIEW_INSERT("):\n\n"); - + g_free(content_type); } TEXTVIEW_INSERT(_(" The following can be performed on this part\n")); @@ -1041,7 +1036,7 @@ static void textview_write_body(TextView *textview, MimeInfo *mimeinfo) conv = conv_code_converter_new(charset); procmime_force_encoding(textview->messageview->forced_encoding); - + textview->is_in_signature = FALSE; textview->is_diff = FALSE; textview->is_attachment = FALSE; @@ -1059,7 +1054,7 @@ static void textview_write_body(TextView *textview, MimeInfo *mimeinfo) || ((folder_item && folder_item->prefs && folder_item->prefs->render_html == HTML_RENDER_DEFAULT) && prefs_common.render_html))) { gchar *filename; - + filename = procmime_get_tmp_file_name(mimeinfo); if (procmime_get_part(filename, mimeinfo) == 0) { tmpfp = claws_fopen(filename, "rb"); @@ -1072,7 +1067,7 @@ static void textview_write_body(TextView *textview, MimeInfo *mimeinfo) g_free(filename); } else if (!g_ascii_strcasecmp(mimeinfo->subtype, "enriched")) { gchar *filename; - + filename = procmime_get_tmp_file_name(mimeinfo); if (procmime_get_part(filename, mimeinfo) == 0) { tmpfp = claws_fopen(filename, "rb"); @@ -1132,7 +1127,7 @@ static void textview_write_body(TextView *textview, MimeInfo *mimeinfo) tmpfp = claws_fdopen(pfd[0], "rb"); while (claws_fgets(buf, sizeof(buf), tmpfp)) { textview_write_line(textview, buf, conv, TRUE); - + if (textview->stop_loading) { claws_fclose(tmpfp); waitpid(pid, pfd, 0); @@ -1191,7 +1186,7 @@ textview_default: return; } wrote += ftell(tmpfp)-i; - if (mimeinfo->length > 1024*1024 + if (mimeinfo->length > 1024*1024 && wrote > 1024*1024 && !textview->messageview->show_full_text) { continue_write = FALSE; @@ -1218,10 +1213,10 @@ textview_default: } } } - + if (continue_write == FALSE) { messageview_show_partial_display( - textview->messageview, + textview->messageview, textview->messageview->msginfo, mimeinfo->length); } @@ -1249,12 +1244,12 @@ static void textview_show_html(TextView *textview, FILE *fp, str = strtok(str, " "); if (str) { while (str && *str && g_ascii_isspace(*str)) - str++; + str++; parser->href = g_strdup(str); /* the URL may (or not) be followed by the * referenced text */ str = strtok(NULL, ""); - } + } } if (str != NULL) textview_write_link(textview, str, parser->href, NULL); @@ -1299,7 +1294,7 @@ static void textview_show_ertf(TextView *textview, FILE *fp, return; } } - + account_sigsep_matchlist_delete(); ertf_parser_destroy(parser); @@ -1338,7 +1333,7 @@ static void textview_make_clickable_parts(TextView *textview, GtkTextBuffer *buffer = gtk_text_view_get_buffer(text); GtkTextIter iter; gchar *mybuf = g_strdup(linebuf); - + /* parse table - in order of priority */ struct table { const gchar *needle; /* token */ @@ -1404,7 +1399,7 @@ static void textview_make_clickable_parts(TextView *textview, scanpos = tmp; last_index = n; } - } + } } if (scanpos) { @@ -1527,7 +1522,7 @@ static void textview_make_clickable_parts_later(TextView *textview, scanpos = tmp; last_index = n; } - } + } } if (scanpos) { @@ -1554,23 +1549,23 @@ static void textview_make_clickable_parts_later(TextView *textview, uri = g_new0(ClickableText, 1); uri->uri = parser[last->pti].build_uri(last->bp, last->ep); - + tmp_str = mybuf; old_char = tmp_str[last->ep - mybuf]; - tmp_str[last->ep - mybuf] = '\0'; + tmp_str[last->ep - mybuf] = '\0'; end_offset = g_utf8_strlen(tmp_str, -1); tmp_str[last->ep - mybuf] = old_char; - + old_char = tmp_str[last->bp - mybuf]; - tmp_str[last->bp - mybuf] = '\0'; + tmp_str[last->bp - mybuf] = '\0'; start_offset = g_utf8_strlen(tmp_str, -1); tmp_str[last->bp - mybuf] = old_char; - + gtk_text_buffer_get_iter_at_offset(buffer, &start_iter, start_offset + offset); gtk_text_buffer_get_iter_at_offset(buffer, &end_iter, end_offset + offset); - + uri->start = gtk_text_iter_get_offset(&start_iter); - + gtk_text_buffer_apply_tag_by_name(buffer, "link", &start_iter, &end_iter); uri->end = gtk_text_iter_get_offset(&end_iter); @@ -1578,7 +1573,7 @@ static void textview_make_clickable_parts_later(TextView *textview, textview->uri_list = g_slist_prepend(textview->uri_list, uri); } - } + } g_free(mybuf); } @@ -1604,7 +1599,7 @@ static void textview_write_line(TextView *textview, const gchar *str, strncpy2(buf, str, sizeof(buf)); else if (conv_convert(conv, buf, sizeof(buf), str) < 0) conv_localetodisp(buf, sizeof(buf), str); - + strcrchomp(buf); fg_color = NULL; @@ -1689,24 +1684,24 @@ do_quote: "qlink", fg_color, NULL); uri->end = gtk_text_iter_get_offset(&iter); gtk_text_buffer_insert(buffer, &iter, " \n", -1); - + uri->filename = NULL; textview->uri_list = g_slist_prepend(textview->uri_list, uri); - + textview->prev_quote_level = real_quotelevel; } else { GSList *last = textview->uri_list; ClickableText *lasturi = NULL; gint e_len = 0, n_len = 0; - + if (textview->uri_list) { lasturi = (ClickableText *)last->data; } else { g_print("oops (%d %d)\n", real_quotelevel, textview->prev_quote_level); - } - if (lasturi) { + } + if (lasturi) { if (lasturi->is_quote == FALSE) { textview->prev_quote_level = -1; goto do_quote; @@ -1742,7 +1737,7 @@ void textview_write_link(TextView *textview, const gchar *str, while (uri && *uri && g_ascii_isspace(*uri)) uri++; - + text = GTK_TEXT_VIEW(textview->text); buffer = gtk_text_view_get_buffer(text); gtk_text_buffer_get_end_iter(buffer, &iter); @@ -1804,7 +1799,7 @@ void textview_clear(TextView *textview) textview->prev_quote_level = -1; textview->body_pos = 0; - if (textview->image) + if (textview->image) gtk_widget_destroy(textview->image); textview->image = NULL; textview->avatar_type = 0; @@ -2001,10 +1996,10 @@ static void textview_show_avatar(TextView *textview) MsgInfo *msginfo = textview->messageview->msginfo; gint x, wx, wy; AvatarRender *avatarr; - + if (prefs_common.display_header_pane || !prefs_common.display_xface) goto bail; - + avatarr = avatars_avatarrender_new(msginfo); hooks_invoke(AVATAR_IMAGE_RENDER_HOOKLIST, avatarr); @@ -2013,9 +2008,9 @@ static void textview_show_avatar(TextView *textview) goto bail; } - if (textview->image) + if (textview->image) gtk_widget_destroy(textview->image); - + textview->image = avatarr->image; textview->avatar_type = avatarr->type; avatarr->image = NULL; /* avoid destroying */ @@ -2023,7 +2018,7 @@ static void textview_show_avatar(TextView *textview) gtk_widget_set_name(GTK_WIDGET(textview->image), "textview_avatar"); gtk_widget_show(textview->image); - + gtk_widget_get_allocation(textview->text, &allocation); x = allocation.width - WIDTH - 5; @@ -2031,16 +2026,16 @@ static void textview_show_avatar(TextView *textview) GTK_TEXT_VIEW(textview->text), GTK_TEXT_WINDOW_TEXT, x, 5, &wx, &wy); - gtk_text_view_add_child_in_window(text, textview->image, + gtk_text_view_add_child_in_window(text, textview->image, GTK_TEXT_WINDOW_TEXT, wx, wy); gtk_widget_show_all(textview->text); return; bail: - if (textview->image) + if (textview->image) gtk_widget_destroy(textview->image); - textview->image = NULL; + textview->image = NULL; textview->avatar_type = 0; } @@ -2050,10 +2045,10 @@ void textview_show_icon(TextView *textview, const gchar *stock_id) GtkTextView *text = GTK_TEXT_VIEW(textview->text); gint x, wx, wy; gchar *img_sym = NULL; - - if (textview->image) + + if (textview->image) gtk_widget_destroy(textview->image); - + img_sym = g_strconcat(stock_id, "-symbolic", NULL); textview->image = gtk_image_new_from_icon_name(img_sym, GTK_ICON_SIZE_DIALOG); g_free(img_sym); @@ -2061,7 +2056,7 @@ void textview_show_icon(TextView *textview, const gchar *stock_id) gtk_widget_set_name(GTK_WIDGET(textview->image), "textview_icon"); gtk_widget_show(textview->image); - + gtk_widget_get_allocation(textview->text, &allocation); x = allocation.width - WIDTH - 5; @@ -2069,18 +2064,17 @@ void textview_show_icon(TextView *textview, const gchar *stock_id) GTK_TEXT_VIEW(textview->text), GTK_TEXT_WINDOW_TEXT, x, 5, &wx, &wy); - gtk_text_view_add_child_in_window(text, textview->image, + gtk_text_view_add_child_in_window(text, textview->image, GTK_TEXT_WINDOW_TEXT, wx, wy); gtk_widget_show_all(textview->text); - + return; } static void textview_save_contact_pic(TextView *textview) { -#ifndef USE_ALT_ADDRBOOK MsgInfo *msginfo = textview->messageview->msginfo; gchar *filename = NULL; GError *error = NULL; @@ -2092,7 +2086,7 @@ static void textview_save_contact_pic(TextView *textview) if (textview->avatar_type > AVATAR_FACE) return; - if (textview->image) + if (textview->image) picture = gtk_image_get_pixbuf(GTK_IMAGE(textview->image)); filename = addrindex_get_picture_file(msginfo->from); @@ -2107,14 +2101,10 @@ static void textview_save_contact_pic(TextView *textview) } } g_free(filename); -#else - /* new address book */ -#endif } static void textview_show_contact_pic(TextView *textview) { -#ifndef USE_ALT_ADDRBOOK MsgInfo *msginfo = textview->messageview->msginfo; GtkTextView *text = GTK_TEXT_VIEW(textview->text); gint x, wx, wy; @@ -2127,15 +2117,15 @@ static void textview_show_contact_pic(TextView *textview) if (prefs_common.display_header_pane || !prefs_common.display_xface) goto bail; - + if (msginfo->extradata && msginfo->extradata->avatars) return; - if (textview->image) + if (textview->image) gtk_widget_destroy(textview->image); filename = addrindex_get_picture_file(msginfo->from); - + if (!filename) goto bail; if (!is_file_exist(filename)) { @@ -2144,9 +2134,9 @@ static void textview_show_contact_pic(TextView *textview) } gdk_pixbuf_get_file_info(filename, &w, &h); - + if (w > 48 || h > 48) - picture = gdk_pixbuf_new_from_file_at_scale(filename, + picture = gdk_pixbuf_new_from_file_at_scale(filename, 48, 48, TRUE, &error); else picture = gdk_pixbuf_new_from_file(filename, &error); @@ -2167,7 +2157,7 @@ static void textview_show_contact_pic(TextView *textview) gtk_widget_set_name(GTK_WIDGET(textview->image), "textview_contact_pic"); gtk_widget_show(textview->image); - + gtk_widget_get_allocation(textview->text, &allocation); x = allocation.width - WIDTH - 5; @@ -2175,20 +2165,17 @@ static void textview_show_contact_pic(TextView *textview) GTK_TEXT_VIEW(textview->text), GTK_TEXT_WINDOW_TEXT, x, 5, &wx, &wy); - gtk_text_view_add_child_in_window(text, textview->image, + gtk_text_view_add_child_in_window(text, textview->image, GTK_TEXT_WINDOW_TEXT, wx, wy); gtk_widget_show_all(textview->text); - + return; bail: - if (textview->image) + if (textview->image) gtk_widget_destroy(textview->image); textview->image = NULL; textview->avatar_type = 0; -#else - /* new address book */ -#endif } static gint textview_tag_cmp_list(gconstpointer a, gconstpointer b) @@ -2197,10 +2184,10 @@ static gint textview_tag_cmp_list(gconstpointer a, gconstpointer b) gint id_b = GPOINTER_TO_INT(b); const gchar *tag_a = tags_get_tag(id_a); const gchar *tag_b = tags_get_tag(id_b); - + if (tag_a == NULL) return tag_b == NULL ? 0:1; - + if (tag_b == NULL) return 1; @@ -2217,10 +2204,10 @@ static void textview_show_tags(TextView *textview) ClickableText *uri; GSList *cur, *orig; gboolean found_tag = FALSE; - + if (!msginfo->tags) return; - + cur = orig = g_slist_sort(g_slist_copy(msginfo->tags), textview_tag_cmp_list); for (; cur; cur = cur->next) { @@ -2246,7 +2233,7 @@ static void textview_show_tags(TextView *textview) uri = g_new0(ClickableText, 1); uri->uri = g_strdup(""); uri->start = gtk_text_iter_get_offset(&iter); - gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, + gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, cur_tag, -1, "link", "header", "tags", NULL); uri->end = gtk_text_iter_get_offset(&iter); @@ -2311,11 +2298,11 @@ static void textview_show_header(TextView *textview, GPtrArray *headers) procheader_headername_equal(header->name, "Resent-From") || procheader_headername_equal(header->name, "Resent-To")) unfold_line(header->body); - + if (procheader_headername_equal(header->name, "Date") && prefs_common.msgview_date_format) { gchar hbody[80]; - + procheader_date_parse(hbody, header->body, sizeof(hbody)); gtk_text_buffer_get_end_iter (buffer, &iter); gtk_text_buffer_insert_with_tags_by_name @@ -2330,7 +2317,7 @@ static void textview_show_header(TextView *textview, GPtrArray *headers) (buffer, &iter, header->body, -1, "header", "emphasis", NULL); } else { - gboolean hdr = + gboolean hdr = procheader_headername_equal(header->name, "From") || procheader_headername_equal(header->name, "To") || procheader_headername_equal(header->name, "Cc") || @@ -2339,15 +2326,15 @@ static void textview_show_header(TextView *textview, GPtrArray *headers) procheader_headername_equal(header->name, "Sender") || procheader_headername_equal(header->name, "Resent-From") || procheader_headername_equal(header->name, "Resent-To"); - textview_make_clickable_parts(textview, "header", - "hlink", header->body, + textview_make_clickable_parts(textview, "header", + "hlink", header->body, hdr); } gtk_text_buffer_get_end_iter (buffer, &iter); gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, "\n", 1, "header", NULL); } - + textview_show_avatar(textview); if (prefs_common.save_xface) textview_save_contact_pic(textview); @@ -2390,12 +2377,12 @@ void textview_scroll_max(TextView *textview, gboolean up) { GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview->text)); GtkTextIter iter; - + if (up) { gtk_text_buffer_get_start_iter(buffer, &iter); gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(textview->text), &iter, 0.0, TRUE, 0.0, 1.0); - + } else { gtk_text_buffer_get_end_iter(buffer, &iter); gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(textview->text), @@ -2518,7 +2505,7 @@ static gboolean textview_visibility_notify(GtkWidget *widget, /* check if occurred for the text window part */ if (window != event->window) return FALSE; - + display = gdk_window_get_display(window); seat = gdk_display_get_default_seat(display); gdk_device_get_position(gdk_seat_get_pointer(seat), @@ -2549,7 +2536,7 @@ static void textview_uri_update(TextView *textview, gint x, gint y) GtkTextBuffer *buffer; GtkTextIter start_iter, end_iter; ClickableText *uri = NULL; - + buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview->text)); if (x != -1 && y != -1) { @@ -2557,8 +2544,8 @@ static void textview_uri_update(TextView *textview, gint x, gint y) GtkTextIter iter; GSList *tags; GSList *cur; - - gtk_text_view_window_to_buffer_coords(GTK_TEXT_VIEW(textview->text), + + gtk_text_view_window_to_buffer_coords(GTK_TEXT_VIEW(textview->text), GTK_TEXT_WINDOW_WIDGET, x, y, &bx, &by); gtk_text_view_get_iter_at_location(GTK_TEXT_VIEW(textview->text), @@ -2586,7 +2573,7 @@ static void textview_uri_update(TextView *textview, gint x, gint y) } g_slist_free(tags); } - + if (uri != textview->uri_hover) { GdkWindow *window; @@ -2595,13 +2582,13 @@ static void textview_uri_update(TextView *textview, gint x, gint y) "link-hover", &textview->uri_hover_start_iter, &textview->uri_hover_end_iter); - + textview->uri_hover = uri; if (uri) { textview->uri_hover_start_iter = start_iter; textview->uri_hover_end_iter = end_iter; } - + window = gtk_text_view_get_window(GTK_TEXT_VIEW(textview->text), GTK_TEXT_WINDOW_TEXT); if (textview->messageview->mainwin->cursor_count == 0) { @@ -2697,7 +2684,7 @@ static void textview_zoom_reset(GtkWidget *widget, gpointer data) font = pango_context_get_font_description(pctx); /* reset and save the value for current session */ - if (textview_font_size_default == TEXTVIEW_FONT_SIZE_UNSET || textview_font_size_percent == TEXTVIEW_FONT_SIZE_UNSET) + if (textview_font_size_default == TEXTVIEW_FONT_SIZE_UNSET || textview_font_size_percent == TEXTVIEW_FONT_SIZE_UNSET) return; textview_font_size_percent = 0; @@ -2713,7 +2700,7 @@ static void textview_populate_popup(GtkTextView* textview, gpointer user_data) { GtkWidget *menuitem; - + cm_return_if_fail(menu != NULL); cm_return_if_fail(GTK_IS_MENU_SHELL(menu)); @@ -2809,7 +2796,7 @@ static ClickableText *textview_get_uri_from_range(TextView *textview, end_pos == uri_->end) { uri = uri_; break; - } + } } for (cur = textview->uri_list; uri == NULL && cur != NULL; cur = cur->next) { ClickableText *uri_ = (ClickableText *)cur->data; @@ -2825,7 +2812,7 @@ static ClickableText *textview_get_uri_from_range(TextView *textview, uri = uri_; break; } - } + } } return uri; @@ -2873,14 +2860,14 @@ static void textview_remove_uris_in(TextView *textview, gint start, gint end) g_free(uri->filename); if (uri->is_quote) { g_free(uri->fg_color); - g_free(uri->data); + g_free(uri->data); /* (only free data in quotes uris) */ } g_free(uri); } else { cur = cur->next; } - + } } @@ -2888,10 +2875,10 @@ static void textview_toggle_quote(TextView *textview, GSList *start_list, Clicka { GtkTextIter start, end; GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview->text)); - + if (!uri->is_quote) return; - + if (uri->q_expanded && expand_only) return; @@ -2908,18 +2895,18 @@ static void textview_toggle_quote(TextView *textview, GSList *start_list, Clicka &start, &end); /* when shifting URIs start and end, we have to do it per-UTF8-char - * so use g_utf8_strlen(). OTOH, when inserting in the text buffer, + * so use g_utf8_strlen(). OTOH, when inserting in the text buffer, * we have to pass a number of bytes, so use strlen(). disturbing. */ - + if (!uri->q_expanded) { gtk_text_buffer_get_iter_at_offset(buffer, &start, uri->start); gtk_text_buffer_get_iter_at_offset(buffer, &end, uri->end); - textview_shift_uris_after(textview, start_list, uri->start, + textview_shift_uris_after(textview, start_list, uri->start, g_utf8_strlen((gchar *)uri->data, -1)-strlen(" [...]\n")); gtk_text_buffer_delete(buffer, &start, &end); gtk_text_buffer_get_iter_at_offset(buffer, &start, uri->start); gtk_text_buffer_insert_with_tags_by_name - (buffer, &start, (gchar *)uri->data, + (buffer, &start, (gchar *)uri->data, strlen((gchar *)uri->data)-1, "qlink", (gchar *)uri->fg_color, NULL); uri->end = gtk_text_iter_get_offset(&start); @@ -2930,7 +2917,7 @@ static void textview_toggle_quote(TextView *textview, GSList *start_list, Clicka gtk_text_buffer_get_iter_at_offset(buffer, &start, uri->start); gtk_text_buffer_get_iter_at_offset(buffer, &end, uri->end); textview_remove_uris_in(textview, uri->start, uri->end); - textview_shift_uris_after(textview, start_list, uri->start, + textview_shift_uris_after(textview, start_list, uri->start, strlen(" [...]\n")-g_utf8_strlen((gchar *)uri->data, -1)); gtk_text_buffer_delete(buffer, &start, &end); gtk_text_buffer_get_iter_at_offset(buffer, &start, uri->start); @@ -2967,14 +2954,14 @@ static gboolean textview_uri_button_pressed(GtkTextTag *tag, GObject *obj, return FALSE; g_object_get(G_OBJECT(tag), "name", &tagname, NULL); - + if (!strcmp(tagname, "qlink")) qlink = TRUE; g_free(tagname); - + bevent = (GdkEventButton *) event; - + /* doubleclick: open compose / add address / browser */ if (qlink && event->type == GDK_BUTTON_PRESS && bevent->button != 1) { /* pass rightclick through */ @@ -2982,18 +2969,18 @@ static gboolean textview_uri_button_pressed(GtkTextTag *tag, GObject *obj, } else if ((event->type == (qlink ? GDK_2BUTTON_PRESS:GDK_BUTTON_PRESS) && bevent->button == 1) || bevent->button == 2 || bevent->button == 3) { if (uri->filename && !g_ascii_strncasecmp(uri->filename, "cm://", 5)) { - MimeView *mimeview = + MimeView *mimeview = (textview->messageview)? textview->messageview->mimeview:NULL; if (mimeview && bevent->button == 1) { mimeview_handle_cmd(mimeview, uri->filename, NULL, uri->data); - } else if (mimeview && bevent->button == 2 && + } else if (mimeview && bevent->button == 2 && !g_ascii_strcasecmp(uri->filename, "cm://select_attachment")) { mimeview_handle_cmd(mimeview, "cm://open_attachment", NULL, uri->data); - } else if (mimeview && bevent->button == 3 && + } else if (mimeview && bevent->button == 3 && !g_ascii_strcasecmp(uri->filename, "cm://select_attachment")) { mimeview_handle_cmd(mimeview, "cm://menu_attachment", bevent, uri->data); - } + } return TRUE; } else if (qlink && bevent->button == 1) { if (prefs_common.hide_quoted) { @@ -3011,10 +2998,10 @@ static gboolean textview_uri_button_pressed(GtkTextTag *tag, GObject *obj, PrefsAccount *account = NULL; FolderItem *folder_item = NULL; Compose *compose; - + if (textview->messageview && textview->messageview->msginfo && textview->messageview->msginfo->folder) { - + folder_item = textview->messageview->msginfo->folder; if (folder_item->prefs && folder_item->prefs->enable_default_account) @@ -3029,7 +3016,7 @@ static gboolean textview_uri_button_pressed(GtkTextTag *tag, GObject *obj, return TRUE; } else if (g_ascii_strncasecmp(uri->uri, "file:", 5)) { if (bevent->button == 1 && - textview_uri_security_check(textview, uri, FALSE) == TRUE) + textview_uri_security_check(textview, uri, FALSE) == TRUE) open_uri(uri->uri, prefs_common_get_uri_cmd()); else if (bevent->button == 3 && !qlink) { @@ -3053,7 +3040,7 @@ static gboolean textview_uri_button_pressed(GtkTextTag *tag, GObject *obj, return FALSE; } -gchar *textview_get_visible_uri (TextView *textview, +gchar *textview_get_visible_uri (TextView *textview, ClickableText *uri) { GtkTextBuffer *buffer; @@ -3076,7 +3063,7 @@ gchar *textview_get_visible_uri (TextView *textview, *\param textview The TextView the URL is contained in * *\return gboolean TRUE if the URL is ok, or if the user chose to open - * it anyway, otherwise FALSE + * it anyway, otherwise FALSE */ gboolean textview_uri_security_check(TextView *textview, ClickableText *uri, gboolean copied) { @@ -3107,7 +3094,7 @@ gboolean textview_uri_security_check(TextView *textview, ClickableText *uri, gbo gchar *open_or_cp_btn; gchar *msg; AlertValue aval; - + open_or_cp = copied? _("Copy it anyway?") : _("Open it anyway?"); open_or_cp_btn = copied? _("Co_py URL") : _("_Open URL"); @@ -3144,7 +3131,7 @@ static void textview_uri_list_remove_all(GSList *uri_list) g_free(((ClickableText *)cur->data)->filename); if (((ClickableText *)cur->data)->is_quote) { g_free(((ClickableText *)cur->data)->fg_color); - g_free(((ClickableText *)cur->data)->data); + g_free(((ClickableText *)cur->data)->data); /* (only free data in quotes uris) */ } g_free(cur->data); @@ -3162,7 +3149,7 @@ static void open_uri_cb (GtkAction *action, TextView *textview) "raw_url"); if (uri) { - if (textview_uri_security_check(textview, uri, FALSE) == TRUE) + if (textview_uri_security_check(textview, uri, FALSE) == TRUE) open_uri(uri->uri, prefs_common_get_uri_cmd()); g_object_set_data(G_OBJECT(textview->link_popup_menu), "menu_button", @@ -3209,7 +3196,7 @@ static void add_uri_to_addrbook_cb (GtkAction *action, TextView *textview) /* extract url */ fromaddress = g_strdup(uri->uri + 7); - + if (textview->messageview->msginfo && !g_strcmp0(fromaddress, textview->messageview->msginfo->from)) use_picture = TRUE; @@ -3229,13 +3216,7 @@ static void add_uri_to_addrbook_cb (GtkAction *action, TextView *textview) avatars_avatarrender_free(avatarr); } -#ifndef USE_ALT_ADDRBOOK addressbook_add_contact( fromname, fromaddress, NULL, picture); -#else - if (addressadd_selection(fromname, fromaddress, NULL, picture)) { - debug_print( "addressbook_add_contact - added\n" ); - } -#endif g_free(fromaddress); g_free(fromname); @@ -3268,7 +3249,7 @@ static void mail_to_uri_cb (GtkAction *action, TextView *textview) folder_item = textview->messageview->msginfo->folder; if (folder_item->prefs && folder_item->prefs->enable_default_account) account = account_find_from_id(folder_item->prefs->default_account); - + compose = compose_new_with_folderitem(account, folder_item, uri->uri+7); } else { compose = compose_new(account, uri->uri + 7, NULL); diff --git a/src/toolbar.c b/src/toolbar.c @@ -54,11 +54,7 @@ #include "imap.h" #include "account.h" #include "send_message.h" -#ifndef USE_ALT_ADDRBOOK - #include "addressbook.h" -#else - #include "addressbook-dbus.h" -#endif +#include "addressbook.h" /* elements */ #define TOOLBAR_TAG_INDEX "toolbar" @@ -1420,17 +1416,7 @@ static void toolbar_addrbook_cb(GtkWidget *widget, gpointer data) default: return; } -#ifndef USE_ALT_ADDRBOOK addressbook_open(compose); -#else - GError* error = NULL; - addressbook_connect_signals(compose); - addressbook_dbus_open(TRUE, &error); - if (error) { - g_warning("%s", error->message); - g_error_free(error); - } -#endif }