2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.tizenopensource.org/license
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include "MsgHandle.h"
21 #include "MsgException.h"
24 #include "msg_private.h"
25 #include "msg_storage.h"
28 static int msg_thread_get_msg_type(int mainType, int subType);
29 /*==================================================================================================
30 FUNCTION IMPLEMENTATION
31 ==================================================================================================*/
32 EXPORT_API int msg_add_message(msg_handle_t handle, msg_struct_t opq_msg, const msg_struct_t send_opt)
34 msg_error_t err = MSG_SUCCESS;
36 if (handle == NULL || opq_msg == NULL || send_opt == NULL)
41 MsgHandle* pHandle = (MsgHandle*)handle;
43 msg_struct_s *pMsgStruct = (msg_struct_s *)opq_msg;
44 msg_struct_s *pStruct = (msg_struct_s *)send_opt;
48 err = pHandle->addMessage((MSG_MESSAGE_HIDDEN_S *)pMsgStruct->data, (MSG_SENDINGOPT_S *)pStruct->data);
50 catch (MsgException& e)
52 MSG_FATAL("%s", e.what());
53 return MSG_ERR_STORAGE_ERROR;
60 EXPORT_API int msg_add_syncml_message(msg_handle_t handle, const msg_struct_t syncml_msg)
62 msg_error_t err = MSG_SUCCESS;
64 if (handle == NULL || syncml_msg == NULL)
69 MsgHandle* pHandle = (MsgHandle*)handle;
70 msg_struct_s *pStruct = (msg_struct_s *)syncml_msg;
74 err = pHandle->addSyncMLMessage((MSG_SYNCML_MESSAGE_S *)pStruct->data);
76 catch (MsgException& e)
78 MSG_FATAL("%s", e.what());
79 return MSG_ERR_STORAGE_ERROR;
86 EXPORT_API int msg_update_message(msg_handle_t handle, const msg_struct_t opq_msg, const msg_struct_t send_opt)
88 msg_error_t err = MSG_SUCCESS;
90 if (handle == NULL || opq_msg == NULL || send_opt == NULL)
95 MsgHandle* pHandle = (MsgHandle*)handle;
96 msg_struct_s *pMsgStruct = (msg_struct_s *)opq_msg;
97 msg_struct_s* pStruct = (msg_struct_s *)send_opt;
99 MSG_MESSAGE_HIDDEN_S *msg = (MSG_MESSAGE_HIDDEN_S *)pMsgStruct->data;
101 if (msg->addr_list->nCount > 1)
103 MSG_DEBUG("Multiple Address cannot be updated [%d]", msg->addr_list->nCount);
109 err = pHandle->updateMessage(msg, (MSG_SENDINGOPT_S *)pStruct->data);
111 catch (MsgException& e)
113 MSG_FATAL("%s", e.what());
114 return MSG_ERR_STORAGE_ERROR;
121 EXPORT_API int msg_update_read_status(msg_handle_t handle, msg_message_id_t msg_id, bool read)
123 msg_error_t err = MSG_SUCCESS;
130 MsgHandle* pHandle = (MsgHandle*)handle;
134 err = pHandle->updateReadStatus(msg_id, read);
136 catch (MsgException& e)
138 MSG_FATAL("%s", e.what());
139 return MSG_ERR_STORAGE_ERROR;
146 EXPORT_API int msg_update_protected_status(msg_handle_t handle, msg_message_id_t msg_id, bool is_protected)
148 msg_error_t err = MSG_SUCCESS;
155 MsgHandle* pHandle = (MsgHandle*)handle;
159 err = pHandle->updateProtectedStatus(msg_id, is_protected);
161 catch (MsgException& e)
163 MSG_FATAL("%s", e.what());
164 return MSG_ERR_STORAGE_ERROR;
171 EXPORT_API int msg_delete_message(msg_handle_t handle, msg_message_id_t msg_id)
173 msg_error_t err = MSG_SUCCESS;
180 MsgHandle* pHandle = (MsgHandle*)handle;
184 err = pHandle->deleteMessage(msg_id);
186 catch (MsgException& e)
188 MSG_FATAL("%s", e.what());
189 return MSG_ERR_STORAGE_ERROR;
196 EXPORT_API int msg_delete_all_msgs_in_folder(msg_handle_t handle, msg_folder_id_t folder_id, bool bOnlyDB)
198 msg_error_t err = MSG_SUCCESS;
205 MsgHandle* pHandle = (MsgHandle*)handle;
209 err = pHandle->deleteAllMessagesInFolder(folder_id, bOnlyDB);
211 catch (MsgException& e)
213 MSG_FATAL("%s", e.what());
214 return MSG_ERR_STORAGE_ERROR;
221 EXPORT_API int msg_move_msg_to_folder(msg_handle_t handle, msg_message_id_t msg_id, msg_folder_id_t dest_folder_id)
223 msg_error_t err = MSG_SUCCESS;
230 MsgHandle* pHandle = (MsgHandle*)handle;
234 err = pHandle->moveMessageToFolder(msg_id, dest_folder_id);
236 catch (MsgException& e)
238 MSG_FATAL("%s", e.what());
239 return MSG_ERR_STORAGE_ERROR;
246 EXPORT_API int msg_move_msg_to_storage(msg_handle_t handle, msg_message_id_t msg_id, msg_storage_id_t storage_id)
248 msg_error_t err = MSG_SUCCESS;
255 if (storage_id != MSG_STORAGE_PHONE && storage_id != MSG_STORAGE_SIM)
257 MSG_FATAL("unsupported storage [%d]", storage_id);
258 return MSG_ERR_INVALID_PARAMETER;
261 MsgHandle* pHandle = (MsgHandle*)handle;
265 err = pHandle->moveMessageToStorage(msg_id, storage_id);
267 catch (MsgException& e)
269 MSG_FATAL("%s", e.what());
270 return MSG_ERR_STORAGE_ERROR;
277 EXPORT_API int msg_count_message(msg_handle_t handle, msg_folder_id_t folder_id, msg_struct_t count_info)
279 msg_error_t err = MSG_SUCCESS;
286 MsgHandle* pHandle = (MsgHandle*)handle;
287 msg_struct_s *pStruct = (msg_struct_s *)count_info;
290 err = pHandle->countMessage(folder_id, (MSG_COUNT_INFO_S *)pStruct->data);
292 catch (MsgException& e)
294 MSG_FATAL("%s", e.what());
295 return MSG_ERR_STORAGE_ERROR;
302 EXPORT_API int msg_count_msg_by_type(msg_handle_t handle, msg_message_type_t msg_type, int *msg_count)
304 msg_error_t err = MSG_SUCCESS;
311 MsgHandle* pHandle = (MsgHandle*)handle;
313 MSG_MESSAGE_TYPE_S msgType = {0};
315 if (msg_type == MSG_TYPE_SMS)
317 msgType.mainType = MSG_SMS_TYPE;
318 msgType.subType = MSG_NORMAL_SMS;
320 else if (msg_type == MSG_TYPE_SMS_WAPPUSH)
322 msgType.mainType = MSG_SMS_TYPE;
323 msgType.subType = MSG_WAP_SI_SMS;
325 else if (msg_type == MSG_TYPE_MMS)
327 msgType.mainType = MSG_MMS_TYPE;
328 msgType.subType = MSG_SENDREQ_MMS;
333 err = pHandle->countMsgByType(&msgType, msg_count);
335 catch (MsgException& e)
337 MSG_FATAL("%s", e.what());
338 return MSG_ERR_STORAGE_ERROR;
345 EXPORT_API int msg_count_msg_by_contact(msg_handle_t handle, const msg_struct_t addr_info, msg_struct_t msg_thread_count_list)
347 msg_error_t err = MSG_SUCCESS;
349 if (handle == NULL || addr_info == NULL)
354 MsgHandle* pHandle = (MsgHandle*)handle;
355 msg_struct_s *pAddr = (msg_struct_s *)addr_info;
356 msg_struct_s *pCount = (msg_struct_s *)msg_thread_count_list;
360 err = pHandle->countMsgByContact((MSG_THREAD_LIST_INDEX_INFO_S *)pAddr->data, (MSG_THREAD_COUNT_INFO_S *)pCount->data);
362 catch (MsgException& e)
364 MSG_FATAL("%s", e.what());
365 return MSG_ERR_STORAGE_ERROR;
372 EXPORT_API int msg_get_message(msg_handle_t handle, msg_message_id_t msg_id, msg_struct_t opq_msg, msg_struct_t send_opt)
374 msg_error_t err = MSG_SUCCESS;
376 if (handle == NULL || !opq_msg)
378 MSG_FATAL("handle or opq_msg is NULL");
382 MsgHandle* pHandle = (MsgHandle*)handle;
384 msg_struct_s *pMsgStruct = (msg_struct_s *)opq_msg;
385 msg_struct_s *pStruct = (msg_struct_s *)send_opt;
389 err = pHandle->getMessage(msg_id, (MSG_MESSAGE_HIDDEN_S *)pMsgStruct->data, (MSG_SENDINGOPT_S *)pStruct->data);
391 catch (MsgException& e)
393 MSG_FATAL("%s", e.what());
394 return MSG_ERR_STORAGE_ERROR;
401 EXPORT_API int msg_get_folder_view_list(msg_handle_t handle, msg_folder_id_t folder_id, const msg_struct_t sort_rule, msg_struct_list_s *msg_folder_view_list)
403 msg_error_t err = MSG_SUCCESS;
410 MsgHandle* pHandle = (MsgHandle*)handle;
411 msg_struct_s *pStruct = (msg_struct_s *)sort_rule;
415 if (sort_rule == NULL)
417 MSG_SORT_RULE_S sortRule = {0};
419 sortRule.sortType = MSG_SORT_BY_READ_STATUS;
420 sortRule.bAscending = true;
422 err = pHandle->getFolderViewList(folder_id, &sortRule, msg_folder_view_list);
426 err = pHandle->getFolderViewList(folder_id, (MSG_SORT_RULE_S *)pStruct->data, msg_folder_view_list);
429 catch (MsgException& e)
431 MSG_FATAL("%s", e.what());
432 return MSG_ERR_STORAGE_ERROR;
439 EXPORT_API int msg_get_thread_view_list(msg_handle_t handle, const msg_struct_t sort_rule, msg_struct_list_s *msg_thread_view_list)
441 msg_error_t err = MSG_SUCCESS;
448 MsgHandle* pHandle = (MsgHandle*)handle;
449 msg_struct_s *pStruct =(msg_struct_s *)sort_rule;
453 if (sort_rule == NULL)
455 MSG_SORT_RULE_S sortRule = {0};
457 sortRule.sortType = MSG_SORT_BY_THREAD_DATE;
458 sortRule.bAscending = false;
460 err = pHandle->getThreadViewList(&sortRule, msg_thread_view_list);
464 err = pHandle->getThreadViewList((MSG_SORT_RULE_S *)pStruct->data, msg_thread_view_list);
467 catch (MsgException& e)
469 MSG_FATAL("%s", e.what());
470 return MSG_ERR_STORAGE_ERROR;
477 EXPORT_API int msg_get_conversation_view_list(msg_handle_t handle, msg_thread_id_t thread_id, msg_struct_list_s *msg_conv_view_list)
479 msg_error_t err = MSG_SUCCESS;
486 MsgHandle* pHandle = (MsgHandle*)handle;
490 err = pHandle->getConversationViewList(thread_id, msg_conv_view_list);
492 catch (MsgException& e)
494 MSG_FATAL("%s", e.what());
495 return MSG_ERR_STORAGE_ERROR;
502 EXPORT_API int msg_delete_thread_message_list(msg_handle_t handle, msg_thread_id_t thread_id)
504 msg_error_t err = MSG_SUCCESS;
511 MsgHandle* pHandle = (MsgHandle*)handle;
515 err = pHandle->deleteThreadMessageList(thread_id);
517 catch (MsgException& e)
519 MSG_FATAL("%s", e.what());
520 return MSG_ERR_STORAGE_ERROR;
527 EXPORT_API int msg_add_folder(msg_handle_t handle, const msg_struct_t folder_info)
529 msg_error_t err = MSG_SUCCESS;
531 if (handle == NULL || folder_info == NULL)
536 MsgHandle* pHandle = (MsgHandle*)handle;
537 msg_struct_s *pStruct = (msg_struct_s *)folder_info;
541 err = pHandle->addFolder((MSG_FOLDER_INFO_S *)pStruct->data);
543 catch (MsgException& e)
545 MSG_FATAL("%s", e.what());
546 return MSG_ERR_STORAGE_ERROR;
553 EXPORT_API int msg_update_folder(msg_handle_t handle, const msg_struct_t folder_info)
555 msg_error_t err = MSG_SUCCESS;
557 if (handle == NULL || folder_info == NULL)
562 MsgHandle* pHandle = (MsgHandle*)handle;
563 msg_struct_s *pStruct = (msg_struct_s *)folder_info;
567 err = pHandle->updateFolder((MSG_FOLDER_INFO_S *)pStruct->data);
569 catch (MsgException& e)
571 MSG_FATAL("%s", e.what());
572 return MSG_ERR_STORAGE_ERROR;
579 EXPORT_API int msg_delete_folder(msg_handle_t handle, msg_folder_id_t folder_id)
581 msg_error_t err = MSG_SUCCESS;
588 MsgHandle* pHandle = (MsgHandle*)handle;
592 err = pHandle->deleteFolder(folder_id);
594 catch (MsgException& e)
596 MSG_FATAL("%s", e.what());
597 return MSG_ERR_STORAGE_ERROR;
604 EXPORT_API int msg_get_folder_list(msg_handle_t handle, msg_struct_list_s *folder_list)
606 msg_error_t err = MSG_SUCCESS;
613 MsgHandle* pHandle = (MsgHandle*)handle;
617 err = pHandle->getFolderList(folder_list);
619 catch (MsgException& e)
621 MSG_FATAL("%s", e.what());
622 return MSG_ERR_STORAGE_ERROR;
629 EXPORT_API int msg_generate_message(msg_handle_t handle, msg_message_type_t msg_type, msg_folder_id_t folder_id, unsigned int num_msg)
633 MSG_DEBUG("Handle is NULL");
637 if (folder_id >= MSG_MAX_FOLDER_ID)
639 MSG_DEBUG("folderId is invalid [%d]", folder_id);
643 MSG_DEBUG("type : %d, folder : %d, num_msg : %d", msg_type, folder_id, num_msg);
646 MSG_SENDINGOPT_S sendingOpt = {0};
647 sendingOpt.bSetting = false;
649 char strMsg[20] = {0};
650 char prefix[10] ="0103001";
651 // int postfix = 8111;
656 msg_struct_s *msg_s = NULL;
657 msg_struct_s *addr_s = NULL;
658 MSG_MESSAGE_HIDDEN_S *msgInfo = NULL;
659 MSG_ADDRESS_INFO_S *addrInfo = NULL;
661 for (unsigned int i = 0; i < num_msg; i++)
663 msg_s = (msg_struct_s *)msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
664 msgInfo = (MSG_MESSAGE_HIDDEN_S *)msg_s->data;
666 msgInfo->folderId = folder_id;
668 if (msg_type == MSG_TYPE_MMS)
670 msgInfo->mainType = MSG_MMS_TYPE;
671 msgInfo->subType = MSG_SENDREQ_MMS;
675 msgInfo->mainType = MSG_SMS_TYPE;
676 msgInfo->subType = MSG_NORMAL_SMS;
678 snprintf(strMsg, sizeof(strMsg), "test msg %d", i);
679 msgInfo->dataSize = strlen(strMsg);
680 msgInfo->pData = (void*)new char[msgInfo->dataSize+1];
681 memcpy((char *)msgInfo->pData, strMsg, msgInfo->dataSize);
682 ((char*) msgInfo->pData)[msgInfo->dataSize] = '\0';
685 msgInfo->storageId = MSG_STORAGE_PHONE;
687 msgInfo->addr_list->nCount = 1;
689 addr_s = (msg_struct_s *)msgInfo->addr_list->msg_struct_info[0];
691 addrInfo = (MSG_ADDRESS_INFO_S *)addr_s->data;
693 addrInfo->addressType = MSG_ADDRESS_TYPE_PLMN;
694 postfix = rand()%10000;
695 snprintf(addrInfo->addressVal, MAX_ADDRESS_VAL_LEN+1, "%s%04d", prefix, postfix);
697 addrInfo->recipientType = MSG_RECIPIENTS_TYPE_TO;
699 time(&(msgInfo->displayTime));
701 msgInfo->networkStatus = MSG_NETWORK_NOT_SEND;
702 msgInfo->bRead = false;
703 msgInfo->bProtected = false;
704 msgInfo->priority = MSG_MESSAGE_PRIORITY_NORMAL;
706 if (folder_id == MSG_OUTBOX_ID || folder_id == MSG_SENTBOX_ID)
707 msgInfo->direction = MSG_DIRECTION_TYPE_MO;
709 msgInfo->direction = MSG_DIRECTION_TYPE_MT;
711 if (msg_type == MSG_TYPE_MMS)
713 snprintf(msgInfo->subject, MAX_SUBJECT_LEN+1, "subject %d", i);
715 if(folder_id == MSG_INBOX_ID) msgInfo->networkStatus = MSG_NETWORK_RETRIEVE_SUCCESS;
717 //MMS_MESSAGE_DATA_S* mms_data;
718 //MMS_PAGE_S* page[2];
719 //MMS_MEDIA_S* media[5];
721 // mms_data = msg_mms_create_message();
723 // msg_mms_set_rootlayout(mms_data, 100, 100, 0xffffff);
724 // msg_mms_add_region(mms_data, "Image", 0, 50, 100, 50, 0xffffff);
725 // msg_mms_add_region(mms_data, "Text", 0, 0, 100, 50, 0xffffff);
727 //------------> 1st Slide Composing
728 // page[0] = msg_mms_add_page(mms_data, 5440);
730 // media[0] = msg_mms_add_media(page[0], MMS_SMIL_MEDIA_IMG, "Image", (char*)"/opt/etc/msg-service/P091120_104633.jpg");
731 // media[1] = msg_mms_add_media(page[0], MMS_SMIL_MEDIA_AUDIO, NULL, (char*)"/opt/etc/msg-service/audio.amr");
732 // media[2] = msg_mms_add_media(page[0], MMS_SMIL_MEDIA_TEXT, "Text", (char*)"/opt/etc/msg-service/Temp0_2.txt");
733 // media[2]->sMedia.sText.nColor = 0x000000;
734 // media[2]->sMedia.sText.nSize = MMS_SMIL_FONT_SIZE_NORMAL;
735 // media[2]->sMedia.sText.bBold = true;
737 //------------> 2nd Slide Composing
738 // page[1] = msg_mms_add_page(mms_data, 4544);
740 // media[3] = msg_mms_add_media(page[1], MMS_SMIL_MEDIA_TEXT, "Text", (char*)"/opt/etc/msg-service/Temp1_0.txt");
741 // media[3]->sMedia.sText.nColor = 0x000000;
742 // media[3]->sMedia.sText.nSize = MMS_SMIL_FONT_SIZE_NORMAL;
743 // media[3]->sMedia.sText.bItalic = true;
744 // media[4] = msg_mms_add_media(page[1], MMS_SMIL_MEDIA_VIDEO, "Text", (char*)"/opt/etc/msg-service/V091120_104905.3gp");
745 // strncpy(media[4]->szAlt, "Video Load Fail", MAX_SMIL_ALT_LEN-1);
747 //FIXME msg_mms_set_message_body((msg_message_t)&msgInfo, mms_data);
749 // msg_mms_destroy_message(mms_data);
752 //err = msg_add_message(handle, (msg_message_t)&msgInfo, &sendingOpt);
755 MsgHandle* pHandle = (MsgHandle*)handle;
756 err = pHandle->addMessage(msgInfo, &sendingOpt);
758 catch (MsgException& e)
760 MSG_FATAL("%s", e.what());
761 return MSG_ERR_STORAGE_ERROR;
764 if (msg_type == MSG_TYPE_MMS && msgInfo->pMmsData) //free pMmsData directly. It is added to enhance performance
765 delete [] static_cast<char*>(msgInfo->pMmsData);
769 MSG_DEBUG("err [%d]", err);
773 msg_release_struct((msg_struct_t *)&msg_s);
780 EXPORT_API int msg_generate_sms(msg_handle_t handle, msg_folder_id_t folder_id, unsigned int num_msg)
782 MSG_DEBUG("folder %d, num_msg %d", folder_id, num_msg);
786 MSG_DEBUG("Handle is NULL");
790 if (folder_id >= MSG_MAX_FOLDER_ID)
792 MSG_DEBUG("folderId is invalid");
797 char strMsg[20] = {0};
798 char prefix[10] ="0103001";
801 MSG_SENDINGOPT_S sendingOpt = {0};
802 sendingOpt.bSetting = false;
806 msg_struct_s *msg_s = NULL;
807 msg_struct_s *addr_s = NULL;
808 MSG_MESSAGE_HIDDEN_S *msgInfo = NULL;
809 MSG_ADDRESS_INFO_S *addrInfo = NULL;
811 for (unsigned int i = 0; i < num_msg; i++)
813 msg_s = (msg_struct_s *)msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
814 msgInfo = (MSG_MESSAGE_HIDDEN_S *)msg_s->data;
816 msgInfo->msgId = 0; // It should be set 0
817 msgInfo->folderId = folder_id;
819 msgInfo->mainType = MSG_SMS_TYPE;
820 msgInfo->subType = 0;
822 msgInfo->storageId = MSG_STORAGE_PHONE;
824 snprintf(strMsg, sizeof(strMsg), "test %d", i);
825 msgInfo->dataSize = strlen(strMsg);
826 msgInfo->pData = strMsg;
828 msgInfo->addr_list->nCount = 1;
830 addr_s = (msg_struct_s *)msgInfo->addr_list->msg_struct_info[0];
832 addrInfo = (MSG_ADDRESS_INFO_S *)addr_s->data;
834 addrInfo->addressType = MSG_ADDRESS_TYPE_PLMN;
835 postfix = rand()%10000;
836 snprintf(addrInfo->addressVal, MAX_ADDRESS_VAL_LEN+1, "%s%04d", prefix, postfix);
838 addrInfo->recipientType = MSG_RECIPIENTS_TYPE_TO;
840 time(&(msgInfo->displayTime));
842 msgInfo->networkStatus = MSG_NETWORK_NOT_SEND;
843 msgInfo->bRead = false;
844 msgInfo->bProtected = false;
845 msgInfo->priority = MSG_MESSAGE_PRIORITY_NORMAL;
846 msgInfo->direction = MSG_DIRECTION_TYPE_MO;
848 // err = msg_add_message(handle, (msg_message_t) &msgInfo, &sendingOpt);
851 MsgHandle* pHandle = (MsgHandle*)handle;
852 err = pHandle->addMessage(msgInfo, &sendingOpt);
854 catch (MsgException& e)
856 MSG_FATAL("%s", e.what());
857 return MSG_ERR_STORAGE_ERROR;
862 MSG_DEBUG("err [%d]", err);
866 msg_release_struct((msg_struct_t *)&msg_s);
873 EXPORT_API int msg_get_quick_panel_data(msg_handle_t handle, msg_quickpanel_type_t type, msg_struct_t opq_msg)
875 msg_error_t err = MSG_SUCCESS;
877 if (handle == NULL || !opq_msg )
879 MSG_FATAL("handle or opq_msg is NULL");
883 MsgHandle* pHandle = (MsgHandle*)handle;
884 msg_struct_s *pMsg = (msg_struct_s *)opq_msg;
888 err = pHandle->getQuickPanelData(type, (MSG_MESSAGE_HIDDEN_S *)pMsg->data);
890 catch (MsgException& e)
892 MSG_FATAL("%s", e.what());
893 return MSG_ERR_STORAGE_ERROR;
900 EXPORT_API int msg_reset_database(msg_handle_t handle)
902 msg_error_t err = MSG_SUCCESS;
909 MsgHandle* pHandle = (MsgHandle*)handle;
913 err = pHandle->resetDatabase();
915 catch (MsgException& e)
917 MSG_FATAL("%s", e.what());
918 return MSG_ERR_STORAGE_ERROR;
925 EXPORT_API int msg_get_mem_size(msg_handle_t handle, unsigned int* memsize)
927 msg_error_t err = MSG_SUCCESS;
934 MsgHandle* pHandle = (MsgHandle*)handle;
938 err = pHandle->getMemSize(memsize);
940 catch (MsgException& e)
942 MSG_FATAL("%s", e.what());
943 return MSG_ERR_STORAGE_ERROR;
950 EXPORT_API int msg_backup_message(msg_handle_t handle)
952 msg_error_t err = MSG_SUCCESS;
959 MsgHandle* pHandle = (MsgHandle*)handle;
963 err = pHandle->backupMessage();
965 catch (MsgException& e)
967 MSG_FATAL("%s", e.what());
968 return MSG_ERR_STORAGE_ERROR;
975 EXPORT_API int msg_restore_message(msg_handle_t handle)
977 msg_error_t err = MSG_SUCCESS;
984 MsgHandle* pHandle = (MsgHandle*)handle;
988 err = pHandle->restoreMessage();
990 catch (MsgException& e)
992 MSG_FATAL("%s", e.what());
993 return MSG_ERR_STORAGE_ERROR;
1000 EXPORT_API int msg_search_message_for_thread_view(msg_handle_t handle, const char *search_string, msg_struct_list_s *msg_thread_view_list)
1002 msg_error_t err = MSG_SUCCESS;
1004 if (handle == NULL || search_string == NULL)
1009 if (strlen(search_string) <= 0 || strlen(search_string) > MAX_MSG_TEXT_LEN)
1014 MsgHandle* pHandle = (MsgHandle*)handle;
1018 err = pHandle->searchMessage(search_string, msg_thread_view_list);
1020 catch (MsgException& e)
1022 MSG_FATAL("%s", e.what());
1023 return MSG_ERR_STORAGE_ERROR;
1030 EXPORT_API int msg_search_message(msg_handle_t handle, const msg_struct_t msg_search_conditions, int offset, int limit, msg_struct_list_s *msg_list)
1032 msg_error_t err = MSG_SUCCESS;
1034 if (handle == NULL || msg_search_conditions == NULL)
1039 MsgHandle* pHandle = (MsgHandle*)handle;
1040 msg_struct_s *pStruct = (msg_struct_s *)msg_search_conditions;
1044 err = pHandle->searchMessage((MSG_SEARCH_CONDITION_S *)pStruct->data, offset, limit, msg_list);
1046 catch (MsgException& e)
1048 MSG_FATAL("%s", e.what());
1049 return MSG_ERR_STORAGE_ERROR;
1055 EXPORT_API int msg_get_reject_msg_list(msg_handle_t handle, const char *phone_num, msg_struct_list_s *msg_reject_msg_list)
1057 msg_error_t err = MSG_SUCCESS;
1064 MsgHandle* pHandle = (MsgHandle*)handle;
1068 err = pHandle->getRejectMsgList(phone_num, msg_reject_msg_list);
1070 catch (MsgException& e)
1072 MSG_FATAL("%s", e.what());
1073 return MSG_ERR_STORAGE_ERROR;
1080 EXPORT_API int msg_reg_storage_change_callback(msg_handle_t handle, msg_storage_change_cb cb, void *user_param)
1082 msg_error_t err = MSG_SUCCESS;
1084 if (handle == NULL || cb == NULL)
1089 MsgHandle* pHandle = (MsgHandle*)handle;
1093 err = pHandle->regStorageChangeCallback(cb, user_param);
1095 catch (MsgException& e)
1097 MSG_FATAL("%s", e.what());
1098 return MSG_ERR_CALLBACK_ERROR;
1105 EXPORT_API int msg_get_report_status(msg_handle_t handle, msg_message_id_t msg_id, msg_struct_t report_status)
1107 msg_error_t err = MSG_SUCCESS;
1109 if (handle == NULL || msg_id < 1)
1114 MsgHandle* pHandle = (MsgHandle*)handle;
1115 msg_struct_s *pStruct = (msg_struct_s *)report_status;
1119 err = pHandle->getReportStatus(msg_id, (MSG_REPORT_STATUS_INFO_S *)pStruct->data);
1121 catch (MsgException& e)
1123 MSG_FATAL("%s", e.what());
1124 return MSG_ERR_STORAGE_ERROR;
1130 EXPORT_API int msg_get_address_list(msg_handle_t handle, msg_thread_id_t thread_id, msg_struct_list_s *msg_address_list)
1132 msg_error_t err = MSG_SUCCESS;
1139 MsgHandle* pHandle = (MsgHandle*)handle;
1143 err = pHandle->getAddressList(thread_id, msg_address_list);
1145 catch (MsgException& e)
1147 MSG_FATAL("%s", e.what());
1148 return MSG_ERR_STORAGE_ERROR;
1155 EXPORT_API int msg_get_thread_id_by_address(msg_handle_t handle, msg_struct_list_s *msg_address_list, msg_thread_id_t *thread_id)
1157 msg_error_t err = MSG_SUCCESS;
1159 if (handle == NULL || msg_address_list->nCount < 1)
1164 MsgHandle* pHandle = (MsgHandle*)handle;
1168 err = pHandle->getThreadIdByAddress(msg_address_list, thread_id);
1170 catch (MsgException& e)
1172 MSG_FATAL("%s", e.what());
1173 return MSG_ERR_STORAGE_ERROR;
1180 EXPORT_API int msg_get_thread(msg_handle_t handle, msg_thread_id_t thread_id, msg_struct_t msg_thread)
1182 msg_error_t err = MSG_SUCCESS;
1184 if (handle == NULL || msg_thread == NULL ) {
1185 MSG_FATAL("handle or msg_thread is NULL");
1189 MsgHandle* pHandle = (MsgHandle*)handle;
1190 msg_struct_s *msgThread = (msg_struct_s *)msg_thread;
1191 if (msgThread->type != MSG_STRUCT_THREAD_INFO) {
1192 MSG_FATAL("Invaild type. type [%d]", msgThread->type);
1193 return MSG_ERR_INVALID_PARAMETER;
1196 MSG_THREAD_VIEW_S* pThreadInfo = (MSG_THREAD_VIEW_S *)msgThread->data;
1200 err = pHandle->getThread(thread_id, pThreadInfo);
1202 catch (MsgException& e)
1204 MSG_FATAL("%s", e.what());
1205 return MSG_ERR_STORAGE_ERROR;
1212 EXPORT_API int msg_get_message_list(msg_handle_t handle, msg_folder_id_t folder_id, msg_thread_id_t thread_id, msg_message_type_t msg_type, msg_storage_id_t storage_id, msg_struct_list_s *msg_list)
1214 msg_error_t err = MSG_SUCCESS;
1216 if (handle == NULL) {
1220 MsgHandle* pHandle = (MsgHandle*)handle;
1224 err = pHandle->getMessageList(folder_id, thread_id, msg_type, storage_id, msg_list);
1226 catch (MsgException& e)
1228 MSG_FATAL("%s", e.what());
1229 return MSG_ERR_STORAGE_ERROR;
1235 static int msg_thread_get_msg_type(int mainType, int subType)
1237 if (mainType == MSG_SMS_TYPE)
1239 if (subType == MSG_CB_SMS)
1240 return MSG_TYPE_SMS_CB;
1241 else if (subType == MSG_JAVACB_SMS)
1242 return MSG_TYPE_SMS_JAVACB;
1243 else if (subType == MSG_WAP_SI_SMS || subType == MSG_WAP_SL_SMS)
1244 return MSG_TYPE_SMS_WAPPUSH;
1245 else if (subType == MSG_MWI_VOICE_SMS || subType == MSG_MWI_FAX_SMS
1246 || subType == MSG_MWI_EMAIL_SMS || subType == MSG_MWI_OTHER_SMS)
1247 return MSG_TYPE_SMS_MWI;
1248 else if (subType == MSG_SYNCML_CP)
1249 return MSG_TYPE_SMS_SYNCML;
1250 else if (subType == MSG_REJECT_SMS)
1251 return MSG_TYPE_SMS_REJECT;
1253 return MSG_TYPE_SMS;
1255 else if (mainType == MSG_MMS_TYPE)
1257 if (subType == MSG_NOTIFICATIONIND_MMS)
1258 return MSG_TYPE_MMS_NOTI;
1259 else if (subType == MSG_SENDREQ_JAVA_MMS)
1260 return MSG_TYPE_MMS_JAVA;
1262 return MSG_TYPE_MMS;
1265 return MSG_TYPE_INVALID;
1269 int msg_syncml_info_get_int(void *syncml_info, int field)
1272 MSG_SYNCML_MESSAGE_S *pSync = (MSG_SYNCML_MESSAGE_S *)syncml_info;
1275 case MSG_SYNCML_INFO_EXTID_INT:
1276 result = pSync->extId;
1278 case MSG_SYNCML_INFO_PINCODE_INT:
1279 result = pSync->pinCode;
1288 int msg_count_info_get_int(void *count_info, int field)
1291 MSG_COUNT_INFO_S *pCount = (MSG_COUNT_INFO_S *)count_info;
1294 case MSG_COUNT_INFO_READ_INT:
1295 result = pCount->nReadCnt;
1297 case MSG_COUNT_INFO_UNREAD_INT:
1298 result = pCount->nUnreadCnt;
1300 case MSG_COUNT_INFO_SMS_INT:
1301 result = pCount->nSms;
1303 case MSG_COUNT_INFO_MMS_INT:
1304 result = pCount->nMms;
1313 int msg_thread_count_get_int(void *count_info, int field)
1316 MSG_THREAD_COUNT_INFO_S *pCount = (MSG_THREAD_COUNT_INFO_S *)count_info;
1319 case MSG_THREAD_COUNT_TOTAL_INT:
1320 result = pCount->totalCount;
1322 case MSG_THREAD_COUNT_UNREAD_INT:
1323 result = pCount->unReadCount;
1325 case MSG_THREAD_COUNT_SMS_INT:
1326 result = pCount->smsMsgCount;
1328 case MSG_THREAD_COUNT_MMS_INT:
1329 result = pCount->mmsMsgCount;
1338 int msg_thread_index_get_int(void *index_info, int field)
1341 MSG_THREAD_LIST_INDEX_S *pIndex = (MSG_THREAD_LIST_INDEX_S *)index_info;
1344 case MSG_THREAD_LIST_INDEX_CONTACTID_INT:
1345 result = pIndex->contactId;
1354 int msg_sortrule_get_int(void *sort_info, int field)
1357 MSG_SORT_RULE_S *pSort = (MSG_SORT_RULE_S *)sort_info;
1360 case MSG_SORT_RULE_SORT_TYPE_INT:
1361 result = pSort->sortType;
1370 int msg_folder_info_get_int(void *folder_info, int field)
1373 MSG_FOLDER_INFO_S *pFolder = (MSG_FOLDER_INFO_S *)folder_info;
1376 case MSG_FOLDER_INFO_ID_INT:
1377 result = pFolder->folderId;
1379 case MSG_FOLDER_INFO_TYPE_INT:
1380 result = pFolder->folderType;
1389 int msg_thread_info_get_int(void *data, int field)
1392 MSG_THREAD_VIEW_S *pThread = (MSG_THREAD_VIEW_S *)data;
1396 case MSG_THREAD_ID_INT :
1397 result = pThread->threadId;
1399 case MSG_THREAD_MSG_TYPE_INT :
1400 result = msg_thread_get_msg_type(pThread->mainType, pThread->subType);
1402 case MSG_THREAD_MSG_TIME_INT :
1403 result = pThread->threadTime;
1405 case MSG_THREAD_DIRECTION_INT :
1406 result = pThread->direction;
1408 case MSG_THREAD_UNREAD_COUNT_INT :
1409 result = pThread->unreadCnt;
1411 case MSG_THREAD_SMS_COUNT_INT :
1412 result = pThread->smsCnt;
1414 case MSG_THREAD_MMS_COUNT_INT :
1415 result = pThread->mmsCnt;
1424 int msg_search_condition_get_int(void *condition_info, int field)
1427 MSG_SEARCH_CONDITION_S *pCond = (MSG_SEARCH_CONDITION_S *)condition_info;
1430 case MSG_SEARCH_CONDITION_FOLDERID_INT:
1431 result = pCond->folderId;
1433 case MSG_SEARCH_CONDITION_MSGTYPE_INT:
1434 result = pCond->msgType;
1436 case MSG_SEARCH_CONDITION_RESERVED_INT:
1437 result = pCond->reserved;
1446 int msg_report_status_get_int(void *report_info, int field)
1449 MSG_REPORT_STATUS_INFO_S *pReport = (MSG_REPORT_STATUS_INFO_S *)report_info;
1452 case MSG_REPORT_STATUS_DELIVERY_STATUS_INT:
1453 result = pReport->deliveryStatus;
1455 case MSG_REPORT_STATUS_DELIVERY_TIME_INT:
1456 result = pReport->deliveryStatusTime;
1458 case MSG_REPORT_STATUS_READ_STATUS_INT:
1459 result = pReport->readStatus;
1461 case MSG_REPORT_STATUS_READ_TIME_INT:
1462 result = pReport->readStatusTime;
1471 char* msg_folder_info_get_str(void *folder_info, int field)
1473 char *result = NULL;
1474 MSG_FOLDER_INFO_S *pFolder = (MSG_FOLDER_INFO_S *)folder_info;
1477 case MSG_FOLDER_INFO_NAME_STR:
1478 result = pFolder->folderName;
1487 char *msg_thread_info_get_str(void *data, int field)
1489 char *ret_str = NULL;
1490 MSG_THREAD_VIEW_S *pThread = (MSG_THREAD_VIEW_S *)data;
1494 case MSG_THREAD_NAME_STR :
1495 ret_str = pThread->threadName;
1497 case MSG_THREAD_MSG_DATA_STR :
1498 ret_str = pThread->threadData;
1507 char* msg_search_condition_get_str(void *condition_info, int field, int size)
1509 char *result = NULL;
1510 MSG_SEARCH_CONDITION_S *search_cond = (MSG_SEARCH_CONDITION_S *)condition_info;
1513 case MSG_SEARCH_CONDITION_ADDRESS_VALUE_STR:
1514 result = search_cond->pAddressVal;
1516 case MSG_SEARCH_CONDITION_SEARCH_VALUE_STR:
1517 result = search_cond->pSearchVal;
1527 bool msg_sendopt_get_bool(void *send_opt, int field)
1529 bool result = false;
1530 MSG_SENDINGOPT_S *sendopt = (MSG_SENDINGOPT_S *)send_opt;
1533 case MSG_SEND_OPT_SETTING_BOOL:
1534 result = sendopt->bDeliverReq;
1536 case MSG_SEND_OPT_KEEPCOPY_BOOL:
1537 result = sendopt->bDeliverReq;
1539 case MSG_SEND_OPT_DELIVER_REQ_BOOL:
1540 result = sendopt->bDeliverReq;
1548 bool msg_sortrule_get_bool(void *sort_rule, int field)
1550 bool result = false;
1551 MSG_SORT_RULE_S *pSort = (MSG_SORT_RULE_S *)sort_rule;
1554 case MSG_SORT_RULE_ACSCEND_BOOL:
1555 result = pSort->bAscending;
1563 int msg_sendopt_get_struct_handle(msg_struct_s *msg_struct, int field, void **value)
1565 msg_error_t err = MSG_SUCCESS;
1566 if(!msg_struct || !value)
1567 return MSG_ERR_NULL_POINTER;
1569 MSG_SENDINGOPT_S *sendopt = (MSG_SENDINGOPT_S *)msg_struct->data;
1573 case MSG_SEND_OPT_MMS_OPT_HND:
1574 *value = (void *)sendopt->mmsSendOpt;
1576 case MSG_SEND_OPT_SMS_OPT_HND:
1577 *value = (void *)sendopt->smsSendOpt;
1580 err = MSG_ERR_UNKNOWN;
1586 int msg_syncml_get_struct_handle(msg_struct_s *msg_struct, int field, void **value)
1588 msg_error_t err = MSG_SUCCESS;
1590 if(!msg_struct || !value)
1591 return MSG_ERR_NULL_POINTER;
1593 MSG_SYNCML_MESSAGE_S *pSync = (MSG_SYNCML_MESSAGE_S *)msg_struct->data;
1596 case MSG_SYNCML_INFO_MESSAGE_HND:
1597 *value = (void *)pSync->msg;
1600 err = MSG_ERR_UNKNOWN;
1607 int msg_thread_index_get_struct_handle(msg_struct_s *msg_struct, int field, void **value)
1609 msg_error_t err = MSG_SUCCESS;
1611 if(!msg_struct || !value)
1612 return MSG_ERR_NULL_POINTER;
1614 MSG_THREAD_LIST_INDEX_INFO_S *pIndex = (MSG_THREAD_LIST_INDEX_INFO_S *)msg_struct->data;
1617 case MSG_SYNCML_INFO_MESSAGE_HND:
1618 *value = (void *)pIndex->msgAddrInfo;
1621 err = MSG_ERR_UNKNOWN;
1628 int msg_address_info_get_int(void *addr_info, int field)
1631 MSG_ADDRESS_INFO_S *pAddr = (MSG_ADDRESS_INFO_S *)addr_info;
1634 case MSG_ADDRESS_INFO_ADDRESS_TYPE_INT:
1635 result = pAddr->addressType;
1637 case MSG_ADDRESS_INFO_RECIPIENT_TYPE_INT:
1638 result = pAddr->recipientType;
1640 case MSG_ADDRESS_INFO_CONTACT_ID_INT:
1641 result = pAddr->contactId;
1648 int msg_mms_sendopt_get_int(void *opt_info, int field)
1651 MMS_SENDINGOPT_S *pOpt = (MMS_SENDINGOPT_S *)opt_info;
1654 case MSG_MMS_SENDOPTION_EXPIRY_TIME_INT:
1655 result = pOpt->expiryTime;
1657 case MSG_MMS_SENDOPTION_DELIVERY_TIME_INT:
1658 result = pOpt->deliveryTime;
1660 case MSG_MMS_SENDOPTION_PRIORITY_INT:
1661 result = pOpt->priority;
1669 int msg_reject_message_get_int(void *msg_info, int field)
1672 MSG_REJECT_MSG_INFO_S *pMsg = (MSG_REJECT_MSG_INFO_S *)msg_info;
1675 case MSG_REJECT_MESSAGE_MSGID_INT:
1676 result = pMsg->msgId;
1678 case MSG_REJECT_MESSAGE_DISPLAY_TIME_INT:
1679 result = pMsg->displayTime;
1687 char* msg_address_info_get_str(void *addr_info, int field, int size)
1689 char *result = NULL;
1690 MSG_ADDRESS_INFO_S *pAddr = (MSG_ADDRESS_INFO_S *)addr_info;
1693 case MSG_ADDRESS_INFO_ADDRESS_VALUE_STR:
1694 result = pAddr->addressVal;
1696 case MSG_ADDRESS_INFO_DISPLAYNAME_STR:
1697 result = pAddr->displayName;
1707 char* msg_reject_message_get_str(void *msg_info, int field, int size)
1709 char *result = NULL;
1710 MSG_REJECT_MSG_INFO_S *pMsg = (MSG_REJECT_MSG_INFO_S *)msg_info;
1713 case MSG_REJECT_MESSAGE_MSGTEXT_STR:
1714 result = pMsg->msgText;
1723 bool msg_mms_sendopt_get_bool(void *opt_info, int field)
1725 bool result = false;
1726 MMS_SENDINGOPT_S *pOpt = (MMS_SENDINGOPT_S *)opt_info;
1729 case MSG_MMS_SENDOPTION_READ_REQUEST_BOOL:
1730 result = pOpt->bReadReq;
1732 case MSG_MMS_SENDOPTION_DELIVERY_CUSTOMTIME_BOOL:
1733 result = pOpt->bUseDeliveryCustomTime;
1741 bool msg_sms_sendopt_get_bool(void *opt_info, int field)
1743 bool result = false;
1744 SMS_SENDINGOPT_S *pOpt = (SMS_SENDINGOPT_S *)opt_info;
1747 case MSG_SMS_SENDOPT_REPLYPATH_BOOL:
1748 result = pOpt->bReplyPath;
1756 int msg_syncml_info_set_int(void *syncml_info, int field, int value)
1759 msg_error_t err = MSG_SUCCESS;
1761 return MSG_ERR_NULL_POINTER;
1763 MSG_SYNCML_MESSAGE_S *pSync = (MSG_SYNCML_MESSAGE_S *)syncml_info;
1766 case MSG_SYNCML_INFO_EXTID_INT:
1767 pSync->extId = value;
1769 case MSG_SYNCML_INFO_PINCODE_INT:
1770 pSync->pinCode = value;
1773 err = MSG_ERR_UNKNOWN;
1780 int msg_count_info_set_int(void *count_info, int field, int value)
1782 msg_error_t err = MSG_SUCCESS;
1784 return MSG_ERR_NULL_POINTER;
1786 MSG_COUNT_INFO_S *pCount = (MSG_COUNT_INFO_S *)count_info;
1790 case MSG_COUNT_INFO_READ_INT:
1791 pCount->nReadCnt = value;
1793 case MSG_COUNT_INFO_UNREAD_INT:
1794 pCount->nUnreadCnt = value;
1796 case MSG_COUNT_INFO_SMS_INT:
1797 pCount->nSms = value;
1799 case MSG_COUNT_INFO_MMS_INT:
1800 pCount->nMms = value;
1803 err = MSG_ERR_UNKNOWN;
1809 int msg_thread_count_set_int(void *count_info, int field, int value)
1811 msg_error_t err = MSG_SUCCESS;
1813 return MSG_ERR_NULL_POINTER;
1815 MSG_THREAD_COUNT_INFO_S *pCount = (MSG_THREAD_COUNT_INFO_S *)count_info;
1818 case MSG_THREAD_COUNT_TOTAL_INT:
1819 pCount->totalCount = value;
1821 case MSG_THREAD_COUNT_UNREAD_INT:
1822 pCount->unReadCount = value;
1824 case MSG_THREAD_COUNT_SMS_INT:
1825 pCount->smsMsgCount = value;
1827 case MSG_THREAD_COUNT_MMS_INT:
1828 pCount->mmsMsgCount = value;
1831 err = MSG_ERR_UNKNOWN;
1837 int msg_thread_index_set_int(void *index_info, int field, int value)
1839 msg_error_t err = MSG_SUCCESS;
1841 return MSG_ERR_NULL_POINTER;
1843 MSG_THREAD_LIST_INDEX_S *pIndex = (MSG_THREAD_LIST_INDEX_S *)index_info;
1846 case MSG_THREAD_LIST_INDEX_CONTACTID_INT:
1847 pIndex->contactId = value;
1850 err = MSG_ERR_UNKNOWN;
1857 int msg_sortrule_set_int(void *sort_info, int field, int value)
1859 msg_error_t err = MSG_SUCCESS;
1862 return MSG_ERR_NULL_POINTER;
1864 MSG_SORT_RULE_S *pSort = (MSG_SORT_RULE_S *)sort_info;
1867 case MSG_SORT_RULE_SORT_TYPE_INT:
1868 pSort->sortType = value;
1871 err = MSG_ERR_UNKNOWN;
1877 int msg_folder_info_set_int(void *folder_info, int field, int value)
1879 msg_error_t err = MSG_SUCCESS;
1881 return MSG_ERR_NULL_POINTER;
1883 MSG_FOLDER_INFO_S *pFolder = (MSG_FOLDER_INFO_S *)folder_info;
1886 case MSG_FOLDER_INFO_ID_INT:
1887 pFolder->folderId = value;
1889 case MSG_FOLDER_INFO_TYPE_INT:
1890 pFolder->folderType = value;
1893 err = MSG_ERR_UNKNOWN;
1900 int msg_search_condition_set_int(void *condition_info, int field, int value)
1902 msg_error_t err = MSG_SUCCESS;
1904 return MSG_ERR_NULL_POINTER;
1906 MSG_SEARCH_CONDITION_S *pCond = (MSG_SEARCH_CONDITION_S *)condition_info;
1909 case MSG_SEARCH_CONDITION_FOLDERID_INT:
1910 pCond->folderId = value;
1912 case MSG_SEARCH_CONDITION_MSGTYPE_INT:
1913 pCond->msgType = value;
1915 case MSG_SEARCH_CONDITION_RESERVED_INT:
1916 pCond->reserved = value;
1919 err = MSG_ERR_UNKNOWN;
1926 int msg_report_status_set_int(void *report_info, int field, int value)
1928 msg_error_t err = MSG_SUCCESS;
1930 return MSG_ERR_NULL_POINTER;
1932 MSG_REPORT_STATUS_INFO_S *pReport = (MSG_REPORT_STATUS_INFO_S *)report_info;
1935 case MSG_REPORT_STATUS_DELIVERY_STATUS_INT:
1936 pReport->deliveryStatus = value;
1938 case MSG_REPORT_STATUS_DELIVERY_TIME_INT:
1939 pReport->deliveryStatusTime = value;
1941 case MSG_REPORT_STATUS_READ_STATUS_INT:
1942 pReport->readStatus = value;
1944 case MSG_REPORT_STATUS_READ_TIME_INT:
1945 pReport->readStatusTime = value;
1948 err = MSG_ERR_UNKNOWN;
1955 int msg_folder_info_set_str(void *folder_info, int field, char *value, int size)
1957 msg_error_t err = MSG_SUCCESS;
1958 if(!folder_info || !value)
1959 return MSG_ERR_NULL_POINTER;
1960 MSG_FOLDER_INFO_S *pFolder = (MSG_FOLDER_INFO_S *)folder_info;
1962 (size > MAX_FOLDER_NAME_SIZE)? _len = MAX_FOLDER_NAME_SIZE : _len = size;
1965 case MSG_FOLDER_INFO_NAME_STR:
1966 strncpy(pFolder->folderName, value, _len);
1969 err = MSG_ERR_UNKNOWN;
1976 int msg_search_condition_set_str(void *condition_info, int field, char *value, int size)
1978 msg_error_t err = MSG_SUCCESS;
1979 if(!condition_info || !value)
1980 return MSG_ERR_NULL_POINTER;
1982 MSG_SEARCH_CONDITION_S *search_cond = (MSG_SEARCH_CONDITION_S *)condition_info;
1986 case MSG_SEARCH_CONDITION_ADDRESS_VALUE_STR:
1987 search_cond->pAddressVal = value;
1989 case MSG_SEARCH_CONDITION_SEARCH_VALUE_STR:
1990 search_cond->pSearchVal = value;
1994 err = MSG_ERR_UNKNOWN;
2000 int msg_sendopt_set_bool(void *send_opt, int field, bool value)
2002 msg_error_t err = MSG_SUCCESS;
2004 return MSG_ERR_NULL_POINTER;
2006 MSG_SENDINGOPT_S *sendopt = (MSG_SENDINGOPT_S *)send_opt;
2009 case MSG_SEND_OPT_SETTING_BOOL:
2010 sendopt->bDeliverReq = value;
2012 case MSG_SEND_OPT_KEEPCOPY_BOOL:
2013 sendopt->bDeliverReq = value;
2015 case MSG_SEND_OPT_DELIVER_REQ_BOOL:
2016 sendopt->bDeliverReq = value;
2019 err = MSG_ERR_UNKNOWN;
2025 int msg_sortrule_set_bool(void *sort_rule, int field, bool value)
2027 msg_error_t err = MSG_SUCCESS;
2029 return MSG_ERR_NULL_POINTER;
2031 MSG_SORT_RULE_S *pSort = (MSG_SORT_RULE_S *)sort_rule;
2034 case MSG_SORT_RULE_ACSCEND_BOOL:
2035 pSort->bAscending = value;
2038 err = MSG_ERR_UNKNOWN;
2044 int msg_sendopt_set_struct_handle(msg_struct_s *msg_struct, int field, msg_struct_s *value)
2046 msg_error_t err = MSG_SUCCESS;
2047 if(!msg_struct || !value)
2048 return MSG_ERR_NULL_POINTER;
2050 MSG_SENDINGOPT_S *sendopt = (MSG_SENDINGOPT_S *)msg_struct->data;
2051 msg_struct_s *pTmp = NULL;
2055 case MSG_SEND_OPT_MMS_OPT_HND:
2056 pTmp = (msg_struct_s *)sendopt->mmsSendOpt;
2057 memcpy(pTmp->data, value->data, sizeof(MMS_SENDINGOPT_INFO_S));
2059 case MSG_SEND_OPT_SMS_OPT_HND:
2060 pTmp = (msg_struct_s *)sendopt->smsSendOpt;
2061 memcpy(pTmp->data, value->data, sizeof(SMS_SENDINGOPT_INFO_S));
2064 err = MSG_ERR_UNKNOWN;
2070 int msg_syncml_set_struct_handle(msg_struct_s *msg_struct, int field, msg_struct_s *value)
2072 msg_error_t err = MSG_SUCCESS;
2074 if(!msg_struct || !value)
2075 return MSG_ERR_NULL_POINTER;
2077 MSG_SYNCML_MESSAGE_S *pSync = (MSG_SYNCML_MESSAGE_S *)msg_struct->data;
2078 msg_struct_s *pTmp = NULL;
2082 case MSG_SYNCML_INFO_MESSAGE_HND:
2084 pTmp = (msg_struct_s *)pSync->msg;
2085 MSG_MESSAGE_HIDDEN_S *pSrc = (MSG_MESSAGE_HIDDEN_S *)value->data;
2086 MSG_MESSAGE_HIDDEN_S *pDst = (MSG_MESSAGE_HIDDEN_S *)pTmp->data;
2087 msg_message_copy_message(pSrc, pDst);
2091 err = MSG_ERR_UNKNOWN;
2098 int msg_thread_index_set_struct_handle(msg_struct_s *msg_struct, int field, msg_struct_s *value)
2100 msg_error_t err = MSG_SUCCESS;
2102 if(!msg_struct || !value)
2103 return MSG_ERR_NULL_POINTER;
2105 MSG_THREAD_LIST_INDEX_INFO_S *pIndex = (MSG_THREAD_LIST_INDEX_INFO_S *)msg_struct->data;
2106 msg_struct_s *pTmp = NULL;
2110 case MSG_THREAD_LIST_INDEX_ADDR_INFO_HND:
2111 pTmp = (msg_struct_s *)pIndex->msgAddrInfo;
2112 memcpy(pTmp->data, value->data, sizeof(MSG_ADDRESS_INFO_S));
2115 err = MSG_ERR_UNKNOWN;
2122 int msg_address_info_set_int(void *addrinfo, int field, int value)
2124 msg_error_t err = MSG_SUCCESS;
2126 return MSG_ERR_NULL_POINTER;
2128 MSG_ADDRESS_INFO_S *pAddr = (MSG_ADDRESS_INFO_S *)addrinfo;
2131 case MSG_ADDRESS_INFO_ADDRESS_TYPE_INT:
2132 pAddr->addressType = value;
2134 case MSG_ADDRESS_INFO_RECIPIENT_TYPE_INT:
2135 pAddr->recipientType = value;
2137 case MSG_ADDRESS_INFO_CONTACT_ID_INT:
2138 pAddr->contactId = value;
2141 err = MSG_ERR_UNKNOWN;
2149 int msg_mms_sendopt_set_int(void *opt_info, int field, int value)
2151 msg_error_t err = MSG_SUCCESS;
2153 return MSG_ERR_NULL_POINTER;
2155 MMS_SENDINGOPT_S *pOpt = (MMS_SENDINGOPT_S *)opt_info;
2158 case MSG_MMS_SENDOPTION_EXPIRY_TIME_INT:
2159 pOpt->expiryTime = value;
2161 case MSG_MMS_SENDOPTION_DELIVERY_TIME_INT:
2162 pOpt->deliveryTime = value;
2164 case MSG_MMS_SENDOPTION_PRIORITY_INT:
2165 pOpt->priority = value;
2168 err = MSG_ERR_UNKNOWN;
2175 int msg_reject_message_set_int(void *msg_info, int field, int value)
2177 msg_error_t err = MSG_SUCCESS;
2179 return MSG_ERR_NULL_POINTER;
2181 MSG_REJECT_MSG_INFO_S *pMsg = (MSG_REJECT_MSG_INFO_S *)msg_info;
2184 case MSG_REJECT_MESSAGE_MSGID_INT:
2185 pMsg->msgId = value;
2187 case MSG_REJECT_MESSAGE_DISPLAY_TIME_INT:
2188 pMsg->displayTime = value;
2191 err = MSG_ERR_UNKNOWN;
2198 int msg_address_info_set_str(void *addr_info, int field, char *value, int size)
2200 msg_error_t err = MSG_SUCCESS;
2201 if(!addr_info || !value)
2202 return MSG_ERR_NULL_POINTER;
2203 MSG_ADDRESS_INFO_S *pAddr = (MSG_ADDRESS_INFO_S *)addr_info;
2208 case MSG_ADDRESS_INFO_ADDRESS_VALUE_STR:
2209 (size > MAX_ADDRESS_VAL_LEN)? _len = MAX_ADDRESS_VAL_LEN : _len = size;
2210 memset(pAddr->addressVal, 0x00, sizeof(pAddr->addressVal));
2211 strncpy(pAddr->addressVal, value, _len);
2213 case MSG_ADDRESS_INFO_DISPLAYNAME_STR:
2214 (size > MAX_DISPLAY_NAME_LEN)? _len = MAX_DISPLAY_NAME_LEN : _len = size;
2215 memset(pAddr->displayName, 0x00, sizeof(pAddr->displayName));
2216 strncpy(pAddr->displayName, value, _len);
2219 err = MSG_ERR_UNKNOWN;
2225 int msg_reject_message_set_str(void *msg_info, int field, char *value, int size)
2227 msg_error_t err = MSG_SUCCESS;
2228 if(!msg_info || !value)
2229 return MSG_ERR_NULL_POINTER;
2230 MSG_REJECT_MSG_INFO_S *pMsg = (MSG_REJECT_MSG_INFO_S *)msg_info;
2232 (size > MAX_MSG_TEXT_LEN)? _len = MAX_MSG_TEXT_LEN : _len = size;
2235 case MSG_REJECT_MESSAGE_MSGTEXT_STR:
2236 strncpy(pMsg->msgText, value, _len);
2239 err = MSG_ERR_UNKNOWN;
2246 int msg_mms_sendopt_set_bool(void *option, int field, bool value)
2248 msg_error_t err = MSG_SUCCESS;
2250 return MSG_ERR_NULL_POINTER;
2252 MMS_SENDINGOPT_S *pOpt = (MMS_SENDINGOPT_S *)option;
2255 case MSG_MMS_SENDOPTION_READ_REQUEST_BOOL:
2256 pOpt->bReadReq = value;
2258 case MSG_MMS_SENDOPTION_DELIVERY_CUSTOMTIME_BOOL:
2259 pOpt->bUseDeliveryCustomTime = value;
2262 err = MSG_ERR_UNKNOWN;
2268 int msg_sms_sendopt_set_bool(void *option, int field, bool value)
2270 msg_error_t err = MSG_SUCCESS;
2272 return MSG_ERR_NULL_POINTER;
2274 SMS_SENDINGOPT_S *pOpt = (SMS_SENDINGOPT_S *)option;
2277 case MSG_SMS_SENDOPT_REPLYPATH_BOOL:
2278 pOpt->bReplyPath = value;
2281 err = MSG_ERR_UNKNOWN;