evolution-data-server r9070 - branches/EXCHANGE_MAPI_BRANCH/servers/mapi
- From: jjohnny svn gnome org
- To: svn-commits-list gnome org
- Subject: evolution-data-server r9070 - branches/EXCHANGE_MAPI_BRANCH/servers/mapi
- Date: Tue, 1 Jul 2008 02:55:33 +0000 (UTC)
Author: jjohnny
Date: Tue Jul 1 02:55:32 2008
New Revision: 9070
URL: http://svn.gnome.org/viewvc/evolution-data-server?rev=9070&view=rev
Log:
Move and Copy Item(s) APIs.
Modified:
branches/EXCHANGE_MAPI_BRANCH/servers/mapi/ChangeLog
branches/EXCHANGE_MAPI_BRANCH/servers/mapi/exchange-mapi-connection.c
branches/EXCHANGE_MAPI_BRANCH/servers/mapi/exchange-mapi-connection.h
Modified: branches/EXCHANGE_MAPI_BRANCH/servers/mapi/exchange-mapi-connection.c
==============================================================================
--- branches/EXCHANGE_MAPI_BRANCH/servers/mapi/exchange-mapi-connection.c (original)
+++ branches/EXCHANGE_MAPI_BRANCH/servers/mapi/exchange-mapi-connection.c Tue Jul 1 02:55:32 2008
@@ -2127,6 +2127,77 @@
return result;
}
+static gboolean
+mapi_move_items ( mapi_id_t src_fid, mapi_id_t dest_fid, GSList *mid_list, gboolean do_copy)
+{
+ gboolean ret = true;
+ mapi_object_t obj_store;
+ mapi_object_t obj_folder_src;
+ mapi_object_t obj_folder_dst;
+ mapi_id_array_t msg_id_array;
+
+ enum MAPISTATUS retval;
+ guint i;
+ GSList *l;
+
+ mapi_id_array_init(&msg_id_array);
+ for (i = 0, l = mid_list; l != NULL; l = g_slist_next (l), i++) {
+ mapi_id_array_add_id (&msg_id_array, *((mapi_id_t *)l->data));
+ }
+
+ LOCK ();
+
+ mapi_object_init(&obj_store);
+ retval = OpenMsgStore(&obj_store);
+ if (GetLastError() != MAPI_E_SUCCESS) {
+ ret = false;
+ goto cleanup;
+ }
+
+ mapi_object_init(&obj_folder_src);
+ retval = OpenFolder(&obj_store, src_fid, &obj_folder_src);
+ if (GetLastError() != MAPI_E_SUCCESS) {
+ ret = false;
+ goto cleanup;
+ }
+
+ mapi_object_init(&obj_folder_dst);
+ retval = OpenFolder(&obj_store, dest_fid, &obj_folder_dst);
+ if (GetLastError() != MAPI_E_SUCCESS) {
+ ret = false;
+ goto cleanup;
+ }
+
+ retval = MoveCopyMessages(&obj_folder_src, &obj_folder_dst, &msg_id_array, do_copy);
+ if (retval != MAPI_E_SUCCESS) {
+ ret = false;
+ goto cleanup;
+ }
+
+ ret = true;
+
+cleanup:
+ UNLOCK ();
+ mapi_object_release(&obj_folder_src);
+ mapi_object_release(&obj_folder_dst);
+ mapi_object_release(&obj_store);
+ mapi_id_array_release(&msg_id_array);
+
+ return ret;
+}
+
+gboolean
+exchange_mapi_copy_items (mapi_id_t src_fid, mapi_id_t dest_fid, GSList *mids)
+{
+ return mapi_move_items (src_fid, dest_fid, mids, TRUE);
+}
+
+gboolean
+exchange_mapi_move_items (mapi_id_t src_fid, mapi_id_t dest_fid, GSList *mids)
+{
+ return mapi_move_items (src_fid, dest_fid, mids, FALSE);
+}
+
/* FIXME: param olFolder is never used in the routine. Remove it and cleanup at the backends */
gboolean
exchange_mapi_remove_items (uint32_t olFolder, mapi_id_t fid, GSList *mids)
Modified: branches/EXCHANGE_MAPI_BRANCH/servers/mapi/exchange-mapi-connection.h
==============================================================================
--- branches/EXCHANGE_MAPI_BRANCH/servers/mapi/exchange-mapi-connection.h (original)
+++ branches/EXCHANGE_MAPI_BRANCH/servers/mapi/exchange-mapi-connection.h Tue Jul 1 02:55:32 2008
@@ -146,6 +146,13 @@
gboolean
exchange_mapi_remove_items (uint32_t olFolder, mapi_id_t fid, GSList *mids);
+gboolean
+exchange_mapi_copy_items ( mapi_id_t src_fid, mapi_id_t dest_fid, GSList *mids);
+
+gboolean
+exchange_mapi_move_items ( mapi_id_t src_fid, mapi_id_t dest_fid, GSList *mids);
+
+
gboolean exchange_mapi_get_folders_list (GSList **mapi_folders);
gboolean exchange_mapi_get_pf_folders_list (GSList **mapi_folders);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]