diff options
author | Jeffrey Stedfast <fejj@ximian.com> | 2002-03-16 10:22:54 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2002-03-16 10:22:54 +0800 |
commit | 4c1a78e6124b25de8bbdd35298d6bd8959b31d0a (patch) | |
tree | 109db090280c02d845dfd109cf08e5af58025269 /mail/mail-config.c | |
parent | eaaa45115ffe9382758627bb3747210f8a78788b (diff) | |
download | gsoc2013-evolution-4c1a78e6124b25de8bbdd35298d6bd8959b31d0a.tar.gz gsoc2013-evolution-4c1a78e6124b25de8bbdd35298d6bd8959b31d0a.tar.zst gsoc2013-evolution-4c1a78e6124b25de8bbdd35298d6bd8959b31d0a.zip |
New callback to set a colour on a message.
2002-03-15 Jeffrey Stedfast <fejj@ximian.com>
* mail-callbacks.c (colour_msg): New callback to set a colour on a
message.
* folder-browser.c (on_right_click): Setup our popup icons and
stuff. Also add a submenu for Labels.
* mail-display.c (pixmap_press): Sync up with the new EPopupMenu
API. Note: This code can probably now be fixed to use per-item
closures - yay!
* mail-accounts.c (construct): Connect to the label GtkEntry's and
GnomeColorPickers and also to the Restore Defaults button.
* mail-config.c (mail_config_get_label_name): New function to get
a label's name.
(mail_config_set_label_name): New function to set the label name.
(mail_config_get_label_color): New function to get the label
color.
(mail_config_set_label_color): New function to set the label
color.
(config_read): Read in the config options for the labels and their
colors.
(mail_config_write_on_exit): Save the label options.
svn path=/trunk/; revision=16186
Diffstat (limited to 'mail/mail-config.c')
-rw-r--r-- | mail/mail-config.c | 110 |
1 files changed, 106 insertions, 4 deletions
diff --git a/mail/mail-config.c b/mail/mail-config.c index 63984cd476..b036e389da 100644 --- a/mail/mail-config.c +++ b/mail/mail-config.c @@ -69,6 +69,15 @@ #include "Mail.h" + +MailConfigLabel label_defaults[5] = { + { N_("Important"), 0xff0000 }, /* red */ + { N_("Work"), 0xff8c00 }, /* orange */ + { N_("Personal"), 0x008b00 }, /* forest green */ + { N_("To Do"), 0x0000ff }, /* blue */ + { N_("Later"), 0x8b008b } /* magenta */ +}; + typedef struct { Bonobo_ConfigDatabase db; @@ -114,10 +123,12 @@ typedef struct { char *notify_filename; char *last_filesel_dir; - + GList *signature_list; - gint signatures; - gint signatures_random; + int signatures; + int signatures_random; + + MailConfigLabel labels[5]; } MailConfig; static MailConfig *config = NULL; @@ -329,6 +340,8 @@ mail_config_init (void) void mail_config_clear (void) { + int i; + if (!config) return; @@ -358,6 +371,11 @@ mail_config_clear (void) g_free (config->last_filesel_dir); config->last_filesel_dir = NULL; + + for (i = 0; i < 5; i++) { + g_free (config->labels[i].name); + config->labels[i].name = NULL; + } } static MailConfigSignature * @@ -585,6 +603,7 @@ static void config_read (void) { int len, i, default_num; + char *path, *val, *p; mail_config_clear (); @@ -599,7 +618,6 @@ config_read (void) MailConfigIdentity *id; MailConfigService *source; MailConfigService *transport; - char *path, *val; account = g_new0 (MailConfigAccount, 1); path = g_strdup_printf ("/Mail/Accounts/account_name_%d", i); @@ -945,6 +963,29 @@ config_read (void) /* last filesel dir */ config->last_filesel_dir = bonobo_config_get_string ( config->db, "/Mail/Filesel/last_filesel_dir", NULL); + + /* Color labels */ + /* Note: we avoid having to malloc/free 10 times this way... */ + path = g_malloc (sizeof ("/Mail/Labels/") + sizeof ("label_#") + 1); + strcpy (path, "/Mail/Labels/label_#"); + p = path + strlen (path) - 1; + for (i = 0; i < 5; i++) { + *p = '0' + i; + val = bonobo_config_get_string (config->db, path, NULL); + if (!(val && *val)) { + g_free (val); + val = NULL; + } + config->labels[i].name = val; + } + strcpy (path, "/Mail/Labels/color_#"); + p = path + strlen (path) - 1; + for (i = 0; i < 5; i++) { + *p = '0' + i; + config->labels[i].color = bonobo_config_get_long_with_default (config->db, path, + label_defaults[i].color, NULL); + } + g_free (path); } #define bonobo_config_set_string_wrapper(db, path, val, ev) bonobo_config_set_string (db, path, val ? val : "", ev) @@ -1183,6 +1224,8 @@ mail_config_write_on_exit (void) CORBA_Environment ev; MailConfigAccount *account; const GSList *accounts; + char *path, *p; + int i; /* Show Messages Threaded */ bonobo_config_set_boolean (config->db, "/Mail/Display/thread_list", @@ -1290,9 +1333,28 @@ mail_config_write_on_exit (void) bonobo_config_set_string_wrapper (config->db, "/Mail/Filesel/last_filesel_dir", config->last_filesel_dir, NULL); + /* Color labels */ + /* Note: we avoid having to malloc/free 10 times this way... */ + path = g_malloc (sizeof ("/Mail/Labels/") + sizeof ("label_#") + 1); + strcpy (path, "/Mail/Labels/label_#"); + p = path + strlen (path) - 1; + for (i = 0; i < 5; i++) { + *p = '0' + i; + bonobo_config_set_string_wrapper (config->db, path, config->labels[i].name, NULL); + } + strcpy (path, "/Mail/Labels/color_#"); + p = path + strlen (path) - 1; + for (i = 0; i < 5; i++) { + *p = '0' + i; + bonobo_config_set_long (config->db, path, config->labels[i].color, NULL); + } + g_free (path); + + /* Message Threading */ if (config->threaded_hash) g_hash_table_foreach_remove (config->threaded_hash, hash_save_state, "Threads"); + /* Message Preview */ if (config->preview_hash) g_hash_table_foreach_remove (config->preview_hash, hash_save_state, "Preview"); @@ -2077,6 +2139,46 @@ mail_config_set_new_mail_notify_sound_file (const char *filename) config->notify_filename = g_strdup (filename); } +const char * +mail_config_get_label_name (int label) +{ + g_return_val_if_fail (label >= 0 && label < 5, NULL); + + if (!config->labels[label].name) + config->labels[label].name = g_strdup (U_(label_defaults[label].name)); + + return config->labels[label].name; +} + +void +mail_config_set_label_name (int label, const char *name) +{ + g_return_if_fail (label >= 0 && label < 5); + + if (!name) + name = U_(label_defaults[label].name); + + g_free (config->labels[label].name); + config->labels[label].name = g_strdup (name); +} + +guint32 +mail_config_get_label_color (int label) +{ + g_return_val_if_fail (label >= 0 && label < 5, 0); + + return config->labels[label].color; +} + +void +mail_config_set_label_color (int label, guint32 color) +{ + g_return_if_fail (label >= 0 && label < 5); + + config->labels[label].color = color; +} + + gboolean mail_config_find_account (const MailConfigAccount *account) { |