static void change_folder (CamelStore *store, const gchar *name, guint32 flags, gint count) { CamelFolderInfo *fi; const gchar *tmp; fi = camel_folder_info_new (); fi->full_name = g_strdup (name); tmp = strrchr (name, '/'); if (tmp == NULL) tmp = name; else tmp++; fi->display_name = g_strdup (tmp); fi->unread = count; fi->flags = CAMEL_FOLDER_VIRTUAL; if (!(flags & CHANGE_DELETE)) fi->flags |= CAMEL_FOLDER_NOCHILDREN; if (flags & CHANGE_NOSELECT) fi->flags |= CAMEL_FOLDER_NOSELECT; if (flags & CHANGE_DELETE) camel_store_folder_deleted (store, fi); else camel_store_folder_created (store, fi); camel_folder_info_free (fi); }
static void sync_created_folders (CamelEwsStore *ews_store, GSList *created_folders, GSList **created_folder_ids) { GSList *l; for (l = created_folders; l != NULL; l = g_slist_next (l)) { EEwsFolder *folder = (EEwsFolder *) l->data; EEwsFolderType ftype; CamelFolderInfo *fi; const EwsFolderId *fid; ftype = e_ews_folder_get_folder_type (folder); if (ftype != E_EWS_FOLDER_TYPE_MAILBOX) continue; fid = e_ews_folder_get_id (folder); /* FIXME: Sort folders so that a child is always added *after* * its parent. But since the old code was already completely * broken and would just go into an endless loop if the server * didn't return the folders in the 'right' order for that, * let's worry about that in a later commit. */ add_folder_to_summary (ews_store, folder); if (created_folder_ids) { *created_folder_ids = g_slist_append (*created_folder_ids, g_strdup (fid->id)); } else { fi = camel_ews_utils_build_folder_info ( ews_store, fid->id); camel_store_folder_created ( CAMEL_STORE (ews_store), fi); camel_subscribable_folder_subscribed ( CAMEL_SUBSCRIBABLE (ews_store), fi); camel_folder_info_free (fi); } } }