* Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
*
* Contact: Kyuho Jo <kyuho.jo@samsung.com>, Sunghyun Kwon <sh0701.kwon@samsung.com>
-*
+*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* File: email-daemon-mailbox.c
* Desc: email-daemon Mailbox Operation
*
- * Auth:
+ * Auth:
*
* History:
* 2006.08.16 : created
/* default variable */
int ret = false;
- int err = EMF_ERROR_NONE;
+ int err = EMAIL_ERROR_NONE;
if (account_id <= 0 ||!mailbox) {
EM_DEBUG_EXCEPTION("account_id[%d], mailbox[%p]", account_id, mailbox);
- err = EMF_ERROR_INVALID_PARAM;
+ err = EMAIL_ERROR_INVALID_PARAM;
goto FINISH_OFF;
}
- emf_account_t* ref_account = emdaemon_get_account_reference(account_id);
-
+ email_account_t* ref_account = emdaemon_get_account_reference(account_id);
+
if (!ref_account) {
EM_DEBUG_EXCEPTION("emdaemon_get_account_reference failed [%d]", account_id);
- err = EMF_ERROR_INVALID_ACCOUNT;
+ err = EMAIL_ERROR_INVALID_ACCOUNT;
goto FINISH_OFF;
}
- emf_event_t event_data;
- memset(&event_data, 0x00, sizeof(emf_event_t));
-
- switch (ref_account->account_bind_type) {
- case EMF_BIND_TYPE_EM_CORE:
- event_data.type = EMF_EVENT_SYNC_IMAP_MAILBOX;
- event_data.account_id = account_id;
- event_data.event_param_data_3 = EM_SAFE_STRDUP(mailbox);
+ email_event_t event_data;
+ memset(&event_data, 0x00, sizeof(email_event_t));
- if (!emcore_insert_event(&event_data, (int*)handle, &err)) {
- EM_DEBUG_EXCEPTION("emcore_insert_event failed [%d]", err);
- goto FINISH_OFF;
- }
- break;
+ event_data.type = EMAIL_EVENT_SYNC_IMAP_MAILBOX;
+ event_data.account_id = account_id;
+ event_data.event_param_data_3 = EM_SAFE_STRDUP(mailbox);
- default:
- EM_DEBUG_EXCEPTION("unknown account bind type...");
- err = EMF_ERROR_INVALID_ACCOUNT;
- goto FINISH_OFF;
+ if (!emcore_insert_event(&event_data, (int*)handle, &err)) {
+ EM_DEBUG_EXCEPTION("emcore_insert_event failed [%d]", err);
+ goto FINISH_OFF;
}
ret = true;
}
-
-INTERNAL_FUNC int emdaemon_get_mailbox_list(int account_id, emf_mailbox_t** mailbox_list, int* count, int* err_code)
+
+INTERNAL_FUNC int emdaemon_get_mailbox_list(int account_id, email_mailbox_t** mailbox_list, int* count, int* err_code)
{
EM_DEBUG_FUNC_BEGIN("account_id[%d], mailbox_list[%p], count[%p], err_code[%p]", account_id, mailbox_list, count, err_code);
-
+
int ret = false;
- int err = EMF_ERROR_NONE;
-
+ int err = EMAIL_ERROR_NONE;
+
if (account_id <= 0 || !mailbox_list || !count) {
EM_DEBUG_EXCEPTION("account_id[%d], mailbox_list[%p], count[%p]", account_id, mailbox_list, count);
- err = EMF_ERROR_INVALID_PARAM;
+ err = EMAIL_ERROR_INVALID_PARAM;
goto FINISH_OFF;
}
-
- emf_account_t* ref_account = emdaemon_get_account_reference(account_id);
-
+
+ email_account_t* ref_account = emdaemon_get_account_reference(account_id);
+
if (!ref_account) {
EM_DEBUG_EXCEPTION("emdaemon_get_account_reference failed [%d]", account_id);
- err = EMF_ERROR_INVALID_ACCOUNT;
+ err = EMAIL_ERROR_INVALID_ACCOUNT;
goto FINISH_OFF;
}
-
- switch (ref_account->account_bind_type) {
- case EMF_BIND_TYPE_EM_CORE:
- if (!emcore_get_list(account_id, mailbox_list, count, &err)) {
- EM_DEBUG_EXCEPTION("emcore_get_list failed [%d]", err);
- goto FINISH_OFF;
- }
- break;
-
- default:
- EM_DEBUG_EXCEPTION("unknown account bind type...");
- err = EMF_ERROR_INVALID_ACCOUNT;
- goto FINISH_OFF;
+
+ if (!emcore_get_list(account_id, mailbox_list, count, &err)) {
+ EM_DEBUG_EXCEPTION("emcore_get_list failed [%d]", err);
+ goto FINISH_OFF;
}
ret = true;
-
+
FINISH_OFF:
if (err_code)
*err_code = err;
}
-INTERNAL_FUNC int emdaemon_get_mail_count_of_mailbox(emf_mailbox_t* mailbox, int* total, int* unseen, int* err_code)
+INTERNAL_FUNC int emdaemon_get_mail_count_of_mailbox(email_mailbox_t* mailbox, int* total, int* unseen, int* err_code)
{
EM_DEBUG_FUNC_BEGIN("mailbox[%p], total[%p], unseen[%p], err_code[%p]", mailbox, total, unseen, err_code);
-
+
/* default variable */
int ret = false;
- int err = EMF_ERROR_NONE;
-
+ int err = EMAIL_ERROR_NONE;
+
if (!mailbox || !total || !unseen) {
EM_DEBUG_EXCEPTION("mailbox[%p], total[%p], unseen[%p]", mailbox, total, unseen);
- err = EMF_ERROR_INVALID_PARAM;
+ err = EMAIL_ERROR_INVALID_PARAM;
goto FINISH_OFF;
}
-
- emf_account_t* ref_account = emdaemon_get_account_reference(mailbox->account_id);
- if (ref_account == NULL) {
+
+ email_account_t* ref_account = emdaemon_get_account_reference(mailbox->account_id);
+ if (ref_account == NULL) {
EM_DEBUG_EXCEPTION(" emdaemon_get_account_reference failed [%d]", mailbox->account_id);
- err = EMF_ERROR_INVALID_ACCOUNT;
+ err = EMAIL_ERROR_INVALID_ACCOUNT;
goto FINISH_OFF;
}
-
- switch (ref_account->account_bind_type) {
- case EMF_BIND_TYPE_EM_CORE:
- if (!emcore_get_mail_count(mailbox, total, unseen, &err)) {
- EM_DEBUG_EXCEPTION("emcore_get_mail_count failed [%d]", err);
- goto FINISH_OFF;
- }
- break;
-
- default:
- EM_DEBUG_EXCEPTION("unknown account bind type...");
- err = EMF_ERROR_INVALID_ACCOUNT;
- goto FINISH_OFF;
+
+ if (!emcore_get_mail_count(mailbox, total, unseen, &err)) {
+ EM_DEBUG_EXCEPTION("emcore_get_mail_count failed [%d]", err);
+ goto FINISH_OFF;
}
-
+
+
ret = true;
-
+
FINISH_OFF:
if (err_code)
*err_code = err;
return ret;
}
-INTERNAL_FUNC int emdaemon_add_mailbox(emf_mailbox_t* new_mailbox, int on_server, unsigned* handle, int* err_code)
+INTERNAL_FUNC int emdaemon_add_mailbox(email_mailbox_t* new_mailbox, int on_server, unsigned* handle, int* err_code)
{
EM_DEBUG_FUNC_BEGIN("new_mailbox[%p], err_code[%p]", new_mailbox, err_code);
-
+
int ret = false;;
- int err = EMF_ERROR_NONE;
+ int err = EMAIL_ERROR_NONE;
- if (!new_mailbox || new_mailbox->account_id <= 0 || !new_mailbox->name) {
+ if (!new_mailbox || new_mailbox->account_id <= 0 || !new_mailbox->mailbox_name) {
if (new_mailbox != NULL)
- EM_DEBUG_EXCEPTION("new_mailbox->account_id[%d], new_mailbox->name[%p]", new_mailbox->account_id, new_mailbox->name);
- err = EMF_ERROR_INVALID_PARAM;
+ EM_DEBUG_EXCEPTION("new_mailbox->account_id[%d], new_mailbox->mailbox_name[%p]", new_mailbox->account_id, new_mailbox->mailbox_name);
+ err = EMAIL_ERROR_INVALID_PARAM;
goto FINISH_OFF;
}
- emf_account_t* ref_account = emdaemon_get_account_reference(new_mailbox->account_id);
+ email_account_t* ref_account = emdaemon_get_account_reference(new_mailbox->account_id);
if (!ref_account) {
EM_DEBUG_EXCEPTION("emdaemon_get_account_reference failed [%d]", new_mailbox->account_id);
- err = EMF_ERROR_INVALID_ACCOUNT;
+ err = EMAIL_ERROR_INVALID_ACCOUNT;
goto FINISH_OFF;
}
- emf_event_t event_data;
- memset(&event_data, 0x00, sizeof(emf_event_t));
-
- switch (ref_account->account_bind_type) {
- case EMF_BIND_TYPE_EM_CORE:
- /* on_server is allowed to be only 0 when server_type is EMF_SERVER_TYPE_ACTIVE_SYNC */
- if ( ref_account->receiving_server_type == EMF_SERVER_TYPE_ACTIVE_SYNC )
- on_server = 0;
-
- if ( on_server ) { /* async */
- event_data.type = EMF_EVENT_CREATE_MAILBOX;
- event_data.account_id = new_mailbox->account_id;
- event_data.event_param_data_1 = EM_SAFE_STRDUP(new_mailbox->name);
- event_data.event_param_data_2 = EM_SAFE_STRDUP(new_mailbox->alias);
- event_data.event_param_data_4 = on_server;
- event_data.event_param_data_3 = GINT_TO_POINTER(new_mailbox->mailbox_type);
- if(!emcore_insert_event(&event_data, (int*)handle, &err)) {
- EM_DEBUG_EXCEPTION("emcore_insert_event failed [%d]", err);
- goto FINISH_OFF;
- }
- }
- else { /* sync */
- if (!emcore_create_mailbox(new_mailbox, on_server, &err)) {
- EM_DEBUG_EXCEPTION("emcore_create failed [%d]", err);
- goto FINISH_OFF;
- }
- }
- break;
-
- default:
- EM_DEBUG_EXCEPTION("unknown account bind type...");
-
- err = EMF_ERROR_INVALID_ACCOUNT;
+ email_event_t event_data;
+ memset(&event_data, 0x00, sizeof(email_event_t));
+
+
+ /* on_server is allowed to be only 0 when server_type is EMAIL_SERVER_TYPE_ACTIVE_SYNC */
+ if ( ref_account->incoming_server_type == EMAIL_SERVER_TYPE_ACTIVE_SYNC )
+ on_server = 0;
+
+ if ( on_server ) { /* async */
+ event_data.type = EMAIL_EVENT_CREATE_MAILBOX;
+ event_data.account_id = new_mailbox->account_id;
+ event_data.event_param_data_1 = EM_SAFE_STRDUP(new_mailbox->mailbox_name);
+ event_data.event_param_data_2 = EM_SAFE_STRDUP(new_mailbox->alias);
+ event_data.event_param_data_4 = on_server;
+ event_data.event_param_data_3 = GINT_TO_POINTER(new_mailbox->mailbox_type);
+ if(!emcore_insert_event(&event_data, (int*)handle, &err)) {
+ EM_DEBUG_EXCEPTION("emcore_insert_event failed [%d]", err);
goto FINISH_OFF;
+ }
}
-
+ else { /* sync */
+ if (!emcore_create_mailbox(new_mailbox, on_server, &err)) {
+ EM_DEBUG_EXCEPTION("emcore_create failed [%d]", err);
+ goto FINISH_OFF;
+ }
+ }
+
ret = true;
-
+
FINISH_OFF:
if (err_code)
*err_code = err;
}
-INTERNAL_FUNC int emdaemon_update_mailbox(emf_mailbox_t* old_mailbox, emf_mailbox_t* new_mailbox, int on_server, unsigned* handle, int* err_code)
+INTERNAL_FUNC int emdaemon_update_mailbox(email_mailbox_t* old_mailbox, email_mailbox_t* new_mailbox, int on_server, unsigned* handle, int* err_code)
{
EM_DEBUG_FUNC_BEGIN("old_mailbox[%p], new_mailbox[%p], on_server[%d], handle[%p], err_code[%p]", old_mailbox, new_mailbox, on_server, handle, err_code);
-
+
/* default variable */
int ret = false;;
- int err = EMF_ERROR_NONE;
+ int err = EMAIL_ERROR_NONE;
- if (!old_mailbox || old_mailbox->account_id <= 0 || !old_mailbox->name
- || !new_mailbox || new_mailbox->account_id <= 0 || !new_mailbox->name) {
+ if (!old_mailbox || old_mailbox->account_id <= 0 || !old_mailbox->mailbox_name
+ || !new_mailbox || new_mailbox->account_id <= 0 || !new_mailbox->mailbox_name) {
EM_DEBUG_EXCEPTION("INVALID PARAM");
if (old_mailbox != NULL)
- EM_DEBUG_EXCEPTION("old_mailbox->account_id[%d], old_mailbox->name[%p]", old_mailbox->account_id, old_mailbox->name);
+ EM_DEBUG_EXCEPTION("old_mailbox->account_id[%d], old_mailbox->mailbox_name[%p]", old_mailbox->account_id, old_mailbox->mailbox_name);
if (new_mailbox != NULL)
- EM_DEBUG_EXCEPTION("new_mailbox->account_id[%d], new_mailbox->name[%p]", new_mailbox->account_id, new_mailbox->name);
+ EM_DEBUG_EXCEPTION("new_mailbox->account_id[%d], new_mailbox->mailbox_name[%p]", new_mailbox->account_id, new_mailbox->mailbox_name);
- err = EMF_ERROR_INVALID_PARAM;
+ err = EMAIL_ERROR_INVALID_PARAM;
goto FINISH_OFF;
}
-
- emf_account_t* ref_account = emdaemon_get_account_reference(old_mailbox->account_id);
-
+
+ email_account_t* ref_account = emdaemon_get_account_reference(old_mailbox->account_id);
+
if (!ref_account) {
EM_DEBUG_EXCEPTION("emdaemon_get_account_reference failed [%d]", old_mailbox->account_id);
- err = EMF_ERROR_INVALID_ACCOUNT; /* instead of EMF_ERROR_INVALID_PARAM; */
+ err = EMAIL_ERROR_INVALID_ACCOUNT; /* instead of EMAIL_ERROR_INVALID_PARAM; */
goto FINISH_OFF;
}
- emf_event_t event_data;
- memset(&event_data, 0x00, sizeof(emf_event_t));
-
- switch (ref_account->account_bind_type) {
- case EMF_BIND_TYPE_EM_CORE:
- /* Unsupport sync with server */
- /* on_server is allowed to be only 0 when server_type is EMF_SERVER_TYPE_ACTIVE_SYNC */
- /*
- if ( ref_account->receiving_server_type == EMF_SERVER_TYPE_ACTIVE_SYNC ) {
- on_server = 0;
- }
- if ( on_server ) {
- event_data.type = EMF_EVENT_UPDATE_MAILBOX;
- event_data.account_id = new_mailbox->account_id;
- event_data.event_param_data_1 = ;
- event_data.event_param_data_2 = ;
- event_data.event_param_data_4 = on_server;
- event_data.event_param_data_3 = GINT_TO_POINTER(new_mailbox->mailbox_type);
- if(!emcore_insert_event(&event_data, handle, &err)) {
- EM_DEBUG_EXCEPTION("emcore_insert_event failed [%d]", err);
- goto FINISH_OFF;
- }
- }
- else {
- if (!emcore_modify(old_mailbox, new_mailbox, on_server, &err)) {
- EM_DEBUG_EXCEPTION("emcore_create failed [%d]", err);
- goto FINISH_OFF;
- }
- }
- */
- /* Update mailbox information only on local db */
- if (!emcore_update_mailbox(old_mailbox, new_mailbox, &err)) {
- EM_DEBUG_EXCEPTION("emcore_modify failed [%d]", err);
- goto FINISH_OFF;
- }
- break;
-
- default:
- EM_DEBUG_EXCEPTION("unknown account bind type...");
-
- err = EMF_ERROR_INVALID_ACCOUNT;
+ email_event_t event_data;
+ memset(&event_data, 0x00, sizeof(email_event_t));
+
+
+ /* Unsupport sync with server */
+ /* on_server is allowed to be only 0 when server_type is EMAIL_SERVER_TYPE_ACTIVE_SYNC */
+ /*
+ if ( ref_account->receiving_server_type == EMAIL_SERVER_TYPE_ACTIVE_SYNC ) {
+ on_server = 0;
+ }
+ if ( on_server ) {
+ event_data.type = EMAIL_EVENT_UPDATE_MAILBOX;
+ event_data.account_id = new_mailbox->account_id;
+ event_data.event_param_data_1 = ;
+ event_data.event_param_data_2 = ;
+ event_data.event_param_data_4 = on_server;
+ event_data.event_param_data_3 = GINT_TO_POINTER(new_mailbox->mailbox_type);
+ if(!emcore_insert_event(&event_data, handle, &err)) {
+ EM_DEBUG_EXCEPTION("emcore_insert_event failed [%d]", err);
goto FINISH_OFF;
+ }
}
-
+ else {
+ if (!emcore_modify(old_mailbox, new_mailbox, on_server, &err)) {
+ EM_DEBUG_EXCEPTION("emcore_create failed [%d]", err);
+ goto FINISH_OFF;
+ }
+ }
+ */
+ /* Update mailbox information only on local db */
+ if (!emcore_update_mailbox(old_mailbox, new_mailbox, &err)) {
+ EM_DEBUG_EXCEPTION("emcore_modify failed [%d]", err);
+ goto FINISH_OFF;
+ }
+
ret = true;
-
+
FINISH_OFF:
if (err_code)
*err_code = err;
return ret;
}
+INTERNAL_FUNC int emdaemon_set_mailbox_type(int input_mailbox_id, email_mailbox_type_e input_mailbox_type)
+{
+ EM_DEBUG_FUNC_BEGIN("input_mailbox_id [%d], input_mailbox_type [%d]", input_mailbox_id, input_mailbox_type);
+
+ /* default variable */
+ int err = EMAIL_ERROR_NONE;
+ emstorage_mailbox_tbl_t *mailbox_tbl = NULL;
+
+ if (!input_mailbox_id) {
+ EM_DEBUG_EXCEPTION("EMAIL_ERROR_INVALID_PARAM");
+ err = EMAIL_ERROR_INVALID_PARAM;
+ goto FINISH_OFF;
+ }
+
+ if ( (err = emstorage_get_mailbox_by_id(input_mailbox_id, &mailbox_tbl)) != EMAIL_ERROR_NONE) {
+ EM_DEBUG_EXCEPTION("emstorage_get_mailbox_by_id failed [%d]", err);
+ goto FINISH_OFF;
+ }
+
+ if (!emstorage_update_mailbox_type(mailbox_tbl->account_id, -1, mailbox_tbl->mailbox_name, input_mailbox_type, true, &err)) {
+ EM_DEBUG_EXCEPTION("emstorage_update_mailbox failed [%d]", err);
+ goto FINISH_OFF;
+ }
+
+
+FINISH_OFF:
+ if (mailbox_tbl)
+ emstorage_free_mailbox(&mailbox_tbl, 1, NULL);
+
+ EM_DEBUG_FUNC_END("err [%d]", err);
+ return err;
+}
+
-INTERNAL_FUNC int emdaemon_delete_mailbox(emf_mailbox_t* mailbox, int on_server, unsigned* handle, int* err_code)
+INTERNAL_FUNC int emdaemon_delete_mailbox(int input_mailbox_id, int on_server, unsigned* handle, int* err_code)
{
- EM_DEBUG_FUNC_BEGIN("mailbox[%p], err_code[%p]", mailbox, err_code);
+ EM_DEBUG_FUNC_BEGIN("input_mailbox_id[%d], err_code[%p]", input_mailbox_id, err_code);
/* default variable */
int ret = false;
- int err = EMF_ERROR_NONE;
+ int err = EMAIL_ERROR_NONE;
+ emstorage_mailbox_tbl_t *mailbox_tbl = NULL;
- if (!mailbox || mailbox->account_id <= 0) {
- if (mailbox != NULL)
- EM_DEBUG_EXCEPTION("mailbox->account_id[%d]", mailbox->account_id);
- err = EMF_ERROR_INVALID_PARAM;
+ if ((err = emstorage_get_mailbox_by_id(input_mailbox_id, &mailbox_tbl)) != EMAIL_ERROR_NONE || !mailbox_tbl) {
+ EM_DEBUG_EXCEPTION("emstorage_get_mailbox_by_id failed. [%d]", err);
+ goto FINISH_OFF;
+ }
+
+ if (!input_mailbox_id || mailbox_tbl->account_id <= 0) {
+ if (input_mailbox_id != 0)
+ EM_DEBUG_EXCEPTION("mailbox_tbl->account_id[%d]", mailbox_tbl->account_id);
+ err = EMAIL_ERROR_INVALID_PARAM;
goto FINISH_OFF;
}
- emf_account_t* ref_account = emdaemon_get_account_reference(mailbox->account_id);
+ email_account_t* ref_account = emdaemon_get_account_reference(mailbox_tbl->account_id);
if (!ref_account) {
- EM_DEBUG_EXCEPTION("emdaemon_get_account_reference failed [%d]", mailbox->account_id);
- err = EMF_ERROR_INVALID_ACCOUNT;
+ EM_DEBUG_EXCEPTION("emdaemon_get_account_reference failed [%d]", mailbox_tbl->account_id);
+ err = EMAIL_ERROR_INVALID_ACCOUNT;
goto FINISH_OFF;
}
- emf_event_t event_data;
- memset(&event_data, 0x00, sizeof(emf_event_t));
-
- switch (ref_account->account_bind_type) {
- case EMF_BIND_TYPE_EM_CORE:
- /* on_server is allowed to be only 0 when server_type is EMF_SERVER_TYPE_ACTIVE_SYNC */
- if ( ref_account->receiving_server_type == EMF_SERVER_TYPE_ACTIVE_SYNC ) {
- on_server = 0;
- }
- if ( on_server ) { /* async */
- event_data.type = EMF_EVENT_DELETE_MAILBOX;
- event_data.account_id = mailbox->account_id;
- event_data.event_param_data_1 = EM_SAFE_STRDUP(mailbox->name);
- event_data.event_param_data_4 = on_server;
- if(!emcore_insert_event(&event_data, (int*)handle, &err)) {
- EM_DEBUG_EXCEPTION("emcore_insert_event failed [%d]", err);
- goto FINISH_OFF;
- }
- }
+ email_event_t event_data;
+ memset(&event_data, 0x00, sizeof(email_event_t));
- else {
- if (!emcore_delete_mailbox(mailbox, on_server, &err)) {
- EM_DEBUG_EXCEPTION("emcore_delete failed [%d]", err);
- goto FINISH_OFF;
- }
- }
- break;
-
- default:
- EM_DEBUG_EXCEPTION("unknown account bind type...");
- err = EMF_ERROR_INVALID_ACCOUNT;
+ /* on_server is allowed to be only 0 when server_type is EMAIL_SERVER_TYPE_ACTIVE_SYNC */
+ if ( ref_account->incoming_server_type == EMAIL_SERVER_TYPE_ACTIVE_SYNC ) {
+ on_server = 0;
+ }
+ if ( on_server ) { /* async */
+ event_data.type = EMAIL_EVENT_DELETE_MAILBOX;
+ event_data.account_id = mailbox_tbl->account_id;
+ event_data.event_param_data_4 = input_mailbox_id;
+ event_data.event_param_data_5 = on_server;
+ if(!emcore_insert_event(&event_data, (int*)handle, &err)) {
+ EM_DEBUG_EXCEPTION("emcore_insert_event failed [%d]", err);
goto FINISH_OFF;
+ }
}
-
+ else {
+ if (!emcore_delete_mailbox(input_mailbox_id, on_server, &err)) {
+ EM_DEBUG_EXCEPTION("emcore_delete failed [%d]", err);
+ goto FINISH_OFF;
+ }
+ }
+
ret = true;
-
+
FINISH_OFF:
if (err_code)
*err_code = err;
return ret;
}
-INTERNAL_FUNC int emdaemon_delete_mailbox_all(emf_mailbox_t* mailbox, int* err_code)
+INTERNAL_FUNC int emdaemon_delete_mailbox_all(email_mailbox_t* mailbox, int* err_code)
{
EM_DEBUG_FUNC_BEGIN("malibox[%p], err_code[%p]", mailbox, err_code);
-
+
/* default variable */
int ret = false;
- int err = EMF_ERROR_NONE;
-
+ int err = EMAIL_ERROR_NONE;
+
if (!mailbox || mailbox->account_id <= 0) {
if (mailbox == NULL)
EM_DEBUG_EXCEPTION("malibox->account_id[%d]", mailbox->account_id);
- err = EMF_ERROR_INVALID_PARAM;
+ err = EMAIL_ERROR_INVALID_PARAM;
goto FINISH_OFF;
}
-
- emf_account_t* ref_account = emdaemon_get_account_reference(mailbox->account_id);
-
+
+ email_account_t* ref_account = emdaemon_get_account_reference(mailbox->account_id);
+
if (!ref_account) {
EM_DEBUG_EXCEPTION("emdaemon_get_account_reference failed [%d]", mailbox->account_id);
- err = EMF_ERROR_INVALID_ACCOUNT;
+ err = EMAIL_ERROR_INVALID_ACCOUNT;
goto FINISH_OFF;
}
-
- switch (ref_account->account_bind_type) {
- case EMF_BIND_TYPE_EM_CORE:
- if (!emcore_delete_mailbox_all(mailbox, &err)) {
- EM_DEBUG_EXCEPTION("emcore_delete_all failed [%d]", err);
- goto FINISH_OFF;
- }
- break;
-
- default:
- EM_DEBUG_EXCEPTION("unknown account bind type...");
- err = EMF_ERROR_INVALID_ACCOUNT;
- goto FINISH_OFF;
+
+ if (!emcore_delete_mailbox_all(mailbox, &err)) {
+ EM_DEBUG_EXCEPTION("emcore_delete_all failed [%d]", err);
+ goto FINISH_OFF;
}
-
+
ret = true;
-
+
FINISH_OFF:
if (err_code)
*err_code = err;
return ret;
}
-
-
-INTERNAL_FUNC int emdaemon_free_mailbox(emf_mailbox_t** mailbox_list, int count, int* err_code)
-{
- EM_DEBUG_FUNC_BEGIN();
- return emcore_free_mailbox(mailbox_list, count, err_code);
-}
-
-INTERNAL_FUNC int emdaemon_sync_header(emf_mailbox_t* mailbox, unsigned* handle, int* err_code)
+INTERNAL_FUNC int emdaemon_sync_header(int input_account_id, int input_mailbox_id, unsigned* handle, int* err_code)
{
- EM_DEBUG_FUNC_BEGIN("mailbox[%p], handle[%p], err_code[%p]", mailbox, handle, err_code);
+ EM_DEBUG_FUNC_BEGIN("input_account_id[%d], input_mailbox_id[%d], handle[%p], err_code[%p]", input_account_id, input_mailbox_id, handle, err_code);
/* default variable */
int ret = false;
- int err = EMF_ERROR_NONE;
+ int err = EMAIL_ERROR_NONE;
- if (!mailbox ) {
- EM_DEBUG_EXCEPTION("mailbox[%p]", mailbox);
- err = EMF_ERROR_INVALID_PARAM;
+ email_event_t event_data;
+ email_account_t* ref_account = NULL;
+
+ memset(&event_data, 0x00, sizeof(email_event_t));
+
+ if (input_mailbox_id < 0) {
+ EM_DEBUG_EXCEPTION("parameter is invalid");
+ err = EMAIL_ERROR_INVALID_ACCOUNT;
goto FINISH_OFF;
}
- emf_event_t event_data;
- emf_account_t* ref_account = NULL;
-
- memset(&event_data, 0x00, sizeof(emf_event_t));
- if(mailbox->account_id == ALL_ACCOUNT) {
+ if(input_account_id == ALL_ACCOUNT) {
EM_DEBUG_LOG(">>>> emdaemon_sync_header for all account event_data.event_param_data_4 [%d]", event_data.event_param_data_4);
- event_data.type = EMF_EVENT_SYNC_HEADER;
- event_data.event_param_data_1 = mailbox ? EM_SAFE_STRDUP(mailbox->name) : NULL;
- event_data.event_param_data_3 = NULL;
- event_data.account_id = mailbox->account_id;
- /* In case of Mailbox NULL, we need to set arg as EMF_SYNC_ALL_MAILBOX */
- if (!event_data.event_param_data_1)
- event_data.event_param_data_4 = EMF_SYNC_ALL_MAILBOX;
+ event_data.type = EMAIL_EVENT_SYNC_HEADER;
+ event_data.account_id = input_account_id;
+ event_data.event_param_data_5 = input_mailbox_id;
+ /* In case of Mailbox NULL, we need to set arg as EMAIL_SYNC_ALL_MAILBOX */
+ if (input_mailbox_id == 0)
+ event_data.event_param_data_4 = EMAIL_SYNC_ALL_MAILBOX;
if (!emcore_insert_event(&event_data, (int*)handle, &err)) {
EM_DEBUG_EXCEPTION("emcore_insert_event falied [%d]", err);
}
else {
- if (!(ref_account = emdaemon_get_account_reference(mailbox->account_id))) {
- EM_DEBUG_EXCEPTION("emdaemon_get_account_reference failed [%d]", mailbox->account_id);
- err = EMF_ERROR_INVALID_ACCOUNT;
+ if (!(ref_account = emdaemon_get_account_reference(input_account_id))) {
+ EM_DEBUG_EXCEPTION("emdaemon_get_account_reference failed [%d]", input_account_id);
+ err = EMAIL_ERROR_INVALID_ACCOUNT;
goto FINISH_OFF;
}
/* Modified the code to sync all mailbox in a Single Event */
- switch (ref_account->account_bind_type) {
- case EMF_BIND_TYPE_EM_CORE:
- event_data.type = EMF_EVENT_SYNC_HEADER;
- event_data.event_param_data_1 = mailbox ? EM_SAFE_STRDUP(mailbox->name) : NULL;
- event_data.event_param_data_3 = NULL;
- event_data.account_id = mailbox->account_id;
- /* In case of Mailbox NULL, we need to set arg as EMF_SYNC_ALL_MAILBOX */
- if (!event_data.event_param_data_1)
- event_data.event_param_data_4 = EMF_SYNC_ALL_MAILBOX;
- EM_DEBUG_LOG(">>>> EVENT ARG [ %d ] ", event_data.event_param_data_4);
-
- if (!emcore_insert_event(&event_data, (int*)handle, &err)) {
- EM_DEBUG_EXCEPTION("emcore_insert_event falied [%d]", err);
- goto FINISH_OFF;
- }
- break;
-
- default:
- EM_DEBUG_EXCEPTION("unknown account bind type...");
- err = EMF_ERROR_INVALID_ACCOUNT;
- goto FINISH_OFF;
+ event_data.type = EMAIL_EVENT_SYNC_HEADER;
+ event_data.account_id = input_account_id;
+ event_data.event_param_data_5 = input_mailbox_id;
+ /* In case of Mailbox NULL, we need to set arg as EMAIL_SYNC_ALL_MAILBOX */
+ if (input_mailbox_id == 0)
+ event_data.event_param_data_4 = EMAIL_SYNC_ALL_MAILBOX;
+ EM_DEBUG_LOG(">>>> EVENT ARG [ %d ] ", event_data.event_param_data_4);
+
+ if (!emcore_insert_event(&event_data, (int*)handle, &err)) {
+ EM_DEBUG_EXCEPTION("emcore_insert_event falied [%d]", err);
+ goto FINISH_OFF;
}
}
-
-#ifdef __FEATURE_LOCAL_ACTIVITY__
+
+#ifdef __FEATURE_LOCAL_ACTIVITY__
EM_DEBUG_LOG("Setting g_local_activity_run ");
- g_local_activity_run = 1;
+ g_local_activity_run = 1;
#endif
-
+
ret = true;
-
+
FINISH_OFF:
if (err_code)
*err_code = err;
return ret;
}
-INTERNAL_FUNC int emdaemon_set_mail_slot_size_of_mailbox(int account_id, char* mailbox_name, int new_slot_size, unsigned* handle, int *err_code)
+INTERNAL_FUNC int emdaemon_set_mail_slot_size_of_mailbox(int account_id, int mailbox_id, int new_slot_size, unsigned* handle, int *err_code)
{
- EM_DEBUG_FUNC_BEGIN("account_id [%d], mailbox_name[%p], handle[%p], err_code[%p]", account_id, mailbox_name, handle, err_code);
+ EM_DEBUG_FUNC_BEGIN("account_id [%d], mailbox_id[%d], handle[%p], err_code[%p]", account_id, mailbox_id, handle, err_code);
int ret = false;
- int err = EMF_ERROR_NONE;
- emf_event_t event_data;
+ int err = EMAIL_ERROR_NONE;
+ email_event_t event_data;
if(handle == NULL) {
EM_DEBUG_EXCEPTION("handle is required");
- err = EMF_ERROR_INVALID_PARAM;
+ err = EMAIL_ERROR_INVALID_PARAM;
goto FINISH_OFF;
}
- memset(&event_data, 0x00, sizeof(emf_event_t));
+ memset(&event_data, 0x00, sizeof(email_event_t));
- event_data.type = EMF_EVENT_SET_MAIL_SLOT_SIZE;
- event_data.event_param_data_4 = new_slot_size;
- event_data.event_param_data_3 = EM_SAFE_STRDUP(mailbox_name);
+ event_data.type = EMAIL_EVENT_SET_MAIL_SLOT_SIZE;
event_data.account_id = account_id;
-
+ event_data.event_param_data_4 = mailbox_id;
+ event_data.event_param_data_5 = new_slot_size;
+
if (!emcore_insert_event(&event_data, (int*)handle, &err)) {
EM_DEBUG_EXCEPTION("emcore_insert_event falied [%d]", err);
goto FINISH_OFF;
}
-
+
ret = true;
-
+
FINISH_OFF:
if (err_code)
*err_code = err;
return ret;
}
+INTERNAL_FUNC int emdaemon_rename_mailbox(int input_mailbox_id, char *input_mailbox_path, char *input_mailbox_alias, int input_on_server, unsigned *output_handle)
+{
+ EM_DEBUG_FUNC_BEGIN("input_mailbox_id [%d], input_mailbox_path [%p], input_mailbox_alias[%p], input_on_server [%d], output_handle[%p]", input_mailbox_id, input_mailbox_path, input_mailbox_alias, input_on_server, output_handle);
+
+ int err = EMAIL_ERROR_NONE;
+ emstorage_account_tbl_t *account_data = NULL;
+ emstorage_mailbox_tbl_t *old_mailbox_data = NULL;
+ email_event_t event_data;
+
+ if(input_mailbox_id <= 0 || output_handle == NULL) {
+ EM_DEBUG_EXCEPTION("EMAIL_ERROR_INVALID_PARAM");
+ err = EMAIL_ERROR_INVALID_PARAM;
+ goto FINISH_OFF;
+ }
+
+ if (input_on_server) {
+ if ((err = emstorage_get_mailbox_by_id(input_mailbox_id, &old_mailbox_data)) != EMAIL_ERROR_NONE) {
+ EM_DEBUG_EXCEPTION("emstorage_get_mailbox_by_id failed [%d]", err);
+ goto FINISH_OFF;
+ }
+ }
+
+ if ((err = emstorage_rename_mailbox(input_mailbox_id, input_mailbox_path, input_mailbox_alias, true)) != EMAIL_ERROR_NONE) {
+ EM_DEBUG_EXCEPTION("emstorage_rename_mailbox failed [%d]", err);
+ goto FINISH_OFF;
+ }
+
+ if (input_on_server) {
+ if (!emstorage_get_account_by_id(old_mailbox_data->account_id, EMAIL_ACC_GET_OPT_DEFAULT, &account_data, true, &err)) {
+ EM_DEBUG_EXCEPTION("emstorage_get_account_by_id failed [%d]", err);
+ goto FINISH_OFF;
+ }
+
+ if (account_data->incoming_server_type == EMAIL_SERVER_TYPE_IMAP4) {
+ memset(&event_data, 0x00, sizeof(email_event_t));
+
+ event_data.type = EMAIL_EVENT_RENAME_MAILBOX_ON_IMAP_SERVER;
+ event_data.event_param_data_1 = EM_SAFE_STRDUP(old_mailbox_data->mailbox_name);
+ event_data.event_param_data_2 = EM_SAFE_STRDUP(input_mailbox_path);
+ event_data.event_param_data_4 = input_mailbox_id;
+ event_data.account_id = old_mailbox_data->account_id;
+
+ if (!emcore_insert_event(&event_data, (int*)output_handle, &err)) {
+ EM_DEBUG_EXCEPTION("emcore_insert_event falied [%d]", err);
+ goto FINISH_OFF;
+ }
+ }
+ }
+
+FINISH_OFF:
+ if (old_mailbox_data)
+ emstorage_free_mailbox(&old_mailbox_data, 1, NULL);
+
+ if (account_data)
+ emstorage_free_account(&account_data, 1, NULL);
+
+ EM_DEBUG_FUNC_END("err [%d]", err);
+ return err;
+}