fixes for custom headers and displaying of headers
authorHoà Viêt Dinh <dinh.viet.hoa@free.fr>
Tue, 1 May 2001 11:58:59 +0000 (11:58 +0000)
committerHoà Viêt Dinh <dinh.viet.hoa@free.fr>
Tue, 1 May 2001 11:58:59 +0000 (11:58 +0000)
ChangeLog.claws
src/Makefile.am
src/compose.c
src/customheader.c [moved from src/headers.c with 85% similarity]
src/customheader.h [moved from src/headers.h with 91% similarity]
src/prefs_display_headers.c
src/prefs_headers.c

index 947215d5919dbf866885f64f110fe13c36ce77a4..f914e23a524dcec049db93f73df21d860e4de6e4 100644 (file)
@@ -1,3 +1,10 @@
+2001-05-01 [hoa]
+
+       * src/Makefile.am changed headers.[ch] in customheader.[ch]
+       * src/prefs_display_headers.c changed the UI
+       * src/prefs_headers.c changed account_name to account_id
+       * src/compose.c using customheader.h
+
 2001-05-01 [hiroyuki]
 
        * src/esmtp.c
@@ -6,6 +13,7 @@
          unsynched.
 
 2001-05-01 [hoa]
+
        * src/Makefile.am added prefs_display_headers.[ch] headers_display.[ch]
        * src/defs.h added HEADERS_DISPLAY_RC : name of the config file
                for displaying of headers
index 0bbc4053982228eefb3c9fa00de4f8028fbba7a6..cb02e0c7565ae6407ffc00547111d17df663c9a4 100644 (file)
@@ -75,7 +75,7 @@ sylpheed_SOURCES = \
        addr_compl.c addr_compl.h \
        gtkstext.c gtkstext.h \
        grouplist_dialog.c grouplist_dialog.h \
-       headers.c headers.h \
+       customheader.c customheader.h \
        prefs_headers.c prefs_headers.h \
        headers_display.c headers_display.h \
        prefs_display_headers.c prefs_display_headers.h
index fa53ac9ffb54cd6994799f6118529f4821708777..674e16f4aa6139ab4ce725f14579be4f6feef19e 100644 (file)
@@ -97,7 +97,7 @@
 #include "gtkshruler.h"
 #include "folder.h"
 #include "addr_compl.h"
-#include "headers.h"
+#include "customheader.h"
 
 #if USE_GPGME
 #  include "rfc2015.h"
similarity index 85%
rename from src/headers.c
rename to src/customheader.c
index 398ec29993a0c16282e3725f7090b508ede593e8..d585efa9067ceedfaabcf5e24f59a040b01958bd 100644 (file)
 #include <stdlib.h>
 
 #include "intl.h"
-#include "headers.h"
+#include "customheader.h"
 #include "utils.h"
 
 
 gchar * custom_header_get_str(CustomHeader *ch)
 {
        return g_strdup_printf
-               ("%s\t%s: %s", ch->account_name, ch->name, ch->value);
+               ("%i:%s: %s", ch->account_id, ch->name, ch->value);
 }
  
 CustomHeader * custom_header_read_str(gchar * buf)
 {
        CustomHeader * ch;
-       gchar * account_name;
+       gchar * account_id_str;
        gchar * name;
        gchar * value;
        gchar * tmp;
@@ -48,9 +48,9 @@ CustomHeader * custom_header_read_str(gchar * buf)
        Xalloca(tmp, strlen(buf) + 1, return NULL);
        strcpy(tmp, buf);
 
-       account_name = tmp;
+       account_id_str = tmp;
 
-       name = strchr(account_name, '\t');
+       name = strchr(account_id_str, ':');
        if (!name)
                return NULL;
        else
@@ -61,12 +61,15 @@ CustomHeader * custom_header_read_str(gchar * buf)
        
        ch = g_new0(CustomHeader, 1);
 
-       ch->account_name = *account_name ? g_strdup(account_name) : NULL;
+       ch->account_id = atoi(account_id_str);
+       if (ch->account_id == 0) {
+               g_free(ch);
+               return NULL;
+       }
 
        value = strchr(name, ':');
        if (!value)
                {
-                       g_free(ch->account_name);
                        g_free(ch);
                        return NULL;
                }
@@ -87,8 +90,6 @@ void custom_header_free(CustomHeader *ch)
 {
        if (!ch) return;
  
-       if (ch->account_name)
-               g_free(ch->account_name);
        if (ch->name)
                g_free(ch->name);
        if (ch->value)
similarity index 91%
rename from src/headers.h
rename to src/customheader.h
index 5659fbce1b467065b007557284f0e7de4ecbe7a6..938502a2321ef1d4722762af9b0af8d43881ec1e 100644 (file)
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-#ifndef __HEADERS_H__
-#define __HEADERS_H__
+#ifndef __CUSTOMHEADER_H__
+#define __CUSTOMHEADER_H__
 
 struct _CustomHeader
 {
-       gchar *account_name;
+       int account_id;
        gchar *name;
        gchar *value;
 };
@@ -33,4 +33,4 @@ gchar * custom_header_get_str(CustomHeader *ch);
 CustomHeader * custom_header_read_str(gchar * buf);
 void custom_header_free(CustomHeader *ch);
 
-#endif /* __HEADERS_H__ */
+#endif /* __CUSTOMHEADER_H__ */
index ef3a48396a172a7e56dde8e41f84e271855965a3..9a7e075ce17e37bb53fc046d369bb396c7c54170 100644 (file)
@@ -175,7 +175,7 @@ static void prefs_display_headers_create(void)
        GtkWidget *up_btn;
        GtkWidget *down_btn;
 
-       gchar *title[] = {_("Custom headers")};
+       gchar *title[] = {_("Order of headers"), _("Action")};
 
        debug_print(_("Creating headers setting window...\n"));
 
@@ -238,7 +238,7 @@ static void prefs_display_headers_create(void)
        gtkut_combo_set_items (GTK_COMBO (hdr_combo),
                               "From", "To", "Subject", "Date", NULL);
 
-       key_label = gtk_label_new (_("Hide"));
+       key_label = gtk_label_new (_("Order (or Hide)"));
        gtk_widget_show (key_label);
        gtk_table_attach (GTK_TABLE (table1), key_label, 1, 2, 0, 1,
                          GTK_EXPAND | GTK_SHRINK | GTK_FILL,
@@ -251,6 +251,7 @@ static void prefs_display_headers_create(void)
        gtk_table_attach (GTK_TABLE (table1), key_check, 1, 2, 1, 2,
                          GTK_EXPAND | GTK_SHRINK | GTK_FILL,
                          0, 0, 0);
+       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(key_check), 1);
 
        /* register / substitute / delete */
 
@@ -297,7 +298,7 @@ static void prefs_display_headers_create(void)
                            TRUE, TRUE, 0);
 
        ch_scrolledwin = gtk_scrolled_window_new (NULL, NULL);
-       gtk_widget_set_usize (ch_scrolledwin, -1, 100);
+       gtk_widget_set_usize (ch_scrolledwin, 230, 200);
        gtk_widget_show (ch_scrolledwin);
        gtk_box_pack_start (GTK_BOX (ch_hbox), ch_scrolledwin,
                            TRUE, TRUE, 0);
@@ -305,10 +306,11 @@ static void prefs_display_headers_create(void)
                                        GTK_POLICY_AUTOMATIC,
                                        GTK_POLICY_AUTOMATIC);
 
-       headers_clist = gtk_clist_new_with_titles(1, title);
+       headers_clist = gtk_clist_new_with_titles(2, title);
        gtk_widget_show (headers_clist);
        gtk_container_add (GTK_CONTAINER (ch_scrolledwin), headers_clist);
-       gtk_clist_set_column_width (GTK_CLIST (headers_clist), 0, 80);
+       gtk_clist_set_column_width (GTK_CLIST (headers_clist), 0, 150);
+       gtk_clist_set_column_width (GTK_CLIST (headers_clist), 1, 50);
        gtk_clist_set_selection_mode (GTK_CLIST (headers_clist),
                                      GTK_SELECTION_BROWSE);
        GTK_WIDGET_UNSET_FLAGS (GTK_CLIST (headers_clist)->column[0].button,
@@ -434,27 +436,33 @@ static void prefs_display_headers_set_dialog()
 {
        GtkCList *clist = GTK_CLIST(headers.headers_clist);
        GSList *cur;
-       gchar *dp_str[1];
+       gchar *dp_str[2];
        gint row;
 
        gtk_clist_freeze(clist);
        gtk_clist_clear(clist);
 
        dp_str[0] = _("(New)");
+       dp_str[1] = "";
        row = gtk_clist_append(clist, dp_str);
        gtk_clist_set_row_data(clist, row, NULL);
 
        for (cur = prefs_display_headers; cur != NULL; cur = cur->next) {
                HeaderDisplayProp *dp = (HeaderDisplayProp *)cur->data;
 
+               /*
                if (dp->hidden)
                        dp_str[0] = g_strdup_printf("(%s)", dp->name);
                else
                        dp_str[0] = g_strdup_printf("%s", dp->name);
+               */
+               dp_str[0] = dp->name;
+               dp_str[1] = dp->hidden ? _("Hide") : _("Order");
+
                row = gtk_clist_append(clist, dp_str);
                gtk_clist_set_row_data(clist, row, dp);
 
-               g_free(dp_str[0]);
+               //              g_free(dp_str[0]);
        }
 
        gtk_clist_thaw(clist);
@@ -484,7 +492,7 @@ static gint prefs_display_headers_clist_set_row(gint row)
        GtkCList *clist = GTK_CLIST(headers.headers_clist);
        HeaderDisplayProp *dp;
        gchar *entry_text;
-       gchar *dp_str[1];
+       gchar *dp_str[2];
 
        g_return_val_if_fail(row != 0, -1);
 
@@ -498,13 +506,17 @@ static gint prefs_display_headers_clist_set_row(gint row)
 
        dp->name = g_strdup(entry_text);
 
-       dp->hidden = gtk_toggle_button_get_active
+       dp->hidden = !gtk_toggle_button_get_active
                (GTK_TOGGLE_BUTTON(headers.key_check));
 
+       dp_str[0] = dp->name;
+       dp_str[1] = dp->hidden ? _("Hide") : _("Order");
+       /*
        if (dp->hidden)
                dp_str[0] = g_strdup_printf("(%s)", dp->name);
        else
                dp_str[0] = g_strdup_printf("%s", dp->name);
+       */
 
        if (row < 0)
                row = gtk_clist_append(clist, dp_str);
@@ -512,6 +524,7 @@ static gint prefs_display_headers_clist_set_row(gint row)
                HeaderDisplayProp *tmpdp;
 
                gtk_clist_set_text(clist, row, 0, dp_str[0]);
+               gtk_clist_set_text(clist, row, 1, dp_str[1]);
                tmpdp = gtk_clist_get_row_data(clist, row);
                if (tmpdp)
                        header_display_prop_free(tmpdp);
@@ -519,7 +532,7 @@ static gint prefs_display_headers_clist_set_row(gint row)
 
        gtk_clist_set_row_data(clist, row, dp);
 
-       g_free(dp_str[0]);
+       //      g_free(dp_str[0]);
 
        prefs_display_headers_set_list();
 
@@ -612,7 +625,12 @@ static void prefs_display_headers_select(GtkCList *clist, gint row,
  
        ENTRY_SET_TEXT(headers.hdr_entry, dp->name);
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(headers.key_check),
-                                    dp->hidden);
+                                    !dp->hidden);
+
+       if ((row != 0) && event && (event->type == GDK_2BUTTON_PRESS)) {
+       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(headers.key_check), dp->hidden);
+               prefs_display_headers_clist_set_row(row);
+       }
 }
 
 static void prefs_display_headers_key_pressed(GtkWidget *widget,
index e7c053ddb15a09b4b2f1ec6742bb68867ce4a4d6..7cc44e846c8baf1e187053c20af8efaac99d75c5 100644 (file)
@@ -40,7 +40,7 @@
 #include "mainwindow.h"
 #include "foldersel.h"
 #include "manage_window.h"
-#include "headers.h"
+#include "customheader.h"
 #include "utils.h"
 #include "gtkutils.h"
 #include "alertpanel.h"
@@ -339,7 +339,7 @@ void prefs_headers_read_config(PrefsAccount * ac)
                g_strchomp(buf);
                ch = custom_header_read_str(buf);
                if (ch) {
-                       if (strcmp(ch->account_name, ac->account_name) == 0)
+                       if (ch->account_id == ac->account_id)
                                ac->customhdr_list =
                                        g_slist_append(ac->customhdr_list, ch);
                        else
@@ -375,7 +375,7 @@ void prefs_headers_write_config(PrefsAccount * ac)
                        g_strchomp(buf);
                        ch = custom_header_read_str(buf);
                        if (ch) {
-                               if (strcmp(ch->account_name, ac->account_name) != 0)
+                               if (ch->account_id != ac->account_id)
                                        all_hdrs =
                                                g_slist_append(all_hdrs, ch);
                                else
@@ -501,7 +501,7 @@ static gint prefs_headers_clist_set_row(PrefsAccount * ac, gint row)
 
        ch = g_new0(CustomHeader, 1);
 
-       ch->account_name = g_strdup(ac->account_name);
+       ch->account_id = ac->account_id;
 
        ch->name = g_strdup(entry_text);