From 1122910e08370e7bb6b2d341df37623f87dbff7a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ho=C3=A0=20Vi=C3=AAt=20Dinh?= Date: Tue, 1 May 2001 11:58:59 +0000 Subject: [PATCH 1/1] fixes for custom headers and displaying of headers --- ChangeLog.claws | 8 +++++++ src/Makefile.am | 2 +- src/compose.c | 2 +- src/{headers.c => customheader.c} | 19 ++++++++------- src/{headers.h => customheader.h} | 8 +++---- src/prefs_display_headers.c | 40 ++++++++++++++++++++++--------- src/prefs_headers.c | 8 +++---- 7 files changed, 57 insertions(+), 30 deletions(-) rename src/{headers.c => customheader.c} (85%) rename src/{headers.h => customheader.h} (91%) diff --git a/ChangeLog.claws b/ChangeLog.claws index 947215d59..f914e23a5 100644 --- a/ChangeLog.claws +++ b/ChangeLog.claws @@ -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 diff --git a/src/Makefile.am b/src/Makefile.am index 0bbc40539..cb02e0c75 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -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 diff --git a/src/compose.c b/src/compose.c index fa53ac9ff..674e16f4a 100644 --- a/src/compose.c +++ b/src/compose.c @@ -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" diff --git a/src/headers.c b/src/customheader.c similarity index 85% rename from src/headers.c rename to src/customheader.c index 398ec2999..d585efa90 100644 --- a/src/headers.c +++ b/src/customheader.c @@ -27,20 +27,20 @@ #include #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) diff --git a/src/headers.h b/src/customheader.h similarity index 91% rename from src/headers.h rename to src/customheader.h index 5659fbce1..938502a23 100644 --- a/src/headers.h +++ b/src/customheader.h @@ -17,12 +17,12 @@ * 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__ */ diff --git a/src/prefs_display_headers.c b/src/prefs_display_headers.c index ef3a48396..9a7e075ce 100644 --- a/src/prefs_display_headers.c +++ b/src/prefs_display_headers.c @@ -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, diff --git a/src/prefs_headers.c b/src/prefs_headers.c index e7c053ddb..7cc44e846 100644 --- a/src/prefs_headers.c +++ b/src/prefs_headers.c @@ -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); -- 2.25.1