aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/ChangeLog15
-rw-r--r--mail/mail-config.c79
-rw-r--r--mail/mail-config.h3
-rw-r--r--mail/message-list.c3
4 files changed, 70 insertions, 30 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index 7088dbcb68..74a633aa00 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,3 +1,18 @@
+2002-08-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * message-list.c (regen_list_regen): Pass
+ mail_config_get_thread_subject() as the third argument to
+ camel_folder_thread_messages_new().
+
+ * mail-config.c (config_read): Read in the thread_by_subject
+ config option.
+ (mail_config_write_on_exit): Save the thread_by_subject config
+ option.
+ (mail_config_get_thread_subject): New function to get the
+ thread_subject value.
+ (mail_config_set_thread_subject): New function to set the
+ thread_subject value.
+
2002-08-27 Radek Doulik <rodo@ximian.com>
* mail-signature-editor.c: removed tip frame
diff --git a/mail/mail-config.c b/mail/mail-config.c
index ad09ec03c8..b9aed3b1f4 100644
--- a/mail/mail-config.c
+++ b/mail/mail-config.c
@@ -27,6 +27,7 @@
#endif
/* this group of headers is for pgp detection */
+#include <stdlib.h>
#include <signal.h>
#include <sys/ioctl.h>
#include <sys/time.h>
@@ -101,6 +102,8 @@ typedef struct {
int seen_timeout;
gboolean empty_trash_on_exit;
+ gboolean thread_subject;
+
GSList *accounts;
int default_account;
@@ -517,32 +520,31 @@ config_write_imported_signature (gchar *filename, gint i, gboolean html)
static void
config_import_old_signatures ()
{
- gint num;
-
+ int num;
+
num = bonobo_config_get_long_with_default (config->db, "/Mail/Signatures/num", -1, NULL);
-
+
if (num == -1) {
/* there are no signatures defined
* look for old config to create new ones from old ones
*/
-
GHashTable *cache;
- gint i, accounts;
-
+ int i, accounts;
+
cache = g_hash_table_new (g_str_hash, g_str_equal);
accounts = bonobo_config_get_long_with_default (config->db, "/Mail/Accounts/num", 0, NULL);
num = 0;
for (i = 0; i < accounts; i ++) {
- gchar *path, *val;
-
+ char *path, *val;
+
/* read text signature file */
path = g_strdup_printf ("/Mail/Accounts/identity_signature_%d", i);
val = bonobo_config_get_string (config->db, path, NULL);
g_free (path);
if (val && *val) {
- gint id;
gpointer orig_key, node_val;
-
+ int id;
+
if (g_hash_table_lookup_extended (cache, val, &orig_key, &node_val)) {
id = GPOINTER_TO_INT (node_val);
} else {
@@ -551,23 +553,23 @@ config_import_old_signatures ()
id = num;
num ++;
}
-
+
/* set new text signature to this identity */
path = g_strdup_printf ("/Mail/Accounts/identity_signature_text_%d", i);
bonobo_config_set_long (config->db, path, id, NULL);
g_free (path);
} else
g_free (val);
-
+
path = g_strdup_printf ("/Mail/Accounts/identity_has_html_signature_%d", i);
if (bonobo_config_get_boolean_with_default (config->db, path, FALSE, NULL)) {
g_free (path);
path = g_strdup_printf ("/Mail/Accounts/identity_html_signature_%d", i);
val = bonobo_config_get_string (config->db, path, NULL);
if (val && *val) {
- gint id;
gpointer orig_key, node_val;
-
+ int id;
+
if (g_hash_table_lookup_extended (cache, val, &orig_key, &node_val)) {
id = GPOINTER_TO_INT (node_val);
} else {
@@ -576,7 +578,7 @@ config_import_old_signatures ()
id = num;
num ++;
}
-
+
/* set new html signature to this identity */
g_free (path);
path = g_strdup_printf ("/Mail/Accounts/identity_signature_html_%d", i);
@@ -597,7 +599,7 @@ locale_supports_12_hour_format(void)
{
char s[16];
time_t t = 0;
-
+
strftime(s, sizeof s, "%p", gmtime (&t));
return s[0] != '\0';
}
@@ -609,7 +611,7 @@ config_read (void)
char *path, *val, *p;
mail_config_clear ();
-
+
config_import_old_signatures ();
config_read_signatures ();
@@ -746,12 +748,12 @@ config_read (void)
path = g_strdup_printf ("/Mail/Accounts/identity_def_signature_%d", i);
id->def_signature = lookup_signature (bonobo_config_get_long_with_default (config->db, path, -1, NULL));
g_free (path);
-
+
/* autogenerated signature */
path = g_strdup_printf ("/Mail/Accounts/identity_autogenerated_signature_%d", i);
id->auto_signature = bonobo_config_get_boolean_with_default (config->db, path, TRUE, NULL);
g_free (path);
-
+
/* get the source */
source = g_new0 (MailConfigService, 1);
@@ -823,7 +825,7 @@ config_read (void)
/* Format */
config->send_html = bonobo_config_get_boolean_with_default (config->db,
"/Mail/Format/send_html", FALSE, NULL);
-
+
/* Confirm Sending Unwanted HTML */
config->confirm_unwanted_html = bonobo_config_get_boolean_with_default (config->db,
"/Mail/Format/confirm_unwanted_html", TRUE, NULL);
@@ -847,6 +849,10 @@ config_read (void)
config->thread_list = bonobo_config_get_boolean_with_default (
config->db, "/Mail/Display/thread_list", FALSE, NULL);
+ p = getenv ("USER");
+ config->thread_subject = bonobo_config_get_boolean_with_default (
+ config->db, "/Mail/Display/thread_subject", p && (!strcmp (p, "fejj") || !strcmp (p, "notzed")) ? TRUE : FALSE, NULL);
+
config->show_preview = bonobo_config_get_boolean_with_default (
config->db, "/Mail/Display/preview_pane", TRUE, NULL);
@@ -946,7 +952,7 @@ config_read (void)
config->x_mailer_display_style = bonobo_config_get_long_with_default (
config->db, "/Mail/Display/x_mailer_display_style",
MAIL_CONFIG_XMAILER_NONE, NULL);
-
+
/* last filesel dir */
config->last_filesel_dir = bonobo_config_get_string (
config->db, "/Mail/Filesel/last_filesel_dir", NULL);
@@ -973,7 +979,7 @@ config_read (void)
label_defaults[i].color, NULL);
}
g_free (path);
-
+
config->week_start_day = bonobo_config_get_long_with_default(config->db, "/Calendar/Display/WeekStartDay", 1, NULL);
if (locale_supports_12_hour_format()) {
config->time_24hour = bonobo_config_get_boolean_with_default(config->db, "/Calendar/Display/Use24HourFormat", FALSE, NULL);
@@ -988,12 +994,12 @@ void
mail_config_write_account_sig (MailConfigAccount *account, gint i)
{
char *path;
-
+
mail_config_init ();
-
+
if (i == -1) {
GSList *link;
-
+
link = g_slist_find (config->accounts, account);
if (!link) {
g_warning ("Can't find account in accounts list");
@@ -1001,13 +1007,13 @@ mail_config_write_account_sig (MailConfigAccount *account, gint i)
}
i = g_slist_position (config->accounts, link);
}
-
+
/* id signatures */
path = g_strdup_printf ("/Mail/Accounts/identity_def_signature_%d", i);
bonobo_config_set_long (config->db, path, account->id->def_signature
? account->id->def_signature->id : -1, NULL);
g_free (path);
-
+
path = g_strdup_printf ("/Mail/Accounts/identity_autogenerated_signature_%d", i);
bonobo_config_set_boolean (config->db, path, account->id->auto_signature, NULL);
g_free (path);
@@ -1032,7 +1038,7 @@ mail_config_write (void)
Bonobo_ConfigDatabase_sync (config->db, &ev);
config_write_signatures ();
-
+
len = g_slist_length (config->accounts);
bonobo_config_set_long (config->db,
"/Mail/Accounts/num", len, NULL);
@@ -1133,7 +1139,7 @@ mail_config_write (void)
g_free (path);
mail_config_write_account_sig (account, i);
-
+
path = g_strdup_printf ("/Mail/Accounts/identity_autogenerated_signature_%d", i);
bonobo_config_set_boolean (config->db, path, account->id->auto_signature, NULL);
g_free (path);
@@ -1206,6 +1212,9 @@ mail_config_write_on_exit (void)
bonobo_config_set_boolean (config->db, "/Mail/Display/thread_list",
config->thread_list, NULL);
+ bonobo_config_set_boolean (config->db, "/Mail/Display/thread_subject",
+ config->thread_subject, NULL);
+
/* Show Message Preview */
bonobo_config_set_boolean (config->db, "/Mail/Display/preview_pane",
config->show_preview, NULL);
@@ -1419,6 +1428,18 @@ uri_to_key (const char *uri)
}
gboolean
+mail_config_get_thread_subject (void)
+{
+ return config->thread_subject;
+}
+
+void
+mail_config_set_thread_subject (gboolean thread_subject)
+{
+ config->thread_subject = thread_subject;
+}
+
+gboolean
mail_config_get_empty_trash_on_exit (void)
{
return config->empty_trash_on_exit;
diff --git a/mail/mail-config.h b/mail/mail-config.h
index bcf45e9ca8..95159faafe 100644
--- a/mail/mail-config.h
+++ b/mail/mail-config.h
@@ -179,6 +179,9 @@ void mail_config_set_empty_trash_on_exit (gboolean value);
gboolean mail_config_get_thread_list (const char *uri);
void mail_config_set_thread_list (const char *uri, gboolean value);
+gboolean mail_config_get_thread_subject (void);
+void mail_config_set_thread_subject (gboolean thread_subject);
+
gboolean mail_config_get_show_preview (const char *uri);
void mail_config_set_show_preview (const char *uri, gboolean value);
diff --git a/mail/message-list.c b/mail/message-list.c
index 14624f57f2..a719983588 100644
--- a/mail/message-list.c
+++ b/mail/message-list.c
@@ -2673,7 +2673,8 @@ regen_list_regen (struct _mail_msg *mm)
if (m->tree)
camel_folder_thread_messages_apply(m->tree, showuids);
else
- m->tree = camel_folder_thread_messages_new(m->folder, showuids);
+ m->tree = camel_folder_thread_messages_new (m->folder, showuids,
+ mail_config_get_thread_subject ());
} else {
m->summary = g_ptr_array_new ();
for (i = 0; i < showuids->len; i++) {