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_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_delete_msgs_by_list(msg_handle_t handle, msg_id_list_s *msg_id_list)
223 msg_error_t err = MSG_SUCCESS;
230 MsgHandle* pHandle = (MsgHandle*)handle;
234 err = pHandle->deleteMessagesByList(msg_id_list);
236 catch (MsgException& e)
238 MSG_FATAL("%s", e.what());
239 return MSG_ERR_STORAGE_ERROR;
246 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)
248 msg_error_t err = MSG_SUCCESS;
255 MsgHandle* pHandle = (MsgHandle*)handle;
259 err = pHandle->moveMessageToFolder(msg_id, dest_folder_id);
261 catch (MsgException& e)
263 MSG_FATAL("%s", e.what());
264 return MSG_ERR_STORAGE_ERROR;
271 EXPORT_API int msg_move_msg_to_storage(msg_handle_t handle, msg_message_id_t msg_id, msg_storage_id_t storage_id)
273 msg_error_t err = MSG_SUCCESS;
280 if (storage_id != MSG_STORAGE_PHONE && storage_id != MSG_STORAGE_SIM)
282 MSG_FATAL("unsupported storage [%d]", storage_id);
283 return MSG_ERR_INVALID_PARAMETER;
286 MsgHandle* pHandle = (MsgHandle*)handle;
290 err = pHandle->moveMessageToStorage(msg_id, storage_id);
292 catch (MsgException& e)
294 MSG_FATAL("%s", e.what());
295 return MSG_ERR_STORAGE_ERROR;
302 EXPORT_API int msg_count_message(msg_handle_t handle, msg_folder_id_t folder_id, msg_struct_t count_info)
304 msg_error_t err = MSG_SUCCESS;
311 MsgHandle* pHandle = (MsgHandle*)handle;
312 msg_struct_s *pStruct = (msg_struct_s *)count_info;
315 err = pHandle->countMessage(folder_id, (MSG_COUNT_INFO_S *)pStruct->data);
317 catch (MsgException& e)
319 MSG_FATAL("%s", e.what());
320 return MSG_ERR_STORAGE_ERROR;
327 EXPORT_API int msg_count_msg_by_type(msg_handle_t handle, msg_message_type_t msg_type, int *msg_count)
329 msg_error_t err = MSG_SUCCESS;
336 MsgHandle* pHandle = (MsgHandle*)handle;
338 MSG_MESSAGE_TYPE_S msgType = {0};
340 if (msg_type == MSG_TYPE_SMS)
342 msgType.mainType = MSG_SMS_TYPE;
343 msgType.subType = MSG_NORMAL_SMS;
345 else if (msg_type == MSG_TYPE_SMS_WAPPUSH)
347 msgType.mainType = MSG_SMS_TYPE;
348 msgType.subType = MSG_WAP_SI_SMS;
350 else if (msg_type == MSG_TYPE_MMS)
352 msgType.mainType = MSG_MMS_TYPE;
353 msgType.subType = MSG_SENDREQ_MMS;
358 err = pHandle->countMsgByType(&msgType, msg_count);
360 catch (MsgException& e)
362 MSG_FATAL("%s", e.what());
363 return MSG_ERR_STORAGE_ERROR;
370 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)
372 msg_error_t err = MSG_SUCCESS;
374 if (handle == NULL || addr_info == NULL)
379 MsgHandle* pHandle = (MsgHandle*)handle;
380 msg_struct_s *pAddr = (msg_struct_s *)addr_info;
381 msg_struct_s *pCount = (msg_struct_s *)msg_thread_count_list;
385 err = pHandle->countMsgByContact((MSG_THREAD_LIST_INDEX_INFO_S *)pAddr->data, (MSG_THREAD_COUNT_INFO_S *)pCount->data);
387 catch (MsgException& e)
389 MSG_FATAL("%s", e.what());
390 return MSG_ERR_STORAGE_ERROR;
397 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)
399 msg_error_t err = MSG_SUCCESS;
401 if (handle == NULL || !opq_msg)
403 MSG_FATAL("handle or opq_msg is NULL");
407 MsgHandle* pHandle = (MsgHandle*)handle;
409 msg_struct_s *pMsgStruct = (msg_struct_s *)opq_msg;
410 msg_struct_s *pStruct = (msg_struct_s *)send_opt;
414 err = pHandle->getMessage(msg_id, (MSG_MESSAGE_HIDDEN_S *)pMsgStruct->data, (MSG_SENDINGOPT_S *)pStruct->data);
416 catch (MsgException& e)
418 MSG_FATAL("%s", e.what());
419 return MSG_ERR_STORAGE_ERROR;
425 EXPORT_API int msg_get_vobject_data(msg_handle_t handle, msg_message_id_t msg_id, void** result_data)
427 msg_error_t err = MSG_SUCCESS;
429 if (handle == NULL || result_data == NULL)
431 MSG_FATAL("handle or result_data is NULL");
435 MsgHandle* pHandle = (MsgHandle*)handle;
439 err = pHandle->getVobject(msg_id, result_data);
441 catch (MsgException& e)
443 MSG_FATAL("%s", e.what());
444 return MSG_ERR_STORAGE_ERROR;
449 EXPORT_API int msg_get_conversation(msg_handle_t handle, msg_message_id_t msg_id, msg_struct_t conv)
451 msg_error_t err = MSG_SUCCESS;
453 if (handle == NULL || !conv)
455 MSG_FATAL("handle or opq_msg is NULL");
459 MsgHandle* pHandle = (MsgHandle*)handle;
461 msg_struct_s *pMsgStruct = (msg_struct_s *)conv;
464 err = pHandle->getConversationViewItem(msg_id, (MSG_CONVERSATION_VIEW_S *)pMsgStruct->data);
466 catch (MsgException& e)
468 MSG_FATAL("%s", e.what());
469 return MSG_ERR_STORAGE_ERROR;
475 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)
477 msg_error_t err = MSG_SUCCESS;
484 MsgHandle* pHandle = (MsgHandle*)handle;
485 msg_struct_s *pStruct = (msg_struct_s *)sort_rule;
489 if (sort_rule == NULL)
491 MSG_SORT_RULE_S sortRule = {0};
493 sortRule.sortType = MSG_SORT_BY_READ_STATUS;
494 sortRule.bAscending = true;
496 err = pHandle->getFolderViewList(folder_id, &sortRule, msg_folder_view_list);
500 err = pHandle->getFolderViewList(folder_id, (MSG_SORT_RULE_S *)pStruct->data, msg_folder_view_list);
503 catch (MsgException& e)
505 MSG_FATAL("%s", e.what());
506 return MSG_ERR_STORAGE_ERROR;
513 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)
515 msg_error_t err = MSG_SUCCESS;
522 MsgHandle* pHandle = (MsgHandle*)handle;
523 msg_struct_s *pStruct =(msg_struct_s *)sort_rule;
527 if (sort_rule == NULL)
529 MSG_SORT_RULE_S sortRule = {0};
531 sortRule.sortType = MSG_SORT_BY_THREAD_DATE;
532 sortRule.bAscending = false;
534 err = pHandle->getThreadViewList(&sortRule, msg_thread_view_list);
538 err = pHandle->getThreadViewList((MSG_SORT_RULE_S *)pStruct->data, msg_thread_view_list);
541 catch (MsgException& e)
543 MSG_FATAL("%s", e.what());
544 return MSG_ERR_STORAGE_ERROR;
551 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)
553 msg_error_t err = MSG_SUCCESS;
560 MsgHandle* pHandle = (MsgHandle*)handle;
564 err = pHandle->getConversationViewList(thread_id, msg_conv_view_list);
566 catch (MsgException& e)
568 MSG_FATAL("%s", e.what());
569 return MSG_ERR_STORAGE_ERROR;
576 EXPORT_API int msg_delete_thread_message_list(msg_handle_t handle, msg_thread_id_t thread_id, bool include_protected_msg)
578 msg_error_t err = MSG_SUCCESS;
585 MsgHandle* pHandle = (MsgHandle*)handle;
589 err = pHandle->deleteThreadMessageList(thread_id, include_protected_msg);
591 catch (MsgException& e)
593 MSG_FATAL("%s", e.what());
594 return MSG_ERR_STORAGE_ERROR;
601 EXPORT_API int msg_add_folder(msg_handle_t handle, const msg_struct_t folder_info)
603 msg_error_t err = MSG_SUCCESS;
605 if (handle == NULL || folder_info == NULL)
610 MsgHandle* pHandle = (MsgHandle*)handle;
611 msg_struct_s *pStruct = (msg_struct_s *)folder_info;
615 err = pHandle->addFolder((MSG_FOLDER_INFO_S *)pStruct->data);
617 catch (MsgException& e)
619 MSG_FATAL("%s", e.what());
620 return MSG_ERR_STORAGE_ERROR;
627 EXPORT_API int msg_update_folder(msg_handle_t handle, const msg_struct_t folder_info)
629 msg_error_t err = MSG_SUCCESS;
631 if (handle == NULL || folder_info == NULL)
636 MsgHandle* pHandle = (MsgHandle*)handle;
637 msg_struct_s *pStruct = (msg_struct_s *)folder_info;
641 err = pHandle->updateFolder((MSG_FOLDER_INFO_S *)pStruct->data);
643 catch (MsgException& e)
645 MSG_FATAL("%s", e.what());
646 return MSG_ERR_STORAGE_ERROR;
653 EXPORT_API int msg_delete_folder(msg_handle_t handle, msg_folder_id_t folder_id)
655 msg_error_t err = MSG_SUCCESS;
662 MsgHandle* pHandle = (MsgHandle*)handle;
666 err = pHandle->deleteFolder(folder_id);
668 catch (MsgException& e)
670 MSG_FATAL("%s", e.what());
671 return MSG_ERR_STORAGE_ERROR;
678 EXPORT_API int msg_get_folder_list(msg_handle_t handle, msg_struct_list_s *folder_list)
680 msg_error_t err = MSG_SUCCESS;
687 MsgHandle* pHandle = (MsgHandle*)handle;
691 err = pHandle->getFolderList(folder_list);
693 catch (MsgException& e)
695 MSG_FATAL("%s", e.what());
696 return MSG_ERR_STORAGE_ERROR;
703 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)
707 MSG_DEBUG("Handle is NULL");
711 if (folder_id >= MSG_MAX_FOLDER_ID)
713 MSG_DEBUG("folderId is invalid [%d]", folder_id);
717 MSG_DEBUG("type : %d, folder : %d, num_msg : %d", msg_type, folder_id, num_msg);
720 MSG_SENDINGOPT_S sendingOpt = {0};
721 sendingOpt.bSetting = false;
723 char strMsg[20] = {0};
724 char prefix[10] ="0103001";
725 // int postfix = 8111;
730 msg_struct_s *msg_s = NULL;
731 msg_struct_s *addr_s = NULL;
732 MSG_MESSAGE_HIDDEN_S *msgInfo = NULL;
733 MSG_ADDRESS_INFO_S *addrInfo = NULL;
735 for (unsigned int i = 0; i < num_msg; i++)
737 msg_s = (msg_struct_s *)msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
738 msgInfo = (MSG_MESSAGE_HIDDEN_S *)msg_s->data;
740 msgInfo->folderId = folder_id;
742 if (msg_type == MSG_TYPE_MMS)
744 msgInfo->mainType = MSG_MMS_TYPE;
745 msgInfo->subType = MSG_SENDREQ_MMS;
749 msgInfo->mainType = MSG_SMS_TYPE;
750 msgInfo->subType = MSG_NORMAL_SMS;
752 snprintf(strMsg, sizeof(strMsg), "test msg %d", i);
753 msgInfo->dataSize = strlen(strMsg);
754 msgInfo->pData = (void*)new char[msgInfo->dataSize+1];
755 memcpy((char *)msgInfo->pData, strMsg, msgInfo->dataSize);
756 ((char*) msgInfo->pData)[msgInfo->dataSize] = '\0';
759 msgInfo->storageId = MSG_STORAGE_PHONE;
761 msgInfo->addr_list->nCount = 1;
763 addr_s = (msg_struct_s *)msgInfo->addr_list->msg_struct_info[0];
765 addrInfo = (MSG_ADDRESS_INFO_S *)addr_s->data;
767 addrInfo->addressType = MSG_ADDRESS_TYPE_PLMN;
768 postfix = rand()%10000;
769 snprintf(addrInfo->addressVal, MAX_ADDRESS_VAL_LEN+1, "%s%04d", prefix, postfix);
771 addrInfo->recipientType = MSG_RECIPIENTS_TYPE_TO;
773 time(&(msgInfo->displayTime));
775 msgInfo->networkStatus = MSG_NETWORK_NOT_SEND;
776 msgInfo->bRead = false;
777 msgInfo->bProtected = false;
778 msgInfo->priority = MSG_MESSAGE_PRIORITY_NORMAL;
780 if (folder_id == MSG_OUTBOX_ID || folder_id == MSG_SENTBOX_ID)
781 msgInfo->direction = MSG_DIRECTION_TYPE_MO;
783 msgInfo->direction = MSG_DIRECTION_TYPE_MT;
785 if (msg_type == MSG_TYPE_MMS)
787 snprintf(msgInfo->subject, MAX_SUBJECT_LEN+1, "subject %d", i);
789 if(folder_id == MSG_INBOX_ID) msgInfo->networkStatus = MSG_NETWORK_RETRIEVE_SUCCESS;
791 //MMS_MESSAGE_DATA_S* mms_data;
792 //MMS_PAGE_S* page[2];
793 //MMS_MEDIA_S* media[5];
795 // mms_data = msg_mms_create_message();
797 // msg_mms_set_rootlayout(mms_data, 100, 100, 0xffffff);
798 // msg_mms_add_region(mms_data, "Image", 0, 50, 100, 50, 0xffffff);
799 // msg_mms_add_region(mms_data, "Text", 0, 0, 100, 50, 0xffffff);
801 //------------> 1st Slide Composing
802 // page[0] = msg_mms_add_page(mms_data, 5440);
804 // media[0] = msg_mms_add_media(page[0], MMS_SMIL_MEDIA_IMG, "Image", (char*)"/opt/etc/msg-service/P091120_104633.jpg");
805 // media[1] = msg_mms_add_media(page[0], MMS_SMIL_MEDIA_AUDIO, NULL, (char*)"/opt/etc/msg-service/audio.amr");
806 // media[2] = msg_mms_add_media(page[0], MMS_SMIL_MEDIA_TEXT, "Text", (char*)"/opt/etc/msg-service/Temp0_2.txt");
807 // media[2]->sMedia.sText.nColor = 0x000000;
808 // media[2]->sMedia.sText.nSize = MMS_SMIL_FONT_SIZE_NORMAL;
809 // media[2]->sMedia.sText.bBold = true;
811 //------------> 2nd Slide Composing
812 // page[1] = msg_mms_add_page(mms_data, 4544);
814 // media[3] = msg_mms_add_media(page[1], MMS_SMIL_MEDIA_TEXT, "Text", (char*)"/opt/etc/msg-service/Temp1_0.txt");
815 // media[3]->sMedia.sText.nColor = 0x000000;
816 // media[3]->sMedia.sText.nSize = MMS_SMIL_FONT_SIZE_NORMAL;
817 // media[3]->sMedia.sText.bItalic = true;
818 // media[4] = msg_mms_add_media(page[1], MMS_SMIL_MEDIA_VIDEO, "Text", (char*)"/opt/etc/msg-service/V091120_104905.3gp");
819 // strncpy(media[4]->szAlt, "Video Load Fail", MAX_SMIL_ALT_LEN-1);
821 //FIXME msg_mms_set_message_body((msg_message_t)&msgInfo, mms_data);
823 // msg_mms_destroy_message(mms_data);
826 //err = msg_add_message(handle, (msg_message_t)&msgInfo, &sendingOpt);
829 MsgHandle* pHandle = (MsgHandle*)handle;
830 err = pHandle->addMessage(msgInfo, &sendingOpt);
832 catch (MsgException& e)
834 MSG_FATAL("%s", e.what());
835 msg_release_struct((msg_struct_t *)&msg_s);
836 return MSG_ERR_STORAGE_ERROR;
839 if (msg_type == MSG_TYPE_MMS && msgInfo->pMmsData) //free pMmsData directly. It is added to enhance performance
840 delete [] static_cast<char*>(msgInfo->pMmsData);
842 msg_release_struct((msg_struct_t *)&msg_s);
846 MSG_DEBUG("err [%d]", err);
855 EXPORT_API int msg_generate_sms(msg_handle_t handle, msg_folder_id_t folder_id, unsigned int num_msg)
857 MSG_DEBUG("folder %d, num_msg %d", folder_id, num_msg);
861 MSG_DEBUG("Handle is NULL");
865 if (folder_id >= MSG_MAX_FOLDER_ID)
867 MSG_DEBUG("folderId is invalid");
872 char strMsg[20] = {0};
873 char prefix[10] ="0103001";
876 MSG_SENDINGOPT_S sendingOpt = {0};
877 sendingOpt.bSetting = false;
881 msg_struct_s *msg_s = NULL;
882 msg_struct_s *addr_s = NULL;
883 MSG_MESSAGE_HIDDEN_S *msgInfo = NULL;
884 MSG_ADDRESS_INFO_S *addrInfo = NULL;
886 for (unsigned int i = 0; i < num_msg; i++)
888 msg_s = (msg_struct_s *)msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
889 msgInfo = (MSG_MESSAGE_HIDDEN_S *)msg_s->data;
891 msgInfo->msgId = 0; // It should be set 0
892 msgInfo->folderId = folder_id;
894 msgInfo->mainType = MSG_SMS_TYPE;
895 msgInfo->subType = 0;
897 msgInfo->storageId = MSG_STORAGE_PHONE;
899 snprintf(strMsg, sizeof(strMsg), "test %d", i);
900 msgInfo->dataSize = strlen(strMsg);
901 msgInfo->pData = strMsg;
903 msgInfo->addr_list->nCount = 1;
905 addr_s = (msg_struct_s *)msgInfo->addr_list->msg_struct_info[0];
907 addrInfo = (MSG_ADDRESS_INFO_S *)addr_s->data;
909 addrInfo->addressType = MSG_ADDRESS_TYPE_PLMN;
910 postfix = rand()%10000;
911 snprintf(addrInfo->addressVal, MAX_ADDRESS_VAL_LEN+1, "%s%04d", prefix, postfix);
913 addrInfo->recipientType = MSG_RECIPIENTS_TYPE_TO;
915 time(&(msgInfo->displayTime));
917 msgInfo->networkStatus = MSG_NETWORK_NOT_SEND;
918 msgInfo->bRead = false;
919 msgInfo->bProtected = false;
920 msgInfo->priority = MSG_MESSAGE_PRIORITY_NORMAL;
921 msgInfo->direction = MSG_DIRECTION_TYPE_MO;
923 // err = msg_add_message(handle, (msg_message_t) &msgInfo, &sendingOpt);
926 MsgHandle* pHandle = (MsgHandle*)handle;
927 err = pHandle->addMessage(msgInfo, &sendingOpt);
929 catch (MsgException& e)
931 MSG_FATAL("%s", e.what());
932 msg_release_struct((msg_struct_t *)&msg_s);
933 return MSG_ERR_STORAGE_ERROR;
936 msg_release_struct((msg_struct_t *)&msg_s);
940 MSG_DEBUG("err [%d]", err);
949 EXPORT_API int msg_get_quick_panel_data(msg_handle_t handle, msg_quickpanel_type_t type, msg_struct_t opq_msg)
951 msg_error_t err = MSG_SUCCESS;
953 if (handle == NULL || !opq_msg )
955 MSG_FATAL("handle or opq_msg is NULL");
959 MsgHandle* pHandle = (MsgHandle*)handle;
960 msg_struct_s *pMsg = (msg_struct_s *)opq_msg;
964 err = pHandle->getQuickPanelData(type, (MSG_MESSAGE_HIDDEN_S *)pMsg->data);
966 catch (MsgException& e)
968 MSG_FATAL("%s", e.what());
969 return MSG_ERR_STORAGE_ERROR;
976 EXPORT_API int msg_reset_database(msg_handle_t handle)
978 msg_error_t err = MSG_SUCCESS;
985 MsgHandle* pHandle = (MsgHandle*)handle;
989 err = pHandle->resetDatabase();
991 catch (MsgException& e)
993 MSG_FATAL("%s", e.what());
994 return MSG_ERR_STORAGE_ERROR;
1001 EXPORT_API int msg_get_mem_size(msg_handle_t handle, unsigned int* memsize)
1003 msg_error_t err = MSG_SUCCESS;
1010 MsgHandle* pHandle = (MsgHandle*)handle;
1014 err = pHandle->getMemSize(memsize);
1016 catch (MsgException& e)
1018 MSG_FATAL("%s", e.what());
1019 return MSG_ERR_STORAGE_ERROR;
1026 EXPORT_API int msg_backup_message(msg_handle_t handle, msg_message_backup_type_t type, const char *backup_filepath)
1028 msg_error_t err = MSG_SUCCESS;
1030 if (handle == NULL || backup_filepath == NULL)
1035 MsgHandle* pHandle = (MsgHandle*)handle;
1039 err = pHandle->backupMessage(type, backup_filepath);
1041 catch (MsgException& e)
1043 MSG_FATAL("%s", e.what());
1044 return MSG_ERR_STORAGE_ERROR;
1051 EXPORT_API int msg_restore_message(msg_handle_t handle, const char *backup_filepath)
1053 msg_error_t err = MSG_SUCCESS;
1055 if (handle == NULL || backup_filepath == NULL)
1060 MsgHandle* pHandle = (MsgHandle*)handle;
1064 err = pHandle->restoreMessage(backup_filepath);
1066 catch (MsgException& e)
1068 MSG_FATAL("%s", e.what());
1069 return MSG_ERR_STORAGE_ERROR;
1076 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)
1078 msg_error_t err = MSG_SUCCESS;
1080 if (handle == NULL || search_string == NULL)
1085 if (strlen(search_string) <= 0 || strlen(search_string) > MAX_MSG_TEXT_LEN)
1090 MsgHandle* pHandle = (MsgHandle*)handle;
1094 err = pHandle->searchMessage(search_string, msg_thread_view_list);
1096 catch (MsgException& e)
1098 MSG_FATAL("%s", e.what());
1099 return MSG_ERR_STORAGE_ERROR;
1106 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)
1108 msg_error_t err = MSG_SUCCESS;
1110 if (handle == NULL || msg_search_conditions == NULL)
1115 MsgHandle* pHandle = (MsgHandle*)handle;
1116 msg_struct_s *pStruct = (msg_struct_s *)msg_search_conditions;
1120 err = pHandle->searchMessage((MSG_SEARCH_CONDITION_S *)pStruct->data, offset, limit, msg_list);
1122 catch (MsgException& e)
1124 MSG_FATAL("%s", e.what());
1125 return MSG_ERR_STORAGE_ERROR;
1131 EXPORT_API int msg_get_reject_msg_list(msg_handle_t handle, const char *phone_num, msg_struct_list_s *msg_reject_msg_list)
1133 msg_error_t err = MSG_SUCCESS;
1140 MsgHandle* pHandle = (MsgHandle*)handle;
1144 err = pHandle->getRejectMsgList(phone_num, msg_reject_msg_list);
1146 catch (MsgException& e)
1148 MSG_FATAL("%s", e.what());
1149 return MSG_ERR_STORAGE_ERROR;
1156 EXPORT_API int msg_reg_storage_change_callback(msg_handle_t handle, msg_storage_change_cb cb, void *user_param)
1158 msg_error_t err = MSG_SUCCESS;
1160 if (handle == NULL || cb == NULL)
1165 MsgHandle* pHandle = (MsgHandle*)handle;
1169 err = pHandle->regStorageChangeCallback(cb, user_param);
1171 catch (MsgException& e)
1173 MSG_FATAL("%s", e.what());
1174 return MSG_ERR_CALLBACK_ERROR;
1180 EXPORT_API int msg_get_report_status(msg_handle_t handle, msg_message_id_t msg_id, msg_struct_list_s *report_list)
1182 msg_error_t err = MSG_SUCCESS;
1184 if (handle == NULL || msg_id < 1 || report_list == NULL)
1189 MsgHandle* pHandle = (MsgHandle*)handle;
1193 err = pHandle->getReportStatus(msg_id, report_list);
1195 catch (MsgException& e)
1197 MSG_FATAL("%s", e.what());
1198 return MSG_ERR_STORAGE_ERROR;
1204 EXPORT_API int msg_get_address_list(msg_handle_t handle, msg_thread_id_t thread_id, msg_struct_list_s *msg_address_list)
1206 msg_error_t err = MSG_SUCCESS;
1213 MsgHandle* pHandle = (MsgHandle*)handle;
1217 err = pHandle->getAddressList(thread_id, msg_address_list);
1219 catch (MsgException& e)
1221 MSG_FATAL("%s", e.what());
1222 return MSG_ERR_STORAGE_ERROR;
1229 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)
1231 msg_error_t err = MSG_SUCCESS;
1233 if (handle == NULL || msg_address_list->nCount < 1)
1238 MsgHandle* pHandle = (MsgHandle*)handle;
1242 err = pHandle->getThreadIdByAddress(msg_address_list, thread_id);
1244 catch (MsgException& e)
1246 MSG_FATAL("%s", e.what());
1247 return MSG_ERR_STORAGE_ERROR;
1254 EXPORT_API int msg_get_thread(msg_handle_t handle, msg_thread_id_t thread_id, msg_struct_t msg_thread)
1256 msg_error_t err = MSG_SUCCESS;
1258 if (handle == NULL || msg_thread == NULL ) {
1259 MSG_FATAL("handle or msg_thread is NULL");
1263 MsgHandle* pHandle = (MsgHandle*)handle;
1264 msg_struct_s *msgThread = (msg_struct_s *)msg_thread;
1265 if (msgThread->type != MSG_STRUCT_THREAD_INFO) {
1266 MSG_FATAL("Invaild type. type [%d]", msgThread->type);
1267 return MSG_ERR_INVALID_PARAMETER;
1270 MSG_THREAD_VIEW_S* pThreadInfo = (MSG_THREAD_VIEW_S *)msgThread->data;
1274 err = pHandle->getThread(thread_id, pThreadInfo);
1276 catch (MsgException& e)
1278 MSG_FATAL("%s", e.what());
1279 return MSG_ERR_STORAGE_ERROR;
1286 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)
1288 msg_error_t err = MSG_SUCCESS;
1290 if (handle == NULL) {
1294 MsgHandle* pHandle = (MsgHandle*)handle;
1298 err = pHandle->getMessageList(folder_id, thread_id, msg_type, storage_id, msg_list);
1300 catch (MsgException& e)
1302 MSG_FATAL("%s", e.what());
1303 return MSG_ERR_STORAGE_ERROR;
1309 static int msg_get_msg_type(int mainType, int subType)
1311 if (mainType == MSG_SMS_TYPE)
1313 if (subType == MSG_CB_SMS)
1314 return MSG_TYPE_SMS_CB;
1315 else if (subType == MSG_JAVACB_SMS)
1316 return MSG_TYPE_SMS_JAVACB;
1317 else if (subType == MSG_WAP_SI_SMS || subType == MSG_WAP_SL_SMS)
1318 return MSG_TYPE_SMS_WAPPUSH;
1319 else if (subType == MSG_MWI_VOICE_SMS || subType == MSG_MWI_FAX_SMS
1320 || subType == MSG_MWI_EMAIL_SMS || subType == MSG_MWI_OTHER_SMS)
1321 return MSG_TYPE_SMS_MWI;
1322 else if (subType == MSG_SYNCML_CP)
1323 return MSG_TYPE_SMS_SYNCML;
1324 else if (subType == MSG_REJECT_SMS)
1325 return MSG_TYPE_SMS_REJECT;
1327 return MSG_TYPE_SMS;
1329 else if (mainType == MSG_MMS_TYPE)
1331 if (subType == MSG_NOTIFICATIONIND_MMS)
1332 return MSG_TYPE_MMS_NOTI;
1333 else if (subType == MSG_SENDREQ_JAVA_MMS)
1334 return MSG_TYPE_MMS_JAVA;
1336 return MSG_TYPE_MMS;
1339 return MSG_TYPE_INVALID;
1343 int msg_syncml_info_get_int(void *syncml_info, int field)
1345 int result = MSG_ERR_INVALID_PARAMETER;
1346 MSG_SYNCML_MESSAGE_S *pSync = (MSG_SYNCML_MESSAGE_S *)syncml_info;
1349 case MSG_SYNCML_INFO_EXTID_INT:
1350 result = pSync->extId;
1352 case MSG_SYNCML_INFO_PINCODE_INT:
1353 result = pSync->pinCode;
1356 result = MSG_ERR_INVALID_PARAMETER;
1362 int msg_count_info_get_int(void *count_info, int field)
1364 int result = MSG_ERR_INVALID_PARAMETER;
1365 MSG_COUNT_INFO_S *pCount = (MSG_COUNT_INFO_S *)count_info;
1368 case MSG_COUNT_INFO_READ_INT:
1369 result = pCount->nReadCnt;
1371 case MSG_COUNT_INFO_UNREAD_INT:
1372 result = pCount->nUnreadCnt;
1374 case MSG_COUNT_INFO_SMS_INT:
1375 result = pCount->nSms;
1377 case MSG_COUNT_INFO_MMS_INT:
1378 result = pCount->nMms;
1381 result = MSG_ERR_INVALID_PARAMETER;
1387 int msg_thread_count_get_int(void *count_info, int field)
1389 int result = MSG_ERR_INVALID_PARAMETER;
1390 MSG_THREAD_COUNT_INFO_S *pCount = (MSG_THREAD_COUNT_INFO_S *)count_info;
1393 case MSG_THREAD_COUNT_TOTAL_INT:
1394 result = pCount->totalCount;
1396 case MSG_THREAD_COUNT_UNREAD_INT:
1397 result = pCount->unReadCount;
1399 case MSG_THREAD_COUNT_SMS_INT:
1400 result = pCount->smsMsgCount;
1402 case MSG_THREAD_COUNT_MMS_INT:
1403 result = pCount->mmsMsgCount;
1406 result = MSG_ERR_INVALID_PARAMETER;
1412 int msg_thread_index_get_int(void *index_info, int field)
1414 int result = MSG_ERR_INVALID_PARAMETER;
1415 MSG_THREAD_LIST_INDEX_S *pIndex = (MSG_THREAD_LIST_INDEX_S *)index_info;
1418 case MSG_THREAD_LIST_INDEX_CONTACTID_INT:
1419 result = pIndex->contactId;
1422 result = MSG_ERR_INVALID_PARAMETER;
1428 int msg_sortrule_get_int(void *sort_info, int field)
1430 int result = MSG_ERR_INVALID_PARAMETER;
1431 MSG_SORT_RULE_S *pSort = (MSG_SORT_RULE_S *)sort_info;
1434 case MSG_SORT_RULE_SORT_TYPE_INT:
1435 result = pSort->sortType;
1438 result = MSG_ERR_INVALID_PARAMETER;
1444 int msg_folder_info_get_int(void *folder_info, int field)
1446 int result = MSG_ERR_INVALID_PARAMETER;
1447 MSG_FOLDER_INFO_S *pFolder = (MSG_FOLDER_INFO_S *)folder_info;
1450 case MSG_FOLDER_INFO_ID_INT:
1451 result = pFolder->folderId;
1453 case MSG_FOLDER_INFO_TYPE_INT:
1454 result = pFolder->folderType;
1457 result = MSG_ERR_INVALID_PARAMETER;
1463 int msg_thread_info_get_int(void *data, int field)
1465 int result = MSG_ERR_INVALID_PARAMETER;
1466 MSG_THREAD_VIEW_S *pThread = (MSG_THREAD_VIEW_S *)data;
1470 case MSG_THREAD_ID_INT :
1471 result = pThread->threadId;
1473 case MSG_THREAD_MSG_TYPE_INT :
1474 result = msg_get_msg_type(pThread->mainType, pThread->subType);
1476 case MSG_THREAD_MSG_TIME_INT :
1477 result = pThread->threadTime;
1479 case MSG_THREAD_DIRECTION_INT :
1480 result = pThread->direction;
1482 case MSG_THREAD_UNREAD_COUNT_INT :
1483 result = pThread->unreadCnt;
1485 case MSG_THREAD_SMS_COUNT_INT :
1486 result = pThread->smsCnt;
1488 case MSG_THREAD_MMS_COUNT_INT :
1489 result = pThread->mmsCnt;
1492 result = MSG_ERR_INVALID_PARAMETER;
1499 int msg_conv_info_get_int(void *data, int field)
1501 int result = MSG_ERR_INVALID_PARAMETER;
1502 MSG_CONVERSATION_VIEW_S *pConv = (MSG_CONVERSATION_VIEW_S *)data;
1506 case MSG_CONV_MSG_ID_INT :
1507 result = pConv->msgId;
1509 case MSG_CONV_MSG_THREAD_ID_INT :
1510 result = pConv->threadId;
1512 case MSG_CONV_MSG_FOLDER_ID_INT :
1513 result = pConv->folderId;
1515 case MSG_CONV_MSG_TYPE_INT :
1516 result = msg_get_msg_type(pConv->mainType, pConv->subType);
1518 case MSG_CONV_MSG_STORAGE_ID_INT :
1519 result = pConv->storageId;
1521 case MSG_CONV_MSG_DISPLAY_TIME_INT :
1522 result = pConv->displayTime;
1524 case MSG_CONV_MSG_SCHEDULED_TIME_INT :
1525 result = pConv->scheduledTime;
1527 case MSG_CONV_MSG_NETWORK_STATUS_INT :
1528 result = pConv->networkStatus;
1530 case MSG_CONV_MSG_DIRECTION_INT :
1531 result = pConv->direction;
1533 case MSG_CONV_MSG_ATTACH_COUNT_INT :
1534 result = pConv->attachCount;
1536 case MSG_CONV_MSG_TEXT_SIZE_INT :
1537 result = pConv->textSize;
1539 case MSG_CONV_MSG_PAGE_COUNT_INT :
1540 result = pConv->pageCount;
1543 result = MSG_ERR_INVALID_PARAMETER;
1550 int msg_search_condition_get_int(void *condition_info, int field)
1552 int result = MSG_ERR_INVALID_PARAMETER;
1553 MSG_SEARCH_CONDITION_S *pCond = (MSG_SEARCH_CONDITION_S *)condition_info;
1556 case MSG_SEARCH_CONDITION_FOLDERID_INT:
1557 result = pCond->folderId;
1559 case MSG_SEARCH_CONDITION_MSGTYPE_INT:
1560 result = pCond->msgType;
1562 case MSG_SEARCH_CONDITION_RESERVED_INT:
1563 result = pCond->reserved;
1566 result = MSG_ERR_INVALID_PARAMETER;
1572 int msg_report_status_get_int(void *report_info, int field)
1574 int result = MSG_ERR_INVALID_PARAMETER;
1575 MSG_REPORT_STATUS_INFO_S *pReport = (MSG_REPORT_STATUS_INFO_S *)report_info;
1578 case MSG_REPORT_TYPE_INT:
1579 result = pReport->type;
1581 case MSG_REPORT_STATUS_INT:
1582 result = pReport->status;
1584 case MSG_REPORT_TIME_INT:
1585 result = pReport->statusTime;
1589 result = MSG_ERR_INVALID_PARAMETER;
1595 char* msg_report_status_get_str(void *report_info, int field)
1597 char *result = NULL;
1598 MSG_REPORT_STATUS_INFO_S *pReport = (MSG_REPORT_STATUS_INFO_S *)report_info;
1602 case MSG_REPORT_ADDRESS_STR:
1603 result = pReport->addressVal;
1612 char* msg_folder_info_get_str(void *folder_info, int field)
1614 char *result = NULL;
1615 MSG_FOLDER_INFO_S *pFolder = (MSG_FOLDER_INFO_S *)folder_info;
1618 case MSG_FOLDER_INFO_NAME_STR:
1619 result = pFolder->folderName;
1628 char *msg_thread_info_get_str(void *data, int field)
1630 char *ret_str = NULL;
1631 MSG_THREAD_VIEW_S *pThread = (MSG_THREAD_VIEW_S *)data;
1635 case MSG_THREAD_NAME_STR :
1636 ret_str = pThread->threadName;
1638 case MSG_THREAD_MSG_DATA_STR :
1639 ret_str = pThread->threadData;
1649 char *msg_conv_info_get_str(void *data, int field)
1651 char *ret_str = NULL;
1652 MSG_CONVERSATION_VIEW_S *pConv = (MSG_CONVERSATION_VIEW_S *)data;
1656 case MSG_CONV_MSG_SUBJECT_STR :
1657 ret_str = pConv->subject;
1659 case MSG_CONV_MSG_ATTACH_NAME_STR :
1660 ret_str = pConv->attachFileName;
1662 case MSG_CONV_MSG_AUDIO_NAME_STR :
1663 ret_str = pConv->audioFileName;
1665 case MSG_CONV_MSG_IMAGE_THUMB_PATH_STR :
1666 ret_str = pConv->imageThumbPath;
1668 case MSG_CONV_MSG_VIDEO_THUMB_PATH_STR :
1669 ret_str = pConv->videoThumbPath;
1671 case MSG_CONV_MSG_TEXT_STR :
1672 ret_str = pConv->pText;
1682 char* msg_search_condition_get_str(void *condition_info, int field, int size)
1684 char *result = NULL;
1685 MSG_SEARCH_CONDITION_S *search_cond = (MSG_SEARCH_CONDITION_S *)condition_info;
1688 case MSG_SEARCH_CONDITION_ADDRESS_VALUE_STR:
1689 result = search_cond->pAddressVal;
1691 case MSG_SEARCH_CONDITION_SEARCH_VALUE_STR:
1692 result = search_cond->pSearchVal;
1702 bool msg_sendopt_get_bool(void *send_opt, int field)
1704 bool result = false;
1705 MSG_SENDINGOPT_S *sendopt = (MSG_SENDINGOPT_S *)send_opt;
1708 case MSG_SEND_OPT_SETTING_BOOL:
1709 result = sendopt->bDeliverReq;
1711 case MSG_SEND_OPT_KEEPCOPY_BOOL:
1712 result = sendopt->bDeliverReq;
1714 case MSG_SEND_OPT_DELIVER_REQ_BOOL:
1715 result = sendopt->bDeliverReq;
1723 bool msg_sortrule_get_bool(void *sort_rule, int field)
1725 bool result = false;
1726 MSG_SORT_RULE_S *pSort = (MSG_SORT_RULE_S *)sort_rule;
1729 case MSG_SORT_RULE_ACSCEND_BOOL:
1730 result = pSort->bAscending;
1738 bool msg_conv_get_bool(void *data, int field)
1740 bool result = false;
1741 MSG_CONVERSATION_VIEW_S *pConv = (MSG_CONVERSATION_VIEW_S *)data;
1744 case MSG_CONV_MSG_READ_BOOL:
1745 result = pConv->bRead;
1747 case MSG_CONV_MSG_PROTECTED_BOOL:
1748 result = pConv->bProtected;
1756 bool msg_thread_info_get_bool(void *data, int field)
1758 bool result = false;
1759 MSG_THREAD_VIEW_S *pthreadInfo = (MSG_THREAD_VIEW_S *)data;
1762 case MSG_THREAD_PROTECTED_BOOL:
1763 result = pthreadInfo->bProtected;
1771 int msg_sendopt_get_struct_handle(msg_struct_s *msg_struct, int field, void **value)
1773 msg_error_t err = MSG_SUCCESS;
1774 if(!msg_struct || !value)
1775 return MSG_ERR_NULL_POINTER;
1777 MSG_SENDINGOPT_S *sendopt = (MSG_SENDINGOPT_S *)msg_struct->data;
1781 case MSG_SEND_OPT_MMS_OPT_HND:
1782 *value = (void *)sendopt->mmsSendOpt;
1784 case MSG_SEND_OPT_SMS_OPT_HND:
1785 *value = (void *)sendopt->smsSendOpt;
1788 err = MSG_ERR_UNKNOWN;
1794 int msg_syncml_get_struct_handle(msg_struct_s *msg_struct, int field, void **value)
1796 msg_error_t err = MSG_SUCCESS;
1798 if(!msg_struct || !value)
1799 return MSG_ERR_NULL_POINTER;
1801 MSG_SYNCML_MESSAGE_S *pSync = (MSG_SYNCML_MESSAGE_S *)msg_struct->data;
1804 case MSG_SYNCML_INFO_MESSAGE_HND:
1805 *value = (void *)pSync->msg;
1808 err = MSG_ERR_UNKNOWN;
1815 int msg_thread_index_get_struct_handle(msg_struct_s *msg_struct, int field, void **value)
1817 msg_error_t err = MSG_SUCCESS;
1819 if(!msg_struct || !value)
1820 return MSG_ERR_NULL_POINTER;
1822 MSG_THREAD_LIST_INDEX_INFO_S *pIndex = (MSG_THREAD_LIST_INDEX_INFO_S *)msg_struct->data;
1825 case MSG_SYNCML_INFO_MESSAGE_HND:
1826 *value = (void *)pIndex->msgAddrInfo;
1829 err = MSG_ERR_UNKNOWN;
1836 int msg_address_info_get_int(void *addr_info, int field)
1838 int result = MSG_ERR_INVALID_PARAMETER;
1839 MSG_ADDRESS_INFO_S *pAddr = (MSG_ADDRESS_INFO_S *)addr_info;
1842 case MSG_ADDRESS_INFO_ADDRESS_TYPE_INT:
1843 result = pAddr->addressType;
1845 case MSG_ADDRESS_INFO_RECIPIENT_TYPE_INT:
1846 result = pAddr->recipientType;
1848 case MSG_ADDRESS_INFO_CONTACT_ID_INT:
1849 result = pAddr->contactId;
1856 int msg_mms_sendopt_get_int(void *opt_info, int field)
1858 int result = MSG_ERR_INVALID_PARAMETER;
1859 MMS_SENDINGOPT_S *pOpt = (MMS_SENDINGOPT_S *)opt_info;
1862 case MSG_MMS_SENDOPTION_EXPIRY_TIME_INT:
1863 result = pOpt->expiryTime;
1865 case MSG_MMS_SENDOPTION_DELIVERY_TIME_INT:
1866 result = pOpt->deliveryTime;
1868 case MSG_MMS_SENDOPTION_PRIORITY_INT:
1869 result = pOpt->priority;
1877 int msg_reject_message_get_int(void *msg_info, int field)
1879 int result = MSG_ERR_INVALID_PARAMETER;
1880 MSG_REJECT_MSG_INFO_S *pMsg = (MSG_REJECT_MSG_INFO_S *)msg_info;
1883 case MSG_REJECT_MESSAGE_MSGID_INT:
1884 result = pMsg->msgId;
1886 case MSG_REJECT_MESSAGE_DISPLAY_TIME_INT:
1887 result = pMsg->displayTime;
1895 char* msg_address_info_get_str(void *addr_info, int field, int size)
1897 char *result = NULL;
1898 MSG_ADDRESS_INFO_S *pAddr = (MSG_ADDRESS_INFO_S *)addr_info;
1901 case MSG_ADDRESS_INFO_ADDRESS_VALUE_STR:
1902 result = pAddr->addressVal;
1904 case MSG_ADDRESS_INFO_DISPLAYNAME_STR:
1905 result = pAddr->displayName;
1915 char* msg_reject_message_get_str(void *msg_info, int field, int size)
1917 char *result = NULL;
1918 MSG_REJECT_MSG_INFO_S *pMsg = (MSG_REJECT_MSG_INFO_S *)msg_info;
1921 case MSG_REJECT_MESSAGE_MSGTEXT_STR:
1922 result = pMsg->msgText;
1931 bool msg_mms_sendopt_get_bool(void *opt_info, int field)
1933 bool result = false;
1934 MMS_SENDINGOPT_S *pOpt = (MMS_SENDINGOPT_S *)opt_info;
1937 case MSG_MMS_SENDOPTION_READ_REQUEST_BOOL:
1938 result = pOpt->bReadReq;
1940 case MSG_MMS_SENDOPTION_DELIVERY_CUSTOMTIME_BOOL:
1941 result = pOpt->bUseDeliveryCustomTime;
1949 bool msg_sms_sendopt_get_bool(void *opt_info, int field)
1951 bool result = false;
1952 SMS_SENDINGOPT_S *pOpt = (SMS_SENDINGOPT_S *)opt_info;
1955 case MSG_SMS_SENDOPT_REPLYPATH_BOOL:
1956 result = pOpt->bReplyPath;
1964 int msg_syncml_info_set_int(void *syncml_info, int field, int value)
1967 msg_error_t err = MSG_SUCCESS;
1969 return MSG_ERR_NULL_POINTER;
1971 MSG_SYNCML_MESSAGE_S *pSync = (MSG_SYNCML_MESSAGE_S *)syncml_info;
1974 case MSG_SYNCML_INFO_EXTID_INT:
1975 pSync->extId = value;
1977 case MSG_SYNCML_INFO_PINCODE_INT:
1978 pSync->pinCode = value;
1981 err = MSG_ERR_UNKNOWN;
1988 int msg_count_info_set_int(void *count_info, int field, int value)
1990 msg_error_t err = MSG_SUCCESS;
1992 return MSG_ERR_NULL_POINTER;
1994 MSG_COUNT_INFO_S *pCount = (MSG_COUNT_INFO_S *)count_info;
1998 case MSG_COUNT_INFO_READ_INT:
1999 pCount->nReadCnt = value;
2001 case MSG_COUNT_INFO_UNREAD_INT:
2002 pCount->nUnreadCnt = value;
2004 case MSG_COUNT_INFO_SMS_INT:
2005 pCount->nSms = value;
2007 case MSG_COUNT_INFO_MMS_INT:
2008 pCount->nMms = value;
2011 err = MSG_ERR_UNKNOWN;
2017 int msg_thread_count_set_int(void *count_info, int field, int value)
2019 msg_error_t err = MSG_SUCCESS;
2021 return MSG_ERR_NULL_POINTER;
2023 MSG_THREAD_COUNT_INFO_S *pCount = (MSG_THREAD_COUNT_INFO_S *)count_info;
2026 case MSG_THREAD_COUNT_TOTAL_INT:
2027 pCount->totalCount = value;
2029 case MSG_THREAD_COUNT_UNREAD_INT:
2030 pCount->unReadCount = value;
2032 case MSG_THREAD_COUNT_SMS_INT:
2033 pCount->smsMsgCount = value;
2035 case MSG_THREAD_COUNT_MMS_INT:
2036 pCount->mmsMsgCount = value;
2039 err = MSG_ERR_UNKNOWN;
2045 int msg_thread_index_set_int(void *index_info, int field, int value)
2047 msg_error_t err = MSG_SUCCESS;
2049 return MSG_ERR_NULL_POINTER;
2051 MSG_THREAD_LIST_INDEX_S *pIndex = (MSG_THREAD_LIST_INDEX_S *)index_info;
2054 case MSG_THREAD_LIST_INDEX_CONTACTID_INT:
2055 pIndex->contactId = value;
2058 err = MSG_ERR_UNKNOWN;
2065 int msg_sortrule_set_int(void *sort_info, int field, int value)
2067 msg_error_t err = MSG_SUCCESS;
2070 return MSG_ERR_NULL_POINTER;
2072 MSG_SORT_RULE_S *pSort = (MSG_SORT_RULE_S *)sort_info;
2075 case MSG_SORT_RULE_SORT_TYPE_INT:
2076 pSort->sortType = value;
2079 err = MSG_ERR_UNKNOWN;
2085 int msg_folder_info_set_int(void *folder_info, int field, int value)
2087 msg_error_t err = MSG_SUCCESS;
2089 return MSG_ERR_NULL_POINTER;
2091 MSG_FOLDER_INFO_S *pFolder = (MSG_FOLDER_INFO_S *)folder_info;
2094 case MSG_FOLDER_INFO_ID_INT:
2095 pFolder->folderId = value;
2097 case MSG_FOLDER_INFO_TYPE_INT:
2098 pFolder->folderType = value;
2101 err = MSG_ERR_UNKNOWN;
2108 int msg_search_condition_set_int(void *condition_info, int field, int value)
2110 msg_error_t err = MSG_SUCCESS;
2112 return MSG_ERR_NULL_POINTER;
2114 MSG_SEARCH_CONDITION_S *pCond = (MSG_SEARCH_CONDITION_S *)condition_info;
2117 case MSG_SEARCH_CONDITION_FOLDERID_INT:
2118 pCond->folderId = value;
2120 case MSG_SEARCH_CONDITION_MSGTYPE_INT:
2121 pCond->msgType = value;
2123 case MSG_SEARCH_CONDITION_RESERVED_INT:
2124 pCond->reserved = value;
2127 err = MSG_ERR_UNKNOWN;
2134 int msg_report_status_set_int(void *report_info, int field, int value)
2136 msg_error_t err = MSG_SUCCESS;
2138 return MSG_ERR_NULL_POINTER;
2140 MSG_REPORT_STATUS_INFO_S *pReport = (MSG_REPORT_STATUS_INFO_S *)report_info;
2143 case MSG_REPORT_TYPE_INT:
2144 pReport->type = value;
2146 case MSG_REPORT_STATUS_INT:
2147 pReport->status = value;
2149 case MSG_REPORT_TIME_INT:
2150 pReport->statusTime = value;
2154 err = MSG_ERR_UNKNOWN;
2161 int msg_folder_info_set_str(void *folder_info, int field, char *value, int size)
2163 msg_error_t err = MSG_SUCCESS;
2164 if(!folder_info || !value)
2165 return MSG_ERR_NULL_POINTER;
2166 MSG_FOLDER_INFO_S *pFolder = (MSG_FOLDER_INFO_S *)folder_info;
2168 (size > MAX_FOLDER_NAME_SIZE)? _len = MAX_FOLDER_NAME_SIZE : _len = size;
2171 case MSG_FOLDER_INFO_NAME_STR:
2172 strncpy(pFolder->folderName, value, _len);
2175 err = MSG_ERR_UNKNOWN;
2182 int msg_search_condition_set_str(void *condition_info, int field, char *value, int size)
2184 msg_error_t err = MSG_SUCCESS;
2185 if(!condition_info || !value)
2186 return MSG_ERR_NULL_POINTER;
2188 MSG_SEARCH_CONDITION_S *search_cond = (MSG_SEARCH_CONDITION_S *)condition_info;
2192 case MSG_SEARCH_CONDITION_ADDRESS_VALUE_STR:
2193 search_cond->pAddressVal = value;
2195 case MSG_SEARCH_CONDITION_SEARCH_VALUE_STR:
2196 search_cond->pSearchVal = value;
2200 err = MSG_ERR_UNKNOWN;
2206 int msg_sendopt_set_bool(void *send_opt, int field, bool value)
2208 msg_error_t err = MSG_SUCCESS;
2210 return MSG_ERR_NULL_POINTER;
2212 MSG_SENDINGOPT_S *sendopt = (MSG_SENDINGOPT_S *)send_opt;
2215 case MSG_SEND_OPT_SETTING_BOOL:
2216 sendopt->bDeliverReq = value;
2218 case MSG_SEND_OPT_KEEPCOPY_BOOL:
2219 sendopt->bDeliverReq = value;
2221 case MSG_SEND_OPT_DELIVER_REQ_BOOL:
2222 sendopt->bDeliverReq = value;
2225 err = MSG_ERR_UNKNOWN;
2231 int msg_sortrule_set_bool(void *sort_rule, int field, bool value)
2233 msg_error_t err = MSG_SUCCESS;
2235 return MSG_ERR_NULL_POINTER;
2237 MSG_SORT_RULE_S *pSort = (MSG_SORT_RULE_S *)sort_rule;
2240 case MSG_SORT_RULE_ACSCEND_BOOL:
2241 pSort->bAscending = value;
2244 err = MSG_ERR_UNKNOWN;
2250 int msg_sendopt_set_struct_handle(msg_struct_s *msg_struct, int field, msg_struct_s *value)
2252 msg_error_t err = MSG_SUCCESS;
2253 if(!msg_struct || !value)
2254 return MSG_ERR_NULL_POINTER;
2256 MSG_SENDINGOPT_S *sendopt = (MSG_SENDINGOPT_S *)msg_struct->data;
2257 msg_struct_s *pTmp = NULL;
2261 case MSG_SEND_OPT_MMS_OPT_HND:
2262 pTmp = (msg_struct_s *)sendopt->mmsSendOpt;
2263 memcpy(pTmp->data, value->data, sizeof(MMS_SENDINGOPT_INFO_S));
2265 case MSG_SEND_OPT_SMS_OPT_HND:
2266 pTmp = (msg_struct_s *)sendopt->smsSendOpt;
2267 memcpy(pTmp->data, value->data, sizeof(SMS_SENDINGOPT_INFO_S));
2270 err = MSG_ERR_UNKNOWN;
2276 int msg_syncml_set_struct_handle(msg_struct_s *msg_struct, int field, msg_struct_s *value)
2278 msg_error_t err = MSG_SUCCESS;
2280 if(!msg_struct || !value)
2281 return MSG_ERR_NULL_POINTER;
2283 MSG_SYNCML_MESSAGE_S *pSync = (MSG_SYNCML_MESSAGE_S *)msg_struct->data;
2284 msg_struct_s *pTmp = NULL;
2288 case MSG_SYNCML_INFO_MESSAGE_HND:
2290 pTmp = (msg_struct_s *)pSync->msg;
2291 MSG_MESSAGE_HIDDEN_S *pSrc = (MSG_MESSAGE_HIDDEN_S *)value->data;
2292 MSG_MESSAGE_HIDDEN_S *pDst = (MSG_MESSAGE_HIDDEN_S *)pTmp->data;
2293 msg_message_copy_message(pSrc, pDst);
2297 err = MSG_ERR_UNKNOWN;
2304 int msg_thread_index_set_struct_handle(msg_struct_s *msg_struct, int field, msg_struct_s *value)
2306 msg_error_t err = MSG_SUCCESS;
2308 if(!msg_struct || !value)
2309 return MSG_ERR_NULL_POINTER;
2311 MSG_THREAD_LIST_INDEX_INFO_S *pIndex = (MSG_THREAD_LIST_INDEX_INFO_S *)msg_struct->data;
2312 msg_struct_s *pTmp = NULL;
2316 case MSG_THREAD_LIST_INDEX_ADDR_INFO_HND:
2317 pTmp = (msg_struct_s *)pIndex->msgAddrInfo;
2318 memcpy(pTmp->data, value->data, sizeof(MSG_ADDRESS_INFO_S));
2321 err = MSG_ERR_UNKNOWN;
2328 int msg_address_info_set_int(void *addrinfo, int field, int value)
2330 msg_error_t err = MSG_SUCCESS;
2332 return MSG_ERR_NULL_POINTER;
2334 MSG_ADDRESS_INFO_S *pAddr = (MSG_ADDRESS_INFO_S *)addrinfo;
2337 case MSG_ADDRESS_INFO_ADDRESS_TYPE_INT:
2338 pAddr->addressType = value;
2340 case MSG_ADDRESS_INFO_RECIPIENT_TYPE_INT:
2341 pAddr->recipientType = value;
2343 case MSG_ADDRESS_INFO_CONTACT_ID_INT:
2344 pAddr->contactId = value;
2347 err = MSG_ERR_UNKNOWN;
2355 int msg_mms_sendopt_set_int(void *opt_info, int field, int value)
2357 msg_error_t err = MSG_SUCCESS;
2359 return MSG_ERR_NULL_POINTER;
2361 MMS_SENDINGOPT_S *pOpt = (MMS_SENDINGOPT_S *)opt_info;
2364 case MSG_MMS_SENDOPTION_EXPIRY_TIME_INT:
2365 pOpt->expiryTime = value;
2367 case MSG_MMS_SENDOPTION_DELIVERY_TIME_INT:
2368 pOpt->deliveryTime = value;
2370 case MSG_MMS_SENDOPTION_PRIORITY_INT:
2371 pOpt->priority = value;
2374 err = MSG_ERR_UNKNOWN;
2381 int msg_reject_message_set_int(void *msg_info, int field, int value)
2383 msg_error_t err = MSG_SUCCESS;
2385 return MSG_ERR_NULL_POINTER;
2387 MSG_REJECT_MSG_INFO_S *pMsg = (MSG_REJECT_MSG_INFO_S *)msg_info;
2390 case MSG_REJECT_MESSAGE_MSGID_INT:
2391 pMsg->msgId = value;
2393 case MSG_REJECT_MESSAGE_DISPLAY_TIME_INT:
2394 pMsg->displayTime = value;
2397 err = MSG_ERR_UNKNOWN;
2404 int msg_address_info_set_str(void *addr_info, int field, char *value, int size)
2406 msg_error_t err = MSG_SUCCESS;
2407 if(!addr_info || !value)
2408 return MSG_ERR_NULL_POINTER;
2409 MSG_ADDRESS_INFO_S *pAddr = (MSG_ADDRESS_INFO_S *)addr_info;
2414 case MSG_ADDRESS_INFO_ADDRESS_VALUE_STR:
2415 (size > MAX_ADDRESS_VAL_LEN)? _len = MAX_ADDRESS_VAL_LEN : _len = size;
2416 memset(pAddr->addressVal, 0x00, sizeof(pAddr->addressVal));
2417 strncpy(pAddr->addressVal, value, _len);
2419 case MSG_ADDRESS_INFO_DISPLAYNAME_STR:
2420 (size > MAX_DISPLAY_NAME_LEN)? _len = MAX_DISPLAY_NAME_LEN : _len = size;
2421 memset(pAddr->displayName, 0x00, sizeof(pAddr->displayName));
2422 strncpy(pAddr->displayName, value, _len);
2425 err = MSG_ERR_UNKNOWN;
2431 int msg_reject_message_set_str(void *msg_info, int field, char *value, int size)
2433 msg_error_t err = MSG_SUCCESS;
2434 if(!msg_info || !value)
2435 return MSG_ERR_NULL_POINTER;
2436 MSG_REJECT_MSG_INFO_S *pMsg = (MSG_REJECT_MSG_INFO_S *)msg_info;
2438 (size > MAX_MSG_TEXT_LEN)? _len = MAX_MSG_TEXT_LEN : _len = size;
2441 case MSG_REJECT_MESSAGE_MSGTEXT_STR:
2442 strncpy(pMsg->msgText, value, _len);
2445 err = MSG_ERR_UNKNOWN;
2452 int msg_mms_sendopt_set_bool(void *option, int field, bool value)
2454 msg_error_t err = MSG_SUCCESS;
2456 return MSG_ERR_NULL_POINTER;
2458 MMS_SENDINGOPT_S *pOpt = (MMS_SENDINGOPT_S *)option;
2461 case MSG_MMS_SENDOPTION_READ_REQUEST_BOOL:
2462 pOpt->bReadReq = value;
2464 case MSG_MMS_SENDOPTION_DELIVERY_CUSTOMTIME_BOOL:
2465 pOpt->bUseDeliveryCustomTime = value;
2468 err = MSG_ERR_UNKNOWN;
2474 int msg_sms_sendopt_set_bool(void *option, int field, bool value)
2476 msg_error_t err = MSG_SUCCESS;
2478 return MSG_ERR_NULL_POINTER;
2480 SMS_SENDINGOPT_S *pOpt = (SMS_SENDINGOPT_S *)option;
2483 case MSG_SMS_SENDOPT_REPLYPATH_BOOL:
2484 pOpt->bReplyPath = value;
2487 err = MSG_ERR_UNKNOWN;
2493 EXPORT_API int msg_add_push_event(msg_handle_t handle, const msg_struct_t push_event)
2495 msg_error_t err = MSG_SUCCESS;
2497 if (handle == NULL || push_event == NULL)
2502 MsgHandle* pHandle = (MsgHandle*)handle;
2504 msg_struct_s *pPush = (msg_struct_s *)push_event;
2508 err = pHandle->addPushEvent((MSG_PUSH_EVENT_INFO_S *)pPush->data);
2510 catch (MsgException& e)
2512 MSG_FATAL("%s", e.what());
2513 return MSG_ERR_STORAGE_ERROR;
2519 EXPORT_API int msg_delete_push_event(msg_handle_t handle, const msg_struct_t push_event)
2521 msg_error_t err = MSG_SUCCESS;
2523 if (handle == NULL || push_event == NULL)
2528 MsgHandle* pHandle = (MsgHandle*)handle;
2530 msg_struct_s *pPush = (msg_struct_s *)push_event;
2534 err = pHandle->deletePushEvent((MSG_PUSH_EVENT_INFO_S *)pPush->data);
2536 catch (MsgException& e)
2538 MSG_FATAL("%s", e.what());
2539 return MSG_ERR_STORAGE_ERROR;
2545 EXPORT_API int msg_update_push_event(msg_handle_t handle, const msg_struct_t src_event, const msg_struct_t dst_event)
2547 msg_error_t err = MSG_SUCCESS;
2549 if (handle == NULL || src_event == NULL || dst_event == NULL)
2554 MsgHandle* pHandle = (MsgHandle*)handle;
2556 msg_struct_s *pSrc = (msg_struct_s *)src_event;
2557 msg_struct_s *pDst = (msg_struct_s *)dst_event;
2561 err = pHandle->updatePushEvent((MSG_PUSH_EVENT_INFO_S *)pSrc->data, (MSG_PUSH_EVENT_INFO_S *)pDst->data);
2563 catch (MsgException& e)
2565 MSG_FATAL("%s", e.what());
2566 return MSG_ERR_STORAGE_ERROR;
2572 char* msg_push_config_get_str(void *event_info, int field, int size)
2574 char *result = NULL;
2575 MSG_PUSH_EVENT_INFO_S *pEvent = (MSG_PUSH_EVENT_INFO_S *)event_info;
2578 case MSG_PUSH_CONFIG_CONTENT_TYPE_STR:
2579 result = pEvent->contentType;
2581 case MSG_PUSH_CONFIG_APPLICATON_ID_STR:
2582 result = pEvent->appId;
2584 case MSG_PUSH_CONFIG_PACKAGE_NAME_STR:
2585 result = pEvent->pkgName;
2595 bool msg_push_config_get_bool(void *event_info, int field)
2597 bool result = false;
2598 MSG_PUSH_EVENT_INFO_S *pEvent = (MSG_PUSH_EVENT_INFO_S *)event_info;
2601 case MSG_PUSH_CONFIG_LAUNCH_BOOL:
2602 result = pEvent->bLaunch;
2610 int msg_push_config_set_str(void *event_info, int field, char *value, int size)
2612 msg_error_t err = MSG_SUCCESS;
2613 if(!event_info || !value)
2614 return MSG_ERR_NULL_POINTER;
2615 MSG_PUSH_EVENT_INFO_S *pEvent = (MSG_PUSH_EVENT_INFO_S *)event_info;
2620 case MSG_PUSH_CONFIG_CONTENT_TYPE_STR:
2621 (size > MAX_WAPPUSH_CONTENT_TYPE_LEN)? _len = MAX_WAPPUSH_CONTENT_TYPE_LEN : _len = size;
2622 strncpy(pEvent->contentType, value, _len);
2624 case MSG_PUSH_CONFIG_APPLICATON_ID_STR:
2625 (size > MAX_WAPPUSH_ID_LEN)? _len = MAX_WAPPUSH_ID_LEN : _len = size;
2626 strncpy(pEvent->appId, value, _len);
2628 case MSG_PUSH_CONFIG_PACKAGE_NAME_STR:
2629 (size > MSG_FILEPATH_LEN_MAX)? _len = MSG_FILEPATH_LEN_MAX : _len = size;
2630 strncpy(pEvent->pkgName, value, _len);
2633 err = MSG_ERR_UNKNOWN;
2640 int msg_push_config_set_bool(void *event, int field, bool value)
2642 msg_error_t err = MSG_SUCCESS;
2644 return MSG_ERR_NULL_POINTER;
2646 MSG_PUSH_EVENT_INFO_S *pEvent = (MSG_PUSH_EVENT_INFO_S *)event;
2649 case MSG_PUSH_CONFIG_LAUNCH_BOOL:
2650 pEvent->bLaunch = value;
2653 err = MSG_ERR_UNKNOWN;