diff options
author | jacob berkman <jacob@ximian.com> | 2001-06-26 05:12:10 +0800 |
---|---|---|
committer | Jacob Berkman <jberkman@src.gnome.org> | 2001-06-26 05:12:10 +0800 |
commit | 57db15334b2ea42d619024a48bda764af46d0e2a (patch) | |
tree | bcedce63814055decf0206e29deb9fec968148b6 /mail/mail-callbacks.c | |
parent | 4d5ccfcb23509552645597c073fd0fa311701ded (diff) | |
download | gsoc2013-evolution-57db15334b2ea42d619024a48bda764af46d0e2a.tar.gz gsoc2013-evolution-57db15334b2ea42d619024a48bda764af46d0e2a.tar.zst gsoc2013-evolution-57db15334b2ea42d619024a48bda764af46d0e2a.zip |
sync folders after we've gotten mail
2001-06-25 jacob berkman <jacob@ximian.com>
* mail-send-recv.c (free_send_data): sync folders after we've
gotten mail
* folder-browser-factory.c (control_activate): set the ui
component on the folder browser
(control_activate): update the view preview item
(control_deactivate): don't sync the folder here
(control_deactivate): unset the ui component of the folder browser
* mail-callbacks.c (toggle_flags): stuff from jleach to add an
importance keybinding
(mark_as_important): ditto
(toggle_as_important): again
* mail-config.c (mail_config_get_show_preview):
(mail_config_set_show_preview): basically a copy of
get_thread_list() but for the preview pane
* folder-browser.c (folder_browser_destroy): unref the our ui
component
(folder_browser_set_ui_component): new function for setting the ui
component
(save_cursor_pos):
(set_cursor_pos): try to show the selected row when the preview
pane is shown
(folder_browser_set_message_preview): implement
(folder_browser_toggle_preview): toggle the preview (duh)
(on_key_press): add keybindings for marking as important (!), and
hiding the preview pane (q)
(etree_key): clean up a little bit, and make enter either show the
preview pane or open the message
(fb_resize_cb): only save the paned size if the preview is alread
shown
(folder_browser_gui_init): pass ourselves to fb_resize_cb
(on_message_selected): only add the timeout if the preview is
shown
svn path=/trunk/; revision=10491
Diffstat (limited to 'mail/mail-callbacks.c')
-rw-r--r-- | mail/mail-callbacks.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/mail/mail-callbacks.c b/mail/mail-callbacks.c index 730df51c5e..e5e359e219 100644 --- a/mail/mail-callbacks.c +++ b/mail/mail-callbacks.c @@ -1024,6 +1024,42 @@ flag_messages(FolderBrowser *fb, guint32 mask, guint32 set) return i; } +static int +toggle_flags (FolderBrowser *fb, guint32 mask) +{ + MessageList *ml = fb->message_list; + GPtrArray *uids; + int i; + + if (ml->folder == NULL) + return 0; + + /* could just use specific callback but i'm lazy */ + uids = g_ptr_array_new (); + message_list_foreach (ml, enumerate_msg, uids); + camel_folder_freeze (ml->folder); + for (i = 0; i < uids->len; i++) { + gint flags; + + flags = camel_folder_get_message_flags (ml->folder, uids->pdata[i]); + + if (flags & mask) + camel_folder_set_message_flags (ml->folder, uids->pdata[i], mask, 0); + else { + if ((mask & CAMEL_MESSAGE_FLAGGED) && (flags & CAMEL_MESSAGE_DELETED)) + camel_folder_set_message_flags (ml->folder, uids->pdata[i], CAMEL_MESSAGE_DELETED, 0); + camel_folder_set_message_flags (ml->folder, uids->pdata[i], mask, mask); + } + + g_free (uids->pdata[i]); + } + camel_folder_thaw (ml->folder); + + g_ptr_array_free (uids, TRUE); + + return i; +} + void mark_as_seen (BonoboUIComponent *uih, void *user_data, const char *path) { @@ -1043,6 +1079,19 @@ mark_all_as_seen (BonoboUIComponent *uih, void *user_data, const char *path) flag_messages (FOLDER_BROWSER (user_data), CAMEL_MESSAGE_SEEN, CAMEL_MESSAGE_SEEN); } +void +mark_as_important (BonoboUIComponent *uih, void *user_data, const char *path) +{ + flag_messages (FOLDER_BROWSER (user_data), CAMEL_MESSAGE_DELETED, 0); + flag_messages (FOLDER_BROWSER (user_data), CAMEL_MESSAGE_FLAGGED, CAMEL_MESSAGE_FLAGGED); +} + +void +toggle_as_important (BonoboUIComponent *uih, void *user_data, const char *path) +{ + toggle_flags (FOLDER_BROWSER (user_data), CAMEL_MESSAGE_FLAGGED); +} + static void do_edit_messages(CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, void *data) { |