aboutsummaryrefslogtreecommitdiffstats
path: root/mail/em-folder-tree.c
diff options
context:
space:
mode:
authorSrinivasa Ragavan <sragavan@novell.com>2008-12-15 14:44:07 +0800
committerSrinivasa Ragavan <sragavan@src.gnome.org>2008-12-15 14:44:07 +0800
commite522a301b4ecfabbf40fb42ed7e082c293a7f2db (patch)
tree05b259cca15e480db2645db5632c0fb302639aef /mail/em-folder-tree.c
parent19db3033bfa7429b00a5c3b5074ddd13567516bf (diff)
downloadgsoc2013-evolution-e522a301b4ecfabbf40fb42ed7e082c293a7f2db.tar
gsoc2013-evolution-e522a301b4ecfabbf40fb42ed7e082c293a7f2db.tar.gz
gsoc2013-evolution-e522a301b4ecfabbf40fb42ed7e082c293a7f2db.tar.bz2
gsoc2013-evolution-e522a301b4ecfabbf40fb42ed7e082c293a7f2db.tar.lz
gsoc2013-evolution-e522a301b4ecfabbf40fb42ed7e082c293a7f2db.tar.xz
gsoc2013-evolution-e522a301b4ecfabbf40fb42ed7e082c293a7f2db.tar.zst
gsoc2013-evolution-e522a301b4ecfabbf40fb42ed7e082c293a7f2db.zip
Add the unread vfolder hack.
2008-12-15 Srinivasa Ragavan <sragavan@novell.com> * em-account-editor.c: (emae_option_checkspin): * em-folder-tree.c: (emft_popup_uvfolder), (emft_popup): Add the unread vfolder hack. svn path=/trunk/; revision=36884
Diffstat (limited to 'mail/em-folder-tree.c')
-rw-r--r--mail/em-folder-tree.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/mail/em-folder-tree.c b/mail/em-folder-tree.c
index 1eed0fd671..b66c80b31b 100644
--- a/mail/em-folder-tree.c
+++ b/mail/em-folder-tree.c
@@ -2094,6 +2094,23 @@ emft_popup_properties (EPopup *ep, EPopupItem *pitem, void *data)
g_free (uri);
}
+static void
+emft_popup_uvfolder (EPopup *ep, EPopupItem *pitem, void *data)
+{
+ EMFolderTree *emft = data;
+ CamelFolder *folder;
+ char *meta = camel_object_meta_get(folder, "vfolder:unread");
+
+ if ((folder = em_folder_tree_get_selected_folder (emft)) != NULL) {
+ if (!meta || strcmp(meta, "false") == 0)
+ camel_object_meta_set(folder, "vfolder:unread", "true");
+ else
+ camel_object_meta_set(folder, "vfolder:unread", "false");
+ }
+ camel_object_state_write (folder);
+ g_free (meta);
+}
+
static EPopupItem emft_popup_items[] = {
#if 0
{ E_POPUP_ITEM, "00.emc.00", N_("_View"), emft_popup_view, NULL, NULL, EM_POPUP_FOLDER_SELECT },
@@ -2211,6 +2228,25 @@ emft_popup (EMFolderTree *emft, GdkEvent *event)
if ((folder_type_flags & CAMEL_FOLDER_TYPE_MASK) == CAMEL_FOLDER_TYPE_TRASH)
menus = g_slist_prepend (menus, &trash_popup_item);
+ if (!isstore && strstr(uri, "vfolder")) {
+ /* This is a vfolder, so lets add hacked up menu item. */
+ static EPopupItem *item = NULL;
+ char *meta = camel_object_meta_get (selfolder, "vfolder:unread");
+
+ if (!item)
+ item = g_malloc0(sizeof(*item));
+ if (meta && (strcmp (meta, "true") == 0))
+ item->type = E_POPUP_TOGGLE | E_POPUP_ACTIVE;
+ else
+ item->type = E_POPUP_TOGGLE & ~E_POPUP_ACTIVE;
+ item->path = "99.emc.99";
+ item->label = _("_Unread Search Folder");
+ item->activate = emft_popup_uvfolder;
+ item->visible = EM_POPUP_FOLDER_SELECT;
+ item->user_data = NULL;
+ menus = g_slist_prepend (menus, item);
+ g_free (meta);
+ }
e_popup_add_items ((EPopup *)emp, menus, NULL, emft_popup_free, emft);