Use address book when showing sender name in summary pane (toggleable on/off).
authorDarko Koruga <darko@users.sourceforge.net>
Mon, 7 May 2001 07:27:24 +0000 (07:27 +0000)
committerDarko Koruga <darko@users.sourceforge.net>
Mon, 7 May 2001 07:27:24 +0000 (07:27 +0000)
ChangeLog.claws
src/prefs_common.c
src/prefs_common.h
src/summaryview.c

index 253118212e5380d94a5f251730ed810ad2c5621e..7959acf5f390798f1b10273bc4ae2af5ee8b3729 100644 (file)
@@ -1,3 +1,10 @@
+2001-05-07 [darko]
+
+       * src/prefs_common.[ch]: added option to enable/disable
+         looking up sender name in address book for summary pane
+       * src/summaryview.c: look up sender in the address book
+         by using Alfons' address completion code
+
 2001-05-07 [hiroyuki]
 
        * src/inc.h
index 6a8cd6ca05e4443a034bf1cf5755e8063cb88573..44ea1af83bc9288cfd1c47825e3b4455b1a94d64 100644 (file)
@@ -107,6 +107,7 @@ static struct Display {
 
        GtkWidget *chkbtn_swapfrom;
        GtkWidget *chkbtn_hscrollbar;
+       GtkWidget *chkbtn_useaddrbook;
 } display;
 
 static struct Message {
@@ -291,6 +292,9 @@ static PrefParam param[] = {
        {"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
         &display.chkbtn_hscrollbar,
         prefs_set_data_from_toggle, prefs_set_toggle},
+       {"use_address_book", "TRUE", &prefs_common.use_addr_book, P_BOOL,
+        &display.chkbtn_useaddrbook,
+        prefs_set_data_from_toggle, prefs_set_toggle},
        {"date_format", "%y/%m/%d(%a) %H:%M", &prefs_common.date_format,
         P_STRING, &entry_datefmt,
         prefs_set_data_from_entry, prefs_set_entry},
@@ -1310,6 +1314,7 @@ static void prefs_display_create(void)
        GtkWidget *vbox2;
        GtkWidget *chkbtn_swapfrom;
        GtkWidget *chkbtn_hscrollbar;
+       GtkWidget *chkbtn_useaddrbook;
        GtkWidget *hbox1;
        GtkWidget *label_datefmt;
        GtkWidget *button_dispitem;
@@ -1368,6 +1373,9 @@ static void prefs_display_create(void)
        PACK_CHECK_BUTTON
                (vbox2, chkbtn_swapfrom,
                 _("Display recipient on `From' column if sender is yourself"));
+       PACK_CHECK_BUTTON
+               (vbox2, chkbtn_useaddrbook,
+                _("Display sender using address book"));
        PACK_CHECK_BUTTON
                (vbox2, chkbtn_hscrollbar, _("Enable horizontal scroll bar"));
 
@@ -1403,8 +1411,9 @@ static void prefs_display_create(void)
        display.chkbtn_folder_unread = chkbtn_folder_unread;
        display.chkbtn_transhdr   = chkbtn_transhdr;
 
-       display.chkbtn_swapfrom   = chkbtn_swapfrom;
-       display.chkbtn_hscrollbar = chkbtn_hscrollbar;
+       display.chkbtn_swapfrom    = chkbtn_swapfrom;
+       display.chkbtn_hscrollbar  = chkbtn_hscrollbar;
+       display.chkbtn_useaddrbook = chkbtn_useaddrbook;
 }
 
 static void prefs_message_create(void)
index 5ba4e203ebd407993fe87a2bb6fd17d8371cacb3..072a9e338310bd3080c189182e54fa01b20a8b37 100644 (file)
@@ -73,6 +73,7 @@ struct _PrefsCommon
        gboolean enable_thread;
        gboolean enable_hscrollbar;
        gboolean swap_from;
+       gboolean use_addr_book;
        gchar *date_format;
 
        /* Filtering */
index 8712c2e9600283cc5cee00ff7a98912a65273c22..30b1a20699f88dbaf5802c02c1aed45962d776dc 100644 (file)
@@ -72,6 +72,7 @@
 #include "filter.h"
 #include "folder.h"
 #include "addressbook.h"
+#include "addr_compl.h"
 #include "scoring.h"
 
 #include "pixmaps/dir-open.xpm"
@@ -1395,6 +1396,9 @@ static void summary_set_ctree_from_list(SummaryView *summaryview,
        msgid_table = g_hash_table_new(g_str_hash, g_str_equal);
        summaryview->msgid_table = msgid_table;
 
+       if (prefs_common.use_addr_book)
+               start_address_completion();
+
        if (prefs_common.enable_thread) {
                for (; mlist != NULL; mlist = mlist->next) {
                        msginfo = (MsgInfo *)mlist->data;
@@ -1453,6 +1457,9 @@ static void summary_set_ctree_from_list(SummaryView *summaryview,
                                           optimal_width);
        }
 
+       if (prefs_common.use_addr_book)
+               end_address_completion();
+
        debug_print(_("done.\n"));
        STATUSBAR_POP(summaryview->mainwin);
        if (debug_mode)
@@ -1536,6 +1543,7 @@ static void summary_set_header(gchar *text[], MsgInfo *msginfo)
 {
        static gchar date_modified[80];
        static gchar *to = NULL;
+       static gchar *from_name = NULL;
        static gchar col_number[11];
        static gchar col_score[11];
 
@@ -1572,6 +1580,24 @@ static void summary_set_header(gchar *text[], MsgInfo *msginfo)
                }
        }
 
+       if ((text[S_COL_FROM] != to) && prefs_common.use_addr_book &&
+           msginfo->from) {
+               gint count;
+               gchar *from;
+  
+               Xalloca(from, strlen(msginfo->from) + 1, return);
+               strcpy(from, msginfo->from);
+               extract_address(from);
+               count = complete_address(from);
+               if (count > 1) {
+                       g_free(from_name);
+                       from = get_complete_address(1);
+                       from_name = procheader_get_fromname(from);
+                       g_free(from);
+                       text[S_COL_FROM] = from_name;
+               }
+       }
+
        text[S_COL_SUBJECT] = msginfo->subject ? msginfo->subject :
                _("(No Subject)");
 }