Tizen 2.1 base
authorJinkun Jang <jinkun.jang@samsung.com>
Tue, 12 Mar 2013 16:39:01 +0000 (01:39 +0900)
committerJinkun Jang <jinkun.jang@samsung.com>
Tue, 12 Mar 2013 16:39:01 +0000 (01:39 +0900)
395 files changed:
CMakeLists.txt [new file with mode: 0644]
LICENSE.Flora [new file with mode: 0644]
NOTICE [new file with mode: 0644]
inc/MsgAttachListPanel.h [new file with mode: 0644]
inc/MsgAttachListPopup.h [new file with mode: 0644]
inc/MsgAttachementControl.h [new file with mode: 0644]
inc/MsgAttachmentSavePopup.h [new file with mode: 0644]
inc/MsgBaseCustomPopup.h [new file with mode: 0644]
inc/MsgBaseData.h [new file with mode: 0644]
inc/MsgBaseEvent.h [new file with mode: 0644]
inc/MsgBaseForm.h [new file with mode: 0644]
inc/MsgBasePresentationModel.h [new file with mode: 0644]
inc/MsgBitmapUtility.h [new file with mode: 0644]
inc/MsgCbReceiveSettings.h [new file with mode: 0644]
inc/MsgCommonUtil.h [new file with mode: 0644]
inc/MsgComposeBaseControl.h [new file with mode: 0644]
inc/MsgComposerForm.h [new file with mode: 0644]
inc/MsgCompressPopup.h [new file with mode: 0644]
inc/MsgContactList.h [new file with mode: 0644]
inc/MsgContactListItem.h [new file with mode: 0644]
inc/MsgContactPopup.h [new file with mode: 0644]
inc/MsgContactUtility.h [new file with mode: 0644]
inc/MsgConversationData.h [new file with mode: 0644]
inc/MsgConversationForm.h [new file with mode: 0644]
inc/MsgConversationPresentationModel.h [new file with mode: 0644]
inc/MsgCustomTableViewItem.h [new file with mode: 0644]
inc/MsgDeleteHandlerThread.h [new file with mode: 0644]
inc/MsgDurationPopup.h [new file with mode: 0644]
inc/MsgEvent.h [new file with mode: 0644]
inc/MsgFacadeManager.h [new file with mode: 0644]
inc/MsgFontsettings.h [new file with mode: 0644]
inc/MsgFormFactory.h [new file with mode: 0644]
inc/MsgIComposeEventObserver.h [new file with mode: 0644]
inc/MsgIConversationEventListener.h [new file with mode: 0644]
inc/MsgIDeleteEventListener.h [new file with mode: 0644]
inc/MsgIMmsEventListener.h [new file with mode: 0644]
inc/MsgIPopupEventListener.h [new file with mode: 0644]
inc/MsgISizeChangeEventListener.h [new file with mode: 0644]
inc/MsgISmsEventListener.h [new file with mode: 0644]
inc/MsgIThreadEventListener.h [new file with mode: 0644]
inc/MsgLVAttachItem.h [new file with mode: 0644]
inc/MsgLVBackgroundItem.h [new file with mode: 0644]
inc/MsgLVBubbleListItem.h [new file with mode: 0644]
inc/MsgLVButtonItem.h [new file with mode: 0644]
inc/MsgLVMultiLineTextItem.h [new file with mode: 0644]
inc/MsgLVThreadListItem.h [new file with mode: 0644]
inc/MsgListPresentationModel.h [new file with mode: 0644]
inc/MsgMainFrame.h [new file with mode: 0644]
inc/MsgMediaControl.h [new file with mode: 0644]
inc/MsgMediaTextExpandEditArea.h [new file with mode: 0644]
inc/MsgMessageComposePanel.h [new file with mode: 0644]
inc/MsgMessageData.h [new file with mode: 0644]
inc/MsgMessagePresentationModel.h [new file with mode: 0644]
inc/MsgMessagesApp.h [new file with mode: 0644]
inc/MsgMmsDetailForm.h [new file with mode: 0644]
inc/MsgMmsManager.h [new file with mode: 0644]
inc/MsgMmsReceiveSettings.h [new file with mode: 0644]
inc/MsgMmsSendSettings.h [new file with mode: 0644]
inc/MsgMultimediaSettingsForm.h [new file with mode: 0644]
inc/MsgOptionPopup.h [new file with mode: 0644]
inc/MsgPhoneNumberListPopup.h [new file with mode: 0644]
inc/MsgProgressPopup.h [new file with mode: 0644]
inc/MsgRecipientPanel.h [new file with mode: 0644]
inc/MsgResendDeletePopup.h [new file with mode: 0644]
inc/MsgSettingPresentationModel.h [new file with mode: 0644]
inc/MsgSettingsForm.h [new file with mode: 0644]
inc/MsgSettingsItemList.h [new file with mode: 0644]
inc/MsgSmsManager.h [new file with mode: 0644]
inc/MsgSmsSendSettings.h [new file with mode: 0644]
inc/MsgSmsViewerForm.h [new file with mode: 0644]
inc/MsgSmscCenterList.h [new file with mode: 0644]
inc/MsgSpamFilterList.h [new file with mode: 0644]
inc/MsgSpamRestoreHandler.h [new file with mode: 0644]
inc/MsgSpamSettingsForm.h [new file with mode: 0644]
inc/MsgSubjectControl.h [new file with mode: 0644]
inc/MsgThreadData.h [new file with mode: 0644]
inc/MsgThreadListForm.h [new file with mode: 0644]
inc/MsgThreadPresentationModel.h [new file with mode: 0644]
inc/MsgTypes.h [new file with mode: 0644]
manifest.xml [new file with mode: 0644]
packaging/apps.Messages.spec [new file with mode: 0644]
res/ara-AE.xml [new file with mode: 0644]
res/aze-AZ.xml [new file with mode: 0644]
res/bul-BG.xml [new file with mode: 0644]
res/cat-ES.xml [new file with mode: 0644]
res/ces-CZ.xml [new file with mode: 0644]
res/dan-DK.xml [new file with mode: 0644]
res/deu-DE.xml [new file with mode: 0644]
res/ell-GR.xml [new file with mode: 0644]
res/eng-GB.xml [new file with mode: 0644]
res/eng-PH.xml [new file with mode: 0644]
res/eng-US.xml [new file with mode: 0644]
res/est-EE.xml [new file with mode: 0644]
res/eus-ES.xml [new file with mode: 0644]
res/fin-FI.xml [new file with mode: 0644]
res/fra-CA.xml [new file with mode: 0644]
res/fra-FR.xml [new file with mode: 0644]
res/gle-IE.xml [new file with mode: 0644]
res/glg-ES.xml [new file with mode: 0644]
res/hin-IN.xml [new file with mode: 0644]
res/hrv-HR.xml [new file with mode: 0644]
res/hun-HU.xml [new file with mode: 0644]
res/hye-AM.xml [new file with mode: 0644]
res/isl-IS.xml [new file with mode: 0644]
res/ita-IT.xml [new file with mode: 0644]
res/jpn-JP.xml [new file with mode: 0644]
res/kat-GE.xml [new file with mode: 0644]
res/kaz-KZ.xml [new file with mode: 0644]
res/kor-KR.xml [new file with mode: 0644]
res/lav-LV.xml [new file with mode: 0644]
res/lit-LT.xml [new file with mode: 0644]
res/mkd-MK.xml [new file with mode: 0644]
res/nld-NL.xml [new file with mode: 0644]
res/nob-NO.xml [new file with mode: 0644]
res/pol-PL.xml [new file with mode: 0644]
res/por-BR.xml [new file with mode: 0644]
res/por-PT.xml [new file with mode: 0644]
res/ron-RO.xml [new file with mode: 0644]
res/rus-RU.xml [new file with mode: 0644]
res/screen-density-xhigh/00_MessageBubble_date_bg.9.png [new file with mode: 0644]
res/screen-density-xhigh/00_Nocontents_text.png [new file with mode: 0644]
res/screen-density-xhigh/00_arrow_expand.png [new file with mode: 0644]
res/screen-density-xhigh/00_arrow_expand_dim.png [new file with mode: 0644]
res/screen-density-xhigh/00_arrow_expand_press.png [new file with mode: 0644]
res/screen-density-xhigh/00_btn_circle_bg_normal.png [new file with mode: 0644]
res/screen-density-xhigh/00_btn_circle_bg_normal_01.png [new file with mode: 0644]
res/screen-density-xhigh/00_btn_circle_bg_normal_01_press.png [new file with mode: 0644]
res/screen-density-xhigh/00_btn_circle_bg_press.png [new file with mode: 0644]
res/screen-density-xhigh/00_button_01_bg.9.png [new file with mode: 0644]
res/screen-density-xhigh/00_button_01_normal.9.png [new file with mode: 0644]
res/screen-density-xhigh/00_button_01_normal_press.9.png [new file with mode: 0644]
res/screen-density-xhigh/00_button_minus_normal.png [new file with mode: 0644]
res/screen-density-xhigh/00_button_minus_press.png [new file with mode: 0644]
res/screen-density-xhigh/00_button_plus.9.png [new file with mode: 0644]
res/screen-density-xhigh/00_button_plus.png [new file with mode: 0644]
res/screen-density-xhigh/00_button_plus_normal.png [new file with mode: 0644]
res/screen-density-xhigh/00_button_plus_press.png [new file with mode: 0644]
res/screen-density-xhigh/00_button_popup_dim.9.png [new file with mode: 0644]
res/screen-density-xhigh/00_button_popup_normal.9.png [new file with mode: 0644]
res/screen-density-xhigh/00_button_popup_press.9.png [new file with mode: 0644]
res/screen-density-xhigh/00_button_radio_normal1.png [new file with mode: 0644]
res/screen-density-xhigh/00_button_radio_normal2.png [new file with mode: 0644]
res/screen-density-xhigh/00_button_radio_press1.png [new file with mode: 0644]
res/screen-density-xhigh/00_button_radio_press2.png [new file with mode: 0644]
res/screen-density-xhigh/00_button_send_normal.png [new file with mode: 0644]
res/screen-density-xhigh/00_button_sweep_delete.9.png [new file with mode: 0644]
res/screen-density-xhigh/00_button_sweep_delete_press.9.png [new file with mode: 0644]
res/screen-density-xhigh/00_button_warning.png [new file with mode: 0644]
res/screen-density-xhigh/00_button_warning_press.png [new file with mode: 0644]
res/screen-density-xhigh/00_circle_button.png [new file with mode: 0644]
res/screen-density-xhigh/00_circle_button_dim.png [new file with mode: 0644]
res/screen-density-xhigh/00_circle_button_press.png [new file with mode: 0644]
res/screen-density-xhigh/00_contacts_button_bg.png [new file with mode: 0644]
res/screen-density-xhigh/00_contacts_button_bg_press.png [new file with mode: 0644]
res/screen-density-xhigh/00_contacts_circle_bg.png [new file with mode: 0644]
res/screen-density-xhigh/00_icon_Back.png [new file with mode: 0644]
res/screen-density-xhigh/00_icon_Back_64.png [new file with mode: 0644]
res/screen-density-xhigh/00_icon_Back_press.png [new file with mode: 0644]
res/screen-density-xhigh/00_icon_Back_press_64.png [new file with mode: 0644]
res/screen-density-xhigh/00_icon_more.png [new file with mode: 0644]
res/screen-density-xhigh/00_icon_more_dim.png [new file with mode: 0644]
res/screen-density-xhigh/00_icon_more_press.png [new file with mode: 0644]
res/screen-density-xhigh/00_list_expand_closed.png [new file with mode: 0644]
res/screen-density-xhigh/00_list_expand_closed_press.png [new file with mode: 0644]
res/screen-density-xhigh/00_list_expand_opened.png [new file with mode: 0644]
res/screen-density-xhigh/00_list_expand_opened_press.png [new file with mode: 0644]
res/screen-density-xhigh/00_messagebubble_bg_receive.9.png [new file with mode: 0644]
res/screen-density-xhigh/00_messagebubble_bg_sent.9.png [new file with mode: 0644]
res/screen-density-xhigh/00_popup_bg.png [new file with mode: 0644]
res/screen-density-xhigh/00_popup_bottom_bg.9.png [new file with mode: 0644]
res/screen-density-xhigh/00_popup_bottom_bg.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_bubble_bg.9.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_bubble_bg.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_01.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_02.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_03.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_04.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_05.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_06.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_07.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_08.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_09.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_10.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_11.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_12.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_13.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_14.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_15.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_16.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_17.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_18.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_19.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_20.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_21.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_22.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_23.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_24.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_25.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_26.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_27.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_28.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_29.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_list_process_30.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_more.png [new file with mode: 0644]
res/screen-density-xhigh/00_winset_more_press.png [new file with mode: 0644]
res/screen-density-xhigh/01_controlbar_icon_create.png [new file with mode: 0644]
res/screen-density-xhigh/01_controlbar_icon_settings.png [new file with mode: 0644]
res/screen-density-xhigh/M01_btn_delete.png [new file with mode: 0644]
res/screen-density-xhigh/M01_btn_delete_press.png [new file with mode: 0644]
res/screen-density-xhigh/M01_btn_message_send.png [new file with mode: 0644]
res/screen-density-xhigh/M01_btn_message_send_dim.png [new file with mode: 0644]
res/screen-density-xhigh/M01_btn_mms_message_send.png [new file with mode: 0644]
res/screen-density-xhigh/M01_btn_mms_message_send_dim.png [new file with mode: 0644]
res/screen-density-xhigh/M01_btn_plus_normal.png [new file with mode: 0644]
res/screen-density-xhigh/M01_btn_plus_press.png [new file with mode: 0644]
res/screen-density-xhigh/M01_contact_default_image.png [new file with mode: 0644]
res/screen-density-xhigh/M01_contact_default_image_press.png [new file with mode: 0644]
res/screen-density-xhigh/M01_controlbar_icon_attach.png [new file with mode: 0644]
res/screen-density-xhigh/M01_controlbar_icon_back.png [new file with mode: 0644]
res/screen-density-xhigh/M01_controlbar_icon_cancel.png [new file with mode: 0644]
res/screen-density-xhigh/M01_controlbar_icon_copy_to_phone.png [new file with mode: 0644]
res/screen-density-xhigh/M01_controlbar_icon_delete.png [new file with mode: 0644]
res/screen-density-xhigh/M01_controlbar_icon_edit.png [new file with mode: 0644]
res/screen-density-xhigh/M01_controlbar_icon_message_boxes.png [new file with mode: 0644]
res/screen-density-xhigh/M01_controlbar_icon_more.png [new file with mode: 0644]
res/screen-density-xhigh/M01_controlbar_icon_reply.png [new file with mode: 0644]
res/screen-density-xhigh/M01_controlbar_icon_resend.png [new file with mode: 0644]
res/screen-density-xhigh/M01_controlbar_icon_restore.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_OTA.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_OTA_press.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_Push.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_Push_press.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_attach.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_broadcasting.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_broadcasting_press.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_call.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_compose.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_contact_info.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_delete.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_edit.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_excel.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_html.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_image.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_message_status_mms_sent_n.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_message_status_mms_unread_n.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_message_status_sms_read_n.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_message_status_sms_sent_n.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_message_status_sms_unread_n.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_music.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_pdf.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_ppt.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_rss.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_save.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_svg.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_swf.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_text.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_unkown.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_view contact.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_view_contact.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_voice.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_word.png [new file with mode: 0644]
res/screen-density-xhigh/M01_input_bg.png [new file with mode: 0644]
res/screen-density-xhigh/M01_photo_btn_delete.png [new file with mode: 0644]
res/screen-density-xhigh/M01_photo_btn_delete_press.png [new file with mode: 0644]
res/screen-density-xhigh/M01_play_btn_next_press.png [new file with mode: 0644]
res/screen-density-xhigh/M01_play_btn_pause_press.png [new file with mode: 0644]
res/screen-density-xhigh/M01_play_btn_play_press.png [new file with mode: 0644]
res/screen-density-xhigh/M01_play_btn_previous_press.png [new file with mode: 0644]
res/screen-density-xhigh/M01_play_btn_volume_press.png [new file with mode: 0644]
res/screen-density-xhigh/M01_popup_bubble_bg.png [new file with mode: 0644]
res/screen-density-xhigh/M01_search_input_field_attach_bg.9.png [new file with mode: 0644]
res/screen-density-xhigh/M01_search_input_field_bg.9.png [new file with mode: 0644]
res/screen-density-xhigh/M01_title_bubble.png [new file with mode: 0644]
res/screen-density-xhigh/M01_title_icon_compose_press_web.png [new file with mode: 0644]
res/screen-density-xhigh/M01_title_icon_compose_web.png [new file with mode: 0644]
res/screen-density-xhigh/M01_title_icon_search_press_web.png [new file with mode: 0644]
res/screen-density-xhigh/M01_title_icon_search_web.png [new file with mode: 0644]
res/screen-density-xhigh/attach_icon.png [new file with mode: 0644]
res/screen-size-normal/IDL_ATTACHMENTS_POPUP.xml [new file with mode: 0644]
res/screen-size-normal/IDL_ATTACH_LIST_POPUP.xml [new file with mode: 0644]
res/screen-size-normal/IDL_BLOCK_MESSAGE_INFO_POPUP.xml [new file with mode: 0644]
res/screen-size-normal/IDL_BLOCK_POPUP.xml [new file with mode: 0644]
res/screen-size-normal/IDL_COMPOSER_FORM.xml [new file with mode: 0644]
res/screen-size-normal/IDL_COMPOSER_OPTION_TRAY_PANEL.xml [new file with mode: 0644]
res/screen-size-normal/IDL_CONVERSATION_LIST_EDIT_FORM.xml [new file with mode: 0644]
res/screen-size-normal/IDL_CONVERSATION_LIST_FORM.xml [new file with mode: 0644]
res/screen-size-normal/IDL_DELETE_POPUP.xml [new file with mode: 0644]
res/screen-size-normal/IDL_DELETE_PROGRESS_POPUP.xml [new file with mode: 0644]
res/screen-size-normal/IDL_DURATION_POPUP.xml [new file with mode: 0644]
res/screen-size-normal/IDL_IMAGE_COMPRESS_POPUP.xml [new file with mode: 0644]
res/screen-size-normal/IDL_MMS_DETAIL_FORM.xml [new file with mode: 0644]
res/screen-size-normal/IDL_MSG_COMPOSE_PANEL.xml [new file with mode: 0644]
res/screen-size-normal/IDL_MSG_CONTACT_NUMBER_POPUP.xml [new file with mode: 0644]
res/screen-size-normal/IDL_MSG_CONTACT_POPUP.xml [new file with mode: 0644]
res/screen-size-normal/IDL_MSG_OPTION_DETAILS_POPUP.xml [new file with mode: 0644]
res/screen-size-normal/IDL_MSG_OPTION_POPUP.xml [new file with mode: 0644]
res/screen-size-normal/IDL_MSG_RESEND_DELETE_POPUP.xml [new file with mode: 0644]
res/screen-size-normal/IDL_OPTION_TRAY_PANEL.xml [new file with mode: 0644]
res/screen-size-normal/IDL_PANEL_ATTACH_FILES_LIST.xml [new file with mode: 0644]
res/screen-size-normal/IDL_RECIPIENT_LIST_POPUP.xml [new file with mode: 0644]
res/screen-size-normal/IDL_RECIPIENT_PANEL.xml [new file with mode: 0644]
res/screen-size-normal/IDL_SETTINGS_FORM.xml [new file with mode: 0644]
res/screen-size-normal/IDL_SETTING_DELETE_FILTER_FORM.xml [new file with mode: 0644]
res/screen-size-normal/IDL_SETTING_EDIT_ADD_REJECT_NUMBER_FORM.xml [new file with mode: 0644]
res/screen-size-normal/IDL_SETTING_EDIT_ADD_WORDS_FORM.xml [new file with mode: 0644]
res/screen-size-normal/IDL_SETTING_EDIT_SERVICE_CENTER_FORM.xml [new file with mode: 0644]
res/screen-size-normal/IDL_SMS_VIEWER_FORM.xml [new file with mode: 0644]
res/screen-size-normal/IDL_THREAD_LIST_EDIT_FORM.xml [new file with mode: 0644]
res/screen-size-normal/IDL_THREAD_LIST_FORM.xml [new file with mode: 0644]
res/screen-size-normal/IDL_UNABLE_ATTACH_MESSAGE_POPUP.xml [new file with mode: 0644]
res/screen-size-normal/IDL_VOLUME_POPUP.xml [new file with mode: 0644]
res/slk-SK.xml [new file with mode: 0644]
res/slv-SI.xml [new file with mode: 0644]
res/spa-ES.xml [new file with mode: 0644]
res/spa-MX.xml [new file with mode: 0644]
res/srp-RS.xml [new file with mode: 0644]
res/swe-SE.xml [new file with mode: 0644]
res/tur-TR.xml [new file with mode: 0644]
res/ukr-UA.xml [new file with mode: 0644]
res/uzb-UZ.xml [new file with mode: 0644]
res/zho-CN.xml [new file with mode: 0644]
res/zho-HK.xml [new file with mode: 0644]
res/zho-SG.xml [new file with mode: 0644]
res/zho-TW.xml [new file with mode: 0644]
shared/data/nofile.dummy [new file with mode: 0644]
shared/res/screen-density-xhigh/mainmenu.png [new file with mode: 0644]
shared/trusted/nofile.dummy [new file with mode: 0644]
src/MsgAttachListPanel.cpp [new file with mode: 0644]
src/MsgAttachListPopup.cpp [new file with mode: 0644]
src/MsgAttachementControl.cpp [new file with mode: 0644]
src/MsgAttachmentSavePopup.cpp [new file with mode: 0644]
src/MsgBaseCustomPopup.cpp [new file with mode: 0644]
src/MsgBaseData.cpp [new file with mode: 0644]
src/MsgBaseEvent.cpp [new file with mode: 0644]
src/MsgBaseForm.cpp [new file with mode: 0644]
src/MsgBasePresentationModel.cpp [new file with mode: 0644]
src/MsgBitmapUtility.cpp [new file with mode: 0644]
src/MsgCbReceiveSettings.cpp [new file with mode: 0644]
src/MsgCommonUtil.cpp [new file with mode: 0644]
src/MsgComposerForm.cpp [new file with mode: 0644]
src/MsgCompressPopup.cpp [new file with mode: 0644]
src/MsgContactList.cpp [new file with mode: 0644]
src/MsgContactListItem.cpp [new file with mode: 0644]
src/MsgContactPopup.cpp [new file with mode: 0644]
src/MsgContactUtility.cpp [new file with mode: 0644]
src/MsgConversationData.cpp [new file with mode: 0644]
src/MsgConversationForm.cpp [new file with mode: 0644]
src/MsgConversationPresentationModel.cpp [new file with mode: 0644]
src/MsgCustomTableViewItem.cpp [new file with mode: 0644]
src/MsgDeleteHandlerThread.cpp [new file with mode: 0644]
src/MsgDurationPopup.cpp [new file with mode: 0644]
src/MsgEvent.cpp [new file with mode: 0644]
src/MsgFacadeManager.cpp [new file with mode: 0644]
src/MsgFontSettings.cpp [new file with mode: 0644]
src/MsgFormFactory.cpp [new file with mode: 0644]
src/MsgLVAttachItem.cpp [new file with mode: 0644]
src/MsgLVBackgroundItem.cpp [new file with mode: 0644]
src/MsgLVBubbleListItem.cpp [new file with mode: 0644]
src/MsgLVButtonItem.cpp [new file with mode: 0644]
src/MsgLVMultiLineTextItem.cpp [new file with mode: 0644]
src/MsgLVThreadListItem.cpp [new file with mode: 0644]
src/MsgListPresentationModel.cpp [new file with mode: 0644]
src/MsgMainFrame.cpp [new file with mode: 0644]
src/MsgMediaControl.cpp [new file with mode: 0644]
src/MsgMediaTextExpandEditArea.cpp [new file with mode: 0644]
src/MsgMessageComposePanel.cpp [new file with mode: 0644]
src/MsgMessageData.cpp [new file with mode: 0644]
src/MsgMessagePresentationModel.cpp [new file with mode: 0644]
src/MsgMessagesApp.cpp [new file with mode: 0644]
src/MsgMessagesEntry.cpp [new file with mode: 0644]
src/MsgMmsDetailForm.cpp [new file with mode: 0644]
src/MsgMmsManager.cpp [new file with mode: 0644]
src/MsgMmsReceiveSettings.cpp [new file with mode: 0644]
src/MsgMmsSendSettings.cpp [new file with mode: 0644]
src/MsgMultimediaSettingsForm.cpp [new file with mode: 0644]
src/MsgOptionPopup.cpp [new file with mode: 0644]
src/MsgPhoneNumberListPopup.cpp [new file with mode: 0644]
src/MsgProgressPopup.cpp [new file with mode: 0644]
src/MsgRecipientPanel.cpp [new file with mode: 0644]
src/MsgResendDeletePopup.cpp [new file with mode: 0644]
src/MsgSettingPresentationModel.cpp [new file with mode: 0644]
src/MsgSettingsForm.cpp [new file with mode: 0644]
src/MsgSettingsItemList.cpp [new file with mode: 0644]
src/MsgSmsManager.cpp [new file with mode: 0644]
src/MsgSmsSendSettings.cpp [new file with mode: 0644]
src/MsgSmsViewerForm.cpp [new file with mode: 0644]
src/MsgSmscCenterList.cpp [new file with mode: 0644]
src/MsgSpamFilterList.cpp [new file with mode: 0644]
src/MsgSpamRestoreHandler.cpp [new file with mode: 0644]
src/MsgSpamSettingsForm.cpp [new file with mode: 0644]
src/MsgSubjectControl.cpp [new file with mode: 0644]
src/MsgThreadData.cpp [new file with mode: 0644]
src/MsgThreadListForm.cpp [new file with mode: 0644]
src/MsgThreadPresentationModel.cpp [new file with mode: 0644]
src/MsgTypes.cpp [new file with mode: 0644]

diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644 (file)
index 0000000..00ee402
--- /dev/null
@@ -0,0 +1,38 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)\r
+\r
+# Target name and PKGID\r
+## TODO : set application name and ID\r
+SET(this_target Messages)\r
+SET(PKGID 8r4r5ddzzn)\r
+\r
+# include directory\r
+INCLUDE_DIRECTORIES(\r
+       /usr/include/msg-service\r
+       /usr/include/osp\r
+       inc\r
+  )\r
+\r
+# Source files\r
+FILE(GLOB ${this_target}_SOURCE_FILES \r
+       src/*.cpp       \r
+)\r
+\r
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIE")\r
+\r
+\r
+# Create executable\r
+SET(CMAKE_EXECUTABLE_SUFFIX ".exe")\r
+ADD_EXECUTABLE (${this_target} ${${this_target}_SOURCE_FILES})\r
+\r
+# Set link libraries and link options\r
+## TODO : add more link libraries and options\r
+TARGET_LINK_LIBRARIES(${this_target} -L/usr/lib/osp osp-appfw osp-uifw osp-social osp-media osp-image osp-content osp-telephony msg_mapi)\r
+TARGET_LINK_LIBRARIES(${this_target} -Xlinker --allow-shlib-undefined -pthread -pie)\r
+\r
+# Copy info, data, res, and icons directories\r
+INSTALL(TARGETS ${this_target} DESTINATION ../usr/apps/${PKGID}/bin)\r
+\r
+# Copy resource\r
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/manifest.xml DESTINATION ../usr/apps/${PKGID}/info)\r
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res DESTINATION ../usr/apps/${PKGID})\r
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/shared DESTINATION ../usr/apps/${PKGID})\r
diff --git a/LICENSE.Flora b/LICENSE.Flora
new file mode 100644 (file)
index 0000000..9c95663
--- /dev/null
@@ -0,0 +1,206 @@
+Flora License
+
+Version 1.0, May, 2012
+
+http://floralicense.org/license/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction,
+and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by
+the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and
+all other entities that control, are controlled by, or are
+under common control with that entity. For the purposes of
+this definition, "control" means (i) the power, direct or indirect,
+to cause the direction or management of such entity,
+whether by contract or otherwise, or (ii) ownership of fifty percent (50%)
+or more of the outstanding shares, or (iii) beneficial ownership of
+such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity
+exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications,
+including but not limited to software source code, documentation source,
+and configuration files.
+
+"Object" form shall mean any form resulting from mechanical
+transformation or translation of a Source form, including but
+not limited to compiled object code, generated documentation,
+and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form,
+made available under the License, as indicated by a copyright notice
+that is included in or attached to the work (an example is provided
+in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form,
+that is based on (or derived from) the Work and for which the editorial
+revisions, annotations, elaborations, or other modifications represent,
+as a whole, an original work of authorship. For the purposes of this License,
+Derivative Works shall not include works that remain separable from,
+or merely link (or bind by name) to the interfaces of, the Work and
+Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original
+version of the Work and any modifications or additions to that Work or
+Derivative Works thereof, that is intentionally submitted to Licensor
+for inclusion in the Work by the copyright owner or by an individual or
+Legal Entity authorized to submit on behalf of the copyright owner.
+For the purposes of this definition, "submitted" means any form of
+electronic, verbal, or written communication sent to the Licensor or
+its representatives, including but not limited to communication on
+electronic mailing lists, source code control systems, and issue
+tracking systems that are managed by, or on behalf of, the Licensor
+for the purpose of discussing and improving the Work, but excluding
+communication that is conspicuously marked or otherwise designated
+in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity
+on behalf of whom a Contribution has been received by Licensor and
+subsequently incorporated within the Work.
+
+"Tizen Certified Platform" shall mean a software platform that complies
+with the standards set forth in the Compatibility Definition Document
+and passes the Compatibility Test Suite as defined from time to time
+by the Tizen Technical Steering Group and certified by the Tizen
+Association or its designated agent.
+
+2. Grant of Copyright License.  Subject to the terms and conditions of
+this License, each Contributor hereby grants to You a perpetual,
+worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+copyright license to reproduce, prepare Derivative Works of,
+publicly display, publicly perform, sublicense, and distribute the
+Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License.  Subject to the terms and conditions of
+this License, each Contributor hereby grants to You a perpetual,
+worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+(except as stated in this section) patent license to make, have made,
+use, offer to sell, sell, import, and otherwise transfer the Work
+solely as incorporated into a Tizen Certified Platform, where such
+license applies only to those patent claims licensable by such
+Contributor that are necessarily infringed by their Contribution(s)
+alone or by combination of their Contribution(s) with the Work solely
+as incorporated into a Tizen Certified Platform to which such
+Contribution(s) was submitted. If You institute patent litigation
+against any entity (including a cross-claim or counterclaim
+in a lawsuit) alleging that the Work or a Contribution incorporated
+within the Work constitutes direct or contributory patent infringement,
+then any patent licenses granted to You under this License for that
+Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution.  You may reproduce and distribute copies of the
+Work or Derivative Works thereof pursuant to the copyright license
+above, in any medium, with or without modifications, and in Source or
+Object form, provided that You meet the following conditions:
+
+  1. You must give any other recipients of the Work or Derivative Works
+     a copy of this License; and
+  2. You must cause any modified files to carry prominent notices stating
+     that You changed the files; and
+  3. You must retain, in the Source form of any Derivative Works that
+     You distribute, all copyright, patent, trademark, and attribution
+     notices from the Source form of the Work, excluding those notices
+     that do not pertain to any part of the Derivative Works; and
+  4. If the Work includes a "NOTICE" text file as part of its distribution,
+     then any Derivative Works that You distribute must include a readable
+     copy of the attribution notices contained within such NOTICE file,
+     excluding those notices that do not pertain to any part of
+     the Derivative Works, in at least one of the following places:
+     within a NOTICE text file distributed as part of the Derivative Works;
+     within the Source form or documentation, if provided along with the
+     Derivative Works; or, within a display generated by the Derivative Works,
+     if and wherever such third-party notices normally appear.
+     The contents of the NOTICE file are for informational purposes only
+     and do not modify the License.
+
+You may add Your own attribution notices within Derivative Works
+that You distribute, alongside or as an addendum to the NOTICE text
+from the Work, provided that such additional attribution notices
+cannot be construed as modifying the License. You may add Your own
+copyright statement to Your modifications and may provide additional or
+different license terms and conditions for use, reproduction, or
+distribution of Your modifications, or for any such Derivative Works
+as a whole, provided Your use, reproduction, and distribution of
+the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+any Contribution intentionally submitted for inclusion in the Work
+by You to the Licensor shall be under the terms and conditions of
+this License, without any additional terms or conditions.
+Notwithstanding the above, nothing herein shall supersede or modify
+the terms of any separate license agreement you may have executed
+with Licensor regarding such Contributions.
+
+6. Trademarks.  This License does not grant permission to use the trade
+names, trademarks, service marks, or product names of the Licensor,
+except as required for reasonable and customary use in describing the
+origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+agreed to in writing, Licensor provides the Work (and each
+Contributor provides its Contributions) on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+implied, including, without limitation, any warranties or conditions
+of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+PARTICULAR PURPOSE. You are solely responsible for determining the
+appropriateness of using or redistributing the Work and assume any
+risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+whether in tort (including negligence), contract, or otherwise,
+unless required by applicable law (such as deliberate and grossly
+negligent acts) or agreed to in writing, shall any Contributor be
+liable to You for damages, including any direct, indirect, special,
+incidental, or consequential damages of any character arising as a
+result of this License or out of the use or inability to use the
+Work (including but not limited to damages for loss of goodwill,
+work stoppage, computer failure or malfunction, or any and all
+other commercial damages or losses), even if such Contributor
+has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+the Work or Derivative Works thereof, You may choose to offer,
+and charge a fee for, acceptance of support, warranty, indemnity,
+or other liability obligations and/or rights consistent with this
+License. However, in accepting such obligations, You may act only
+on Your own behalf and on Your sole responsibility, not on behalf
+of any other Contributor, and only if You agree to indemnify,
+defend, and hold each Contributor harmless for any liability
+incurred by, or claims asserted against, such Contributor by reason
+of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Flora License to your work
+
+To apply the Flora License to your work, attach the following
+boilerplate notice, with the fields enclosed by brackets "[]"
+replaced with your own identifying information. (Don't include
+the brackets!) The text should be enclosed in the appropriate
+comment syntax for the file format. We also recommend that a
+file or class name and description of purpose be included on the
+same "printed page" as the copyright notice for easier
+identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Flora License, Version 1.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://floralicense.org/license/
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
diff --git a/NOTICE b/NOTICE
new file mode 100644 (file)
index 0000000..9ec42be
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,3 @@
+Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.
+Except as noted, this software is licensed under Flora License, Version 1.
+Please, see the LICENSE.Flora file for Flora License, Version 1 terms and conditions.
\ No newline at end of file
diff --git a/inc/MsgAttachListPanel.h b/inc/MsgAttachListPanel.h
new file mode 100644 (file)
index 0000000..9ba8eed
--- /dev/null
@@ -0,0 +1,77 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgAttachListPanel.h\r
+ * @brief              This is the header file for the %AttachListPanel class.\r
+ *\r
+ * This header file contains the declarations of the %AttachListPanel class.\r
+ */\r
+#ifndef _MSG_ATTACH_LIST_PANEL_H_\r
+#define _MSG_ATTACH_LIST_PANEL_H_\r
+\r
+#include "FUi.h"\r
+\r
+class MessageData;\r
+\r
+class AttachListPanel\r
+       : public Tizen::Ui::Controls::Panel\r
+       , public Tizen::Ui::IActionEventListener\r
+       , public Tizen::Ui::Controls::IListViewItemEventListener\r
+       , public Tizen::Ui::Controls::IListViewItemProvider\r
+{\r
+public:\r
+       AttachListPanel(MessageData* pMessageDta);\r
+       result Construct(void);\r
+       virtual ~AttachListPanel();\r
+\r
+       // IListViewItemEventListener\r
+       virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state){}\r
+       virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status);\r
+       virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction){}\r
+       virtual void OnListViewItemLongPressed(Tizen::Ui::Controls::ListView& listView, int index, int elementId, bool& invokeListViewItemCallback){}\r
+       //IListViewItemProvider\r
+       virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int index, int itemWidth);\r
+       virtual bool DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);\r
+       virtual int GetItemCount(void);\r
+       // From IActionEventListener\r
+       virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId){};\r
+\r
+       Tizen::Graphics::Bitmap* GetIconN(const Tizen::Base::String& filePath) const;\r
+\r
+private:\r
+       class AttachMentsObject\r
+               : public Tizen::Base::Object\r
+       {\r
+       public:\r
+               AttachMentsObject(const Tizen::Base::String& filePath, Tizen::Graphics::Bitmap* pIconBitmap)\r
+                       : __pFilepath(filePath)\r
+                       , __pIconBitmap(pIconBitmap)\r
+               {}\r
+               const Tizen::Base::String& GetAttachmentPath(void) const { return __pFilepath;}\r
+               const Tizen::Graphics::Bitmap* GetIcon(void) const { return __pIconBitmap;}\r
+       private:\r
+               Tizen::Base::String __pFilepath;\r
+               Tizen::Graphics::Bitmap* __pIconBitmap;\r
+       };\r
+private:\r
+       MessageData* __messageData;\r
+       Tizen::Base::Collection::ArrayList* __pAttachFileArray;\r
+       Tizen::Ui::Controls::Panel* __pPanel;\r
+       Tizen::Ui::Controls::ListView* __pListView;\r
+};\r
+\r
+#endif //_MSG_ATTACH_LIST_PANEL_H_\r
diff --git a/inc/MsgAttachListPopup.h b/inc/MsgAttachListPopup.h
new file mode 100644 (file)
index 0000000..2cd1b0b
--- /dev/null
@@ -0,0 +1,86 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgAttachListPopup.h\r
+ * @brief              This is the header file for the %AttachListPopup class.\r
+ *\r
+ * This header file contains the declarations of the %AttachListPopup class.\r
+ */\r
+#ifndef _MSG_ATTACH_LIST_POPUP_H_\r
+#define _MSG_ATTACH_LIST_POPUP_H_\r
+\r
+#include "MsgBaseCustomPopup.h"\r
+\r
+class AttachListPopup\r
+       : public BaseCustomPopup\r
+       , public Tizen::Ui::IActionEventListener\r
+       , public Tizen::Ui::Controls::IListViewItemEventListener\r
+       , public Tizen::Ui::Controls::IListViewItemProvider\r
+{\r
+\r
+public:\r
+       AttachListPopup(Tizen::Ui::Control& parent);\r
+       virtual ~AttachListPopup(void);\r
+       result Construct(bool hideSubject);\r
+       // IListViewItemEventListener\r
+       virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state){}\r
+       virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status);\r
+       virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction){}\r
+       virtual void OnListViewItemLongPressed(Tizen::Ui::Controls::ListView& listView, int index, int elementId, bool& invokeListViewItemCallback){}\r
+       //IListViewItemProvider\r
+       virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int index, int itemWidth);\r
+       virtual bool DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);\r
+       virtual int GetItemCount(void);\r
+       // From IActionEventListener\r
+       virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);\r
+\r
+private:\r
+       enum AttachElementId\r
+       {\r
+               ATTACH_ELEMENT_SUBJECT,\r
+               ATTACH_ELEMENT_GALLERY,\r
+               ATTACH_ELEMENT_TAKE_PICTURE,\r
+               ATTACH_ELEMENT_CAPTURE_VIDEO,\r
+               ATTACH_ELEMENT_RECORD_AUDIO,\r
+               ATTACH_ELEMENT_MY_FILES,\r
+               ATTACH_ELEMENT_CONTACTS,\r
+               ATTACH_ELEMENT_CALENDAR,\r
+               ATTACH_ELEMENT_MEMO,\r
+       };\r
+\r
+       class AttachObject\r
+               : public Tizen::Base::Object\r
+       {\r
+       public:\r
+               AttachObject(const Tizen::Base::String& attachName, AttachElementId attachElementId)\r
+                       : __attachName(attachName)\r
+                       , __attachElementId(attachElementId)\r
+               {};\r
+               ~AttachObject(void){}\r
+               const Tizen::Base::String& GetAttachName(void) const { return __attachName;}\r
+               AttachElementId GetAttachId(void) const { return __attachElementId;}\r
+       private:\r
+               Tizen::Base::String __attachName;\r
+               AttachElementId __attachElementId;\r
+       };\r
+       Tizen::Ui::Control& __parentCntl;\r
+       Tizen::Base::Collection::ArrayList* __pAttachList;\r
+       Tizen::Ui::Controls::ListView* __pAttachListView;\r
+       Tizen::Ui::Controls::Button* __pCloseButton;\r
+};\r
+\r
+#endif // _MSG_ATTACH_LIST_POPUP_H_\r
diff --git a/inc/MsgAttachementControl.h b/inc/MsgAttachementControl.h
new file mode 100644 (file)
index 0000000..730c3bd
--- /dev/null
@@ -0,0 +1,54 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgAttachementControl.h\r
+ * @brief              This is the header file for the %AttachementControl class.\r
+ *\r
+ * This header file contains the declarations of the %AttachementControl class.\r
+ */\r
+#ifndef _MSG_ATTACHEMENT_CONTROL_H_\r
+#define _MSG_ATTACHEMENT_CONTROL_H_\r
+\r
+#include "MsgComposeBaseControl.h"\r
+\r
+class AttachementControl\r
+       : public ComposeBaseControl\r
+{\r
+public:\r
+       AttachementControl(const Tizen::Base::String& attachFile);\r
+       virtual ~AttachementControl(void);\r
+       result Construct(const Tizen::Graphics::Rectangle& rectangle);\r
+       void SetAttachmentFile(const Tizen::Base::String& attachFile);\r
+       const Tizen::Base::String& GetAttachementFilepath(void) const;\r
+       void SetDeleteActionId(int actionId);\r
+       void AddActionEventListener(Tizen::Ui::IActionEventListener& listener);\r
+\r
+protected:\r
+       // Form Base class\r
+       virtual result OnDraw(void);\r
+       // Form ComposeBaseControl\r
+       virtual ComposeControlType GetControlType(void) const;\r
+\r
+private:\r
+       Tizen::Graphics::Bitmap* __pBgBitmap;\r
+       Tizen::Base::String __attachFilePath;\r
+       Tizen::Graphics::Bitmap* __pAttachIcon;\r
+       Tizen::Ui::Controls::Label* __pAttachLabel;\r
+       Tizen::Ui::Controls::Button* __pDeleteButton;\r
+};\r
+\r
+#endif //_MSG_ATTACHEMENT_CONTROL_H_\r
diff --git a/inc/MsgAttachmentSavePopup.h b/inc/MsgAttachmentSavePopup.h
new file mode 100644 (file)
index 0000000..cd03f77
--- /dev/null
@@ -0,0 +1,80 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgAttachementSavePopup.h\r
+ * @brief              This is the header file for the %AttachementSavePopup class.\r
+ *\r
+ * This header file contains the declarations of the %AttachementSavePopup class.\r
+ */\r
+#ifndef _MSG_ATTACHMENT_SAVE_POPUP_H_\r
+#define _MSG_ATTACHMENT_SAVE_POPUP_H_\r
+\r
+#include "MsgBaseCustomPopup.h"\r
+\r
+class MessageData;\r
+\r
+class AttachementSavePopup\r
+       : public BaseCustomPopup\r
+       , public Tizen::Ui::IActionEventListener\r
+       , public Tizen::Ui::Controls::IListViewItemEventListener\r
+       , public Tizen::Ui::Controls::IListViewItemProvider\r
+{\r
+\r
+public:\r
+       AttachementSavePopup(Tizen::Ui::Control& parent, MessageData* pMessageDta);\r
+       virtual ~AttachementSavePopup(void);\r
+       result Construct(void);\r
+       // IListViewItemEventListener\r
+       virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state){}\r
+       virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status);\r
+       virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction){}\r
+       virtual void OnListViewItemLongPressed(Tizen::Ui::Controls::ListView& listView, int index, int elementId, bool& invokeListViewItemCallback){}\r
+       //IListViewItemProvider\r
+       virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int index, int itemWidth);\r
+       virtual bool DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);\r
+       virtual int GetItemCount(void);\r
+       // From IActionEventListener\r
+       virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);\r
+       //virtual result OnDraw(void);\r
+\r
+       void CheckAll(bool state);\r
+       void SaveSelectedAttachments(void);\r
+       Tizen::Graphics::Bitmap* GetIconN(const Tizen::Base::String& filePath) const;\r
+       void ExitPopup(void);\r
+private:\r
+       class AttachMentsObject\r
+               : public Tizen::Base::Object\r
+       {\r
+       public:\r
+               AttachMentsObject(const Tizen::Base::String& filePath, Tizen::Graphics::Bitmap* pIconBitmap)\r
+                       : __pFilepath(filePath)\r
+                       , __pIconBitmap(pIconBitmap)\r
+               {}\r
+               const Tizen::Base::String& GetAttachmentPath(void) const { return __pFilepath;}\r
+               const Tizen::Graphics::Bitmap* GetIcon(void) const { return __pIconBitmap;}\r
+       private:\r
+               Tizen::Base::String __pFilepath;\r
+               Tizen::Graphics::Bitmap* __pIconBitmap;\r
+       };\r
+       Tizen::Ui::Control& __parentCntl;\r
+       MessageData* __pMessageData;\r
+       Tizen::Base::Collection::ArrayList* __pAttachFileArray;\r
+       Tizen::Base::Collection::ArrayList* __pSelectedFiles;\r
+\r
+};\r
+\r
+#endif // _MSG_ATTACHMENT_SAVE_POPUP_H_\r
diff --git a/inc/MsgBaseCustomPopup.h b/inc/MsgBaseCustomPopup.h
new file mode 100644 (file)
index 0000000..0e4c14d
--- /dev/null
@@ -0,0 +1,41 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgBaseCustomPopup.h\r
+ * @brief              This is the header file for the %BaseCustomPopup class.\r
+ *\r
+ * This header file contains the declarations of the %BaseCustomPopup class.\r
+ */\r
+#ifndef _MSG_BASE_CUSTOM_POPUP_H_\r
+#define _MSG_BASE_CUSTOM_POPUP_H_\r
+\r
+#include "FUi.h"\r
+\r
+class BaseCustomPopup\r
+       : public Tizen::Ui::Controls::Popup\r
+{\r
+\r
+public:\r
+       BaseCustomPopup(void);\r
+       virtual ~BaseCustomPopup(void);\r
+       void SetFooterBackgroundBitmap(Tizen::Graphics::Bitmap* pFooterBg);\r
+       virtual result OnDraw(void);\r
+private:\r
+       Tizen::Graphics::Bitmap* __pBottomBg;\r
+};\r
+\r
+#endif // _MSG_BASE_CUSTOM_POPUP_H_\r
diff --git a/inc/MsgBaseData.h b/inc/MsgBaseData.h
new file mode 100644 (file)
index 0000000..4f149fc
--- /dev/null
@@ -0,0 +1,212 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgBaseData.h\r
+ * @brief              This is the header file for the %BaseData class.\r
+ *\r
+ * This header file contains the declarations of the %BaseData class.\r
+ */\r
+#ifndef _MSG_BASE_DATA_H_\r
+#define _MSG_BASE_DATA_H_\r
+\r
+#include <FBase.h>\r
+\r
+\r
+enum DataType\r
+{\r
+       DATA_TYPE_THREAD,\r
+       DATA_TYPE_CONV,\r
+       DATA_TYPE_MESSAGE,\r
+};\r
+\r
+/**\r
+ * @class              BaseData\r
+ *\r
+ * Class BaseData is parent class of thread, message and conversation data.This class define the common API\r
+ * for UI display.\r
+ */\r
+\r
+class BaseData\r
+       : public Tizen::Base::Object\r
+{\r
+public:\r
+       /**\r
+        *  Destructor for this abstract class\r
+        */\r
+       virtual ~BaseData(void) {};\r
+\r
+       /**\r
+        * Return clone of current entry\r
+        */\r
+       virtual BaseData* CloneN(void) = 0;\r
+\r
+       /**\r
+        * Fetch ID for current entry. This is an synchronous API.\r
+        *\r
+        * @param  No argument.\r
+        *\r
+        * @return int - Return ID for current entry.\r
+        *\r
+        */\r
+       virtual int GetEntryId(void) const = 0;\r
+\r
+       /**\r
+        * Get display name for current entry.\r
+        *\r
+        * @param       No argument\r
+        *\r
+        * @return String - Display text of current entry.\r
+        */\r
+       virtual const Tizen::Base::String& GetDisplayName(void) const = 0;\r
+\r
+       /**\r
+        * Get Message text for current entry.\r
+        *\r
+        * @param       No argument\r
+        *\r
+        * @return String - message body text of message entry and short message for thread entry\r
+        */\r
+       virtual const Tizen::Base::String& GetMessageText(void) const = 0;\r
+\r
+       /**\r
+        * Fetch message type for current entry. This is an synchronous API.\r
+        * Indicates the message type. See enum _MSG_MESSAGE_TYPE_E\r
+        *\r
+        * @param       No argument\r
+        *\r
+        * @return int      - Return message type of current message list index.\r
+        *\r
+        */\r
+       virtual int GetMessageType(void) const = 0;\r
+\r
+       /**\r
+        * Fetch unread message count for given thread index. This is an synchronous API.\r
+        *\r
+        * @return String       - Return unread message count for current thread index.\r
+        *\r
+        */\r
+       virtual int GetUnreadCount(void) const = 0;\r
+\r
+       /**\r
+        * Fetch time stamp for current entry. This is an synchronous API.\r
+        *\r
+        * @param       No argument\r
+        *\r
+        * @return String  - Return time stamp of current entry.\r
+        *\r
+        */\r
+       virtual const Tizen::Base::String& GetTimeStamp(void) const = 0;\r
+\r
+       /**\r
+        * Fetch group name of current entry. This is an synchronous API.\r
+        *\r
+        * @param       No argument\r
+        *\r
+        * @return String - Return group name of current entry base on time stamp.\r
+        *\r
+        */\r
+       virtual const Tizen::Base::String& GetGroupName(void) const = 0;\r
+\r
+       /**\r
+        *  Get draft message count\r
+        */\r
+       virtual const int GetDraftMessageCount(void) const = 0;\r
+\r
+       /**\r
+        * Get data type.\r
+        */\r
+       virtual DataType GetDataType(void) = 0;\r
+};\r
+\r
+class AddressInfo\r
+       : public Tizen::Base::Object\r
+{\r
+public:\r
+       Tizen::Base::String displayName; // display name\r
+       Tizen::Base::String phoneNumber; // phone number\r
+       bool needToValidate;\r
+       AddressInfo();\r
+};\r
+\r
+class MmsPageData\r
+       : public Tizen::Base::Object\r
+{\r
+public:\r
+       MmsPageData(const Tizen::Base::String& bodyText, bool isTextTop = true);\r
+       const Tizen::Base::String& GetBodyText(void) const { return __bodyText;}\r
+       const Tizen::Base::String& GetImagePath(void) const { return __imagePath;}\r
+       const Tizen::Base::String& GetAudioPath(void) const { return __audioPath;}\r
+       const Tizen::Base::String& GetVideoPath(void) const { return __videoPath;}\r
+       int GetPageDuration(void) const { return __pageDuration;}\r
+       void SetBodyText(const Tizen::Base::String& bodyText)  {  __bodyText = bodyText;}\r
+       void SetImagePath(const Tizen::Base::String& imagePath)  {  __imagePath = imagePath;}\r
+       void SetAudioPath(const Tizen::Base::String& audioPath)  {  __audioPath = audioPath;}\r
+       void SetVideoPath(const Tizen::Base::String& videoPath)  {  __videoPath = videoPath;}\r
+       void setPageDuration(int pageDuration)  { __pageDuration = pageDuration;}\r
+\r
+       bool IsTextTop(void) const { return __isTextTop;}\r
+       bool IsImageExist(void) const { return (!__imagePath.IsEmpty());}\r
+       bool IsAudioExist(void) const { return (!__audioPath.IsEmpty());}\r
+       bool IsVideoExist(void) const { return (!__videoPath.IsEmpty());}\r
+private:\r
+       int __pageDuration;\r
+       Tizen::Base::String __bodyText;\r
+       Tizen::Base::String __imagePath;\r
+       Tizen::Base::String __audioPath;\r
+       Tizen::Base::String __videoPath;\r
+       bool __isTextTop;\r
+};\r
+\r
+class MessageComposeData\r
+       : public Tizen::Base::Object\r
+{\r
+public:\r
+       MessageComposeData(const Tizen::Base::String& subjectText, Tizen::Base::Collection::ArrayList* pPageList, Tizen::Base::Collection::ArrayList* pAttachList);\r
+       MessageComposeData(const Tizen::Base::String& smsBodyText);\r
+       ~MessageComposeData();\r
+       bool IsMms(void) const { return __isMms;}\r
+       const Tizen::Base::String& GetSmsBody(void) const { return __smsText;}\r
+       const Tizen::Base::String& GetSubject(void) const { return __subjectText;}\r
+       const Tizen::Base::Collection::ArrayList* GetPageList(void) const { return __pPageList;}\r
+       const Tizen::Base::Collection::ArrayList* GetAttachList(void) const { return __pAttachList;}\r
+       const Tizen::Base::Collection::ArrayList* GetRecipientList(void) const { return __pRecipientList;}\r
+       void AddRecipient(AddressInfo* pRecipient);\r
+       void AddAttachment(const Tizen::Base::String& attachFilepath);\r
+       void AddPage(MmsPageData* pMmsPage);\r
+       void SetSmsBody(const Tizen::Base::String& smsBodyText);\r
+       void SetSubject(const Tizen::Base::String& subjectText);\r
+       void SetComposeMms(bool isMms){__isMms = isMms;}\r
+\r
+private:\r
+       // To prevent double deletion\r
+       MessageComposeData(const MessageComposeData& rhs);\r
+       MessageComposeData& operator =(const MessageComposeData& rhs);\r
+\r
+private:\r
+       bool __isMms;\r
+       Tizen::Base::String __smsText;\r
+       Tizen::Base::String __subjectText;\r
+       //! Array of MmsPageData\r
+       Tizen::Base::Collection::ArrayList* __pPageList;\r
+       //! Array of attach file path(String)\r
+       Tizen::Base::Collection::ArrayList* __pAttachList;\r
+       //! Array of AddressInfo\r
+       Tizen::Base::Collection::ArrayList* __pRecipientList;\r
+\r
+};\r
+\r
+#endif // _MSG_BASE_DATA_H_\r
diff --git a/inc/MsgBaseEvent.h b/inc/MsgBaseEvent.h
new file mode 100644 (file)
index 0000000..bcc0d12
--- /dev/null
@@ -0,0 +1,95 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgBaseEvent.h\r
+ * @brief              This is the header file for the %BaseEvent class.\r
+ *\r
+ * This header file contains the declarations of the %BaseData class.\r
+ */\r
+#ifndef _MSG_BASE_EVENT_H_\r
+#define _MSG_BASE_EVENT_H_\r
+\r
+#include <FBaseObject.h>\r
+\r
+namespace Tizen { namespace Base { namespace Runtime\r
+{\r
+class IEventListener;\r
+}}};\r
+\r
+class ConversationEvent;\r
+class SmsEvent;\r
+class ThreadEvent;\r
+\r
+/**\r
+ * @class              BaseEvent\r
+ *\r
+ * Class BaseEvent is parent class of message event listener holder. Directly\r
+ * this class instance can't be created.\r
+ */\r
+\r
+class BaseEvent\r
+       : public Tizen::Base::Object\r
+{\r
+       friend class ConversationEvent;\r
+       friend class MmsEvent;\r
+       friend class SmsEvent;\r
+       friend class ThreadEvent;\r
+\r
+public:\r
+       /**\r
+        * Default destructor for this class\r
+        */\r
+       virtual ~BaseEvent(void);\r
+\r
+       /**\r
+        *  Compare two event listener and return true if both are same.\r
+        *\r
+        *  @param      pEvent  - Event which need to be compare.\r
+        *\r
+        *  @return      true   if both event are same else false.\r
+        */\r
+       bool IsSame(const Tizen::Base::Runtime::IEventListener* pEvent);\r
+\r
+       /**\r
+        * Return current event listener.\r
+        *\r
+        */\r
+       const Tizen::Base::Runtime::IEventListener* GetEvent(void) const;\r
+\r
+private:\r
+       /**\r
+        * This is one argument constructor for this class\r
+        *\r
+        * @param   pEvent      - listener event.\r
+        */\r
+       BaseEvent(const Tizen::Base::Runtime::IEventListener* pEvent);\r
+\r
+       /**\r
+        * Empty copy constructor\r
+        */\r
+       BaseEvent(const BaseEvent& rhs);\r
+\r
+       /**\r
+        * Empty assignment operator\r
+        */\r
+       BaseEvent& operator =(const BaseEvent& rhs);\r
+\r
+private:\r
+       const Tizen::Base::Runtime::IEventListener* __pEvent; //! Not own\r
+};\r
+\r
+#endif // _MSG_BASE_EVENT_H_\r
diff --git a/inc/MsgBaseForm.h b/inc/MsgBaseForm.h
new file mode 100644 (file)
index 0000000..3c9d6c3
--- /dev/null
@@ -0,0 +1,82 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgBaseForm.h\r
+ * @brief              This is the header file for the %BaseForm class.\r
+ *\r
+ * This header file contains the declarations of the %BaseForm class.\r
+ */\r
+#ifndef _MSG_BASE_FORM_H_\r
+#define _MSG_BASE_FORM_H_\r
+\r
+#include <FUiCtrlForm.h>\r
+#include <FUiCtrlIFormBackEventListener.h>\r
+\r
+/**\r
+ * @class              BaseForm\r
+ *\r
+ * This        Class is base class of all message form.\r
+ */\r
+\r
+class BaseForm\r
+       : public Tizen::Ui::Controls::Form\r
+       , public Tizen::Ui::IActionEventListener\r
+       , public Tizen::Ui::Controls::IFormBackEventListener\r
+{\r
+public:\r
+       //! Constructor\r
+       /**\r
+        * Default constructor for this class.\r
+        */\r
+       BaseForm(void);\r
+\r
+       //! Destructor\r
+       /**\r
+        *  Default destructor for this class.\r
+        */\r
+       virtual ~BaseForm(void);\r
+\r
+       //! From derived from MsgBaseForm, should override this method.\r
+       virtual bool Initialize(void) = 0;\r
+\r
+       //! Initialize, this should call if from derived from MsgBaseForm\r
+       result InitializeBase(void);\r
+\r
+protected:\r
+       //! From IActionEventListener\r
+       void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);\r
+\r
+       //! From IFormBackEventListener\r
+       void OnFormBackRequested(Tizen::Ui::Controls::Form& source);\r
+\r
+       /**\r
+        * Call back function for modify footer. This will be call during construction time.\r
+        *\r
+        * @param       footer          - Reference to form footer.\r
+        */\r
+       virtual void OnIntializeFooter(Tizen::Ui::Controls::Footer& footer);\r
+\r
+       /**\r
+        * Call back function for modify header, This will be call during construction time.\r
+        *\r
+        * @param       footer          - Reference to form footer.\r
+        */\r
+       virtual void OnIntializeHeader(Tizen::Ui::Controls::Header& header);\r
+\r
+};\r
+\r
+#endif // _MSG_BASE_FORM_H_\r
diff --git a/inc/MsgBasePresentationModel.h b/inc/MsgBasePresentationModel.h
new file mode 100644 (file)
index 0000000..07fa398
--- /dev/null
@@ -0,0 +1,180 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+/**
+ * @file               MsgBasePresentationModel.h
+ * @brief              This is the header file for the %BasePresentationModel class.
+ *
+ * This header file contains the declarations of the %BasePresentationModel class.
+ */
+#ifndef _MSG_BASE_PRESENTATION_MODEL_H_
+#define _MSG_BASE_PRESENTATION_MODEL_H_
+
+#include <msg_storage_types.h>
+#include <msg_types.h>
+
+#include <FBase.h>
+#include <FUiControl.h>
+
+namespace Tizen { namespace Base { namespace Collection
+{
+class ArrayList;
+}}};
+
+class DeleteHandlerThread;
+class IDeleteEventListener;
+class MessageData;
+class SpamRestoreHandler;
+class ThreadData;
+
+/**
+ * @class      BasePresentationModel
+ *
+ * This is data presentation model base class. All presentation model should derived from this class.
+ * This interface is design to overcome future modification.
+ */
+
+class BasePresentationModel
+{
+
+public:
+       /**
+        * @function: Destructor.
+        *
+        * Interface virtual destructor.
+        *
+        */
+       virtual ~BasePresentationModel(void);
+
+       /**
+        * Delete particular thread or message based on given uniqueID and requestType
+        *
+        * @param uniqueID      Delete message or thread id depend on requestType,
+        * @param requestType   Type of delete request. Reference enum MsgDeleteRequest
+        *
+        * @return void
+        */
+       void Delete(int deleteId, int requestType);
+
+       /**
+        * Delete list of thread and messages based pIdList list.
+        *
+        * @param pIdList     - Thread or message ID list to be deleted.
+        * @param listener    - delete event listener.
+        * @param requestType - Type of delete request. Reference enum MsgDeleteRequest
+        *
+        */
+       void Delete(Tizen::Base::Collection::IListT< int >* pDeleteIdList, Tizen::Ui::Control& listener, int requestType);
+
+       /**
+        * Delete single message/ thread based on thread or message ID.
+        *
+        * @param pIdList     - Thread or message ID list to be deleted.
+        * @param listener    - delete event listener.
+        * @param requestType - Type of delete request. Reference enum MsgDeleteRequest
+        */
+       void Delete(int deleteId, Tizen::Ui::Control& listener, int requestType);
+
+       /**
+        * Fetch phone number list for given thread ID..
+        *
+        * @param threadId     - Thread ID to fetch phone number list.
+        *
+        * @return ArrayList*  - In case of succes return valid pointer to phone number list.
+        */
+       Tizen::Base::Collection::ArrayList* GetPhoneNumberListN(int threadId) const;
+
+       /**
+        * Fetch phone number list for given thread ID..
+        *
+        * @param threadId     - Thread ID to fetch phone number list.
+        *
+        * @return ArrayList*  - In case of succes return valid pointer to phone number list.
+        */
+       Tizen::Base::Collection::ArrayList* GetRecipientDetailsListN(int threadId) const;
+
+       /**
+        * Fetch delivery status for given message ID, Indicates the _MSG_DELIVERY_REPORT_STATUS_E
+        *
+        * @param messageId     - Message ID to fetch delivery status.
+        *
+        * @return int          - Message delivery status Indicates the _MSG_DELIVERY_REPORT_STATUS_E.
+        */
+       int GetMessageDeliveryStatus(int messageId);
+
+       /**
+        * Move seleted message to SIM
+        *
+        * @param messageId     - Message which move to be SIM
+        *
+        * @return bool  - In case of succes return true else false.
+        */
+       bool MoveMessageToSIM(int messageId);
+
+       /**
+        * Move seleted message to phone
+        *
+        * @param messageId     - Message which move to be SIM
+        *
+        * @return bool  - In case of succes return true else false.
+        */
+       bool MoveMessageToPhone(int messageId);
+
+       /**
+        * Move seleted message to Inbox
+        *
+        * @param messageId     - Message which need to move to Inbox
+        *
+        * @return bool  - In case of succes return true else false.
+        */
+       bool MoveMessageToInbox(int messageId);
+
+
+       /**
+        * Get message details based on given ID in case of successful operation
+        * else return null
+        */
+       MessageData* GetMessageDataByIdN(int messageId) const;
+       ThreadData* GetThreadDataByIdN(int messageId) const;
+       void RestoreSpamMsgs(Tizen::Base::Collection::ArrayListT<int>* pSelectedIds, Tizen::Ui::Control* parentCtl);
+       void CancelRestore(void);
+       
+       /**
+        * Cancel ongoing delete operation.
+        */
+       void CancelDelete(void);
+protected:
+       /**
+        * Default constructor for this class.
+        */
+       BasePresentationModel(void);
+       /**
+        *  Second phase construction
+        */
+       result Construct(void);
+private:
+       //! To prevent copy constructor and assignment
+       BasePresentationModel(const BasePresentationModel& rhs);
+       BasePresentationModel& operator =(const BasePresentationModel& rhs);
+
+protected:
+       msg_handle_t __pMsgHandle;              //! Message service handler.
+       DeleteHandlerThread* __pDeleteHandler;  //! Delete event listener
+       SpamRestoreHandler* __pSpamRestoreHandler;
+};
+
+
+#endif // _MSG_BASE_PRESENTATION_MODEL_H_
diff --git a/inc/MsgBitmapUtility.h b/inc/MsgBitmapUtility.h
new file mode 100644 (file)
index 0000000..951c942
--- /dev/null
@@ -0,0 +1,160 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgBitmapUtility.h\r
+ * @brief              This is the header file for the %BitmapUtility class.\r
+ *\r
+ * This header file contains the declarations of the %BitmapUtility class.\r
+ */\r
+#ifndef _MSG_BITMAP_UTILITY_H_\r
+#define _MSG_BITMAP_UTILITY_H_\r
+\r
+#include <FBase.h>\r
+#include <FGrpDimension.h>\r
+\r
+#include "MsgTypes.h"\r
+\r
+namespace Tizen { namespace Graphics\r
+{\r
+class Bitmap;\r
+}};\r
+namespace Tizen { namespace Base { namespace Collection\r
+{\r
+class HashMap;\r
+}}};\r
+\r
+/**\r
+ * @class              BitmapUtility\r
+ *\r
+ * Class BitmapUtility use to hold bitmap use for messaging application\r
+ */\r
+\r
+class BitmapUtility\r
+       : public Tizen::Base::Object\r
+{\r
+public:\r
+       /**\r
+        *  Allocation method for this class\r
+        *\r
+        *  @param      Take no argument.\r
+        *\r
+        *  @return             Return instance of this class\r
+        *\r
+        */\r
+       static BitmapUtility* GetInstance(void);\r
+\r
+       /**\r
+        * Return Bitmap for given icon type and return ownership of bitmap\r
+        *\r
+        * @param       iconType - Type of icon\r
+        * @param   size - size of icon\r
+        *\r
+        * @return  Bitmap*, in case of successful operation else NULL\r
+        */\r
+       Tizen::Graphics::Bitmap* GetIconN(MessageIconType iconType, const Tizen::Graphics::Dimension& size = Tizen::Graphics::Dimension(0, 0));\r
+\r
+       /**\r
+        * Return Bitmap for given icon type and return ownership of bitmap\r
+        *\r
+        * @param       fileName - File name\r
+        * @param   size - size of icon\r
+        *\r
+        * @return  Bitmap*, in case of successful operation else NULL\r
+        */\r
+       Tizen::Graphics::Bitmap* GetIconByFileExtN(const Tizen::Base::String& fileName, const Tizen::Graphics::Dimension& size = Tizen::Graphics::Dimension(0, 0));\r
+\r
+       /**\r
+        * Return merge two bitmap and create new bitmap, return ownership of bitmap\r
+        *\r
+        * @param       bitmap1 - 1st source bitmap\r
+        * @param       bitmap2 - 2nd source bitmap\r
+            *\r
+        * @return  Bitmap*, in case of successful operation else NULL\r
+        */\r
+       Tizen::Graphics::Bitmap* GetMergeIconN(const Tizen::Graphics::Bitmap& bitmap1, Tizen::Graphics::Bitmap& bitmap2);\r
+\r
+       /**\r
+        * Return Bitmap for given icon type. But keep ownership of bitmap.\r
+        *\r
+        * @param       iconType - Type of icon\r
+        * @param   size - size of icon\r
+        *\r
+        * @return  Bitmap*, in case of successful operation else NULL\r
+        */\r
+       Tizen::Graphics::Bitmap* GetIcon(MessageIconType iconType, const Tizen::Graphics::Dimension& size = Tizen::Graphics::Dimension(0, 0));\r
+\r
+       /**\r
+        * Release bitmap if exist in cache.\r
+        *\r
+        * @param       iconType - Type of icon\r
+        *\r
+        * @return  E_SUCCESS in case of successfully remove from icon cache.\r
+        */\r
+       result Release(MessageIconType iconType);\r
+\r
+       /**\r
+        * Return bubble group background bitmap.\r
+        *\r
+        * @ param groupName - Group name\r
+        * @ param size - Size of group\r
+        *\r
+        * @return background bitmap of group item.\r
+        */\r
+       Tizen::Graphics::Bitmap* GetBubbleGroupBgBitmap(GroupBgBitmapType groupType, const Tizen::Base::String& groupName, const Tizen::Graphics::Dimension& size);\r
+\r
+private:\r
+       /**\r
+        * This is one argument constructor for this class\r
+        *\r
+        */\r
+       BitmapUtility(void);\r
+\r
+       /**\r
+        * Default destructor for this class\r
+        */\r
+       virtual ~BitmapUtility(void);\r
+\r
+       /**\r
+        * 2nd phase constructor\r
+        */\r
+       result Construct(void);\r
+       static void CreateInstance(void);\r
+       static void DestroyInstance(void);\r
+\r
+       /**\r
+        *  Get 9 patch bitmap.\r
+        */\r
+       Tizen::Graphics::Bitmap* Get9PatchBitmapIconN(const Tizen::Base::String& pngFile, const Tizen::Graphics::Dimension& size = Tizen::Graphics::Dimension(0, 0));\r
+\r
+private:\r
+       /**\r
+        * Empty copy constructor\r
+        */\r
+       BitmapUtility(const BitmapUtility& rhs);\r
+\r
+       /**\r
+        * Empty assignment operator\r
+        */\r
+       BitmapUtility& operator =(const BitmapUtility& rhs);\r
+\r
+private:\r
+       static BitmapUtility* __pInstance;      //! Self instance for singleton design.\r
+       Tizen::Base::Collection::HashMap* __pBitmapList;\r
+};\r
+\r
+\r
+#endif // _MSG_BITMAP_UTILITY_H_\r
diff --git a/inc/MsgCbReceiveSettings.h b/inc/MsgCbReceiveSettings.h
new file mode 100644 (file)
index 0000000..2f651b4
--- /dev/null
@@ -0,0 +1,72 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgCbReceiveSettings.h\r
+ * @brief              This is the header file for the %CbReceiveSettings class.\r
+ *\r
+ * This header file contains the declarations of the %CbReceiveSettings class.\r
+ */\r
+#ifndef _MSG_CB_RECEIVE_SETTINGS_H_\r
+#define _MSG_CB_RECEIVE_SETTINGS_H_\r
+\r
+#include <msg_storage_types.h>\r
+\r
+#include <FBaseObject.h>\r
+\r
+/**\r
+ * @class              CbReceiveSettings\r
+ *\r
+ * Class CbReceiveSettings keeps cell broadcast setting details.\r
+ */\r
+\r
+class CbReceiveSettings\r
+       : public Tizen::Base::Object\r
+{\r
+public:\r
+       /**\r
+        * Default constructor for this class.\r
+        */\r
+       CbReceiveSettings(msg_struct_t pCbSetting);\r
+\r
+       /**\r
+        * Default destructor for this class.\r
+        */\r
+       ~CbReceiveSettings(void);\r
+       //\r
+       msg_struct_t GetCbOpt(void);\r
+\r
+       /**\r
+        * To check Cell-Broadcasting messages status on/off.\r
+        */\r
+       bool IsCbMessagesOn(void);\r
+\r
+       /**\r
+        * Set Cell-Broadcasting message status.\r
+        */\r
+\r
+       result SetCbMessagesStatus(bool status);\r
+\r
+private:\r
+       //! Cell broadcast receiving setting structure pointer\r
+       msg_struct_t __pCbSetting; //! Own\r
+\r
+};\r
+\r
+\r
+\r
+\r
+#endif // _MSG_CB_RECEIVE_SETTINGS_H_\r
diff --git a/inc/MsgCommonUtil.h b/inc/MsgCommonUtil.h
new file mode 100644 (file)
index 0000000..ce0cb72
--- /dev/null
@@ -0,0 +1,70 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgCommonUtil.h\r
+ * @brief              This is the header file for the %CommonUtil class.\r
+ *\r
+ * This header file contains the declarations of the %CommonUtil class.\r
+ */\r
+#ifndef _MSG_COMPOSE_UTIL_H_\r
+#define _MSG_COMPOSE_UTIL_H_\r
+\r
+#include <msg_types.h>\r
+\r
+#include <FBase.h>\r
+#include "MsgTypes.h"\r
+\r
+class MessageData;\r
+class SmsSendSettings;\r
+\r
+class CharCounterInfo\r
+{\r
+public:\r
+       CharCounterInfo()\r
+               : __textSize(0)\r
+               , __segSize(0)\r
+               , __encodeType(MSG_ENCODE_GSM7BIT)\r
+       {}\r
+\r
+       unsigned int __textSize;\r
+       unsigned int __segSize;\r
+       msg_encode_type_t __encodeType;\r
+};\r
+\r
+class CommonUtil\r
+       : public Tizen::Base::Object\r
+{\r
+public:\r
+       static char* ConvertStringToPointerCharArrayN(const Tizen::Base::String& strToConvert);\r
+       static bool CopyTextToClipBoard(const Tizen::Base::String& text);\r
+       static result ForwardMessage(MessageData* pMsgData);\r
+       static int GetDuration(const Tizen::Base::String& mediaFileName);\r
+       static MediaType GetMediaType(const Tizen::Base::String& fileName);\r
+       static bool IsAudioFile(const Tizen::Base::String& fileName);\r
+       static bool IsImageFile(const Tizen::Base::String& fileName);\r
+       static bool IsVideoFile(const Tizen::Base::String& fileName);\r
+       static result ReplyMessage(MessageData* pMsgData);\r
+       static bool IsValidPhoneNumber(const Tizen::Base::String& phoneNumber);\r
+       static void ShowInfoPopup(const Tizen::Base::String& info, const Tizen::Base::String& title = IDS_BLANK);\r
+       static void ShowErrorInfo(msg_error_t err);\r
+       static bool IsSimAvailable(void);\r
+       static CharCounterInfo GetMessageCharCounterInfo(const Tizen::Base::String& messageText, const SmsSendSettings* pSmsSendSetting = null);\r
+\r
+};\r
+\r
+\r
+#endif //_MSG_COMPOSE_UTIL_H_\r
diff --git a/inc/MsgComposeBaseControl.h b/inc/MsgComposeBaseControl.h
new file mode 100644 (file)
index 0000000..561461a
--- /dev/null
@@ -0,0 +1,42 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgComposeBaseControl.h\r
+ * @brief              This is the header file for the %ComposeBaseControl class.\r
+ *\r
+ * This header file contains the declarations of the %ComposeBaseControl class.\r
+ */\r
+#ifndef _MSG_COMPOSE_BASE_CONTROL_H_\r
+#define _MSG_COMPOSE_BASE_CONTROL_H_\r
+\r
+#include <FUi.h>\r
+\r
+enum ComposeControlType\r
+{\r
+       COMPOSE_CONTROL_SUBJECT,\r
+       COMPOSE_CONTROL_IMAGE_TEXT,\r
+       COMPOSE_CONTROL_ATTACHEMENT,\r
+};\r
+\r
+class ComposeBaseControl\r
+       : public Tizen::Ui::Container\r
+{\r
+public:\r
+       virtual ComposeControlType GetControlType(void) const = 0;\r
+};\r
+\r
+#endif //_MSG_COMPOSE_BASE_CONTROL_H_\r
diff --git a/inc/MsgComposerForm.h b/inc/MsgComposerForm.h
new file mode 100644 (file)
index 0000000..438d3ab
--- /dev/null
@@ -0,0 +1,137 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgComposerForm.h\r
+ * @brief              This is the header file for the %ComposerForm class.\r
+ *\r
+ * This header file contains the declarations of the %ComposerForm class.\r
+ */\r
+#ifndef _MSG_COMPOSE_FORM_H_\r
+#define _MSG_COMPOSE_FORM_H_\r
+\r
+#include <FApp.h>\r
+\r
+#include <FUiCtrlIExpandableEditAreaEventListener.h>\r
+#include <FUiCtrlIListViewItemProvider.h>\r
+#include <FUiCtrlIListViewItemEventListener.h>\r
+#include <FUiScenesISceneEventListener.h>\r
+\r
+#include "MsgBaseForm.h"\r
+#include "MsgIComposeEventObserver.h"\r
+#include "MsgISizeChangeEventListener.h"\r
+\r
+namespace Tizen { namespace Ui { namespace Controls\r
+{\r
+class Button;\r
+class ExpandableEditArea;\r
+class Label;\r
+class ListView;\r
+class Panel;\r
+class Popup;\r
+}}};\r
+class DurationPopup;\r
+class MessageComposeData;\r
+class MessageComposePanel;\r
+class MessageData;\r
+class RecipientPanel;\r
+\r
+/**\r
+ * @class              ComposerForm\r
+ *\r
+ * Class MsgComposerForm  is for compose new message\r
+ */\r
+\r
+class ComposerForm\r
+       : public BaseForm\r
+       , public Tizen::Ui::IKeypadEventListener\r
+       , public Tizen::Ui::IKeyEventListener\r
+       , public Tizen::Ui::Scenes::ISceneEventListener\r
+       , public IComposeEventObserver\r
+       , public ISizeChangeEventListener\r
+{\r
+public:\r
+       /**\r
+        * Default constructor for this class.\r
+        */\r
+       ComposerForm(void);\r
+       /**\r
+        * Default destructor for this class.\r
+        */\r
+       virtual ~ComposerForm(void);\r
+       bool Initialize(void);\r
+       void LoadComposeData(const MessageComposeData& composeData);\r
+\r
+\r
+protected:\r
+       // From Form\r
+       virtual result OnInitializing(void);\r
+       virtual result OnTerminating(void);\r
+\r
+       // From base class\r
+       void OnIntializeHeader(Tizen::Ui::Controls::Header& header);\r
+       void OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs);\r
+\r
+       // From IActionEventListener\r
+       virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);\r
+\r
+       // Form IComposeEventObserver\r
+       virtual void OnComposeStateChange(ComposeType type);\r
+       virtual void OnSendButtonClick(void);\r
+\r
+       //Form ISizeChangeEventListener\r
+       virtual void OnSizeIncrease(const Tizen::Ui::Control& control);\r
+       virtual void OnSizeDecrease(const Tizen::Ui::Control& control);\r
+\r
+       // From ISceneEventListener\r
+       virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);\r
+       virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);\r
+\r
+       // From IKeypadEventListener\r
+       virtual void OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction){};\r
+       virtual void OnKeypadClosed(Tizen::Ui::Control& source);\r
+       virtual void OnKeypadOpened(Tizen::Ui::Control& source);\r
+       virtual void OnKeypadWillOpen(Tizen::Ui::Control& source){};\r
+       virtual void OnKeypadBoundsChanged(Tizen::Ui::Control& source);\r
+\r
+       //From IKeyEventListener\r
+       virtual void OnKeyPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode){};\r
+       virtual void OnKeyReleased(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);\r
+       virtual void OnKeyLongPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode){};\r
+\r
+private:\r
+       /**\r
+        * create message launching from app control.\r
+        *\r
+        * @return void.\r
+        */\r
+       void LoadDraftMessage(void);\r
+       void ShowMessagePopup(const Tizen::Base::String& message, int leftActionId, int rightActionId);\r
+       void DestroyMessagePopup(void);\r
+       void CreateDraftMsgAndExit(MessageComposeData* pMsgComposeData);\r
+\r
+private:\r
+       RecipientPanel* __pRecipientPanel;\r
+       MessageComposePanel* __pMsgComposePanel;\r
+       MessageData* __pDraftMessageEntry;\r
+       Tizen::Ui::Controls::Popup* __pMessagePopup;\r
+       Tizen::Ui::Controls::Panel* __pTrayPanel;\r
+       DurationPopup* __pDurationPopup;\r
+       bool  __needToSetFocusRecipient;\r
+\r
+};\r
+\r
+#endif  //_MSG_COMPOSE_FORM_H_\r
diff --git a/inc/MsgCompressPopup.h b/inc/MsgCompressPopup.h
new file mode 100644 (file)
index 0000000..6d4af4c
--- /dev/null
@@ -0,0 +1,50 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgCompressPopup.h\r
+ * @brief              This is the header file for the %CompressPopup class.\r
+ *\r
+ * This header file contains the declarations of the %CompressPopup class.\r
+ */\r
+#ifndef _MSG_COMPRESS_POPUP_H_\r
+#define _MSG_COMPRESS_POPUP_H_\r
+\r
+#include <FUiCtrlPopup.h>\r
+#include <FUiCtrlButton.h>\r
+\r
+class CompressPopup\r
+       : public Tizen::Ui::Controls::Popup\r
+       , public Tizen::Base::Runtime::ITimerEventListener\r
+{\r
+public:\r
+       CompressPopup(void);\r
+       virtual ~CompressPopup(void);\r
+       result Construct(bool hideSubject);\r
+       virtual result OnDraw(void);\r
+\r
+protected:\r
+       //ITimerEventListner\r
+       void OnTimerExpired(Tizen::Base::Runtime::Timer& timer);\r
+       bool IsTimerExpired() const {return false;};\r
+\r
+private:\r
+       int __iconIndex;\r
+       Tizen::Ui::Controls::Button* __pButton;\r
+       Tizen::Base::Runtime::Timer* __pTimer;\r
+};\r
+\r
+#endif // _MSG_COMPRESS_POPUP_H_\r
diff --git a/inc/MsgContactList.h b/inc/MsgContactList.h
new file mode 100644 (file)
index 0000000..798d870
--- /dev/null
@@ -0,0 +1,109 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgContactList.h\r
+ * @brief              This is the header file for the %ContactList class.\r
+ *\r
+ * This header file contains the declarations of the %ContactList class.\r
+ */\r
+#ifndef _MSG_CONTACT_LIST_H_\r
+#define _MSG_CONTACT_LIST_H_\r
+\r
+#include <FApp.h>\r
+#include <FGraphics.h>\r
+#include <FMedia.h>\r
+#include <FIo.h>\r
+#include <FUi.h>\r
+\r
+#include "MsgIPopupEventListener.h"\r
+\r
+class ContactPopup;\r
+\r
+class ContactDetails\r
+       : public Tizen::Base::Object\r
+{\r
+public:\r
+       Tizen::Base::String contactName;\r
+       Tizen::Base::String contactNumber;\r
+       ContactDetails(void)\r
+       {\r
+\r
+       }\r
+};\r
+\r
+class ContactList\r
+       : public Tizen::Ui::IActionEventListener\r
+       , public Tizen::Ui::Controls::IListViewItemEventListener\r
+       , public Tizen::Ui::Controls::IListViewItemProvider\r
+       , public IPopupEventListener\r
+{\r
+\r
+public:\r
+       ContactList(void);\r
+       virtual ~ContactList(void);\r
+\r
+       result Construct(Tizen::Base::Collection::ArrayList* pPhoneNumberList);\r
+\r
+       // IListViewItemEventListener\r
+       virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);\r
+       virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status);\r
+       virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction);\r
+       virtual void OnListViewItemLongPressed(Tizen::Ui::Controls::ListView& listView, int index, int elementId, bool& invokeListViewItemCallback);\r
+\r
+       //IListViewItemProvider\r
+       virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int index, int itemWidth);\r
+       virtual bool DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);\r
+       virtual int GetItemCount(void);\r
+\r
+       //From IMsgPopupEventListener\r
+       virtual void OnPopupListItemSelected(const Tizen::Ui::Control& popup, int selectIndex, const Tizen::Base::Object* pPopupListItem);\r
+       virtual void OnPopupClose(Tizen::Base::Object* pObject );\r
+\r
+       //From IActionEventListener\r
+       virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);\r
+\r
+private:\r
+       /**\r
+        * Contact list popup to show operations like Add/view,Block,Delete Options.\r
+        */\r
+       void ContactListPopup(void);\r
+\r
+       /**\r
+        * Block popup to block phone number selected with Ok/Cancel buttons.\r
+        */\r
+       void BlockPopup();\r
+\r
+       /**\r
+        * Unblock selected phonenumber.Selected number deleted from spam number list.\r
+        */\r
+\r
+       void UnBlockPhoneNumber();\r
+\r
+private:\r
+       //! To prevent copy constructor and assignment\r
+       ContactList(const ContactList& rhs);\r
+       ContactList& operator =(const ContactList& rhs);\r
+\r
+private:\r
+       Tizen::Base::Collection::ArrayList* __pContactList; //! Not own\r
+       ContactPopup* __pContactPopup;\r
+       Tizen::Base::String __titleName;\r
+       Tizen::Base::String __contactNumber;\r
+       Tizen::Ui::Controls::Popup* __pBlockConfirmPopup;\r
+};\r
+\r
+#endif // _MSG_CONTACT_LIST_H_\r
diff --git a/inc/MsgContactListItem.h b/inc/MsgContactListItem.h
new file mode 100644 (file)
index 0000000..097b0b7
--- /dev/null
@@ -0,0 +1,89 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgContactListItem.h\r
+ * @brief              This is the header file for the %ContactListItem class.\r
+ *\r
+ * This header file contains the declarations of the %ContactListItem class.\r
+ */\r
+#ifndef _MSG_CONTACT_LIST_ITEM_H_\r
+#define _MSG_CONTACT_LIST_ITEM_H_\r
+\r
+#include <FApp.h>\r
+#include <FGraphics.h>\r
+#include <FIo.h>\r
+#include <FMedia.h>\r
+#include <FUi.h>\r
+\r
+class LVMultiLineTextItem;\r
+\r
+/**\r
+ * @class      ContactListItem\r
+ *\r
+ * Class ContactListItem  is for displaying contacts in list view.\r
+ */\r
+\r
+class ContactListItem\r
+       : public Tizen::Ui::Controls::CustomItem\r
+{\r
+\r
+public:\r
+       /**\r
+        * Default constructor for this class.\r
+        *\r
+        * @param contactName -  Contact name to display\r
+        * @param contactNumber - Contact number to display\r
+        * @param width - Width for conatct list item\r
+        * @param editMode - list item mark mode\r
+        */\r
+       ContactListItem(const Tizen::Base::String& contactName, const Tizen::Base::String& contactNumber, int width, bool editMode);\r
+\r
+       /**\r
+        * Default destructor for this class.\r
+        */\r
+       virtual ~ContactListItem(void);\r
+\r
+       /**\r
+        *  Create contact list item layout\r
+        *\r
+        *  @param      searchText  for contact and phonenumber\r
+        *\r
+        *  @return     void\r
+        */\r
+       void CreateContactListItemLayout(const Tizen::Base::String& searchText = L"");\r
+\r
+private:\r
+       void CreateContactTitleElement(const Tizen::Base::String& searchText);\r
+       void CreateContactNumberElement(const Tizen::Base::String& searchText);\r
+\r
+       //! Empty copy constructor\r
+       ContactListItem(const ContactListItem& rhs);\r
+       //! Empty assignment operator.\r
+       ContactListItem& operator =(const ContactListItem& rhs);\r
+\r
+private:\r
+       bool __IsEditMode;\r
+       int __Width;\r
+       Tizen::Base::String __contactName;\r
+       Tizen::Base::String __contactNumber;\r
+       Tizen::Graphics::Font* __pTitleFont;\r
+       Tizen::Graphics::Font* __pSubTextFont;\r
+       LVMultiLineTextItem* __pMtTextName;\r
+       LVMultiLineTextItem* __pMtTextNumber;\r
+};\r
+\r
+#endif //_MSG_CONTACT_LIST_ITEM_H_\r
diff --git a/inc/MsgContactPopup.h b/inc/MsgContactPopup.h
new file mode 100644 (file)
index 0000000..5287bc8
--- /dev/null
@@ -0,0 +1,85 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgContactPopup.h\r
+ * @brief              This is the header file for the %ContactPopup class.\r
+ *\r
+ * This header file contains the declarations of the %ContactPopup class.\r
+ */\r
+#ifndef _MSG_CONTACT_POPUP_H_\r
+#define _MSG_CONTACT_POPUP_H_\r
+\r
+#include <FApp.h>\r
+#include <FUi.h>\r
+\r
+#include "MsgIPopupEventListener.h"\r
+\r
+class PopupListItem\r
+       : public Tizen::Base::Object\r
+{\r
+public:\r
+       PopupListItem(Tizen::Base::String& itemText, int actionId)\r
+               : __itemText(itemText)\r
+               , __actionId(actionId)\r
+       {}\r
+       ~PopupListItem(void) {}\r
+       const Tizen::Base::String& GetItemText(void) const { return __itemText;}\r
+       int GetActionId(void) const {return __actionId; }\r
+private:\r
+       Tizen::Base::String __itemText;\r
+       int __actionId;\r
+};\r
+\r
+class ContactPopup\r
+       : public Tizen::Ui::Controls::Popup\r
+       , public Tizen::Ui::IActionEventListener\r
+       , public Tizen::Ui::Controls::IListViewItemEventListener\r
+       , public Tizen::Ui::Controls::IListViewItemProvider\r
+{\r
+\r
+public:\r
+       ContactPopup(IPopupEventListener& listener);\r
+       virtual ~ContactPopup(void);\r
+       result Construct(const Tizen::Base::String& contactName, const Tizen::Base::String& contactNumber);\r
+\r
+       // IListViewItemEventListener\r
+       virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);\r
+       virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status);\r
+       virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction);\r
+       virtual void OnListViewItemLongPressed(Tizen::Ui::Controls::ListView& listView, int index, int elementId, bool& invokeListViewItemCallback);\r
+\r
+       //IListViewItemProvider\r
+       virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int index, int itemWidth);\r
+       virtual bool DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);\r
+       virtual int GetItemCount(void);\r
+\r
+       // From IActionEventListener\r
+       void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);\r
+\r
+protected:\r
+       void InitalizePopupItems(void);\r
+\r
+private:\r
+       Tizen::Base::String __titleName;\r
+       Tizen::Base::String __contactName;\r
+       Tizen::Base::String __contactNumber;\r
+       Tizen::Ui::Controls::Button* __pCancelButton;\r
+       IPopupEventListener& __popupListener;\r
+       Tizen::Base::Collection::ArrayList* __pPopupItemList;\r
+};\r
+\r
+#endif //_MSG_CONTACT_POPUP_H_\r
diff --git a/inc/MsgContactUtility.h b/inc/MsgContactUtility.h
new file mode 100644 (file)
index 0000000..1100b03
--- /dev/null
@@ -0,0 +1,79 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgContactUtility.h\r
+ * @brief              This is the header file for the %ContactUtility class.\r
+ *\r
+ * This header file contains the declarations of the %ContactUtility class.\r
+ */\r
+#ifndef _MSG_CONTACTUTILITY_H_\r
+#define _MSG_CONTACTUTILITY_H_\r
+\r
+namespace Tizen { namespace Base {\r
+namespace Collection {\r
+class IList;\r
+}\r
+class String;\r
+}}\r
+\r
+namespace Tizen { namespace Social {\r
+class Contact;\r
+}}\r
+\r
+/**\r
+ * @class      ContactUtility\r
+ *\r
+ * Class ContactUtility is an utility class, it used to do voice call,add contact,view contact\r
+ */\r
+\r
+class ContactUtility\r
+{\r
+public:\r
+       /**\r
+        * Create and return bitmap icon based on given message icon type.\r
+        *\r
+        * @param iconType - Type of message icon.\r
+        *\r
+        * @return  Bitmap*  In case of valid message icon type else NULL.\r
+        *\r
+        */\r
+       static void VoiceCall(const Tizen::Base::String& phoneNumber);\r
+\r
+       /**\r
+        * Create and return bitmap icon based on given message icon type.\r
+        *\r
+        * @param iconType - Type of message icon.\r
+        *\r
+        * @return  Bitmap*  In case of valid message icon type else NULL.\r
+        *\r
+        */\r
+       static void AddContact(const Tizen::Base::String& phoneNumber);\r
+\r
+       /**\r
+        * Create and return bitmap icon based on given message icon type.\r
+        *\r
+        * @param iconType - Type of message icon.\r
+        *\r
+        * @return  Bitmap*  In case of valid message icon type else NULL.\r
+        *\r
+        */\r
+       static void ViewContact(const Tizen::Base::String& phoneNumber);\r
+       static Tizen::Social::Contact* GetContact(Tizen::Base::Collection::IList* pContactList, const Tizen::Base::String& phoneNumber);\r
+};\r
+\r
+\r
+#endif /* MSGCONTACTUTILITY_H_ */\r
diff --git a/inc/MsgConversationData.h b/inc/MsgConversationData.h
new file mode 100644 (file)
index 0000000..fe775a2
--- /dev/null
@@ -0,0 +1,170 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgConversationData.h\r
+ * @brief              This is the header file for the %ConversationData class.\r
+ *\r
+ * This header file contains the declarations of the %ConversationData class.\r
+ */\r
+#ifndef _MSG_CONVERSATION_DATA_H_\r
+#define _MSG_CONVERSATION_DATA_H_\r
+\r
+#include <msg_storage_types.h>\r
+\r
+#include "MsgBaseData.h"\r
+\r
+namespace Tizen { namespace Base { namespace Collection\r
+{\r
+class ArrayList;\r
+}}};\r
+namespace Tizen { namespace Graphics\r
+{\r
+class Bitmap;\r
+}};\r
+/**\r
+ * @class      ConversationData\r
+ *\r
+ * Class ConversationData hold minimum information for a conversation message.\r
+ */\r
+\r
+class ConversationData\r
+       : public BaseData\r
+{\r
+public:\r
+       /**\r
+        * Default constructor for this class.\r
+        */\r
+       ConversationData(const Tizen::Base::String& threadName);\r
+\r
+       /**\r
+        * Default destructor for this class.\r
+        */\r
+       virtual ~ConversationData(void);\r
+\r
+       /**\r
+        * 2nd phase constructor\r
+        */\r
+       result Construct(msg_struct_t pMessageInfo);\r
+\r
+       // Form Base class\r
+       BaseData* CloneN(void);\r
+       int GetEntryId(void) const;\r
+       int GetUnreadCount(void) const;\r
+       const Tizen::Base::String& GetDisplayName(void) const;\r
+       const Tizen::Base::String& GetMessageText(void) const;\r
+       int GetMessageType(void) const;\r
+       const Tizen::Base::String& GetTimeStamp(void) const;\r
+       const Tizen::Base::String& GetGroupName(void) const;\r
+       const int GetDraftMessageCount(void) const;\r
+       DataType GetDataType(void);\r
+       void SetDisplayName(const Tizen::Base::String& strName);\r
+\r
+       // New API\r
+       /**\r
+        * Checkout message is sent or receive. This is an synchronous API.\r
+        *\r
+        * @return bool  - true, In case of sent message and false in case of receive message.\r
+        *\r
+        */\r
+       bool IsSent(void) const;\r
+\r
+       /**\r
+        * Checkout message is read or unread. This is an synchronous API.\r
+        *\r
+        * @return bool  - true, In case unread message else false.\r
+        *\r
+        */\r
+       bool IsUnRead(void) const;\r
+\r
+       /**\r
+        * Return true in case of faild message\r
+        */\r
+       bool IsSentFail(void) const;\r
+\r
+       /**\r
+        * Return true in case of message in sending state.\r
+        */\r
+       bool IsSending(void) const;\r
+\r
+       /**\r
+        *  Return true in case of MMS\r
+        */\r
+       bool IsMms(void) const;\r
+\r
+       /**\r
+        *  Return thread ID for current message.\r
+        */\r
+       int GetThreadId(void) const;\r
+\r
+       /**\r
+        *  Return message ID for current message.\r
+        */\r
+       int GetMessageId(void) const;\r
+\r
+       /**\r
+        * Get default thumbnail for conversation\r
+        */\r
+       Tizen::Graphics::Bitmap* GetThumbnail(void);\r
+\r
+       /**\r
+        *  Return subject string if exist.\r
+        */\r
+       const Tizen::Base::String& GetSubject(void) const;\r
+\r
+       /**\r
+        *  Get attachment for current conversation data\r
+        */\r
+       int GetAttachmentCount(void) const;\r
+\r
+       // Progress realted animation API\r
+       void SetAnimationIconIndex(int index);\r
+       int GetAnimationIconIndex(void) const;\r
+\r
+private:\r
+       result InitMessageBody(msg_struct_t pMessageInfo);\r
+       result InitTimeStampGroupName(void);\r
+       result InitMmsData(msg_struct_t pMessageInfo);\r
+\r
+       //! To prevent copy constructor and assignment\r
+       ConversationData(const ConversationData& rhs);\r
+       ConversationData& operator =(const ConversationData& rhs);\r
+\r
+private:\r
+       //! Message entry information\r
+       int __messageId;\r
+       int __threadId;\r
+       int __messageType;\r
+       int __folderId;\r
+       int __displayTime;\r
+       int __networkStatus;\r
+       bool __isRead;\r
+       int __messageDirection;\r
+       Tizen::Base::String __displayName;\r
+       Tizen::Base::String __messageBody;\r
+       Tizen::Base::String __groupName;\r
+       Tizen::Base::String __timeStamp;\r
+       //! conversation field MMS related\r
+       int __pageCount;\r
+       int __attachmentCount;\r
+       Tizen::Base::String __thumbnailPath;\r
+       Tizen::Graphics::Bitmap* __pThumbnailBitmap;\r
+       Tizen::Base::String __subjectStr;\r
+       //! Animation icon index for sending message\r
+       int __animationIconIndex;\r
+};\r
+\r
+#endif // _MSG_CONVERSATION_DATA_H_\r
diff --git a/inc/MsgConversationForm.h b/inc/MsgConversationForm.h
new file mode 100644 (file)
index 0000000..a121703
--- /dev/null
@@ -0,0 +1,350 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgConversationForm.h\r
+ * @brief              This is the header file for the %ConversationForm class.\r
+ *\r
+ * This header file contains the declarations of the %ConversationForm class.\r
+ */\r
+#ifndef _MSG_CONVERSATION_FORM_H_\r
+#define _MSG_CONVERSATION_FORM_H_\r
+\r
+#include <FUiCtrlIGroupedListViewItemEventListener.h>\r
+#include <FUiCtrlIGroupedListViewItemProvider.h>\r
+#include <FUiScenesISceneEventListener.h>\r
+\r
+#include "MsgBaseForm.h"\r
+#include "MsgIComposeEventObserver.h"\r
+#include "MsgIConversationEventListener.h"\r
+#include "MsgIDeleteEventListener.h"\r
+#include "MsgISizeChangeEventListener.h"\r
+#include "MsgIPopupEventListener.h"\r
+#include "MsgTypes.h"\r
+\r
+namespace Tizen { namespace Ui { namespace Controls\r
+{\r
+class Button;\r
+class CheckButton;\r
+class ContextMenu;\r
+class ExpandableEditArea;\r
+class Panel;\r
+class Popup;\r
+class Label;\r
+}}};\r
+class AttachementSavePopup;\r
+class DurationPopup;\r
+class ThreadData;\r
+class MessageComposePanel;\r
+class ContactList;\r
+class ContactPopup;\r
+class MsgProgressPopup;\r
+class OptionPopup;\r
+class MsgResendDeletePopup;\r
+//class ThreadData;\r
+\r
+/**\r
+ * @class              ConversationForm\r
+ *\r
+ * Class MsgConversationForm  displays list of messages for single thread in bubble view.\r
+ */\r
+\r
+class ConversationForm\r
+       : public BaseForm\r
+       , public Tizen::Ui::IKeypadEventListener\r
+       , public Tizen::Ui::IKeyEventListener\r
+       , public Tizen::Ui::ITouchEventListener\r
+       , public Tizen::Ui::IOrientationEventListener\r
+       , public Tizen::Ui::Controls::IGroupedListViewItemEventListener\r
+       , public Tizen::Ui::Controls::IGroupedListViewItemProvider\r
+       , public Tizen::Ui::Scenes::ISceneEventListener\r
+       , public IComposeEventObserver\r
+       , public IConversationEventListener\r
+       , public IDeleteEventListener\r
+       , public IPopupEventListener\r
+       , public ISizeChangeEventListener\r
+{\r
+public:\r
+       ConversationForm(ConversationListFormType convListType);\r
+       virtual ~ConversationForm(void);\r
+       bool Initialize(void);\r
+\r
+protected:\r
+       // From From\r
+       virtual result OnInitializing(void);\r
+       virtual result OnTerminating(void);\r
+\r
+       // From IActionEventListener\r
+       void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);\r
+\r
+       // From ISceneEventListener\r
+       virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);\r
+       virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);\r
+\r
+       //Orientation listener\r
+       virtual void OnOrientationChanged(const Tizen::Ui::Control& source, Tizen::Ui::OrientationStatus orientationStatus);\r
+\r
+       // From IKeypadEventListener\r
+       virtual void OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction);\r
+       virtual void OnKeypadClosed(Tizen::Ui::Control& source);\r
+       virtual void OnKeypadOpened(Tizen::Ui::Control& source);\r
+       virtual void OnKeypadWillOpen(Tizen::Ui::Control& source);\r
+       virtual void OnKeypadBoundsChanged(Tizen::Ui::Control& source);\r
+\r
+       void OnFormBackRequested(Tizen::Ui::Controls::Form& source);\r
+\r
+       // From IMsgConversationEventListener\r
+       void OnConversationListChange(MsgStorageChangeType msgStorageChangeType);\r
+\r
+       // From IMsgDeleteEventListener\r
+       void OnDeleteStart(int totalCount);\r
+       void OnDeleteUpdate(int deleteCount, int totalCount);\r
+       void OnDeleteComplete(int errCode, Tizen::Base::Object* pThreadObject);\r
+\r
+       // From base class\r
+       void OnIntializeFooter(Tizen::Ui::Controls::Footer& footer);\r
+       void OnIntializeHeader(Tizen::Ui::Controls::Header& header);\r
+       void OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs);\r
+\r
+       //From IMsgPopupEventListener\r
+       virtual void OnPopupListItemSelected(const Tizen::Ui::Control& popup, int selectIndex, const Tizen::Base::Object* pPopupListItem);\r
+       virtual void OnPopupClose(Tizen::Base::Object* pObject);\r
+\r
+       //From IKeyEventListener\r
+       virtual void OnKeyPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode){};\r
+       virtual void OnKeyReleased(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);\r
+       virtual void OnKeyLongPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode){};\r
+\r
+       //From ITouchEventListener\r
+       virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);\r
+       virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};\r
+       virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};\r
+       virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};\r
+       virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};\r
+\r
+       //From IGroupedListViewItemEventListener\r
+       virtual void OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus status);\r
+       virtual void OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction);\r
+       virtual void OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus status);\r
+       virtual void OnGroupedListViewItemLongPressed(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, bool& invokeListViewItemCallback);\r
+\r
+       //From IGroupedListViewItemProvider\r
+       virtual int GetGroupCount(void);\r
+       virtual int GetItemCount(int groupIndex);\r
+       virtual Tizen::Ui::Controls::GroupItem* CreateGroupItem(int groupIndex, int itemWidth);\r
+       virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth);\r
+       virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int groupIndex, int itemIndex, int itemWidth);\r
+       virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);\r
+\r
+       //Form ISizeChangeEventListener\r
+       virtual void OnSizeIncrease(const Tizen::Ui::Control& control);\r
+       virtual void OnSizeDecrease(const Tizen::Ui::Control& control);\r
+\r
+       // Form IComposeEventObserver\r
+       virtual void OnComposeStateChange(ComposeType type);\r
+       virtual void OnSendButtonClick(void);\r
+       void ShowDeleteConfirmPopup(void);\r
+\r
+private:\r
+       // New API\r
+\r
+       /**\r
+        * takes icon as an input and return a bitmap pointer\r
+        *\r
+        * @param       MessageIconType     - Indicate type of icon\r
+        *\r
+        * @return      Bitmap*                         -return Bitmap pointer.\r
+        */\r
+       Tizen::Graphics::Bitmap* GetBitmapN(MessageIconType msgType);\r
+       /**\r
+        * takes icon as an input and return a bitmap poiner\r
+        *\r
+        * @param       msgType     - Indicate type of msg\r
+        *\r
+        * @return      MessageIconType                         -Message Icon\r
+        */\r
+       MessageIconType ConvertIconType(int msgType);\r
+\r
+       /**\r
+        * Set footer properties\r
+        *\r
+        * @return      void\r
+        */\r
+       void SetFooter(void);\r
+\r
+       /**\r
+        * Set header properties\r
+        *\r
+        * @return      void\r
+        */\r
+       void SetHeader(void);\r
+\r
+       /**\r
+        * Set conversation view mode footer.\r
+        * @param footer - Form footer instance.\r
+        * @return void\r
+        */\r
+       void SetViewModeFooter(Tizen::Ui::Controls::Footer& footer);\r
+\r
+       /**\r
+        * Set conversation edit mode footer.\r
+        * @param footer - Form footer instance.\r
+        * @return void\r
+        */\r
+       void SetEditModeFooter(Tizen::Ui::Controls::Footer& footer);\r
+\r
+       /**\r
+        * Set conversation edit mode header.\r
+        * @param header - Form header instance.\r
+        * @return void\r
+        */\r
+       void SetEditModeHeader(Tizen::Ui::Controls::Header& header);\r
+\r
+       /**\r
+        * Set conversation edit mode header.\r
+        * @param header - Form header instance.\r
+        * @return void\r
+        */\r
+       void SetViewModeHeader(Tizen::Ui::Controls::Header& header);\r
+\r
+       /**\r
+        * Add check box control  to check/uncheck all item.\r
+        *\r
+        * @return E_SUCCESS in case successfully add control else E_FAILURE.\r
+        */\r
+       result AddEditCheckBox(void);\r
+\r
+       /**\r
+        * Add check box control  to check/uncheck all item.\r
+        *\r
+        * @return E_SUCCESS in case successfully add control else E_FAILURE.\r
+        */\r
+       result AddLabelSelectionInfo(void);\r
+\r
+       /**\r
+        * To check all list item.\r
+        *\r
+        * @Return void\r
+        */\r
+       void CheckAll(bool value);\r
+\r
+       /**\r
+        * To delete selected message or thread.\r
+        */\r
+       void DeleteSelectedItem(void);\r
+\r
+       /**\r
+        * To Show/hide item selection information\r
+        *\r
+        * @return void\r
+        */\r
+       void ShowHideSelectionInfo(void);\r
+\r
+       /**\r
+        *To show title text on header button.\r
+        *\r
+        * @return void\r
+        */\r
+       Tizen::Base::String GetTitleText() const;\r
+\r
+       /**\r
+        * Prepare contact list to view on tapping recipient button on header.\r
+        *\r
+        * @return void\r
+        */\r
+       void PrepareContactList(void);\r
+\r
+       /**\r
+        * To Show contact list with name,phone number.on selecting item\r
+        * it show popup to voice call,Add/View and block contact\r
+        *\r
+        * @return void\r
+        */\r
+       void ShowContactList(bool value);\r
+\r
+       /**\r
+        * To show context menu for single recipient Call,View/Add,Block\r
+        *\r
+        * @return void\r
+        */\r
+       result CreateContextMenu(const Tizen::Ui::Control& source);\r
+\r
+       /**\r
+        * Context menu to Call,View/Add,Block contact\r
+        *\r
+        * @return void\r
+        */\r
+       void ContactHelper(int helperType);\r
+\r
+       /**\r
+        * Resend and delete popup to resend and delete message\r
+        *\r
+        * @return void\r
+        */\r
+       void ResendDeletePopup(int index);\r
+\r
+       /**\r
+        *  Initialize conversation  view related controls\r
+        *\r
+        */\r
+       result InitializeConversationViewControls(void);\r
+\r
+       /**\r
+        * Initialize conversation edit UI related controls\r
+        */\r
+       result InitializeConversationEditControls(void);\r
+\r
+       /**\r
+        * Block popup to block number with Ok/Cancel button.\r
+        */\r
+       void BlockPopup(const Tizen::Base::String& phoneNumber);\r
+\r
+       /**\r
+        * UnBlock phone number removed from SPAM number list.\r
+        */\r
+       void UnBlockPhoneNumber(const Tizen::Base::String& phoneNumber);\r
+\r
+\r
+private:\r
+       // Member variable.\r
+       ConversationListFormType __convFormType;\r
+       MessageComposePanel* __pMsgComposePanel;\r
+       Tizen::Graphics::Rectangle __prevBounds;\r
+       Tizen::Ui::Controls::GroupedListView* __pConvMessageList;\r
+       ThreadData* __pCurrentThreadEntry;\r
+       // Selection in edit mode\r
+       Tizen::Ui::Controls::CheckButton* __pCheckAll;\r
+       Tizen::Ui::Controls::Label* __pSelectionInfo;\r
+       Tizen::Base::Collection::ArrayListT< int >* __pSelectedIds;\r
+       MsgProgressPopup* __pProgressPopup;\r
+       Tizen::Ui::Controls::ListView* __pList;\r
+       ContactList* __pConContactList;\r
+       Tizen::Ui::Controls::ContextMenu* __pContextMenuText;\r
+       Tizen::Ui::Controls::Popup* __pDeleteConfirmPopup;\r
+       Tizen::Base::Collection::ArrayList* __pContactDetails;\r
+       Tizen::Ui::Controls::Popup* __pResendDelete;\r
+       Tizen::Ui::Controls::Panel* __pTrayPanel;\r
+       OptionPopup* __pOptionPopup;\r
+       MsgResendDeletePopup* __pResendDeletePopup;\r
+       Tizen::Ui::Controls::Popup* __pBlockPopup;\r
+       Tizen::Base::String __pPhoneNumber;\r
+       AttachementSavePopup* __pSaveAttachmentsPopup;\r
+       DurationPopup* __pDurationPopup;\r
+       bool __isListViewItemLongPressed;\r
+};\r
+\r
+//}\r
+#endif //_MSG_CONVERSATION_FORM_H_\r
diff --git a/inc/MsgConversationPresentationModel.h b/inc/MsgConversationPresentationModel.h
new file mode 100644 (file)
index 0000000..dda0eb6
--- /dev/null
@@ -0,0 +1,160 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgConversationPresentationModel.h\r
+ * @brief              This is the header file for the %ConversationPresentationModel class.\r
+ *\r
+ * This header file contains the declarations of the %ConversationPresentationModel class.\r
+ */\r
+#ifndef _MSG_CONVERSATION_PRESENTATION_MODEL_H_\r
+#define _MSG_CONVERSATION_PRESENTATION_MODEL_H_\r
+\r
+#include <msg_storage_types.h>\r
+#include <msg_types.h>\r
+\r
+#include <FBaseColIListT.h>\r
+#include <FBaseTypes.h>\r
+\r
+#include "MsgListPresentationModel.h"\r
+\r
+namespace Tizen { namespace Base { namespace Collection\r
+{\r
+class ArrayList;\r
+}}};\r
+\r
+class DeleteHandlerThread;\r
+class IConversationEventListener;\r
+class IDeleteEventListener;\r
+class MessageData;\r
+\r
+/**\r
+ * @class              ConversationPresentationModel\r
+ *\r
+ * This class interact with SLP layer and fetch message thread list,thread conversation details\r
+ * from message store.For interface API check ConversationPresentationModel.\r
+ */\r
+class ConversationPresentationModel\r
+       : public ListPresentationModel\r
+{\r
+\r
+public:\r
+       /**\r
+        *  Allocation method for this class\r
+        *\r
+        *  @param      Take no argument.\r
+        *\r
+        *  @return             Return instance of this class\r
+        *\r
+        */\r
+       static ConversationPresentationModel* GetInstance(void);\r
+\r
+       /**\r
+        * Add conversation event listener observer\r
+        *\r
+        * @param convLitener           - Conversation event listener.\r
+        * @param threadId                      - Thread ID\r
+        *\r
+        * @return result           - E_SUCCESS, In case of successfully add to listener list else\r
+        *                            E_FAILURE\r
+        */\r
+       result AddConversationEventListener(const IConversationEventListener& convLitener, const int threadId);\r
+\r
+       /**\r
+        * Remove conversation event listener observer\r
+        *\r
+        * @param convLitener           - Conversation event listener.\r
+        *\r
+        * @return result           - E_SUCCESS, In case of successfully remove listener from list else\r
+        *                            E_FAILURE\r
+        */\r
+       result RemoveConversationEventListener(const IConversationEventListener& convLitener);\r
+\r
+       /**\r
+        * Get draft message for current conversation thread\r
+        */\r
+       const MessageData* GetDraftMessage(void) const;\r
+\r
+       /**\r
+        *  Get conversation data and hold it for given thread.\r
+        */\r
+       void GetConversationMessageList(int threadId);\r
+\r
+protected:\r
+       /**\r
+        * Thread message store change call back. This will call in case of new, delete, update and\r
+        * contact information change.\r
+        *\r
+        * @param  pMsgHandle                   - Message hadle to communicate with message service layer.\r
+        * @param  storageChangeType    - change type.\r
+        * @param  pMsgIdList                   - Change message ID list\r
+        * @param  pUserParam                   - User additional parameter.\r
+        *\r
+        * @return void\r
+        */\r
+       static void MessageStorageChangeCallback(msg_handle_t pMsgHandle, msg_storage_change_type_t storageChangeType, msg_id_list_s* pMsgIdList, void* pUserParam);\r
+\r
+       /**\r
+        *  This will call  by storage change call back in case of new, delete, update and\r
+        * contact information change.\r
+        *\r
+        * @param  storageChangeType    - change type.\r
+        * @param  pMsgIdList                   - Change message ID list\r
+        *\r
+        * @return void\r
+        */\r
+       void OnMessageStorageChange(msg_storage_change_type_t storageChangeType, msg_id_list_s* pMsgIdList);\r
+\r
+       /**\r
+        * Iterate active conversation event listener and notify.\r
+        *\r
+        * @param       No argument.\r
+        *\r
+        * @return void.\r
+        */\r
+       void NotifyConversationChange(msg_storage_change_type_t storageChangeType);\r
+\r
+private:\r
+       /**\r
+        * Default constructor for this class.\r
+        */\r
+       ConversationPresentationModel(void);\r
+\r
+       /**\r
+        * Default destructor for this class\r
+        */\r
+       virtual ~ConversationPresentationModel(void);\r
+\r
+       /**\r
+        *  Second phase construction\r
+        */\r
+       result Construct(void);\r
+       static void CreateInstance(void);\r
+       static void DestroyInstance(void);\r
+\r
+private:\r
+       //! To prevent copy constructor and assignment\r
+       ConversationPresentationModel(const ConversationPresentationModel&);\r
+       ConversationPresentationModel& operator =(const ConversationPresentationModel& msg);\r
+\r
+private:\r
+       static ConversationPresentationModel* __pInstance;      //! Self instance for singleton design.\r
+       Tizen::Base::Collection::ArrayList* __pConversationListener;  //! Conversation event listener\r
+       int __draftMessageId; //! Draft message Id for current conversation.\r
+       mutable MessageData* __pDraftMessage;\r
+};\r
+\r
+#endif // _MSG_CONVERSATION_PRESENTATION_MODEL_H_\r
diff --git a/inc/MsgCustomTableViewItem.h b/inc/MsgCustomTableViewItem.h
new file mode 100644 (file)
index 0000000..2b00ad5
--- /dev/null
@@ -0,0 +1,62 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgCustomTableViewItem.h\r
+ * @brief              This is the header file for the %CustomTableViewItem class.\r
+ *\r
+ * This header file contains the declarations of the %CustomTableViewItem class.\r
+ */\r
+#ifndef _MSG_CUSTOM_TABLEVIEW_ITEM_H_\r
+#define _MSG_CUSTOM_TABLEVIEW_ITEM_H_\r
+\r
+#include <FUiCtrlTableViewGroupItem.h>\r
+#include <FUiCtrlTableViewItem.h>\r
+\r
+/**\r
+ * @class      CustomTableViewItem\r
+ *\r
+ * This class CustomTableViewItem is used to set background element of setting list item.\r
+ */\r
+\r
+class CustomTableViewItem\r
+       : public Tizen::Ui::Controls::TableViewItem\r
+{\r
+public:\r
+       CustomTableViewItem(void);\r
+       ~CustomTableViewItem(void);\r
+       result Construct(const Tizen::Graphics::Dimension& itemSize, Tizen::Ui::Controls::TableViewAnnexStyle style = Tizen::Ui::Controls::TABLE_VIEW_ANNEX_STYLE_NORMAL);\r
+       void EnableExpandViewModeStyle(const Tizen::Graphics::Bitmap* pNormalBitmap, const Tizen::Graphics::Bitmap* pPressBitmap);\r
+       void EnableDetailsViewModeStyle(const Tizen::Graphics::Bitmap* pNormalBitmap, const Tizen::Graphics::Bitmap* pPressBitmap);\r
+       // From base class\r
+       virtual result OnDraw(void);\r
+\r
+private:\r
+       //! Empty copy constructor.\r
+       CustomTableViewItem(const CustomTableViewItem& rhs);\r
+       //! Empty assignment operator.\r
+       CustomTableViewItem& operator =(const CustomTableViewItem& rhs);\r
+};\r
+\r
+class CustomTableViewGroupItem\r
+       : public Tizen::Ui::Controls::TableViewGroupItem\r
+{\r
+public:\r
+       // From base class\r
+       virtual result OnDraw(void);\r
+};\r
+\r
+#endif //_MSG_CUSTOM_TABLEVIEW_ITEM_H_\r
diff --git a/inc/MsgDeleteHandlerThread.h b/inc/MsgDeleteHandlerThread.h
new file mode 100644 (file)
index 0000000..e14612b
--- /dev/null
@@ -0,0 +1,75 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+/**
+ * @file               MsgDeleteHandlerThread.h
+ * @brief              This is the header file for the %DeleteHandlerThread class.
+ *
+ * This header file contains the declarations of the %DeleteHandlerThread class.
+ */
+#ifndef _MSG_DLETE_HANDLER_THREAD_H_
+#define _MSG_DLETE_HANDLER_THREAD_H_
+
+#include <FBaseRtThread.h>
+#include "FUi.h"
+
+class IDeleteEventListener;
+
+/**
+ * @class              MsgDeleteHandlerThread
+ *
+ *  This is a thread class use to delete thread and messages.
+ */
+
+class DeleteHandlerThread
+       : public Tizen::Base::Runtime::Thread
+{
+public:
+       /**
+        * This is argument constructor for this class
+        *
+        * @param pList - Selected message or thread ID list
+        * @param listener - Delete event listener
+        * @param requestType - Delete request type for thread or message.
+        */
+       DeleteHandlerThread(Tizen::Base::Collection::IListT< int >* pList, Tizen::Ui::Control& listener, int requestType);
+
+       /**
+        * This is argument constructor for this class
+        *
+        * @param deleteId - Delete thread or message ID.
+        * @param listener - Delete event listener
+        * @param requestType - Delete request type for thread or message.
+        */
+       DeleteHandlerThread(int deleteId, Tizen::Ui::Control& listener, int requestType);
+
+       /**
+        * This is the destructor for this class.
+        */
+       virtual ~DeleteHandlerThread(void);
+
+       //! From base class
+       result Construct(void);
+       Object* Run(void);
+
+private:
+       Tizen::Base::Collection::IListT< int >* __pDeleteIdList;  //! Delete id list
+       int __deleteId; //! In case of single delete, delete ID.
+       int __requestType;  //! Delete request type.
+       Tizen::Ui::Control* __parentCntl;
+};
+
+#endif // _MSG_DLETE_HANDLER_THREAD_H_
diff --git a/inc/MsgDurationPopup.h b/inc/MsgDurationPopup.h
new file mode 100644 (file)
index 0000000..7080287
--- /dev/null
@@ -0,0 +1,49 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgDurationPopup.h\r
+ * @brief              This is the header file for the %DurationPopup class.\r
+ *\r
+ * This header file contains the declarations of the %DurationPopup class.\r
+ */\r
+#ifndef _MSG_DURATION_POPUP_H_\r
+#define _MSG_DURATION_POPUP_H_\r
+\r
+#include "MsgBaseCustomPopup.h"\r
+\r
+class DurationPopup\r
+       : public BaseCustomPopup\r
+       , public Tizen::Ui::IActionEventListener\r
+{\r
+\r
+public:\r
+       DurationPopup(Tizen::Ui::Control& parent);\r
+       virtual ~DurationPopup(void);\r
+       result Construct(const Tizen::Base::String& resourceId);\r
+       int GetDuration(void) const;\r
+       result SetDuration(int duration);\r
+       result SetInfoText(const Tizen::Base::String& infoText);\r
+       result SetFocusToEditor(void);\r
+       // From IActionEventListener\r
+       virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);\r
+\r
+private:\r
+\r
+       Tizen::Ui::Control& __parentCntl;\r
+};\r
+\r
+#endif // _MSG_DURATION_POPUP_H_\r
diff --git a/inc/MsgEvent.h b/inc/MsgEvent.h
new file mode 100644 (file)
index 0000000..2a35cec
--- /dev/null
@@ -0,0 +1,123 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgEvent.h\r
+ * @brief              This is the header file for the %ThreadEvent, %ConversationEvent,  %SmsEvent and %MmsEvent class.\r
+ *\r
+ * This header file contains the declarations of the %ThreadEvent, %ConversationEvent,  %SmsEvent and %MmsEvent class.\r
+ */\r
+#ifndef _MSG_EVENT_H_\r
+#define _MSG_EVENT_H_\r
+\r
+#include "MsgBaseEvent.h"\r
+\r
+/**\r
+ * @class      ThreadEvent\r
+ *\r
+ * Class ThreadEvent derived from BaseEvent. It use to hold IThreadEventListener.\r
+ */\r
+\r
+class ThreadEvent\r
+       : public BaseEvent\r
+{\r
+public:\r
+       /**\r
+        * One argument copy constructor.\r
+        *\r
+        * @param       pEvent  - IThreadEventListener Event listener\r
+        */\r
+       ThreadEvent(const Tizen::Base::Runtime::IEventListener* pEvent);\r
+\r
+protected:\r
+       //! Empty copy constructor to prevent shallow copy\r
+       ThreadEvent(const ThreadEvent& rhs);\r
+\r
+       //! Empty assignment operator.to prevent shallow copy\r
+       ThreadEvent& operator =(const ThreadEvent& rhs);\r
+\r
+};\r
+\r
+/**\r
+ * @class              ConversationEvent\r
+ *\r
+ * Class ConversationEvent derived from BaseEvent. It use to hold IConversationEventListener.\r
+ */\r
+\r
+class ConversationEvent\r
+       : public BaseEvent\r
+{\r
+public:\r
+       /**\r
+        * Two argument constructor for this class\r
+        *\r
+        * @param pEvent - IConversationEventListener event listener.\r
+        *\r
+        * @param threadId - Thread ID for current conversation.\r
+        */\r
+       ConversationEvent(const Tizen::Base::Runtime::IEventListener* pEvent, const int threadId);\r
+\r
+       /**\r
+        *  Get thread ID from current listener.\r
+        *\r
+        *  @return     - Current thread id as an int.\r
+        */\r
+       const int GetThreadId(void) const;\r
+\r
+protected:\r
+       //! Empty copy constructor to prevent shallow copy\r
+       ConversationEvent(const ConversationEvent& rhs);\r
+\r
+       //! Empty assignment operator.to prevent shallow copy\r
+       ConversationEvent& operator =(const ConversationEvent& rhs);\r
+\r
+private:\r
+       int __threadId; //! Thread ID for current conversation.\r
+};\r
+\r
+/**\r
+ * @class              SmsEvent\r
+ *\r
+ * Class SmsEvent derived from BaseEvent. It use to hold ISmsEventListener.\r
+ */\r
+\r
+class SmsEvent\r
+       : public BaseEvent\r
+{\r
+public:\r
+       SmsEvent(const Tizen::Base::Runtime::IEventListener* pEvent);\r
+protected:\r
+       SmsEvent(const SmsEvent& rhs);\r
+       SmsEvent& operator =(const SmsEvent& rhs);\r
+};\r
+\r
+/**\r
+ * @class              SmsEvent\r
+ *\r
+ * Class MmsEvent derived from BaseEvent. It use to hold IMmsEventListener.\r
+ */\r
+\r
+class MmsEvent\r
+       : public BaseEvent\r
+{\r
+public:\r
+       MmsEvent(const Tizen::Base::Runtime::IEventListener* pEvent);\r
+protected:\r
+       MmsEvent(const MmsEvent& rhs);\r
+       MmsEvent& operator =(const MmsEvent& rhs);\r
+};\r
+\r
+#endif // _MSG_EVENT_H_\r
diff --git a/inc/MsgFacadeManager.h b/inc/MsgFacadeManager.h
new file mode 100644 (file)
index 0000000..682d509
--- /dev/null
@@ -0,0 +1,70 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgFacadeManager.h\r
+ * @brief              This is the header file for the %FacadeManager class.\r
+ *\r
+ * This header file contains the declarations of the %FacadeManager class.\r
+ */\r
+#ifndef _MSG_FACADE_MANAGER_H_\r
+#define _MSG_FACADE_MANAGER_H_\r
+\r
+#include <FBaseDataType.h>\r
+\r
+/**\r
+ * @class              FacadeManager\r
+ *\r
+ * This Class FacadeManager is initialized all singleton application managers.\r
+ */\r
+\r
+class FacadeManager\r
+{\r
+public:\r
+       /**\r
+        * Default constructor for this class\r
+        */\r
+       FacadeManager(void);\r
+\r
+       /**\r
+        * Default destructor of this class.\r
+        */\r
+       ~FacadeManager(void);\r
+\r
+       /**\r
+        *  Initialize all dependent application managers.\r
+        */\r
+       result Initialize(void);\r
+\r
+       /**\r
+        * Uninialize all application managers.\r
+        */\r
+       result Uninitialize(void);\r
+\r
+private:\r
+       /**\r
+        *  Overloaded empty copy constructor to prevent shallow copy.\r
+        */\r
+       FacadeManager(const FacadeManager& msgFMObj);\r
+\r
+       /**\r
+        *  Overloaded assignment operator to prevent shallow copy.\r
+        */\r
+       FacadeManager& operator =(const FacadeManager& msgFMObj);\r
+};\r
+\r
+\r
+#endif //_MSG_FACADE_MANGER_H_\r
diff --git a/inc/MsgFontsettings.h b/inc/MsgFontsettings.h
new file mode 100644 (file)
index 0000000..175ce7f
--- /dev/null
@@ -0,0 +1,94 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgFontSettings.h\r
+ * @brief              This is the header file for the %FontSettings class.\r
+ *\r
+ * This header file contains the declarations of the %FontSettings class.\r
+ */\r
+#ifndef _MSG_FONT_SETTINGS_H_\r
+#define _MSG_FONT_SETTINGS_H_\r
+\r
+#include <FBase.h>\r
+\r
+#include "MsgTypes.h"\r
+\r
+namespace Tizen { namespace Graphics\r
+{\r
+class Font;\r
+}};\r
+namespace Tizen { namespace Base { namespace Collection\r
+{\r
+class HashMap;\r
+}}};\r
+\r
+/**\r
+ * @class              MsgFontSettings\r
+ *\r
+ * Class MsgFontSettings use to hold font list use in messaging application.\r
+ */\r
+\r
+class FontSettings\r
+       : public Tizen::Base::Object\r
+{\r
+public:\r
+       /**\r
+        * This is one argument constructor for this class\r
+        *\r
+        */\r
+       FontSettings(void);\r
+\r
+       /**\r
+        * Default destructor for this class\r
+        */\r
+       virtual ~FontSettings(void);\r
+\r
+       /**\r
+        * 2nd phase constructor\r
+        */\r
+       result Construct(void);\r
+\r
+       /**\r
+        * Get font based on Font ID\r
+        */\r
+       Tizen::Graphics::Font* GetFont(MsgFontIds fontId) const;\r
+\r
+       /**\r
+        * Get font Message font based on setting\r
+        */\r
+       Tizen::Graphics::Font* GetMessageFont(void) const;\r
+       SettingFontType GetMessageFontType(void) const;\r
+       void SetMessageFonttype(SettingFontType fontSize);\r
+       int GetMessageTextSize(SettingFontType settingFont) const;\r
+\r
+private:\r
+       /**\r
+        * Empty copy constructor\r
+        */\r
+       FontSettings(const FontSettings& rhs);\r
+\r
+       /**\r
+        * Empty assignment operator\r
+        */\r
+       FontSettings& operator =(const FontSettings& rhs);\r
+\r
+private:\r
+       Tizen::Base::Collection::HashMap* __FontList;\r
+};\r
+\r
+\r
+#endif // _MSG_FONT_SETTINGS_H_\r
diff --git a/inc/MsgFormFactory.h b/inc/MsgFormFactory.h
new file mode 100644 (file)
index 0000000..cc3229d
--- /dev/null
@@ -0,0 +1,55 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgFormFactory.h\r
+ * @brief              This is the header file for the %FormFactory class.\r
+ *\r
+ * This header file contains the declarations of the %FormFactory class.\r
+ */\r
+#ifndef _MSG_FORM_FACTORY_H_\r
+#define _MSG_FORM_FACTORY_H_\r
+\r
+#include <FUiScenesIFormFactory.h>\r
+\r
+/**\r
+ * @class              FormFactory\r
+ *\r
+ * Class FormFactory  is used to create all from based on demand of SceneManager.\r
+ */\r
+\r
+class FormFactory\r
+       : public Tizen::Ui::Scenes::IFormFactory\r
+{\r
+public:\r
+       //! Constructor\r
+       /**\r
+        *  Default constructor for this class\r
+        */\r
+       FormFactory(void);\r
+\r
+       //! Destructor\r
+       /**\r
+        * Default destructor for this class\r
+        */\r
+       virtual ~FormFactory(void);\r
+\r
+protected:\r
+       //! From IFormFactory\r
+       virtual Tizen::Ui::Controls::Form* CreateFormN(const Tizen::Base::String& formId, const Tizen::Ui::Scenes::SceneId& sceneId);\r
+};\r
+\r
+#endif // _MSG_FORM_FACTORY_H_\r
diff --git a/inc/MsgIComposeEventObserver.h b/inc/MsgIComposeEventObserver.h
new file mode 100644 (file)
index 0000000..afc26d0
--- /dev/null
@@ -0,0 +1,42 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgIComposeEventObserver.h\r
+ * @brief              This is the header file for the %IComposeEventObserver interface.\r
+ *\r
+ * This header file contains the declarations of the %IComposeEventObserver interface.\r
+ */\r
+#ifndef _MSG_ICOMPOSE_EVENT_OBSERVER_H_\r
+#define _MSG_ICOMPOSE_EVENT_OBSERVER_H_\r
+\r
+enum ComposeType\r
+{\r
+       COMPOSE_SMS,\r
+       COMPOSE_MMS\r
+};\r
+\r
+class IComposeEventObserver\r
+{\r
+public:\r
+       virtual ~IComposeEventObserver() {}\r
+\r
+       virtual void OnComposeStateChange(ComposeType type) = 0;\r
+       virtual void OnSendButtonClick(void) = 0;\r
+};\r
+\r
+\r
+#endif // _MSG_ICOMPOSE_EVENT_OBSERVER_H_\r
diff --git a/inc/MsgIConversationEventListener.h b/inc/MsgIConversationEventListener.h
new file mode 100644 (file)
index 0000000..59aecb5
--- /dev/null
@@ -0,0 +1,53 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgIConversationEventListener.h\r
+ * @brief              This is the header file for the %IConversationEventListener interface.\r
+ *\r
+ * This header file contains the declarations of the %IConversationEventListener interface.\r
+ */\r
+#ifndef _MSG_ICONVERSATION_EVENT_LISTENER_H_\r
+#define _MSG_ICONVERSATION_EVENT_LISTENER_H_\r
+\r
+#include <FBaseRtIEventListener.h>\r
+\r
+#include "MsgTypes.h"\r
+\r
+\r
+/**\r
+ * @interface          IConversationEventListener\r
+ *\r
+ * Class IConversationEventListener is listener for conversation list change. For conversation\r
+ * change notification this interface should be implemented.\r
+ */\r
+\r
+class IConversationEventListener\r
+       : public Tizen::Base::Runtime::IEventListener\r
+{\r
+public:\r
+       /**\r
+        * This is the destructor for this class.\r
+        */\r
+       virtual ~IConversationEventListener(void) {}\r
+\r
+       /**\r
+        * Call when particular thread conversation data change.\r
+        */\r
+       virtual void OnConversationListChange(MsgStorageChangeType msgStorageChangeType) = 0;\r
+};\r
+\r
+#endif // _MSG_ICONVERSATION_EVENT_LISTENER_H_\r
diff --git a/inc/MsgIDeleteEventListener.h b/inc/MsgIDeleteEventListener.h
new file mode 100644 (file)
index 0000000..24920e5
--- /dev/null
@@ -0,0 +1,77 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgIDeleteEventListener.h\r
+ * @brief              This is the header file for the %IDeleteEventListener interface.\r
+ *\r
+ * This header file contains the declarations of the %IDeleteEventListener interface.\r
+ */\r
+#ifndef _MSG_IDELETE_EVENT_LISTENER_H_\r
+#define _MSG_IDELETE_EVENT_LISTENER_H_\r
+\r
+#include <FBaseRtIEventListener.h>\r
+\r
+namespace Tizen { namespace Base\r
+{\r
+class Object;\r
+}};\r
+\r
+/**\r
+ * @interface          IDeleteEventListener\r
+ *\r
+ * Interface IDeleteEventListener is a listener for give progressive call back for message or\r
+ * thread deletion.\r
+ */\r
+\r
+class IDeleteEventListener\r
+       : public Tizen::Base::Runtime::IEventListener\r
+{\r
+public:\r
+       /**\r
+        * This is the destructor for this class.\r
+        */\r
+       virtual ~IDeleteEventListener(void) {}\r
+\r
+       /**\r
+        * Call when delete started by delete thread.\r
+        *\r
+        * @param   totalCount      Total number of item to be deleted.\r
+        *\r
+        */\r
+       virtual void OnDeleteStart(int totalCount) = 0;\r
+\r
+       /**\r
+        * Call after each and every delete operation.\r
+        *\r
+        * @param       deleteCount             Number of item deleted\r
+        * @param   totalCount      Total number of item to be deleted.\r
+        *\r
+        */\r
+       virtual void OnDeleteUpdate(int deleteCount, int totalCount) = 0;\r
+\r
+       /**\r
+        * Call once delete completed.\r
+        *\r
+        * @param   errCode                     In case of delete error return delete specific error code.\r
+        * @param   pThreadObject       Thread object responsible for delete operation.\r
+        *\r
+        */\r
+       virtual void OnDeleteComplete(int errCode, Tizen::Base::Object* pThreadObject) = 0;\r
+\r
+};\r
+\r
+#endif // _MSG_IDELETE_EVENT_LISTENER_H_\r
diff --git a/inc/MsgIMmsEventListener.h b/inc/MsgIMmsEventListener.h
new file mode 100644 (file)
index 0000000..cc99b1c
--- /dev/null
@@ -0,0 +1,54 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgIMmsEventListener.h\r
+ * @brief              This is the header file for the %IMmsEventListener interface.\r
+ *\r
+ * This header file contains the declarations of the %IMmsEventListener interface.\r
+ */\r
+#ifndef _MSG_IMMS_EVENT_LISTENER_H_\r
+#define _MSG_IMMS_EVENT_LISTENER_H_\r
+\r
+#include <FBaseRtIEventListener.h>\r
+\r
+/**\r
+ * @interface          IMmsEventListener\r
+ *\r
+ * Interface IMmsEventListener is a listener for MmsManager. For MMS notification\r
+ * this interface should be implemented.\r
+ */\r
+\r
+class IMmsEventListener\r
+       : public Tizen::Base::Runtime::IEventListener\r
+{\r
+public:\r
+       /**\r
+        * This is the destructor for this class.\r
+        */\r
+       virtual ~IMmsEventListener(void) {}\r
+\r
+       /**\r
+        * Call when Sms sent status change.\r
+        *\r
+        * @param       Take no argument.\r
+        *\r
+        * @return      void\r
+        */\r
+       virtual void OnMmsReceive(void) = 0;\r
+};\r
+\r
+#endif // _MSG_IMMS_EVENT_LISTENER_H_\r
diff --git a/inc/MsgIPopupEventListener.h b/inc/MsgIPopupEventListener.h
new file mode 100644 (file)
index 0000000..a33e96d
--- /dev/null
@@ -0,0 +1,52 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgIPopupEventListener.h\r
+ * @brief              This is the header file for the %IPopupEventListener interface.\r
+ *\r
+ * This header file contains the declarations of the %IPopupEventListener interface.\r
+ */\r
+#ifndef _MSG_IPOPUP_EVENT_LISTENER_H_\r
+#define _MSG_IPOPUP_EVENT_LISTENER_H_\r
+\r
+#include <FBaseObject.h>\r
+#include <FBaseRtIEventListener.h>\r
+#include <FUiControl.h>\r
+\r
+/**\r
+ * @interface          IPopupEventListener\r
+ *\r
+ * Interface IPopupEventListener is listener for popup object deletion.\r
+ */\r
+\r
+class IPopupEventListener\r
+       : public Tizen::Base::Runtime::IEventListener\r
+{\r
+public:\r
+       /**\r
+        * This is the destructor for this class.\r
+        */\r
+       virtual ~IPopupEventListener(void) {}\r
+\r
+       /**\r
+        * On Item selected.\r
+        */\r
+       virtual void OnPopupListItemSelected(const Tizen::Ui::Control& popup, int selectIndex, const Tizen::Base::Object* pPopupListItem) = 0;\r
+       virtual void OnPopupClose(Tizen::Base::Object* pObject) = 0;\r
+};\r
+\r
+#endif // _IPOPUP_EVENT_LISTENER_H_\r
diff --git a/inc/MsgISizeChangeEventListener.h b/inc/MsgISizeChangeEventListener.h
new file mode 100644 (file)
index 0000000..62c1721
--- /dev/null
@@ -0,0 +1,38 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgISizeChangeEventListener.h\r
+ * @brief              This is the header file for the %ISizeChangeEventListener interface.\r
+ *\r
+ * This header file contains the declarations of the %ISizeChangeEventListener interface.\r
+ */\r
+#ifndef _MSG_ISIZE_CHANGE_EVENT_LISTENER_H_\r
+#define _MSG_ISIZE_CHANGE_EVENT_LISTENER_H_\r
+\r
+#include <FUiControl.h>\r
+\r
+class ISizeChangeEventListener\r
+{\r
+public:\r
+       virtual ~ISizeChangeEventListener(void){}\r
+\r
+       virtual void OnSizeDecrease(const Tizen::Ui::Control& control) = 0;\r
+       virtual void OnSizeIncrease(const Tizen::Ui::Control& control) = 0;\r
+\r
+};\r
+\r
+#endif // _MSG_ISIZE_CHANGE_EVENT_LISTENER_H_\r
diff --git a/inc/MsgISmsEventListener.h b/inc/MsgISmsEventListener.h
new file mode 100644 (file)
index 0000000..9a32644
--- /dev/null
@@ -0,0 +1,63 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgISmsEventListener.h\r
+ * @brief              This is the header file for the %ISmsEventListener interface.\r
+ *\r
+ * This header file contains the declarations of the %ISmsEventListener interface.\r
+ */\r
+#ifndef _MSG_ISMS_EVENT_LISTENER_H_\r
+#define _MSG_ISMS_EVENT_LISTENER_H_\r
+\r
+#include <FBaseRtIEventListener.h>\r
+\r
+/**\r
+ * @interface          ISmsEventListener\r
+ *\r
+ * Interface ISmsEventListener is a listener for SmsManager. For sms notification\r
+ * this interface should be implemented.\r
+ */\r
+\r
+class ISmsEventListener\r
+       : public Tizen::Base::Runtime::IEventListener\r
+{\r
+public:\r
+       /**\r
+        * This is the destructor for this class.\r
+        */\r
+       virtual ~ISmsEventListener(void) {}\r
+\r
+       /**\r
+        * Call when Sms sent status change.\r
+        * @param sentStatus - values for this type SHOULD be in _MSG_NETWORK_STATUS_E.\r
+        *\r
+        * @return void\r
+        *\r
+        */\r
+       virtual void OnSmsSentStatusChange(int sentStatus) = 0;\r
+\r
+       /**\r
+        * Call when Sms sent status change.\r
+        *\r
+        * @param       Take no argument.\r
+        *\r
+        * @return      void\r
+        */\r
+       virtual void OnSmsReceive(void) = 0;\r
+};\r
+\r
+#endif // _MSG_ISMS_EVENT_LISTENER_H_\r
diff --git a/inc/MsgIThreadEventListener.h b/inc/MsgIThreadEventListener.h
new file mode 100644 (file)
index 0000000..4eb3c17
--- /dev/null
@@ -0,0 +1,50 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgIThreadEventListener.h\r
+ * @brief              This is the header file for the %IThreadEventListener interface.\r
+ *\r
+ * This header file contains the declarations of the %IThreadEventListener interface.\r
+ */\r
+#ifndef _MSG_ITHREAD_EVENT_LISTENER_H_\r
+#define _MSG_ITHREAD_EVENT_LISTENER_H_\r
+\r
+#include <FBaseRtIEventListener.h>\r
+\r
+/**\r
+  * @class             IThreadEventListener\r
+ *\r
+ * Class IThreadEventListener is a listener for ThreadPresentationModel. For new thread and existing\r
+ * thread change notification this interface should be implemented.\r
+ */\r
+\r
+class IThreadEventListener\r
+       : public Tizen::Base::Runtime::IEventListener\r
+{\r
+public:\r
+       /**\r
+        * This is the destructor for this class.\r
+        */\r
+       virtual ~IThreadEventListener(void) {}\r
+\r
+       /**\r
+        * Call when message thread list change.\r
+        */\r
+       virtual void OnMessageThreadListChange(void) = 0;\r
+};\r
+\r
+#endif // _MSG_ITHREAD_EVENT_LISTENER_H_\r
diff --git a/inc/MsgLVAttachItem.h b/inc/MsgLVAttachItem.h
new file mode 100644 (file)
index 0000000..1414234
--- /dev/null
@@ -0,0 +1,78 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgLVAttachItem.h\r
+ * @brief              This is the header file for the %LVAttachItem class.\r
+ *\r
+ * This header file contains the declarations of the %LVAttachItem class.\r
+ */\r
+#ifndef _MSG_LV_ATTACH_ITEM_H_\r
+#define _MSG_LV_ATTACH_ITEM_H_\r
+\r
+#include <FGrpTextElement.h>\r
+#include <FUiCtrlICustomElement.h>\r
+\r
+/**\r
+ * @class              LVAttachItem\r
+ *\r
+ * This class LVAttachItem is used to add any image in list item which would the\r
+ * icon as well as item background image.\r
+ */\r
+\r
+class LVAttachItem\r
+       : public Tizen::Ui::Controls::ICustomElement\r
+{\r
+public:\r
+       /**\r
+        * Default constructor for this class.\r
+        */\r
+       LVAttachItem(void);\r
+\r
+       /**\r
+        * Default destructor for this class.\r
+        */\r
+       ~LVAttachItem(void);\r
+\r
+       /**\r
+        * Set selection image for this list item.\r
+        *\r
+        * @param       iconImage               - List button icon image bitmap.\r
+        *\r
+        * @param       void\r
+        */\r
+       void SetAttachIcon(const Tizen::Graphics::Bitmap& iconImage);\r
+       void SetText(const Tizen::Base::String& msgText, const Tizen::Graphics::Font* ptextFont = null);\r
+       int GetMinimumHeight(void) const;\r
+       int GetMimimumWidth(void) const;\r
+\r
+protected:\r
+       /// From ICustomElement\r
+       virtual bool OnDraw(Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& rect, Tizen::Ui::Controls::ListItemDrawingStatus status);\r
+\r
+private:\r
+       /// Empty copy constructor.\r
+       LVAttachItem(const LVAttachItem& rhs);\r
+       // Empty assignment operator.\r
+       LVAttachItem& operator =(const LVAttachItem& rhs);\r
+\r
+private:\r
+       const Tizen::Graphics::Bitmap* __pAttachIcon;  // Not own\r
+       Tizen::Graphics::EnrichedText* __pEnrichedText; // Own\r
+};\r
+\r
+\r
+#endif //_MSG_LV_ATTACH_ITEM_H_\r
diff --git a/inc/MsgLVBackgroundItem.h b/inc/MsgLVBackgroundItem.h
new file mode 100644 (file)
index 0000000..acc610e
--- /dev/null
@@ -0,0 +1,75 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgLVBackgroundItem.h\r
+ * @brief              This is the header file for the %LVBackgroundItem class.\r
+ *\r
+ * This header file contains the declarations of the %MsgLVBackgroundItem class.\r
+ */\r
+#ifndef _MSG_LV_BACKGROUND_ITEM_H_\r
+#define _MSG_LV_BACKGROUND_ITEM_H_\r
+\r
+#include <FGrpTextElement.h>\r
+#include <FUiCtrlICustomElement.h>\r
+\r
+/**\r
+ * @class              LVBackgroundItem\r
+ *\r
+ * This class LVBackgroundItem is used to add any image in list item which would the\r
+ * icon as well as item background image.\r
+ */\r
+\r
+class LVBackgroundItem\r
+       : public Tizen::Ui::Controls::ICustomElement\r
+{\r
+public:\r
+       /**\r
+        * Default constructor for this class.\r
+        */\r
+       LVBackgroundItem(void);\r
+\r
+       /**\r
+        * Default destructor for this class.\r
+        */\r
+       ~LVBackgroundItem(void);\r
+\r
+       /**\r
+        *  Set background image for this list item\r
+        *\r
+        *  @param      backgroudImage      - Background image bitmap.\r
+        *\r
+        *  @return     void\r
+        */\r
+       void SetBackgroundBitmap(const Tizen::Graphics::Bitmap& normalBackgroudBg, const Tizen::Graphics::Bitmap& selectBackgroudBg);\r
+\r
+protected:\r
+       /// From ICustomElement\r
+       virtual bool OnDraw(Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& rect, Tizen::Ui::Controls::ListItemDrawingStatus status);\r
+\r
+private:\r
+       /// Empty copy constructor.\r
+       LVBackgroundItem(const LVBackgroundItem& rhs);\r
+       // Empty assignment operator.\r
+       LVBackgroundItem& operator =(const LVBackgroundItem& rhs);\r
+\r
+private:\r
+       const Tizen::Graphics::Bitmap* __pBackgroundBitmap;  // Not own\r
+       const Tizen::Graphics::Bitmap* __pSelectedBitmap;   // Not own\r
+};\r
+\r
+\r
+#endif //_MSG_LV_BACKGROUND_ITEM_H_\r
diff --git a/inc/MsgLVBubbleListItem.h b/inc/MsgLVBubbleListItem.h
new file mode 100644 (file)
index 0000000..ff50f39
--- /dev/null
@@ -0,0 +1,139 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgLVBubbleListItem.h\r
+ * @brief              This is the header file for the %LVBubbleListItem class.\r
+ *\r
+ * This header file contains the declarations of the %LVBubbleListItem class.\r
+ */\r
+#ifndef _MSG_LV_BUBBLE_LIST_ITEM_H_\r
+#define _MSG_LV_BUBBLE_LIST_ITEM_H_\r
+\r
+#include <FUiCtrlCustomItem.h>\r
+#include <FUiCtrlGroupedListView.h>\r
+\r
+class ConversationData;\r
+class FontSettings;\r
+class LVAttachItem;\r
+class LVBackgroundItem;\r
+class LVButtonItem;\r
+class LVMultiLineTextItem;\r
+\r
+enum MsgStatus\r
+{\r
+       MSG_STATUS_RECEIVE,\r
+       MSG_STATUS_SENDING,\r
+       MSG_STATUS_SENT,\r
+       MSG_STATUS_FAIL,\r
+       MSG_STATUS_DRAFT\r
+};\r
+\r
+/**\r
+ * @class              LVBubbleListItem\r
+ *\r
+ * This class MsgLVBubbleListItem display text in bubble layout.\r
+ */\r
+\r
+class LVBubbleListItem\r
+       : public Tizen::Ui::Controls::CustomItem\r
+       , public Tizen::Base::Runtime::ITimerEventListener\r
+{\r
+public:\r
+       enum MsgBubbleItem\r
+       {\r
+               MSG_BUBBLE_ITEM,\r
+               MSG_BUBBLE_ITEM_TEXT,\r
+               MSG_BUBBLE_ITEM_DATE,\r
+               MSG_BUBBLE_ITEM_FAIL_STATUS,\r
+               MSG_BUBBLE_ITEM_UNREAD_STATUS,\r
+               MSG_BUBBLE_ITEM_ATTACHMENT,\r
+               MSG_BUBBLE_ITEM_IMAGE,\r
+               MSG_BUBBLE_ITEM_DETAILS,\r
+               MSG_BUBBLE_ITEM_BG,\r
+\r
+       };\r
+\r
+\r
+public:\r
+       /**\r
+        * One argument constructor for this class.\r
+        *\r
+        * @param   width       Maximum width of this list item.\r
+        *\r
+        */\r
+       LVBubbleListItem(ConversationData& convData, Tizen::Ui::Controls::GroupedListView& pListView, int groupIndex, int index, int width, FontSettings& fontSettings, bool editMode);\r
+\r
+       /**\r
+        * Default destructor for this class\r
+        */\r
+       ~LVBubbleListItem(void);\r
+\r
+       /**\r
+        * Prepare layout based on content, this should be call after setting list item data.\r
+        *\r
+        * @param       isSent  - Indicate current bubble message for sent or receive.\r
+        *\r
+        * @return      void\r
+        */\r
+       void CreateBubbleLayout(void);\r
+\r
+       // From ITimerEventListener\r
+       virtual void OnTimerExpired(Tizen::Base::Runtime::Timer& timer);\r
+\r
+private:\r
+       /**\r
+        * Create time stamp for this bubble message.\r
+        *\r
+        * @param  timeStamp    - Time stamp of the bubble.\r
+        */\r
+       void CreateTimeStampElement(void);\r
+\r
+       /**\r
+        * Create content element for message body.\r
+        */\r
+       void CreateContentElement(void);\r
+\r
+       //! Empty copy constructor\r
+       LVBubbleListItem(const LVBubbleListItem& rhs);\r
+       //! Empty assignment operator.\r
+       LVBubbleListItem& operator =(const LVBubbleListItem& rhs);\r
+\r
+private:\r
+       ConversationData& __convData;\r
+       int __leftMargin;\r
+       int __rightMargin;\r
+       int __topMargin;\r
+       int __bottomMargin;\r
+       Tizen::Ui::Controls::GroupedListView& __listView;\r
+       int __groupIndex;\r
+       int __index;\r
+       int __Width;\r
+       bool __editMode;\r
+       FontSettings& __fontSettings;\r
+       LVBackgroundItem* __pBackgroudItem;\r
+       LVMultiLineTextItem* __pMsgContent;      // Own\r
+       LVMultiLineTextItem* __pMsgDate;         // Own\r
+       Tizen::Graphics::Bitmap* __pProgressIcon;     // Not Own\r
+       Tizen::Base::Runtime::Timer* __pAnimationTimer;\r
+       LVAttachItem* __pAttachmentItem;\r
+       Tizen::Graphics::Bitmap* __pMediaThumbnail;  // Not Own\r
+       LVButtonItem* __pDetailButton;\r
+       LVButtonItem* __pFailIndicator;\r
+};\r
+\r
+\r
+#endif //_MSG_LV_BUBBLE_LIST_ITEM_H_\r
diff --git a/inc/MsgLVButtonItem.h b/inc/MsgLVButtonItem.h
new file mode 100644 (file)
index 0000000..06fcab1
--- /dev/null
@@ -0,0 +1,84 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgLVButtonItem.h\r
+ * @brief              This is the header file for the %LVButtonItem class.\r
+ *\r
+ * This header file contains the declarations of the %LVButtonItem class.\r
+ */\r
+#ifndef _MSG_LV_BUTTON_ITEM_H_\r
+#define _MSG_LV_BUTTON_ITEM_H_\r
+\r
+#include <FGrpTextElement.h>\r
+#include <FUiCtrlICustomElement.h>\r
+\r
+/**\r
+ * @class              LVButtonItem\r
+ *\r
+ * This class LVButtonItem is used to add any image in list item which would the\r
+ * icon as well as item background image.\r
+ */\r
+\r
+class LVButtonItem\r
+       : public Tizen::Ui::Controls::ICustomElement\r
+{\r
+public:\r
+       /**\r
+        * Default constructor for this class.\r
+        */\r
+       LVButtonItem(void);\r
+\r
+       /**\r
+        * Default destructor for this class.\r
+        */\r
+       ~LVButtonItem(void);\r
+\r
+       /**\r
+        *  Set background image for this list item\r
+        *\r
+        *  @param      backgroudImage      - Background image bitmap.\r
+        *\r
+        *  @return     void\r
+        */\r
+       void SetBackgroundImage(const Tizen::Graphics::Bitmap& normalImage, const Tizen::Graphics::Bitmap& selectionImage);\r
+\r
+       /**\r
+        * Set selection image for this list item.\r
+        *\r
+        * @param       iconImage               - List button icon image bitmap.\r
+        *\r
+        * @param       void\r
+        */\r
+       void SetIcon(const Tizen::Graphics::Bitmap& iconImage);\r
+\r
+protected:\r
+       /// From ICustomElement\r
+       virtual bool OnDraw(Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& rect, Tizen::Ui::Controls::ListItemDrawingStatus status);\r
+\r
+private:\r
+       /// Empty copy constructor.\r
+       LVButtonItem(const LVButtonItem& rhs);\r
+       // Empty assignment operator.\r
+       LVButtonItem& operator =(const LVButtonItem& rhs);\r
+private:\r
+       const Tizen::Graphics::Bitmap* __pBackgroundBitmap;  // Not own\r
+       const Tizen::Graphics::Bitmap* __pSelectedBitmap;   // Not own\r
+       const Tizen::Graphics::Bitmap* __pIconBitmap;   // Not own\r
+};\r
+\r
+\r
+#endif //_MSG_LV_BUTTON_ITEM_H_\r
diff --git a/inc/MsgLVMultiLineTextItem.h b/inc/MsgLVMultiLineTextItem.h
new file mode 100644 (file)
index 0000000..5105968
--- /dev/null
@@ -0,0 +1,182 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgLVMultiLineTextItem.h\r
+ * @brief              This is the header file for the %LVMultiLineTextItem class.\r
+ *\r
+ * This header file contains the declarations of the %LVMultiLineTextItem class.\r
+ */\r
+#ifndef _MSG_LV_MULTILINE_TEXTITEM_H_\r
+#define _MSG_LV_MULTILINE_TEXTITEM_H_\r
+\r
+#include <FGrpEnrichedText.h>\r
+#include <FGrpTextElement.h>\r
+#include <FUiCtrlICustomElement.h>\r
+\r
+/**\r
+  * @class             LVMultiLineTextItem\r
+ *\r
+ * This class LVMultiLineTextItem display multiline text in list.Using this class\r
+ * display text colour and font size/type can be control.\r
+ *\r
+ */\r
+\r
+class LVMultiLineTextItem\r
+       : public Tizen::Ui::Controls::ICustomElement\r
+{\r
+public:\r
+       /**\r
+        * This is the default constructor for this class.\r
+        */\r
+       LVMultiLineTextItem(void);\r
+\r
+       /**\r
+        * This is the default destructor for this class.\r
+        */\r
+       ~LVMultiLineTextItem(void);\r
+\r
+       /**\r
+        * Set text need to be displayed in this list item.\r
+        *\r
+        * @param               msgText         - Text need to be displayed.\r
+        * @param               textColor       - Text color\r
+        * @param               font            - Text font.\r
+        *\r
+        * @return              void\r
+        */\r
+       void AddText(const Tizen::Base::String& msgText, const Tizen::Graphics::Color& textColor, const Tizen::Graphics::Color& textSelectionColor, const Tizen::Graphics::Font* ptextFont = null);\r
+       /**\r
+        *  Set background image for this list item\r
+        *\r
+        *  @param      backgroudImage      - Background image bitmap.\r
+        *\r
+        *  @return     void\r
+        */\r
+       void SetBackgroundImage(const Tizen::Graphics::Bitmap& backgroudImage);\r
+\r
+       /**\r
+        * Set selection image for this list item.\r
+        *\r
+        * @param       selectionImage          - Selection image bitmap.\r
+        *\r
+        * @param       void\r
+        */\r
+       void SetSelectionImage(const Tizen::Graphics::Bitmap& selectionImage);\r
+\r
+       /**\r
+        *  Set max view rect width for list item.\r
+        *\r
+        *  @param      rectWidth       View rect width for list item.\r
+        *  @return     void\r
+        */\r
+       void SetViewRectWidth(const int rectWidth);\r
+\r
+       /**\r
+        * Set margin for text element.\r
+        * @param       left            left padding\r
+        * @param   right               right padding\r
+        * @param       top                     top padding\r
+        * @param   bottom              bottom padding\r
+        */\r
+       void SetTextMargin(int left, int right, int top, int bottom);\r
+\r
+       /**\r
+        * Return minimum height of the list item. This should be call only after\r
+        * CreateTextLayout().\r
+        *\r
+        * @param       none\r
+        * @return  int         - Minimum height to display list item.\r
+        *\r
+        */\r
+       int GetMinHeight(void) const;\r
+\r
+       /**\r
+        * Return minimum width of the list item. This should be call only after\r
+        * CreateTextLayout().\r
+        *\r
+        * @param       none\r
+        * @return  int         - Minimum width to display list item.\r
+        *\r
+        */\r
+       int GetMaxWidth(void) const;\r
+\r
+       /**\r
+        * Set vertical alignment for multiline text.\r
+        *\r
+        * @param       alignment - vertical position of the text.\r
+        * @return  void.\r
+        *\r
+        */\r
+       void SetVerticalAlignment(Tizen::Graphics::TextVerticalAlignment alignment);\r
+\r
+       /**\r
+        * Set Horizontal alignment for multiline text.\r
+        *\r
+        * @param       alignment - Horizontal position of the text.\r
+        * @return  void.\r
+        *\r
+        */\r
+       void SetHorizentalAlignment(Tizen::Graphics::TextHorizontalAlignment alignment);\r
+\r
+\r
+       /**\r
+        * Create layout for item which will display in list. This should be call\r
+        * after setting the list item properties.\r
+        *\r
+        * @param       width   - Width of the list item.\r
+        *\r
+        * @return void\r
+        */\r
+       void CreateTextLayout(int width = 0, bool singleLine = false);\r
+       void SetMinimumHeight(int minHeight);\r
+       void SetMinimumWidth(int minWidth);\r
+\r
+protected:\r
+       /// From ICustomElement\r
+       virtual bool OnDraw(Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& rect, Tizen::Ui::Controls::ListItemDrawingStatus status);\r
+\r
+private:\r
+       /**\r
+        * Empty Copy constructor\r
+        */\r
+       LVMultiLineTextItem(const LVMultiLineTextItem& rhs);\r
+\r
+       /**\r
+        * Empty Assignment operator.\r
+        *\r
+        */\r
+       LVMultiLineTextItem& operator =(const LVMultiLineTextItem& rhs);\r
+\r
+private:\r
+       const Tizen::Graphics::Bitmap* __pBackgroundBitmap;  // Not own\r
+       const Tizen::Graphics::Bitmap* __pSelectedBitmap;   // Not own\r
+       Tizen::Graphics::EnrichedText* __pEnrichedText; // Own\r
+       Tizen::Base::Collection::ArrayList* __pNormalColor; // own\r
+       Tizen::Base::Collection::ArrayList* __pSelectionColor; // own\r
+       Tizen::Graphics::TextVerticalAlignment __verticalAlignment;\r
+       Tizen::Graphics::TextHorizontalAlignment __horizontalAlignment;\r
+       mutable int __viewRectWidth;\r
+       mutable int __leftMargin;\r
+       mutable int __rightMargin;\r
+       mutable int __topMargin;\r
+       mutable int __bottomMargin;\r
+       int __minHeight;\r
+       int __minWidth;\r
+};\r
+\r
+\r
+#endif /* _MSG_LV_MULTILINE_TEXTITEM_H_ */\r
diff --git a/inc/MsgLVThreadListItem.h b/inc/MsgLVThreadListItem.h
new file mode 100644 (file)
index 0000000..b9320ba
--- /dev/null
@@ -0,0 +1,108 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgLVThreadListItem.h\r
+ * @brief              This is the header file for the %LVThreadListItem class.\r
+ *\r
+ * This header file contains the declarations of the %LVThreadListItem class.\r
+ */\r
+#ifndef _MSG_LV_THREAD_LISTITEM_H_\r
+#define _MSG_LV_THREAD_LISTITEM_H_\r
+\r
+#include <FUiCtrlCustomItem.h>\r
+\r
+#include "MsgTypes.h"\r
+\r
+namespace Tizen { namespace Graphics\r
+{\r
+class Bitmap;\r
+}}\r
+class BaseData;\r
+class LVMultiLineTextItem;\r
+\r
+/**\r
+ * @class              LVThreadListItem\r
+ *\r
+ * This class LVThreadListItem displays one thread list item. It include latest short\r
+ * message data, time , status and unread count information.\r
+ *\r
+ */\r
+class LVThreadListItem\r
+       : public Tizen::Ui::Controls::CustomItem\r
+{\r
+\r
+public:\r
+       /**\r
+        * This is the argument constructor for this class.\r
+        *\r
+        * @param   width - Width of the list item.\r
+        */\r
+       LVThreadListItem(BaseData& baseEntry, int width, bool editMode);\r
+\r
+       /**\r
+        * This is the default destructor for this class.\r
+        */\r
+       ~LVThreadListItem(void);\r
+\r
+       /**\r
+        * Prepare layout thread list item layout\r
+        *\r
+        * @return      void\r
+        * @param [in]  void\r
+        *\r
+        */\r
+       void CreateThreadItemLayout(const Tizen::Base::String& searchText = L"");\r
+\r
+protected:\r
+       /**\r
+        * Convert Message status to relative icon type\r
+        *\r
+        * @param   msgType             Current message type.\r
+        *\r
+        * @return  MessageIconType     Relative icon type of current message type.\r
+        */\r
+       MessageIconType ConvertIconType(int msgType);\r
+\r
+       /**\r
+        * Create status element text.\r
+        *\r
+        * @return              void\r
+        *\r
+        */\r
+       void CreateStatusElement(void);\r
+       void CreateTitleElement(const Tizen::Base::String& searchText);\r
+       void CreateMessageElement(const Tizen::Base::String& searchText);\r
+\r
+private:\r
+       //! Copy constructor.\r
+       LVThreadListItem(const LVThreadListItem& rhs);\r
+       //! Assignment operator.\r
+       LVThreadListItem& operator =(const LVThreadListItem& rhs);\r
+\r
+private:\r
+       BaseData& __entryData;\r
+       LVMultiLineTextItem* __pStatusText;\r
+       LVMultiLineTextItem* __pTitleText;\r
+       LVMultiLineTextItem* __pShortMsgText;\r
+       Tizen::Graphics::Font* __pMainTextFont;\r
+       Tizen::Graphics::Font* __pSubTextFont;\r
+       int __msgType;\r
+       int __Width;\r
+       bool __IsEditMode;\r
+};\r
+\r
+#endif //_MSG_LV_THREAD_LISTITEM_H_\r
diff --git a/inc/MsgListPresentationModel.h b/inc/MsgListPresentationModel.h
new file mode 100644 (file)
index 0000000..557d8bf
--- /dev/null
@@ -0,0 +1,157 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgListPresentationModel.h\r
+ * @brief              This is the header file for the %ListPresentationModel class.\r
+ *\r
+ * This header file contains the declarations of the %ListPresentationModel class.\r
+ */\r
+#ifndef _MSG_LIST_PRESENTATION_MODEL_H_\r
+#define _MSG_LIST_PRESENTATION_MODEL_H_\r
+\r
+#include "MsgBasePresentationModel.h"\r
+\r
+namespace Tizen { namespace Base { namespace Collection\r
+{\r
+class ArrayList;\r
+}}};\r
+class BaseData;\r
+\r
+/**\r
+ * @class              ListPresentationModel\r
+ *\r
+ * This class interact with SLP layer and fetch message thread list,thread conversation details\r
+ * from message store.For interface API check ListPresentationModel.\r
+ */\r
+class ListPresentationModel\r
+       : public BasePresentationModel\r
+{\r
+\r
+public:\r
+       /**\r
+        * Default destructor for this class\r
+        */\r
+       virtual ~ListPresentationModel(void);\r
+\r
+       /**\r
+        *  Get message  given index.\r
+        *\r
+        *  @param  message index.\r
+        */\r
+       BaseData* GetDataAt(int index) const;\r
+\r
+       /**\r
+        * Get message list count. This is an synchronous API.\r
+        *\r
+        * @param   Take no argument.\r
+        *\r
+        * @return int - Return group count for thread list.\r
+        */\r
+       int GetCount(void);\r
+\r
+\r
+       /**\r
+        * Get group count for thread list. This is an synchronous API.\r
+        *\r
+        * @param   Take no argument.\r
+        *\r
+        * @return int - Return group count for thread list.\r
+        */\r
+       int GetGroupCount(void);\r
+\r
+       /**\r
+        * Fetch group item count for given group index. This is an synchronous API.\r
+        *\r
+        * @param  groupIndex - Group index of thread list.\r
+        *\r
+        * @return int - Return group item count.\r
+        */\r
+       int GetGroupItemCount(int groupIndex);\r
+\r
+       /**\r
+        * Fetch list index based on group item selected index. This is an synchronous API.\r
+        *\r
+        * @param  index - selected index in group.\r
+        *\r
+        * @return int - Return relative list index of thread list.\r
+        */\r
+       int GetSelectedIndex(int index);\r
+\r
+       /**\r
+        * Fetch group name for given group index.This is an synchronous API.\r
+        *\r
+        * @param  groupIndex - Group index of thread list.\r
+        *\r
+        * @return string - Return group item name.\r
+        */\r
+       Tizen::Base::String GetGroupName(int groupIndex);\r
+\r
+       /**\r
+        * reset list data and group info.\r
+        * @param none\r
+        *\r
+        * @return void\r
+        */\r
+       void Clear(void);\r
+\r
+protected:\r
+       /**\r
+        * Default constructor for this class.\r
+        */\r
+       ListPresentationModel(void);\r
+\r
+       /**\r
+        *  Second phase construction\r
+        */\r
+       result Construct(void);\r
+\r
+       /**\r
+        *  Prepare group information after fetching data.\r
+        */\r
+       void PrepareGroupInfo(void);\r
+\r
+private:\r
+       //! To prevent copy constructor and assignment\r
+       ListPresentationModel(const ListPresentationModel&);\r
+       ListPresentationModel& operator =(const ListPresentationModel& msg);\r
+\r
+protected:\r
+       /**\r
+        * @brief   For internal use only.\r
+        * @class   ThreadGroup\r
+        *\r
+        */\r
+       class GroupInfo\r
+               : public Tizen::Base::Object\r
+       {\r
+       public:\r
+               //! Group name\r
+               Tizen::Base::String groupName;\r
+               //! Group item count.\r
+               int itemCount;\r
+\r
+               GroupInfo()\r
+                       : groupName(L"")\r
+                       , itemCount(0)\r
+               {\r
+               }\r
+       };\r
+       Tizen::Base::Collection::ArrayList* __pDataList;   //! Data list\r
+       Tizen::Base::Collection::ArrayList* __pGroupInfo;   //! This list group information\r
+};\r
+\r
+#endif // _MSG_LIST_PRESENTATION_MODEL_H_\r
diff --git a/inc/MsgMainFrame.h b/inc/MsgMainFrame.h
new file mode 100644 (file)
index 0000000..e5f0265
--- /dev/null
@@ -0,0 +1,50 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgMainFrame.h\r
+ * @brief              This is the header file for the %MainFrame class.\r
+ *\r
+ * This header file contains the declarations of the %MainFrame class.\r
+ */\r
+#ifndef _MSG_MAIN_FRAME_H_\r
+#define _MSG_MAIN_FRAME_H_\r
+\r
+#include <FBase.h>\r
+#include <FUi.h>\r
+\r
+class FormFactory;\r
+\r
+class MainFrame\r
+       : public Tizen::Ui::Controls::Frame\r
+{\r
+public:\r
+       MainFrame(void);\r
+       virtual ~MainFrame(void);\r
+\r
+public:\r
+       virtual result OnInitializing(void);\r
+       virtual result OnTerminating(void);\r
+\r
+private:\r
+       // New API\r
+       result RegisterAllScenes(void);\r
+\r
+private:\r
+       FormFactory* __pFormFactory;\r
+};\r
+\r
+#endif  //_MSG_MAIN_FRAME_H_\r
diff --git a/inc/MsgMediaControl.h b/inc/MsgMediaControl.h
new file mode 100644 (file)
index 0000000..e10ca20
--- /dev/null
@@ -0,0 +1,70 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgMediaControl.h\r
+ * @brief              This is the header file for the %MediaControl class.\r
+ *\r
+ * This header file contains the declarations of the %MediaControl class.\r
+ */\r
+#ifndef _MSG_MEDIA_CONTROL_H_\r
+#define _MSG_MEDIA_CONTROL_H_\r
+\r
+#include <FUi.h>\r
+\r
+class MediaControl\r
+       : public Tizen::Ui::Container\r
+       , public Tizen::Base::Runtime::IRunnable\r
+       , public Tizen::Ui::ITouchEventListener\r
+{\r
+public:\r
+       MediaControl(void);\r
+       ~MediaControl(void);\r
+       result Construct(const Tizen::Graphics::Rectangle& rectangle);\r
+       void SetMediaPath(const Tizen::Base::String& mediaPath, MediaType mediaType);\r
+       Tizen::Base::String GetMediaPath(void) const;\r
+       MediaType GetMediaType(void) const { return __mediaType;}\r
+       void SetDeleteActionId(int actionId);\r
+       void AddActionEventListener(Tizen::Ui::IActionEventListener& listener);\r
+\r
+protected:\r
+       // Form Base class\r
+       virtual void OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs);\r
+       virtual result OnDraw(void);\r
+\r
+       // Form IRunnable\r
+       virtual Tizen::Base::Object* Run(void);\r
+\r
+       // Form ITouchEventListener\r
+       virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);\r
+       virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};\r
+       virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};\r
+       virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};\r
+       virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};\r
+\r
+private:\r
+       //\r
+       void LoadMediaIcon(void);\r
+\r
+private:\r
+       MediaType __mediaType;\r
+       Tizen::Base::String __mediaPath;\r
+       Tizen::Ui::Controls::Button* __pDeleteMedia;\r
+       Tizen::Graphics::Bitmap* __pMediaIconBitmap;\r
+       Tizen::Base::Runtime::Thread* __pWorkerThread;\r
+};\r
+\r
+#endif // _MSG_MEDIA_CONTROL_H_\r
diff --git a/inc/MsgMediaTextExpandEditArea.h b/inc/MsgMediaTextExpandEditArea.h
new file mode 100644 (file)
index 0000000..3c1c24b
--- /dev/null
@@ -0,0 +1,92 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgMediaTextExpandEditArea.h\r
+ * @brief              This is the header file for the %MediaTextExpandEditArea class.\r
+ *\r
+ * This header file contains the declarations of the %MediaTextExpandEditArea class.\r
+ */\r
+#ifndef _MSG_MEDIA_TEXTEXPAND_EDITAREA_H_\r
+#define _MSG_MEDIA_TEXTEXPAND_EDITAREA_H_\r
+\r
+#include "MsgComposeBaseControl.h"\r
+#include "MsgTypes.h"\r
+\r
+class MediaControl;\r
+class AttachementControl;\r
+class ISizeChangeEventListener;\r
+\r
+class MediaTextExpandEditArea\r
+       : public ComposeBaseControl\r
+       , public Tizen::Ui::IActionEventListener\r
+       , public Tizen::Ui::Controls::IExpandableEditAreaEventListener\r
+{\r
+public:\r
+       // Constructor and destructor\r
+       MediaTextExpandEditArea(void);\r
+       ~MediaTextExpandEditArea(void);\r
+       result Construct(const Tizen::Graphics::Rectangle& rectangle);\r
+\r
+       // Set listener API\r
+       void AddActionEventListener(Tizen::Ui::IActionEventListener& listener);\r
+       void AddKeypadEventListener(Tizen::Ui::IKeypadEventListener& listener);\r
+       void AddTextEventListener(Tizen::Ui::ITextEventListener& listener);\r
+       void AddKeyEventListener(Tizen::Ui::IKeyEventListener& listener);\r
+       void SetSizeChangeEventListener(ISizeChangeEventListener& listener);\r
+       void AddFocusEventListener(Tizen::Ui::IFocusEventListener& listener);\r
+       // Set media file\r
+       result SetText(const Tizen::Base::String& strText);\r
+       result ClearText(void);\r
+       Tizen::Base::String GetText(void) const;\r
+       result SetMedia(const Tizen::Base::String& mediaFilePath, MediaType mediaType);\r
+       Tizen::Base::String GetMediaPath(MediaType mediaType) const;\r
+       void SetDeleteActionId(int actionId);\r
+       bool IsImageExist() const;\r
+       bool IsAudioExist() const;\r
+       bool IsVideoExist() const;\r
+       void SetDeleteShowState(bool visible);\r
+       result ShowKeypad(bool visible);\r
+       result SetFocus(void);\r
+       result SetTextSize(int textSize);\r
+       void SetLimitLength(int length);\r
+\r
+protected:\r
+       // Form IExpandableEditAreaEventListener\r
+       virtual void OnExpandableEditAreaLineAdded(Tizen::Ui::Controls::ExpandableEditArea& source, int newLineCount);\r
+       virtual void OnExpandableEditAreaLineRemoved(Tizen::Ui::Controls::ExpandableEditArea& source, int newLineCount);\r
+       // Form IActionEventListener\r
+       virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);\r
+       // Form Base class\r
+       virtual result OnDraw(void);\r
+       virtual void OnBoundsChanged(const Tizen::Graphics::Rectangle& oldRect, const Tizen::Graphics::Rectangle& newRect);\r
+       // Form ComposeBaseControl\r
+       virtual ComposeControlType GetControlType(void) const;\r
+\r
+private:\r
+       Tizen::Graphics::Bitmap* __pBgBitmap;\r
+       ISizeChangeEventListener* __pSizeChangeListener;\r
+       MediaControl* __pMediaCntl;\r
+       Tizen::Ui::Controls::ExpandableEditArea* __pExpandEditArea;\r
+       Tizen::Ui::Controls::Button* __pDeleteButton;\r
+       Tizen::Graphics::Rectangle __prevBounds;\r
+       AttachementControl* __pAttachCntrl;\r
+\r
+};\r
+\r
+\r
+\r
+#endif // _MSG_MEDIA_TEXTEXPAND_EDITAREA_H_\r
diff --git a/inc/MsgMessageComposePanel.h b/inc/MsgMessageComposePanel.h
new file mode 100644 (file)
index 0000000..f40045a
--- /dev/null
@@ -0,0 +1,160 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+/**
+ * @file               MsgMessageComposePanel.h
+ * @brief              This is the header file for the %MessageComposePanel class.
+ *
+ * This header file contains the declarations of the %MessageComposePanel class.
+ */
+#ifndef _MSG_MESSAGE_COMPOSE_PANEL_H_
+#define _MSG_MESSAGE_COMPOSE_PANEL_H_
+
+#include <FApp.h>
+#include <FUi.h>
+
+#include "MsgISizeChangeEventListener.h"
+#include "MsgTypes.h"
+
+class AttachListPopup;
+class ComposeBaseControl;
+class CompressPopup;
+class IComposeEventObserver;
+class MediaTextExpandEditArea;
+class MessageData;
+class MessageComposeData;
+
+class MessageComposePanel
+       : public Tizen::Ui::Controls::Panel
+       , public Tizen::App::IAppControlResponseListener
+       , public Tizen::Base::Runtime::IRunnable
+       , public Tizen::Base::Runtime::ITimerEventListener
+       , public Tizen::Ui::IActionEventListener
+       , public Tizen::Ui::IFocusEventListener
+       , public Tizen::Ui::IKeyEventListener
+       , public Tizen::Ui::IKeypadEventListener
+       , public Tizen::Ui::ITextEventListener
+       , public ISizeChangeEventListener
+{
+public:
+       // Constructor
+       MessageComposePanel(void);
+       // Destructor
+       ~MessageComposePanel(void);
+       // 2nd phase constructor
+       result Construct(const Tizen::Base::String& resourceId);
+       // New API
+       void SetComposeEventListener(IComposeEventObserver& listener);
+       void SetKeypadEventListener(Tizen::Ui::IKeypadEventListener& listener);
+       void SetSizeChangeEventListener(ISizeChangeEventListener& listener);
+       int GetDisplayHeight(void) const;
+       void ShowDefaultUi(void);
+       bool IsMmsMode(void) const;
+       Tizen::Base::String GetSmsText(void) const;
+       MessageComposeData* GetMessageComposeDataN(void) const;
+       void Reset(void);
+       void HideKeypad(void);
+       void ShowKeypad(void);
+       void SetTextSize(int textSize);
+       void ClearText(void);
+       void LoadMessageData(const MessageData& msgData);
+       void LoadComposeData(const MessageComposeData& composeData);
+
+       void SetFocusToEditor(void);
+       void SetDefaultPageDuration(int pageDuration);
+       int GetDefaultPageDuration(void) const;
+
+       // Form Base class
+       virtual result SetBounds(const Tizen::Graphics::Rectangle& rect);
+
+       void EnableSendButton(bool status);
+       bool IsComposeFieldEmpty(void);
+
+protected:
+       // Form ISizeChangeEventListener
+       virtual void OnSizeIncrease(const Tizen::Ui::Control& control);
+       virtual void OnSizeDecrease(const Tizen::Ui::Control& control);
+       // Form IAppControlEventListener
+       virtual void OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData);
+       // Form IActionEventListener
+       virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+       // Form IKeypadEventListener
+       virtual void OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction);
+       virtual void OnKeypadClosed(Tizen::Ui::Control& source);
+       virtual void OnKeypadOpened(Tizen::Ui::Control& source);
+       virtual void OnKeypadWillOpen(Tizen::Ui::Control& source);
+       virtual void OnKeypadBoundsChanged(Tizen::Ui::Control& source);
+       // Form IFocusEventListener
+       virtual void OnFocusGained(const Tizen::Ui::Control& source);
+       virtual void OnFocusLost(const Tizen::Ui::Control& source);
+       // Form base class
+       virtual result OnDraw(void);
+       virtual void OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs);
+       virtual void OnBoundsChanged(const Tizen::Graphics::Rectangle& oldRect, const Tizen::Graphics::Rectangle& newRect);
+
+       //From IKeyEventListener
+       virtual void OnKeyPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode){};
+       virtual void OnKeyReleased(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
+       virtual void OnKeyLongPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode){};
+       //From ITextEventListener
+       virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source){};
+       virtual void OnTextValueChanged(const Tizen::Ui::Control& source);
+       // Form IRunnable
+       virtual Tizen::Base::Object* Run(void);
+
+       //ITimerEventListner
+       void OnTimerExpired(Tizen::Base::Runtime::Timer& timer);
+       bool IsTimerExpired() const {return false;};
+
+       // New API
+       int GetPanelHeight(const Tizen::Ui::Controls::Panel& panel) const;
+       void AdjustChildControl(void);
+       result LaunchAppControl(RequestType requestType);
+       void ShowComposeInfo(void);
+       Tizen::Base::String GetMessageCounterInfo(int msgLength) const;
+       long long int GetMessageComposeSize(void) const;
+       long long int GetFileSize(const Tizen::Base::String& filePath) const;
+       result ChangeResolution(const Tizen::Base::String& sourcPath);
+       bool IsSutitableCreationMode(const Tizen::Base::String& filePath) const;
+       void ProcessNextFileComposeQueue(void);
+       MsgResponse InsertFileToPage(const Tizen::Base::String& selectFilepath);
+       MediaTextExpandEditArea* CreatePage(const Tizen::Base::String& pageText = L"");
+       void AddAttachementElement(const Tizen::Base::String& attachFile);
+       void AddSubjectField(const Tizen::Base::String& subjectText = L"");
+       void ShowSizeErrorPopup(void);
+       Tizen::Base::Collection::IList* GetSelectedFileListN(const Tizen::Base::String& operationId, const Tizen::Base::Collection::IMap* pResultMap);
+
+private:
+       IComposeEventObserver* __pCompseEventListener;
+       ComposeBaseControl* __pFocusControl;
+       Tizen::Ui::IKeypadEventListener* __pKeypadListener;
+       ISizeChangeEventListener* __pSizeChangeListener;
+       Tizen::Ui::Controls::ScrollPanel* __pScrollPanel;
+       Tizen::Ui::Controls::Button* __pSendMessage;
+       Tizen::Ui::Controls::Button* __pAddAttachement;
+       Tizen::Ui::Controls::Label* __pComposeInfoLabel;
+       Tizen::Graphics::Rectangle __prevBounds;
+       Tizen::Ui::Controls::Popup* __pSizeExceedPopup;
+       CompressPopup* __pCompressProgressPopup;
+       AttachListPopup* __pAttachPopup;
+       Tizen::Base::Runtime::Thread* __pWorkerThread;
+       Tizen::Base::String __pSelectFilePath;
+       int __remainSizeBytes;
+       int __defaultPageDuration;
+       Tizen::Base::Collection::ArrayList* __pSelectedFilesQueue;
+};
+
+#endif // _MSG_MESSAGE_COMPOSE_PANEL_H_
diff --git a/inc/MsgMessageData.h b/inc/MsgMessageData.h
new file mode 100644 (file)
index 0000000..4cdd2ee
--- /dev/null
@@ -0,0 +1,185 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgMessageData.h\r
+ * @brief              This is the header file for the %MessageData class.\r
+ *\r
+ * This header file contains the declarations of the %MessageData class.\r
+ */\r
+#ifndef _MSG_MESSAGE_DATA_H_\r
+#define _MSG_MESSAGE_DATA_H_\r
+\r
+#include <msg_storage_types.h>\r
+\r
+#include "MsgBaseData.h"\r
+\r
+namespace Tizen { namespace Base { namespace Collection\r
+{\r
+class ArrayList;\r
+}}};\r
+namespace Tizen { namespace Graphics\r
+{\r
+class Bitmap;\r
+}};\r
+class MessageComposeData;\r
+/**\r
+ * @class              MessageData\r
+ *\r
+ * Class MessageData hold minimum information for a single message.\r
+ */\r
+\r
+class MessageData\r
+       : public BaseData\r
+{\r
+public:\r
+       /**\r
+        * Default constructor for this class.\r
+        */\r
+       MessageData(void);\r
+\r
+       /**\r
+        * Default destructor for this class.\r
+        */\r
+       virtual ~MessageData(void);\r
+\r
+       /**\r
+        * 2nd phase constructor\r
+        */\r
+       result Construct(msg_struct_t pMessageInfo, bool mmsDetailInfo = false);\r
+       result Construct(MessageComposeData& compseData);\r
+\r
+\r
+       // Form Base class\r
+       BaseData* CloneN(void);\r
+       int GetEntryId(void) const;\r
+       int GetUnreadCount(void) const;\r
+       const Tizen::Base::String& GetDisplayName(void) const;\r
+       const Tizen::Base::String& GetMessageText(void) const;\r
+       int GetMessageType(void) const;\r
+       const Tizen::Base::String& GetTimeStamp(void) const;\r
+       const Tizen::Base::String& GetGroupName(void) const;\r
+       const int GetDraftMessageCount(void) const;\r
+       DataType GetDataType(void);\r
+\r
+       // New API\r
+       /**\r
+        * Checkout message is sent or receive. This is an synchronous API.\r
+        *\r
+        * @return bool         - true, In case of sent message and false in case of receive message.\r
+        *\r
+        */\r
+       bool IsSent(void) const;\r
+\r
+       /**\r
+        * Checkout message is read or unread. This is an synchronous API.\r
+        *\r
+        * @return bool         - true, In case unread message else false.\r
+        *\r
+        */\r
+       bool IsUnRead(void) const;\r
+\r
+       /**\r
+        *  Return true in case of fail message\r
+        */\r
+       bool IsSentFail(void) const;\r
+\r
+       /**\r
+        *  Return true in case of message in sending state\r
+        */\r
+       bool IsSending(void) const;\r
+\r
+       /**\r
+        *  return true in case of MMS message\r
+        */\r
+       bool IsMms(void) const;\r
+\r
+       /**\r
+        *  Get recipient address list\r
+        */\r
+       const Tizen::Base::Collection::ArrayList* GetAddressList(void) const;\r
+\r
+       /**\r
+        *  Get Deafult thumbnail bitmap for current MMS message. Return null in case there\r
+        *  is no valid thumnail image.\r
+        */\r
+       Tizen::Graphics::Bitmap* GetThumbnail(void);\r
+\r
+       /**\r
+        *  Get Subject text in case of MMS\r
+        */\r
+       const Tizen::Base::String& GetSubject(void) const;\r
+\r
+       /**\r
+        *  Get attachement count.\r
+        */\r
+       int GetAttachmentCount(void) const;\r
+\r
+       /**\r
+        *  Get attachement list array, List content attachment path\r
+        */\r
+       const Tizen::Base::Collection::ArrayList* GetAttachList(void) const;\r
+\r
+       /**\r
+        *  Get MMS slide page count\r
+        */\r
+       int GetPageCount(void) const;\r
+\r
+       /**\r
+        *  Get Page list array. It hold object of MmsPageData.\r
+        */\r
+       const Tizen::Base::Collection::ArrayList* GetPageList(void) const;\r
+\r
+       /**\r
+        *  Get Message ThreadId\r
+        */\r
+       int GetThreadId(void) const;\r
+\r
+private:\r
+       result InitAddrListDisplayName(msg_struct_t pMessageInfo);\r
+       result InitMessageBody(msg_struct_t pMessageInfo);\r
+       result InitTimeStampGroupName(void);\r
+       result InitMmsData(msg_struct_t pMessageInfo, bool mmsDetailInfo);\r
+       Tizen::Base::String GetMediaPath(msg_struct_t pMediaInfo) const;\r
+       //! To prevent copy constructor and assignment\r
+       MessageData(const MessageData& rhs);\r
+       MessageData& operator =(const MessageData& rhs);\r
+\r
+private:\r
+       //! Message entry information\r
+       int __messageId;\r
+       int __threadId;\r
+       int __folderId;\r
+       int __messageType;\r
+       int __displayTime;\r
+       int __networkStatus;\r
+       bool __isRead;\r
+       int __messageDirection;\r
+       Tizen::Base::Collection::ArrayList* __pAddressList;\r
+       Tizen::Base::String __displayName;\r
+       Tizen::Base::String __messageBody;\r
+       Tizen::Base::String __groupName;\r
+       Tizen::Base::String __timeStamp;\r
+       //! MMS related\r
+       int __attachmentCount;\r
+       Tizen::Base::String __thumbnailPath;\r
+       Tizen::Graphics::Bitmap* __pThumbnailBitmap;\r
+       Tizen::Base::String __subjectStr;\r
+       Tizen::Base::Collection::ArrayList* __pAttachList;\r
+       Tizen::Base::Collection::ArrayList* __pPageList;\r
+};\r
+\r
+#endif // _MSG_MESSAGE_DATA_H_\r
diff --git a/inc/MsgMessagePresentationModel.h b/inc/MsgMessagePresentationModel.h
new file mode 100644 (file)
index 0000000..a5c850a
--- /dev/null
@@ -0,0 +1,179 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgMessagePresentationModel.h\r
+ * @brief              This is the header file for the %MessagePresentationModel class.\r
+ *\r
+ * This header file contains the declarations of the %MessagePresentationModel class.\r
+ */\r
+#ifndef _MSG_MESSAGE_PRESENTATION_MODEL_H_\r
+#define _MSG_MESSAGE_PRESENTATION_MODEL_H_\r
+\r
+#include <msg_types.h>\r
+\r
+#include <FBaseTypes.h>\r
+\r
+#include "MsgBasePresentationModel.h"\r
+#include "MsgTypes.h"\r
+\r
+class MmsManager;\r
+class SmsManager;\r
+\r
+\r
+namespace Tizen { namespace Base { namespace Collection\r
+{\r
+class ArrayList;\r
+class IList;\r
+}}};\r
+namespace Tizen { namespace Social\r
+{\r
+class Addressbook;\r
+}};\r
+class MessageComposeData;\r
+/**\r
+ * @class              MessagePresentationModel\r
+ *\r
+ * This class interact with SLP layer and use to send/Save SMS/MMS\r
+ */\r
+class MessagePresentationModel\r
+       : public BasePresentationModel\r
+{\r
+public:\r
+       /**\r
+        *  Allocation method for this class\r
+        *\r
+        *  @param      Take no argument.\r
+        *\r
+        *  @return             Return instance of this class\r
+        *\r
+        */\r
+       static MessagePresentationModel* GetInstance(void);\r
+\r
+       /**\r
+        * search contact.\r
+        *\r
+        * @inputText - contact name or number.\r
+        */\r
+       void SearchContact(const Tizen::Base::String& inputText);\r
+\r
+       /**\r
+        * get search contacts count.\r
+        *\r
+        * @return  int - returns search contact count.\r
+        */\r
+       int GetContactsCount(void);\r
+\r
+       /**\r
+        *get contact name at index.\r
+        *\r
+        * @index       - index to get contact name.\r
+        * @return  String - return contact name.\r
+        */\r
+       Tizen::Base::String GetContactNameAt(int index);\r
+\r
+       /**\r
+        *get contact number at index.\r
+        *\r
+        * @index       - index to get contact number.\r
+        * @return  String - return contact number.\r
+        */\r
+       Tizen::Base::String GetContactNumberAt(int index);\r
+\r
+       /**\r
+        * Reply SMS for given thread\r
+        *\r
+        * @msgText             - Text has to be sent by SMS\r
+        * @threadId    - Thread ID  which given text send as SMS.\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse SendMessage(const MessageComposeData& composeData, int threadId);\r
+\r
+       /**\r
+        * Send SMS to given recipients list.\r
+        *\r
+        * @msgText             - Text has to be sent by SMS\r
+        * @addressList - recipients list\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse SendMessage(const MessageComposeData& composeData, const Tizen::Base::Collection::IList& addressList, int& threadId);\r
+\r
+       /**\r
+        * Reply SMS for given thread\r
+        *\r
+        * @msgText             - Text has to be sent by SMS\r
+        * @threadId    - Thread ID  which given text send as SMS.\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse SaveMessage(const MessageComposeData& composeData, int threadId);\r
+\r
+       /**\r
+        * Send SMS to given recipients list.\r
+        *\r
+        * @msgText             - Text has to be sent by SMS\r
+        * @addressList - recipients list\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse SaveMessage(const MessageComposeData& composeData, const Tizen::Base::Collection::IList& addressList);\r
+\r
+       /**\r
+        * Resend message\r
+        *\r
+        * @messageId - message id to resend.\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse ReSendMessage(int messageId, bool ismms);\r
+\r
+private:\r
+       /**\r
+        * Default constructor for this class.\r
+        */\r
+       MessagePresentationModel(void);\r
+\r
+       /**\r
+        * Default destructor for this class\r
+        */\r
+       virtual ~MessagePresentationModel(void);\r
+\r
+       /**\r
+        *  Second phase construction\r
+        */\r
+       result Construct(void);\r
+       static void CreateInstance(void);\r
+       static void DestroyInstance(void);\r
+       void UpdateSearchContactList(const Tizen::Base::Collection::IList& searchResultList, const Tizen::Base::String& searchNumber = L"");\r
+\r
+private:\r
+       //! To prevent copy constructor and assignment\r
+       MessagePresentationModel(const MessagePresentationModel& rhs);\r
+       MessagePresentationModel& operator =(const MessagePresentationModel& rhs);\r
+\r
+private:\r
+       static MessagePresentationModel* __pInstance;                //! Self instance for singleton design.\r
+       Tizen::Base::Collection::ArrayList* __pActiveSearchNamesList;\r
+       Tizen::Base::Collection::ArrayList* __pActiveSearchContactNumbersList;\r
+       SmsManager* __pSmsManager;\r
+       MmsManager* __pMmsManger;\r
+       Tizen::Social::Addressbook* __pAddressbook;\r
+\r
+};\r
+\r
+#endif // _MSG_THREAD_PRESENTATION_MODEL_H_\r
diff --git a/inc/MsgMessagesApp.h b/inc/MsgMessagesApp.h
new file mode 100644 (file)
index 0000000..d04d76c
--- /dev/null
@@ -0,0 +1,98 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+/**
+ * @file               MsgMessagesApp.h
+ * @brief              This is the header file for the %MessagesApp class.
+ *
+ * This header file contains the declarations of the %MessagesApp class.
+ */
+#ifndef _MSG_MESSAGES_APP_H_
+#define _MSG_MESSAGES_APP_H_
+
+#include <FApp.h>
+#include <FAppTypes.h>
+#include <FSystem.h>
+#include <FUi.h>
+
+class FacadeManager;
+class MessageComposeData;
+class SceneFactory;
+class ThreadPresentationModel;
+class AddressInfo;
+
+namespace Tizen { namespace Social {
+class Addressbook;
+}};
+
+/**
+ * @class              MessagesApp
+ *
+ * Class MessagesApp  is inherited from UiApp class which provides basic
+ * features necessary to define an UiApp
+ */
+
+class MessagesApp
+       : public Tizen::App::UiApp
+       , public Tizen::App::IAppControlProviderEventListener
+       , public Tizen::System::IScreenEventListener
+{
+public:
+       MessagesApp(void);
+       virtual ~MessagesApp(void);
+       // New API
+       Tizen::Ui::Scenes::SceneId GetInitialScene(void) {return __initialScene;}
+       Tizen::Base::Collection::IList* GetLaunchArgumentsN(void);
+       bool IsAppRunningEmbededMode(void){return __isAppRunningEmbededMode;}
+       void SetAppEmbededMode(bool mode){ __isAppRunningEmbededMode = mode;}
+       void ExitApp(Tizen::App::AppCtrlResult result = Tizen::App::APP_CTRL_RESULT_SUCCEEDED);
+       /**
+        *  Allocator method , create instance of this class
+        */
+       static Tizen::App::UiApp* CreateInstance(void);
+
+protected:
+       // New API
+       void HandleAppControlRequestReceived(const Tizen::Base::String& operationId, Tizen::Base::Collection::IList* pArgsList);
+       void UpdateRecipients(MessageComposeData& composeDta, const Tizen::Base::String& recipientsStr);
+       // Form base class
+       bool OnAppInitialized(void);
+       bool OnAppInitializing(Tizen::App::AppRegistry& appRegistry);
+       bool OnAppTerminating(Tizen::App::AppRegistry& appRegistry, bool forcedTermination = false);
+       bool OnAppWillTerminate(void);
+       void OnBackground(void);
+       void OnForeground(void);
+       void OnBatteryLevelChanged(Tizen::System::BatteryLevel batteryLevel);
+       void OnLowMemory(void);
+       //IAppControlProviderEventListener
+       void OnAppControlRequestReceived(RequestId reqId, const Tizen::Base::String& operationId, const Tizen::Base::String* pDataType, const Tizen::Base::String* pUriScheme, const Tizen::Base::Collection::IMap* pArgs);
+       // Form IScreenEventListener
+       void OnScreenOn(void);
+       void OnScreenOff(void);
+       void GetRecipientName(AddressInfo& addressInfo, const Tizen::Base::String& strPhoneNumber);
+
+private:
+       RequestId __pClientAppRequestId;
+       Tizen::App::AppCtrlResult __appCntlResult;
+       bool __isApplicationRunning;
+       bool __isAppRunningEmbededMode;
+       FacadeManager* __pFacadeManager;
+       Tizen::Social::Addressbook* __pAddressBook;
+       Tizen::Ui::Scenes::SceneId __initialScene;
+       Tizen::Base::Collection::ArrayList* __pLaunchArgs;
+};
+
+#endif //_MSG_MESSAGES_APP_H_
diff --git a/inc/MsgMmsDetailForm.h b/inc/MsgMmsDetailForm.h
new file mode 100644 (file)
index 0000000..36f73ff
--- /dev/null
@@ -0,0 +1,197 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgMmsDetailForm.h\r
+ * @brief              This is the header file for the %MmsDetailForm class.\r
+ *\r
+ * This header file contains the declarations of the %MmsDetailForm class.\r
+ */\r
+#ifndef _MSG_MMS_DETAIL_FORM_H_\r
+#define _MSG_MMS_DETAIL_FORM_H_\r
+\r
+#include <FMediaIPlayerEventListener.h>\r
+#include <FUiCtrlIGalleryEventListener.h>\r
+#include <FUiCtrlIGalleryItemProvider.h>\r
+#include <FUiIAdjustmentEventListener.h>\r
+\r
+#include "MsgBaseForm.h"\r
+\r
+namespace Tizen { namespace Media\r
+{\r
+class Player;\r
+}}\r
+\r
+namespace Tizen { namespace Ui { namespace Controls\r
+{\r
+class Progress;\r
+class ScrollPanel;\r
+class Slider;\r
+class TextBox;\r
+}}};\r
+\r
+class AttachListPanel;\r
+class AttachementSavePopup;\r
+class MessageData;\r
+\r
+/**\r
+ * @class              MmsDetailForm\r
+ *\r
+ * Class MmsDetailForm  displays MMS presentation slide.\r
+ */\r
+\r
+class MmsDetailForm\r
+       : public BaseForm\r
+       , public Tizen::Base::Runtime::ITimerEventListener\r
+       , public Tizen::Media::IPlayerEventListener\r
+       , public Tizen::Ui::IAdjustmentEventListener\r
+       , public Tizen::Ui::IOrientationEventListener\r
+       , public Tizen::Ui::ITouchEventListener\r
+       , public Tizen::Ui::Controls::IGalleryItemProvider\r
+       , public Tizen::Ui::Scenes::ISceneEventListener\r
+{\r
+public:\r
+       MmsDetailForm(void);\r
+       virtual ~MmsDetailForm(void);\r
+       bool Initialize(void);\r
+\r
+private:\r
+       enum SlideType\r
+       {\r
+               ImageSlide,\r
+               VideoSlide,\r
+               AudioSlide,\r
+               AudioImageSlide,\r
+               AttachmentSlide,\r
+               TextSlide,\r
+               SubjectSlide,\r
+       };\r
+protected:\r
+       // From From\r
+       virtual result OnInitializing(void);\r
+       virtual result OnTerminating(void);\r
+\r
+       // From IActionEventListener\r
+       void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);\r
+\r
+       // From ISceneEventListener\r
+       virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);\r
+       virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);\r
+\r
+       // Orientation listener\r
+       virtual void OnOrientationChanged(const Tizen::Ui::Control& source, Tizen::Ui::OrientationStatus orientationStatus);\r
+\r
+       // Back event listener.\r
+       void OnFormBackRequested(Tizen::Ui::Controls::Form& source);\r
+\r
+       // From base class\r
+       void OnIntializeFooter(Tizen::Ui::Controls::Footer& footer);\r
+       void OnIntializeHeader(Tizen::Ui::Controls::Header& header);\r
+       void OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs);\r
+\r
+       //IGalleryItemProvider\r
+       virtual Tizen::Ui::Controls::GalleryItem* CreateItem(int index);\r
+       virtual bool DeleteItem(int index, Tizen::Ui::Controls::GalleryItem* pItem);\r
+       virtual int GetItemCount(void);\r
+\r
+       //ITimerEventListner\r
+       void OnTimerExpired(Tizen::Base::Runtime::Timer& timer);\r
+       bool IsTimerExpired() const {return false;};\r
+\r
+       //IAdjustmentEventListener\r
+       virtual void OnAdjustmentValueChanged(const Tizen::Ui::Control& source, int adjustment);\r
+\r
+       // IPlayerEventListener\r
+       virtual void OnPlayerOpened(result r) {};\r
+       virtual void OnPlayerEndOfClip(void) {};\r
+       virtual void OnPlayerBuffering(int percent) {};\r
+       virtual void OnPlayerErrorOccurred(Tizen::Media::PlayerErrorReason r) {};\r
+       virtual void OnPlayerInterrupted(void) {};\r
+       virtual void OnPlayerReleased(void) {};\r
+       virtual void OnPlayerSeekCompleted(result r) {};\r
+\r
+       // ITouchEventListener\r
+       virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};\r
+       virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};\r
+       virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};\r
+       virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);\r
+       virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};\r
+\r
+private:\r
+       void SetFooter(void);\r
+       bool IsTextExist(int slideIndex);\r
+       void StartSlideShow(void);\r
+       void PlaySlideShow(void);\r
+       void PauseSlideShow(void);\r
+       void UpdatePlayButton(void);\r
+       void UpdateMmsBodyText(void);\r
+       void UpdateSlideNumber(int currentSlideNumber);\r
+       void UpdateTimeElapsedLabel(int timeElapsed);\r
+       void BlockPopup(const Tizen::Base::String& phoneNumber);\r
+       void UnBlockPhoneNumber(const Tizen::Base::String& phoneNumber);\r
+       void ShowMessageDetails(void);\r
+       void ShowVolumePopup(void);\r
+       void ShowDeletePopup(void);\r
+       void ShowMoreContextMenu(void);\r
+       void ShowContactContextMenu(void){};\r
+       int GetTimeToChangeslide(int slideNumber);\r
+       enum SlideType GetSlideType(int slideNumber);\r
+       void UpdateForm(enum SlideType);\r
+       result StartVideo(void){return null;};\r
+       result StartAudio(void){return null;};\r
+       void Stop(void){};\r
+       void Pause(void){};\r
+       Tizen::Graphics::Bitmap* GetIconN(const Tizen::Base::String& filePath) const;\r
+\r
+private:\r
+       // Member variable.\r
+       MessageData* __pMessageData;\r
+       AttachListPanel* __pMsgAttachListPanel;\r
+       Tizen::Ui::Scenes::SceneId __previousSceneId;\r
+       Tizen::Base::Collection::ArrayList* __pAttachFileArray;\r
+       Tizen::Ui::Controls::Gallery* __pGallery;\r
+       Tizen::Ui::Controls::TextBox* __pMmsTextBox;\r
+       Tizen::Ui::Controls::Panel* __pPlayControlPanel;\r
+       Tizen::Ui::Controls::Button* __pPreviousButton;\r
+       Tizen::Ui::Controls::Button* __pPlayPausebutton;\r
+       Tizen::Ui::Controls::Button* __pNextbutton;\r
+       Tizen::Ui::Controls::Progress* __pProgress;\r
+       Tizen::Ui::Controls::Label* __pTimeElapsedLabel;\r
+       Tizen::Ui::Controls::Label* __pPageNumberLabel;\r
+       Tizen::Ui::Controls::Label* __pAttachFilesInfoLabel;\r
+       Tizen::Ui::Controls::Popup* __pMessageDetailsPopup;\r
+       Tizen::Ui::Controls::Popup* __pDeletePopup;\r
+       Tizen::Ui::Controls::Popup* __pVolumePopup;\r
+       Tizen::Ui::Controls::Popup* __pBlockPopup;\r
+       Tizen::Ui::Controls::ContextMenu* __pContextMenu;\r
+       Tizen::Ui::Controls::ContextMenu* __pContextMenuText;\r
+       Tizen::Ui::Controls::Slider* __pMediaVolumeSlider;\r
+       Tizen::Ui::Controls::OverlayRegion* __pOverlay;\r
+       Tizen::Media::Player* __pPlayer;\r
+       AttachementSavePopup* __pSaveAttachmentsPopup;\r
+       int* __pPageDuration;\r
+       bool __bIsPlaying;\r
+       int __totalDuration;\r
+       int __timeElapsed;\r
+       int __pageCountOfCurrentMessageData;\r
+       int __currentPage;\r
+       Tizen::Base::Runtime::Timer* __pTimer;\r
+       Tizen::Base::Runtime::Timer* __pTimerforVolumePopup;\r
+       Tizen::Base::Runtime::Timer* __pTimerForControlBar;\r
+       MmsFormType __mmsFormType;\r
+};\r
+\r
+#endif //_MSG_MMS_DETAIL_FORM_H_\r
diff --git a/inc/MsgMmsManager.h b/inc/MsgMmsManager.h
new file mode 100644 (file)
index 0000000..d7e4db0
--- /dev/null
@@ -0,0 +1,232 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgMmsManager.h\r
+ * @brief              This is the header file for the %MmsManager class.\r
+ *\r
+ * This header file contains the declarations of the %MmsManager class.\r
+ */\r
+#ifndef _MSG_MMS_MANAGER_H_\r
+#define _MSG_MMS_MANAGER_H_\r
+\r
+#include <msg_storage_types.h>\r
+#include <msg_types.h>\r
+#include <msg_transport_types.h>\r
+\r
+#include <FBaseTypes.h>\r
+\r
+#include "MsgTypes.h"\r
+\r
+namespace Tizen { namespace Base { namespace Collection\r
+{\r
+class ArrayList;\r
+class IList;\r
+}}};\r
+\r
+class IMmsEventListener;\r
+class MessageComposeData;\r
+class MmsSendSettings;\r
+\r
+/**\r
+ * @class              MsgMmsManager\r
+ *\r
+ * This class interact with SLP layer to send SMS and receive SMS notification.\r
+ */\r
+\r
+class MmsManager\r
+{\r
+public:\r
+       /**\r
+        * Default constructor for this class.\r
+        */\r
+       MmsManager(msg_handle_t pMsgHandle);\r
+\r
+       /**\r
+        * Initialise SMS 2nd phase constructor parameter.\r
+        *\r
+        */\r
+       result Construct(void);\r
+\r
+       /**\r
+        * Default destructor for this calss\r
+        */\r
+       virtual ~MmsManager(void);\r
+\r
+       /**\r
+        * Reply SMS for given thread\r
+        *\r
+        * @msgText             - Text has to be sent by SMS\r
+        * @threadId    - Thread ID  which given text send as SMS.\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse SendMessage(const MessageComposeData& mmsComposeData, int threadId, const MmsSendSettings* pMmsSendSetting = null);\r
+\r
+       /**\r
+        * Send SMS to given recipients list.\r
+        *\r
+        * @msgText             - Text has to be sent by SMS\r
+        * @addressList - recipients list\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse SendMessage(const MessageComposeData& mmsData, const Tizen::Base::Collection::IList& addressList, int& msgThreadId, const MmsSendSettings* pMmsSendSetting = null);\r
+\r
+       /**\r
+        *  Save SMS to draft.\r
+        *\r
+        * @msgText             - Text has to be sent by SMS\r
+        * @threadId    - Thread ID  which given text send as SMS.\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse SaveMessage(const MessageComposeData& mmsData, int threadId);\r
+\r
+       /**\r
+        * Save SMS to draft.\r
+        *\r
+        * @msgText             - Text has to be sent by SMS\r
+        * @addressList - recipients list\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse SaveMessage(const MessageComposeData& mmsData, const Tizen::Base::Collection::IList& addressList);\r
+\r
+       /**\r
+        * Add MMS receive observer\r
+        *\r
+        * @param eventListener - Listener listening for SMS sent receive events.\r
+        *\r
+        * @retrun result               - E_SUCCESS, In case of successfully add listener in event list.\r
+        */\r
+       result AddMmsEventListener(const IMmsEventListener& eventListener);\r
+\r
+       /**\r
+        * Remove MMS receive observer\r
+        *\r
+        * @param eventListener - Listener listening for SMS sent receive events.\r
+        *\r
+        * @retrun result               - E_SUCCESS, In case of successfully remove listener in event list.\r
+        *\r
+        */\r
+       result RemoveMmsEventListener(const IMmsEventListener& eventListener);\r
+\r
+       /**\r
+        * Set recipient list in message object.\r
+        *\r
+        * @param       messageId     - message Id which need to be sent.\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse ReSendMessage(int messageId);\r
+\r
+\r
+protected:\r
+       /**\r
+        * static call back from message daemon in case of incomming MMS message\r
+        *\r
+        * @param pHandle       - message service handle.\r
+        * @param msg                   - Pointer to incomming mesage.\r
+        * @param pUserParam    - User given parameter.\r
+        *\r
+        * @return void\r
+        */\r
+       static void IncommingMmsCallback(msg_handle_t pHandle, msg_struct_t msg, void* pUserParam);\r
+\r
+       /**\r
+        *  Incoming message notification, call by IncommingMmsCallback()\r
+        *\r
+        * @param   pHandle - Message service handle.\r
+        * @param       pMsg    - pointer to receive message.\r
+        *\r
+        * @return  void\r
+        */\r
+       void IncommingMms(msg_handle_t pHandle, msg_struct_t pMsg);\r
+\r
+       /**\r
+        * Set message type.\r
+        *\r
+        * @param       pMsgInfo - message which has to be sent using message service handle.\r
+        * @param       msgText  - Text to be attached with message.\r
+        * @param       threadId - Which thread message has to be sent.\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse CreateMms(msg_struct_t pMsgInfo, const MessageComposeData& mmsData, int threadId);\r
+\r
+       /**\r
+        * Set message type.\r
+        *\r
+        * @param       pMsgInfo    - message which has to be sent using message service handle.\r
+        * @param       msgText     - Text to be attached with message.\r
+        * @param       addressList - To whom message has to be sent\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse CreateMms(msg_struct_t pMsgInfo, const MessageComposeData& mmsData, const Tizen::Base::Collection::IList& addressList);\r
+\r
+       /**\r
+        * Set message type.\r
+        *\r
+        * @param       pMsgInfo    - message which has to be sent using message service handle.\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse SetMessageType(msg_struct_t pMsgInfo);\r
+\r
+       /**\r
+        * Set message body.\r
+        *\r
+        * @param       pMsgInfo    - message which has to be sent using message service handle.\r
+        * @param       msgText     - message text which has to be sent.\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse SetMmsData(msg_struct_t pMmsData, const MessageComposeData& mmsComposeData);\r
+\r
+       /**\r
+        * Set recipient list in message object.\r
+        *\r
+        * @param       pMsgInfo - message which has to be sent using message service handle.\r
+        * @param       threadId - Attached list recipients  for given thread ID.\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse SetRecipientList(msg_struct_t pMsgInfo, int threadId);\r
+\r
+       /**\r
+        * Set recipient list in message object.\r
+        *\r
+        * @param       pMsgInfo        - message which has to be sent using message service handle.\r
+        * @param       addressList     - List of recipients.\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse SetRecipientList(msg_struct_t pMsgInfo, const Tizen::Base::Collection::IList& addressList);\r
+       MsgResponse SetSmilHeader(msg_struct_t pMmsData);\r
+\r
+private:\r
+       //! To prevent copy constructor and assignment\r
+       MmsManager(const MmsManager&);\r
+       MmsManager& operator =(const MmsManager& msg);\r
+\r
+private:\r
+       msg_handle_t __pMsgHandle;          /*! Not own, Message service handler. */\r
+       Tizen::Base::Collection::ArrayList* __pMmsEventListener; /*! MMS event listener array. */\r
+};\r
+\r
+#endif // _MSG_SMS_MANAGER_H_\r
diff --git a/inc/MsgMmsReceiveSettings.h b/inc/MsgMmsReceiveSettings.h
new file mode 100644 (file)
index 0000000..575d2e1
--- /dev/null
@@ -0,0 +1,65 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgMmsReceiveSettings.h\r
+ * @brief              This is the header file for the %MmsReceiveSettings class.\r
+ *\r
+ * This header file contains the declarations of the %MmsReceiveSettings class.\r
+ */\r
+#ifndef _MSG_MMS_RECEIVE_SETTINGS_H_\r
+#define _MSG_MMS_RECEIVE_SETTINGS_H_\r
+\r
+#include <FBaseObject.h>\r
+#include <msg_storage_types.h>\r
+\r
+/**\r
+ * @class              MmsReceiveSettings\r
+ *\r
+ * Class MmsReceiveSettings keeps MMS receiving setting details.\r
+ */\r
+\r
+class MmsReceiveSettings\r
+       : public Tizen::Base::Object\r
+{\r
+public:\r
+       /**\r
+        * Default constructor for this class.\r
+        */\r
+       MmsReceiveSettings(msg_struct_t pMmsRecvSetting);\r
+\r
+       /**\r
+        * Default destructor for this class.\r
+        */\r
+       ~MmsReceiveSettings(void);\r
+\r
+       msg_struct_t GetMmsRecvOpt(void);\r
+       // For MMS\r
+       int GetMmsHomeNetworkRetrieveType(void);\r
+       int GetMmsForigenNetworkRetrieveType(void);\r
+       bool IsMmsReadReportRequestOn(void);\r
+\r
+       result SetMmsHomeNetworkRetrieveType(int newType);\r
+       result SetMmsForigenNetworkRetrieveType(int newType);\r
+       result SetMmsReadReportRequestStatus(bool status);\r
+\r
+private:\r
+       /// MMS receiving setting structure pointer\r
+       /// Own\r
+       msg_struct_t __pMmsRecvSetting;\r
+\r
+};\r
+#endif // _MSG_THREAD_ENTRY_H_\r
diff --git a/inc/MsgMmsSendSettings.h b/inc/MsgMmsSendSettings.h
new file mode 100644 (file)
index 0000000..09603e8
--- /dev/null
@@ -0,0 +1,69 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgMmsSendSettings.h\r
+ * @brief              This is the header file for the %MmsSendSettings class.\r
+ *\r
+ * This header file contains the declarations of the %MmsSendSettings class.\r
+ */\r
+#ifndef _MSG_MMS_SEND_SETTINGS_H_\r
+#define _MSG_MMS_SEND_SETTINGS_H_\r
+\r
+#include <FBaseObject.h>\r
+#include <msg_storage_types.h>\r
+\r
+/**\r
+ * @class              MmsSendSettings\r
+ *\r
+ * Class MmsSendSettings keeps MMS sending settings details.\r
+ */\r
+\r
+class MmsSendSettings\r
+       : public Tizen::Base::Object\r
+{\r
+public:\r
+       /**\r
+        * Default constructor for this class.\r
+        */\r
+       MmsSendSettings(msg_struct_t pMmsSendSetting);\r
+\r
+       /**\r
+        * Default destructor for this class.\r
+        */\r
+       ~MmsSendSettings(void);\r
+\r
+       msg_struct_t GetMmsSendOpt(void);\r
+       // For MMS\r
+       bool IsMmsDeliveryReportOn(void) const;\r
+       bool IsMmsReadReportSendOn(void) const;\r
+       int GetMmsCreationModeType(void) const;\r
+\r
+       result SetMmsDeliveryReportStatus(bool status);\r
+       result SetMmsReadReportSendStatus(bool status);\r
+       result SetMmsCreationModeType(int newType);\r
+\r
+private:\r
+       /// MMS sending setting structure pointer\r
+       /// Own\r
+       msg_struct_t __pMmsSendSetting;\r
+\r
+};\r
+\r
+\r
+\r
+\r
+#endif // _MSG_MMS_SEND_SETTINGS_H_\r
diff --git a/inc/MsgMultimediaSettingsForm.h b/inc/MsgMultimediaSettingsForm.h
new file mode 100644 (file)
index 0000000..820a665
--- /dev/null
@@ -0,0 +1,118 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgMutimediaSettingsForm.h\r
+ * @brief              This is the header file for the %MutimediaSettingsForm class.\r
+ *\r
+ * This header file contains the declarations of the %MutimediaSettingsForm class.\r
+ */\r
+#ifndef _MSG_MULTIMEDIA_SETTINGS_FORM_H_\r
+#define _MSG_MULTIMEDIA_SETTINGS_FORM_H_\r
+\r
+#include <FUiCtrlTableViewTypes.h>\r
+#include <FUiCtrlIGroupedTableViewItemProvider.h>\r
+#include <FUiCtrlIGroupedTableViewItemEventListener.h>\r
+#include <FUiScenesISceneEventListener.h>\r
+\r
+#include "MsgBaseForm.h"\r
+\r
+class SettingItemsList;\r
+\r
+enum MutimediaSettingFormType\r
+{\r
+       MULTIMEDIA_SETTING_MESSAGES_FORM,\r
+       MULTIMEDIA_SETTING_RECEIVE_OPTIONS_FORM,\r
+       MULTIMEDIA_SETTING_READ_REPORT_FORM\r
+};\r
+/**\r
+ * @class              MutimediaSettingsForm\r
+ *\r
+ * This class represent multimedia setting UI for messaging application and use to save\r
+ * modify multimedia setting details.\r
+ */\r
+\r
+class MutimediaSettingsForm\r
+       : public BaseForm\r
+       , public Tizen::Ui::Controls::IGroupedTableViewItemEventListener\r
+       , public Tizen::Ui::Controls::IGroupedTableViewItemProvider\r
+       , public Tizen::Ui::Scenes::ISceneEventListener\r
+{\r
+\r
+       // Construction\r
+public:\r
+       MutimediaSettingsForm(MutimediaSettingFormType formType);\r
+       virtual ~MutimediaSettingsForm(void);\r
+       bool Initialize(void);\r
+\r
+protected:\r
+       // From From\r
+       result OnInitializing(void);\r
+       result OnTerminating(void);\r
+\r
+       // From base class\r
+       void OnIntializeFooter(Tizen::Ui::Controls::Footer& footer);\r
+       void OnIntializeHeader(Tizen::Ui::Controls::Header& header);\r
+\r
+       // From ISceneEventListener\r
+       virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);\r
+       virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);\r
+\r
+       // Back event listener.\r
+       void OnFormBackRequested(Tizen::Ui::Controls::Form& source);\r
+\r
+       //IGroupedTableViewItemProvider\r
+       virtual int GetGroupCount(void);\r
+       virtual int GetItemCount(int groupIndex);\r
+       virtual Tizen::Ui::Controls::TableViewGroupItem* CreateGroupItem(int groupIndex, int itemWidth);\r
+       virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int groupIndex, int itemIndex, int itemWidth);\r
+       virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);\r
+       virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);\r
+       virtual void UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);\r
+       virtual void UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);\r
+       virtual int GetDefaultItemHeight(void);\r
+       virtual int GetDefaultGroupItemHeight(void);\r
+\r
+       //Tableview event\r
+       virtual void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);\r
+       virtual void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);\r
+       virtual void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated);\r
+\r
+\r
+private:\r
+       Tizen::Ui::Controls::TableViewItem* CreateSettingItem(int groupIndex, int itemIndex, int itemWidth);\r
+       bool InitializeMultimediaSettingItems(void);\r
+       bool InitializMultimediaReceiveSettingItems(void);\r
+       bool InitializMultimediaReadReportSettingItems(void);\r
+       void HandleSettingItemSelection(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItemStatus status);\r
+       void HandleBackNavigation(void);\r
+       bool GetItemCheckStatus(int controlId) const;\r
+       void CheckedRadioGroupItem(int groupIndex, int itemIndex);\r
+       Tizen::Base::String GetStatusItemText(int type) const;\r
+       Tizen::Base::String GetDownloadString(int type) const;\r
+       Tizen::Base::String GetCreationModeString(int type) const;\r
+       void UpdateSettingItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pViewItem);\r
+       void LoadCurrentSettings(void);\r
+       bool GetMmsReceiveStatus(int controlId) const;\r
+       bool GetMmsSendStatus(int controlId) const;\r
+\r
+private:\r
+       MutimediaSettingFormType __settingFormType;\r
+       Tizen::Ui::Controls::GroupedTableView* __pSettingGroupTabledView;\r
+       SettingItemsList* __pSettingItemsArray;\r
+};\r
+\r
+#endif //_MSG_MULTIMEDIA_SETTINGS_FORM_H_\r
diff --git a/inc/MsgOptionPopup.h b/inc/MsgOptionPopup.h
new file mode 100644 (file)
index 0000000..dd7c53a
--- /dev/null
@@ -0,0 +1,113 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgOptionPopup.h\r
+ * @brief              This is the header file for the %MsgOptionPopup class.\r
+ *\r
+ * This header file contains the declarations of the %MsgOptionPopup class.\r
+ */\r
+#ifndef _MSG_OPTION_POPUP_H_\r
+#define _MSG_OPTION_POPUP_H_\r
+\r
+#include <FApp.h>\r
+#include <FUi.h>\r
+\r
+#include "MsgBaseCustomPopup.h"\r
+#include "MsgIDeleteEventListener.h"\r
+#include "MsgIPopupEventListener.h"\r
+\r
+class ConversationData;\r
+\r
+class OptionPopup\r
+       : public BaseCustomPopup\r
+       , public Tizen::Ui::IActionEventListener\r
+       , public Tizen::Ui::Controls::IListViewItemEventListener\r
+       , public Tizen::Ui::Controls::IListViewItemProvider\r
+       , public IDeleteEventListener\r
+{\r
+\r
+public:\r
+       OptionPopup(Tizen::Ui::Control& parentCntl, ConversationData* pConvData);\r
+       virtual ~OptionPopup(void);\r
+\r
+       result Construct(int threadId, int selectedIndex);\r
+\r
+       // IListViewItemEventListener\r
+       virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);\r
+       virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status);\r
+       virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction);\r
+       virtual void OnListViewItemLongPressed(Tizen::Ui::Controls::ListView& listView, int index, int elementId, bool& invokeListViewItemCallback);\r
+\r
+       //IListViewItemProvider\r
+       virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int index, int itemWidth);\r
+       virtual bool DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);\r
+       virtual int GetItemCount(void);\r
+\r
+       // From IMsgDeleteEventListener\r
+       void OnDeleteStart(int totalCount){};\r
+       void OnDeleteUpdate(int deleteCount, int totalCount){};\r
+       void OnDeleteComplete(int errCode, Tizen::Base::Object* pThreadObject);\r
+\r
+       // From IActionEventListener\r
+       void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);\r
+\r
+       /**\r
+        * Show message details\r
+        * @return void\r
+        */\r
+       void ShowMessageDetails(void);\r
+\r
+protected:\r
+       void InitalizeMessageOptionList(void);\r
+\r
+private:\r
+       enum ListElementId\r
+       {\r
+               LIST_ELEMENT_DELETE,\r
+               LIST_ELEMENT_COPY_MESSAGE_TEXT,\r
+               LIST_ELEMENT_PROTECTION_ON,\r
+               LIST_ELEMENT_COPY_TO_SIM,\r
+               LIST_ELEMENT_SAVE_ATTACHMENT,\r
+               LIST_ELEMENT_FORWARD,\r
+               LIST_ELEMENT_VIEW_MESSAGE_DETAILS,\r
+       };\r
+       class ListItemObject\r
+               : public Tizen::Base::Object\r
+       {\r
+       public:\r
+               ListItemObject(const Tizen::Base::String& itemText, int elementId)\r
+                       : __itemText(itemText)\r
+                       , __elementId(elementId)\r
+               {};\r
+               ~ListItemObject(void){}\r
+               const Tizen::Base::String& GetItemText(void) const { return __itemText;}\r
+               int GetItemId(void) const { return __elementId;}\r
+       private:\r
+               Tizen::Base::String __itemText;\r
+               int __elementId;\r
+       };\r
+       // Parent control\r
+       Tizen::Ui::Control& __pParentCnt;\r
+       //! Selected message data\r
+       ConversationData* __pConvData;\r
+       //! Message option list\r
+       Tizen::Base::Collection::ArrayList* __pOptionList;\r
+       // Message details popup.\r
+       Tizen::Ui::Controls::Popup* __pPopup;\r
+};\r
+\r
+#endif // _MSG_OPTION_POPUP_H_\r
diff --git a/inc/MsgPhoneNumberListPopup.h b/inc/MsgPhoneNumberListPopup.h
new file mode 100644 (file)
index 0000000..6735720
--- /dev/null
@@ -0,0 +1,61 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgPhoneNumberListPopup.h\r
+ * @brief              This is the header file for the %PhoneNumberListPopup class.\r
+ *\r
+ * This header file contains the declarations of the %PhoneNumberListPopup class.\r
+ */\r
+#ifndef _MSG_PHONENUMBER_LIST_POPUP_H_\r
+#define _MSG_PHONENUMBER_LIST_POPUP_H_\r
+\r
+#include <FApp.h>\r
+#include <FUi.h>\r
+\r
+class IPopupEventListener;\r
+\r
+class PhoneNumberListPopup\r
+       : public Tizen::Ui::Controls::Popup\r
+       , public Tizen::Ui::IActionEventListener\r
+       , public Tizen::Ui::Controls::IListViewItemEventListener\r
+       , public Tizen::Ui::Controls::IListViewItemProvider\r
+{\r
+\r
+public:\r
+       PhoneNumberListPopup(IPopupEventListener& listener);\r
+       virtual ~PhoneNumberListPopup(void);\r
+       result Construct(Tizen::Base::Collection::ArrayList* pPhoneNumberList);\r
+       void OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs);\r
+\r
+       // IListViewItemEventListener\r
+       virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);\r
+       virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status);\r
+       virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction);\r
+       virtual void OnListViewItemLongPressed(Tizen::Ui::Controls::ListView& listView, int index, int elementId, bool& invokeListViewItemCallback);\r
+       //IListViewItemProvider\r
+       virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int index, int itemWidth);\r
+       virtual bool DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);\r
+       virtual int GetItemCount(void);\r
+       // From IActionEventListener\r
+       void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);\r
+\r
+private:\r
+       Tizen::Base::Collection::ArrayList* __pPhoneNumberList;\r
+       IPopupEventListener& __popupListener;\r
+};\r
+\r
+#endif /* _MSG_PHONENUMBER_LIST_POPUP_H_ */\r
diff --git a/inc/MsgProgressPopup.h b/inc/MsgProgressPopup.h
new file mode 100644 (file)
index 0000000..9fdb58d
--- /dev/null
@@ -0,0 +1,100 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgProgressPopup.h\r
+ * @brief              This is the header file for the %MsgProgressPopup class.\r
+ *\r
+ * This header file contains the declarations of the %MsgProgressPopup class.\r
+ */\r
+#ifndef _MSG_PROGRESS_POPUP_H_\r
+#define _MSG_PROGRESS_POPUP_H_\r
+\r
+#include <FUiCtrlPopup.h>\r
+\r
+namespace Tizen { namespace Ui { namespace Controls\r
+{\r
+class Label;\r
+class Progress;\r
+}}}\r
+\r
+/**\r
+ * @class              MsgProgressPopup\r
+ *\r
+ * This class is used to display progress information.\r
+ */\r
+\r
+class MsgProgressPopup\r
+       : public Tizen::Ui::Controls::Popup\r
+{\r
+public:\r
+       //! Constructor\r
+       /**\r
+        * Default constructor for this class\r
+        */\r
+       MsgProgressPopup(void);\r
+\r
+       //! Destructor\r
+       /**\r
+        *  Default destructor for this class.\r
+        */\r
+       virtual ~MsgProgressPopup(void);\r
+\r
+       /**\r
+        *  Second phase constructor\r
+        *\r
+        *  @param minValue             - Progress minimum value.\r
+        *  @param maxValue             - Progress maximum value.\r
+        *\r
+        *  @return     result          - E_SUCCESS in case successful construction else\r
+        *                        E_FAILURE\r
+        */\r
+       result Construct(int minValue, int maxValue, const Tizen::Base::String& strText);\r
+\r
+       /**\r
+        * Update progress information.\r
+        *\r
+        * @param statusInfo - Progress status string.\r
+        *\r
+        * @return void\r
+        */\r
+       void UpdateProgressInfo(const Tizen::Base::String& statusInfo);\r
+\r
+       /**\r
+        * Update progress bar value.\r
+        *\r
+        * @param value - Progress bar value.\r
+        *\r
+        * @return void\r
+        */\r
+       void SetProgressValue(int value);\r
+\r
+       /**\r
+        * Show progress bar popup.\r
+        */\r
+       void ShowPopup(void);\r
+\r
+       /**\r
+        * Hide progress bar popup.\r
+        */\r
+       void HidePopup(void);\r
+\r
+private:\r
+       Tizen::Ui::Controls::Label* __pStatusInfo;\r
+       Tizen::Ui::Controls::Progress* __pProgress;\r
+};\r
+\r
+#endif // _MSG_PROGRESS_POPUP_H_\r
diff --git a/inc/MsgRecipientPanel.h b/inc/MsgRecipientPanel.h
new file mode 100644 (file)
index 0000000..2458571
--- /dev/null
@@ -0,0 +1,146 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+/**
+ * @file               MsgPRecipientPanel.h
+ * @brief              This is the header file for the %RecipientPanel class.
+ *
+ * This header file contains the declarations of the %RecipientPanel class.
+ */
+#ifndef _MSG_RECIPIENT_PANEL_H_
+#define _MSG_RECIPIENT_PANEL_H_
+
+#include <FUi.h>
+#include <FAppTypes.h>
+
+namespace Tizen { namespace Social
+{
+class Addressbook;
+}};
+class ISizeChangeEventListener;
+
+class RecipientPanel
+       : public Tizen::Ui::Controls::Panel
+       , public Tizen::App::IAppControlResponseListener
+       , public Tizen::Base::Runtime::IRunnable
+       , public Tizen::Ui::IActionEventListener
+       , public Tizen::Ui::IFocusEventListener
+       , public Tizen::Ui::IKeyEventListener
+       , public Tizen::Ui::ITextEventListener
+       , public Tizen::Ui::Controls::IExpandableEditAreaEventListener
+       , public Tizen::Ui::Controls::IListViewItemEventListener
+       , public Tizen::Ui::Controls::IListViewItemProvider
+       , public Tizen::Ui::Controls::ITokenFilter
+{
+public:
+       RecipientPanel(void);
+       ~RecipientPanel(void);
+       result Construct(const Tizen::Graphics::Rectangle& rectangle);
+       void SetSizeChangeEventListener(const ISizeChangeEventListener& listener);
+       void SetKeypadEventListener(Tizen::Ui::IKeypadEventListener& listener);
+       int GetHeight(void) const;
+       result SetFocus(void);
+       void EnableContactSearch(bool value);
+       int GetRecipientCount(void) const;
+       void SetRecipientList(const Tizen::Base::Collection::IList* pRecipientList);
+       void AddRecipient(const Tizen::Base::String& recipientNumber);
+       Tizen::Base::Collection::ArrayList* GeRecipientNumberListN(void) const;
+       void SetTextSize(int textSize);
+       void ShowKeypad(void);
+       void HideKeypad(void);
+       bool CheckRecipentForToken(bool updateToken = true);
+       bool IsTextForTokenExist(void) const;
+       void EnableValidationOnFocusLost(bool state) { __validateOnFocusLost = state;}
+       bool IsEmptyRecipent(void);
+protected:
+       // Form Base class
+       virtual result OnDraw(void);
+       virtual void OnBoundsChanged(const Tizen::Graphics::Rectangle& oldRect, const Tizen::Graphics::Rectangle& newRect);
+       virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+       void OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs);
+       //From IAppControlEventListener
+       virtual void OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData);
+       // Form IExpandableEditAreaEventListener
+       virtual void OnExpandableEditAreaLineAdded(Tizen::Ui::Controls::ExpandableEditArea& source, int newLineCount);
+       virtual void OnExpandableEditAreaLineRemoved(Tizen::Ui::Controls::ExpandableEditArea& source, int newLineCount);
+       // IListViewItemEventListener
+       virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state){};
+       virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status);
+       virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction){};
+       virtual void OnListViewItemLongPressed(Tizen::Ui::Controls::ListView& listView, int index, int elementId, bool& invokeListViewItemCallback){};
+       //IListViewItemProvider
+       virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int index, int itemWidth);
+       virtual bool DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);
+       virtual int GetItemCount(void);
+       // Form ITokenFilter
+       virtual bool ReplaceToken(const Tizen::Base::String& token, Tizen::Base::String& replacement);
+       //From IFocusEventListener
+       virtual void OnFocusGained(const Tizen::Ui::Control& source);
+       virtual void OnFocusLost(const Tizen::Ui::Control& source);
+       //From IKeyEventListener
+       virtual void OnKeyPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
+       virtual void OnKeyReleased(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
+       virtual void OnKeyLongPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode){};
+       //From ITextEventListener
+       virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source){};
+       virtual void OnTextValueChanged(const Tizen::Ui::Control& source);
+       // Form IRunable
+       virtual Tizen::Base::Object* Run(void);
+
+       /**
+        *  Show Message in popup
+        */
+       void ShowMessage(const Tizen::Base::String& message);
+
+       /**
+        * To launch app control
+        */
+       void LaunchContactApp(void);
+       /**
+        * Remove recipient from list on token selection.
+        *
+        * @return void.
+        */
+       void RemoveRecipientFromList(void);
+       void DeleteTokenAt(int tokenIndex);
+       void AddNumberToRecipientList(const Tizen::Base::String& contactNumber);
+       bool IsRecipientExist(const Tizen::Base::String& tokenText) const;
+       bool IsNumberExistRecipientList(const Tizen::Base::String& tokenText) const;
+       bool IsTokenExist(const Tizen::Base::String& tokenName) const;
+       bool IsNumberToken(int tokenIndex) const;
+       void DeleteRecipientAndToken(int index);
+       void UpdateRecipientList(const Tizen::Base::String& phoneNumber, int recipientIndex);
+       void ShowRecipientCount(void);
+       bool IsNeedToValidate(const Tizen::Base::String& tokenText);
+       Tizen::Base::Collection::IList* GetSelectContactListN(const Tizen::Base::Collection::IMap* pResultMap);
+
+private:
+       ISizeChangeEventListener* __pSizeChangeListener;
+       Tizen::Base::String __errorString;
+       Tizen::Ui::Controls::ExpandableEditArea* __pExpandEditArea;
+       Tizen::Ui::Controls::Button* __pContactButton;
+       Tizen::Ui::Controls::Label* __pContactCountLabel;
+       Tizen::Ui::Controls::ListView* __pContactSearchList;
+       Tizen::Base::Collection::ArrayList* __pRecipientAddrList;
+       Tizen::Base::String __inProperlist;
+       Tizen::Social::Addressbook* __pAddressBook;
+       Tizen::Base::Runtime::Thread* __pTokenDeleteThread;
+       int __deleteTokenIndex;
+       bool __validateOnFocusLost;
+       bool __oneTimeFlag;
+};
+
+#endif //_MSG_RECIPIENT_PANEL_H_
diff --git a/inc/MsgResendDeletePopup.h b/inc/MsgResendDeletePopup.h
new file mode 100644 (file)
index 0000000..0ca46df
--- /dev/null
@@ -0,0 +1,77 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgResendDeletePopup.h\r
+ * @brief              This is the header file for the %MsgResendDeletePopup class.\r
+ *\r
+ * This header file contains the declarations of the %MsgResendDeletePopup class.\r
+ */\r
+#ifndef _MSG_RESEND_DELETE_POPUP_H_\r
+#define _MSG_RESEND_DELETE_POPUP_H_\r
+\r
+#include <FUiCtrlButton.h>\r
+#include <FUiCtrlIListViewItemEventListener.h>\r
+#include <FUiCtrlIListViewItemProvider.h>\r
+#include <FUiIActionEventListener.h>\r
+#include <FUiCtrlPopup.h>\r
+\r
+#include "MsgIDeleteEventListener.h"\r
+\r
+class ConversationData;\r
+class IPopupEventListener;\r
+\r
+class MsgResendDeletePopup\r
+       : public Tizen::Ui::Controls::Popup\r
+       , public Tizen::Ui::IActionEventListener\r
+       , public Tizen::Ui::Controls::IListViewItemEventListener\r
+       , public Tizen::Ui::Controls::IListViewItemProvider\r
+       , public IDeleteEventListener\r
+{\r
+\r
+public:\r
+       MsgResendDeletePopup(ConversationData* pConvData, IPopupEventListener& listener);\r
+       virtual ~MsgResendDeletePopup(void);\r
+\r
+       result Construct(void);\r
+       void OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs);\r
+\r
+       // IListViewItemEventListener\r
+       virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);\r
+       virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status);\r
+       virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction);\r
+       virtual void OnListViewItemLongPressed(Tizen::Ui::Controls::ListView& listView, int index, int elementId, bool& invokeListViewItemCallback);\r
+\r
+       //IListViewItemProvider\r
+       virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int index, int itemWidth);\r
+       virtual bool DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);\r
+       virtual int GetItemCount(void);\r
+\r
+       // From IActionEventListener\r
+       void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);\r
+\r
+       // From IDeleteEventListener\r
+       void OnDeleteStart(int totalCount){};\r
+       void OnDeleteUpdate(int deleteCount, int totalCount){};\r
+       void OnDeleteComplete(int errCode, Tizen::Base::Object* pThreadObject);\r
+\r
+private:\r
+       ConversationData* __pConvData;\r
+       Tizen::Ui::Controls::Button* __pCancelButton;\r
+       IPopupEventListener& __popupListener;\r
+};\r
+\r
+#endif // _MSG_RESEND_DELETE_POPUP_H_\r
diff --git a/inc/MsgSettingPresentationModel.h b/inc/MsgSettingPresentationModel.h
new file mode 100644 (file)
index 0000000..b09499f
--- /dev/null
@@ -0,0 +1,112 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+/**
+ * @file               MsgSettingPresentationModel.h
+ * @brief              This is the header file for the %SettingPresentationModel class.
+ *
+ * This header file contains the declarations of the %SettingPresentationModel class.
+ */
+#ifndef _MSG_SETTING_PRESENTATION_MODEL_H_
+#define _MSG_SETTING_PRESENTATION_MODEL_H_
+
+#include <msg_storage_types.h>
+#include <msg_types.h>
+
+#include <FBaseColIListT.h>
+#include "FUi.h"
+#include "MsgTypes.h"
+
+class CbReceiveSettings;
+class FontSettings;
+class IDeleteEventListener;
+class MmsReceiveSettings;
+class MmsSendSettings;
+class SmscCenterList;
+class SmsSendSettings;
+class SpamFilterList;
+
+/**
+ * @class              SettingPresentationModel
+ *
+ * This class interact with SLP layer and fetch and set message setting from message service.
+ */
+
+class SettingPresentationModel
+       : public Tizen::Base::Runtime::IRunnable
+{
+
+public:
+       // Create Setting presentation model  instance.
+       static SettingPresentationModel* GetInstance(void);
+       // For SMSC center
+       SmscCenterList* GetSMSCList(void);
+       void UpdateSmscCenter(void);
+       // For SMS settings
+       SmsSendSettings* GetSmsSendSetting(void);
+       void SaveSmsSendSetting(void);
+       // For MMS settings
+       MmsReceiveSettings* GetMmsReceiveSettings(void);
+       void SaveMmsReceiveSettings(void);
+       MmsSendSettings* GetMmsSendSettings(void);
+       void SaveMmsSendSettings(void);
+       // For Spam message
+       SpamFilterList* GetSpamFilterList(void);
+       void RefreshSpamFilterList(void);
+       result AddToFilter(const Tizen::Base::String& strFilter, int matchType);
+       result UpdateFilter(int index, int filterType, const Tizen::Base::String& strFilter, int matchType);
+       result DeleteFilter(int filterIndex, int filterType);
+       result DeleteFilter(Tizen::Base::Collection::IListT< int >* pDeleteIdList, int filterType, Tizen::Ui::Control* pListener = null);
+
+       // For Cell broadcast Messages
+       CbReceiveSettings* GetCbSettings(void);
+       void SaveCbSettings(void);
+       // Font size
+       FontSettings* GetFontSettings(void);
+       bool IsVolumeKeyOn(void) const;
+       void SetVolumeKeyStatus(bool status);
+       int GetFilterListIndex(const Tizen::Base::String& strFilter);
+
+private:
+       SettingPresentationModel(void);
+       // Destructor.
+       ~SettingPresentationModel(void);
+       result Construct(void);
+       static void CreateInstance(void);
+       static void DestroyInstance(void);
+       // From IRunable
+       virtual Tizen::Base::Object* Run(void);
+       //! To prevent copy constructor and assignment
+       SettingPresentationModel(const SettingPresentationModel&);
+       SettingPresentationModel& operator =(const SettingPresentationModel& msg);
+
+private:
+       static SettingPresentationModel* __pInstance;
+       msg_handle_t __pMsgHandle;
+       MmsReceiveSettings* __pMmsRecvSettings;
+       MmsSendSettings* __pMmsSendSettings;
+       SmscCenterList* __pSmscCentersList;
+       SmsSendSettings* __pSmsSendSettings;
+       SpamFilterList* __pSpamFilterList;
+       CbReceiveSettings* __pCbSettings;
+       FontSettings* __pFontSettings;
+       Tizen::Base::Runtime::Thread* __pDeleteFilterThread;
+       Tizen::Base::Collection::IListT< int >* __pDeleteFilterIndexList;
+       Tizen::Ui::Control* __pDeleteFilterListener;
+       int __filterType;
+};
+
+#endif /* _MSG_SETTING_PRESENTATION_MODEL_H_ */
diff --git a/inc/MsgSettingsForm.h b/inc/MsgSettingsForm.h
new file mode 100644 (file)
index 0000000..14d43d8
--- /dev/null
@@ -0,0 +1,120 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgSettingsForm.h\r
+ * @brief              This is the header file for the %SettingsForm class.\r
+ *\r
+ * This header file contains the declarations of the %SettingsForm class.\r
+ */\r
+#ifndef _MSG_SETTINGS_FORM_H_\r
+#define _MSG_SETTINGS_FORM_H_\r
+\r
+#include <FUiCtrlTableViewTypes.h>\r
+#include <FUiCtrlIGroupedTableViewItemProvider.h>\r
+#include <FUiCtrlIGroupedTableViewItemEventListener.h>\r
+#include <FUiScenesISceneEventListener.h>\r
+\r
+#include "MsgBaseForm.h"\r
+\r
+class SettingItemsList;\r
+\r
+enum MessageSettingFormType\r
+{\r
+       MESSAGE_SETTING_FORM_MESSAGE_MAIN = 0,\r
+       MESSAGE_SETTING_FORM_TEXT_MESSAGES,\r
+       MESSAGE_SETTING_FORM_SERVICE_CENTER,\r
+       MESSAGE_SETTING_FORM_EDIT_SERVICE_CENTER,\r
+       MESSAGE_SETTING_FORM_FONT_SIZE\r
+};\r
+\r
+/**\r
+ * @class              SettingsForm\r
+ *\r
+ * This class represent main setting UI for messaging application.\r
+ */\r
+\r
+class SettingsForm\r
+       : public BaseForm\r
+       , public Tizen::Ui::Controls::IGroupedTableViewItemEventListener\r
+       , public Tizen::Ui::Controls::IGroupedTableViewItemProvider\r
+       , public Tizen::Ui::Scenes::ISceneEventListener\r
+{\r
+       // Construction\r
+public:\r
+       SettingsForm(MessageSettingFormType settingFormType);\r
+       virtual ~SettingsForm(void);\r
+       bool Initialize(void);\r
+\r
+protected:\r
+       // From From\r
+       result OnInitializing(void);\r
+       result OnTerminating(void);\r
+       // From base class\r
+       void OnIntializeFooter(Tizen::Ui::Controls::Footer& footer);\r
+       void OnIntializeHeader(Tizen::Ui::Controls::Header& header);\r
+       // From ISceneEventListener\r
+       virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);\r
+       virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);\r
+       // Back event listener.\r
+       void OnFormBackRequested(Tizen::Ui::Controls::Form& source);\r
+       void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);\r
+\r
+       //IGroupedTableViewItemProvider\r
+       virtual int GetGroupCount(void);\r
+       virtual int GetItemCount(int groupIndex);\r
+       virtual Tizen::Ui::Controls::TableViewGroupItem* CreateGroupItem(int groupIndex, int itemWidth);\r
+       virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int groupIndex, int itemIndex, int itemWidth);\r
+       virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);\r
+       virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);\r
+       virtual void UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);\r
+       virtual void UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);\r
+       virtual int GetDefaultItemHeight(void);\r
+       virtual int GetDefaultGroupItemHeight(void);\r
+\r
+       //Tableview event\r
+       virtual void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);\r
+       virtual void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);\r
+       virtual void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated);\r
+\r
+private:\r
+       Tizen::Ui::Controls::TableViewItem* CreateSettingItemN(int groupIndex, int itemIndex, int itemWidth);\r
+       void UpdateSettingItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pViewItem);\r
+       Tizen::Ui::Controls::TableViewItem* CreateSmscCenterListItemN(int groupIndex, int itemIndex, int itemWidth);\r
+       bool InitializeMessageSettingItems(void);\r
+       bool InitializeTextMessageSettingItems(void);\r
+       bool InitializeFontSettingItems(void);\r
+       void HandleSettingSelection(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItemStatus status);\r
+       void HandleFontSelection(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItemStatus status);\r
+       void HandleSmscCenterSelection(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItemStatus status);\r
+       void HandleBackNavigation(void);\r
+       void CheckedRadioGroupItem(int groupIndex, int itemIndex);\r
+       Tizen::Base::String GetInputModeText(int type) const;\r
+       Tizen::Base::String GetStatusItemText(int type) const;\r
+       bool GetItemCheckStatus(int controlId) const;\r
+       int GetFontSize(int controlActionId) const;\r
+       void LoadCurrentSettings(void);\r
+\r
+private:\r
+       MessageSettingFormType __settingFormType;   //! Setting form type\r
+       Tizen::Ui::Controls::GroupedTableView* __pSettingGroupTableView; //! list to display settings item\r
+       SettingItemsList* __pSettingItemsArray; //! Setting data array.\r
+       int __editSmscIndex;    //! Edit SMSC center index.\r
+       Tizen::Ui::Scenes::SceneId __previoussceneId;\r
+\r
+};\r
+\r
+#endif //_MSG_SETTINGS_FORM_H_\r
diff --git a/inc/MsgSettingsItemList.h b/inc/MsgSettingsItemList.h
new file mode 100644 (file)
index 0000000..875ed44
--- /dev/null
@@ -0,0 +1,113 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgSettingItemsList.h\r
+ * @brief              This is the header file for the %SettingItemsList class.\r
+ *\r
+ * This header file contains the declarations of the %SettingItemsList class.\r
+ */\r
+#ifndef _MSG_SETTING_ITEM_LIST_H_\r
+#define _MSG_SETTING_ITEM_LIST_H_\r
+\r
+#include <FBase.h>\r
+\r
+enum SettingStyle\r
+{\r
+       SETTING_STYLE_NORMAL,\r
+       SETTING_STYLE_RADIO,\r
+       SETTING_STYLE_RADIO_DETAILS,\r
+       SETTING_STYLE_ONOFF_SLIDING,\r
+       SETTING_STYLE_EXPANDABLE,\r
+};\r
+enum SettingStatusItem\r
+{\r
+       SETTING_STATUS_ITEM_INVALID,\r
+       SETTING_STATUS_ITEM_INPUTMODE,\r
+       SETTING_STATUS_ITEM_SERVICE_CENTER,\r
+       SETTING_STATUS_ITEM_HOME_NETWORK,\r
+       SETTING_STATUS_ITEM_FORIGEN_NETWORK,\r
+       SETTING_STATUS_ITEM_CREATION_MODE,\r
+       SETTING_STATUS_ITEM_MATCH_CRITERIA\r
+};\r
+enum SettingGroupStyle\r
+{\r
+       SETTING_GROUP_STYLE_NORMAL,\r
+       SETTING_GROUP_STYLE_TITLE,\r
+       SETTING_GROUP_STYLE_HELP_TEXT,\r
+};\r
+\r
+// For internal use only.\r
+class GroupData\r
+       : public Tizen::Base::Object\r
+{\r
+public:\r
+       Tizen::Base::String groupName;\r
+       int groupItemCount;\r
+       bool groupExpanded;\r
+       SettingGroupStyle groupStyle;\r
+};\r
+\r
+class SettingItem\r
+       : public Tizen::Base::Object\r
+{\r
+public:\r
+       SettingItem(int actionId, const Tizen::Base::String& name, SettingStyle style, SettingStatusItem statusItem = SETTING_STATUS_ITEM_INVALID)\r
+               : __actionId(actionId)\r
+               , __itemName(name)\r
+               , __itemStyle(style)\r
+               , __itemStatus(statusItem)\r
+               , __isCheck(false)\r
+       {\r
+       }\r
+\r
+       void SetItemCheck(bool value) {__isCheck = value;}\r
+       bool GetItemCheckStatus(void) const {return __isCheck;}\r
+       int GetActionId(void) const {return __actionId;}\r
+       int GetStyle(void) const {return __itemStyle;}\r
+       const Tizen::Base::String& GetName(void) const { return __itemName; }\r
+       int GetStatus(void) const { return __itemStatus; }\r
+\r
+private:\r
+       int __actionId;\r
+       Tizen::Base::String __itemName;\r
+       SettingStyle __itemStyle;\r
+       SettingStatusItem __itemStatus;\r
+       bool __isCheck;\r
+};\r
+\r
+class SettingItemsList\r
+       : public Tizen::Base::Object\r
+{\r
+\r
+public:\r
+       SettingItemsList(void);\r
+       int GetGroupCount(void) const;\r
+       int GetItemCount(int groupIndex) const;\r
+       int AddGroup(const Tizen::Base::String& groupName, SettingGroupStyle groupStyle = SETTING_GROUP_STYLE_NORMAL, bool isExpanded = true);\r
+       const Tizen::Base::String& GetGroupName(int groupIndex) const;\r
+       SettingGroupStyle GetGroupStyle(int groupIndex) const;\r
+       void SetgroupExpandStatus(int groupIndex, bool value);\r
+       bool IsGroupExpanded(int groupIndex);\r
+       void AddItem(int groupIndex, SettingItem& settingItem);\r
+       SettingItem& GetItemAt(int groupIndex, int selectIndex) const;\r
+\r
+private:\r
+       Tizen::Base::Collection::ArrayList __settingItemArray;\r
+       Tizen::Base::Collection::ArrayList __settingGroupArray;\r
+};\r
+\r
+#endif //_MSG_SETTING_ITEM_LIST_H_\r
diff --git a/inc/MsgSmsManager.h b/inc/MsgSmsManager.h
new file mode 100644 (file)
index 0000000..31eb461
--- /dev/null
@@ -0,0 +1,255 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgSmsManager.h\r
+ * @brief              This is the header file for the %SmsManager class.\r
+ *\r
+ * This header file contains the declarations of the %SmsManager class.\r
+ */\r
+#ifndef _MSG_SMS_MANAGER_H_\r
+#define _MSG_SMS_MANAGER_H_\r
+\r
+#include <msg_storage_types.h>\r
+#include <msg_types.h>\r
+#include <msg_transport_types.h>\r
+\r
+#include <FBaseTypes.h>\r
+\r
+#include "MsgTypes.h"\r
+\r
+namespace Tizen { namespace Base { namespace Collection\r
+{\r
+class ArrayList;\r
+class IList;\r
+}}};\r
+\r
+class ISmsEventListener;\r
+class SmsSendSettings;\r
+\r
+/**\r
+ * @class      SmsManager\r
+ *\r
+ * This class interact with SLP layer to send SMS and receive SMS notification.\r
+ */\r
+\r
+class SmsManager\r
+{\r
+public:\r
+       /**\r
+        * Default constructor for this class.\r
+        */\r
+       SmsManager(msg_handle_t pMsgHandle);\r
+\r
+       /**\r
+        * Initialise SMS 2nd phase constructor parameter.\r
+        *\r
+        */\r
+       result Construct(void);\r
+\r
+       /**\r
+        * Default destructor for this calss\r
+        */\r
+       virtual ~SmsManager(void);\r
+\r
+       /**\r
+        * Reply SMS for given thread\r
+        *\r
+        * @msgText             - Text has to be sent by SMS\r
+        * @threadId    - Thread ID  which given text send as SMS.\r
+        * @pSmsSendings - Sms Send settings\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse SendMessage(const Tizen::Base::String& msgText, int threadId, const SmsSendSettings* pSmsSendings = null);\r
+\r
+       /**\r
+        * Send SMS to given recipients list.\r
+        *\r
+        * @msgText             - Text has to be sent by SMS\r
+        * @addressList - recipients list\r
+        * @msgThreadId -  Thread id for  new created thread.\r
+        * @pSmsSendings - Sms Send settings\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse SendMessage(const Tizen::Base::String& msgText, const Tizen::Base::Collection::IList& addressList, int& msgThreadId, const SmsSendSettings* pSmsSendings = null);\r
+\r
+       /**\r
+        *  Save SMS to draft.\r
+        *\r
+        * @msgText             - Text has to be sent by SMS\r
+        * @threadId    - Thread ID  which given text send as SMS.\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse SaveMessage(const Tizen::Base::String& msgText, int threadId);\r
+\r
+       /**\r
+        * Save SMS to draft.\r
+        *\r
+        * @msgText             - Text has to be sent by SMS\r
+        * @addressList - recipients list\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse SaveMessage(const Tizen::Base::String& msgText, const Tizen::Base::Collection::IList& addressList);\r
+\r
+       /**\r
+        * Add SMS sent/receive observer\r
+        *\r
+        * @param eventListener - Listener listening for SMS sent receive events.\r
+        *\r
+        * @retrun result               - E_SUCCESS, In case of successfully add listener in event list.\r
+        */\r
+       result AddSmsEventListener(const ISmsEventListener& eventListener);\r
+\r
+       /**\r
+        * Remove SMS sent/receive observer\r
+        *\r
+        * @param eventListener - Listener listening for SMS sent receive events.\r
+        *\r
+        * @retrun result               - E_SUCCESS, In case of successfully remove listener in event list.\r
+        *\r
+        */\r
+       result RemoveSmsEventListener(const ISmsEventListener& eventListener);\r
+\r
+       /**\r
+        * Set recipient list in message object.\r
+        *\r
+        * @param       messageId     - message Id which need to be sent.\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse ReSendMessage(int messageId);\r
+\r
+\r
+protected:\r
+       /**\r
+        * static call back from message daemon in case of incomming message\r
+        *\r
+        * @param pHandle       - message service handle.\r
+        * @param msg                   - Pointer to incomming mesage.\r
+        * @param pUserParam    - User given parameter.\r
+        *\r
+        * @return void\r
+        */\r
+       static void IncommingSmsCallback(msg_handle_t pHandle, msg_struct_t msg, void* pUserParam);\r
+\r
+       /**\r
+        * static call back from message daemon in case of message status change.\r
+        *\r
+        * @param pHandle -     message service handle.\r
+        * @param pSentStatus   - message sent status.\r
+        * @param pUserParam    - User given parameter.\r
+        *\r
+        * @return void\r
+        */\r
+       static void MessageSentStatusCallback(msg_handle_t pHandle, msg_struct_t pSentStatus, void* pUserParam);\r
+\r
+       /**\r
+        *  Incoming message notification, call by IncommingSmsCallback()\r
+        *\r
+        * @param   pHandle - Message service handle.\r
+        * @param       pMsg    - pointer to receive message.\r
+        *\r
+        * @return  void\r
+        */\r
+       void IncommingSMS(msg_handle_t pHandle, msg_struct_t pMsg);\r
+\r
+       /**\r
+        * Message sent status notification, call from  MessageSentStatusCallback.\r
+        *\r
+        * @param       pHandle         - Message service handle.\r
+        * @param       pSentStatus     - Sent status message service.\r
+        *\r
+        * @return  void\r
+        */\r
+       void SentMessageStatus(msg_handle_t pHandle, msg_struct_t pSentStatus);\r
+\r
+       /**\r
+        * Set message type.\r
+        *\r
+        * @param       pMsgInfo - message which has to be sent using message service handle.\r
+        * @param       msgText  - Text to be attached with message.\r
+        * @param       threadId - Which thread message has to be sent.\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse CreateSms(msg_struct_t pMsgInfo, const Tizen::Base::String& msgText, int threadId);\r
+\r
+       /**\r
+        * Set message type.\r
+        *\r
+        * @param       pMsgInfo    - message which has to be sent using message service handle.\r
+        * @param       msgText     - Text to be attached with message.\r
+        * @param       addressList - To whom message has to be sent\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse CreateSms(msg_struct_t pMsgInfo, const Tizen::Base::String& msgText, const Tizen::Base::Collection::IList& addressList);\r
+\r
+       /**\r
+        * Set message type.\r
+        *\r
+        * @param       pMsgInfo    - message which has to be sent using message service handle.\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse SetMessageType(msg_struct_t pMsgInfo);\r
+\r
+       /**\r
+        * Set message body.\r
+        *\r
+        * @param       pMsgInfo    - message which has to be sent using message service handle.\r
+        * @param       msgText     - message text which has to be sent.\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse SetMessageBody(msg_struct_t pMsgInfo, const Tizen::Base::String& msgText);\r
+\r
+       /**\r
+        * Set recipient list in message object.\r
+        *\r
+        * @param       pMsgInfo - message which has to be sent using message service handle.\r
+        * @param       threadId - Attached list recipients  for given thread ID.\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse SetRecipientList(msg_struct_t pMsgInfo, int threadId);\r
+\r
+       /**\r
+        * Set recipient list in message object.\r
+        *\r
+        * @param       pMsgInfo        - message which has to be sent using message service handle.\r
+        * @param       addressList     - List of recipients.\r
+        *\r
+        * @return  MsgResponse - return  MSG_RESPONSE_SUCCESS in case of success, else specific error code.\r
+        */\r
+       MsgResponse SetRecipientList(msg_struct_t pMsgInfo, const Tizen::Base::Collection::IList& addressList);\r
+\r
+private:\r
+       //! To prevent copy constructor and assignment\r
+       SmsManager(const SmsManager&);\r
+       SmsManager& operator =(const SmsManager& msg);\r
+\r
+private:\r
+       //static SmsManager* __pInstance;     /*! Self instance for singleton design. */\r
+       msg_handle_t __pMsgHandle;          /*! Message service handler. */\r
+       Tizen::Base::Collection::ArrayList* __pSmsEventListener; /*! SMS event listener array. */\r
+};\r
+\r
+#endif // _MSG_SMS_MANAGER_H_\r
diff --git a/inc/MsgSmsSendSettings.h b/inc/MsgSmsSendSettings.h
new file mode 100644 (file)
index 0000000..e6497e4
--- /dev/null
@@ -0,0 +1,65 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgSmsSendSettings.h\r
+ * @brief              This is the header file for the %SmsSendSettings class.\r
+ *\r
+ * This header file contains the declarations of the %SmsSendSettings class.\r
+ */\r
+#ifndef _MSG_SMS_SEND_SETTINGS_H_\r
+#define _MSG_SMS_SEND_SETTINGS_H_\r
+\r
+#include <FBaseObject.h>\r
+#include <msg_storage_types.h>\r
+\r
+/**\r
+ * @class              SmsSendSettings\r
+ *\r
+ * Class SmsSendSettings keeps SMS sending settings details.\r
+ */\r
+class SmsSendSettings\r
+       : public Tizen::Base::Object\r
+{\r
+public:\r
+       /**\r
+        * Default constructor for this class.\r
+        */\r
+       SmsSendSettings(msg_struct_t pSmsSendSetting);\r
+\r
+       /**\r
+        * Default destructor for this class.\r
+        */\r
+       ~SmsSendSettings(void);\r
+\r
+       /**\r
+        *  Get Sms send option structure.\r
+        */\r
+       msg_struct_t GetSmsSendOpt(void) const;\r
+       /**\r
+        *  Indicates the string encoding type.  See enum _MSG_ENCODE_TYPE_E\r
+        */\r
+       int GetEncodeMode(void) const;\r
+       int GetEncodeType(void) const;\r
+       bool IsDeliveryReportOn(void) const;\r
+       result SetEncodeMode(int newType);\r
+       result SetDeliveryReportRequestStatus(bool status);\r
+private:\r
+       //! SMS sending setting structure pointer\r
+       msg_struct_t __pSmsSendSetting; //! Own\r
+};\r
+\r
+#endif // _MSG_SMS_SEND_SETTINGS_H_\r
diff --git a/inc/MsgSmsViewerForm.h b/inc/MsgSmsViewerForm.h
new file mode 100644 (file)
index 0000000..dd8eece
--- /dev/null
@@ -0,0 +1,78 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgSmsViewerForm.h\r
+ * @brief              This is the header file for the %SmsViewerForm class.\r
+ *\r
+ * This header file contains the declarations of the %SmsViewerForm class.\r
+ */\r
+#ifndef _MSG_SMS_VIEWER_FORM_H_\r
+#define _MSG_SMS_VIEWER_FORM_H_\r
+\r
+#include <FUiCtrlTextBox.h>\r
+#include <FUiScenesISceneEventListener.h>\r
+\r
+#include "MsgBaseForm.h"\r
+\r
+class MessageData;\r
+\r
+/**\r
+ * @class              SmsViewerForm\r
+ *\r
+ * Class SmsViewerForm  displays single message context.\r
+ */\r
+\r
+class SmsViewerForm\r
+       : public BaseForm\r
+       , public Tizen::Ui::IOrientationEventListener\r
+       , public Tizen::Ui::Scenes::ISceneEventListener\r
+{\r
+public:\r
+       SmsViewerForm(void);\r
+       virtual ~SmsViewerForm(void);\r
+       bool Initialize(void);\r
+\r
+protected:\r
+       // From From\r
+       virtual result OnInitializing(void);\r
+       virtual result OnTerminating(void);\r
+\r
+       // From IActionEventListener\r
+       void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);\r
+\r
+       // From ISceneEventListener\r
+       virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);\r
+       virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);\r
+\r
+       // Orientation listener\r
+       virtual void OnOrientationChanged(const Tizen::Ui::Control& source, Tizen::Ui::OrientationStatus orientationStatus);\r
+\r
+       // Back event listener.\r
+       void OnFormBackRequested(Tizen::Ui::Controls::Form& source);\r
+\r
+       // From base class\r
+       void OnIntializeFooter(Tizen::Ui::Controls::Footer& footer);\r
+       void OnIntializeHeader(Tizen::Ui::Controls::Header& header);\r
+\r
+private:\r
+       // Member variable.\r
+       MessageData* __pMessageEntry;\r
+       Tizen::Ui::Controls::TextBox* __pMessageTextBox;\r
+       Tizen::Ui::Scenes::SceneId __previousSceneId;\r
+};\r
+\r
+#endif //_MSG_SMS_VIEWER_FORM_H_\r
diff --git a/inc/MsgSmscCenterList.h b/inc/MsgSmscCenterList.h
new file mode 100644 (file)
index 0000000..6ba620f
--- /dev/null
@@ -0,0 +1,84 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgSmscCenterList.h\r
+ * @brief              This is the header file for the %SmscCenterList class.\r
+ *\r
+ * This header file contains the declarations of the %SmscCenterList class.\r
+ */\r
+#ifndef _MSG_SMSC_CENTER_LIST_H_\r
+#define _MSG_SMSC_CENTER_LIST_H_\r
+\r
+#include <FBaseObject.h>\r
+#include <msg_storage_types.h>\r
+\r
+/**\r
+ * @class              SmscCenterList\r
+ *\r
+ * Class SmscCenterList is wrapper class of SLP layer it holds message center list info..\r
+ */\r
+\r
+class SmscCenterList\r
+       : public Tizen::Base::Object\r
+{\r
+\r
+public:\r
+       /**\r
+        * This is constructor for this class\r
+        *\r
+        * @param pSmscInfo     Structure pointer to SMSC information.\r
+        */\r
+       SmscCenterList(msg_struct_t pSmscInfo);\r
+\r
+       /**\r
+        * Default destructor for this class.\r
+        */\r
+       ~SmscCenterList(void);\r
+\r
+       /**\r
+        *  Second phase constructor\r
+        */\r
+       void Construct(void);\r
+\r
+       /**\r
+        * Return number of SMSC center count available in SMSC setting structure.\r
+        *\r
+        * @param   -No argument.\r
+        *\r
+        * @return  Return number of SMSC center count.\r
+        *\r
+        */\r
+       int GetCount(void) const;\r
+       int GetSelectedId(void) const;\r
+       result SetSelectedSmscIndex(int smscIndex);\r
+       msg_struct_t GetSmscOpt(void) const;\r
+       Tizen::Base::String GetSmscName(int index) const;\r
+       Tizen::Base::String GetSmscAdress(int index) const;\r
+       result SetSmscName(int index, const Tizen::Base::String& smscName);\r
+       result SetSmscAdress(int index, const Tizen::Base::String& smscAddress);\r
+\r
+private:\r
+       //! To prevent copy constructor and assignment\r
+       SmscCenterList(const SmscCenterList& rhs);\r
+       SmscCenterList& operator =(const SmscCenterList& rhs);\r
+\r
+private:\r
+       msg_struct_t __pSmscOpt;        //! SMSC center setting structure.\r
+       msg_struct_list_s* __pSmscList; //! SMSC center list inside setting structure.\r
+};\r
+\r
+#endif // _MSG_SMSC_CENTER_LIST_H_\r
diff --git a/inc/MsgSpamFilterList.h b/inc/MsgSpamFilterList.h
new file mode 100644 (file)
index 0000000..218f0ff
--- /dev/null
@@ -0,0 +1,104 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgSpamFilterList.h\r
+ * @brief              This is the header file for the %SpamFilterList class.\r
+ *\r
+ * This header file contains the declarations of the %SpamFilterList class.\r
+ */\r
+#ifndef _MSG_SPAM_FITER_LIST_H_\r
+#define _MSG_SPAM_FITER_LIST_H_\r
+\r
+#include <msg_storage_types.h>\r
+\r
+#include <FBaseColArrayListT.h>\r
+#include <FBaseObject.h>\r
+\r
+/**\r
+  * @class             SpamFilterList\r
+ *\r
+ * Class SpamFilterList is wrapper class of SLP layer and It holds spam filter data.\r
+ */\r
+\r
+class SpamFilterList\r
+       : public Tizen::Base::Object\r
+{\r
+public:\r
+       /**\r
+        * Constructor for this class\r
+        */\r
+       SpamFilterList(msg_struct_list_s* pFilterList);\r
+\r
+       /**\r
+        * Default destructor for this class.\r
+        */\r
+       ~SpamFilterList(void);\r
+\r
+       /**\r
+        *  Second phase constructor for this class\r
+        */\r
+       result Construct(void);\r
+\r
+       /**\r
+        * Return spam filter count.\r
+        */\r
+       int GetBlockWordCount(void) const;\r
+\r
+       /**\r
+        * Return spam filter count.\r
+        */\r
+       int GetBlockNumberCount(void) const;\r
+\r
+       /**\r
+        * Get Filter ID for given filter index.\r
+        */\r
+       msg_struct_t GetFilter(int index, int type) const;\r
+\r
+\r
+       /**\r
+        * Get Filter ID for given filter index.\r
+        */\r
+       int GetFilterId(int index, int type) const;\r
+\r
+       /**\r
+        * Get Filter type for given filter index.\r
+        */\r
+       int GetFilterType(int index, int type) const;\r
+\r
+       /**\r
+        *  Get Filter text for given current index.\r
+        */\r
+       Tizen::Base::String GetFilterText(int index, int type) const;\r
+\r
+       /**\r
+        * Get filter list index based on string.\r
+        */\r
+       int GetFilterListIndex(const Tizen::Base::String& strFilter, int matchType) const;\r
+\r
+private:\r
+       //! To prevent copy constructor and assignment\r
+       SpamFilterList(const SpamFilterList&);\r
+       SpamFilterList& operator =(const SpamFilterList& msg);\r
+\r
+private:\r
+       msg_struct_list_s* __pFilterList; //! List of filter\r
+       Tizen::Base::Collection::ArrayListT< int >* __pBlockWordFilterIndex;\r
+       Tizen::Base::Collection::ArrayListT< int >* __pNumberFilterIndex;\r
+\r
+};\r
+\r
+#endif // _MSG_SPAM_FITER_LIST_H_\r
diff --git a/inc/MsgSpamRestoreHandler.h b/inc/MsgSpamRestoreHandler.h
new file mode 100644 (file)
index 0000000..253f11d
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+/**
+ * @file               MsgSpamRestoreHandler.h
+ * @brief              This is the header file for the %SpamRestoreHandler class.
+ *
+ * This header file contains the declarations of the %SpamRestoreHandler class.
+ */
+#ifndef _MSG_SPAM_RESTORE_HANDLER_H_
+#define _MSG_SPAM_RESTORE_HANDLER_H_
+
+
+#include <FBaseRtThread.h>
+#include "FUi.h"
+
+class SpamRestoreHandler
+       : public Tizen::Base::Runtime::Thread
+{
+public:
+               SpamRestoreHandler(Tizen::Base::Collection::ArrayListT<int>* pSelectedIds, Tizen::Ui::Control* parentCtl);
+               ~SpamRestoreHandler(void);
+               result Construct(void);
+private:
+               virtual Tizen::Base::Object* Run(void);
+private:
+               Tizen::Ui::Control* __parentCtrl;
+               Tizen::Base::Collection::ArrayListT<int>* __pselectedIds;
+};
+
+#endif // _MSG_SPAM_RESTORE_HANDLER_H_
diff --git a/inc/MsgSpamSettingsForm.h b/inc/MsgSpamSettingsForm.h
new file mode 100644 (file)
index 0000000..baa3932
--- /dev/null
@@ -0,0 +1,157 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgSpamSettingsForm.h\r
+ * @brief              This is the header file for the %SpamSettingsForm class.\r
+ *\r
+ * This header file contains the declarations of the %SpamSettingsForm class.\r
+ */\r
+#ifndef _MSG_SPAM_SETTINGS_FORM_H_\r
+#define _MSG_SPAM_SETTINGS_FORM_H_\r
+\r
+#include <FUi.h>\r
+#include <FUiCtrlEditField.h>\r
+#include <FUiCtrlIGroupedListViewItemEventListener.h>\r
+#include <FUiCtrlIGroupedListViewItemProvider.h>\r
+#include <FUiScenesISceneEventListener.h>\r
+\r
+#include "MsgBaseForm.h"\r
+#include "MsgIDeleteEventListener.h"\r
+\r
+class MsgProgressPopup;\r
+class SettingItemsList;\r
+\r
+enum SpamSettingFromType\r
+{\r
+       SPAM_SETTING_FORM_MAIN,\r
+       SPAM_SETTING_FORM_AUTO_REJECT,\r
+       SPAM_SETTING_FORM_ADD_REJECT_NUMBER,\r
+       SPAM_SETTING_FORM_DELETE_REJECT_NUMBER,\r
+       SPAM_SETTING_FORM_BLOCK_WORD,\r
+       SPAM_SETTING_FORM_ADD_BLOCK_WORD,\r
+       SPAM_SETTING_FORM_DELETE_BLOCK_WORD\r
+};\r
+/**\r
+ * @class              SpamSettingsForm\r
+ *\r
+ * This class represent spam setting UI for messaging application and use to save\r
+ * modify spam setting details.\r
+ */\r
+\r
+class SpamSettingsForm\r
+       : public BaseForm\r
+       , public Tizen::App::IAppControlResponseListener\r
+       , public Tizen::Ui::IFocusEventListener\r
+       , public Tizen::Ui::ITextEventListener\r
+       , public Tizen::Ui::Controls::IGroupedTableViewItemEventListener\r
+       , public Tizen::Ui::Controls::IGroupedTableViewItemProvider\r
+       , public Tizen::Ui::Scenes::ISceneEventListener\r
+       , public IDeleteEventListener\r
+{\r
+// Construction\r
+public:\r
+       SpamSettingsForm(SpamSettingFromType formType);\r
+       virtual ~SpamSettingsForm(void);\r
+       bool Initialize(void);\r
+\r
+protected:\r
+       // From From\r
+       result OnInitializing(void);\r
+       result OnTerminating(void);\r
+       // From base class\r
+       void OnIntializeFooter(Tizen::Ui::Controls::Footer& footer);\r
+       void OnIntializeHeader(Tizen::Ui::Controls::Header& header);\r
+       void OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs);\r
+       // From ISceneEventListener\r
+       virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);\r
+       virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);\r
+       // Back event listener.\r
+       void OnFormBackRequested(Tizen::Ui::Controls::Form& source);\r
+       void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);\r
+\r
+       //IGroupedTableViewItemProvider\r
+       virtual int GetGroupCount(void);\r
+       virtual int GetItemCount(int groupIndex);\r
+       virtual Tizen::Ui::Controls::TableViewGroupItem* CreateGroupItem(int groupIndex, int itemWidth);\r
+       virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int groupIndex, int itemIndex, int itemWidth);\r
+       virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);\r
+       virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);\r
+       virtual void UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);\r
+       virtual void UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);\r
+       virtual int GetDefaultItemHeight(void);\r
+       virtual int GetDefaultGroupItemHeight(void);\r
+\r
+       //Tableview event\r
+       virtual void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);\r
+       virtual void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);\r
+       virtual void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated);\r
+\r
+       // From IFocusEventListener\r
+       virtual void OnFocusGained(const Tizen::Ui::Control& source);\r
+       virtual void OnFocusLost(const Tizen::Ui::Control& source);\r
+       // From IAppControlEventListener\r
+       virtual void OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData);\r
+       // From ITextEventListener\r
+       virtual void OnTextValueChanged(const Tizen::Ui::Control& source);\r
+       virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source);\r
+       void LoadInitilaState(void);\r
+       // From IMsgDeleteEventListener\r
+       void OnDeleteStart(int totalCount);\r
+       void OnDeleteUpdate(int deleteCount, int totalCount);\r
+       void OnDeleteComplete(int errCode, Tizen::Base::Object* pThreadObject);\r
+\r
+private:\r
+       Tizen::Ui::Controls::TableViewItem* CreateMatchCriteriaSettingItemsN(int groupIndex, int itemIndex, int itemWidth);\r
+       Tizen::Ui::Controls::TableViewItem* CreateSpamMessageSettingItemN(int groupIndex, int itemIndex, int itemWidth);\r
+       Tizen::Ui::Controls::TableViewItem* CreateAutoRejectNumberSettingItemN(int type, int itemWidth);\r
+       Tizen::Ui::Controls::TableViewItem* CreateBlockWordSettingItemN(int groupIndex, int itemIndex, int itemWidth);\r
+       Tizen::Ui::Controls::TableViewItem* CreateAutoRejectSettingGroupItemsN(int groupIndex, int type, int itemWidth);\r
+       Tizen::Base::String GetMatchCriteriadString(int type);\r
+       int GetAutoRejectGroupItemCount(int groupIndex) const;\r
+       void HandleSpamSettingItemSelection(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItemStatus status);\r
+       void HandleSpamAutoRejectItemSelection(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItemStatus status);\r
+       void HandleSpamBlockWordItemSelection(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItemStatus status);\r
+       void HandleSpamMatchCriteriaItemSelection(int groupIndex, int itemIndex);\r
+       void HandleBackNavigation(void);\r
+       void HandleAddNavigation(void);\r
+       void HandleEditNavigation(void);\r
+       void SetHeader(void);\r
+       void CheckedRadioGroupItem(int groupIndex, int itemIndex);\r
+       void ShowSelectionInfo(void);\r
+       void CheckAll(bool value);\r
+       void DeleteSelectedSpamFilters(void);\r
+       void SelectContact(void);\r
+       void ShowConfirmationPopup(void);\r
+       void SaveSpamFilter(SpamFiterType filterType);\r
+       void UpdateMatchCriteriaSettingItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pViewItem);\r
+       void LoadCurrentSettings(void);\r
+\r
+private:\r
+       SpamSettingFromType __spamFormType; //! SPAM setting form type.\r
+       Tizen::Ui::Controls::GroupedTableView* __pGroupedTableView; // List to display spam setting items.\r
+       Tizen::Ui::Controls::EditField* __pEditField;\r
+       SettingItemsList* __pSettingItemsArray; //! Setting data for static setting items.\r
+       int __selectedMatchCriteriaIndex;   //! Selected match criteria\r
+       int __editSpamFilterIndex;  //! Edit spam filter index.\r
+       Tizen::Base::Collection::ArrayListT< int >* __pSelectedIds; //! Selected ID list\r
+       Tizen::Ui::Scenes::SceneId __previousSceneId; //! Scene from which this form was created.\r
+       Tizen::Ui::Controls::Popup* __pConfirmationPopup;   //! Confirmation popup for spam filter.\r
+       MsgProgressPopup* __pProgressPopup;\r
+       bool __oneTimeFlag;\r
+};\r
+\r
+#endif //_MSG_SPAM_SETTINGS_FORM_H_\r
diff --git a/inc/MsgSubjectControl.h b/inc/MsgSubjectControl.h
new file mode 100644 (file)
index 0000000..ecf1b25
--- /dev/null
@@ -0,0 +1,66 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgSubjectControl.h\r
+ * @brief              This is the header file for the %SubjectControl class.\r
+ *\r
+ * This header file contains the declarations of the %SubjectControl class.\r
+ */\r
+#ifndef _MSG_SUBJECT_CONTROL_H_\r
+#define _MSG_SUBJECT_CONTROL_H_\r
+\r
+#include "MsgComposeBaseControl.h"\r
+\r
+class SubjectControl\r
+       : public ComposeBaseControl\r
+       , public Tizen::Ui::IFocusEventListener\r
+{\r
+public:\r
+       SubjectControl(void);\r
+       ~SubjectControl(void);\r
+       result Construct(const Tizen::Graphics::Rectangle& rectangle);\r
+       void AddKeypadEventListener(Tizen::Ui::IKeypadEventListener& listener);\r
+       void AddFocusEventListener(Tizen::Ui::IFocusEventListener& listener);\r
+       void AddActionEventListener(Tizen::Ui::IActionEventListener& listener);\r
+       void AddTextEventListener(Tizen::Ui::ITextEventListener& listener);\r
+       void SetDeleteActionId(int actionId);\r
+       result ShowKeypad(bool visible);\r
+       void SetDeleteShowState(bool visible);\r
+       result SetFocus(void);\r
+       result SetText(const Tizen::Base::String& strText);\r
+       Tizen::Base::String GetText(void) const;\r
+\r
+       // Form IFocusEventListener\r
+       virtual void OnFocusGained(const Tizen::Ui::Control& source);\r
+       virtual void OnFocusLost(const Tizen::Ui::Control& source);\r
+\r
+protected:\r
+       // Form base class\r
+       virtual result OnDraw(void);\r
+       // Form ComposeBaseControl\r
+       virtual ComposeControlType GetControlType(void) const;\r
+\r
+private:\r
+       const Tizen::Ui::IFocusEventListener* __pFocusEvent;\r
+       Tizen::Ui::Controls::EditField* __pEditArea;\r
+       Tizen::Ui::Controls::Button* __pDeleteButton;\r
+       Tizen::Graphics::Bitmap* __pBgBitmap;\r
+};\r
+\r
+\r
+\r
+#endif //_MSG_SUBJECT_CONTROL_H_\r
diff --git a/inc/MsgThreadData.h b/inc/MsgThreadData.h
new file mode 100644 (file)
index 0000000..e6acea7
--- /dev/null
@@ -0,0 +1,92 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgThreadData.h\r
+ * @brief              This is the header file for the %ThreadData class.\r
+ *\r
+ * This header file contains the declarations of the %ThreadData class.\r
+ */\r
+#ifndef _MSG_THREAD_DATA_H_\r
+#define _MSG_THREAD_DATA_H_\r
+\r
+#include <msg_storage_types.h>\r
+\r
+#include "MsgBaseData.h"\r
+\r
+/**\r
+  * @class             ThreadData\r
+ *\r
+ * Class ThreadData hold minimum information for a conversation thread.\r
+ */\r
+\r
+class ThreadData\r
+       : public BaseData\r
+{\r
+public:\r
+       /**\r
+        * Default constructor for this class.\r
+        */\r
+       ThreadData(msg_handle_t pMsgHandle);\r
+\r
+       /**\r
+        * 2nd phase constructor.\r
+        */\r
+       result Construct(msg_struct_t pThreadInfo);\r
+\r
+       /**\r
+        * Default destructor for this class.\r
+        */\r
+       virtual ~ThreadData(void);\r
+\r
+       // Form Base class\r
+       BaseData* CloneN(void);\r
+       int GetEntryId(void) const;\r
+       const Tizen::Base::String& GetDisplayName(void) const;\r
+       int GetUnreadCount(void) const;\r
+       const Tizen::Base::String& GetMessageText(void) const;\r
+       int GetMessageType(void) const;\r
+       const Tizen::Base::String& GetTimeStamp(void) const;\r
+       const Tizen::Base::String& GetGroupName(void) const;\r
+       const int GetDraftMessageCount(void) const;\r
+       DataType GetDataType(void);\r
+\r
+private:\r
+       result InitThreadName(msg_struct_t pThreadInfo);\r
+       result InitShortDescription(msg_struct_t pThreadInfo);\r
+       result InitTimeStampGroupName(void);\r
+\r
+       //! To prevent copy constructor and assignment\r
+       ThreadData(const ThreadData& rhs);\r
+       ThreadData& operator =(const ThreadData& rhs);\r
+\r
+private:\r
+       msg_handle_t __pMsgHandle;  // Not own\r
+       int __threadId;\r
+       Tizen::Base::String __threadName;\r
+       int __messageType;\r
+       Tizen::Base::String __shortDes;\r
+       int __messageTime;\r
+       int __unreadCount;\r
+       Tizen::Base::String __timeStamp;\r
+       Tizen::Base::String __groupName;\r
+       int __draftMsgCount;\r
+};\r
+\r
+\r
+\r
+\r
+#endif // _MSG_THREAD_DATA_H_\r
diff --git a/inc/MsgThreadListForm.h b/inc/MsgThreadListForm.h
new file mode 100644 (file)
index 0000000..87104c8
--- /dev/null
@@ -0,0 +1,325 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+/**\r
+ * @file               MsgThreadListForm.h\r
+ * @brief              This is the header file for the %ThreadListForm class.\r
+ *\r
+ * This header file contains the declarations of the %ThreadListForm class.\r
+ */\r
+#ifndef _MSG_THREAD_LIST_FORM_H_\r
+#define _MSG_THREAD_LIST_FORM_H_\r
+\r
+#include <FUiCtrlIGroupedListViewItemEventListener.h>\r
+#include <FUiCtrlIGroupedListViewItemProvider.h>\r
+#include <FUiCtrlIListViewItemEventListener.h>\r
+#include <FUiCtrlIListViewItemProvider.h>\r
+#include <FUiCtrlISearchBarEventListener.h>\r
+#include <FUiScenesISceneEventListener.h>\r
+\r
+#include "MsgBaseForm.h"\r
+#include "MsgIDeleteEventListener.h"\r
+#include "MsgIPopupEventListener.h"\r
+#include "MsgIThreadEventListener.h"\r
+#include "MsgTypes.h"\r
+\r
+enum ContextItemType\r
+{\r
+       MSG_CONTEXT_ITEM_CALL_TYPE = 0,\r
+       MSG_CONTEXT_ITEM_BLOCK_TYPE,\r
+       MSG_CONTEXT_ITEM_UNBLOCK_TYPE\r
+};\r
+\r
+namespace Tizen { namespace Ui { namespace Controls\r
+{\r
+class CheckButton;\r
+class ContextMenu;\r
+class Label;\r
+}}};\r
+\r
+class PhoneNumberListPopup;\r
+class MsgProgressPopup;\r
+\r
+/**\r
+ * @class              ThreadListForm\r
+ *\r
+ * Class ThreadListForm  display list of thread available in message store.\r
+ */\r
+\r
+class ThreadListForm\r
+       : public BaseForm\r
+       , public Tizen::Ui::IKeypadEventListener\r
+       , public Tizen::Ui::IKeyEventListener\r
+       , public Tizen::Ui::ITextEventListener\r
+       , public Tizen::Ui::ITouchEventListener\r
+       , public Tizen::Ui::Controls::IGroupedListViewItemProvider\r
+       , public Tizen::Ui::Controls::IGroupedListViewItemEventListener\r
+       , public Tizen::Ui::Controls::ISearchBarEventListener\r
+       , public Tizen::Ui::Scenes::ISceneEventListener\r
+       , public IDeleteEventListener\r
+       , public IPopupEventListener\r
+       , public IThreadEventListener\r
+{\r
+public:\r
+       ThreadListForm(ThreadListFormType threadListFormType, ThreadListType threadListType);\r
+\r
+       virtual ~ThreadListForm(void);\r
+\r
+       // From MsgBaseForm\r
+       bool Initialize(void);\r
+\r
+protected:\r
+       //! Call by from framework.\r
+       virtual result OnInitializing(void);\r
+       virtual result OnTerminating(void);\r
+\r
+       // ISearchBarEventListener\r
+       virtual void OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, Tizen::Ui::Controls::SearchBarMode mode);\r
+       virtual void OnSearchBarContentAreaResized(Tizen::Ui::Controls::SearchBar& source, Tizen::Graphics::Dimension& size) {};\r
+\r
+       //ITextEventListener\r
+       virtual void OnTextValueChanged(const Tizen::Ui::Control& source);\r
+       virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source){};\r
+\r
+       // From ISceneEventListener\r
+       virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);\r
+       virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);\r
+\r
+       //From IKeyEventListener\r
+       virtual void OnKeyPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode){};\r
+       virtual void OnKeyReleased(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);\r
+       virtual void OnKeyLongPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode){};\r
+\r
+       // From IActionEventListener\r
+       void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);\r
+\r
+       //From IMsgThreadEventListener\r
+       void OnMessageThreadListChange();\r
+\r
+       // From IMsgDeleteEventListener\r
+       void OnDeleteStart(int totalCount);\r
+       void OnDeleteUpdate(int deleteCount, int totalCount);\r
+       void OnDeleteComplete(int errCode, Tizen::Base::Object* pThreadObject);\r
+\r
+       // From IKeypadEventListener\r
+       virtual void OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction);\r
+       virtual void OnKeypadClosed(Tizen::Ui::Control& source){};\r
+       virtual void OnKeypadOpened(Tizen::Ui::Control& source){};\r
+       virtual void OnKeypadWillOpen(Tizen::Ui::Control& source){};\r
+\r
+       //From ITouchEventListener\r
+       virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);\r
+       virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};\r
+       virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};\r
+       virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};\r
+       virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};\r
+\r
+       //From IGroupedListViewItemEventListener\r
+       virtual void OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus status);\r
+       virtual void OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction){};\r
+       virtual void OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus status);\r
+\r
+       //From IGroupedListViewItemProvider\r
+       virtual int GetGroupCount(void);\r
+       virtual int GetItemCount(int groupIndex);\r
+       virtual Tizen::Ui::Controls::GroupItem* CreateGroupItem(int groupIndex, int itemWidth);\r
+       virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth);\r
+       virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int groupIndex, int itemIndex, int itemWidth);\r
+       virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);\r
+\r
+       // From BaseForm class\r
+       void OnIntializeFooter(Tizen::Ui::Controls::Footer& footer);\r
+       void OnIntializeHeader(Tizen::Ui::Controls::Header& header);\r
+       void OnFormBackRequested(Tizen::Ui::Controls::Form& source);\r
+       void OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs);\r
+\r
+       //From IMsgPopupEventListener\r
+       virtual void OnPopupListItemSelected(const Tizen::Ui::Control& popup, int selectIndex, const Tizen::Base::Object* pPopupListItem);\r
+       virtual void OnPopupClose(Tizen::Base::Object* pObject);\r
+\r
+private:\r
+       // New API\r
+       /**\r
+        * Set Footer properties\r
+        * @return void\r
+        */\r
+       void SetFooter(void);\r
+\r
+       /**\r
+        * Set thread list view mode footer\r
+        *\r
+        *  @param  - Form footer alias.\r
+        *  @return void\r
+        */\r
+       void SetThreadListViewModeFooter(Tizen::Ui::Controls::Footer& footer);\r
+\r
+       /**\r
+        *  Set thread list edit mode footer\r
+        *  @param  - Form footer alias.\r
+        *  @return void\r
+        *\r
+        */\r
+       void SetThreadListEditModeFooter(Tizen::Ui::Controls::Footer& footer);\r
+\r
+       /**\r
+        * Set message list view footer for SPAM, SIM and cell broadcast messages\r
+        *\r
+        *  @param  - Form footer alias.\r
+        *  @return void\r
+        */\r
+       void SetMessageListViewModeFooter(Tizen::Ui::Controls::Footer& footer);\r
+\r
+       /**\r
+        * Set message list edit footer for SPAM, SIM and cell broadcast messages\r
+        *\r
+        *  @param  - Form footer alias.\r
+        *  @return void\r
+        */\r
+       void SetMessageListEditModeFooter(Tizen::Ui::Controls::Footer& footer);\r
+\r
+       /**\r
+        * Set header properties\r
+        * @return void\r
+        */\r
+       void SetHeader(void);\r
+\r
+       /**\r
+        * Add searchbar control in thread list form\r
+        */\r
+       result AddSearchBar(void);\r
+\r
+       /**\r
+        *  Add checkbox control for thread list edit mode form.\r
+        */\r
+       result AddEditCheckBox(void);\r
+\r
+       /**\r
+        *  Add checkbox control for thread list edit mode form.\r
+        */\r
+       result AddLabelSelectionInfo(void);\r
+\r
+       /**\r
+        * Add thread list list box control.\r
+        */\r
+       result AddListBox(void);\r
+\r
+       /**\r
+        *  Create list context menu, display this menu when list item swipe.\r
+        */\r
+       result CreateContextMenu(void);\r
+\r
+       /**\r
+        *  Check all list item.\r
+        */\r
+       void CheckAll(bool value);\r
+\r
+       /**\r
+        *  Delete selected message and thread list.\r
+        */\r
+       void DeleteSelectedItem(void);\r
+\r
+       /**\r
+        *  Show selected list item information.\r
+        */\r
+       void ShowSelectionInfo(void);\r
+\r
+       /**\r
+        * Upadte message and thread list data based on display list type.\r
+        */\r
+       void UpdateMessageThreadList(void);\r
+\r
+       /**\r
+        *  Show popup menu.\r
+        */\r
+       result ShowContextPopup(Tizen::Graphics::Point& position);\r
+\r
+       /**\r
+        *  Show popup with contact number on tapping call button in thread list.\r
+        *  voice button visible on swapping list item.\r
+        */\r
+       void VoiceCall(const Tizen::Base::String& phoneNumber);\r
+\r
+       /**\r
+        *  Show popup with ok/cancel on tapping delete button in thread list.\r
+        *  Delete button visible of swapping list item.\r
+        */\r
+       void DeletePopup(void);\r
+\r
+       /**\r
+        * Handle delete operation\r
+        */\r
+       void HandleDeleteOperation(void);\r
+       /**\r
+        * Handle back navigation\r
+        */\r
+       void HandleBackNavigation(void);\r
+\r
+       /**\r
+        *  Check current from is edit form if so return true else false\r
+        */\r
+       bool IsEditForm(void);\r
+\r
+       /**\r
+        *  Context item popup to show contacts list to call/block phone number.\r
+        */\r
+       void ContextItemPopup(int itemType, int itemIndex);\r
+\r
+       /**\r
+        *  Show popup with ok/cancel on tapping block button in thread list.\r
+        *  Block button visible of swapping list item.\r
+        */\r
+       void BlockPopup(const Tizen::Base::String& phoneNumber);\r
+\r
+       /**\r
+        *  Create list context menu,to display unblock in list item swipe.\r
+        */\r
+       result CreateContextMenuUnBlock(void);\r
+\r
+       /**\r
+        *  Unblock phone number.\r
+        */\r
+       void UnBlockNumber(const Tizen::Base::String& phoneNumber);\r
+       void FilterBlockUnblockNumberList(Tizen::Base::Collection::IList& numberList, bool blockList);\r
+\r
+private:\r
+       // Member variable.\r
+       bool __isSearchBarClicked;\r
+       ThreadListFormType __threadListFormType;\r
+       ThreadListType __listType;\r
+       Tizen::Ui::Controls::GroupedListView* __pThreadGroupList;\r
+       Tizen::Ui::Controls::ListContextItem* __pItemContext;\r
+       Tizen::Ui::Controls::GroupedListView* __pSearchList;\r
+       Tizen::Ui::Controls::SearchBar* __pSearchBar;\r
+       // Selection\r
+       Tizen::Ui::Controls::CheckButton* __pCheckAll;\r
+       Tizen::Ui::Controls::Label* __pSelectionInfo;\r
+       Tizen::Base::Collection::ArrayListT< int >* __pSelectedIds;\r
+       MsgProgressPopup* __pProgressPopup;\r
+       Tizen::Ui::Controls::ContextMenu* __pContextMenu;\r
+       Tizen::Ui::Controls::Popup* __pDeletePopup;\r
+       int __msgListItemIndex;\r
+       PhoneNumberListPopup* __pPhoneNumberListPopup;\r
+       Tizen::Ui::Controls::Popup* __pBlockPopup;\r
+       Tizen::Base::String __pPhoneNumber;\r
+       ContextItemType __contextItemType;\r
+       Tizen::Ui::Controls::ListContextItem* __pItemContextUnblock;\r
+       int __blockGroupIndex;\r
+       int __blockItemIndex;\r
+       Tizen::Base::String __stringTitle;\r
+};\r
+\r
+\r
+#endif  //_MSG_THREAD_LIST_FORM_H_\r
diff --git a/inc/MsgThreadPresentationModel.h b/inc/MsgThreadPresentationModel.h
new file mode 100644 (file)
index 0000000..90ec91c
--- /dev/null
@@ -0,0 +1,160 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+/**
+ * @file               MsgThreadPresentationModel.h
+ * @brief              This is the header file for the %ThreadPresentationModel class.
+ *
+ * This header file contains the declarations of the %ThreadPresentationModel class.
+ */
+#ifndef _MSG_THREAD_PRESENTATION_MODEL_H_
+#define _MSG_THREAD_PRESENTATION_MODEL_H_
+
+#include <msg_storage_types.h>
+#include <msg_types.h>
+
+#include <FBaseColIListT.h>
+#include <FBaseTypes.h>
+#include <FUiControl.h>
+#include "MsgListPresentationModel.h"
+
+namespace Tizen { namespace Base { namespace Collection
+{
+class ArrayList;
+}}};
+
+class BaseData;
+class IThreadEventListener;
+
+/**
+ * @class              ThreadPresentationModel
+ *
+ * This class interact with SLP layer and fetch message thread list,thread conversation details
+ * from message store
+ */
+class ThreadPresentationModel
+       : public ListPresentationModel
+{
+public:
+       /**
+        *  Allocation method for this class
+        *
+        *  @param      Take no argument.
+        *
+        *  @return             Return instance of this class
+        *
+        */
+       static ThreadPresentationModel* GetInstance(void);
+
+       /**
+        * Add Thread listener observer
+        *
+        * @param threadLitener         - Thread event listener.
+        *
+        * @return result           - E_SUCCESS, In case of successfully add to listener list else
+        *                            E_FAILURE
+        */
+       result AddThreadListEventListener(const IThreadEventListener& threadLitener);
+
+       /**
+        * Remove Thread listener observer
+        *
+        * @param threadLitener         - Thread event listener.
+        *
+        * @return result           - E_SUCCESS, In case of successfully remove listener from list else
+        *                            E_FAILURE
+        */
+       result RemoveThreadListEventListener(const IThreadEventListener& threadLitener);
+
+       void GetThreadList(int threadListType);
+       void GetSearchThreadList(const Tizen::Base::String& msgSearchText, int threadListType);
+       int GetSearchListCount(void);
+
+protected:
+       /**
+        * Thread message store change call back. This will call in case of new, delete, update and
+        * contact information change.
+        *
+        * @param  pMsgHandle                   - Message hadle to communicate with message service layer.
+        * @param  storageChangeType    - change type.
+        * @param  pMsgIdList                   - Change message ID list
+        * @param  pUserParam                   - User additional parameter.
+        *
+        * @return void
+        */
+       static void MessageStorageChangeCallback(msg_handle_t pMsgHandle, msg_storage_change_type_t storageChangeType, msg_id_list_s* pMsgIdList, void* pUserParam);
+
+       /**
+        *  This will call  by storage change call back in case of new, delete, update and
+        * contact information change.
+        *
+        * @param  storageChangeType    - change type.
+        * @param  pMsgIdList                   - Change message ID list
+        *
+        * @return void
+        */
+       void OnMessageStorageChange(msg_storage_change_type_t storageChangeType, msg_id_list_s* pMsgIdList);
+
+       /**
+        * Iterate active thread event listener and notify.
+        *
+        * @param       No argument.
+        *
+        * @return void.
+        */
+       void NotifyThreadChange(void);
+
+       /**
+        * Iterate active conversation event listener and notify.
+        *
+        * @param       No argument.
+        *
+        * @return void.
+        */
+       void NotifyConversationChange(void);
+
+private:
+       /**
+        * Default constructor for this class.
+        */
+       ThreadPresentationModel(void);
+
+       /**
+        * Default destructor for this class
+        */
+       virtual ~ThreadPresentationModel(void);
+
+       /**
+        *  Second phase construction
+        */
+       result Construct(void);
+       static void CreateInstance(void);
+       static void DestroyInstance(void);
+
+
+private:
+       //! To prevent copy constructor and assignment
+       ThreadPresentationModel(const ThreadPresentationModel&);
+       ThreadPresentationModel& operator =(const ThreadPresentationModel& msg);
+
+private:
+       static ThreadPresentationModel* __pInstance;                //! Self instance for singleton design.
+       Tizen::Base::Collection::ArrayList* __pThreadListListener;    //! Thread event listener
+       int __listType; //! Thread list type
+       int __searchListCount;
+};
+
+#endif // _MSG_THREAD_PRESENTATION_MODEL_H_
diff --git a/inc/MsgTypes.h b/inc/MsgTypes.h
new file mode 100644 (file)
index 0000000..d6fc2bb
--- /dev/null
@@ -0,0 +1,773 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+/**
+ * @file               MsgTypes.h
+ * @brief              This is the header file for all common const and enum declaration.
+ *
+ * This header file contains the declarations of common const and enum.
+ */
+#ifndef _MSG_TYPES_H_
+#define _MSG_TYPES_H_
+
+namespace Tizen { namespace Graphics
+{
+class Color;
+}};
+
+// To block MMS functionality, Will remove in final released along with this macro
+#define _DISABLE_MMS_FEATURE_
+
+enum MessageIconType
+{
+       MSG_ICON_INVALID,
+       // For different message type list icon
+       MSG_ICON_UNREAD,
+       MSG_ICON_UNREAD_PRESS,
+       MSG_ICON_BROADCASTMSG,
+       MSG_ICON_BROADCASTMSG_PRESS,
+       MSG_ICON_OTA,
+       MSG_ICON_OTA_PRESS,
+       MSG_ICON_PUSH,
+       MSG_ICON_PUSH_PRESS,
+       // For Progress icon
+       MSG_ICON_PROGRESS_01,
+       MSG_ICON_PROGRESS_02,
+       MSG_ICON_PROGRESS_03,
+       MSG_ICON_PROGRESS_04,
+       MSG_ICON_PROGRESS_05,
+       MSG_ICON_PROGRESS_06,
+       MSG_ICON_PROGRESS_07,
+       MSG_ICON_PROGRESS_08,
+       MSG_ICON_PROGRESS_09,
+       MSG_ICON_PROGRESS_10,
+       MSG_ICON_PROGRESS_11,
+       MSG_ICON_PROGRESS_12,
+       MSG_ICON_PROGRESS_13,
+       MSG_ICON_PROGRESS_14,
+       MSG_ICON_PROGRESS_15,
+       MSG_ICON_PROGRESS_16,
+       MSG_ICON_PROGRESS_17,
+       MSG_ICON_PROGRESS_18,
+       MSG_ICON_PROGRESS_19,
+       MSG_ICON_PROGRESS_20,
+       MSG_ICON_PROGRESS_21,
+       MSG_ICON_PROGRESS_22,
+       MSG_ICON_PROGRESS_23,
+       MSG_ICON_PROGRESS_24,
+       MSG_ICON_PROGRESS_25,
+       MSG_ICON_PROGRESS_26,
+       MSG_ICON_PROGRESS_27,
+       MSG_ICON_PROGRESS_28,
+       MSG_ICON_PROGRESS_29,
+       MSG_ICON_PROGRESS_30,
+       // End of progress icons, don't put enum in between.
+       MSG_ICON_EDIT,
+       MSG_ICON_COMPOSE,
+       MSG_ICON_COMPOSE_PRESS,
+       MSG_ICON_DELETE,
+       MSG_ICON_TRAY,
+       MSG_ICON_TRAY_PRESS,
+       MSG_ICON_CONTACT_INFO,
+       MSG_ICON_PLUS,
+       MSG_ICON_PLUS_PRESS,
+       MSG_ICON_BACK,
+       MSG_ICON_BACK_PRESSED,
+       MSG_ICON_HEADER_BACK,
+       MSG_ICON_HEADER_BACK_PRESSED,
+       MSG_ICON_CALL,
+       MSG_ICON_CANCEL,
+       MSG_ICON_BUBBLE_RECEIVE_BG,
+       MSG_ICON_BUBBLE_SENT_BG,
+       MSG_ICON_DELETE_SWEEP,
+       MSG_ICON_DELETE_PRESS_SWEEP,
+       MSG_ICON_LIST_EXPAND_CLOSE,
+       MSG_ICON_LIST_EXPAND_CLOSE_PRESS,
+       MSG_ICON_LIST_EXPAND_OPENED,
+       MSG_ICON_LIST_EXPAND_OPENED_PRESS,
+       MSG_ICON_RADIO_BUTTON_CHECK,
+       MSG_ICON_RADIO_BUTTON_CHECK_PRESS,
+       MSG_ICON_RADIO_BUTTON_UNCHECK,
+       MSG_ICON_RADIO_BUTTON_UNCHECK_PRESS,
+       MSG_ICON_SEND_MESSAGE,
+       MSG_ICON_SEND_MESSAGE_DIM,
+       MSG_ICON_BUBBLE_DATE_BG,
+       MSG_ICON_CIRCLE_BUTTON_BG,
+       MSG_ICON_CIRCLE_BUTTON_BG_PRESS,
+       MSG_ICON_CIRCLE_BUTTON_BG_DIM,
+       MSG_ICON_WARNING_CIRCLE_BUTTON_BG,
+       MSG_ICON_WARNING_CIRCLE_BUTTON_BG_PRESS,
+       MSG_ICON_WARNING,
+       MSG_ICON_WARNING_PRESS,
+       MSG_ICON_EMPTY_LIST,
+       MSG_ICON_SETTINGS,
+       MSG_ICON_COPY_TO_PHONE,
+       MSG_ICON_RESTORE,
+       MSG_ICON_MESSAGE_BOXES,
+       MSG_ICON_Add,
+       MSG_ICON_SAVE,
+       MSG_ICON_DRAFT,
+       MSG_ICON_SEND_MMS,
+       MSG_ICON_SEND_MMS_DIM,
+       MSG_ICON_ARROW_EXPAND,
+       MSG_ICON_ARROW_EXPAND_PRESS,
+       MSG_ICON_ARROW_EXPAND_DIM,
+       MSG_ICON_ATTACHEMENT,
+       MSG_ICON_BUTTON_PANEL_BG,
+       MSG_ICON_SMIL_DELETE,
+       MSG_ICON_SAVE_ATTACHMENT,
+       MSG_ICON_SMIL_VOLUME,
+       MSG_ICON_SMIL_PLAY,
+       MSG_ICON_SMIL_PAUSE,
+       MSG_ICON_SMIL_NEXT,
+       MSG_ICON_SMIL_PREVIOUS,
+       MSG_ICON_MORE,
+       MSG_ICON_MORE_PRESSED,
+       MSG_ICON_MORE_DISABLED,
+       MSG_ICON_RESEND,
+       MSG_ICON_PAGE_DELETE,
+       MSG_ICON_PAGE_DELETE_PRESS,
+       MSG_ICON_VIEW_CONTACT,
+       MSG_ICON_SEARCH_INPUT_BG,
+       MSG_ICON_PHOTO_DELETE,
+       MSG_ICON_PHOTO_DELETE_PRESS,
+       MSG_ICON_REPLY,
+};
+
+enum MsgControlIds
+{
+       // Control ID
+       IDC_LIST_ITEM,
+       IDC_LIST_TEXT_CONTACT,
+       IDC_LIST_TEXT_DATE_TIME,
+       IDC_LIST_TEXT_MSG,
+       IDC_LIST_MSG_ICON,
+       IDC_LIST_DRAFT_ICON,
+       IDC_LIST_MSG_UNREAD,
+       IDC_LIST_MSG_UNREAD_COUNT,
+       IDC_DELETE_CONTEXT_ITEM,
+       IDC_LIST_CHECK_ITEM,
+       IDC_VOICE_CALL_ITEM,
+       IDC_BLOCK_ITEM,
+       IDC_OPTIONS_LIST,
+       IDC_MESSAGE_OPTIONS,
+       IDC_PHONENUMBER_LIST,
+       IDC_COPY_TO_PHONE,
+       IDC_RESTORE,
+       IDC_CONTACT_NAME_LIST,
+       IDC_CONTACT_NUMBER_LIST,
+       IDC_RESEND_LIST,
+       IDC_DELETE_LIST,
+       IDC_SETTING_ITEM_NAME,
+       IDC_SETTING_ITEM_STATUS,
+       IDC_FILTER_ITEM_NAME,
+       IDC_SETTING_BACKGROUND_ITEM,
+       IDC_SETTING_EXPANDICON_ITEM,
+       IDC_UNBLOCK_ITEM
+};
+
+enum MsgStorageChangeType
+{
+       // msg data
+       MSG_STORAGE_INSERT = 1,
+       MSG_STORAGE_UPDATE,
+       MSG_STORAGE_DELETE,
+
+       // thread data
+       MSG_STORAGE_UPDATE_CONTACT,
+};
+
+enum MsgActionIds
+{
+       // Command IDs
+       IDA_EXIT_CMD,
+       IDA_DELETE_CMD,
+       IDA_MORE_CMD,
+       IDA_COMPOSE_CMD,
+       IDA_BACK_CMD,
+       IDA_SEND_CMD,
+       IDA_Add_ATTACHEMENT_CMD,
+       IDA_OPTION_TRAY_COMMAND,
+       IDA_EDIT_CMD,
+       IDA_VOICE_CALL_CMD,
+       IDA_VIDEO_CALL_CMD,
+       IDA_VIEW_CONTACT,
+       IDA_SELECT_ALL_ON,
+       IDA_SELECT_ALL_OFF,
+       IDA_PROTECTED_MESSAGES_CMD,
+       IDA_CB_MESSAGES_CMD,
+       IDA_SIM_MESSAGES_CMD,
+       IDA_SPAM_MESSAGES_CMD,
+       IDA_DRAFT_MESSAGES_CMD,
+       IDA_THREAD_LIST_CMD,
+       IDA_CANCEL_CMD,
+       IDA_CONVERSATION_FORM_HEADER_TITLEITEM,
+       IDA_CONVERSATION_FORM_VOICE_CALL,
+       IDA_CONVERSATION_FORM_VIEW_CONTACT,
+       IDA_CONVERSATION_FORM_ADD_CONTACT,
+       IDA_CONVERSATION_FORM_BLOCK,
+       IDA_CONVERSATION_FORM_UNBLOCK,
+       IDA_CONVERSATION_DELETE,
+       IDA_BUTTON_MESSAGE_DETAILS_POPUP,
+       IDA_BUTTON_CLOSE_OPTIONS_POPUP,
+       IDA_BUTTON_CLOSE_HELPER_POPUP,
+       IDA_BUTTON_CLOSE_NUMBERLIST_POPUP,
+       IDA_MSG_CLOSE_OPTIONS_POPUP,
+       IDA_SETTING_CMD,
+       IDA_EDIT,
+       IDA_BACK,
+       IDA_ADD,
+       IDA_DONE,
+       IDA_CANCEL,
+       IDA_SAVE,
+       IDA_SAVE_REJECT_NUMBER,
+       IDA_CANCEL_REJECT_NUMBER,
+       IDA_DELETE_SPAM_FILTER,
+       IDA_CANCEL_SPAM_FILTER,
+       IDA_BUTTON_MESSAGE_RESEND_DELETE_POPUP,
+       IDA_THREADLIST_MESSAGE_DELETE,
+       IDA_THREADLIST_MESSAGE_CANCEL,
+       IDA_CONVLISTEDIT_MESSAGE_DELETE,
+       IDA_CONVLISTEDIT_MESSAGE_CANCEL,
+       IDA_CONTACTS,
+       IDA_HEADER_BACK,
+       IDA_COPY_TO_PHONE,
+       IDA_RESTORE,
+       IDA_PHONENUMBER_BLOCK_OK,
+       IDA_PHONENUMBER_BLOCK_CANCEL,
+       // SMS setting action ids
+       IDA_SETTINGS_TEXT_MESSAGES,
+       IDA_SETTINGS_TEXTMSG_REQ_DELIVERY_REPORT,
+       IDA_SETTINGS_TEXTMSG_INPUT_MODE,
+       IDA_SETTINGS_TEXTMSG_GSM_ALPHABET,
+       IDA_SETTINGS_TEXTMSG_GSM_UNICODE,
+       IDA_SETTINGS_TEXTMSG_GSM_AUTOMATIC,
+       IDA_SETTINGS_SERVICE_CENTERS,
+       // MMS setting action ids
+       IDA_SETTINGS_MULTIMEDIA_MESSAGES,
+       IDA_SETTINGS_MULTIMEDIA_RECV_OPTIONS,
+       IDA_SETTINGS_MULTIMEDIA_RECV_HOME_NETWORK,
+       IDA_SETTINGS_HOME_NETWORK_AUTO_DOWNLOAD,
+       IDA_SETTINGS_HOME_NETWORK_MANUAL,
+       IDA_SETTINGS_HOME_NETWORK_REJECT,
+       IDA_SETTINGS_MULTIMEDIA_RECV_FOREIGN_NETWORK,
+       IDA_SETTINGS_FOREIGN_NETWORK_AUTO_DOWNLOAD,
+       IDA_SETTINGS_FOREIGN_NETWORK_MANUAL,
+       IDA_SETTINGS_FOREIGN_NETWORK_RESTRICTED,
+       IDA_SETTINGS_FOREIGN_NETWORK_REJECT,
+       IDA_SETTINGS_MULTIMEDIA_DELIVERY_REPORT,
+       IDA_SETTINGS_MULTIMEDIA_READ_REPORT,
+       IDA_SETTINGS_READ_REPORT_REQUEST,
+       IDA_SETTINGS_READ_REPORT_SEND,
+       IDA_SETTINGS_MULTIMEDIA_CREATION_MODE,
+       IDA_SETTINGS_CREATION_MODE_FREE,
+       IDA_SETTINGS_CREATION_MODE_WARNING,
+       IDA_SETTINGS_CREATION_MODE_RESTRICTED,
+
+       IDA_SETTINGS_SPAM_MESSAGES,
+       IDA_SETTINGS_SPAM_REJECT_NUMBERS,
+       IDA_SETTINGS_MATCH_CRITERIA,
+       IDA_SETTINGS_MATCH_CRITERIA_EXACTLY,
+       IDA_SETTINGS_MATCH_CRITERIA_START_WITH,
+       IDA_SETTINGS_MATCH_CRITERIA_INCLUDE,
+       IDA_SETTINGS_SPAM_BLOCK_WORDS,
+       IDA_SETTINGS_BROADCAST_MESSAGES,
+       IDA_SETTINGS_FONT_SIZE,
+       IDA_SETTINGS_VOLUME_KEY,
+
+       IDA_SETTINGS_SYSTEM_FONT,
+       IDA_SETTINGS_HUGE_FONT,
+       IDA_SETTINGS_LARGE_FONT,
+       IDA_SETTINGS_NORMAL_FONT,
+       IDA_SETTINGS_SMALL_FONT,
+       IDA_SETTINGS_TINY_FONT,
+       IDA_SELECT_SPAM_CONTACT_NUMBER,
+       IDA_SPAM_NUMBER_CONFIRMATION_YES,
+       IDA_SPAM_NUMBER_CONFIRMATION_NO,
+       IDA_SPAM_WORD_CONFIRMATION_YES,
+       IDA_SPAM_WORD_CONFIRMATION_NO,
+       IDA_DISCARD_MESSAGE_OK,
+       IDA_DISCARD_MESSAGE_CANCEL,
+       IDA_CLOSE,
+       IDA_OK,
+       IDA_SAVE_ATTACHMENT,
+       IDA_DELETE_MESSAGE,
+       IDA_FORWARD_MESSAGE,
+       IDA_REPLY_MESSAGE,
+       IDA_RESEND_MESSAGE,
+       IDA_COPY_MESSAGE_TEXT,
+       IDA_MORE,
+       IDA_PREVIEW,
+       IDA_PAGE_DURATION,
+       IDA_MMSDETAIL_FORM_HEADER_TITLEITEM,
+       IDA_VOLUME,
+       IDA_PREVIOUS,
+       IDA_PLAY,
+       IDA_NEXT,
+       IDA_OK_DELETE,
+       IDA_CANCEL_DELETE
+};
+
+enum ConversationListFormType
+{
+       CONVERSATION_LIST_FORM_VIEW,
+       CONVERSATION_LIST_FORM_EDIT,
+};
+
+enum ThreadListFormType
+{
+       THREAD_LIST_FORM_VIEW,
+       THREAD_LIST_FORM_EDIT,
+       THREAD_LIST_FORM_SIMMSG_VIEW,
+       THREAD_LIST_FORM_SIMMSG_EDIT,
+       THREAD_LIST_FORM_SPAMMSG_VIEW,
+       THREAD_LIST_FORM_SPAMMSG_EDIT,
+       THREAD_LIST_FORM_DRAFTMSG_VIEW,
+       THREAD_LIST_FORM_DRAFTMSG_EDIT,
+       THREAD_LIST_FORM_CBMSG_VIEW,
+       THREAD_LIST_FORM_CBMSG_EDIT
+};
+
+enum ThreadListType
+{
+       THREAD_LIST_TYPE_THREAD,
+       THREAD_LIST_TYPE_SPAM,
+       THREAD_LIST_TYPE_SIM,
+       THREAD_LIST_TYPE_CBMSG,
+       THREAD_LIST_TYPE_DRAFT,
+};
+
+enum RequestType
+{
+       REQUEST_DELETE_THREAD,
+       REQUEST_DELETE_MESSAGE,
+       REQUEST_NORMAL_VIEW,
+       REQUEST_EDIT_VIEW,
+       // MMS Compose add element request
+       REQUEST_ADD_SUBJECT,
+       REQUEST_OPEN_GALLARY,
+       REQUEST_TAKE_PICTURE,
+       REQUEST_CAPTURE_VIDEO,
+       REQUEST_RECORD_AUDIO,
+       REQUEST_OPEN_MY_FILES,
+       REQUEST_ADD_CONTACTS,
+       REQUEST_ADD_CALENDAR,
+       REQUEST_ADD_MEMO,
+       REQUEST_CHECK_COMPOSE_STATE,
+       REQUEST_SHOW_COMPOSE_INFO,
+       REQUEST_IMAGE_RESIZE_RESPONSE,
+       REQUEST_DESTROY_ATTACH_POPUP,
+       REQUEST_SAVE_MESSAGE_ATTACHMENTS,
+       REQUEST_OPTION_POPUP,
+       REQUEST_DESTROY_SAVE_ATTACHMENT_POPUP,
+       REQUEST_DESTROY_DURATION_POPUP,
+       REQUEST_SHOW_MESSAGE,
+       REQUEST_SET_FOCUS_RECIPIENT,
+       REQUEST_DELETE_START,
+       REQUEST_DELETE_UPDATE,
+       REQUEST_DELETE_COMPLETE,
+       REQUEST_ENABLE_DISABLE_SEND_BUTTON,
+       REQUEST_CLOSE_POPUP,
+       REQUEST_MOVE_FOCUS_RECIPIENT,
+       REQUEST_UDATE_FOCUS,
+};
+
+enum SpamFiterType
+{
+       SPAM_FILTER_TYPE_BLOCK_WORD,
+       SPAM_FILTER_TYPE_BLOCK_NUMBER
+};
+
+enum SettingInputModeType
+{
+       SETTING_INPUTMODE_ENCODE_GSM_ALPHABET,
+       SETTING_INPUTMODE_ENCODE_UCS2,
+       SETTING_INPUTMODE_ENCODE_AUTO,
+};
+
+enum SettingReceiveDownloadType
+{
+       SETTING_RECV_DOWNLOAD_AUTO,
+       SETTING_RECV_DOWNLOAD_MANUAL,
+       SETTING_RECV_DOWNLOAD_RESTRICTED,
+       SETTING_RECV_DOWNLOAD_REJECT
+};
+
+enum SettingCreationModeType
+{
+       SETTING_CREATION_MODE_RESTRICTED,
+       SETTING_CREATION_MODE_WARNING,
+       SETTING_CREATION_MODE_FREE
+};
+
+enum SettingMatchCriteriaType
+{
+       SETTING_MATCH_CRITERIA_ADDRESS_SAME,
+       SETTING_MATCH_CRITERIA_ADDRESS_START,
+       SETTING_MATCH_CRITERIA_ADDRESS_INCLUDE
+};
+
+enum SettingFontType
+{
+       SETTING_SYSTEM_FONT,
+       SETTING_TINY_FONT,
+       SETTING_SMALL_FONT,
+       SETTING_NORMAL_FONT,
+       SETTING_LARGE_FONT,
+       SETTING_HUGE_FONT,
+};
+
+enum MsgFontIds
+{
+       MSG_FONT_ID_SYSTEM,
+       MSG_FONT_ID_HUGE,
+       MSG_FONT_ID_LARGE,
+       MSG_FONT_ID_NORMAL,
+       MSG_FONT_ID_SMALL,
+       MSG_FONT_ID_TINY,
+       MSG_FONT_ID_TIME_STAMP,
+};
+
+enum GroupBgBitmapType
+{
+       MSG_GROUP_BG_BITMAP_BUBBLE,
+       MSG_GROUP_BG_BITMAP_SETTING,
+};
+
+enum ComposerLaunchType
+{
+       COMPOSER_LAUNCH_APP_CONTROL,
+       COMPOSER_LAUNCH_FORWORD_MESSAGE,
+       COMPOSER_LAUNCH_REPLY_MESSAGE,
+       COMPOSER_LAUNCH_DRAFT_MESSAGE,
+};
+
+enum MsgResponse
+{
+       MSG_RESPONSE_SUCCESS = 0,
+       MSG_RESPONSE_FAIL = -1,
+       MSG_RESPONSE_EMPTY_BODY = -2,
+       MSG_RESPONSE_NO_SIM = -3,
+       MSG_RESPONSE_INVALID_BODY = -4,
+       MSG_RESPONSE_MAX_PAGE = -5,
+       MSG_RESPONSE_INVALID_MSG_TYPE = -6,
+       MSG_RESPONSE_INVALID_PAGE = -7,
+       MSG_RESPONSE_INVALID_MEDIA_TYPE = -8,
+       MSG_RESPONSE_CREATION_MODE_FAIL = -9,
+       MSG_RESPONSE_ATTACHMENT_ALREADY_EXIST = -10,
+       MSG_RESPONSE_LOW_RESOLUTION = -11,
+       MSG_RESPONSE_HIGH_RESOLUTION = -12,
+       MSG_RESPONSE_NONSTANDARD_FILE = -13,
+       MSG_RESPONSE_RECIPIENT_INVALID = -14,
+       MSG_RESPONSE_RECIPIENT_ZERO = -15,
+       MSG_RESPONSE_RECIPIENT_COUNTMAX = -16,
+       MSG_RESPONSE_RECIPIENT_DUPLICATE = -17,
+       MSG_RESPONSE_MSG_SIZE_OVER = -18,
+       MSG_RESPONSE_RESIZE_IMAGE = -19,
+       MSG_RESPONSE_DRM_FORWARDLOCK = -20,
+       MSG_RESPONSE_OVERSIZE_FILE = -21,
+};
+
+enum MmsFormType
+{
+       MMS_FORM_NORMAL,
+       MMS_FORM_PREVIEW,
+};
+
+enum MediaType
+{
+       MEDIA_TYPE_IMAGE,
+       MEDIA_TYPE_AUDIO,
+       MEDIA_TYPE_VIDEO,
+       MEDIA_TYPE_UNKNOWN
+};
+
+// Constant
+extern const int YEAR_1900;
+extern const int DAYS_365;
+extern const int LEAP_YEAR_GAP;
+
+//Button
+extern const int W_CANCEL_BUTTON;
+extern const int H_CANCEL_BUTTON;
+extern const int W_SEND_BUTTON;
+extern const int W_ATTACH_BUTTON;
+extern const int H_ATTACH_BUTTON;
+extern const int W_PLAYCONTROL_BUTTON;
+extern const int H_PLAYCONTROL_BUTTON;
+
+//Check Box
+extern const int H_CHECKBOX;
+extern const int W_CHECKBOX;
+
+//Editor
+extern const int H_MSG_COMPOSE_EDITOR;
+extern const int MAX_MSG_EDITOR_LINE;
+extern const int MIN_COMPOSE_EDITOR_HEIGHT;
+
+//Recipent count
+extern const int MAX_COUNT;
+extern const int MAX_ITEM;
+extern const int MAX_LENGTH;
+
+//Panel
+extern const int PANEL_HEIGHT;
+
+//Label
+extern const int H_MSG_DETAILS_LABEL;
+extern const int H_MSG_SELECTION_INFO_LABEL;
+
+// List item
+extern const int H_LIST_ITEM_112PX;
+extern const int H_GROUP_HEADER;
+extern const int W_LIST_ITEM_GROUP_INDICATOR;
+extern const int H_LIST_GROUP;
+extern const int H_TITLE_LINE;
+extern const int H_SUB_TITLE;
+extern const int H_LIST_ITEM_128PX;
+extern const int H_LIST_SWEEP_BUTTON_74PX;
+extern const int W_LIST_SWEEP_BUTTON_100PX;
+
+
+extern const int H_CONTACT_LIST_ITEM;
+extern const int W_LIST_SUB_ITEMS;
+
+//Message Counter
+extern const int MESSAGE_LENGTH;
+extern const int MESSAGE_LENGTH_2;
+extern const int MESSAGE_LENGTH_3;
+extern const int H_SHOW_COUNTER_TEXT;
+
+// Margin
+extern const int MARGIN_4PX;
+extern const int MARGIN_5PX;
+extern const int MARGIN_10PX;
+extern const int MARGIN_12PX;
+extern const int MARGIN_13PX;
+extern const int MARGIN_14PX;
+extern const int MARGIN_15PX;
+extern const int MARGIN_16PX;
+extern const int MARGIN_20PX;
+extern const int MARGIN_22PX;
+extern const int MARGIN_26PX;
+extern const int MARGIN_28PX;
+extern const int MARGIN_42PX;
+extern const int MARGIN_46PX;
+
+extern const int H_ICON_64PX;
+extern const int W_ICON_64PX;
+extern const int H_ICON_60PX;
+extern const int W_ICON_60PX;
+extern const int H_ICON_32PX;
+extern const int W_ICON_32PX;
+extern const int W_ICON_48PX;
+extern const int H_ICON_48PX;
+extern const int H_POPUP_BOTTOM_96PX;
+extern const int H_COMPOSE_IMAGE_132PX;
+extern const int W_COMPOSE_IMAGE_132PX;
+extern const int W_BUBBLE_THUMBNAIL_310PX;
+extern const int H_BUBBLE_THUMBNAIL_204PX;
+extern const int H_UNREAD_ICON;
+extern const int W_UNREAD_ICON;
+extern const int MAX_RESTRICT_IMG_W;
+extern const int MAX_RESTRICT_IMG_H;
+
+//Popup
+extern const int W_POPUP_CONTROL;
+extern const int LIST_ITEM_SUBITEM;
+
+//Gallery
+extern const int H_GALLERY;
+extern const int W_GALLERY;
+
+// Selection info
+extern const int MAX_LEN_SELECTION_INFO;
+extern const int SIZE_1KB;
+extern const int MAX_MMS_SIZE;
+
+// Font Size
+extern const int MSG_SYSTEM_FONT_SIZE;
+extern const int MSG_HUGE_FONT_SIZE;
+extern const int MSG_LARGE_FONT_SIZE;
+extern const int MSG_NORMAL_FONT_SIZE;
+extern const int MSG_SMALL_FONT_SIZE;
+extern const int MSG_TINY_FONT_SIZE;
+extern const int MSG_TIME_FONT_SIZE;
+extern const int MSG_DATE_FONT_SIZE;
+extern const int MSG_SMS_VIEWER_FONT_SIZE;
+// Thread list
+extern const int THREAD_LIST_MAIN_TEXT_FONT_SIZE;
+extern const int THREAD_LIST_SUB_TEXT_FONT_SIZE;
+// List(settings)
+extern const int LIST_MAIN_TEXT_FONT_SIZE;
+extern const int LIST_SUB_TEXT_FONT_SIZE;
+extern const int LIST_GROUP_TEXT_FONT_SIZE;
+
+//Bubble and thread
+extern const int MIN_BUBBLE_HEIGHT;
+extern const int MSG_THREAD_ADDR_LEN;
+extern const int MSG_THREAD_DISPLAY_LEN;
+extern const int MAX_DATE_LEN;
+
+// MMS & SMIL
+extern const int MIN_MMS_SLIDE_DURATION;
+
+
+// Color constant
+extern const Tizen::Graphics::Color COLOR_THREADLIST_SEARCH_TEXT;
+extern const Tizen::Graphics::Color COLOR_THREADLIST_SEARCH_BG;
+extern const Tizen::Graphics::Color COLOR_CHECKBOX_BUTTON;
+extern const Tizen::Graphics::Color COLOR_SELECTION_INFO_LABEL;
+extern const Tizen::Graphics::Color COLOR_SPAM_SETTINGS_ITEM;
+extern const Tizen::Graphics::Color COLOR_THREADLIST_DISPLAY_NAME_ITEM;
+extern const Tizen::Graphics::Color COLOR_THREADLIST_DATE_TIME_SHORTMSG_ITEM;
+extern const Tizen::Graphics::Color COLOR_THREADLIST_UNREAD_NORMAL_ITEM;
+extern const Tizen::Graphics::Color COLOR_COMPOSE_PANEL_BG;
+extern const Tizen::Graphics::Color COLOR_BUBBLE_BG;
+extern const Tizen::Graphics::Color COLOR_SEARCH_TEXT;
+extern const Tizen::Graphics::Color COLOR_CONTACT_SUGGESTION;
+extern const Tizen::Graphics::Color COLOR_BUBBLE_SENT_TIME_STAMP;
+extern const Tizen::Graphics::Color COLOR_BUBBLE_RECEIVE_TIME_STAMP;
+extern const Tizen::Graphics::Color COLOR_BUBBLE_SOS_TIME_STAMP;
+extern const Tizen::Graphics::Color COLOR_BUBBLE_TEXT_NORMAL;
+extern const Tizen::Graphics::Color COLOR_BUBBLE_SOS_TEXT_NORMAL;
+extern const Tizen::Graphics::Color COLOR_SETTING_MAIN_TEXT;
+extern const Tizen::Graphics::Color COLOR_SETTING_SUB_TEXT;
+extern const Tizen::Graphics::Color COLOR_LIST_BG;
+extern const Tizen::Graphics::Color COLOR_LIST_DIALOGUE_GROUP_BG;
+extern const Tizen::Graphics::Color COLOR_LIST_DIALOGUE_GROUP_TITLE;
+extern const Tizen::Graphics::Color COLOR_BLACK;
+extern const Tizen::Graphics::Color COLOR_PANEL_BORDER;
+extern const Tizen::Graphics::Color COLOR_GROUP_BORDER;
+
+// Scene IDs
+extern const wchar_t* IDSCN_THREAD_LIST;
+extern const wchar_t* IDSCN_THREAD_LIST_EDITOR;
+extern const wchar_t* IDSCN_SIM_MESSAGE_LIST;
+extern const wchar_t* IDSCN_SIM_MESSAGE_LIST_EDITOR;
+extern const wchar_t* IDSCN_CB_MESSAGE_LIST;
+extern const wchar_t* IDSCN_CB_MESSAGE_LIST_EDITOR;
+extern const wchar_t* IDSCN_SPAM_MESSAGE_LIST;
+extern const wchar_t* IDSCN_SPAM_MESSAGE_LIST_EDITOR;
+extern const wchar_t* IDSCN_DRAFT_MESSAGE_LIST;
+extern const wchar_t* IDSCN_DRAFT_MESSAGE_LIST_EDITOR;
+extern const wchar_t* IDSCN_CONVERSATION_LIST;
+extern const wchar_t* IDSCN_CONVERSATION_LIST_EDITOR;
+extern const wchar_t* IDSCN_COMPOSER;
+extern const wchar_t* IDSCN_SMS_VIEWER;
+extern const wchar_t* IDSCN_MMS_DETAIL;
+
+extern const wchar_t* IDSCN_SETTINGS;
+extern const wchar_t* IDSCN_SETTINGS_TEXT_MESSAGE;
+extern const wchar_t* IDSCN_SETTINGS_TEXT_MESSAGE_SERVICE_CENTERS;
+extern const wchar_t* IDSCN_SETTINGS_TEXT_MESSAGE_EDIT_SERVICE_CENTER;
+extern const wchar_t* IDSCN_SETTINGS_MULTIMEDIA_MESSAGE;
+extern const wchar_t* IDSCN_SETTINGS_MULTIMEDIA_RECEIVING_OPTIONS;
+extern const wchar_t* IDSCN_SETTINGS_MULTIMEDIA_READ_REPORT;
+extern const wchar_t* IDSCN_SETTINGS_SPAM_MESSAGE;
+extern const wchar_t* IDSCN_SETTINGS_SPAM_AUTO_REJECT;
+extern const wchar_t* IDSCN_SETTINGS_SPAM_ADD_REJECT_NUMBER;
+extern const wchar_t* IDSCN_SETTINGS_SPAM_DELETE_REJECT_NUMBER;
+extern const wchar_t* IDSCN_SETTINGS_SPAM_BLOCK_WORD;
+extern const wchar_t* IDSCN_SETTINGS_SPAM_ADD_BLOCK_WORD;
+extern const wchar_t* IDSCN_SETTINGS_SPAM_DELETE_BLOCK_WORD;
+extern const wchar_t* IDSCN_SETTINGS_FONT_SIZE;
+
+// Form IDs
+extern const wchar_t* IDFRM_THREAD_LIST;
+extern const wchar_t* IDFRM_THREAD_LIST_EDITOR;
+extern const wchar_t* IDFRM_SIM_MESSAGE_LIST;
+extern const wchar_t* IDFRM_SIM_MESSAGE_LIST_EDITOR;
+extern const wchar_t* IDFRM_CB_MESSAGE_LIST;
+extern const wchar_t* IDFRM_CB_MESSAGE_LIST_EDITOR;
+extern const wchar_t* IDFRM_SPAM_MESSAGE_LIST;
+extern const wchar_t* IDFRM_SPAM_MESSAGE_LIST_EDITOR;
+extern const wchar_t* IDFRM_DRAFT_MESSAGE_LIST;
+extern const wchar_t* IDFRM_DRAFT_MESSAGE_LIST_EDITOR;
+extern const wchar_t* IDFRM_CONVERSATION_LIST;
+extern const wchar_t* IDFRM_CONVERSATION_LIST_EDITOR;
+extern const wchar_t* IDFRM_COMPOSER;
+extern const wchar_t* IDFRM_SMS_VIEWER;
+extern const wchar_t* IDFRM_MMS_DETAIL;
+extern const wchar_t* IDFRM_SETTINGS;
+extern const wchar_t* IDFRM_SETTINGS_TEXT_MESSAGE;
+extern const wchar_t* IDFRM_SETTINGS_TEXT_MESSAGE_SERVICE_CENTERS;
+extern const wchar_t* IDFRM_SETTINGS_TEXT_MESSAGE_EDIT_SERVICE_CENTER;
+extern const wchar_t* IDFRM_SETTINGS_MULTIMEDIA_MESSAGE;
+extern const wchar_t* IDFRM_SETTINGS_MULTIMEDIA_RECEIVING_OPTIONS;
+extern const wchar_t* IDFRM_SETTINGS_MULTIMEDIA_READ_REPORT;
+extern const wchar_t* IDFRM_SETTINGS_SPAM_MESSAGE;
+extern const wchar_t* IDFRM_SETTINGS_SPAM_AUTO_REJECT;
+extern const wchar_t* IDFRM_SETTINGS_SPAM_ADD_REJECT_NUMBER;
+extern const wchar_t* IDFRM_SETTINGS_SPAM_DELETE_REJECT_NUMBER;
+extern const wchar_t* IDFRM_SETTINGS_SPAM_BLOCK_WORD;
+extern const wchar_t* IDFRM_SETTINGS_SPAM_ADD_BLOCK_WORD;
+extern const wchar_t* IDFRM_SETTINGS_SPAM_DELETE_BLOCK_WORD;
+extern const wchar_t* IDFRM_SETTINGS_FONT_SIZE;
+
+extern const wchar_t* IDS_SETTING_FONT_TYPE;
+extern const wchar_t* IDS_SETTING_VOLUME_KEY;
+extern const wchar_t* IDS_LIST_MAIN_TEXT;
+extern const wchar_t* IDS_LIST_SUB_TEXT;
+
+
+extern const wchar_t* IDS_APPCONTROL_OPERATION_MAIN;
+extern const wchar_t* IDS_APPCONTROL_OPERATION_CALL;
+extern const wchar_t* IDS_APPCONTROL_OPERATION_ADD;
+extern const wchar_t* IDS_APPCONTROL_OPERATION_VIEW;
+extern const wchar_t* IDS_APPCONTROL_OPERATION_PICK;
+extern const wchar_t* IDS_APPCONTROL_OPERATION_COMPOSE;
+extern const wchar_t* IDS_APPCONTROL_OPERATION_SETTINGS;
+extern const wchar_t* IDS_APPCONTROL_OPERATION_RECORD;
+extern const wchar_t* IDS_APPCONTROL_OPERATION_CAPTURE;
+
+extern const wchar_t* IDS_APPCONTROL_PROVIDER_MESSAGE;
+extern const wchar_t* IDS_APPCONTROL_PROVIDER_CALL;
+extern const wchar_t* IDS_APPCONTROL_PROVIDER_CONTACT;
+extern const wchar_t* IDS_APPCONTROL_PROVIDER_MEDIA;
+extern const wchar_t* IDS_APPCONTROL_PROVIDER_IMAGE;
+extern const wchar_t* IDS_APPCONTROL_PROVIDER_CAMERA;
+extern const wchar_t* IDS_APPCONTROL_PROVIDER_VIDEO;
+extern const wchar_t* IDS_APPCONTROL_PROVIDER_AUDIO;
+extern const wchar_t* IDS_APPCONTROL_PROVIDER_CALENDAR;
+extern const wchar_t* IDS_APPCONTROL_PROVIDER_GALLERY;
+extern const wchar_t* IDS_APPCONTROL_PROVIDER_MEMO;
+
+extern const wchar_t* IDS_MESSAGING;
+extern const wchar_t* IDS_MESSAGES;
+extern const wchar_t* IDS_FONT_HELVETICA_NEUE;
+extern const wchar_t* IDS_SUBJECT;
+extern const wchar_t* IDS_BLANK;
+extern const wchar_t* IDS_BLANK_SPACE;
+extern const wchar_t* IDS_NEW_LINE;
+extern const wchar_t* IDS_CHAR_SLASH;
+extern const wchar_t* IDS_COLON;
+extern const wchar_t* IDS_SEMICOLON;
+extern const wchar_t* IDS_COMMA_SPACE;
+extern const wchar_t* IDS_PLUS_SPACE;
+extern const wchar_t* IDS_TYPE;
+extern const wchar_t* IDS_TEXT;
+extern const wchar_t* IDS_TO;
+extern const wchar_t* IDS_SMS;
+extern const wchar_t* IDS_UNKNOWN;
+extern const wchar_t* IDS_SELECTED_NUMBER_IDS;
+extern const wchar_t* IDS_DELETED_NUMBER_IDS;
+extern const wchar_t* IDS_RESTORE_NUMBER_IDS;
+extern const wchar_t* FORMAT_SPECIFIER_INT;
+extern const wchar_t* IDS_DRAFT;
+extern const wchar_t* IDS_TYPE_IMAGE;
+
+#endif // _MSG_TYPES_H_
diff --git a/manifest.xml b/manifest.xml
new file mode 100644 (file)
index 0000000..773e297
--- /dev/null
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Manifest xmlns="http://schemas.tizen.org/2012/12/manifest">
+    <Id>8r4r5ddzzn</Id>
+    <Version>1.0.0</Version>
+    <Type>C++App</Type>
+    <Author/>
+    <Descriptions>
+        <Description Locale="eng-PH"/>
+        <Description Locale="zho-SG"/>
+        <Description Locale="kat-GE"/>
+        <Description Locale="est-EE"/>
+        <Description Locale="ukr-UA"/>
+        <Description Locale="srp-RS"/>
+        <Description Locale="hrv-HR"/>
+        <Description Locale="isl-IS"/>
+        <Description Locale="ell-GR"/>
+        <Description Locale="glg-ES"/>
+        <Description Locale="lit-LT"/>
+        <Description Locale="aze-AZ"/>
+        <Description Locale="eng-US"/>
+        <Description Locale="mkd-MK"/>
+        <Description Locale="zho-HK"/>
+        <Description Locale="slk-SK"/>
+        <Description Locale="hun-HU"/>
+        <Description Locale="hye-AM"/>
+        <Description Locale="ces-CZ"/>
+        <Description Locale="fin-FI"/>
+        <Description Locale="ara-AE"/>
+        <Description Locale="eus-ES"/>
+        <Description Locale="ita-IT"/>
+        <Description Locale="tur-TR"/>
+        <Description Locale="rus-RU"/>
+        <Description Locale="cat-ES"/>
+        <Description Locale="kaz-KZ"/>
+        <Description Locale="deu-DE"/>
+        <Description Locale="zho-CN"/>
+        <Description Locale="por-PT"/>
+        <Description Locale="slv-SI"/>
+        <Description Locale="fra-FR"/>
+        <Description Locale="ron-RO"/>
+        <Description Locale="hin-IN"/>
+        <Description Locale="fra-CA"/>
+        <Description Locale="spa-ES"/>
+        <Description Locale="nld-NL"/>
+        <Description Locale="dan-DK"/>
+        <Description Locale="por-BR"/>
+        <Description Locale="bul-BG"/>
+        <Description Locale="zho-TW"/>
+        <Description Locale="jpn-JP"/>
+        <Description Locale="swe-SE"/>
+        <Description Locale="kor-KR"/>
+        <Description Locale="spa-MX"/>
+        <Description Locale="nob-NO"/>
+        <Description Locale="uzb-UZ"/>
+        <Description Locale="pol-PL"/>
+        <Description Locale="gle-IE"/>
+        <Description Locale="lav-LV"/>
+        <Description Locale="eng-GB"/>
+    </Descriptions>
+    <Requirements>
+        <Feature Name="http://tizen.org/feature/platform.core.cpu.arch">x86</Feature>
+        <Feature Name="http://tizen.org/feature/platform.core.fpu.arch">vfpv3</Feature>
+        <Feature Name="http://tizen.org/feature/screen.coordinate_system.logical">Normal</Feature>
+    </Requirements>
+    <Apps>
+        <ApiVersion>2.0</ApiVersion>
+        <Privileges>
+            <Privilege>http://tizen.org/privilege/calendar.read</Privilege>
+            <Privilege>http://tizen.org/privilege/application.launch</Privilege>
+            <Privilege>http://tizen.org/privilege/camera</Privilege>
+            <Privilege>http://tizen.org/privilege/contact.write</Privilege>
+            <Privilege>http://tizen.org/privilege/setting</Privilege>
+            <Privilege>http://tizen.org/privilege/systeminfo</Privilege>
+            <Privilege>http://tizen.org/privilege/contact.read</Privilege>
+        </Privileges>
+        <UiApp Main="True" MenuIconVisible="True" Name="Messages" SubMode="True">
+            <UiScalability BaseScreenSize="Normal" CoordinateSystem="Logical" LogicalCoordinate="720"/>
+            <UiTheme SystemTheme="White"/>
+            <DisplayNames>
+                <DisplayName Locale="eng-PH">Messages-Ref</DisplayName>
+                <DisplayName Locale="zho-SG">讯息-Ref</DisplayName>
+                <DisplayName Locale="kat-GE">შეტყობინებები-Ref</DisplayName>
+                <DisplayName Locale="est-EE">Sõnumid-Ref</DisplayName>
+                <DisplayName Locale="ukr-UA">Повідомлення-Ref</DisplayName>
+                <DisplayName Locale="srp-RS">Poruke-Ref</DisplayName>
+                <DisplayName Locale="hrv-HR">Poruke-Ref</DisplayName>
+                <DisplayName Locale="isl-IS">Skilaboð-Ref</DisplayName>
+                <DisplayName Locale="ell-GR">Μηνύματα-Ref</DisplayName>
+                <DisplayName Locale="glg-ES">Mensaxes-Ref</DisplayName>
+                <DisplayName Locale="lit-LT">Žinutės-Ref</DisplayName>
+                <DisplayName Locale="aze-AZ">Mesajlar-Ref</DisplayName>
+                <DisplayName Locale="eng-US">Messages-Ref</DisplayName>
+                <DisplayName Locale="mkd-MK">Пораки-Ref</DisplayName>
+                <DisplayName Locale="zho-HK">訊息-Ref</DisplayName>
+                <DisplayName Locale="hye-AM">Հղրդգրթ-Ref</DisplayName>
+                <DisplayName Locale="hun-HU">Üzenetek-Ref</DisplayName>
+                <DisplayName Locale="slk-SK">Správy-Ref</DisplayName>
+                <DisplayName Locale="ces-CZ">Zprávy-Ref</DisplayName>
+                <DisplayName Locale="fin-FI">Viestit-Ref</DisplayName>
+                <DisplayName Locale="ara-AE">الرسائل-Ref</DisplayName>
+                <DisplayName Locale="ita-IT">Messaggi-Ref</DisplayName>
+                <DisplayName Locale="eus-ES">Mezuak-Ref</DisplayName>
+                <DisplayName Locale="tur-TR">Mesajlar-Ref</DisplayName>
+                <DisplayName Locale="rus-RU">Сообщения-Ref</DisplayName>
+                <DisplayName Locale="cat-ES">Missatges-Ref</DisplayName>
+                <DisplayName Locale="kaz-KZ">Хабарламалар-Ref</DisplayName>
+                <DisplayName Locale="deu-DE">Nachrichten-Ref</DisplayName>
+                <DisplayName Locale="zho-CN">信息-Ref</DisplayName>
+                <DisplayName Locale="por-PT">Mensagem-Ref</DisplayName>
+                <DisplayName Locale="slv-SI">Sporočila-Ref</DisplayName>
+                <DisplayName Locale="fra-FR">Messages-Ref</DisplayName>
+                <DisplayName Locale="ron-RO">Mesaje-Ref</DisplayName>
+                <DisplayName Locale="hin-IN">सन्देश-Ref</DisplayName>
+                <DisplayName Locale="fra-CA">Messages-Ref</DisplayName>
+                <DisplayName Locale="spa-ES">Mensajes-Ref</DisplayName>
+                <DisplayName Locale="nld-NL">Berichten-Ref</DisplayName>
+                <DisplayName Locale="dan-DK">Meddelelser-Ref</DisplayName>
+                <DisplayName Locale="por-BR">Mensagens-Ref</DisplayName>
+                <DisplayName Locale="bul-BG">Съобщения-Ref</DisplayName>
+                <DisplayName Locale="zho-TW">訊息-Ref</DisplayName>
+                <DisplayName Locale="jpn-JP">メッセージ-Ref</DisplayName>
+                <DisplayName Locale="swe-SE">Meddelanden-Ref</DisplayName>
+                <DisplayName Locale="kor-KR">메시지-Ref</DisplayName>
+                <DisplayName Locale="spa-MX">Mensajes-Ref</DisplayName>
+                <DisplayName Locale="nob-NO">Meldinger-Ref</DisplayName>
+                <DisplayName Locale="uzb-UZ">Xabarlar-Ref</DisplayName>
+                <DisplayName Locale="pol-PL">Wiadomości-Ref</DisplayName>
+                <DisplayName Locale="gle-IE">Teachtaireachtaí-Ref</DisplayName>
+                <DisplayName Locale="eng-GB">Messages-Ref</DisplayName>
+                <DisplayName Locale="lav-LV">Ziņas-Ref</DisplayName>
+            </DisplayNames>
+            <Icons>
+                <Icon Section="MainMenu" Type="Xhigh">mainmenu.png</Icon>
+            </Icons>
+            <AppControls>
+                <AppControl>
+                    <Operation>http://tizen.org/appcontrol/operation/compose</Operation>
+                    <Operation>http://tizen.org/appcontrol/operation/configure</Operation>
+                </AppControl>
+            </AppControls>
+            <LaunchConditions/>
+            <Notifications/>
+        </UiApp>
+    </Apps>
+</Manifest>
diff --git a/packaging/apps.Messages.spec b/packaging/apps.Messages.spec
new file mode 100644 (file)
index 0000000..55fa69b
--- /dev/null
@@ -0,0 +1,58 @@
+Name:       apps.Messages
+Summary:    Messages application
+Version:    1.0.0.0
+Release:    1
+Group:      TO_BE/FILLED_IN
+License:    TO BE FILLED IN
+Source0:    %{name}-%{version}.tar.gz
+BuildRequires:  cmake
+BuildRequires:  pkgconfig(osp-content)
+BuildRequires:  pkgconfig(msg-service)
+BuildRequires:  pkgconfig(osp-appfw)
+BuildRequires:  pkgconfig(osp-uifw)
+BuildRequires:  pkgconfig(osp-social)
+BuildRequires:  pkgconfig(osp-media)
+BuildRequires:  pkgconfig(osp-image)
+BuildRequires:  pkgconfig(osp-messaging)
+BuildRequires:  pkgconfig(osp-image-core)
+BuildRequires:  pkgconfig(osp-telephony)
+
+Requires: osp-installer
+
+%description
+Verification application: Messages
+
+%prep
+%setup -q
+
+%build
+MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'`
+%ifarch %{ix86}
+CXXFLAGS="$CXXFLAGS -D_OSP_DEBUG_ -D_OSP_X86_ -D_OSP_EMUL_" cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DFULLVER=%{version} -DMAJORVER=${MAJORVER}
+%else
+CXXFLAGS="$CXXFLAGS -D_OSP_DEBUG_ -D_OSP_ARMEL_" cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DFULLVER=%{version} -DMAJORVER=${MAJORVER}
+%endif
+
+# Call make instruction with smp support
+make %{?jobs:-j%jobs}
+
+%install
+rm -rf %{buildroot}
+%make_install
+
+%post
+/sbin/ldconfig
+PKG_ID=8r4r5ddzzn
+echo "/usr/etc/package-manager/backend/tpk -i /usr/apps/"${PKG_ID}
+/usr/etc/package-manager/backend/tpk -i /usr/apps/${PKG_ID}
+cp -f /usr/lib/osp/osp-ui-app-loader /usr/apps/${PKG_ID}/bin/Messages
+
+%postun
+/sbin/ldconfig
+PKG_ID=8r4r5ddzzn
+echo "/usr/etc/package-manager/backend/tpk -u "${PKG_ID}
+/usr/etc/package-manager/backend/tpk -u ${PKG_ID}
+
+%files
+%defattr(-,root,root,-)
+/usr/apps/*
diff --git a/res/ara-AE.xml b/res/ara-AE.xml
new file mode 100644 (file)
index 0000000..9d3243b
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">تفاصيل الرسالة</text>
+    <text id="IDS_COM_SK3_PREVIEW">معاينة</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d تم تحديد</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">يجب أن تكون المدة أطول من %d ثوان</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">تم تجاوز الحد الأقصى لعدد الحروف. احذف بعض الحروف</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">اختيار الكل</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">لا يوجد موضوع</text>
+    <text id="IDS_COM_POP_CLOSE">إغلاق</text>
+    <text id="IDS_COM_BODY_TO">إلى</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">التقاط صورة</text>
+    <text id="IDS_COM_POP_DELETE_Q">مسح؟</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">نمط الإدخال</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">تم بلوغ الحد الأقصى لعدد المستلمين (%d)</text>
+    <text id="IDS_COM_SK_NO">لا</text>
+    <text id="IDS_COM_BODY_MY_FILES">ملفاتي</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">نسخ إلى الهاتف</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">رسائل CB</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">مركز الخدمة</text>
+    <text id="IDS_COM_BODY_SMS">رسالة قصيرة</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">رسالة فشل الإرسال</text>
+    <text id="IDS_COM_POP_SUCCESS">نجاح</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">مقيد</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">لن يتم حظر الرسائل التي تم استلامها من جهات اتصالك حتى وإن كان بها كلمات محظورة</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">إلغاء الحجب</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">نسخ نص الرسالة</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">تقرير القراءة</text>
+    <text id="IDS_COM_BODY_MESSAGES">الرسائل</text>
+    <text id="IDS_COM_SK_OPTIONS">خيارات</text>
+    <text id="IDS_COM_SK_DONE">تمت</text>
+    <text id="IDS_COM_POP_PM">م</text>
+    <text id="IDS_COM_BODY_UNKNOWN">غير معروف</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">رسائل المسودة</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">الخدمة غير متوفرة</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">إضافة كلمة</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">حظر %s؟</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">تغيير حجم النص باستخدام مفتاح الصوت</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">رسالة جديدة</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">رسائل البريد العشوائي‬</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">يتضمن</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">الأرقام المحظورة</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">رسائل الوسائط</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">تعديل كلمة</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">انتهت المدة</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">تحذير</text>
+    <text id="IDS_COM_SK_EDIT">تعديل</text>
+    <text id="IDS_COM_POP_FAILED">فشل</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">حذف الرقم</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">تسجيل الصوت</text>
+    <text id="IDS_COM_SK_BACK">رجوع</text>
+    <text id="IDS_MSGF_BODY_UNICODE">الرمز الموحد</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">حذف كلمات</text>
+    <text id="IDS_COM_BODY_FORWARD">تحويل</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">لا توجد رسائل</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">الشبكة الأجنبية</text>
+    <text id="IDS_MSGF_BODY_FROM">من</text>
+    <text id="IDS_COM_SK_DELETE">مسح</text>
+    <text id="IDS_MSGF_SK3_UNREAD">غير مقروءة</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">مستلم مكرر</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">أبجدية GSM</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">رسائل بطاقة SIM</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">تم الإرسال</text>
+    <text id="IDS_COM_BODY_CONTACTS">الأسماء</text>
+    <text id="IDS_MSGF_OPT_STATUS">الحالة</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">حر</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">النوع</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">تحميل تلقائي</text>
+    <text id="IDS_MSGF_SK_RESEND">إعادة إرسال</text>
+    <text id="IDS_COM_SK_CANCEL">إلغاء</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">خيارات الاستقبال</text>
+    <text id="IDS_COM_BODY_GALLERY">استوديو</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">المدة\n‏(%d ثوان)</text>
+    <text id="IDS_COM_BODY_SEARCH">بحث</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">صناديق الرسائل</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">إضافة رقم</text>
+    <text id="IDS_COM_BODY_MEMO">المذكرة</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">نسخ إلى البطاقة</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">أدخل الرقم</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">إضافة اسم</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">الشبكة المحلية</text>
+    <text id="IDS_COM_POP_REJECTED">مرفوضة</text>
+    <text id="IDS_COM_BODY_SETTINGS">الضبط</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">يبدأ بـ</text>
+    <text id="IDS_COM_BODY_DISPLAY">الشاشة</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">تشغيل الحماية</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">يدوي</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">بطاقة SIM غير متاحة</text>
+    <text id="IDS_COM_POP_DELETED">تم المسح</text>
+    <text id="IDS_COM_SK_SEND_ABB">إرسال</text>
+    <text id="IDS_MSGF_POP_FORWARDED">تم التحويل</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">مركز %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">تعديل رقم</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">تلقائي</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">عرض تفاصيل الرسالة</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">رفض</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">مكالمة صوتية</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">استخدام مفتاح الصوت</text>
+    <text id="IDS_COM_SK_SAVE">حفظ</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">مطابق تماما</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">لا توجد نتائج للبحث</text>
+    <text id="IDS_MSGF_BODY_MMS">رسالة وسائط</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">نمط الإنشاء</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">رسائل نصية</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">تم الاستلام</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">مطابقة المعيار</text>
+    <text id="IDS_MSGF_POP_DEFERRED">مؤجل</text>
+    <text id="IDS_COM_SK_ADD">إضافة</text>
+    <text id="IDS_MSGF_OPT_BLOCK">حجب</text>
+    <text id="IDS_COM_SK_YES">نعم</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">عرض الاسم</text>
+    <text id="IDS_COM_SK_SEARCH">بحث</text>
+    <text id="IDS_COM_POP_AM_M_ABB">ص</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">الكلمات المحظورة</text>
+    <text id="IDS_COM_BODY_SUBJECT">الموضوع</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">غير معرف</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">إرسال تقرير قراءة الرسالة</text>
+    <text id="IDS_MSGF_SK_RESTORE">إستعادة</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">طلب تقرير قراءة الرسالة</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">أدخل كلمة</text>
+    <text id="IDS_COM_SK3_COMPOSE">إنشاء</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">حدث خطأ غير معلوم</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">طلب تقرير التوصيل</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">مستلمين غير صالحين</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">رسائل البث</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">حفظ الملحقات</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">تقرير التوصيل</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">رفض الرسالة الحالية؟</text>
+    <text id="IDS_COM_POP_ATTACH">إلحاق</text>
+    <text id="IDS_COM_BODY_CALENDAR">التقويم</text>
+    <text id="IDS_COM_SK_OK">موافق</text>
+    <text id="IDS_COM_SK_CALL">اتصال</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">التقاط فيديو</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">تحديد مستلم</text>
+</string_table>
diff --git a/res/aze-AZ.xml b/res/aze-AZ.xml
new file mode 100644 (file)
index 0000000..f8c5b00
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Mesaj təfərrüatları</text>
+    <text id="IDS_COM_SK3_PREVIEW">İlkin baxış</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d seçilmişdir</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Müddət %d saniyədən çox olmalıdır</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Simvolların maksimum sayı aşıldı. Simvolların bəzilərini sil</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Hamısını seç</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Mövzu yoxdur</text>
+    <text id="IDS_COM_POP_CLOSE">Bağla</text>
+    <text id="IDS_COM_BODY_TO">Kimə</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Şəkil çək</text>
+    <text id="IDS_COM_POP_DELETE_Q">Silinsin?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Daxil etmə rejimi</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Qəbul edənlərin sayı maksimuma (%d) çatıb</text>
+    <text id="IDS_COM_SK_NO">Xeyr</text>
+    <text id="IDS_COM_BODY_MY_FILES">Mənim fayllarım</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Telefona köçür</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">CB mesajları</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Servis mərkəzi</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Uğursuz mesaj göndərilir</text>
+    <text id="IDS_COM_POP_SUCCESS">Uğur</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Məhdudlaşdırılmışdır</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Kontaktlarınızdan gələn mesajlar bloklanmış sözlər ehtiva etsələr də, bloklanmayacaq</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Blokirovkadan çıxar</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Msj.n mtnni kçrn</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Oxunma hesabatı</text>
+    <text id="IDS_COM_BODY_MESSAGES">Mesajlar</text>
+    <text id="IDS_COM_SK_OPTIONS">Seçimlər</text>
+    <text id="IDS_COM_SK_DONE">Bitdi</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Naməlum</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Qaralama mesajlar</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Servisdən istifadə etmək mümkün deyil</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Söz əlavə et</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">%s bloklansın?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Səs düyməsindən istifadə edərək mətn ölçüsünü dəyiş</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Yeni mesaj</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Spam mesajları</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Daxil et</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Bloklanmış nömrələr</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Multimdia mesajları</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Sözü redaktə edin</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Etibarlılıq tarixi artıq keçmişdir</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Diqqət</text>
+    <text id="IDS_COM_SK_EDIT">Redaktə et</text>
+    <text id="IDS_COM_POP_FAILED">Mümkün olmadı</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Nömrəni sil</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Səsi yaz</text>
+    <text id="IDS_COM_SK_BACK">Geriyə</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Yunikod</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Sözləri sil</text>
+    <text id="IDS_COM_BODY_FORWARD">Göndərmək</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Mesaj yoxdur</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Xarici şəbəkə</text>
+    <text id="IDS_MSGF_BODY_FROM">Kimdən</text>
+    <text id="IDS_COM_SK_DELETE">Sil</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Oxunmamış</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Duplikat qəbul edən</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM-əlifba</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM kart mesajları</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Göndərildi</text>
+    <text id="IDS_COM_BODY_CONTACTS">Adlar</text>
+    <text id="IDS_MSGF_OPT_STATUS">Durum</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Azad</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Tip</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Avto yüklənmə</text>
+    <text id="IDS_MSGF_SK_RESEND">Yenidən göndər</text>
+    <text id="IDS_COM_SK_CANCEL">Ləğv et</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Qəbul etmə parametrləri</text>
+    <text id="IDS_COM_BODY_GALLERY">Qalereya</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Müddət\n(%d san)</text>
+    <text id="IDS_COM_BODY_SEARCH">Axtarış</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Mesaj qutuları</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Nömrə əlavə et</text>
+    <text id="IDS_COM_BODY_MEMO">Yaddaş</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">SIM-ə köçürt</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Xahiş olunur nömrəni daxil edin</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Təmas əlavə et</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Ev şəbəkəsi</text>
+    <text id="IDS_COM_POP_REJECTED">İmtina edildi</text>
+    <text id="IDS_COM_BODY_SETTINGS">Parametrlər</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">ilə başla</text>
+    <text id="IDS_COM_BODY_DISPLAY">Displey</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Müdafiə qoşuldu</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Ələ işlət</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM kart qüsuru</text>
+    <text id="IDS_COM_POP_DELETED">Silindi</text>
+    <text id="IDS_COM_SK_SEND_ABB">Göndər</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Ötürülmüşdür</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Mərkəz %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Nömrəni redaktə et</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Avtomatik</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Msj tfərrütlrnı gstr</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">İmtina et</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Səsli zəng</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Səs düyməsindən ist. et</text>
+    <text id="IDS_COM_SK_SAVE">Yaddaşa yaz</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Məhz ... kimi</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Axtarış nəticəsi yoxdur</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Yaratma rejimi</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Mətn mesajları</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Qəbul edildi</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Meyarı uyğunlaşdır</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Təxirə salındı</text>
+    <text id="IDS_COM_SK_ADD">Əlavə et</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Blokirovka et</text>
+    <text id="IDS_COM_SK_YES">Bəli</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Kontaktı görüntülə</text>
+    <text id="IDS_COM_SK_SEARCH">Axtar</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Bloklanmış sözlər</text>
+    <text id="IDS_COM_BODY_SUBJECT">Mövzu</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Tanınmır</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Oxunma haqqında hesabat göndər</text>
+    <text id="IDS_MSGF_SK_RESTORE">Brp. edin</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Oxunma hesabatı tələb et</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Söz daxil et</text>
+    <text id="IDS_COM_SK3_COMPOSE">Yazın</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Naməlum səhv baş verdi</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Çatdırılma haqqında hesabat tələb et</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Qəbul edənlər səhvdir</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Yayım mesajları</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Əlavəni saxla</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Çatdırılma haqqında hesabat</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Cari mesaj ləğv edilsin?</text>
+    <text id="IDS_COM_POP_ATTACH">Əlavə et</text>
+    <text id="IDS_COM_BODY_CALENDAR">Təqvim</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Zəng et</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Video yaz</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Qəbul edəni seç</text>
+</string_table>
diff --git a/res/bul-BG.xml b/res/bul-BG.xml
new file mode 100644 (file)
index 0000000..e2ccc59
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Данни за съобщение</text>
+    <text id="IDS_COM_SK3_PREVIEW">Преглед</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d избрани</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Продължителността трябва да е повече от %d секунди</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Максималният брой знаци е надвишен. Изтрийте няколко знака</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Избери всички</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Няма тема</text>
+    <text id="IDS_COM_POP_CLOSE">Затваряне</text>
+    <text id="IDS_COM_BODY_TO">До</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Направи снимка</text>
+    <text id="IDS_COM_POP_DELETE_Q">Изтриване?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Режим за въвеждане на текст</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Достигнат е максималният брой получатели (%d)</text>
+    <text id="IDS_COM_SK_NO">Не</text>
+    <text id="IDS_COM_BODY_MY_FILES">Моите файлове</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Копиране в телефона</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Циркулярни съобщения</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Център за обслужване</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Изпращане на неуспешно съобщение</text>
+    <text id="IDS_COM_POP_SUCCESS">Успешно</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Ограничен</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Съобщенията, получени от вашите записи, няма да бъдат блокирани, дори когато съдържат блокирани думи</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Разблокиране</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Копирай текст съобщ.</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Отчет за прочетени</text>
+    <text id="IDS_COM_BODY_MESSAGES">Съобщения</text>
+    <text id="IDS_COM_SK_OPTIONS">Опции</text>
+    <text id="IDS_COM_SK_DONE">Готово</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Няма информация</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Чернови съобщения</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Услугата не е налична</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Добавяне на дума</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Блокиране на %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Променете размера на текста, като използвате клавиша за сила на звука</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Ново съобщение</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Съобщения със спам</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Включване</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Блокирани номера</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Мултимедийни съобщения</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Редактиране на дума</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">С изтекъл срок</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Предупреждение</text>
+    <text id="IDS_COM_SK_EDIT">Редактиране</text>
+    <text id="IDS_COM_POP_FAILED">Неуспешно</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Изтриване на номер</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Записване на аудио</text>
+    <text id="IDS_COM_SK_BACK">Назад</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Изтриване на думи</text>
+    <text id="IDS_COM_BODY_FORWARD">Препрати</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Няма съобщения</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Мрежа в чужбина</text>
+    <text id="IDS_MSGF_BODY_FROM">От</text>
+    <text id="IDS_COM_SK_DELETE">Изтрий</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Нечетени</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Повтарящ се получател</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM азбука</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">Съобщения на SIM картата</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Изпратен</text>
+    <text id="IDS_COM_BODY_CONTACTS">Телефонен указател</text>
+    <text id="IDS_MSGF_OPT_STATUS">Състояние</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Свободен</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Тип</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Авто изтегляне</text>
+    <text id="IDS_MSGF_SK_RESEND">Повторно изпращане</text>
+    <text id="IDS_COM_SK_CANCEL">Отмени</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Опции за получаване</text>
+    <text id="IDS_COM_BODY_GALLERY">Галерия</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Времетраене\n(%d сек)</text>
+    <text id="IDS_COM_BODY_SEARCH">Търси</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Кутии със съобщения</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Добави номер</text>
+    <text id="IDS_COM_BODY_MEMO">Записка</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Копирай в SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Въвеждане на номер</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Добавяне на запис</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Национална мрежа</text>
+    <text id="IDS_COM_POP_REJECTED">Отхвърлен</text>
+    <text id="IDS_COM_BODY_SETTINGS">Настройки</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Започни с</text>
+    <text id="IDS_COM_BODY_DISPLAY">Дисплей</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Защита вкл.</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Ръчно</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Грешка SIM карта</text>
+    <text id="IDS_COM_POP_DELETED">Изтрито</text>
+    <text id="IDS_COM_SK_SEND_ABB">Изпрати</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Препратено</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Център %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Редактиране на номер</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Автоматично</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Подробности съобщ.</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Отказ</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Гласово повикване</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Изп. бут. сила на звука</text>
+    <text id="IDS_COM_SK_SAVE">Запази</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Точно същото като</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Няма резултати от търсенето</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Режим на създаване</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Текстови съобщения</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Получени</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Свързване критерии</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Отложено</text>
+    <text id="IDS_COM_SK_ADD">Добави</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Блокиране</text>
+    <text id="IDS_COM_SK_YES">Да</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Преглед на тел. указ.</text>
+    <text id="IDS_COM_SK_SEARCH">Търсене</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Блокирани думи</text>
+    <text id="IDS_COM_BODY_SUBJECT">Тема</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Неразпознат</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Изпр. отчет чет.</text>
+    <text id="IDS_MSGF_SK_RESTORE">Възстан.</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Изискване отчет за четене</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Въведете дума</text>
+    <text id="IDS_COM_SK3_COMPOSE">Писане</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Възникна неизвестна грешка</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Отчет за доставка</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Невалидни получатели</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Излъчени съобщения</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Запис на приложения файл</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Отчет за доставка</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Игнориране на текущото съобщение?</text>
+    <text id="IDS_COM_POP_ATTACH">Прикачване</text>
+    <text id="IDS_COM_BODY_CALENDAR">Календар</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Повикв.</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Запис на видео</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Избор получател</text>
+</string_table>
diff --git a/res/cat-ES.xml b/res/cat-ES.xml
new file mode 100644 (file)
index 0000000..bfc18e9
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Detalls del missatge</text>
+    <text id="IDS_COM_SK3_PREVIEW">Vista prèvia</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d seleccionat</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">La durada ha de ser superior a %d segons</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">S'ha superat el nombre màxim de caràcters. Elimini alguns caràcters</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Seleccioni-ho tot</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Sense assumpte</text>
+    <text id="IDS_COM_POP_CLOSE">Tancar</text>
+    <text id="IDS_COM_BODY_TO">A</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Fer foto</text>
+    <text id="IDS_COM_POP_DELETE_Q">Esborrar?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Mode entrada</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">S'ha assolit el nombre màxim de destinataris (%d)</text>
+    <text id="IDS_COM_SK_NO">No</text>
+    <text id="IDS_COM_BODY_MY_FILES">Els meus fitxers</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Copiar al telèfon</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Missatges CB</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Centre de serveis</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Error en enviar un missatge</text>
+    <text id="IDS_COM_POP_SUCCESS">Correcte</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Restringit</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Els missatges rebuts dels seus contactes no es bloquejaran encara que continguin paraules bloquejades</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Desbloquejar</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Copiar text miss</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Informe de lectura</text>
+    <text id="IDS_COM_BODY_MESSAGES">Missatges</text>
+    <text id="IDS_COM_SK_OPTIONS">Opcions</text>
+    <text id="IDS_COM_SK_DONE">Finalit.</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Desconegut</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Esborranys de missatges</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Servei no disponible</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Afegir paraula</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Bloquejar %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Canviar la mida de text amb la tecla de volum</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Nou missatge</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Missatges de correu brossa</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Incloure</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Números bloquejats</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Missatges multimèdia</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Editar paraula</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Caducat</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Advertència</text>
+    <text id="IDS_COM_SK_EDIT">Editar</text>
+    <text id="IDS_COM_POP_FAILED">Error</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Esborrar número</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Gravar àudio</text>
+    <text id="IDS_COM_SK_BACK">Enrere</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Esborrar paraules</text>
+    <text id="IDS_COM_BODY_FORWARD">Reenviar</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">No hi ha cap missatge</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Xarxa externa</text>
+    <text id="IDS_MSGF_BODY_FROM">De</text>
+    <text id="IDS_COM_SK_DELETE">Esborrar</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Sense llegir</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Destinatari duplicat</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">Alfabet GSM</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">Missatges de la targeta SIM</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Enviat</text>
+    <text id="IDS_COM_BODY_CONTACTS">Contactes</text>
+    <text id="IDS_MSGF_OPT_STATUS">Estat</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Lliure</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Tipus</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Descàrrega automàtica</text>
+    <text id="IDS_MSGF_SK_RESEND">Torn a env</text>
+    <text id="IDS_COM_SK_CANCEL">Cancel·lar</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Opcions de recepció</text>
+    <text id="IDS_COM_BODY_GALLERY">Galeria</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Durada\n(%d s)</text>
+    <text id="IDS_COM_BODY_SEARCH">Cercar</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Quadres de missatge</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Afegir número</text>
+    <text id="IDS_COM_BODY_MEMO">Nota</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Copiar a la SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Introduir número</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Afegir contacte</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Xarxa local</text>
+    <text id="IDS_COM_POP_REJECTED">Rebutjat</text>
+    <text id="IDS_COM_BODY_SETTINGS">Ajustaments</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Començar amb</text>
+    <text id="IDS_COM_BODY_DISPLAY">Pantalla</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Protecció activada</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Manual</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Targeta SIM no disponible</text>
+    <text id="IDS_COM_POP_DELETED">Esborrat</text>
+    <text id="IDS_COM_SK_SEND_ABB">Enviar</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Reenviat</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Centre %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Editar número</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automàtica</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Veure det missatge</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Rebutjar</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Trucada de veu</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Utilitzi la tecla volum</text>
+    <text id="IDS_COM_SK_SAVE">Desar</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Exactament el mateix que</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">No hi ha cap resultat de cerca</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Mode de creació</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Missatges de text</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Rebut</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Fer coincidir criteris</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Ajornat</text>
+    <text id="IDS_COM_SK_ADD">Afegir</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Bloquejar</text>
+    <text id="IDS_COM_SK_YES">Sí</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Veure contacte</text>
+    <text id="IDS_COM_SK_SEARCH">Cercar</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Paraules bloquejades</text>
+    <text id="IDS_COM_BODY_SUBJECT">Assumpte</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">No s'ha reconegut</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Enviar informe de lectura</text>
+    <text id="IDS_MSGF_SK_RESTORE">Restaurar</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Sol·licitar informe lectura</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Introduir paraula</text>
+    <text id="IDS_COM_SK3_COMPOSE">Redactar</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">S'ha produït un error desconegut</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Sol·licitar informe lliurament</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Destinataris no vàlids</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Missatges de difusió</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Desar annex</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Informe de lliurament</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Descartar missatge actual?</text>
+    <text id="IDS_COM_POP_ATTACH">Adjuntar</text>
+    <text id="IDS_COM_BODY_CALENDAR">Calendari</text>
+    <text id="IDS_COM_SK_OK">Acceptar</text>
+    <text id="IDS_COM_SK_CALL">Trucar</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Capturar vídeo</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Seleccionar destinatari</text>
+</string_table>
diff --git a/res/ces-CZ.xml b/res/ces-CZ.xml
new file mode 100644 (file)
index 0000000..c76f1ea
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Podrobnosti zprávy</text>
+    <text id="IDS_COM_SK3_PREVIEW">Náhled</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">Vybráno %d</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Doba trvání musí být delší než %d sekund</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Byl překročen maximální počet znaků. Odstraňte některé znaky</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Vybrat vše</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Bez předmětu</text>
+    <text id="IDS_COM_POP_CLOSE">Zavřít</text>
+    <text id="IDS_COM_BODY_TO">Do</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Fotografovat</text>
+    <text id="IDS_COM_POP_DELETE_Q">Odstranit?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Vkládací režim</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Bylo dosaženo maximálního počtu příjemců (%d)</text>
+    <text id="IDS_COM_SK_NO">Ne</text>
+    <text id="IDS_COM_BODY_MY_FILES">Moje soubory</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Kopírovat do telefonu</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">CB zprávy</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Středisko služeb</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Nepodařilo se odeslat zprávu</text>
+    <text id="IDS_COM_POP_SUCCESS">Dokončeno</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Zakázáno</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Zprávy přijaté od vašich kontaktů nebudou blokovány, ani když budou obsahovat blokovaná slova</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Odblokovat</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Kopírovat text zpr.</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Zpráva o přečtení</text>
+    <text id="IDS_COM_BODY_MESSAGES">Zprávy</text>
+    <text id="IDS_COM_SK_OPTIONS">Volby</text>
+    <text id="IDS_COM_SK_DONE">Hotovo</text>
+    <text id="IDS_COM_POP_PM">od</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Neznámé</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Koncepty</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Služba není dostupná</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Přidat slovo</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Blokovat %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Můžete změnit velikost textu pomocí tlačítka hlasitosti</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Nová zpráva</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Nevyžádané zprávy</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Zahrnout</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Blokovaná čísla</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">MMS</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Upravit slovo</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Platnost vypršela</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Upozornění</text>
+    <text id="IDS_COM_SK_EDIT">Upravit</text>
+    <text id="IDS_COM_POP_FAILED">Nezdařilo se</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Odstranit číslo</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Nahrát zvuk</text>
+    <text id="IDS_COM_SK_BACK">Zpět</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Odstranit slova</text>
+    <text id="IDS_COM_BODY_FORWARD">Předat</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Žádné zprávy</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Síť roaming</text>
+    <text id="IDS_MSGF_BODY_FROM">Od</text>
+    <text id="IDS_COM_SK_DELETE">Odstranit</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Nepřečt.</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Duplicitní příjemce</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">Abeceda GSM</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">Zprávy na SIM kartě</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Odesláno</text>
+    <text id="IDS_COM_BODY_CONTACTS">Kontakty</text>
+    <text id="IDS_MSGF_OPT_STATUS">Stav</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Volné</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Typ</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Automaticky stáhnout</text>
+    <text id="IDS_MSGF_SK_RESEND">Odesl. zn.</text>
+    <text id="IDS_COM_SK_CANCEL">Zrušit</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Možnosti příjmu</text>
+    <text id="IDS_COM_BODY_GALLERY">Galerie</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Doba trvání\n(%d s)</text>
+    <text id="IDS_COM_BODY_SEARCH">Hledat</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Složky zpráv</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Přidat číslo</text>
+    <text id="IDS_COM_BODY_MEMO">Poznámka</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Kopírovat na kartu SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Zadat číslo</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Přidat kontakt</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Domácí síť</text>
+    <text id="IDS_COM_POP_REJECTED">Odmítnuto</text>
+    <text id="IDS_COM_BODY_SETTINGS">Nastavení</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Začátek</text>
+    <text id="IDS_COM_BODY_DISPLAY">Zobrazit</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Zapnout ochranu</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Ručně</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Chyba SIM karty</text>
+    <text id="IDS_COM_POP_DELETED">Odstraněno</text>
+    <text id="IDS_COM_SK_SEND_ABB">Odesl</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Předáno</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Středisko %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Upravit číslo</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automaticky</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Zobr. detaily zprávy</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Odmítnout</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Hlasový hovor</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Použít tl. hlasitosti</text>
+    <text id="IDS_COM_SK_SAVE">Uložit</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Naprosto stejné jako</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Žádné výsledky</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Režim vytváření</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">SMS</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Přijato</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Kritéria</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Odloženo</text>
+    <text id="IDS_COM_SK_ADD">Přidat</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Blokovat</text>
+    <text id="IDS_COM_SK_YES">Ano</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Zobrazit kontakty</text>
+    <text id="IDS_COM_SK_SEARCH">Hledat</text>
+    <text id="IDS_COM_POP_AM_M_ABB">do</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Blokovaná slova</text>
+    <text id="IDS_COM_BODY_SUBJECT">Předmět</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Neznámé</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Odeslat zprávu o přečtení</text>
+    <text id="IDS_MSGF_SK_RESTORE">Obnovit</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Požadovat zpr. o přečtení</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Zadejte slovo</text>
+    <text id="IDS_COM_SK3_COMPOSE">Vytvořit</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Došlo k neznámé chybě</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Požadovat zprávu o doručení</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Neplatní příjemci</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Vysílané zprávy</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Uložit přílohu</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Potvrzení o doručení</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Zrušit aktuální zprávu?</text>
+    <text id="IDS_COM_POP_ATTACH">Připojit</text>
+    <text id="IDS_COM_BODY_CALENDAR">Kalendář</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Hovor</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Nahrávání videoklipů</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Vybrat příjemce</text>
+</string_table>
diff --git a/res/dan-DK.xml b/res/dan-DK.xml
new file mode 100644 (file)
index 0000000..e04cca3
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Meddelelsesdetaljer</text>
+    <text id="IDS_COM_SK3_PREVIEW">Eksempel</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d valgt</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Varighed skal være længere end %d sekunder</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Det maksimale antal tegn er overskredet. Vil du slette nogle tegn</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Vælg alle</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Intet emne</text>
+    <text id="IDS_COM_POP_CLOSE">Luk</text>
+    <text id="IDS_COM_BODY_TO">Til</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Tag billede</text>
+    <text id="IDS_COM_POP_DELETE_Q">Slet?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Tekstindtastningstilstand</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Det maksimale antal modtagere (%d) er nået</text>
+    <text id="IDS_COM_SK_NO">Nej</text>
+    <text id="IDS_COM_BODY_MY_FILES">Mine filer</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Kopiér til telefon</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Gruppemeddelelser</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Tjenestecentral</text>
+    <text id="IDS_COM_BODY_SMS">Sms</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Meddelelse om mislykket afsendelse</text>
+    <text id="IDS_COM_POP_SUCCESS">Fuldført</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Begrænset</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Meddelelser modtaget fra dine kontakter vil ikke blive blokeret, selv om de indeholder blokerede ord</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Ophæv blokering</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Kopier medd.tekst</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Læsningsrapport</text>
+    <text id="IDS_COM_BODY_MESSAGES">Meddelelser</text>
+    <text id="IDS_COM_SK_OPTIONS">Valg</text>
+    <text id="IDS_COM_SK_DONE">Udført</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Ukendt</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Kladdemeddelelser</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Tjeneste ikke tilgængelig</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Tilføj ord</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Blokér %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Skift tekststørrelse ved hjælp af lydstyrketasten</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Ny meddelelse</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Spam-meddelelser</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Inkludér</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Blokerede numre</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Multimediemeddelelser</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Redigér ord</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Udløbet</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Advarsel</text>
+    <text id="IDS_COM_SK_EDIT">Redigér</text>
+    <text id="IDS_COM_POP_FAILED">Mislykkedes</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Slet nummer</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Optag lyd</text>
+    <text id="IDS_COM_SK_BACK">Tilbage</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Slet ord</text>
+    <text id="IDS_COM_BODY_FORWARD">Viderestil</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Ingen meddelelser</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Roaming</text>
+    <text id="IDS_MSGF_BODY_FROM">Fra</text>
+    <text id="IDS_COM_SK_DELETE">Slet</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Ulæst</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Kopierede modtagere</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM-alfabet</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM-kortmeddelelser</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Sendt</text>
+    <text id="IDS_COM_BODY_CONTACTS">Kontakter</text>
+    <text id="IDS_MSGF_OPT_STATUS">Status</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Ledig</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Type</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Automatisk overførsel</text>
+    <text id="IDS_MSGF_SK_RESEND">Send igen</text>
+    <text id="IDS_COM_SK_CANCEL">Annullér</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Modtagelsesindstillinger</text>
+    <text id="IDS_COM_BODY_GALLERY">Galleri</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Varighed\n(%d sek.)</text>
+    <text id="IDS_COM_BODY_SEARCH">Søg</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Meddelelsesbokse</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Tilføj nummer</text>
+    <text id="IDS_COM_BODY_MEMO">Notat</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Kopiér til SIM-kort</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Angiv nummer</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Tilføj en kontakt</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Hjemmenetværk</text>
+    <text id="IDS_COM_POP_REJECTED">Afvist</text>
+    <text id="IDS_COM_BODY_SETTINGS">Indstillinger</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Start med</text>
+    <text id="IDS_COM_BODY_DISPLAY">Skærm</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Beskyttelse til</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Manuelt</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Fejl i SIM-kort</text>
+    <text id="IDS_COM_POP_DELETED">Slettet</text>
+    <text id="IDS_COM_SK_SEND_ABB">Send</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Videresendt</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Center %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Redigér nummer</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automatisk</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Vis medd.detaljer</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Afvis</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Stemmeopkald</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Brug lydstyrketasten</text>
+    <text id="IDS_COM_SK_SAVE">Gem</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Nøjagtig det samme som</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Ingen søgeresultater</text>
+    <text id="IDS_MSGF_BODY_MMS">Mms</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Oprettelsestilstand</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Sms-meddelelser</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Modtaget</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Match kriterier</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Udsat</text>
+    <text id="IDS_COM_SK_ADD">Tilføj</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Blokér</text>
+    <text id="IDS_COM_SK_YES">Ja</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Vis kontakter</text>
+    <text id="IDS_COM_SK_SEARCH">Søg</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Blokerede ord</text>
+    <text id="IDS_COM_BODY_SUBJECT">Emne</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Ikke genkendt</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Send læsningsrapport</text>
+    <text id="IDS_MSGF_SK_RESTORE">Gendan</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Anmod om læsningsrapport</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Indtast ord</text>
+    <text id="IDS_COM_SK3_COMPOSE">Skriv</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Ukendt fejl opstod</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Anmod om leveringsrapport</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Ugyldige modtagere</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Gruppemeddelelser</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Gem vedhæftning</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Leveringsrapport</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Annullér aktuel meddelelse?</text>
+    <text id="IDS_COM_POP_ATTACH">Vedhæft</text>
+    <text id="IDS_COM_BODY_CALENDAR">Kalender</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Opkald</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Optag video</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Vælg modtagere</text>
+</string_table>
diff --git a/res/deu-DE.xml b/res/deu-DE.xml
new file mode 100644 (file)
index 0000000..0f5d6ae
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Nachrichtendetails</text>
+    <text id="IDS_COM_SK3_PREVIEW">Vorsch.</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d ausgewählt</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Länge muss mehr als %d Sekunden betragen.</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Maximale Zeichenanzahl überschritten. Einige Zeichen löschen</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Alle auswählen</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Kein Betreff</text>
+    <text id="IDS_COM_POP_CLOSE">Schließen</text>
+    <text id="IDS_COM_BODY_TO">An</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Foto aufnehmen</text>
+    <text id="IDS_COM_POP_DELETE_Q">Löschen?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Eingabemodus</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Maximale Anzahl an Empfängern (%d) erreicht</text>
+    <text id="IDS_COM_SK_NO">Nein</text>
+    <text id="IDS_COM_BODY_MY_FILES">Eigene Dateien</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Ins Telefon kopieren</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">CB-Nachrichten</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Dienstzentrale</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Nicht gesendete Nachrichten</text>
+    <text id="IDS_COM_POP_SUCCESS">Abgeschlossen</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Eingeschränkt</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Nachrichten, die Sie von Ihren Kontakten erhalten, werden nicht blockiert, auch wenn Sie gesperrte Wörter enthalten.</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Freigeben</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Nachricht kopieren</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Lesebericht</text>
+    <text id="IDS_COM_BODY_MESSAGES">Nachrichten</text>
+    <text id="IDS_COM_SK_OPTIONS">Optionen</text>
+    <text id="IDS_COM_SK_DONE">OK</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Unbekannt</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Nachrichtenentwürfe</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Service nicht verfügbar</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Wort hinzufügen</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">%s sperren?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Ändern Sie die Textgröße mithilfe der Lautstärketaste</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Neue Nachricht</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Spam-Nachrichten</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Enthält</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Gesperrte Nummern</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">MMS</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Wort bearbeiten</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Abgelaufen</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Warnung</text>
+    <text id="IDS_COM_SK_EDIT">Bearbeiten</text>
+    <text id="IDS_COM_POP_FAILED">Fehlgeschlagen</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Nummer löschen</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Ton aufzeichnen</text>
+    <text id="IDS_COM_SK_BACK">Zurück</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Wörter löschen</text>
+    <text id="IDS_COM_BODY_FORWARD">Weiterleiten</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Keine Nachrichten</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Fremdnetz</text>
+    <text id="IDS_MSGF_BODY_FROM">Von</text>
+    <text id="IDS_COM_SK_DELETE">Löschen</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Unge-\nlesen</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Doppelter Empfänger</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM-Alphabet</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM-Karten-Nachrichten</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Gesendet</text>
+    <text id="IDS_COM_BODY_CONTACTS">Kontakte</text>
+    <text id="IDS_MSGF_OPT_STATUS">Status</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Frei</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Typ</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Automatisch herunterladen</text>
+    <text id="IDS_MSGF_SK_RESEND">Erneut senden</text>
+    <text id="IDS_COM_SK_CANCEL">Abbrechen</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Empfangsoptionen</text>
+    <text id="IDS_COM_BODY_GALLERY">Galerie</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Dauer:\n(%d Sek.)</text>
+    <text id="IDS_COM_BODY_SEARCH">Suche</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Nachrichtenkästchen</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Nummer hinzufügen</text>
+    <text id="IDS_COM_BODY_MEMO">Memo</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Auf die SIM-Karte kopieren</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Nummer eingeben</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Kontakt hinzufügen</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Heimatnetz</text>
+    <text id="IDS_COM_POP_REJECTED">Abgelehnt</text>
+    <text id="IDS_COM_BODY_SETTINGS">Einstellungen</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Beginnt mit</text>
+    <text id="IDS_COM_BODY_DISPLAY">Anzeige</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Schutz an</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Manuell</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM-Kartenfehler</text>
+    <text id="IDS_COM_POP_DELETED">Gelöscht</text>
+    <text id="IDS_COM_SK_SEND_ABB">Senden</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Weitergeleitet</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Zentrale %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Nummer bearbeiten</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automatisch</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Details anzeigen</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Ablehnen</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Sprachanruf</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Lautstärketaste verwenden</text>
+    <text id="IDS_COM_SK_SAVE">Speichern</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Identisch mit</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Keine Suchergebnisse</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Erstellungsmodus</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">SMS</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Empfangen</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Passende Kriterien</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Zurückgestellt</text>
+    <text id="IDS_COM_SK_ADD">Hinzufügen</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Sperren</text>
+    <text id="IDS_COM_SK_YES">Ja</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Kontakte anzeigen</text>
+    <text id="IDS_COM_SK_SEARCH">Suche</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Gesperrte Wörter</text>
+    <text id="IDS_COM_BODY_SUBJECT">Betreff</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Nicht erkannt</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Lesebericht senden</text>
+    <text id="IDS_MSGF_SK_RESTORE">Wiederherstellen</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Lesebericht anfordern</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Wort eingeben</text>
+    <text id="IDS_COM_SK3_COMPOSE">Verfass.</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Unbekannter Fehler aufgetreten</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Zustellbericht anfordern</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Ungültige Empfänger</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Infomeldungen</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Anhang speichern</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Zustellbericht</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Aktuelle Nachricht verwerfen?</text>
+    <text id="IDS_COM_POP_ATTACH">Anhängen</text>
+    <text id="IDS_COM_BODY_CALENDAR">Kalender</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Anruf</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Video aufnehmen</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Empfänger auswählen</text>
+</string_table>
diff --git a/res/ell-GR.xml b/res/ell-GR.xml
new file mode 100644 (file)
index 0000000..677ead9
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Στοιχεία μηνύματος</text>
+    <text id="IDS_COM_SK3_PREVIEW">Προεπ.</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d επιλέχθηκαν</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Η διάρκεια πρέπει να είναι μεγαλύτερη από %d δευτερόλεπτα</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Έγινε υπέρβαση του μέγιστου αριθμού χαρακτήρων. Διαγραφή ορισμένων χαρακτήρων</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Επιλογή όλων</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Χωρίς θέμα</text>
+    <text id="IDS_COM_POP_CLOSE">Κλείσιμο</text>
+    <text id="IDS_COM_BODY_TO">Προς</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Λήψη φωτογραφίας</text>
+    <text id="IDS_COM_POP_DELETE_Q">Διαγραφή;</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">εισαγωγή λειτουργίας</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Συμπληρώθηκε ο μέγιστος αριθμός παραληπτών (%d)</text>
+    <text id="IDS_COM_SK_NO">Όχι</text>
+    <text id="IDS_COM_BODY_MY_FILES">Τα Αρχεία Μου</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Αντιγραφή στο τηλέφωνο</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Μηνύματα εκπομπής κυψέλης</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Κέντρο υπηρεσίας</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Αποστολή μηνύματος αποτυχίας</text>
+    <text id="IDS_COM_POP_SUCCESS">Ολοκληρώθηκε</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Περιορισμός</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Τα μηνύματα που λαμβάνετε από τις επαφές σας δεν θα αποκλείονται, ακόμα και αν περιλαμβάνουν απαγορευμένες λέξεις</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Ακύρωση αποκλεισμού</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Αντιγρ. κειμέν. μηνυμ.</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Αναφορά ανάγνωσης</text>
+    <text id="IDS_COM_BODY_MESSAGES">Μηνύματα</text>
+    <text id="IDS_COM_SK_OPTIONS">Επιλογ.</text>
+    <text id="IDS_COM_SK_DONE">Ok</text>
+    <text id="IDS_COM_POP_PM">ΜΜ</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Άγνωστο</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Πρόχειρα μηνύματα</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Μη διαθέσιμη λειτουργία</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Προσθήκη λέξης</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Αποκλεισμός του %s;</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Αλλάξτε το μέγεθος του κειμένου με το πλήκτρο έντασης</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Νέο μήνυμα</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Ανεπιθύμητα μηνύματα</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Να συμπεριληφθεί</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Απαγορευμένοι αριθμοί</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">MMS</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Επεξεργασία λέξης</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Έληξε</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Προειδοποίηση</text>
+    <text id="IDS_COM_SK_EDIT">Επεξεργ.</text>
+    <text id="IDS_COM_POP_FAILED">Αποτυχία</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Διαγραφή αριθμού</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Ηχογράφηση</text>
+    <text id="IDS_COM_SK_BACK">Πίσω</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Διαγραφή λέξεων</text>
+    <text id="IDS_COM_BODY_FORWARD">Προώθηση</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Κανένα μήνυμα</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Δίκτυο περιαγωγής</text>
+    <text id="IDS_MSGF_BODY_FROM">Από</text>
+    <text id="IDS_COM_SK_DELETE">Διαγραφή</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Μη αναγνωσμένο</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Διπλότυπος παραλήπτης</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">Αλφάβητο GSM</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">Μηνύματα κάρτας SIM</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Εστάλη</text>
+    <text id="IDS_COM_BODY_CONTACTS">Επαφές</text>
+    <text id="IDS_MSGF_OPT_STATUS">Κατάσταση</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Ελεύθερο</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Τύπος</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Αυτόματη λήψη</text>
+    <text id="IDS_MSGF_SK_RESEND">Επανάληψη αποστολής</text>
+    <text id="IDS_COM_SK_CANCEL">Άκυρο</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Επιλογές λήψης</text>
+    <text id="IDS_COM_BODY_GALLERY">Συλλογή</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Διάρκεια\n(%d δευτ.)</text>
+    <text id="IDS_COM_BODY_SEARCH">Αναζήτηση</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Φάκελοι μηνυμάτων</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Προσθήκη αριθμού</text>
+    <text id="IDS_COM_BODY_MEMO">Σημείωση</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Αντιγραφή στη SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Εισαγωγή αριθμού</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Προσθήκη επαφής</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Οικείο δίκτυο</text>
+    <text id="IDS_COM_POP_REJECTED">Απόρριψη</text>
+    <text id="IDS_COM_BODY_SETTINGS">Ρυθμίσεις</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Αρχίζει από</text>
+    <text id="IDS_COM_BODY_DISPLAY">Εμφάνιση</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Προστασία ενεργή</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Χειροκίνητα</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Αποτυχία κάρτας SIM</text>
+    <text id="IDS_COM_POP_DELETED">Διαγράφηκε</text>
+    <text id="IDS_COM_SK_SEND_ABB">Αποστ</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Προωθήθηκε</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Κέντρο %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Επεξεργασία αριθμού</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Αυτόματo</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Προβολ.στοιχ.μηνύμ.</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Απόρριψη</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Φωνητική κλήση</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Χρήση πλήκτρου έντασης</text>
+    <text id="IDS_COM_SK_SAVE">Αποθ/ση</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Ακριβώς ίδιο με</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Δεν υπάρχουν αποτελέσματα αναζήτησης</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Λειτουργία δημιουργίας</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">SMS</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Ελήφθη</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Αντιστοίχιση κριτηρίων</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Αναβλήθηκε</text>
+    <text id="IDS_COM_SK_ADD">Προσθήκη</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Αποκλεισμός</text>
+    <text id="IDS_COM_SK_YES">Ναι</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Προβολή επαφών</text>
+    <text id="IDS_COM_SK_SEARCH">Αναζήτηση</text>
+    <text id="IDS_COM_POP_AM_M_ABB">ΠΜ</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Απαγορευμένες λέξεις</text>
+    <text id="IDS_COM_BODY_SUBJECT">Θέμα</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Δεν αναγνωρίζεται</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Αποστολή αναφοράς ανάγνωσης</text>
+    <text id="IDS_MSGF_SK_RESTORE">Επαναφορά</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Αίτηση αναφ. ανάγνωσης</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Εισάγετε λέξη</text>
+    <text id="IDS_COM_SK3_COMPOSE">Σύνταξη</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Παρουσιάστηκε άγνωστο σφάλμα</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Αίτηση αναφοράς παράδοσης</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Μη έγκυροι παραλήπτες</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Μηνύματα εκπομπής κυψέλης</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Αποθήκευση συνημμένου</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Αναφορά παράδοσης</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Να απορριφθεί το τρέχον μήνυμα;</text>
+    <text id="IDS_COM_POP_ATTACH">Επισύναψη</text>
+    <text id="IDS_COM_BODY_CALENDAR">Ημερολόγιο</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Κλήση</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Λήψη βίντεο</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Επιλογή παραλήπτη</text>
+</string_table>
diff --git a/res/eng-GB.xml b/res/eng-GB.xml
new file mode 100644 (file)
index 0000000..124d51b
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Message details</text>
+    <text id="IDS_COM_SK3_PREVIEW">Preview</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d selected</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Duration must be longer than %d seconds</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Maximum number of characters exceeded. Delete some characters</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Select all</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">No subject</text>
+    <text id="IDS_COM_POP_CLOSE">Close</text>
+    <text id="IDS_COM_BODY_TO">To</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Take picture</text>
+    <text id="IDS_COM_POP_DELETE_Q">Delete?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Input mode</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Maximum number of recipients (%d) reached</text>
+    <text id="IDS_COM_SK_NO">No</text>
+    <text id="IDS_COM_BODY_MY_FILES">My Files</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Copy to phone</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">CB messages</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Service centre</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Sending failed message</text>
+    <text id="IDS_COM_POP_SUCCESS">Success</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Restricted</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Messages received from your contacts will not be blocked even if they contain blocked words</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Unblock</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Copy message text</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Read report</text>
+    <text id="IDS_COM_BODY_MESSAGES">Messages</text>
+    <text id="IDS_COM_SK_OPTIONS">Options</text>
+    <text id="IDS_COM_SK_DONE">Done</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Unknown</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Draft messages</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Service not available</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Add word</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Block %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Change text size using the volume key</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">New message</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Spam messages</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Include</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Blocked numbers</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Multimedia messages</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Edit word</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Expired</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Warning</text>
+    <text id="IDS_COM_SK_EDIT">Edit</text>
+    <text id="IDS_COM_POP_FAILED">Failed</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Delete number</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Record audio</text>
+    <text id="IDS_COM_SK_BACK">Back</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Delete words</text>
+    <text id="IDS_COM_BODY_FORWARD">Forward</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">No messages</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Foreign network</text>
+    <text id="IDS_MSGF_BODY_FROM">From</text>
+    <text id="IDS_COM_SK_DELETE">Delete</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Unread</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Duplicated recipient</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM alphabet</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM card messages</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Sent</text>
+    <text id="IDS_COM_BODY_CONTACTS">Contacts</text>
+    <text id="IDS_MSGF_OPT_STATUS">Status</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Free</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Type</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Auto download</text>
+    <text id="IDS_MSGF_SK_RESEND">Resend</text>
+    <text id="IDS_COM_SK_CANCEL">Cancel</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Receiving options</text>
+    <text id="IDS_COM_BODY_GALLERY">Gallery</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Duration\n(%d secs)</text>
+    <text id="IDS_COM_BODY_SEARCH">Search</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Message boxes</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Add number</text>
+    <text id="IDS_COM_BODY_MEMO">Memo</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Copy to SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Enter number</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Add contact</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Home network</text>
+    <text id="IDS_COM_POP_REJECTED">Rejected</text>
+    <text id="IDS_COM_BODY_SETTINGS">Settings</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Start with</text>
+    <text id="IDS_COM_BODY_DISPLAY">Display</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Protection on</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Manual</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM card not available</text>
+    <text id="IDS_COM_POP_DELETED">Deleted</text>
+    <text id="IDS_COM_SK_SEND_ABB">Send</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Forwarded</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Centre %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Edit number</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automatic</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">View message details</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Reject</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Voice call</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Use the volume key</text>
+    <text id="IDS_COM_SK_SAVE">Save</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Exactly the same as</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">No search results</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Creation mode</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Text messages</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Received</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Match criteria</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Deferred</text>
+    <text id="IDS_COM_SK_ADD">Add</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Block</text>
+    <text id="IDS_COM_SK_YES">Yes</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">View contact</text>
+    <text id="IDS_COM_SK_SEARCH">Search</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Blocked words</text>
+    <text id="IDS_COM_BODY_SUBJECT">Subject</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Unrecognised</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Send read report</text>
+    <text id="IDS_MSGF_SK_RESTORE">Restore</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Request read report</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Enter word</text>
+    <text id="IDS_COM_SK3_COMPOSE">Compose</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Unknown error occurred</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Request delivery report</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Invalid recipients</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Broadcast messages</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Save attachment</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Delivery report</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Discard current message?</text>
+    <text id="IDS_COM_POP_ATTACH">Attach</text>
+    <text id="IDS_COM_BODY_CALENDAR">Calendar</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Call</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Capture video</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Select recipient</text>
+</string_table>
diff --git a/res/eng-PH.xml b/res/eng-PH.xml
new file mode 100644 (file)
index 0000000..636f7c8
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Message details</text>
+    <text id="IDS_COM_SK3_PREVIEW">Preview</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d selected</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Duration must be longer than %d seconds</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Maximum number of characters exceeded. Delete some characters</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Select all</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">No subject</text>
+    <text id="IDS_COM_POP_CLOSE">Close</text>
+    <text id="IDS_COM_BODY_TO">To</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Take picture</text>
+    <text id="IDS_COM_POP_DELETE_Q">Delete?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Input mode</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Maximum number of recipients (%d) reached</text>
+    <text id="IDS_COM_SK_NO">No</text>
+    <text id="IDS_COM_BODY_MY_FILES">My Files</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Copy to phone</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">CB messages</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Service center</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Sending failed message</text>
+    <text id="IDS_COM_POP_SUCCESS">Success</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Restricted</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">If Added words are contained to received message from a person in my phonebook, the message will not be blocked. \nContinue?</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Unblock</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Copy message text</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Read report</text>
+    <text id="IDS_COM_BODY_MESSAGES">Messages</text>
+    <text id="IDS_COM_SK_OPTIONS">Options</text>
+    <text id="IDS_COM_SK_DONE">Done</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Unknown</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Draft messages</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Service unavailable</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Add word</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Block %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Change text size using the volume key</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">New message</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Spam messages</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Include</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Numbers to reject</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Multimedia messages</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Edit word</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Expired</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Warning</text>
+    <text id="IDS_COM_SK_EDIT">Edit</text>
+    <text id="IDS_COM_POP_FAILED">Failed</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Delete number</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Record audio</text>
+    <text id="IDS_COM_SK_BACK">Back</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Delete word</text>
+    <text id="IDS_COM_BODY_FORWARD">Forward</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">No messages</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Foreign network</text>
+    <text id="IDS_MSGF_BODY_FROM">From</text>
+    <text id="IDS_COM_SK_DELETE">Delete</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Unread</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Duplicated recipient</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM alphabet</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM card messages</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Sent</text>
+    <text id="IDS_COM_BODY_CONTACTS">Contacts</text>
+    <text id="IDS_MSGF_OPT_STATUS">Status</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Free</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Type</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Auto download</text>
+    <text id="IDS_MSGF_SK_RESEND">Resend</text>
+    <text id="IDS_COM_SK_CANCEL">Cancel</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Receiving options</text>
+    <text id="IDS_COM_BODY_GALLERY">Gallery</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Duration\n(%d secs)</text>
+    <text id="IDS_COM_BODY_SEARCH">Search</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Message boxes</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Add number</text>
+    <text id="IDS_COM_BODY_MEMO">Memo</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Copy to SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Enter number</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Add contact</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Home network</text>
+    <text id="IDS_COM_POP_REJECTED">Rejected</text>
+    <text id="IDS_COM_BODY_SETTINGS">Settings</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Start with</text>
+    <text id="IDS_COM_BODY_DISPLAY">Display</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Protection on</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Manual</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM card unavailable</text>
+    <text id="IDS_COM_POP_DELETED">Deleted</text>
+    <text id="IDS_COM_SK_SEND_ABB">Send</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Forwarded</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Center %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Edit number</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automatic</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">View message details</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Reject</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Voice call</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Use the volume key</text>
+    <text id="IDS_COM_SK_SAVE">Save</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Exactly the same as</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">No search results</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Creation mode</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Text messages</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Received</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Match criteria</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Deferred</text>
+    <text id="IDS_COM_SK_ADD">Add</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Block</text>
+    <text id="IDS_COM_SK_YES">Yes</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">View contact</text>
+    <text id="IDS_COM_SK_SEARCH">Search</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Blocked word</text>
+    <text id="IDS_COM_BODY_SUBJECT">Subject</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Unrecognized</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Send read report</text>
+    <text id="IDS_MSGF_SK_RESTORE">Restore</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Request read report</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Enter word</text>
+    <text id="IDS_COM_SK3_COMPOSE">Compose</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Unknown error occurred</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Request delivery report</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Invalid recipients</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Broadcast messages</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Save attachment</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Delivery report</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Discard current message?</text>
+    <text id="IDS_COM_POP_ATTACH">Attach</text>
+    <text id="IDS_COM_BODY_CALENDAR">Calendar</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Call</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Capture video</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Select recipient</text>
+</string_table>
diff --git a/res/eng-US.xml b/res/eng-US.xml
new file mode 100644 (file)
index 0000000..22fc721
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Message details</text>
+    <text id="IDS_COM_SK3_PREVIEW">Preview</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d selected</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Duration must be longer than %d seconds</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Maximum number of characters exceeded. Delete some characters</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Select all</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">No subject</text>
+    <text id="IDS_COM_POP_CLOSE">Close</text>
+    <text id="IDS_COM_BODY_TO">To</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Take picture</text>
+    <text id="IDS_COM_POP_DELETE_Q">Delete?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Input mode</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Maximum number of recipients (%d) reached</text>
+    <text id="IDS_COM_SK_NO">No</text>
+    <text id="IDS_COM_BODY_MY_FILES">My Files</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Copy to phone</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">CB messages</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Service center</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Sending failed message</text>
+    <text id="IDS_COM_POP_SUCCESS">Success</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Restricted</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Messages received from your contacts will not be blocked even if they contain blocked words</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Unblock</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Copy message text</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Read report</text>
+    <text id="IDS_COM_BODY_MESSAGES">Messages</text>
+    <text id="IDS_COM_SK_OPTIONS">Options</text>
+    <text id="IDS_COM_SK_DONE">Done</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Unknown</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Draft messages</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Service unavailable</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Add word</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Block %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Change text size using the volume key</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">New message</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Spam messages</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Include</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Blocked numbers</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Multimedia messages</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Edit word</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Expired</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Warning</text>
+    <text id="IDS_COM_SK_EDIT">Edit</text>
+    <text id="IDS_COM_POP_FAILED">Failed</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Delete number</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Record audio</text>
+    <text id="IDS_COM_SK_BACK">Back</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Delete words</text>
+    <text id="IDS_COM_BODY_FORWARD">Forward</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">No messages</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Foreign network</text>
+    <text id="IDS_MSGF_BODY_FROM">From</text>
+    <text id="IDS_COM_SK_DELETE">Delete</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Unread</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Duplicated recipient</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM alphabet</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM card messages</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Sent</text>
+    <text id="IDS_COM_BODY_CONTACTS">Contacts</text>
+    <text id="IDS_MSGF_OPT_STATUS">Status</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Free</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Type</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Auto download</text>
+    <text id="IDS_MSGF_SK_RESEND">Resend</text>
+    <text id="IDS_COM_SK_CANCEL">Cancel</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Receiving options</text>
+    <text id="IDS_COM_BODY_GALLERY">Gallery</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Duration\n(%d secs)</text>
+    <text id="IDS_COM_BODY_SEARCH">Search</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Message boxes</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Add number</text>
+    <text id="IDS_COM_BODY_MEMO">Memo</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Copy to SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Enter number</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Add contact</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Home network</text>
+    <text id="IDS_COM_POP_REJECTED">Rejected</text>
+    <text id="IDS_COM_BODY_SETTINGS">Settings</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Start with</text>
+    <text id="IDS_COM_BODY_DISPLAY">Display</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Protection on</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Manual</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM card unavailable</text>
+    <text id="IDS_COM_POP_DELETED">Deleted</text>
+    <text id="IDS_COM_SK_SEND_ABB">Send</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Forwarded</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Center %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Edit number</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automatic</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">View message details</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Reject</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Voice call</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Use the volume key</text>
+    <text id="IDS_COM_SK_SAVE">Save</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Exactly the same as</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">No search results</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Creation mode</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Text messages</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Received</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Match criteria</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Deferred</text>
+    <text id="IDS_COM_SK_ADD">Add</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Block</text>
+    <text id="IDS_COM_SK_YES">Yes</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">View contact</text>
+    <text id="IDS_COM_SK_SEARCH">Search</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Blocked words</text>
+    <text id="IDS_COM_BODY_SUBJECT">Subject</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Unrecognized</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Send read report</text>
+    <text id="IDS_MSGF_SK_RESTORE">Restore</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Request read report</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Enter word</text>
+    <text id="IDS_COM_SK3_COMPOSE">Compose</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Unknown error occurred</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Request delivery report</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Invalid recipients</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Broadcast messages</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Save attachment</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Delivery report</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Discard current message?</text>
+    <text id="IDS_COM_POP_ATTACH">Attach</text>
+    <text id="IDS_COM_BODY_CALENDAR">Calendar</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Call</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Capture video</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Select recipient</text>
+</string_table>
diff --git a/res/est-EE.xml b/res/est-EE.xml
new file mode 100644 (file)
index 0000000..c1aea08
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Sõnumi üksikasjad</text>
+    <text id="IDS_COM_SK3_PREVIEW">Eelvaade</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d valitud</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Kestus peab olema pikem kui %d sekundit</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Maksimaalne tähemärkide arv ületatud. Kustutage tähemärke</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Vali kõik</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Teema puudub</text>
+    <text id="IDS_COM_POP_CLOSE">Sulge</text>
+    <text id="IDS_COM_BODY_TO">Saaja</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Pildista</text>
+    <text id="IDS_COM_POP_DELETE_Q">Kustutada?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Tekstisisestusrežiim</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Maksimaalne adressaatide arv (%d) on saavutatud</text>
+    <text id="IDS_COM_SK_NO">Ei</text>
+    <text id="IDS_COM_BODY_MY_FILES">Minu Failid</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Kopeeri telefoni</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Võrguteabesõnumid</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Teenusekeskus</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Nurjunud sõnumi saatmine</text>
+    <text id="IDS_COM_POP_SUCCESS">Õnnestus</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Piiratud</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Kontaktidelt saabunud sõnumeid ei blokeerita isegi siis, kui need sisaldavad blokeeritud sõnu</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Eemalda blokeering</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Kopeeri sõnumi tekst</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Loe raportit</text>
+    <text id="IDS_COM_BODY_MESSAGES">Sõnumid</text>
+    <text id="IDS_COM_SK_OPTIONS">Valikud</text>
+    <text id="IDS_COM_SK_DONE">Valmis</text>
+    <text id="IDS_COM_POP_PM">PL</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Tundmatu</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Mustandsõnumid</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Teenus pole saadaval</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Lisa sõna</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Kas blokeerida sõber %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Muutke teksti suurust helitugevusnupu abil</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Uus sõnum</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Rämpspost</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Lisa</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Blokeeritud numbrid</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Multimeediumsõnumid</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Muuda sõna</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Aegunud</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Hoiatus</text>
+    <text id="IDS_COM_SK_EDIT">Muuda</text>
+    <text id="IDS_COM_POP_FAILED">Nurjus</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Kustuta number</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Salvesta heli</text>
+    <text id="IDS_COM_SK_BACK">Tagasi</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Kustuta sõnu</text>
+    <text id="IDS_COM_BODY_FORWARD">Edasta</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Sõnumid puuduvad</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Rändlusvõrk</text>
+    <text id="IDS_MSGF_BODY_FROM">Saatja</text>
+    <text id="IDS_COM_SK_DELETE">Kustuta</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Lugemata</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Mitu adressaati</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM-tähestik</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM-kaardi sõnumid</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Saadetud</text>
+    <text id="IDS_COM_BODY_CONTACTS">Kontaktid</text>
+    <text id="IDS_MSGF_OPT_STATUS">Olek</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Vaba</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Tüüp</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Automaatne allalaadimine</text>
+    <text id="IDS_MSGF_SK_RESEND">Saada uuesti</text>
+    <text id="IDS_COM_SK_CANCEL">Tühista</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Vastuvõtmise valikud</text>
+    <text id="IDS_COM_BODY_GALLERY">Galerii</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Kestus\n(%d sek)</text>
+    <text id="IDS_COM_BODY_SEARCH">Otsi</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Sõnumikaustad</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Lisa number</text>
+    <text id="IDS_COM_BODY_MEMO">Memo</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Kopeeri SIM-kaardile</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Sisestage number</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Lisa kontakt</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Koduvõrk</text>
+    <text id="IDS_COM_POP_REJECTED">Keeldutud</text>
+    <text id="IDS_COM_BODY_SETTINGS">Seaded</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Alusta koos</text>
+    <text id="IDS_COM_BODY_DISPLAY">Ekraan</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Kaitse sees</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Käsitsi</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM-kaardi tõrge</text>
+    <text id="IDS_COM_POP_DELETED">Kustutatud</text>
+    <text id="IDS_COM_SK_SEND_ABB">Saada</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Edastatud</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Keskel %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Redigeeri numbrit</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automaatne</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Kuva sõnumi detailid</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Keeldu</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Häälkõne</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Kasutage helitugevusnuppu</text>
+    <text id="IDS_COM_SK_SAVE">Salvesta</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Täpselt sama kui</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Otsingutulemeid pole</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Loomisrežiim</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Tekstsõnumid</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Vastu võetud</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Ühita kriteeriumid</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Edasi lükatud</text>
+    <text id="IDS_COM_SK_ADD">Lisa</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Blokeeri</text>
+    <text id="IDS_COM_SK_YES">Jah</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Vaata kontakte</text>
+    <text id="IDS_COM_SK_SEARCH">Otsi</text>
+    <text id="IDS_COM_POP_AM_M_ABB">EL</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Blokeeritud sõnad</text>
+    <text id="IDS_COM_BODY_SUBJECT">Teema</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Tundmatu</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Saada lugemisraport</text>
+    <text id="IDS_MSGF_SK_RESTORE">Taasta</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Saada lugemisraport</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Sisesta sõna</text>
+    <text id="IDS_COM_SK3_COMPOSE">Koosta</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Ilmnes tundmatu tõrge</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Taotle saateraportit</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Valed adressaadid</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Kärjeteated</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Salvesta manus</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Kohaletoimetamisraport</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Kas loobuda praegusest sõnumist?</text>
+    <text id="IDS_COM_POP_ATTACH">Manusta</text>
+    <text id="IDS_COM_BODY_CALENDAR">Kalender</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Helista</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Salvesta video</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Vali adressaat</text>
+</string_table>
diff --git a/res/eus-ES.xml b/res/eus-ES.xml
new file mode 100644 (file)
index 0000000..03430a1
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Mezuari buruzko xehetasunak</text>
+    <text id="IDS_COM_SK3_PREVIEW">Aurrebista</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d aukeratuta</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Iraupena %d segundokoa baino luzeagoa izan behar da</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Gehienezko karaktere kopurua gainditua. Karaktere batzuk ezabatu</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Denak aukeratu</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Gairik gabe</text>
+    <text id="IDS_COM_POP_CLOSE">Itxi</text>
+    <text id="IDS_COM_BODY_TO">Hartzailea</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Argazkia atera</text>
+    <text id="IDS_COM_POP_DELETE_Q">Ezabatu?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Idazkera modua</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Gehienezko hartzaile kopurura (%d) iritsi zara</text>
+    <text id="IDS_COM_SK_NO">Ez</text>
+    <text id="IDS_COM_BODY_MY_FILES">Nire Fitxategiak</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Telefonora kopiatu</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">CB mezuak</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Zerbitzu zentroa</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Huts egindako mezua bidaltzen</text>
+    <text id="IDS_COM_POP_SUCCESS">Behar bezala</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Mugatuta</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Zure kontaktuetatik jasotako mezuak ez dira blokeatuko nahiz eta blokeatutako hitzak izan</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Desblokeatu</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Kopiatu testu mezua</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Irakurketa txostena</text>
+    <text id="IDS_COM_BODY_MESSAGES">Mezuak</text>
+    <text id="IDS_COM_SK_OPTIONS">Aukerak</text>
+    <text id="IDS_COM_SK_DONE">Amaituta</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Ezezaguna</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Zirriborro mezuak</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Zerbitzua ez dago eskuragarri</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Hitza gehitu</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">%s blokeatu?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Aldatu testu neurria bolumen tekla erabiliz</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Mezu berria</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Spam mezuak</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Gehitu</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Blokeatutako zenbakiak</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Multimedia mezuak</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Editatu hitza</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Iraungia</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Oharra</text>
+    <text id="IDS_COM_SK_EDIT">Editatu</text>
+    <text id="IDS_COM_POP_FAILED">Huts egin du</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Zenbakia ezabatu</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Audioa grabatu</text>
+    <text id="IDS_COM_SK_BACK">Atzera</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Ezabatu hitzak</text>
+    <text id="IDS_COM_BODY_FORWARD">Birbidali</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Mezurik ez</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Atzerriko sarea</text>
+    <text id="IDS_MSGF_BODY_FROM">Nork</text>
+    <text id="IDS_COM_SK_DELETE">Ezabatu</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Irakurri gabea</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Hartzaile bikoiztua</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM-alfabetoa</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM txartelaren mezuak</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Bidalitakoak</text>
+    <text id="IDS_COM_BODY_CONTACTS">Kontaktuak</text>
+    <text id="IDS_MSGF_OPT_STATUS">Egoera</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Libre</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Mota</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Deskarga automatikoa</text>
+    <text id="IDS_MSGF_SK_RESEND">Birbidali</text>
+    <text id="IDS_COM_SK_CANCEL">Ezeztatu</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Jasotze aukerak</text>
+    <text id="IDS_COM_BODY_GALLERY">Galeria</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Iraupena\n(%d seg)</text>
+    <text id="IDS_COM_BODY_SEARCH">Bilatu</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Mezuen koadroak</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Gehitu zenbakia</text>
+    <text id="IDS_COM_BODY_MEMO">Oroigarriak</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">SIMean kopiatu</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Zenbakia idatzi</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Kontaktua gehitu</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Sare lokala</text>
+    <text id="IDS_COM_POP_REJECTED">Ezetsita</text>
+    <text id="IDS_COM_BODY_SETTINGS">Ezarpenak</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Zerekin hasi</text>
+    <text id="IDS_COM_BODY_DISPLAY">Pantaila</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Babespena aktibatuta</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Eskuzkoa</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM txartela ez dago eskuragarri</text>
+    <text id="IDS_COM_POP_DELETED">Ezabatua</text>
+    <text id="IDS_COM_SK_SEND_ABB">Bidali</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Birbidalia</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">%d zentroa</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Editatu zenbakia</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automatikoa</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Ikusi mezu xehetas.</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Ukatu</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Ahots deia</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Erabili bolumen tekla</text>
+    <text id="IDS_COM_SK_SAVE">Gorde</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Honen bera</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Ez dago bilaketaren emaitzarik</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Sortze modua</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Testu mezuak</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Jasota</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Esleitze irizpideak</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Atzeratua</text>
+    <text id="IDS_COM_SK_ADD">Gehitu</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Blokeatu</text>
+    <text id="IDS_COM_SK_YES">Bai</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Kontaktua ikusi</text>
+    <text id="IDS_COM_SK_SEARCH">Bilatu</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Blokeatutako hitzak</text>
+    <text id="IDS_COM_BODY_SUBJECT">Gaia</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Ez ezagutua</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Irakurtze txostena bidali</text>
+    <text id="IDS_MSGF_SK_RESTORE">Berrezar</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Irakurtze txostena eskatu</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Adierazi hitza</text>
+    <text id="IDS_COM_SK3_COMPOSE">Sortu</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Errore ezezaguna gertatu da</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Emate txostena eskatu</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Hartzaile baliogabeak</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Difusio mezuak</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Eranskina gorde</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Banaketa txostena</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Baztertu oraingo mezua?</text>
+    <text id="IDS_COM_POP_ATTACH">Erantsi</text>
+    <text id="IDS_COM_BODY_CALENDAR">Egutegia</text>
+    <text id="IDS_COM_SK_OK">Ados</text>
+    <text id="IDS_COM_SK_CALL">Deitu</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Bideoa grabatu</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Aukeratu hartzailea</text>
+</string_table>
diff --git a/res/fin-FI.xml b/res/fin-FI.xml
new file mode 100644 (file)
index 0000000..1a18703
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Viestin tiedot</text>
+    <text id="IDS_COM_SK3_PREVIEW">Esikats.</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d valittu</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Keston on oltava enemmän kuin %d sekuntia</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Merkkien enimmäismäärä on ylitetty. Poista merkkejä</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Valitse kaikki</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Ei aihetta</text>
+    <text id="IDS_COM_POP_CLOSE">Sulje</text>
+    <text id="IDS_COM_BODY_TO">Vastaanottaja</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Ota kuva</text>
+    <text id="IDS_COM_POP_DELETE_Q">Poistetaanko?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Tekstinsyöttötila</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Vastaanottajien enimmäismäärä (%d) on saavutettu</text>
+    <text id="IDS_COM_SK_NO">Ei</text>
+    <text id="IDS_COM_BODY_MY_FILES">Omat tiedostot</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Kopioi puhelimeen</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">CB-viestit</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Viestikeskus</text>
+    <text id="IDS_COM_BODY_SMS">Tekstiviesti</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Lähetetään epäonnistunutta viestiä</text>
+    <text id="IDS_COM_POP_SUCCESS">Valmis</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Rajoitettu</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Yhteyshenkilöiltä saapuvia viestejä ei estetä, vaikka niissä olisi estettyjä sanoja</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Poista esto</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Kopioi viestiteksti</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Lukuraportti</text>
+    <text id="IDS_COM_BODY_MESSAGES">Viestit</text>
+    <text id="IDS_COM_SK_OPTIONS">Valinnat</text>
+    <text id="IDS_COM_SK_DONE">Valmis</text>
+    <text id="IDS_COM_POP_PM">IP</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Tuntematon</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Viestiluonnokset</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Palvelu ei ole saatavilla</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Lisää sana</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Estetäänkö %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Muuta tekstin kokoa äänenvoimakkuusnäppäimellä</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Uusi viesti</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Roskapostiviestit</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Sisällytä</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Estetyt numerot</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Multimediaviestit</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Muokkaa sanaa</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Vanhentunut</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Varoitus</text>
+    <text id="IDS_COM_SK_EDIT">Muokkaa</text>
+    <text id="IDS_COM_POP_FAILED">Epäonnistui</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Poista numero</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Tallenna ääntä</text>
+    <text id="IDS_COM_SK_BACK">Takaisin</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode-merkistö</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Poista sanat</text>
+    <text id="IDS_COM_BODY_FORWARD">Lähetä edelleen</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Ei viestejä</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Vierailuverkko</text>
+    <text id="IDS_MSGF_BODY_FROM">Lähettäjä</text>
+    <text id="IDS_COM_SK_DELETE">Poista</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Lukem.</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Vastaanottaja esiintyy kahdesti</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM-merkistö</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM-kortilla olevat viestit</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Lähetetty</text>
+    <text id="IDS_COM_BODY_CONTACTS">Yhteystiedot</text>
+    <text id="IDS_MSGF_OPT_STATUS">Tila</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Vapaa</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Tyyppi</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Automaattinen lataus</text>
+    <text id="IDS_MSGF_SK_RESEND">Läh. uud.</text>
+    <text id="IDS_COM_SK_CANCEL">Peruuta</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Vastaanottoasetukset</text>
+    <text id="IDS_COM_BODY_GALLERY">Galleria</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Kesto\n(%d s)</text>
+    <text id="IDS_COM_BODY_SEARCH">Etsi</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Viesti-ikkunat</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Lisää numero</text>
+    <text id="IDS_COM_BODY_MEMO">Muistio</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Kopioi SIM-kortille</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Syötä numero</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Lisää yhteystieto</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Kotiverkko</text>
+    <text id="IDS_COM_POP_REJECTED">Hylätty</text>
+    <text id="IDS_COM_BODY_SETTINGS">Asetukset</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Aloita käyttäen</text>
+    <text id="IDS_COM_BODY_DISPLAY">Näyttö</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Suojaus päälle</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Manuaalinen</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM-kortin virhe</text>
+    <text id="IDS_COM_POP_DELETED">Poistettu</text>
+    <text id="IDS_COM_SK_SEND_ABB">Lähetä</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Lähetetty edelleen</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Keskus %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Muokkaa numeroa</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automaattinen</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Näytä viestin tiedot</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Hylkää</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Äänipuhelu</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Käytä voimakkuusnäppäintä</text>
+    <text id="IDS_COM_SK_SAVE">Tallenna</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Täsmälleen sama kuin</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Ei hakutuloksia</text>
+    <text id="IDS_MSGF_BODY_MMS">Multimediaviesti</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Luontitila</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Tekstiviestit</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Vastaanotettu</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Hylkäyskriteeri</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Lykätty</text>
+    <text id="IDS_COM_SK_ADD">Lisää</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Estä</text>
+    <text id="IDS_COM_SK_YES">Kyllä</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Tarkastele yhteystietoja</text>
+    <text id="IDS_COM_SK_SEARCH">Etsi</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AP</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Estetyt sanat</text>
+    <text id="IDS_COM_BODY_SUBJECT">Aihe</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Tunnistamaton</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Lähetä lukuraportti</text>
+    <text id="IDS_MSGF_SK_RESTORE">Palauta</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Pyydä lukuraportti</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Anna sana</text>
+    <text id="IDS_COM_SK3_COMPOSE">Luo</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Tuntematon virhe</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Pyydä toimitusraportti</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Virheelliset vastaanottajat</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Tiedoteviestit</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Tallenna liite</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Toimitusraportti</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Hylätäänkö nykyinen viesti?</text>
+    <text id="IDS_COM_POP_ATTACH">Liitä</text>
+    <text id="IDS_COM_BODY_CALENDAR">Kalenteri</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Puhelu</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Kuvaa video</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Valitse vastaanottaja</text>
+</string_table>
diff --git a/res/fra-CA.xml b/res/fra-CA.xml
new file mode 100644 (file)
index 0000000..bac7e74
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Détails des messages</text>
+    <text id="IDS_COM_SK3_PREVIEW">Aperçu</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d sélectionnées</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">La durée doit être supérieure à %d secondes</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Nombre maximum de caractères atteint. Supprimez des caractères</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Sélectionner tout</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Aucun objet</text>
+    <text id="IDS_COM_POP_CLOSE">Fermer</text>
+    <text id="IDS_COM_BODY_TO">À</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Prendre une photo</text>
+    <text id="IDS_COM_POP_DELETE_Q">Supprimer ?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Mode de saisie</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Nombre maximum de destinataires (%d) atteint</text>
+    <text id="IDS_COM_SK_NO">Non</text>
+    <text id="IDS_COM_BODY_MY_FILES">Mes fichiers</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Copier dans le téléphone</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Messages de diffusion</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Centre de service</text>
+    <text id="IDS_COM_BODY_SMS">Message texte</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Envoi du message d'échec</text>
+    <text id="IDS_COM_POP_SUCCESS">Terminé</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Restreint</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Les messages reçus de vos contacts ne seront pas bloqués même s'ils contiennent des mots bloqués</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Débloquer</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Copie message texte</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Confirmation de lecture</text>
+    <text id="IDS_COM_BODY_MESSAGES">Messages</text>
+    <text id="IDS_COM_SK_OPTIONS">Options</text>
+    <text id="IDS_COM_SK_DONE">OK</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Inconnu</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Messages brouillons</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Service non disponible</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Ajouter un mot</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Voulez-vous vraiment bloquer le contact %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Modifier la taille du texte à l'aide du bouton de volume</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Nouveau message</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Messages Spam</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Inclure</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Numéros bloqués</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Messages multimédias</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Modifier le terme</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Expiré</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Avertissement</text>
+    <text id="IDS_COM_SK_EDIT">Modifier</text>
+    <text id="IDS_COM_POP_FAILED">Échec</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Supprimer le numéro</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Enregistrer un clip audio</text>
+    <text id="IDS_COM_SK_BACK">Retour</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Supprimer des mots</text>
+    <text id="IDS_COM_BODY_FORWARD">Transférer</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Aucun message</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Réseau d'itinérance</text>
+    <text id="IDS_MSGF_BODY_FROM">De</text>
+    <text id="IDS_COM_SK_DELETE">Supprimer</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Non lu</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Destinataire en double</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">Alphabet GSM</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">Messages de la carte SIM</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Envoyé</text>
+    <text id="IDS_COM_BODY_CONTACTS">Contacts</text>
+    <text id="IDS_MSGF_OPT_STATUS">État</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Libre</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Type</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Téléchargement auto.</text>
+    <text id="IDS_MSGF_SK_RESEND">Renvoyer</text>
+    <text id="IDS_COM_SK_CANCEL">Annuler</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Options de réception</text>
+    <text id="IDS_COM_BODY_GALLERY">Galerie</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Durée\n(%d s.)</text>
+    <text id="IDS_COM_BODY_SEARCH">Recherche</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Messageries</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Ajouter un numéro</text>
+    <text id="IDS_COM_BODY_MEMO">Note</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Copier dans SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Entrez le numéro</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Ajouter un contact</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Réseau domestique</text>
+    <text id="IDS_COM_POP_REJECTED">Rejeté</text>
+    <text id="IDS_COM_BODY_SETTINGS">Paramètres</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Commence par</text>
+    <text id="IDS_COM_BODY_DISPLAY">Affichage</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Protection activée</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Manuel</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Carte SIM non disponible</text>
+    <text id="IDS_COM_POP_DELETED">Supprimé</text>
+    <text id="IDS_COM_SK_SEND_ABB">Envoyer</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Transféré</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Centre %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Modifier un numéro</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automatique</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Aff. détails message</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Refuser</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Appel vocal</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Bouton de volume</text>
+    <text id="IDS_COM_SK_SAVE">Sauv.</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Identique à</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Aucun résultat de recherche</text>
+    <text id="IDS_MSGF_BODY_MMS">Message multimédia</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Mode de création</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Messages texte</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Reçu</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Critères correspondants</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Différé</text>
+    <text id="IDS_COM_SK_ADD">Ajouter</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Bloquer</text>
+    <text id="IDS_COM_SK_YES">Oui</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Afficher le contact</text>
+    <text id="IDS_COM_SK_SEARCH">Rechercher</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Mots bloqués</text>
+    <text id="IDS_COM_BODY_SUBJECT">Objet</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Non reconnu</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Envoyer une confirmation de lecture</text>
+    <text id="IDS_MSGF_SK_RESTORE">Restaurer</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Demander une confirmation de lecture</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Entrer un mot</text>
+    <text id="IDS_COM_SK3_COMPOSE">Rédiger</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Une erreur inconnue est survenue</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Demander un rapport de remise</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Destinataires non valides</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Messages diffusés</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Enregistrer la pièce jointe</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Rapport de remise</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Ignorer le message actuel?</text>
+    <text id="IDS_COM_POP_ATTACH">Joindre</text>
+    <text id="IDS_COM_BODY_CALENDAR">Calendrier</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Appeler</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Saisir une vidéo</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Sélectionner un destinataire</text>
+</string_table>
diff --git a/res/fra-FR.xml b/res/fra-FR.xml
new file mode 100644 (file)
index 0000000..112e4ec
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Détails des messages</text>
+    <text id="IDS_COM_SK3_PREVIEW">Aperçu</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d sélectionné(es)</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">La durée doit être supérieure à %d secondes</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Nombre maximum de caractères atteint. Supprimez des caractères</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Sélect. tout</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Aucun objet</text>
+    <text id="IDS_COM_POP_CLOSE">Fermer</text>
+    <text id="IDS_COM_BODY_TO">A</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Photographier</text>
+    <text id="IDS_COM_POP_DELETE_Q">Supprimer ?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Mode de saisie</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Nombre maximum de destinataires (%d) atteint</text>
+    <text id="IDS_COM_SK_NO">Non</text>
+    <text id="IDS_COM_BODY_MY_FILES">Mes fichiers</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Copier dans le téléphone</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Messages de diffusion</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Centre de service</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Envoi du message d'échec</text>
+    <text id="IDS_COM_POP_SUCCESS">Terminé</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Limité</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Les messages reçus de vos contacts ne seront pas bloqués même s'ils contiennent des mots bloqués</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Débloquer</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Copie message texte</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Confirmation de lecture</text>
+    <text id="IDS_COM_BODY_MESSAGES">Messages</text>
+    <text id="IDS_COM_SK_OPTIONS">Options</text>
+    <text id="IDS_COM_SK_DONE">Effectué</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Inconnu</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Messages brouillons</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Service non disponible</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Ajouter un mot</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Bloquer %s ?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Modifier la taille du texte à l'aide de la touche de volume</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Nouveau message</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Messages Spam</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Inclure</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Numéros bloqués</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">MMS</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Modifier le terme</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Date d'expiration révolue</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Avertissement</text>
+    <text id="IDS_COM_SK_EDIT">Modifier</text>
+    <text id="IDS_COM_POP_FAILED">Échec</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Supprimer le numéro</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Enregistrement audio</text>
+    <text id="IDS_COM_SK_BACK">Retour</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Supprimer des mots</text>
+    <text id="IDS_COM_BODY_FORWARD">Transf.</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Aucun message</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Réseau d'itinérance</text>
+    <text id="IDS_MSGF_BODY_FROM">De</text>
+    <text id="IDS_COM_SK_DELETE">Supprimer</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Non lu</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Destinataire en double</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">Alphabet GSM</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">Messages de la carte SIM</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Envoyé(s)</text>
+    <text id="IDS_COM_BODY_CONTACTS">Contacts</text>
+    <text id="IDS_MSGF_OPT_STATUS">Etat</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Libre</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Type</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Téléchargement auto.</text>
+    <text id="IDS_MSGF_SK_RESEND">Renvoyer</text>
+    <text id="IDS_COM_SK_CANCEL">Annuler</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Options de réception</text>
+    <text id="IDS_COM_BODY_GALLERY">Galerie</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Durée\n(%d s.)</text>
+    <text id="IDS_COM_BODY_SEARCH">Rechercher</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Messageries</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Ajouter un numéro</text>
+    <text id="IDS_COM_BODY_MEMO">Mémo</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Copier dans SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Saisir un numéro</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Ajouter aux contacts</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Réseau domestique</text>
+    <text id="IDS_COM_POP_REJECTED">Rejeté</text>
+    <text id="IDS_COM_BODY_SETTINGS">Paramètres</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Commence par</text>
+    <text id="IDS_COM_BODY_DISPLAY">Affichage</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Activer protection</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Manuel</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Échec carte SIM</text>
+    <text id="IDS_COM_POP_DELETED">Supprimé</text>
+    <text id="IDS_COM_SK_SEND_ABB">Envoyer</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Transféré</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Centre %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Modifier un numéro</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automatique</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Aff. détails message</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Refuser</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Appel vocal</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Utiliser touche de volume</text>
+    <text id="IDS_COM_SK_SAVE">Sauveg.</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Identique à</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Aucun résultat trouvé</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Mode de création</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">SMS</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Reçu(s)</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Critères correspondants</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Différé</text>
+    <text id="IDS_COM_SK_ADD">Ajouter</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Bloquer</text>
+    <text id="IDS_COM_SK_YES">Oui</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Voir le contact</text>
+    <text id="IDS_COM_SK_SEARCH">Rechercher</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Mots bloqués</text>
+    <text id="IDS_COM_BODY_SUBJECT">Objet</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Non reconnu</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Confirmation de lecture</text>
+    <text id="IDS_MSGF_SK_RESTORE">Restaurer</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Confirmation de lecture</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Entrer un mot</text>
+    <text id="IDS_COM_SK3_COMPOSE">Rédiger</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Une erreur inconnue est survenue</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Accusé de réception</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Destinataires non valides</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Messages de diffusion</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Enregistrer la pièce jointe</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Accusé de réception</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Ignorer le message actuel ?</text>
+    <text id="IDS_COM_POP_ATTACH">Joindre</text>
+    <text id="IDS_COM_BODY_CALENDAR">Calendrier</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Appel</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Capturer une vidéo</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Sélectionner un destinataire</text>
+</string_table>
diff --git a/res/gle-IE.xml b/res/gle-IE.xml
new file mode 100644 (file)
index 0000000..f5e286b
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Sonraí na teachtaireachta</text>
+    <text id="IDS_COM_SK3_PREVIEW">Réamhamharc</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d roghnaithe</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Ní mór fad ama bheith níos faide ná %d soicind</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Uaslíon na gcarachtar sáraithe. Scrios roinnt carachtar</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Roghnaigh gach</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Níl ábhar ann</text>
+    <text id="IDS_COM_POP_CLOSE">Dún</text>
+    <text id="IDS_COM_BODY_TO">Chuig</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Glac pictiúr</text>
+    <text id="IDS_COM_POP_DELETE_Q">Scrios?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Mód ionchuir</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Uaslíon na bhfaighteoirí (%d) bainte amach</text>
+    <text id="IDS_COM_SK_NO">Ná déan é</text>
+    <text id="IDS_COM_BODY_MY_FILES">Mo Chomhaid</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Cóipeáil chuig fón</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Teachtaireachtaí CB</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Ionad seirbhíse</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Theip ar sheoladh teachtaireachta</text>
+    <text id="IDS_COM_POP_SUCCESS">D’éirigh leis</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Srianta</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Ní chuirfear bac ar theachtaireachtaí ó do theagmhálaithe fiú má tá focail bhactha iontu</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Bain bac</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Cóipeáil téacs tcht.</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Admháil léite</text>
+    <text id="IDS_COM_BODY_MESSAGES">Teachtaireachtaí</text>
+    <text id="IDS_COM_SK_OPTIONS">Roghanna</text>
+    <text id="IDS_COM_SK_DONE">Déanta</text>
+    <text id="IDS_COM_POP_PM">I.N.</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Anaithnid</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Dréacht-teachtaireachtaí</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Níl seirbhís ar fáil</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Cuir focal leis</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Cuir bac ar %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Athraigh méid an téacs ag baint úsáide as an eochair airde</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Teachtaireacht nua</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Teachtaireachtaí turscair</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Áirigh</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Uimhreacha bactha</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Teachtaireachtaí ilmheán</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Cuir focal in eagar</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Imithe as feidhm</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Rabhadh</text>
+    <text id="IDS_COM_SK_EDIT">Eagraigh</text>
+    <text id="IDS_COM_POP_FAILED">Theip air</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Scrios uimhir</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Taifead fuaim</text>
+    <text id="IDS_COM_SK_BACK">Siar</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Scrios focail</text>
+    <text id="IDS_COM_BODY_FORWARD">Seol ar aghaidh</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Níl teachtaireachtaí ann</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Líonra iasachta</text>
+    <text id="IDS_MSGF_BODY_FROM">Ó</text>
+    <text id="IDS_COM_SK_DELETE">Scrios</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Neamh-léite</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Faighteoir dúbláilte</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">Aibítir GSM</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">Teachtaireachtaí chárta SIM</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Seolta</text>
+    <text id="IDS_COM_BODY_CONTACTS">Teagmhálaithe</text>
+    <text id="IDS_MSGF_OPT_STATUS">Stádas</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Saor in aisce</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Cineál</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Uath-íoslódáil</text>
+    <text id="IDS_MSGF_SK_RESEND">Seol arís</text>
+    <text id="IDS_COM_SK_CANCEL">Cuir ar ceal</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Roghanna fála</text>
+    <text id="IDS_COM_BODY_GALLERY">Gailearaí</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Fad ama\n(%d shoic)</text>
+    <text id="IDS_COM_BODY_SEARCH">Cuardaigh</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Boscaí teachtaireachta</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Cuir uimhir leis</text>
+    <text id="IDS_COM_BODY_MEMO">Meabhrán</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Cóipeáil chuig SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Iontráil uimhir</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Cuir teagmhálaí leis</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Líonra baile</text>
+    <text id="IDS_COM_POP_REJECTED">Diúltaithe</text>
+    <text id="IDS_COM_BODY_SETTINGS">Socruithe</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Tosaigh le</text>
+    <text id="IDS_COM_BODY_DISPLAY">Taispeáint</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Cosaint air</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Láimhe</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Níl an cárta SIM ar fáil</text>
+    <text id="IDS_COM_POP_DELETED">Scriosta</text>
+    <text id="IDS_COM_SK_SEND_ABB">Seol</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Seolta ar aghaidh</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Larionad %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Cuir uimhir in eagar</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Uathoibríoch</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Amharc sonraí tcht.</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Diúltaigh</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Glao gutha</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Úsáid an eochair airde</text>
+    <text id="IDS_COM_SK_SAVE">Sábháil</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Díreach comhchosúil le</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Níl torthaí cuardaigh ann</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Mód cruthaithe</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Teachtaireachtaí téacs</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Faighte</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Meaitseáil critéir</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Curtha siar</text>
+    <text id="IDS_COM_SK_ADD">Cuir leis</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Cuir bac air</text>
+    <text id="IDS_COM_SK_YES">Déan é</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Amharc ar theagmhálaí</text>
+    <text id="IDS_COM_SK_SEARCH">Cuardaigh</text>
+    <text id="IDS_COM_POP_AM_M_ABB">R.N.</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Focail bhactha</text>
+    <text id="IDS_COM_BODY_SUBJECT">Ábhar</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Neamhaitheanta</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Seol admháil léite?</text>
+    <text id="IDS_MSGF_SK_RESTORE">Aischuir</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Iarr admháil léite</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Iontráil focal</text>
+    <text id="IDS_COM_SK3_COMPOSE">Cum</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Tharla earráid anaithnid</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Iarr admháil seachadta</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Faighteoirí neamhbhailí</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Teachtaireachtaí craolta</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Sábháil ceangaltán</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Admháil seachadta</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Díobh an teachtaireacht reatha?</text>
+    <text id="IDS_COM_POP_ATTACH">Cuir i gceangail</text>
+    <text id="IDS_COM_BODY_CALENDAR">Féilire</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Glaoigh</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Gabh físeán</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Roghnaigh faighteoir</text>
+</string_table>
diff --git a/res/glg-ES.xml b/res/glg-ES.xml
new file mode 100644 (file)
index 0000000..95e0000
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Detalles da mensaxe</text>
+    <text id="IDS_COM_SK3_PREVIEW">Vista previa</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d seleccionadas</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">A duración debe ser de máis de %d segundos</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Número máximo de caracteres excedido. Elimine algúns caracteres</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Seleccionar todo</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Sen asunto</text>
+    <text id="IDS_COM_POP_CLOSE">Pechar</text>
+    <text id="IDS_COM_BODY_TO">Para</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Facer unha foto</text>
+    <text id="IDS_COM_POP_DELETE_Q">Eliminar?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Modo de entrada</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Alcanzouse o número máximo de destinatarios (%d)</text>
+    <text id="IDS_COM_SK_NO">Non</text>
+    <text id="IDS_COM_BODY_MY_FILES">Os Meus Arquivos</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Copiar ao teléfono</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Mensaxes CB</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Centro de servizo</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Erro ao enviar a mensaxe</text>
+    <text id="IDS_COM_POP_SUCCESS">Éxito</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Restrinxida</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">As mensaxes recibidas dos teus contactos non se bloquearán aínda que conteñan palabras bloqueadas</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Desbloquear</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Copiar men. de texto</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Informe de lectura</text>
+    <text id="IDS_COM_BODY_MESSAGES">Mensaxes</text>
+    <text id="IDS_COM_SK_OPTIONS">Opcións</text>
+    <text id="IDS_COM_SK_DONE">Finalizado</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Descoñecido</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Borradores</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Servizo non dispoñible</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Engadir palabra</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Bloquear a %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Cambia o tamaño do texto mediante a tecla de volume</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Nova mensaxe</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Mensaxes de correo non desexado</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Incluír</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Números bloqueados</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Mensaxes multimedia</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Editar palabra</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Caducada</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Aviso</text>
+    <text id="IDS_COM_SK_EDIT">Editar</text>
+    <text id="IDS_COM_POP_FAILED">Erro</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Eliminar número</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Gravar audio</text>
+    <text id="IDS_COM_SK_BACK">Atrás</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Eliminar palabras</text>
+    <text id="IDS_COM_BODY_FORWARD">Reenviar</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Non hai mensaxes</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Rede estranxeira</text>
+    <text id="IDS_MSGF_BODY_FROM">De</text>
+    <text id="IDS_COM_SK_DELETE">Eliminar</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Non lida</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Destinatario duplicado</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">Alfabeto GSM</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">Mensaxes da tarxeta SIM</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Enviada</text>
+    <text id="IDS_COM_BODY_CONTACTS">Contactos</text>
+    <text id="IDS_MSGF_OPT_STATUS">Estado</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Libre</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Tipo</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Descarga automática</text>
+    <text id="IDS_MSGF_SK_RESEND">Vol env</text>
+    <text id="IDS_COM_SK_CANCEL">Cancelar</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Opcións de recepción</text>
+    <text id="IDS_COM_BODY_GALLERY">Galería</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Duración\n(%d seg.)</text>
+    <text id="IDS_COM_BODY_SEARCH">Buscar</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Cadros de mensaxe</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Engadir número</text>
+    <text id="IDS_COM_BODY_MEMO">Nota</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Copiar á SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Introduce o número</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Engadir contacto</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Rede local</text>
+    <text id="IDS_COM_POP_REJECTED">Rexeitada</text>
+    <text id="IDS_COM_BODY_SETTINGS">Axustes</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Comezar con</text>
+    <text id="IDS_COM_BODY_DISPLAY">Pantalla</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Protección activada</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Manual</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Tarxeta SIM non dispoñible</text>
+    <text id="IDS_COM_POP_DELETED">Eliminado</text>
+    <text id="IDS_COM_SK_SEND_ABB">Env.</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Reenviada</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Centro %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Editar número</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automática</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Ver detalles da mens</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Rexeitar</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Chamada de voz</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Utiliza a tecla de volume</text>
+    <text id="IDS_COM_SK_SAVE">Gardar</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Exactamente o mesmo que</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Non hai resultados da busca</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Modo creación</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Mensaxes de texto</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Recibido</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Axustarse a criterios</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Desviada</text>
+    <text id="IDS_COM_SK_ADD">Engadir</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Bloquear</text>
+    <text id="IDS_COM_SK_YES">Si</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Ver contacto</text>
+    <text id="IDS_COM_SK_SEARCH">Buscar</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Palabras bloqueadas</text>
+    <text id="IDS_COM_BODY_SUBJECT">Asunto</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Non recoñecida</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Enviar informe de lectura</text>
+    <text id="IDS_MSGF_SK_RESTORE">Restaurar</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Solicitar inform. lectura</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Introducir palabra</text>
+    <text id="IDS_COM_SK3_COMPOSE">Redactar</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Houbo un erro descoñecido</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Solicitar informe de entrega</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Destinatarios incorrectos</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Mensaxes de difusión</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Gardar adxunto</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Informe de entrega</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Eliminar esta mensaxe?</text>
+    <text id="IDS_COM_POP_ATTACH">Achegar</text>
+    <text id="IDS_COM_BODY_CALENDAR">Calendario</text>
+    <text id="IDS_COM_SK_OK">Aceptar</text>
+    <text id="IDS_COM_SK_CALL">Chamar</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Capturar Vídeo</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Seleccionar destinatario</text>
+</string_table>
diff --git a/res/hin-IN.xml b/res/hin-IN.xml
new file mode 100644 (file)
index 0000000..e43c8fd
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">सन्देश विवरण</text>
+    <text id="IDS_COM_SK3_PREVIEW">पूर्वावलोकन</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d चयनित</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">अवधि %d सेकंड्स से अधिक होनी चाहिए</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">वर्णो की संख्‍या आधिकतम तक पहुँची. कुछ वर्ण डिलीट करें</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">सभी चुनें</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">कोई विषय नहीं</text>
+    <text id="IDS_COM_POP_CLOSE">बंद करें</text>
+    <text id="IDS_COM_BODY_TO">को</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">तस्वीर लें</text>
+    <text id="IDS_COM_POP_DELETE_Q">हटाएँ?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">इनपुट मोड</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">प्राप्तकर्ताओं की अधिकतम संख्या (%d) तक पहुँच गया</text>
+    <text id="IDS_COM_SK_NO">नहीं</text>
+    <text id="IDS_COM_BODY_MY_FILES">मेरी फाइलें</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">फोन में कॉपी करें</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">CB सन्देश</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">सेवा केंद्र</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">विफल सन्देश भेजा जा रहा है</text>
+    <text id="IDS_COM_POP_SUCCESS">सफलता</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">प्रतिबंधित</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">आपके संपर्कों से प्राप्त संदेशों को अवरूद्ध नहीं किया जाएगा भले ही उनमें अवरूद्ध किए गए शब्द हों</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">अनब्‍लॉक करें</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">सन्देश टेक्‍स्‍ट कॉपी करें</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">पठित रिपोर्ट</text>
+    <text id="IDS_COM_BODY_MESSAGES">सन्देश</text>
+    <text id="IDS_COM_SK_OPTIONS">विकल्प</text>
+    <text id="IDS_COM_SK_DONE">हुआ</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">अज्ञात</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">ड्राफ़्ट संदेश</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">सेवा अनुपलब्ध</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">शब्द जोड़ें</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">%s ब्लाक करें?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">वॉल्यूम की का उपयोग करते हुए टेक्स्ट आकार बदलें</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">नया सन्देश</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">स्‍पैम सन्देश</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">शामिल करें</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">अवरूद्ध किए गए नंबर</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">मल्टीमीडिया सन्देश</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">शब्‍द संपादन</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">अवधि समाप्त</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">चेतावनी</text>
+    <text id="IDS_COM_SK_EDIT">संपादन</text>
+    <text id="IDS_COM_POP_FAILED">असफल हुआ</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">नंबर हटाएँ</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">ऑडियो रिकॉर्ड करें</text>
+    <text id="IDS_COM_SK_BACK">पीछे</text>
+    <text id="IDS_MSGF_BODY_UNICODE">यूनिकोड</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">शब्द हटाएँ</text>
+    <text id="IDS_COM_BODY_FORWARD">आगे भेजें</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">कोई सन्देश नहीं</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">विदेशी नेटवर्क</text>
+    <text id="IDS_MSGF_BODY_FROM">से</text>
+    <text id="IDS_COM_SK_DELETE">हटाएँ</text>
+    <text id="IDS_MSGF_SK3_UNREAD">अपठित</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">डुप्लीकेट प्राप्तकर्त्ता</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM वर्णाक्षर</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">सीम कार्ड सन्देश</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">भेजा</text>
+    <text id="IDS_COM_BODY_CONTACTS">संपर्क</text>
+    <text id="IDS_MSGF_OPT_STATUS">स्थिति</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">मुक्त</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">प्रकार</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">स्वत: डाउनलोड</text>
+    <text id="IDS_MSGF_SK_RESEND">पुनःभेजें</text>
+    <text id="IDS_COM_SK_CANCEL">रद्द</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">प्राप्ति के विकल्प</text>
+    <text id="IDS_COM_BODY_GALLERY">गैलरी</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">अवधि\n(%d सेकंड)</text>
+    <text id="IDS_COM_BODY_SEARCH">खोजें</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Message बॉक्‍सेज़</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">नंबर जोड़ें</text>
+    <text id="IDS_COM_BODY_MEMO">मेमो</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">SIM में कॉपी करें</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">नंबर प्रविष्‍ट करें</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">संपर्क जोड़ें</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">होम नेटवर्क</text>
+    <text id="IDS_COM_POP_REJECTED">अस्‍वीकृत</text>
+    <text id="IDS_COM_BODY_SETTINGS">सेटिंग्स</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">से शुरू करें</text>
+    <text id="IDS_COM_BODY_DISPLAY">प्रदर्शन</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">सुरक्षा चालू</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">मैनुअल</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM कार्ड अनुपलब्‍ध</text>
+    <text id="IDS_COM_POP_DELETED">हटाया गया</text>
+    <text id="IDS_COM_SK_SEND_ABB">भेजें</text>
+    <text id="IDS_MSGF_POP_FORWARDED">आगे किया गया</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">केंद्र %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">नंबर संपादित करें</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">स्वचालित</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">सन्देश विवरण देखें</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">अस्वीकारें</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">वॉइस कॉल</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">वॉल्यूम की का उपयोग करें</text>
+    <text id="IDS_COM_SK_SAVE">सेव</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">ठीक ऐसा ही</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">कोई खोज परिणाम नहीं</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">निर्माण मोड</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">टेक्स्ट सन्देश</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">प्राप्त हुआ</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">कसौटी मिलाएँ</text>
+    <text id="IDS_MSGF_POP_DEFERRED">स्थगित</text>
+    <text id="IDS_COM_SK_ADD">जोड़ें</text>
+    <text id="IDS_MSGF_OPT_BLOCK">ब्लॉक करें</text>
+    <text id="IDS_COM_SK_YES">हाँ</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">संपर्क देखें</text>
+    <text id="IDS_COM_SK_SEARCH">खोजें</text>
+    <text id="IDS_COM_POP_AM_M_ABB">ए ऍम</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">अवरूद्ध किए गए शब्द</text>
+    <text id="IDS_COM_BODY_SUBJECT">विषय</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">अपरिचित</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">पठित रिपोर्ट भेजें</text>
+    <text id="IDS_MSGF_SK_RESTORE">रीस्‍टोर</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">पठित रिपोर्ट के लिए अनुरोध</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">शब्‍द दर्ज करें</text>
+    <text id="IDS_COM_SK3_COMPOSE">लिखें</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">अज्ञात त्रुटि पायी गयी</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">वितरण रिपोर्ट के लिए अनुरोध</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">अमान्‍य प्राप्तकर्ता</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">प्रसारण सन्देश</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">संलग्नक सुरक्षित करें</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">वितरण रिपोर्ट</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">वर्तमान सन्देश निरस्त करें?</text>
+    <text id="IDS_COM_POP_ATTACH">जोड़ें</text>
+    <text id="IDS_COM_BODY_CALENDAR">कैलेंडर</text>
+    <text id="IDS_COM_SK_OK">ओके</text>
+    <text id="IDS_COM_SK_CALL">कॉल</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">वीडियो कैप्‍चर करें</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">प्राप्‍तकर्ता चुनें</text>
+</string_table>
diff --git a/res/hrv-HR.xml b/res/hrv-HR.xml
new file mode 100644 (file)
index 0000000..7b75a7f
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Detalji poruke</text>
+    <text id="IDS_COM_SK3_PREVIEW">Pregled</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d odabrano</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Trajanje mora biti dulje od %d sek</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Premašen maks. broj znakova. Obrišite neke</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Odaberi sve</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Bez naslova</text>
+    <text id="IDS_COM_POP_CLOSE">Prekid</text>
+    <text id="IDS_COM_BODY_TO">Za</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Fotografiranje</text>
+    <text id="IDS_COM_POP_DELETE_Q">Obrisati?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Način unosa teksta</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Maksimalni broj primatelja (%d)</text>
+    <text id="IDS_COM_SK_NO">Ne</text>
+    <text id="IDS_COM_BODY_MY_FILES">Moje datoteke</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Kopiraj na telefon</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">CB poruke</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Centar za usluge</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Slanje neuspješnih poruka</text>
+    <text id="IDS_COM_POP_SUCCESS">Uspješno</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Ograničeno</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Poruke primljene iz kontakata neće biti blokirane niti ako sadrže blokirane riječi</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Odblokiraj</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Kopiraj tekst poruke</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Izvještaj o čitanju</text>
+    <text id="IDS_COM_BODY_MESSAGES">Poruke</text>
+    <text id="IDS_COM_SK_OPTIONS">Opcije</text>
+    <text id="IDS_COM_SK_DONE">OK</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Nepoznato</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Poruke iz pripreme</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Usluga nedostupna</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Dodaj riječ</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Blokirati %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Promijenite veličinu teksta pomoću tipke za glasnoću</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Nova poruka</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Neželjene poruke</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Sadrži</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Blokirani brojevi</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">MMS poruke</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Uredi riječ</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Isteklo</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Upozorenje</text>
+    <text id="IDS_COM_SK_EDIT">Uredi</text>
+    <text id="IDS_COM_POP_FAILED">Neuspješno</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Obriši broj</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Snimi zvuk</text>
+    <text id="IDS_COM_SK_BACK">Nazad</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Obriši riječi</text>
+    <text id="IDS_COM_BODY_FORWARD">Proslijedi</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Nema poruka</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Roaming</text>
+    <text id="IDS_MSGF_BODY_FROM">Od</text>
+    <text id="IDS_COM_SK_DELETE">Obriši</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Nepročitano</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Primatelji su duplicirani</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM abeceda</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">Poruke na SIM kartici</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Poslano</text>
+    <text id="IDS_COM_BODY_CONTACTS">Imenik</text>
+    <text id="IDS_MSGF_OPT_STATUS">Status</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Slobodno</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Vrsta</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Auto. skidanje</text>
+    <text id="IDS_MSGF_SK_RESEND">Pon. pošalji</text>
+    <text id="IDS_COM_SK_CANCEL">Prekid</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Opcije primanja</text>
+    <text id="IDS_COM_BODY_GALLERY">Album</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Trajanje\n(%d sek)</text>
+    <text id="IDS_COM_BODY_SEARCH">Traži</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Okviri poruka</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Dodaj broj</text>
+    <text id="IDS_COM_BODY_MEMO">Zapis</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Kopiraj na SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Unesite broj</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Dodaj kontakt</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Matična mreža</text>
+    <text id="IDS_COM_POP_REJECTED">Odbačeno</text>
+    <text id="IDS_COM_BODY_SETTINGS">Postavke</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Započni s</text>
+    <text id="IDS_COM_BODY_DISPLAY">Zaslon</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Uključi zaštitu</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Ručno</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Pogreška SIM-kartice</text>
+    <text id="IDS_COM_POP_DELETED">Obrisano</text>
+    <text id="IDS_COM_SK_SEND_ABB">Pošalji</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Proslijeđeno</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Centar %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Izmijeni broj</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automatski</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Prikaz detalja</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Odbaci poziv</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Poziv</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Upotreba tipke glasnoće</text>
+    <text id="IDS_COM_SK_SAVE">Spremi</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Točno kao prikazan</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Nema traženih rezultata</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Način sastavljanja</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">SMS poruke</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Primljeno</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Kriterij podudaranja</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Odgođena</text>
+    <text id="IDS_COM_SK_ADD">Dodaj</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Blokiraj</text>
+    <text id="IDS_COM_SK_YES">Da</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Prikaz kontakta</text>
+    <text id="IDS_COM_SK_SEARCH">Traži</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Blokirane riječi</text>
+    <text id="IDS_COM_BODY_SUBJECT">Naslov</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Neprepoznato</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Slanje izvještaja čitanosti</text>
+    <text id="IDS_MSGF_SK_RESTORE">Vrati</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Izvješće čitanja</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Unesite riječ</text>
+    <text id="IDS_COM_SK3_COMPOSE">Novo</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Nepoznata greška</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Izvješće isporuke</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Greška primatelja</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Info poruke mreže</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Spremi privitak</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Izvješće o isporuci</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Odbaciti trenutnu poruku?</text>
+    <text id="IDS_COM_POP_ATTACH">Dodaj</text>
+    <text id="IDS_COM_BODY_CALENDAR">Kalendar</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Poziv</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Snimanje videa</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Odaberite primatelja</text>
+</string_table>
diff --git a/res/hun-HU.xml b/res/hun-HU.xml
new file mode 100644 (file)
index 0000000..2f91412
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Üzenet részletei</text>
+    <text id="IDS_COM_SK3_PREVIEW">Előnézet</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d kiválasztva</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Az időtartamnak hosszabbnak kel lennie %d másodpercnél</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Túllépte a karakterek maximális számát. Töröljön néhány karaktert</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Összes kijelölése</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Üres tárgymező</text>
+    <text id="IDS_COM_POP_CLOSE">Bezárás</text>
+    <text id="IDS_COM_BODY_TO">Címzett</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Kép készítése</text>
+    <text id="IDS_COM_POP_DELETE_Q">Törli?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Szövegbeviteli üzemmód</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Elérte a címzettek maximális számát (%d)</text>
+    <text id="IDS_COM_SK_NO">Nem</text>
+    <text id="IDS_COM_BODY_MY_FILES">Saját fájlok</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Másolás telefonra</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Hírüzenetek</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Szolgáltatásközpont</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Sikertelen üzenet küldése</text>
+    <text id="IDS_COM_POP_SUCCESS">Sikeres</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Korlátozva</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">A névjegyzékben szereplő címekről kapott üzenetek nem lesznek blokkolva, hacsak nem tartalmaznak tiltott szavakat</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Feloldás</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Üzenetszöv. másolása</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Jelentést olvas</text>
+    <text id="IDS_COM_BODY_MESSAGES">Üzenetek</text>
+    <text id="IDS_COM_SK_OPTIONS">Opciók</text>
+    <text id="IDS_COM_SK_DONE">Kész</text>
+    <text id="IDS_COM_POP_PM">du.</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Ismeretlen</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Piszkozatok</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Szolgáltatás nem elérhető</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Szó hozzáadása</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Letiltja %s felhasználót?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">A hangerőgombbal módosíthatja a szövegméretet</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Új üzenet</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Levélszemét</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Belefoglalás</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Blokkolt számok</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Multimédia üzenetek</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Szó szerkesztése</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Lejárt</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Figyelmeztetés</text>
+    <text id="IDS_COM_SK_EDIT">Szerkeszt</text>
+    <text id="IDS_COM_POP_FAILED">Sikertelen</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Szám törlése</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Hang rögzítése</text>
+    <text id="IDS_COM_SK_BACK">Vissza</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Ékezetes</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Szavak törlése</text>
+    <text id="IDS_COM_BODY_FORWARD">Továbbítás</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Nincs üzenet</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Roamingban használt hálózat</text>
+    <text id="IDS_MSGF_BODY_FROM">Feladó</text>
+    <text id="IDS_COM_SK_DELETE">Töröl</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Olv.tlan</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Kétszer előforduló címzett</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">Ékezet nélkül</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM-üzenetek</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Elküldve</text>
+    <text id="IDS_COM_BODY_CONTACTS">Névjegyek</text>
+    <text id="IDS_MSGF_OPT_STATUS">Állapot</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Szabad</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Típus</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Automatikus letöltés</text>
+    <text id="IDS_MSGF_SK_RESEND">Újraküld</text>
+    <text id="IDS_COM_SK_CANCEL">Mégse</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Fogadás beállítások</text>
+    <text id="IDS_COM_BODY_GALLERY">Galéria</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Időtartam\n(%d mp)</text>
+    <text id="IDS_COM_BODY_SEARCH">Keresés</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Üzenetablakok</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Szám hozzáadása</text>
+    <text id="IDS_COM_BODY_MEMO">Jegyzet</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Másolás SIM-re</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Írja be a számot</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Új névjegy</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Saját hálózat</text>
+    <text id="IDS_COM_POP_REJECTED">Elutasítva</text>
+    <text id="IDS_COM_BODY_SETTINGS">Beállítások</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Ezzel kezdődik:</text>
+    <text id="IDS_COM_BODY_DISPLAY">Kijelző</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Védelem bekapcsolva</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Kézi</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM-kártyahiba</text>
+    <text id="IDS_COM_POP_DELETED">Törölve</text>
+    <text id="IDS_COM_SK_SEND_ABB">Küldés</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Továbbított</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">%d. központ</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Szám szerkesztése</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automatikus</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Üz.adatok megtekint.</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Elutasít</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Hanghívás</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Hangerőgomb használata</text>
+    <text id="IDS_COM_SK_SAVE">Ment</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Pontosan ugyanaz, mint</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Nincs találat</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Létrehozási mód</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Szöveges üzenetek</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Fogadva</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Egyezőségi feltétel</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Elhalasztva</text>
+    <text id="IDS_COM_SK_ADD">Hozzáad</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Letiltás</text>
+    <text id="IDS_COM_SK_YES">Igen</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Névjegy megtekintése</text>
+    <text id="IDS_COM_SK_SEARCH">Keresés</text>
+    <text id="IDS_COM_POP_AM_M_ABB">de.</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Tiltott szavak</text>
+    <text id="IDS_COM_BODY_SUBJECT">Tárgy</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Nem felismert</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Olvasási jelentés küldése</text>
+    <text id="IDS_MSGF_SK_RESTORE">Visz.áll.</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Olvasási jelentést kér</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Írja be a szót</text>
+    <text id="IDS_COM_SK3_COMPOSE">Új üzenet</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Ismeretlen eredetű hiba történt</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Kézbesítési jelentést kér</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Érvénytelen címzettek</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Hálózati hírüzenetek</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Melléklet mentése</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Kézbesítési jelentés</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Elveti a jelenlegi üzenetet?</text>
+    <text id="IDS_COM_POP_ATTACH">Csatolás</text>
+    <text id="IDS_COM_BODY_CALENDAR">Naptár</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Hívás</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Videó rögzítése</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Címzett kiválasztása</text>
+</string_table>
diff --git a/res/hye-AM.xml b/res/hye-AM.xml
new file mode 100644 (file)
index 0000000..53afe02
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Հաղորդագրության մանրամասներ</text>
+    <text id="IDS_COM_SK3_PREVIEW">Դիտում</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d ընտրվել է</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Տևողությունը պետք է լինի %d վայրկյանից երկար</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Հասել եք նիշերի առավելագույն քանակին: Ջնջեք որոշ նիշեր</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Ընտրել բոլորը</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Թեմա չկա</text>
+    <text id="IDS_COM_POP_CLOSE">Փակել</text>
+    <text id="IDS_COM_BODY_TO">Ում</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Նկարել</text>
+    <text id="IDS_COM_POP_DELETE_Q">Ջնջե՞լ</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Ներմուծման ռեժիմ</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Հասել է հասցեատերերի առավելագույն քանակին (%d)</text>
+    <text id="IDS_COM_SK_NO">Ոչ</text>
+    <text id="IDS_COM_BODY_MY_FILES">Իմ Ֆայլերը</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Պատճենել հեռախոսի մեջ</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">ԲՀ հաղորդագրություններ</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Սպասարկման կենտրոն</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Հաղորդագրության ուղարկումը ձախողվեց</text>
+    <text id="IDS_COM_POP_SUCCESS">Հաջողված է</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Արգելված է</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Ձեր կոնտակտներից ստացված հաղորդագրությունները չեն արգելափակվի, նույնիսկ եթե դրանք պարունակում են արգելափակված բառեր</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Հանել արգելափակումից</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Պատճենել հղգրն տեքստ</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Ընթերցման հաշվետվություն</text>
+    <text id="IDS_COM_BODY_MESSAGES">Հղրդգրթ</text>
+    <text id="IDS_COM_SK_OPTIONS">Ընտրանքնր</text>
+    <text id="IDS_COM_SK_DONE">Պատրաստ</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Անհայտ</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Սևագիր հաղորդագրություններ</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Ծառայությունը անհասանելի է</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Ավելացնել բառ</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Արգելափակե՞լ %sին:</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Փոխել տեքստի չափը՝ օգտագործելով ձայնի ուժգնության ստեղնը</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">նոր հաղորդագրություն</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Սպամ հաղորդագրություններ</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Ներառել</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Արգելափակված համարներ</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Մուլտիմեդիա հաղորդագրություններ</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Խմբագրել բառը</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Սպառվել է</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Զգուշացում</text>
+    <text id="IDS_COM_SK_EDIT">Խմբագրել</text>
+    <text id="IDS_COM_POP_FAILED">Ձախողվեց</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Ջնջել համարը</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Ձայնագրել աուդիոն</text>
+    <text id="IDS_COM_SK_BACK">Հետ</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Վերացնել բառեր</text>
+    <text id="IDS_COM_BODY_FORWARD">Փոխանցել</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Հաղորդագրություններ չկան</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Օտարերկրյա ցանց</text>
+    <text id="IDS_MSGF_BODY_FROM">Ումից</text>
+    <text id="IDS_COM_SK_DELETE">Ջնջել</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Չկարդացված</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Կրկնակված հասցեատեր</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM-այբուբեն</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM քարտի հաղորդագրություններ</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Ուղարկված է</text>
+    <text id="IDS_COM_BODY_CONTACTS">Կոնտակտներ</text>
+    <text id="IDS_MSGF_OPT_STATUS">Կարգավիճակ</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Ազատ</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Տեսակ</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Ավտոբեռնում</text>
+    <text id="IDS_MSGF_SK_RESEND">Կրկն ուղր</text>
+    <text id="IDS_COM_SK_CANCEL">Չեղարկել</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Ստացման ընտրանքներ</text>
+    <text id="IDS_COM_BODY_GALLERY">Պատկերասրահ</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Տևողություն\n(%d վրկ)</text>
+    <text id="IDS_COM_BODY_SEARCH">Որոնել</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Հաղորդագրությունների արկղեր</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Ավելացնել համար</text>
+    <text id="IDS_COM_BODY_MEMO">Հիշեցում</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Պատճենել SIM-ի մեջ</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Մուտքագրեք համարը</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Ավելացնել կոնտակտ</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Տեղական ցանց</text>
+    <text id="IDS_COM_POP_REJECTED">Մերժված է</text>
+    <text id="IDS_COM_BODY_SETTINGS">Պարամետրեր</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Սկսել ...ից</text>
+    <text id="IDS_COM_BODY_DISPLAY">Էկրան</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Պաշտպանությունը միացված</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Ձեռքով</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM քարտը հասանելի չէ</text>
+    <text id="IDS_COM_POP_DELETED">Ջնջված է</text>
+    <text id="IDS_COM_SK_SEND_ABB">Ուղկլ</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Փոխանցված է</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Կենտրոն %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Խմբագրել համարը</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Ավտոմատ կերպով</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Դիտել հգրն մնրմսներ</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Մերժել</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Ձայնային զանգ</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Օգտ. ձայնի ուժգն. ստեղնը</text>
+    <text id="IDS_COM_SK_SAVE">Պահել</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Ճիշտ նույնը, ինչ</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Որոնման արդյունքներ չկան</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Ստեղծման ռեժիմ</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Տեքստային հաղորդագրություններ</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Ստացված է</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Համապատասխանեցնել չափանիշները</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Հետաձգված է</text>
+    <text id="IDS_COM_SK_ADD">Ավելացնել</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Արգելափակել</text>
+    <text id="IDS_COM_SK_YES">Այո</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Դիտել կոնտակտը</text>
+    <text id="IDS_COM_SK_SEARCH">Որոնում</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Արգելափակված բառեր</text>
+    <text id="IDS_COM_BODY_SUBJECT">Թեմա</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Չի ճանաչվել</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Ուղարկել ընթերցման ստացականը</text>
+    <text id="IDS_MSGF_SK_RESTORE">Վերականգ</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Հայց. ընթերց. հաշվետվ.</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Մուտքագրել բառ</text>
+    <text id="IDS_COM_SK3_COMPOSE">Կազմել</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Անհայտ սխալ տեղի ունեցավ</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Հայցել առաքման հաշվետվություն</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Անվավեր հասցեատերեր</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Ցանցի հաղորդագրություններ</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Պահպանել կիցը</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Առաքման զեկույց</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Դեն նետե՞լ ընթացիկ հաղորդագրությունը:</text>
+    <text id="IDS_COM_POP_ATTACH">Կցել</text>
+    <text id="IDS_COM_BODY_CALENDAR">Օրացույց</text>
+    <text id="IDS_COM_SK_OK">Ընդունել</text>
+    <text id="IDS_COM_SK_CALL">Զանգ</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Տսհլվկ նկրլ</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Ընտրել հասցեատեր</text>
+</string_table>
diff --git a/res/isl-IS.xml b/res/isl-IS.xml
new file mode 100644 (file)
index 0000000..b4fe9c9
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Upplýsingar um skilaboð</text>
+    <text id="IDS_COM_SK3_PREVIEW">Skoða</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d valið</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Lengdin verður að vera meiri en %d sekúndur</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Hámarksfjölda stafa hefur verið náð. Eyddu einhverjum stöfum</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Velja allt</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Ekkert efni</text>
+    <text id="IDS_COM_POP_CLOSE">Loka</text>
+    <text id="IDS_COM_BODY_TO">Til</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Taka mynd</text>
+    <text id="IDS_COM_POP_DELETE_Q">Á að eyða?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Innsláttaraðferð</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Hámarksfjölda viðtakenda (%d) náð</text>
+    <text id="IDS_COM_SK_NO">Nei</text>
+    <text id="IDS_COM_BODY_MY_FILES">Skrárnar mínar</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Afrita í síma</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Skilaboð frá endurvarpa</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Þjónustumiðstöð</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Sendi skilaboð sem mistókst að senda</text>
+    <text id="IDS_COM_POP_SUCCESS">Árangur</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Takmarkað</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Skilaboð frá tengiliðunum þínum verða ekki útilokuð jafnvel þótt þau innihaldi orð á bannlista</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Taka úr lás</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Afrita skilab.texta</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Lestilkynning</text>
+    <text id="IDS_COM_BODY_MESSAGES">Skilaboð</text>
+    <text id="IDS_COM_SK_OPTIONS">Valkostir</text>
+    <text id="IDS_COM_SK_DONE">Lokið</text>
+    <text id="IDS_COM_POP_PM">eh</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Óþekkt</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Drög</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Ótiltæk þjónusta</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Bæta við orði</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Loka á %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Hljóðstyrkstakkinn er notaður til að breyta stærð texta</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Ný boð</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Ruslpóstur</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Láta fylgja</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Númer á bannlista</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Margmiðlunarboð</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Breyta orði</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Útrunnið</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Viðvörun</text>
+    <text id="IDS_COM_SK_EDIT">Breyta</text>
+    <text id="IDS_COM_POP_FAILED">Mistókst</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Eyða númeri</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Taka upp hljóð</text>
+    <text id="IDS_COM_SK_BACK">Bakka</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Eyða orðum</text>
+    <text id="IDS_COM_BODY_FORWARD">Framsending</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Engin boð</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Reikikerfi</text>
+    <text id="IDS_MSGF_BODY_FROM">Frá</text>
+    <text id="IDS_COM_SK_DELETE">Eyða</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Ólesið</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Viðtakandi kemur tvisvar fyrir</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM stafróf</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM-kortsskilaboð</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Sent</text>
+    <text id="IDS_COM_BODY_CONTACTS">Tengiliðir</text>
+    <text id="IDS_MSGF_OPT_STATUS">Staða</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Laust</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Tegund</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Sjálfvirkt niðurhal</text>
+    <text id="IDS_MSGF_SK_RESEND">Senda aftur</text>
+    <text id="IDS_COM_SK_CANCEL">Hætta við</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Móttökukostir</text>
+    <text id="IDS_COM_BODY_GALLERY">Gallerí</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Tímalengd\n(%d sek.)</text>
+    <text id="IDS_COM_BODY_SEARCH">Leit</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Skilaboðahólf</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Bæta við númeri</text>
+    <text id="IDS_COM_BODY_MEMO">Minnispunktar</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Afrita á SIM-kort</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Tilgreina númer</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Bæta tengiliði við</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Heimakerfi</text>
+    <text id="IDS_COM_POP_REJECTED">Hafnað</text>
+    <text id="IDS_COM_BODY_SETTINGS">Stillingar</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Byrja á</text>
+    <text id="IDS_COM_BODY_DISPLAY">Skjár</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Kveikt á vörn</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Handvirkt</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM-kort brást</text>
+    <text id="IDS_COM_POP_DELETED">Eytt</text>
+    <text id="IDS_COM_SK_SEND_ABB">Senda</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Framsent</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Miðstöð %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Breyta númeri</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Sjálfvirkt</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Sjá uppl. um skilab.</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Hafna</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Raddsímtal</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Notaðu hljóðstyrkstakkann</text>
+    <text id="IDS_COM_SK_SAVE">Vista</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Nákvæmlega eins og</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Engar leitarniðurstöður</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Stærðartakmörk</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Textaboð</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Móttekið</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Finna eins</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Seinkað</text>
+    <text id="IDS_COM_SK_ADD">Bæta við</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Læsa</text>
+    <text id="IDS_COM_SK_YES">Já</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Birta tengilið</text>
+    <text id="IDS_COM_SK_SEARCH">Leit</text>
+    <text id="IDS_COM_POP_AM_M_ABB">f.h.</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Orð á bannlista</text>
+    <text id="IDS_COM_BODY_SUBJECT">Efni</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Óþekkt</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Senda lestilkynningu</text>
+    <text id="IDS_MSGF_SK_RESTORE">Endurh.</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Biðja um lestilkynningu</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Færðu inn orð</text>
+    <text id="IDS_COM_SK3_COMPOSE">Skrifa</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Óþekkt villa kom upp</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Biðja um skilatilkynningu</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Ógildir viðtakendur</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Skilaboð frá endurvarpa</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Vista viðhengi</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Skilatilkynning</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Viltu fleygja þessum skilaboðum?</text>
+    <text id="IDS_COM_POP_ATTACH">Hengja við</text>
+    <text id="IDS_COM_BODY_CALENDAR">Dagbók</text>
+    <text id="IDS_COM_SK_OK">Í lagi</text>
+    <text id="IDS_COM_SK_CALL">Símtal</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Taka upp vídeó</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Velja viðtakanda</text>
+</string_table>
diff --git a/res/ita-IT.xml b/res/ita-IT.xml
new file mode 100644 (file)
index 0000000..b80d815
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Dettagli del messaggio</text>
+    <text id="IDS_COM_SK3_PREVIEW">Anteprima</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d selezionate</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">La durata deve essere superiore a %d secondi</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Superato numero massimo di caratteri. Eliminare alcuni caratteri</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Seleziona tutto</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Nessun oggetto</text>
+    <text id="IDS_COM_POP_CLOSE">Chiudi</text>
+    <text id="IDS_COM_BODY_TO">A</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Scatta foto</text>
+    <text id="IDS_COM_POP_DELETE_Q">Eliminare?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Modalità scrittura</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Raggiunto numero massimo di destinatari (%d)</text>
+    <text id="IDS_COM_SK_NO">No</text>
+    <text id="IDS_COM_BODY_MY_FILES">Archivio</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Copia nel telefono</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Messaggi CB</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Centro servizi</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Invio messaggio non riuscito</text>
+    <text id="IDS_COM_POP_SUCCESS">Operazione eseguita</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Con restrizioni</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">I messaggi ricevuti dai contatti non verranno bloccati anche se contengono parole bloccate</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Sblocca</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Copia testo messaggio</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Conferma lettura</text>
+    <text id="IDS_COM_BODY_MESSAGES">Messaggi</text>
+    <text id="IDS_COM_SK_OPTIONS">Opzioni</text>
+    <text id="IDS_COM_SK_DONE">Fatto</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Sconosciuto</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Bozze messaggi</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Servizio non disponibile</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Aggiungi parola</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Bloccare %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Modifica le dimensioni del testo con il tasto del volume</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Nuovo messaggio</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Messaggi spam</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Contiene</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Numeri bloccati</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">MMS</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Modifica parola</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Scaduta</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Avviso</text>
+    <text id="IDS_COM_SK_EDIT">Modifica</text>
+    <text id="IDS_COM_POP_FAILED">Errore</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Elimina numero</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Registra audio</text>
+    <text id="IDS_COM_SK_BACK">Indietro</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Elimina parole</text>
+    <text id="IDS_COM_BODY_FORWARD">Inoltra</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Nessun messaggio</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Rete roaming</text>
+    <text id="IDS_MSGF_BODY_FROM">Da</text>
+    <text id="IDS_COM_SK_DELETE">Elimina</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Non letto</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Destinatario duplicato</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">Alfabeto GSM</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">Messaggi scheda SIM</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Inviato</text>
+    <text id="IDS_COM_BODY_CONTACTS">Rubrica</text>
+    <text id="IDS_MSGF_OPT_STATUS">Stato</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Libera</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Tipo</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Download automatico</text>
+    <text id="IDS_MSGF_SK_RESEND">Invia di nuovo</text>
+    <text id="IDS_COM_SK_CANCEL">Annulla</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Opzioni di ricezione</text>
+    <text id="IDS_COM_BODY_GALLERY">Galleria</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Durata\n(%d sec)</text>
+    <text id="IDS_COM_BODY_SEARCH">Cerca</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Cartelle messaggi</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Aggiungi numero</text>
+    <text id="IDS_COM_BODY_MEMO">Promemoria</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Copia nella SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Inserisci numero</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Agg. contatto</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Propria rete</text>
+    <text id="IDS_COM_POP_REJECTED">Rifiutata</text>
+    <text id="IDS_COM_BODY_SETTINGS">Impostazioni</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Inizia con</text>
+    <text id="IDS_COM_BODY_DISPLAY">Schermo</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Attiva protezione</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Manuale</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Errore scheda SIM</text>
+    <text id="IDS_COM_POP_DELETED">Eliminato/i</text>
+    <text id="IDS_COM_SK_SEND_ABB">Invia</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Inoltrato</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Centro %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Modifica numero</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automatica</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Visual. dettagli msg</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Rifiuta</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Chiamata vocale</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Usa il tasto del volume</text>
+    <text id="IDS_COM_SK_SAVE">Salva</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Esattamente uguale a</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Nessun risultato della ricerca</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Modalità creazione</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">SMS</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Ricevuto</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Criteri corrispondenza</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Rinviato</text>
+    <text id="IDS_COM_SK_ADD">Aggiungi</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Blocca</text>
+    <text id="IDS_COM_SK_YES">Sì</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Visualizza contatti</text>
+    <text id="IDS_COM_SK_SEARCH">Cerca</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Parole bloccate</text>
+    <text id="IDS_COM_BODY_SUBJECT">Oggetto</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Non riconosciuto</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Invia conferma lettura</text>
+    <text id="IDS_MSGF_SK_RESTORE">Riprist.</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Conferma lettura</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Inserisci parola</text>
+    <text id="IDS_COM_SK3_COMPOSE">Componi</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Si è verificato un errore sconosciuto</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Chiedi conferma consegna</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Destinatari non validi</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Messaggi broadcast</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Salva allegato</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Rapporto consegna</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Eliminare messaggio corrente?</text>
+    <text id="IDS_COM_POP_ATTACH">Allega</text>
+    <text id="IDS_COM_BODY_CALENDAR">Calendario</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Chiama</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Registra video</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Seleziona destinatario</text>
+</string_table>
diff --git a/res/jpn-JP.xml b/res/jpn-JP.xml
new file mode 100644 (file)
index 0000000..0915836
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">メッセージの詳細</text>
+    <text id="IDS_COM_SK3_PREVIEW">プレビュー</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d件選択</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">表示時間は%d秒以上である必要があります。</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">最大​文字​数​を​超過​しました。​文字​を​削除​して​ください</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">全て選択</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">件名なし</text>
+    <text id="IDS_COM_POP_CLOSE">閉じる</text>
+    <text id="IDS_COM_BODY_TO">宛先</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">カメラを起動</text>
+    <text id="IDS_COM_POP_DELETE_Q">削除しますか?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">入力モード</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">宛先が最大件数(%d)に達しました。</text>
+    <text id="IDS_COM_SK_NO">いいえ</text>
+    <text id="IDS_COM_BODY_MY_FILES">マイファイル</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">本体にコピー</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">CBメッセージ</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">サービスセンター</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">失敗したメッセージの送信中</text>
+    <text id="IDS_COM_POP_SUCCESS">正常に完了しました。</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">制限</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">自分自身の連絡先から受信したメッセージは、ブロック対象用語が含まれていてもブロックされません。</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">ブロック解除</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">メッセージをコピー</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">レポートを読む</text>
+    <text id="IDS_COM_BODY_MESSAGES">メッセージ</text>
+    <text id="IDS_COM_SK_OPTIONS">オプション</text>
+    <text id="IDS_COM_SK_DONE">完了</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">不明</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">下書きメッセージ</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">サービスを利用できません。</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">単語追加</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">%sをブロックしますか?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">音量キーを使用して、文字サイズを変更</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">新しいメッセージ</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">迷惑メッセージ</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">内容</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">ブロックした番号</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">マルチメディアメッセージ</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">単語を編集</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">期限切れ</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">警告</text>
+    <text id="IDS_COM_SK_EDIT">編集</text>
+    <text id="IDS_COM_POP_FAILED">失敗しました。</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">番号を削除</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">録音</text>
+    <text id="IDS_COM_SK_BACK">戻る</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">用語を削除</text>
+    <text id="IDS_COM_BODY_FORWARD">転送</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">メッセージがありません。</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">外部ネットワーク</text>
+    <text id="IDS_MSGF_BODY_FROM">送信元</text>
+    <text id="IDS_COM_SK_DELETE">削除</text>
+    <text id="IDS_MSGF_SK3_UNREAD">未読</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">宛先が重複しています。</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSMアルファベット</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIMカード​メッセージ</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">送信完了</text>
+    <text id="IDS_COM_BODY_CONTACTS">電話帳</text>
+    <text id="IDS_MSGF_OPT_STATUS">ステータス</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">フリー</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">タイプ</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">自動ダウンロード</text>
+    <text id="IDS_MSGF_SK_RESEND">再送信</text>
+    <text id="IDS_COM_SK_CANCEL">キャンセル</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">受信オプション</text>
+    <text id="IDS_COM_BODY_GALLERY">ギャラリー</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">期間\n(%d秒)</text>
+    <text id="IDS_COM_BODY_SEARCH">検索</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">メッセージ​ボックス</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">番号を追加</text>
+    <text id="IDS_COM_BODY_MEMO">メモ</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">SIMにコピー</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">番号を入力</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">連絡先を追加</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">ホームネットワーク</text>
+    <text id="IDS_COM_POP_REJECTED">拒否されました。</text>
+    <text id="IDS_COM_BODY_SETTINGS">設定</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">前方一致</text>
+    <text id="IDS_COM_BODY_DISPLAY">ディスプレイ</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">保護ON</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">手動</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIMカード​を​利用​でき​ません</text>
+    <text id="IDS_COM_POP_DELETED">削除しました。</text>
+    <text id="IDS_COM_SK_SEND_ABB">送信</text>
+    <text id="IDS_MSGF_POP_FORWARDED">巻戻し</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">センター%d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">番号を編集</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">自動</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">メッセージの詳細を表示</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">拒否</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">音声通話</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">音量キーを使用</text>
+    <text id="IDS_COM_SK_SAVE">保存</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">完全一致</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">検索結果がありません。</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">作成モード</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">SMS</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">受信完了</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">振り分けルール</text>
+    <text id="IDS_MSGF_POP_DEFERRED">遅延</text>
+    <text id="IDS_COM_SK_ADD">追加</text>
+    <text id="IDS_MSGF_OPT_BLOCK">ブロック</text>
+    <text id="IDS_COM_SK_YES">はい</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">連絡先を表示</text>
+    <text id="IDS_COM_SK_SEARCH">検索</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">ブロックした用語</text>
+    <text id="IDS_COM_BODY_SUBJECT">件名</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">未認識</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">既読レポートを送信</text>
+    <text id="IDS_MSGF_SK_RESTORE">回復</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">既読レポートを要求</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">単語​を​入力​して​ください</text>
+    <text id="IDS_COM_SK3_COMPOSE">新規作成</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">不明なエラーが発生しました。</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">配信レポートを要求</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">無効な宛先</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">放送メッセージ</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">添付を保存</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">配信確認</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">現在のメッセージを破棄しますか?</text>
+    <text id="IDS_COM_POP_ATTACH">添付</text>
+    <text id="IDS_COM_BODY_CALENDAR">カレンダー</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">通話</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">動画撮影</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">受信者を選択</text>
+</string_table>
diff --git a/res/kat-GE.xml b/res/kat-GE.xml
new file mode 100644 (file)
index 0000000..2c56dbf
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">წერილის დეტალები</text>
+    <text id="IDS_COM_SK3_PREVIEW">წინასწ. დათვალიერ.</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d არჩეულია</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">ხანგრძლივობა უნდა იყოს %d წამზე მეტი</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">მიღწეულია სიმბოლოების მაქსიმალური რაოდენობა. წაშალეთ რამდენიმე სიმბოლო</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">ყველას არჩევა</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">არ არის თემა</text>
+    <text id="IDS_COM_POP_CLOSE">დახურვა</text>
+    <text id="IDS_COM_BODY_TO">ვის</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">სურათის გადაღება</text>
+    <text id="IDS_COM_POP_DELETE_Q">წაიშალოს?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">შემომავლის რეჟიმი</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">მიღწეულია მიმღებთა მაქსიმალური რაოდენობა (%d)</text>
+    <text id="IDS_COM_SK_NO">არა</text>
+    <text id="IDS_COM_BODY_MY_FILES">ჩემი ფაილები</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">ტელეფონში კოპირება</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">CB წერილები</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">სერვის-ცენტრი</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">იგზავნება გაუგზავნელი წერილები</text>
+    <text id="IDS_COM_POP_SUCCESS">წარმატება</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">შეზღუდულია</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">თვენი კონტაქტებისგან მიღებული წერილები არ დაიბლოკება მაშინაც კი, როდესაც ისინი შეიცავს დალოკილ სიტყვებს</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">განბლოკვა</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">წერილის ტექსტის ასლი</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">წაკითხვის რეპორტი</text>
+    <text id="IDS_COM_BODY_MESSAGES">შეტყობინებები</text>
+    <text id="IDS_COM_SK_OPTIONS">ოფციები</text>
+    <text id="IDS_COM_SK_DONE">შესრულდა</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">უცნობი</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">წერილის მონახაზები</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">მომსახურება არ არის</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">სიტყვის დამატება</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">დაიბლოკოს %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">შეცვალეთ ტექსტის ზომა ხმის რეგულირების ღილაკის გამოყენებით</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">ახალი შეტყობინება</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">სპამი წერილები</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">დამატება</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">დაბლოკილი ნომრები</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">მულტიმედიური შეტყობინებები</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">სიტყვის შესწორება</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">ვადა გაუვიდა</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">გაფრთხილება</text>
+    <text id="IDS_COM_SK_EDIT">შესწორება</text>
+    <text id="IDS_COM_POP_FAILED">ვერ შესრულდა</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">ნომრის წაშლა</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">აუდიო ფაილის ჩაწერა</text>
+    <text id="IDS_COM_SK_BACK">უკან</text>
+    <text id="IDS_MSGF_BODY_UNICODE">უნიკოდი</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">სიტყვების წაშლა</text>
+    <text id="IDS_COM_BODY_FORWARD">გადამისამართება</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">წერილები არ არის</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">უცხოური ქსელი</text>
+    <text id="IDS_MSGF_BODY_FROM">საიდან</text>
+    <text id="IDS_COM_SK_DELETE">წაშლა</text>
+    <text id="IDS_MSGF_SK3_UNREAD">წაუკითხავი</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">გამეორებული მიმღები</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM ანბანი</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">წერილები SIM ბარათზე</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">გაგზავნილია</text>
+    <text id="IDS_COM_BODY_CONTACTS">კონტაქტები</text>
+    <text id="IDS_MSGF_OPT_STATUS">სტატუსი</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">თავისუფალია</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">ტიპი</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">ავტომატური ჩამოტვირთვა</text>
+    <text id="IDS_MSGF_SK_RESEND">თავიდან გაგზავნა</text>
+    <text id="IDS_COM_SK_CANCEL">გაუქმება</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">მიღების ოფციები</text>
+    <text id="IDS_COM_BODY_GALLERY">გალერეა</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">ხანგრძლივობა\n(%d წმ)</text>
+    <text id="IDS_COM_BODY_SEARCH">ძიება</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">წერილების ყუთები</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">ნომრის დამატება</text>
+    <text id="IDS_COM_BODY_MEMO">შეხსენება</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">კოპირება SIM-ზე</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">ჩაწერეთ ნომერი</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">კონტაქტის დამატება</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">შიდა ქსელი</text>
+    <text id="IDS_COM_POP_REJECTED">უარყოფილია</text>
+    <text id="IDS_COM_BODY_SETTINGS">პარამეტრები</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">დასაწყისი</text>
+    <text id="IDS_COM_BODY_DISPLAY">ჩვენება</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">დაცვა ჩართულია</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">მექანიკური</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM ბარათის შეცდომა</text>
+    <text id="IDS_COM_POP_DELETED">წაშლილია</text>
+    <text id="IDS_COM_SK_SEND_ABB">გაგზ.</text>
+    <text id="IDS_MSGF_POP_FORWARDED">გადამისამართდა</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">ცენტრი %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">ნომრის რედაქტირება</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">ავტომატურად</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">წერილის დეტალები</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">უარყოფა</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">ხმოვანი ზარი</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">გამოიყენეთ ხმის ღილაკი</text>
+    <text id="IDS_COM_SK_SAVE">შენახვა</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">ზუსტად იგივე, რაც</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">ძიების შედეგი არ არის</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">შექმნის რეჟიმი</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">ტექსტური შეტყობინებები</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">მიღებულია</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">შედარების კრიტერიუმები</text>
+    <text id="IDS_MSGF_POP_DEFERRED">შეყოვნებულია</text>
+    <text id="IDS_COM_SK_ADD">დამატება</text>
+    <text id="IDS_MSGF_OPT_BLOCK">დაბლოკვა</text>
+    <text id="IDS_COM_SK_YES">დიახ</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">კონტაქტის დათვალიერება</text>
+    <text id="IDS_COM_SK_SEARCH">ძიება</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">დაბლოკილი სიტყვები</text>
+    <text id="IDS_COM_BODY_SUBJECT">თემა</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">ამოუცნობი</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">წაკითხვის შესახებ შეტყობინების გაგზავნა</text>
+    <text id="IDS_MSGF_SK_RESTORE">აღდგენა</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">წაკითხვის რეპორტის მოთხოვნა</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">ჩაწერეთ სიტყვა</text>
+    <text id="IDS_COM_SK3_COMPOSE">შედგენა</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">მოხდა უცნობი შეცდომა</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">მისვლის შეტყობინების მოთხოვნა</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">მიმღებები არასწორია</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">შეტყობინებების გადაცემა</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">მიმაგრებული ფაილის შენახვა</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">მიტანის რეპორტი</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">გადააგდებთ მიმდინარე წერილს?</text>
+    <text id="IDS_COM_POP_ATTACH">მიმაგრება</text>
+    <text id="IDS_COM_BODY_CALENDAR">კალენდარი</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">ზარი</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">ვიდეოს გადაღება</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">აირჩიეთ მიმღები</text>
+</string_table>
diff --git a/res/kaz-KZ.xml b/res/kaz-KZ.xml
new file mode 100644 (file)
index 0000000..895d9c1
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Хабар мәліметтері</text>
+    <text id="IDS_COM_SK3_PREVIEW">Көру</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d таңдалды</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Ұзақтығы %d секундтан асуы керек</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Таңбалардың максималды санынан асып кетті. Кейбір таңбаларды жойыңыз</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Бәрін бөлектеу</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Нысаны жоқ</text>
+    <text id="IDS_COM_POP_CLOSE">Жабу</text>
+    <text id="IDS_COM_BODY_TO">Кімге</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Суретке түсіру</text>
+    <text id="IDS_COM_POP_DELETE_Q">Өшіресіз бе?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Енгізу тәртібі</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Ең көп алушылар санына (%d) жетті</text>
+    <text id="IDS_COM_SK_NO">Жоқ</text>
+    <text id="IDS_COM_BODY_MY_FILES">Менің файлдарым</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Телефонға көшіру</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">CB хабарлары</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Қызмет орталығы</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Хабар жіберілмеді</text>
+    <text id="IDS_COM_POP_SUCCESS">Жетістік</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Шектелген</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Контактілерден алынған хабарларда тыйым салынған сөздер болса да, оларға тыйым салынбайды</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Құлпын ашу</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Хабар мәтінін көшіру</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Оқылғандығы туралы есеп</text>
+    <text id="IDS_COM_BODY_MESSAGES">Хабарламалар</text>
+    <text id="IDS_COM_SK_OPTIONS">Опциялар</text>
+    <text id="IDS_COM_SK_DONE">Дайын</text>
+    <text id="IDS_COM_POP_PM">TK</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Белгісіз</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Жобалық хабарлар</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Қызмет көрсете алмайды</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Сөз қосу</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">%s тыйым салу керек пе?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Дыбыс қаттылығы пернесі арқылы мәтін өлшемін өзгертіңіз</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Жаңа хабарлама</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Спам хабарлар</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Қосу</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Тыйым салынған сандар</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Мультимедиа хабарлары</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Сөзді өзгерту</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Мерзімі өтіп кеткен</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Ескерту</text>
+    <text id="IDS_COM_SK_EDIT">Өзгер.</text>
+    <text id="IDS_COM_POP_FAILED">Үзіліп кетті</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Нөмірді жою</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Аудионы жазу</text>
+    <text id="IDS_COM_SK_BACK">Aртқа</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Юникод</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Сөздерді жою</text>
+    <text id="IDS_COM_BODY_FORWARD">Жіберу</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Хабарлама жоқ</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Шеткі желі</text>
+    <text id="IDS_MSGF_BODY_FROM">Кімнен</text>
+    <text id="IDS_COM_SK_DELETE">Жою</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Оқылмаған</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Қайталанатын алушы</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM алфавиті</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM картасындағы хабарлар</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Жіберілген</text>
+    <text id="IDS_COM_BODY_CONTACTS">Контактілер</text>
+    <text id="IDS_MSGF_OPT_STATUS">Статус</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">тегін</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Түрі</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Авто жазу</text>
+    <text id="IDS_MSGF_SK_RESEND">Қайта жіберу</text>
+    <text id="IDS_COM_SK_CANCEL">Тоқтату</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Қабылдау опциялары</text>
+    <text id="IDS_COM_BODY_GALLERY">Галерея</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Ұзақтығы\n(%d сек)</text>
+    <text id="IDS_COM_BODY_SEARCH">Іздеу</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Хабарламалар қалталары</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Номір қосу</text>
+    <text id="IDS_COM_BODY_MEMO">Жад</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">SIM-картаға көшіру</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Нөмірін жазыңыз</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Нөмір қосу</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Үй желісі</text>
+    <text id="IDS_COM_POP_REJECTED">Қайтарылды</text>
+    <text id="IDS_COM_BODY_SETTINGS">Қондырғ-р</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Бастау</text>
+    <text id="IDS_COM_BODY_DISPLAY">Дисплей</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Қорғаныс қосылды</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Қолмен</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM картасы қол жетімді емес</text>
+    <text id="IDS_COM_POP_DELETED">Жойылды</text>
+    <text id="IDS_COM_SK_SEND_ABB">Жіб.</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Қайта жіберілген</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">%d-орталық</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Нөмірді өзгерту</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Автоматты түрде</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Хабар мәлімет. көру</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Шығару</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Дауыс қоңырауы</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Дыбыс қат. пер. пайдалану</text>
+    <text id="IDS_COM_SK_SAVE">Сақтау</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Дәл сондай</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Іздеу нәтижелері жоқ</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Құру режимі</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Мәтінді хабарламалар</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Қабылданған</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Сәйкес келу мөлшерлері</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Кейнге қалдырылды</text>
+    <text id="IDS_COM_SK_ADD">Қосу</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Құлыптау</text>
+    <text id="IDS_COM_SK_YES">Иә</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Контактты көру</text>
+    <text id="IDS_COM_SK_SEARCH">Тізім</text>
+    <text id="IDS_COM_POP_AM_M_ABB">ТД</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Тыйым салынған сөздер</text>
+    <text id="IDS_COM_BODY_SUBJECT">Нысан</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Танылған жоқ</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Оқу есебін жіберу</text>
+    <text id="IDS_MSGF_SK_RESTORE">Қ. кел-у</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Оқылған туралы есеп беру</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Сөз енгізіңіз</text>
+    <text id="IDS_COM_SK3_COMPOSE">Жазу</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Белгісіз қате пайда болды</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Хабарлама оқылғанда хабарлауды талап ету</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Алушылар қате</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Желі  хабарламасы</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Қосымшаны сақтау</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Жеткізу жөніндегі есеп</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Ағымдағы хабарды алып тастау керек пе?</text>
+    <text id="IDS_COM_POP_ATTACH">Қосымша</text>
+    <text id="IDS_COM_BODY_CALENDAR">Күнтізбе</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Қоңырау</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Видео бөгеліс</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Алушы таңдау</text>
+</string_table>
diff --git a/res/kor-KR.xml b/res/kor-KR.xml
new file mode 100644 (file)
index 0000000..d5864fd
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">메시지 상세정보</text>
+    <text id="IDS_COM_SK3_PREVIEW">미리보기</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d개 선택</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">표시 시간 값은 %d초보다 커야 합니다</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">입력할 수 있는 글자 수를 초과하였습니다. 필요 없는 글자를 삭제하세요</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">모두 선택</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">제목이 없습니다</text>
+    <text id="IDS_COM_POP_CLOSE">닫기</text>
+    <text id="IDS_COM_BODY_TO">수신인</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">사진 촬영</text>
+    <text id="IDS_COM_POP_DELETE_Q">삭제할까요?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">입력 모드</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">추가할 수 있는 수신인(%d명)을 초과하였습니다</text>
+    <text id="IDS_COM_SK_NO">아니요</text>
+    <text id="IDS_COM_BODY_MY_FILES">내 파일</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">휴대폰으로 복사</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">방송 메시지</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">서비스 센터</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">메시지를 전송하지 못하였습니다</text>
+    <text id="IDS_COM_POP_SUCCESS">완료되었습니다</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">제한</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">연락처로부터 수신한 메시지에 차단된 단어가 포함되어 있어도 해당 메시지는 차단되지 않습니다</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">차단 해제</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">메시지 본문 복사</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">읽음 확인</text>
+    <text id="IDS_COM_BODY_MESSAGES">메시지</text>
+    <text id="IDS_COM_SK_OPTIONS">옵션</text>
+    <text id="IDS_COM_SK_DONE">완료</text>
+    <text id="IDS_COM_POP_PM">오후</text>
+    <text id="IDS_COM_BODY_UNKNOWN">알 수 없음</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">임시 메시지</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">서비스를 사용할 수 없습니다</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">단어 추가</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">%s을(를) 차단할까요?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">음량 버튼을 사용하여 글자 크기를 변경합니다</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">새 메시지</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">스팸 메시지</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">포함</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">차단된 전화번호</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">MMS</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">단어 편집</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">만료된 컨텐츠</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">경고</text>
+    <text id="IDS_COM_SK_EDIT">편집</text>
+    <text id="IDS_COM_POP_FAILED">실패하였습니다</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">번호 삭제</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">오디오 녹음</text>
+    <text id="IDS_COM_SK_BACK">이전</text>
+    <text id="IDS_MSGF_BODY_UNICODE">유니코드</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">단어 삭제</text>
+    <text id="IDS_COM_BODY_FORWARD">전달</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">메시지가 없습니다</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">로밍 네트워크</text>
+    <text id="IDS_MSGF_BODY_FROM">발신</text>
+    <text id="IDS_COM_SK_DELETE">삭제</text>
+    <text id="IDS_MSGF_SK3_UNREAD">읽지 않음</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">수신인이 중복 입력되었습니다</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM 알파벳</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM 카드 메시지</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">전송되었습니다</text>
+    <text id="IDS_COM_BODY_CONTACTS">연락처</text>
+    <text id="IDS_MSGF_OPT_STATUS">상태</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">사용 가능</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">형식</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">자동 다운로드</text>
+    <text id="IDS_MSGF_SK_RESEND">재전송</text>
+    <text id="IDS_COM_SK_CANCEL">취소</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">수신 옵션</text>
+    <text id="IDS_COM_BODY_GALLERY">갤러리</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">시간\n(%d초)</text>
+    <text id="IDS_COM_BODY_SEARCH">검색</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">메시지 보관함</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">전화번호 추가</text>
+    <text id="IDS_COM_BODY_MEMO">메모</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">SIM으로 복사</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">전화번호를 입력하세요</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">연락처 추가</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">홈 네트워크</text>
+    <text id="IDS_COM_POP_REJECTED">수신 거절하였습니다</text>
+    <text id="IDS_COM_BODY_SETTINGS">설정</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">입력 번호로 시작</text>
+    <text id="IDS_COM_BODY_DISPLAY">디스플레이</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">보호 설정</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">수동</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM을 사용할 수 없습니다</text>
+    <text id="IDS_COM_POP_DELETED">삭제되었습니다</text>
+    <text id="IDS_COM_SK_SEND_ABB">전송</text>
+    <text id="IDS_MSGF_POP_FORWARDED">전달되었습니다</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">센터%d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">전화번호 편집</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">자동</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">메시지 내용 보기</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">거절</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">음성통화</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">음량 버튼 사용</text>
+    <text id="IDS_COM_SK_SAVE">저장</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">입력 내용과 일치</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">검색 결과가 없습니다</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">첨부 제한 설정</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">문자 메시지</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">수신하였습니다</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">적용 기준</text>
+    <text id="IDS_MSGF_POP_DEFERRED">전송이 연기되었습니다</text>
+    <text id="IDS_COM_SK_ADD">추가</text>
+    <text id="IDS_MSGF_OPT_BLOCK">차단</text>
+    <text id="IDS_COM_SK_YES">예</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">연락처 보기</text>
+    <text id="IDS_COM_SK_SEARCH">검색</text>
+    <text id="IDS_COM_POP_AM_M_ABB">오전</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">차단된 단어</text>
+    <text id="IDS_COM_BODY_SUBJECT">제목</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">인식할 수 없습니다</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">읽음 확인 설정</text>
+    <text id="IDS_MSGF_SK_RESTORE">복원</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">읽음 확인</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">단어를 입력하세요</text>
+    <text id="IDS_COM_SK3_COMPOSE">작성</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">알 수 없는 오류가 발생하였습니다</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">수신 확인</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">수신인이 바르지 않습니다</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">방송 메시지</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">첨부파일 저장</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">수신 확인</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">현재 메시지를 삭제할까요?</text>
+    <text id="IDS_COM_POP_ATTACH">첨부</text>
+    <text id="IDS_COM_BODY_CALENDAR">일정</text>
+    <text id="IDS_COM_SK_OK">확인</text>
+    <text id="IDS_COM_SK_CALL">통화</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">동영상 촬영</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">수신인 선택</text>
+</string_table>
diff --git a/res/lav-LV.xml b/res/lav-LV.xml
new file mode 100644 (file)
index 0000000..061f75d
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Ziņas dati</text>
+    <text id="IDS_COM_SK3_PREVIEW">Atpakaļ</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d izvēlētas</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Ilgumam jābūt garākam par %d sekundēm</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Pārsniegts maksimālais rakstzīmju skaits. Izdzēsiet dažas rakstzīmes</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Izv. visu</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Nav tēmas</text>
+    <text id="IDS_COM_POP_CLOSE">Aizvērt</text>
+    <text id="IDS_COM_BODY_TO">Kam</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Fotografēt</text>
+    <text id="IDS_COM_POP_DELETE_Q">Vai dzēst?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Ievades režīms</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Sasniegts maksimālais adresātu skaits (%d)</text>
+    <text id="IDS_COM_SK_NO">Nē</text>
+    <text id="IDS_COM_BODY_MY_FILES">Mani Faili</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Kopēt tālrunī</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Šūnu apraides ziņas</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Pakalpojumu centrs</text>
+    <text id="IDS_COM_BODY_SMS">Īsziņa</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Ziņa par neveiksmīgu nosūtīšanu</text>
+    <text id="IDS_COM_POP_SUCCESS">Veiksmīgi</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Aizliegts</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Ziņas no jūsu kontaktiem netiks bloķētas pat tad, ja ietvers bloķētos vārdus</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Atbloķēt</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Kopēt ziņas tekstu</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Lasīšanas atskaite</text>
+    <text id="IDS_COM_BODY_MESSAGES">Ziņas</text>
+    <text id="IDS_COM_SK_OPTIONS">Iespējas</text>
+    <text id="IDS_COM_SK_DONE">Gatavs</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Nezināms</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Ziņu melnraksti</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Pakalpojums nav pieejams</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Pievienot vārdu</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Vai bloķēt %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Lai mainītu teksta lielumu, izmantojiet skaļuma regulēšanas taustiņu</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Jauna ziņa</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Surogātpasta ziņas</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Ietver</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Bloķētie numuri</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Multiziņas</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Rediģēt vārdu</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Beidzies derīgums</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Brīdinājums</text>
+    <text id="IDS_COM_SK_EDIT">Rediģēt</text>
+    <text id="IDS_COM_POP_FAILED">Neizdevās</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Dzēst numuru</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Ierakstīt skaņu</text>
+    <text id="IDS_COM_SK_BACK">Atpakaļ</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unikods</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Dzēst vārdus</text>
+    <text id="IDS_COM_BODY_FORWARD">Pārsūtīt</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Nav ziņu</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Viesabonēšanas tīkls</text>
+    <text id="IDS_MSGF_BODY_FROM">No</text>
+    <text id="IDS_COM_SK_DELETE">Dzēst</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Nelas.</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Adresāta dublikāts</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM alfabēts</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM kartes ziņas</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Nosūtīts</text>
+    <text id="IDS_COM_BODY_CONTACTS">Kontakti</text>
+    <text id="IDS_MSGF_OPT_STATUS">Statuss</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Brīvs</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Veids</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Automātiska lejupielāde</text>
+    <text id="IDS_MSGF_SK_RESEND">Sūtīt vēlreiz</text>
+    <text id="IDS_COM_SK_CANCEL">Atcelt</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Saņemšanas iespējas</text>
+    <text id="IDS_COM_BODY_GALLERY">Galerija</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Ilgums\n(%d sek.)</text>
+    <text id="IDS_COM_BODY_SEARCH">Meklēt</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Ziņu pastkastes</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Pievienot numuru</text>
+    <text id="IDS_COM_BODY_MEMO">Atgādne</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Kopēt SIM kartē</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Ievadiet numuru</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Pievienot kontaktu</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Mājas tīkls</text>
+    <text id="IDS_COM_POP_REJECTED">Noraidīts</text>
+    <text id="IDS_COM_BODY_SETTINGS">Iestatījumi</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Sākas ar</text>
+    <text id="IDS_COM_BODY_DISPLAY">Displejs</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Aizsardzība ieslēgta</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Manuāli</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM kartes kļūme</text>
+    <text id="IDS_COM_POP_DELETED">Izdzēsts</text>
+    <text id="IDS_COM_SK_SEND_ABB">Sūtīt</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Pārsūtīta</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Centrs %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Rediģēt numuru</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automātiski</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Skatīt ziņas datus</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Noraidīt</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Balss zvans</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Izm. skaļuma reg. taust.</text>
+    <text id="IDS_COM_SK_SAVE">Saglabāt</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Tieši tāds pats kā</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Nav meklēšanas rezultātu</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Izveides režīms</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Īsziņas</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Saņemts</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Saskaņot kritērijus</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Atlikts</text>
+    <text id="IDS_COM_SK_ADD">Pievienot</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Bloķēt</text>
+    <text id="IDS_COM_SK_YES">Jā</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Skatīt kontaktu</text>
+    <text id="IDS_COM_SK_SEARCH">Meklēt</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Bloķētie vārdi</text>
+    <text id="IDS_COM_BODY_SUBJECT">Tēma</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Neatpazīts</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Sūtīt lasīšanas atskaiti</text>
+    <text id="IDS_MSGF_SK_RESTORE">Atjaunot</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Pieprasīt lasīšanas atsk.</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Ievadiet vārdu</text>
+    <text id="IDS_COM_SK3_COMPOSE">Rakstīt</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Radās nezināma kļūda</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Pieprasīt piegādes atskaiti</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Nederīgi adresāti</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Apraides ziņas</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Saglabāt pielikumu</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Piegādes atskaite</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Vai izmest pašreizējo ziņu?</text>
+    <text id="IDS_COM_POP_ATTACH">Pievienot</text>
+    <text id="IDS_COM_BODY_CALENDAR">Kalendārs</text>
+    <text id="IDS_COM_SK_OK">Labi</text>
+    <text id="IDS_COM_SK_CALL">Zvanīt</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Uzņemt videoklipu</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Adresāta izvēle</text>
+</string_table>
diff --git a/res/lit-LT.xml b/res/lit-LT.xml
new file mode 100644 (file)
index 0000000..c97fa0d
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Žinutės informacija</text>
+    <text id="IDS_COM_SK3_PREVIEW">Peržiūra</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">Pasirinkta: %d</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Trukmė turi būti ilgesnė nei %d sek.</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Viršytas didžiausias ženklų skaičius. Ištrinkite nereikalingus ženklus</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Pasirinkti viską</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Nėra temos</text>
+    <text id="IDS_COM_POP_CLOSE">Uždaryti</text>
+    <text id="IDS_COM_BODY_TO">Kam</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Fotografuoti</text>
+    <text id="IDS_COM_POP_DELETE_Q">Ar trinti?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Teksto įvedimo režimas</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Pasiektas didžiausias gavėjų (%d) skaičius</text>
+    <text id="IDS_COM_SK_NO">Ne</text>
+    <text id="IDS_COM_BODY_MY_FILES">Mano failai</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Kopijuoti į telefoną</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Tinklo žinutės</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Paslaugų centras</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Pranešimas Išsiųsti nepavyko</text>
+    <text id="IDS_COM_POP_SUCCESS">Pavyko</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Apribota</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Iš jūsų adresatų gautos žinutės nebus blokuojamos, net jei jose bus blokuojamų žodžių</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Atblokuoti</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Kopij. žinut. tekstą</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Perskaitymo patvirtinimas</text>
+    <text id="IDS_COM_BODY_MESSAGES">Žinutės</text>
+    <text id="IDS_COM_SK_OPTIONS">Parinktys</text>
+    <text id="IDS_COM_SK_DONE">Atlikta</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Nežinomas</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Juodraštinės žinutės</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Paslauga neteikiama</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Pridėti žodį</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Blokuoti %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Keisti teksto dydį naudojant garsumo mygtuką</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Nauja žinutė</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Brukalų žinutės</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Įtraukti</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Blokuojami numeriai</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Daugialypės žinutės</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Redaguoti žodį</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Galiojimas pasibaigęs</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Perspėjimas</text>
+    <text id="IDS_COM_SK_EDIT">Redaguoti</text>
+    <text id="IDS_COM_POP_FAILED">Nepavyko</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Trinti numerį</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Įrašyti garso įrašą</text>
+    <text id="IDS_COM_SK_BACK">Atgal</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unikodas</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Ištrinti žodžius</text>
+    <text id="IDS_COM_BODY_FORWARD">Persiųsti</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Žinučių nėra</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Tarptinklinis ryšys</text>
+    <text id="IDS_MSGF_BODY_FROM">Nuo</text>
+    <text id="IDS_COM_SK_DELETE">Trinti</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Neskaityta</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Du tokie pat gavėjai</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM abėcėlė</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM kortelėje esančios žinutės</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Išsiųsta</text>
+    <text id="IDS_COM_BODY_CONTACTS">Adresatai</text>
+    <text id="IDS_MSGF_OPT_STATUS">Būsena</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Laisva</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Tipas</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Automatinis atsisiuntimas</text>
+    <text id="IDS_MSGF_SK_RESEND">Persiųsti</text>
+    <text id="IDS_COM_SK_CANCEL">Atšaukti</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Gavimo parinktys</text>
+    <text id="IDS_COM_BODY_GALLERY">Galerija</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Trukmė\n(%d sek.)</text>
+    <text id="IDS_COM_BODY_SEARCH">Ieškoti</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Žinučių dėžutės</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Pridėti numerį</text>
+    <text id="IDS_COM_BODY_MEMO">Įrašas</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Kopijuoti į SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Įvesti numerį</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Pridėti adresatą</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Vietos tinklas</text>
+    <text id="IDS_COM_POP_REJECTED">Atmesta</text>
+    <text id="IDS_COM_BODY_SETTINGS">Nustat.</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Pradėti su</text>
+    <text id="IDS_COM_BODY_DISPLAY">Ekranas</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Įjungta apsauga</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Rankinis</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM kortelės klaida</text>
+    <text id="IDS_COM_POP_DELETED">Ištrinta</text>
+    <text id="IDS_COM_SK_SEND_ABB">Siųsti</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Persiųsta</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Centras %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Redaguoti numerį</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automatinis</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Rodyti žin. inf.</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Atmesti</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Balso skambutis</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Naudoti garsumo mygtuką</text>
+    <text id="IDS_COM_SK_SAVE">Išsaugoti</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Lygiai taip pat kaip</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Nėra paieškos rezultatų</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Kūrimo režimas</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Teksto žinutės</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Gauta</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Atitikties kriterijai</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Atidėta</text>
+    <text id="IDS_COM_SK_ADD">Pridėti</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Blokuoti</text>
+    <text id="IDS_COM_SK_YES">Taip</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Rodyti adresatą</text>
+    <text id="IDS_COM_SK_SEARCH">Ieškoti</text>
+    <text id="IDS_COM_POP_AM_M_ABB">АМ</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Blokuojami žodžiai</text>
+    <text id="IDS_COM_BODY_SUBJECT">Tema</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Neatpažinta</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Siųsti ataskaitą apie perskaitymą</text>
+    <text id="IDS_MSGF_SK_RESTORE">Atkurti</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Prašyti perskaitymo patvirtinimo</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Įvesti žodį</text>
+    <text id="IDS_COM_SK3_COMPOSE">Kurti</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Įvyko nežinoma klaida</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Prašyti pristatymo ataskaitos</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Neteisingi gavėjai</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Transliavimo žinutės</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Išsaugoti priedą</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Ataskaita apie pristatymą</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Atmesti dabartinę žinutę?</text>
+    <text id="IDS_COM_POP_ATTACH">Pridėti</text>
+    <text id="IDS_COM_BODY_CALENDAR">Kalend.</text>
+    <text id="IDS_COM_SK_OK">Gerai</text>
+    <text id="IDS_COM_SK_CALL">Skambinti</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Filmuoti vaizdo įrašą</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Pasirinkti gavėją</text>
+</string_table>
diff --git a/res/mkd-MK.xml b/res/mkd-MK.xml
new file mode 100644 (file)
index 0000000..0a5ee2b
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Детали за пораката</text>
+    <text id="IDS_COM_SK3_PREVIEW">Назад</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">Избрани се %d</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Времетраењето мора да биде подолго од %d секунди</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Максималниот број знаци е надминат. Избришете некој знак</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Избери ги сите</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Нема наслов</text>
+    <text id="IDS_COM_POP_CLOSE">Затвори</text>
+    <text id="IDS_COM_BODY_TO">До</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Сликај</text>
+    <text id="IDS_COM_POP_DELETE_Q">Да се избрише?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Начин на внесување</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Достигнат е максималниот број приматели (%d)</text>
+    <text id="IDS_COM_SK_NO">Не</text>
+    <text id="IDS_COM_BODY_MY_FILES">Мои фајлови</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Копирај во телефон</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Инфо-пораки</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Услужен центар</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Се испраќа неуспешна порака</text>
+    <text id="IDS_COM_POP_SUCCESS">Успешно</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Ограничено</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Пораките примени од вашите контакти нема да се блокираат иако содржат блокирани зборови</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Одблокирај</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Коп. текст од порака</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Извештај за прочитаност</text>
+    <text id="IDS_COM_BODY_MESSAGES">Пораки</text>
+    <text id="IDS_COM_SK_OPTIONS">Опции</text>
+    <text id="IDS_COM_SK_DONE">Готово</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Непознато</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Недовршени пораки</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Услугата е недостапна</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Додај збор</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Блокирај %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Менување на големината на текстот со копчето за јачина на тон</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Нова порака</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Спам-пораки</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Вклучи</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Блокирани броеви</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Мултимед. пораки</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Измени збор</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Застарено</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Предупредување</text>
+    <text id="IDS_COM_SK_EDIT">Измени</text>
+    <text id="IDS_COM_POP_FAILED">Неуспешно</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Избриши број</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Снимање звук</text>
+    <text id="IDS_COM_SK_BACK">Назад</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Уникод</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Избриши зборови</text>
+    <text id="IDS_COM_BODY_FORWARD">Препрати</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Нема пораки</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Странска мрежа</text>
+    <text id="IDS_MSGF_BODY_FROM">Од</text>
+    <text id="IDS_COM_SK_DELETE">Избриши</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Непроч.</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Дуплиран примател</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM-alphabet</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">Пораки на SIM-картичката</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Пратено</text>
+    <text id="IDS_COM_BODY_CONTACTS">Именик</text>
+    <text id="IDS_MSGF_OPT_STATUS">Состојба</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Слободна</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Тип</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Автоматско преземање</text>
+    <text id="IDS_MSGF_SK_RESEND">Испрати пак</text>
+    <text id="IDS_COM_SK_CANCEL">Откажи</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Опции за прием</text>
+    <text id="IDS_COM_BODY_GALLERY">Галерија</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Траење\n(%d сек.)</text>
+    <text id="IDS_COM_BODY_SEARCH">Побарај</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Сандачиња со пораки</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Додај број</text>
+    <text id="IDS_COM_BODY_MEMO">Белешка</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Копирај на SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Внесете број</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Додади контакт</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Домашна мрежа</text>
+    <text id="IDS_COM_POP_REJECTED">Отфрлено</text>
+    <text id="IDS_COM_BODY_SETTINGS">Опции</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Започни со</text>
+    <text id="IDS_COM_BODY_DISPLAY">Екран</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Вклучена заштита</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Рачно</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Грешка на SIM-картичката</text>
+    <text id="IDS_COM_POP_DELETED">Избришано</text>
+    <text id="IDS_COM_SK_SEND_ABB">Прати</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Проследено</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Центар %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Измени број</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Автоматски</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Види дет. за порака</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Отфрли</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Гласовен повик</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Со копчето за јачина</text>
+    <text id="IDS_COM_SK_SAVE">Сочувај</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Потполно исто како</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Нема резултати од пребарувањето</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Начин на создавање</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Текст пораки</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Примено</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Критериум за совпаѓање</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Вашата порака е одложена</text>
+    <text id="IDS_COM_SK_ADD">Додај</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Блокирај</text>
+    <text id="IDS_COM_SK_YES">Да</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Прикажи број</text>
+    <text id="IDS_COM_SK_SEARCH">Пребарај</text>
+    <text id="IDS_COM_POP_AM_M_ABB">АМ</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Блокирани зборови</text>
+    <text id="IDS_COM_BODY_SUBJECT">Наслов</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Непрепознаено</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Праќај извештај за прочитано</text>
+    <text id="IDS_MSGF_SK_RESTORE">Обнови</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Барај изв.за прочитаност</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Внесете збор</text>
+    <text id="IDS_COM_SK3_COMPOSE">Состави</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Дојде до непозната грешка</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Барај извештај за испорака</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Неважечки приматели</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Инфо пораки</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Сочувај прилог</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Извештај за испорака</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Отфрли моментална порака?</text>
+    <text id="IDS_COM_POP_ATTACH">Приложи</text>
+    <text id="IDS_COM_BODY_CALENDAR">Календар</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Повикај</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Сними видео</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Изберете примател</text>
+</string_table>
diff --git a/res/nld-NL.xml b/res/nld-NL.xml
new file mode 100644 (file)
index 0000000..2d91fd2
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Berichtdetails</text>
+    <text id="IDS_COM_SK3_PREVIEW">Voorbeeld</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d geselecteerd</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Duur moet langer zijn dan %d seconden</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Maximumaantal tekens overschreden. Verwijder een aantal tekens</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Alles selecteren</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Geen onderwerp</text>
+    <text id="IDS_COM_POP_CLOSE">Sluiten</text>
+    <text id="IDS_COM_BODY_TO">Aan</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Foto maken</text>
+    <text id="IDS_COM_POP_DELETE_Q">Verwijderen?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Invoerstand</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Maximumaantal ontvangers (%d) bereikt</text>
+    <text id="IDS_COM_SK_NO">Nee</text>
+    <text id="IDS_COM_BODY_MY_FILES">Mijn bestanden</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Kopiëren naar telefoon</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Infoberichten</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">SMS-centrale</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Bericht “Verzenden mislukt”</text>
+    <text id="IDS_COM_POP_SUCCESS">Voltooid</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Beperkt</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Berichten die u van uw contacten ontvangt, worden niet geblokkeerd, zelfs niet als ze geblokkeerde woorden bevatten</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Deblokkeren</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Berichttekst kopiëren</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Leesbevestiging</text>
+    <text id="IDS_COM_BODY_MESSAGES">Berichten</text>
+    <text id="IDS_COM_SK_OPTIONS">Opties</text>
+    <text id="IDS_COM_SK_DONE">Gereed</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Onbekend</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Conceptberichten</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Service niet beschikbaar</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Woord toevoegen</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">%s blokkeren?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Wijzig tekstgrootte met de volumetoets</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Nieuw bericht</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Spamberichten</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Invoegen</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Geblokkeerde nummers</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">MMS-berichten</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Woord bewerken</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Verlopen</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Waarschuwing</text>
+    <text id="IDS_COM_SK_EDIT">Bewerken</text>
+    <text id="IDS_COM_POP_FAILED">Mislukt</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Nummer verwijderen</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Geluid opnemen</text>
+    <text id="IDS_COM_SK_BACK">Terug</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Woorden verwijderen</text>
+    <text id="IDS_COM_BODY_FORWARD">Doorsturen</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Geen berichten</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Roamingnetwerk</text>
+    <text id="IDS_MSGF_BODY_FROM">Van</text>
+    <text id="IDS_COM_SK_DELETE">Wissen</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Niet gelezen</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Dubbele ontvanger</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM-alfabet</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM-kaartberichten</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Verzonden</text>
+    <text id="IDS_COM_BODY_CONTACTS">Contacten</text>
+    <text id="IDS_MSGF_OPT_STATUS">Status</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Vrij</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Type</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Automatisch downloaden</text>
+    <text id="IDS_MSGF_SK_RESEND">Opnieuw verzenden</text>
+    <text id="IDS_COM_SK_CANCEL">Annuleren</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Ontvangstopties</text>
+    <text id="IDS_COM_BODY_GALLERY">Galerij</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Duur\n(%d sec)</text>
+    <text id="IDS_COM_BODY_SEARCH">Zoeken</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Postvakken</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Nummer toevoegen</text>
+    <text id="IDS_COM_BODY_MEMO">Notitie</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Kopiëren naar SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Nummer invoeren</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Contact toevoegen</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Netwerk eigen provider</text>
+    <text id="IDS_COM_POP_REJECTED">Geweigerd</text>
+    <text id="IDS_COM_BODY_SETTINGS">Instellingen</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Beginnen met</text>
+    <text id="IDS_COM_BODY_DISPLAY">Display</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Beveiliging aan</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Handmatig</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Fout SIM-kaart</text>
+    <text id="IDS_COM_POP_DELETED">Verwijderd</text>
+    <text id="IDS_COM_SK_SEND_ABB">Verzend</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Doorgestuurd</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Centrale %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Nummer bewerken</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automatisch</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Berichtdetails tonen</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Weigeren</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Spraakoproep</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Volumetoets gebruiken</text>
+    <text id="IDS_COM_SK_SAVE">Opslaan</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Precies gelijk aan</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Geen zoekresultaten</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Aanmaakmodus</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">SMS-berichten</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Ontvangen</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Blokkeringscriteria</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Uitgesteld</text>
+    <text id="IDS_COM_SK_ADD">Toevoegen</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Blokkeren</text>
+    <text id="IDS_COM_SK_YES">Ja</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Contacten weergeven</text>
+    <text id="IDS_COM_SK_SEARCH">Zoeken</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Geblokkeerde woorden</text>
+    <text id="IDS_COM_BODY_SUBJECT">Onderwerp</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Niet herkend</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Leesbevestiging verzenden</text>
+    <text id="IDS_MSGF_SK_RESTORE">Herstel</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Leesbevestiging vragen</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Woord ingeven</text>
+    <text id="IDS_COM_SK3_COMPOSE">Opstellen</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Onbekende netwerkfout opgetreden</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Ontvangstbevestiging vragen</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Ongeldige ontvangers</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Infoberichten</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Bijlage opslaan</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Ontvangstbevestiging</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Huidig bericht verwijderen?</text>
+    <text id="IDS_COM_POP_ATTACH">Bijvoegen</text>
+    <text id="IDS_COM_BODY_CALENDAR">Agenda</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Bellen</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Video opnemen</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Ontvanger selecteren</text>
+</string_table>
diff --git a/res/nob-NO.xml b/res/nob-NO.xml
new file mode 100644 (file)
index 0000000..2a40743
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Meldingsdetaljer</text>
+    <text id="IDS_COM_SK3_PREVIEW">Forhåndsvisning</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d valgt</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Varigheten må være lenger enn %d sekunder</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Maksimalt antall tegn oversteget. Slett noen tegn</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Merk alt</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Intet emne</text>
+    <text id="IDS_COM_POP_CLOSE">Lukk</text>
+    <text id="IDS_COM_BODY_TO">Til</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Ta bilde</text>
+    <text id="IDS_COM_POP_DELETE_Q">Slette?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Inndatamodus</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Maksimalt antall mottakere (%d) er nådd</text>
+    <text id="IDS_COM_SK_NO">Nei</text>
+    <text id="IDS_COM_BODY_MY_FILES">Mine Filer</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Kopier til telefon</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">CB-meldinger</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Tjenestesentral</text>
+    <text id="IDS_COM_BODY_SMS">Tekstmelding</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Sending mislyktes-melding</text>
+    <text id="IDS_COM_POP_SUCCESS">Fullført</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Begrenset</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Meldinger som mottas fra kontaktene dine, vil ikke blokkeres selv hvis de inneholder blokkerte ord</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Opphev blokkering</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Kopier meldingstekst</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Leserapport</text>
+    <text id="IDS_COM_BODY_MESSAGES">Meldinger</text>
+    <text id="IDS_COM_SK_OPTIONS">Valg</text>
+    <text id="IDS_COM_SK_DONE">Utført</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Ukjent</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Kladdemeldinger</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Tjenesten er ikke tilgjengelig</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Legg til ord</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Sperre %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Endre tekststørrelse med volumtasten</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Ny melding</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Spammeldinger</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Ta med</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Blokkerte numre</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">MMS-meldinger</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Rediger ord</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Utløpt</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Advarsel</text>
+    <text id="IDS_COM_SK_EDIT">Rediger</text>
+    <text id="IDS_COM_POP_FAILED">Det oppstod en feil</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Slett nummer</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Spill inn lyd</text>
+    <text id="IDS_COM_SK_BACK">Tilbake</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Slett ord</text>
+    <text id="IDS_COM_BODY_FORWARD">Videresend</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Ingen meldinger</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Roaming-nettverk</text>
+    <text id="IDS_MSGF_BODY_FROM">Fra</text>
+    <text id="IDS_COM_SK_DELETE">Slett</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Ulest</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Duplisert mottaker</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM-alfabet</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM-kortmeldinger</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Sendt</text>
+    <text id="IDS_COM_BODY_CONTACTS">Kontakter</text>
+    <text id="IDS_MSGF_OPT_STATUS">Status</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Ledig</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Type</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Automatisk nedlasting</text>
+    <text id="IDS_MSGF_SK_RESEND">Send på nytt</text>
+    <text id="IDS_COM_SK_CANCEL">Avbryt</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Mottaksalternativer</text>
+    <text id="IDS_COM_BODY_GALLERY">Galleri</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Varighet\n(%d sek)</text>
+    <text id="IDS_COM_BODY_SEARCH">Søk</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Meldingsbokser</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Legg til nummer</text>
+    <text id="IDS_COM_BODY_MEMO">Notat</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Kopier til SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Angi nummer</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Legg til en kontakt</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Hjemmenettverk</text>
+    <text id="IDS_COM_POP_REJECTED">Avvist</text>
+    <text id="IDS_COM_BODY_SETTINGS">Innstillinger</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Begynn med</text>
+    <text id="IDS_COM_BODY_DISPLAY">Skjerm</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Beskyttelse på</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Manuelt</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Feil på SIM-kort</text>
+    <text id="IDS_COM_POP_DELETED">Slettet</text>
+    <text id="IDS_COM_SK_SEND_ABB">Send</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Videresendt</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Senter %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Rediger nummer</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automatisk</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Vis meldingsdetaljer</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Avvis</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Taleanrop</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Bruk volumtasten</text>
+    <text id="IDS_COM_SK_SAVE">Lagre</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Eksakt samme som</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Ingen søkeresultater</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Opprettelsesmodus</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Tekstmeldinger</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Mottatt</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Avvisningskriterier</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Utsatt</text>
+    <text id="IDS_COM_SK_ADD">Legg til</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Blokker</text>
+    <text id="IDS_COM_SK_YES">Ja</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Vis kontakter</text>
+    <text id="IDS_COM_SK_SEARCH">Søk</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Blokkerte ord</text>
+    <text id="IDS_COM_BODY_SUBJECT">Emne</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Ukjent</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Send leserapport</text>
+    <text id="IDS_MSGF_SK_RESTORE">Gjenoppr.</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Be om leserapport</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Angi ord</text>
+    <text id="IDS_COM_SK3_COMPOSE">Skriv</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Ukjent feil oppstod</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Be om leveringsrapport</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Ugyldige mottakere</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Kringkastingsmeldinger</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Lagre vedlegg</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Leveringsrapport</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Forkast aktuell melding?</text>
+    <text id="IDS_COM_POP_ATTACH">Legg ved</text>
+    <text id="IDS_COM_BODY_CALENDAR">Kalender</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Samtale</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Ta opp video</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Velg mottaker</text>
+</string_table>
diff --git a/res/pol-PL.xml b/res/pol-PL.xml
new file mode 100644 (file)
index 0000000..30750a4
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Szczegóły wiadomości</text>
+    <text id="IDS_COM_SK3_PREVIEW">Podgląd</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">Wybrano %d</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Czas trwania musi być dłuższy niż %d s</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Przekroczono maksymalną liczbę znaków. Usuń część znaków</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Zaznacz wszystko</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Brak tematu</text>
+    <text id="IDS_COM_POP_CLOSE">Zamknij</text>
+    <text id="IDS_COM_BODY_TO">Do</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Zrób zdjęcie</text>
+    <text id="IDS_COM_POP_DELETE_Q">Usunąć?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Tryb wprowadzania</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Osiągnięto maksymalną liczbę odbiorców (%d)</text>
+    <text id="IDS_COM_SK_NO">Nie</text>
+    <text id="IDS_COM_BODY_MY_FILES">Moje pliki</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Kopiuj do pamięci telefonu</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Wiadomości sieciowe</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Centrum SMS</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Błąd wysyłania wiadomości</text>
+    <text id="IDS_COM_POP_SUCCESS">Zakończono</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Ograniczony</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Wiadomości otrzymywane od Twoich kontaktów nie będą blokowane, nawet jeśli zawierają zablokowane słowa</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Odblokuj</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Kopiuj tekst wiad.</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Raport odczytania</text>
+    <text id="IDS_COM_BODY_MESSAGES">Wiadomości</text>
+    <text id="IDS_COM_SK_OPTIONS">Opcje</text>
+    <text id="IDS_COM_SK_DONE">Gotowe</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Nieznana</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Wersje robocze wiadomości</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Usługa niedostępna</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Dodaj wyraz</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Zablokować znajomego %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Zmień rozmiar tekstu za pomocą klawisza głośności</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Nowa wiad.</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Wiadomości typu spam</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Zawierające</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Zablokowane numery</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">MMS</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Edytuj słowo</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Wygasła wiadomość</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Ostrzeżenie</text>
+    <text id="IDS_COM_SK_EDIT">Edytuj</text>
+    <text id="IDS_COM_POP_FAILED">Błąd</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Usuń numer</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Nagraj dźwięk</text>
+    <text id="IDS_COM_SK_BACK">Wstecz</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Usuń słowa</text>
+    <text id="IDS_COM_BODY_FORWARD">Prześlij dalej</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Brak wiadomości</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Odbiór w roamingu</text>
+    <text id="IDS_MSGF_BODY_FROM">Od</text>
+    <text id="IDS_COM_SK_DELETE">Usuń</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Nieprz.</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Powtórzony odbiorca</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">Alfabet GSM</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">Wiadomości karty SIM</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Wysłano</text>
+    <text id="IDS_COM_BODY_CONTACTS">Kontakty</text>
+    <text id="IDS_MSGF_OPT_STATUS">Stan</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Nie ostrzegaj</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Typ</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Automatycznie</text>
+    <text id="IDS_MSGF_SK_RESEND">Wyślij ponownie</text>
+    <text id="IDS_COM_SK_CANCEL">Anuluj</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Ustawienia odbierania</text>
+    <text id="IDS_COM_BODY_GALLERY">Galeria</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Czas trwania\n(%d s)</text>
+    <text id="IDS_COM_BODY_SEARCH">Szukaj</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Skrzynki wiadomości</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Dodaj numer</text>
+    <text id="IDS_COM_BODY_MEMO">Notatka</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Kopiuj do pamięci SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Wpisz numer</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Dodaj kontakt</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Odbiór w sieci domowej</text>
+    <text id="IDS_COM_POP_REJECTED">Odrzucono</text>
+    <text id="IDS_COM_BODY_SETTINGS">Ustawienia</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Zaczynające od</text>
+    <text id="IDS_COM_BODY_DISPLAY">Wyświetlacz</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Wł. ochronę</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Ręcznie</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Błąd karty SIM</text>
+    <text id="IDS_COM_POP_DELETED">Usunięto</text>
+    <text id="IDS_COM_SK_SEND_ABB">Wyślij</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Przesłana dalej</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Centrum SMS %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Edytuj numer</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automatyczny</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Pokaż szczeg. wiad.</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Odrzucaj</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Połączenie głosowe</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Użyj klawisza głośności</text>
+    <text id="IDS_COM_SK_SAVE">Zapisz</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Dokładnie takie same, jak</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Brak wyników wyszukiwania</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Tryb tworzenia</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">SMS</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Odebrano</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Kryteria dopasowania</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Opóźniona</text>
+    <text id="IDS_COM_SK_ADD">Dodaj</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Blokuj</text>
+    <text id="IDS_COM_SK_YES">Tak</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Wyświetl kontakt</text>
+    <text id="IDS_COM_SK_SEARCH">Szukaj</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Zablokowane słowa</text>
+    <text id="IDS_COM_BODY_SUBJECT">Temat</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Nierozpoznane</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Wyślij raport odczytu</text>
+    <text id="IDS_MSGF_SK_RESTORE">Przywróć</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Żądaj raportu przeczytania</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Wprowadź słowo</text>
+    <text id="IDS_COM_SK3_COMPOSE">Utwórz</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Wystąpił nieznany błąd</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Raport doręczenia</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Nieprawidłowi odbiorcy</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Wiad. sieciowe</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Zapisz załącznik</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Raport doręczenia</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Usunąć bieżącą wiadomość?</text>
+    <text id="IDS_COM_POP_ATTACH">Dołącz</text>
+    <text id="IDS_COM_BODY_CALENDAR">Kalendarz</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Połącz.</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Nagraj video</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Wybierz odbiorcę</text>
+</string_table>
diff --git a/res/por-BR.xml b/res/por-BR.xml
new file mode 100644 (file)
index 0000000..1cd2408
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Detalhes da mensagem</text>
+    <text id="IDS_COM_SK3_PREVIEW">Pré-visualizar</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d selecionado(s)</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">A duração deve ser superior a %d segundos</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Número máximo de caracteres excedido. Apague alguns caracteres</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Selecionar tudo</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Sem assunto</text>
+    <text id="IDS_COM_POP_CLOSE">Fechar</text>
+    <text id="IDS_COM_BODY_TO">Para</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Tirar foto</text>
+    <text id="IDS_COM_POP_DELETE_Q">Apagar?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Modo de entrada</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Número máximo de destinatários (%d) atingido</text>
+    <text id="IDS_COM_SK_NO">Não</text>
+    <text id="IDS_COM_BODY_MY_FILES">Meus Arquivos</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Copiar para telefone</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Mensagens Broadcast</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Centro de serviços</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Enviando mensagem que falhou</text>
+    <text id="IDS_COM_POP_SUCCESS">Sucesso</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Restrito</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">As mensagens recebidas de seus contatos não serão bloqueadas mesmo se contiverem palavras bloqueadas</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Desbloquear</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Copiar texto msg.</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Confirm. de leitura</text>
+    <text id="IDS_COM_BODY_MESSAGES">Mensagens</text>
+    <text id="IDS_COM_SK_OPTIONS">Opções</text>
+    <text id="IDS_COM_SK_DONE">Concluído</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Desconhecido</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Mensagens de rascunho</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Serviço não disponível</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Adicionar palavra</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Bloquear %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Alterar tamanho do texto usando a tecla de volume</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Nova mensagem</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Mensagens de spam</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Incluir</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Números bloqueados</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">MMS</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Editar palavra</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Expirado</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Aviso</text>
+    <text id="IDS_COM_SK_EDIT">Editar</text>
+    <text id="IDS_COM_POP_FAILED">Falhou</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Apagar número</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Gravar áudio</text>
+    <text id="IDS_COM_SK_BACK">Voltar</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Excluir palavras</text>
+    <text id="IDS_COM_BODY_FORWARD">Encaminhar</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Nenhuma mensagem</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Rede internacional</text>
+    <text id="IDS_MSGF_BODY_FROM">De</text>
+    <text id="IDS_COM_SK_DELETE">Apagar</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Não lida</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Destinatário duplicado</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">Alfabeto GSM</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">Mensagens do cartão SIM</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Enviado</text>
+    <text id="IDS_COM_BODY_CONTACTS">Contatos</text>
+    <text id="IDS_MSGF_OPT_STATUS">Status</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Livre</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Tipo</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Download automático</text>
+    <text id="IDS_MSGF_SK_RESEND">Reenviar</text>
+    <text id="IDS_COM_SK_CANCEL">Cancelar</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Opções de recebimento</text>
+    <text id="IDS_COM_BODY_GALLERY">Galeria</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Duração\n(%d s)</text>
+    <text id="IDS_COM_BODY_SEARCH">Pesquisar</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Caixas de mensagens</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Adicionar número</text>
+    <text id="IDS_COM_BODY_MEMO">Notas</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Copiar para SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Insira número</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Adicionar contato</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Rede local</text>
+    <text id="IDS_COM_POP_REJECTED">Rejeitado</text>
+    <text id="IDS_COM_BODY_SETTINGS">Configurações</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Iniciar com</text>
+    <text id="IDS_COM_BODY_DISPLAY">Visor</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Ativar proteção</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Manual</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Cartão SIM indisponível</text>
+    <text id="IDS_COM_POP_DELETED">Apagado</text>
+    <text id="IDS_COM_SK_SEND_ABB">Enviar</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Encaminhado</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Centro %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Editar número</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automático</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Ver detalhes msg.</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Rejeitar</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Chamada de voz</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Usar tecla de volume</text>
+    <text id="IDS_COM_SK_SAVE">Salvar</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Exatamente o mesmo que</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Nenhum resultado encontrado</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Modo de criação</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">SMS</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Recebida</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Corresponder ao critério</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Adiado</text>
+    <text id="IDS_COM_SK_ADD">Adicionar</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Bloquear</text>
+    <text id="IDS_COM_SK_YES">Sim</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Ver contato</text>
+    <text id="IDS_COM_SK_SEARCH">Pesquisar</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Palavras bloqueadas</text>
+    <text id="IDS_COM_BODY_SUBJECT">Assunto</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Desconhecido</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Confirm. de leitura</text>
+    <text id="IDS_MSGF_SK_RESTORE">Restaurar</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Confirm. de leitura</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Inserir palavra</text>
+    <text id="IDS_COM_SK3_COMPOSE">Compor</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Ocorreu erro desconhecido</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Confirm. de entrega</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Destinatários inválidos</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Broadcast</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Salvar anexo</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Confirm. de entrega</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Apagar mensagem atual?</text>
+    <text id="IDS_COM_POP_ATTACH">Anexar</text>
+    <text id="IDS_COM_BODY_CALENDAR">Calendário</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Chamar</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Gravar vídeo</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Selecionar destinatário</text>
+</string_table>
diff --git a/res/por-PT.xml b/res/por-PT.xml
new file mode 100644 (file)
index 0000000..443f4d2
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Detalhes da mensagem</text>
+    <text id="IDS_COM_SK3_PREVIEW">Pré-visualizar</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d seleccionada</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">A duração tem de ser mais longa do que %d segundos</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Número máximo de caracteres excedido. Apagar alguns caracteres</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Selec. tudo</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Sem assunto</text>
+    <text id="IDS_COM_POP_CLOSE">Fechar</text>
+    <text id="IDS_COM_BODY_TO">Para</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Tirar fotografia</text>
+    <text id="IDS_COM_POP_DELETE_Q">Eliminar?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Modo de introdução</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Número máximo de destinatários (%d) atingido</text>
+    <text id="IDS_COM_SK_NO">Não</text>
+    <text id="IDS_COM_BODY_MY_FILES">Os Meus Ficheiros</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Copiar para o telefone</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Mensagens DC</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Centro de serviço</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">A enviar mensagem que falhou</text>
+    <text id="IDS_COM_POP_SUCCESS">Concluído</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Restringido</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">As mensagens recebidas dos seus contactos não serão bloqueadas, mesmo que contenham palavras bloqueadas</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Desbloquear</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Copiar texto msg.</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Relatório de leitura</text>
+    <text id="IDS_COM_BODY_MESSAGES">Mensagem</text>
+    <text id="IDS_COM_SK_OPTIONS">Opções</text>
+    <text id="IDS_COM_SK_DONE">Concluído</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Desconhecido</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Mensagens rascunho</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Serviço não disponível</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Adicionar palavra</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Bloquear %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Alterar o tamanho do texto utilizando a tecla de volume</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Nova mensagem</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Mensagens de spam</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Incluir</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Números bloqueados</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">MMS</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Editar palavra</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Expirado</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Aviso</text>
+    <text id="IDS_COM_SK_EDIT">Editar</text>
+    <text id="IDS_COM_POP_FAILED">Falha</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Eliminar número</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Gravação de áudio</text>
+    <text id="IDS_COM_SK_BACK">Voltar</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Eliminar palavras</text>
+    <text id="IDS_COM_BODY_FORWARD">Reencaminhar</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Nenhuma mensagem</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Rede de roaming</text>
+    <text id="IDS_MSGF_BODY_FROM">De</text>
+    <text id="IDS_COM_SK_DELETE">Eliminar</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Não lida</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Destinatário duplicado</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">Alfabeto GSM</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">Mensagens do cartão SIM</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Enviada</text>
+    <text id="IDS_COM_BODY_CONTACTS">Contactos</text>
+    <text id="IDS_MSGF_OPT_STATUS">Estado</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Livre</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Tipo</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Transferência automática</text>
+    <text id="IDS_MSGF_SK_RESEND">Reenviar</text>
+    <text id="IDS_COM_SK_CANCEL">Cancelar</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Opções de recepção</text>
+    <text id="IDS_COM_BODY_GALLERY">Galeria</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Duração\n(%d s)</text>
+    <text id="IDS_COM_BODY_SEARCH">Procurar</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Caixas de mensagens</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Adicionar número</text>
+    <text id="IDS_COM_BODY_MEMO">Memorando</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Copiar para o SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Introduzir número</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Adicionar um contacto</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Rede local</text>
+    <text id="IDS_COM_POP_REJECTED">Rejeitado</text>
+    <text id="IDS_COM_BODY_SETTINGS">Definições</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Iniciar com</text>
+    <text id="IDS_COM_BODY_DISPLAY">Visor e luz</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Activar protecção</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Manual</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Falha do cartão SIM</text>
+    <text id="IDS_COM_POP_DELETED">Eliminado</text>
+    <text id="IDS_COM_SK_SEND_ABB">Enviar</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Reencaminhado</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Centro %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Editar número</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automático</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Ver detalhes msg.</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Rejeitar</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Chamada de voz</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Utilizar tecla de volume</text>
+    <text id="IDS_COM_SK_SAVE">Guardar</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Exactamente o mesmo que</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Nenhuns resultados de procura</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Modo de criação</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">SMS</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Recebido</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Corresponder critérios</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Deferida</text>
+    <text id="IDS_COM_SK_ADD">Adicionar</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Bloquear</text>
+    <text id="IDS_COM_SK_YES">Sim</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Ver contactos</text>
+    <text id="IDS_COM_SK_SEARCH">Procurar</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Palavras bloqueadas</text>
+    <text id="IDS_COM_BODY_SUBJECT">Assunto</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Não reconhecido</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Enviar relatório de leitura</text>
+    <text id="IDS_MSGF_SK_RESTORE">Restaurar</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Pedir relatório de leitura</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Introduzir palavra</text>
+    <text id="IDS_COM_SK3_COMPOSE">Redigir</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Ocorreu erro desconhecido</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Pedir relatório de entrega</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Destinatários inválidos</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Mensagens de difusão</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Guardar anexo</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Relatório de entrega</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Eliminar mensagem actual?</text>
+    <text id="IDS_COM_POP_ATTACH">Anexar</text>
+    <text id="IDS_COM_BODY_CALENDAR">Calendário</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Chamar</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Capturar vídeo</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Seleccionar destinatário</text>
+</string_table>
diff --git a/res/ron-RO.xml b/res/ron-RO.xml
new file mode 100644 (file)
index 0000000..da0e103
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Detalii mesaj</text>
+    <text id="IDS_COM_SK3_PREVIEW">Previz.</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d selectate</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Durata trebuie să fie mai mare de %d secunde</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">S-a depăşit numărul maxim de caractere. Ştergeţi câteva caractere</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Selectare toate</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Niciun subiect</text>
+    <text id="IDS_COM_POP_CLOSE">Închidere</text>
+    <text id="IDS_COM_BODY_TO">Către</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Fotografiere</text>
+    <text id="IDS_COM_POP_DELETE_Q">Ştergeţi?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Mod introducere text</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Numărul maxim de destinatari (%d) a fost atins</text>
+    <text id="IDS_COM_SK_NO">Nu</text>
+    <text id="IDS_COM_BODY_MY_FILES">Fişierele mele</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Copiere în telefon</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Mesaje CB</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Centru service</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Trimiterea mesajului nereuşit</text>
+    <text id="IDS_COM_POP_SUCCESS">Succes</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Restricţionat</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Mesajele primite de la contactele dvs. nu vor fi blocate, chiar dacă acestea conţin cuvinte blocate</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Deblocare</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Copiere text mesaj</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Citire raport</text>
+    <text id="IDS_COM_BODY_MESSAGES">Mesaje</text>
+    <text id="IDS_COM_SK_OPTIONS">Opţiuni</text>
+    <text id="IDS_COM_SK_DONE">Gata</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Necunoscut</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Schiţe de mesaje</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Serviciu indisponibil</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Adăugare cuvânt</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Se blochează %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Schimbaţi mărimea textului utilizând tasta de volum</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Mesaj nou</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Mesaje spam</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Includere</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Numere blocate</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Mesaje multimedia</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Editare cuvânt</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Expirat</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Avertisment</text>
+    <text id="IDS_COM_SK_EDIT">Editare</text>
+    <text id="IDS_COM_POP_FAILED">Nereuşit</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Ştergere număr</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Înregistrare audio</text>
+    <text id="IDS_COM_SK_BACK">Înapoi</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Ştergere cuvinte</text>
+    <text id="IDS_COM_BODY_FORWARD">Transfer</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Nici un mesaj</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Reţea în roaming</text>
+    <text id="IDS_MSGF_BODY_FROM">De la</text>
+    <text id="IDS_COM_SK_DELETE">Ştergere</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Necitit</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Destinatar dublat</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">Alfabet GSM</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">Mesaje de pe cartela SIM</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Trimis</text>
+    <text id="IDS_COM_BODY_CONTACTS">Contacte</text>
+    <text id="IDS_MSGF_OPT_STATUS">Stare</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Liber</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Tip</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Descărcare automată</text>
+    <text id="IDS_MSGF_SK_RESEND">Retrimitere</text>
+    <text id="IDS_COM_SK_CANCEL">Anulare</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Opţiuni primire</text>
+    <text id="IDS_COM_BODY_GALLERY">Galerie</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Durată\n(%d secunde)</text>
+    <text id="IDS_COM_BODY_SEARCH">Căutare</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Casete de mesaje</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Adăugare număr</text>
+    <text id="IDS_COM_BODY_MEMO">Notă</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Copiere pe SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Introduceţi numărul</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Adăugare contact</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Reţea reşedinţă</text>
+    <text id="IDS_COM_POP_REJECTED">Respins</text>
+    <text id="IDS_COM_BODY_SETTINGS">Setări</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Începe cu</text>
+    <text id="IDS_COM_BODY_DISPLAY">Afişare</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Protecţie activată</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Manual</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Eroare cartela SIM</text>
+    <text id="IDS_COM_POP_DELETED">Şters</text>
+    <text id="IDS_COM_SK_SEND_ABB">Trim.</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Redirecţionat</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Centru %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Editare număr</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automat</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Afiş. detalii mesaj</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Respingere</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Apel</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Utilizaţi tasta volum</text>
+    <text id="IDS_COM_SK_SAVE">Salvare</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Exact la fel ca</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Nu există rezultate ale căutării</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Mod creare</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Mesaje text</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Primit</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Criteriu de potrivire</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Amânat</text>
+    <text id="IDS_COM_SK_ADD">Adaugă</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Blocare</text>
+    <text id="IDS_COM_SK_YES">Da</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Vizualizare contacte</text>
+    <text id="IDS_COM_SK_SEARCH">Căutare</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Cuvinte blocate</text>
+    <text id="IDS_COM_BODY_SUBJECT">Subiect</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Nerecunoscut</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Trimitere raport citire</text>
+    <text id="IDS_MSGF_SK_RESTORE">Restab.</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Solicitare raport citire</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Introducere cuvânt</text>
+    <text id="IDS_COM_SK3_COMPOSE">Compun.</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">A avut loc o eroare necunoscută</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Solicitare raport de livrare</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Destinatari nevalizi</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Mesaje informare</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Salvare ataşare</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Raport livrare</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Renunţaţi la mesajul curent?</text>
+    <text id="IDS_COM_POP_ATTACH">Ataşare</text>
+    <text id="IDS_COM_BODY_CALENDAR">Calendar</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Apelare</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Captură video</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Selectare destinatar</text>
+</string_table>
diff --git a/res/rus-RU.xml b/res/rus-RU.xml
new file mode 100644 (file)
index 0000000..bd776d6
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Сведения о сообщении</text>
+    <text id="IDS_COM_SK3_PREVIEW">Просмотр</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">Выбрано: %d</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Длительность должна быть более %d сек.</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Превышено максимальное число символов. Удалите несколько символов</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Выбрать все</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Нет темы</text>
+    <text id="IDS_COM_POP_CLOSE">Закрыть</text>
+    <text id="IDS_COM_BODY_TO">Кому</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Сделать фото</text>
+    <text id="IDS_COM_POP_DELETE_Q">Удалить?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Режим ввода</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Достигнуто максимальное число получателей (%d)</text>
+    <text id="IDS_COM_SK_NO">Нет</text>
+    <text id="IDS_COM_BODY_MY_FILES">Мои файлы</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Копировать на телефон</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Широковещательные сообщ.</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">SMS-центр</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Отправка сбойного сообщения</text>
+    <text id="IDS_COM_POP_SUCCESS">Успешно</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Ограниченный</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Сообщения, полученные от ваших контактов, не будут блокироваться, даже если в них содержатся заблокированные слова</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Разблокировать</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Копировать текст</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Отчет о прочтении</text>
+    <text id="IDS_COM_BODY_MESSAGES">Сообщения</text>
+    <text id="IDS_COM_SK_OPTIONS">Опции</text>
+    <text id="IDS_COM_SK_DONE">Готово</text>
+    <text id="IDS_COM_POP_PM">РМ</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Неизвестно</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Черновики</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Услуга недоступна</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Добавить слово</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Блокировать %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Изменение размера текста с помощью клавиши громкости</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Новое сообщение</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Спам</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Содержит</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Заблокированные номера</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">MMS</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Изменить слово</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Срок действия закончен</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Предупреждающий</text>
+    <text id="IDS_COM_SK_EDIT">Изменить</text>
+    <text id="IDS_COM_POP_FAILED">Сбой</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Удалить номер</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Запись звука</text>
+    <text id="IDS_COM_SK_BACK">Назад</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Юникод</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Удалить слова</text>
+    <text id="IDS_COM_BODY_FORWARD">Переслать</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Нет сообщений</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Роуминг</text>
+    <text id="IDS_MSGF_BODY_FROM">От</text>
+    <text id="IDS_COM_SK_DELETE">Удалить</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Непрочитанные</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Повторяющийся получатель</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM-алфавит</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">Сообщения на SIM-карте</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Отправлено</text>
+    <text id="IDS_COM_BODY_CONTACTS">Контакты</text>
+    <text id="IDS_MSGF_OPT_STATUS">Состояние</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Свободно</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Тип</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Автозагрузка</text>
+    <text id="IDS_MSGF_SK_RESEND">Отправить повторно</text>
+    <text id="IDS_COM_SK_CANCEL">Отмена</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Параметры приема</text>
+    <text id="IDS_COM_BODY_GALLERY">Галерея</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Продолжительн.\n(%d с.)</text>
+    <text id="IDS_COM_BODY_SEARCH">Поиск</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Папки сообщений</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Добавить номер</text>
+    <text id="IDS_COM_BODY_MEMO">Заметки</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Копировать на SIM-карту</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Введите номер</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Создать контакт</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Домашняя сеть</text>
+    <text id="IDS_COM_POP_REJECTED">Отклонено</text>
+    <text id="IDS_COM_BODY_SETTINGS">Настройки</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Начинается с</text>
+    <text id="IDS_COM_BODY_DISPLAY">Дисплей</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Включить защиту</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Вручную</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Сбой SIM-карты</text>
+    <text id="IDS_COM_POP_DELETED">Удалено</text>
+    <text id="IDS_COM_SK_SEND_ABB">Отпр.</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Переадресовано</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Центр %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Изменить номер</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Автоматически</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Просмотреть сведения</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Отказ</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Голосовой вызов</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Испол. клавишу громкости</text>
+    <text id="IDS_COM_SK_SAVE">Соxранить</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Точное совпадение</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Нет результатов поиска</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Режим создания</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">SMS</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Получено</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Условие совпадения</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Отложено</text>
+    <text id="IDS_COM_SK_ADD">Добавить</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Блокировать</text>
+    <text id="IDS_COM_SK_YES">Да</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Просмотреть</text>
+    <text id="IDS_COM_SK_SEARCH">Поиск</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Заблокированные слова</text>
+    <text id="IDS_COM_BODY_SUBJECT">Тема</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Нераспознано</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Отправлять отчет о прочтении</text>
+    <text id="IDS_MSGF_SK_RESTORE">Восстан.</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Отчет о прочтении</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Введите слово</text>
+    <text id="IDS_COM_SK3_COMPOSE">Создать</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Возникла неизвестная ошибка</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Запросить отчет о доставке</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Недопустимые получатели</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Сообщения сети</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Сохранить вложение</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Отчет о доставке</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Отметить текущее сообщение?</text>
+    <text id="IDS_COM_POP_ATTACH">Вложить</text>
+    <text id="IDS_COM_BODY_CALENDAR">Календарь</text>
+    <text id="IDS_COM_SK_OK">Да</text>
+    <text id="IDS_COM_SK_CALL">Вызов</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Записать видео</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Выберите получателя</text>
+</string_table>
diff --git a/res/screen-density-xhigh/00_MessageBubble_date_bg.9.png b/res/screen-density-xhigh/00_MessageBubble_date_bg.9.png
new file mode 100644 (file)
index 0000000..db3ac1e
Binary files /dev/null and b/res/screen-density-xhigh/00_MessageBubble_date_bg.9.png differ
diff --git a/res/screen-density-xhigh/00_Nocontents_text.png b/res/screen-density-xhigh/00_Nocontents_text.png
new file mode 100644 (file)
index 0000000..3d68f0a
Binary files /dev/null and b/res/screen-density-xhigh/00_Nocontents_text.png differ
diff --git a/res/screen-density-xhigh/00_arrow_expand.png b/res/screen-density-xhigh/00_arrow_expand.png
new file mode 100644 (file)
index 0000000..87d9a88
Binary files /dev/null and b/res/screen-density-xhigh/00_arrow_expand.png differ
diff --git a/res/screen-density-xhigh/00_arrow_expand_dim.png b/res/screen-density-xhigh/00_arrow_expand_dim.png
new file mode 100644 (file)
index 0000000..5a7a9ab
Binary files /dev/null and b/res/screen-density-xhigh/00_arrow_expand_dim.png differ
diff --git a/res/screen-density-xhigh/00_arrow_expand_press.png b/res/screen-density-xhigh/00_arrow_expand_press.png
new file mode 100644 (file)
index 0000000..87d9a88
Binary files /dev/null and b/res/screen-density-xhigh/00_arrow_expand_press.png differ
diff --git a/res/screen-density-xhigh/00_btn_circle_bg_normal.png b/res/screen-density-xhigh/00_btn_circle_bg_normal.png
new file mode 100644 (file)
index 0000000..981d624
Binary files /dev/null and b/res/screen-density-xhigh/00_btn_circle_bg_normal.png differ
diff --git a/res/screen-density-xhigh/00_btn_circle_bg_normal_01.png b/res/screen-density-xhigh/00_btn_circle_bg_normal_01.png
new file mode 100644 (file)
index 0000000..dc80c78
Binary files /dev/null and b/res/screen-density-xhigh/00_btn_circle_bg_normal_01.png differ
diff --git a/res/screen-density-xhigh/00_btn_circle_bg_normal_01_press.png b/res/screen-density-xhigh/00_btn_circle_bg_normal_01_press.png
new file mode 100644 (file)
index 0000000..a352d6a
Binary files /dev/null and b/res/screen-density-xhigh/00_btn_circle_bg_normal_01_press.png differ
diff --git a/res/screen-density-xhigh/00_btn_circle_bg_press.png b/res/screen-density-xhigh/00_btn_circle_bg_press.png
new file mode 100644 (file)
index 0000000..bc5f8b2
Binary files /dev/null and b/res/screen-density-xhigh/00_btn_circle_bg_press.png differ
diff --git a/res/screen-density-xhigh/00_button_01_bg.9.png b/res/screen-density-xhigh/00_button_01_bg.9.png
new file mode 100644 (file)
index 0000000..8ffbf20
Binary files /dev/null and b/res/screen-density-xhigh/00_button_01_bg.9.png differ
diff --git a/res/screen-density-xhigh/00_button_01_normal.9.png b/res/screen-density-xhigh/00_button_01_normal.9.png
new file mode 100644 (file)
index 0000000..647fd64
Binary files /dev/null and b/res/screen-density-xhigh/00_button_01_normal.9.png differ
diff --git a/res/screen-density-xhigh/00_button_01_normal_press.9.png b/res/screen-density-xhigh/00_button_01_normal_press.9.png
new file mode 100644 (file)
index 0000000..e8dd30c
Binary files /dev/null and b/res/screen-density-xhigh/00_button_01_normal_press.9.png differ
diff --git a/res/screen-density-xhigh/00_button_minus_normal.png b/res/screen-density-xhigh/00_button_minus_normal.png
new file mode 100644 (file)
index 0000000..eadabad
Binary files /dev/null and b/res/screen-density-xhigh/00_button_minus_normal.png differ
diff --git a/res/screen-density-xhigh/00_button_minus_press.png b/res/screen-density-xhigh/00_button_minus_press.png
new file mode 100644 (file)
index 0000000..eadabad
Binary files /dev/null and b/res/screen-density-xhigh/00_button_minus_press.png differ
diff --git a/res/screen-density-xhigh/00_button_plus.9.png b/res/screen-density-xhigh/00_button_plus.9.png
new file mode 100644 (file)
index 0000000..bf63dad
Binary files /dev/null and b/res/screen-density-xhigh/00_button_plus.9.png differ
diff --git a/res/screen-density-xhigh/00_button_plus.png b/res/screen-density-xhigh/00_button_plus.png
new file mode 100644 (file)
index 0000000..3690ab5
Binary files /dev/null and b/res/screen-density-xhigh/00_button_plus.png differ
diff --git a/res/screen-density-xhigh/00_button_plus_normal.png b/res/screen-density-xhigh/00_button_plus_normal.png
new file mode 100644 (file)
index 0000000..724d1a8
Binary files /dev/null and b/res/screen-density-xhigh/00_button_plus_normal.png differ
diff --git a/res/screen-density-xhigh/00_button_plus_press.png b/res/screen-density-xhigh/00_button_plus_press.png
new file mode 100644 (file)
index 0000000..adf0f35
Binary files /dev/null and b/res/screen-density-xhigh/00_button_plus_press.png differ
diff --git a/res/screen-density-xhigh/00_button_popup_dim.9.png b/res/screen-density-xhigh/00_button_popup_dim.9.png
new file mode 100644 (file)
index 0000000..97cf323
Binary files /dev/null and b/res/screen-density-xhigh/00_button_popup_dim.9.png differ
diff --git a/res/screen-density-xhigh/00_button_popup_normal.9.png b/res/screen-density-xhigh/00_button_popup_normal.9.png
new file mode 100644 (file)
index 0000000..97cf323
Binary files /dev/null and b/res/screen-density-xhigh/00_button_popup_normal.9.png differ
diff --git a/res/screen-density-xhigh/00_button_popup_press.9.png b/res/screen-density-xhigh/00_button_popup_press.9.png
new file mode 100644 (file)
index 0000000..e8dd30c
Binary files /dev/null and b/res/screen-density-xhigh/00_button_popup_press.9.png differ
diff --git a/res/screen-density-xhigh/00_button_radio_normal1.png b/res/screen-density-xhigh/00_button_radio_normal1.png
new file mode 100644 (file)
index 0000000..22df054
Binary files /dev/null and b/res/screen-density-xhigh/00_button_radio_normal1.png differ
diff --git a/res/screen-density-xhigh/00_button_radio_normal2.png b/res/screen-density-xhigh/00_button_radio_normal2.png
new file mode 100644 (file)
index 0000000..7c94db0
Binary files /dev/null and b/res/screen-density-xhigh/00_button_radio_normal2.png differ
diff --git a/res/screen-density-xhigh/00_button_radio_press1.png b/res/screen-density-xhigh/00_button_radio_press1.png
new file mode 100644 (file)
index 0000000..7e5a8a1
Binary files /dev/null and b/res/screen-density-xhigh/00_button_radio_press1.png differ
diff --git a/res/screen-density-xhigh/00_button_radio_press2.png b/res/screen-density-xhigh/00_button_radio_press2.png
new file mode 100644 (file)
index 0000000..7d3eda3
Binary files /dev/null and b/res/screen-density-xhigh/00_button_radio_press2.png differ
diff --git a/res/screen-density-xhigh/00_button_send_normal.png b/res/screen-density-xhigh/00_button_send_normal.png
new file mode 100644 (file)
index 0000000..c3bf732
Binary files /dev/null and b/res/screen-density-xhigh/00_button_send_normal.png differ
diff --git a/res/screen-density-xhigh/00_button_sweep_delete.9.png b/res/screen-density-xhigh/00_button_sweep_delete.9.png
new file mode 100644 (file)
index 0000000..f90daab
Binary files /dev/null and b/res/screen-density-xhigh/00_button_sweep_delete.9.png differ
diff --git a/res/screen-density-xhigh/00_button_sweep_delete_press.9.png b/res/screen-density-xhigh/00_button_sweep_delete_press.9.png
new file mode 100644 (file)
index 0000000..ebe9d4d
Binary files /dev/null and b/res/screen-density-xhigh/00_button_sweep_delete_press.9.png differ
diff --git a/res/screen-density-xhigh/00_button_warning.png b/res/screen-density-xhigh/00_button_warning.png
new file mode 100644 (file)
index 0000000..98a1265
Binary files /dev/null and b/res/screen-density-xhigh/00_button_warning.png differ
diff --git a/res/screen-density-xhigh/00_button_warning_press.png b/res/screen-density-xhigh/00_button_warning_press.png
new file mode 100644 (file)
index 0000000..98a1265
Binary files /dev/null and b/res/screen-density-xhigh/00_button_warning_press.png differ
diff --git a/res/screen-density-xhigh/00_circle_button.png b/res/screen-density-xhigh/00_circle_button.png
new file mode 100644 (file)
index 0000000..38283e2
Binary files /dev/null and b/res/screen-density-xhigh/00_circle_button.png differ
diff --git a/res/screen-density-xhigh/00_circle_button_dim.png b/res/screen-density-xhigh/00_circle_button_dim.png
new file mode 100644 (file)
index 0000000..38283e2
Binary files /dev/null and b/res/screen-density-xhigh/00_circle_button_dim.png differ
diff --git a/res/screen-density-xhigh/00_circle_button_press.png b/res/screen-density-xhigh/00_circle_button_press.png
new file mode 100644 (file)
index 0000000..41de1ed
Binary files /dev/null and b/res/screen-density-xhigh/00_circle_button_press.png differ
diff --git a/res/screen-density-xhigh/00_contacts_button_bg.png b/res/screen-density-xhigh/00_contacts_button_bg.png
new file mode 100644 (file)
index 0000000..8108e49
Binary files /dev/null and b/res/screen-density-xhigh/00_contacts_button_bg.png differ
diff --git a/res/screen-density-xhigh/00_contacts_button_bg_press.png b/res/screen-density-xhigh/00_contacts_button_bg_press.png
new file mode 100644 (file)
index 0000000..496ee88
Binary files /dev/null and b/res/screen-density-xhigh/00_contacts_button_bg_press.png differ
diff --git a/res/screen-density-xhigh/00_contacts_circle_bg.png b/res/screen-density-xhigh/00_contacts_circle_bg.png
new file mode 100644 (file)
index 0000000..133e187
Binary files /dev/null and b/res/screen-density-xhigh/00_contacts_circle_bg.png differ
diff --git a/res/screen-density-xhigh/00_icon_Back.png b/res/screen-density-xhigh/00_icon_Back.png
new file mode 100644 (file)
index 0000000..e217a0a
Binary files /dev/null and b/res/screen-density-xhigh/00_icon_Back.png differ
diff --git a/res/screen-density-xhigh/00_icon_Back_64.png b/res/screen-density-xhigh/00_icon_Back_64.png
new file mode 100644 (file)
index 0000000..668d40c
Binary files /dev/null and b/res/screen-density-xhigh/00_icon_Back_64.png differ
diff --git a/res/screen-density-xhigh/00_icon_Back_press.png b/res/screen-density-xhigh/00_icon_Back_press.png
new file mode 100644 (file)
index 0000000..344e209
Binary files /dev/null and b/res/screen-density-xhigh/00_icon_Back_press.png differ
diff --git a/res/screen-density-xhigh/00_icon_Back_press_64.png b/res/screen-density-xhigh/00_icon_Back_press_64.png
new file mode 100644 (file)
index 0000000..eac4c4f
Binary files /dev/null and b/res/screen-density-xhigh/00_icon_Back_press_64.png differ
diff --git a/res/screen-density-xhigh/00_icon_more.png b/res/screen-density-xhigh/00_icon_more.png
new file mode 100644 (file)
index 0000000..49a6d06
Binary files /dev/null and b/res/screen-density-xhigh/00_icon_more.png differ
diff --git a/res/screen-density-xhigh/00_icon_more_dim.png b/res/screen-density-xhigh/00_icon_more_dim.png
new file mode 100644 (file)
index 0000000..adc28b2
Binary files /dev/null and b/res/screen-density-xhigh/00_icon_more_dim.png differ
diff --git a/res/screen-density-xhigh/00_icon_more_press.png b/res/screen-density-xhigh/00_icon_more_press.png
new file mode 100644 (file)
index 0000000..3a13509
Binary files /dev/null and b/res/screen-density-xhigh/00_icon_more_press.png differ
diff --git a/res/screen-density-xhigh/00_list_expand_closed.png b/res/screen-density-xhigh/00_list_expand_closed.png
new file mode 100644 (file)
index 0000000..a3f639e
Binary files /dev/null and b/res/screen-density-xhigh/00_list_expand_closed.png differ
diff --git a/res/screen-density-xhigh/00_list_expand_closed_press.png b/res/screen-density-xhigh/00_list_expand_closed_press.png
new file mode 100644 (file)
index 0000000..b421ad1
Binary files /dev/null and b/res/screen-density-xhigh/00_list_expand_closed_press.png differ
diff --git a/res/screen-density-xhigh/00_list_expand_opened.png b/res/screen-density-xhigh/00_list_expand_opened.png
new file mode 100644 (file)
index 0000000..377dbc9
Binary files /dev/null and b/res/screen-density-xhigh/00_list_expand_opened.png differ
diff --git a/res/screen-density-xhigh/00_list_expand_opened_press.png b/res/screen-density-xhigh/00_list_expand_opened_press.png
new file mode 100644 (file)
index 0000000..1b49c94
Binary files /dev/null and b/res/screen-density-xhigh/00_list_expand_opened_press.png differ
diff --git a/res/screen-density-xhigh/00_messagebubble_bg_receive.9.png b/res/screen-density-xhigh/00_messagebubble_bg_receive.9.png
new file mode 100644 (file)
index 0000000..55708e9
Binary files /dev/null and b/res/screen-density-xhigh/00_messagebubble_bg_receive.9.png differ
diff --git a/res/screen-density-xhigh/00_messagebubble_bg_sent.9.png b/res/screen-density-xhigh/00_messagebubble_bg_sent.9.png
new file mode 100644 (file)
index 0000000..896911b
Binary files /dev/null and b/res/screen-density-xhigh/00_messagebubble_bg_sent.9.png differ
diff --git a/res/screen-density-xhigh/00_popup_bg.png b/res/screen-density-xhigh/00_popup_bg.png
new file mode 100644 (file)
index 0000000..e4bffb2
Binary files /dev/null and b/res/screen-density-xhigh/00_popup_bg.png differ
diff --git a/res/screen-density-xhigh/00_popup_bottom_bg.9.png b/res/screen-density-xhigh/00_popup_bottom_bg.9.png
new file mode 100644 (file)
index 0000000..8a424b8
Binary files /dev/null and b/res/screen-density-xhigh/00_popup_bottom_bg.9.png differ
diff --git a/res/screen-density-xhigh/00_popup_bottom_bg.png b/res/screen-density-xhigh/00_popup_bottom_bg.png
new file mode 100644 (file)
index 0000000..c595eec
Binary files /dev/null and b/res/screen-density-xhigh/00_popup_bottom_bg.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_bubble_bg.9.png b/res/screen-density-xhigh/00_winset_list_bubble_bg.9.png
new file mode 100644 (file)
index 0000000..3b863b9
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_bubble_bg.9.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_bubble_bg.png b/res/screen-density-xhigh/00_winset_list_bubble_bg.png
new file mode 100644 (file)
index 0000000..dfed7d0
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_bubble_bg.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_01.png b/res/screen-density-xhigh/00_winset_list_process_01.png
new file mode 100644 (file)
index 0000000..92d3686
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_01.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_02.png b/res/screen-density-xhigh/00_winset_list_process_02.png
new file mode 100644 (file)
index 0000000..3cba306
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_02.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_03.png b/res/screen-density-xhigh/00_winset_list_process_03.png
new file mode 100644 (file)
index 0000000..9babc31
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_03.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_04.png b/res/screen-density-xhigh/00_winset_list_process_04.png
new file mode 100644 (file)
index 0000000..3c72df5
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_04.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_05.png b/res/screen-density-xhigh/00_winset_list_process_05.png
new file mode 100644 (file)
index 0000000..bbb14cd
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_05.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_06.png b/res/screen-density-xhigh/00_winset_list_process_06.png
new file mode 100644 (file)
index 0000000..3719b53
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_06.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_07.png b/res/screen-density-xhigh/00_winset_list_process_07.png
new file mode 100644 (file)
index 0000000..009b81f
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_07.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_08.png b/res/screen-density-xhigh/00_winset_list_process_08.png
new file mode 100644 (file)
index 0000000..4a32e15
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_08.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_09.png b/res/screen-density-xhigh/00_winset_list_process_09.png
new file mode 100644 (file)
index 0000000..aed8bf2
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_09.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_10.png b/res/screen-density-xhigh/00_winset_list_process_10.png
new file mode 100644 (file)
index 0000000..f6f3194
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_10.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_11.png b/res/screen-density-xhigh/00_winset_list_process_11.png
new file mode 100644 (file)
index 0000000..54db6c9
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_11.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_12.png b/res/screen-density-xhigh/00_winset_list_process_12.png
new file mode 100644 (file)
index 0000000..284b090
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_12.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_13.png b/res/screen-density-xhigh/00_winset_list_process_13.png
new file mode 100644 (file)
index 0000000..09c9aa9
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_13.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_14.png b/res/screen-density-xhigh/00_winset_list_process_14.png
new file mode 100644 (file)
index 0000000..cd075b3
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_14.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_15.png b/res/screen-density-xhigh/00_winset_list_process_15.png
new file mode 100644 (file)
index 0000000..885030c
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_15.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_16.png b/res/screen-density-xhigh/00_winset_list_process_16.png
new file mode 100644 (file)
index 0000000..26a877a
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_16.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_17.png b/res/screen-density-xhigh/00_winset_list_process_17.png
new file mode 100644 (file)
index 0000000..ff746b7
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_17.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_18.png b/res/screen-density-xhigh/00_winset_list_process_18.png
new file mode 100644 (file)
index 0000000..07aeffd
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_18.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_19.png b/res/screen-density-xhigh/00_winset_list_process_19.png
new file mode 100644 (file)
index 0000000..16a9e1b
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_19.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_20.png b/res/screen-density-xhigh/00_winset_list_process_20.png
new file mode 100644 (file)
index 0000000..b409b03
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_20.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_21.png b/res/screen-density-xhigh/00_winset_list_process_21.png
new file mode 100644 (file)
index 0000000..d5de1fb
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_21.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_22.png b/res/screen-density-xhigh/00_winset_list_process_22.png
new file mode 100644 (file)
index 0000000..fae4ddd
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_22.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_23.png b/res/screen-density-xhigh/00_winset_list_process_23.png
new file mode 100644 (file)
index 0000000..02d9314
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_23.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_24.png b/res/screen-density-xhigh/00_winset_list_process_24.png
new file mode 100644 (file)
index 0000000..ff35805
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_24.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_25.png b/res/screen-density-xhigh/00_winset_list_process_25.png
new file mode 100644 (file)
index 0000000..e027879
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_25.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_26.png b/res/screen-density-xhigh/00_winset_list_process_26.png
new file mode 100644 (file)
index 0000000..bb86e11
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_26.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_27.png b/res/screen-density-xhigh/00_winset_list_process_27.png
new file mode 100644 (file)
index 0000000..f2c2e5b
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_27.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_28.png b/res/screen-density-xhigh/00_winset_list_process_28.png
new file mode 100644 (file)
index 0000000..759af64
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_28.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_29.png b/res/screen-density-xhigh/00_winset_list_process_29.png
new file mode 100644 (file)
index 0000000..42d4c29
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_29.png differ
diff --git a/res/screen-density-xhigh/00_winset_list_process_30.png b/res/screen-density-xhigh/00_winset_list_process_30.png
new file mode 100644 (file)
index 0000000..e78bff4
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_list_process_30.png differ
diff --git a/res/screen-density-xhigh/00_winset_more.png b/res/screen-density-xhigh/00_winset_more.png
new file mode 100644 (file)
index 0000000..473d5aa
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_more.png differ
diff --git a/res/screen-density-xhigh/00_winset_more_press.png b/res/screen-density-xhigh/00_winset_more_press.png
new file mode 100644 (file)
index 0000000..cc82721
Binary files /dev/null and b/res/screen-density-xhigh/00_winset_more_press.png differ
diff --git a/res/screen-density-xhigh/01_controlbar_icon_create.png b/res/screen-density-xhigh/01_controlbar_icon_create.png
new file mode 100644 (file)
index 0000000..0dc1144
Binary files /dev/null and b/res/screen-density-xhigh/01_controlbar_icon_create.png differ
diff --git a/res/screen-density-xhigh/01_controlbar_icon_settings.png b/res/screen-density-xhigh/01_controlbar_icon_settings.png
new file mode 100644 (file)
index 0000000..bbea504
Binary files /dev/null and b/res/screen-density-xhigh/01_controlbar_icon_settings.png differ
diff --git a/res/screen-density-xhigh/M01_btn_delete.png b/res/screen-density-xhigh/M01_btn_delete.png
new file mode 100644 (file)
index 0000000..0ac1428
Binary files /dev/null and b/res/screen-density-xhigh/M01_btn_delete.png differ
diff --git a/res/screen-density-xhigh/M01_btn_delete_press.png b/res/screen-density-xhigh/M01_btn_delete_press.png
new file mode 100644 (file)
index 0000000..9cc0949
Binary files /dev/null and b/res/screen-density-xhigh/M01_btn_delete_press.png differ
diff --git a/res/screen-density-xhigh/M01_btn_message_send.png b/res/screen-density-xhigh/M01_btn_message_send.png
new file mode 100644 (file)
index 0000000..4b34e1f
Binary files /dev/null and b/res/screen-density-xhigh/M01_btn_message_send.png differ
diff --git a/res/screen-density-xhigh/M01_btn_message_send_dim.png b/res/screen-density-xhigh/M01_btn_message_send_dim.png
new file mode 100644 (file)
index 0000000..993c4c7
Binary files /dev/null and b/res/screen-density-xhigh/M01_btn_message_send_dim.png differ
diff --git a/res/screen-density-xhigh/M01_btn_mms_message_send.png b/res/screen-density-xhigh/M01_btn_mms_message_send.png
new file mode 100644 (file)
index 0000000..c523c00
Binary files /dev/null and b/res/screen-density-xhigh/M01_btn_mms_message_send.png differ
diff --git a/res/screen-density-xhigh/M01_btn_mms_message_send_dim.png b/res/screen-density-xhigh/M01_btn_mms_message_send_dim.png
new file mode 100644 (file)
index 0000000..d5328eb
Binary files /dev/null and b/res/screen-density-xhigh/M01_btn_mms_message_send_dim.png differ
diff --git a/res/screen-density-xhigh/M01_btn_plus_normal.png b/res/screen-density-xhigh/M01_btn_plus_normal.png
new file mode 100644 (file)
index 0000000..724d1a8
Binary files /dev/null and b/res/screen-density-xhigh/M01_btn_plus_normal.png differ
diff --git a/res/screen-density-xhigh/M01_btn_plus_press.png b/res/screen-density-xhigh/M01_btn_plus_press.png
new file mode 100644 (file)
index 0000000..724d1a8
Binary files /dev/null and b/res/screen-density-xhigh/M01_btn_plus_press.png differ
diff --git a/res/screen-density-xhigh/M01_contact_default_image.png b/res/screen-density-xhigh/M01_contact_default_image.png
new file mode 100644 (file)
index 0000000..846a993
Binary files /dev/null and b/res/screen-density-xhigh/M01_contact_default_image.png differ
diff --git a/res/screen-density-xhigh/M01_contact_default_image_press.png b/res/screen-density-xhigh/M01_contact_default_image_press.png
new file mode 100644 (file)
index 0000000..a34bb4e
Binary files /dev/null and b/res/screen-density-xhigh/M01_contact_default_image_press.png differ
diff --git a/res/screen-density-xhigh/M01_controlbar_icon_attach.png b/res/screen-density-xhigh/M01_controlbar_icon_attach.png
new file mode 100644 (file)
index 0000000..67959f0
Binary files /dev/null and b/res/screen-density-xhigh/M01_controlbar_icon_attach.png differ
diff --git a/res/screen-density-xhigh/M01_controlbar_icon_back.png b/res/screen-density-xhigh/M01_controlbar_icon_back.png
new file mode 100644 (file)
index 0000000..64dbf1b
Binary files /dev/null and b/res/screen-density-xhigh/M01_controlbar_icon_back.png differ
diff --git a/res/screen-density-xhigh/M01_controlbar_icon_cancel.png b/res/screen-density-xhigh/M01_controlbar_icon_cancel.png
new file mode 100644 (file)
index 0000000..0960b62
Binary files /dev/null and b/res/screen-density-xhigh/M01_controlbar_icon_cancel.png differ
diff --git a/res/screen-density-xhigh/M01_controlbar_icon_copy_to_phone.png b/res/screen-density-xhigh/M01_controlbar_icon_copy_to_phone.png
new file mode 100644 (file)
index 0000000..60a4309
Binary files /dev/null and b/res/screen-density-xhigh/M01_controlbar_icon_copy_to_phone.png differ
diff --git a/res/screen-density-xhigh/M01_controlbar_icon_delete.png b/res/screen-density-xhigh/M01_controlbar_icon_delete.png
new file mode 100644 (file)
index 0000000..148bdaa
Binary files /dev/null and b/res/screen-density-xhigh/M01_controlbar_icon_delete.png differ
diff --git a/res/screen-density-xhigh/M01_controlbar_icon_edit.png b/res/screen-density-xhigh/M01_controlbar_icon_edit.png
new file mode 100644 (file)
index 0000000..ed90f86
Binary files /dev/null and b/res/screen-density-xhigh/M01_controlbar_icon_edit.png differ
diff --git a/res/screen-density-xhigh/M01_controlbar_icon_message_boxes.png b/res/screen-density-xhigh/M01_controlbar_icon_message_boxes.png
new file mode 100644 (file)
index 0000000..e3ba4b5
Binary files /dev/null and b/res/screen-density-xhigh/M01_controlbar_icon_message_boxes.png differ
diff --git a/res/screen-density-xhigh/M01_controlbar_icon_more.png b/res/screen-density-xhigh/M01_controlbar_icon_more.png
new file mode 100644 (file)
index 0000000..e5589d3
Binary files /dev/null and b/res/screen-density-xhigh/M01_controlbar_icon_more.png differ
diff --git a/res/screen-density-xhigh/M01_controlbar_icon_reply.png b/res/screen-density-xhigh/M01_controlbar_icon_reply.png
new file mode 100644 (file)
index 0000000..cb86286
Binary files /dev/null and b/res/screen-density-xhigh/M01_controlbar_icon_reply.png differ
diff --git a/res/screen-density-xhigh/M01_controlbar_icon_resend.png b/res/screen-density-xhigh/M01_controlbar_icon_resend.png
new file mode 100644 (file)
index 0000000..1d97a6c
Binary files /dev/null and b/res/screen-density-xhigh/M01_controlbar_icon_resend.png differ
diff --git a/res/screen-density-xhigh/M01_controlbar_icon_restore.png b/res/screen-density-xhigh/M01_controlbar_icon_restore.png
new file mode 100644 (file)
index 0000000..837bc0d
Binary files /dev/null and b/res/screen-density-xhigh/M01_controlbar_icon_restore.png differ
diff --git a/res/screen-density-xhigh/M01_icon_OTA.png b/res/screen-density-xhigh/M01_icon_OTA.png
new file mode 100644 (file)
index 0000000..ee65384
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_OTA.png differ
diff --git a/res/screen-density-xhigh/M01_icon_OTA_press.png b/res/screen-density-xhigh/M01_icon_OTA_press.png
new file mode 100644 (file)
index 0000000..76a8929
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_OTA_press.png differ
diff --git a/res/screen-density-xhigh/M01_icon_Push.png b/res/screen-density-xhigh/M01_icon_Push.png
new file mode 100644 (file)
index 0000000..cc9b883
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_Push.png differ
diff --git a/res/screen-density-xhigh/M01_icon_Push_press.png b/res/screen-density-xhigh/M01_icon_Push_press.png
new file mode 100644 (file)
index 0000000..9412e90
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_Push_press.png differ
diff --git a/res/screen-density-xhigh/M01_icon_attach.png b/res/screen-density-xhigh/M01_icon_attach.png
new file mode 100644 (file)
index 0000000..e64d1b9
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_attach.png differ
diff --git a/res/screen-density-xhigh/M01_icon_broadcasting.png b/res/screen-density-xhigh/M01_icon_broadcasting.png
new file mode 100644 (file)
index 0000000..d2da992
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_broadcasting.png differ
diff --git a/res/screen-density-xhigh/M01_icon_broadcasting_press.png b/res/screen-density-xhigh/M01_icon_broadcasting_press.png
new file mode 100644 (file)
index 0000000..d127db6
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_broadcasting_press.png differ
diff --git a/res/screen-density-xhigh/M01_icon_call.png b/res/screen-density-xhigh/M01_icon_call.png
new file mode 100644 (file)
index 0000000..b8b7806
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_call.png differ
diff --git a/res/screen-density-xhigh/M01_icon_compose.png b/res/screen-density-xhigh/M01_icon_compose.png
new file mode 100644 (file)
index 0000000..20b71f7
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_compose.png differ
diff --git a/res/screen-density-xhigh/M01_icon_contact_info.png b/res/screen-density-xhigh/M01_icon_contact_info.png
new file mode 100644 (file)
index 0000000..12a5b06
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_contact_info.png differ
diff --git a/res/screen-density-xhigh/M01_icon_delete.png b/res/screen-density-xhigh/M01_icon_delete.png
new file mode 100644 (file)
index 0000000..faaa0d3
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_delete.png differ
diff --git a/res/screen-density-xhigh/M01_icon_edit.png b/res/screen-density-xhigh/M01_icon_edit.png
new file mode 100644 (file)
index 0000000..4ddc598
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_edit.png differ
diff --git a/res/screen-density-xhigh/M01_icon_excel.png b/res/screen-density-xhigh/M01_icon_excel.png
new file mode 100644 (file)
index 0000000..6a63c90
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_excel.png differ
diff --git a/res/screen-density-xhigh/M01_icon_html.png b/res/screen-density-xhigh/M01_icon_html.png
new file mode 100644 (file)
index 0000000..62c85ac
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_html.png differ
diff --git a/res/screen-density-xhigh/M01_icon_image.png b/res/screen-density-xhigh/M01_icon_image.png
new file mode 100644 (file)
index 0000000..2e003f6
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_image.png differ
diff --git a/res/screen-density-xhigh/M01_icon_message_status_mms_sent_n.png b/res/screen-density-xhigh/M01_icon_message_status_mms_sent_n.png
new file mode 100644 (file)
index 0000000..672c78b
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_message_status_mms_sent_n.png differ
diff --git a/res/screen-density-xhigh/M01_icon_message_status_mms_unread_n.png b/res/screen-density-xhigh/M01_icon_message_status_mms_unread_n.png
new file mode 100644 (file)
index 0000000..fc52b49
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_message_status_mms_unread_n.png differ
diff --git a/res/screen-density-xhigh/M01_icon_message_status_sms_read_n.png b/res/screen-density-xhigh/M01_icon_message_status_sms_read_n.png
new file mode 100644 (file)
index 0000000..91222e5
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_message_status_sms_read_n.png differ
diff --git a/res/screen-density-xhigh/M01_icon_message_status_sms_sent_n.png b/res/screen-density-xhigh/M01_icon_message_status_sms_sent_n.png
new file mode 100644 (file)
index 0000000..4e83758
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_message_status_sms_sent_n.png differ
diff --git a/res/screen-density-xhigh/M01_icon_message_status_sms_unread_n.png b/res/screen-density-xhigh/M01_icon_message_status_sms_unread_n.png
new file mode 100644 (file)
index 0000000..d622de8
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_message_status_sms_unread_n.png differ
diff --git a/res/screen-density-xhigh/M01_icon_music.png b/res/screen-density-xhigh/M01_icon_music.png
new file mode 100644 (file)
index 0000000..864bce4
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_music.png differ
diff --git a/res/screen-density-xhigh/M01_icon_pdf.png b/res/screen-density-xhigh/M01_icon_pdf.png
new file mode 100644 (file)
index 0000000..8fcf9ec
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_pdf.png differ
diff --git a/res/screen-density-xhigh/M01_icon_ppt.png b/res/screen-density-xhigh/M01_icon_ppt.png
new file mode 100644 (file)
index 0000000..0e265a1
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_ppt.png differ
diff --git a/res/screen-density-xhigh/M01_icon_rss.png b/res/screen-density-xhigh/M01_icon_rss.png
new file mode 100644 (file)
index 0000000..e29ae5c
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_rss.png differ
diff --git a/res/screen-density-xhigh/M01_icon_save.png b/res/screen-density-xhigh/M01_icon_save.png
new file mode 100644 (file)
index 0000000..4bcf587
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_save.png differ
diff --git a/res/screen-density-xhigh/M01_icon_svg.png b/res/screen-density-xhigh/M01_icon_svg.png
new file mode 100644 (file)
index 0000000..0a25f2b
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_svg.png differ
diff --git a/res/screen-density-xhigh/M01_icon_swf.png b/res/screen-density-xhigh/M01_icon_swf.png
new file mode 100644 (file)
index 0000000..24f4143
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_swf.png differ
diff --git a/res/screen-density-xhigh/M01_icon_text.png b/res/screen-density-xhigh/M01_icon_text.png
new file mode 100644 (file)
index 0000000..f4be533
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_text.png differ
diff --git a/res/screen-density-xhigh/M01_icon_unkown.png b/res/screen-density-xhigh/M01_icon_unkown.png
new file mode 100644 (file)
index 0000000..9e7b96c
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_unkown.png differ
diff --git a/res/screen-density-xhigh/M01_icon_view contact.png b/res/screen-density-xhigh/M01_icon_view contact.png
new file mode 100644 (file)
index 0000000..bb35882
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_view contact.png differ
diff --git a/res/screen-density-xhigh/M01_icon_view_contact.png b/res/screen-density-xhigh/M01_icon_view_contact.png
new file mode 100644 (file)
index 0000000..bb35882
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_view_contact.png differ
diff --git a/res/screen-density-xhigh/M01_icon_voice.png b/res/screen-density-xhigh/M01_icon_voice.png
new file mode 100644 (file)
index 0000000..36dd2c7
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_voice.png differ
diff --git a/res/screen-density-xhigh/M01_icon_word.png b/res/screen-density-xhigh/M01_icon_word.png
new file mode 100644 (file)
index 0000000..ffa7438
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_word.png differ
diff --git a/res/screen-density-xhigh/M01_input_bg.png b/res/screen-density-xhigh/M01_input_bg.png
new file mode 100644 (file)
index 0000000..1c78dbb
Binary files /dev/null and b/res/screen-density-xhigh/M01_input_bg.png differ
diff --git a/res/screen-density-xhigh/M01_photo_btn_delete.png b/res/screen-density-xhigh/M01_photo_btn_delete.png
new file mode 100644 (file)
index 0000000..fdb4f0a
Binary files /dev/null and b/res/screen-density-xhigh/M01_photo_btn_delete.png differ
diff --git a/res/screen-density-xhigh/M01_photo_btn_delete_press.png b/res/screen-density-xhigh/M01_photo_btn_delete_press.png
new file mode 100644 (file)
index 0000000..02dddce
Binary files /dev/null and b/res/screen-density-xhigh/M01_photo_btn_delete_press.png differ
diff --git a/res/screen-density-xhigh/M01_play_btn_next_press.png b/res/screen-density-xhigh/M01_play_btn_next_press.png
new file mode 100644 (file)
index 0000000..18a21c1
Binary files /dev/null and b/res/screen-density-xhigh/M01_play_btn_next_press.png differ
diff --git a/res/screen-density-xhigh/M01_play_btn_pause_press.png b/res/screen-density-xhigh/M01_play_btn_pause_press.png
new file mode 100644 (file)
index 0000000..b851280
Binary files /dev/null and b/res/screen-density-xhigh/M01_play_btn_pause_press.png differ
diff --git a/res/screen-density-xhigh/M01_play_btn_play_press.png b/res/screen-density-xhigh/M01_play_btn_play_press.png
new file mode 100644 (file)
index 0000000..cdccbb4
Binary files /dev/null and b/res/screen-density-xhigh/M01_play_btn_play_press.png differ
diff --git a/res/screen-density-xhigh/M01_play_btn_previous_press.png b/res/screen-density-xhigh/M01_play_btn_previous_press.png
new file mode 100644 (file)
index 0000000..7169310
Binary files /dev/null and b/res/screen-density-xhigh/M01_play_btn_previous_press.png differ
diff --git a/res/screen-density-xhigh/M01_play_btn_volume_press.png b/res/screen-density-xhigh/M01_play_btn_volume_press.png
new file mode 100644 (file)
index 0000000..e209bd0
Binary files /dev/null and b/res/screen-density-xhigh/M01_play_btn_volume_press.png differ
diff --git a/res/screen-density-xhigh/M01_popup_bubble_bg.png b/res/screen-density-xhigh/M01_popup_bubble_bg.png
new file mode 100644 (file)
index 0000000..4367a2c
Binary files /dev/null and b/res/screen-density-xhigh/M01_popup_bubble_bg.png differ
diff --git a/res/screen-density-xhigh/M01_search_input_field_attach_bg.9.png b/res/screen-density-xhigh/M01_search_input_field_attach_bg.9.png
new file mode 100644 (file)
index 0000000..ba0b6ec
Binary files /dev/null and b/res/screen-density-xhigh/M01_search_input_field_attach_bg.9.png differ
diff --git a/res/screen-density-xhigh/M01_search_input_field_bg.9.png b/res/screen-density-xhigh/M01_search_input_field_bg.9.png
new file mode 100644 (file)
index 0000000..6e7b4d3
Binary files /dev/null and b/res/screen-density-xhigh/M01_search_input_field_bg.9.png differ
diff --git a/res/screen-density-xhigh/M01_title_bubble.png b/res/screen-density-xhigh/M01_title_bubble.png
new file mode 100644 (file)
index 0000000..de3a1c3
Binary files /dev/null and b/res/screen-density-xhigh/M01_title_bubble.png differ
diff --git a/res/screen-density-xhigh/M01_title_icon_compose_press_web.png b/res/screen-density-xhigh/M01_title_icon_compose_press_web.png
new file mode 100644 (file)
index 0000000..838606e
Binary files /dev/null and b/res/screen-density-xhigh/M01_title_icon_compose_press_web.png differ
diff --git a/res/screen-density-xhigh/M01_title_icon_compose_web.png b/res/screen-density-xhigh/M01_title_icon_compose_web.png
new file mode 100644 (file)
index 0000000..edc929b
Binary files /dev/null and b/res/screen-density-xhigh/M01_title_icon_compose_web.png differ
diff --git a/res/screen-density-xhigh/M01_title_icon_search_press_web.png b/res/screen-density-xhigh/M01_title_icon_search_press_web.png
new file mode 100644 (file)
index 0000000..432007c
Binary files /dev/null and b/res/screen-density-xhigh/M01_title_icon_search_press_web.png differ
diff --git a/res/screen-density-xhigh/M01_title_icon_search_web.png b/res/screen-density-xhigh/M01_title_icon_search_web.png
new file mode 100644 (file)
index 0000000..676e506
Binary files /dev/null and b/res/screen-density-xhigh/M01_title_icon_search_web.png differ
diff --git a/res/screen-density-xhigh/attach_icon.png b/res/screen-density-xhigh/attach_icon.png
new file mode 100644 (file)
index 0000000..062ce45
Binary files /dev/null and b/res/screen-density-xhigh/attach_icon.png differ
diff --git a/res/screen-size-normal/IDL_ATTACHMENTS_POPUP.xml b/res/screen-size-normal/IDL_ATTACHMENTS_POPUP.xml
new file mode 100644 (file)
index 0000000..81012be
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE ScenePopup SYSTEM "UIForm.dtd">\r
+<ScenePopup Bversion="3.0.0.201212201745" Dversion="20120315">\r
+    <Popup id="IDL_ATTACHMENTS_POPUP">\r
+        <property color="" titleText="Attachments" titleTextColor=""/>\r
+        <layout height="311" mode="Portrait" style="" type="LAYOUT_RELATIVE" width="720"/>\r
+        <layout height="311" mode="Landscape" style="" type="LAYOUT_RELATIVE" width="720"/>\r
+    </Popup>\r
+    <ListView id="IDC_ATTACH_LISTVIEW" parent="IDL_ATTACHMENTS_POPUP">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" bitmapPathOfEmptyList="" colorOfEmptyListText="" fastScroll="false" itemDivider="true" itemDividerColor="" sweepEnabled="false" textOfEmptyList=""/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="112" horizontalFitPolicy="FIT_POLICY_PARENT" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="648" x="0" y="0"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="112" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="648" x="0" y="0"/>\r
+    </ListView>\r
+    <Button id="IDC_BUTTON_SAVE" parent="IDL_ATTACHMENTS_POPUP">\r
+        <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.9.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_COM_SK_SAVE" textSize="33" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="74" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="310" x="0" y="132"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="74" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="310" x="0" y="131"/>\r
+    </Button>\r
+    <Button id="IDC_BUTTON_CANCEL" parent="IDL_ATTACHMENTS_POPUP">\r
+        <property disableTextColor="" disabledBitmapPath="00_button_popup_dim.9.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="00_button_popup_normal.9.png" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.9.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_COM_SK_CANCEL" textSize="33" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="74" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="309" x="337" y="132"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="74" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="309" x="337" y="131"/>\r
+    </Button>\r
+</ScenePopup>\r
diff --git a/res/screen-size-normal/IDL_ATTACH_LIST_POPUP.xml b/res/screen-size-normal/IDL_ATTACH_LIST_POPUP.xml
new file mode 100644 (file)
index 0000000..c04d328
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE ScenePopup SYSTEM "UIForm.dtd">\r
+<ScenePopup Bversion="3.0.0.201212201745" Dversion="20120315">\r
+    <Popup id="IDL_ATTACH_LIST_POPUP">\r
+        <property color="" titleText="::IDS_COM_POP_ATTACH" titleTextColor=""/>\r
+        <layout height="309" mode="Portrait" style="" type="LAYOUT_RELATIVE" width="720"/>\r
+        <layout height="309" mode="Landscape" style="" type="LAYOUT_RELATIVE" width="720"/>\r
+    </Popup>\r
+    <ListView id="IDC_ATTACH_LISTVIEW" parent="IDL_ATTACH_LIST_POPUP">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" bitmapPathOfEmptyList="" colorOfEmptyListText="" fastScroll="false" itemDivider="true" itemDividerColor="" sweepEnabled="false" textOfEmptyList=""/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="112" horizontalFitPolicy="FIT_POLICY_PARENT" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="576" x="0" y="0"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="112" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="646" x="0" y="0"/>\r
+    </ListView>\r
+    <Button id="IDC_BUTTON_CLOSE" parent="IDL_ATTACH_LIST_POPUP">\r
+        <property disableTextColor="" disabledBitmapPath="00_button_popup_dim.9.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.9.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_COM_POP_CLOSE" textSize="33" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="true" centerVertical="false" height="72" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="300" x="174" y="129"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="72" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="300" x="174" y="129"/>\r
+    </Button>\r
+</ScenePopup>\r
diff --git a/res/screen-size-normal/IDL_BLOCK_MESSAGE_INFO_POPUP.xml b/res/screen-size-normal/IDL_BLOCK_MESSAGE_INFO_POPUP.xml
new file mode 100644 (file)
index 0000000..98ce73d
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE ScenePopup SYSTEM "UIForm.dtd">
+<ScenePopup Bversion="3.0.0.201301251814" Dversion="20120315">
+    <Popup id="IDL_BLOCK_MESSAGE_INFO_POPUP">
+        <property color="" titleText="" titleTextColor=""/>
+        <layout height="280" mode="Portrait" style="" type="LAYOUT_RELATIVE" width="720"/>
+        <layout height="280" mode="Landscape" style="" type="LAYOUT_RELATIVE" width="720"/>
+    </Popup>
+    <TextBox id="IDC_BLOCK_INFO_TEXTBOX" parent="IDL_BLOCK_MESSAGE_INFO_POPUP">
+        <property disabledBackgroundBitmapPath="" disabledColor="" disabledColorOpacity="100" disabledTextColor="" highlightedBackgroundBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" lineSpacingExtra="1" lineSpacingMultiplier="1" normalBackgroundBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" text="::IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS" textAlignment="ALIGNMENT_LEFT" textSize="40" textboxBorder="TEXT_BOX_BORDER_NONE"/>
+        <layout bottomRelation="" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_TOP" centerHorizontal="false" centerVertical="false" height="164" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_BLOCK_MESSAGE_INFO_POPUP" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_BLOCK_MESSAGE_INFO_POPUP" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDL_BLOCK_MESSAGE_INFO_POPUP" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="680" x="0" y="0"/>
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="162" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="680" x="0" y="1"/>
+    </TextBox>
+    <Button id="IDC_BUTTON_YES" parent="IDL_BLOCK_MESSAGE_INFO_POPUP">
+        <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.9.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_COM_SK_YES" textSize="36" verticalAlign="ALIGN_MIDDLE"/>
+        <layout bottomRelation="IDL_BLOCK_MESSAGE_INFO_POPUP" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="74" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="5" marginLeft="0" marginRight="0" marginTop="5" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="314" x="0" y="201"/>
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="74" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="314" x="0" y="203"/>
+    </Button>
+    <Button id="IDC_BUTTON_NO" parent="IDL_BLOCK_MESSAGE_INFO_POPUP">
+        <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.9.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_COM_SK_NO" textSize="36" verticalAlign="ALIGN_MIDDLE"/>
+        <layout bottomRelation="IDL_BLOCK_MESSAGE_INFO_POPUP" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="74" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="5" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="314" x="366" y="201"/>
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="74" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="314" x="366" y="203"/>
+    </Button>
+</ScenePopup>
diff --git a/res/screen-size-normal/IDL_BLOCK_POPUP.xml b/res/screen-size-normal/IDL_BLOCK_POPUP.xml
new file mode 100644 (file)
index 0000000..38ede8c
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE ScenePopup SYSTEM "UIForm.dtd">\r
+<ScenePopup Bversion="3.0.0.201212201745" Dversion="20120315">\r
+    <Popup id="IDL_BLOCK_POPUP">\r
+        <property color="" titleText="" titleTextColor=""/>\r
+        <layout height="214" mode="Portrait" style="" type="NONE" width="720"/>\r
+        <layout height="214" mode="Landscape" style="" type="NONE" width="720"/>\r
+    </Popup>\r
+    <Button id="IDC_BUTTON_OK" parent="IDL_BLOCK_POPUP">\r
+        <property disableTextColor="" disabledBitmapPath="00_button_popup_dim.9.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.9.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_COM_SK_OK" textSize="33" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout height="72" mode="Portrait" width="288" x="0" y="114"/>\r
+        <layout height="72" mode="Landscape" width="288" x="0" y="114"/>\r
+    </Button>\r
+    <Button id="IDC_BUTTON_CANCEL" parent="IDL_BLOCK_POPUP">\r
+        <property disableTextColor="" disabledBitmapPath="00_button_popup_dim.9.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.9.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_COM_SK_CANCEL" textSize="33" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout height="72" mode="Portrait" width="288" x="360" y="114"/>\r
+        <layout height="72" mode="Landscape" width="288" x="360" y="114"/>\r
+    </Button>\r
+    <Label id="IDC_BLOCKNUMBER_LABEL" parent="IDL_BLOCK_POPUP">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="" textColor="" textSize="36" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout height="62" mode="Portrait" width="648" x="0" y="18"/>\r
+        <layout height="62" mode="Landscape" width="648" x="0" y="18"/>\r
+    </Label>\r
+</ScenePopup>\r
diff --git a/res/screen-size-normal/IDL_COMPOSER_FORM.xml b/res/screen-size-normal/IDL_COMPOSER_FORM.xml
new file mode 100644 (file)
index 0000000..f207656
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">\r
+<Scene Bversion="3.0.0.201212201745" Dversion="20120315">\r
+    <LogicalCoordinate>720</LogicalCoordinate>\r
+    <Form id="IDL_COMPOSER_FORM">\r
+        <property backgroundColor="" backgroundColorOpacity="100" orientation="Portrait" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>\r
+        <layout mode="Portrait" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER" type="LAYOUT_RELATIVE"/>\r
+        <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER" type="LAYOUT_RELATIVE"/>\r
+    </Form>\r
+    <Header>\r
+        <property backgroundBitmapPath="" color="" colorOpacity="100" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" headerStyle="HEADER_STYLE_TITLE" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" titleIconPath="" titleText="" titleTextColor=""/>\r
+        <itemSet/>\r
+    </Header>\r
+</Scene>\r
diff --git a/res/screen-size-normal/IDL_COMPOSER_OPTION_TRAY_PANEL.xml b/res/screen-size-normal/IDL_COMPOSER_OPTION_TRAY_PANEL.xml
new file mode 100644 (file)
index 0000000..8404b8d
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE ScenePanel SYSTEM "UIForm.dtd">\r
+<ScenePanel Bversion="3.0.0.201209071526" Dversion="20120315">\r
+    <Panel id="IDL_COMPOSER_OPTION_TRAY_PANEL">\r
+        <property backgroundColor="" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>\r
+        <layout height="104" mode="Portrait" type="LAYOUT_RELATIVE" width="720" x="0" y="0"/>\r
+        <layout height="300" mode="Landscape" type="LAYOUT_RELATIVE" width="93" x="0" y="0"/>\r
+    </Panel>\r
+    <Button id="IDC_BUTTON_PREVIEW" parent="IDL_COMPOSER_OPTION_TRAY_PANEL">\r
+        <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.9.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_COM_SK3_PREVIEW" textSize="33" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="72" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="218" x="61" y="14"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="498" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="72" x="21" y="0"/>\r
+    </Button>\r
+    <Button id="IDC_BUTTON_DURATION" parent="IDL_COMPOSER_OPTION_TRAY_PANEL">\r
+        <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.9.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS" textSize="25" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="72" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="218" x="381" y="13"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="498" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="72" x="21" y="0"/>\r
+    </Button>\r
+</ScenePanel>\r
diff --git a/res/screen-size-normal/IDL_CONVERSATION_LIST_EDIT_FORM.xml b/res/screen-size-normal/IDL_CONVERSATION_LIST_EDIT_FORM.xml
new file mode 100644 (file)
index 0000000..8419564
--- /dev/null
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+<Scene Bversion="3.0.0.201302021409" Dversion="20120315">
+    <LogicalCoordinate>720</LogicalCoordinate>
+    <Form id="IDL_CONVERSATION_LIST_EDIT_FORM">
+        <property backgroundColor="" backgroundColorOpacity="100" orientation="Portrait" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>
+        <layout mode="Portrait" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+        <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+    </Form>
+    <Footer>
+        <property backgroundBitmapPath="" color="" colorOpacity="100" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" footerStyle="FOOTER_STYLE_TAB" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" showBackButton="false"/>
+        <itemSet/>
+    </Footer>
+    <Header>
+        <property backgroundBitmapPath="" color="" colorOpacity="100" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" headerStyle="HEADER_STYLE_TITLE" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" titleIconPath="" titleText="" titleTextColor=""/>
+        <itemSet/>
+    </Header>
+    <CheckButton id="IDC_CHECKALL_BUTTON" parent="IDL_CONVERSATION_LIST_EDIT_FORM">
+        <property backgroundStyle="BACKGROUND_STYLE_DEFAULT" colorOfText="" colorOfTitleText="" disabledColor="" disabledColorOpacity="100" disabledTextColor="" disabledTitleTextColor="" groupId="0" groupStyle="GROUP_STYLE_NONE" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" highlightedTitleTextColor="" horizontalAlign="ALIGN_LEFT" normalColor="" normalColorOpacity="100" pressedColor="" pressedColorOpacity="100" pressedTextColor="" pressedTitleTextColor="" showTitleText="false" text="::IDS_COM_BODY_SELECT_ALL" titleText="" verticalAlign="ALIGN_MIDDLE"/>
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="108" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" style="" topRelation="IDL_CONVERSATION_LIST_EDIT_FORM" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="719" x="0" y="0"/>
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="108" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" style="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="533" x="472" y="204"/>
+    </CheckButton>
+    <Label id="IDC_CONV_EDIT_LABEL" parent="IDL_CONVERSATION_LIST_EDIT_FORM">
+        <property backgroundBitmapPath="" backgroundColor="#D1E3EE" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="Label1" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_BOTTOM"/>
+        <layout bottomRelation="IDL_CONVERSATION_LIST_EDIT_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="50" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="961"/>
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="52" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="533" x="695" y="432"/>
+    </Label>
+    <GroupedListView id="IDC_CONV_EDIT_GROUPEDLIST" parent="IDL_CONVERSATION_LIST_EDIT_FORM">
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" bitmapPathOfEmptyList="" colorOfEmptyListText="" fastScroll="false" itemDivider="false" itemDividerColor="" sectionColor="" sweepEnabled="false" textOfEmptyList=""/>
+        <layout bottomRelation="IDC_CONV_EDIT_LABEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_TOP" centerHorizontal="false" centerVertical="false" height="853" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" style="CUSTOM_LIST_STYLE_NORMAL" topRelation="IDC_CHECKALL_BUTTON" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="108"/>
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="124" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" style="CUSTOM_LIST_STYLE_NORMAL" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="499" x="780" y="132"/>
+    </GroupedListView>
+</Scene>
diff --git a/res/screen-size-normal/IDL_CONVERSATION_LIST_FORM.xml b/res/screen-size-normal/IDL_CONVERSATION_LIST_FORM.xml
new file mode 100644 (file)
index 0000000..6668eb5
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+<Scene Bversion="3.0.0.201301251814" Dversion="20120315">
+    <LogicalCoordinate>720</LogicalCoordinate>
+    <Form id="IDL_CONVERSATION_LIST_FORM">
+        <property backgroundColor="" backgroundColorOpacity="100" orientation="Portrait" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>
+        <layout mode="Portrait" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+        <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+    </Form>
+    <Footer>
+        <property backgroundBitmapPath="" color="" colorOpacity="0" disabledButtonColor="" disabledButtonColorOpacity="0" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" footerStyle="FOOTER_STYLE_BUTTON_ICON" highlightedButtonColor="" highlightedButtonColorOpacity="0" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="0" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="0" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" showBackButton="true"/>
+        <itemSet/>
+    </Footer>
+    <Header>
+        <property backgroundBitmapPath="" color="" colorOpacity="0" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="0" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="0" disabledItemTextColor="" headerStyle="HEADER_STYLE_TITLE" highlightedButtonColor="" highlightedButtonColorOpacity="0" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="0" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="0" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="0" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="0" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="0" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="0" selectedItemTextColor="" titleIconPath="" titleText="" titleTextColor=""/>
+        <itemSet/>
+    </Header>
+    <GroupedListView id="IDC_MESSAGES_GROUPEDLIST" parent="IDL_CONVERSATION_LIST_FORM">
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" bitmapPathOfEmptyList="" colorOfEmptyListText="" fastScroll="false" itemDivider="false" itemDividerColor="" sectionColor="" sweepEnabled="false" textOfEmptyList="   "/>
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="1007" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" style="GROUPED_LIST_VIEW_STYLE_INDEXED" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="0"/>
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="124" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" style="GROUPED_LIST_VIEW_STYLE_INDEXED" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="668" x="611" y="57"/>
+    </GroupedListView>
+</Scene>
diff --git a/res/screen-size-normal/IDL_DELETE_POPUP.xml b/res/screen-size-normal/IDL_DELETE_POPUP.xml
new file mode 100644 (file)
index 0000000..481b2a1
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE ScenePopup SYSTEM "UIForm.dtd">\r
+<ScenePopup Bversion="3.0.0.201212201745" Dversion="20120315">\r
+    <Popup id="IDL_DELETE_POPUP">\r
+        <property color="" titleText="" titleTextColor=""/>\r
+        <layout height="214" mode="Portrait" style="" type="NONE" width="720"/>\r
+        <layout height="214" mode="Landscape" style="" type="NONE" width="720"/>\r
+    </Popup>\r
+    <Label id="IDC_DELETE_LABEL" parent="IDL_DELETE_POPUP">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="::IDS_COM_POP_DELETE_Q" textColor="#000000" textSize="42" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout height="62" mode="Portrait" width="648" x="0" y="18"/>\r
+        <layout height="62" mode="Landscape" width="648" x="0" y="18"/>\r
+    </Label>\r
+    <Button id="IDC_BUTTON_LEFT" parent="IDL_DELETE_POPUP">\r
+        <property disableTextColor="" disabledBitmapPath="00_button_popup_dim.9.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.9.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_COM_SK_OK" textSize="33" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout height="72" mode="Portrait" width="288" x="0" y="100"/>\r
+        <layout height="72" mode="Landscape" width="288" x="0" y="100"/>\r
+    </Button>\r
+    <Button id="IDC_BUTTON_RIGHT" parent="IDL_DELETE_POPUP">\r
+        <property disableTextColor="" disabledBitmapPath="00_button_popup_dim.9.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.9.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_COM_SK_CANCEL" textSize="33" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout height="72" mode="Portrait" width="288" x="360" y="100"/>\r
+        <layout height="72" mode="Landscape" width="288" x="360" y="100"/>\r
+    </Button>\r
+</ScenePopup>\r
diff --git a/res/screen-size-normal/IDL_DELETE_PROGRESS_POPUP.xml b/res/screen-size-normal/IDL_DELETE_PROGRESS_POPUP.xml
new file mode 100644 (file)
index 0000000..3e4ed73
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE ScenePopup SYSTEM "UIForm.dtd">\r
+<ScenePopup Bversion="3.0.0.201212201745" Dversion="20120315">\r
+    <Popup id="IDL_DELETE_PROGRESS_POPUP">\r
+        <property color="" titleText="" titleTextColor=""/>\r
+        <layout height="165" mode="Portrait" style="" type="NONE" width="720"/>\r
+        <layout height="165" mode="Landscape" style="" type="NONE" width="720"/>\r
+    </Popup>\r
+    <Progress id="IDC_PROGRESSBAR" parent="IDL_DELETE_PROGRESS_POPUP">\r
+        <property backgroundColor="" barColor="" leftText="" max="100" min="0" rightText="" showValueState="true" value="50"/>\r
+        <layout height="58" mode="Portrait" style="PROGRESS_STYLE_NONE" width="636" x="8" y="63"/>\r
+        <layout height="58" mode="Landscape" style="PROGRESS_STYLE_NONE" width="636" x="8" y="63"/>\r
+    </Progress>\r
+    <Label id="IDC_PROGRESS_INFO" parent="IDL_DELETE_PROGRESS_POPUP">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="40" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>\r
+        <layout height="55" mode="Portrait" width="636" x="8" y="9"/>\r
+        <layout height="55" mode="Landscape" width="636" x="8" y="9"/>\r
+    </Label>\r
+</ScenePopup>\r
diff --git a/res/screen-size-normal/IDL_DURATION_POPUP.xml b/res/screen-size-normal/IDL_DURATION_POPUP.xml
new file mode 100644 (file)
index 0000000..813058f
--- /dev/null
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE ScenePopup SYSTEM "UIForm.dtd">\r
+<ScenePopup Bversion="3.0.0.201212201745" Dversion="20120315">\r
+    <Popup id="IDL_DURATION_POPUP">\r
+        <property color="" titleText="" titleTextColor=""/>\r
+        <layout height="317" mode="Portrait" style="" type="LAYOUT_RELATIVE" width="720"/>\r
+        <layout height="317" mode="Landscape" style="" type="LAYOUT_RELATIVE" width="720"/>\r
+    </Popup>\r
+    <Label id="IDC_DURATION_LABEL" parent="IDL_DURATION_POPUP">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="::IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS" textColor="" textSize="36" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="true" centerVertical="false" height="101" horizontalFitPolicy="FIT_POLICY_CONTENT" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="648" x="0" y="2"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="101" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="648" x="0" y="2"/>\r
+    </Label>\r
+    <Button id="IDC_BUTTON_OK" parent="IDL_DURATION_POPUP">\r
+        <property disableTextColor="" disabledBitmapPath="00_button_popup_dim.9.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.9.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_COM_SK_OK" textSize="33" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="74" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="314" x="0" y="208"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="74" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="314" x="0" y="208"/>\r
+    </Button>\r
+    <Button id="IDC_BUTTON_CANCEL" parent="IDL_DURATION_POPUP">\r
+        <property disableTextColor="" disabledBitmapPath="00_button_popup_dim.9.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.9.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_COM_SK_CANCEL" textSize="33" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="74" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="314" x="334" y="208"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="74" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="314" x="334" y="208"/>\r
+    </Button>\r
+    <EditField id="IDC_EDITFIELD_DURATION" parent="IDL_DURATION_POPUP">\r
+        <property commandButtonVisible="true" disabledBGBitmapPath="" disabledColor="" disabledColorOpacity="100" disabledTextColor="" ellipsisPosition="ELLIPSIS_POSITION_END" enableClear="false" groupStyle="GROUP_STYLE_SINGLE" guideText="" guideTextColor="" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalMargin="16" inputStyle="INPUT_STYLE_OVERLAY" keypadAction="KEYPAD_ACTION_ENTER" keypadEnabled="true" limitLength="2" linkTextColor="" lowerCaseMode="false" normalBGBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedColor="" pressedColorOpacity="100" text="5" textHorizontalAlignment="ALIGNMENT_LEFT" textSize="45" titleStyle="EDIT_FIELD_TITLE_STYLE_NONE" titleText="" titleTextColor="" verticalMargin="12" viewMode="false"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="90" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" style="EDIT_FIELD_STYLE_NUMBER" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="648" x="0" y="102"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="90" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" style="EDIT_FIELD_STYLE_NUMBER" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="648" x="0" y="102"/>\r
+    </EditField>\r
+</ScenePopup>\r
diff --git a/res/screen-size-normal/IDL_IMAGE_COMPRESS_POPUP.xml b/res/screen-size-normal/IDL_IMAGE_COMPRESS_POPUP.xml
new file mode 100644 (file)
index 0000000..9d245e8
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE ScenePopup SYSTEM "UIForm.dtd">\r
+<ScenePopup Bversion="3.0.0.201212201745" Dversion="20120315">\r
+    <Popup id="IDL_IMAGE_COMPRESS_POPUP">\r
+        <property color="" titleText="" titleTextColor=""/>\r
+        <layout height="180" mode="Portrait" style="" type="NONE" width="720"/>\r
+        <layout height="180" mode="Landscape" style="" type="NONE" width="720"/>\r
+    </Popup>\r
+    <Label id="IDC_LABEL1" parent="IDL_IMAGE_COMPRESS_POPUP">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="Picture too large. Compressing..." textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout height="54" mode="Portrait" width="648" x="0" y="20"/>\r
+        <layout height="54" mode="Landscape" width="648" x="0" y="20"/>\r
+    </Label>\r
+    <Button id="IDC_BUTTON_PROGRESS" parent="IDL_IMAGE_COMPRESS_POPUP">\r
+        <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout height="72" mode="Portrait" width="72" x="288" y="84"/>\r
+        <layout height="72" mode="Landscape" width="72" x="288" y="84"/>\r
+    </Button>\r
+</ScenePopup>\r
diff --git a/res/screen-size-normal/IDL_MMS_DETAIL_FORM.xml b/res/screen-size-normal/IDL_MMS_DETAIL_FORM.xml
new file mode 100644 (file)
index 0000000..ff6d276
--- /dev/null
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">\r
+<Scene Bversion="3.0.0.201301181014" Dversion="20120315">\r
+    <LogicalCoordinate>720</LogicalCoordinate>\r
+    <Form id="IDL_MMS_DETAIL_FORM">\r
+        <property backgroundColor="" backgroundColorOpacity="100" orientation="Portrait" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>\r
+        <layout mode="Portrait" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>\r
+        <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>\r
+    </Form>\r
+    <Footer>\r
+        <property backgroundBitmapPath="" color="" colorOpacity="0" disabledButtonColor="" disabledButtonColorOpacity="0" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" footerStyle="FOOTER_STYLE_BUTTON_ICON" highlightedButtonColor="" highlightedButtonColorOpacity="0" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="0" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="0" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" showBackButton="true"/>\r
+        <itemSet/>\r
+    </Footer>\r
+    <Header>\r
+        <property backgroundBitmapPath="" color="" colorOpacity="0" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="0" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="0" disabledItemTextColor="" headerStyle="HEADER_STYLE_TITLE" highlightedButtonColor="" highlightedButtonColorOpacity="0" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="0" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="0" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="0" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="0" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="0" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="0" selectedItemTextColor="" titleIconPath="" titleText="" titleTextColor=""/>\r
+        <itemSet/>\r
+    </Header>\r
+    <TextBox id="IDC_MMS_TEXT" parent="IDL_MMS_DETAIL_FORM">\r
+        <property disabledBackgroundBitmapPath="" disabledColor="" disabledColorOpacity="100" disabledTextColor="" highlightedBackgroundBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" lineSpacingExtra="1" lineSpacingMultiplier="1" normalBackgroundBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" text="" textAlignment="" textSize="45" textboxBorder="TEXT_BOX_BORDER_ROUNDED"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="220" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="688" x="16" y="0"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="200" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="456" x="6" y="0"/>\r
+    </TextBox>\r
+    <Panel id="IDC_PLAY_CONTROLS_PANEL" parent="IDL_MMS_DETAIL_FORM">\r
+        <property backgroundColor="#4D4D4D" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="218" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" type="NONE" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="788"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="46" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" type="NONE" verticalFitPolicy="FIT_POLICY_FIXED" width="533" x="90" y="418"/>\r
+    </Panel>\r
+    <Button id="IDC_VOLUME_BUTTON" parent="IDC_PLAY_CONTROLS_PANEL">\r
+        <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="M01_play_btn_volume_press.png" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="20" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout height="72" mode="Portrait" width="72" x="45" y="130"/>\r
+        <layout height="356" mode="Landscape" width="78" x="4" y="0"/>\r
+    </Button>\r
+    <Button id="IDC_NEXT_BUTTON" parent="IDC_PLAY_CONTROLS_PANEL">\r
+        <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="M01_play_btn_next_press.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="M01_play_btn_next_press.png" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="M01_play_btn_next_press.png" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout height="72" mode="Portrait" width="72" x="476" y="130"/>\r
+        <layout height="356" mode="Landscape" width="78" x="14" y="0"/>\r
+    </Button>\r
+    <Button id="IDC_PLAY_PAUSE_BUTTON" parent="IDC_PLAY_CONTROLS_PANEL">\r
+        <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout height="72" mode="Portrait" width="72" x="332" y="130"/>\r
+        <layout height="356" mode="Landscape" width="78" x="14" y="0"/>\r
+    </Button>\r
+    <Button id="IDC_PREVIOUS_BUTTON" parent="IDC_PLAY_CONTROLS_PANEL">\r
+        <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="M01_play_btn_previous_press.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="M01_play_btn_previous_press.png" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="M01_play_btn_previous_press.png" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout height="72" mode="Portrait" width="72" x="188" y="130"/>\r
+        <layout height="356" mode="Landscape" width="78" x="14" y="0"/>\r
+    </Button>\r
+    <Progress id="IDC_PROGRESS" parent="IDC_PLAY_CONTROLS_PANEL">\r
+        <property backgroundColor="" barColor="#FFFFFF" leftText="" max="20" min="0" rightText="" showValueState="true" value="20"/>\r
+        <layout height="27" mode="Portrait" style="PROGRESS_STYLE_NONE" width="482" x="119" y="48"/>\r
+        <layout height="356" mode="Landscape" style="PROGRESS_STYLE_NONE" width="144" x="39" y="0"/>\r
+    </Progress>\r
+    <Label id="IDC_TIME_ELAPSED_LABEL" parent="IDC_PLAY_CONTROLS_PANEL">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="00:00" textColor="#FFFFFF" textSize="18" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout height="28" mode="Portrait" width="77" x="20" y="48"/>\r
+        <layout height="356" mode="Landscape" width="78" x="4" y="0"/>\r
+    </Label>\r
+    <Label id="IDC_TOTAL_TIME_DURATION_LABEL" parent="IDC_PLAY_CONTROLS_PANEL">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="00:05" textColor="#FFFFFF" textSize="18" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout height="28" mode="Portrait" width="77" x="623" y="48"/>\r
+        <layout height="356" mode="Landscape" width="78" x="14" y="0"/>\r
+    </Label>\r
+    <Label id="IDC_PAGE_NUMBER_LABEL" parent="IDL_MMS_DETAIL_FORM">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_RIGHT" text="" textColor="" textSize="29" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="56" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="155" x="564" y="5"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="52" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="533" x="236" y="0"/>\r
+    </Label>\r
+    <Gallery id="IDC_GALLERY_MMS_IMAGE" parent="IDL_MMS_DETAIL_FORM">\r
+        <property backgroundColor="" bitmapPathOfEmptyGallery="" slideShowAnimation="GALLERY_ANIMATION_PAGE" slideShowAnimationDuration="3000" slideShowViewDuration="10" textOfEmptyGallery="" zoomingEnabled="true"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="438" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="688" x="16" y="82"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="124" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="730" x="440" y="93"/>\r
+    </Gallery>\r
+    <Label id="IDC_LABEL_SUBJECT" parent="IDL_MMS_DETAIL_FORM">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="29" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="56" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="564" x="0" y="5"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="52" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="533" x="96" y="0"/>\r
+    </Label>\r
+    <Label id="IDC_ATTACH_FILES_INFO_LABEL" parent="IDL_MMS_DETAIL_FORM">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="#1E90FF" textSize="29" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="64" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="688" x="16" y="82"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="52" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="533" x="248" y="0"/>\r
+    </Label>\r
+</Scene>\r
diff --git a/res/screen-size-normal/IDL_MSG_COMPOSE_PANEL.xml b/res/screen-size-normal/IDL_MSG_COMPOSE_PANEL.xml
new file mode 100644 (file)
index 0000000..a257b5c
--- /dev/null
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE ScenePanel SYSTEM "UIForm.dtd">\r
+<ScenePanel Bversion="3.0.0.201212201745" Dversion="20120315">\r
+    <Panel id="IDL_MSG_COMPOSE_PANEL">\r
+        <property backgroundColor="" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>\r
+        <layout height="114" mode="Portrait" type="NONE" width="720" x="0" y="235"/>\r
+        <layout height="114" mode="Landscape" type="NONE" width="720" x="0" y="235"/>\r
+    </Panel>\r
+    <Button id="IDC_ATTACH_BUTTON" parent="IDL_MSG_COMPOSE_PANEL">\r
+        <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_btn_circle_bg_normal.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_circle_button_press.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout height="72" mode="Portrait" width="72" x="12" y="21"/>\r
+        <layout height="72" mode="Landscape" width="72" x="12" y="21"/>\r
+    </Button>\r
+    <ScrollPanel id="IDC_SCROLLPANEL" parent="IDL_MSG_COMPOSE_PANEL">\r
+        <property autoResizingEnabled="true" backgroundColor="" backgroundColorOpacity="0" clientAreaHeight="0" clientAreaWidth="0" pageScrollEnabled="false" scrollBarVisible="false" scrollDirection="SCROLL_PANEL_SCROLL_DIRECTION_VERTICAL" scrollInputMode="SCROLL_INPUT_MODE_ALLOW_ANY_DIRECTION"/>\r
+        <panelLayout height="172" mode="Portrait" width="482"/>\r
+        <panelLayout height="554" mode="Landscape" width="107"/>\r
+        <layout height="74" mode="Portrait" type="NONE" width="482" x="96" y="20"/>\r
+        <layout height="74" mode="Landscape" type="NONE" width="482" x="96" y="20"/>\r
+    </ScrollPanel>\r
+    <Panel id="IDC_PANEL_SUBJECT" parent="IDC_SCROLLPANEL">\r
+        <property backgroundColor="" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>\r
+        <layout height="47" mode="Portrait" type="NONE" width="482" x="0" y="0"/>\r
+        <layout height="47" mode="Landscape" type="NONE" width="482" x="0" y="0"/>\r
+    </Panel>\r
+    <Panel id="IDC_PANEL_ATTACHEMENT" parent="IDC_SCROLLPANEL">\r
+        <property backgroundColor="" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>\r
+        <layout height="74" mode="Portrait" type="NONE" width="482" x="0" y="47"/>\r
+        <layout height="74" mode="Landscape" type="NONE" width="482" x="0" y="47"/>\r
+    </Panel>\r
+    <Panel id="IDC_PANEL_IMAGE_TEXT" parent="IDC_SCROLLPANEL">\r
+        <property backgroundColor="" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>\r
+        <layout height="51" mode="Portrait" type="NONE" width="482" x="0" y="121"/>\r
+        <layout height="51" mode="Landscape" type="NONE" width="482" x="0" y="121"/>\r
+    </Panel>\r
+    <Button id="IDC_SEND_BUTTON" parent="IDL_MSG_COMPOSE_PANEL">\r
+        <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout height="72" mode="Portrait" width="108" x="596" y="19"/>\r
+        <layout height="72" mode="Landscape" width="108" x="596" y="19"/>\r
+    </Button>\r
+    <Label id="IDC_CHARCOUNTER_LABEL" parent="IDL_MSG_COMPOSE_PANEL">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="" textColor="" textSize="26" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>\r
+        <layout height="26" mode="Portrait" width="108" x="596" y="0"/>\r
+        <layout height="26" mode="Landscape" width="108" x="596" y="0"/>\r
+    </Label>\r
+</ScenePanel>\r
diff --git a/res/screen-size-normal/IDL_MSG_CONTACT_NUMBER_POPUP.xml b/res/screen-size-normal/IDL_MSG_CONTACT_NUMBER_POPUP.xml
new file mode 100644 (file)
index 0000000..f5059bb
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE ScenePopup SYSTEM "UIForm.dtd">\r
+<ScenePopup Bversion="3.0.0.201301111848" Dversion="20120315">\r
+    <Popup id="IDL_MSG_CONTACT_NUMBER_POPUP">\r
+        <property color="" titleText="::IDS_MSG_HEADER_SELECT_RECIPIENT" titleTextColor=""/>\r
+        <layout height="295" mode="Portrait" style="" type="NONE" width="720"/>\r
+        <layout height="292" mode="Landscape" style="" type="NONE" width="720"/>\r
+    </Popup>\r
+    <Button id="IDC_MSG_CANCEL_BUTTON" parent="IDL_MSG_CONTACT_NUMBER_POPUP">\r
+        <property disableTextColor="" disabledBitmapPath="00_button_popup_dim.9.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.9.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="36" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout height="74" mode="Portrait" width="288" x="155" y="127"/>\r
+        <layout height="74" mode="Landscape" width="288" x="155" y="127"/>\r
+    </Button>\r
+    <ListView id="IDC_MSG_CONTACT_NUMBER_LISTVIEW" parent="IDL_MSG_CONTACT_NUMBER_POPUP">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" bitmapPathOfEmptyList="" colorOfEmptyListText="" fastScroll="false" itemDivider="true" itemDividerColor="" sweepEnabled="false" textOfEmptyList=""/>\r
+        <layout height="112" mode="Portrait" width="648" x="0" y="0"/>\r
+        <layout height="112" mode="Landscape" width="648" x="0" y="0"/>\r
+    </ListView>\r
+</ScenePopup>\r
diff --git a/res/screen-size-normal/IDL_MSG_CONTACT_POPUP.xml b/res/screen-size-normal/IDL_MSG_CONTACT_POPUP.xml
new file mode 100644 (file)
index 0000000..0a35caf
--- /dev/null
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE ScenePopup SYSTEM "UIForm.dtd">\r
+<ScenePopup Bversion="3.0.0.201212201745" Dversion="20120315">\r
+    <Popup id="IDL_MSG_CONTACT_POPUP">\r
+        <property color="" titleText="" titleTextColor=""/>\r
+        <layout height="532" mode="Portrait" style="" type="NONE" width="720"/>\r
+        <layout height="523" mode="Landscape" style="" type="NONE" width="720"/>\r
+    </Popup>\r
+    <Label id="IDC_MSG_BG_LABEL" parent="IDL_MSG_CONTACT_POPUP">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="36" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>\r
+        <layout height="336" mode="Portrait" width="648" x="0" y="66"/>\r
+        <layout height="336" mode="Landscape" width="648" x="0" y="66"/>\r
+    </Label>\r
+    <ListView id="IDC_MSG_CONTACT_LISTVIEW" parent="IDL_MSG_CONTACT_POPUP">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" bitmapPathOfEmptyList="" colorOfEmptyListText="" fastScroll="false" itemDivider="true" itemDividerColor="" sweepEnabled="false" textOfEmptyList=""/>\r
+        <layout height="336" mode="Portrait" width="648" x="0" y="66"/>\r
+        <layout height="336" mode="Landscape" width="648" x="0" y="66"/>\r
+    </ListView>\r
+    <Label id="IDC_BUTTON_LABEL" parent="IDL_MSG_CONTACT_POPUP">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="36" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>\r
+        <layout height="93" mode="Portrait" width="648" x="0" y="403"/>\r
+        <layout height="93" mode="Landscape" width="648" x="0" y="403"/>\r
+    </Label>\r
+    <Button id="IDC_MSG_CANCEL_BUTTON" parent="IDL_MSG_CONTACT_POPUP">\r
+        <property disableTextColor="" disabledBitmapPath="00_button_popup_dim.9.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.9.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="36" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout height="72" mode="Portrait" width="288" x="170" y="413"/>\r
+        <layout height="74" mode="Landscape" width="288" x="170" y="413"/>\r
+    </Button>\r
+</ScenePopup>\r
diff --git a/res/screen-size-normal/IDL_MSG_OPTION_DETAILS_POPUP.xml b/res/screen-size-normal/IDL_MSG_OPTION_DETAILS_POPUP.xml
new file mode 100644 (file)
index 0000000..171dab8
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE ScenePopup SYSTEM "UIForm.dtd">\r
+<ScenePopup Bversion="3.0.0.201212201745" Dversion="20120315">\r
+    <Popup id="IDL_MSG_OPTION_DETAILS_POPUP">\r
+        <property color="" titleText="::IDS_MSGF_HEADER_MESSAGE_DETAILS" titleTextColor=""/>\r
+        <layout height="502" mode="Portrait" style="" type="LAYOUT_RELATIVE" width="720"/>\r
+        <layout height="502" mode="Landscape" style="" type="LAYOUT_RELATIVE" width="720"/>\r
+    </Popup>\r
+    <Label id="IDC_POPUP_LABEL" parent="IDL_MSG_OPTION_DETAILS_POPUP">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="36" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="true" centerVertical="false" height="96" horizontalFitPolicy="FIT_POLICY_PARENT" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="648" x="0" y="309"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="96" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="648" x="0" y="309"/>\r
+    </Label>\r
+    <Button id="IDC_MSG_CLOSE_BUTTON" parent="IDL_MSG_OPTION_DETAILS_POPUP">\r
+        <property disableTextColor="" disabledBitmapPath="00_button_popup_dim.9.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.9.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_COM_POP_CLOSE" textSize="33" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="true" centerVertical="false" height="72" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="300" x="174" y="321"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="74" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="288" x="174" y="321"/>\r
+    </Button>\r
+    <TextBox id="IDC_TEXTBOX_MSG_DETAILS" parent="IDL_MSG_OPTION_DETAILS_POPUP">\r
+        <property disabledBackgroundBitmapPath="" disabledColor="" disabledColorOpacity="100" disabledTextColor="" highlightedBackgroundBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" lineSpacingExtra="1" lineSpacingMultiplier="1" normalBackgroundBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" text="" textAlignment="" textSize="45" textboxBorder="TEXT_BOX_BORDER_ROUNDED"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="297" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="648" x="0" y="0"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="297" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="648" x="0" y="0"/>\r
+    </TextBox>\r
+</ScenePopup>\r
diff --git a/res/screen-size-normal/IDL_MSG_OPTION_POPUP.xml b/res/screen-size-normal/IDL_MSG_OPTION_POPUP.xml
new file mode 100644 (file)
index 0000000..e07b38c
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE ScenePopup SYSTEM "UIForm.dtd">\r
+<ScenePopup Bversion="3.0.0.201212201745" Dversion="20120315">\r
+    <Popup id="IDL_MSG_OPTION_POPUP">\r
+        <property color="" titleText="Messages" titleTextColor=""/>\r
+        <layout height="301" mode="Portrait" style="" type="LAYOUT_RELATIVE" width="720"/>\r
+        <layout height="350" mode="Landscape" style="" type="LAYOUT_RELATIVE" width="720"/>\r
+    </Popup>\r
+    <ListView id="IDC_MSG_OPTION_LISTVIEW" parent="IDL_MSG_OPTION_POPUP">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" bitmapPathOfEmptyList="" colorOfEmptyListText="" fastScroll="false" itemDivider="true" itemDividerColor="" sweepEnabled="false" textOfEmptyList=""/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="true" centerVertical="false" height="112" horizontalFitPolicy="FIT_POLICY_PARENT" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="648" x="0" y="0"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="112" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="480" x="103" y="4"/>\r
+    </ListView>\r
+    <Button id="IDC_BUTTON_CLOSE" parent="IDL_MSG_OPTION_POPUP">\r
+        <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.9.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_COM_POP_CLOSE" textSize="33" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="true" centerVertical="false" height="72" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="300" x="174" y="129"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="72" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="256" x="215" y="168"/>\r
+    </Button>\r
+</ScenePopup>\r
diff --git a/res/screen-size-normal/IDL_MSG_RESEND_DELETE_POPUP.xml b/res/screen-size-normal/IDL_MSG_RESEND_DELETE_POPUP.xml
new file mode 100644 (file)
index 0000000..dcb0d45
--- /dev/null
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE ScenePopup SYSTEM "UIForm.dtd">\r
+<ScenePopup Bversion="3.0.0.201212201745" Dversion="20120315">\r
+    <Popup id="IDL_MSG_RESEND_DELETE_POPUP">\r
+        <property color="" titleText="::IDS_MSGF_POP_SENDING_FAILED_MESSAGE" titleTextColor=""/>\r
+        <layout height="411" mode="Portrait" style="" type="LAYOUT_RELATIVE" width="720"/>\r
+        <layout height="411" mode="Landscape" style="" type="LAYOUT_RELATIVE" width="720"/>\r
+    </Popup>\r
+    <Label id="IDC_MSG_BG_LABEL" parent="IDL_MSG_RESEND_DELETE_POPUP">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="36" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="221" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="648" x="0" y="0"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="221" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="648" x="0" y="0"/>\r
+    </Label>\r
+    <ListView id="IDC_MSG_RESEND_DELETE_LISTVIEW" parent="IDL_MSG_RESEND_DELETE_POPUP">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" bitmapPathOfEmptyList="" colorOfEmptyListText="" fastScroll="false" itemDivider="true" itemDividerColor="" sweepEnabled="false" textOfEmptyList=""/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="224" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="648" x="0" y="0"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="221" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="648" x="0" y="0"/>\r
+    </ListView>\r
+    <Label id="IDC_BUTTON_PANEL_BG_LABEL" parent="IDL_MSG_RESEND_DELETE_POPUP">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="36" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="90" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="648" x="0" y="224"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="90" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="648" x="0" y="224"/>\r
+    </Label>\r
+    <Button id="IDC_MSG_CANCEL_BUTTON" parent="IDL_MSG_RESEND_DELETE_POPUP">\r
+        <property disableTextColor="" disabledBitmapPath="00_button_popup_dim.9.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.9.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="36" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="true" centerVertical="false" height="72" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="288" x="180" y="242"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="72" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="288" x="174" y="242"/>\r
+    </Button>\r
+</ScenePopup>\r
diff --git a/res/screen-size-normal/IDL_OPTION_TRAY_PANEL.xml b/res/screen-size-normal/IDL_OPTION_TRAY_PANEL.xml
new file mode 100644 (file)
index 0000000..e99a4d1
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE ScenePanel SYSTEM "UIForm.dtd">\r
+<ScenePanel Bversion="3.0.0.201209071526" Dversion="20120315">\r
+    <Panel id="IDL_OPTION_TRAY_PANEL">\r
+        <property backgroundColor="" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>\r
+        <layout height="104" mode="Portrait" type="LAYOUT_RELATIVE" width="720" x="0" y="0"/>\r
+        <layout height="104" mode="Landscape" type="LAYOUT_RELATIVE" width="720" x="0" y="0"/>\r
+    </Panel>\r
+    <Button id="IDC_BUTTON_DELETE" parent="IDL_OPTION_TRAY_PANEL">\r
+        <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.9.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_COM_SK_DELETE" textSize="33" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="72" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="218" x="16" y="16"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="498" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="72" x="6" y="0"/>\r
+    </Button>\r
+    <Button id="IDC_BUTTON_PREVIEW" parent="IDL_OPTION_TRAY_PANEL">\r
+        <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.9.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_COM_SK3_PREVIEW" textSize="33" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="72" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="218" x="251" y="15"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="498" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="72" x="21" y="0"/>\r
+    </Button>\r
+    <Button id="IDC_BUTTON_DURATION" parent="IDL_OPTION_TRAY_PANEL">\r
+        <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.9.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS" textSize="25" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="72" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="218" x="486" y="15"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="498" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="72" x="21" y="0"/>\r
+    </Button>\r
+</ScenePanel>\r
diff --git a/res/screen-size-normal/IDL_PANEL_ATTACH_FILES_LIST.xml b/res/screen-size-normal/IDL_PANEL_ATTACH_FILES_LIST.xml
new file mode 100644 (file)
index 0000000..8ee60d3
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE ScenePanel SYSTEM "UIForm.dtd">\r
+<ScenePanel Bversion="3.0.0.201209071526" Dversion="20120315">\r
+    <Panel id="IDL_PANEL_ATTACH_FILES_LIST">\r
+        <property backgroundColor="" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>\r
+        <layout height="128" mode="Portrait" type="NONE" width="688" x="0" y="0"/>\r
+        <layout height="300" mode="Landscape" type="NONE" width="93" x="0" y="0"/>\r
+    </Panel>\r
+    <ListView id="IDC_ATTACH_FILES_LISTVIEW" parent="IDL_PANEL_ATTACH_FILES_LIST">\r
+        <property backgroundColor="" backgroundColorOpacity="0" bitmapPathOfEmptyList="" colorOfEmptyListText="" fastScroll="false" itemDivider="true" itemDividerColor="" sweepEnabled="false" textOfEmptyList=""/>\r
+        <layout height="128" mode="Portrait" width="688" x="0" y="0"/>\r
+        <layout height="623" mode="Landscape" width="76" x="17" y="-323"/>\r
+    </ListView>\r
+</ScenePanel>\r
diff --git a/res/screen-size-normal/IDL_RECIPIENT_LIST_POPUP.xml b/res/screen-size-normal/IDL_RECIPIENT_LIST_POPUP.xml
new file mode 100644 (file)
index 0000000..a3f7b5f
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE ScenePopup SYSTEM "UIForm.dtd">\r
+<ScenePopup Bversion="3.0.0.201301111848" Dversion="20120315">\r
+    <Popup id="IDL_RECIPIENT_LIST_POPUP">\r
+        <property color="" titleText="::IDS_COM_POP_ATTACH" titleTextColor=""/>\r
+        <layout height="500" mode="Portrait" style="" type="LAYOUT_RELATIVE" width="720"/>\r
+        <layout height="500" mode="Landscape" style="" type="LAYOUT_RELATIVE" width="720"/>\r
+    </Popup>\r
+    <ListView id="IDC_OPTION_LISTVIEW" parent="IDL_RECIPIENT_LIST_POPUP">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" bitmapPathOfEmptyList="" colorOfEmptyListText="" fastScroll="false" itemDivider="true" itemDividerColor="" sweepEnabled="false" textOfEmptyList=""/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="336" horizontalFitPolicy="FIT_POLICY_PARENT" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="680" x="0" y="0"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="328" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="680" x="0" y="0"/>\r
+    </ListView>\r
+    <Button id="IDC_BUTTON_CLOSE" parent="IDL_RECIPIENT_LIST_POPUP">\r
+        <property disableTextColor="" disabledBitmapPath="00_button_popup_dim.9.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.9.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_COM_POP_CLOSE" textSize="33" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="true" centerVertical="false" height="72" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="300" x="190" y="345"/>\r
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="72" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="300" x="190" y="345"/>\r
+    </Button>\r
+</ScenePopup>\r
diff --git a/res/screen-size-normal/IDL_RECIPIENT_PANEL.xml b/res/screen-size-normal/IDL_RECIPIENT_PANEL.xml
new file mode 100644 (file)
index 0000000..f9813e8
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE ScenePanel SYSTEM "UIForm.dtd">
+<ScenePanel Bversion="3.0.0.201302021409" Dversion="20120315">
+    <Panel id="IDL_RECIPIENT_PANEL">
+        <property backgroundColor="" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>
+        <layout height="146" mode="Portrait" type="NONE" width="720" x="0" y="0"/>
+        <layout height="146" mode="Landscape" type="NONE" width="720" x="0" y="0"/>
+    </Panel>
+    <Button id="IDC_CONTACT_BUTTON" parent="IDL_RECIPIENT_PANEL">
+        <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="M01_contact_default_image.png" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="M01_contact_default_image_press.png" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+        <layout height="72" mode="Portrait" width="72" x="640" y="37"/>
+        <layout height="72" mode="Landscape" width="72" x="640" y="37"/>
+    </Button>
+    <ExpandableEditArea id="IDC_RECIPIENT_EXPANDABLEEDITAREA" parent="IDL_RECIPIENT_PANEL">
+        <property autoResizing="false" autoShrinkModeEnabled="false" disabledBGBitmapPath="" disabledColor="" disabledColorOpacity="100" disabledTextColor="" disabledTitleTextColor="" guideText="" guideTextColor="" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" highlightedTitleTextColor="" horizontalMargin="10" keypadAction="KEYPAD_ACTION_ENTER" keypadStyle="KEYPAD_STYLE_NORMAL" limitLength="2048" linkTextColor="" lowerCaseMode="false" maxLines="2" normalBGBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" normalTitleTextColor="" normalTokenColor="" pressedBGBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTitleTextColor="" selectedTokenColor="" selectedTokenTextColor="" style="EXPANDABLE_EDIT_AREA_STYLE_TOKEN" text="" textPredictionEnabled="true" textSize="45" titleStyle="EXPANDABLE_EDIT_AREA_TITLE_STYLE_INNER" titleText="" tokenTextColor="" verticalMargin="10"/>
+        <layout height="92" mode="Portrait" width="580" x="16" y="28"/>
+        <layout height="92" mode="Landscape" width="608" x="16" y="28"/>
+    </ExpandableEditArea>
+    <Label id="IDC_RECIPINT_COUNT_LABEL" parent="IDL_RECIPIENT_PANEL">
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="" textColor="" textSize="29" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+        <layout height="39" mode="Portrait" width="44" x="597" y="53"/>
+        <layout height="39" mode="Landscape" width="101" x="521" y="28"/>
+    </Label>
+</ScenePanel>
diff --git a/res/screen-size-normal/IDL_SETTINGS_FORM.xml b/res/screen-size-normal/IDL_SETTINGS_FORM.xml
new file mode 100644 (file)
index 0000000..7c5b77b
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+<Scene Bversion="3.0.0.201302021409" Dversion="20120315">
+    <LogicalCoordinate>720</LogicalCoordinate>
+    <Form id="IDL_SETTINGS_FORM">
+        <property backgroundColor="" backgroundColorOpacity="100" orientation="Portrait" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>
+        <layout mode="Portrait" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+        <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+    </Form>
+    <Footer>
+        <property backgroundBitmapPath="" color="" colorOpacity="100" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" footerStyle="FOOTER_STYLE_SEGMENTED_ICON" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" showBackButton="true"/>
+        <itemSet/>
+    </Footer>
+    <Header>
+        <property backgroundBitmapPath="" color="" colorOpacity="100" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" headerStyle="HEADER_STYLE_TITLE" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" titleIconPath="" titleText="::IDS_COM_BODY_MESSAGES" titleTextColor=""/>
+        <itemSet/>
+    </Header>
+    <GroupedTableView id="IDC_GROUPEDTABLEVIEW_SETTINGS" parent="IDL_SETTINGS_FORM">
+        <property backgroundColor="" backgroundColorOpacity="0" collapseByPinchEnabled="true" fastScrollIndex="" groupedLookEnabled="true" itemDivider="true" itemDividerColor="" scrollBarStyle="TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT" scrollInputMode="SCROLL_INPUT_MODE_RESTRICT_TO_INITIAL_DIRECTION" useSearchIcon="false"/>
+        <layout bottomRelation="IDL_SETTINGS_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="1011" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDL_SETTINGS_FORM" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="683" x="16" y="0"/>
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="124" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="730" x="442" y="110"/>
+    </GroupedTableView>
+    <ListView id="IDC_LISTVIEW_EMPTY_BG" parent="IDL_SETTINGS_FORM">
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" bitmapPathOfEmptyList="00_Nocontents_text.png" colorOfEmptyListText="" fastScroll="false" itemDivider="true" itemDividerColor="" sweepEnabled="false" textOfEmptyList="No contents"/>
+        <layout bottomRelation="IDL_SETTINGS_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="true" centerVertical="true" height="1011" horizontalFitPolicy="FIT_POLICY_PARENT" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_PARENT" width="720" x="0" y="0"/>
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="124" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="730" x="446" y="360"/>
+    </ListView>
+</Scene>
diff --git a/res/screen-size-normal/IDL_SETTING_DELETE_FILTER_FORM.xml b/res/screen-size-normal/IDL_SETTING_DELETE_FILTER_FORM.xml
new file mode 100644 (file)
index 0000000..d73340d
--- /dev/null
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+<Scene Bversion="3.0.0.201302021409" Dversion="20120315">
+    <LogicalCoordinate>720</LogicalCoordinate>
+    <Form id="IDL_SETTING_DELETE_FILTER_FORM">
+        <property backgroundColor="" backgroundColorOpacity="100" orientation="Portrait" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>
+        <layout mode="Portrait" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+        <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+    </Form>
+    <Footer>
+        <property backgroundBitmapPath="" color="" colorOpacity="100" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" footerStyle="FOOTER_STYLE_TAB" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" showBackButton="false"/>
+        <itemSet/>
+    </Footer>
+    <Header>
+        <property backgroundBitmapPath="" color="" colorOpacity="100" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" headerStyle="HEADER_STYLE_TITLE" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" titleIconPath="" titleText="" titleTextColor=""/>
+        <itemSet/>
+    </Header>
+    <CheckButton id="IDC_CHECKBUTTON_SELECTALL" parent="IDL_SETTING_DELETE_FILTER_FORM">
+        <property backgroundStyle="BACKGROUND_STYLE_DEFAULT" colorOfText="" colorOfTitleText="" disabledColor="" disabledColorOpacity="100" disabledTextColor="" disabledTitleTextColor="" groupId="0" groupStyle="GROUP_STYLE_NONE" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" highlightedTitleTextColor="" horizontalAlign="ALIGN_LEFT" normalColor="" normalColorOpacity="100" pressedColor="" pressedColorOpacity="100" pressedTextColor="" pressedTitleTextColor="" showTitleText="false" text="::IDS_COM_BODY_SELECT_ALL" titleText="" verticalAlign="ALIGN_MIDDLE"/>
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="108" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" style="" topRelation="IDL_SETTING_DELETE_FILTER_FORM" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="710" x="0" y="0"/>
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="108" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" style="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="533" x="496" y="0"/>
+    </CheckButton>
+    <Label id="IDC_LABEL_SELECTINFO" parent="IDL_SETTING_DELETE_FILTER_FORM">
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+        <layout bottomRelation="IDL_SETTING_DELETE_FILTER_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="44" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="967"/>
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="34" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="533" x="426" y="430"/>
+    </Label>
+    <GroupedTableView id="IDC_GROUPEDTABLEVIEW_FILTERLIST" parent="IDL_SETTING_DELETE_FILTER_FORM">
+        <property backgroundColor="" backgroundColorOpacity="0" collapseByPinchEnabled="false" fastScrollIndex="" groupedLookEnabled="false" itemDivider="true" itemDividerColor="" scrollBarStyle="TABLE_VIEW_SCROLL_BAR_STYLE_NONE" scrollInputMode="SCROLL_INPUT_MODE_ALLOW_ANY_DIRECTION" useSearchIcon="false"/>
+        <layout bottomRelation="IDC_LABEL_SELECTINFO" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_TOP" centerHorizontal="false" centerVertical="false" height="859" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_CHECKBUTTON_SELECTALL" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="710" x="0" y="108"/>
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="124" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="730" x="467" y="123"/>
+    </GroupedTableView>
+</Scene>
diff --git a/res/screen-size-normal/IDL_SETTING_EDIT_ADD_REJECT_NUMBER_FORM.xml b/res/screen-size-normal/IDL_SETTING_EDIT_ADD_REJECT_NUMBER_FORM.xml
new file mode 100644 (file)
index 0000000..719999e
--- /dev/null
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">\r
+<Scene Bversion="3.0.0.201212201745" Dversion="20120315">\r
+    <LogicalCoordinate>720</LogicalCoordinate>\r
+    <Form id="IDL_SETTING_EDIT_ADD_REJECT_NUMBER_FORM">\r
+        <property backgroundColor="" backgroundColorOpacity="100" orientation="Portrait" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>\r
+        <layout mode="Portrait" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="NONE"/>\r
+        <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="NONE"/>\r
+    </Form>\r
+    <Footer>\r
+        <property backgroundBitmapPath="" color="" colorOpacity="100" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" footerStyle="FOOTER_STYLE_TAB" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" showBackButton="false"/>\r
+        <itemSet/>\r
+    </Footer>\r
+    <Header>\r
+        <property backgroundBitmapPath="" color="" colorOpacity="100" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" headerStyle="HEADER_STYLE_TITLE" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" titleIconPath="" titleText="" titleTextColor=""/>\r
+        <itemSet/>\r
+    </Header>\r
+    <Label id="IDC_LABEL_NUMBER" parent="IDL_SETTING_EDIT_ADD_REJECT_NUMBER_FORM">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="::IDS_MSGF_BODY_ENTER_NUMBER" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_BOTTOM"/>\r
+        <layout height="56" mode="Portrait" width="703" x="12" y="11"/>\r
+        <layout height="52" mode="Landscape" width="533" x="234" y="0"/>\r
+    </Label>\r
+    <Button id="IDC_BUTTON_CONTACT" parent="IDL_SETTING_EDIT_ADD_REJECT_NUMBER_FORM">\r
+        <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="M01_contact_default_image.png" normalBitmapPath="M01_contact_default_image.png" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="M01_contact_default_image_press.png" pressedBitmapPath="M01_contact_default_image_press.png" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout height="72" mode="Portrait" width="72" x="615" y="77"/>\r
+        <layout height="72" mode="Landscape" width="154" x="1125" y="0"/>\r
+    </Button>\r
+    <EditField id="IDC_EDITFIELD_NUMBER" parent="IDL_SETTING_EDIT_ADD_REJECT_NUMBER_FORM">\r
+        <property commandButtonVisible="true" disabledBGBitmapPath="" disabledColor="" disabledColorOpacity="100" disabledTextColor="" ellipsisPosition="ELLIPSIS_POSITION_END" enableClear="true" groupStyle="GROUP_STYLE_NONE" guideText="" guideTextColor="" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalMargin="16" inputStyle="INPUT_STYLE_OVERLAY" keypadAction="KEYPAD_ACTION_ENTER" keypadEnabled="true" limitLength="100" linkTextColor="" lowerCaseMode="false" normalBGBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedColor="" pressedColorOpacity="100" text="" textHorizontalAlignment="ALIGNMENT_LEFT" textSize="45" titleStyle="EDIT_FIELD_TITLE_STYLE_NONE" titleText="" titleTextColor="" verticalMargin="12" viewMode="false"/>\r
+        <layout height="90" mode="Portrait" style="EDIT_FIELD_STYLE_PHONE_NUMBER" width="585" x="12" y="68"/>\r
+        <layout height="90" mode="Landscape" style="EDIT_FIELD_STYLE_PHONE_NUMBER" width="426" x="254" y="0"/>\r
+    </EditField>\r
+    <GroupedTableView id="IDC_GROUPEDTABLEVIEW_MATCH_CRITERIA" parent="IDL_SETTING_EDIT_ADD_REJECT_NUMBER_FORM">\r
+        <property backgroundColor="" backgroundColorOpacity="0" collapseByPinchEnabled="false" fastScrollIndex="" groupedLookEnabled="false" itemDivider="true" itemDividerColor="" scrollBarStyle="TABLE_VIEW_SCROLL_BAR_STYLE_NONE" scrollInputMode="SCROLL_INPUT_MODE_ALLOW_ANY_DIRECTION" useSearchIcon="false"/>\r
+        <layout height="848" mode="Portrait" width="671" x="16" y="168"/>\r
+        <layout height="124" mode="Landscape" width="730" x="360" y="223"/>\r
+    </GroupedTableView>\r
+</Scene>\r
diff --git a/res/screen-size-normal/IDL_SETTING_EDIT_ADD_WORDS_FORM.xml b/res/screen-size-normal/IDL_SETTING_EDIT_ADD_WORDS_FORM.xml
new file mode 100644 (file)
index 0000000..4d01cac
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">\r
+<Scene Bversion="3.0.0.201208240913" Dversion="20120315">\r
+    <LogicalCoordinate>720</LogicalCoordinate>\r
+    <Form id="IDL_SETTING_EDIT_ADD_WORDS_FORM">\r
+        <property backgroundColor="" backgroundColorOpacity="100" orientation="Portrait" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>\r
+        <layout mode="Portrait" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER" type="NONE"/>\r
+        <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER" type="NONE"/>\r
+    </Form>\r
+    <Header>\r
+        <property backgroundBitmapPath="" color="" colorOpacity="100" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" headerStyle="HEADER_STYLE_TITLE" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" titleIconPath="" titleText="" titleTextColor=""/>\r
+        <itemSet/>\r
+    </Header>\r
+    <Label id="IDC_LABEL_WORD" parent="IDL_SETTING_EDIT_ADD_WORDS_FORM">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="::IDS_WORD" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_BOTTOM"/>\r
+        <layout height="53" mode="Portrait" width="686" x="22" y="7"/>\r
+        <layout height="52" mode="Landscape" width="533" x="96" y="0"/>\r
+    </Label>\r
+    <EditField id="IDC_EDITFIELD_WORD" parent="IDL_SETTING_EDIT_ADD_WORDS_FORM">\r
+        <property disabledBGBitmapPath="" disabledColor="" disabledColorOpacity="100" disabledTextColor="" ellipsisPosition="ELLIPSIS_POSITION_START" enableClear="true" groupStyle="GROUP_STYLE_NONE" guideText="" guideTextColor="" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalMargin="16" inputStyle="INPUT_STYLE_OVERLAY" keypadAction="KEYPAD_ACTION_ENTER" keypadEnabled="true" limitLength="100" linkTextColor="" lowerCaseMode="false" normalBGBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedColor="" pressedColorOpacity="100" text="" textHorizontalAlignment="ALIGNMENT_LEFT" textSize="45" titleStyle="EDIT_FIELD_TITLE_STYLE_NONE" titleText="" titleTextColor="" verticalMargin="12" viewMode="false"/>\r
+        <layout height="90" mode="Portrait" style="EDIT_FIELD_STYLE_NORMAL" width="686" x="22" y="60"/>\r
+        <layout height="90" mode="Landscape" style="EDIT_FIELD_STYLE_NORMAL" width="426" x="247" y="0"/>\r
+    </EditField>\r
+</Scene>\r
diff --git a/res/screen-size-normal/IDL_SETTING_EDIT_SERVICE_CENTER_FORM.xml b/res/screen-size-normal/IDL_SETTING_EDIT_SERVICE_CENTER_FORM.xml
new file mode 100644 (file)
index 0000000..5c60d11
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">\r
+<Scene Bversion="3.0.0.201301081740" Dversion="20120315">\r
+    <LogicalCoordinate>720</LogicalCoordinate>\r
+    <Form id="IDL_SETTING_EDIT_SERVICE_CENTER_FORM">\r
+        <property backgroundColor="" backgroundColorOpacity="100" orientation="Portrait" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>\r
+        <layout mode="Portrait" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER" type="NONE"/>\r
+        <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER" type="NONE"/>\r
+    </Form>\r
+    <Header>\r
+        <property backgroundBitmapPath="" color="" colorOpacity="100" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" headerStyle="HEADER_STYLE_TITLE" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" titleIconPath="" titleText="::IDS_MSGF_BODY_CENTRE_PD" titleTextColor=""/>\r
+        <itemSet>\r
+            <buttonItem actionId="0" disabledBGBitmapPath="" disabledIconPath="" highlightedBGBitmapPath="" highlightedIconPath="" normalBGBitmapPath="" normalIconPath="" position="BUTTON_POSITION_RIGHT" pressedBGBitmapPath="" pressedIconPath="" style="BUTTON_ITEM_STYLE_TEXT" text="::IDS_COM_SK_CANCEL" type="right"/>\r
+            <buttonItem actionId="0" disabledBGBitmapPath="" disabledIconPath="" highlightedBGBitmapPath="" highlightedIconPath="" normalBGBitmapPath="" normalIconPath="" position="BUTTON_POSITION_LEFT" pressedBGBitmapPath="" pressedIconPath="" style="BUTTON_ITEM_STYLE_TEXT" text="::IDS_COM_SK_DONE" type="left"/>\r
+        </itemSet>\r
+    </Header>\r
+    <EditField id="IDC_EDITFIELD" parent="IDL_SETTING_EDIT_SERVICE_CENTER_FORM">\r
+        <property commandButtonVisible="true" disabledBGBitmapPath="" disabledColor="" disabledColorOpacity="100" disabledTextColor="" ellipsisPosition="ELLIPSIS_POSITION_END" enableClear="true" groupStyle="GROUP_STYLE_MIDDLE" guideText="" guideTextColor="" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalMargin="16" inputStyle="INPUT_STYLE_OVERLAY" keypadAction="KEYPAD_ACTION_ENTER" keypadEnabled="true" limitLength="100" linkTextColor="" lowerCaseMode="false" normalBGBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedColor="" pressedColorOpacity="100" text="" textHorizontalAlignment="ALIGNMENT_LEFT" textSize="30" titleStyle="EDIT_FIELD_TITLE_STYLE_NONE" titleText="::IDS_MSGF_BODY_CENTRE_PD" titleTextColor="#BFBFBF" verticalMargin="12" viewMode="false"/>\r
+        <layout height="90" mode="Portrait" style="EDIT_FIELD_STYLE_PHONE_NUMBER" width="694" x="15" y="51"/>\r
+        <layout height="90" mode="Landscape" style="EDIT_FIELD_STYLE_PHONE_NUMBER" width="426" x="320" y="0"/>\r
+    </EditField>\r
+    <Label id="IDC_LABEL" parent="IDL_SETTING_EDIT_SERVICE_CENTER_FORM">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="Centre" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_BOTTOM"/>\r
+        <layout height="38" mode="Portrait" width="694" x="15" y="13"/>\r
+        <layout height="52" mode="Landscape" width="533" x="179" y="0"/>\r
+    </Label>\r
+</Scene>\r
diff --git a/res/screen-size-normal/IDL_SMS_VIEWER_FORM.xml b/res/screen-size-normal/IDL_SMS_VIEWER_FORM.xml
new file mode 100644 (file)
index 0000000..6d16e4c
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">\r
+<Scene Bversion="3.0.0.201208240913" Dversion="20120315">\r
+    <LogicalCoordinate>720</LogicalCoordinate>\r
+    <Form id="IDL_SMS_VIEWER_FORM">\r
+        <property backgroundColor="" backgroundColorOpacity="100" orientation="Automatic" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>\r
+        <layout mode="Portrait" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>\r
+        <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>\r
+    </Form>\r
+    <Footer>\r
+        <property backgroundBitmapPath="" color="" colorOpacity="0" disabledButtonColor="" disabledButtonColorOpacity="0" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" footerStyle="FOOTER_STYLE_BUTTON_ICON" highlightedButtonColor="" highlightedButtonColorOpacity="0" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="0" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="0" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" showBackButton="true"/>\r
+        <itemSet/>\r
+    </Footer>\r
+    <Header>\r
+        <property backgroundBitmapPath="" color="" colorOpacity="0" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="0" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="0" disabledItemTextColor="" headerStyle="HEADER_STYLE_TITLE" highlightedButtonColor="" highlightedButtonColorOpacity="0" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="0" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="0" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="0" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="0" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="0" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="0" selectedItemTextColor="" titleIconPath="" titleText="" titleTextColor=""/>\r
+        <itemSet/>\r
+    </Header>\r
+</Scene>\r
diff --git a/res/screen-size-normal/IDL_THREAD_LIST_EDIT_FORM.xml b/res/screen-size-normal/IDL_THREAD_LIST_EDIT_FORM.xml
new file mode 100644 (file)
index 0000000..cc094af
--- /dev/null
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+<Scene Bversion="3.0.0.201302021409" Dversion="20120315">
+    <LogicalCoordinate>720</LogicalCoordinate>
+    <Form id="IDL_THREAD_LIST_EDIT_FORM">
+        <property backgroundColor="" backgroundColorOpacity="100" orientation="Portrait" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>
+        <layout mode="Portrait" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+        <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+    </Form>
+    <Footer>
+        <property backgroundBitmapPath="" color="" colorOpacity="100" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" footerStyle="FOOTER_STYLE_TAB" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" showBackButton="false"/>
+        <itemSet/>
+    </Footer>
+    <Header>
+        <property backgroundBitmapPath="" color="" colorOpacity="100" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" headerStyle="HEADER_STYLE_TITLE" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" titleIconPath="" titleText="" titleTextColor=""/>
+        <itemSet/>
+    </Header>
+    <Label id="IDC_THREAD_EDIT_LABEL" parent="IDL_THREAD_LIST_EDIT_FORM">
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_BOTTOM"/>
+        <layout bottomRelation="IDL_THREAD_LIST_EDIT_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="45" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="966"/>
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="52" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="533" x="568" y="432"/>
+    </Label>
+    <CheckButton id="IDC_CHECKALL_BUTTON" parent="IDL_THREAD_LIST_EDIT_FORM">
+        <property backgroundStyle="BACKGROUND_STYLE_DEFAULT" colorOfText="" colorOfTitleText="" disabledColor="" disabledColorOpacity="100" disabledTextColor="" disabledTitleTextColor="" groupId="0" groupStyle="GROUP_STYLE_NONE" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" highlightedTitleTextColor="" horizontalAlign="ALIGN_LEFT" normalColor="" normalColorOpacity="100" pressedColor="" pressedColorOpacity="100" pressedTextColor="" pressedTitleTextColor="" showTitleText="false" text="::IDS_COM_BODY_SELECT_ALL" titleText="" verticalAlign="ALIGN_MIDDLE"/>
+        <layout bottomRelation="None" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="111" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" style="" topRelation="IDL_THREAD_LIST_EDIT_FORM" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="716" x="4" y="0"/>
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="108" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" style="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="533" x="464" y="0"/>
+    </CheckButton>
+    <GroupedListView id="IDC_THREAD_GROUPEDLISTVIEW" parent="IDL_THREAD_LIST_EDIT_FORM">
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" bitmapPathOfEmptyList="" colorOfEmptyListText="" fastScroll="false" itemDivider="true" itemDividerColor="" sectionColor="" sweepEnabled="false" textOfEmptyList=""/>
+        <layout bottomRelation="IDC_THREAD_EDIT_LABEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_TOP" centerHorizontal="false" centerVertical="false" height="855" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" style="CUSTOM_LIST_STYLE_NORMAL" topRelation="IDC_CHECKALL_BUTTON" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="111"/>
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="124" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" style="CUSTOM_LIST_STYLE_NORMAL" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="741" x="506" y="77"/>
+    </GroupedListView>
+</Scene>
diff --git a/res/screen-size-normal/IDL_THREAD_LIST_FORM.xml b/res/screen-size-normal/IDL_THREAD_LIST_FORM.xml
new file mode 100644 (file)
index 0000000..feb5881
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+<Scene Bversion="3.0.0.201302021409" Dversion="20120315">
+    <LogicalCoordinate>720</LogicalCoordinate>
+    <Form id="IDL_THREAD_LIST_FORM">
+        <property backgroundColor="" backgroundColorOpacity="100" orientation="Portrait" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>
+        <layout mode="Portrait" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+        <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+    </Form>
+    <Footer>
+        <property backgroundBitmapPath="" color="" colorOpacity="0" disabledButtonColor="" disabledButtonColorOpacity="0" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="0" disabledItemTextColor="" footerStyle="FOOTER_STYLE_BUTTON_TEXT" highlightedButtonColor="" highlightedButtonColorOpacity="0" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="0" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="0" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="0" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="0" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="0" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="0" selectedItemTextColor="" showBackButton="true"/>
+        <itemSet/>
+    </Footer>
+    <Header>
+        <property backgroundBitmapPath="" color="" colorOpacity="0" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="0" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="0" disabledItemTextColor="" headerStyle="HEADER_STYLE_TITLE" highlightedButtonColor="" highlightedButtonColorOpacity="0" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="0" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="0" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="0" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="0" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="0" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="0" selectedItemTextColor="" titleIconPath="" titleText="" titleTextColor=""/>
+        <itemSet/>
+    </Header>
+    <SearchBar id="IDC_SEARCHBAR" parent="IDL_THREAD_LIST_FORM">
+        <property backgroundBitmapPath="" buttonActionId="0" buttonText="" color="" colorOpacity="100" disabledButtonColor="" disabledButtonTextColor="" disabledSearchFieldColor="" disabledSearchFieldTextColor="" ellipsisPosition="ELLIPSIS_POSITION_END" guideText="" guideTextColor="" highlightedButtonColor="" highlightedButtonTextColor="" highlightedSearchFieldColor="" highlightedSearchFieldTextColor="" keypadAction="KEYPAD_ACTION_SEARCH" limitLength="500" lowerCaseMode="false" normalButtonColor="" normalButtonTextColor="" normalSearchFieldColor="" normalSearchFieldTextColor="" pressedButtonColor="" pressedButtonTextColor="" searchFieldTextSize="33" showSearchBarButton="true" text="" textPredictionEnabled="false"/>
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="86" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDL_THREAD_LIST_FORM" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="0"/>
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="106" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="801" x="225" y="0"/>
+    </SearchBar>
+    <GroupedListView id="IDC_THREAD_GROUPEDLISTVIEW" parent="IDL_THREAD_LIST_FORM">
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" bitmapPathOfEmptyList="00_Nocontents_text.png" colorOfEmptyListText="" fastScroll="false" itemDivider="true" itemDividerColor="" sectionColor="" sweepEnabled="false" textOfEmptyList="::IDS_MSGF_POP_NOMESSAGES"/>
+        <layout bottomRelation="IDL_THREAD_LIST_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="925" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" style="CUSTOM_LIST_STYLE_NORMAL" topRelation="IDC_SEARCHBAR" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="86"/>
+        <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="124" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" style="CUSTOM_LIST_STYLE_NORMAL" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="741" x="364" y="106"/>
+    </GroupedListView>
+</Scene>
diff --git a/res/screen-size-normal/IDL_UNABLE_ATTACH_MESSAGE_POPUP.xml b/res/screen-size-normal/IDL_UNABLE_ATTACH_MESSAGE_POPUP.xml
new file mode 100644 (file)
index 0000000..a78b473
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE ScenePopup SYSTEM "UIForm.dtd">\r
+<ScenePopup Bversion="3.0.0.201212201745" Dversion="20120315">\r
+    <Popup id="IDL_UNABLE_ATTACH_MESSAGE_POPUP">\r
+        <property color="" titleText="" titleTextColor=""/>\r
+        <layout height="226" mode="Portrait" style="" type="NONE" width="720"/>\r
+        <layout height="226" mode="Landscape" style="" type="NONE" width="720"/>\r
+    </Popup>\r
+    <Label id="IDC_LABEL1" parent="IDL_UNABLE_ATTACH_MESSAGE_POPUP">\r
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="Unable to attach. Maximum size\n of files is 300 KB" textColor="" textSize="29" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout height="94" mode="Portrait" width="648" x="0" y="18"/>\r
+        <layout height="94" mode="Landscape" width="648" x="0" y="18"/>\r
+    </Label>\r
+    <Button id="IDC_CLOSE_BUTTON" parent="IDL_UNABLE_ATTACH_MESSAGE_POPUP">\r
+        <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_COM_POP_CLOSE" textSize="33" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout height="72" mode="Portrait" width="288" x="180" y="132"/>\r
+        <layout height="72" mode="Landscape" width="288" x="180" y="132"/>\r
+    </Button>\r
+</ScenePopup>\r
diff --git a/res/screen-size-normal/IDL_VOLUME_POPUP.xml b/res/screen-size-normal/IDL_VOLUME_POPUP.xml
new file mode 100644 (file)
index 0000000..a1cd436
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!--\r
+       This XML file was automatically generated by UiBuilder - do not modify by hand.\r
+-->\r
+<!DOCTYPE ScenePopup SYSTEM "UIForm.dtd">\r
+<ScenePopup Bversion="3.0.0.201212201745" Dversion="20120315">\r
+    <Popup id="IDL_VOLUME_POPUP">\r
+        <property color="" titleText="::IDS_COM_BODY_SUBJECT" titleTextColor=""/>\r
+        <layout height="323" mode="Portrait" style="" type="NONE" width="720"/>\r
+        <layout height="333" mode="Landscape" style="" type="NONE" width="720"/>\r
+    </Popup>\r
+    <Slider id="IDC_MEDIA_VOLUME_SLIDER" parent="IDL_VOLUME_POPUP">\r
+        <property backgroundColor="" backgroundStyle="BACKGROUND_STYLE_DEFAULT" barColor="" color="" colorOfTitleText="" colorOpacity="100" disabledThumbBitmap="" disabledThumbTextColor="" groupStyle="GROUP_STYLE_NONE" highlightedThumbBitmap="" highlightedThumbTextColor="" leftIconBitmapPath="M01_play_btn_volume_press.png" max="10" min="0" normalThumbBitmap="" normalThumbTextColor="" pressedThumbBitmap="" pressedThumbTextColor="" rightIconBitmapPath="" showTitleText="false" sliderStyle="SLIDER_STYLE_BUBBLE" titleText="" value="4"/>\r
+        <layout height="134" mode="Portrait" width="647" x="0" y="11"/>\r
+        <layout height="134" mode="Landscape" width="648" x="0" y="14"/>\r
+    </Slider>\r
+    <Button id="IDC_BUTTON_SETTINGS" parent="IDL_VOLUME_POPUP">\r
+        <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.9.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_COM_BODY_SETTINGS" textSize="40" verticalAlign="ALIGN_MIDDLE"/>\r
+        <layout height="72" mode="Portrait" width="288" x="180" y="160"/>\r
+        <layout height="74" mode="Landscape" width="288" x="200" y="168"/>\r
+    </Button>\r
+</ScenePopup>\r
diff --git a/res/slk-SK.xml b/res/slk-SK.xml
new file mode 100644 (file)
index 0000000..1dccf75
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Podrobnosti o správe</text>
+    <text id="IDS_COM_SK3_PREVIEW">Ukážka</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">Vybraté: %d</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Trvanie musí byť dlhšie než %d sekundy</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Prekročil sa maximálny počet znakov. Vymažte niektoré znaky</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Vybrať všetky</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Žiadny predmet</text>
+    <text id="IDS_COM_POP_CLOSE">Zavrieť</text>
+    <text id="IDS_COM_BODY_TO">Komu</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Fotografovať</text>
+    <text id="IDS_COM_POP_DELETE_Q">Odstrániť?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Režim vkladania textu</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Dosiahol sa maximálny počet príjemcov (%d)</text>
+    <text id="IDS_COM_SK_NO">Nie</text>
+    <text id="IDS_COM_BODY_MY_FILES">Moje súbory</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Kopírovať do telefónu</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Správy CB</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Stredisko služieb</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Odosiela sa zlyhaná správa</text>
+    <text id="IDS_COM_POP_SUCCESS">Dokončené</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Zakázané</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Správy prijaté od vašich kontaktov nebudú blokované ani v prípade, ak obsahujú blokované slová</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Odblokovať</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Kopír. text správy</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Potvrdenie o prečítaní</text>
+    <text id="IDS_COM_BODY_MESSAGES">Správy</text>
+    <text id="IDS_COM_SK_OPTIONS">Voľby</text>
+    <text id="IDS_COM_SK_DONE">Hotovo</text>
+    <text id="IDS_COM_POP_PM">pp</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Neznáme</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Koncepty správ</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Služba je nedostupná</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Pridať slovo</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Blokovať %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Zmeniť veľkosť textu použitím tlačidla hlasitosti</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Nová správa</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Nevyžiadané správy</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Zahrnúť</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Blokované čísla</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">MMS</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Upraviť slovo</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Platnosť vypršala</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Upozornenie</text>
+    <text id="IDS_COM_SK_EDIT">Upraviť</text>
+    <text id="IDS_COM_POP_FAILED">Nepodarilo sa</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Vymazať číslo</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Nahrať zvuk</text>
+    <text id="IDS_COM_SK_BACK">Späť</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Odstrániť slová</text>
+    <text id="IDS_COM_BODY_FORWARD">Preposlať</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Žiadne správy</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Sieť roaming</text>
+    <text id="IDS_MSGF_BODY_FROM">Od</text>
+    <text id="IDS_COM_SK_DELETE">Odstrániť</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Nepre-čítané</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Duplicitný príjemca</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">Abeceda GSM</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">Správy na karte SIM</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Odoslané</text>
+    <text id="IDS_COM_BODY_CONTACTS">Kontakty</text>
+    <text id="IDS_MSGF_OPT_STATUS">Stav</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Voľné</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Typ</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Automaticky stiahnuť</text>
+    <text id="IDS_MSGF_SK_RESEND">Odoslať znova</text>
+    <text id="IDS_COM_SK_CANCEL">Zrušiť</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Možnosti príjmu</text>
+    <text id="IDS_COM_BODY_GALLERY">Galéria</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Trvanie\n(%d s)</text>
+    <text id="IDS_COM_BODY_SEARCH">Hľadať</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Schránky správ</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Pridať číslo</text>
+    <text id="IDS_COM_BODY_MEMO">Poznámka</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Kopírovať na kartu SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Zadať číslo</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Pridať kontakt</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Domáca sieť</text>
+    <text id="IDS_COM_POP_REJECTED">Odmietnuté</text>
+    <text id="IDS_COM_BODY_SETTINGS">Nastavenia</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Začať s</text>
+    <text id="IDS_COM_BODY_DISPLAY">Zobrazenie</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Zapnúť ochranu</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Ručne</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Chyba karty SIM</text>
+    <text id="IDS_COM_POP_DELETED">Odstránené</text>
+    <text id="IDS_COM_SK_SEND_ABB">Odoslať</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Preposlané</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Centrum %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Upraviť číslo</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automaticky</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Zobr. detaily správy</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Odmietnuť</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Hlasový hovor</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Použiť tlač. hlasitosti</text>
+    <text id="IDS_COM_SK_SAVE">Uložiť</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Presne rovnaké ako</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Žiadne výsledky vyhľadávania</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Režim vytvárania</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">SMS</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Prijatá</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Kritériá zhody</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Odložené</text>
+    <text id="IDS_COM_SK_ADD">Pridať</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Blokovať</text>
+    <text id="IDS_COM_SK_YES">Áno</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Zobraziť kontakty</text>
+    <text id="IDS_COM_SK_SEARCH">Hľadať</text>
+    <text id="IDS_COM_POP_AM_M_ABB">dp</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Blokované slová</text>
+    <text id="IDS_COM_BODY_SUBJECT">Predmet</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Neznáme</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Odoslať potvrdenie o prečítaní</text>
+    <text id="IDS_MSGF_SK_RESTORE">Obnoviť</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Vyžiadať potvrd. o prečít.</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Zadajte slovo</text>
+    <text id="IDS_COM_SK3_COMPOSE">Napísať</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Vyskytla sa neznáma chyba</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Vyžiadať potvrdenie o doručení</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Neplatní príjemcovia</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Vysielané správy</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Uložiť prílohu</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Potvrdenie o doručení</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Zahodiť aktuálnu správu?</text>
+    <text id="IDS_COM_POP_ATTACH">Pripojiť</text>
+    <text id="IDS_COM_BODY_CALENDAR">Kalendár</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Volať</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Snímať video</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Vybrať príjemcu</text>
+</string_table>
diff --git a/res/slv-SI.xml b/res/slv-SI.xml
new file mode 100644 (file)
index 0000000..8367067
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Podrobnosti sporočila</text>
+    <text id="IDS_COM_SK3_PREVIEW">Pre.</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d izbranih</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Trajanje mora biti daljše od %d sekund</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Preseženo je največje dovoljeno število znakov. Izbrišite nekaj znakov</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Izberi vse</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Ni zadeve</text>
+    <text id="IDS_COM_POP_CLOSE">Zapri</text>
+    <text id="IDS_COM_BODY_TO">Za</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Posnemi sliko</text>
+    <text id="IDS_COM_POP_DELETE_Q">Izbrišem?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Način za vnos besedila</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Doseženo je največje dovoljeno število prejemnikov (%d)</text>
+    <text id="IDS_COM_SK_NO">Ne</text>
+    <text id="IDS_COM_BODY_MY_FILES">Moje datoteke</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Kopiraj v telefon</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Sporočila v celici</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Servisni center</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Pošiljanje sporočila ni uspelo</text>
+    <text id="IDS_COM_POP_SUCCESS">Uspeh</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Omejeno</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Sporočila, ki jih pošljejo vaši stiki, ne bodo blokirana, tudi če vsebujejo blokirane besede</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Odblokiraj</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Kop. bes. sporočila</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Poročilo o branju</text>
+    <text id="IDS_COM_BODY_MESSAGES">Sporočila</text>
+    <text id="IDS_COM_SK_OPTIONS">Možnosti</text>
+    <text id="IDS_COM_SK_DONE">Končano</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Neznano</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Osnutki sporočil</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Storitev ni na voljo</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Dodaj besedo</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Blokiram osebo %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">S tipko za glasnost spremenite velikost pisave</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Novo sporočilo</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Neželena sporočila</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Vključi</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Blokirane številke</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Multimedijska sporočila</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Uredi besedo</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Veljavnost je potekla</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Opozorilo</text>
+    <text id="IDS_COM_SK_EDIT">Uredi</text>
+    <text id="IDS_COM_POP_FAILED">Ni uspelo</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Zbriši številko</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Posnemi zvok</text>
+    <text id="IDS_COM_SK_BACK">Nazaj</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Izbriši besede</text>
+    <text id="IDS_COM_BODY_FORWARD">Posreduj</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Ni sporočil</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Tuje omrežje</text>
+    <text id="IDS_MSGF_BODY_FROM">Od</text>
+    <text id="IDS_COM_SK_DELETE">Izbriši</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Neprebr.</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Prejemnik je podvojen</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">Abeceda GSM</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">Sporočila na kartici SIM</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Poslano</text>
+    <text id="IDS_COM_BODY_CONTACTS">Imenik</text>
+    <text id="IDS_MSGF_OPT_STATUS">Stanje</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Prosto</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Vrsta</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Samodejno nalaganje</text>
+    <text id="IDS_MSGF_SK_RESEND">Znova pošlji</text>
+    <text id="IDS_COM_SK_CANCEL">Prekliči</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Možnosti sprejema</text>
+    <text id="IDS_COM_BODY_GALLERY">Galerija</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Trajanje\n(%d s)</text>
+    <text id="IDS_COM_BODY_SEARCH">Iskanje</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Sporočilna polja</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Dodaj številko</text>
+    <text id="IDS_COM_BODY_MEMO">Beležka</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Kopiraj na SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Vnesite številko</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Dodaj stik</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Domače omrežje</text>
+    <text id="IDS_COM_POP_REJECTED">Zavrnjeno</text>
+    <text id="IDS_COM_BODY_SETTINGS">Nastavitve</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Začni</text>
+    <text id="IDS_COM_BODY_DISPLAY">Zaslon</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Zaščita je vključena</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Ročno</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Napaka SIM kartice</text>
+    <text id="IDS_COM_POP_DELETED">Izbrisano</text>
+    <text id="IDS_COM_SK_SEND_ABB">Pošlji</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Posredovano</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Center %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Uredi številko</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Samodejno</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Prik.podr. sporočila</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Zavrni</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Glasovni klic</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Uporab. tipko za glasnost</text>
+    <text id="IDS_COM_SK_SAVE">Shrani</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Popolnoma enako kot</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Ni rezultatov iskanja</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Način ustvarjanja</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Besedilna sporočila</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Prejeto</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Merila ujemanja</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Preloženo</text>
+    <text id="IDS_COM_SK_ADD">Dodaj</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Blokiraj</text>
+    <text id="IDS_COM_SK_YES">Da</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Prikaži vizitko</text>
+    <text id="IDS_COM_SK_SEARCH">Iskanje</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Blokirane besede</text>
+    <text id="IDS_COM_BODY_SUBJECT">Zadeva</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Neprepoznano</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Pošlji poročilo o branju</text>
+    <text id="IDS_MSGF_SK_RESTORE">Obnovi</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Zahtevaj poročilo o branju</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Vnesite besedo</text>
+    <text id="IDS_COM_SK3_COMPOSE">Sestavi</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Prišlo je do neznane napake</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Zahtevaj poročilo o dostavi</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Neveljavni prejemniki</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Info sporočila</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Shrani prilogo</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Poročilo o dostavi</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Zavržem trenutno sporočilo?</text>
+    <text id="IDS_COM_POP_ATTACH">Dodaj</text>
+    <text id="IDS_COM_BODY_CALENDAR">Koledar</text>
+    <text id="IDS_COM_SK_OK">V redu</text>
+    <text id="IDS_COM_SK_CALL">Klic</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Posnemi video</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Izberite prejemnika</text>
+</string_table>
diff --git a/res/spa-ES.xml b/res/spa-ES.xml
new file mode 100644 (file)
index 0000000..04fcfdc
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Detalles de mensaje</text>
+    <text id="IDS_COM_SK3_PREVIEW">Vista previa</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d seleccionado</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">La duración debe superar los %d segundos</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Alcanzado el número máximo de caracteres. Elimine algunos caracteres</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Seleccionar todo</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Sin asunto</text>
+    <text id="IDS_COM_POP_CLOSE">Cerrar</text>
+    <text id="IDS_COM_BODY_TO">Para</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Hacer foto</text>
+    <text id="IDS_COM_POP_DELETE_Q">¿Eliminar?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Modo de entrada de texto</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Alcanzado el número máximo de destinatarios (%d)</text>
+    <text id="IDS_COM_SK_NO">No</text>
+    <text id="IDS_COM_BODY_MY_FILES">Mis archivos</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Copiar en el teléfono</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Mensajes de CB</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Centro de servicios</text>
+    <text id="IDS_COM_BODY_SMS">Mensaje</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Error al enviar mensaje</text>
+    <text id="IDS_COM_POP_SUCCESS">Finalizado</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Restringido</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Los mensajes recibidos de sus contactos no se bloquearan aunque contengan palabras bloqueadas</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Desbloquear</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Copiar texto del mensaje</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Informe de lectura</text>
+    <text id="IDS_COM_BODY_MESSAGES">Mensajes</text>
+    <text id="IDS_COM_SK_OPTIONS">Opciones</text>
+    <text id="IDS_COM_SK_DONE">Hecho</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Desconocido</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Mensajes de borrador</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Servicio no disponible</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Añadir palabra</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">¿Bloquear %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Cambie el tamaño del texto con la tecla de volumen</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Mensaje nuevo</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Mensajes de correo basura</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Incluir</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Números bloqueados</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Mensajes multimedia</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Editar palabra</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Caducado</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Aviso</text>
+    <text id="IDS_COM_SK_EDIT">Editar</text>
+    <text id="IDS_COM_POP_FAILED">Error</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Eliminar número</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Grabar audio</text>
+    <text id="IDS_COM_SK_BACK">Atrás</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Eliminar palabras</text>
+    <text id="IDS_COM_BODY_FORWARD">Reenviar</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">No hay mensajes</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Red en extranjero</text>
+    <text id="IDS_MSGF_BODY_FROM">De</text>
+    <text id="IDS_COM_SK_DELETE">Eliminar</text>
+    <text id="IDS_MSGF_SK3_UNREAD">No leídos</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Destinatario duplicado</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">Alfabeto GSM</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">Mensajes de tarjeta SIM</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Enviado</text>
+    <text id="IDS_COM_BODY_CONTACTS">Contactos</text>
+    <text id="IDS_MSGF_OPT_STATUS">Estado</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Libre</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Tipo</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Descarga automática</text>
+    <text id="IDS_MSGF_SK_RESEND">Reenviar</text>
+    <text id="IDS_COM_SK_CANCEL">Cancelar</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Opciones de recepción</text>
+    <text id="IDS_COM_BODY_GALLERY">Galería</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Duración\n(%d s)</text>
+    <text id="IDS_COM_BODY_SEARCH">Buscar</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Buzón de mensajes</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Añadir número</text>
+    <text id="IDS_COM_BODY_MEMO">Notas</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Copiar a SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Introducir número</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Añadir un contacto</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Red nacional</text>
+    <text id="IDS_COM_POP_REJECTED">Rechazado</text>
+    <text id="IDS_COM_BODY_SETTINGS">Ajustes</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Comenzar</text>
+    <text id="IDS_COM_BODY_DISPLAY">Pantalla</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Protección activada</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Manual</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Error tarjeta SIM</text>
+    <text id="IDS_COM_POP_DELETED">Eliminado</text>
+    <text id="IDS_COM_SK_SEND_ABB">Enviar</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Reenviado</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Centro %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Editar número</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automática</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Ver detalles mens</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Rechazar</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Llamada de voz</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Utilice la tecla volumen</text>
+    <text id="IDS_COM_SK_SAVE">Guardar</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Exactamente igual a</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">No se han encontrado resultados</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Modo de creación</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Mensajes de texto</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Recibido</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Coincidir criterios</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Anulado</text>
+    <text id="IDS_COM_SK_ADD">Añadir</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Bloquear</text>
+    <text id="IDS_COM_SK_YES">Sí</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Ver contactos</text>
+    <text id="IDS_COM_SK_SEARCH">Buscar</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Palabras bloqueadas</text>
+    <text id="IDS_COM_BODY_SUBJECT">Asunto</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Desconocido</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Enviar informe de lectura</text>
+    <text id="IDS_MSGF_SK_RESTORE">Restaurar</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Solicitar inf. de lectura</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Introducir palabra</text>
+    <text id="IDS_COM_SK3_COMPOSE">Escribir</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Error desconocido</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Solicitar informe de envío</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Destinatarios no válidos</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Mensajes de difusión</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Guardar adjunto</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Informe de entrega</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">¿Descartar mensaje actual?</text>
+    <text id="IDS_COM_POP_ATTACH">Adjuntar</text>
+    <text id="IDS_COM_BODY_CALENDAR">Calendario</text>
+    <text id="IDS_COM_SK_OK">Aceptar</text>
+    <text id="IDS_COM_SK_CALL">Llamar</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Capturar vídeo</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Seleccionar destinatario</text>
+</string_table>
diff --git a/res/spa-MX.xml b/res/spa-MX.xml
new file mode 100644 (file)
index 0000000..8e0fee4
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Detalles del mensaje</text>
+    <text id="IDS_COM_SK3_PREVIEW">Vista previa</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d seleccionado(s)</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">La duración debe superar los %d segundos</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Se ha alcanzado el número máximo de caracteres. Elimine algunos caracteres</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Seleccionar todo</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Sin asunto</text>
+    <text id="IDS_COM_POP_CLOSE">Cerrar</text>
+    <text id="IDS_COM_BODY_TO">A</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Capturar imagen</text>
+    <text id="IDS_COM_POP_DELETE_Q">¿Eliminar?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Método de entrada</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Se ha alcanzado el número máximo de destinatarios (%d)</text>
+    <text id="IDS_COM_SK_NO">No</text>
+    <text id="IDS_COM_BODY_MY_FILES">Mis Archivos</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Copiar en dispositivo</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Mensajes de canales de información</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Centro de servicio</text>
+    <text id="IDS_COM_BODY_SMS">Mensaje de texto</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Error al enviar mensaje</text>
+    <text id="IDS_COM_POP_SUCCESS">Exitoso</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Restringido</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">No se bloquearán los mensajes recibidos de sus contactos incluso si contienen palabras bloqueadas</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Desbloquear</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Copiar texto</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Informe de lectura</text>
+    <text id="IDS_COM_BODY_MESSAGES">Mensajes</text>
+    <text id="IDS_COM_SK_OPTIONS">Opciones</text>
+    <text id="IDS_COM_SK_DONE">Realizado</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Desconocido</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Mensaje de borrador</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Servicio no disponible</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Añadir palabra</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">¿Bloquear %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Cambiar tamaño de texto con tecla de volumen</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Nuevo mensaje</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Spam</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Incluir</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Números bloqueados</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Mensajes multimedia</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Editar palabra</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Agotada</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Aviso</text>
+    <text id="IDS_COM_SK_EDIT">Editar</text>
+    <text id="IDS_COM_POP_FAILED">Error</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Eliminar número</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Grabar audio</text>
+    <text id="IDS_COM_SK_BACK">Atrás</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Eliminar palabras</text>
+    <text id="IDS_COM_BODY_FORWARD">Reenviar</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">No hay mensajes</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Red en el extranjero</text>
+    <text id="IDS_MSGF_BODY_FROM">De</text>
+    <text id="IDS_COM_SK_DELETE">Eliminar</text>
+    <text id="IDS_MSGF_SK3_UNREAD">No leídos</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Destinatario duplicado</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">Alfabeto GSM</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">Mensajes de tarjeta SIM</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Enviado</text>
+    <text id="IDS_COM_BODY_CONTACTS">Contactos</text>
+    <text id="IDS_MSGF_OPT_STATUS">Estado</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Libre</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Tipo</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Descarga automática</text>
+    <text id="IDS_MSGF_SK_RESEND">Reenviar</text>
+    <text id="IDS_COM_SK_CANCEL">Cancelar</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Opciones de recepción</text>
+    <text id="IDS_COM_BODY_GALLERY">Galería</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Duración\n(%d seg)</text>
+    <text id="IDS_COM_BODY_SEARCH">Buscar</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Buzón de mensajes</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Añadir número</text>
+    <text id="IDS_COM_BODY_MEMO">Notas</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Copiar en tarjeta SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Introducir número</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Añadir contacto</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Red local</text>
+    <text id="IDS_COM_POP_REJECTED">Rechazado</text>
+    <text id="IDS_COM_BODY_SETTINGS">Configuración</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Empieza en</text>
+    <text id="IDS_COM_BODY_DISPLAY">Pantalla</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Activar protección</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Manual</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Error de tarjeta SIM</text>
+    <text id="IDS_COM_POP_DELETED">Eliminado</text>
+    <text id="IDS_COM_SK_SEND_ABB">Enviar</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Desviada</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Centro %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Editar número</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automático</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Ver detalles</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Rechazar</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Llamada de voz</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Usar tecla de volumen</text>
+    <text id="IDS_COM_SK_SAVE">Guardar</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Exactamente igual a</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">No se han encontrado resultados</text>
+    <text id="IDS_MSGF_BODY_MMS">Mensaje multimedia</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Modo de creación</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Mensajes de texto</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Recibido</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Criterios de asignación</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Diferida</text>
+    <text id="IDS_COM_SK_ADD">Añadir</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Bloquear</text>
+    <text id="IDS_COM_SK_YES">Sí</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Ver contacto</text>
+    <text id="IDS_COM_SK_SEARCH">Buscar</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Palabras bloqueadas</text>
+    <text id="IDS_COM_BODY_SUBJECT">Asunto</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Desconocida</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Enviar informe de lectura</text>
+    <text id="IDS_MSGF_SK_RESTORE">Restaurar</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Solicitar informe de lectura</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Introducir palabra</text>
+    <text id="IDS_COM_SK3_COMPOSE">Escribir</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Error desconocido</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Solicitar informe de entrega</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Destinatarios no válidos</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Canales de información</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Guardar adjunto</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Informe de entrega</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">¿Cancelar mensaje actual?</text>
+    <text id="IDS_COM_POP_ATTACH">Adjuntar</text>
+    <text id="IDS_COM_BODY_CALENDAR">Calendario</text>
+    <text id="IDS_COM_SK_OK">Aceptar</text>
+    <text id="IDS_COM_SK_CALL">Llamar</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Capturar video</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Seleccionar destinatario</text>
+</string_table>
diff --git a/res/srp-RS.xml b/res/srp-RS.xml
new file mode 100644 (file)
index 0000000..1243f14
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Informacije o poruci</text>
+    <text id="IDS_COM_SK3_PREVIEW">Pregled</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">Izabran je %d</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Trajanje mora biti duže od %d sekundi</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Dostignut maksimalan broj karaktera. Obriši neke karaktere</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Izaberi sve</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Nema naslova</text>
+    <text id="IDS_COM_POP_CLOSE">Zatvori</text>
+    <text id="IDS_COM_BODY_TO">Za</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Slikaj</text>
+    <text id="IDS_COM_POP_DELETE_Q">Obriši?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Način unošenja teksta</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Dostignut maksimalan broj primalaca (%d)</text>
+    <text id="IDS_COM_SK_NO">Ne</text>
+    <text id="IDS_COM_BODY_MY_FILES">Moji fajlovi</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Kopiraj u telefon</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">Info poruke</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Servisni centar</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Slanje neuspešno poslate poruke</text>
+    <text id="IDS_COM_POP_SUCCESS">Uspeh</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Ograničeno</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Poruke koje su primljene od tvojih kontakata neće biti blokirane čak iako sadrže reči koje su blokirane</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Deblokiraj</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Kopiraj tekst poruke</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Čitanje izveštaja</text>
+    <text id="IDS_COM_BODY_MESSAGES">Poruke</text>
+    <text id="IDS_COM_SK_OPTIONS">Opcije</text>
+    <text id="IDS_COM_SK_DONE">Gotovo</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Nepoznato</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Skica poruka</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Usluga nedostupna</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Dodaj reč</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Blokiraj %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Promeni veličinu teksta pomoću tastera za jačinu zvuka</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Nova poruka</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Spam poruke</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Uključi</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Blokirani brojevi</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Multimedijalne poruke</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Izmeni reč</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Datum isteka već prošao</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Upozorenje</text>
+    <text id="IDS_COM_SK_EDIT">Izmeni</text>
+    <text id="IDS_COM_POP_FAILED">Neuspešno</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Obriši broj</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Snimi audio</text>
+    <text id="IDS_COM_SK_BACK">Nazad</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unikod</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Izbriši reči</text>
+    <text id="IDS_COM_BODY_FORWARD">Prosledi</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Nema poruka</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Strana mreža</text>
+    <text id="IDS_MSGF_BODY_FROM">Od</text>
+    <text id="IDS_COM_SK_DELETE">Obriši</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Neproč.</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Primalac dupliran</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM abeceda</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">Poruke SIM kartice</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Poslato</text>
+    <text id="IDS_COM_BODY_CONTACTS">Kontakti</text>
+    <text id="IDS_MSGF_OPT_STATUS">Status</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Slobodno</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Tip</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Automatsko preuzimanje</text>
+    <text id="IDS_MSGF_SK_RESEND">Ponovi slanje</text>
+    <text id="IDS_COM_SK_CANCEL">Poništi</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Opcije prijema</text>
+    <text id="IDS_COM_BODY_GALLERY">Galerija</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Trajanje\n(%d sek.)</text>
+    <text id="IDS_COM_BODY_SEARCH">Pretraži</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Sandučići</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Dodaj broj</text>
+    <text id="IDS_COM_BODY_MEMO">Beleška</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Kopiraj u SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Unesi broj</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Dodaj kontakt</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Domaća mreža</text>
+    <text id="IDS_COM_POP_REJECTED">Odbijeno</text>
+    <text id="IDS_COM_BODY_SETTINGS">Podešavanja</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Započinje sa</text>
+    <text id="IDS_COM_BODY_DISPLAY">Ekran</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Zaštita uključena</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Ručno</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Greška SIM kartice</text>
+    <text id="IDS_COM_POP_DELETED">Obrisano</text>
+    <text id="IDS_COM_SK_SEND_ABB">Pošalji</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Prosleđeno</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Centar %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Izmeni broj</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automatski</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Prikaži info. o por.</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Odbaci</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Govorni poziv</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Kor. tast. za jač. zvuka</text>
+    <text id="IDS_COM_SK_SAVE">Sačuvaj</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Potpuno isto kao</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Nema rezultata pretrage</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Režim kreiranja</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Tekstualne poruke</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Primljeno</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Kriterijumi pretrage</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Vaša poruka je odložena.</text>
+    <text id="IDS_COM_SK_ADD">Dodaj</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Blokiraj</text>
+    <text id="IDS_COM_SK_YES">Da</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Prikaži kontakt</text>
+    <text id="IDS_COM_SK_SEARCH">Pretraga</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Blokirane reči</text>
+    <text id="IDS_COM_BODY_SUBJECT">Naslov</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Neprepoznato</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Šalji izveštaj o čitanju</text>
+    <text id="IDS_MSGF_SK_RESTORE">Vrati</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Zahtevaj izveš. o čitanju</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Unesi reč</text>
+    <text id="IDS_COM_SK3_COMPOSE">Sastavi</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Došlo je do nepoznate greške</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Zahtevaj izveštaj o prispeću</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Neispravni primaoci</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Info poruke</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Sačuvaj prilog</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Izveštaj o prispeću</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Odbaci trenutnu poruku?</text>
+    <text id="IDS_COM_POP_ATTACH">Priloži</text>
+    <text id="IDS_COM_BODY_CALENDAR">Kalendar</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Poziv</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Snimi video zapis</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Izaberi primaoca</text>
+</string_table>
diff --git a/res/swe-SE.xml b/res/swe-SE.xml
new file mode 100644 (file)
index 0000000..822861b
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Meddelandeinformation</text>
+    <text id="IDS_COM_SK3_PREVIEW">Förhandsg</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d markerade</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Varaktigheten måste vara längre än %d sekunder</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Högsta tillåtna antalet tecken är överskridet. Radera några tecken</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Välj alla</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Ingen rubrik</text>
+    <text id="IDS_COM_POP_CLOSE">Stäng</text>
+    <text id="IDS_COM_BODY_TO">Till</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Ta foto</text>
+    <text id="IDS_COM_POP_DELETE_Q">Radera?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Inmatningsspråk</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Högsta antalet mottagare (%d) har uppnåtts</text>
+    <text id="IDS_COM_SK_NO">Nej</text>
+    <text id="IDS_COM_BODY_MY_FILES">Mina filer</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Kopiera till telefonen</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">CB-meddelanden</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Tjänstecenter</text>
+    <text id="IDS_COM_BODY_SMS">Textmeddelande</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Skickar misslyckat meddelande</text>
+    <text id="IDS_COM_POP_SUCCESS">Slutfört</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Begränsat</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Meddelanden från dina kontakter blockeras inte även om de innehåller blockerade ord</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Tillåt</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Kopiera medd.text</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Läsrapport</text>
+    <text id="IDS_COM_BODY_MESSAGES">Meddelanden</text>
+    <text id="IDS_COM_SK_OPTIONS">Val</text>
+    <text id="IDS_COM_SK_DONE">Klar</text>
+    <text id="IDS_COM_POP_PM">EM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Okänd</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Utkast</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Tjänst ej tillgänglig</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Lägg till ord</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Blockera %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Ändra textstorlek med volymknappen</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Nytt meddelande</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Skräppostmeddelanden</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Inkludera</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Blockerade nummer</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Multimediemeddelanden</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Redigera ord</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Har slutat gälla</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Varning</text>
+    <text id="IDS_COM_SK_EDIT">Redigera</text>
+    <text id="IDS_COM_POP_FAILED">Misslyckades</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Radera nummer</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Spela in ljud</text>
+    <text id="IDS_COM_SK_BACK">Åter</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Ta bort ord</text>
+    <text id="IDS_COM_BODY_FORWARD">Vidarebefodra</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Inga meddelanden</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Roaming-nät</text>
+    <text id="IDS_MSGF_BODY_FROM">Från</text>
+    <text id="IDS_COM_SK_DELETE">Radera</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Olästa</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Mottagare finns redan</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM-alfabet</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM-kortsmeddelanden</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Sänt</text>
+    <text id="IDS_COM_BODY_CONTACTS">Kontakter</text>
+    <text id="IDS_MSGF_OPT_STATUS">Status</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Fritt</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Typ</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Autohämtning</text>
+    <text id="IDS_MSGF_SK_RESEND">Skicka igen</text>
+    <text id="IDS_COM_SK_CANCEL">Avbryt</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Mottagningsalternativ</text>
+    <text id="IDS_COM_BODY_GALLERY">Galleri</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Varaktighet\n(%d sek)</text>
+    <text id="IDS_COM_BODY_SEARCH">Sök</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Meddelanderutor</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Lägg till nummer</text>
+    <text id="IDS_COM_BODY_MEMO">Memo</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Kopiera till SIM</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Ange nummer</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Lägg till kontakt</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Hemnät</text>
+    <text id="IDS_COM_POP_REJECTED">Avvisat</text>
+    <text id="IDS_COM_BODY_SETTINGS">Inställningar</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Starta med</text>
+    <text id="IDS_COM_BODY_DISPLAY">Display</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Skydd på</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Manuellt</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM-kortfel</text>
+    <text id="IDS_COM_POP_DELETED">Raderad</text>
+    <text id="IDS_COM_SK_SEND_ABB">Sänd</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Vidarebefordrad</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Center %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Redigera nummer</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Automatisk</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Visa meddelandeinfo</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Avvisa</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Röstsamtal</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Använd volymknappen</text>
+    <text id="IDS_COM_SK_SAVE">Spara</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Exakt</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Inga sökresultat</text>
+    <text id="IDS_MSGF_BODY_MMS">Multimediemeddelande</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Skapaläge</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Textmeddelanden</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Mottaget</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Uppfyller kriterier</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Uppskjuten</text>
+    <text id="IDS_COM_SK_ADD">Lägg till</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Blockera</text>
+    <text id="IDS_COM_SK_YES">Ja</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Visa kontakter</text>
+    <text id="IDS_COM_SK_SEARCH">Sök</text>
+    <text id="IDS_COM_POP_AM_M_ABB">FM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Blockerade ord</text>
+    <text id="IDS_COM_BODY_SUBJECT">Rubrik</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Oidentifierad</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Sänd läsrapport</text>
+    <text id="IDS_MSGF_SK_RESTORE">Återställ</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Begär läsrapport</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Ange ord</text>
+    <text id="IDS_COM_SK3_COMPOSE">Skriv</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Okänt fel inträffade</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Begär leveransrapport</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Ogiltiga mottagare</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Broadcast-meddelanden</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Spara bilaga</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Leveransrapport</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Ignorera aktuellt meddelande?</text>
+    <text id="IDS_COM_POP_ATTACH">Bifoga</text>
+    <text id="IDS_COM_BODY_CALENDAR">Kalender</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Samtal</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Spela in video</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Välj mottagare</text>
+</string_table>
diff --git a/res/tur-TR.xml b/res/tur-TR.xml
new file mode 100644 (file)
index 0000000..72ebeb1
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Mesaj ayrıntıları</text>
+    <text id="IDS_COM_SK3_PREVIEW">Önizleme</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d seçildi</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Süre %d saniyeden uzun olmalıdır</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Maksimum karakter sayısı aşıldı. Bazı karakterleri silin</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Hepsini seç</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Konu yok</text>
+    <text id="IDS_COM_POP_CLOSE">Kapat</text>
+    <text id="IDS_COM_BODY_TO">Alıcı</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Resim çek</text>
+    <text id="IDS_COM_POP_DELETE_Q">Sil?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Giriş modu</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Maksimum alıcı sayısına (%d) ulaşıldı</text>
+    <text id="IDS_COM_SK_NO">Hayır</text>
+    <text id="IDS_COM_BODY_MY_FILES">Dosyalarım</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Telefona kopyala</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">CB mesajları</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Servis merkezi</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Gönderme başarısız mesajı</text>
+    <text id="IDS_COM_POP_SUCCESS">Başarılı</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Kısıtlı</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Kişilerinizden aldığınız mesajlar, engelli sözcükler içerse de engellenmeyecektir</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Aç</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Mesaj metni kopyala</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Okundu raporu</text>
+    <text id="IDS_COM_BODY_MESSAGES">Mesajlar</text>
+    <text id="IDS_COM_SK_OPTIONS">Sçnklr</text>
+    <text id="IDS_COM_SK_DONE">Kaydet</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Bilinmeyen</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Taslak mesajlar</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Servis Kullanılamıyor</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Kelime ekle</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">%s engellensin mi?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Ses tuşu ile metin boyutunu değiştirin</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Yeni mesaj</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Spam mesajları</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Dahil et</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Engelli numaralar</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Multimedya mesajları</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Kelime düzenle</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Sona erdi</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Uyarı</text>
+    <text id="IDS_COM_SK_EDIT">Düzenle</text>
+    <text id="IDS_COM_POP_FAILED">Başarısız</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Numarayı sil</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Ses kaydet</text>
+    <text id="IDS_COM_SK_BACK">Geri</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Çoklu dil</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Kelimeleri sil</text>
+    <text id="IDS_COM_BODY_FORWARD">İlet</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Mesaj yok</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Dış şebeke</text>
+    <text id="IDS_MSGF_BODY_FROM">Kimden</text>
+    <text id="IDS_COM_SK_DELETE">Sil</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Okunmamış</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Çoğaltılan alıcı</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM-Alfabesi</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM kart mesajları</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Gönderildi</text>
+    <text id="IDS_COM_BODY_CONTACTS">Rehber</text>
+    <text id="IDS_MSGF_OPT_STATUS">Durum</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Serbest</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Tür</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Oto. indirme</text>
+    <text id="IDS_MSGF_SK_RESEND">Tekrar Gönder</text>
+    <text id="IDS_COM_SK_CANCEL">İptal</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Alma seçenekleri</text>
+    <text id="IDS_COM_BODY_GALLERY">Galeri</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Süre\n(%d san)</text>
+    <text id="IDS_COM_BODY_SEARCH">Buluyor</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Mesaj kutuları</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Numara ekle</text>
+    <text id="IDS_COM_BODY_MEMO">Not</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">SIM'e kopyala</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Numarayı girin</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Kişi ekle</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Ana şebeke</text>
+    <text id="IDS_COM_POP_REJECTED">Reddedildi</text>
+    <text id="IDS_COM_BODY_SETTINGS">Ayarlar</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Başlangıç:</text>
+    <text id="IDS_COM_BODY_DISPLAY">Ekran</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Koruma açık</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Manuel</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM kart hatası</text>
+    <text id="IDS_COM_POP_DELETED">Silindi</text>
+    <text id="IDS_COM_SK_SEND_ABB">Gönder</text>
+    <text id="IDS_MSGF_POP_FORWARDED">İletildi</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Merkez %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Numara düzenle</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Otomatik</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Mesaj ayrıntı göster</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Reddet</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Sesli arama</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Ses tuşunu kullan</text>
+    <text id="IDS_COM_SK_SAVE">Kaydet</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Aynısı</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Hiç arama sonucu bulunamadı</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Oluşturma modu</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Metin mesajları</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Alınan</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Eşleşme kriterleri</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Ertelendi</text>
+    <text id="IDS_COM_SK_ADD">Ekle</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Engelle</text>
+    <text id="IDS_COM_SK_YES">Evet</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Kişiyi görüntüle</text>
+    <text id="IDS_COM_SK_SEARCH">Bul</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Engelli kelimeler</text>
+    <text id="IDS_COM_BODY_SUBJECT">Konu</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Tanınmadı</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Okundu raporu gönder</text>
+    <text id="IDS_MSGF_SK_RESTORE">Geri ykle</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Okundu raporu iste</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Kelime gir</text>
+    <text id="IDS_COM_SK3_COMPOSE">Yaz</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Bilinmeyen hata oluştu</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">İletim raporu talep et</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Geçersiz alıcılar</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Hücre yayını mesajları</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Eki kaydet</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">İletim raporu</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Geçerli mesajdan vazgeçilsin mi?</text>
+    <text id="IDS_COM_POP_ATTACH">Ekle</text>
+    <text id="IDS_COM_BODY_CALENDAR">Takvim</text>
+    <text id="IDS_COM_SK_OK">Tamam</text>
+    <text id="IDS_COM_SK_CALL">Arama</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Video yakala</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Alıcı seç</text>
+</string_table>
diff --git a/res/ukr-UA.xml b/res/ukr-UA.xml
new file mode 100644 (file)
index 0000000..efdc239
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Деталі повідомлення</text>
+    <text id="IDS_COM_SK3_PREVIEW">Перегл.</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">Вибрано %d</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Тривалість має бути більшою за %d сек.</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Перевищено максимальну кількість символів. Видаліть деякі символи</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Вибрати всі</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Немає теми</text>
+    <text id="IDS_COM_POP_CLOSE">Закрити</text>
+    <text id="IDS_COM_BODY_TO">Кому</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Зробити знімок</text>
+    <text id="IDS_COM_POP_DELETE_Q">Видалити?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Режим введення</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Досягнуто максимальної кількості одержувачів (%d)</text>
+    <text id="IDS_COM_SK_NO">Ні</text>
+    <text id="IDS_COM_BODY_MY_FILES">Мої файли</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Копіювати на телефон</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">CB-повідомлення</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">SMS-центр</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Надсилання повідомлення, з яким стався збій</text>
+    <text id="IDS_COM_POP_SUCCESS">Успішно</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Обмежено</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Повідомлення від контактів не блокуватимуться, навіть якщо вони міститимуть заблоковані слова</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Розблокувати</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Копіюв. текст повід.</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">Звіт про прочитання</text>
+    <text id="IDS_COM_BODY_MESSAGES">Повідомлення</text>
+    <text id="IDS_COM_SK_OPTIONS">Опції</text>
+    <text id="IDS_COM_SK_DONE">Готово</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Невідомо</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Чернетки повідомлень</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Послуга недоступна</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">Додати слово</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">Заблокувати абонента %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Змінення розміру тексту за допомогою клавіші гучності</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Нове повідомлення</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Небажані повідомлення</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">Додати</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Заблоковані номери</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">MMS-повідомлення</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">Редагувати слово</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Термін дії вже минув</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Попередження</text>
+    <text id="IDS_COM_SK_EDIT">Редагув.</text>
+    <text id="IDS_COM_POP_FAILED">Збій</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Видалити номер</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Записати звук</text>
+    <text id="IDS_COM_SK_BACK">Назад</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Юнікод</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Видалити слова</text>
+    <text id="IDS_COM_BODY_FORWARD">Переслати</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Немає повідомлень</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Мережа роумінгу</text>
+    <text id="IDS_MSGF_BODY_FROM">Від</text>
+    <text id="IDS_COM_SK_DELETE">Видалити</text>
+    <text id="IDS_MSGF_SK3_UNREAD">Непроч.</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Повторення одержувача</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM-алфавіт</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">Повідомлення SIM-картки</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Надіслано</text>
+    <text id="IDS_COM_BODY_CONTACTS">Контакти</text>
+    <text id="IDS_MSGF_OPT_STATUS">Стан</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Вільно</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Тип</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Автозавантаження</text>
+    <text id="IDS_MSGF_SK_RESEND">Повторити надсилання</text>
+    <text id="IDS_COM_SK_CANCEL">Скасувати</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Опції отримання</text>
+    <text id="IDS_COM_BODY_GALLERY">Галерея</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Тривалість\n(%d сек)</text>
+    <text id="IDS_COM_BODY_SEARCH">Пошук</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Вікна повідомлень</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Додати номер</text>
+    <text id="IDS_COM_BODY_MEMO">Нагадування</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">Копіювати на SIM-картку</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Введіть номер</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Додати контакт</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Домашня мережа</text>
+    <text id="IDS_COM_POP_REJECTED">Відхилено</text>
+    <text id="IDS_COM_BODY_SETTINGS">Установки</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Розпочати</text>
+    <text id="IDS_COM_BODY_DISPLAY">Дисплей</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Увімкнути захист</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Вручну</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">Збій SIM-картки</text>
+    <text id="IDS_COM_POP_DELETED">Видалено</text>
+    <text id="IDS_COM_SK_SEND_ABB">Над.</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Переадресовано</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Центр %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Редагувати номер</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Автоматично</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Перегл. повідомлення</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Відхилити</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Голосовий виклик</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Викор. клавіші гучності</text>
+    <text id="IDS_COM_SK_SAVE">Зберегти</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Повністю збігається з</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Пошук не дав результатів</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Режим створення</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">SMS-повідомлення</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Отримано</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Критерій блокування</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Відкладено</text>
+    <text id="IDS_COM_SK_ADD">Додати</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Блокувати</text>
+    <text id="IDS_COM_SK_YES">Так</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Переглянути контакт</text>
+    <text id="IDS_COM_SK_SEARCH">Пошук</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Заблоковані слова</text>
+    <text id="IDS_COM_BODY_SUBJECT">Тема</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Не розпізнано</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">Надіслати звіт про прочитання</text>
+    <text id="IDS_MSGF_SK_RESTORE">Відновити</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">Запит. звіт про прочитання</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">Введіть слово</text>
+    <text id="IDS_COM_SK3_COMPOSE">Створити</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Сталася невідома помилка</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Запитувати звіт про доставку</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Неприпустимі одержувачі</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">СВ-повідомлення</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Зберегти вкладення</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Звіт про доставку</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Скасувати поточне повідомлення?</text>
+    <text id="IDS_COM_POP_ATTACH">Прикріпити</text>
+    <text id="IDS_COM_BODY_CALENDAR">Календар</text>
+    <text id="IDS_COM_SK_OK">ОК</text>
+    <text id="IDS_COM_SK_CALL">Виклик</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Відеозйомка</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Вибір одержувача</text>
+</string_table>
diff --git a/res/uzb-UZ.xml b/res/uzb-UZ.xml
new file mode 100644 (file)
index 0000000..600e04d
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">Xabar tafsilotlari</text>
+    <text id="IDS_COM_SK3_PREVIEW">Avvaldan ko‘rish</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">%d tanlangan</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">Davomlilik %d soniyadan ko‘proq bo‘lishi lozim</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">Belgilar soni maksimal miqdordan oshib ketdi. Ba’zi belgilarni o'chiring</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">Barchasini tanlash</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">Mavzu yo‘q</text>
+    <text id="IDS_COM_POP_CLOSE">Yopish</text>
+    <text id="IDS_COM_BODY_TO">Kimga</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">Rasmga olish</text>
+    <text id="IDS_COM_POP_DELETE_Q">O'chirilsinmi?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">Kiritish rejimi</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">Qabul qiluvchilar soni ruxsat etilgan maksimal miqdorga (%d) yetdi</text>
+    <text id="IDS_COM_SK_NO">Yo‘q</text>
+    <text id="IDS_COM_BODY_MY_FILES">Mening fayllarim</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">Telefonga nusxa ko‘chirish</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">CB xabarlari</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">Xizmat ko‘rsatish markazi</text>
+    <text id="IDS_COM_BODY_SMS">SMS</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">Yuborilmagan xabarni yuborish</text>
+    <text id="IDS_COM_POP_SUCCESS">Muvaffaqiyat</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">Cheklangan</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Kontaktlaringizdan kelgan xabarlar bloklanmaydi, hatto ular bloklangan so‘zlarga ega bo‘lsa ham</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">Blokdan chiqaring</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">Xabar matnini nusxa</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">O‘qilgan haqidagi hisobot</text>
+    <text id="IDS_COM_BODY_MESSAGES">Xabarlar</text>
+    <text id="IDS_COM_SK_OPTIONS">Opsiyalar</text>
+    <text id="IDS_COM_SK_DONE">Bajarildi</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">Noma’lum</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">Qoralama xabarlar</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">Xizmatdan foydalanib bo‘lmaydi</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">So‘z qo‘shish</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">%s bloklansinmi?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">Ovoz balandligi tugmasi yordamida matn o‘lchamini o‘zgartiring</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">Yangi xabar</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">Spam xabarlari</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">O‘z ichiga oladi</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Bloklangan a’zolar</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">Multimedia xabarlari</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">So‘zni tahrirlash</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">Amal qilish muddati tugadi</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">Ogohlantirish</text>
+    <text id="IDS_COM_SK_EDIT">Tahrirl.</text>
+    <text id="IDS_COM_POP_FAILED">Xato</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">Raqamni o'chirish</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">Audio yozib olish</text>
+    <text id="IDS_COM_SK_BACK">Orqaga</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Yunikod</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">So‘zlarni yo‘q qilish</text>
+    <text id="IDS_COM_BODY_FORWARD">Boshqaga yo‘naltirish</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">Xabarlar yo‘q</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">Tashqi tarmoq</text>
+    <text id="IDS_MSGF_BODY_FROM">Quyidagidan</text>
+    <text id="IDS_COM_SK_DELETE">O'chirish</text>
+    <text id="IDS_MSGF_SK3_UNREAD">O‘qilmagan</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">Takrorlanadigan qabul qiluvchi</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM alifbo</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM-karta xabarlari</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">Yuborildi</text>
+    <text id="IDS_COM_BODY_CONTACTS">Kontaktlar</text>
+    <text id="IDS_MSGF_OPT_STATUS">Holat</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">Bo‘sh</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">Tur</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">Avto-yuklab olish</text>
+    <text id="IDS_MSGF_SK_RESEND">Qay. Yub.</text>
+    <text id="IDS_COM_SK_CANCEL">Bekor q.</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">Qabul qilish opsiyalari</text>
+    <text id="IDS_COM_BODY_GALLERY">Galereya</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">Davomliligi\n(%d soniya)</text>
+    <text id="IDS_COM_BODY_SEARCH">Qidirish</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">Xabar qutilari</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">Raqam qo‘shish</text>
+    <text id="IDS_COM_BODY_MEMO">Eslatma</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">SIM-kartaga nusxa ko‘chirish</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">Raqam kiriting</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">Kontakt qo‘shish</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">Uy tarmog‘i</text>
+    <text id="IDS_COM_POP_REJECTED">Rad etildi</text>
+    <text id="IDS_COM_BODY_SETTINGS">Parametrlar</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">Quyidagi bilan boshlash</text>
+    <text id="IDS_COM_BODY_DISPLAY">Displey</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">Himoya yoq.</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">Qo‘lda</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM-karta mavjud emas</text>
+    <text id="IDS_COM_POP_DELETED">O'chirildi</text>
+    <text id="IDS_COM_SK_SEND_ABB">Yubor</text>
+    <text id="IDS_MSGF_POP_FORWARDED">Boshqaga yo‘naltirildi</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">Markaz %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">Raqamni tahrirlash</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">Avtomatik</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">Xabar tafs. ko‘rish</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">Rad etish</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">Ovozli qo‘ng‘iroq</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">Balandlik tugmasini ishl.</text>
+    <text id="IDS_COM_SK_SAVE">Saqlash</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">Quyidagi bilan bir xil</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">Qidirish natijalari yo‘q</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">Yaratish rejimi</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">Matnli xabarlar</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">Qabul qilindi</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">Moslik kriteriyasi</text>
+    <text id="IDS_MSGF_POP_DEFERRED">Kechiktirildi</text>
+    <text id="IDS_COM_SK_ADD">Qo‘shish</text>
+    <text id="IDS_MSGF_OPT_BLOCK">Bloklash</text>
+    <text id="IDS_COM_SK_YES">Ha</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">Kontaktlarni ko‘rib chiqish</text>
+    <text id="IDS_COM_SK_SEARCH">Qidirish</text>
+    <text id="IDS_COM_POP_AM_M_ABB">AM</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Bloklangan so‘zlar</text>
+    <text id="IDS_COM_BODY_SUBJECT">Mavzu</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">Noma’lum</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">O‘qilganlik haqida hisobot yuborish</text>
+    <text id="IDS_MSGF_SK_RESTORE">Tiklash</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">O‘qilganlik haqidagi hisobot so‘rovi</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">So‘z kiriting</text>
+    <text id="IDS_COM_SK3_COMPOSE">Yaratish</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">Noma’lum xato yuz berdi</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">Yetkazish haqidagi hisobot so‘rovi</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">Noto‘g‘ri qabul qiluvchilar</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">Eshittirishli xabarlar</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">Biriktirmani saqlash</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">Yetkazilganlik haqidagi hisobot</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">Joriy xabar rad etilsinmi?</text>
+    <text id="IDS_COM_POP_ATTACH">Biriktirish</text>
+    <text id="IDS_COM_BODY_CALENDAR">Kalendar</text>
+    <text id="IDS_COM_SK_OK">OK</text>
+    <text id="IDS_COM_SK_CALL">Qo‘ng‘.</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">Video olish</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">Qabul qiluvchini tanlang</text>
+</string_table>
diff --git a/res/zho-CN.xml b/res/zho-CN.xml
new file mode 100644 (file)
index 0000000..0873f19
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">消息详情</text>
+    <text id="IDS_COM_SK3_PREVIEW">预览</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">已选择%d</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">持续时间必须长于 %d 秒</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">已超过字符数上限。请删除部分字符</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">全选</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">没有主题</text>
+    <text id="IDS_COM_POP_CLOSE">关闭</text>
+    <text id="IDS_COM_BODY_TO">至</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">拍照</text>
+    <text id="IDS_COM_POP_DELETE_Q">删除?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">输入模式</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">已达到最大收件人数量(%d)</text>
+    <text id="IDS_COM_SK_NO">否</text>
+    <text id="IDS_COM_BODY_MY_FILES">我的文件</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">复制至手机</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">小区信息</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">短信息服务中心</text>
+    <text id="IDS_COM_BODY_SMS">短信息</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">发送失败的信息</text>
+    <text id="IDS_COM_POP_SUCCESS">成功</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">限制</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">从您的联系人接收的信息不会被阻止,即使其含有已阻止的词语</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">取消阻止</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">复制信息文本</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">阅读报告</text>
+    <text id="IDS_COM_BODY_MESSAGES">信息</text>
+    <text id="IDS_COM_SK_OPTIONS">选项</text>
+    <text id="IDS_COM_SK_DONE">完成</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">未知</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">信息草稿</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">服务无法正常提供</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">添加单词</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">阻止%s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">使用音量键更改文字大小</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">新信息</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">垃圾信息</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">包括</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">已阻止数字</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">彩信</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">编辑文字</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">已过期</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">警告</text>
+    <text id="IDS_COM_SK_EDIT">编辑</text>
+    <text id="IDS_COM_POP_FAILED">失败</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">删除号码</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">录音</text>
+    <text id="IDS_COM_SK_BACK">返回</text>
+    <text id="IDS_MSGF_BODY_UNICODE">单一码</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">删除词</text>
+    <text id="IDS_COM_BODY_FORWARD">转发</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">无信息</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">外国网络</text>
+    <text id="IDS_MSGF_BODY_FROM">发件人</text>
+    <text id="IDS_COM_SK_DELETE">删除</text>
+    <text id="IDS_MSGF_SK3_UNREAD">未读</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">重复的收件人</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM 字母系统</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM卡信息</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">已发送</text>
+    <text id="IDS_COM_BODY_CONTACTS">联系人</text>
+    <text id="IDS_MSGF_OPT_STATUS">状态</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">自由</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">类型</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">自动下载</text>
+    <text id="IDS_MSGF_SK_RESEND">重新发送</text>
+    <text id="IDS_COM_SK_CANCEL">取消</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">接收选项</text>
+    <text id="IDS_COM_BODY_GALLERY">图库</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">时长\n(%d 秒)</text>
+    <text id="IDS_COM_BODY_SEARCH">搜索</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">信箱</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">添加号码</text>
+    <text id="IDS_COM_BODY_MEMO">备忘录</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">复制至 SIM 卡</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">输入号码</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">添加联系人</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">本地网络</text>
+    <text id="IDS_COM_POP_REJECTED">被拒绝</text>
+    <text id="IDS_COM_BODY_SETTINGS">设定</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">开始于</text>
+    <text id="IDS_COM_BODY_DISPLAY">显示</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">保护启动</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">手动</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM 卡不可用</text>
+    <text id="IDS_COM_POP_DELETED">已删除</text>
+    <text id="IDS_COM_SK_SEND_ABB">发送</text>
+    <text id="IDS_MSGF_POP_FORWARDED">已转发</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">中心 %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">编辑号码</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">自动</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">查看信息详情</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">拒绝</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">语音通话</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">使用音量键</text>
+    <text id="IDS_COM_SK_SAVE">保存</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">完全一样</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">无搜索结果</text>
+    <text id="IDS_MSGF_BODY_MMS">彩信</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">创建模式</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">短信</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">已接收</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">匹配标准</text>
+    <text id="IDS_MSGF_POP_DEFERRED">已延迟</text>
+    <text id="IDS_COM_SK_ADD">添加</text>
+    <text id="IDS_MSGF_OPT_BLOCK">阻止</text>
+    <text id="IDS_COM_SK_YES">是</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">查看联系人</text>
+    <text id="IDS_COM_SK_SEARCH">搜索</text>
+    <text id="IDS_COM_POP_AM_M_ABB">上午</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">已阻止词语</text>
+    <text id="IDS_COM_BODY_SUBJECT">主题</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">不承认</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">发送读取报告</text>
+    <text id="IDS_MSGF_SK_RESTORE">恢复</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">要求阅读报告</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">输入单词</text>
+    <text id="IDS_COM_SK3_COMPOSE">编写</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">未知错误产生</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">要求送达报告</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">无效收件人</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">广播信息</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">存储附件</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">发送报告</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">丢弃当前信息?</text>
+    <text id="IDS_COM_POP_ATTACH">附加</text>
+    <text id="IDS_COM_BODY_CALENDAR">日历</text>
+    <text id="IDS_COM_SK_OK">确定</text>
+    <text id="IDS_COM_SK_CALL">通话</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">拍摄录像</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">选择收件人</text>
+</string_table>
diff --git a/res/zho-HK.xml b/res/zho-HK.xml
new file mode 100644 (file)
index 0000000..6e6a40e
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">訊息詳情</text>
+    <text id="IDS_COM_SK3_PREVIEW">預覽</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">已選擇 %d</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">持續時間必須超過 %d 秒</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">已超出字元數目上限。刪除一些字元</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">選擇全部</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">無主題</text>
+    <text id="IDS_COM_POP_CLOSE">關閉</text>
+    <text id="IDS_COM_BODY_TO">至</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">拍照</text>
+    <text id="IDS_COM_POP_DELETE_Q">刪除嗎?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">輸入方法</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">已達收件人的數量上限(%d)</text>
+    <text id="IDS_COM_SK_NO">否</text>
+    <text id="IDS_COM_BODY_MY_FILES">我的檔案</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">複製到手機</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">區域廣播訊息</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">服務中心</text>
+    <text id="IDS_COM_BODY_SMS">短訊</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">正在發送失敗的訊息</text>
+    <text id="IDS_COM_POP_SUCCESS">成功</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">限制</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">不會封鎖來自聯絡人的訊息,即使其中包含已封鎖的字詞</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">取消封鎖</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">複製訊息文字</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">讀取報告</text>
+    <text id="IDS_COM_BODY_MESSAGES">訊息</text>
+    <text id="IDS_COM_SK_OPTIONS">選項</text>
+    <text id="IDS_COM_SK_DONE">完成</text>
+    <text id="IDS_COM_POP_PM">下午</text>
+    <text id="IDS_COM_BODY_UNKNOWN">未知</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">草稿訊息</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">無可用服務</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">加入單詞</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">封鎖 %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">使用音量鍵更改文字大小</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">新訊息</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">垃圾訊息</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">包括</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">已封鎖號碼</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">多媒體訊息</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">編輯字詞</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">已過期</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">警告</text>
+    <text id="IDS_COM_SK_EDIT">編輯</text>
+    <text id="IDS_COM_POP_FAILED">失敗</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">刪除號碼</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">錄音</text>
+    <text id="IDS_COM_SK_BACK">返回</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">刪除字詞</text>
+    <text id="IDS_COM_BODY_FORWARD">轉寄</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">無訊息</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">漫遊網絡</text>
+    <text id="IDS_MSGF_BODY_FROM">由</text>
+    <text id="IDS_COM_SK_DELETE">刪除</text>
+    <text id="IDS_MSGF_SK3_UNREAD">未讀</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">重複的收件人</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM 字符表</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM 卡訊息</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">已發送</text>
+    <text id="IDS_COM_BODY_CONTACTS">聯絡人</text>
+    <text id="IDS_MSGF_OPT_STATUS">狀態</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">可用</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">類型</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">自動下載</text>
+    <text id="IDS_MSGF_SK_RESEND">重新發送</text>
+    <text id="IDS_COM_SK_CANCEL">取消</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">接收選項</text>
+    <text id="IDS_COM_BODY_GALLERY">媒體瀏覽器</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">持續時間n(%d 秒)</text>
+    <text id="IDS_COM_BODY_SEARCH">搜尋</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">訊息箱</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">加入號碼</text>
+    <text id="IDS_COM_BODY_MEMO">備忘錄</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">複製到 SIM 卡</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">輸入號碼</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">加入到聯絡人</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">本地網絡</text>
+    <text id="IDS_COM_POP_REJECTED">已拒絕</text>
+    <text id="IDS_COM_BODY_SETTINGS">設定</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">開始以</text>
+    <text id="IDS_COM_BODY_DISPLAY">顯示</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">保護開</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">手動</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM 卡不可用</text>
+    <text id="IDS_COM_POP_DELETED">已刪除</text>
+    <text id="IDS_COM_SK_SEND_ABB">發送</text>
+    <text id="IDS_MSGF_POP_FORWARDED">已轉寄</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">中心 %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">編輯號碼</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">自動</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">檢視訊息詳情</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">拒絕</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">語音通話</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">使用音量鍵</text>
+    <text id="IDS_COM_SK_SAVE">儲存</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">完全相同於</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">無搜尋結果</text>
+    <text id="IDS_MSGF_BODY_MMS">MMS</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">建立模式</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">文字訊息</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">已接收</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">符合標準</text>
+    <text id="IDS_MSGF_POP_DEFERRED">已延期</text>
+    <text id="IDS_COM_SK_ADD">加入</text>
+    <text id="IDS_MSGF_OPT_BLOCK">封鎖</text>
+    <text id="IDS_COM_SK_YES">是</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">檢視聯絡人</text>
+    <text id="IDS_COM_SK_SEARCH">搜尋</text>
+    <text id="IDS_COM_POP_AM_M_ABB">上午</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">已封鎖字詞</text>
+    <text id="IDS_COM_BODY_SUBJECT">主題</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">無法識別</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">發送讀取報告</text>
+    <text id="IDS_MSGF_SK_RESTORE">還原</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">請求讀取報告</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">輸入字詞</text>
+    <text id="IDS_COM_SK3_COMPOSE">撰寫</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">發生未知錯誤</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">請求傳遞報告</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">無效收件人</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">廣播訊息</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">儲存附件</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">傳遞報告</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">捨棄目前的訊息嗎?</text>
+    <text id="IDS_COM_POP_ATTACH">附加</text>
+    <text id="IDS_COM_BODY_CALENDAR">日曆</text>
+    <text id="IDS_COM_SK_OK">確定</text>
+    <text id="IDS_COM_SK_CALL">撥出</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">拍攝影片</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">選擇收件人</text>
+</string_table>
diff --git a/res/zho-SG.xml b/res/zho-SG.xml
new file mode 100644 (file)
index 0000000..c5189af
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">消息详情</text>
+    <text id="IDS_COM_SK3_PREVIEW">预览</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">已选择%d</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">持续时间必须长于 %d 秒</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">已超过字符数上限。请删除部分字符</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">全选</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">没有主题</text>
+    <text id="IDS_COM_POP_CLOSE">关闭</text>
+    <text id="IDS_COM_BODY_TO">到</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">拍照</text>
+    <text id="IDS_COM_POP_DELETE_Q">删除?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">输入方法</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">已达到最大收件人数量(%d)</text>
+    <text id="IDS_COM_SK_NO">否</text>
+    <text id="IDS_COM_BODY_MY_FILES">我的文件</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">复制至手机</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">小区信息</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">简讯服务中心</text>
+    <text id="IDS_COM_BODY_SMS">讯息</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">发送失败的信息</text>
+    <text id="IDS_COM_POP_SUCCESS">成功</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">限制</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">Messages received from your contacts will not be blocked even if they contain blocked words</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">取消阻止</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">复制信息文本</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">阅读报告</text>
+    <text id="IDS_COM_BODY_MESSAGES">讯息</text>
+    <text id="IDS_COM_SK_OPTIONS">选项</text>
+    <text id="IDS_COM_SK_DONE">已完成</text>
+    <text id="IDS_COM_POP_PM">PM</text>
+    <text id="IDS_COM_BODY_UNKNOWN">未知</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">信息草稿</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">服务不适用</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">添加字词</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">阻止%s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">使用音量键更改文字大小</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">新讯息</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">垃圾信息</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">包括</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">Blocked numbers</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">多媒体简讯</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">编辑文字</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">已过期</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">警告</text>
+    <text id="IDS_COM_SK_EDIT">编辑</text>
+    <text id="IDS_COM_POP_FAILED">失败</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">删除号码</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">录音</text>
+    <text id="IDS_COM_SK_BACK">返回</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">Delete words</text>
+    <text id="IDS_COM_BODY_FORWARD">转发</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">无讯息</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">外国网络</text>
+    <text id="IDS_MSGF_BODY_FROM">发件人</text>
+    <text id="IDS_COM_SK_DELETE">删除</text>
+    <text id="IDS_MSGF_SK3_UNREAD">未读</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">重复的收件人</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM字母系统</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM卡信息</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">已发送</text>
+    <text id="IDS_COM_BODY_CONTACTS">联系人</text>
+    <text id="IDS_MSGF_OPT_STATUS">状态</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">自由</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">类型</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">自动下载</text>
+    <text id="IDS_MSGF_SK_RESEND">重新发送</text>
+    <text id="IDS_COM_SK_CANCEL">取消</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">接收选项</text>
+    <text id="IDS_COM_BODY_GALLERY">画廊</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">时长\n(%d 秒)</text>
+    <text id="IDS_COM_BODY_SEARCH">搜寻</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">信箱</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">添加号码</text>
+    <text id="IDS_COM_BODY_MEMO">备忘录</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">复制至SIM卡</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">输入号码</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">添加联系人</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">本地网络</text>
+    <text id="IDS_COM_POP_REJECTED">被拒</text>
+    <text id="IDS_COM_BODY_SETTINGS">设定</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">开始以</text>
+    <text id="IDS_COM_BODY_DISPLAY">显示</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">保护开启</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">手动</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM 卡不可用</text>
+    <text id="IDS_COM_POP_DELETED">已删除</text>
+    <text id="IDS_COM_SK_SEND_ABB">发送</text>
+    <text id="IDS_MSGF_POP_FORWARDED">已转寄</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">中心 %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">编辑号码</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">自动</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">查看信息详情</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">拒绝</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">语音通话</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">使用音量键</text>
+    <text id="IDS_COM_SK_SAVE">储存</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">完全一样</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">无搜索结果</text>
+    <text id="IDS_MSGF_BODY_MMS">多媒体简讯</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">创建模式</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">简讯</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">已接收</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">匹配标准</text>
+    <text id="IDS_MSGF_POP_DEFERRED">已延迟</text>
+    <text id="IDS_COM_SK_ADD">添加</text>
+    <text id="IDS_MSGF_OPT_BLOCK">阻止</text>
+    <text id="IDS_COM_SK_YES">是</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">查看联系人</text>
+    <text id="IDS_COM_SK_SEARCH">搜寻</text>
+    <text id="IDS_COM_POP_AM_M_ABB">上午</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">Blocked words</text>
+    <text id="IDS_COM_BODY_SUBJECT">主题</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">不承认</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">发送阅读报告</text>
+    <text id="IDS_MSGF_SK_RESTORE">重置</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">要求阅读报告</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">输入单词</text>
+    <text id="IDS_COM_SK3_COMPOSE">编写</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">未知错误产生</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">要求传递报告</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">无效收件人</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">广播讯息</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">存储附件</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">送达报告</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">丢弃当前信息?</text>
+    <text id="IDS_COM_POP_ATTACH">附件</text>
+    <text id="IDS_COM_BODY_CALENDAR">日历</text>
+    <text id="IDS_COM_SK_OK">确认</text>
+    <text id="IDS_COM_SK_CALL">通话</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">拍摄视频</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">选择收件人</text>
+</string_table>
diff --git a/res/zho-TW.xml b/res/zho-TW.xml
new file mode 100644 (file)
index 0000000..43f12eb
--- /dev/null
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+       This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201301241731" Dversion="20120315">
+    <text id="IDS_MSGF_HEADER_MESSAGE_DETAILS">訊息詳細資訊</text>
+    <text id="IDS_COM_SK3_PREVIEW">預覽</text>
+    <text id="IDS_COM_BODY_PD_SELECTED">已選擇 %d</text>
+    <text id="IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS">時間必須超過 %d 秒</text>
+    <text id="IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS">超過字元數上限。刪除部分字元</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_WORDS">No blocked words</text>
+    <text id="IDS_COM_BODY_SELECT_ALL">全選</text>
+    <text id="IDS_MSGF_BODY_NO_SUBJECT">無主旨</text>
+    <text id="IDS_COM_POP_CLOSE">關閉</text>
+    <text id="IDS_COM_BODY_TO">至</text>
+    <text id="IDS_MSGC_BODY_TAKE_PICTURE">拍照</text>
+    <text id="IDS_COM_POP_DELETE_Q">要刪除嗎?</text>
+    <text id="IDS_MSGC_HEADER_INPUTMODE">輸入模式</text>
+    <text id="IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED">收件人的最大數量(%d位)已達到</text>
+    <text id="IDS_COM_SK_NO">否</text>
+    <text id="IDS_COM_BODY_MY_FILES">我的檔案</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_PHONE">複製到手機</text>
+    <text id="IDS_MSGF_BODY_CB_MESSAGES">區域廣播訊息</text>
+    <text id="IDS_MSGF_BODY_SERVICECENTRE">服務中心</text>
+    <text id="IDS_COM_BODY_SMS">簡訊</text>
+    <text id="IDS_MSGF_POP_SENDING_FAILED_MESSAGE">訊息傳送失敗</text>
+    <text id="IDS_COM_POP_SUCCESS">成功</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS">Messages received from your contacts will not be blocked even if they contain blocked numbers</text>
+    <text id="IDS_MSG_SELECT_WORDS">Select words (%d)</text>
+    <text id="IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED">限制</text>
+    <text id="IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS">不會封鎖來自聯絡人的訊息,即使其中包含封鎖的字詞</text>
+    <text id="IDS_MSGF_OPT_UNBLOCK">解除封鎖</text>
+    <text id="IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB">複製訊息文字</text>
+    <text id="IDS_MSGF_BODY_READ_REPORT">讀取報告</text>
+    <text id="IDS_COM_BODY_MESSAGES">訊息</text>
+    <text id="IDS_COM_SK_OPTIONS">選項</text>
+    <text id="IDS_COM_SK_DONE">完成</text>
+    <text id="IDS_COM_POP_PM">下午</text>
+    <text id="IDS_COM_BODY_UNKNOWN">未知</text>
+    <text id="IDS_MSG_BODY_DRAFT_MESSAGES">草稿訊息</text>
+    <text id="IDS_COM_POP_SERVICE_UNAVAILABLE">無法使用服務</text>
+    <text id="IDS_MSGF_OPT_CREATEMSG_ADD_WORD">加入字詞</text>
+    <text id="IDS_MSGF_POP_BLOCK_PS_Q">是否封鎖 %s?</text>
+    <text id="IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY">使用音量鍵變更文字大小</text>
+    <text id="IDS_COM_POP_NEW_MESSAGE">新訊息</text>
+    <text id="IDS_MSGF_BODY_SPAM_MESSAGES">垃圾訊息</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_INCLUDE">包括</text>
+    <text id="IDS_MSGF_BODY_NO_BLOCKED_NUMBERS">No blocked numbers</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_NUMBERS">封鎖的號碼</text>
+    <text id="IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE">多媒體訊息</text>
+    <text id="IDS_MSGF_BODY_EDIT_WORD">編輯文字</text>
+    <text id="IDS_MSGF_BODY_EXPIRED">已過期</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING">警告</text>
+    <text id="IDS_COM_SK_EDIT">編輯</text>
+    <text id="IDS_COM_POP_FAILED">失敗</text>
+    <text id="IDS_MSGF_HEADER_DELETE_NUMBER">刪除號碼</text>
+    <text id="IDS_MSGC_BODY_RECORD_AUDIO">錄音</text>
+    <text id="IDS_COM_SK_BACK">返回</text>
+    <text id="IDS_MSGF_BODY_UNICODE">Unicode</text>
+    <text id="IDS_MSGF_HEADER_DELETE_WORDS">選擇字詞</text>
+    <text id="IDS_COM_BODY_FORWARD">轉寄</text>
+    <text id="IDS_MSGF_POP_NOMESSAGES">無訊息</text>
+    <text id="IDS_MSGF_OPT_ROAM_NETWORK">外部網路</text>
+    <text id="IDS_MSGF_BODY_FROM">自</text>
+    <text id="IDS_COM_SK_DELETE">刪除</text>
+    <text id="IDS_MSGF_SK3_UNREAD">未讀</text>
+    <text id="IDS_MSGC_BODY_DUPLICATED_RECIPIENT">重複的收件人</text>
+    <text id="IDS_MSGF_BODY_GSM_ALPHABET">GSM 字母表</text>
+    <text id="IDS_MSGF_BODY_SIM_CARD_MESSAGES">SIM 卡訊息</text>
+    <text id="IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT">已傳送</text>
+    <text id="IDS_COM_BODY_CONTACTS">聯絡人</text>
+    <text id="IDS_MSGF_OPT_STATUS">狀態</text>
+    <text id="IDS_MSGF_BODY_MMSCCCREATIONMODEFREE">可用</text>
+    <text id="IDS_COM_BODY_DETAILS_TYPE">類型</text>
+    <text id="IDS_MSGF_BODY_AUTODOWNLOAD">自動下載</text>
+    <text id="IDS_MSGF_SK_RESEND">重新傳送</text>
+    <text id="IDS_COM_SK_CANCEL">取消</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONS">接收選項</text>
+    <text id="IDS_COM_BODY_GALLERY">媒體瀏覽器</text>
+    <text id="IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS">持續時間n(%d 秒)</text>
+    <text id="IDS_COM_BODY_SEARCH">搜尋</text>
+    <text id="IDS_MSGF_HEADER_MESSAGE_BOXES">訊息方塊</text>
+    <text id="IDS_MSGF_HEADER_ADD_NUMBER">新增號碼</text>
+    <text id="IDS_COM_BODY_MEMO">備忘錄</text>
+    <text id="IDS_MSGF_BODY_COPY_TO_SIM">複製到 SIM 卡</text>
+    <text id="IDS_MSGF_BODY_ENTER_NUMBER">輸入號碼</text>
+    <text id="IDS_COM_OPT_ADD_CONTACT">新增聯絡人</text>
+    <text id="IDS_MSGF_OPT_HOME_NETWORK">本地網路</text>
+    <text id="IDS_COM_POP_REJECTED">已拒絕</text>
+    <text id="IDS_COM_BODY_SETTINGS">設定</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_START_WITH">開始</text>
+    <text id="IDS_COM_BODY_DISPLAY">顯示</text>
+    <text id="IDS_MSGF_OPT_PROTECTION_ON">保護開啟</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL">手動模式</text>
+    <text id="IDS_SLCD_POP_TEXT_SIM_CARD_ERROR">SIM 卡無法使用</text>
+    <text id="IDS_COM_POP_DELETED">已刪除</text>
+    <text id="IDS_COM_SK_SEND_ABB">傳送</text>
+    <text id="IDS_MSGF_POP_FORWARDED">已轉寄</text>
+    <text id="IDS_MSG_SELECT_NUMBERS">Select numbers (%d)</text>
+    <text id="IDS_MSGF_BODY_CENTRE_PD">中心 %d</text>
+    <text id="IDS_MSGF_HEADER_EDIT_NUMBER">編輯號碼</text>
+    <text id="IDS_MSGF_BODY_AUTOMATIC">自動</text>
+    <text id="IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB">檢視訊息詳細資料</text>
+    <text id="IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT">拒絕</text>
+    <text id="IDS_COM_BODY_VOICE_CALL">語音通話</text>
+    <text id="IDS_MSG_MBODY_USE_THE_VOLUME_KEY">使用音量鍵</text>
+    <text id="IDS_COM_SK_SAVE">儲存</text>
+    <text id="IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS">Invalid service centre address</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS">完全一樣</text>
+    <text id="IDS_COM_BODY_NO_SEARCH_RESULTS">無搜尋結果</text>
+    <text id="IDS_MSGF_BODY_MMS">多媒體訊息</text>
+    <text id="IDS_MSGF_BODY_MMSCREATIONMODE">建立模式</text>
+    <text id="IDS_MSGF_BODY_TEXT_MESSAGES">簡訊</text>
+    <text id="IDS_MSGF_BODY_RECEIVED">已接收</text>
+    <text id="IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA">符合條件</text>
+    <text id="IDS_MSGF_POP_DEFERRED">已延期</text>
+    <text id="IDS_COM_SK_ADD">新增</text>
+    <text id="IDS_MSGF_OPT_BLOCK">封鎖</text>
+    <text id="IDS_COM_SK_YES">是</text>
+    <text id="IDS_MSGC_OPT_VIEW_CONTACT">檢視聯絡人</text>
+    <text id="IDS_COM_SK_SEARCH">搜尋</text>
+    <text id="IDS_COM_POP_AM_M_ABB">上午</text>
+    <text id="IDS_MSGF_BODY_BLOCKED_WORDS">封鎖的字詞</text>
+    <text id="IDS_COM_BODY_SUBJECT">主旨</text>
+    <text id="IDS_MSGF_POP_UNRECOGNISED">無法辨識</text>
+    <text id="IDS_MSGF_BODY_SEND_READ_REPORT">傳送讀取報告</text>
+    <text id="IDS_MSGF_SK_RESTORE">還原</text>
+    <text id="IDS_MSGF_BODY_REQUEST_READ_REPORT">要求讀取報告</text>
+    <text id="IDS_MSGF_BODY_ENTER_WORD">輸入字詞</text>
+    <text id="IDS_COM_SK3_COMPOSE">撰寫</text>
+    <text id="IDS_COM_POP_UNKNOWN_ERROR_OCCURRED">已發生未知錯誤</text>
+    <text id="IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT">要求傳遞報告</text>
+    <text id="IDS_MSGF_BODY_INVALID_RECIPIENTS">無效接收者</text>
+    <text id="IDS_MSGF_BODY_BROADCASTMESSAGES">廣播訊息</text>
+    <text id="IDS_MSGF_OPT_SAVE_ATTACHMENT">儲存附件</text>
+    <text id="IDS_MSGF_BODY_DELIVERY_REPORT">傳遞報告</text>
+    <text id="IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q">放棄目前訊息</text>
+    <text id="IDS_COM_POP_ATTACH">附件</text>
+    <text id="IDS_COM_BODY_CALENDAR">日曆</text>
+    <text id="IDS_COM_SK_OK">確定</text>
+    <text id="IDS_COM_SK_CALL">通話</text>
+    <text id="IDS_MSGC_BODY_CAPTURE_VIDEO">拍攝影片</text>
+    <text id="IDS_MSG_HEADER_SELECT_RECIPIENT">選擇收件人</text>
+</string_table>
diff --git a/shared/data/nofile.dummy b/shared/data/nofile.dummy
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/shared/res/screen-density-xhigh/mainmenu.png b/shared/res/screen-density-xhigh/mainmenu.png
new file mode 100644 (file)
index 0000000..1c12128
Binary files /dev/null and b/shared/res/screen-density-xhigh/mainmenu.png differ
diff --git a/shared/trusted/nofile.dummy b/shared/trusted/nofile.dummy
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/MsgAttachListPanel.cpp b/src/MsgAttachListPanel.cpp
new file mode 100644 (file)
index 0000000..464b031
--- /dev/null
@@ -0,0 +1,251 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <FApp.h>\r
+#include <FIo.h>\r
+#include <FMedia.h>\r
+#include <FSysEnvironment.h>\r
+\r
+#include "MsgAttachListPanel.h"\r
+#include "MsgBitmapUtility.h"\r
+#include "MsgCommonUtil.h"\r
+#include "MsgTypes.h"\r
+#include "MsgMessageData.h"\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Io;\r
+using namespace Tizen::Media;\r
+using namespace Tizen::System;\r
+using namespace Tizen::Ui::Controls;\r
+\r
+const wchar_t* IDB_CONTROLBAR_ICON_SAVE = L"M01_controlbar_icon_save.png";\r
+const wchar_t* IDB_ICON_SAVE = L"M01_icon_save.png";\r
+const wchar_t* IDS_LOCAL_DOWNLOADS = L"Downloads/";\r
+\r
+enum ListElementID\r
+{\r
+       LIST_ELEMENT_ICON,\r
+       LIST_ELEMENT_TEXT,\r
+       LIST_ELEMENT_SAVE_IMAGE\r
+};\r
+\r
+AttachListPanel::AttachListPanel(MessageData* pMessageDta)\r
+       : __messageData(pMessageDta)\r
+       , __pAttachFileArray(null)\r
+       , __pPanel(null)\r
+       , __pListView(null)\r
+{\r
+\r
+\r
+}\r
+\r
+AttachListPanel::~AttachListPanel()\r
+{\r
+\r
+       AppLogDebug("ENTER");\r
+       if (__pAttachFileArray)\r
+       {\r
+               __pAttachFileArray->RemoveAll(true);\r
+               delete __pAttachFileArray;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+\r
+}\r
+\r
+result\r
+AttachListPanel::Construct(void)\r
+{\r
+\r
+       AppLogDebug("ENTER");\r
+       result r = Panel::Construct(L"IDL_PANEL_ATTACH_FILES_LIST");\r
+       if (!IsFailed(r))\r
+       {\r
+               // Inialize attachments file path\r
+               __pAttachFileArray = new (std::nothrow) ArrayList();\r
+               __pAttachFileArray->Construct();\r
+               int attachCount = __messageData->GetAttachmentCount();\r
+               const ArrayList* pAttachList = __messageData->GetAttachList();\r
+               for (int attachIndex = 0; attachIndex < attachCount; attachIndex++)\r
+               {\r
+                       String* pAttachFile = (String*) pAttachList->GetAt(attachIndex);\r
+                       if (pAttachFile && !(pAttachFile->IsEmpty()))\r
+                       {\r
+                               Bitmap* pIconBitmap = GetIconN(*pAttachFile);\r
+                               AttachMentsObject* pAttachmentObj = new (std::nothrow) AttachMentsObject(*pAttachFile, pIconBitmap);\r
+                               __pAttachFileArray->Add(pAttachmentObj);\r
+                       }\r
+               }\r
+               ListView* pAttachmentsListview = static_cast<ListView*>(GetControl(L"IDC_ATTACH_FILES_LISTVIEW"));\r
+               pAttachmentsListview->SetBackgroundColor(COLOR_LIST_DIALOGUE_GROUP_BG);\r
+               pAttachmentsListview->SetItemProvider(*this);\r
+               pAttachmentsListview->AddListViewItemEventListener(*this);\r
+\r
+               int increaseHeight(0);\r
+               if (__pAttachFileArray->GetCount() > 0)\r
+               {\r
+                       int visibleListItemCount(__pAttachFileArray->GetCount());\r
+                       if (visibleListItemCount > 6)\r
+                       {\r
+                               visibleListItemCount = 6;\r
+                       }\r
+                       increaseHeight = (visibleListItemCount + 1) * H_LIST_ITEM_128PX;\r
+               }\r
+               // Adjust size and control position.\r
+               Panel::SetSize(Dimension(GetWidth(), increaseHeight));\r
+               Panel::SetPosition(16, 96);\r
+               pAttachmentsListview->SetSize(pAttachmentsListview->GetWidth(), increaseHeight);\r
+\r
+\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+//IListViewItemProvider\r
+ListItemBase*\r
+AttachListPanel::CreateItem(int index, int itemWidth)\r
+{\r
+       AppLogDebug("ENTER");\r
+       CustomItem* pItem = new (std::nothrow) CustomItem();\r
+       pItem->Construct(Dimension(itemWidth, H_LIST_ITEM_128PX), LIST_ANNEX_STYLE_NORMAL);\r
+       if (index == 0)\r
+       {\r
+               const String fileName(L"Save all"); // = static_cast<String*>(__pAttachFileArray->GetAt(index));\r
+               pItem->AddElement(Rectangle(16, 28, 400, 72), LIST_ELEMENT_TEXT, fileName);\r
+               Bitmap* pBitMap = AppResource::GetInstance()->GetBitmapN(IDB_CONTROLBAR_ICON_SAVE);\r
+               pItem->AddElement(Rectangle(600, 28, 72, 72), LIST_ELEMENT_SAVE_IMAGE, *pBitMap);\r
+               delete pBitMap;\r
+       }\r
+       else\r
+       {\r
+               const AttachMentsObject* pAttachment = static_cast<AttachMentsObject*>(__pAttachFileArray->GetAt(index - 1));\r
+               if (pAttachment->GetIcon())\r
+               {\r
+                       pItem->AddElement(Rectangle(MARGIN_16PX, (H_LIST_ITEM_112PX - pAttachment->GetIcon()->GetHeight()) / 2,\r
+                                                                               pAttachment->GetIcon()->GetWidth(), pAttachment->GetIcon()->GetHeight()),\r
+                                                         LIST_ELEMENT_ICON, *pAttachment->GetIcon());\r
+                       pItem->AddElement(Rectangle(104, 28, 400, 72),\r
+                                                         LIST_ELEMENT_TEXT, File::GetFileName(pAttachment->GetAttachmentPath()));\r
+                       Bitmap* pBitMap = AppResource::GetInstance()->GetBitmapN(IDB_CONTROLBAR_ICON_SAVE);\r
+                       pItem->AddElement(Rectangle(600, 28, 72, 72), LIST_ELEMENT_SAVE_IMAGE, *pBitMap);\r
+                       delete pBitMap;\r
+               }\r
+               else\r
+               {\r
+                       pItem->AddElement(Rectangle(104, 28, 400, 72),\r
+                                                         LIST_ELEMENT_TEXT, File::GetFileName(pAttachment->GetAttachmentPath()));\r
+                       Bitmap* pBitMap = AppResource::GetInstance()->GetBitmapN(IDB_ICON_SAVE);\r
+                       pItem->AddElement(Rectangle(600, 28, 72, 72), LIST_ELEMENT_SAVE_IMAGE, *pBitMap);\r
+                       delete pBitMap;\r
+               }\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pItem;\r
+}\r
+\r
+void\r
+AttachListPanel::OnListViewItemStateChanged(ListView& listView, int index,\r
+                                                                                       int elementId, ListItemStatus status)\r
+{\r
+       AppLogDebug("ENTER");\r
+       switch (status)\r
+       {\r
+       case LIST_ITEM_STATUS_SELECTED:\r
+       {\r
+               if (index == 0 && elementId == LIST_ELEMENT_SAVE_IMAGE)\r
+               {\r
+                       for (int attachFileNumber = 0; attachFileNumber < __pAttachFileArray->GetCount(); attachFileNumber++)\r
+                       {\r
+                               AttachMentsObject* pAttachment = (AttachMentsObject*) __pAttachFileArray->GetAt(attachFileNumber);\r
+                               if (pAttachment && !pAttachment->GetAttachmentPath().IsEmpty())\r
+                               {\r
+                                       String destFile;\r
+                                       destFile.Append(Environment::GetMediaPath() + IDS_LOCAL_DOWNLOADS + File::GetFileName(pAttachment->GetAttachmentPath()));\r
+                                       AppLogDebug("Source File: %S, Destination File: %S", pAttachment->GetAttachmentPath().GetPointer(), destFile.GetPointer());\r
+                                       File::Copy(pAttachment->GetAttachmentPath(), destFile, false);\r
+                               }\r
+                       }\r
+               }\r
+               else if (elementId == LIST_ELEMENT_SAVE_IMAGE)\r
+               {\r
+                       AttachMentsObject* pAttachment = (AttachMentsObject*) __pAttachFileArray->GetAt(index - 1);\r
+                       if (pAttachment && !pAttachment->GetAttachmentPath().IsEmpty())\r
+                       {\r
+                               String destFile;\r
+                               destFile.Append(Environment::GetMediaPath() + IDS_LOCAL_DOWNLOADS + File::GetFileName(pAttachment->GetAttachmentPath()));\r
+                               AppLogDebug("Source File: %S, Destination File: %S", pAttachment->GetAttachmentPath().GetPointer(), destFile.GetPointer());\r
+                               File::Copy(pAttachment->GetAttachmentPath(), destFile, false);\r
+                       }\r
+               }\r
+       }\r
+       break;\r
+\r
+       case LIST_ITEM_STATUS_HIGHLIGHTED:\r
+       case LIST_ITEM_STATUS_CHECKED:\r
+       case LIST_ITEM_STATUS_UNCHECKED:\r
+       case LIST_ITEM_STATUS_MORE:\r
+               break;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+bool\r
+AttachListPanel::DeleteItem(int index, ListItemBase* pItem, int itemWidth)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (pItem)\r
+       {\r
+               delete pItem;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return true;\r
+}\r
+\r
+int\r
+AttachListPanel::GetItemCount(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return (__pAttachFileArray->GetCount() + 1);\r
+}\r
+\r
+Bitmap*\r
+AttachListPanel::GetIconN(const String& filePath) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       Bitmap* pBitmap = null;\r
+       if (CommonUtil::IsImageFile(filePath))\r
+       {\r
+               Image* pImage = new (std::nothrow) Image();\r
+               if (pImage)\r
+               {\r
+                       pImage->Construct();\r
+                       pBitmap = pImage->DecodeN(filePath,\r
+                                                                         BITMAP_PIXEL_FORMAT_ARGB8888, W_ICON_64PX, H_ICON_64PX);\r
+                       delete pImage;\r
+               }\r
+       }\r
+       else\r
+       {\r
+               pBitmap = BitmapUtility::GetInstance()->GetIconByFileExtN(filePath);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pBitmap;\r
+}\r
diff --git a/src/MsgAttachListPopup.cpp b/src/MsgAttachListPopup.cpp
new file mode 100644 (file)
index 0000000..c81743c
--- /dev/null
@@ -0,0 +1,282 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <FApp.h>\r
+\r
+#include "MsgAttachListPopup.h"\r
+#include "MsgBitmapUtility.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Ui::Controls;\r
+\r
+AttachListPopup::AttachListPopup(Control& parent)\r
+       : __parentCntl(parent)\r
+       , __pAttachList(null)\r
+       , __pAttachListView(null)\r
+       , __pCloseButton(null)\r
+{\r
+}\r
+\r
+AttachListPopup::~AttachListPopup(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pAttachList)\r
+       {\r
+               __pAttachList->RemoveAll(true);\r
+               delete __pAttachList;\r
+       }\r
+}\r
+\r
+result\r
+AttachListPopup::Construct(bool hideSubject)\r
+{\r
+       AppLogDebug("ENTER");\r
+       result r = Popup::Construct(L"IDL_ATTACH_LIST_POPUP");\r
+       if (!IsFailed(r))\r
+       {\r
+               // Transfer ownership\r
+               Bitmap* pBottomBg = BitmapUtility::GetInstance()->GetIconN(MSG_ICON_BUTTON_PANEL_BG);\r
+               SetFooterBackgroundBitmap(pBottomBg);\r
+               __pAttachList = new (std::nothrow) ArrayList();\r
+               __pAttachList->Construct();\r
+               // Load attach list element.\r
+               String strText;\r
+               AttachObject* pAttachItem = null;\r
+               if (!hideSubject)\r
+               {\r
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_SUBJECT", strText);\r
+                       pAttachItem = new (std::nothrow) AttachObject(strText, ATTACH_ELEMENT_SUBJECT);\r
+                       if (__pAttachList->Add(pAttachItem) != E_SUCCESS)\r
+                       {\r
+                               delete pAttachItem;\r
+                       }\r
+               }\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_GALLERY", strText);\r
+               pAttachItem = new (std::nothrow) AttachObject(strText, ATTACH_ELEMENT_GALLERY);\r
+               if (__pAttachList->Add(pAttachItem) != E_SUCCESS)\r
+               {\r
+                       delete pAttachItem;\r
+               }\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_BODY_TAKE_PICTURE", strText);\r
+               pAttachItem = new (std::nothrow) AttachObject(strText, ATTACH_ELEMENT_TAKE_PICTURE);\r
+               if (__pAttachList->Add(pAttachItem) != E_SUCCESS)\r
+               {\r
+                       delete pAttachItem;\r
+               }\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_BODY_CAPTURE_VIDEO", strText);\r
+               pAttachItem = new (std::nothrow) AttachObject(strText, ATTACH_ELEMENT_CAPTURE_VIDEO);\r
+               if (__pAttachList->Add(pAttachItem) != E_SUCCESS)\r
+               {\r
+                       delete pAttachItem;\r
+               }\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_BODY_RECORD_AUDIO", strText);\r
+               pAttachItem = new (std::nothrow) AttachObject(strText, ATTACH_ELEMENT_RECORD_AUDIO);\r
+               if (__pAttachList->Add(pAttachItem) != E_SUCCESS)\r
+               {\r
+                       delete pAttachItem;\r
+               }\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_MY_FILES", strText);\r
+               pAttachItem = new (std::nothrow) AttachObject(strText, ATTACH_ELEMENT_MY_FILES);\r
+               if (__pAttachList->Add(pAttachItem) != E_SUCCESS)\r
+               {\r
+                       delete pAttachItem;\r
+               }\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_CONTACTS", strText);\r
+               pAttachItem = new (std::nothrow) AttachObject(strText, ATTACH_ELEMENT_CONTACTS);\r
+               if (__pAttachList->Add(pAttachItem) != E_SUCCESS)\r
+               {\r
+                       delete pAttachItem;\r
+               }\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_CALENDAR", strText);\r
+               pAttachItem = new (std::nothrow) AttachObject(strText, ATTACH_ELEMENT_CALENDAR);\r
+               if (__pAttachList->Add(pAttachItem) != E_SUCCESS)\r
+               {\r
+                       delete pAttachItem;\r
+               }\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_MEMO", strText);\r
+               pAttachItem = new (std::nothrow) AttachObject(strText, ATTACH_ELEMENT_MEMO);\r
+               if (__pAttachList->Add(pAttachItem) != E_SUCCESS)\r
+               {\r
+                       delete pAttachItem;\r
+               }\r
+               __pAttachListView = static_cast<ListView*>(GetControl(L"IDC_ATTACH_LISTVIEW"));\r
+               __pAttachListView->SetItemProvider(*this);\r
+               __pAttachListView->AddListViewItemEventListener(*this);\r
+//             __pCloseButton = static_cast<Button*>((static_cast<Panel*>(\r
+//                                                                                                      GetControl(L"IDC_BUTTON_PANEL")))->GetControl(L"IDC_BUTTON_CLOSE"));\r
+               __pCloseButton = static_cast<Button*>(GetControl(L"IDC_BUTTON_CLOSE"));\r
+               __pCloseButton->SetActionId(IDA_CLOSE);\r
+               __pCloseButton->AddActionEventListener(*this);\r
+\r
+               int increaseHeight(0);\r
+               if (__pAttachList->GetCount() > 1)\r
+               {\r
+                       int visibleListItemCount(__pAttachList->GetCount());\r
+                       if (visibleListItemCount > 4)\r
+                       {\r
+                               visibleListItemCount = 4;\r
+                       }\r
+                       increaseHeight = (visibleListItemCount - 1) * H_LIST_ITEM_112PX;\r
+               }\r
+               __pAttachListView->SetSize(__pAttachListView->GetWidth(), __pAttachListView->GetHeight() + increaseHeight);\r
+\r
+               Popup::SetSize(Dimension(GetWidth(), GetHeight() + increaseHeight));\r
+               Point pos = GetControl(L"IDC_BUTTON_CLOSE")->GetPosition();\r
+               pos.y += increaseHeight;\r
+               GetControl(L"IDC_BUTTON_CLOSE")->SetPosition(pos);\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+void\r
+AttachListPopup::OnListViewItemStateChanged(ListView& listView, int index,\r
+                                                                                       int elementId, ListItemStatus status)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (status != LIST_ITEM_STATUS_SELECTED)\r
+       {\r
+               return;\r
+       }\r
+       const AttachObject* pAttachObj = static_cast<AttachObject*>(__pAttachList->GetAt(index));\r
+       RequestId requestId;\r
+       switch (pAttachObj->GetAttachId())\r
+       {\r
+       case ATTACH_ELEMENT_SUBJECT:\r
+       {\r
+               requestId = REQUEST_ADD_SUBJECT;\r
+               __parentCntl.SendUserEvent(requestId, null);\r
+       }\r
+       break;\r
+\r
+       case ATTACH_ELEMENT_GALLERY:\r
+       {\r
+               requestId = REQUEST_OPEN_GALLARY;\r
+               __parentCntl.SendUserEvent(requestId, null);\r
+       }\r
+       break;\r
+\r
+       case ATTACH_ELEMENT_TAKE_PICTURE:\r
+       {\r
+               requestId = REQUEST_TAKE_PICTURE;\r
+               __parentCntl.SendUserEvent(requestId, null);\r
+       }\r
+       break;\r
+\r
+       case ATTACH_ELEMENT_CAPTURE_VIDEO:\r
+       {\r
+               requestId = REQUEST_CAPTURE_VIDEO;\r
+               __parentCntl.SendUserEvent(requestId, null);\r
+       }\r
+       break;\r
+\r
+       case ATTACH_ELEMENT_RECORD_AUDIO:\r
+       {\r
+               requestId = REQUEST_RECORD_AUDIO;\r
+               __parentCntl.SendUserEvent(requestId, null);\r
+       }\r
+       break;\r
+\r
+       case ATTACH_ELEMENT_MY_FILES:\r
+       {\r
+               requestId = REQUEST_OPEN_MY_FILES;\r
+               __parentCntl.SendUserEvent(requestId, null);\r
+       }\r
+       break;\r
+\r
+       case ATTACH_ELEMENT_CONTACTS:\r
+       {\r
+               requestId = REQUEST_ADD_CONTACTS;\r
+               __parentCntl.SendUserEvent(requestId, null);\r
+       }\r
+       break;\r
+\r
+       case ATTACH_ELEMENT_CALENDAR:\r
+       {\r
+               requestId = REQUEST_ADD_CALENDAR;\r
+               __parentCntl.SendUserEvent(requestId, null);\r
+       }\r
+       break;\r
+\r
+       case ATTACH_ELEMENT_MEMO:\r
+       {\r
+               requestId = REQUEST_ADD_MEMO;\r
+               __parentCntl.SendUserEvent(requestId, null);\r
+       }\r
+       break;\r
+       }\r
+       // Destroy object.\r
+       SetShowState(false);\r
+       requestId = REQUEST_DESTROY_ATTACH_POPUP;\r
+       __parentCntl.SendUserEvent(requestId, null);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+//IListViewItemProvider\r
+ListItemBase*\r
+AttachListPopup::CreateItem(int index, int itemWidth)\r
+{\r
+       AppLogDebug("ENTER");\r
+       CustomItem* pItem = new (std::nothrow) CustomItem();\r
+       const AttachObject* pAttachObj = static_cast<AttachObject*>(__pAttachList->GetAt(index));\r
+       pItem->Construct(Dimension(itemWidth, H_LIST_ITEM_112PX), LIST_ANNEX_STYLE_NORMAL);\r
+       pItem->AddElement(Rectangle(MARGIN_16PX, 0, (itemWidth - MARGIN_16PX), H_LIST_ITEM_112PX),\r
+                                         pAttachObj->GetAttachId(), pAttachObj->GetAttachName());\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pItem;\r
+}\r
+\r
+bool\r
+AttachListPopup::DeleteItem(int index, ListItemBase* pItem, int itemWidth)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (pItem)\r
+       {\r
+               delete pItem;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return true;\r
+}\r
+\r
+int\r
+AttachListPopup::GetItemCount(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __pAttachList->GetCount();\r
+}\r
+\r
+// From IActionEventListener\r
+void\r
+AttachListPopup::OnActionPerformed(const Control& source, int actionId)\r
+{\r
+       AppLogDebug("ENTER");\r
+       switch (actionId)\r
+       {\r
+       case IDA_CLOSE:\r
+       {\r
+               SetShowState(false);\r
+               RequestId requestId = REQUEST_DESTROY_ATTACH_POPUP;\r
+               __parentCntl.SendUserEvent(requestId, null);\r
+       }\r
+       break;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
diff --git a/src/MsgAttachementControl.cpp b/src/MsgAttachementControl.cpp
new file mode 100644 (file)
index 0000000..4a243d8
--- /dev/null
@@ -0,0 +1,153 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <FApp.h>\r
+#include <FIo.h>\r
+\r
+#include "MsgAttachementControl.h"\r
+#include "MsgBitmapUtility.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Io;\r
+using namespace Tizen::Ui;\r
+using namespace Tizen::Ui::Controls;\r
+\r
+AttachementControl::AttachementControl(const String& attachFile)\r
+       : __pBgBitmap(null)\r
+       , __attachFilePath(attachFile)\r
+       , __pAttachIcon(null)\r
+       , __pAttachLabel(null)\r
+       , __pDeleteButton(null)\r
+{\r
+       // Empty implementation\r
+}\r
+\r
+AttachementControl::~AttachementControl(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pBgBitmap)\r
+       {\r
+               delete __pBgBitmap;\r
+       }\r
+       if (__pAttachIcon)\r
+       {\r
+               delete __pAttachIcon;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+AttachementControl::Construct(const Rectangle& rectangle)\r
+{\r
+       AppLogDebug("ENTER");\r
+       result r = E_SUCCESS;\r
+       r = Container::Construct(Rectangle(rectangle.x, rectangle.y,\r
+                                                                          rectangle.width, rectangle.height));\r
+       // Create icon\r
+       BitmapUtility* pBitmapUtility = BitmapUtility::GetInstance();\r
+       __pBgBitmap = pBitmapUtility->GetIconN(MSG_ICON_SEARCH_INPUT_BG);\r
+       __pAttachIcon = pBitmapUtility->GetIconByFileExtN(__attachFilePath);\r
+       // add delete button\r
+       __pDeleteButton = new (std::nothrow) Button();\r
+       __pDeleteButton->Construct(Rectangle(rectangle.width - W_ICON_48PX - MARGIN_16PX,\r
+                                                                                (rectangle.height - H_ICON_48PX) / 2, W_ICON_48PX, H_ICON_48PX));\r
+       Bitmap* pNormalBitMap = pBitmapUtility->GetIconN(MSG_ICON_PAGE_DELETE);\r
+       __pDeleteButton->SetNormalBackgroundBitmap(*pNormalBitMap);\r
+       Bitmap* pPressBitMap = pBitmapUtility->GetIconN(MSG_ICON_PAGE_DELETE_PRESS);\r
+       __pDeleteButton->SetPressedBackgroundBitmap(*pPressBitMap);\r
+       AddControl(*__pDeleteButton);\r
+       delete pPressBitMap;\r
+       delete pNormalBitMap;\r
+       // Add label\r
+       String strText;\r
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_POP_ATTACH", strText);\r
+       __pAttachLabel = new (std::nothrow) Label();\r
+       __pAttachLabel->Construct(Rectangle((MARGIN_16PX + W_ICON_48PX + MARGIN_16PX), 0,\r
+                                                                               (rectangle.width - (W_ICON_48PX * 2 + MARGIN_16PX * 3)), rectangle.height), strText);\r
+       __pAttachLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);\r
+       __pAttachLabel->SetText(File::GetFileName(__attachFilePath));\r
+       AddControl(*__pAttachLabel);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+void\r
+AttachementControl::SetAttachmentFile(const String& attachFile)\r
+{\r
+       AppLogDebug("ENTER");\r
+       __attachFilePath = attachFile;\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+const String&\r
+AttachementControl::GetAttachementFilepath(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       return __attachFilePath;\r
+}\r
+\r
+void\r
+AttachementControl::SetDeleteActionId(int actionId)\r
+{\r
+       AppLogDebug("ENTER");\r
+       __pDeleteButton->SetActionId(actionId);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+AttachementControl::AddActionEventListener(IActionEventListener& listener)\r
+{\r
+       AppLogDebug("ENTER");\r
+       __pDeleteButton->AddActionEventListener(listener);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+AttachementControl::OnDraw(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       result r = E_SUCCESS;\r
+       Canvas* pCanvas = GetCanvasN();\r
+       if (pCanvas)\r
+       {\r
+               Rectangle rect = GetBounds();\r
+               pCanvas->FillRectangle(COLOR_COMPOSE_PANEL_BG,\r
+                                                          Rectangle(0, 0, rect.width, rect.height));\r
+               r = pCanvas->DrawNinePatchedBitmap(Rectangle(0, 0, rect.width, rect.height),\r
+                                                                                  *__pBgBitmap);\r
+               if (r != E_SUCCESS)\r
+               {\r
+                       pCanvas->FillRectangle(Color::GetColor(COLOR_ID_WHITE),\r
+                                                                  Rectangle(0, 0, rect.width, rect.height));\r
+               }\r
+               pCanvas->DrawBitmap(Rectangle(MARGIN_16PX, (rect.height - __pAttachIcon->GetHeight()) / 2, __pAttachIcon->GetWidth(), __pAttachIcon->GetHeight()), *__pAttachIcon);\r
+               delete pCanvas;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+ComposeControlType\r
+AttachementControl::GetControlType(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return COMPOSE_CONTROL_ATTACHEMENT;\r
+}\r
diff --git a/src/MsgAttachmentSavePopup.cpp b/src/MsgAttachmentSavePopup.cpp
new file mode 100644 (file)
index 0000000..db114da
--- /dev/null
@@ -0,0 +1,393 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <FApp.h>\r
+#include <FIo.h>\r
+#include <FMedia.h>\r
+#include <FSysEnvironment.h>\r
+\r
+#include "MsgAttachmentSavePopup.h"\r
+#include "MsgBitmapUtility.h"\r
+#include "MsgCommonUtil.h"\r
+#include "MsgMessageData.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Io;\r
+using namespace Tizen::Media;\r
+using namespace Tizen::System;\r
+using namespace Tizen::Ui::Controls;\r
+\r
+const wchar_t* IDS_DOWNLOADS = L"Downloads/";\r
+\r
+enum ListElementID\r
+{\r
+       LIST_ELEMENT_TEXT,\r
+       LIST_ELEMENT_ICON_IMAGE\r
+};\r
+\r
+AttachementSavePopup::AttachementSavePopup(Control& parent, MessageData* pMessageData)\r
+       : __parentCntl(parent)\r
+       , __pMessageData(pMessageData)\r
+       , __pAttachFileArray(null)\r
+       , __pSelectedFiles(null)\r
+{\r
+}\r
+\r
+AttachementSavePopup::~AttachementSavePopup(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pSelectedFiles)\r
+       {\r
+               __pSelectedFiles->RemoveAll(true);\r
+               delete __pSelectedFiles;\r
+       }\r
+       if (__pAttachFileArray)\r
+       {\r
+               __pAttachFileArray->RemoveAll(true);\r
+               delete __pAttachFileArray;\r
+       }\r
+\r
+       if (__pMessageData)\r
+       {\r
+               delete __pMessageData;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+AttachementSavePopup::Construct(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       result r = Popup::Construct(L"IDL_ATTACHMENTS_POPUP");\r
+       if (!IsFailed(r))\r
+       {\r
+               // Transfer ownership\r
+               Bitmap* pBottomBg = BitmapUtility::GetInstance()->GetIconN(MSG_ICON_BUTTON_PANEL_BG);\r
+               SetFooterBackgroundBitmap(pBottomBg);\r
+               // Inialize attachments file path\r
+               __pAttachFileArray = new (std::nothrow) ArrayList();\r
+               __pAttachFileArray->Construct();\r
+               __pSelectedFiles = new (std::nothrow) ArrayList();\r
+               __pSelectedFiles->Construct();\r
+               int pageCount = __pMessageData->GetPageCount();\r
+               const ArrayList* pPageList = __pMessageData->GetPageList();\r
+               for (int pageIndex = 0; pageIndex < pageCount; pageIndex++)\r
+               {\r
+                       MmsPageData* pPageData = (MmsPageData*) pPageList->GetAt(pageIndex);\r
+                       if (pPageData)\r
+                       {\r
+                               String imagePath(pPageData->GetImagePath());\r
+                               if (!imagePath.IsEmpty())\r
+                               {\r
+                                       Bitmap* pIconBitmap = GetIconN(imagePath);\r
+                                       AttachMentsObject* pAttachmentObj = new (std::nothrow) AttachMentsObject(imagePath, pIconBitmap);\r
+                                       __pAttachFileArray->Add(pAttachmentObj);\r
+                               }\r
+\r
+                               String audioPath(pPageData->GetAudioPath());\r
+                               if (!audioPath.IsEmpty())\r
+                               {\r
+                                       Bitmap* pIconBitmap = GetIconN(audioPath);\r
+                                       AttachMentsObject* pAttachmentObj = new (std::nothrow) AttachMentsObject(audioPath, pIconBitmap);\r
+                                       __pAttachFileArray->Add(pAttachmentObj);\r
+                               }\r
+\r
+                               String videoPath(pPageData->GetVideoPath());\r
+                               if (!videoPath.IsEmpty())\r
+                               {\r
+                                       Bitmap* pIconBitmap = GetIconN(videoPath);\r
+                                       AttachMentsObject* pAttachmentObj = new (std::nothrow) AttachMentsObject(videoPath, pIconBitmap);\r
+                                       __pAttachFileArray->Add(pAttachmentObj);\r
+                               }\r
+                       }\r
+               }\r
+               int attachCount = __pMessageData->GetAttachmentCount();\r
+               const ArrayList* pAttachList = __pMessageData->GetAttachList();\r
+               for (int attachIndex = 0; attachIndex < attachCount; attachIndex++)\r
+               {\r
+                       String* pAttachFile = (String*) pAttachList->GetAt(attachIndex);\r
+                       if (pAttachFile && !(pAttachFile->IsEmpty()))\r
+                       {\r
+                               Bitmap* pIconBitmap = GetIconN(*pAttachFile);\r
+                               AttachMentsObject* pAttachmentObj = new (std::nothrow) AttachMentsObject(*pAttachFile, pIconBitmap);\r
+                               __pAttachFileArray->Add(pAttachmentObj);\r
+                       }\r
+               }\r
+               ListView* pAttachmentsListview = static_cast<ListView*>(GetControl(L"IDC_ATTACH_LISTVIEW"));\r
+               pAttachmentsListview->SetItemProvider(*this);\r
+               pAttachmentsListview->AddListViewItemEventListener(*this);\r
+\r
+               Button* pCancelButton = static_cast<Button*>(GetControl(L"IDC_BUTTON_CANCEL"));\r
+               pCancelButton->SetActionId(IDA_CLOSE);\r
+               pCancelButton->AddActionEventListener(*this);\r
+               Button* pSaveButton = static_cast<Button*>(GetControl(L"IDC_BUTTON_SAVE"));\r
+               pSaveButton->SetActionId(IDA_SAVE);\r
+               pSaveButton->AddActionEventListener(*this);\r
+               pSaveButton->SetEnabled(false);\r
+\r
+               int increaseHeight(0);\r
+               if (__pAttachFileArray->GetCount() > 0)\r
+               {\r
+                       if (__pAttachFileArray->GetCount() > 1)\r
+                       {\r
+                               String strText;\r
+                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_SELECT_ALL", strText);\r
+                               __pAttachFileArray->InsertAt((new (std::nothrow) String(strText)), 0);\r
+                       }\r
+                       int visibleListItemCount(__pAttachFileArray->GetCount());\r
+                       if (visibleListItemCount > 4)\r
+                       {\r
+                               visibleListItemCount = 4;\r
+                       }\r
+                       increaseHeight = (visibleListItemCount - 1) * H_LIST_ITEM_112PX;\r
+               }\r
+               // Adjust size and control position.\r
+               Popup::SetSize(Dimension(GetWidth(), GetHeight() + increaseHeight));\r
+               pAttachmentsListview->SetSize(pAttachmentsListview->GetWidth(),\r
+                                                                         pAttachmentsListview->GetHeight() + increaseHeight);\r
+               Point pos = pCancelButton->GetPosition();\r
+               pos.y += increaseHeight;\r
+               pCancelButton->SetPosition(pos);\r
+               pos = pSaveButton->GetPosition();\r
+               pos.y += increaseHeight;\r
+               pSaveButton->SetPosition(pos);\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+void\r
+AttachementSavePopup::OnListViewItemStateChanged(ListView& listView, int index,\r
+                                                                                                int elementId, ListItemStatus status)\r
+{\r
+       AppLogDebug("ENTER");\r
+       switch (status)\r
+       {\r
+       case LIST_ITEM_STATUS_CHECKED:\r
+       {\r
+               if (index == 0 && __pAttachFileArray->GetCount() > 2)\r
+               {\r
+                       CheckAll(true);\r
+               }\r
+               else\r
+               {\r
+                       __pSelectedFiles->Add((new (std::nothrow) Integer(index)));\r
+                       if (__pAttachFileArray->GetCount() > 2 && __pSelectedFiles->GetCount() == __pAttachFileArray->GetCount() - 1)\r
+                       {\r
+                               ListView* pAttachmentsListview = static_cast<ListView*>(GetControl(L"IDC_ATTACH_LISTVIEW"));\r
+                               pAttachmentsListview->SetItemChecked(0, true);\r
+                       }\r
+               }\r
+       }\r
+       break;\r
+\r
+       case LIST_ITEM_STATUS_UNCHECKED:\r
+       {\r
+               if (index == 0 && __pAttachFileArray->GetCount() > 2)\r
+               {\r
+                       CheckAll(false);\r
+               }\r
+               else\r
+               {\r
+                       __pSelectedFiles->Remove(*(new (std::nothrow) Integer(index)), true);\r
+                       if (__pAttachFileArray->GetCount() > 2 && __pSelectedFiles->GetCount() < __pAttachFileArray->GetCount())\r
+                       {\r
+                               ListView* pAttachmentsListview = static_cast<ListView*>(GetControl(L"IDC_ATTACH_LISTVIEW"));\r
+                               pAttachmentsListview->SetItemChecked(0, false);\r
+                       }\r
+               }\r
+       }\r
+       break;\r
+\r
+       case LIST_ITEM_STATUS_SELECTED:\r
+       case LIST_ITEM_STATUS_HIGHLIGHTED:\r
+       case LIST_ITEM_STATUS_MORE:\r
+               break;\r
+       }\r
+       Button* pSaveButton = static_cast<Button*>(GetControl(L"IDC_BUTTON_SAVE"));\r
+       pSaveButton->SetEnabled(__pSelectedFiles->GetCount() > 0);\r
+       pSaveButton->Draw();\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+//IListViewItemProvider\r
+ListItemBase*\r
+AttachementSavePopup::CreateItem(int index, int itemWidth)\r
+{\r
+       AppLogDebug("ENTER");\r
+       CustomItem* pItem = new (std::nothrow) CustomItem();\r
+       pItem->Construct(Dimension(itemWidth, H_LIST_ITEM_112PX), LIST_ANNEX_STYLE_MARK);\r
+       if (index == 0 && GetItemCount() > 2)\r
+       {\r
+               const String* pFileName = static_cast<String*>(__pAttachFileArray->GetAt(index));\r
+               pItem->AddElement(Rectangle(MARGIN_16PX, 0, (itemWidth - MARGIN_16PX), H_LIST_ITEM_112PX),\r
+                                                 LIST_ELEMENT_TEXT, *pFileName);\r
+       }\r
+       else\r
+       {\r
+               const AttachMentsObject* pAttachment = static_cast<AttachMentsObject*>(__pAttachFileArray->GetAt(index));\r
+               if (pAttachment->GetIcon())\r
+               {\r
+                       pItem->AddElement(Rectangle(MARGIN_16PX, (H_LIST_ITEM_112PX - pAttachment->GetIcon()->GetHeight()) / 2,\r
+                                                                               pAttachment->GetIcon()->GetWidth(), pAttachment->GetIcon()->GetHeight()),\r
+                                                         LIST_ELEMENT_ICON_IMAGE, *pAttachment->GetIcon());\r
+                       pItem->AddElement(Rectangle(MARGIN_16PX * 2 + pAttachment->GetIcon()->GetWidth(), 0, (itemWidth - MARGIN_16PX * 2 + W_ICON_64PX), H_LIST_ITEM_112PX),\r
+                                                         LIST_ELEMENT_TEXT, File::GetFileName(pAttachment->GetAttachmentPath()));\r
+               }\r
+               else\r
+               {\r
+                       pItem->AddElement(Rectangle(MARGIN_16PX, 0, (itemWidth - MARGIN_16PX), H_LIST_ITEM_112PX),\r
+                                                         LIST_ELEMENT_TEXT, File::GetFileName(pAttachment->GetAttachmentPath()));\r
+               }\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pItem;\r
+}\r
+\r
+bool\r
+AttachementSavePopup::DeleteItem(int index, ListItemBase* pItem, int itemWidth)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (pItem)\r
+       {\r
+               delete pItem;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return true;\r
+}\r
+\r
+int\r
+AttachementSavePopup::GetItemCount(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       return __pAttachFileArray->GetCount();\r
+}\r
+\r
+// From IActionEventListener\r
+void\r
+AttachementSavePopup::OnActionPerformed(const Control& source, int actionId)\r
+{\r
+       AppLogDebug("ENTER");\r
+       switch (actionId)\r
+       {\r
+       case IDA_SAVE:\r
+       {\r
+               SaveSelectedAttachments();\r
+               ExitPopup();\r
+       }\r
+       break;\r
+\r
+       case IDA_CLOSE:\r
+       {\r
+               ExitPopup();\r
+       }\r
+       break;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+//result\r
+//AttachementSavePopup::OnDraw(void)\r
+//{\r
+//     AppLogDebug("ENTER");\r
+//\r
+//     result r = E_SUCCESS;\r
+//     Canvas* pCanvas = GetCanvasN();\r
+//     if (__pBottomBg)\r
+//     {\r
+//             pCanvas->DrawNinePatchedBitmap(Rectangle(MARGIN_10PX,\r
+//                             GetHeight() - (H_POPUP_BOTTOM_96PX + MARGIN_10PX),\r
+//                             GetWidth() - (MARGIN_10PX * 2), H_POPUP_BOTTOM_96PX), *__pBottomBg);\r
+//     }\r
+//     delete pCanvas;\r
+//\r
+//     AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+//     return r;\r
+//}\r
+\r
+void\r
+AttachementSavePopup::CheckAll(bool state)\r
+{\r
+       AppLogDebug("ENTER");\r
+       __pSelectedFiles->RemoveAll(true);\r
+       ListView* pAttachmentsListview = static_cast<ListView*>(GetControl(L"IDC_ATTACH_LISTVIEW"));\r
+       for (int itemIndex = 1; itemIndex < __pAttachFileArray->GetCount(); itemIndex++)\r
+       {\r
+               pAttachmentsListview->SetItemChecked(itemIndex, state);\r
+               if (state)\r
+                       __pSelectedFiles->Add((new (std::nothrow) Integer(itemIndex)));\r
+       }\r
+       Invalidate(true);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+AttachementSavePopup::SaveSelectedAttachments(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       for (int index = 0; index < __pSelectedFiles->GetCount(); index++)\r
+       {\r
+               Integer* pSlectIndex = (Integer*) __pSelectedFiles->GetAt(index);\r
+               AttachMentsObject* pAttachment = (AttachMentsObject*) __pAttachFileArray->GetAt(pSlectIndex->ToInt());\r
+               if (pAttachment && !pAttachment->GetAttachmentPath().IsEmpty())\r
+               {\r
+                       String destFile;\r
+                       destFile.Append(Environment::GetMediaPath() + IDS_DOWNLOADS + File::GetFileName(pAttachment->GetAttachmentPath()));\r
+                       AppLogDebug("Source File: %S, Destination File: %S", pAttachment->GetAttachmentPath().GetPointer(), destFile.GetPointer());\r
+                       File::Copy(pAttachment->GetAttachmentPath(), destFile, false);\r
+               }\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+Bitmap*\r
+AttachementSavePopup::GetIconN(const String& filePath) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       Bitmap* pBitmap = null;\r
+       if (CommonUtil::IsImageFile(filePath))\r
+       {\r
+               Image* pImage = new (std::nothrow) Image();\r
+               if (pImage)\r
+               {\r
+                       pImage->Construct();\r
+                       pBitmap = pImage->DecodeN(filePath,\r
+                                                                         BITMAP_PIXEL_FORMAT_ARGB8888, W_ICON_64PX, H_ICON_64PX);\r
+                       delete pImage;\r
+               }\r
+       }\r
+       else\r
+       {\r
+               pBitmap = BitmapUtility::GetInstance()->GetIconByFileExtN(filePath);\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pBitmap;\r
+}\r
+\r
+void\r
+AttachementSavePopup::ExitPopup(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       SetShowState(false);\r
+       RequestId requestId = REQUEST_DESTROY_SAVE_ATTACHMENT_POPUP;\r
+       __parentCntl.SendUserEvent(requestId, null);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
diff --git a/src/MsgBaseCustomPopup.cpp b/src/MsgBaseCustomPopup.cpp
new file mode 100644 (file)
index 0000000..ae15b06
--- /dev/null
@@ -0,0 +1,69 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <FApp.h>\r
+\r
+#include "MsgBaseCustomPopup.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Ui::Controls;\r
+\r
+BaseCustomPopup::BaseCustomPopup(void)\r
+       : __pBottomBg(null)\r
+{\r
+\r
+}\r
+\r
+BaseCustomPopup::~BaseCustomPopup(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pBottomBg)\r
+       {\r
+               delete __pBottomBg;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+BaseCustomPopup::SetFooterBackgroundBitmap(Bitmap* pFooterBg)\r
+{\r
+       AppLogDebug("ENTER");\r
+       __pBottomBg = pFooterBg;\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+BaseCustomPopup::OnDraw(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = Popup::OnDraw();\r
+       Canvas* pCanvas = GetCanvasN();\r
+       if (__pBottomBg)\r
+       {\r
+               pCanvas->DrawNinePatchedBitmap(Rectangle(MARGIN_10PX,\r
+                                                                                                GetHeight() - (H_POPUP_BOTTOM_96PX + MARGIN_10PX),\r
+                                                                                                GetWidth() - MARGIN_10PX * 2, H_POPUP_BOTTOM_96PX), *__pBottomBg);\r
+       }\r
+       delete pCanvas;\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
diff --git a/src/MsgBaseData.cpp b/src/MsgBaseData.cpp
new file mode 100644 (file)
index 0000000..0dff756
--- /dev/null
@@ -0,0 +1,135 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include "MsgBaseData.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+\r
+\r
+AddressInfo::AddressInfo()\r
+       : needToValidate(true)\r
+{\r
+       // Empty implementation.\r
+}\r
+\r
+MmsPageData::MmsPageData(const String& bodyText, bool isTextTop)\r
+       : __pageDuration(MIN_MMS_SLIDE_DURATION)\r
+       , __bodyText(bodyText)\r
+       , __isTextTop(isTextTop)\r
+{\r
+       // Empty implementation.\r
+}\r
+\r
+MessageComposeData::MessageComposeData(const String& subjectText, ArrayList* pPageList, ArrayList* pAttachList)\r
+       : __isMms(true)\r
+       , __subjectText(subjectText)\r
+       , __pPageList(pPageList)\r
+       , __pAttachList(pAttachList)\r
+       , __pRecipientList(null)\r
+{\r
+       // Empty implementation.\r
+}\r
+\r
+MessageComposeData::MessageComposeData(const String& smsBodyText)\r
+       : __isMms(false)\r
+       , __smsText(smsBodyText)\r
+       , __pPageList(null)\r
+       , __pAttachList(null)\r
+       , __pRecipientList(null)\r
+{\r
+       // Empty implementation.\r
+}\r
+\r
+MessageComposeData::~MessageComposeData()\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pPageList)\r
+       {\r
+               __pPageList->RemoveAll(true);\r
+               delete __pPageList;\r
+       }\r
+       if (__pAttachList)\r
+       {\r
+               __pAttachList->RemoveAll(true);\r
+               delete __pAttachList;\r
+       }\r
+       if (__pRecipientList)\r
+       {\r
+               __pRecipientList->RemoveAll(true);\r
+               delete __pRecipientList;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+MessageComposeData::AddRecipient(AddressInfo* pRecipient)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (!__pRecipientList)\r
+       {\r
+               __pRecipientList = new (std::nothrow) ArrayList();\r
+               __pRecipientList->Construct();\r
+       }\r
+       __pRecipientList->Add(pRecipient);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+MessageComposeData::AddAttachment(const String& attachFilepath)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (!__pAttachList)\r
+       {\r
+               __pAttachList = new (std::nothrow) ArrayList();\r
+               __pAttachList->Construct();\r
+       }\r
+       __pAttachList->Add(new (std::nothrow) String(attachFilepath));\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+\r
+}\r
+\r
+void\r
+MessageComposeData::AddPage(MmsPageData* pMmsPage)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (!__pPageList)\r
+       {\r
+               __pPageList = new (std::nothrow) ArrayList();\r
+               __pPageList->Construct();\r
+       }\r
+       __pPageList->Add(pMmsPage);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+MessageComposeData::SetSmsBody(const String& smsBodyText)\r
+{\r
+       AppLogDebug("ENTER");\r
+       __smsText.Clear();\r
+       __smsText.Append(smsBodyText);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+MessageComposeData::SetSubject(const String& subjectText)\r
+{\r
+       AppLogDebug("ENTER");\r
+       __subjectText.Clear();\r
+       __subjectText.Append(subjectText);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
diff --git a/src/MsgBaseEvent.cpp b/src/MsgBaseEvent.cpp
new file mode 100644 (file)
index 0000000..0343a29
--- /dev/null
@@ -0,0 +1,51 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <FBaseResult.h>\r
+\r
+#include "MsgBaseEvent.h"\r
+\r
+using namespace Tizen::Base::Runtime;\r
+\r
+BaseEvent::BaseEvent(const IEventListener* pEvent)\r
+       : __pEvent(pEvent)\r
+{\r
+       AppLogDebug("ENTER");\r
+       //Empty implementation\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+BaseEvent::~BaseEvent()\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+bool\r
+BaseEvent::IsSame(const IEventListener* pEvent)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return (this->__pEvent == pEvent);\r
+}\r
+\r
+const IEventListener*\r
+BaseEvent::GetEvent() const\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return this->__pEvent;\r
+}\r
diff --git a/src/MsgBaseForm.cpp b/src/MsgBaseForm.cpp
new file mode 100644 (file)
index 0000000..8c379b0
--- /dev/null
@@ -0,0 +1,96 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <FApp.h>\r
+#include <FUiCtrlFooter.h>\r
+#include <FUiCtrlHeader.h>\r
+\r
+#include "MsgBaseForm.h"\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Ui::Controls;\r
+\r
+BaseForm::BaseForm(void)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+BaseForm::~BaseForm(void)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+void\r
+BaseForm::OnIntializeFooter(Footer& footer)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       // Default implementation.\r
+       footer.SetStyle(FOOTER_STYLE_SEGMENTED_TEXT);\r
+       footer.SetBackButton();\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+BaseForm::OnIntializeHeader(Header& header)\r
+{\r
+       AppLogDebug("ENTER");\r
+       // Default implementation.\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+BaseForm::OnActionPerformed(const Control& source, int actionId)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+BaseForm::InitializeBase(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       SetOrientation(Tizen::Ui::ORIENTATION_PORTRAIT);\r
+       result r = E_SUCCESS;\r
+       Header* pHeader = GetHeader();\r
+       if (pHeader)\r
+       {\r
+               OnIntializeHeader(*pHeader);\r
+       }\r
+       Footer* pFooter = GetFooter();\r
+       if (pFooter)\r
+       {\r
+               OnIntializeFooter(*pFooter);\r
+       }\r
+       SetFormBackEventListener(this);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+void\r
+BaseForm::OnFormBackRequested(Form& source)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       // Close App.\r
+       UiApp* pApp = UiApp::GetInstance();\r
+       AppAssert(pApp);\r
+       pApp->Terminate();\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
diff --git a/src/MsgBasePresentationModel.cpp b/src/MsgBasePresentationModel.cpp
new file mode 100644 (file)
index 0000000..cd9e3c6
--- /dev/null
@@ -0,0 +1,389 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <msg.h>
+#include <msg_storage.h>
+#include <FBaseColIListT.h>
+
+
+#include "MsgBasePresentationModel.h"
+#include "MsgCommonUtil.h"
+#include "MsgContactList.h"
+#include "MsgDeleteHandlerThread.h"
+#include "MsgMessageData.h"
+#include "MsgSpamRestoreHandler.h"
+#include "MsgThreadData.h"
+#include "MsgTypes.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Runtime;
+using namespace Tizen::Ui;
+
+BasePresentationModel::BasePresentationModel(void)
+       : __pMsgHandle(null)
+       , __pDeleteHandler(null)
+       , __pSpamRestoreHandler(null)
+
+{
+       //Empty implementation
+}
+
+BasePresentationModel::~BasePresentationModel(void)
+{
+       AppLogDebug("ENTER");
+
+       if (__pDeleteHandler)
+       {
+               __pDeleteHandler->Join();
+               delete __pDeleteHandler;
+               __pDeleteHandler = null;
+       }
+
+       if(__pSpamRestoreHandler)
+       {
+               __pSpamRestoreHandler->Join();
+               delete __pSpamRestoreHandler;
+       }
+
+       if (__pMsgHandle)
+       {
+               // Close open handle with message service
+               msg_close_msg_handle(&__pMsgHandle);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+result
+BasePresentationModel::Construct(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       // Open session with message service.
+       msg_error_t err = msg_open_msg_handle(&__pMsgHandle);
+       if (err != MSG_SUCCESS)
+       {
+               CommonUtil::ShowErrorInfo(err);
+               AppLogDebug("msg_open_msg_handle err = %d", (int) err);
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+               r = E_FAILURE;
+               return r;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(r));
+       return r;
+}
+
+void
+BasePresentationModel::Delete(int deleteId, int requestType)
+{
+       AppLogDebug("ENTER");
+
+       msg_error_t err = MSG_SUCCESS;
+       if (requestType == REQUEST_DELETE_THREAD)
+       {
+               err = msg_delete_thread_message_list(__pMsgHandle, (msg_thread_id_t) deleteId, true);
+       }
+       else if (requestType == REQUEST_DELETE_MESSAGE)
+       {
+               err = msg_delete_message(__pMsgHandle, (msg_message_id_t) deleteId);
+       }
+
+       AppLogDebug("Thread and message delete ID = %u err = %d", deleteId, (int) err);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+BasePresentationModel::Delete(IListT< int >* pIdList,
+                                                               Control& listener, int requestType)
+{
+       AppLogDebug("ENTER");
+
+       if (__pDeleteHandler)
+       {
+               delete __pDeleteHandler;
+       }
+       __pDeleteHandler = new (std::nothrow) DeleteHandlerThread(pIdList, listener, requestType);
+       __pDeleteHandler->Construct();
+       __pDeleteHandler->Start();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+BasePresentationModel::Delete(int deleteId, Control& listener, int requestType)
+{
+       AppLogDebug("ENTER");
+
+       if (__pDeleteHandler)
+       {
+               delete __pDeleteHandler;
+       }
+       __pDeleteHandler = new (std::nothrow) DeleteHandlerThread(deleteId, listener, requestType);
+       __pDeleteHandler->Construct();
+       __pDeleteHandler->Start();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+
+ArrayList*
+BasePresentationModel::GetPhoneNumberListN(int threadId) const
+{
+       AppLogDebug("ENTER");
+
+       msg_error_t err = MSG_SUCCESS;
+       msg_struct_list_s pAddressList = {0};
+       if ((err = msg_get_address_list(__pMsgHandle, (msg_thread_id_t) threadId, &pAddressList)) != MSG_SUCCESS)
+       {
+               AppLogDebug("msg_get_address_list error=%d", (int) err);
+               return null;
+       }
+       ArrayList* pPhoneNumberList = null;
+       // Prepare list here
+       if (pAddressList.nCount > 0)
+       {
+               pPhoneNumberList = new (std::nothrow) ArrayList();
+               //4. Set Address
+               char recipient[MAX_ADDRESS_VAL_LEN] = {0};
+               for (int count = 0; count < pAddressList.nCount; count++)
+               {
+                       msg_get_str_value(pAddressList.msg_struct_info[count],
+                                                         MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, recipient, MAX_ADDRESS_VAL_LEN);
+                       pPhoneNumberList->Add((new (std::nothrow) String(recipient)));
+               }
+       }
+       // Free memory
+       msg_release_list_struct(&pAddressList);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pPhoneNumberList;
+}
+
+ArrayList*
+BasePresentationModel::GetRecipientDetailsListN(int threadId) const
+{
+       AppLogDebug("ENTER");
+
+       msg_error_t err = MSG_SUCCESS;
+       msg_struct_list_s pAddressList = {0};
+       if ((err = msg_get_address_list(__pMsgHandle, (msg_thread_id_t) threadId, &pAddressList)) != MSG_SUCCESS)
+       {
+               AppLogDebug("msg_get_address_list error=%d", (int) err);
+               return null;
+       }
+       ArrayList* pRecipientDetailsList = null;
+
+       if (pAddressList.nCount > 0)
+       {
+               pRecipientDetailsList = new (std::nothrow) ArrayList();
+               char recipientNumber[MAX_ADDRESS_VAL_LEN] = {0};
+               char recipientName[MAX_ADDRESS_VAL_LEN] = {0};
+               for (int count = 0; count < pAddressList.nCount; count++)
+               {
+                       msg_get_str_value(pAddressList.msg_struct_info[count],
+                                                         MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, recipientNumber, MAX_ADDRESS_VAL_LEN);
+                       msg_get_str_value(pAddressList.msg_struct_info[count],
+                                                         MSG_ADDRESS_INFO_DISPLAYNAME_STR, recipientName, MAX_ADDRESS_VAL_LEN);
+                       ContactDetails* pConDetails = new (std::nothrow) ContactDetails();
+                       pConDetails->contactName = recipientName;
+                       pConDetails->contactNumber = recipientNumber;
+                       if(pConDetails->contactName.CompareTo(String(IDS_BLANK)) == 0)
+                       {
+                               pConDetails->contactName = IDS_UNKNOWN;
+                       }
+                       pRecipientDetailsList->Add(pConDetails);
+               }
+       }
+       // Free memory
+       msg_release_list_struct(&pAddressList);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pRecipientDetailsList;
+}
+
+int
+BasePresentationModel::GetMessageDeliveryStatus(int messageId)
+{
+       AppLogDebug("ENTER");
+
+       int reportStatus(MSG_DELIVERY_REPORT_NONE);
+       msg_struct_list_s deliveryStatusList = {0};
+       msg_get_report_status(__pMsgHandle, (msg_message_id_t) messageId, &deliveryStatusList);
+       if (deliveryStatusList.nCount > 0)
+       {
+               msg_get_int_value(deliveryStatusList.msg_struct_info[0], MSG_REPORT_STATUS_INT, &reportStatus);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return reportStatus;
+}
+
+bool
+BasePresentationModel::MoveMessageToSIM(int messageId)
+{
+       AppLogDebug("ENTER");
+
+       msg_message_id_t msgId = messageId;
+       msg_storage_id_t storageId = MSG_STORAGE_SIM;
+       msg_error_t err = msg_move_msg_to_storage(__pMsgHandle, msgId, storageId);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return (err == MSG_SUCCESS);
+}
+
+bool
+BasePresentationModel::MoveMessageToPhone(int messageId)
+{
+       AppLogDebug("ENTER");
+
+       msg_message_id_t msgId = messageId;
+       msg_storage_id_t storageId = MSG_STORAGE_PHONE;
+       msg_error_t err = msg_move_msg_to_storage(__pMsgHandle, msgId, storageId);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return (err == MSG_SUCCESS);
+}
+
+bool
+BasePresentationModel::MoveMessageToInbox(int messageId)
+{
+       AppLogDebug("ENTER");
+
+       msg_message_id_t msgId = messageId;
+       msg_folder_id_t storageId = MSG_INBOX_ID;
+       msg_error_t err = msg_move_msg_to_folder(__pMsgHandle, msgId, storageId);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return (err == MSG_SUCCESS);
+}
+
+void
+BasePresentationModel::RestoreSpamMsgs(ArrayListT<int>* pSelectedId,Control* threadCtrl)
+{
+       AppLogDebug("ENTER");
+
+
+       if (__pSpamRestoreHandler)
+       {
+               delete __pSpamRestoreHandler;
+       }
+
+       __pSpamRestoreHandler = new (std::nothrow) SpamRestoreHandler(pSelectedId,threadCtrl);
+       __pSpamRestoreHandler->Construct();
+       __pSpamRestoreHandler->Start();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+BasePresentationModel::CancelRestore()
+{
+       AppLogDebug("ENTER");
+
+
+       if(__pSpamRestoreHandler)
+       {
+               __pSpamRestoreHandler->Join();
+               delete __pSpamRestoreHandler;
+               __pSpamRestoreHandler = null;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+
+MessageData*
+BasePresentationModel::GetMessageDataByIdN(int messageId) const
+{
+       AppLogDebug("ENTER");
+       MessageData* pMessageData = null;
+       result r = E_SUCCESS;
+       if (messageId >= 0)
+       {
+               msg_struct_t pMsgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+               if (pMsgInfo)
+               {
+                       msg_struct_t pMsgSendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+                       if (pMsgSendOpt)
+                       {
+                               if (msg_get_message(__pMsgHandle, (msg_message_id_t) messageId,
+                                                                       pMsgInfo, pMsgSendOpt) == MSG_SUCCESS)
+                               {
+                                       pMessageData = new (std::nothrow) MessageData();
+                                       r = pMessageData->Construct(pMsgInfo, true);
+                                       if (r != E_SUCCESS)
+                                       {
+                                               delete pMessageData;
+                                               pMessageData = null;
+                                       }
+                               }
+                               msg_release_struct(&pMsgSendOpt);
+                       }
+                       msg_release_struct(&pMsgInfo);
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pMessageData;
+}
+
+ThreadData*
+BasePresentationModel::GetThreadDataByIdN(int threadId) const
+{
+       AppLogDebug("ENTER");
+       ThreadData* pThreadData = null;
+       result r = E_SUCCESS;
+       if (threadId >= 0)
+       {
+               msg_struct_t pThreadInfo = msg_create_struct(MSG_STRUCT_THREAD_INFO);
+               if (pThreadInfo)
+               {
+                       if (msg_get_thread(__pMsgHandle, (msg_thread_id_t) threadId,
+                                                          pThreadInfo) == MSG_SUCCESS)
+                       {
+                               pThreadData = new (std::nothrow) ThreadData(__pMsgHandle);
+                               r = pThreadData->Construct(pThreadInfo);
+                               if (r != E_SUCCESS)
+                               {
+                                       delete pThreadData;
+                                       pThreadData = null;
+                               }
+                       }
+                       msg_release_struct(&pThreadInfo);
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pThreadData;
+}
+
+
+void
+BasePresentationModel::CancelDelete(void)
+{
+       AppLogDebug("ENTER");
+
+        if(__pDeleteHandler)
+        {
+                __pDeleteHandler->Join();
+                delete __pDeleteHandler;
+                __pDeleteHandler = null;
+        }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
diff --git a/src/MsgBitmapUtility.cpp b/src/MsgBitmapUtility.cpp
new file mode 100644 (file)
index 0000000..8e07d5b
--- /dev/null
@@ -0,0 +1,666 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <cstdlib>\r
+#include <FApp.h>\r
+#include <FBaseColHashMap.h>\r
+#include <FBaseDataType.h>\r
+#include <FGraphics.h>\r
+#include <FGrpCanvas.h>\r
+\r
+#include "MsgBitmapUtility.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Graphics;\r
+\r
+const wchar_t* IDS_WINSET_LIST_PROCESS = L"00_winset_list_process_%02d.png";\r
+const wchar_t* IDB_ICON_TEXT = L"M01_icon_text.png";\r
+const wchar_t* IDB_ICON_WORD = L"M01_icon_word.png";\r
+const wchar_t* IDB_ICON_UNKNOWN = L"M01_icon_unknown";\r
+const wchar_t* FILE_EXTENSION_TXT = L".txt";\r
+const wchar_t* FILE_EXTENSION_DOC = L".doc";\r
+\r
+BitmapUtility* BitmapUtility::__pInstance = null;\r
+\r
+BitmapUtility*\r
+BitmapUtility::GetInstance(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pInstance == null)\r
+       {\r
+               CreateInstance();\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __pInstance;\r
+}\r
+\r
+BitmapUtility::BitmapUtility(void)\r
+       : __pBitmapList(null)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+BitmapUtility::~BitmapUtility()\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pBitmapList)\r
+       {\r
+               __pBitmapList->RemoveAll(true);\r
+               delete __pBitmapList;\r
+       }\r
+\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+BitmapUtility::Construct(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       __pBitmapList = new (std::nothrow) HashMap();\r
+       r = __pBitmapList->Construct();\r
+\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(r));\r
+       return r;\r
+}\r
+\r
+void\r
+BitmapUtility::CreateInstance(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       __pInstance = new (std::nothrow) BitmapUtility();\r
+       if (E_SUCCESS != __pInstance->Construct())\r
+       {\r
+               delete __pInstance;\r
+               __pInstance = null;\r
+       }\r
+       // To destroy singletone instance on application exit\r
+       std::atexit(DestroyInstance);\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+BitmapUtility::DestroyInstance(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       delete __pInstance;\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+Bitmap*\r
+BitmapUtility::GetIconN(MessageIconType iconType, const Dimension& size)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       String pngFile;\r
+       Bitmap* pBitmap = null;\r
+       bool validIcon = true;\r
+       AppResource* pAppResource = Application::GetInstance()->GetAppResource();\r
+       switch (iconType)\r
+       {\r
+       case MSG_ICON_UNREAD:\r
+               pngFile.Append("00_winset_list_bubble_bg.9.png");\r
+               pBitmap = Get9PatchBitmapIconN(pngFile, size);\r
+               break;\r
+\r
+       case MSG_ICON_UNREAD_PRESS:\r
+               pngFile.Append("00_winset_list_bubble_bg.9.png");\r
+               pBitmap = Get9PatchBitmapIconN(pngFile, size);\r
+               break;\r
+\r
+       case MSG_ICON_BROADCASTMSG:\r
+               pngFile.Append("M01_icon_broadcasting.png");\r
+               break;\r
+\r
+       case MSG_ICON_BROADCASTMSG_PRESS:\r
+               pngFile.Append("M01_icon_broadcasting_press.png");\r
+               break;\r
+\r
+       case MSG_ICON_OTA:\r
+               pngFile.Append("M01_icon_OTA.png");\r
+               break;\r
+\r
+       case MSG_ICON_OTA_PRESS:\r
+               pngFile.Append("M01_icon_OTA_press.png");\r
+               break;\r
+\r
+       case MSG_ICON_PUSH:\r
+               pngFile.Append("M01_icon_Push.png");\r
+               break;\r
+\r
+       case MSG_ICON_PUSH_PRESS:\r
+               pngFile.Append("M01_icon_Push_press.png");\r
+               break;\r
+\r
+       case MSG_ICON_EDIT:\r
+               pngFile.Append("M01_controlbar_icon_edit.png");\r
+               break;\r
+\r
+       case MSG_ICON_TRAY:\r
+               pngFile.Append("00_winset_more.png");\r
+               break;\r
+\r
+       case MSG_ICON_TRAY_PRESS:\r
+               pngFile.Append("00_winset_more_press.png");\r
+               break;\r
+\r
+       case MSG_ICON_COMPOSE:\r
+               pngFile.Append("M01_title_icon_compose_web.png");\r
+               break;\r
+\r
+       case MSG_ICON_COMPOSE_PRESS:\r
+               pngFile.Append("M01_title_icon_compose_press_web.png");\r
+               break;\r
+\r
+       case MSG_ICON_DELETE:\r
+               pngFile.Append("M01_icon_delete.png");\r
+               break;\r
+\r
+       case MSG_ICON_CONTACT_INFO:\r
+               pngFile.Append("M01_icon_contact_info.png");\r
+               break;\r
+\r
+       case MSG_ICON_PLUS:\r
+               pngFile.Append("00_button_plus.png");\r
+               break;\r
+\r
+       case MSG_ICON_PLUS_PRESS:\r
+               pngFile.Append("00_button_plus_press.png");\r
+               break;\r
+\r
+       case MSG_ICON_BACK:\r
+               pngFile.Append("00_icon_Back.png");\r
+               break;\r
+\r
+       case MSG_ICON_BACK_PRESSED:\r
+               pngFile.Append("00_icon_Back_press.png");\r
+               break;\r
+\r
+       case MSG_ICON_HEADER_BACK:\r
+               pngFile.Append("00_icon_Back_64.png");\r
+               break;\r
+\r
+       case MSG_ICON_HEADER_BACK_PRESSED:\r
+               pngFile.Append("00_icon_Back_press_64.png");\r
+               break;\r
+\r
+       case MSG_ICON_CALL:\r
+               pngFile.Append("M01_icon_call.png");\r
+               break;\r
+\r
+       case MSG_ICON_CANCEL:\r
+               pngFile.Append("M01_controlbar_icon_cancel.png");\r
+               break;\r
+\r
+       case MSG_ICON_BUBBLE_RECEIVE_BG:\r
+               pngFile.Append("00_messagebubble_bg_receive.9.png");\r
+               //pBitmap = Get9PatchBitmapIconN(pngFile, size);\r
+               break;\r
+\r
+       case MSG_ICON_BUBBLE_SENT_BG:\r
+               pngFile.Append("00_messagebubble_bg_sent.9.png");\r
+               //pBitmap = Get9PatchBitmapIconN(pngFile, size);\r
+               break;\r
+\r
+       case MSG_ICON_DELETE_SWEEP:\r
+               pngFile.Append("00_button_sweep_delete.9.png");\r
+               pBitmap = Get9PatchBitmapIconN(pngFile, size);\r
+               break;\r
+\r
+       case MSG_ICON_DELETE_PRESS_SWEEP:\r
+               pngFile.Append("00_button_sweep_delete_press.9.png");\r
+               pBitmap = Get9PatchBitmapIconN(pngFile, size);\r
+               break;\r
+\r
+       case MSG_ICON_LIST_EXPAND_CLOSE:\r
+               pngFile.Append("00_list_expand_closed.png");\r
+               break;\r
+\r
+       case MSG_ICON_LIST_EXPAND_CLOSE_PRESS:\r
+               pngFile.Append("00_list_expand_closed_press.png");\r
+               break;\r
+\r
+       case MSG_ICON_LIST_EXPAND_OPENED:\r
+               pngFile.Append("00_list_expand_opened.png");\r
+               break;\r
+\r
+       case MSG_ICON_LIST_EXPAND_OPENED_PRESS:\r
+               pngFile.Append("00_list_expand_opened_press.png");\r
+               break;\r
+\r
+       case MSG_ICON_RADIO_BUTTON_UNCHECK:\r
+               pngFile.Append("00_button_radio_normal2.png");\r
+               break;\r
+\r
+       case MSG_ICON_RADIO_BUTTON_UNCHECK_PRESS:\r
+               pngFile.Append("00_button_radio_press2.png");\r
+               break;\r
+\r
+       case MSG_ICON_RADIO_BUTTON_CHECK:\r
+               pngFile.Append("00_button_radio_normal1.png");\r
+               break;\r
+\r
+       case MSG_ICON_RADIO_BUTTON_CHECK_PRESS:\r
+               pngFile.Append("00_button_radio_press1.png");\r
+               break;\r
+\r
+       case MSG_ICON_SEND_MESSAGE:\r
+               pngFile.Append("M01_btn_message_send.png");\r
+               break;\r
+\r
+       case MSG_ICON_SEND_MESSAGE_DIM:\r
+               pngFile.Append("M01_btn_message_send_dim.png");\r
+               break;\r
+\r
+       case MSG_ICON_BUBBLE_DATE_BG:\r
+               pngFile.Append("00_MessageBubble_date_bg.9.png");\r
+               pBitmap = Get9PatchBitmapIconN(pngFile, size);\r
+               break;\r
+\r
+       case MSG_ICON_WARNING:\r
+               pngFile.Append("00_button_warning.png");\r
+               break;\r
+\r
+       case MSG_ICON_WARNING_PRESS:\r
+               pngFile.Append("00_button_warning_press.png");\r
+               break;\r
+\r
+       case MSG_ICON_CIRCLE_BUTTON_BG:\r
+               pngFile.Append("00_btn_circle_bg_normal.png");\r
+               break;\r
+\r
+       case MSG_ICON_CIRCLE_BUTTON_BG_PRESS:\r
+               pngFile.Append("00_btn_circle_bg_press.png");\r
+               break;\r
+\r
+       case MSG_ICON_CIRCLE_BUTTON_BG_DIM:\r
+               pngFile.Append("00_circle_button_dim.png");\r
+               break;\r
+\r
+       case MSG_ICON_WARNING_CIRCLE_BUTTON_BG:\r
+               pngFile.Append("00_btn_circle_bg_normal_01.png");\r
+               break;\r
+\r
+       case MSG_ICON_WARNING_CIRCLE_BUTTON_BG_PRESS:\r
+               pngFile.Append("00_btn_circle_bg_normal_01_press.png");\r
+               break;\r
+\r
+       case MSG_ICON_EMPTY_LIST:\r
+               pngFile.Append("00_Nocontents_text.png");\r
+               break;\r
+\r
+       case MSG_ICON_SETTINGS:\r
+               pngFile.Append("01_controlbar_icon_settings.png");\r
+               break;\r
+\r
+       case MSG_ICON_COPY_TO_PHONE:\r
+               pngFile.Append("M01_controlbar_icon_copy_to_phone.png");\r
+               break;\r
+\r
+       case MSG_ICON_RESTORE:\r
+               pngFile.Append("M01_controlbar_icon_restore.png");\r
+               break;\r
+\r
+       case MSG_ICON_MESSAGE_BOXES:\r
+               pngFile.Append("M01_controlbar_icon_message_boxes.png");\r
+               break;\r
+\r
+       case MSG_ICON_Add:\r
+               pngFile.Append("01_controlbar_icon_create.png");\r
+               break;\r
+\r
+       case MSG_ICON_DRAFT:\r
+               pngFile.Append("M01_icon_message_status_sms_sent_n.png");\r
+               break;\r
+\r
+       case MSG_ICON_SEND_MMS:\r
+               pngFile.Append("M01_btn_mms_message_send.png");\r
+               break;\r
+\r
+       case MSG_ICON_SEND_MMS_DIM:\r
+               pngFile.Append("M01_btn_mms_message_send_dim.png");\r
+               break;\r
+\r
+       case MSG_ICON_ARROW_EXPAND:\r
+               pngFile.Append("00_arrow_expand.png");\r
+               break;\r
+\r
+       case MSG_ICON_ARROW_EXPAND_PRESS:\r
+               pngFile.Append("00_arrow_expand_press.png");\r
+               break;\r
+\r
+       case MSG_ICON_ARROW_EXPAND_DIM:\r
+               pngFile.Append("00_arrow_expand_dim.png");\r
+               break;\r
+\r
+       case MSG_ICON_ATTACHEMENT:\r
+               pngFile.Append("attach_icon.png");\r
+               break;\r
+\r
+       case MSG_ICON_BUTTON_PANEL_BG:\r
+               pngFile.Append("00_popup_bottom_bg.9.png");\r
+               //pBitmap = Get9PatchBitmapIconN(pngFile, size);\r
+               break;\r
+\r
+       case MSG_ICON_SAVE_ATTACHMENT:\r
+               pngFile.Append("M01_controlbar_icon_attach.png");\r
+               break;\r
+\r
+       case MSG_ICON_SMIL_VOLUME:\r
+               pngFile.Append("M01_play_btn_volume_press.png");\r
+               break;\r
+\r
+       case MSG_ICON_SMIL_PLAY:\r
+               pngFile.Append("M01_play_btn_play_press.png");\r
+               break;\r
+\r
+       case MSG_ICON_SMIL_PAUSE:\r
+               pngFile.Append("M01_play_btn_pause_press.png");\r
+               break;\r
+\r
+       case MSG_ICON_SMIL_NEXT:\r
+               pngFile.Append("M01_play_btn_next_press.png");\r
+               break;\r
+\r
+       case MSG_ICON_SMIL_PREVIOUS:\r
+               pngFile.Append("M01_play_btn_previous_press.png");\r
+               break;\r
+\r
+       case MSG_ICON_MORE:\r
+               pngFile.Append("00_icon_more.png");\r
+               break;\r
+\r
+       case MSG_ICON_MORE_PRESSED:\r
+               pngFile.Append("00_icon_more_press.png");\r
+               break;\r
+\r
+       case MSG_ICON_MORE_DISABLED:\r
+               pngFile.Append("00_icon_more_dim.png");\r
+               break;\r
+\r
+       case MSG_ICON_RESEND:\r
+               pngFile.Append("M01_controlbar_icon_resend.png");\r
+               break;\r
+\r
+       case MSG_ICON_REPLY:\r
+               pngFile.Append("M01_controlbar_icon_reply.png");\r
+               break;\r
+\r
+       case MSG_ICON_PAGE_DELETE:\r
+               pngFile.Append("M01_btn_delete.png");\r
+               break;\r
+\r
+       case MSG_ICON_PAGE_DELETE_PRESS:\r
+               pngFile.Append("M01_btn_delete_press.png");\r
+               break;\r
+\r
+       case MSG_ICON_VIEW_CONTACT:\r
+               pngFile.Append("M01_contact_default_image.png");\r
+               break;\r
+\r
+       case MSG_ICON_SEARCH_INPUT_BG:\r
+               pngFile.Append("M01_search_input_field_bg.9.png");\r
+               break;\r
+\r
+       case MSG_ICON_PHOTO_DELETE:\r
+               pngFile.Append("M01_photo_btn_delete.png");\r
+               break;\r
+\r
+       case MSG_ICON_PHOTO_DELETE_PRESS:\r
+               pngFile.Append("M01_photo_btn_delete_press.png");\r
+               break;\r
+\r
+       default:\r
+               if (iconType >= MSG_ICON_PROGRESS_01 && iconType <= MSG_ICON_PROGRESS_30)\r
+               {\r
+                       int fileindex = (iconType - MSG_ICON_PROGRESS_01) + 1;\r
+                       pngFile.Format(256, IDS_WINSET_LIST_PROCESS, fileindex);\r
+               }\r
+               else\r
+               {\r
+                       validIcon = false;\r
+               }\r
+               break;\r
+       }\r
+       if (!pBitmap && !pngFile.IsEmpty() && validIcon)\r
+       {\r
+               AppLogDebug("PNG: %S", pngFile.GetPointer());\r
+               pBitmap = pAppResource->GetBitmapN(pngFile);\r
+               if ((size.width > 0) && (size.height > 0))\r
+               {\r
+                       pBitmap->Scale(size);\r
+               }\r
+       }\r
+\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(GetLastResult()));\r
+       return pBitmap;\r
+}\r
+\r
+Bitmap*\r
+BitmapUtility::GetIcon(MessageIconType iconType, const Dimension& size)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       Bitmap* pBitmap = null;\r
+       String* pKey = new (std::nothrow) String();\r
+       if (pKey)\r
+       {\r
+               pKey->Append(iconType);\r
+               pBitmap = static_cast<Bitmap*>(__pBitmapList->GetValue(*pKey));\r
+               if (pBitmap == null)\r
+               {\r
+                       pBitmap = GetIconN(iconType, size);\r
+                       if (pBitmap != null)\r
+                       {\r
+                               __pBitmapList->Add(pKey, pBitmap);\r
+                       }\r
+                       // Ownership transfer;\r
+                       pKey = null;\r
+               }\r
+               delete pKey;\r
+       }\r
+\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(GetLastResult()));\r
+       return pBitmap;\r
+}\r
+\r
+Bitmap*\r
+BitmapUtility::Get9PatchBitmapIconN(const String& pngFile, const Dimension& size)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       Bitmap* pBitmap = Application::GetInstance()->GetAppResource()->GetBitmapN(pngFile, BITMAP_PIXEL_FORMAT_ARGB8888);\r
+       if (pBitmap)\r
+       {\r
+               int height = pBitmap->GetHeight();\r
+               if (size.height > 0)\r
+               {\r
+                       height = size.height;\r
+               }\r
+               int width = pBitmap->GetWidth();\r
+               if (size.width > 0)\r
+               {\r
+                       width = size.width;\r
+               }\r
+               Canvas* pCanvas = new (std::nothrow) Canvas();\r
+               if (pCanvas)\r
+               {\r
+                       result r = pCanvas->Construct(Rectangle(0, 0, width, height));\r
+                       if (!IsFailed(r))\r
+                       {\r
+                               r = pCanvas->DrawNinePatchedBitmap(Rectangle(0, 0, width, height), *pBitmap);\r
+                               if (r != E_SUCCESS)\r
+                               {\r
+                                       pCanvas->DrawBitmap(Rectangle(0, 0, width, height), *pBitmap);\r
+                               }\r
+                               pBitmap = new (std::nothrow) Bitmap();\r
+                               r = pBitmap->Construct(*pCanvas, Rectangle(0, 0, width, height));\r
+                               if (IsFailed(r))\r
+                               {\r
+                                       delete pBitmap;\r
+                                       pBitmap = null;\r
+                               }\r
+                       }\r
+                       delete pCanvas;\r
+               }\r
+\r
+       }\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(GetLastResult()));\r
+       return pBitmap;\r
+}\r
+\r
+Bitmap*\r
+BitmapUtility::GetMergeIconN(const Bitmap& bitmap1, Bitmap& bitmap2)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       Bitmap* pBitmap = null;\r
+       Canvas* pCanvas = new (std::nothrow) Canvas();\r
+       if (pCanvas)\r
+       {\r
+               result r = pCanvas->Construct(Rectangle(0, 0, bitmap1.GetWidth(), bitmap1.GetHeight()));\r
+               if (!IsFailed(r))\r
+               {\r
+                       r = pCanvas->DrawNinePatchedBitmap(Rectangle(0, 0, bitmap1.GetWidth(), bitmap1.GetHeight()), bitmap1);\r
+                       if (r != E_SUCCESS)\r
+                       {\r
+                               pCanvas->DrawBitmap(Rectangle(0, 0, bitmap1.GetWidth(), bitmap1.GetHeight()), bitmap1);\r
+                       }\r
+                       r = pCanvas->DrawNinePatchedBitmap(Rectangle(0, 0, bitmap1.GetWidth(), bitmap1.GetHeight()), bitmap2);\r
+                       if (r != E_SUCCESS)\r
+                       {\r
+                               pCanvas->DrawBitmap(Rectangle(0, 0, bitmap1.GetWidth(), bitmap1.GetHeight()), bitmap2);\r
+                       }\r
+                       pBitmap = new (std::nothrow) Bitmap();\r
+                       r = pBitmap->Construct(*pCanvas, Rectangle(0, 0, bitmap1.GetWidth(), bitmap1.GetHeight()));\r
+                       if (IsFailed(r))\r
+                       {\r
+                               delete pBitmap;\r
+                               pBitmap = null;\r
+                       }\r
+               }\r
+               delete pCanvas;\r
+       }\r
+\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(GetLastResult()));\r
+       return pBitmap;\r
+}\r
+\r
+result\r
+BitmapUtility::Release(MessageIconType iconType)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       String* pKey = new (std::nothrow) String();\r
+       if (pKey)\r
+       {\r
+               pKey->Append(iconType);\r
+               if (__pBitmapList->GetValue(*pKey))\r
+               {\r
+                       r = __pBitmapList->Remove(*pKey, true);\r
+               }\r
+               delete pKey;\r
+       }\r
+\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(r));\r
+       return r;\r
+}\r
+\r
+Bitmap*\r
+BitmapUtility::GetBubbleGroupBgBitmap(GroupBgBitmapType groupType,\r
+                                                                         const String& groupName, const Dimension& size)\r
+{\r
+       AppLogDebug("ENTER");\r
+       Bitmap* pBitmap = null;\r
+       Canvas* pCanvas = new (std::nothrow) Canvas();\r
+       if (pCanvas)\r
+       {\r
+               result r = pCanvas->Construct(Rectangle(0, 0, size.width, size.height));\r
+               if (!IsFailed(r))\r
+               {\r
+                       // Draw rectangle\r
+                       pCanvas->FillRectangle(COLOR_BUBBLE_BG, Rectangle(0, 0, size.width, size.height));\r
+                       pCanvas->FillRectangle(Color::GetColor(COLOR_ID_GREY), Rectangle(0, size.height / 2 - 2, size.width / 5, 5));\r
+                       // Create  and draw text.\r
+                       EnrichedText pEnrichedText;\r
+                       pEnrichedText.Construct(Dimension(size.width, size.height));\r
+                       pEnrichedText.SetVerticalAlignment(TEXT_ALIGNMENT_MIDDLE);\r
+                       pEnrichedText.SetHorizontalAlignment(TEXT_ALIGNMENT_CENTER);\r
+                       // Add new text element.\r
+                       TextElement pTextElement;\r
+                       pTextElement.Construct(groupName);\r
+                       Font font;\r
+                       font.Construct(FONT_STYLE_PLAIN, LIST_GROUP_TEXT_FONT_SIZE);\r
+                       pTextElement.SetFont(font);\r
+                       pTextElement.SetTextColor(COLOR_THREADLIST_DATE_TIME_SHORTMSG_ITEM);\r
+                       pEnrichedText.Add(pTextElement);\r
+                       pCanvas->DrawText(Point(0, 0), pEnrichedText);\r
+                       // Draw rectangle\r
+                       pCanvas->FillRectangle(Color::GetColor(COLOR_ID_GREY), Rectangle((size.width - size.width / 5), size.height / 2 - 2, size.width / 5, 5));\r
+                       // Get bitmap\r
+                       pBitmap = new (std::nothrow) Bitmap();\r
+                       r = pBitmap->Construct(*pCanvas, Rectangle(0, 0, size.width, size.height));\r
+                       if (IsFailed(r))\r
+                       {\r
+                               delete pBitmap;\r
+                               pBitmap = null;\r
+                       }\r
+               }\r
+               delete pCanvas;\r
+       }\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(GetLastResult()));\r
+       return pBitmap;\r
+}\r
+\r
+Bitmap*\r
+BitmapUtility::GetIconByFileExtN(const String& fileName, const Dimension& size)\r
+{\r
+       AppLogDebug("ENTER");\r
+       Bitmap* pIconBitmap = null;\r
+       String strFileExtnTxt(FILE_EXTENSION_TXT);\r
+       String strFileExtnDoc(FILE_EXTENSION_DOC);\r
+       String strIconText(IDB_ICON_TEXT);\r
+       String strIconWord(IDB_ICON_WORD);\r
+       String strIconUnknown(IDB_ICON_UNKNOWN);\r
+\r
+       if (fileName.EndsWith(strFileExtnTxt))\r
+       {\r
+               pIconBitmap = AppResource::GetInstance()->GetBitmapN(strIconText);\r
+       }\r
+       else if (fileName.EndsWith(strFileExtnDoc))\r
+       {\r
+               pIconBitmap = AppResource::GetInstance()->GetBitmapN(strIconWord);\r
+       }\r
+       else\r
+       {\r
+               pIconBitmap = AppResource::GetInstance()->GetBitmapN(strIconUnknown);\r
+       }\r
+\r
+       if (pIconBitmap && size.height > 0 && size.width > 0)\r
+       {\r
+               pIconBitmap->Scale(size);\r
+       }\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(GetLastResult()));\r
+       return pIconBitmap;\r
+\r
+}\r
diff --git a/src/MsgCbReceiveSettings.cpp b/src/MsgCbReceiveSettings.cpp
new file mode 100644 (file)
index 0000000..723f24c
--- /dev/null
@@ -0,0 +1,78 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <msg.h>\r
+\r
+#include <FBaseErrorDefine.h>\r
+#include <FBaseResult.h>\r
+\r
+#include "MsgCbReceiveSettings.h"\r
+\r
+using namespace Tizen::Base;\r
+\r
+CbReceiveSettings::CbReceiveSettings(msg_struct_t pCbSetting)\r
+       : __pCbSetting(pCbSetting)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+CbReceiveSettings::~CbReceiveSettings(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pCbSetting)\r
+       {\r
+               msg_release_struct(&__pCbSetting);\r
+       }\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+msg_struct_t\r
+CbReceiveSettings::GetCbOpt(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(GetLastResult()));\r
+       return __pCbSetting;\r
+}\r
+\r
+bool\r
+CbReceiveSettings::IsCbMessagesOn(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       bool cbMessagesOn(false);\r
+       msg_get_bool_value(__pCbSetting, MSG_CB_RECEIVE_BOOL, &cbMessagesOn);\r
+\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(GetLastResult()));\r
+       return cbMessagesOn;\r
+}\r
+\r
+result\r
+CbReceiveSettings::SetCbMessagesStatus(bool status)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       msg_error_t err;\r
+       err = msg_set_bool_value(__pCbSetting, MSG_CB_RECEIVE_BOOL, status);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("Cell broadcast messages error [%d]", (int) err);\r
+       }\r
+\r
+       r = GetLastResult();\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(r));\r
+       return r;\r
+}\r
diff --git a/src/MsgCommonUtil.cpp b/src/MsgCommonUtil.cpp
new file mode 100644 (file)
index 0000000..c1aeb8d
--- /dev/null
@@ -0,0 +1,358 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <msg.h>\r
+\r
+#include <FApp.h>\r
+#include <FIo.h>\r
+#include <FCntAudioMetadata.h>\r
+#include <FCntVideoMetadata.h>\r
+#include <FCntContentManagerUtil.h>\r
+#include <FSysEnvironment.h>\r
+#include <FTelSimInfo.h>\r
+#include <FUiClipboard.h>\r
+#include <FUiClipboardItem.h>\r
+#include <FUiCtrlMessageBox.h>\r
+#include <FUiScenes.h>\r
+#include <wctype.h>\r
+\r
+#include "MsgCommonUtil.h"\r
+#include "MsgMessageData.h"\r
+#include "MsgSmsSendSettings.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Content;\r
+using namespace Tizen::Io;\r
+using namespace Tizen::Media;\r
+using namespace Tizen::System;\r
+using namespace Tizen::Telephony;\r
+using namespace Tizen::Ui;\r
+using namespace Tizen::Ui::Controls;\r
+using namespace Tizen::Ui::Scenes;\r
+\r
+bool\r
+CommonUtil::IsImageFile(const String& filePath)\r
+{\r
+       AppLogDebug("ENTER");\r
+       String imagePath(filePath);\r
+       imagePath.ToLowerCase();\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return (imagePath.EndsWith(L".jpg") ||\r
+                       imagePath.EndsWith(L".jpeg") ||\r
+                       imagePath.EndsWith(L".jpe") ||\r
+                       imagePath.EndsWith(L".png") ||\r
+                       imagePath.EndsWith(L".tif") ||\r
+                       imagePath.EndsWith(L".pmd") ||\r
+                       imagePath.EndsWith(L".bmp") ||\r
+                       imagePath.EndsWith(L".wbmp") ||\r
+                       imagePath.EndsWith(L".gif"));\r
+}\r
+\r
+bool\r
+CommonUtil::IsVideoFile(const String& filePath)\r
+{\r
+       AppLogDebug("ENTER");\r
+       String mediaFilePath(filePath);\r
+       mediaFilePath.ToLowerCase();\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return (mediaFilePath.EndsWith(L".3gp") ||\r
+                       mediaFilePath.EndsWith(L".asf") ||\r
+                       mediaFilePath.EndsWith(L".asx") ||\r
+                       mediaFilePath.EndsWith(L".avi") ||\r
+                       mediaFilePath.EndsWith(L".mp2") ||\r
+                       mediaFilePath.EndsWith(L".mp4") ||\r
+                       mediaFilePath.EndsWith(L".mpg") ||\r
+                       mediaFilePath.EndsWith(L".mpeg") ||\r
+                       mediaFilePath.EndsWith(L".rm") ||\r
+                       mediaFilePath.EndsWith(L".rv") ||\r
+                       mediaFilePath.EndsWith(L".sdp") ||\r
+                       mediaFilePath.EndsWith(L".wmv"));\r
+}\r
+\r
+bool\r
+CommonUtil::IsAudioFile(const String& filePath)\r
+{\r
+       AppLogDebug("ENTER");\r
+       String audiFilePath(filePath);\r
+       audiFilePath.ToLowerCase();\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return (audiFilePath.EndsWith(L".aac") ||\r
+                       audiFilePath.EndsWith(L".amr") ||\r
+                       audiFilePath.EndsWith(L".imy") ||\r
+                       audiFilePath.EndsWith(L".mid") ||\r
+                       audiFilePath.EndsWith(L".midi") ||\r
+                       audiFilePath.EndsWith(L".mmf") ||\r
+                       audiFilePath.EndsWith(L".mp3") ||\r
+                       audiFilePath.EndsWith(L".mpg") ||\r
+                       audiFilePath.EndsWith(L".m4a") ||\r
+                       audiFilePath.EndsWith(L".ra") ||\r
+                       audiFilePath.EndsWith(L".rm") ||\r
+                       audiFilePath.EndsWith(L".spm") ||\r
+                       audiFilePath.EndsWith(L".wav") ||\r
+                       audiFilePath.EndsWith(L".wma") ||\r
+                       audiFilePath.EndsWith(L".xmf"));\r
+}\r
+\r
+char*\r
+CommonUtil::ConvertStringToPointerCharArrayN(const String& strToConvert)\r
+{\r
+       AppLogDebug("ENTER");\r
+       int length = strToConvert.GetLength() * 4 + 1;  // For null terminated.\r
+       char* pChar = new (std::nothrow) char[length];\r
+       if (pChar)\r
+       {\r
+               const wchar_t* pWchar = strToConvert.GetPointer();\r
+               wcstombs(pChar, pWchar, (size_t) length);\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pChar;\r
+}\r
+\r
+bool\r
+CommonUtil::CopyTextToClipBoard(const String& copyText)\r
+{\r
+       AppLogDebug("ENTER");\r
+       Clipboard* pClipboard = Clipboard::GetInstance();\r
+       if (pClipboard)\r
+       {\r
+               ClipboardItem item;\r
+               item.Construct(CLIPBOARD_DATA_TYPE_TEXT, copyText);\r
+               // Content of the item is copied to the clipboard\r
+               pClipboard->CopyItem(item);\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return true;\r
+}\r
+\r
+result\r
+CommonUtil::ForwardMessage(MessageData* pMsgData)\r
+{\r
+       AppLogDebug("ENTER");\r
+       result r = E_SUCCESS;\r
+\r
+       ArrayList* pArgList = new (std::nothrow) ArrayList();\r
+       // Set action type\r
+       pArgList->Add((new Integer(COMPOSER_LAUNCH_FORWORD_MESSAGE)));\r
+       pArgList->Add(pMsgData);\r
+       // Transfer ownership pArgList\r
+       SceneManager* pSceneManager = SceneManager::GetInstance();\r
+       r = pSceneManager->GoForward(ForwardSceneTransition(IDSCN_COMPOSER, SCENE_TRANSITION_ANIMATION_TYPE_NONE), pArgList);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+int\r
+CommonUtil::GetDuration(const String& mediaFileName)\r
+{\r
+       AppLogDebug("ENTER");\r
+       int duration(0);\r
+       result r = E_SUCCESS;\r
+       if (CommonUtil::IsAudioFile(mediaFileName))\r
+       {\r
+               AudioMetadata* pAudioMeta = ContentManagerUtil::GetAudioMetaN(mediaFileName);\r
+               String contentPath;\r
+               if (pAudioMeta == null)\r
+               {\r
+                       contentPath = Environment::GetMediaPath() + File::GetFileName(mediaFileName);\r
+                       r = File::Copy(mediaFileName, contentPath, true);\r
+                       pAudioMeta = ContentManagerUtil::GetAudioMetaN(contentPath);\r
+               }\r
+               if (pAudioMeta)\r
+               {\r
+                       duration = pAudioMeta->GetDuration();\r
+                       delete pAudioMeta;\r
+               }\r
+               // Remove temp file\r
+               if (r != E_FILE_ALREADY_EXIST)\r
+               {\r
+                       File::Remove(contentPath);\r
+               }\r
+       }\r
+       else if (CommonUtil::IsVideoFile(mediaFileName))\r
+       {\r
+               VideoMetadata* pVideoMeta = ContentManagerUtil::GetVideoMetaN(mediaFileName);\r
+               String contentPath;\r
+               if (pVideoMeta == null)\r
+               {\r
+                       contentPath = Environment::GetMediaPath() + File::GetFileName(mediaFileName);\r
+                       r = File::Copy(mediaFileName, contentPath, true);\r
+                       pVideoMeta = ContentManagerUtil::GetVideoMetaN(contentPath);\r
+               }\r
+               if (pVideoMeta)\r
+               {\r
+                       duration = pVideoMeta->GetDuration();\r
+                       delete pVideoMeta;\r
+               }\r
+               // Remove temp file\r
+               if (r != E_FILE_ALREADY_EXIST)\r
+               {\r
+                       File::Remove(contentPath);\r
+               }\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return (duration / 1000);\r
+}\r
+\r
+MediaType\r
+CommonUtil::GetMediaType(const String& fileName)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (CommonUtil::IsImageFile(fileName))\r
+       {\r
+               return MEDIA_TYPE_IMAGE;\r
+       }\r
+       if (CommonUtil::IsAudioFile(fileName))\r
+       {\r
+               return MEDIA_TYPE_AUDIO;\r
+       }\r
+       if (CommonUtil::IsVideoFile(fileName))\r
+       {\r
+               return MEDIA_TYPE_VIDEO;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return MEDIA_TYPE_UNKNOWN;\r
+}\r
+\r
+result\r
+CommonUtil::ReplyMessage(MessageData* pMsgData)\r
+{\r
+       AppLogDebug("ENTER");\r
+       result r = E_SUCCESS;\r
+\r
+       ArrayList* pArgList = new (std::nothrow) ArrayList();\r
+       // Set action type\r
+       pArgList->Add((new (std::nothrow) Integer(COMPOSER_LAUNCH_REPLY_MESSAGE)));\r
+       r |= pArgList->Add(pMsgData);\r
+       // Transfer ownership pArgList\r
+       SceneManager* pSceneManager = SceneManager::GetInstance();\r
+       r |= pSceneManager->GoForward(ForwardSceneTransition(IDSCN_COMPOSER, SCENE_TRANSITION_ANIMATION_TYPE_NONE), pArgList);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+bool\r
+CommonUtil::IsValidPhoneNumber(const String& phoneNumber)\r
+{\r
+       AppLogDebug("ENTER");\r
+       bool validPhoneNumber(false);\r
+       if (phoneNumber.GetLength() > 2 && phoneNumber.GetLength() <= 20)\r
+       {\r
+               validPhoneNumber = true;\r
+               String strPlus(L"+");\r
+               int index(0);\r
+               wchar_t wChar;\r
+               phoneNumber.GetCharAt(index, wChar);\r
+               if (strPlus.CompareTo(String(wChar)) == 0)\r
+               {\r
+                       index++;\r
+               }\r
+               while (index < phoneNumber.GetLength())\r
+               {\r
+                       phoneNumber.GetCharAt(index, wChar);\r
+                       if (!iswdigit(wChar) /*&& (*pPhoneNumber == '*') && *pPhoneNumber == '#'*/)\r
+                       {\r
+                               validPhoneNumber = false;\r
+                               break;\r
+                       }\r
+                       ++index;\r
+               }\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return validPhoneNumber;\r
+}\r
+\r
+void\r
+CommonUtil::ShowInfoPopup(const String& info, const String& title)\r
+{\r
+       int modalResult;\r
+       MessageBox messageBox;\r
+       messageBox.Construct(title, info, MSGBOX_STYLE_NONE, 3000);\r
+       messageBox.ShowAndWait(modalResult);\r
+       return;\r
+}\r
+\r
+void\r
+CommonUtil::ShowErrorInfo(msg_error_t err)\r
+{\r
+       AppResource* pAppResource = Application::GetInstance()->GetAppResource();\r
+       if (pAppResource)\r
+       {\r
+               String strText;\r
+               switch (err)\r
+               {\r
+               case MSG_ERR_NO_SIM:\r
+                       pAppResource->GetString(L"IDS_SLCD_POP_TEXT_SIM_CARD_ERROR", strText);\r
+                       break;\r
+\r
+               case MSG_ERR_SERVER_NOT_READY:\r
+                       pAppResource->GetString(L"IDS_COM_POP_SERVICE_UNAVAILABLE", strText);\r
+                       break;\r
+\r
+               default:\r
+                       pAppResource->GetString(L"IDS_COM_POP_UNKNOWN_ERROR_OCCURRED", strText);\r
+                       break;\r
+               }\r
+               ShowInfoPopup(strText);\r
+       }\r
+       return;\r
+}\r
+\r
+bool\r
+CommonUtil::IsSimAvailable(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       bool simAvailable(false);\r
+\r
+       SimInfo* pSimInfo = new (std::nothrow) SimInfo();\r
+       result r = pSimInfo->Construct();\r
+       simAvailable = !(r == E_DEVICE_UNAVAILABLE);\r
+       if (r == E_SUCCESS)\r
+       {\r
+               simAvailable = pSimInfo->IsAvailable();\r
+       }\r
+       delete pSimInfo;\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return simAvailable;\r
+}\r
+\r
+CharCounterInfo\r
+CommonUtil::GetMessageCharCounterInfo(const String& messageText, const SmsSendSettings* pSmsSendSetting)\r
+{\r
+       AppLogDebug("ENTER");\r
+       CharCounterInfo charCountInfo;\r
+       //TODO: SLP API not working for all encoding type.\r
+       //      const char* pMessageText = ConvertStringToPointerCharArrayN(messageText);\r
+       //      msg_encode_type_t encodeType = MSG_ENCODE_GSM7BIT;\r
+       //      if (pSmsSendSetting)\r
+       //      {\r
+       //              encodeType = pSmsSendSetting->GetEncodeMode();\r
+       //      }\r
+       //      int returnValue = msg_util_calculate_text_length(pMessageText, encodeType,\r
+       //                                                                                                       &charCountInfo.__textSize, &charCountInfo.__segSize, &charCountInfo.__encodeType);\r
+       //      AppLogDebug("Return value: %d", returnValue);\r
+       //\r
+       //      delete[] pMessageText;\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return charCountInfo;\r
+}\r
diff --git a/src/MsgComposerForm.cpp b/src/MsgComposerForm.cpp
new file mode 100644 (file)
index 0000000..6b1d29b
--- /dev/null
@@ -0,0 +1,910 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include "MsgBitmapUtility.h"
+#include "MsgDurationPopup.h"
+#include "MsgComposerForm.h"
+#include "MsgConversationPresentationModel.h"
+#include "MsgFontsettings.h"
+#include "MsgMessagesApp.h"
+#include "MsgMessageComposePanel.h"
+#include "MsgMessageData.h"
+#include "MsgMessagePresentationModel.h"
+#include "MsgRecipientPanel.h"
+#include "MsgSettingPresentationModel.h"
+#include "MsgSmsManager.h"
+#include "MsgThreadData.h"
+#include "MsgTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Utility;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+ComposerForm::ComposerForm(void)
+       : __pRecipientPanel(null)
+       , __pMsgComposePanel(null)
+       , __pDraftMessageEntry(null)
+       , __pMessagePopup(null)
+       , __pTrayPanel(null)
+       , __pDurationPopup(null)
+       , __needToSetFocusRecipient(false)
+{
+       //Empty implementation
+}
+
+ComposerForm::~ComposerForm(void)
+{
+       AppLogDebug("ENTER");
+       if (__pDurationPopup)
+       {
+               delete __pDurationPopup;
+       }
+       if (__pDraftMessageEntry)
+       {
+               delete __pDraftMessageEntry;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+
+bool
+ComposerForm::Initialize(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = Construct(L"IDL_COMPOSER_FORM");
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return (!IsFailed(r));
+}
+
+result
+ComposerForm::OnTerminating(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+void
+ComposerForm::OnIntializeHeader(Header& header)
+{
+       AppLogDebug("ENTER");
+       header.AddActionEventListener(*this);
+       header.SetStyle(HEADER_STYLE_TITLE);
+
+       String strText;
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_POP_NEW_MESSAGE", strText);
+       header.SetTitleText(strText);
+
+       ButtonItem buttonRightItem;
+       buttonRightItem.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_HEADER_BACK);
+       Bitmap* pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_HEADER_BACK);
+       buttonRightItem.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pBitMap);
+       pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_HEADER_BACK_PRESSED);
+       buttonRightItem.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pBitMap);
+       header.SetButton(BUTTON_POSITION_RIGHT, buttonRightItem);
+
+       ButtonItem btnLeft;
+       btnLeft.Construct(BUTTON_ITEM_STYLE_ICON, IDA_OPTION_TRAY_COMMAND);
+
+#ifndef _DISABLE_MMS_FEATURE_
+       pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_MORE);
+       btnLeft.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pBitMap);
+       pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_MORE_PRESSED);
+       btnLeft.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pBitMap);
+       header.SetButton(BUTTON_POSITION_LEFT, btnLeft);
+#else
+       pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_MORE_DISABLED);
+       btnLeft.SetIcon(BUTTON_ITEM_STATUS_DISABLED,pBitMap);
+       //header.SetButton(BUTTON_POSITION_LEFT, btnLeft);
+       header.SetButtonEnabled(BUTTON_POSITION_LEFT,false);
+#endif
+}
+
+void
+ComposerForm::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
+{
+       AppLogDebug("ENTER");
+       switch (requestId)
+       {
+       case REQUEST_DESTROY_DURATION_POPUP:
+       {
+               if (__pDurationPopup)
+               {
+                       __pMsgComposePanel->SetDefaultPageDuration(__pDurationPopup->GetDuration());
+                       String strFormat;
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS", strFormat);
+                       String strText;
+                       strText.Format(strFormat.GetLength() * 2, strFormat.GetPointer(), __pMsgComposePanel->GetDefaultPageDuration());
+                       Button* pDurationButton = static_cast<Button*>(__pTrayPanel->GetControl(L"IDC_BUTTON_DURATION"));
+                       pDurationButton->SetText(strText);
+                       pDurationButton->Invalidate(false);
+                       delete __pDurationPopup;
+                       __pDurationPopup = null;
+               }
+       }
+       break;
+
+       case REQUEST_ENABLE_DISABLE_SEND_BUTTON:
+       {
+               //TODO
+               if(__pMsgComposePanel && __pRecipientPanel)
+               {
+                       if(__pMsgComposePanel->IsComposeFieldEmpty() ||__pRecipientPanel->IsEmptyRecipent())
+                       {
+                               __pMsgComposePanel->EnableSendButton(false);
+                       }
+                       else
+                       {
+                               __pMsgComposePanel->EnableSendButton(true);
+                       }
+               }
+       }
+       break;
+
+       case REQUEST_MOVE_FOCUS_RECIPIENT:
+       {
+               __needToSetFocusRecipient = true;
+       }
+       break;
+
+       case REQUEST_UDATE_FOCUS:
+       {
+               if( __needToSetFocusRecipient )
+               {
+                       RequestId requestId = REQUEST_SET_FOCUS_RECIPIENT;
+                       __pRecipientPanel->SendUserEvent(requestId, null);
+                       __needToSetFocusRecipient = false;
+               }
+       }
+       break;
+
+       default:
+               break;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+result
+ComposerForm::OnInitializing(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = BaseForm::InitializeBase();
+       if (!IsFailed(r))
+       {
+               Rectangle rect = GetClientAreaBounds();
+               __pRecipientPanel = new (std::nothrow) RecipientPanel();
+               if (__pRecipientPanel)
+               {
+                       __pRecipientPanel->Construct(Rectangle(0, 0, rect.width, H_MSG_COMPOSE_EDITOR + (MARGIN_28PX * 2)));
+                       __pRecipientPanel->SetSizeChangeEventListener(*this);
+                       __pRecipientPanel->SetKeypadEventListener(*this);
+                       AddControl(*__pRecipientPanel);
+                       __pRecipientPanel->EnableContactSearch(true);
+               }
+               __pMsgComposePanel = new (std::nothrow) MessageComposePanel();
+               if (__pMsgComposePanel)
+               {
+                       __pMsgComposePanel->Construct(L"IDL_MSG_COMPOSE_PANEL");
+                       __pMsgComposePanel->SetKeypadEventListener(*this);
+                       __pMsgComposePanel->SetSizeChangeEventListener(*this);
+                       __pMsgComposePanel->SetBounds(Rectangle(0, rect.height - PANEL_HEIGHT, rect.width, PANEL_HEIGHT));
+                       if (__pRecipientPanel)
+                       {
+                               __pMsgComposePanel->SetMaximumSize(Dimension(__pMsgComposePanel->GetWidth(), rect.height - __pRecipientPanel->GetHeight()));
+                       }
+                       __pMsgComposePanel->SetBackgroundColor(COLOR_COMPOSE_PANEL_BG);
+                       __pMsgComposePanel->SetComposeEventListener(*this);
+                       AddControl(*__pMsgComposePanel);
+                       __pMsgComposePanel->ShowDefaultUi();
+               }
+               // For volume key press
+               AddKeyEventListener(*this);
+               __pRecipientPanel->SetFocus();
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+
+void
+ComposerForm::OnSceneActivatedN(const SceneId& previousSceneId,
+                                                               const SceneId& currentSceneId, IList* pArgs)
+{
+       AppLogDebug("ENTER");
+
+       // Set editor text based on font settings
+       FontSettings* pFontSettings = SettingPresentationModel::GetInstance()->GetFontSettings();
+       int size = pFontSettings->GetMessageTextSize(pFontSettings->GetMessageFontType());
+       __pMsgComposePanel->SetTextSize(size);
+       __pRecipientPanel->SetTextSize(size);
+       if (pArgs)
+       {
+               Integer* launchType = (Integer*) pArgs->GetAt(0);
+               switch (launchType->ToInt())
+               {
+               case COMPOSER_LAUNCH_APP_CONTROL:
+               {
+                       MessageComposeData* pComposedata = (MessageComposeData*) pArgs->GetAt(1);
+                       if (pComposedata)
+                       {
+                               LoadComposeData(*pComposedata);
+                       }
+               }
+               break;
+
+               case COMPOSER_LAUNCH_FORWORD_MESSAGE:
+               {
+                       MessageData* pMessageData = (MessageData*) pArgs->GetAt(1);
+                       __pMsgComposePanel->LoadMessageData(*pMessageData);
+               }
+               break;
+
+               case COMPOSER_LAUNCH_REPLY_MESSAGE:
+               {
+                       MessageData* pMessageData = (MessageData*) pArgs->GetAt(1);
+                       ArrayList* pAddressList = const_cast<ArrayList*>(pMessageData->GetAddressList());
+                       __pRecipientPanel->SetRecipientList(pAddressList);
+               }
+               break;
+
+               case COMPOSER_LAUNCH_DRAFT_MESSAGE:
+               {
+                       __pDraftMessageEntry = (MessageData*) pArgs->GetAt(1);
+                       pArgs->RemoveAt(1);
+                       LoadDraftMessage();
+               }
+               break;
+               }
+               // Release argument list
+               pArgs->RemoveAll(true);
+               delete pArgs;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ComposerForm::OnSceneDeactivated(const SceneId& currentSceneId,
+                                                                const SceneId& nextSceneId)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ComposerForm::OnSizeIncrease(const Control& control)
+{
+       AppLogDebug("ENTER");
+
+       Rectangle clientArea = GetClientAreaBounds();
+       int panelHeight = __pMsgComposePanel->GetDisplayHeight();
+       if (__pRecipientPanel->Equals(control))
+       {
+               //TODO:
+       }
+       else if (__pMsgComposePanel->Equals(control))
+       {
+               Point currentPosition = __pMsgComposePanel->GetPosition();
+               __pMsgComposePanel->SetBounds(Rectangle(currentPosition.x, clientArea.height - panelHeight,
+                                                                                               __pMsgComposePanel->GetWidth(), panelHeight));
+               __pMsgComposePanel->SetShowState(true);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ComposerForm::OnSizeDecrease(const Control& control)
+{
+       AppLogDebug("ENTER");
+
+       Rectangle clientArea = GetClientAreaBounds();
+       if (__pRecipientPanel->Equals(control))
+       {
+               // TODO:
+       }
+       else if (__pMsgComposePanel->Equals(control))
+       {
+               Rectangle prePanelBounds = __pMsgComposePanel->GetBounds();
+               int panelHeight = __pMsgComposePanel->GetDisplayHeight();
+               __pMsgComposePanel->SetBounds(Rectangle(prePanelBounds.x, clientArea.height - panelHeight,
+                                                                                               __pMsgComposePanel->GetWidth(), panelHeight));
+               __pMsgComposePanel->SetShowState(true);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ComposerForm::OnComposeStateChange(ComposeType type)
+{
+       AppLogDebug("ENTER");
+       bool mmsMode(type == COMPOSE_MMS);
+       if (__pTrayPanel)
+       {
+               Button* pPreviewButton = static_cast<Button*>(__pTrayPanel->GetControl(L"IDC_BUTTON_PREVIEW"));
+               pPreviewButton->SetEnabled(mmsMode);
+               pPreviewButton->Invalidate(false);
+               Button* pDurationButton = static_cast<Button*>(__pTrayPanel->GetControl(L"IDC_BUTTON_DURATION"));
+               pDurationButton->SetEnabled(mmsMode);
+               pDurationButton->Invalidate(false);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+ComposerForm::OnSendButtonClick(void)
+{
+       AppLogDebug("ENTER");
+
+       // If entered text not yet converted to token, then check it can it be converted to token.
+       if (!__pRecipientPanel->CheckRecipentForToken(false))
+       {
+               SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON,null);
+               AppLogDebug("Invalid recipients");
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+               return;
+       }
+       ArrayList* pRecipientList = __pRecipientPanel->GeRecipientNumberListN();
+       if (pRecipientList)
+       {
+               MessageComposeData* pComposeData = __pMsgComposePanel->GetMessageComposeDataN();
+               if (pComposeData)
+               {
+                       MessagePresentationModel* pMsgPrModel = MessagePresentationModel::GetInstance();
+                       int threadId(-1);
+                       if (pMsgPrModel)
+                       {
+                               pMsgPrModel->SendMessage(*pComposeData, *pRecipientList, threadId);
+                       }
+                       delete pComposeData;
+                       // If draft message send, remove draft entry
+                       if (pMsgPrModel && __pDraftMessageEntry)
+                       {
+                               pMsgPrModel->Delete(__pDraftMessageEntry->GetEntryId(), REQUEST_DELETE_MESSAGE);
+                       }
+                       __pMsgComposePanel->HideKeypad();
+                       MessagesApp* pMsgApp = (MessagesApp*) UiApp::GetInstance();
+                       if (pMsgApp->IsAppRunningEmbededMode())
+                       {
+                               pMsgApp->ExitApp();
+                       }
+                       else
+                       {
+                               SceneManager* pSceneManager = SceneManager::GetInstance();
+                               if (pMsgPrModel && (threadId > -1))
+                               {
+                                       ArrayList* pArgList = new (std::nothrow) ArrayList();
+                                       ThreadData* pConvData = pMsgPrModel->GetThreadDataByIdN(threadId);
+                                       pArgList->Add(pConvData);
+                                       // transfer ownership pArgList
+                                       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONVERSATION_LIST,
+                                                                                                                                       SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY, SCENE_DESTROY_OPTION_DESTROY), pArgList);
+                               }
+                               else
+                               {
+                                       // Back to thread list view.
+                                       pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_THREAD_LIST,
+                                                                                                                                         SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);
+                               }
+                       }
+               }
+               pRecipientList->RemoveAll(true);
+               delete pRecipientList;
+       }
+       else
+       {
+               RequestId requestId = REQUEST_SET_FOCUS_RECIPIENT;
+               __pRecipientPanel->SendUserEvent(requestId, null);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void ComposerForm::CreateDraftMsgAndExit(MessageComposeData* pComposeData)
+{
+       ArrayList* pRecipientsNumberArray = __pRecipientPanel->GeRecipientNumberListN();
+       if (pRecipientsNumberArray)
+       {
+               MessagePresentationModel* pMessagePresentationModel = MessagePresentationModel::GetInstance();
+               if (pMessagePresentationModel)
+               {
+                       pMessagePresentationModel->SaveMessage(*pComposeData, *pRecipientsNumberArray);
+               }
+               pRecipientsNumberArray->RemoveAll(true);
+               delete pRecipientsNumberArray;
+       }
+}
+
+void
+ComposerForm::OnActionPerformed(const Control& source, int actionId)
+{
+       AppLogDebug("ENTER");
+
+       switch (actionId)
+       {
+       case IDA_HEADER_BACK:
+       {
+               MessageComposeData* pComposeData = __pMsgComposePanel->GetMessageComposeDataN();
+               if (((!pComposeData) && (__pRecipientPanel->IsTextForTokenExist() || __pRecipientPanel->GetRecipientCount() > 0)) ||
+                       ((pComposeData) && (__pRecipientPanel->IsTextForTokenExist() || __pRecipientPanel->GetRecipientCount() <= 0)))
+               {
+                       __pRecipientPanel->EnableValidationOnFocusLost(false);
+                       if(__pRecipientPanel->IsTextForTokenExist() && __pRecipientPanel->CheckRecipentForToken())
+                       {
+//                             ArrayList* pRecipientsNumberArray = __pRecipientPanel->GeRecipientNumberListN();
+//                             if (pRecipientsNumberArray)
+//                             {
+//                                     MessagePresentationModel* pMessagePresentationModel = MessagePresentationModel::GetInstance();
+//                                     if (pMessagePresentationModel)
+//                                     {
+//                                             pMessagePresentationModel->SaveMessage(*pComposeData, *pRecipientsNumberArray);
+//                                     }
+//                                     pRecipientsNumberArray->RemoveAll(true);
+//                                     delete pRecipientsNumberArray;
+//                             }
+                               if(pComposeData)
+                               {
+                                       CreateDraftMsgAndExit(pComposeData);
+                               }
+                               else
+                               {
+                                       String warningMessage;
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q", warningMessage);
+                                       ShowMessagePopup(warningMessage, IDA_DISCARD_MESSAGE_OK, IDA_DISCARD_MESSAGE_CANCEL);
+                                       break;
+                               }
+                               MessagesApp* pMsgApp = (MessagesApp*) UiApp::GetInstance();
+                               if (pMsgApp->IsAppRunningEmbededMode())
+                               {
+                                       delete pComposeData;
+                                       pMsgApp->ExitApp(APP_CTRL_RESULT_CANCELED);
+                                       break;
+                               }
+                               else
+                               {
+                                       SceneManager* pSceneManager = SceneManager::GetInstance();
+                                       pSceneManager->GoBackward(BackwardSceneTransition());
+                               }
+                       }
+                       else if(__pRecipientPanel->GetRecipientCount() > 0)
+                       {
+//                             ArrayList* pRecipientsNumberArray = __pRecipientPanel->GeRecipientNumberListN();
+//                             if (pRecipientsNumberArray)
+//                             {
+//                                     MessagePresentationModel* pMessagePresentationModel = MessagePresentationModel::GetInstance();
+//                                     if (pMessagePresentationModel)
+//                                     {
+//                                             pMessagePresentationModel->SaveMessage(*pComposeData, *pRecipientsNumberArray);
+//                                     }
+//                                     pRecipientsNumberArray->RemoveAll(true);
+//                                     delete pRecipientsNumberArray;
+//                             }
+                               if(pComposeData)
+                               {
+                                       CreateDraftMsgAndExit(pComposeData);
+                               }
+                               else
+                               {
+                                       String warningMessage;
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q", warningMessage);
+                                       ShowMessagePopup(warningMessage, IDA_DISCARD_MESSAGE_OK, IDA_DISCARD_MESSAGE_CANCEL);
+                                       break;
+                               }
+                               MessagesApp* pMsgApp = (MessagesApp*) UiApp::GetInstance();
+                               if (pMsgApp->IsAppRunningEmbededMode())
+                               {
+                                       delete pComposeData;
+                                       pMsgApp->ExitApp(APP_CTRL_RESULT_CANCELED);
+                                       break;
+                               }
+                               else
+                               {
+                                       SceneManager* pSceneManager = SceneManager::GetInstance();
+                                       pSceneManager->GoBackward(BackwardSceneTransition());
+                               }
+                       }
+                       else
+                       {
+                               String warningMessage;
+                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q", warningMessage);
+                               ShowMessagePopup(warningMessage, IDA_DISCARD_MESSAGE_OK, IDA_DISCARD_MESSAGE_CANCEL);
+                       }
+               }
+               else
+               {
+                       __pMsgComposePanel->HideKeypad();
+                       __pRecipientPanel->HideKeypad();
+                       if (pComposeData)
+                       {
+                               // Save message to draft
+                               ArrayList* pRecipientsNumberArray = __pRecipientPanel->GeRecipientNumberListN();
+                               if (pRecipientsNumberArray)
+                               {
+                                       MessagePresentationModel* pMessagePresentationModel = MessagePresentationModel::GetInstance();
+                                       if (pMessagePresentationModel)
+                                       {
+                                               pMessagePresentationModel->SaveMessage(*pComposeData, *pRecipientsNumberArray);
+                                       }
+                                       pRecipientsNumberArray->RemoveAll(true);
+                                       delete pRecipientsNumberArray;
+                               }
+                       }
+                       // Close App.
+                       MessagesApp* pMsgApp = (MessagesApp*) UiApp::GetInstance();
+                       if (pMsgApp->IsAppRunningEmbededMode())
+                       {
+                               delete pComposeData;
+                               pMsgApp->ExitApp(APP_CTRL_RESULT_CANCELED);
+                               break;
+                       }
+                       else
+                       {
+                               SceneManager* pSceneManager = SceneManager::GetInstance();
+                               pSceneManager->GoBackward(BackwardSceneTransition());
+                       }
+               }
+               delete pComposeData;
+       }
+       break;
+
+       case IDA_DISCARD_MESSAGE_OK:
+       {
+               __pMsgComposePanel->HideKeypad();
+               __pRecipientPanel->HideKeypad();
+               DestroyMessagePopup();
+               // remove draft entry
+               if (__pDraftMessageEntry)
+               {
+                       ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+                       if (pConvPrModel)
+                       {
+                               pConvPrModel->Delete(__pDraftMessageEntry->GetEntryId(), REQUEST_DELETE_MESSAGE);
+                       }
+               }
+               MessagesApp* pMsgApp = (MessagesApp*) UiApp::GetInstance();
+               if (pMsgApp->IsAppRunningEmbededMode())
+               {
+                       pMsgApp->ExitApp();
+               }
+               else
+               {
+                       SceneManager* pSceneManager = SceneManager::GetInstance();
+                       //pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);
+                       pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);
+               }
+       }
+       break;
+
+       case IDA_DISCARD_MESSAGE_CANCEL:
+       {
+               __pMsgComposePanel->ShowKeypad();
+               DestroyMessagePopup();
+               if(__pRecipientPanel->GetRecipientCount() > 0)
+               {
+                       __pMsgComposePanel->SetFocusToEditor();
+               }
+               else
+               {
+                       __pRecipientPanel->SetFocus();
+               }
+       }
+       break;
+
+       case IDA_OPTION_TRAY_COMMAND:
+       {
+#ifndef _DISABLE_MMS_FEATURE_
+               Rectangle rect = GetClientAreaBounds();
+               if (!__pTrayPanel)
+               {
+                       //Creates Option Tray Panel
+                       __pTrayPanel = new (std::nothrow) Panel();
+                       if (__pTrayPanel)
+                       {
+                               __pTrayPanel->Construct(L"IDL_COMPOSER_OPTION_TRAY_PANEL");
+                               __pTrayPanel->SetPosition(0, 0);
+                               __pTrayPanel->SetBackgroundColor(COLOR_LIST_DIALOGUE_GROUP_TITLE);
+
+                               Button* pPreviewButton = static_cast<Button*>(__pTrayPanel->GetControl(L"IDC_BUTTON_PREVIEW"));
+                               pPreviewButton->AddActionEventListener(*this);
+                               pPreviewButton->SetActionId(IDA_PREVIEW);
+                               bool mmsMode(__pMsgComposePanel->IsMmsMode());
+                               pPreviewButton->SetEnabled(mmsMode);
+                               Button* pDurationButton = static_cast<Button*>(__pTrayPanel->GetControl(L"IDC_BUTTON_DURATION"));
+                               pDurationButton->AddActionEventListener(*this);
+                               pDurationButton->SetActionId(IDA_PAGE_DURATION);
+                               String strFormat;
+                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS", strFormat);
+                               String strText;
+                               strText.Format(strFormat.GetLength() * 2, strFormat.GetPointer(), __pMsgComposePanel->GetDefaultPageDuration());
+                               pDurationButton->SetText(strText);
+                               pDurationButton->SetEnabled(mmsMode);
+                               __pRecipientPanel->SetBounds(Rectangle(0, __pTrayPanel->GetHeight(), __pRecipientPanel->GetWidth(),
+                                                                                                          __pRecipientPanel->GetHeight()));
+                               AddControl(*__pTrayPanel);
+                       }
+               }
+               else
+               {
+                       if (__pTrayPanel->GetShowState())
+                       {
+                               __pRecipientPanel->SetBounds(Rectangle(0, 0, __pRecipientPanel->GetWidth(), __pRecipientPanel->GetHeight()));
+                               __pTrayPanel->SetShowState(false);
+                       }
+                       else
+                       {
+                               __pRecipientPanel->SetBounds(Rectangle(0, __pTrayPanel->GetHeight(), __pRecipientPanel->GetWidth(), __pRecipientPanel->GetHeight()));
+                               __pTrayPanel->SetShowState(true);
+                       }
+               }
+#endif
+       }
+       break;
+
+       case IDA_PREVIEW:
+       {
+               // Save to draft
+               __pMsgComposePanel->HideKeypad(); // To avoid control overlapping
+               // Save to draft
+               MessageComposeData* pComposeData = __pMsgComposePanel->GetMessageComposeDataN();
+               if (pComposeData)
+               {
+                       //Priview MMS
+                       ArrayList* pArgList = new (std::nothrow) ArrayList();
+                       pArgList->Add((new (std::nothrow) Integer(MMS_FORM_PREVIEW)));
+                       MessageData* pMessageData = new (std::nothrow) MessageData();
+                       pMessageData->Construct(*pComposeData);
+                       pArgList->Add(pMessageData);
+                       SceneManager* pSceneManager = SceneManager::GetInstance();
+                       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_MMS_DETAIL, SCENE_TRANSITION_ANIMATION_TYPE_NONE), pArgList);
+                       delete pComposeData;
+               }
+       }
+       break;
+
+       case IDA_PAGE_DURATION:
+       {
+               if (__pDurationPopup)
+               {
+                       delete __pDurationPopup;
+               }
+               __pDurationPopup = new (std::nothrow) DurationPopup(*this);
+               __pDurationPopup->Construct(L"IDL_DURATION_POPUP");
+               __pDurationPopup->SetDuration(__pMsgComposePanel->GetDefaultPageDuration());
+               __pDurationPopup->Show();
+               __pDurationPopup->SetFocusToEditor();
+       }
+       break;
+
+       default:
+               break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ComposerForm::OnKeypadOpened(Control& source)
+{
+       AppLogDebug("ENTER");
+
+       Rectangle clientArea = GetClientAreaBounds();
+       if (__pMsgComposePanel != null && __pRecipientPanel)
+       {
+               __pMsgComposePanel->SetMaximumSize(Dimension(__pMsgComposePanel->GetWidth(), clientArea.height - __pRecipientPanel->GetHeight() + 1));
+               Rectangle cpmposePanelBounds = __pMsgComposePanel->GetBounds();
+               __pMsgComposePanel->SetBounds(Rectangle(cpmposePanelBounds.x, clientArea.height - __pMsgComposePanel->GetDisplayHeight(), clientArea.width, __pMsgComposePanel->GetDisplayHeight()));
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ComposerForm::OnKeypadClosed(Control& source)
+{
+       AppLogDebug("ENTER");
+
+       Rectangle clientArea = GetClientAreaBounds();
+       if (__pMsgComposePanel != null)
+       {
+               __pMsgComposePanel->SetMaximumSize(Dimension(__pMsgComposePanel->GetWidth(), clientArea.height - __pRecipientPanel->GetHeight() + 1));
+               Rectangle prePanelBounds = __pMsgComposePanel->GetBounds();
+               Clipboard* pClibBoard = Clipboard::GetInstance();
+               if (pClibBoard && pClibBoard->IsPopupVisible())
+               {
+                       __pMsgComposePanel->SetBounds(Rectangle(0, prePanelBounds.y - PANEL_HEIGHT + 35, clientArea.width, __pMsgComposePanel->GetDisplayHeight()));
+               }
+               else
+               {
+                       if(__pMsgComposePanel->GetDisplayHeight() > __pMsgComposePanel->GetMaximumSize().height)
+                       {
+                               __pMsgComposePanel->SetBounds(Rectangle(0, clientArea.height - __pMsgComposePanel->GetDisplayHeight(), clientArea.width, __pMsgComposePanel->GetMaximumSize().height));
+                       }
+                       else
+                       {
+                               __pMsgComposePanel->SetBounds(Rectangle(0, clientArea.height - __pMsgComposePanel->GetDisplayHeight(), clientArea.width, __pMsgComposePanel->GetDisplayHeight()));
+                       }
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ComposerForm::OnKeypadBoundsChanged(Control& source)
+{
+       AppLogDebug("ENTER");
+
+       Rectangle clientArea = GetClientAreaBounds();
+       if (__pMsgComposePanel != null)
+       {
+               __pMsgComposePanel->SetMaximumSize(Dimension(__pMsgComposePanel->GetWidth(), clientArea.height - __pRecipientPanel->GetHeight() + 1));
+               Rectangle prePanelBounds = __pMsgComposePanel->GetBounds();
+               __pMsgComposePanel->SetPosition(prePanelBounds.x, clientArea.height - prePanelBounds.height);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ComposerForm::OnKeyReleased(const Control& source, KeyCode keyCode)
+{
+       AppLogDebug("ENTER");
+
+       switch (keyCode)
+       {
+       case KEY_SIDE_UP:
+       case KEY_SIDE_DOWN:
+       {
+               SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
+               if (pSettingPrModel->IsVolumeKeyOn())
+               {
+                       if (keyCode == KEY_SIDE_UP)
+                       {
+                               FontSettings* pFontSettings = SettingPresentationModel::GetInstance()->GetFontSettings();
+                               int fontType = (int) pFontSettings->GetMessageFontType();
+                               if (fontType < SETTING_HUGE_FONT)
+                               {
+                                       fontType++;
+                                       pFontSettings->SetMessageFonttype((SettingFontType) fontType);
+                               }
+                               int size = pFontSettings->GetMessageTextSize((SettingFontType) fontType);
+                               __pMsgComposePanel->SetTextSize(size);
+                               __pRecipientPanel->SetTextSize(size);
+                       }
+                       else if (keyCode == KEY_SIDE_DOWN)
+                       {
+                               FontSettings* pFontSettings = SettingPresentationModel::GetInstance()->GetFontSettings();
+                               int fontType = pFontSettings->GetMessageFontType();
+                               if (fontType > SETTING_TINY_FONT)
+                               {
+                                       fontType--;
+                                       pFontSettings->SetMessageFonttype((SettingFontType) fontType);
+                               }
+                               int size = pFontSettings->GetMessageTextSize((SettingFontType) fontType);
+                               __pMsgComposePanel->SetTextSize(size);
+                               __pRecipientPanel->SetTextSize(size);
+                       }
+               }
+       }
+       break;
+
+       default:
+               break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+
+void
+ComposerForm::LoadComposeData(const MessageComposeData& composeData)
+{
+       AppLogDebug("ENTER");
+
+       const ArrayList* pAddressList = composeData.GetRecipientList();
+       __pRecipientPanel->SetRecipientList(pAddressList);
+       // Set Body text.
+       __pMsgComposePanel->LoadComposeData(composeData);
+       // Set cursor based available data when loading form appcontrol
+       bool recipientExist(pAddressList && pAddressList->GetCount()>0);
+       if( recipientExist )
+       {
+               __pMsgComposePanel->SetFocusToEditor();
+       }
+       else
+       {
+               __pRecipientPanel->SetFocus();
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ComposerForm::LoadDraftMessage(void)
+{
+       AppLogDebug("ENTER");
+
+       if (__pDraftMessageEntry)
+       {
+               // Set recipients list.
+               ArrayList* pAddressList = const_cast<ArrayList*>(__pDraftMessageEntry->GetAddressList());
+               __pRecipientPanel->SetRecipientList(pAddressList);
+               // Set Body text.
+               __pMsgComposePanel->LoadMessageData(*__pDraftMessageEntry);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ComposerForm::ShowMessagePopup(const String& message, int leftActionId,
+                                                          int rightActionId)
+{
+       AppLogDebug("ENTER");
+
+       if (__pMessagePopup == null)
+       {
+               __pMessagePopup = new (std::nothrow) Popup();
+               __pMessagePopup->Construct(L"IDL_BLOCK_POPUP");
+       }
+       Button* pButtonOk = static_cast<Button*>(__pMessagePopup->GetControl(L"IDC_BUTTON_OK"));
+       pButtonOk->SetActionId(leftActionId);
+       pButtonOk->AddActionEventListener(*this);
+       Button* pButtonCancel = static_cast<Button*>(__pMessagePopup->GetControl(L"IDC_BUTTON_CANCEL"));
+       pButtonCancel->SetActionId(rightActionId);
+       pButtonCancel->AddActionEventListener(*this);
+       Label* pLabelNumber = static_cast<Label*>(__pMessagePopup->GetControl(L"IDC_BLOCKNUMBER_LABEL"));
+       pLabelNumber->SetText(message);
+       __pMessagePopup->Show();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ComposerForm::DestroyMessagePopup(void)
+{
+       AppLogDebug("ENTER");
+
+       __pRecipientPanel->EnableValidationOnFocusLost(true);
+       if (__pMessagePopup)
+       {
+               delete __pMessagePopup;
+               __pMessagePopup = null;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
diff --git a/src/MsgCompressPopup.cpp b/src/MsgCompressPopup.cpp
new file mode 100644 (file)
index 0000000..f00a009
--- /dev/null
@@ -0,0 +1,101 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include "MsgCompressPopup.h"\r
+#include "MsgBitmapUtility.h"\r
+\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Ui;\r
+using namespace Tizen::Ui::Controls;\r
+using namespace Tizen::Base::Runtime;\r
+\r
+CompressPopup::CompressPopup(void)\r
+       : __iconIndex(10)\r
+       , __pButton(null)\r
+       , __pTimer(null)\r
+{\r
+\r
+}\r
+\r
+CompressPopup::~CompressPopup(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pTimer)\r
+       {\r
+               __pTimer->Cancel();\r
+               delete __pTimer;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+CompressPopup::Construct(bool hideSubject)\r
+{\r
+       AppLogDebug("ENTER");\r
+       result r = Popup::Construct(L"IDL_IMAGE_COMPRESS_POPUP");\r
+       if (!IsFailed(r))\r
+       {\r
+               __pButton = static_cast<Button*>(GetControl(L"IDC_BUTTON_PROGRESS"));\r
+               Bitmap* pBitMap = BitmapUtility::GetInstance()->GetIcon((MessageIconType) __iconIndex);\r
+               __pButton->SetNormalBackgroundBitmap(*pBitMap);\r
+               if (!__pTimer)\r
+               {\r
+                       __pTimer = new (std::nothrow) Timer();\r
+                       __pTimer->Construct(*this);\r
+                       __pTimer->StartAsRepeatable(100);\r
+               }\r
+\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+result\r
+CompressPopup::OnDraw(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+//\r
+       result r = E_SUCCESS;\r
+//     Canvas* pCanvas = GetCanvasN();\r
+//     if (__pBottomBg)\r
+//     {\r
+//             pCanvas->DrawNinePatchedBitmap(Rectangle(MARGIN_10PX,\r
+//                                                                                              GetHeight() - (H_POPUP_BOTTOM_96PX + MARGIN_10PX),\r
+//                                                                                              GetWidth() - MARGIN_10PX * 2, H_POPUP_BOTTOM_96PX), *__pBottomBg);\r
+//     }\r
+//     delete pCanvas;\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+void\r
+CompressPopup::OnTimerExpired(Timer& timer)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__iconIndex < 39)\r
+       {\r
+               __iconIndex++;\r
+       }\r
+       else\r
+       {\r
+               __iconIndex = 10;\r
+       }\r
+       Bitmap* pBitMap = BitmapUtility::GetInstance()->GetIcon((MessageIconType) __iconIndex);\r
+       __pButton->SetNormalBackgroundBitmap(*pBitMap);\r
+       __pButton->RequestRedraw(true);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
diff --git a/src/MsgContactList.cpp b/src/MsgContactList.cpp
new file mode 100644 (file)
index 0000000..572ad0f
--- /dev/null
@@ -0,0 +1,329 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <FApp.h>
+
+#include "MsgCommonUtil.h"
+#include "MsgContactList.h"
+#include "MsgContactPopup.h"
+#include "MsgContactUtility.h"
+#include "MsgIDeleteEventListener.h"
+#include "MsgSettingPresentationModel.h"
+#include "MsgTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+
+ContactList::ContactList(void)
+:__pContactList(null)
+, __pContactPopup(null)
+, __pBlockConfirmPopup(null)
+{
+       //Empty Implementation
+}
+
+ContactList::~ContactList(void)
+{
+       AppLogDebug("ENTER");
+
+       if(__pContactPopup)
+       {
+               delete __pContactPopup;
+       }
+       if(__pBlockConfirmPopup)
+       {
+               delete __pBlockConfirmPopup;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+result
+ContactList::Construct(ArrayList* pPhoneNumberList)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       __pContactList = pPhoneNumberList;
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+void
+ContactList::OnListViewItemStateChanged(ListView& listView, int index, int elementId,
+               ListItemStatus status)
+{
+       AppLogDebug("ENTER");
+
+       ContactDetails* contactdetails = static_cast<ContactDetails*>(__pContactList->GetAt(index));
+       __titleName = contactdetails->contactName;
+       __contactNumber = contactdetails->contactNumber;
+       ContactListPopup();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ContactList::OnListViewItemSwept(ListView& listView, int index,
+               SweepDirection direction)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ContactList::OnListViewContextItemStateChanged(ListView& listView, int index, int elementId,
+               ListContextItemStatus state)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ContactList::OnListViewItemLongPressed(ListView& listView, int index, int elementId,
+               bool& invokeListViewItemCallback)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+int
+ContactList::GetItemCount(void)
+{
+       AppLogDebug("ENTER");
+
+       int count(0);
+       // In case of single recipient, it will never be invoked.
+       if(__pContactList && __pContactList->GetCount() > 1)
+       {
+               count = __pContactList->GetCount();
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return count;
+}
+
+ListItemBase*
+ContactList::CreateItem(int index, int itemWidth)
+{
+       AppLogDebug("ENTER");
+
+       CustomItem* pItem = new (std::nothrow) CustomItem();
+       pItem->Construct(Dimension(itemWidth, H_LIST_ITEM_128PX), LIST_ANNEX_STYLE_NORMAL);
+       ContactDetails* pContactDetails = static_cast<ContactDetails*>(__pContactList->GetAt(index));
+       if(pContactDetails)
+       {
+               pItem->AddElement(Rectangle(MARGIN_16PX,0, itemWidth, H_TITLE_LINE), IDC_CONTACT_NAME_LIST, pContactDetails->contactName, THREAD_LIST_MAIN_TEXT_FONT_SIZE,
+                               Color::GetColor(COLOR_ID_BLACK),Color::GetColor(COLOR_ID_BLACK),Color::GetColor(COLOR_ID_BLACK));
+               pItem->AddElement(Rectangle(MARGIN_16PX,LIST_ITEM_SUBITEM, itemWidth, H_SUB_TITLE), IDC_CONTACT_NUMBER_LIST,pContactDetails->contactNumber, THREAD_LIST_SUB_TEXT_FONT_SIZE,
+                               COLOR_THREADLIST_DATE_TIME_SHORTMSG_ITEM, COLOR_THREADLIST_DATE_TIME_SHORTMSG_ITEM, COLOR_THREADLIST_DATE_TIME_SHORTMSG_ITEM);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pItem;
+}
+
+bool
+ContactList::DeleteItem(int index, ListItemBase* pItem, int itemWidth)
+{
+       AppLogDebug("ENTER");
+
+       if(pItem)
+       {
+               delete pItem;
+               pItem = null;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return true;
+}
+
+void
+ContactList::ContactListPopup(void)
+{
+       AppLogDebug("ENTER");
+       // Release memory if exist
+       if(__pContactPopup)
+       {
+               delete __pContactPopup;
+               __pContactPopup = null;
+       }
+       __pContactPopup = new (std::nothrow) ContactPopup(*this);
+       __pContactPopup->Construct(__titleName,__contactNumber);
+       __pContactPopup->Show();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+
+}
+
+void
+ContactList::OnPopupListItemSelected(const Control& popup, int selectedItem, const Object* pPopupListItem)
+{
+       AppLogDebug("ENTER");
+
+       if(!pPopupListItem)
+       {
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+               return;
+       }
+       const PopupListItem* pPopupSelectItem = (PopupListItem*)pPopupListItem;
+       switch(pPopupSelectItem->GetActionId())
+       {
+       case IDA_CONVERSATION_FORM_VOICE_CALL:
+       {
+               if( CommonUtil::IsSimAvailable())
+               {
+                       ContactUtility::VoiceCall(__contactNumber);
+               }
+               else
+               {
+                       // Show error message.
+                       String msgText;
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_SLCD_POP_TEXT_SIM_CARD_ERROR", msgText);
+                       CommonUtil::ShowInfoPopup(msgText);
+               }
+       }
+       break;
+
+       case IDA_CONVERSATION_FORM_VIEW_CONTACT:
+               ContactUtility::ViewContact(__contactNumber);
+               break;
+
+       case IDA_CONVERSATION_FORM_ADD_CONTACT:
+               ContactUtility::AddContact(__contactNumber);
+               break;
+
+       case IDA_CONVERSATION_FORM_BLOCK:
+               BlockPopup();
+               break;
+
+       case IDA_CONVERSATION_FORM_UNBLOCK:
+               UnBlockPhoneNumber();
+               break;
+       default:
+               break;
+
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ContactList::OnPopupClose(Object* pObject )
+{
+       if(__pContactPopup && __pContactPopup->Equals(*pObject))
+       {
+               delete __pContactPopup;
+               __pContactPopup = null;
+       }
+
+       if(__pBlockConfirmPopup && __pBlockConfirmPopup->Equals(*pObject))
+       {
+               delete __pBlockConfirmPopup;
+               __pBlockConfirmPopup = null;
+       }
+}
+
+
+void
+ContactList::BlockPopup(void)
+{
+       AppLogDebug("ENTER");
+
+       String number;
+       String strText;
+       __pBlockConfirmPopup = new (std::nothrow) Popup();
+       __pBlockConfirmPopup->Construct(L"IDL_BLOCK_POPUP");
+       Button* pButtonOk = static_cast<Button*>(__pBlockConfirmPopup->GetControl(L"IDC_BUTTON_OK"));
+       pButtonOk->SetActionId(IDA_PHONENUMBER_BLOCK_OK);
+       pButtonOk->AddActionEventListener(*this);
+       Button* pButtonCancel = static_cast<Button*>(__pBlockConfirmPopup->GetControl(L"IDC_BUTTON_CANCEL"));
+       pButtonCancel->SetActionId(IDA_PHONENUMBER_BLOCK_CANCEL);
+       pButtonCancel->AddActionEventListener(*this);
+       Label* pLabelNumber = static_cast<Label*>(__pBlockConfirmPopup->GetControl(L"IDC_BLOCKNUMBER_LABEL"));
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_POP_BLOCK_PS_Q", strText);
+       strText.Replace(L"%s", __contactNumber);
+       number.Append(strText);
+       pLabelNumber->SetText(number);
+
+       __pBlockConfirmPopup->Show();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ContactList::OnActionPerformed(const Control& source, int actionId)
+{
+       AppLogDebug("ENTER");
+
+       switch(actionId)
+       {
+       case IDA_PHONENUMBER_BLOCK_OK:
+       {
+               SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
+               pSettingPrModel->AddToFilter(__contactNumber, 1);
+               pSettingPrModel->RefreshSpamFilterList();
+               if(__pBlockConfirmPopup)
+               {
+                       __pBlockConfirmPopup->SetShowState(false);
+                       delete __pBlockConfirmPopup;
+                       __pBlockConfirmPopup = null;
+               }
+       }
+       break;
+
+       case IDA_PHONENUMBER_BLOCK_CANCEL:
+       {
+               if(__pBlockConfirmPopup)
+               {
+                       __pBlockConfirmPopup->SetShowState(false);
+                       delete __pBlockConfirmPopup;
+                       __pBlockConfirmPopup = null;
+               }
+       }
+       break;
+
+       default:
+               break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ContactList::UnBlockPhoneNumber(void)
+{
+       AppLogDebug("ENTER");
+
+       SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
+       int filterIndex = pSettingPrModel->GetFilterListIndex(__contactNumber);
+       pSettingPrModel->DeleteFilter(filterIndex,1);
+       pSettingPrModel->RefreshSpamFilterList();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
diff --git a/src/MsgContactListItem.cpp b/src/MsgContactListItem.cpp
new file mode 100644 (file)
index 0000000..c71f78e
--- /dev/null
@@ -0,0 +1,217 @@
+\r
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include "MsgContactListItem.h"\r
+#include "MsgLVMultiLineTextItem.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Utility;\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Ui::Controls;\r
+\r
+enum ContactDetail\r
+{\r
+       CONTACT_DETAIL_ITEM_NAME,\r
+       CONTACT_DETAIL_ITEM_NUMBER\r
+};\r
+\r
+ContactListItem::ContactListItem(const String& contactName, const String& contactNumber, int width, bool editMode)\r
+       : __IsEditMode(editMode)\r
+       , __Width(width)\r
+       , __contactName(contactName)\r
+       , __contactNumber(contactNumber)\r
+       , __pTitleFont(null)\r
+       , __pSubTextFont(null)\r
+       , __pMtTextName(null)\r
+       , __pMtTextNumber(null)\r
+{\r
+       // Empty implementation\r
+}\r
+\r
+ContactListItem::~ContactListItem(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pMtTextNumber)\r
+       {\r
+               delete __pMtTextNumber;\r
+       }\r
+       if (__pMtTextName)\r
+       {\r
+               delete __pMtTextName;\r
+       }\r
+       if (__pSubTextFont)\r
+       {\r
+               delete __pSubTextFont;\r
+       }\r
+       if (__pTitleFont)\r
+       {\r
+               delete __pTitleFont;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+\r
+void\r
+ContactListItem::CreateContactListItemLayout(const String& searchText)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__contactName.IsEmpty())\r
+       {\r
+               __contactName.Append(__contactNumber);\r
+       }\r
+       // Check item is in edit mode.\r
+       ListAnnexStyle listStyle = LIST_ANNEX_STYLE_NORMAL;\r
+       int itemWidth(__Width);\r
+       if (__IsEditMode)\r
+       {\r
+               listStyle = LIST_ANNEX_STYLE_MARK;\r
+               itemWidth -= W_CHECKBOX;\r
+       }\r
+       Construct(Dimension(__Width, H_LIST_ITEM_128PX), listStyle);\r
+\r
+       int posX = MARGIN_16PX;\r
+       int posY = MARGIN_10PX;\r
+       int width = itemWidth - MARGIN_16PX;\r
+       int height = H_TITLE_LINE;\r
+       // For contact title.\r
+       CreateContactTitleElement(searchText);\r
+       __pMtTextName->CreateTextLayout(width, true);\r
+       AddElement(Rectangle(posX, posY, width, height), CONTACT_DETAIL_ITEM_NAME, *__pMtTextName);\r
+       SetElementSelectionEnabled(IDC_LIST_TEXT_CONTACT, false);\r
+       SetElementTextVerticalAlignment(IDC_LIST_TEXT_CONTACT, ALIGNMENT_MIDDLE);\r
+       SetElementTextHorizontalAlignment(IDC_LIST_TEXT_CONTACT, ALIGNMENT_LEFT);\r
+\r
+       // For contact number\r
+       posY = MARGIN_10PX + H_TITLE_LINE;\r
+       height = H_SUB_TITLE;\r
+       CreateContactNumberElement(searchText);\r
+       __pMtTextNumber->CreateTextLayout(width, true);\r
+       AddElement(Rectangle(posX, posY, width, height), CONTACT_DETAIL_ITEM_NUMBER, *__pMtTextNumber);\r
+       SetElementSelectionEnabled(CONTACT_DETAIL_ITEM_NUMBER, false);\r
+       SetElementTextVerticalAlignment(CONTACT_DETAIL_ITEM_NUMBER, ALIGNMENT_MIDDLE);\r
+       SetElementTextHorizontalAlignment(CONTACT_DETAIL_ITEM_NUMBER, ALIGNMENT_LEFT);\r
+\r
+       SetElementSelectionEnabled(IDC_LIST_TEXT_DATE_TIME, false);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+ContactListItem::CreateContactTitleElement(const String& searchText)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pMtTextName)\r
+       {\r
+               delete __pMtTextName;\r
+       }\r
+       __pMtTextName = new (std::nothrow) LVMultiLineTextItem();\r
+       __pTitleFont = new (std::nothrow) Font();\r
+       __pTitleFont->Construct(FONT_STYLE_PLAIN, THREAD_LIST_MAIN_TEXT_FONT_SIZE);\r
+       if (searchText.IsEmpty())\r
+       {\r
+               __pMtTextName->AddText(__contactName, COLOR_BLACK, COLOR_BLACK, __pTitleFont);\r
+       }\r
+       else\r
+       {\r
+               int searchIndex(-1);\r
+               String displayName(__contactName);\r
+               displayName.ToLowerCase();\r
+               String tempSearchText(searchText);\r
+               tempSearchText.ToLowerCase();\r
+               displayName.IndexOf(tempSearchText, 0, searchIndex);\r
+               int strLength = displayName.GetLength();\r
+               if (searchIndex >= 0)\r
+               {\r
+                       String strText;\r
+                       if (searchIndex > 0)\r
+                       {\r
+                               __contactName.SubString(0, searchIndex, strText);\r
+                               __pMtTextName->AddText(strText, COLOR_BLACK, COLOR_BLACK, __pTitleFont);\r
+                       }\r
+                       __contactName.SubString(searchIndex, searchText.GetLength(), strText);\r
+                       __pMtTextName->AddText(strText, COLOR_SEARCH_TEXT, COLOR_SEARCH_TEXT, __pTitleFont);\r
+                       if (searchIndex + searchText.GetLength() < strLength)\r
+                       {\r
+                               __contactName.SubString(searchIndex + searchText.GetLength(), strText);\r
+                               __pMtTextName->AddText(strText, COLOR_BLACK, COLOR_BLACK, __pTitleFont);\r
+                       }\r
+               }\r
+               else\r
+               {\r
+                       __pMtTextName->AddText(__contactName, COLOR_BLACK, COLOR_BLACK, __pTitleFont);\r
+               }\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+ContactListItem::CreateContactNumberElement(const String& searchText)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pMtTextNumber)\r
+       {\r
+               delete __pMtTextNumber;\r
+       }\r
+       __pMtTextNumber = new (std::nothrow) LVMultiLineTextItem();\r
+       __pSubTextFont = new (std::nothrow) Font();\r
+       __pSubTextFont->Construct(FONT_STYLE_PLAIN, THREAD_LIST_SUB_TEXT_FONT_SIZE);\r
+       if (searchText.IsEmpty())\r
+       {\r
+               __pMtTextNumber->AddText(__contactNumber, COLOR_BLACK, COLOR_BLACK, __pSubTextFont);\r
+       }\r
+       else\r
+       {\r
+               int searchIndex(-1);\r
+               String msgText(__contactNumber);\r
+               msgText.ToLowerCase();\r
+               msgText.IndexOf(searchText, 0, searchIndex);\r
+               int strLength = msgText.GetLength();\r
+               // Search text\r
+               if (searchIndex >= 0)\r
+               {\r
+                       String strText;\r
+                       if (searchIndex > 0)\r
+                       {\r
+                               __contactNumber.SubString(0, searchIndex, strText);\r
+                               __pMtTextNumber->AddText(strText, COLOR_BLACK, COLOR_BLACK, __pSubTextFont);\r
+                       }\r
+                       __contactNumber.SubString(searchIndex, searchText.GetLength(), strText);\r
+                       __pMtTextNumber->AddText(strText, COLOR_SEARCH_TEXT, COLOR_SEARCH_TEXT, __pSubTextFont);\r
+                       if (searchIndex + searchText.GetLength() < strLength)\r
+                       {\r
+                               __contactNumber.SubString(searchIndex + searchText.GetLength(), strText);\r
+                               __pMtTextNumber->AddText(strText, COLOR_BLACK, COLOR_BLACK, __pSubTextFont);\r
+                       }\r
+               }\r
+               else\r
+               {\r
+                       __pMtTextNumber->AddText(__contactNumber, COLOR_BLACK, COLOR_BLACK, __pSubTextFont);\r
+               }\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
diff --git a/src/MsgContactPopup.cpp b/src/MsgContactPopup.cpp
new file mode 100644 (file)
index 0000000..1acdf38
--- /dev/null
@@ -0,0 +1,228 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <FSocial.h>
+
+#include "MsgContactPopup.h"
+#include "MsgContactUtility.h"
+#include "MsgSettingPresentationModel.h"
+#include "MsgTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui::Controls;
+
+#define H_POPUP           550
+#define H_LIST            512
+#define VERTICAL_PADDING  110
+
+ContactPopup::ContactPopup(IPopupEventListener& listener)
+       : __pCancelButton(null)
+       , __popupListener(listener)
+       , __pPopupItemList(null)
+{
+
+}
+
+ContactPopup::~ContactPopup(void)
+{
+       if (__pPopupItemList)
+       {
+               __pPopupItemList->RemoveAll(true);
+               delete __pPopupItemList;
+       }
+}
+
+result
+ContactPopup::Construct(const String& contactName, const String& contactNumber)
+{
+       AppLogDebug("ENTER");
+
+       result r = Popup::Construct(L"IDL_RECIPIENT_LIST_POPUP");
+       if (!IsFailed(r))
+       {
+               __contactName = contactName;
+               __contactNumber = contactNumber;
+               InitalizePopupItems();
+               SetTitleText(__contactName);
+               ListView* pList = static_cast<ListView*>(GetControl(L"IDC_OPTION_LISTVIEW"));
+               pList->AddListViewItemEventListener(*this);
+               pList->SetItemProvider(*this);
+               __pCancelButton = static_cast<Button*>(GetControl(L"IDC_BUTTON_CLOSE"));
+               __pCancelButton->SetActionId(IDA_BUTTON_CLOSE_HELPER_POPUP);
+               __pCancelButton->AddActionEventListener(*this);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+void
+ContactPopup::InitalizePopupItems(void)
+{
+       AppLogDebug("ENTER");
+
+       __pPopupItemList = new (std::nothrow) ArrayList();
+       __pPopupItemList->Construct();
+       // For voice call
+       String strText;
+       int actionId(-1);
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_VOICE_CALL", strText);
+       actionId = IDA_CONVERSATION_FORM_VOICE_CALL;
+       PopupListItem* pPopupListItem = new (std::nothrow) PopupListItem(strText, actionId);
+       __pPopupItemList->Add(pPopupListItem);
+       // For contact
+       if (__contactName.CompareTo(String(IDS_UNKNOWN)) == 0)
+       {
+               actionId = IDA_CONVERSATION_FORM_ADD_CONTACT;
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_OPT_ADD_CONTACT", strText);
+       }
+       else
+       {
+               actionId = IDA_CONVERSATION_FORM_VIEW_CONTACT;
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_OPT_VIEW_CONTACT", strText);
+       }
+       pPopupListItem = new (std::nothrow) PopupListItem(strText, actionId);
+       __pPopupItemList->Add(pPopupListItem);
+       // For Spam block
+       SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
+       pSettingPrModel->RefreshSpamFilterList();
+       int filterIndex = pSettingPrModel->GetFilterListIndex(__contactNumber);
+       if (filterIndex == -1)
+       {
+               actionId = IDA_CONVERSATION_FORM_BLOCK;
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_OPT_BLOCK", strText);
+       }
+       else
+       {
+               actionId = IDA_CONVERSATION_FORM_UNBLOCK;
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_OPT_UNBLOCK", strText);
+       }
+       pPopupListItem = new (std::nothrow) PopupListItem(strText, actionId);
+       __pPopupItemList->Add(pPopupListItem);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ContactPopup::OnActionPerformed(const Control& source, int actionId)
+{
+       AppLogDebug("ENTER");
+
+       switch (actionId)
+       {
+       case IDA_BUTTON_CLOSE_HELPER_POPUP:
+       {
+               Popup::SetShowState(false);
+               __popupListener.OnPopupClose(this);
+       }
+       break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+ContactPopup::OnListViewItemStateChanged(ListView& listView, int index, int elementId,
+                                                                                ListItemStatus status)
+{
+       AppLogDebug("ENTER");
+
+       // Notify pop up list item selected.
+       PopupListItem* pPopupListItem = (PopupListItem*) __pPopupItemList->GetAt(index);
+       Popup::SetShowState(false);
+       __popupListener.OnPopupListItemSelected(*this, index, pPopupListItem);
+       // Hide popup and send destroy event.
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ContactPopup::OnListViewItemSwept(ListView& listView, int index,
+                                                                 SweepDirection direction)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ContactPopup::OnListViewContextItemStateChanged(ListView& listView, int index, int elementId,
+                                                                                               ListContextItemStatus state)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ContactPopup::OnListViewItemLongPressed(ListView& listView, int index, int elementId,
+                                                                               bool& invokeListViewItemCallback)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+int
+ContactPopup::GetItemCount(void)
+{
+       AppLogDebug("ENTER");
+       int count(0);
+       if (__pPopupItemList)
+       {
+               count = __pPopupItemList->GetCount();
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return count;
+}
+
+ListItemBase*
+ContactPopup::CreateItem(int index, int itemWidth)
+{
+       AppLogDebug("ENTER");
+
+       CustomItem* pItem = new (std::nothrow) CustomItem();
+       pItem->Construct(Dimension(itemWidth, H_LIST_ITEM_112PX), LIST_ANNEX_STYLE_NORMAL);
+       PopupListItem* pPopupListItem = (PopupListItem*) __pPopupItemList->GetAt(index);
+       if (pPopupListItem)
+       {
+               pItem->AddElement(Rectangle(MARGIN_16PX, 0, itemWidth, H_LIST_ITEM_112PX),
+                                                 IDC_OPTIONS_LIST, pPopupListItem->GetItemText());
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pItem;
+}
+
+bool
+ContactPopup::DeleteItem(int index, ListItemBase* pItem, int itemWidth)
+{
+       AppLogDebug("ENTER");
+
+       if (pItem)
+       {
+               delete pItem;
+               pItem = null;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return true;
+}
diff --git a/src/MsgContactUtility.cpp b/src/MsgContactUtility.cpp
new file mode 100644 (file)
index 0000000..5205e6c
--- /dev/null
@@ -0,0 +1,178 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <FApp.h>\r
+#include <FSocial.h>\r
+\r
+#include "MsgContactUtility.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Social;\r
+\r
+const wchar_t* IDS_TELEPHONE = L"tel:";\r
+const wchar_t* IDS_TYPE_VOICE = L"type:voice";\r
+const wchar_t* IDS_PHONE = L"phone:";\r
+const wchar_t* IDS_PATH = L"path:/";\r
+const wchar_t* FILE_EXTENSION_VCF = L".vcf";\r
+const wchar_t* IDS_SLASH = L"/";\r
+const wchar_t* IDS_VIEW_TYPE_VCF = L"viewType:vcf";\r
+\r
+void\r
+ContactUtility::VoiceCall(const String& phoneNumber)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       AppControl* pAppCntl = AppManager::FindAppControlN(IDS_APPCONTROL_PROVIDER_CALL,\r
+                                                                                                          IDS_APPCONTROL_OPERATION_CALL);\r
+       if (pAppCntl)\r
+       {\r
+               HashMap* pHashMap = new (std::nothrow) HashMap();\r
+               pHashMap->Construct();\r
+               // Add argument\r
+               String* pTelKey = new (std::nothrow) String(L"tel");\r
+               String* pTelVal = new (std::nothrow) String(phoneNumber);\r
+               pHashMap->Add(pTelKey, pTelVal);\r
+               // Add argument\r
+               String* pTypeKey = new (std::nothrow) String(L"type");\r
+               String* pTypeVal = new (std::nothrow) String(L"voice");\r
+               pHashMap->Add(pTypeKey, pTypeVal);\r
+               // Start App control\r
+               pAppCntl->Start(null, null, pHashMap, null);\r
+               pHashMap->RemoveAll(true);\r
+               delete pHashMap;\r
+               delete pAppCntl;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+ContactUtility::AddContact(const String& phoneNumber)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       AppControl* pAppCntl = AppManager::FindAppControlN(IDS_APPCONTROL_PROVIDER_CONTACT,\r
+                                                                                                          IDS_APPCONTROL_OPERATION_ADD);\r
+       if (pAppCntl)\r
+       {\r
+               HashMap* pHashMap = new (std::nothrow) HashMap();\r
+               pHashMap->Construct();\r
+               String* pModeKey = new (std::nothrow) String(L"phone");\r
+               String* pModeVal = new (std::nothrow) String(phoneNumber);\r
+               pHashMap->Add(pModeKey, pModeVal);\r
+               // Start app control\r
+               pAppCntl->Start(null, null, pHashMap, null);\r
+               pHashMap->RemoveAll(true);\r
+               delete pHashMap;\r
+               delete pAppCntl;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+ContactUtility::ViewContact(const String& contactNumber)\r
+{\r
+       AppLogDebug("ENTER");\r
+       String viewContact;\r
+\r
+       AppControl* pAppCntl = AppManager::FindAppControlN(IDS_APPCONTROL_PROVIDER_CONTACT,\r
+                                                                                                          IDS_APPCONTROL_OPERATION_VIEW);\r
+\r
+       if (pAppCntl)\r
+       {\r
+               Addressbook* pAddressbook = AddressbookManager::GetInstance()->GetAddressbookN();\r
+               if (pAddressbook)\r
+               {\r
+                       pAddressbook->SetEventListener(null);\r
+                       IList* pContactList = pAddressbook->SearchContactsByPhoneNumberN(contactNumber);\r
+                       if (pContactList)\r
+                       {\r
+                               Contact* pContact = GetContact(pContactList, contactNumber);\r
+                               if (pContact)\r
+                               {\r
+                                       RecordId contactId = pContact->GetRecordId();\r
+                                       viewContact.Format(256, L"%ld", contactId);\r
+                                       HashMap* pHashMap = new (std::nothrow) HashMap();\r
+                                       pHashMap->Construct();\r
+                                       String* pModeKey = new (std::nothrow) String(L"viewType");\r
+                                       String* pModeVal = new (std::nothrow) String(L"contact");\r
+                                       pHashMap->Add(pModeKey, pModeVal);\r
+                                       String* pTypeKey = new (std::nothrow) String(L"contactId");\r
+                                       String* pTypeVal = new (std::nothrow) String(viewContact);\r
+                                       pHashMap->Add(pTypeKey, pTypeVal);\r
+                                       pAppCntl->Start(null, null, pHashMap, null);\r
+                                       pHashMap->RemoveAll(true);\r
+                                       delete pHashMap;\r
+                               }\r
+                               pContactList->RemoveAll(true);\r
+                               delete pContactList;\r
+                       }\r
+                       delete pAddressbook;\r
+               }\r
+               delete pAppCntl;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+Contact*\r
+ContactUtility::GetContact(IList* pContactList, const String& phoneNumber)\r
+{\r
+       Contact* pRecipientContact = null;\r
+       bool matchFound(false);\r
+       for(int index = 0;index < pContactList->GetCount();index++)\r
+       {\r
+               pRecipientContact = (Contact*) pContactList->GetAt(index);\r
+               if (pRecipientContact)\r
+               {\r
+                       IList* pPhoneNumberList = pRecipientContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);\r
+                       if( pPhoneNumberList )\r
+                       {\r
+                               PhoneNumber* pPhoneNumber = null;\r
+                               IEnumerator* pEnum = pPhoneNumberList->GetEnumeratorN();\r
+                               if (pEnum)\r
+                               {\r
+                                       while (E_SUCCESS == pEnum->MoveNext())\r
+                                       {\r
+                                               pPhoneNumber = (PhoneNumber*) pEnum->GetCurrent();\r
+                                               if (pPhoneNumber->GetPhoneNumber().CompareTo(phoneNumber) == 0)\r
+                                               {\r
+                                                       matchFound = true;\r
+                                                       break;\r
+                                               }\r
+                                       }\r
+                                       delete pEnum;\r
+                               }\r
+                               pPhoneNumberList->RemoveAll(true);\r
+                               delete pPhoneNumberList;\r
+                               if(matchFound)\r
+                               {\r
+                                       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+                                       // return match contact\r
+                                       return pRecipientContact;\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       // Contact not found\r
+       return null;\r
+}\r
diff --git a/src/MsgConversationData.cpp b/src/MsgConversationData.cpp
new file mode 100644 (file)
index 0000000..57fc715
--- /dev/null
@@ -0,0 +1,523 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <msg.h>
+
+#include <FApp.h>
+#include <FBaseColArrayList.h>
+#include <FBaseString.h>
+#include <FMedia.h>
+#include <time.h>
+
+
+#include "MsgConversationData.h"
+#include "MsgTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Io;
+using namespace Tizen::Media;
+
+ConversationData::ConversationData(const String& threadName)
+       : __messageId(-1)
+       , __threadId(-1)
+       , __messageType(0)
+       , __folderId(-1)
+       , __displayTime(0)
+       , __networkStatus(-1)
+       , __isRead(true)
+       , __messageDirection(0)
+       , __displayName(threadName)
+       , __pageCount(0)
+       , __attachmentCount(0)
+       , __pThumbnailBitmap(null)
+       , __subjectStr(IDS_BLANK)
+       , __animationIconIndex(MSG_ICON_PROGRESS_01)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT");
+}
+
+ConversationData::~ConversationData(void)
+{
+       AppLogDebug("ENTER");
+
+       if (__pThumbnailBitmap)
+       {
+               delete __pThumbnailBitmap;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+result
+ConversationData::Construct(msg_struct_t pMessageInfo)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       if (!pMessageInfo)
+       {
+               r = E_FAILURE;
+               return r;
+       }
+       // conversation message id
+       msg_error_t err = msg_get_int_value(pMessageInfo, MSG_CONV_MSG_ID_INT, &__messageId);
+       if (err != MSG_SUCCESS)
+       {
+               AppLogDebug("EXIT:Unable to fetch conversation message ID err = %d", (int) err);
+               r = E_FAILURE;
+               return r;
+       }
+       // conversation message thread id
+       err = msg_get_int_value(pMessageInfo, MSG_CONV_MSG_THREAD_ID_INT, &__threadId);
+       if (err != MSG_SUCCESS)
+       {
+               AppLogDebug("EXIT:Unable to fetch conv message thread ID err = %d", (int) err);
+               r = E_FAILURE;
+               return r;
+       }
+       err = msg_get_int_value(pMessageInfo, MSG_CONV_MSG_FOLDER_ID_INT, &__folderId);
+       if (err != MSG_SUCCESS)
+       {
+               AppLogDebug("EXIT:Unable to fetch conv message folder ID err = %d", (int) err);
+               r = E_FAILURE;
+               return r;
+       }
+       // message Type
+       err = msg_get_int_value(pMessageInfo, MSG_CONV_MSG_TYPE_INT, &__messageType);
+       AppLogDebug("Message TYPE =%d", __messageType);
+
+       if (err != MSG_SUCCESS)
+       {
+               AppLogDebug("EXIT:Unable to fetch conv message type err =%d", (int) err);
+               r = E_FAILURE;
+               return r;
+       }
+       if (__messageType == MSG_TYPE_MMS)
+       {
+               //Initialize MMS related data
+               InitMmsData(pMessageInfo);
+       }
+       err = msg_get_int_value(pMessageInfo, MSG_CONV_MSG_DISPLAY_TIME_INT, &__displayTime);
+       if (err != MSG_SUCCESS)
+       {
+               AppLogDebug("EXIT:Unable to fetch conv message display time err =%d", (int) err);
+               r = E_FAILURE;
+               return r;
+       }
+       err = msg_get_int_value(pMessageInfo, MSG_CONV_MSG_NETWORK_STATUS_INT, &__networkStatus);
+       if (err != MSG_SUCCESS)
+       {
+               AppLogDebug("EXIT:Unable to fetch conv network status err =%d", (int) err);
+               r = E_FAILURE;
+               return r;
+       }
+       err = msg_get_bool_value(pMessageInfo, MSG_CONV_MSG_READ_BOOL, &__isRead);
+       if (err != MSG_SUCCESS)
+       {
+               AppLogDebug("EXIT:Unable to fetch conv read status err =%d", (int) err);
+               r = E_FAILURE;
+               return r;
+       }
+       err = msg_get_int_value(pMessageInfo, MSG_CONV_MSG_DIRECTION_INT, &__messageDirection);
+       if (err != MSG_SUCCESS)
+       {
+               AppLogDebug("EXIT:Unable to fetch conv direction err =%d", (int) err);
+               r = E_FAILURE;
+               return r;
+       }
+       InitMessageBody(pMessageInfo);
+       InitTimeStampGroupName();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(r));
+       return r;
+}
+
+BaseData*
+ConversationData::CloneN(void)
+{
+       AppLogDebug("ENTER");
+       ConversationData* convData = new (std::nothrow) ConversationData(__displayName);
+       if (convData)
+       {
+               convData->__messageId = this->__messageId;
+               convData->__threadId = this->__threadId;
+               convData->__messageType = this->__messageType;
+               convData->__displayTime = this->__displayTime;
+               convData->__networkStatus = this->__networkStatus;
+               convData->__isRead = this->__isRead;
+               convData->__messageDirection = this->__messageDirection;
+               convData->__displayName = this->__displayName;
+               convData->__messageBody = this->__messageBody;
+               convData->__groupName = this->__groupName;
+               convData->__timeStamp = this->__timeStamp;
+               convData->__pageCount = this->__pageCount;
+               convData->__attachmentCount = this->__attachmentCount;
+               convData->__thumbnailPath = this->__thumbnailPath;
+               convData->__subjectStr = this->__subjectStr;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return convData;
+}
+
+// Get message short description of given thread index.
+const String&
+ConversationData::GetMessageText(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __messageBody;
+}
+
+// Get message type of given thread list index.
+int
+ConversationData::GetMessageType(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __messageType;
+}
+
+int
+ConversationData::GetEntryId(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __messageId;
+}
+
+// Fetch display name for a message entry.
+const String&
+ConversationData::GetDisplayName(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __displayName;
+}
+
+// Fetch time stamp of given thread index.
+const String&
+ConversationData::GetTimeStamp(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __timeStamp;
+}
+
+// Fetch time stamp of given thread index.
+const String&
+ConversationData::GetGroupName(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __groupName;
+}
+
+int
+ConversationData::GetUnreadCount(void) const
+{
+       AppLogDebug("ENTER");
+
+       if (!__isRead && (__folderId != MSG_DRAFT_ID))
+       {
+               return 1;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return 0;
+}
+
+DataType
+ConversationData::GetDataType(void)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return DATA_TYPE_CONV;
+}
+
+void
+ConversationData::SetDisplayName(const String& strName)
+{
+       __displayName = strName;
+}
+
+int
+ConversationData::GetThreadId(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __threadId;
+}
+
+int
+ConversationData::GetMessageId(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __messageId;
+}
+
+bool
+ConversationData::IsSent(void) const
+{
+       AppLogDebug("ENTER");
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return (__messageDirection == MSG_DIRECTION_TYPE_MO);
+}
+
+bool
+ConversationData::IsUnRead(void) const
+{
+       AppLogDebug("ENTER");
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return (!__isRead);
+}
+
+bool
+ConversationData::IsSentFail(void) const
+{
+       AppLogDebug("ENTER");
+
+       bool setFaild(false);
+       setFaild = (__networkStatus == MSG_NETWORK_SEND_FAIL);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return setFaild;
+}
+
+bool
+ConversationData::IsSending(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return (__networkStatus == MSG_NETWORK_SENDING);
+}
+
+bool
+ConversationData::IsMms(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return (__messageType == MSG_TYPE_MMS);
+}
+
+result
+ConversationData::InitMessageBody(msg_struct_t pMessageInfo)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       char* pMsgText = new (std::nothrow) char[MAX_MSG_TEXT_LEN];
+       msg_error_t err = msg_get_str_value(pMessageInfo, MSG_CONV_MSG_TEXT_STR, pMsgText
+                                                                          , MAX_MSG_TEXT_LEN);
+       if (err == MSG_SUCCESS && pMsgText && (int) strlen(pMsgText) > 0)
+       {
+               __messageBody.Append(pMsgText);
+       }
+       else
+       {
+               // To prevent crash
+               __messageBody.Append(L"");
+       }
+       AppLogDebug("Fetching message body = [%S] err = [%d]", __messageBody.GetPointer(), (int) err);
+       delete[] pMsgText;
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+result
+ConversationData::InitTimeStampGroupName(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       time_t displayTime(__displayTime);
+       struct tm msgTimeInfo, currentTimeInfo;
+       // Fetch Message time.
+       localtime_r(&displayTime, &msgTimeInfo);
+       // Fetch current time.
+       time_t now;
+       time(&now);
+       localtime_r(&now, &currentTimeInfo);
+
+       // Calculate time difference
+       int msgDay = (msgTimeInfo.tm_year - YEAR_1900) * DAYS_365 + msgTimeInfo.tm_yday
+                                + (msgTimeInfo.tm_year - YEAR_1900 - 1) / LEAP_YEAR_GAP;
+
+       int curDay = (currentTimeInfo.tm_year - YEAR_1900) * DAYS_365 + currentTimeInfo.tm_yday
+                                + (currentTimeInfo.tm_year - YEAR_1900 - 1) / LEAP_YEAR_GAP;
+
+       char timeStamp[MAX_DATE_LEN];
+       char groupName[MAX_DATE_LEN];
+       char timestm[MAX_DATE_LEN];
+       int dayDiff = curDay - msgDay;
+       if (dayDiff == 0)
+       {
+               __groupName.Append(L"Today");
+               strftime(groupName, (size_t) MAX_DATE_LEN, " (%a, %02d. %b.)", &msgTimeInfo);
+               __groupName.Append(groupName);
+               strftime(timeStamp, (size_t) MAX_DATE_LEN, "%I:%M ", &msgTimeInfo);
+               strftime(timestm, (size_t) MAX_DATE_LEN, "%H", &msgTimeInfo);
+       }
+       else if (dayDiff == 1)
+       {
+               __groupName.Append(L"Yesterday");
+               strftime(groupName, (size_t) MAX_DATE_LEN, " (%a, %02d. %b.)", &msgTimeInfo);
+               __groupName.Append(groupName);
+               //strcpy(timeStamp, "Yesterday");
+               strftime(timeStamp, (size_t) MAX_DATE_LEN, "%I:%M ", &msgTimeInfo);
+               strftime(timestm, (size_t) MAX_DATE_LEN, "%H", &msgTimeInfo);
+       }
+       else
+       {
+               //strftime(timeStamp, MAX_DATE_LEN, "%d-%m-%Y", &msgTimeInfo);
+               strftime(timeStamp, (size_t) MAX_DATE_LEN, "%I:%M ", &msgTimeInfo);
+               strftime(groupName, (size_t) MAX_DATE_LEN, "%a, %02d %b", &msgTimeInfo);
+               strftime(timestm, (size_t) MAX_DATE_LEN, "%H", &msgTimeInfo);
+               __groupName.Append(groupName);
+       }
+       String strtext;
+       String str(L"");
+       str.Append(timestm);
+       if (12 > atoi(timestm))
+       {
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_POP_AM_M_ABB", strtext);
+       }
+       else
+       {
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_POP_PM", strtext);
+       }
+
+       __timeStamp.Append(timeStamp);
+       __timeStamp.Append(strtext);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+void
+ConversationData::SetAnimationIconIndex(int index)
+{
+       AppLogDebug("ENTER");
+       if (index <= MSG_ICON_PROGRESS_30)
+       {
+               __animationIconIndex = index;
+       }
+       else
+       {
+               __animationIconIndex = MSG_ICON_PROGRESS_01;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+int
+ConversationData::GetAnimationIconIndex(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __animationIconIndex;
+}
+
+const int
+ConversationData::GetDraftMessageCount(void) const
+{
+       AppLogDebug("ENTER");
+       if (__folderId == MSG_DRAFT_ID)
+       {
+               return 1;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return 0;
+}
+
+Bitmap*
+ConversationData::GetThumbnail(void)
+{
+       AppLogDebug("ENTER");
+       if (!__pThumbnailBitmap && __thumbnailPath.GetLength() > 0)
+       {
+               Image* pImage = new (std::nothrow) Image();
+               pImage->Construct();
+               __pThumbnailBitmap = pImage->DecodeN(__thumbnailPath, BITMAP_PIXEL_FORMAT_ARGB8888,
+                                                                                        310, 204);
+               delete pImage;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __pThumbnailBitmap;
+}
+
+const String&
+ConversationData::GetSubject(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __subjectStr;
+}
+
+int
+ConversationData::GetAttachmentCount(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __attachmentCount;
+}
+
+result
+ConversationData::InitMmsData(msg_struct_t pMessageInfo)
+{
+       AppLogDebug("ENTER");
+       result r = E_SUCCESS;
+
+       // Load Subject Field: MSG_CONV_MSG_SUBJECT_STR
+       char subjectText[MAX_SUBJECT_LEN + 1];
+       msg_error_t err = msg_get_str_value(pMessageInfo, MSG_CONV_MSG_SUBJECT_STR, subjectText, MAX_SUBJECT_LEN);
+       if (err != MSG_SUCCESS)
+       {
+               AppLogDebug("EXIT:Unable to fetch conv subject err =%d", (int) err);
+               r = E_FAILURE;
+               return r;
+       }
+       __subjectStr.Append(subjectText);
+       // Get attachement count Field: MSG_CONV_MSG_ATTACH_COUNT_INT
+       err = msg_get_int_value(pMessageInfo, MSG_CONV_MSG_ATTACH_COUNT_INT, &__attachmentCount);
+       if (err != MSG_SUCCESS)
+       {
+               AppLogDebug("EXIT:Unable to fetch conv attachement count err =%d", (int) err);
+               r = E_FAILURE;
+               return r;
+       }
+       // Get default thumbnail path; Field: MSG_CONV_MSG_IMAGE_THUMB_PATH_STR/MSG_CONV_MSG_VIDEO_THUMB_PATH_STR
+       char thumbnailPath[MAX_IMAGE_PATH_LEN + 1];
+       err = msg_get_str_value(pMessageInfo, MSG_CONV_MSG_IMAGE_THUMB_PATH_STR, thumbnailPath, MAX_IMAGE_PATH_LEN);
+       if (err != MSG_SUCCESS)
+       {
+               AppLogDebug("EXIT:Unable to fetch thumbnail path err =%d", (int) err);
+               r = E_FAILURE;
+               return r;
+       }
+       __thumbnailPath.Append(thumbnailPath);
+       AppLog("THUMNAIL PATH: %S", __thumbnailPath.GetPointer());
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
diff --git a/src/MsgConversationForm.cpp b/src/MsgConversationForm.cpp
new file mode 100644 (file)
index 0000000..713d682
--- /dev/null
@@ -0,0 +1,2244 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <FApp.h>
+
+#include "MsgAttachmentSavePopup.h"
+#include "MsgBitmapUtility.h"
+#include "MsgCommonUtil.h"
+#include "MsgContactList.h"
+#include "MsgContactPopup.h"
+#include "MsgContactUtility.h"
+#include "MsgConversationData.h"
+#include "MsgConversationForm.h"
+#include "MsgConversationPresentationModel.h"
+#include "MsgDurationPopup.h"
+#include "MsgFontsettings.h"
+#include "MsgLVBubbleListItem.h"
+#include "MsgMessageComposePanel.h"
+#include "MsgMessageData.h"
+#include "MsgMessagePresentationModel.h"
+#include "MsgProgressPopup.h"
+#include "MsgOptionPopup.h"
+#include "MsgResendDeletePopup.h"
+#include "MsgSettingPresentationModel.h"
+#include "MsgSmsManager.h"
+#include "MsgThreadData.h"
+#include "MsgTypes.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::App;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Utility;
+
+ConversationForm::ConversationForm(ConversationListFormType convListType)
+       : __convFormType(convListType)
+       , __pMsgComposePanel(null)
+       , __pConvMessageList(null)
+       , __pCurrentThreadEntry(null)
+       , __pCheckAll(null)
+       , __pSelectionInfo(null)
+       , __pSelectedIds(null)
+       , __pProgressPopup(null)
+       , __pList(null)
+       , __pConContactList(null)
+       , __pContextMenuText(null)
+       , __pDeleteConfirmPopup(null)
+       , __pContactDetails(null)
+       , __pResendDelete(null)
+       , __pTrayPanel(null)
+       , __pOptionPopup(null)
+       , __pResendDeletePopup(null)
+       , __pBlockPopup(null)
+       , __pSaveAttachmentsPopup(null)
+       , __pDurationPopup(null)
+       , __isListViewItemLongPressed(false)
+{
+       //Empty implementation
+}
+
+ConversationForm::~ConversationForm(void)
+{
+       AppLogDebug("ENTER");
+
+       // Cancel ongoing operation.
+       ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+       if(pConvPrModel)
+       {
+               pConvPrModel->RemoveConversationEventListener(*this);
+               pConvPrModel->CancelDelete();
+       }
+       if (__pDurationPopup)
+       {
+               delete __pDurationPopup;
+       }
+       if (__pSaveAttachmentsPopup)
+       {
+               delete __pSaveAttachmentsPopup;
+       }
+
+       if (__pCurrentThreadEntry)
+       {
+               delete __pCurrentThreadEntry;
+       }
+       if (__pContactDetails)
+       {
+               __pContactDetails->RemoveAll(true);
+               delete __pContactDetails;
+       }
+       if (__pBlockPopup)
+       {
+               delete __pBlockPopup;
+       }
+       if (__pDeleteConfirmPopup)
+       {
+               delete __pDeleteConfirmPopup;
+       }
+}
+
+bool
+ConversationForm::Initialize(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       if (__convFormType == CONVERSATION_LIST_FORM_VIEW)
+       {
+               r = Construct(L"IDL_CONVERSATION_LIST_FORM");
+       }
+       else
+       {
+               r = Construct(L"IDL_CONVERSATION_LIST_EDIT_FORM");
+       }
+       AddKeyEventListener(*this);
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return (!IsFailed(r));
+}
+
+void
+ConversationForm::OnIntializeFooter(Footer& footer)
+{
+       AppLogDebug("ENTER");
+
+       // Footer should be visible on demand.
+       SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, false);
+       footer.AddActionEventListener(*this);
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::OnIntializeHeader(Header& header)
+{
+       AppLogDebug("ENTER");
+
+       header.AddActionEventListener(*this);
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::SetFooter(void)
+{
+       AppLogDebug("ENTER");
+
+       Footer* footer = GetFooter();
+       {
+               if (__convFormType == CONVERSATION_LIST_FORM_VIEW)
+               {
+                       SetViewModeFooter(*footer);
+               }
+               else
+               {
+                       SetEditModeFooter(*footer);
+               }
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::SetViewModeFooter(Footer& footer)
+{
+       AppLogDebug("ENTER");
+
+       footer.RemoveAllItems();
+       footer.RemoveAllButtons();
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::SetEditModeFooter(Footer& footer)
+{
+       AppLogDebug("ENTER");
+
+       //              String strText;
+       //              footer.RemoveAllItems();
+       //              footer.RemoveAllButtons();
+       //              footer.SetStyle(FOOTER_STYLE_SEGMENTED_ICON_TEXT);
+       //
+       //              ButtonItem deleteBtn;
+       //              deleteBtn.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_DELETE_CMD);
+       //              Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_DELETE", strText);
+       //              deleteBtn.SetText(strText);
+       //              footer.SetButton(BUTTON_POSITION_LEFT, deleteBtn);
+       //                      Bitmap* pDeleteIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_DELETE);
+       //                      if (pDeleteIcon)
+       //                      {
+       //                              deleteBtn.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pDeleteIcon);
+       //                      }
+       //
+       //              ButtonItem cancelBtn;
+       //              cancelBtn.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_CANCEL_CMD);
+       //              Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_CANCEL", strText);
+       //              cancelBtn.SetText(strText);
+       //              footer.SetButton(BUTTON_POSITION_RIGHT, cancelBtn);
+       //
+       //              // Enable disable footer item
+       //              if (__pSelectedIds && __pSelectedIds->GetCount() > 0)
+       //              {
+       //                      footer.SetButtonEnabled(BUTTON_POSITION_LEFT, true);
+       //              }
+       //              else
+       //              {
+       //                      footer.SetButtonEnabled(BUTTON_POSITION_LEFT, false);
+       //              }
+
+       String strText;
+       footer.RemoveAllItems();
+       footer.RemoveAllButtons();
+       footer.SetStyle(FOOTER_STYLE_BUTTON_ICON_TEXT);
+
+       FooterItem deleteBtn;
+       deleteBtn.Construct(IDA_DELETE_CMD);
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_DELETE", strText);
+       deleteBtn.SetText(strText);
+//     Bitmap* pDeleteIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_DELETE);
+//     if (pDeleteIcon)
+//     {
+//             deleteBtn.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pDeleteIcon);
+//     }
+       footer.AddItem(deleteBtn);
+
+
+//     FooterItem cancelBtn;
+//     cancelBtn.Construct(IDA_CANCEL_CMD);
+//     Bitmap* pCanelIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_BACK);
+//     if (pCanelIcon)
+//     {
+//             cancelBtn.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pCanelIcon);
+//  }
+//     footer.AddItem(cancelBtn);
+
+       // close button creation
+
+       ButtonItem closeBtn;
+       closeBtn.Construct(BUTTON_ITEM_STYLE_ICON, IDA_CANCEL_CMD);
+       Bitmap* pCloseIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_BACK);
+       if (pCloseIcon)
+       {
+               closeBtn.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pCloseIcon);
+       }
+       Bitmap* pCloseIconPressed = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_BACK_PRESSED);
+       if (pCloseIconPressed)
+       {
+               closeBtn.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pCloseIconPressed);
+       }
+       footer.SetButton(BUTTON_POSITION_RIGHT, closeBtn);
+
+       if (__pSelectedIds && __pSelectedIds->GetCount() > 0)
+       {
+               footer.SetItemEnabled(0, true);
+       }
+       else
+       {
+               footer.SetItemEnabled(0, false);
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::SetHeader(void)
+{
+       AppLogDebug("ENTER");
+
+       Header* header = GetHeader();
+       if (header)
+       {
+               if (__convFormType == CONVERSATION_LIST_FORM_VIEW)
+               {
+                       SetViewModeHeader(*header);
+               }
+               else
+               {
+                       SetEditModeHeader(*header);
+               }
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::SetEditModeHeader(Header& header)
+{
+       AppLogDebug("ENTER");
+
+       // Update header.
+       header.RemoveAllItems();
+       header.RemoveAllButtons();
+       header.SetStyle(HEADER_STYLE_TITLE);
+       String strText;
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_DELETE", strText);
+       header.SetTitleText(strText);
+       header.Draw();
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::SetViewModeHeader(Header& header)
+{
+       AppLogDebug("ENTER");
+
+       // Update header.
+       header.RemoveAllItems();
+       header.RemoveAllButtons();
+
+       header.SetStyle(HEADER_STYLE_SEGMENTED);
+       String strText;
+       HeaderItem headerLeftItem;
+       headerLeftItem.Construct(IDA_CONVERSATION_FORM_HEADER_TITLEITEM);
+       headerLeftItem.SetText(GetTitleText());
+       header.AddItem(headerLeftItem);
+
+       ButtonItem btnRight;
+       btnRight.Construct(BUTTON_ITEM_STYLE_ICON, IDA_BACK_CMD);
+       Bitmap* pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_HEADER_BACK);
+       btnRight.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pBitMap);
+       pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_HEADER_BACK_PRESSED);
+       btnRight.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pBitMap);
+       header.SetButton(BUTTON_POSITION_RIGHT, btnRight);
+
+       ButtonItem btnLeft;
+       btnLeft.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_OPTION_TRAY_COMMAND);
+       pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_MORE);
+       btnLeft.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pBitMap);
+       pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_MORE_PRESSED);
+       btnLeft.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pBitMap);
+       header.SetButton(BUTTON_POSITION_LEFT, btnLeft);
+
+       //header.Draw();
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+result
+ConversationForm::OnInitializing(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       r = BaseForm::InitializeBase();
+       if (!IsFailed(r))
+       {
+               if (__convFormType == CONVERSATION_LIST_FORM_VIEW)
+               {
+                       r = InitializeConversationViewControls();
+               }
+               else
+               {
+                       r = InitializeConversationEditControls();
+               }
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+result
+ConversationForm::InitializeConversationViewControls(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       //Initialize from element
+       __pConvMessageList = static_cast<GroupedListView*>(GetControl(L"IDC_MESSAGES_GROUPEDLIST"));
+       String strText;
+       Rectangle rect = GetClientAreaBounds();
+       int panelHeight = 0;
+       __pMsgComposePanel = new (std::nothrow) MessageComposePanel();
+       if (__pMsgComposePanel)
+       {
+               __pMsgComposePanel->Construct(L"IDL_MSG_COMPOSE_PANEL");
+               __pMsgComposePanel->SetKeypadEventListener(*this);
+               __pMsgComposePanel->SetSizeChangeEventListener(*this);
+               __pMsgComposePanel->SetBounds(Rectangle(0, rect.height - PANEL_HEIGHT, rect.width, PANEL_HEIGHT));
+               __pMsgComposePanel->SetMaximumSize(Dimension(__pMsgComposePanel->GetWidth(), __pMsgComposePanel->GetHeight() * 6));
+               __pMsgComposePanel->SetBackgroundColor(COLOR_COMPOSE_PANEL_BG);
+               __pMsgComposePanel->SetComposeEventListener(*this);
+               AddControl(*__pMsgComposePanel);
+               __pMsgComposePanel->ShowDefaultUi();
+               panelHeight = __pMsgComposePanel->GetHeight();
+       }
+       // Creates Conversation list
+       if (__pConvMessageList)
+       {
+               __pConvMessageList->SetBounds(Rectangle(0, 0, rect.width, rect.height - panelHeight));
+               __pConvMessageList->SetTextOfEmptyList(IDS_BLANK);
+               __pConvMessageList->SetItemProvider(*this);
+               __pConvMessageList->AddGroupedListViewItemEventListener(*this);
+               __pConvMessageList->SetBackgroundColor(COLOR_BUBBLE_BG);
+               __pConvMessageList->AddKeyEventListener(*this);
+               __pConvMessageList->AddTouchEventListener(*this);
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+result
+ConversationForm::InitializeConversationEditControls(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       Rectangle rect = GetClientAreaBounds();
+
+       __pConvMessageList = static_cast<GroupedListView*>(GetControl(L"IDC_CONV_EDIT_GROUPEDLIST"));
+       if (__pConvMessageList)
+       {
+               __pConvMessageList->SetBounds(Rectangle(0, 0, rect.width, rect.height));
+               __pConvMessageList->SetItemProvider(*this);
+               __pConvMessageList->AddGroupedListViewItemEventListener(*this);
+               __pConvMessageList->SetBackgroundColor(COLOR_BUBBLE_BG);
+       }
+       else
+       {
+               r = E_FAILURE;
+               return r;
+       }
+       SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, true);
+       SetEditModeHeader(*GetHeader());
+       SetEditModeFooter(*GetFooter());
+       __pSelectedIds = new (std::nothrow) ArrayListT< int>();
+       __pSelectedIds->Construct();
+       AddEditCheckBox();
+       AddLabelSelectionInfo();
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+result
+ConversationForm::OnTerminating(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       if (__pConContactList)
+       {
+               delete __pConContactList;
+       }
+
+       if (__pContextMenuText)
+       {
+               delete __pContextMenuText;
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+void
+ConversationForm::OnSceneActivatedN(const SceneId& previousSceneId,
+                                                                       const SceneId& currentSceneId, IList* pArgs)
+{
+       AppLogDebug("ENTER");
+
+       if (pArgs)
+       {
+               if (__pCurrentThreadEntry)
+               {
+                       delete __pCurrentThreadEntry;
+               }
+               __pCurrentThreadEntry = static_cast<ThreadData*>(pArgs->GetAt(0));
+               pArgs->RemoveAll();
+               delete pArgs;
+       }
+       ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+       if (pConvPrModel)
+       {
+               int threadId = __pCurrentThreadEntry->GetEntryId();
+               pConvPrModel->GetConversationMessageList(threadId);
+               pConvPrModel->AddConversationEventListener(*this, threadId);
+               const MessageData* draftMessage = pConvPrModel->GetDraftMessage();
+               if ((__convFormType == CONVERSATION_LIST_FORM_VIEW) && draftMessage)
+               {
+                       // Load draft to UI
+                       __pMsgComposePanel->LoadMessageData(*draftMessage);
+               }
+               if (__convFormType == CONVERSATION_LIST_FORM_VIEW)
+               {
+                       __pMsgComposePanel->ShowKeypad();
+               }
+       }
+       __pConvMessageList->UpdateList();
+       // Scroll to latest message.
+       int lastGroupIndex = __pConvMessageList->GetGroupCount() - 1;
+       int listItemCount = __pConvMessageList->GetItemCountAt(lastGroupIndex);
+       if (lastGroupIndex>= 0 && listItemCount > 0)
+       {
+               __pConvMessageList->ScrollToItem(lastGroupIndex, listItemCount - 1, LIST_SCROLL_ITEM_ALIGNMENT_BOTTOM);
+       }
+       // Prepare contact list
+       PrepareContactList();
+       SetHeader();
+       if (__pMsgComposePanel)
+       {
+               // Set text size based on settings
+               FontSettings* pFontSettings = SettingPresentationModel::GetInstance()->GetFontSettings();
+               int size = pFontSettings->GetMessageTextSize(pFontSettings->GetMessageFontType());
+               __pMsgComposePanel->SetTextSize(size);
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::OnSceneDeactivated(const SceneId& currentSceneId,
+                                                                        const SceneId& nextSceneId)
+{
+       AppLogDebug("ENTER");
+
+       ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+       if (pConvPrModel)
+       {
+               pConvPrModel->RemoveConversationEventListener(*this);
+               if (__convFormType == CONVERSATION_LIST_FORM_VIEW)
+               {
+                       __pMsgComposePanel->HideKeypad();
+               }
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::OnOrientationChanged(const Control& source, OrientationStatus orientationStatus)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::OnActionPerformed(const Control& source, int actionId)
+{
+       AppLogDebug("ENTER");
+
+       //Handle command
+       switch (actionId)
+       {
+       case IDA_SELECT_ALL_ON:
+       {
+               CheckAll(true);
+               break;
+       }
+
+       case IDA_SELECT_ALL_OFF:
+       {
+               CheckAll(false);
+               break;
+       }
+
+       case IDA_BACK_CMD:
+       {
+               // Back to thread list view.
+               __pMsgComposePanel->HideKeypad(); // To avoid control overlapping
+               // Save SMS to draft
+               MessageComposeData* pComposeData = __pMsgComposePanel->GetMessageComposeDataN();
+               if (pComposeData)
+               {
+                       MessagePresentationModel* pMessagePresentationModel = MessagePresentationModel::GetInstance();
+                       if (pMessagePresentationModel)
+                       {
+                               pMessagePresentationModel->SaveMessage(*pComposeData, __pCurrentThreadEntry->GetEntryId());
+                       }
+                       delete pComposeData;
+               }
+               else
+               {
+                       // If draft entry text deleted, then delete message
+                       ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+                       if (pConvPrModel)
+                       {
+                               const MessageData* pDraftMessage = pConvPrModel->GetDraftMessage();
+                               if (pDraftMessage)
+                               {
+                                       pConvPrModel->Delete(pDraftMessage->GetEntryId(), REQUEST_DELETE_MESSAGE);
+                               }
+                       }
+               }
+               SceneManager* pSceneManager = SceneManager::GetInstance();
+               pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_THREAD_LIST, SCENE_TRANSITION_ANIMATION_TYPE_NONE));
+       }
+       break;
+
+       case IDA_CONVLISTEDIT_MESSAGE_CANCEL:
+       {
+               if (__pDeleteConfirmPopup)
+               {
+                       __pDeleteConfirmPopup->SetShowState(false);
+                       delete __pDeleteConfirmPopup;
+                       __pDeleteConfirmPopup = null;
+               }
+       }
+       break;
+
+       case IDA_CONVLISTEDIT_MESSAGE_DELETE:
+       {
+               __pDeleteConfirmPopup->SetShowState(false);
+               DeleteSelectedItem();
+       }
+       break;
+
+       case IDA_OPTION_TRAY_COMMAND:
+       {
+               ShowContactList(false);
+               Rectangle rect = GetClientAreaBounds();
+               if (!__pTrayPanel)
+               {
+                       //Creates Option Tray Panel
+                       __pTrayPanel = new (std::nothrow) Panel();
+                       if (__pTrayPanel)
+                       {
+                               __pTrayPanel->Construct(L"IDL_OPTION_TRAY_PANEL");
+                               __pTrayPanel->SetPosition(0, 0);
+                               __pTrayPanel->SetBackgroundColor(COLOR_LIST_DIALOGUE_GROUP_TITLE);
+                               // Set delete button
+                               Button* pDeleteButton = static_cast<Button*>(__pTrayPanel->GetControl(L"IDC_BUTTON_DELETE"));
+                               pDeleteButton->AddActionEventListener(*this);
+                               pDeleteButton->SetActionId(IDA_CONVERSATION_DELETE);
+                               bool enableDelete(false);
+                               ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+                               if (pConvPrModel)
+                               {
+                                       enableDelete = (pConvPrModel->GetCount() > 0);
+                               }
+                               pDeleteButton->SetEnabled(enableDelete);
+                               Button* pPreviewButton = static_cast<Button*>(__pTrayPanel->GetControl(L"IDC_BUTTON_PREVIEW"));
+                               pPreviewButton->AddActionEventListener(*this);
+                               pPreviewButton->SetActionId(IDA_PREVIEW);
+                               bool mmsMode(__pMsgComposePanel->IsMmsMode());
+                               pPreviewButton->SetEnabled(mmsMode);
+                               Button* pDurationButton = static_cast<Button*>(__pTrayPanel->GetControl(L"IDC_BUTTON_DURATION"));
+                               pDurationButton->AddActionEventListener(*this);
+                               pDurationButton->SetActionId(IDA_PAGE_DURATION);
+                               String strFormat;
+                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS", strFormat);
+                               String strText;
+                               strText.Format(strFormat.GetLength() * 2, strFormat.GetPointer(), __pMsgComposePanel->GetDefaultPageDuration());
+                               pDurationButton->SetText(strText);
+                               pDurationButton->SetEnabled(mmsMode);
+                               __pConvMessageList->SetBounds(Rectangle(0, __pTrayPanel->GetHeight(), rect.width,
+                                                                                                               rect.height - __pTrayPanel->GetHeight() - __pMsgComposePanel->GetHeight()));
+                               AddControl(*__pTrayPanel);
+                       }
+               }
+               else
+               {
+                       if (__pTrayPanel->GetShowState())
+                       {
+                               __pTrayPanel->SetShowState(false);
+                               __pConvMessageList->SetBounds(Rectangle(0, 0, rect.width, rect.height - __pMsgComposePanel->GetHeight()));
+                       }
+                       else
+                       {
+                               __pConvMessageList->SetBounds(Rectangle(0, __pTrayPanel->GetHeight(), rect.width, rect.height - __pTrayPanel->GetHeight() - __pMsgComposePanel->GetHeight()));
+                               __pTrayPanel->SetShowState(true);
+                       }
+               }
+       }
+       break;
+
+       case IDA_CONVERSATION_DELETE:
+       {
+               __pTrayPanel->SetShowState(false);
+               __pConvMessageList->SetBounds(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height - __pMsgComposePanel->GetHeight()));
+               ArrayList* pArgList = new (std::nothrow) ArrayList();
+               if (pArgList)
+               {
+                       //Transfer ownership
+                       ThreadData* pThreadEntry = static_cast<ThreadData*>(__pCurrentThreadEntry->CloneN());
+                       pArgList->Add(pThreadEntry);
+                       SceneManager* pSceneManager = SceneManager::GetInstance();
+                       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONVERSATION_LIST_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_NONE), pArgList);
+               }
+       }
+       break;
+
+       case IDA_EDIT_CMD:
+       {
+               __pMsgComposePanel->HideKeypad(); // To avoid control overlapping
+               // Save to draft
+               MessageComposeData* pComposeData = __pMsgComposePanel->GetMessageComposeDataN();
+               if (pComposeData)
+               {
+                       MessagePresentationModel* pmessagePresentationModel = MessagePresentationModel::GetInstance();
+                       if (pmessagePresentationModel)
+                       {
+                               pmessagePresentationModel->SaveMessage(*pComposeData, __pCurrentThreadEntry->GetEntryId());
+                       }
+                       delete pComposeData;
+               }
+               // Goto edit view
+               ArrayList* pArgList = new (std::nothrow) ArrayList();
+               if (pArgList)
+               {
+                       //Transfer ownership
+                       ThreadData* pThreadEntry = static_cast<ThreadData*>(__pCurrentThreadEntry->CloneN());
+                       pArgList->Add(pThreadEntry);
+                       SceneManager* pSceneManager = SceneManager::GetInstance();
+                       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONVERSATION_LIST_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_NONE), pArgList);
+               }
+       }
+       break;
+
+       case IDA_DELETE_CMD:
+       {
+               // Show confirmation popup to delete messages.
+               ShowDeleteConfirmPopup();
+               break;
+       }
+
+       case IDA_CANCEL_CMD:
+       {
+               // Back to thread list view.
+               ArrayList* pArgList = new (std::nothrow) ArrayList();
+               if (pArgList)
+               {
+                       ThreadData* pThreadEntry = static_cast<ThreadData*>(__pCurrentThreadEntry->CloneN());
+                       pArgList->Add(pThreadEntry);
+
+                       SceneManager* pSceneManager = SceneManager::GetInstance();
+                       pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_CONVERSATION_LIST, SCENE_TRANSITION_ANIMATION_TYPE_NONE), pArgList);
+               }
+               break;
+       }
+
+       case IDA_VOICE_CALL_CMD:
+       case IDA_VIDEO_CALL_CMD:
+       case IDA_VIEW_CONTACT:
+               break;
+
+       case IDA_CONVERSATION_FORM_VOICE_CALL:
+       {
+               ContactHelper(IDA_CONVERSATION_FORM_VOICE_CALL);
+       }
+       break;
+
+       case IDA_CONVERSATION_FORM_VIEW_CONTACT:
+       {
+               ContactHelper(IDA_CONVERSATION_FORM_VIEW_CONTACT);
+       }
+       break;
+
+       case IDA_CONVERSATION_FORM_ADD_CONTACT:
+       {
+               ContactHelper(IDA_CONVERSATION_FORM_ADD_CONTACT);
+       }
+       break;
+
+       case IDA_CONVERSATION_FORM_BLOCK:
+       {
+               ContactHelper(IDA_CONVERSATION_FORM_BLOCK);
+       }
+       break;
+
+       case IDA_CONVERSATION_FORM_UNBLOCK:
+       {
+               ContactHelper(IDA_CONVERSATION_FORM_UNBLOCK);
+       }
+       break;
+
+       case IDA_CONVERSATION_FORM_HEADER_TITLEITEM:
+       {
+               if (__pContactDetails && __pContactDetails->GetCount() > 1)
+               {
+
+                       if (!__pList || !__pList->GetShowState())
+                       {
+                               ShowContactList(true);
+                       }
+                       else
+                       {
+                               ShowContactList(false);
+                       }
+               }
+               else
+               {
+                       CreateContextMenu(source);
+               }
+       }
+       break;
+
+       case IDA_BUTTON_MESSAGE_RESEND_DELETE_POPUP:
+       {
+               if (__pResendDelete)
+               {
+                       delete __pResendDelete;
+                       __pResendDelete = null;
+               }
+       }
+       break;
+
+       case IDA_PHONENUMBER_BLOCK_OK:
+       {
+               SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
+               pSettingPrModel->AddToFilter(__pPhoneNumber, 1);
+               pSettingPrModel->RefreshSpamFilterList();
+               if (__pBlockPopup)
+               {
+                       __pBlockPopup->SetShowState(false);
+                       delete __pBlockPopup;
+                       __pBlockPopup = null;
+               }
+
+       }
+       break;
+
+       case IDA_PHONENUMBER_BLOCK_CANCEL:
+       {
+               if (__pBlockPopup)
+               {
+                       __pBlockPopup->SetShowState(false);
+                       delete __pBlockPopup;
+                       __pBlockPopup = null;
+               }
+       }
+       break;
+
+       case IDA_PREVIEW:
+       {
+               // Save to draft
+               __pMsgComposePanel->HideKeypad(); // To avoid control overlapping
+               // Save to draft
+               MessageComposeData* pComposeData = __pMsgComposePanel->GetMessageComposeDataN();
+               if (pComposeData)
+               {
+                       //Priview MMS
+                       ArrayList* pArgList = new (std::nothrow) ArrayList();
+                       pArgList->Add((new (std::nothrow) Integer(MMS_FORM_PREVIEW)));
+                       MessageData* pMessageData = new (std::nothrow) MessageData();
+                       pMessageData->Construct(*pComposeData);
+                       pArgList->Add(pMessageData);
+                       SceneManager* pSceneManager = SceneManager::GetInstance();
+                       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_MMS_DETAIL, SCENE_TRANSITION_ANIMATION_TYPE_NONE), pArgList);
+                       delete pComposeData;
+               }
+       }
+       break;
+
+       case IDA_PAGE_DURATION:
+       {
+               if (__pDurationPopup)
+               {
+                       delete __pDurationPopup;
+               }
+               __pDurationPopup = new (std::nothrow) DurationPopup(*this);
+               __pDurationPopup->Construct(L"IDL_DURATION_POPUP");
+               __pDurationPopup->SetDuration(__pMsgComposePanel->GetDefaultPageDuration());
+               __pDurationPopup->Show();
+               __pDurationPopup->SetFocusToEditor();
+       }
+       break;
+
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::OnKeypadActionPerformed(Control& source, KeypadAction keypadAction)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::OnKeypadClosed(Control& source)
+{
+       AppLogDebug("ENTER");
+
+       Rectangle clientArea = GetClientAreaBounds();
+       Rectangle prePanelBounds = __pMsgComposePanel->GetBounds();
+
+       int listHeight(clientArea.height - __pMsgComposePanel->GetHeight());
+       if (__pTrayPanel && __pTrayPanel->GetShowState())
+       {
+               listHeight -= __pTrayPanel->GetHeight();
+       }
+       __pConvMessageList->SetSize(clientArea.width, listHeight);
+       Clipboard* pClibBoard = Clipboard::GetInstance();
+       if (pClibBoard && pClibBoard->IsPopupVisible()) // When clipboard is visible, panel position should change
+       {
+               __pMsgComposePanel->SetBounds(Rectangle(0, prePanelBounds.y - PANEL_HEIGHT + 35, clientArea.width, __pMsgComposePanel->GetDisplayHeight()));
+       }
+       else
+       {
+               __pMsgComposePanel->SetPosition(prePanelBounds.x, clientArea.height - prePanelBounds.height);
+       }
+       //
+       // Scroll to latest message.
+       int lastGroupIndex = __pConvMessageList->GetGroupCount() - 1;
+       int listItemCount = __pConvMessageList->GetItemCountAt(lastGroupIndex);
+       if (lastGroupIndex>= 0 && listItemCount > 0)
+       {
+               __pConvMessageList->ScrollToItem(lastGroupIndex, listItemCount - 1, LIST_SCROLL_ITEM_ALIGNMENT_BOTTOM);
+       }
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::OnKeypadBoundsChanged(Control& source)
+{
+       AppLogDebug("ENTER");
+
+       Rectangle clientArea = GetClientAreaBounds();
+       if (__pMsgComposePanel != null)
+       {
+               __pMsgComposePanel->SetMaximumSize(Dimension(__pMsgComposePanel->GetWidth(), clientArea.height));
+               Rectangle prePanelBounds = __pMsgComposePanel->GetBounds();
+               __pMsgComposePanel->SetPosition(prePanelBounds.x, clientArea.height - prePanelBounds.height);
+               int listHeight(clientArea.height - __pMsgComposePanel->GetHeight());
+               __pConvMessageList->SetSize(clientArea.width, listHeight);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::OnKeypadOpened(Control& source)
+{
+       AppLogDebug("ENTER");
+
+       Rectangle clientArea = GetClientAreaBounds();
+       Rectangle prePanelBounds = __pMsgComposePanel->GetBounds();
+       int panelHeight = __pMsgComposePanel->GetDisplayHeight();
+       __pMsgComposePanel->SetBounds(Rectangle(prePanelBounds.x,
+                                                                                       clientArea.height - panelHeight, __pMsgComposePanel->GetWidth(), panelHeight));
+       __pMsgComposePanel->SetShowState(true);
+       int listHeight(clientArea.height - __pMsgComposePanel->GetHeight());
+       if (__pTrayPanel && __pTrayPanel->GetShowState())
+       {
+               listHeight -= __pTrayPanel->GetHeight();
+       }
+       __pConvMessageList->SetSize(clientArea.width, listHeight);
+       int lastGroupIndex = __pConvMessageList->GetGroupCount() - 1;
+       int listItemCount = __pConvMessageList->GetItemCountAt(lastGroupIndex);
+       if (lastGroupIndex>=0 && listItemCount > 0)
+       {
+               __pConvMessageList->ScrollToItem(lastGroupIndex, listItemCount - 1, LIST_SCROLL_ITEM_ALIGNMENT_BOTTOM);
+       }
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::OnKeypadWillOpen(Control& source)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::OnSizeIncrease(const Tizen::Ui::Control& control)
+{
+       AppLogDebug("ENTER");
+       Rectangle clientArea = GetClientAreaBounds();
+       Rectangle prePanelBounds = __pMsgComposePanel->GetBounds();
+       int panelHeight = __pMsgComposePanel->GetDisplayHeight();
+       __pMsgComposePanel->SetBounds(Rectangle(prePanelBounds.x, clientArea.height - panelHeight,
+                                                                                       __pMsgComposePanel->GetWidth(), panelHeight));
+       __pMsgComposePanel->SetShowState(true);
+       __pConvMessageList->SetSize(clientArea.width, clientArea.height - panelHeight);
+       int lastGroupIndex = __pConvMessageList->GetGroupCount() - 1;
+       int listItemCount = __pConvMessageList->GetItemCountAt(lastGroupIndex);
+       if (lastGroupIndex>= 0 && listItemCount > 0 )
+       {
+               __pConvMessageList->ScrollToItem(lastGroupIndex, listItemCount - 1, LIST_SCROLL_ITEM_ALIGNMENT_BOTTOM);
+       }
+       //      Draw();
+       //      Show();
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+ConversationForm::OnSizeDecrease(const Tizen::Ui::Control& control)
+{
+       AppLogDebug("ENTER");
+       Rectangle clientArea = GetClientAreaBounds();
+       Rectangle prePanelBounds = __pMsgComposePanel->GetBounds();
+       int panelHeight = __pMsgComposePanel->GetDisplayHeight();
+       __pMsgComposePanel->SetBounds(Rectangle(prePanelBounds.x, clientArea.height - panelHeight,
+                                                                                       __pMsgComposePanel->GetWidth(), panelHeight));
+       __pMsgComposePanel->SetShowState(true);
+       __pConvMessageList->SetSize(clientArea.width, clientArea.height - panelHeight);
+       int lastGroupIndex = __pConvMessageList->GetGroupCount() - 1;
+       int listItemCount = __pConvMessageList->GetItemCountAt(lastGroupIndex);
+       if (lastGroupIndex>= 0 && listItemCount > 0)
+       {
+               __pConvMessageList->ScrollToItem(lastGroupIndex, listItemCount - 1, LIST_SCROLL_ITEM_ALIGNMENT_BOTTOM);
+       }
+       //      Draw();
+       //      Show();
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+ConversationForm::OnFormBackRequested(Form& source)
+{
+       AppLogDebug("ENTER");
+
+       switch (__convFormType)
+       {
+       case CONVERSATION_LIST_FORM_VIEW:
+       {
+               SceneManager* pSceneManager = SceneManager::GetInstance();
+               pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_THREAD_LIST, SCENE_TRANSITION_ANIMATION_TYPE_NONE));
+
+       }
+       break;
+
+       case CONVERSATION_LIST_FORM_EDIT:
+       {
+               SceneManager* pSceneManager = SceneManager::GetInstance();
+               pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_CONVERSATION_LIST, SCENE_TRANSITION_ANIMATION_TYPE_NONE));
+
+       }
+       break;
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::OnConversationListChange(MsgStorageChangeType msgStorageChangeType)
+{
+       AppLogDebug("ENTER");
+
+       if (__convFormType == CONVERSATION_LIST_FORM_EDIT)
+       {
+               // NO need to update, it will go back previous scene after deleting conversation
+               // asychronusly, Otherwise it will try to update data each deletion. It may delete
+               // with notify end user.
+               AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+               return;
+       }
+       if(msgStorageChangeType == MSG_STORAGE_UPDATE_CONTACT)
+       {
+               ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+               if (pConvPrModel && __pCurrentThreadEntry)
+               {
+                       int threadId = __pCurrentThreadEntry->GetEntryId();
+                       ThreadData* pThreadData = pConvPrModel->GetThreadDataByIdN(threadId);
+                       if(__pCurrentThreadEntry)
+                       {
+                               delete __pCurrentThreadEntry;
+                       }
+                       __pCurrentThreadEntry = pThreadData;
+                       Header* pHeader = GetHeader();
+                       pHeader->Invalidate(true);
+                       if(__pContactDetails)
+                       {
+                               delete __pContactDetails;
+                               __pContactDetails = null;
+                       }
+                       PrepareContactList();
+                       SetViewModeHeader(*pHeader);
+                       if(__pList)
+                       {
+                               ShowContactList(true);
+                       }
+               }
+       }
+       else
+       {
+               ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+               if (pConvPrModel && __pCurrentThreadEntry)
+               {
+                       int threadId = __pCurrentThreadEntry->GetEntryId();
+                       pConvPrModel->GetConversationMessageList(threadId);
+                       if (pConvPrModel->GetCount() <= 0)
+                       {
+                               // Back to thread list view.
+                               SceneManager* pSceneManager = SceneManager::GetInstance();
+                               pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_THREAD_LIST, SCENE_TRANSITION_ANIMATION_TYPE_NONE));
+                       }
+                       else
+                       {
+                               __pConvMessageList->UpdateList();
+                               if(__pTrayPanel)
+                               {
+                                       Button* pDeleteButton = static_cast<Button*>(__pTrayPanel->GetControl(L"IDC_BUTTON_DELETE"));
+                                       pDeleteButton->SetEnabled(pConvPrModel->GetCount()>0);
+                                       pDeleteButton->Invalidate(true);
+                               }
+                               // Scroll to latest message.
+                               int lastGroupIndex = __pConvMessageList->GetGroupCount() - 1;
+                               AppLogDebug("lastGroupIndex  :%d", lastGroupIndex);
+                               int listItemCount = __pConvMessageList->GetItemCountAt(lastGroupIndex);
+                               AppLogDebug("listItemCount : %d", listItemCount);
+                               if (lastGroupIndex>= 0 && listItemCount > 0)
+                               {
+                                       __pConvMessageList->ScrollToItem(lastGroupIndex, listItemCount - 1, LIST_SCROLL_ITEM_ALIGNMENT_BOTTOM);
+                                       __pConvMessageList->Draw();
+                               }
+                       }
+               }
+       }
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+result
+ConversationForm::AddEditCheckBox(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       __pCheckAll = static_cast<CheckButton*>(GetControl(L"IDC_CHECKALL_BUTTON"));
+       if (__pCheckAll == null)
+       {
+               r = E_FAILURE;
+               return r;
+       }
+       Rectangle rect = GetClientAreaBounds();
+       __pCheckAll->SetColor(CHECK_BUTTON_STATUS_NORMAL, COLOR_CHECKBOX_BUTTON);
+       String strText;
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_SELECT_ALL", strText);
+       __pCheckAll->SetText(strText);
+       __pCheckAll->SetActionId(IDA_SELECT_ALL_ON, IDA_SELECT_ALL_OFF);
+       __pCheckAll->AddActionEventListener(*this);
+       __pConvMessageList->SetBounds(Rectangle(0, __pCheckAll->GetHeight(), rect.width, rect.height - PANEL_HEIGHT));
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+result
+ConversationForm::AddLabelSelectionInfo()
+{
+       AppLogDebug("ENTER");
+       String strText,selcInfo;
+       result r = E_SUCCESS;
+       Rectangle rect = GetClientAreaBounds();
+       __pSelectionInfo = static_cast<Label*>(GetControl(L"IDC_CONV_EDIT_LABEL"));
+       if (__pSelectionInfo == null)
+       {
+               r = E_FAILURE;
+               return r;
+       }
+
+       __pSelectionInfo->SetBackgroundColor(COLOR_SELECTION_INFO_LABEL);
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_PD_SELECTED", strText);
+       selcInfo.Format(MAX_LEN_SELECTION_INFO, strText.GetPointer(), __pSelectedIds->GetCount());
+       __pConvMessageList->SetBounds(Rectangle(rect.x, __pCheckAll->GetHeight(), rect.width,
+                                                                                       rect.height - PANEL_HEIGHT - H_MSG_SELECTION_INFO_LABEL));
+       __pSelectionInfo->SetText(selcInfo);
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+void
+ConversationForm::CheckAll(bool value)
+{
+       AppLogDebug("ENTER");
+       if (__pSelectedIds)
+       {
+               __pSelectedIds->RemoveAll();
+               ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+               if (pConvPrModel)
+               {
+                       __pSelectedIds->RemoveAll();
+                       int groupItemCount(0);
+
+                       for (int groupIndex = 0; groupIndex < pConvPrModel->GetGroupCount(); groupIndex++)
+                       {
+                               groupItemCount = pConvPrModel->GetGroupItemCount(groupIndex);
+                               for (int index = 0; index < groupItemCount; index++)
+                               {
+                                       __pConvMessageList->SetItemChecked(groupIndex, index, value);
+                                       // If item check add it in selected list.
+                                       if (value)
+                                       {
+                                               int actualDataIndex = pConvPrModel->GetSelectedIndex(groupIndex) + index;
+                                               BaseData* pConvData = pConvPrModel->GetDataAt(actualDataIndex);
+                                               __pSelectedIds->Add(pConvData->GetEntryId());
+                                       }
+                               }
+                       }
+               }
+               Invalidate(true);
+               ShowHideSelectionInfo();
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::ShowHideSelectionInfo(void)
+{
+       AppLogDebug("ENTER");
+       String strText,selcInfo;
+       int selectCount(0);
+       if (__pSelectedIds)
+       {
+               selectCount = __pSelectedIds->GetCount();
+       }
+       bool showInfo = (selectCount > 0);
+//TODO: SetBodus not retaining the check box state, because of this
+// Always showing selection information time being.
+#if 0
+       Rectangle rect = GetClientAreaBounds();
+       if (true)
+       {
+               if (__pSelectionInfo == null)
+               {
+                       Rectangle rect = GetClientAreaBounds();
+                       __pSelectionInfo = new (std::nothrow) Label();
+                       __pSelectionInfo->Construct(Rectangle(rect.x, rect.height - H_MSG_SELECTION_INFO_LABEL, rect.width, H_MSG_SELECTION_INFO_LABEL), L"");
+                       __pSelectionInfo->SetBackgroundColor(COLOR_SELECTION_INFO_LABEL);
+                       __pConvMessageList->SetBounds(Rectangle(rect.x, __pCheckAll->GetHeight(), rect.width,
+                                                                                                       rect.height - __pCheckAll->GetHeight() - H_MSG_SELECTION_INFO_LABEL));
+                       AddControl(*__pSelectionInfo);
+               }
+#endif
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_PD_SELECTED", strText);
+       selcInfo.Format(MAX_LEN_SELECTION_INFO, strText.GetPointer(), selectCount);
+       __pSelectionInfo->SetShowState(true);
+       __pSelectionInfo->SetText(selcInfo);
+       __pSelectionInfo->RequestRedraw();
+#if 0
+}
+else
+{
+       __pSelectionInfo->SetShowState(false);
+       __pConvMessageList->SetBounds(Rectangle(rect.x, __pCheckAll->GetHeight(), rect.width,
+                                                                                       rect.height - __pCheckAll->GetHeight()));
+
+       if (__pSelectionInfo)
+       {
+               // Hide selection info bar.
+               RemoveControl(*__pSelectionInfo);
+               __pSelectionInfo = null;
+       }
+       __pCheckAll->SetSelected(false);
+}
+#endif
+
+       GetFooter()->SetItemEnabled(0, showInfo);
+       GetFooter()->Draw();
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
+{
+       AppLogDebug("ENTER");
+
+       ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+       switch (requestId)
+       {
+       case REQUEST_ENABLE_DISABLE_SEND_BUTTON:
+       {
+               __pMsgComposePanel->EnableSendButton(!__pMsgComposePanel->IsComposeFieldEmpty());
+       }
+       break;
+
+       case REQUEST_NORMAL_VIEW:
+       {
+               // Go back to thread list view
+               if (pConvPrModel && pConvPrModel->GetCount() <= 0)
+               {
+                       // Back to thread list view.
+                       SceneManager* pSceneManager = SceneManager::GetInstance();
+                       pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_THREAD_LIST, SCENE_TRANSITION_ANIMATION_TYPE_NONE));
+               }
+               else
+               {
+                       ArrayList* pArgList = new (std::nothrow) ArrayList();
+                       if (pArgList)
+                       {
+                               ThreadData* pThreadEntry = static_cast<ThreadData*>(__pCurrentThreadEntry->CloneN());
+                               pArgList->Add(pThreadEntry);
+                               SceneManager* pSceneManager = SceneManager::GetInstance();
+                               pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_CONVERSATION_LIST, SCENE_TRANSITION_ANIMATION_TYPE_NONE), pArgList);
+                       }
+               }
+       }
+       break;
+
+       case REQUEST_SAVE_MESSAGE_ATTACHMENTS:
+       {
+#ifndef _DISABLE_MMS_FEATURE_
+
+               if (pArgs && pArgs->GetCount() > 0)
+               {
+                       Integer* pMessageId = (Integer*) pArgs->GetAt(0);
+                       MessagePresentationModel* pMsgPrModel = MessagePresentationModel::GetInstance();
+                       if (pMsgPrModel)
+                       {
+                               // Transfer ownership to popup
+                               MessageData* pMessageData = pMsgPrModel->GetMessageDataByIdN(pMessageId->ToInt());
+                               if (pMessageData)
+                               {
+                                       __pSaveAttachmentsPopup = new (std::nothrow) AttachementSavePopup(*this, pMessageData);
+                                       __pSaveAttachmentsPopup->Construct();
+                                       __pSaveAttachmentsPopup->Show();
+                               }
+                       }
+                       pArgs->RemoveAll(true);
+               }
+#endif
+       }
+       break;
+
+       case REQUEST_OPTION_POPUP:
+       {
+               if (__pOptionPopup)
+               {
+                       delete __pOptionPopup;
+                       __pOptionPopup = null;
+               }
+       }
+       break;
+
+       case REQUEST_DESTROY_SAVE_ATTACHMENT_POPUP:
+       {
+               if (__pSaveAttachmentsPopup)
+               {
+                       delete __pSaveAttachmentsPopup;
+                       __pSaveAttachmentsPopup = null;
+               }
+       }
+       break;
+
+       case REQUEST_DESTROY_DURATION_POPUP:
+       {
+               if (__pDurationPopup)
+               {
+                       __pMsgComposePanel->SetDefaultPageDuration(__pDurationPopup->GetDuration());
+                       String strFormat;
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS", strFormat);
+                       String strText;
+                       strText.Format(strFormat.GetLength() * 2, strFormat.GetPointer(), __pMsgComposePanel->GetDefaultPageDuration());
+                       Button* pDurationButton = static_cast<Button*>(__pTrayPanel->GetControl(L"IDC_BUTTON_DURATION"));
+                       pDurationButton->SetText(strText);
+                       pDurationButton->Invalidate(false);
+                       delete __pDurationPopup;
+                       __pDurationPopup = null;
+               }
+       }
+       break;
+
+       case REQUEST_DELETE_START:
+               if(pArgs->GetCount() > 0)
+               {
+                       Integer* pTotalCount = (Integer*)pArgs->GetAt(0);
+                       OnDeleteStart(pTotalCount->ToInt());
+               }
+               break;
+
+       case REQUEST_DELETE_UPDATE:
+               if(pArgs->GetCount() > 0)
+               {
+                       Integer* pCurrentCount = (Integer*)pArgs->GetAt(0);
+                       Integer* pTotalCount = (Integer*)pArgs->GetAt(1);
+                       OnDeleteUpdate(pCurrentCount->ToInt(),pTotalCount->ToInt());
+               }
+               break;
+
+       case REQUEST_DELETE_COMPLETE:
+               if(pArgs->GetCount() > 0)
+               {
+                       Integer* pStatus = (Integer*)pArgs->GetAt(0);
+                       OnDeleteComplete(pStatus->ToInt(),null);
+               }
+               break;
+
+       default:
+               break;
+
+
+       }
+
+       delete pArgs;
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::OnDeleteStart(int totalCount)
+{
+       AppLogDebug("ENTER");
+
+       if (__pProgressPopup)
+       {
+               __pProgressPopup->ShowPopup();
+       }
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::OnDeleteUpdate(int deleteCount, int totalCount)
+{
+       AppLogDebug("ENTER");
+
+       if (__pProgressPopup)
+       {
+               String statusInfo;
+               statusInfo.Format(MAX_LEN_SELECTION_INFO, IDS_DELETED_NUMBER_IDS, deleteCount, totalCount);
+               __pProgressPopup->UpdateProgressInfo(statusInfo);
+               __pProgressPopup->SetProgressValue(deleteCount);
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::OnDeleteComplete(int errCode, Object* pThreadObject)
+{
+       // Back to thread view mode
+       AppLogDebug("ENTER");
+
+       if (__pProgressPopup)
+       {
+               __pProgressPopup->HidePopup();
+               delete __pProgressPopup;
+               __pProgressPopup = null;
+       }
+       // UI thread, Back to list view mode.
+       if (__convFormType == CONVERSATION_LIST_FORM_EDIT)
+       {
+               // Deletion completed, so update conversation presentation data
+               ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+               if (pConvPrModel)
+               {
+                       int threadId = __pCurrentThreadEntry->GetEntryId();
+                       pConvPrModel->GetConversationMessageList(threadId);
+               }
+               RequestId requestId = REQUEST_NORMAL_VIEW;
+               SendUserEvent(requestId, null);
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::DeleteSelectedItem(void)
+{
+       AppLogDebug("ENTER");
+
+       if (!__pSelectedIds || __pSelectedIds->GetCount() <= 0)
+       {
+               return;
+       }
+       // Create progress dialog.
+       if (!__pProgressPopup)
+       {
+               __pProgressPopup = new (std::nothrow) MsgProgressPopup();
+               String strTitle(IDS_DELETED_NUMBER_IDS);
+               __pProgressPopup->Construct(0, __pSelectedIds->GetCount(),strTitle);
+       }
+       ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+       if (pConvPrModel)
+       {
+               pConvPrModel->Delete(__pSelectedIds, *this, REQUEST_DELETE_MESSAGE);
+               __pSelectedIds = null;
+       }
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+String
+ConversationForm::GetTitleText() const
+{
+
+       AppLogDebug("ENTER");
+       String contactName;
+       if(__pContactDetails && __pContactDetails->GetCount()>0)
+       {
+               ContactDetails* firstRecipientName = static_cast<ContactDetails*>(__pContactDetails->GetAt(0));
+               if(firstRecipientName->contactName.CompareTo(String(IDS_UNKNOWN))== 0)
+               {
+                       contactName.Append(firstRecipientName->contactNumber);
+               }
+               else
+               {
+                       contactName.Append(firstRecipientName->contactName);
+               }
+               if(__pContactDetails->GetCount() >= 2)
+               {
+                       contactName.Append(IDS_PLUS_SPACE);
+                       contactName.Append(__pContactDetails->GetCount() - 1);
+               }
+       }
+       else
+       {
+               contactName.Append(IDS_UNKNOWN);
+       }
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return contactName;
+}
+
+void
+ConversationForm::PrepareContactList(void)
+{
+       AppLogDebug("ENTER");
+
+       if (__pContactDetails == null)
+       {
+               __pContactDetails = new (std::nothrow) ArrayList();
+               if (__pContactDetails)
+               {
+                       __pContactDetails->Construct();
+                       ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+                       int threadId = __pCurrentThreadEntry->GetEntryId();
+                       if (pConvPrModel)
+                       {
+                               ArrayList* pContactList = pConvPrModel->GetRecipientDetailsListN(threadId);
+                               if (pContactList)
+                               {
+                                       for (int i = 0; i < pContactList->GetCount(); i++)
+                                       {
+                                               ContactDetails* recipientDetails = static_cast<ContactDetails*>(pContactList->GetAt(i));
+                                               ContactDetails* contactDetails = new (std::nothrow) ContactDetails();
+                                               contactDetails->contactName = recipientDetails->contactName;
+                                               contactDetails->contactNumber = recipientDetails->contactNumber;
+                                               __pContactDetails->Add(contactDetails);
+                                       }
+                                       pContactList->RemoveAll(true);
+                               }
+                               delete pContactList;
+                       }
+               }
+       }
+
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::ShowContactList(bool value)
+{
+       AppLogDebug("ENTER");
+
+       int height = H_LIST_ITEM_128PX * 3;
+
+       if (value)
+       {
+               if (__pList == null)
+               {
+                       __pConContactList = new (std::nothrow) ContactList();
+                       __pConContactList->Construct(__pContactDetails);
+                       __pList = new (std::nothrow) ListView();
+                       if (__pContactDetails->GetCount() < 3)
+                       {
+                               height = __pContactDetails->GetCount() * H_LIST_ITEM_128PX;
+                       }
+                       Rectangle rect = GetClientAreaBounds();
+                       __pList->Construct(Rectangle(MARGIN_10PX * 5, 0, W_POPUP_CONTROL, height), true, SCROLL_STYLE_FADE_OUT);
+                       __pList->SetBackgroundColor(Color::GetColor(COLOR_ID_WHITE));
+
+                       __pList->AddListViewItemEventListener(*__pConContactList);
+                       __pList->SetItemProvider(*__pConContactList);
+                       AddControl(*__pList);
+               }
+               __pList->UpdateList();
+               __pList->SetShowState(true);
+       }
+       else
+       {
+               if (__pList)
+               {
+                       RemoveControl(*__pList);
+                       __pList = null;
+               }
+               if (__pConContactList)
+               {
+                       delete __pConContactList;
+                       __pConContactList = null;
+               }
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+result
+ConversationForm::CreateContextMenu(const Control& source)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       String strText;
+       int index = -1;
+       if (__pContextMenuText)
+       {
+               delete __pContextMenuText;
+               __pContextMenuText = null;
+       }
+       if (__pContactDetails && __pContactDetails->GetCount()>0)
+       {
+               __pContextMenuText = new (std::nothrow) ContextMenu();
+               r = __pContextMenuText->Construct( Point(source.GetX() + source.GetWidth() / 2, source.GetY() + source.GetHeight()),
+                       CONTEXT_MENU_STYLE_GRID);
+               if (r != E_SUCCESS)
+               {
+                       delete __pContextMenuText;
+                       __pContextMenuText = null;
+                       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+                       return r;
+               }
+
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_VOICE_CALL", strText);
+               __pContextMenuText->AddItem(strText, IDA_CONVERSATION_FORM_VOICE_CALL);
+
+               ContactDetails* contactname = static_cast<ContactDetails*>(__pContactDetails->GetAt(0));
+               String strUnknown(IDS_UNKNOWN);
+               if (contactname->contactName.CompareTo(strUnknown) == 0)
+               {
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_OPT_ADD_CONTACT", strText);
+                       __pContextMenuText->AddItem(strText, IDA_CONVERSATION_FORM_ADD_CONTACT);
+               }
+               else
+               {
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_OPT_VIEW_CONTACT", strText);
+                       __pContextMenuText->AddItem(strText, IDA_CONVERSATION_FORM_VIEW_CONTACT);
+               }
+
+               SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
+               pSettingPrModel->GetSpamFilterList();
+               pSettingPrModel->RefreshSpamFilterList();
+               index = pSettingPrModel->GetFilterListIndex(contactname->contactNumber);
+               if (index == -1)
+               {
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_OPT_BLOCK", strText);
+                       __pContextMenuText->AddItem(strText, IDA_CONVERSATION_FORM_BLOCK);
+               }
+               else
+               {
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_OPT_UNBLOCK", strText);
+                       __pContextMenuText->AddItem(strText, IDA_CONVERSATION_FORM_UNBLOCK);
+               }
+               __pContextMenuText->AddActionEventListener(*this);
+               __pContextMenuText->SetShowState(true);
+               __pContextMenuText->Show();
+       }
+
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+void
+ConversationForm::ContactHelper(int helperType)
+{
+       AppLogDebug("ENTER");
+
+       ContactDetails* contact = static_cast<ContactDetails*>(__pContactDetails->GetAt(0));
+       switch (helperType)
+       {
+       case IDA_CONVERSATION_FORM_VOICE_CALL:
+       {
+               if (CommonUtil::IsSimAvailable())
+               {
+                       ContactUtility::VoiceCall(contact->contactNumber);
+               }
+               else
+               {
+                       // Show error message.
+                       String msgText;
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_SLCD_POP_TEXT_SIM_CARD_ERROR", msgText);
+                       CommonUtil::ShowInfoPopup(msgText);
+               }
+       }
+       break;
+
+       case IDA_CONVERSATION_FORM_ADD_CONTACT:
+       {
+               ContactUtility::AddContact(contact->contactNumber);
+       }
+       break;
+
+       case IDA_CONVERSATION_FORM_VIEW_CONTACT:
+       {
+               ContactUtility::ViewContact(contact->contactNumber);
+       }
+       break;
+
+       case IDA_CONVERSATION_FORM_BLOCK:
+       {
+               BlockPopup(contact->contactNumber);
+       }
+       break;
+
+       case IDA_CONVERSATION_FORM_UNBLOCK:
+       {
+               UnBlockPhoneNumber(contact->contactNumber);
+       }
+       break;
+
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+
+void
+ConversationForm::ResendDeletePopup(int index)
+{
+       AppLogDebug("ENTER");
+       if (!__pResendDeletePopup)
+       {
+               ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+               if (pConvPrModel)
+               {
+                       ConversationData* pConvData = (ConversationData*) pConvPrModel->GetDataAt(index)->CloneN();
+                       __pResendDeletePopup = new (std::nothrow) MsgResendDeletePopup(pConvData, *this);
+                       if (__pResendDeletePopup->Construct() != E_SUCCESS)
+                       {
+                               delete __pResendDeletePopup;
+                               __pResendDeletePopup = null;
+                       }
+                       else
+                       {
+                               __pResendDeletePopup->SetShowState(true);
+                               __pResendDeletePopup->Draw();
+                               __pResendDeletePopup->Show();
+                       }
+               }
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::OnKeyReleased(const Control& source, KeyCode keyCode)
+{
+       AppLogDebug("ENTER");
+
+       SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
+       if (pSettingPrModel->IsVolumeKeyOn())
+       {
+               if (keyCode == KEY_SIDE_UP)
+               {
+                       FontSettings* pFontSettings = SettingPresentationModel::GetInstance()->GetFontSettings();
+                       int fontType = (int) pFontSettings->GetMessageFontType();
+                       if (fontType < SETTING_HUGE_FONT)
+                       {
+                               fontType++;
+                               pFontSettings->SetMessageFonttype((SettingFontType) fontType);
+                       }
+                       int size = pFontSettings->GetMessageTextSize((SettingFontType) fontType);
+                       __pMsgComposePanel->SetTextSize(size);
+                       __pConvMessageList->UpdateList();
+               }
+               else if (keyCode == KEY_SIDE_DOWN)
+               {
+                       FontSettings* pFontSettings = SettingPresentationModel::GetInstance()->GetFontSettings();
+                       int fontType = (int) pFontSettings->GetMessageFontType();
+                       if (fontType > SETTING_TINY_FONT)
+                       {
+                               fontType--;
+                               pFontSettings->SetMessageFonttype((SettingFontType) fontType);
+                       }
+                       int size = pFontSettings->GetMessageTextSize((SettingFontType) fontType);
+                       __pMsgComposePanel->SetTextSize(size);
+                       __pConvMessageList->UpdateList();
+               }
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::OnPopupListItemSelected(const Control& popup, int selectIndex, const Object* pPopupListItem)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::OnPopupClose(Object* pObject)
+{
+       AppLogDebug("ENTER");
+
+       if (__pResendDeletePopup && __pResendDeletePopup->Equals(*pObject))
+       {
+               delete __pResendDeletePopup;
+               __pResendDeletePopup = null;
+       }
+
+       if (__pOptionPopup && __pOptionPopup->Equals(*pObject))
+       {
+               delete __pOptionPopup;
+               __pOptionPopup = null;
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+
+void
+ConversationForm::OnTouchPressed(const Control& source,
+                                                                const Point& currentPosition, const TouchEventInfo& touchInfo)
+{
+       AppLogDebug("ENTER");
+
+       if (__pList && __pList->IsVisible())
+       {
+               __pList->SetShowState(false);
+       }
+
+       if (source.Equals(*__pConvMessageList))
+       {
+               __pMsgComposePanel->HideKeypad();
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::BlockPopup(const String& phoneNumber)
+{
+       AppLogDebug("ENTER");
+
+       String number;
+       String strText;
+       __pPhoneNumber.Clear();
+       __pPhoneNumber = phoneNumber;
+       __pBlockPopup = new (std::nothrow) Popup();
+       __pBlockPopup->Construct(L"IDL_BLOCK_POPUP");
+       Button* pButtonOk = static_cast<Button*>(__pBlockPopup->GetControl(L"IDC_BUTTON_OK"));
+       pButtonOk->SetActionId(IDA_PHONENUMBER_BLOCK_OK);
+       pButtonOk->AddActionEventListener(*this);
+       Button* pButtonCancel = static_cast<Button*>(__pBlockPopup->GetControl(L"IDC_BUTTON_CANCEL"));
+       pButtonCancel->SetActionId(IDA_PHONENUMBER_BLOCK_CANCEL);
+       pButtonCancel->AddActionEventListener(*this);
+       Label* pLabelNumber = static_cast<Label*>(__pBlockPopup->GetControl(L"IDC_BLOCKNUMBER_LABEL"));
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_POP_BLOCK_PS_Q", strText);
+       strText.Replace(L"%s", phoneNumber);
+       number.Append(strText);
+       pLabelNumber->SetText(number);
+       __pBlockPopup->Show();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::UnBlockPhoneNumber(const String& phoneNumber)
+{
+       AppLogDebug("ENTER");
+
+       SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
+       int filterIndex = pSettingPrModel->GetFilterListIndex(phoneNumber);
+       if (filterIndex >= 0)
+       {
+               pSettingPrModel->DeleteFilter(filterIndex, 1);
+               pSettingPrModel->RefreshSpamFilterList();
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+
+void
+ConversationForm::OnGroupedListViewItemStateChanged(GroupedListView& listView, int groupIndex, int itemIndex, int elementId, ListItemStatus status)
+{
+       AppLogDebug("ENTER");
+
+       //List item selected.
+       ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+       if (pConvPrModel)
+       {
+               int index = pConvPrModel->GetSelectedIndex(groupIndex) + itemIndex;
+               BaseData* pConvData = pConvPrModel->GetDataAt(index);
+
+               switch (status)
+               {
+               case LIST_ITEM_STATUS_CHECKED:
+               {
+                       __pSelectedIds->Add(pConvData->GetEntryId());
+                       if (__pSelectedIds->GetCount() > 0)
+                       {
+                               GetFooter()->SetItemEnabled(0, true);
+                               GetFooter()->Draw();
+                       }
+                       if (__pSelectedIds->GetCount() == pConvPrModel->GetCount())
+                       {
+                               __pCheckAll->SetSelected(true);
+                       }
+                       ShowHideSelectionInfo();
+               }
+               break;
+
+               case LIST_ITEM_STATUS_UNCHECKED:
+               {
+                       __pSelectedIds->Remove(pConvData->GetEntryId());
+                       if (__pSelectedIds->GetCount() <= pConvPrModel->GetCount())
+                       {
+                               __pCheckAll->SetSelected(false);
+                       }
+                       ShowHideSelectionInfo();
+               }
+               break;
+
+               case LIST_ITEM_STATUS_SELECTED:
+               {
+                       if (elementId == LVBubbleListItem::MSG_BUBBLE_ITEM_FAIL_STATUS)
+                       {
+                               ResendDeletePopup(index);
+                       }
+                       else if (elementId == LVBubbleListItem::MSG_BUBBLE_ITEM_TEXT ||
+                                        elementId == LVBubbleListItem::MSG_BUBBLE_ITEM_BG)
+                       {
+                               if (__pList && __pList->GetShowState())
+                               {
+                                       ShowContactList(false);
+                                       return;
+                               }
+                               if (__isListViewItemLongPressed)
+                               {
+                                       __isListViewItemLongPressed = false;
+                                       ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+                                       if (pConvPrModel && (elementId == LVBubbleListItem::MSG_BUBBLE_ITEM_TEXT))
+                                       {
+                                               __pMsgComposePanel->HideKeypad();
+                                               int index = pConvPrModel->GetSelectedIndex(groupIndex) + itemIndex;
+                                               ConversationData* pConvData = (ConversationData*) pConvPrModel->GetDataAt(index)->CloneN();
+                                               pConvData->SetDisplayName(__pCurrentThreadEntry->GetDisplayName());
+                                               if (pConvData)
+                                               {
+                                                       __pOptionPopup = new (std::nothrow) OptionPopup(*this, pConvData);
+                                                       __pOptionPopup->Construct(__pCurrentThreadEntry->GetEntryId(), index);
+                                                       __pOptionPopup->SetShowState(true);
+                                                       __pOptionPopup->Draw();
+                                                       __pOptionPopup->Show();
+                                                       //      pConvData = null; // Transfer ownership to popup
+                                               }
+                                       }
+                               }
+                       }
+                       else if (elementId == LVBubbleListItem::MSG_BUBBLE_ITEM_DETAILS)
+                       {
+#ifndef _DISABLE_MMS_FEATURE_
+
+                               // Show MMS details
+                               ArrayList* pArgList = new (std::nothrow) ArrayList();
+                               pArgList->Add((new (std::nothrow) Integer(MMS_FORM_NORMAL)));
+                               pArgList->Add((new (std::nothrow) Integer(pConvData->GetEntryId())));
+                               SceneManager* pSceneManager = SceneManager::GetInstance();
+                               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_MMS_DETAIL, SCENE_TRANSITION_ANIMATION_TYPE_NONE), pArgList);
+#endif
+                       }
+               }
+               break;
+
+               case LIST_ITEM_STATUS_HIGHLIGHTED:
+               case LIST_ITEM_STATUS_MORE:
+                       break;
+               }
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::OnGroupedListViewItemSwept(GroupedListView& listView, int groupIndex,
+                                                                                        int itemIndex, SweepDirection direction)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+
+}
+
+void
+ConversationForm::OnGroupedListViewContextItemStateChanged(GroupedListView& listView, int groupIndex,
+                                                                                                                  int itemIndex, int elementId, ListContextItemStatus status)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::OnGroupedListViewItemLongPressed(GroupedListView& listView, int groupIndex,
+                                                                                                  int itemIndex, int elementId, bool& invokeListViewItemCallback)
+{
+       AppLogDebug("ENTER");
+       invokeListViewItemCallback = true;
+       __isListViewItemLongPressed = true;
+//     //TODO: Long key press crashing
+//     ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+//     if (pConvPrModel && (elementId == LVBubbleListItem::MSG_BUBBLE_ITEM_TEXT))
+//     {
+//             __pMsgComposePanel->HideKeypad();
+//             int index = pConvPrModel->GetSelectedIndex(groupIndex) + itemIndex;
+//             ConversationData* pConvData = (ConversationData*) pConvPrModel->GetDataAt(index)->CloneN();
+//             if (pConvData)
+//             {
+//                     __pOptionPopup = new (std::nothrow) OptionPopup(*this, pConvData);
+//                     __pOptionPopup->Construct(__pCurrentThreadEntry->GetEntryId(), index);
+//                     __pOptionPopup->SetShowState(true);
+//                     __pOptionPopup->Draw();
+//                     __pOptionPopup->Show();
+//                     pConvData = null; // Transfer ownership to popup
+//             }
+//
+//     }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+
+int
+ConversationForm::GetGroupCount(void)
+{
+       AppLogDebug("ENTER");
+
+       int groupCount = 0;
+       ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+       if (pConvPrModel)
+       {
+               groupCount = pConvPrModel->GetGroupCount();
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return groupCount;
+}
+
+int
+ConversationForm::GetItemCount(int groupIndex)
+{
+       AppLogDebug("ENTER");
+       int groupItemCount = 0;
+       ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+       if (pConvPrModel)
+       {
+               groupItemCount = pConvPrModel->GetGroupItemCount(groupIndex);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return groupItemCount;
+}
+
+GroupItem*
+ConversationForm::CreateGroupItem(int groupIndex, int itemWidth)
+{
+       AppLogDebug("ENTER");
+       GroupItem* pItem = new (std::nothrow) GroupItem();
+       ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+       if (pConvPrModel)
+       {
+               pItem->Construct(Dimension(itemWidth, H_GROUP_HEADER));
+               Bitmap* pGroupBgBitmap = BitmapUtility::GetInstance()->GetBubbleGroupBgBitmap(MSG_GROUP_BG_BITMAP_BUBBLE,
+                                                                                                                                                                         pConvPrModel->GetGroupName(groupIndex), Dimension(itemWidth, 46));
+               if (pGroupBgBitmap)
+               {
+                       pItem->SetBackgroundBitmap(pGroupBgBitmap);
+                       delete pGroupBgBitmap;
+               }
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pItem;
+}
+
+bool
+ConversationForm::DeleteGroupItem(int groupIndex, GroupItem* pItem, int itemWidth)
+{
+       AppLogDebug("ENTER");
+
+       if (pItem)
+       {
+               delete pItem;
+               pItem = null;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return true;
+}
+
+ListItemBase*
+ConversationForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+       AppLogDebug("ENTER");
+       LVBubbleListItem* pCustomItem = null;
+       ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+       if (pConvPrModel)
+       {
+               int index = pConvPrModel->GetSelectedIndex(groupIndex) + itemIndex;
+               // Creates an item format of the CustomList
+               SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
+               ConversationData* pConvData = (ConversationData*) pConvPrModel->GetDataAt(index);
+               FontSettings* pFontSettings = pSettingPrModel->GetFontSettings();
+               bool editMode = (__convFormType == CONVERSATION_LIST_FORM_EDIT);
+               pCustomItem = new (std::nothrow) LVBubbleListItem(*pConvData, *__pConvMessageList, groupIndex, itemIndex, itemWidth,
+                                                                                                                 *pFontSettings, editMode);
+               // Create layout.
+               pCustomItem->CreateBubbleLayout();
+       }
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return pCustomItem;
+}
+
+bool
+ConversationForm::DeleteItem(int groupIndex, int itemIndex, ListItemBase* pItem, int itemWidth)
+{
+       AppLogDebug("ENTER");
+
+       if (pItem)
+       {
+               delete pItem;
+               pItem = null;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return true;
+}
+
+void
+ConversationForm::OnComposeStateChange(ComposeType type)
+{
+       AppLogDebug("ENTER");
+       bool mmsMode(type == COMPOSE_MMS);
+       if (__pTrayPanel)
+       {
+               Button* pPreviewButton = static_cast<Button*>(__pTrayPanel->GetControl(L"IDC_BUTTON_PREVIEW"));
+               pPreviewButton->SetEnabled(mmsMode);
+               pPreviewButton->Invalidate(false);
+               Button* pDurationButton = static_cast<Button*>(__pTrayPanel->GetControl(L"IDC_BUTTON_DURATION"));
+               pDurationButton->SetEnabled(mmsMode);
+               pDurationButton->Invalidate(false);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+ConversationForm::OnSendButtonClick(void)
+{
+       AppLogDebug("ENTER");
+
+       MessageComposeData* pComposeData = __pMsgComposePanel->GetMessageComposeDataN();
+       if (pComposeData)
+       {
+               MessagePresentationModel* pMsgPrModel = MessagePresentationModel::GetInstance();
+               if (pMsgPrModel)
+               {
+                       pMsgPrModel->SendMessage(*pComposeData, __pCurrentThreadEntry->GetEntryId());
+               }
+               delete pComposeData;
+       }
+//     __pMsgComposePanel->Reset();
+       __pMsgComposePanel->HideKeypad();
+       UiApp* pAppUi = UiApp::GetInstance();
+       if( pAppUi && pAppUi->GetAppUiState() == APP_UI_STATE_FOREGROUND)
+       {
+               __pMsgComposePanel->SetFocusToEditor();
+       }
+       __pMsgComposePanel->ClearText();
+       __pMsgComposePanel->Invalidate(true);
+
+       ShowContactList(false); //To hide contact list on send button click
+
+       // If draft entry send delete it
+       ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+       if (pConvPrModel)
+       {
+               const MessageData* pDraftMessage = pConvPrModel->GetDraftMessage();
+               if (pDraftMessage)
+               {
+
+                       pConvPrModel->Delete(pDraftMessage->GetEntryId(), REQUEST_DELETE_MESSAGE);
+               }
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ConversationForm::ShowDeleteConfirmPopup(void)
+{
+       AppLogDebug("ENTER");
+
+       if (!__pDeleteConfirmPopup)
+       {
+               AppLogDebug("ENTER");
+               __pDeleteConfirmPopup = new (std::nothrow) BaseCustomPopup();
+               __pDeleteConfirmPopup->Construct(L"IDL_DELETE_POPUP");
+               Button* pButtonDelete = static_cast<Button*>(__pDeleteConfirmPopup->GetControl(L"IDC_BUTTON_LEFT"));
+               Button* pButtonCancel = static_cast<Button*>(__pDeleteConfirmPopup->GetControl(L"IDC_BUTTON_RIGHT"));
+               pButtonDelete->SetActionId(IDA_CONVLISTEDIT_MESSAGE_DELETE);
+               pButtonDelete->AddActionEventListener(*this);
+               pButtonCancel->SetActionId(IDA_CONVLISTEDIT_MESSAGE_CANCEL);
+               pButtonCancel->AddActionEventListener(*this);
+               __pDeleteConfirmPopup->Show();
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
diff --git a/src/MsgConversationPresentationModel.cpp b/src/MsgConversationPresentationModel.cpp
new file mode 100644 (file)
index 0000000..050613c
--- /dev/null
@@ -0,0 +1,321 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <cstdlib>\r
+#include <msg.h>\r
+#include <msg_storage.h>\r
+#include <msg_storage_types.h>\r
+\r
+#include <FBase.h>\r
+#include <FBaseColIMapEnumerator.h>\r
+#include <FBaseErrorDefine.h>\r
+#include <FBaseRtIEventListener.h>\r
+\r
+#include "MsgConversationData.h"\r
+#include "MsgConversationPresentationModel.h"\r
+#include "MsgDeleteHandlerThread.h"\r
+#include "MsgEvent.h"\r
+#include "MsgIConversationEventListener.h"\r
+#include "MsgIThreadEventListener.h"\r
+#include "MsgMessageData.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Base::Runtime;\r
+\r
+ConversationPresentationModel* ConversationPresentationModel::__pInstance = null;\r
+\r
+ConversationPresentationModel*\r
+ConversationPresentationModel::GetInstance(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pInstance == null)\r
+       {\r
+               CreateInstance();\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __pInstance;\r
+}\r
+\r
+ConversationPresentationModel::ConversationPresentationModel(void)\r
+       : __pConversationListener(null)\r
+       , __draftMessageId(-1)\r
+       , __pDraftMessage(null)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+ConversationPresentationModel::~ConversationPresentationModel(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pDraftMessage)\r
+       {\r
+               delete __pDraftMessage;\r
+       }\r
+\r
+       if (__pConversationListener)\r
+       {\r
+               __pConversationListener->RemoveAll(true);\r
+               delete __pConversationListener;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+ConversationPresentationModel::Construct(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = ListPresentationModel::Construct();\r
+       if (r == E_SUCCESS)\r
+       {\r
+\r
+               void (* msg_storage_change_cb)(msg_handle_t, msg_storage_change_type_t, msg_id_list_s*, void*);\r
+               msg_storage_change_cb = MessageStorageChangeCallback;\r
+               msg_error_t err = msg_reg_storage_change_callback(__pMsgHandle, msg_storage_change_cb, (void*) this);\r
+               if (err != MSG_SUCCESS)\r
+               {\r
+                       AppLogDebug("msg_reg_storage_change_callback err = %d", (int) err);\r
+                       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+                       r = E_FAILURE;\r
+                       return r;\r
+               }\r
+               // Create conversation observer list.\r
+               __pConversationListener = new (std::nothrow) ArrayList();\r
+               __pConversationListener->Construct();\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(r));\r
+       return r;\r
+}\r
+\r
+void\r
+ConversationPresentationModel::CreateInstance(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       __pInstance = new (std::nothrow) ConversationPresentationModel();\r
+       if (E_SUCCESS != __pInstance->Construct())\r
+       {\r
+               delete __pInstance;\r
+               __pInstance = null;\r
+               return;\r
+       }\r
+       // To destroy singletone instance on app exit\r
+       std::atexit(DestroyInstance);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+ConversationPresentationModel::DestroyInstance(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       delete __pInstance;\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+// Fetch thread message list\r
+void\r
+ConversationPresentationModel::GetConversationMessageList(int threadId)\r
+{\r
+       AppLogDebug("ENTER");\r
+       // Need to reset group info, else it will keep wrong info\r
+       __pGroupInfo->RemoveAll(true);\r
+       __pDataList->RemoveAll(true);\r
+       delete __pDraftMessage;\r
+       __pDraftMessage = null;\r
+       result r = E_SUCCESS;\r
+       msg_error_t err = MSG_SUCCESS;\r
+       msg_struct_list_s* pMsgDataList = new (std::nothrow) msg_struct_list_s();\r
+       pMsgDataList->nCount = 0;\r
+       pMsgDataList->msg_struct_info = NULL;\r
+       msg_thread_id_t convThreadID = (msg_thread_id_t) threadId;\r
+       err = msg_get_conversation_view_list(__pMsgHandle, convThreadID, pMsgDataList);\r
+       //err = msg_get_message_list(__pMsgHandle, MSG_ALLBOX_ID, convThreadID, 0, MSG_STORAGE_PHONE, pMsgDataList);\r
+       if (err == MSG_SUCCESS)\r
+       {\r
+               ConversationData* pConvData = null;\r
+               for (int index = 0; index < pMsgDataList->nCount; index++)\r
+               {\r
+                       int folderId(MSG_FOLDER_TYPE_DRAFT);\r
+                       msg_get_int_value(pMsgDataList->msg_struct_info[index], MSG_CONV_MSG_FOLDER_ID_INT, &folderId);\r
+                       if (folderId == MSG_DRAFT_ID)\r
+                       {\r
+                               err = msg_get_int_value(pMsgDataList->msg_struct_info[index],\r
+                                                                               MSG_CONV_MSG_ID_INT, &__draftMessageId);\r
+                               continue;\r
+                       }\r
+                       pConvData = new (std::nothrow) ConversationData(IDS_BLANK_SPACE);\r
+                       r = pConvData->Construct(pMsgDataList->msg_struct_info[index]);\r
+                       if (r == E_SUCCESS)\r
+                       {\r
+                               r = __pDataList->Add(pConvData);\r
+                               if (r != E_SUCCESS)\r
+                               {\r
+                                       delete pConvData;\r
+                               }\r
+                       }\r
+                       else\r
+                       {\r
+                               delete pConvData;\r
+                       }\r
+               }\r
+               PrepareGroupInfo();\r
+       }\r
+       AppLogDebug(" msg_get_conversation_view_list err = %d", (int) err);\r
+       msg_release_list_struct(pMsgDataList);\r
+       delete pMsgDataList;\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+result\r
+ConversationPresentationModel::AddConversationEventListener(const IConversationEventListener& convLitener,\r
+                                                                                                                       const int threadId)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       ConversationEvent* pConvEvent = new (std::nothrow) ConversationEvent(&convLitener, threadId);\r
+       result res = __pConversationListener->Add(pConvEvent);  // Transfer ownership.\r
+       if (res != E_SUCCESS)\r
+       {\r
+               delete pConvEvent;\r
+               pConvEvent = null;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return res;\r
+}\r
+\r
+result\r
+ConversationPresentationModel::RemoveConversationEventListener(const IConversationEventListener& convLitener)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       if (__pConversationListener)\r
+       {\r
+               IEnumerator* pEventenum = __pConversationListener->GetEnumeratorN();\r
+               if (pEventenum)\r
+               {\r
+                       ConversationEvent* pConvEvent = null;\r
+                       while (pEventenum->MoveNext() == E_SUCCESS)\r
+                       {\r
+                               pConvEvent = static_cast<ConversationEvent*>(pEventenum->GetCurrent());\r
+\r
+                               if (pConvEvent->IsSame(&convLitener))\r
+                               {\r
+                                       // Took ownership, delete element object.\r
+                                       r = __pConversationListener->Remove(*pConvEvent, true);\r
+                                       break;\r
+                               }\r
+                       }\r
+               }\r
+               // Free memory\r
+               if (pEventenum)\r
+               {\r
+                       delete pEventenum;\r
+                       pEventenum = null;\r
+               }\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+void\r
+ConversationPresentationModel::MessageStorageChangeCallback(msg_handle_t pHandle,\r
+                                                                                                                       msg_storage_change_type_t storageChangeType, msg_id_list_s* pMsgIdList, void* pUserData)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (!pUserData || !pMsgIdList)\r
+       {\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return;\r
+       }\r
+       static_cast<ConversationPresentationModel*>(pUserData)->OnMessageStorageChange(storageChangeType, pMsgIdList);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+ConversationPresentationModel::OnMessageStorageChange(msg_storage_change_type_t storageChangeType, msg_id_list_s* pMsgIdList)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pConversationListener->GetCount() > 0)\r
+       {\r
+               NotifyConversationChange(storageChangeType);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+ConversationPresentationModel::NotifyConversationChange(msg_storage_change_type_t storageChangeType)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       IEnumerator* pEventenum = __pConversationListener->GetEnumeratorN();\r
+       if (pEventenum)\r
+       {\r
+               ConversationEvent* pConvEvent = null;\r
+               while (pEventenum->MoveNext() == E_SUCCESS)\r
+               {\r
+                       pConvEvent = static_cast<ConversationEvent*>(pEventenum->GetCurrent());\r
+                       IConversationEventListener* pConvObserver = static_cast<IConversationEventListener*>(\r
+                               const_cast<IEventListener*>(pConvEvent->GetEvent()));\r
+                       if (pConvObserver)\r
+                       {\r
+                               pConvObserver->OnConversationListChange((MsgStorageChangeType)storageChangeType);\r
+                       }\r
+               }\r
+       }\r
+       // Free memory\r
+       if (pEventenum)\r
+       {\r
+               delete pEventenum;\r
+               pEventenum = null;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+const MessageData*\r
+ConversationPresentationModel::GetDraftMessage(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pDraftMessage == null && __draftMessageId >= 0)\r
+       {\r
+               __pDraftMessage = GetMessageDataByIdN(__draftMessageId);\r
+       }\r
+#ifdef _DISABLE_MMS_FEATURE_\r
+       if (__pDraftMessage && __pDraftMessage->IsMms())\r
+       {\r
+               delete __pDraftMessage;\r
+               __pDraftMessage = null;\r
+       }\r
+#endif\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __pDraftMessage;\r
+}\r
diff --git a/src/MsgCustomTableViewItem.cpp b/src/MsgCustomTableViewItem.cpp
new file mode 100644 (file)
index 0000000..e5b739e
--- /dev/null
@@ -0,0 +1,149 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include "MsgCustomTableViewItem.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Ui::Controls;\r
+\r
+static const int W_GROUP_LIST_LEFT_MARGIN = 7;\r
+\r
+\r
+CustomTableViewItem::CustomTableViewItem(void)\r
+{\r
+}\r
+\r
+CustomTableViewItem::~CustomTableViewItem(void)\r
+{\r
+}\r
+\r
+result\r
+CustomTableViewItem::Construct(const Tizen::Graphics::Dimension& itemSize, TableViewAnnexStyle style)\r
+{\r
+       result r = TableViewItem::Construct(itemSize, style);\r
+\r
+       // Set default background.\r
+       if (r == E_SUCCESS)\r
+       {\r
+               Canvas* pViewCanvas = new (std::nothrow) Canvas();\r
+               if (pViewCanvas)\r
+               {\r
+                       pViewCanvas->Construct(Rectangle(0, 0, GetWidth(), GetHeight()));\r
+                       pViewCanvas->FillRectangle(COLOR_GROUP_BORDER, Rectangle(0, 0, W_GROUP_LIST_LEFT_MARGIN, GetHeight()));\r
+                       Bitmap* pBackgroundBg = new (std::nothrow) Bitmap();\r
+                       pBackgroundBg->Construct(*pViewCanvas, pViewCanvas->GetBounds());\r
+                       SetBackgroundBitmap(pBackgroundBg);\r
+                       SetBackgroundBitmap(pBackgroundBg, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);\r
+                       delete pBackgroundBg;\r
+                       delete pViewCanvas;\r
+               }\r
+       }\r
+       return r;\r
+}\r
+\r
+void\r
+CustomTableViewItem::EnableExpandViewModeStyle(const Bitmap* pNormalBitmap, const Bitmap* pPressBitmap)\r
+{\r
+       AppLogDebug("ENTER");\r
+       Canvas* pViewCanvas = new (std::nothrow) Canvas();\r
+       if (pViewCanvas)\r
+       {\r
+               pViewCanvas->Construct(Rectangle(0, 0, GetWidth(), GetHeight()));\r
+               pViewCanvas->FillRectangle(COLOR_GROUP_BORDER, Rectangle(0, 0, W_GROUP_LIST_LEFT_MARGIN, GetHeight()));\r
+               pViewCanvas->DrawBitmap(Rectangle(GetWidth() - W_ICON_64PX - MARGIN_16PX, (H_LIST_ITEM_112PX - W_ICON_64PX) / 2,\r
+                                                                                 W_ICON_64PX, H_ICON_64PX), *pNormalBitmap);\r
+               Bitmap* pBackgroundBg = new (std::nothrow) Bitmap();\r
+               pBackgroundBg->Construct(*pViewCanvas, pViewCanvas->GetBounds());\r
+               SetBackgroundBitmap(pBackgroundBg);\r
+               delete pBackgroundBg;\r
+               delete pViewCanvas;\r
+       }\r
+       // Set press background image.\r
+       pViewCanvas = new (std::nothrow) Canvas();\r
+       if (pViewCanvas)\r
+       {\r
+               pViewCanvas->Construct(Rectangle(0, 0, GetWidth(), GetHeight()));\r
+               pViewCanvas->FillRectangle(COLOR_GROUP_BORDER, Rectangle(0, 0, W_GROUP_LIST_LEFT_MARGIN, GetHeight()));\r
+               pViewCanvas->DrawBitmap(Rectangle(GetWidth() - W_ICON_64PX - MARGIN_16PX, (H_LIST_ITEM_112PX - W_ICON_64PX) / 2,\r
+                                                                                 W_ICON_64PX, H_ICON_64PX), *pPressBitmap);\r
+               Bitmap* pBackgroundBg = new (std::nothrow) Bitmap();\r
+               pBackgroundBg->Construct(*pViewCanvas, pViewCanvas->GetBounds());\r
+               SetBackgroundBitmap(pBackgroundBg, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);\r
+               delete pBackgroundBg;\r
+               delete pViewCanvas;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+CustomTableViewItem::EnableDetailsViewModeStyle(const Tizen::Graphics::Bitmap* pNormalBitmap, const Tizen::Graphics::Bitmap* pPressBitmap)\r
+{\r
+       AppLogDebug("ENTER");\r
+       // Set normal background image.\r
+       Canvas* pViewCanvas = new (std::nothrow) Canvas();\r
+       if (pViewCanvas)\r
+       {\r
+               pViewCanvas->Construct(Rectangle(0, 0, GetWidth(), GetHeight()));\r
+               pViewCanvas->FillRectangle(COLOR_GROUP_BORDER, Rectangle(0, 0, W_GROUP_LIST_LEFT_MARGIN, GetHeight()));\r
+               pViewCanvas->DrawBitmap(Rectangle(MARGIN_16PX, (H_LIST_ITEM_112PX - W_ICON_60PX) / 2, W_ICON_60PX, H_ICON_60PX), *pNormalBitmap);\r
+               Bitmap* pBackgroundBg = new (std::nothrow) Bitmap();\r
+               pBackgroundBg->Construct(*pViewCanvas, pViewCanvas->GetBounds());\r
+               SetBackgroundBitmap(pBackgroundBg);\r
+               delete pBackgroundBg;\r
+               delete pViewCanvas;\r
+       }\r
+       // Set press background image.\r
+       pViewCanvas = new (std::nothrow) Canvas();\r
+       if (pViewCanvas)\r
+       {\r
+               pViewCanvas->Construct(Rectangle(0, 0, GetWidth(), GetHeight()));\r
+               pViewCanvas->FillRectangle(COLOR_GROUP_BORDER, Rectangle(0, 0, W_GROUP_LIST_LEFT_MARGIN, GetHeight()));\r
+               pViewCanvas->DrawBitmap(Rectangle(MARGIN_16PX, (H_LIST_ITEM_112PX - W_ICON_60PX) / 2, W_ICON_60PX, H_ICON_60PX), *pPressBitmap);\r
+               Bitmap* pBackgroundBg = new (std::nothrow) Bitmap();\r
+               pBackgroundBg->Construct(*pViewCanvas, pViewCanvas->GetBounds());\r
+               SetBackgroundBitmap(pBackgroundBg, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);\r
+               delete pBackgroundBg;\r
+               delete pViewCanvas;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+CustomTableViewItem::OnDraw(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = TableViewItem::OnDraw();\r
+       //TODO: Override draw hiding section mode background.\r
+//     Canvas* pCanvas = GetCanvasN(Rectangle(0, 0, W_GROUP_LIST_LEFT_MARGIN, GetHeight()));\r
+//     pCanvas->FillRectangle(COLOR_GROUP_BORDER, Rectangle(0, 0, W_GROUP_LIST_LEFT_MARGIN, GetHeight()));\r
+//     delete  pCanvas;\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+\r
+// From base class\r
+result\r
+CustomTableViewGroupItem::OnDraw(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       result r = TableViewGroupItem::OnDraw();\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+\r
+}\r
diff --git a/src/MsgDeleteHandlerThread.cpp b/src/MsgDeleteHandlerThread.cpp
new file mode 100644 (file)
index 0000000..bdf24bc
--- /dev/null
@@ -0,0 +1,133 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <FBaseColArrayListT.h>
+
+#include "MsgDeleteHandlerThread.h"
+#include "MsgIDeleteEventListener.h"
+#include "MsgThreadPresentationModel.h"
+#include "MsgTypes.h"
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Ui;
+
+
+DeleteHandlerThread::DeleteHandlerThread(IListT< int >* pIdList, Control& listener, int requestType)
+       : __pDeleteIdList(pIdList)
+       , __deleteId(-1)
+       , __requestType(requestType)
+       , __parentCntl(&listener)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+DeleteHandlerThread::DeleteHandlerThread(int deleteId, Control& listener, int requestType)
+       : __pDeleteIdList(null)
+       , __deleteId(deleteId)
+       , __requestType(requestType)
+       , __parentCntl(&listener)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+DeleteHandlerThread::~DeleteHandlerThread(void)
+{
+       AppLogDebug("ENTER");
+
+       __parentCntl = null;
+       delete __pDeleteIdList;
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+result
+DeleteHandlerThread::Construct(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = Thread::Construct();
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+Object*
+DeleteHandlerThread::Run(void)
+{
+       AppLogDebug("ENTER");
+
+       ThreadPresentationModel* pThreadManager = ThreadPresentationModel::GetInstance();
+       IList* pArgs = null;
+       int totalCount(1);
+       if (__parentCntl && pThreadManager)
+       {
+               if (__pDeleteIdList)
+               {
+                       totalCount = __pDeleteIdList->GetCount();
+                       pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+                       if(pArgs)
+                       {
+                               pArgs->Add(new Integer(totalCount));
+                               __parentCntl->SendUserEvent(REQUEST_DELETE_START,pArgs);
+                       }
+
+                       for (int count = 0; count < totalCount; ++count)
+                       {
+                               int deleteId(0);
+                               if (__pDeleteIdList->GetAt(count, deleteId) == E_SUCCESS)
+                               {
+                                       pThreadManager->Delete(deleteId, __requestType);
+                               }
+
+                               pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+                               if(pArgs)
+                               {
+                                       pArgs->Add(new Integer(count + 1));
+                                       pArgs->Add(new Integer(totalCount));
+                                       __parentCntl->SendUserEvent(REQUEST_DELETE_UPDATE,pArgs);
+                               }
+                       }
+               }
+               else
+               {
+                       pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+                       if(pArgs)
+                       {
+                               pArgs->Add(new Integer(totalCount));
+                               __parentCntl->SendUserEvent(REQUEST_DELETE_START,pArgs);
+                       }
+                       pThreadManager->Delete(__deleteId, __requestType);
+                       pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+                       if(pArgs)
+                       {
+                               pArgs->Add(new Integer(totalCount));
+                               pArgs->Add(new Integer(totalCount));
+                               __parentCntl->SendUserEvent(REQUEST_DELETE_UPDATE,pArgs);
+                       }
+               }
+
+               pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+               if(pArgs)
+               {
+                       pArgs->Add(new Integer(E_SUCCESS));
+                       __parentCntl->SendUserEvent(REQUEST_DELETE_COMPLETE,pArgs);
+               }
+
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return null;
+}
diff --git a/src/MsgDurationPopup.cpp b/src/MsgDurationPopup.cpp
new file mode 100644 (file)
index 0000000..6719be3
--- /dev/null
@@ -0,0 +1,132 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include "MsgDurationPopup.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Ui::Controls;\r
+\r
+DurationPopup::DurationPopup(Control& parent)\r
+: __parentCntl(parent)\r
+{\r
+}\r
+\r
+DurationPopup::~DurationPopup(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+DurationPopup::Construct(const String& resourceId)\r
+{\r
+       AppLogDebug("ENTER");\r
+       result r = Popup::Construct(resourceId);\r
+       if (!IsFailed(r))\r
+       {\r
+               Button* pButtonOk = (Button*)GetControl(L"IDC_BUTTON_OK");\r
+               pButtonOk->SetActionId(IDA_OK);\r
+               pButtonOk->AddActionEventListener(*this);\r
+               Button* pButtonCancel = (Button*)GetControl(L"IDC_BUTTON_CANCEL");\r
+               pButtonCancel->SetActionId(IDA_CANCEL);\r
+               pButtonCancel->AddActionEventListener(*this);\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+int\r
+DurationPopup::GetDuration(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       int slideDuration(5);\r
+       EditField* pDurationField = (EditField*)GetControl(L"IDC_EDITFIELD_DURATION");\r
+       if(pDurationField)\r
+       {\r
+               String durationTextValue = pDurationField->GetText();\r
+               Integer::Parse(durationTextValue, slideDuration);\r
+       }\r
+       if(slideDuration<5)\r
+       {\r
+               slideDuration = 5;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return slideDuration;\r
+}\r
+\r
+result\r
+DurationPopup::SetDuration(int duration)\r
+{\r
+       AppLogDebug("ENTER");\r
+       result r = E_SUCCESS;\r
+       EditField* pDurationField = (EditField*)GetControl(L"IDC_EDITFIELD_DURATION");\r
+       if(pDurationField)\r
+       {\r
+               String durationText;\r
+               durationText.Append(duration);\r
+               r |= pDurationField->SetText(durationText);\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+result\r
+DurationPopup::SetInfoText(const String& infoText)\r
+{\r
+       AppLogDebug("ENTER");\r
+       result r = E_SUCCESS;\r
+       Label* pInfoLabel = (Label*)GetControl(L"IDC_DURATION_LABEL");\r
+       if(pInfoLabel)\r
+       {\r
+               pInfoLabel->SetText(infoText);\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+\r
+}\r
+\r
+result\r
+DurationPopup::SetFocusToEditor(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       EditField* pDurationField = (EditField*)GetControl(L"IDC_EDITFIELD_DURATION");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pDurationField->SetFocus();\r
+}\r
+\r
+\r
+// From IActionEventListener\r
+void\r
+DurationPopup::OnActionPerformed(const Control& source, int actionId)\r
+{\r
+       AppLogDebug("ENTER");\r
+       switch (actionId)\r
+       {\r
+       case IDA_OK:\r
+       case IDA_CANCEL:\r
+       {\r
+               SetShowState(false);\r
+               RequestId requestId = REQUEST_DESTROY_DURATION_POPUP;\r
+               __parentCntl.SendUserEvent(requestId, null);\r
+       }\r
+       break;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
diff --git a/src/MsgEvent.cpp b/src/MsgEvent.cpp
new file mode 100644 (file)
index 0000000..43e21c1
--- /dev/null
@@ -0,0 +1,55 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include "MsgEvent.h"\r
+\r
+using namespace Tizen::Base::Runtime;\r
+\r
+ThreadEvent::ThreadEvent(const IEventListener* pEvent)\r
+       : BaseEvent(pEvent)\r
+{\r
+}\r
+\r
+ConversationEvent::ConversationEvent(const IEventListener* pEvent, const int threadId)\r
+       : BaseEvent(pEvent)\r
+       , __threadId(threadId)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT");\r
+}\r
+\r
+const int\r
+ConversationEvent::GetThreadId(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT");\r
+       return this->__threadId;\r
+}\r
+\r
+SmsEvent::SmsEvent(const IEventListener* pEvent)\r
+       : BaseEvent(pEvent)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT");\r
+}\r
+\r
+\r
+MmsEvent::MmsEvent(const IEventListener* pEvent)\r
+       : BaseEvent(pEvent)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT");\r
+}\r
diff --git a/src/MsgFacadeManager.cpp b/src/MsgFacadeManager.cpp
new file mode 100644 (file)
index 0000000..45ad802
--- /dev/null
@@ -0,0 +1,67 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <FBaseErrorDefine.h>\r
+\r
+#include "MsgBitmapUtility.h"\r
+#include "MsgConversationPresentationModel.h"\r
+#include "MsgFacadeManager.h"\r
+#include "MsgSmsManager.h"\r
+#include "MsgThreadPresentationModel.h"\r
+#include "MsgSettingPresentationModel.h"\r
+#include "MsgMessagePresentationModel.h"\r
+\r
+// Constructor\r
+FacadeManager::FacadeManager(void)\r
+{\r
+       // Empty implementation\r
+}\r
+\r
+// Destructor\r
+FacadeManager::~FacadeManager(void)\r
+{\r
+       // Empty implementation\r
+}\r
+\r
+// Initialise all application manager\r
+result\r
+FacadeManager::Initialize(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();\r
+       if (pThreadPrModel == null)\r
+       {\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               r = E_FAILURE;\r
+               return r;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+// Uninitialize all manager\r
+result\r
+FacadeManager::Uninitialize(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
diff --git a/src/MsgFontSettings.cpp b/src/MsgFontSettings.cpp
new file mode 100644 (file)
index 0000000..d11efa3
--- /dev/null
@@ -0,0 +1,242 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+\r
+#include <FApp.h>\r
+#include <FBaseColHashMap.h>\r
+#include <FBaseDataType.h>\r
+#include <FGrpFont.h>\r
+\r
+#include "MsgFontsettings.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Graphics;\r
+\r
+FontSettings::FontSettings(void)\r
+       : __FontList(null)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+FontSettings::~FontSettings(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__FontList)\r
+       {\r
+               __FontList->RemoveAll(true);\r
+               delete __FontList;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+FontSettings::Construct(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       result r = E_SUCCESS;\r
+\r
+       __FontList = new (std::nothrow) HashMap();\r
+       r = __FontList->Construct();\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+SettingFontType\r
+FontSettings::GetMessageFontType(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       AppRegistry* pAppRegistry = Application::GetInstance()->GetAppRegistry();\r
+       SettingFontType settingFontType = SETTING_NORMAL_FONT;\r
+       int fontType(settingFontType);\r
+       result r = pAppRegistry->Get(IDS_SETTING_FONT_TYPE, fontType);\r
+       if (r == E_KEY_NOT_FOUND)\r
+       {\r
+               pAppRegistry->Add(IDS_SETTING_FONT_TYPE, fontType);\r
+               r = pAppRegistry->Save();\r
+       }\r
+       else\r
+       {\r
+               settingFontType = (SettingFontType) fontType;\r
+       }\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(r));\r
+       return settingFontType;\r
+}\r
+\r
+void\r
+FontSettings::SetMessageFonttype(SettingFontType fontSize)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       AppRegistry* pAppRegistry = Application::GetInstance()->GetAppRegistry();\r
+       result r = pAppRegistry->Set(IDS_SETTING_FONT_TYPE, fontSize);\r
+       if (r == E_KEY_NOT_FOUND)\r
+       {\r
+               r = pAppRegistry->Add(IDS_SETTING_FONT_TYPE, fontSize);\r
+               if (IsFailed(r))\r
+               {\r
+                       AppLogDebug("Unable add font setting in registry");\r
+               }\r
+       }\r
+       r = pAppRegistry->Save();\r
+\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(r));\r
+       return;\r
+}\r
+\r
+int\r
+FontSettings::GetMessageTextSize(SettingFontType settingFont) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       int size = MSG_NORMAL_FONT_SIZE;\r
+       switch (settingFont)\r
+       {\r
+       case SETTING_SYSTEM_FONT:\r
+               size = MSG_SYSTEM_FONT_SIZE;\r
+               break;\r
+\r
+       case SETTING_HUGE_FONT:\r
+               size = MSG_HUGE_FONT_SIZE;\r
+               break;\r
+\r
+       case SETTING_LARGE_FONT:\r
+               size = MSG_LARGE_FONT_SIZE;\r
+               break;\r
+\r
+       case SETTING_NORMAL_FONT:\r
+               size = MSG_NORMAL_FONT_SIZE;\r
+               break;\r
+\r
+       case SETTING_SMALL_FONT:\r
+               size = MSG_SMALL_FONT_SIZE;\r
+               break;\r
+\r
+       case SETTING_TINY_FONT:\r
+               size = MSG_TINY_FONT_SIZE;\r
+               break;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return size;\r
+}\r
+\r
+\r
+Font*\r
+FontSettings::GetMessageFont(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       Font* pFont = null;\r
+       switch (GetMessageFontType())\r
+       {\r
+       case SETTING_SYSTEM_FONT:\r
+               pFont = GetFont(MSG_FONT_ID_SYSTEM);\r
+               break;\r
+\r
+       case SETTING_HUGE_FONT:\r
+               pFont = GetFont(MSG_FONT_ID_HUGE);\r
+               break;\r
+\r
+       case SETTING_LARGE_FONT:\r
+               pFont = GetFont(MSG_FONT_ID_LARGE);\r
+               break;\r
+\r
+       case SETTING_NORMAL_FONT:\r
+               pFont = GetFont(MSG_FONT_ID_NORMAL);\r
+               break;\r
+\r
+       case SETTING_SMALL_FONT:\r
+               pFont = GetFont(MSG_FONT_ID_SMALL);\r
+               break;\r
+\r
+       case SETTING_TINY_FONT:\r
+               pFont = GetFont(MSG_FONT_ID_TINY);\r
+               break;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pFont;\r
+}\r
+\r
+Font*\r
+FontSettings::GetFont(MsgFontIds fontId) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       String* pKey = new (std::nothrow) String();\r
+       pKey->Append(fontId);\r
+       Font* pFont = static_cast<Font*>(__FontList->GetValue(*pKey));\r
+       delete pKey;\r
+       if (pFont == null)\r
+       {\r
+               Font* newFont = new (std::nothrow) Font();\r
+               // Set Size if applicable\r
+               switch (fontId)\r
+               {\r
+               case MSG_FONT_ID_HUGE:\r
+               {\r
+                       newFont->Construct(FONT_STYLE_PLAIN, MSG_HUGE_FONT_SIZE);\r
+                       __FontList->Add((new (std::nothrow) String(fontId)), newFont);\r
+               }\r
+               break;\r
+\r
+               case MSG_FONT_ID_LARGE:\r
+               {\r
+                       newFont->Construct(FONT_STYLE_PLAIN, MSG_LARGE_FONT_SIZE);\r
+                       __FontList->Add((new (std::nothrow) String(fontId)), newFont);\r
+               }\r
+               break;\r
+\r
+               case MSG_FONT_ID_NORMAL:\r
+               {\r
+                       newFont->Construct(FONT_STYLE_PLAIN, MSG_NORMAL_FONT_SIZE);\r
+                       __FontList->Add((new (std::nothrow) String(fontId)), newFont);\r
+               }\r
+               break;\r
+\r
+               case MSG_FONT_ID_SMALL:\r
+               {\r
+                       newFont->Construct(FONT_STYLE_PLAIN, MSG_SMALL_FONT_SIZE);\r
+                       __FontList->Add((new (std::nothrow) String(fontId)), newFont);\r
+               }\r
+               break;\r
+\r
+               case MSG_FONT_ID_TINY:\r
+               {\r
+                       newFont->Construct(FONT_STYLE_PLAIN, MSG_TINY_FONT_SIZE);\r
+                       __FontList->Add((new (std::nothrow) String(fontId)), newFont);\r
+               }\r
+               break;\r
+\r
+               case MSG_FONT_ID_TIME_STAMP:\r
+               {\r
+                       newFont->Construct(FONT_STYLE_BOLD, MSG_TIME_FONT_SIZE);\r
+                       __FontList->Add((new (std::nothrow) String(fontId)), newFont);\r
+               }\r
+               break;\r
+\r
+               case MSG_FONT_ID_SYSTEM:\r
+               default:\r
+               {\r
+                       delete newFont;\r
+                       newFont = null;\r
+               }\r
+               break;\r
+               }\r
+               pFont = newFont;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pFont;\r
+}\r
diff --git a/src/MsgFormFactory.cpp b/src/MsgFormFactory.cpp
new file mode 100644 (file)
index 0000000..8ebac0d
--- /dev/null
@@ -0,0 +1,282 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <FUiScenesSceneManager.h>\r
+\r
+#include "MsgComposerForm.h"\r
+#include "MsgConversationForm.h"\r
+#include "MsgFormFactory.h"\r
+#include "MsgMmsDetailForm.h"\r
+#include "MsgMultimediaSettingsForm.h"\r
+#include "MsgSettingsForm.h"\r
+#include "MsgSmsViewerForm.h"\r
+#include "MsgSpamSettingsForm.h"\r
+#include "MsgThreadListForm.h"\r
+#include "MsgTypes.h"\r
+\r
+\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Ui::Controls;\r
+using namespace Tizen::Ui::Scenes;\r
+\r
+// Default constructor\r
+FormFactory::FormFactory(void) //Empty implementation\r
+{\r
+}\r
+\r
+// Default destructor.\r
+FormFactory::~FormFactory(void)\r
+{\r
+       //empty implementation\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+// Create new form based on demand.\r
+Form*\r
+FormFactory::CreateFormN(const String& formId, const SceneId& sceneId)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       SceneManager* pSceneManager = SceneManager::GetInstance();\r
+       AppAssert(pSceneManager);\r
+\r
+       Form* pNewForm = null;\r
+\r
+       if (formId == IDFRM_THREAD_LIST)\r
+       {\r
+               ThreadListForm* pMsgThreadListForm = new (std::nothrow) ThreadListForm(THREAD_LIST_FORM_VIEW, THREAD_LIST_TYPE_THREAD);\r
+               pMsgThreadListForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pMsgThreadListForm);\r
+               pNewForm = pMsgThreadListForm;\r
+       }\r
+       else if (formId == IDFRM_THREAD_LIST_EDITOR)\r
+       {\r
+               ThreadListForm* pMsgThreadListForm = new (std::nothrow) ThreadListForm(THREAD_LIST_FORM_EDIT, THREAD_LIST_TYPE_THREAD);\r
+               pMsgThreadListForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pMsgThreadListForm);\r
+               pNewForm = pMsgThreadListForm;\r
+       }\r
+       else if (formId == IDFRM_SIM_MESSAGE_LIST)\r
+       {\r
+               ThreadListForm* pMsgThreadListForm = new (std::nothrow) ThreadListForm(THREAD_LIST_FORM_SIMMSG_VIEW, THREAD_LIST_TYPE_SIM);\r
+               pMsgThreadListForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pMsgThreadListForm);\r
+               pNewForm = pMsgThreadListForm;\r
+       }\r
+       else if (formId == IDFRM_SIM_MESSAGE_LIST_EDITOR)\r
+       {\r
+               ThreadListForm* pMsgThreadListForm = new (std::nothrow) ThreadListForm(THREAD_LIST_FORM_SIMMSG_EDIT, THREAD_LIST_TYPE_SIM);\r
+               pMsgThreadListForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pMsgThreadListForm);\r
+               pNewForm = pMsgThreadListForm;\r
+       }\r
+       else if (formId == IDFRM_CB_MESSAGE_LIST)\r
+       {\r
+               ThreadListForm* pMsgThreadListForm = new (std::nothrow) ThreadListForm(THREAD_LIST_FORM_CBMSG_VIEW, THREAD_LIST_TYPE_CBMSG);\r
+               pMsgThreadListForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pMsgThreadListForm);\r
+               pNewForm = pMsgThreadListForm;\r
+       }\r
+       else if (formId == IDFRM_CB_MESSAGE_LIST_EDITOR)\r
+       {\r
+               ThreadListForm* pMsgThreadListForm = new (std::nothrow) ThreadListForm(THREAD_LIST_FORM_CBMSG_EDIT, THREAD_LIST_TYPE_CBMSG);\r
+               pMsgThreadListForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pMsgThreadListForm);\r
+               pNewForm = pMsgThreadListForm;\r
+       }\r
+       else if (formId == IDFRM_SPAM_MESSAGE_LIST)\r
+       {\r
+               ThreadListForm* pMsgThreadListForm = new (std::nothrow) ThreadListForm(THREAD_LIST_FORM_SPAMMSG_VIEW, THREAD_LIST_TYPE_SPAM);\r
+               pMsgThreadListForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pMsgThreadListForm);\r
+               pNewForm = pMsgThreadListForm;\r
+       }\r
+       else if (formId == IDFRM_SPAM_MESSAGE_LIST_EDITOR)\r
+       {\r
+               ThreadListForm* pMsgThreadListForm = new (std::nothrow) ThreadListForm(THREAD_LIST_FORM_SPAMMSG_EDIT, THREAD_LIST_TYPE_SPAM);\r
+               pMsgThreadListForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pMsgThreadListForm);\r
+               pNewForm = pMsgThreadListForm;\r
+       }\r
+       else if (formId == IDFRM_DRAFT_MESSAGE_LIST)\r
+       {\r
+               ThreadListForm* pMsgThreadListForm = new (std::nothrow) ThreadListForm(THREAD_LIST_FORM_DRAFTMSG_VIEW, THREAD_LIST_TYPE_DRAFT);\r
+               pMsgThreadListForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pMsgThreadListForm);\r
+               pNewForm = pMsgThreadListForm;\r
+       }\r
+       else if (formId == IDFRM_DRAFT_MESSAGE_LIST_EDITOR)\r
+       {\r
+               ThreadListForm* pMsgThreadListForm = new (std::nothrow) ThreadListForm(THREAD_LIST_FORM_DRAFTMSG_EDIT, THREAD_LIST_TYPE_DRAFT);\r
+               pMsgThreadListForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pMsgThreadListForm);\r
+               pNewForm = pMsgThreadListForm;\r
+       }\r
+       else if (formId == IDFRM_CONVERSATION_LIST)\r
+       {\r
+               ConversationForm* pMsgConvForm = new (std::nothrow) ConversationForm(CONVERSATION_LIST_FORM_VIEW);\r
+               pMsgConvForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pMsgConvForm);\r
+               pNewForm = pMsgConvForm;\r
+\r
+       }\r
+       else if (formId == IDFRM_CONVERSATION_LIST_EDITOR)\r
+       {\r
+               ConversationForm* pMsgConvForm = new (std::nothrow) ConversationForm(CONVERSATION_LIST_FORM_EDIT);\r
+               pMsgConvForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pMsgConvForm);\r
+               pNewForm = pMsgConvForm;\r
+\r
+       }\r
+       else if (formId == IDFRM_COMPOSER)\r
+       {\r
+               ComposerForm* pMsgComposeForm = new (std::nothrow) ComposerForm();\r
+               pMsgComposeForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pMsgComposeForm);\r
+               pNewForm = pMsgComposeForm;\r
+\r
+       }\r
+       else if (formId == IDFRM_SMS_VIEWER)\r
+       {\r
+               SmsViewerForm* pSmsViewerForm = new (std::nothrow) SmsViewerForm();\r
+               pSmsViewerForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pSmsViewerForm);\r
+               pNewForm = pSmsViewerForm;\r
+       }\r
+       else if (formId == IDFRM_MMS_DETAIL)\r
+       {\r
+               MmsDetailForm* pMmsDetailForm = new (std::nothrow) MmsDetailForm();\r
+               pMmsDetailForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pMmsDetailForm);\r
+               pNewForm = pMmsDetailForm;\r
+       }\r
+       else if (formId == IDFRM_SETTINGS)\r
+       {\r
+               SettingsForm* pSettingsForm;\r
+               pSettingsForm = new (std::nothrow) SettingsForm(MESSAGE_SETTING_FORM_MESSAGE_MAIN);\r
+               pSettingsForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pSettingsForm);\r
+               pNewForm = pSettingsForm;\r
+       }\r
+       else if (formId == IDFRM_SETTINGS_TEXT_MESSAGE)\r
+       {\r
+               SettingsForm* pSettingsForm;\r
+               pSettingsForm = new (std::nothrow) SettingsForm(MESSAGE_SETTING_FORM_TEXT_MESSAGES);\r
+               pSettingsForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pSettingsForm);\r
+               pNewForm = pSettingsForm;\r
+       }\r
+       else if (formId == IDFRM_SETTINGS_TEXT_MESSAGE_SERVICE_CENTERS)\r
+       {\r
+               SettingsForm* pSettingsForm;\r
+               pSettingsForm = new (std::nothrow) SettingsForm(MESSAGE_SETTING_FORM_SERVICE_CENTER);\r
+               pSettingsForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pSettingsForm);\r
+               pNewForm = pSettingsForm;\r
+       }\r
+       else if (formId == IDFRM_SETTINGS_TEXT_MESSAGE_EDIT_SERVICE_CENTER)\r
+       {\r
+               SettingsForm* pSettingsForm;\r
+               pSettingsForm = new (std::nothrow) SettingsForm(MESSAGE_SETTING_FORM_EDIT_SERVICE_CENTER);\r
+               pSettingsForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pSettingsForm);\r
+               pNewForm = pSettingsForm;\r
+       }\r
+       else if (formId == IDFRM_SETTINGS_MULTIMEDIA_MESSAGE)\r
+       {\r
+               MutimediaSettingsForm* pMMediaSettingsForm = new (std::nothrow) MutimediaSettingsForm(MULTIMEDIA_SETTING_MESSAGES_FORM);\r
+               pMMediaSettingsForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pMMediaSettingsForm);\r
+               pNewForm = pMMediaSettingsForm;\r
+       }\r
+       else if (formId == IDFRM_SETTINGS_MULTIMEDIA_RECEIVING_OPTIONS)\r
+       {\r
+               MutimediaSettingsForm* pMMediaSettingsForm = new (std::nothrow) MutimediaSettingsForm(MULTIMEDIA_SETTING_RECEIVE_OPTIONS_FORM);\r
+               pMMediaSettingsForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pMMediaSettingsForm);\r
+               pNewForm = pMMediaSettingsForm;\r
+\r
+       }\r
+       else if (formId == IDFRM_SETTINGS_MULTIMEDIA_READ_REPORT)\r
+       {\r
+               MutimediaSettingsForm* pMMediaSettingsForm = new (std::nothrow) MutimediaSettingsForm(MULTIMEDIA_SETTING_READ_REPORT_FORM);\r
+               pMMediaSettingsForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pMMediaSettingsForm);\r
+               pNewForm = pMMediaSettingsForm;\r
+\r
+       }\r
+       else if (formId == IDFRM_SETTINGS_SPAM_MESSAGE)\r
+       {\r
+               SpamSettingsForm* pSpamSettingsForm = new (std::nothrow) SpamSettingsForm(SPAM_SETTING_FORM_MAIN);\r
+               pSpamSettingsForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pSpamSettingsForm);\r
+               pNewForm = pSpamSettingsForm;\r
+       }\r
+       else if (formId == IDFRM_SETTINGS_SPAM_AUTO_REJECT)\r
+       {\r
+               SpamSettingsForm* pSpamSettingsForm = new (std::nothrow) SpamSettingsForm(SPAM_SETTING_FORM_AUTO_REJECT);\r
+               pSpamSettingsForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pSpamSettingsForm);\r
+               pNewForm = pSpamSettingsForm;\r
+       }\r
+       else if (formId == IDFRM_SETTINGS_SPAM_ADD_REJECT_NUMBER)\r
+       {\r
+               SpamSettingsForm* pSpamSettingsForm = new (std::nothrow) SpamSettingsForm(SPAM_SETTING_FORM_ADD_REJECT_NUMBER);\r
+               pSpamSettingsForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pSpamSettingsForm);\r
+               pNewForm = pSpamSettingsForm;\r
+       }\r
+       else if (formId == IDFRM_SETTINGS_SPAM_DELETE_REJECT_NUMBER)\r
+       {\r
+               SpamSettingsForm* pSpamSettingsForm = new (std::nothrow) SpamSettingsForm(SPAM_SETTING_FORM_DELETE_REJECT_NUMBER);\r
+               pSpamSettingsForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pSpamSettingsForm);\r
+               pNewForm = pSpamSettingsForm;\r
+       }\r
+       else if (formId == IDFRM_SETTINGS_SPAM_BLOCK_WORD)\r
+       {\r
+               SpamSettingsForm* pSpamSettingsForm = new (std::nothrow) SpamSettingsForm(SPAM_SETTING_FORM_BLOCK_WORD);\r
+               pSpamSettingsForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pSpamSettingsForm);\r
+               pNewForm = pSpamSettingsForm;\r
+       }\r
+       else if (formId == IDFRM_SETTINGS_SPAM_ADD_BLOCK_WORD)\r
+       {\r
+               SpamSettingsForm* pSpamSettingsForm = new (std::nothrow) SpamSettingsForm(SPAM_SETTING_FORM_ADD_BLOCK_WORD);\r
+               pSpamSettingsForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pSpamSettingsForm);\r
+               pNewForm = pSpamSettingsForm;\r
+       }\r
+       else if (formId == IDFRM_SETTINGS_SPAM_DELETE_BLOCK_WORD)\r
+       {\r
+               SpamSettingsForm* pSpamSettingsForm = new (std::nothrow) SpamSettingsForm(SPAM_SETTING_FORM_DELETE_BLOCK_WORD);\r
+               pSpamSettingsForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pSpamSettingsForm);\r
+               pNewForm = pSpamSettingsForm;\r
+       }\r
+       else if (formId == IDFRM_SETTINGS_FONT_SIZE)\r
+       {\r
+               SettingsForm* pSettingsForm;\r
+               pSettingsForm = new (std::nothrow) SettingsForm(MESSAGE_SETTING_FORM_FONT_SIZE);\r
+               pSettingsForm->Initialize();\r
+               pSceneManager->AddSceneEventListener(sceneId, *pSettingsForm);\r
+               pNewForm = pSettingsForm;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pNewForm;\r
+}\r
diff --git a/src/MsgLVAttachItem.cpp b/src/MsgLVAttachItem.cpp
new file mode 100644 (file)
index 0000000..acdd5c5
--- /dev/null
@@ -0,0 +1,113 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <FGrpEnrichedText.h>\r
+\r
+#include "MsgLVAttachItem.h"\r
+\r
+const Tizen::Graphics::Color COLOR_BLACK(0, 0, 0);\r
+\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Ui::Controls;\r
+\r
+LVAttachItem::LVAttachItem(void)\r
+       : __pAttachIcon(null)\r
+       , __pEnrichedText(null)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+LVAttachItem::~LVAttachItem(void)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+bool\r
+LVAttachItem::OnDraw(Canvas& canvas, const Rectangle& rect, ListItemDrawingStatus status)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       Canvas* pCanvas = const_cast<Canvas*>(&canvas);\r
+       // Draw Icon\r
+       int xPos(rect.x);\r
+       int yPos;\r
+       if (__pAttachIcon)\r
+       {\r
+               yPos = rect.y + (rect.height - __pAttachIcon->GetHeight()) / 2;\r
+               r |= pCanvas->DrawBitmap(Point(xPos, yPos), *__pAttachIcon);\r
+               xPos += __pAttachIcon->GetWidth();\r
+       }\r
+       if (__pEnrichedText)\r
+       {\r
+               __pEnrichedText->SetSize(__pEnrichedText->GetWidth(),\r
+                                                                __pEnrichedText->GetTotalLineHeight());\r
+               yPos = rect.y + (rect.height - __pEnrichedText->GetHeight()) / 2;\r
+               r |= pCanvas->DrawText(Point(xPos, yPos), *__pEnrichedText);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return (r == E_SUCCESS);\r
+}\r
+\r
+void\r
+LVAttachItem::SetAttachIcon(const Bitmap& selectionImage)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       __pAttachIcon = &selectionImage;\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+LVAttachItem::SetText(const String& strText, const Font* ptextFont)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pEnrichedText == null)\r
+       {\r
+               __pEnrichedText = new (std::nothrow) EnrichedText();\r
+               __pEnrichedText->Construct(Dimension(44, 44));\r
+               __pEnrichedText->SetTextWrapStyle(TEXT_WRAP_NONE);\r
+               __pEnrichedText->SetTextAbbreviationEnabled(true);\r
+               __pEnrichedText->SetElementVerticalAlignment(TEXT_ALIGNMENT_MIDDLE);\r
+       }\r
+       // Add new text element.\r
+       TextElement* pTextElement = new (std::nothrow) TextElement();\r
+       pTextElement->Construct(strText);\r
+       pTextElement->SetTextColor(COLOR_BLACK);\r
+       pTextElement->SetFont(*ptextFont);\r
+       __pEnrichedText->Add(*pTextElement);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+int\r
+LVAttachItem::GetMinimumHeight(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return 0;\r
+}\r
+\r
+int\r
+LVAttachItem::GetMimimumWidth(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return 0;\r
+\r
+}\r
diff --git a/src/MsgLVBackgroundItem.cpp b/src/MsgLVBackgroundItem.cpp
new file mode 100644 (file)
index 0000000..410baaf
--- /dev/null
@@ -0,0 +1,74 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include "MsgLVBackgroundItem.h"\r
+\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Ui::Controls;\r
+\r
+LVBackgroundItem::LVBackgroundItem(void)\r
+       : __pBackgroundBitmap(null)\r
+       , __pSelectedBitmap(null)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+LVBackgroundItem::~LVBackgroundItem(void)\r
+{\r
+       //Empty implementation\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+LVBackgroundItem::SetBackgroundBitmap(const Bitmap& normalBackgroudBg,\r
+                                                                         const Bitmap& selectBackgroudBg)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       __pBackgroundBitmap = &normalBackgroudBg;\r
+       __pSelectedBitmap = &selectBackgroudBg;\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+bool\r
+LVBackgroundItem::OnDraw(Canvas& canvas, const Rectangle& rect,\r
+                                                ListItemDrawingStatus status)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       Canvas* pCanvas = const_cast<Canvas*>(&canvas);\r
+       if (status == LIST_ITEM_DRAWING_STATUS_NORMAL)\r
+       {\r
+               if (__pBackgroundBitmap)\r
+               {\r
+                       r |= pCanvas->DrawNinePatchedBitmap(rect, *__pBackgroundBitmap);\r
+               }\r
+       }\r
+       else if (status == LIST_ITEM_DRAWING_STATUS_PRESSED\r
+                        || status == LIST_ITEM_DRAWING_STATUS_HIGHLIGHTED)\r
+       {\r
+               if (__pSelectedBitmap)\r
+               {\r
+                       r |= pCanvas->DrawNinePatchedBitmap(rect, *__pSelectedBitmap);\r
+               }\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return (r == E_SUCCESS);\r
+}\r
diff --git a/src/MsgLVBubbleListItem.cpp b/src/MsgLVBubbleListItem.cpp
new file mode 100644 (file)
index 0000000..ca48f0b
--- /dev/null
@@ -0,0 +1,416 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <msg_types.h>\r
+\r
+#include <FApp.h>\r
+#include <FBase.h>\r
+#include <FGraphics.h>\r
+\r
+#include "MsgBitmapUtility.h"\r
+#include "MsgConversationData.h"\r
+#include "MsgFontsettings.h"\r
+#include "MsgLVAttachItem.h"\r
+#include "MsgLVBackgroundItem.h"\r
+#include "MsgLVButtonItem.h"\r
+#include "MsgLVBubbleListItem.h"\r
+#include "MsgLVMultiLineTextItem.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Runtime;\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Ui::Controls;\r
+\r
+LVBubbleListItem::LVBubbleListItem(ConversationData& msgEntry, GroupedListView& listView, int groupIndex, int index, int width, FontSettings& fontSettings, bool editMode)\r
+       : __convData(msgEntry)\r
+       , __listView(listView)\r
+       , __groupIndex(groupIndex)\r
+       , __index(index)\r
+       , __Width(width)\r
+       , __editMode(editMode)\r
+       , __fontSettings(fontSettings)\r
+       , __pBackgroudItem(null)\r
+       , __pMsgContent(null)\r
+       , __pMsgDate(null)\r
+       , __pProgressIcon(null)\r
+       , __pAnimationTimer(null)\r
+       , __pAttachmentItem(null)\r
+       , __pMediaThumbnail(null)\r
+       , __pDetailButton(null)\r
+       , __pFailIndicator(null)\r
+{\r
+       AppLogDebug("ENTER");\r
+       //intialize default bubble margin\r
+       if (msgEntry.IsSent())\r
+       {\r
+               __leftMargin = (int) MARGIN_20PX;\r
+               __rightMargin = (int) MARGIN_46PX;\r
+               __topMargin = (int) MARGIN_14PX;\r
+               __bottomMargin = (int) MARGIN_22PX;\r
+\r
+       }\r
+       else\r
+       {\r
+               __leftMargin = (int) MARGIN_46PX;\r
+               __rightMargin = (int) MARGIN_28PX;\r
+               __topMargin = (int) MARGIN_14PX;\r
+               __bottomMargin = (int) MARGIN_22PX;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+LVBubbleListItem::~LVBubbleListItem(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pMsgContent)\r
+       {\r
+               delete __pMsgContent;\r
+       }\r
+       if (__pMsgDate)\r
+       {\r
+               delete __pMsgDate;\r
+       }\r
+       if (__pFailIndicator)\r
+       {\r
+               delete __pFailIndicator;\r
+       }\r
+       if (__pAttachmentItem)\r
+       {\r
+               delete __pAttachmentItem;\r
+       }\r
+       if (__pDetailButton)\r
+       {\r
+               delete __pDetailButton;\r
+       }\r
+       if (__pBackgroudItem)\r
+       {\r
+               delete __pBackgroudItem;\r
+       }\r
+       if (__pAnimationTimer)\r
+       {\r
+               __pAnimationTimer->Cancel();\r
+               delete __pAnimationTimer;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+LVBubbleListItem::CreateTimeStampElement(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pMsgDate == null)\r
+       {\r
+               __pMsgDate = new (std::nothrow) LVMultiLineTextItem();\r
+               Bitmap* pTimeStampBg = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_BUBBLE_DATE_BG);\r
+               __pMsgDate->SetBackgroundImage(*pTimeStampBg);\r
+               __pMsgDate->SetSelectionImage(*pTimeStampBg);\r
+       }\r
+       Font* pTimeStampFont = __fontSettings.GetFont(MSG_FONT_ID_TIME_STAMP);\r
+       if (__convData.IsSent())\r
+       {\r
+               __pMsgDate->AddText(__convData.GetTimeStamp(),\r
+                                                       COLOR_BUBBLE_SENT_TIME_STAMP, COLOR_BUBBLE_SENT_TIME_STAMP,\r
+                                                       pTimeStampFont);\r
+       }\r
+       else\r
+       {\r
+               __pMsgDate->AddText(__convData.GetTimeStamp(),\r
+                                                       COLOR_BUBBLE_RECEIVE_TIME_STAMP, COLOR_BUBBLE_RECEIVE_TIME_STAMP,\r
+                                                       pTimeStampFont);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+LVBubbleListItem::CreateContentElement(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       // Create contet background\r
+       if (__pBackgroudItem == null)\r
+       {\r
+               __pBackgroudItem = new (std::nothrow) LVBackgroundItem();\r
+       }\r
+       if (__convData.IsSent())\r
+       {\r
+               Bitmap* pSentBgBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_BUBBLE_SENT_BG, Dimension(68, MIN_BUBBLE_HEIGHT));\r
+               __pBackgroudItem->SetBackgroundBitmap(*pSentBgBitmap, *pSentBgBitmap);\r
+       }\r
+       else\r
+       {\r
+               Bitmap* pRecvBgBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_BUBBLE_RECEIVE_BG, Dimension(76, MIN_BUBBLE_HEIGHT));\r
+               __pBackgroudItem->SetBackgroundBitmap(*pRecvBgBitmap, *pRecvBgBitmap);\r
+       }\r
+       // Create content\r
+       String bodyText(__convData.GetMessageText());\r
+       String subject(__convData.GetSubject());\r
+       if ((bodyText.GetLength() > 0 || subject.GetLength() > 0) && __pMsgContent == null)\r
+       {\r
+               __pMsgContent = new (std::nothrow) LVMultiLineTextItem();\r
+               __pMsgContent->SetTextMargin(__leftMargin, __rightMargin, 0, 0);\r
+               __pMsgContent->SetMinimumHeight(MIN_BUBBLE_HEIGHT);\r
+       }\r
+       // If subject exist Add it.\r
+       if (subject.GetLength() > 0)\r
+       {\r
+               if (bodyText.GetLength() > 0)\r
+               {\r
+                       bodyText.Insert("\n", 0);\r
+               }\r
+               __pMsgContent->AddText(subject, COLOR_SEARCH_TEXT, COLOR_SEARCH_TEXT,\r
+                                                          __fontSettings.GetMessageFont());\r
+       }\r
+       // Set Body Text\r
+       if (bodyText.GetLength() > 0)\r
+       {\r
+               __pMsgContent->AddText(bodyText, COLOR_BUBBLE_TEXT_NORMAL,\r
+                                                          COLOR_BUBBLE_TEXT_NORMAL, __fontSettings.GetMessageFont());\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+\r
+}\r
+\r
+\r
+void\r
+LVBubbleListItem::CreateBubbleLayout(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int leftX(0), leftY(MARGIN_12PX);\r
+       // Check mode\r
+       int checkboxWidth(0);\r
+       ListAnnexStyle listStyle = LIST_ANNEX_STYLE_NORMAL;\r
+       if (__editMode)\r
+       {\r
+               // add check box element here for edit mode.\r
+               checkboxWidth = W_CHECKBOX;\r
+               listStyle = LIST_ANNEX_STYLE_MARK;\r
+       }\r
+       //Reserver space for check box, traditional way.\r
+       int itemWidth = __Width - checkboxWidth;\r
+       // For faild item date field won't be there.\r
+       int statusWidth(0), statusHeight(0);\r
+       if (__convData.IsSending())\r
+       {\r
+               __pProgressIcon = BitmapUtility::GetInstance()->GetIcon((MessageIconType) __convData.GetAnimationIconIndex(), Dimension(W_ICON_32PX, H_ICON_32PX));\r
+               if (__pProgressIcon)\r
+               {\r
+                       statusWidth = __pProgressIcon->GetWidth() + MARGIN_16PX + MARGIN_10PX;\r
+                       statusHeight = __pProgressIcon->GetHeight();\r
+               }\r
+       }\r
+       else if (__convData.IsSentFail())\r
+       {\r
+               __pFailIndicator = new (std::nothrow) LVButtonItem();\r
+               if (__pFailIndicator)\r
+               {\r
+                       Bitmap* pNormalBgBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_WARNING_CIRCLE_BUTTON_BG);\r
+                       Bitmap* pPressBgBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_WARNING_CIRCLE_BUTTON_BG_PRESS);\r
+                       __pFailIndicator->SetBackgroundImage(*pNormalBgBitmap, *pPressBgBitmap);\r
+                       Bitmap* pIconBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_WARNING, Dimension(W_ICON_64PX, H_ICON_64PX));\r
+                       __pFailIndicator->SetIcon(*pIconBitmap);\r
+                       statusWidth = H_ICON_64PX + MARGIN_16PX + MARGIN_10PX;\r
+                       statusHeight = H_ICON_64PX;\r
+               }\r
+       }\r
+       else\r
+       {\r
+               CreateTimeStampElement();\r
+               __pMsgDate->CreateTextLayout(__Width);\r
+               statusWidth = __pMsgDate->GetMaxWidth() + MARGIN_16PX + MARGIN_10PX;\r
+               statusHeight = __pMsgDate->GetMinHeight();\r
+       }\r
+       //Create text layout.\r
+       int bubbleWidth(0);\r
+       int bubbleHeight(__topMargin + __bottomMargin);\r
+       CreateContentElement();\r
+       if (__pMsgContent)\r
+       {\r
+               __pMsgContent->CreateTextLayout(itemWidth - statusWidth);\r
+               bubbleHeight += __pMsgContent->GetMinHeight();\r
+               bubbleWidth += __pMsgContent->GetMaxWidth();\r
+       }\r
+       // MMS realted bubble elment height need to be include\r
+       if (__convData.IsMms())\r
+       {\r
+               if (__convData.GetAttachmentCount() > 0)\r
+               {\r
+                       // Create attachment layout.\r
+                       __pAttachmentItem = new (std::nothrow) LVAttachItem();\r
+                       if (__pAttachmentItem)\r
+                       {\r
+                               String attachTitle;\r
+                               attachTitle.Append(__convData.GetAttachmentCount());\r
+                               __pAttachmentItem->SetText(attachTitle, __fontSettings.GetFont(MSG_FONT_ID_TINY));\r
+                               Bitmap* pIconBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_ATTACHEMENT);\r
+                               __pAttachmentItem->SetAttachIcon(*pIconBitmap);\r
+                               bubbleHeight += H_ICON_64PX;\r
+                               if (bubbleWidth < (W_ICON_64PX * 3 + __leftMargin + __rightMargin))\r
+                               {\r
+                                       bubbleWidth = (W_ICON_64PX * 3 + __leftMargin + __rightMargin);\r
+                               }\r
+                       }\r
+               }\r
+               bubbleHeight += MARGIN_14PX;\r
+               // Set MMS thumbnail bitmap.\r
+               __pMediaThumbnail = __convData.GetThumbnail();\r
+               if (__pMediaThumbnail)\r
+               {\r
+                       if (bubbleWidth < (W_BUBBLE_THUMBNAIL_310PX + __leftMargin + __rightMargin))\r
+                       {\r
+                               bubbleWidth = W_BUBBLE_THUMBNAIL_310PX + __leftMargin + __rightMargin;\r
+                       }\r
+                       bubbleHeight += (MARGIN_14PX + H_BUBBLE_THUMBNAIL_204PX);\r
+               }\r
+               // Detail button\r
+               if (!__convData.IsSending())\r
+               {\r
+                       __pDetailButton = new (std::nothrow) LVButtonItem();\r
+                       if (__pDetailButton)\r
+                       {\r
+                               Bitmap* pNormalBgBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_CIRCLE_BUTTON_BG);\r
+                               Bitmap* pPressBgBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_CIRCLE_BUTTON_BG_PRESS);\r
+                               __pDetailButton->SetBackgroundImage(*pNormalBgBitmap, *pPressBgBitmap);\r
+                               Bitmap* pIconBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_ARROW_EXPAND);\r
+                               __pDetailButton->SetIcon(*pIconBitmap);\r
+                               bubbleHeight += H_ICON_64PX;\r
+                               if (bubbleWidth < (W_ICON_64PX * 3 + __leftMargin + __rightMargin))\r
+                               {\r
+                                       bubbleWidth = (W_ICON_64PX * 3 + __leftMargin + __rightMargin);\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+       bubbleHeight += (MARGIN_12PX * 2); // Include margin between two bubble\r
+       Construct(Dimension(__Width, bubbleHeight), listStyle);\r
+       // Disable default list item selection color\r
+       SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_HIGHLIGHTED, GetBackgroundColor(LIST_ITEM_DRAWING_STATUS_NORMAL));\r
+       SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_PRESSED, GetBackgroundColor(LIST_ITEM_DRAWING_STATUS_NORMAL));\r
+       SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_NORMAL, GetBackgroundColor(LIST_ITEM_DRAWING_STATUS_NORMAL));\r
+       if (__convData.IsSent())\r
+       {\r
+               leftX = itemWidth - bubbleWidth;\r
+       }\r
+       AddElement(Rectangle(leftX, leftY, bubbleWidth, bubbleHeight - MARGIN_12PX * 2)\r
+                         , MSG_BUBBLE_ITEM_BG, *__pBackgroudItem);\r
+\r
+       int yPos(__topMargin + MARGIN_12PX);\r
+       if (__pMsgContent)\r
+       {\r
+               AddElement(Rectangle(leftX, yPos, __pMsgContent->GetMaxWidth(), __pMsgContent->GetMinHeight())\r
+                                 , MSG_BUBBLE_ITEM_TEXT, *__pMsgContent);\r
+               // Enable event dispatch\r
+               SetElementSelectionEnabled(MSG_BUBBLE_ITEM_TEXT, true);\r
+               yPos += __pMsgContent->GetMinHeight();\r
+       }\r
+       if (__convData.IsSent())\r
+       {\r
+               if (__pProgressIcon)\r
+               {\r
+                       AddElement(Rectangle(leftX - statusWidth + MARGIN_16PX\r
+                                                               , bubbleHeight - statusHeight - MARGIN_20PX, statusWidth - MARGIN_16PX - MARGIN_10PX, statusHeight)\r
+                                         , MSG_BUBBLE_ITEM_FAIL_STATUS, *__pProgressIcon,\r
+                                          __pProgressIcon);\r
+                       SetElementSelectionEnabled(MSG_BUBBLE_ITEM_FAIL_STATUS, true);\r
+                       __pAnimationTimer = new (std::nothrow) Timer();\r
+                       __pAnimationTimer->Construct(*this);\r
+                       __pAnimationTimer->Start(200);\r
+               }\r
+               else if (__pFailIndicator)\r
+               {\r
+                       SetElementSelectionEnabled(MSG_BUBBLE_ITEM_FAIL_STATUS, true);\r
+                       AddElement(Rectangle(leftX - statusWidth + MARGIN_16PX\r
+                                                               , bubbleHeight - statusHeight - __bottomMargin - MARGIN_12PX, statusWidth - MARGIN_16PX - MARGIN_10PX, statusHeight)\r
+                                         , MSG_BUBBLE_ITEM_FAIL_STATUS, *__pFailIndicator);\r
+                       SetElementSelectionEnabled(MSG_BUBBLE_ITEM_FAIL_STATUS, true);\r
+               }\r
+               else\r
+               {\r
+                       AddElement(Rectangle(leftX - statusWidth, bubbleHeight - statusHeight - __bottomMargin - MARGIN_12PX\r
+                                                               , __pMsgDate->GetMaxWidth(), statusHeight)\r
+                                         , MSG_BUBBLE_ITEM_DATE, *__pMsgDate);\r
+                       SetElementSelectionEnabled(MSG_BUBBLE_ITEM_DATE, false);\r
+               }\r
+       }\r
+       else\r
+       {\r
+               AddElement(Rectangle(leftX + bubbleWidth + MARGIN_16PX,\r
+                                                        bubbleHeight - statusHeight - __bottomMargin, __pMsgDate->GetMaxWidth(), MARGIN_26PX)\r
+                                 , MSG_BUBBLE_ITEM_DATE, *__pMsgDate);\r
+               //      if (__convData.IsUnRead())\r
+               if (0)\r
+               {\r
+                       String strText(IDS_BLANK);\r
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_SK3_UNREAD", strText);\r
+                       AddElement(Rectangle(leftX + bubbleWidth + MARGIN_16PX\r
+                                                               , bubbleHeight - __bottomMargin - MARGIN_4PX - MARGIN_26PX * 2, statusWidth, MARGIN_26PX)\r
+                                         , MSG_BUBBLE_ITEM_UNREAD_STATUS, strText, MSG_TIME_FONT_SIZE,\r
+                                          COLOR_BUBBLE_RECEIVE_TIME_STAMP, COLOR_BUBBLE_RECEIVE_TIME_STAMP,\r
+                                          COLOR_BUBBLE_RECEIVE_TIME_STAMP);\r
+                       SetElementSelectionEnabled(MSG_BUBBLE_ITEM_UNREAD_STATUS, false);\r
+               }\r
+               SetElementSelectionEnabled(MSG_BUBBLE_ITEM_DATE, false);\r
+       }\r
+       // Add Attachement\r
+       if (__pAttachmentItem)\r
+       {\r
+               AddElement(Rectangle(leftX + MARGIN_16PX, yPos,\r
+                                                        W_ICON_64PX * 2, H_ICON_64PX), MSG_BUBBLE_ITEM_ATTACHMENT, *__pAttachmentItem);\r
+               yPos += H_ICON_64PX;\r
+               SetElementSelectionEnabled(MSG_BUBBLE_ITEM_ATTACHMENT, false);\r
+       }\r
+       // Add mms thumnail\r
+       if (__pMediaThumbnail)\r
+       {\r
+               if (!__pAttachmentItem) yPos += MARGIN_14PX;\r
+               AddElement(Rectangle(leftX + MARGIN_16PX,\r
+                                                        yPos, W_BUBBLE_THUMBNAIL_310PX, H_BUBBLE_THUMBNAIL_204PX),\r
+                                  MSG_BUBBLE_ITEM_IMAGE, *__pMediaThumbnail);\r
+               yPos += (H_BUBBLE_THUMBNAIL_204PX + MARGIN_14PX);\r
+               SetElementSelectionEnabled(MSG_BUBBLE_ITEM_IMAGE, false);\r
+       }\r
+       //Add detail button\r
+       if (__pDetailButton)\r
+       {\r
+               AddElement(Rectangle(leftX + bubbleWidth - H_ICON_64PX - __rightMargin, yPos,\r
+                                                        W_ICON_64PX, H_ICON_64PX), MSG_BUBBLE_ITEM_DETAILS, *__pDetailButton);\r
+               SetElementSelectionEnabled(MSG_BUBBLE_ITEM_DETAILS, true);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+LVBubbleListItem::OnTimerExpired(Timer& timer)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__index >= 0 && (&__listView))\r
+       {\r
+               int index = __convData.GetAnimationIconIndex() + 1;\r
+               __convData.SetAnimationIconIndex(index);\r
+               __listView.RefreshList(__groupIndex, __index, LIST_REFRESH_TYPE_ITEM_MODIFY);\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
diff --git a/src/MsgLVButtonItem.cpp b/src/MsgLVButtonItem.cpp
new file mode 100644 (file)
index 0000000..ae6f17a
--- /dev/null
@@ -0,0 +1,90 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include "MsgLVButtonItem.h"\r
+\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Ui::Controls;\r
+\r
+LVButtonItem::LVButtonItem(void)\r
+       : __pBackgroundBitmap(null)\r
+       , __pSelectedBitmap(null)\r
+       , __pIconBitmap(null)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+LVButtonItem::~LVButtonItem(void)\r
+{\r
+       //Empty implementation\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+bool\r
+LVButtonItem::OnDraw(Canvas& canvas, const Rectangle& rect, ListItemDrawingStatus status)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       Canvas* pCanvas = const_cast<Canvas*>(&canvas);\r
+       if (status == LIST_ITEM_DRAWING_STATUS_NORMAL)\r
+       {\r
+               if (__pBackgroundBitmap)\r
+               {\r
+                       r |= pCanvas->DrawBitmap(rect, *__pBackgroundBitmap);\r
+               }\r
+       }\r
+       else if (status == LIST_ITEM_DRAWING_STATUS_PRESSED\r
+                        || status == LIST_ITEM_DRAWING_STATUS_HIGHLIGHTED)\r
+       {\r
+               if (__pSelectedBitmap)\r
+               {\r
+                       r |= pCanvas->DrawBitmap(rect, *__pSelectedBitmap);\r
+               }\r
+       }\r
+       // Draw Icon\r
+       if (__pIconBitmap)\r
+       {\r
+               int x = rect.x + (rect.width - __pIconBitmap->GetWidth()) / 2;\r
+               int y = rect.y + (rect.height - __pIconBitmap->GetHeight()) / 2;\r
+               r |= pCanvas->DrawBitmap(Point(x, y), *__pIconBitmap);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return (r == E_SUCCESS);\r
+}\r
+\r
+void\r
+LVButtonItem::SetBackgroundImage(const Bitmap& normalIBg, const Bitmap& selectBg)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       __pBackgroundBitmap = &normalIBg;\r
+       __pSelectedBitmap = &selectBg;\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+LVButtonItem::SetIcon(const Bitmap& selectionImage)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       __pIconBitmap = &selectionImage;\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
diff --git a/src/MsgLVMultiLineTextItem.cpp b/src/MsgLVMultiLineTextItem.cpp
new file mode 100644 (file)
index 0000000..3f9d9b4
--- /dev/null
@@ -0,0 +1,342 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <FGrpEnrichedText.h>\r
+\r
+#include "MsgLVMultiLineTextItem.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Ui::Controls;\r
+\r
+LVMultiLineTextItem::LVMultiLineTextItem(void)\r
+       : __pBackgroundBitmap(null)\r
+       , __pSelectedBitmap(null)\r
+       , __pEnrichedText(null)\r
+       , __pNormalColor(null)\r
+       , __pSelectionColor(null)\r
+       , __verticalAlignment(TEXT_ALIGNMENT_TOP)\r
+       , __horizontalAlignment(TEXT_ALIGNMENT_LEFT)\r
+       , __viewRectWidth(0)\r
+       , __leftMargin(0)\r
+       , __rightMargin(0)\r
+       , __topMargin(0)\r
+       , __bottomMargin(0)\r
+       , __minHeight(0)\r
+       , __minWidth(0)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+LVMultiLineTextItem::~LVMultiLineTextItem(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pEnrichedText)\r
+       {\r
+               __pEnrichedText->RemoveAll(true);\r
+               delete __pEnrichedText;\r
+       }\r
+       if (__pNormalColor)\r
+       {\r
+               __pNormalColor->RemoveAll(false);\r
+               delete __pNormalColor;\r
+       }\r
+       if (__pSelectionColor)\r
+       {\r
+               __pSelectionColor->RemoveAll(false);\r
+               delete __pSelectionColor;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+void\r
+LVMultiLineTextItem::SetViewRectWidth(int rectWidth)\r
+{\r
+       AppLogDebug("ENTER");\r
+       __viewRectWidth = rectWidth;\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+LVMultiLineTextItem::CreateTextLayout(int width, bool singleLine)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (width > 0)\r
+       {\r
+               __viewRectWidth = width;\r
+       }\r
+       __pEnrichedText->SetSize(Dimension(__viewRectWidth - __leftMargin - __rightMargin, 800));\r
+       __pEnrichedText->SetVerticalAlignment(__verticalAlignment);\r
+       __pEnrichedText->SetHorizontalAlignment(__horizontalAlignment);\r
+       if (singleLine)\r
+       {\r
+               __pEnrichedText->SetTextWrapStyle(TEXT_WRAP_NONE);\r
+               __pEnrichedText->SetTextAbbreviationEnabled(true);\r
+\r
+       }\r
+       else\r
+       {\r
+               __pEnrichedText->SetTextWrapStyle(TEXT_WRAP_WORD_WRAP);\r
+               __pEnrichedText->SetTextAbbreviationEnabled(false);\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+LVMultiLineTextItem::SetTextMargin(int left, int right, int top, int bottom)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       __leftMargin = left;\r
+       __rightMargin = right;\r
+       __topMargin = top;\r
+       __bottomMargin = bottom;\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+LVMultiLineTextItem::AddText(const String& msgText, const Color& textColor,\r
+                                                        const Color& textSelectionColor, const Font* ptextFont)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pEnrichedText == null)\r
+       {\r
+               __pEnrichedText = new (std::nothrow) EnrichedText();\r
+               // Dummy dimension\r
+               if (__pEnrichedText == null)\r
+               {\r
+                       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+                       return;\r
+               }\r
+               __pEnrichedText->Construct(Dimension(5, 40));\r
+       }\r
+\r
+       // Add new text element.\r
+       TextElement* pTextElement = new (std::nothrow) TextElement();\r
+       if (pTextElement == null)\r
+       {\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return;\r
+       }\r
+       pTextElement->Construct(msgText);\r
+       pTextElement->SetTextColor(textColor);\r
+       // Set font.\r
+       if (ptextFont)\r
+       {\r
+               pTextElement->SetFont(*ptextFont);\r
+       }\r
+       //Store color for future drawing\r
+       if (__pNormalColor == null)\r
+       {\r
+               __pNormalColor = new (std::nothrow) ArrayList();\r
+               __pNormalColor->Construct();\r
+       }\r
+       __pNormalColor->Add(new Color(textColor));\r
+\r
+       if (__pSelectionColor == null)\r
+       {\r
+               __pSelectionColor = new (std::nothrow) ArrayList();\r
+               __pSelectionColor->Construct();\r
+       }\r
+       __pSelectionColor->Add(new Color(textSelectionColor));\r
+       // Explicitly need to remove element.\r
+       __pEnrichedText->Add(*pTextElement);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+int\r
+LVMultiLineTextItem::GetMinHeight(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int minHeight = 0;\r
+       if (__pEnrichedText)\r
+       {\r
+               int height, width, length, startIndex = 0;\r
+               __pEnrichedText->GetTextExtent(startIndex, __pEnrichedText->GetLineLength(0), width, height, length);\r
+               minHeight = __pEnrichedText->GetTotalLineHeight() + __topMargin + __bottomMargin;\r
+       }\r
+       if (minHeight <= __minHeight)\r
+       {\r
+               __topMargin = (__minHeight - minHeight) / 2;\r
+               __bottomMargin = (__minHeight - minHeight) / 2;\r
+               minHeight = __minHeight;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return minHeight;\r
+}\r
+\r
+void\r
+LVMultiLineTextItem::SetMinimumHeight(int minHeight)\r
+{\r
+       AppLogDebug("ENTER");\r
+       __minHeight = minHeight;\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+void\r
+LVMultiLineTextItem::SetMinimumWidth(int minWidth)\r
+{\r
+       AppLogDebug("ENTER");\r
+       __minWidth = minWidth;\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+int\r
+LVMultiLineTextItem::GetMaxWidth(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int maxWidth = 0;\r
+       if (__pEnrichedText)\r
+       {\r
+               int height, width, length, lineTextLength, startIndex = 0;\r
+               int lineCount = __pEnrichedText->GetTotalLineCount();\r
+               for (int count = 0; count < lineCount; count++)\r
+               {\r
+                       lineTextLength = __pEnrichedText->GetLineLength(count);\r
+                       __pEnrichedText->GetTextExtent(startIndex, lineTextLength, width, height, length);\r
+                       startIndex += lineTextLength;\r
+                       if (maxWidth < width)\r
+                       {\r
+                               maxWidth = width;\r
+                       }\r
+               }\r
+       }\r
+       if ((maxWidth + __leftMargin + __rightMargin) < __minWidth)\r
+       {\r
+               __leftMargin += (__minWidth - maxWidth) / 2;\r
+               __rightMargin += (__minWidth - maxWidth) / 2;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return (maxWidth + __leftMargin + __rightMargin); // for bubble\r
+}\r
+\r
+void\r
+LVMultiLineTextItem::SetBackgroundImage(const Bitmap& backgroudImage)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       __pBackgroundBitmap = &backgroudImage;\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+LVMultiLineTextItem::SetSelectionImage(const Bitmap& selectionImage)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       __pSelectedBitmap = &selectionImage;\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+LVMultiLineTextItem::SetVerticalAlignment(TextVerticalAlignment alignment)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       __verticalAlignment = alignment;\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+LVMultiLineTextItem::SetHorizentalAlignment(TextHorizontalAlignment alignment)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       __horizontalAlignment = alignment;\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+\r
+bool\r
+LVMultiLineTextItem::OnDraw(Canvas& canvas,\r
+                                                       const Rectangle& rect,\r
+                                                       ListItemDrawingStatus status)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       // Text element count\r
+       int elementCount = __pEnrichedText->GetTextElementCount();\r
+       // Normal mode\r
+       if (status == LIST_ITEM_DRAWING_STATUS_NORMAL)\r
+       {\r
+               __pEnrichedText->SetSize(Dimension(__viewRectWidth - __leftMargin - __rightMargin,\r
+                                                                                  __pEnrichedText->GetTotalLineHeight()));\r
+               // Draw background normal mode\r
+               if (__pBackgroundBitmap)\r
+               {\r
+                       r = canvas.DrawNinePatchedBitmap(rect, *__pBackgroundBitmap);\r
+                       if (r != E_SUCCESS)\r
+                       {\r
+                               canvas.DrawBitmap(rect, *__pBackgroundBitmap);\r
+                       }\r
+               }\r
+               // Update text element colour in normal mode.\r
+               for (int count = 0; count < elementCount; count++)\r
+               {\r
+                       __pEnrichedText->GetTextElementAt(count)->SetTextColor(\r
+                               *(static_cast<Color*>(__pNormalColor->GetAt(count))));\r
+               }\r
+               canvas.DrawText(Point(rect.x + __leftMargin, rect.y + __topMargin), *__pEnrichedText);\r
+       }\r
+       // selection mode.\r
+       else if (status == LIST_ITEM_DRAWING_STATUS_PRESSED ||\r
+                        status == LIST_ITEM_DRAWING_STATUS_HIGHLIGHTED)\r
+       {\r
+               // Draw background selection mode\r
+               if (__pSelectedBitmap)\r
+               {\r
+                       r = canvas.DrawNinePatchedBitmap(rect, *__pSelectedBitmap);\r
+                       if (r != E_SUCCESS)\r
+                       {\r
+                               canvas.DrawBitmap(rect, *__pSelectedBitmap);\r
+                       }\r
+               }\r
+               // Update text element colour in selection mode.\r
+               for (int count = 0; count < elementCount; count++)\r
+               {\r
+                       __pEnrichedText->GetTextElementAt(count)->SetTextColor(\r
+                               *(static_cast<Color*>(__pSelectionColor->GetAt(count))));\r
+\r
+               }\r
+               canvas.DrawText(Point(rect.x + __leftMargin, rect.y + __topMargin), *__pEnrichedText);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return true;\r
+}\r
diff --git a/src/MsgLVThreadListItem.cpp b/src/MsgLVThreadListItem.cpp
new file mode 100644 (file)
index 0000000..a9ea7ac
--- /dev/null
@@ -0,0 +1,338 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <msg_types.h>\r
+\r
+#include <FApp.h>\r
+#include <FBase.h>\r
+\r
+#include "MsgBaseData.h"\r
+#include "MsgBitmapUtility.h"\r
+#include "MsgLVMultiLineTextItem.h"\r
+#include "MsgLVThreadListItem.h"\r
+#include "MsgTypes.h"\r
+\r
+// Define constant.\r
+#define     STATUS_ITEM_WIDTH       156\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Ui::Controls;\r
+\r
+\r
+LVThreadListItem::LVThreadListItem(BaseData& baseEntry, int width, bool editMode)\r
+       : __entryData(baseEntry)\r
+       , __pStatusText(null)\r
+       , __pTitleText(null)\r
+       , __pShortMsgText(null)\r
+       , __pMainTextFont(null)\r
+       , __pSubTextFont(null)\r
+       , __msgType(0)\r
+       , __Width(width)\r
+       , __IsEditMode(editMode)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+LVThreadListItem::~LVThreadListItem(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pSubTextFont)\r
+       {\r
+               delete __pSubTextFont;\r
+       }\r
+       if (__pMainTextFont)\r
+       {\r
+               delete __pMainTextFont;\r
+       }\r
+       if (__pStatusText)\r
+       {\r
+               delete __pStatusText;\r
+       }\r
+       if (__pTitleText)\r
+       {\r
+               delete __pTitleText;\r
+       }\r
+       if (__pShortMsgText)\r
+       {\r
+               delete __pShortMsgText;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+// Set Unread count.\r
+void\r
+LVThreadListItem::CreateStatusElement(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pStatusText)\r
+       {\r
+               delete __pStatusText;\r
+       }\r
+       __pStatusText = new (std::nothrow) LVMultiLineTextItem();\r
+       String statusText;\r
+       if (__entryData.GetUnreadCount() > 0)\r
+       {\r
+               statusText.Format(4, L"%d", __entryData.GetUnreadCount());\r
+               __pStatusText->SetMinimumWidth(W_UNREAD_ICON);\r
+               __pStatusText->SetMinimumHeight(H_UNREAD_ICON);\r
+               Bitmap* pBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_UNREAD);\r
+               __pStatusText->SetBackgroundImage(*pBitmap);\r
+               __pStatusText->SetSelectionImage(*pBitmap);\r
+       }\r
+       else if (__entryData.GetDraftMessageCount() > 0)\r
+       {\r
+               statusText.Append(IDS_DRAFT);\r
+       }\r
+\r
+       if (!__pSubTextFont)\r
+       {\r
+               __pSubTextFont = new (std::nothrow) Font();\r
+               __pSubTextFont->Construct(FONT_STYLE_PLAIN, THREAD_LIST_SUB_TEXT_FONT_SIZE);\r
+       }\r
+       __pStatusText->AddText(statusText, COLOR_BLACK, COLOR_BLACK, __pSubTextFont);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+LVThreadListItem::CreateTitleElement(const String& searchText)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pTitleText)\r
+       {\r
+               delete __pTitleText;\r
+       }\r
+       __pTitleText = new (std::nothrow) LVMultiLineTextItem();\r
+       __pMainTextFont = new (std::nothrow) Font();\r
+       __pMainTextFont->Construct(FONT_STYLE_PLAIN, THREAD_LIST_MAIN_TEXT_FONT_SIZE);\r
+       if (searchText.IsEmpty())\r
+       {\r
+               __pTitleText->AddText(__entryData.GetDisplayName(), COLOR_THREADLIST_DISPLAY_NAME_ITEM, COLOR_THREADLIST_DISPLAY_NAME_ITEM, __pMainTextFont);\r
+       }\r
+       else\r
+       {\r
+               int searchIndex(-1);\r
+               String displayName(__entryData.GetDisplayName());\r
+               displayName.ToLowerCase();\r
+               displayName.IndexOf(searchText, 0, searchIndex);\r
+               int strLength = displayName.GetLength();\r
+               if (searchIndex >= 0)\r
+               {\r
+                       String strText;\r
+                       if (searchIndex > 0)\r
+                       {\r
+                               __entryData.GetDisplayName().SubString(0, searchIndex, strText);\r
+                               __pTitleText->AddText(strText, COLOR_THREADLIST_DISPLAY_NAME_ITEM, COLOR_THREADLIST_DISPLAY_NAME_ITEM, __pMainTextFont);\r
+                       }\r
+                       __entryData.GetDisplayName().SubString(searchIndex, searchText.GetLength(), strText);\r
+                       __pTitleText->AddText(strText, COLOR_SEARCH_TEXT, COLOR_SEARCH_TEXT, __pMainTextFont);\r
+                       if (searchIndex + searchText.GetLength() < strLength)\r
+                       {\r
+                               __entryData.GetDisplayName().SubString(searchIndex + searchText.GetLength(), strText);\r
+                               __pTitleText->AddText(strText, COLOR_THREADLIST_DISPLAY_NAME_ITEM, COLOR_THREADLIST_DISPLAY_NAME_ITEM, __pMainTextFont);\r
+                       }\r
+               }\r
+               else\r
+               {\r
+                       __pTitleText->AddText(__entryData.GetDisplayName(), COLOR_THREADLIST_DISPLAY_NAME_ITEM, COLOR_THREADLIST_DISPLAY_NAME_ITEM, __pMainTextFont);\r
+\r
+               }\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+\r
+}\r
+\r
+void\r
+LVThreadListItem::CreateMessageElement(const String& searchText)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pShortMsgText)\r
+       {\r
+               delete __pShortMsgText;\r
+       }\r
+       __pShortMsgText = new (std::nothrow) LVMultiLineTextItem();\r
+       if (!__pSubTextFont)\r
+       {\r
+               __pSubTextFont = new (std::nothrow) Font();\r
+               __pSubTextFont->Construct(FONT_STYLE_PLAIN, THREAD_LIST_SUB_TEXT_FONT_SIZE);\r
+       }\r
+       if (searchText.IsEmpty())\r
+       {\r
+               __pShortMsgText->AddText(__entryData.GetMessageText(),\r
+                                                                COLOR_THREADLIST_DATE_TIME_SHORTMSG_ITEM,\r
+                                                                COLOR_THREADLIST_DATE_TIME_SHORTMSG_ITEM, __pSubTextFont);\r
+       }\r
+       else\r
+       {\r
+               int searchIndex(-1);\r
+               String msgText(__entryData.GetMessageText());\r
+               msgText.ToLowerCase();\r
+               msgText.IndexOf(searchText, 0, searchIndex);\r
+               int strLength = msgText.GetLength();\r
+               // Search text\r
+               if (searchIndex >= 0)\r
+               {\r
+                       String strText;\r
+                       if (searchIndex > 0)\r
+                       {\r
+                               __entryData.GetMessageText().SubString(0, searchIndex, strText);\r
+                               __pShortMsgText->AddText(strText,\r
+                                                                                COLOR_THREADLIST_DATE_TIME_SHORTMSG_ITEM,\r
+                                                                                COLOR_THREADLIST_DATE_TIME_SHORTMSG_ITEM, __pSubTextFont);\r
+                       }\r
+                       __entryData.GetMessageText().SubString(searchIndex, searchText.GetLength(), strText);\r
+                       __pShortMsgText->AddText(strText, COLOR_SEARCH_TEXT, COLOR_SEARCH_TEXT, __pSubTextFont);\r
+                       if (searchIndex + searchText.GetLength() < strLength)\r
+                       {\r
+                               __entryData.GetMessageText().SubString(searchIndex + searchText.GetLength(), strText);\r
+                               __pShortMsgText->AddText(strText,\r
+                                                                                COLOR_THREADLIST_DATE_TIME_SHORTMSG_ITEM,\r
+                                                                                COLOR_THREADLIST_DATE_TIME_SHORTMSG_ITEM, __pSubTextFont);\r
+                       }\r
+\r
+               }\r
+               else\r
+               {\r
+                       __pShortMsgText->AddText(__entryData.GetMessageText(),\r
+                                                                        COLOR_THREADLIST_DATE_TIME_SHORTMSG_ITEM,\r
+                                                                        COLOR_THREADLIST_DATE_TIME_SHORTMSG_ITEM, __pSubTextFont);\r
+               }\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+LVThreadListItem::CreateThreadItemLayout(const String& searchText)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       // Check item is in edit mode.\r
+       ListAnnexStyle listStyle = LIST_ANNEX_STYLE_NORMAL;\r
+       int itemWidth(__Width);\r
+       if (__IsEditMode)\r
+       {\r
+               listStyle = LIST_ANNEX_STYLE_MARK;\r
+               itemWidth -= W_CHECKBOX;\r
+       }\r
+       Construct(Dimension(__Width, H_LIST_ITEM_128PX), listStyle);\r
+\r
+       int posX = MARGIN_16PX;\r
+       int posY = MARGIN_10PX;\r
+       int width = itemWidth - MARGIN_16PX - STATUS_ITEM_WIDTH;\r
+       int height = H_TITLE_LINE;\r
+       // For display name.\r
+       CreateTitleElement(searchText);\r
+       __pTitleText->CreateTextLayout(width, true);\r
+       AddElement(Rectangle(posX, posY, width, height), IDC_LIST_TEXT_CONTACT, *__pTitleText);\r
+       SetElementSelectionEnabled(IDC_LIST_TEXT_CONTACT, false);\r
+       // For message type icon.\r
+       BitmapUtility* pBitmapManger = BitmapUtility::GetInstance();\r
+       posX = itemWidth - STATUS_ITEM_WIDTH + MARGIN_16PX;\r
+       width = height = W_ICON_48PX;\r
+       posY += (H_TITLE_LINE - W_ICON_48PX) / 2;\r
+       MessageIconType msgType = ConvertIconType(__entryData.GetMessageType());\r
+       if (msgType != MSG_ICON_INVALID)\r
+       {\r
+               Bitmap* pNormalIcon = pBitmapManger->GetIcon(msgType);\r
+               int nextMsgType = int(msgType) + 1;\r
+               Bitmap* pSelectionIcon = pBitmapManger->GetIcon((MessageIconType) nextMsgType);\r
+               AddElement(Rectangle(posX, posY, width, height),\r
+                                  IDC_LIST_MSG_ICON, *pNormalIcon, pSelectionIcon);\r
+       }\r
+       // For Draft and Unread status.\r
+       posX = MARGIN_16PX;\r
+       int draftIconWidth(0);\r
+       if (__entryData.GetUnreadCount() > 0 || (__entryData.GetDraftMessageCount() > 0))\r
+       {\r
+               if (__entryData.GetDataType() == DATA_TYPE_MESSAGE)\r
+               {\r
+                       posX = MARGIN_16PX;\r
+                       posY = MARGIN_10PX + H_TITLE_LINE;\r
+                       Bitmap* pNormalIcon = pBitmapManger->GetIcon((MessageIconType) MSG_ICON_DRAFT);\r
+                       AddElement(Rectangle(posX, posY, W_ICON_48PX, H_ICON_48PX),\r
+                                          IDC_LIST_DRAFT_ICON, *pNormalIcon, pNormalIcon);\r
+                       posX += W_ICON_48PX + MARGIN_10PX;\r
+                       draftIconWidth = W_ICON_48PX;\r
+               }\r
+               else\r
+               {\r
+                       CreateStatusElement();\r
+                       __pStatusText->CreateTextLayout(itemWidth);\r
+                       posX = itemWidth - __pStatusText->GetMaxWidth() - MARGIN_16PX;\r
+                       AddElement(Rectangle(posX, posY, __pStatusText->GetMaxWidth(), __pStatusText->GetMinHeight()), IDC_LIST_MSG_UNREAD, *__pStatusText);\r
+                       SetElementTextHorizontalAlignment(IDC_LIST_MSG_UNREAD, ALIGNMENT_CENTER);\r
+                       posX = MARGIN_16PX;\r
+               }\r
+       }\r
+       // For short message info\r
+       posY = MARGIN_10PX + H_TITLE_LINE;\r
+       width = itemWidth - MARGIN_16PX * 2 - STATUS_ITEM_WIDTH - draftIconWidth;\r
+       height = H_SUB_TITLE;\r
+       CreateMessageElement(searchText);\r
+       __pShortMsgText->CreateTextLayout(width, true);\r
+       AddElement(Rectangle(posX, posY, width, height), IDC_LIST_TEXT_MSG, *__pShortMsgText);\r
+       SetElementSelectionEnabled(IDC_LIST_TEXT_MSG, false);\r
+       SetElementTextVerticalAlignment(IDC_LIST_TEXT_MSG, ALIGNMENT_MIDDLE);\r
+       SetElementTextHorizontalAlignment(IDC_LIST_TEXT_MSG, ALIGNMENT_LEFT);\r
+       // For Date & time\r
+       posX = itemWidth - STATUS_ITEM_WIDTH + MARGIN_4PX;\r
+       width = STATUS_ITEM_WIDTH;\r
+       AddElement(Rectangle(posX, posY, width, height),\r
+                          IDC_LIST_TEXT_DATE_TIME, __entryData.GetTimeStamp(), MSG_DATE_FONT_SIZE,\r
+                          COLOR_THREADLIST_DATE_TIME_SHORTMSG_ITEM, COLOR_THREADLIST_DATE_TIME_SHORTMSG_ITEM, COLOR_THREADLIST_DATE_TIME_SHORTMSG_ITEM);\r
+       //SetElementTextHorizontalAlignment(IDC_LIST_TEXT_DATE_TIME, ALIGNMENT_RIGHT);\r
+       SetElementSelectionEnabled(IDC_LIST_TEXT_DATE_TIME, false);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+MessageIconType\r
+LVThreadListItem::ConvertIconType(int msgType)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       MessageIconType invalideIcon = MSG_ICON_INVALID;\r
+       switch (msgType)\r
+       {\r
+       case MSG_TYPE_SMS_CB:\r
+       case MSG_TYPE_SMS_JAVACB:\r
+       {\r
+               invalideIcon = MSG_ICON_BROADCASTMSG;\r
+       }\r
+       break;\r
+\r
+       case MSG_TYPE_SMS_WAPPUSH:\r
+       {\r
+               invalideIcon = MSG_ICON_PUSH;\r
+       }\r
+       break;\r
+\r
+       default:\r
+               break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return invalideIcon;\r
+}\r
diff --git a/src/MsgListPresentationModel.cpp b/src/MsgListPresentationModel.cpp
new file mode 100644 (file)
index 0000000..a45c3fa
--- /dev/null
@@ -0,0 +1,226 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+\r
+#include "MsgBaseData.h"\r
+#include "MsgListPresentationModel.h"\r
+\r
+\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Base::Runtime;\r
+\r
+\r
+ListPresentationModel::ListPresentationModel(void)\r
+       : __pDataList(null)\r
+       , __pGroupInfo(null)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+ListPresentationModel::~ListPresentationModel(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pDataList)\r
+       {\r
+               __pDataList->RemoveAll(true);\r
+               delete __pDataList;\r
+       }\r
+\r
+       if (__pGroupInfo)\r
+       {\r
+               __pGroupInfo->RemoveAll(true);\r
+               delete __pGroupInfo;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+\r
+}\r
+\r
+result\r
+ListPresentationModel::Construct(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = BasePresentationModel::Construct();\r
+       if (r == E_SUCCESS)\r
+       {\r
+               __pDataList = new (std::nothrow) ArrayList();\r
+               __pDataList->Construct();\r
+\r
+               __pGroupInfo = new (std::nothrow) ArrayList();\r
+               __pGroupInfo->Construct();\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(r));\r
+       return r;\r
+}\r
+\r
+BaseData*\r
+ListPresentationModel::GetDataAt(int index) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       BaseData* pBaseEntry = static_cast<BaseData*>(__pDataList->GetAt(index));\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pBaseEntry;\r
+}\r
+\r
+int\r
+ListPresentationModel::GetCount(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pDataList)\r
+       {\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return __pDataList->GetCount();\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return 0;\r
+}\r
+\r
+\r
+void\r
+ListPresentationModel::PrepareGroupInfo(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       __pGroupInfo->RemoveAll(true);\r
+       int messageCount = __pDataList->GetCount();\r
+       int itemCount = 1;\r
+       if (messageCount == 1)\r
+       {\r
+               GroupInfo* pNewGroup = new (std::nothrow) GroupInfo();\r
+               BaseData* pBaseEntry = static_cast<BaseData*>(__pDataList->GetAt(0));\r
+               pNewGroup->groupName = pBaseEntry->GetGroupName();\r
+               pNewGroup->itemCount = itemCount;\r
+               __pGroupInfo->Add(pNewGroup);\r
+\r
+       }\r
+       else if (messageCount > 0)\r
+       {\r
+               BaseData* pBaseEntry = static_cast<BaseData*>(__pDataList->GetAt(0));\r
+               String groupName = pBaseEntry->GetGroupName();\r
+               String matchString = null;\r
+               for (int count = 1; count < messageCount; count++)\r
+               {\r
+                       pBaseEntry = static_cast<BaseData*>(__pDataList->GetAt(count));\r
+                       matchString = pBaseEntry->GetGroupName();\r
+                       if (groupName.CompareTo(matchString) == 0)\r
+                       {\r
+                               itemCount++;\r
+                       }\r
+                       else\r
+                       {\r
+                               GroupInfo* pNewGrouop = new (std::nothrow) GroupInfo();\r
+                               pNewGrouop->groupName = groupName;\r
+                               pNewGrouop->itemCount = itemCount;\r
+                               __pGroupInfo->Add(pNewGrouop);\r
+                               itemCount = 1;\r
+                       }\r
+                       groupName = matchString;\r
+                       // Last message then add in group\r
+                       if (count + 1 == messageCount)\r
+                       {\r
+                               GroupInfo* pNewGrouop = new (std::nothrow) GroupInfo();\r
+                               pNewGrouop->groupName = groupName;\r
+                               pNewGrouop->itemCount = itemCount;\r
+                               __pGroupInfo->Add(pNewGrouop);\r
+                       }\r
+               }\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+\r
+int\r
+ListPresentationModel::GetGroupCount(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int grpCount(0);\r
+\r
+       if (__pGroupInfo->GetCount() > 0)\r
+       {\r
+               grpCount = __pGroupInfo->GetCount();\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return grpCount;\r
+}\r
+\r
+int\r
+ListPresentationModel::GetGroupItemCount(int groupIndex)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int itemCount(0);\r
+       if (__pGroupInfo->GetCount() > 0)\r
+       {\r
+               GroupInfo* itemcount = static_cast<GroupInfo*>(__pGroupInfo->GetAt(groupIndex));\r
+               itemCount = itemcount->itemCount;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return itemCount;\r
+}\r
+\r
+int\r
+ListPresentationModel::GetSelectedIndex(int groupIndex)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int selectedIndex = 0;\r
+       for (int index = 0; index < groupIndex; index++)\r
+       {\r
+               GroupInfo* pGroup = static_cast<GroupInfo*>(__pGroupInfo->GetAt(index));\r
+               selectedIndex += pGroup->itemCount;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return selectedIndex;\r
+}\r
+\r
+String\r
+ListPresentationModel::GetGroupName(int groupIndex)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       String groupName;\r
+       if (__pGroupInfo->GetCount() > 0)\r
+       {\r
+               GroupInfo* pGroup = static_cast<GroupInfo*>(__pGroupInfo->GetAt(groupIndex));\r
+               groupName = pGroup->groupName;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return groupName;\r
+}\r
+\r
+void\r
+ListPresentationModel::Clear(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       __pDataList->RemoveAll(true);\r
+       __pGroupInfo->RemoveAll(true);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
diff --git a/src/MsgMainFrame.cpp b/src/MsgMainFrame.cpp
new file mode 100644 (file)
index 0000000..0d3cea7
--- /dev/null
@@ -0,0 +1,163 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <FApp.h>\r
+\r
+#include "MsgFormFactory.h"\r
+#include "MsgMainFrame.h"\r
+#include "MsgMessagesApp.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Ui;\r
+using namespace Tizen::Ui::Controls;\r
+using namespace Tizen::Ui::Scenes;\r
+\r
+MainFrame::MainFrame(void)\r
+       : __pFormFactory(null)\r
+{\r
+// Empty implementation\r
+}\r
+\r
+MainFrame::~MainFrame(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pFormFactory)\r
+       {\r
+               delete __pFormFactory;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+MainFrame::OnInitializing(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       result r = E_SUCCESS;\r
+\r
+       r = RegisterAllScenes();\r
+       TryReturn(r == E_SUCCESS, r, "Scene Registeration failed");\r
+       //goto next form\r
+       MessagesApp* pMsgApp = static_cast<MessagesApp*>(UiApp::GetInstance());\r
+       SceneManager* pSceneManager = SceneManager::GetInstance();\r
+       IList* pArgList = pMsgApp->GetLaunchArgumentsN();\r
+       r |= pSceneManager->GoForward(ForwardSceneTransition(pMsgApp->GetInitialScene()), pArgList);\r
+       if (r != E_SUCCESS && pArgList)\r
+       {\r
+               pArgList->RemoveAll(true);\r
+               delete pArgList;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+result\r
+MainFrame::OnTerminating(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       result r = E_SUCCESS;\r
+\r
+       // TODO:\r
+       // Add your termination code here\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+result\r
+MainFrame::RegisterAllScenes(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       result r = E_SUCCESS;\r
+       // Prepare Scene management.\r
+       __pFormFactory = new (std::nothrow) FormFactory();\r
+\r
+       SceneManager* pSceneManager = SceneManager::GetInstance();\r
+       r = pSceneManager->RegisterFormFactory(*__pFormFactory);\r
+\r
+       // Register thread and message form for scene manager\r
+       r |= pSceneManager->RegisterScene(IDSCN_THREAD_LIST,\r
+                                                                         IDFRM_THREAD_LIST, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_THREAD_LIST_EDITOR,\r
+                                                                         IDFRM_THREAD_LIST_EDITOR, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_SIM_MESSAGE_LIST,\r
+                                                                         IDFRM_SIM_MESSAGE_LIST, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_SIM_MESSAGE_LIST_EDITOR,\r
+                                                                         IDFRM_SIM_MESSAGE_LIST_EDITOR, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_SPAM_MESSAGE_LIST,\r
+                                                                         IDFRM_SPAM_MESSAGE_LIST, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_SPAM_MESSAGE_LIST_EDITOR,\r
+                                                                         IDFRM_SPAM_MESSAGE_LIST_EDITOR, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_CB_MESSAGE_LIST,\r
+                                                                         IDFRM_CB_MESSAGE_LIST, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_CB_MESSAGE_LIST_EDITOR,\r
+                                                                         IDFRM_CB_MESSAGE_LIST_EDITOR, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_DRAFT_MESSAGE_LIST,\r
+                                                                         IDFRM_DRAFT_MESSAGE_LIST, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_DRAFT_MESSAGE_LIST_EDITOR,\r
+                                                                         IDFRM_DRAFT_MESSAGE_LIST_EDITOR, IDS_BLANK);\r
+\r
+       // Register Conversation form for scene manager\r
+       r |= pSceneManager->RegisterScene(IDSCN_CONVERSATION_LIST,\r
+                                                                         IDFRM_CONVERSATION_LIST, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_CONVERSATION_LIST_EDITOR,\r
+                                                                         IDFRM_CONVERSATION_LIST_EDITOR, IDS_BLANK);\r
+\r
+       // Register Composer form for scene manager\r
+       r |= pSceneManager->RegisterScene(IDSCN_COMPOSER,\r
+                                                                         IDFRM_COMPOSER, IDS_BLANK);\r
+       // Register Sms viewer form for scene manager\r
+       r |= pSceneManager->RegisterScene(IDSCN_SMS_VIEWER,\r
+                                                                         IDFRM_SMS_VIEWER, IDS_BLANK);\r
+       // MMS detail form\r
+       r |= pSceneManager->RegisterScene(IDSCN_MMS_DETAIL,\r
+                                                                         IDFRM_MMS_DETAIL, IDS_BLANK);\r
+       // Register Setting form\r
+       r |= pSceneManager->RegisterScene(IDSCN_SETTINGS,\r
+                                                                         IDFRM_SETTINGS, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_SETTINGS_TEXT_MESSAGE,\r
+                                                                         IDFRM_SETTINGS_TEXT_MESSAGE, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_SETTINGS_TEXT_MESSAGE_SERVICE_CENTERS,\r
+                                                                         IDFRM_SETTINGS_TEXT_MESSAGE_SERVICE_CENTERS, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_SETTINGS_TEXT_MESSAGE_EDIT_SERVICE_CENTER,\r
+                                                                         IDFRM_SETTINGS_TEXT_MESSAGE_EDIT_SERVICE_CENTER, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_SETTINGS_MULTIMEDIA_MESSAGE,\r
+                                                                         IDFRM_SETTINGS_MULTIMEDIA_MESSAGE, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_SETTINGS_MULTIMEDIA_RECEIVING_OPTIONS,\r
+                                                                         IDFRM_SETTINGS_MULTIMEDIA_RECEIVING_OPTIONS, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_SETTINGS_MULTIMEDIA_READ_REPORT,\r
+                                                                         IDFRM_SETTINGS_MULTIMEDIA_READ_REPORT, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_SETTINGS_SPAM_MESSAGE,\r
+                                                                         IDFRM_SETTINGS_SPAM_MESSAGE, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_SETTINGS_SPAM_AUTO_REJECT,\r
+                                                                         IDFRM_SETTINGS_SPAM_AUTO_REJECT, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_SETTINGS_SPAM_ADD_REJECT_NUMBER,\r
+                                                                         IDFRM_SETTINGS_SPAM_ADD_REJECT_NUMBER, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_SETTINGS_SPAM_DELETE_REJECT_NUMBER,\r
+                                                                         IDFRM_SETTINGS_SPAM_DELETE_REJECT_NUMBER, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_SETTINGS_SPAM_BLOCK_WORD,\r
+                                                                         IDFRM_SETTINGS_SPAM_BLOCK_WORD, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_SETTINGS_SPAM_ADD_BLOCK_WORD,\r
+                                                                         IDFRM_SETTINGS_SPAM_ADD_BLOCK_WORD, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_SETTINGS_SPAM_DELETE_BLOCK_WORD,\r
+                                                                         IDFRM_SETTINGS_SPAM_DELETE_BLOCK_WORD, IDS_BLANK);\r
+       r |= pSceneManager->RegisterScene(IDSCN_SETTINGS_FONT_SIZE,\r
+                                                                         IDFRM_SETTINGS_FONT_SIZE, IDS_BLANK);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
diff --git a/src/MsgMediaControl.cpp b/src/MsgMediaControl.cpp
new file mode 100644 (file)
index 0000000..d2f23b1
--- /dev/null
@@ -0,0 +1,283 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <FApp.h>\r
+//#include <FContent.h>\r
+#include <FCntAudioMetadata.h>\r
+#include <FCntVideoMetadata.h>\r
+#include <FCntContentManagerUtil.h>\r
+#include <FIo.h>\r
+#include <FMedia.h>\r
+#include <FSysEnvironment.h>\r
+\r
+#include "MsgBitmapUtility.h"\r
+#include "MsgCommonUtil.h"\r
+#include "MsgMediaControl.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Runtime;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Content;\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Io;\r
+using namespace Tizen::Media;\r
+using namespace Tizen::System;\r
+using namespace Tizen::Ui::Controls;\r
+using namespace Tizen::Ui;\r
+\r
+const wchar_t* IDS_PATH_COLON = L"path:";\r
+\r
+// Internal event\r
+enum ImageEventType\r
+{\r
+       ID_EVENT_IMAGE_LOADING,\r
+       ID_EVENT_IMAGE_LOADED\r
+};\r
+\r
+MediaControl::MediaControl(void)\r
+       : __mediaType(MEDIA_TYPE_IMAGE)\r
+       , __pDeleteMedia(null)\r
+       , __pMediaIconBitmap(null)\r
+       , __pWorkerThread(null)\r
+{\r
+       // Empty\r
+}\r
+\r
+MediaControl::~MediaControl(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pMediaIconBitmap)\r
+       {\r
+               delete __pMediaIconBitmap;\r
+       }\r
+       if (__pWorkerThread)\r
+       {\r
+               __pWorkerThread->Exit(); // stop is deprecated. Hence the replacement with exit function call\r
+               delete __pWorkerThread;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+MediaControl::Construct(const Rectangle& rectangle)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       r = Container::Construct(rectangle);\r
+       // Initialize delete button\r
+       __pDeleteMedia = new (std::nothrow) Button();\r
+       __pDeleteMedia->Construct(Rectangle((rectangle.width - W_ICON_48PX), 0, W_ICON_48PX, H_ICON_48PX));\r
+       BitmapUtility* pBitmapUtility = BitmapUtility::GetInstance();\r
+       Bitmap* pNormalBitMap = pBitmapUtility->GetIconN(MSG_ICON_PHOTO_DELETE);\r
+       __pDeleteMedia->SetNormalBackgroundBitmap(*pNormalBitMap);\r
+       Bitmap* pPressBitMap = pBitmapUtility->GetIconN(MSG_ICON_PHOTO_DELETE_PRESS);\r
+       __pDeleteMedia->SetPressedBackgroundBitmap(*pPressBitMap);\r
+       __pDeleteMedia->SetShowState(false);\r
+       AddControl(*__pDeleteMedia);\r
+       delete pNormalBitMap;\r
+       delete pPressBitMap;\r
+       // Add touch listener to open media on touch\r
+       AddTouchEventListener(*this);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+void\r
+MediaControl::SetMediaPath(const String& mediaPath, MediaType mediaType)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       __mediaPath = mediaPath;\r
+       // Load media icon image\r
+       if (!__mediaPath.IsEmpty())\r
+       {\r
+               delete __pWorkerThread;\r
+               __pWorkerThread = new (std::nothrow) Thread();\r
+               __pWorkerThread->Construct(*this);\r
+               __pWorkerThread->Start();\r
+               __mediaType = mediaType;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+String\r
+MediaControl::GetMediaPath(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __mediaPath;\r
+}\r
+\r
+void\r
+MediaControl::SetDeleteActionId(int actionId)\r
+{\r
+       AppLogDebug("ENTER");\r
+       __pDeleteMedia->SetActionId(actionId);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+MediaControl::AddActionEventListener(IActionEventListener& listener)\r
+{\r
+       AppLogDebug("ENTER");\r
+       __pDeleteMedia->AddActionEventListener(listener);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+MediaControl::OnUserEventReceivedN(RequestId requestId, IList* pArgs)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (pArgs)\r
+       {\r
+               switch (requestId)\r
+               {\r
+               case ID_EVENT_IMAGE_LOADED:\r
+               {\r
+                       delete __pMediaIconBitmap;\r
+                       __pMediaIconBitmap = static_cast<Bitmap*>(pArgs->GetAt(0));\r
+                       __pDeleteMedia->SetShowState(true);\r
+                       pArgs->RemoveAt(0);\r
+                       Draw();\r
+                       Show();\r
+               }\r
+               break;\r
+               }\r
+               pArgs->RemoveAll(true);\r
+               delete pArgs;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+result\r
+MediaControl::OnDraw(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       Canvas* pCanvas = GetCanvasN();\r
+       Rectangle rect = GetBounds();\r
+       pCanvas->FillRectangle(Color::GetColor(COLOR_ID_WHITE), Rectangle(0, 0, rect.width, rect.height));\r
+       pCanvas->FillRoundRectangle(Color::GetColor(COLOR_ID_GREY),\r
+                                                               Rectangle(0, 0, rect.width, rect.height), Dimension(6, 6));\r
+       if (__pMediaIconBitmap)\r
+       {\r
+               pCanvas->DrawBitmap(Point((rect.width - __pMediaIconBitmap->GetWidth()) / 2,\r
+                                                                 (rect.height - __pMediaIconBitmap->GetHeight()) / 2), *__pMediaIconBitmap);\r
+       }\r
+       delete pCanvas;\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+void\r
+MediaControl::OnTouchPressed(const Control& source, const Point& currentPosition,\r
+                                                        const TouchEventInfo& touchInfo)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       AppControl* pAppControl = AppManager::FindAppControlN(IDS_APPCONTROL_PROVIDER_IMAGE,\r
+                                                                                                                 IDS_APPCONTROL_OPERATION_VIEW);\r
+       if (pAppControl)\r
+       {\r
+               HashMap* pHashMap = new (std::nothrow) HashMap();\r
+               pHashMap->Construct();\r
+               String* pModeKey = new (std::nothrow) String(L"type");\r
+               String* pModeVal = new (std::nothrow) String(L"image");\r
+               pHashMap->Add(pModeKey, pModeVal);\r
+               String* pTypeKey = new (std::nothrow) String(L"path");\r
+               String* pTypeVal = new (std::nothrow) String(__mediaPath);\r
+               pHashMap->Add(pTypeKey, pTypeVal);\r
+               pAppControl->Start(null, null, pHashMap, null);\r
+               pHashMap->RemoveAll(true);\r
+               delete pHashMap;\r
+               delete pAppControl;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+Object*\r
+MediaControl::Run(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       LoadMediaIcon();\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return null;\r
+}\r
+\r
+void\r
+MediaControl::LoadMediaIcon(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       Bitmap* pBitmap = null;\r
+       result r = E_SUCCESS;\r
+       if (CommonUtil::IsVideoFile(__mediaPath))\r
+       {\r
+               VideoMetadata* pVideoMeta = ContentManagerUtil::GetVideoMetaN(__mediaPath);\r
+               String contentPath;\r
+               if (!pVideoMeta)\r
+               {\r
+                       contentPath = Environment::GetMediaPath() + File::GetFileName(__mediaPath);\r
+                       r = File::Copy(__mediaPath, contentPath, true);\r
+                       pVideoMeta = ContentManagerUtil::GetVideoMetaN(contentPath);\r
+               }\r
+               if (pVideoMeta)\r
+               {\r
+                       pBitmap = pVideoMeta->GetAlbumArtN();\r
+                       delete pVideoMeta;\r
+               }\r
+               // Remove temp file\r
+               if (r != E_FILE_ALREADY_EXIST)\r
+               {\r
+                       File::Remove(contentPath);\r
+               }\r
+       }\r
+       else\r
+       {\r
+               // Load icon image.\r
+               Image* pImage = new (std::nothrow) Image();\r
+               pImage->Construct();\r
+               pBitmap = pImage->DecodeN(__mediaPath, BITMAP_PIXEL_FORMAT_ARGB8888,\r
+                                                                 W_COMPOSE_IMAGE_132PX, H_COMPOSE_IMAGE_132PX);\r
+               delete pImage;\r
+       }\r
+\r
+       ArrayList* pArgList = new (std::nothrow) ArrayList();\r
+       pArgList->Construct();\r
+       pArgList->Add(pBitmap);\r
+       RequestId requestId = ID_EVENT_IMAGE_LOADED;\r
+       this->SendUserEvent(requestId, pArgList);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
diff --git a/src/MsgMediaTextExpandEditArea.cpp b/src/MsgMediaTextExpandEditArea.cpp
new file mode 100644 (file)
index 0000000..2855949
--- /dev/null
@@ -0,0 +1,496 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+#include <FApp.h>
+#include <FIo.h>
+
+#include "MsgAttachementControl.h"
+#include "MsgBitmapUtility.h"
+#include "MsgISizeChangeEventListener.h"
+#include "MsgMediaControl.h"
+#include "MsgMediaTextExpandEditArea.h"
+#include "MsgTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Graphics;
+using namespace Tizen::Io;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui;
+
+enum InternalActionIds
+{
+       IDA_DELETE_IMAGE,
+       IDA_DELETE_AUDIO,
+       IDA_VIEW_IMAGE
+};
+
+MediaTextExpandEditArea::MediaTextExpandEditArea(void)
+       : __pBgBitmap(null)
+       , __pSizeChangeListener(null)
+       , __pMediaCntl(null)
+       , __pExpandEditArea(null)
+       , __pDeleteButton(null)
+       , __pAttachCntrl(null)
+{
+       // Empty
+}
+MediaTextExpandEditArea::~MediaTextExpandEditArea(void)
+{
+       AppLogDebug("ENTER");
+       // Remove temporary compose file.
+       if (__pMediaCntl)
+       {
+               File::Remove(__pMediaCntl->GetMediaPath());
+       }
+       if (__pBgBitmap)
+       {
+               delete __pBgBitmap;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+result
+MediaTextExpandEditArea::Construct(const Rectangle& rectangle)
+{
+       AppLogDebug("ENTER");
+       result r = E_SUCCESS;
+       r = Container::Construct(rectangle);
+       // Background bitmap
+       BitmapUtility* pBitmapUtility = BitmapUtility::GetInstance();
+
+       // Edit area
+       __pExpandEditArea = new (std::nothrow) ExpandableEditArea();
+       __prevBounds = Rectangle(0, 0, rectangle.width, rectangle.height);
+       __pExpandEditArea->Construct(__prevBounds, EXPANDABLE_EDIT_AREA_STYLE_NORMAL,
+                                                                EXPANDABLE_EDIT_AREA_TITLE_STYLE_NONE, 99);
+       __pExpandEditArea->SetLimitLength(1529); // for 10 page of SMS
+       __pExpandEditArea->AddExpandableEditAreaEventListener(*this);
+       __pExpandEditArea->SetAutoResizingEnabled(false);
+       __pExpandEditArea->SetAutoShrinkModeEnabled(false);
+       __pExpandEditArea->SetColor(EDIT_STATUS_PRESSED, __pExpandEditArea->GetColor(EDIT_STATUS_NORMAL));
+       __pExpandEditArea->SetTextColor(EDIT_TEXT_COLOR_HIGHLIGHTED, __pExpandEditArea->GetTextColor(EDIT_TEXT_COLOR_NORMAL));
+       AddControl(*__pExpandEditArea);
+       //Initialize editor background bitmap to avoid flicker
+       Rectangle editorBound = __pExpandEditArea->GetBounds();
+       __pBgBitmap = new (std::nothrow) Bitmap();
+       Canvas* pEditorBgCanvas = new (std::nothrow) Canvas();
+       pEditorBgCanvas->Construct(editorBound);
+       pEditorBgCanvas->FillRoundRectangle( __pExpandEditArea->GetColor(EDIT_STATUS_NORMAL), editorBound, Dimension(2,2));
+       __pBgBitmap->Construct(*pEditorBgCanvas, editorBound);
+       delete pEditorBgCanvas;
+       // add delete button
+       __pDeleteButton = new (std::nothrow) Button();
+       __pDeleteButton->Construct(Rectangle(rectangle.width - W_ICON_48PX - MARGIN_16PX,
+                                                                                (rectangle.height - H_ICON_48PX) / 2, W_ICON_48PX, H_ICON_48PX));
+       Bitmap* pNormalBitMap = pBitmapUtility->GetIconN(MSG_ICON_PAGE_DELETE);
+       __pDeleteButton->SetNormalBackgroundBitmap(*pNormalBitMap);
+       Bitmap* pPressBitMap = pBitmapUtility->GetIconN(MSG_ICON_PAGE_DELETE_PRESS);
+       __pDeleteButton->SetPressedBackgroundBitmap(*pPressBitMap);
+       __pDeleteButton->SetShowState(false);
+       AddControl(*__pDeleteButton);
+       delete pPressBitMap;
+       delete pNormalBitMap;
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+void
+MediaTextExpandEditArea::AddActionEventListener(IActionEventListener& listener)
+{
+       AppLogDebug("ENTER");
+       __pDeleteButton->AddActionEventListener(listener);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MediaTextExpandEditArea::AddKeypadEventListener(IKeypadEventListener& listener)
+{
+       AppLogDebug("ENTER");
+       __pExpandEditArea->AddKeypadEventListener(listener);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MediaTextExpandEditArea::AddTextEventListener(ITextEventListener& listener)
+{
+       AppLogDebug("ENTER");
+       __pExpandEditArea->AddTextEventListener(listener);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MediaTextExpandEditArea::AddKeyEventListener(IKeyEventListener& listener)
+{
+       AppLogDebug("ENTER");
+       __pExpandEditArea->AddKeyEventListener(listener);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MediaTextExpandEditArea::SetSizeChangeEventListener(ISizeChangeEventListener& listener)
+{
+       AppLogDebug("ENTER");
+       __pSizeChangeListener = &listener;
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MediaTextExpandEditArea::AddFocusEventListener(IFocusEventListener& listener)
+{
+       AppLogDebug("ENTER");
+       __pExpandEditArea->AddFocusEventListener(listener);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MediaTextExpandEditArea::SetDeleteActionId(int actionId)
+{
+       AppLogDebug("ENTER");
+       __pDeleteButton->SetActionId(actionId);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+result
+MediaTextExpandEditArea::SetText(const String& strText)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __pExpandEditArea->SetText(strText);
+}
+
+result
+MediaTextExpandEditArea::ClearText(void)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __pExpandEditArea->Clear();
+}
+
+String
+MediaTextExpandEditArea::GetText(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __pExpandEditArea->GetText();
+}
+
+bool
+MediaTextExpandEditArea::IsAudioExist() const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return (__pAttachCntrl != null);
+}
+
+bool
+MediaTextExpandEditArea::IsImageExist() const
+{
+       AppLogDebug("ENTER");
+       bool imageExist(false);
+       if (__pMediaCntl)
+       {
+               imageExist = (__pMediaCntl->GetMediaType() == MEDIA_TYPE_IMAGE);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return imageExist;
+}
+
+bool
+MediaTextExpandEditArea::IsVideoExist() const
+{
+       AppLogDebug("ENTER");
+       bool videoExist(false);
+       if (__pMediaCntl)
+       {
+               videoExist = (__pMediaCntl->GetMediaType() == MEDIA_TYPE_VIDEO);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return videoExist;
+}
+
+result
+MediaTextExpandEditArea::SetMedia(const String& mediafilePath, MediaType mediaType)
+{
+       AppLogDebug("ENTER");
+       result r = E_SUCCESS;
+       if (mediafilePath.IsEmpty())
+       {
+               return r;
+       }
+       //int PosY(MARGIN_15PX);
+       int height(MARGIN_15PX);
+       if (mediaType == MEDIA_TYPE_IMAGE || mediaType == MEDIA_TYPE_VIDEO)
+       {
+               if (!__pMediaCntl)
+               {
+                       __pMediaCntl = new (std::nothrow) MediaControl();
+                       __pMediaCntl->Construct(Rectangle(MARGIN_16PX, height, W_COMPOSE_IMAGE_132PX, H_COMPOSE_IMAGE_132PX));
+                       __pMediaCntl->SetDeleteActionId(IDA_DELETE_IMAGE);
+                       __pMediaCntl->AddActionEventListener(*this);
+                       if (IsAudioExist())
+                       {
+                               __pAttachCntrl->SetBounds(MARGIN_16PX, height + __pMediaCntl->GetHeight() + MARGIN_16PX, 452, 60);
+                               height += MARGIN_16PX * 2 + __pAttachCntrl->GetHeight() + __pMediaCntl->GetHeight();
+                       }
+                       else
+                       {
+                               height += __pMediaCntl->GetHeight() + MARGIN_16PX;
+                       }
+                       AddControl(*__pMediaCntl);
+               }
+               __pMediaCntl->SetMediaPath(mediafilePath, mediaType);
+       }
+       if (mediaType == MEDIA_TYPE_AUDIO && !__pAttachCntrl)
+       {
+               __pAttachCntrl = new (std::nothrow) AttachementControl(mediafilePath);
+               if (IsImageExist())
+               {
+                       __pAttachCntrl->Construct(Rectangle(MARGIN_16PX, height + __pMediaCntl->GetHeight() + MARGIN_16PX, 452, 60));
+                       height += MARGIN_16PX * 2 + __pAttachCntrl->GetHeight() + __pMediaCntl->GetHeight();
+               }
+               else
+               {
+                       __pAttachCntrl->Construct(Rectangle(MARGIN_16PX, height, GetWidth() - MARGIN_16PX * 2, 60));
+                       height += __pAttachCntrl->GetHeight() + MARGIN_16PX;
+               }
+               __pAttachCntrl->SetDeleteActionId(IDA_DELETE_AUDIO);
+               __pAttachCntrl->AddActionEventListener(*this);
+               AddControl(*__pAttachCntrl);
+       }
+       __pExpandEditArea->SetBounds(0, height, __prevBounds.width, __prevBounds.height);
+       height += __pExpandEditArea->GetHeight();
+       SetSize(GetWidth(), height);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+String
+MediaTextExpandEditArea::GetMediaPath(MediaType mediaType) const
+{
+       AppLogDebug("ENTER");
+       String mediaPath;
+       switch (mediaType)
+       {
+       case MEDIA_TYPE_AUDIO:
+       {
+               if (__pAttachCntrl)
+               {
+                       mediaPath.Append(__pAttachCntrl->GetAttachementFilepath());
+               }
+       }
+       break;
+
+       case MEDIA_TYPE_IMAGE:
+       case MEDIA_TYPE_VIDEO:
+       {
+               if (__pMediaCntl)
+               {
+                       mediaPath.Append(__pMediaCntl->GetMediaPath());
+               }
+       }
+       break;
+
+       default:
+               break;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return mediaPath;
+}
+
+void
+MediaTextExpandEditArea::OnActionPerformed(const Control& source,
+                                                                                  int actionId)
+{
+       AppLogDebug("ENTER");
+       switch (actionId)
+       {
+       case IDA_DELETE_IMAGE:
+       {
+               File::Remove(__pMediaCntl->GetMediaPath());
+               RemoveControl(*__pMediaCntl);
+               __pMediaCntl = null;
+               if (__pAttachCntrl)
+               {
+                       __pAttachCntrl->SetPosition(MARGIN_16PX, MARGIN_16PX);
+                       __pExpandEditArea->SetBounds(0, __pAttachCntrl->GetHeight() + MARGIN_16PX + MARGIN_16PX, __prevBounds.width, __prevBounds.height);
+                       SetSize(GetWidth(), __pExpandEditArea->GetHeight() + __pAttachCntrl->GetHeight() + MARGIN_16PX);
+               }
+               else
+               {
+                       __pExpandEditArea->SetBounds(0, 0, __prevBounds.width, __prevBounds.height);
+                       SetSize(GetWidth(), __pExpandEditArea->GetHeight());
+               }
+               RequestId requestId = REQUEST_CHECK_COMPOSE_STATE;
+               static_cast<Panel*>(GetParent()->GetParent()->GetParent())->SendUserEvent(requestId, null);
+       }
+       break;
+
+       case IDA_DELETE_AUDIO:
+       {
+               RemoveControl(*__pAttachCntrl);
+               __pAttachCntrl = null;
+               if (__pMediaCntl)
+               {
+                       __pExpandEditArea->SetBounds(0, __pMediaCntl->GetHeight() + MARGIN_16PX + MARGIN_16PX, __prevBounds.width, __prevBounds.height);
+                       SetSize(GetWidth(), __pExpandEditArea->GetHeight() + __pMediaCntl->GetHeight() + MARGIN_16PX + MARGIN_16PX);
+               }
+               else
+               {
+                       __pExpandEditArea->SetBounds(0, 0, __prevBounds.width, __prevBounds.height);
+                       SetSize(GetWidth(), __pExpandEditArea->GetHeight());
+               }
+       }
+       break;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+
+}
+
+result
+MediaTextExpandEditArea::OnDraw(void)
+{
+       AppLogDebug("ENTER");
+       result r = E_SUCCESS;
+       Canvas* pCanvas = GetCanvasN();
+       if (pCanvas)
+       {
+               Rectangle rect = GetBounds();
+               pCanvas->FillRectangle(COLOR_COMPOSE_PANEL_BG,
+                                                          Rectangle(0, 0, rect.width, rect.height));
+               pCanvas->DrawBitmap(Rectangle(0, 0, rect.width, rect.height),
+                                                                          *__pBgBitmap);
+               delete pCanvas;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+void
+MediaTextExpandEditArea::OnBoundsChanged(const Rectangle& oldRect, const Rectangle& newRect)
+{
+       AppLogDebug("ENTER");
+       if (__pSizeChangeListener)
+       {
+               if (newRect.height > oldRect.height)
+               {
+                       __pSizeChangeListener->OnSizeIncrease(*this);
+               }
+               else
+               {
+                       __pSizeChangeListener->OnSizeDecrease(*this);
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MediaTextExpandEditArea::OnExpandableEditAreaLineAdded(ExpandableEditArea& source,
+                                                                                                          int newLineCount)
+{
+       AppLogDebug("ENTER");
+       Rectangle newBounds = __pExpandEditArea->GetBounds();
+       Dimension curSize = GetSize();
+       curSize.height += (newBounds.height - __prevBounds.height);
+       SetSize(curSize);
+       __prevBounds = __pExpandEditArea->GetBounds();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MediaTextExpandEditArea::OnExpandableEditAreaLineRemoved(ExpandableEditArea& source,
+                                                                                                                int newLineCount)
+{
+       AppLogDebug("ENTER");
+       Rectangle newBounds = __pExpandEditArea->GetBounds();
+       Dimension curSize = GetSize();
+       curSize.height -= (__prevBounds.height - newBounds.height);
+       SetSize(curSize);
+       __prevBounds = __pExpandEditArea->GetBounds();
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+ComposeControlType
+MediaTextExpandEditArea::GetControlType(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return COMPOSE_CONTROL_IMAGE_TEXT;
+}
+
+void
+MediaTextExpandEditArea::SetDeleteShowState(bool visible)
+{
+       AppLogDebug("ENTER");
+       __pDeleteButton->SetShowState(visible);
+       Rectangle rectangle = GetBounds();
+       Dimension editorSize = __pExpandEditArea->GetSize();
+       if (visible)
+       {
+               editorSize.width = rectangle.width - (W_ICON_48PX + MARGIN_16PX * 2);
+       }
+       else
+       {
+               editorSize.width = rectangle.width;
+       }
+       __pExpandEditArea->SetSize(editorSize);
+       Draw();
+       Show();
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+result
+MediaTextExpandEditArea::ShowKeypad(bool visible)
+{
+       AppLogDebug("ENTER");
+       result r = E_SUCCESS;
+       if (visible)
+       {
+               r = __pExpandEditArea->ShowKeypad();
+       }
+       else
+       {
+               r = __pExpandEditArea->HideKeypad();
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+result
+MediaTextExpandEditArea::SetFocus(void)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __pExpandEditArea->SetFocus();
+}
+
+result
+MediaTextExpandEditArea::SetTextSize(int textSize)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __pExpandEditArea->SetTextSize(textSize);
+}
+
+void
+MediaTextExpandEditArea::SetLimitLength(int length)
+{
+       AppLogDebug("ENTER");
+       __pExpandEditArea->SetLimitLength(length);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
diff --git a/src/MsgMessageComposePanel.cpp b/src/MsgMessageComposePanel.cpp
new file mode 100644 (file)
index 0000000..1896094
--- /dev/null
@@ -0,0 +1,1985 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <FApp.h>
+#include <FIo.h>
+#include <FMedia.h>
+#include <FSysEnvironment.h>
+
+#include "MsgAttachListPopup.h"
+#include "MsgAttachementControl.h"
+#include "MsgBitmapUtility.h"
+#include "MsgCommonUtil.h"
+#include "MsgCompressPopup.h"
+#include "MsgIComposeEventObserver.h"
+#include "MsgMediaTextExpandEditArea.h"
+#include "MsgMessageComposePanel.h"
+#include "MsgMessageData.h"
+//#include "MsgSettingPresentationModel.h"
+#include "MsgSubjectControl.h"
+#include "MsgTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Runtime;
+using namespace Tizen::Base::Utility;
+using namespace Tizen::Graphics;
+using namespace Tizen::Io;
+using namespace Tizen::Media;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui;
+
+
+const wchar_t* IDS_SELTYPE_MULTIPLE = L"selectionType:multiple";
+const wchar_t* IDS_TYPE_CAMERA = L"type:camera";
+const wchar_t* IDS_TYPE_CAMCORDER = L"type:camcorder";
+const wchar_t* IDS_TYPE_AUDIO = L"type:audio";
+const wchar_t* IDS_TYPE_ALL = L"type:all";
+const wchar_t* IDS_SELMODE_SINGLE = L"selectionMode:single";
+const wchar_t* IDS_TYPE_VCARD = L"returnType:vcard";
+const wchar_t* IDS_ITEM_TYPE_EVENT = L"itemType:event";
+const wchar_t* IDS_ITEM_TYPE_MEMO = L"itemType:memo";
+const wchar_t* IDS_COMPRESS = L"compress_";
+const wchar_t* IDS_VALUE_KEY = L"value";
+// For internal communication
+enum ComposeActionId
+{
+       IDA_COMPOSE_ADD_ATTACHEMENT,
+       IDA_COMPOSE_DELETE_ATTACHEMENT,
+       IDA_COMPOSE_SEND,
+       IDA_CLOSE_POPUP,
+};
+
+MessageComposePanel::MessageComposePanel(void)
+       : __pCompseEventListener(null)
+       , __pFocusControl(null)
+       , __pKeypadListener(null)
+       , __pSizeChangeListener(null)
+       , __pScrollPanel(null)
+       , __pSendMessage(null)
+       , __pAddAttachement(null)
+       , __pComposeInfoLabel(null)
+       , __pSizeExceedPopup(null)
+       , __pCompressProgressPopup(null)
+       , __pAttachPopup(null)
+       , __pWorkerThread(null)
+       , __remainSizeBytes(300000)
+       , __defaultPageDuration(MIN_MMS_SLIDE_DURATION)
+       , __pSelectedFilesQueue(null)
+{
+       // Empty implementation
+}
+
+MessageComposePanel::~MessageComposePanel(void)
+{
+       AppLogDebug("ENTER");
+       if (__pSelectedFilesQueue)
+       {
+               __pSelectedFilesQueue->RemoveAll(true);
+               delete __pSelectedFilesQueue;
+       }
+       if (__pAttachPopup)
+       {
+               delete __pAttachPopup;
+       }
+       if (__pSizeExceedPopup)
+       {
+               delete __pSizeExceedPopup;
+       }
+       if (__pCompressProgressPopup)
+       {
+               delete __pCompressProgressPopup;
+       }
+       if (__pWorkerThread)
+       {
+               __pWorkerThread->Join();
+               delete __pWorkerThread;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+result
+MessageComposePanel::Construct(const String& resourceId)
+{
+       AppLogDebug("ENTER");
+       result r = E_SUCCESS;
+       String strText;
+       r = Panel::Construct(resourceId);
+       SetMinimumSize(GetSize());
+       int panelHeight = GetHeight();
+       __pAddAttachement = static_cast<Button*>(GetControl(L"IDC_ATTACH_BUTTON"));
+       if (__pAddAttachement)
+       {
+               __pAddAttachement->SetBounds(Rectangle(MARGIN_16PX, (panelHeight - H_ATTACH_BUTTON) / 2, W_ATTACH_BUTTON, H_ATTACH_BUTTON));
+               Bitmap* pNormalBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_PLUS);
+               if (pNormalBitmap)
+               {
+                       pNormalBitmap->Scale(Dimension(W_ATTACH_BUTTON, W_ATTACH_BUTTON));
+                       __pAddAttachement->SetNormalBitmap(Point(0, 0), *pNormalBitmap);
+               }
+               Bitmap* pPressBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_PLUS_PRESS);
+               if (pPressBitmap)
+               {
+                       pPressBitmap->Scale(Dimension(W_ATTACH_BUTTON, W_ATTACH_BUTTON));
+                       __pAddAttachement->SetPressedBitmap(Point(0, 0), *pPressBitmap);
+               }
+               __pAddAttachement->SetActionId(IDA_COMPOSE_ADD_ATTACHEMENT);
+               __pAddAttachement->AddActionEventListener(*this);
+
+#ifdef _DISABLE_MMS_FEATURE_
+               __pAddAttachement->SetEnabled(false);
+               Bitmap* pCircleDimBg = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_CIRCLE_BUTTON_BG_DIM);
+               if (pCircleDimBg)
+               {
+                       pCircleDimBg->Scale(Dimension(W_ATTACH_BUTTON, W_ATTACH_BUTTON));
+                       __pAddAttachement->SetNormalBackgroundBitmap(*pCircleDimBg);
+               }
+               __pAddAttachement->SetDisabledBitmap(Point(0, 0), *pNormalBitmap);
+#endif
+       }
+       __pSendMessage = static_cast<Button*>(GetControl(L"IDC_SEND_BUTTON"));
+       if (__pSendMessage)
+       {
+               int pointY = (panelHeight - __pSendMessage->GetHeight()) / 2;
+               __pSendMessage->SetBounds(Rectangle(GetWidth() - (MARGIN_16PX + __pSendMessage->GetWidth()), pointY, __pSendMessage->GetWidth(), __pSendMessage->GetHeight()));
+//             Bitmap* pNormalBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SEND_MESSAGE, Dimension(W_ICON_64PX, H_ICON_64PX));
+//             if (pNormalBitmap)
+//             {
+//                     __pSendMessage->SetNormalBitmap(Point((__pSendMessage->GetWidth() - pNormalBitmap->GetWidth()) / 2, (__pSendMessage->GetHeight() - pNormalBitmap->GetHeight()) / 2), *pNormalBitmap);
+//                     __pSendMessage->SetPressedBitmap(Point((__pSendMessage->GetWidth() - pNormalBitmap->GetWidth()) / 2, (__pSendMessage->GetHeight() - pNormalBitmap->GetHeight()) / 2), *pNormalBitmap);
+//                     __pSendMessage->SetDisabledBitmap(Point((__pSendMessage->GetWidth() - pNormalBitmap->GetWidth()) / 2, (__pSendMessage->GetHeight() - pNormalBitmap->GetHeight()) / 2), *pNormalBitmap);
+//             }
+               __pSendMessage->SetActionId(IDA_COMPOSE_SEND);
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_SEND_ABB", strText);
+               __pSendMessage->SetText(strText);
+               __pSendMessage->AddActionEventListener(*this);
+               __pSendMessage->SetEnabled(false);
+       }
+       __pComposeInfoLabel = static_cast<Label*>(GetControl(L"IDC_CHARCOUNTER_LABEL"));
+       if (__pComposeInfoLabel && __pSendMessage)
+       {
+               __pComposeInfoLabel->SetMargin(0, 0);
+               int pointY = (__pSendMessage->GetY() - __pComposeInfoLabel->GetHeight() - MARGIN_5PX);
+               __pComposeInfoLabel->SetBounds(Rectangle(GetWidth() - (MARGIN_16PX + __pComposeInfoLabel->GetWidth()), pointY,
+                                                                                                __pComposeInfoLabel->GetWidth(), __pComposeInfoLabel->GetHeight()));
+               __pComposeInfoLabel->SetTextColor(Color::GetColor(COLOR_ID_WHITE));
+               __pComposeInfoLabel->SetShowState(false);
+       }
+       __pScrollPanel = static_cast<ScrollPanel*>(GetControl(L"IDC_SCROLLPANEL"));
+       SetShowState(false);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+void
+MessageComposePanel::ShowDefaultUi(void)
+{
+       AppLogDebug("ENTER");
+       CreatePage();
+       SetShowState(true);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+MediaTextExpandEditArea*
+MessageComposePanel::CreatePage(const String& pageText)
+{
+       AppLogDebug("ENTER");
+       Panel* pImageTextPanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                  GetControl(L"IDC_PANEL_IMAGE_TEXT"));
+       MediaTextExpandEditArea* pComposePage = null;
+       if (pImageTextPanel)
+       {
+               int controlCount = pImageTextPanel->GetControlCount();
+               int posY(0);
+               if (controlCount > 0)
+               {
+                       Control* pControl = pImageTextPanel->GetControl(controlCount - 1);
+                       posY += pControl->GetHeight() + MARGIN_16PX;
+               }
+               pComposePage = new (std::nothrow) MediaTextExpandEditArea();
+               pComposePage->Construct(Rectangle(0, posY, __pScrollPanel->GetWidth(), MIN_COMPOSE_EDITOR_HEIGHT));
+               pComposePage->AddKeypadEventListener(*this);
+               pComposePage->SetSizeChangeEventListener(*this);
+               pComposePage->AddFocusEventListener(*this);
+               pComposePage->AddTextEventListener(*this);
+               pComposePage->SetDeleteActionId(IDA_COMPOSE_DELETE_ATTACHEMENT);
+               pComposePage->AddActionEventListener(*this);
+               pComposePage->SetText(pageText);
+               pImageTextPanel->AddControl(*pComposePage);
+               __pScrollPanel->ScrollToBottom();
+               if (__pSizeChangeListener)
+               {
+                       __pSizeChangeListener->OnSizeIncrease(*this);
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pComposePage;
+}
+
+void
+MessageComposePanel::AddAttachementElement(const String& attachFile)
+{
+       AppLogDebug("ENTER");
+       Panel* pAttachementPanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                        GetControl(L"IDC_PANEL_ATTACHEMENT"));
+       if (pAttachementPanel)
+       {
+               int controlCount = pAttachementPanel->GetControlCount();
+               int posY(0);
+               if (controlCount > 0)
+               {
+                       Control* pControl = pAttachementPanel->GetControl(controlCount - 1);
+                       posY += pControl->GetHeight() + MARGIN_16PX;
+               }
+               AttachementControl* pAttachCntl = new (std::nothrow) AttachementControl(attachFile);
+               pAttachCntl->Construct(Rectangle(0, posY, __pScrollPanel->GetWidth(), 60));
+               pAttachCntl->SetDeleteActionId(IDA_COMPOSE_DELETE_ATTACHEMENT);
+               pAttachCntl->AddActionEventListener(*this);
+               pAttachementPanel->AddControl(*pAttachCntl);
+               __pScrollPanel->ScrollToTop();
+
+               if (__pSizeChangeListener)
+               {
+                       __pSizeChangeListener->OnSizeIncrease(*this);
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MessageComposePanel::AddSubjectField(const String& subjectText)
+{
+       AppLogDebug("ENTER");
+       Panel* pSubjectPanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                GetControl(L"IDC_PANEL_SUBJECT"));
+       if (pSubjectPanel)
+       {
+               SubjectControl* pSubjectCntl = new (std::nothrow) SubjectControl();
+               pSubjectCntl->Construct(Rectangle(0, 0, __pScrollPanel->GetWidth(), 71));
+               pSubjectCntl->SetDeleteActionId(IDA_COMPOSE_DELETE_ATTACHEMENT);
+               pSubjectCntl->AddActionEventListener(*this);
+               pSubjectCntl->AddKeypadEventListener(*this);
+               pSubjectCntl->AddFocusEventListener(*this);
+               pSubjectCntl->AddTextEventListener(*this);
+               pSubjectCntl->SetText(subjectText);
+               pSubjectPanel->AddControl(*pSubjectCntl);
+               if (__pSizeChangeListener)
+               {
+                       __pSizeChangeListener->OnSizeIncrease(*this);
+               }
+               __pScrollPanel->ScrollToTop();
+               // Check is it MMS, change button icon.
+               RequestId requestId = REQUEST_CHECK_COMPOSE_STATE;
+               SendUserEvent(requestId, null);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+MsgResponse
+MessageComposePanel::InsertFileToPage(const String& selectFilepath)
+{
+       AppLogDebug("ENTER");
+       __pSelectFilePath = selectFilepath;
+       // Check DRM file.
+       bool isDrmFile(false);
+       //      DrmInfo drmInfo;
+       //      result r = drmInfo.Construct(filePath);
+       //      if( r == E_SUCCESS )
+       //      {
+       //              DrmMethodType methodType = drmInfo.GetDrmMethodType();
+       //              if((methodType == DRM_METHOD_TYPE_FORWARD_LOCK) ||
+       //                              (methodType == DRM_METHOD_TYPE_FORWARD_LOCK))
+       //              {
+       //                      AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       //                      return COMPOSER_RETURN_DRM_FORWARDLOCK;
+       //              }
+       //              isDrmFile = drmInfo.IsDrmFile();
+       //      }
+       MsgResponse returnType(MSG_RESPONSE_SUCCESS);
+       //Check file Size before insert it.
+       long long int composeSize = GetMessageComposeSize();
+       long long int fileSizeBytes = GetFileSize(selectFilepath);
+       __remainSizeBytes = (MAX_MMS_SIZE - composeSize);
+       if (__remainSizeBytes > fileSizeBytes)
+       {
+               // Check is it image file
+               MediaType mediaType = CommonUtil::GetMediaType(selectFilepath);
+               if (mediaType == MEDIA_TYPE_IMAGE ||
+                       mediaType == MEDIA_TYPE_VIDEO ||
+                       mediaType == MEDIA_TYPE_AUDIO)
+               {
+                       // Copy To MMS compose temp file.
+                       String mmsDataPath(App::GetInstance()->GetAppDataPath());
+                       mmsDataPath.Append(File::GetFileName(selectFilepath));
+                       AppLogDebug("***MMS DATA PATH: %S ****", mmsDataPath.GetPointer());
+                       File::Copy(selectFilepath, mmsDataPath, true);
+                       if (!__pFocusControl)
+                       {
+                               Panel* pImageTextPanel = static_cast<Panel*>(__pScrollPanel->GetControl(L"IDC_PANEL_IMAGE_TEXT"));
+                               __pFocusControl = static_cast<ComposeBaseControl*>(pImageTextPanel->GetControl(0));
+                       }
+                       MediaTextExpandEditArea* pFocusComposePage = static_cast<MediaTextExpandEditArea*>(__pFocusControl);
+                       if (pFocusComposePage->IsVideoExist() ||
+                               (pFocusComposePage->IsImageExist() && mediaType == MEDIA_TYPE_IMAGE) ||
+                               (pFocusComposePage->IsAudioExist() && mediaType == MEDIA_TYPE_AUDIO))
+                       {
+                               MediaTextExpandEditArea* pNewComposePage = CreatePage();
+                               if (pNewComposePage)
+                               {
+                                       pNewComposePage->SetMedia(mmsDataPath, mediaType);
+                               }
+                       }
+                       else
+                       {
+                               pFocusComposePage->SetMedia(mmsDataPath, mediaType);
+                               pFocusComposePage->SetFocus();
+                       }
+               }
+               else
+               {
+                       AddAttachementElement(selectFilepath);
+               }
+               RequestId requestId = REQUEST_CHECK_COMPOSE_STATE;
+               SendUserEvent(requestId, null);
+       }
+       else
+       {
+               if (!CommonUtil::IsImageFile(selectFilepath) || isDrmFile)
+               {
+                       AppLog("Return: COMPOSER_RETURN_OVERSIZE_FILE");
+                       ShowSizeErrorPopup();
+                       return MSG_RESPONSE_OVERSIZE_FILE;
+               }
+               // Check resizing quality.
+               int percent = __remainSizeBytes * 100 / fileSizeBytes;
+               if (percent < 10)
+               {
+                       ShowSizeErrorPopup();
+                       // Low quality.
+                       AppLog("Too low space, not enough size to attach");
+                       return MSG_RESPONSE_FAIL;
+               }
+               if (!__pCompressProgressPopup)
+               {
+                       __pCompressProgressPopup = new (std::nothrow) CompressPopup();
+                       __pCompressProgressPopup->Construct(false);
+                       __pCompressProgressPopup->Show();
+               }
+               // Create thread to resize.
+               if (__pWorkerThread)
+               {
+                       delete __pWorkerThread;
+               }
+               __pWorkerThread = new (std::nothrow) Thread();
+               __pWorkerThread->Construct(*this);
+               result r = __pWorkerThread->Start();
+               if (r != E_SUCCESS)
+               {
+                       AppLogDebug("Resize image: Unable to start worker thread");
+                       return MSG_RESPONSE_FAIL;
+               }
+               AppLogDebug("Resizing image in worker thread");
+               return MSG_RESPONSE_RESIZE_IMAGE;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return returnType;
+}
+
+void
+MessageComposePanel::ShowSizeErrorPopup(void)
+{
+       AppLogDebug("ENTER");
+       if (__pCompressProgressPopup)
+       {
+               delete __pCompressProgressPopup;
+               __pCompressProgressPopup = null;
+       }
+       if (!__pSizeExceedPopup)
+       {
+               __pSizeExceedPopup = new (std::nothrow) Popup();
+               __pSizeExceedPopup->Construct(L"IDL_UNABLE_ATTACH_MESSAGE_POPUP");
+               Button* pCloseButton = static_cast<Button*>(__pSizeExceedPopup->GetControl(L"IDC_CLOSE_BUTTON"));
+               pCloseButton->SetActionId(IDA_CLOSE_POPUP);
+               pCloseButton->AddActionEventListener(*this);
+               Panel* pPanel = static_cast<Panel*>(__pSizeExceedPopup->GetControl(L"IDC_LABEL"));
+               pPanel->SetBackgroundColor(COLOR_COMPOSE_PANEL_BG);
+               Timer* pTimerForMaximumsizePopup = new (std::nothrow) Timer();
+               pTimerForMaximumsizePopup->Construct(*this);
+               pTimerForMaximumsizePopup->Start(3000);
+               __pSizeExceedPopup->Show();
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MessageComposePanel::OnTimerExpired(Timer& timer)
+{
+       AppLogDebug("ENTER");
+       if (__pSizeExceedPopup)
+       {
+               delete __pSizeExceedPopup;
+               __pSizeExceedPopup = null;
+       }
+       delete &timer;
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+void
+MessageComposePanel::SetComposeEventListener(IComposeEventObserver& listener)
+{
+       AppLogDebug("ENTER");
+       __pCompseEventListener = &listener;
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MessageComposePanel::SetKeypadEventListener(IKeypadEventListener& listener)
+{
+       AppLogDebug("ENTER");
+       __pKeypadListener = &listener;
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MessageComposePanel::SetSizeChangeEventListener(ISizeChangeEventListener& listener)
+{
+       AppLogDebug("ENTER");
+       __pSizeChangeListener = &listener;
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+int
+MessageComposePanel::GetPanelHeight(const Panel& panel) const
+{
+       AppLogDebug("ENTER");
+       int controlCount = panel.GetControlCount();
+       int height(0);
+       if (controlCount > 0)
+       {
+               for (int index = 0; index < controlCount; index++)
+               {
+                       Control* pControl = panel.GetControl(index);
+                       height += pControl->GetHeight();
+               }
+               height += (MARGIN_16PX * (controlCount - 1));
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return height;
+}
+
+int
+MessageComposePanel::GetDisplayHeight(void) const
+{
+       AppLogDebug("ENTER");
+       // Include top and bottom margin
+       int panelCount = __pScrollPanel->GetControlCount();
+       int height(0);
+       if (panelCount > 0)
+       {
+               for (int index = 0; index < panelCount; index++)
+               {
+                       Panel* pPanel = static_cast<Panel*>(__pScrollPanel->GetControl(index));
+                       int panelHeight = GetPanelHeight(*pPanel);
+                       if (panelHeight > 0)
+                       {
+                               height += panelHeight + MARGIN_16PX;
+                       }
+               }
+               height -= MARGIN_16PX; // Gap should be add between two panel.
+       }
+       else
+       {
+               height = GetMinimumSize().height;
+       }
+       // Add to margin and bottom margin
+       height = height + MARGIN_20PX + MARGIN_20PX;
+
+       if (height > GetMaximumSize().height)
+       {
+               height = GetMaximumSize().height;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return height;
+}
+
+result
+MessageComposePanel::SetBounds(const Rectangle& rect)
+{
+       AppLogDebug("ENTER");
+       result r = E_SUCCESS;
+       Rectangle prvBounds = GetBounds();
+       if (prvBounds.height == rect.height)
+       {
+               AdjustChildControl();
+               __pScrollPanel->ScrollToBottom();
+       }
+       r = Panel::SetBounds(rect);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+void
+MessageComposePanel::AdjustChildControl(void)
+{
+       AppLogDebug("ENTER");
+       int panelPosY(0);
+       int controlCount = __pScrollPanel->GetControlCount();
+       for (int index = 0; index < controlCount; index++)
+       {
+               Panel* pControlPanel = static_cast<Panel*>(__pScrollPanel->GetControl(index));
+               int cntlPosY(0);
+               for (int cntlIndex = 0; cntlIndex < pControlPanel->GetControlCount(); cntlIndex++)
+               {
+                       Control* pControl = pControlPanel->GetControl(cntlIndex);
+                       pControl->SetBounds(Rectangle(0, cntlPosY, pControl->GetWidth(), pControl->GetHeight()));
+                       cntlPosY += pControl->GetHeight() + MARGIN_16PX;
+               }
+               int panelHeight = GetPanelHeight(*pControlPanel);
+               pControlPanel->SetBounds(Rectangle(0, panelPosY, __pScrollPanel->GetWidth(), panelHeight));
+               if (panelHeight > 0)
+               {
+                       panelPosY += panelHeight + MARGIN_16PX;
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MessageComposePanel::OnBoundsChanged(const Rectangle& oldRect, const Rectangle& newRect)
+{
+       AppLogDebug("ENTER");
+       // Control initialization not yet done
+       if (__pAddAttachement == null)
+               return;
+       // Keep send and attachment button  current position
+       int heightOffset = newRect.height - oldRect.height;
+       Point pos = __pAddAttachement->GetPosition();
+       pos.y += heightOffset;
+       __pAddAttachement->SetPosition(pos);
+       pos = __pSendMessage->GetPosition();
+       pos.y += heightOffset;
+       __pSendMessage->SetPosition(pos);
+       pos.y -= (__pComposeInfoLabel->GetHeight() + MARGIN_5PX);
+       __pComposeInfoLabel->SetPosition(pos);
+       // Reduce top and bottom margin
+       pos = __pScrollPanel->GetPosition();
+       __pScrollPanel->SetBounds(Rectangle(pos.x, pos.y,
+                                                                               __pScrollPanel->GetWidth(), GetHeight() - (MARGIN_20PX * 2)));
+       // Adjust child control
+       AdjustChildControl();
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MessageComposePanel::OnKeypadActionPerformed(Control& source,
+                                                                                        KeypadAction keypadAction)
+{
+       AppLogDebug("ENTER");
+       if (__pKeypadListener)
+       {
+               __pKeypadListener->OnKeypadActionPerformed(source, keypadAction);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MessageComposePanel::OnKeypadClosed(Control& source)
+{
+       AppLogDebug("ENTER");
+       if (__pKeypadListener)
+       {
+               __pKeypadListener->OnKeypadClosed(source);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MessageComposePanel::OnKeypadOpened(Control& source)
+{
+       AppLogDebug("ENTER");
+       if (__pKeypadListener)
+       {
+               __pKeypadListener->OnKeypadOpened(source);
+       }
+       AppLogDebug("Exit");
+}
+
+void
+MessageComposePanel::OnKeypadBoundsChanged(Control& source)
+{
+       AppLogDebug("ENTER");
+       if (__pKeypadListener)
+       {
+               __pKeypadListener->OnKeypadBoundsChanged(source);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MessageComposePanel::OnKeypadWillOpen(Control& source)
+{
+       AppLogDebug("ENTER");
+       if (__pKeypadListener)
+       {
+               __pKeypadListener->OnKeypadWillOpen(source);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MessageComposePanel::OnSizeIncrease(const Control& control)
+{
+       AppLogDebug("ENTER");
+       if (__pSizeChangeListener)
+       {
+               __pScrollPanel->SetScrollBarVisible(true);
+               __pSizeChangeListener->OnSizeIncrease(*this);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MessageComposePanel::OnSizeDecrease(const Control& control)
+{
+       AppLogDebug("ENTER");
+       if (__pSizeChangeListener)
+       {
+               __pSizeChangeListener->OnSizeDecrease(*this);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MessageComposePanel::OnActionPerformed(const Control& source, int actionId)
+{
+       AppLogDebug("ENTER");
+       switch (actionId)
+       {
+       case IDA_COMPOSE_ADD_ATTACHEMENT:
+       {
+               if (__pAttachPopup)
+               {
+                       delete __pAttachPopup;
+               }
+               __pAttachPopup = new (std::nothrow) AttachListPopup(*this);
+               Panel* pSubjectPanel = static_cast<Panel*>(__pScrollPanel->GetControl(L"IDC_PANEL_SUBJECT"));
+               __pAttachPopup->Construct(pSubjectPanel->GetControlCount() > 0);
+               __pAttachPopup->Show();
+       }
+       break;
+
+       case IDA_COMPOSE_DELETE_ATTACHEMENT:
+       {
+               ComposeBaseControl* pComposeCntl = static_cast<ComposeBaseControl*>(source.GetParent());
+               if (pComposeCntl->GetControlType() == COMPOSE_CONTROL_IMAGE_TEXT)
+               {
+                       static_cast<MediaTextExpandEditArea*>(pComposeCntl)->ShowKeypad(false);
+                       static_cast<Panel*>(__pScrollPanel->GetControl(L"IDC_PANEL_IMAGE_TEXT"))->
+                       RemoveControl(*source.GetParent());
+               }
+               else if (pComposeCntl->GetControlType() == COMPOSE_CONTROL_SUBJECT)
+               {
+                       static_cast<Panel*>(__pScrollPanel->GetControl(L"IDC_PANEL_SUBJECT"))->
+                       RemoveControl(*source.GetParent());
+                       // SetFocus
+                       Panel* pImageTextPanel = static_cast<Panel*>(__pScrollPanel->GetControl(L"IDC_PANEL_IMAGE_TEXT"));
+                       if (pImageTextPanel)
+                       {
+                               (static_cast<MediaTextExpandEditArea*>(pImageTextPanel->GetControl(0)))->SetFocus();
+                       }
+               }
+               else if (pComposeCntl->GetControlType() == COMPOSE_CONTROL_ATTACHEMENT)
+               {
+                       static_cast<Panel*>(__pScrollPanel->GetControl(L"IDC_PANEL_ATTACHEMENT"))->
+                       RemoveControl(*source.GetParent());
+               }
+               // At least there should be one compose element
+               __pSizeChangeListener->OnSizeDecrease(*this);
+               // Check is it MMS, change button icon.
+               RequestId requestId = REQUEST_CHECK_COMPOSE_STATE;
+               SendUserEvent(requestId, null);
+       }
+       break;
+
+       case IDA_COMPOSE_SEND:
+       {
+               if (__pCompseEventListener)
+               {
+                       __pCompseEventListener->OnSendButtonClick();
+               }
+       }
+       break;
+
+       case IDA_CLOSE_POPUP:
+       {
+               if (__pSizeExceedPopup)
+               {
+                       delete __pSizeExceedPopup;
+                       __pSizeExceedPopup = null;
+               }
+       }
+       break;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MessageComposePanel::OnFocusGained(const Control& source)
+{
+       AppLogDebug("ENTER");
+       __pFocusControl = static_cast<ComposeBaseControl*>(source.GetParent());
+       // Check delete operation need to enable for image text control,
+       // By default at least there should be one compose element.
+       if (__pFocusControl->GetControlType() == COMPOSE_CONTROL_IMAGE_TEXT)
+       {
+               Panel* pImageTextPanel = static_cast<Panel*>(__pScrollPanel->GetControl(L"IDC_PANEL_IMAGE_TEXT"));
+               int elementCount = pImageTextPanel->GetControlCount();
+               int imageTextCntlCount(0);
+               for (int index = 0; index < elementCount; index++)
+               {
+                       ComposeBaseControl* pComposeElement = static_cast<ComposeBaseControl*>(pImageTextPanel->GetControl(index));
+                       if (pComposeElement->GetControlType() == COMPOSE_CONTROL_IMAGE_TEXT)
+                       {
+                               imageTextCntlCount++;
+                       }
+               }
+               static_cast<MediaTextExpandEditArea*>(__pFocusControl)->SetDeleteShowState(imageTextCntlCount > 1);
+       }
+       else if (__pFocusControl->GetControlType() == COMPOSE_CONTROL_SUBJECT)
+       {
+               static_cast<SubjectControl*>(__pFocusControl)->SetDeleteShowState(true);
+       }
+
+       RequestId requestId = REQUEST_UDATE_FOCUS;
+       GetParent()->SendUserEvent(requestId, null);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+MessageComposePanel::OnFocusLost(const Control& source)
+{
+       AppLogDebug("ENTER");
+       ComposeBaseControl* pComposeElement = static_cast<ComposeBaseControl*>(source.GetParent());
+       if(__pFocusControl)
+       {
+               if (__pFocusControl->GetControlType() == COMPOSE_CONTROL_IMAGE_TEXT)
+               {
+                       static_cast<MediaTextExpandEditArea*>(pComposeElement)->SetDeleteShowState(false);
+               }
+               else if (__pFocusControl->GetControlType() == COMPOSE_CONTROL_SUBJECT)
+               {
+                       static_cast<SubjectControl*>(pComposeElement)->SetDeleteShowState(false);
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MessageComposePanel::OnAppControlCompleteResponseReceived(const AppId& appId, const String& operationId,
+                                                                                                                 AppCtrlResult appControlResult, const IMap* pResultMap)
+{
+       AppLogDebug("ENTER");
+
+       if (pResultMap && pResultMap->GetCount() > 0)
+       {
+               AppLogDebug("Reasult list Count : %d", pResultMap->GetCount());
+
+               if (appControlResult == APP_CTRL_RESULT_SUCCEEDED)
+               {
+                       // Prepare selected file list and start processing
+                       __pSelectedFilesQueue = (ArrayList*) GetSelectedFileListN(operationId, pResultMap);
+                       ProcessNextFileComposeQueue();
+               }
+               else if (appControlResult == APP_CTRL_RESULT_CANCELED)
+               {
+                       AppLogDebug("Appcontrol operation canceled");
+               }
+               else if (appControlResult == APP_CTRL_RESULT_FAILED)
+               {
+                       AppLogDebug("Appcontrol operation faild");
+               }
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+result
+MessageComposePanel::OnDraw(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       Canvas* pCanvas = GetCanvasN();
+       if (pCanvas)
+       {
+               Rectangle rect = GetBounds();
+               pCanvas->SetForegroundColor(Color(57, 60, 65));
+               pCanvas->DrawLine(Point(0, 0), Point(rect.width, 0));
+               delete pCanvas;
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+void
+MessageComposePanel::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
+{
+       AppLogDebug("ENTER");
+       switch (requestId)
+       {
+       case REQUEST_CHECK_COMPOSE_STATE:
+       {
+               ShowComposeInfo();
+               // Check is it MMS, change button icon.
+               if (IsMmsMode())
+               {
+                       __pCompseEventListener->OnComposeStateChange(COMPOSE_MMS);
+                       //Bitmap* pNormalBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SEND_MMS, Dimension(W_ICON_64PX, H_ICON_64PX));
+                       //if (pNormalBitmap)
+                       //{
+                       //__pSendMessage->SetNormalBitmap(Point((__pSendMessage->GetWidth() - pNormalBitmap->GetWidth()) / 2, (__pSendMessage->GetHeight() - pNormalBitmap->GetHeight()) / 2), *pNormalBitmap);
+                       //__pSendMessage->SetPressedBitmap(Point((__pSendMessage->GetWidth() - pNormalBitmap->GetWidth()) / 2, (__pSendMessage->GetHeight() - pNormalBitmap->GetHeight()) / 2), *pNormalBitmap);
+                       //__pSendMessage->SetDisabledBitmap(Point((__pSendMessage->GetWidth() - pNormalBitmap->GetWidth()) / 2, (__pSendMessage->GetHeight() - pNormalBitmap->GetHeight()) / 2), *pNormalBitmap);
+                       //}
+               }
+               else
+               {
+                       __pCompseEventListener->OnComposeStateChange(COMPOSE_SMS);
+                       //Bitmap* pNormalBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SEND_MESSAGE, Dimension(W_ICON_64PX, H_ICON_64PX));
+                       //if (pNormalBitmap)
+                       //{
+                       //__pSendMessage->SetNormalBitmap(Point((__pSendMessage->GetWidth() - pNormalBitmap->GetWidth()) / 2, (__pSendMessage->GetHeight() - pNormalBitmap->GetHeight()) / 2), *pNormalBitmap);
+                       //__pSendMessage->SetPressedBitmap(Point((__pSendMessage->GetWidth() - pNormalBitmap->GetWidth()) / 2, (__pSendMessage->GetHeight() - pNormalBitmap->GetHeight()) / 2), *pNormalBitmap);
+                       //__pSendMessage->SetDisabledBitmap(Point((__pSendMessage->GetWidth() - pNormalBitmap->GetWidth()) / 2, (__pSendMessage->GetHeight() - pNormalBitmap->GetHeight()) / 2), *pNormalBitmap);
+                       //}
+               }
+               __pSendMessage->Draw();
+               __pSendMessage->Show();
+       }
+       break;
+
+       case REQUEST_IMAGE_RESIZE_RESPONSE:
+       {
+               int rType = ((Integer*) pArgs->GetAt(0))->ToInt();
+               if (rType == MSG_RESPONSE_RESIZE_IMAGE)
+               {
+                       if (!__pFocusControl)
+                       {
+                               Panel* pImageTextPanel = static_cast<Panel*>(__pScrollPanel->GetControl(L"IDC_PANEL_IMAGE_TEXT"));
+                               __pFocusControl = static_cast<ComposeBaseControl*>(pImageTextPanel->GetControl(0));
+                       }
+                       MediaTextExpandEditArea* pFocusComposePage = static_cast<MediaTextExpandEditArea*>(__pFocusControl);
+                       if (pFocusComposePage->IsVideoExist() || pFocusComposePage->IsImageExist())
+                       {
+                               MediaTextExpandEditArea* pComposePage = CreatePage();
+                               if (pComposePage)
+                               {
+                                       pComposePage->SetMedia(__pSelectFilePath, MEDIA_TYPE_IMAGE);
+                               }
+                       }
+                       else
+                       {
+                               pFocusComposePage->SetMedia(__pSelectFilePath, MEDIA_TYPE_IMAGE);
+                               pFocusComposePage->SetFocus();
+                       }
+               }
+               RequestId rqstId = REQUEST_CHECK_COMPOSE_STATE;
+               SendUserEvent(rqstId, null);
+               // After resizing image need to look selected file in queue.
+               ProcessNextFileComposeQueue();
+       }
+       break;
+
+       case REQUEST_DESTROY_ATTACH_POPUP:
+       {
+               if (__pAttachPopup)
+               {
+                       delete __pAttachPopup;
+                       __pAttachPopup = null;
+               }
+       }
+       break;
+
+       case REQUEST_ADD_SUBJECT:
+       {
+               AddSubjectField();
+       }
+       break;
+
+       case REQUEST_SHOW_COMPOSE_INFO:
+       {
+               ShowComposeInfo();
+       }
+       break;
+
+       case REQUEST_OPEN_GALLARY:
+       case REQUEST_TAKE_PICTURE:
+       case REQUEST_CAPTURE_VIDEO:
+       case REQUEST_RECORD_AUDIO:
+       case REQUEST_OPEN_MY_FILES:
+       case REQUEST_ADD_CONTACTS:
+       case REQUEST_ADD_CALENDAR:
+       case REQUEST_ADD_MEMO:
+       {
+               RequestType requestType = (RequestType) requestId;
+               LaunchAppControl(requestType);
+       }
+       break;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MessageComposePanel::OnKeyReleased(const Control& source, KeyCode keyCode)
+{
+       AppLogDebug("ENTER");
+       // Show char counter and byte information respect to SMS and MMS.
+       ShowComposeInfo();
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MessageComposePanel::OnTextValueChanged(const Control& source)
+{
+       AppLogDebug("ENTER");
+       ShowComposeInfo();
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+bool
+MessageComposePanel::IsComposeFieldEmpty(void)
+{
+       AppLogDebug("ENTER");
+       String strComposeText = GetSmsText();
+       if(strComposeText.GetLength() > 0)
+       {
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+               return false;
+       }
+       else
+       {
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+               return true;
+       }
+}
+
+result
+MessageComposePanel::LaunchAppControl(RequestType requestType)
+{
+       AppLogDebug("ENTER");
+       result r = E_SUCCESS;
+       AppControl* pAppCntl = null;
+
+       HashMap* pHashMap = new (std::nothrow) HashMap();
+       if (pHashMap)
+       {
+               pHashMap->Construct();
+               switch (requestType)
+               {
+               case REQUEST_OPEN_GALLARY:
+               {
+                       pHashMap->Add((new (std::nothrow) String(L"type")), (new (std::nothrow) String(IDS_TYPE_IMAGE)));
+                       pHashMap->Add((new (std::nothrow) String(L"selectionType")), (new (std::nothrow) String(IDS_SELTYPE_MULTIPLE)));
+                       pAppCntl = AppManager::FindAppControlN(IDS_APPCONTROL_PROVIDER_GALLERY, IDS_APPCONTROL_OPERATION_PICK);
+               }
+               break;
+
+               case REQUEST_TAKE_PICTURE:
+               {
+                       pHashMap->Add((new (std::nothrow) String(L"type")), (new (std::nothrow) String(IDS_TYPE_CAMERA)));
+                       pAppCntl = AppManager::FindAppControlN(IDS_APPCONTROL_PROVIDER_CAMERA, IDS_APPCONTROL_OPERATION_CAPTURE);
+               }
+               break;
+
+               case REQUEST_CAPTURE_VIDEO:
+               {
+                       pHashMap->Add((new (std::nothrow) String(L"type")), (new (std::nothrow) String(L"video")));
+                       pAppCntl = AppManager::FindAppControlN(IDS_APPCONTROL_PROVIDER_CAMERA, IDS_APPCONTROL_OPERATION_RECORD);
+               }
+               break;
+
+               case REQUEST_RECORD_AUDIO:
+               {
+                       pHashMap->Add((new (std::nothrow) String(L"type")), (new (std::nothrow) String(IDS_TYPE_AUDIO)));
+                       pAppCntl = AppManager::FindAppControlN(IDS_APPCONTROL_PROVIDER_AUDIO, IDS_APPCONTROL_OPERATION_RECORD);
+               }
+               break;
+
+               case REQUEST_OPEN_MY_FILES:
+               {
+                       pHashMap->Add((new (std::nothrow) String(L"type")), (new (std::nothrow) String(L"all")));
+                       pHashMap->Add((new (std::nothrow) String(L"selectionType")), (new (std::nothrow) String(L"multiple")));
+                       pAppCntl = AppManager::FindAppControlN(IDS_APPCONTROL_PROVIDER_MEDIA, IDS_APPCONTROL_OPERATION_PICK);
+               }
+               break;
+
+               case REQUEST_ADD_CONTACTS:
+               {
+                       pHashMap->Add((new (std::nothrow) String(L"selectionMode")), (new (std::nothrow) String(L"single")));
+                       pHashMap->Add((new (std::nothrow) String(L"returnType")), (new (std::nothrow) String(L"vcard")));
+                       pAppCntl = AppManager::FindAppControlN(IDS_APPCONTROL_PROVIDER_CONTACT, IDS_APPCONTROL_OPERATION_PICK);
+               }
+               break;
+
+               case REQUEST_ADD_CALENDAR:
+               {
+                       pHashMap->Add((new (std::nothrow) String(L"itemType")), (new (std::nothrow) String(L"event")));
+                       pAppCntl = AppManager::FindAppControlN(IDS_APPCONTROL_PROVIDER_CALENDAR, IDS_APPCONTROL_OPERATION_PICK);
+               }
+               break;
+
+               case REQUEST_ADD_MEMO:
+               {
+                       pHashMap->Add((new (std::nothrow) String(L"itemType")), (new (std::nothrow) String(L"memo")));
+                       pAppCntl = AppManager::FindAppControlN(IDS_APPCONTROL_PROVIDER_MEMO, IDS_APPCONTROL_OPERATION_PICK);
+               }
+               break;
+
+               default:
+                       break;
+               }
+
+               if (pAppCntl)
+               {
+                       pAppCntl->Start(null, null, pHashMap, this);
+                       delete pAppCntl;
+               }
+               pHashMap->RemoveAll(true);
+               delete pHashMap;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+String
+MessageComposePanel::GetSmsText(void) const
+{
+       AppLogDebug("ENTER");
+       Panel* pCompoasePanel = static_cast<Panel*>(__pScrollPanel->GetControl(L"IDC_PANEL_IMAGE_TEXT"));
+       MediaTextExpandEditArea* pComposePage = static_cast<MediaTextExpandEditArea*>(pCompoasePanel->GetControl(0));
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pComposePage->GetText();
+}
+
+MessageComposeData*
+MessageComposePanel::GetMessageComposeDataN(void) const
+{
+       AppLogDebug("ENTER");
+
+       MessageComposeData* pComposeData = null;
+       if (IsMmsMode())
+       {
+               String subjectText;
+               Panel* pSubjectPanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                        GetControl(L"IDC_PANEL_SUBJECT"));
+               if (pSubjectPanel->GetControlCount() > 0)
+               {
+                       subjectText.Append(((SubjectControl*) pSubjectPanel->GetControl(0))->GetText());
+               }
+               Panel* pCompoasePanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                         GetControl(L"IDC_PANEL_IMAGE_TEXT"));
+               ArrayList* pPageList = null;
+               if (pCompoasePanel && pCompoasePanel->GetControlCount() > 0)
+               {
+                       pPageList = new (std::nothrow) ArrayList();
+                       pPageList->Construct();
+                       for (int pageIndex = 0; pageIndex < pCompoasePanel->GetControlCount(); pageIndex++)
+                       {
+                               MediaTextExpandEditArea* pPageCntl = static_cast<MediaTextExpandEditArea*>(pCompoasePanel->
+                                                                                                                                                                                        GetControl(pageIndex));
+                               int maxDuration(__defaultPageDuration);
+                               MmsPageData* pPageData = new (std::nothrow) MmsPageData(pPageCntl->GetText());
+                               if (pPageData)
+                               {
+                                       if (pPageCntl->IsImageExist())
+                                       {
+                                               pPageData->SetImagePath(pPageCntl->GetMediaPath(MEDIA_TYPE_IMAGE));
+                                       }
+                                       else if (pPageCntl->IsVideoExist())
+                                       {
+                                               pPageData->SetVideoPath(pPageCntl->GetMediaPath(MEDIA_TYPE_VIDEO));
+                                               int fileDuration = CommonUtil::GetDuration(pPageCntl->GetMediaPath(MEDIA_TYPE_VIDEO));
+                                               if (maxDuration < fileDuration)
+                                               {
+                                                       maxDuration = fileDuration;
+                                               }
+                                       }
+                                       if (pPageCntl->IsAudioExist())
+                                       {
+                                               pPageData->SetAudioPath(pPageCntl->GetMediaPath(MEDIA_TYPE_AUDIO));
+                                               int fileDuration = CommonUtil::GetDuration(pPageCntl->GetMediaPath(MEDIA_TYPE_AUDIO));
+                                               if (maxDuration < fileDuration)
+                                               {
+                                                       maxDuration = fileDuration;
+                                               }
+                                       }
+                                       pPageData->setPageDuration(maxDuration);
+                                       if (pPageList->Add(pPageData) != E_SUCCESS)
+                                       {
+                                               delete pPageData;
+                                       }
+                               }
+                       }
+               }
+               Panel* pAttachmentPanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                               GetControl(L"IDC_PANEL_ATTACHEMENT"));
+               ArrayList* pAttachList = null;
+               if (pAttachmentPanel && pAttachmentPanel->GetControlCount() > 0)
+               {
+                       pAttachList = new (std::nothrow) ArrayList();
+                       pAttachList->Construct();
+                       for (int attachIndex = 0; attachIndex < pAttachmentPanel->GetControlCount(); attachIndex++)
+                       {
+                               AttachementControl* pAttachCntl = static_cast<AttachementControl*>(pAttachmentPanel->
+                                                                                                                                                                        GetControl(attachIndex));
+                               String* pAttachPath = new (std::nothrow) String(pAttachCntl->GetAttachementFilepath());
+                               if (pAttachPath && pAttachList->Add(pAttachPath) != E_SUCCESS)
+                               {
+                                       delete pAttachPath;
+                               }
+                       }
+               }
+               if (subjectText.GetLength() > 0 || pPageList || pAttachList)
+               {
+                       pComposeData = new (std::nothrow) MessageComposeData(subjectText, pPageList, pAttachList);
+               }
+       }
+       else
+       {
+               Panel* pCompoasePanel = static_cast<Panel*>(__pScrollPanel->GetControl(L"IDC_PANEL_IMAGE_TEXT"));
+               MediaTextExpandEditArea* pPageCntl = static_cast<MediaTextExpandEditArea*>(
+                       pCompoasePanel->GetControl(0));
+               String smsBodyText = pPageCntl->GetText();
+               if (smsBodyText.GetLength() > 0)
+               {
+                       pComposeData = new (std::nothrow) MessageComposeData(smsBodyText);
+               }
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return pComposeData;
+}
+
+String
+MessageComposePanel::GetMessageCounterInfo(int msgLength) const
+{
+       AppLogDebug("ENTER");
+
+       String counterMsg;
+       int length = 0;
+       int messagecount = 0;
+       int messaglength = MESSAGE_LENGTH;
+       if (msgLength < MESSAGE_LENGTH)
+       {
+               messagecount = msgLength / MESSAGE_LENGTH;
+               if (messagecount != 0)
+               {
+                       messaglength = MESSAGE_LENGTH * (messagecount + 1);
+               }
+               length = messaglength - msgLength;
+               counterMsg.Append(length);
+               if (messagecount != 0)
+               {
+                       counterMsg.Append("/");
+                       counterMsg.Append(messagecount);
+               }
+       }
+       else if (msgLength < MESSAGE_LENGTH + MESSAGE_LENGTH_2)
+       {
+               length = msgLength - MESSAGE_LENGTH ;
+               messagecount = length / MESSAGE_LENGTH_2 + 1;
+               messaglength = MESSAGE_LENGTH + MESSAGE_LENGTH_2;
+               length = messaglength - msgLength;
+               counterMsg.Append(length);
+               counterMsg.Append("/");
+               counterMsg.Append(messagecount + 1);
+       }
+       else
+       {
+               length = msgLength - MESSAGE_LENGTH - MESSAGE_LENGTH_2;
+               messagecount = length / MESSAGE_LENGTH_3 + 1;
+               if (messagecount > 1)
+               {
+                       messaglength = MESSAGE_LENGTH + MESSAGE_LENGTH_2 +(MESSAGE_LENGTH_3 * (messagecount));
+               }
+               else
+               {
+                       messaglength = MESSAGE_LENGTH + MESSAGE_LENGTH_2 + MESSAGE_LENGTH_3;
+               }
+               length = messaglength - msgLength;
+               counterMsg.Append(length);
+               counterMsg.Append("/");
+               counterMsg.Append(messagecount + 2);
+       }
+
+       Panel* pCompoasePanel = static_cast<Panel*>(__pScrollPanel->GetControl(L"IDC_PANEL_IMAGE_TEXT"));
+       MediaTextExpandEditArea* pPageCntl = static_cast<MediaTextExpandEditArea*>(pCompoasePanel->GetControl(0));
+       pPageCntl->SetLimitLength(1529);
+       if (messagecount >= 8)
+       {
+               if (messagecount > 8)
+               {
+                       String smsBodyText = pPageCntl->GetText();
+                       int maxLength = msgLength - 1525;
+                       smsBodyText.Remove(1524/4, maxLength/4);
+                       pPageCntl->ClearText();
+                       pPageCntl->SetText(smsBodyText);
+                       RequestId requestId = REQUEST_SHOW_COMPOSE_INFO;
+                       SendUserEvent(requestId, null);
+               }
+               else if (length < 5)
+               {
+                       String smsBodyText = pPageCntl->GetText();
+                       pPageCntl->SetLimitLength(smsBodyText.GetLength());
+                       counterMsg.Clear();
+                       counterMsg.Append(L"0");
+                       counterMsg.Append("/");
+                       counterMsg.Append(messagecount + 2);
+               }
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return counterMsg;
+}
+
+long long int
+MessageComposePanel::GetMessageComposeSize(void) const
+{
+       AppLogDebug("ENTER");
+       result r = E_SUCCESS;
+       long long sizeBytes(0);
+       // Calculate attachment size
+       Panel* pAttachmentPanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                       GetControl(L"IDC_PANEL_ATTACHEMENT"));
+       for (int index = 0; index < pAttachmentPanel->GetControlCount(); index++)
+       {
+               AttachementControl* pAttachCntl = (AttachementControl*) pAttachmentPanel->GetControl(index);
+               if (!pAttachCntl->GetAttachementFilepath().IsEmpty())
+               {
+                       FileAttributes fileAttr;
+                       r = File::GetAttributes(pAttachCntl->GetAttachementFilepath(), fileAttr);
+                       if (r == E_SUCCESS)
+                       {
+                               sizeBytes += fileAttr.GetFileSize();
+                       }
+               }
+       }
+       // Calculate image/Text size
+       Panel* pImageTextSlidePanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                               GetControl(L"IDC_PANEL_IMAGE_TEXT"));
+       for (int index = 0; index < pImageTextSlidePanel->GetControlCount(); index++)
+       {
+               MediaTextExpandEditArea* pComposeElement = (MediaTextExpandEditArea*)
+                                                                                                  pImageTextSlidePanel->GetControl(index);
+               // For Video
+               if (!pComposeElement->GetMediaPath(MEDIA_TYPE_VIDEO).IsEmpty())
+               {
+                       FileAttributes fileAttr;
+                       r = File::GetAttributes(pComposeElement->GetMediaPath(MEDIA_TYPE_IMAGE), fileAttr);
+                       if (r == E_SUCCESS)
+                       {
+                               sizeBytes += fileAttr.GetFileSize();
+                       }
+               }
+               else
+               {
+                       // For Audio
+                       if (!pComposeElement->GetMediaPath(MEDIA_TYPE_AUDIO).IsEmpty())
+                       {
+                               FileAttributes fileAttr;
+                               r = File::GetAttributes(pComposeElement->GetMediaPath(MEDIA_TYPE_IMAGE), fileAttr);
+                               if (r == E_SUCCESS)
+                               {
+                                       sizeBytes += fileAttr.GetFileSize();
+                               }
+                       }
+                       // For image
+                       if (!pComposeElement->GetMediaPath(MEDIA_TYPE_IMAGE).IsEmpty())
+                       {
+                               FileAttributes fileAttr;
+                               r = File::GetAttributes(pComposeElement->GetMediaPath(MEDIA_TYPE_IMAGE), fileAttr);
+                               if (r == E_SUCCESS)
+                               {
+                                       sizeBytes += fileAttr.GetFileSize();
+                               }
+                       }
+               }
+               // Include text length
+               sizeBytes += pComposeElement->GetText().GetLength();
+       }
+       Panel* pSubjectPanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                GetControl(L"IDC_PANEL_SUBJECT"));
+       if (pSubjectPanel && pSubjectPanel->GetControlCount() > 0)
+       {
+               sizeBytes += ((SubjectControl*) pSubjectPanel->GetControl(0))->GetText().GetLength();
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return sizeBytes;
+
+}
+
+long long int
+MessageComposePanel::GetFileSize(const String& filePath) const
+{
+       AppLogDebug("ENTER");
+       result r = E_SUCCESS;
+       long long int fileSizeBytes(0);
+       FileAttributes fileAttr;
+       r = File::GetAttributes(filePath, fileAttr);
+       if (r == E_SUCCESS)
+       {
+               fileSizeBytes = fileAttr.GetFileSize();
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return fileSizeBytes;
+}
+
+bool
+MessageComposePanel::IsMmsMode(void) const
+{
+       AppLogDebug("ENTER");
+
+       Panel* pSubjectPanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                GetControl(L"IDC_PANEL_SUBJECT"));
+       // Subject field available, it is MMS
+       if (pSubjectPanel->GetControlCount() > 0)
+               return true;
+       Panel* pAttachmentPanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                       GetControl(L"IDC_PANEL_ATTACHEMENT"));
+       if (pAttachmentPanel->GetControlCount() > 0)
+               return true;
+       Panel* pCompoasePanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                 GetControl(L"IDC_PANEL_IMAGE_TEXT"));
+       if (pCompoasePanel->GetControlCount() > 1)
+               return true;
+       MediaTextExpandEditArea* pMediaTextArea = static_cast<MediaTextExpandEditArea*>(pCompoasePanel->
+                                                                                                                                                                         GetControl(0));
+       if (pMediaTextArea->IsImageExist() || pMediaTextArea->IsAudioExist() || pMediaTextArea->IsVideoExist())
+               return true;
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return false;
+}
+
+void
+MessageComposePanel::Reset(void)
+{
+       AppLogDebug("ENTER");
+
+       Panel* pSubjectPanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                GetControl(L"IDC_PANEL_SUBJECT"));
+       pSubjectPanel->RemoveAllControls();
+       Panel* pAttachmentPanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                       GetControl(L"IDC_PANEL_ATTACHEMENT"));
+       pAttachmentPanel->RemoveAllControls();
+       Panel* pComposePanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                GetControl(L"IDC_PANEL_IMAGE_TEXT"));
+       pComposePanel->RemoveAllControls();
+       __pComposeInfoLabel->SetShowState(false);
+       CreatePage();
+       SetShowState(true);
+       __pSendMessage->SetEnabled(false);
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+MessageComposePanel::HideKeypad(void)
+{
+       AppLogDebug("ENTER");
+       ComposeBaseControl* pFocusCntl = ((ComposeBaseControl*) __pFocusControl);
+       if (pFocusCntl)
+       {
+               if (pFocusCntl->GetControlType() == COMPOSE_CONTROL_SUBJECT)
+               {
+                       ((SubjectControl*) pFocusCntl)->ShowKeypad(false);
+               }
+               else if (pFocusCntl->GetControlType() == COMPOSE_CONTROL_IMAGE_TEXT)
+               {
+                       ((MediaTextExpandEditArea*) pFocusCntl)->ShowKeypad(false);
+               }
+       }
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+
+}
+
+void
+MessageComposePanel::ShowKeypad(void)
+{
+       AppLogDebug("ENTER");
+       ComposeBaseControl* pFocusCntl = ((ComposeBaseControl*) __pFocusControl);
+       if (pFocusCntl)
+       {
+               if (pFocusCntl->GetControlType() == COMPOSE_CONTROL_SUBJECT)
+               {
+                       ((SubjectControl*) pFocusCntl)->ShowKeypad(true);
+               }
+               else if (pFocusCntl->GetControlType() == COMPOSE_CONTROL_IMAGE_TEXT)
+               {
+                       ((MediaTextExpandEditArea*) pFocusCntl)->ShowKeypad(true);
+               }
+       }
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+
+}
+
+void
+MessageComposePanel::SetTextSize(int textSize)
+{
+       AppLogDebug("ENTER");
+       //Set compose editor text size
+       Panel* pImageTextSlidePanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                               GetControl(L"IDC_PANEL_IMAGE_TEXT"));
+       for (int index = 0; index < pImageTextSlidePanel->GetControlCount(); index++)
+       {
+               MediaTextExpandEditArea* pComposeElement = (MediaTextExpandEditArea*)
+                                                                                                  pImageTextSlidePanel->GetControl(index);
+               pComposeElement->SetTextSize(textSize);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MessageComposePanel::ClearText(void)
+{
+       AppLogDebug("ENTER");
+       //Set compose editor text size
+       Panel* pImageTextSlidePanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                               GetControl(L"IDC_PANEL_IMAGE_TEXT"));
+       for (int index = 0; index < pImageTextSlidePanel->GetControlCount(); index++)
+       {
+               MediaTextExpandEditArea* pComposeElement = (MediaTextExpandEditArea*)
+                                                                                                  pImageTextSlidePanel->GetControl(index);
+               pComposeElement->ClearText();
+       }
+       __pComposeInfoLabel->SetShowState(false);
+       __pSendMessage->SetEnabled(false);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MessageComposePanel::SetFocusToEditor(void)
+{
+       AppLogDebug("ENTER");
+       Panel* pComposePanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                GetControl(L"IDC_PANEL_IMAGE_TEXT"));
+       int focusIndex = pComposePanel->GetControlCount() - 1;
+       MediaTextExpandEditArea* pComposePage = (MediaTextExpandEditArea*) pComposePanel->GetControl(focusIndex);
+       pComposePage->SetFocus();
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+
+}
+
+void
+MessageComposePanel::SetDefaultPageDuration(int pageDuration)
+{
+       AppLogDebug("ENTER");
+       __defaultPageDuration = pageDuration;
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+int
+MessageComposePanel::GetDefaultPageDuration(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __defaultPageDuration;
+}
+
+void
+MessageComposePanel::LoadMessageData(const MessageData& msgData)
+{
+       AppLogDebug("ENTER");
+       // In case of SMS, need to check MMS use case
+       if (msgData.IsMms())
+       {
+#ifndef _DISABLE_MMS_FEATURE_
+               // Load Subject
+               String subjectText = msgData.GetSubject();
+               if (subjectText.GetLength() > 0)
+               {
+                       AddSubjectField(subjectText);
+               }
+               // Load attachement
+               if (msgData.GetAttachmentCount() > 0)
+               {
+                       const ArrayList* pAttachList = msgData.GetAttachList();
+                       for (int index = 0; index < pAttachList->GetCount(); index++)
+                       {
+                               String* pAttachFilePath = (String*) pAttachList->GetAt(index);
+                               AddAttachementElement(*pAttachFilePath);
+                       }
+               }
+               // Load page
+               if (msgData.GetPageCount() > 0)
+               {
+                       Panel* pImageTextSlidePanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                                               GetControl(L"IDC_PANEL_IMAGE_TEXT"));
+                       // For 1st draft compose element.
+                       const ArrayList* pPageList = msgData.GetPageList();
+                       MmsPageData* pPageData = (MmsPageData*) pPageList->GetAt(0);
+                       MediaTextExpandEditArea* pComposePage = (MediaTextExpandEditArea*)
+                                                                                                       pImageTextSlidePanel->GetControl(0);
+                       pComposePage->SetText(pPageData->GetBodyText());
+                       if (pPageData->IsImageExist())
+                       {
+                               pComposePage->SetMedia(pPageData->GetImagePath(), MEDIA_TYPE_IMAGE);
+                       }
+                       else if (pPageData->IsVideoExist())
+                       {
+                               pComposePage->SetMedia(pPageData->GetVideoPath(), MEDIA_TYPE_VIDEO);
+                       }
+                       if (pPageData->IsAudioExist())
+                       {
+                               pComposePage->SetMedia(pPageData->GetAudioPath(), MEDIA_TYPE_AUDIO);
+                       }
+                       // For 2nd page onwords.
+                       for (int index = 1; index < pPageList->GetCount(); index++)
+                       {
+                               MmsPageData* pPageData = (MmsPageData*) pPageList->GetAt(index);
+                               MediaTextExpandEditArea* pComposePage = CreatePage(pPageData->GetBodyText());
+                               if (pComposePage)
+                               {
+                                       pComposePage->SetText(pPageData->GetBodyText());
+                                       if (pPageData->IsImageExist())
+                                       {
+                                               pComposePage->SetMedia(pPageData->GetImagePath(), MEDIA_TYPE_IMAGE);
+                                       }
+                                       else if (pPageData->IsVideoExist())
+                                       {
+                                               pComposePage->SetMedia(pPageData->GetVideoPath(), MEDIA_TYPE_VIDEO);
+                                       }
+
+                                       if (pPageData->IsAudioExist())
+                                       {
+                                               pComposePage->SetMedia(pPageData->GetAudioPath(), MEDIA_TYPE_AUDIO);
+                                       }
+                               }
+                       }
+               }
+               //__pSendMessage->SetEnabled(true);
+               GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON,null);
+#endif
+       }
+       else
+       {
+               Panel* pImageTextSlidePanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                                       GetControl(L"IDC_PANEL_IMAGE_TEXT"));
+               MediaTextExpandEditArea* pComposeElement = (MediaTextExpandEditArea*)
+                                                                                                  pImageTextSlidePanel->GetControl(0);
+               pComposeElement->SetText(msgData.GetMessageText());
+               //__pSendMessage->SetEnabled(true);
+               GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON,null);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MessageComposePanel::ShowComposeInfo(void)
+{
+       AppLogDebug("ENTER");
+
+       if (IsMmsMode())
+       {
+               // Show Byte info
+               long long int size = GetMessageComposeSize();
+               //__pSendMessage->SetEnabled(size > 0);
+               GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON,null);
+               int sizeKb = size / SIZE_1KB;
+               if (sizeKb == 0) sizeKb = 1;
+               String mmsByteCount;
+               mmsByteCount.Format(10, L"%d KB", sizeKb);
+               __pComposeInfoLabel->SetText(mmsByteCount);
+               __pComposeInfoLabel->SetShowState(true);
+       }
+       else
+       {
+               String msgText = GetSmsText();
+               //__pSendMessage->SetEnabled(msgText.GetLength() > 0);
+               GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON,null);
+               if (GetHeight() > GetMinimumSize().height)
+               {
+                       //TODO: SLP API is throwing -9 in case of UCS2 type encodeing.
+//                     const SmsSendSettings* pSmsSendSetting = SettingPresentationModel::GetInstance()->GetSmsSendSetting();
+//                     CharCounterInfo charinfo = CommonUtil::GetMessageCharCounterInfo(msgText,pSmsSendSetting);
+                       int msgLength = msgText.GetLength() * 4 + 1;  // For null terminated.
+                       const wchar_t* pText = msgText.GetPointer();
+                       char* pBodyText = new (std::nothrow) char[msgLength];
+                       if (pBodyText)
+                       {
+                               wcstombs(pBodyText, pText, (size_t) msgLength);
+                               int size((int) strlen(pBodyText));
+                               delete[] pBodyText;
+                               __pComposeInfoLabel->SetText(GetMessageCounterInfo(size));
+                       }
+                       __pComposeInfoLabel->SetShowState(true);
+               }
+               else
+               {
+                       __pComposeInfoLabel->SetShowState(false);
+                       __pComposeInfoLabel->Invalidate(true);
+               }
+       }
+       __pSendMessage->Draw();
+       __pComposeInfoLabel->Draw();
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+result
+MessageComposePanel::ChangeResolution(const String& sourcPath)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       Image* pImage = new (std::nothrow) Image();
+       if (!pImage)
+       {
+               r = E_FAILURE;
+               return r;
+       }
+//     TryReturn(pImage != null,r = E_FAILURE, "pImage == null");
+       pImage->Construct();
+       // Decode image file to check resolution.
+       Bitmap* pBitmap = pImage->DecodeN(sourcPath, BITMAP_PIXEL_FORMAT_ARGB8888);
+       if (pBitmap)
+       {
+               AppLogDebug("Image resolution( %d, %d )", pBitmap->GetWidth(), pBitmap->GetHeight());
+               unsigned int orgWidth = pBitmap->GetWidth();
+               unsigned int orgHeight = pBitmap->GetHeight();
+               unsigned int restrictWidth = 0;
+               unsigned int restrictHeight = 0;
+               unsigned int destWidth = 0;
+               unsigned int destHeight = 0;
+               if (orgWidth > orgHeight)
+               {
+                       restrictWidth = MAX_RESTRICT_IMG_W;
+                       restrictHeight = MAX_RESTRICT_IMG_H;
+               }
+               else
+               {
+                       restrictWidth = MAX_RESTRICT_IMG_H;
+                       restrictHeight = MAX_RESTRICT_IMG_W;
+               }
+               AppLogDebug("RESTRICT resolution( %d, %d )", restrictWidth, restrictHeight);
+               if (orgWidth > restrictWidth && orgHeight > restrictHeight)
+               {
+                       double widthPercent = (double) restrictWidth / orgWidth;
+                       double heightPercent = (double) restrictHeight / orgHeight;
+                       if (widthPercent < heightPercent)
+                       {
+                               destWidth = restrictWidth;
+                               destHeight = orgHeight * widthPercent;
+                       }
+                       else if (widthPercent > heightPercent)
+                       {
+                               destWidth = orgWidth * heightPercent;
+                               destHeight = restrictHeight;
+                       }
+                       else
+                       {
+                               destWidth = restrictWidth;
+                               destHeight = restrictHeight;
+                       }
+               }
+               else if (orgWidth > restrictWidth)
+               {
+                       double widthPercent = (double) restrictWidth / orgWidth;
+                       destWidth = restrictWidth;
+                       destHeight = orgHeight * widthPercent;
+               }
+               else if (orgHeight > restrictHeight)
+               {
+                       double heightPercent = (double) restrictHeight / orgHeight;
+                       destWidth = orgWidth * heightPercent;
+                       destHeight = restrictHeight;
+               }
+               else
+               {
+                       r = pImage->EncodeToFile(*pBitmap, IMG_FORMAT_JPG, sourcPath, true);
+                       delete pBitmap;
+                       delete pImage;
+                       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+                       return r;
+               }
+
+               if (pBitmap->Scale(Dimension(destWidth, destHeight)) == E_SUCCESS)
+               {
+                       AppLogDebug("PATH = %S", sourcPath.GetPointer());
+                       r = pImage->EncodeToFile(*pBitmap, IMG_FORMAT_JPG, sourcPath, true);
+               }
+               delete pBitmap;
+       }
+       delete pImage;
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+Object*
+MessageComposePanel::Run(void)
+{
+       AppLogDebug("ENTER");
+
+       MsgResponse status(MSG_RESPONSE_RESIZE_IMAGE);
+       // Copy To MMS compose temp file.
+       String mmsDataPath(App::GetInstance()->GetAppDataPath());
+       mmsDataPath.Append(File::GetFileName(__pSelectFilePath));
+       AppLogDebug("MMS DATA PATH: %S", mmsDataPath.GetPointer());
+       File::Copy(__pSelectFilePath, mmsDataPath, true);
+       __pSelectFilePath.Clear();
+       result r = E_SUCCESS;
+       if (!IsSutitableCreationMode(mmsDataPath))
+       {
+               r = ChangeResolution(mmsDataPath);
+       }
+       if (r == E_SUCCESS)
+       {
+               if ((GetFileSize(mmsDataPath) > __remainSizeBytes))
+               {
+                       // Compress file file.
+                       String compressDataPath(App::GetInstance()->GetAppDataPath());
+                       compressDataPath.Append(IDS_COMPRESS + File::GetFileName(mmsDataPath));
+                       AppLogDebug("Compress data PATH: %S", compressDataPath.GetPointer());
+                       Image* pImage = new (std::nothrow) Image();
+                       pImage->Construct();
+                       r = pImage->CompressJpeg(mmsDataPath, compressDataPath, __remainSizeBytes);
+                       if (r == E_SUCCESS)
+                       {
+                               __pSelectFilePath = compressDataPath;
+                       }
+                       else
+                       {
+                               // Remove intermediate temp file.
+                               File::Remove(compressDataPath);
+                               status = MSG_RESPONSE_FAIL;
+                       }
+                       delete pImage;
+                       // Remove intermediate temp file.
+                       File::Remove(mmsDataPath);
+               }
+               else
+               {
+                       __pSelectFilePath = mmsDataPath;
+               }
+       }
+       else
+       {
+               // Remove intermediate temp file.
+               File::Remove(mmsDataPath);
+               status = MSG_RESPONSE_FAIL;
+       }
+       // Send event to main thread from worker thread.
+       ArrayList* pArgList = new ArrayList();
+       pArgList->Construct();
+       pArgList->Add((new Integer(status)));
+       RequestId requestId = REQUEST_IMAGE_RESIZE_RESPONSE;
+       SendUserEvent(requestId, pArgList);
+
+       AppLogDebug("EXIT: r= %s Status = %d", GetErrorMessage(GetLastResult()), status);
+       return null;
+}
+
+bool
+MessageComposePanel::IsSutitableCreationMode(const String& filePath) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       //TODO: Need to check MMS settings
+       return false;
+}
+
+void
+MessageComposePanel::ProcessNextFileComposeQueue(void)
+{
+       AppLogDebug("ENTER");
+       while (__pSelectedFilesQueue && __pSelectedFilesQueue->GetCount() > 0)
+       {
+               String* pFileName = (String*) __pSelectedFilesQueue->GetAt(0);
+               if (InsertFileToPage(*pFileName) != MSG_RESPONSE_SUCCESS)
+               {
+                       // Remove already process element.
+                       __pSelectedFilesQueue->RemoveAt(0, true);
+                       break;
+               }
+               // Remove already process element.
+               __pSelectedFilesQueue->RemoveAt(0, true);
+       }
+       if (__pSelectedFilesQueue && __pSelectedFilesQueue->GetCount() <= 0)
+       {
+               if (__pCompressProgressPopup)
+               {
+                       delete __pCompressProgressPopup;
+                       __pCompressProgressPopup = null;
+               }
+               delete __pSelectedFilesQueue;
+               __pSelectedFilesQueue = null;
+               SetFocusToEditor();
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MessageComposePanel::LoadComposeData(const MessageComposeData& composeData)
+{
+       AppLogDebug("ENTER");
+       // In case of SMS, need to check MMS use case
+       if (composeData.IsMms())
+       {
+#ifndef _DISABLE_MMS_FEATURE_
+               // Load Subject
+               String subjectText = composeData.GetSubject();
+               if (subjectText.GetLength() > 0)
+               {
+                       AddSubjectField(subjectText);
+               }
+               // Load attachement
+               const ArrayList* pAttachList = composeData.GetAttachList();
+               if (pAttachList)
+               {
+                       for (int index = 0; index < pAttachList->GetCount(); index++)
+                       {
+                               String* pAttachFilePath = (String*) pAttachList->GetAt(index);
+                               AddAttachementElement(*pAttachFilePath);
+                       }
+               }
+               // Load page
+               const ArrayList* pPageList = composeData.GetPageList();
+               if (pPageList && pPageList->GetCount() > 0)
+               {
+                       Panel* pImageTextSlidePanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                                               GetControl(L"IDC_PANEL_IMAGE_TEXT"));
+                       // For 1st draft compose element.
+                       MmsPageData* pPageData = (MmsPageData*) pPageList->GetAt(0);
+                       MediaTextExpandEditArea* pComposePage = (MediaTextExpandEditArea*)
+                                                                                                       pImageTextSlidePanel->GetControl(0);
+                       pComposePage->SetText(pPageData->GetBodyText());
+                       if (pPageData->IsImageExist())
+                       {
+                               pComposePage->SetMedia(pPageData->GetImagePath(), MEDIA_TYPE_IMAGE);
+                       }
+                       else if (pPageData->IsVideoExist())
+                       {
+                               pComposePage->SetMedia(pPageData->GetVideoPath(), MEDIA_TYPE_VIDEO);
+                       }
+                       if (pPageData->IsAudioExist())
+                       {
+                               pComposePage->SetMedia(pPageData->GetAudioPath(), MEDIA_TYPE_AUDIO);
+                       }
+                       // For 2nd page onwords.
+                       for (int index = 1; index < pPageList->GetCount(); index++)
+                       {
+                               MmsPageData* pPageData = (MmsPageData*) pPageList->GetAt(index);
+                               MediaTextExpandEditArea* pComposePage = CreatePage(pPageData->GetBodyText());
+                               if (pComposePage && pPageData)
+                               {
+                                       pComposePage->SetText(pPageData->GetBodyText());
+                                       if (pPageData->IsImageExist())
+                                       {
+                                               pComposePage->SetMedia(pPageData->GetImagePath(), MEDIA_TYPE_IMAGE);
+                                       }
+                                       else if (pPageData->IsVideoExist())
+                                       {
+                                               pComposePage->SetMedia(pPageData->GetVideoPath(), MEDIA_TYPE_VIDEO);
+                                       }
+
+                                       if (pPageData->IsAudioExist())
+                                       {
+                                               pComposePage->SetMedia(pPageData->GetAudioPath(), MEDIA_TYPE_AUDIO);
+                                       }
+                               }
+                       }
+               }
+               //__pSendMessage->SetEnabled(true);
+               GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON,null);
+#endif
+       }
+       else
+       {
+               Panel* pImageTextSlidePanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                                       GetControl(L"IDC_PANEL_IMAGE_TEXT"));
+               MediaTextExpandEditArea* pComposeElement = (MediaTextExpandEditArea*)
+                                                                                                  pImageTextSlidePanel->GetControl(0);
+               pComposeElement->SetText(composeData.GetSmsBody());
+               if(composeData.GetSmsBody().GetLength() > 0)
+               {
+                       //__pSendMessage->SetEnabled(true);
+                       GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON,null);
+               }
+               else
+               {
+                       __pSendMessage->SetEnabled(false);
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+IList*
+MessageComposePanel::GetSelectedFileListN(const String& operationId, const IMap* pResultMap)
+{
+       AppLogDebug("ENTER");
+
+       ArrayList* pSelectedFileList = null;
+       String* pSelectedFiles = (String*) pResultMap->GetValue(String(IDS_VALUE_KEY));
+       if (pSelectedFiles)
+       {
+               pSelectedFileList = new (std::nothrow) ArrayList();
+               pSelectedFileList->Construct();
+               String delim(L";");
+               StringTokenizer strToken(*pSelectedFiles, delim);
+               String* pFilePath = new (std::nothrow) String();
+               int tokenCount = strToken.GetTokenCount();
+               if (tokenCount > 0)
+               {
+                       for (int index = 0; index < tokenCount; index++)
+                       {
+                               strToken.GetNextToken(*pFilePath);
+                               pSelectedFileList->Add(pFilePath);
+                       }
+               }
+               else
+               {
+                       pFilePath->Append(*pSelectedFiles);
+                       pSelectedFileList->Add(pFilePath);
+               }
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pSelectedFileList;
+}
+
+void
+MessageComposePanel::EnableSendButton(bool status)
+{
+       AppLogDebug("ENTER");
+
+       if(__pSendMessage)
+       {
+               __pSendMessage->SetEnabled(status);
+               Invalidate(true);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+
diff --git a/src/MsgMessageData.cpp b/src/MsgMessageData.cpp
new file mode 100644 (file)
index 0000000..c158533
--- /dev/null
@@ -0,0 +1,756 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <msg.h>\r
+\r
+#include "FApp.h"\r
+#include <FBaseColArrayList.h>\r
+#include <FBaseString.h>\r
+#include <FMedia.h>\r
+#include <time.h>\r
+\r
+#include "MsgMessageData.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Io;\r
+using namespace Tizen::Media;\r
+\r
+const wchar_t* IDS_PREVIEW = L"Preview";\r
+const wchar_t* IDS_CHAR = L"r";\r
+\r
+MessageData::MessageData(void)\r
+       : __messageId(-1)\r
+       , __threadId(-1)\r
+       , __folderId(-1)\r
+       , __messageType(0)\r
+       , __displayTime(0)\r
+       , __networkStatus(-1)\r
+       , __isRead(true)\r
+       , __messageDirection(0)\r
+       , __pAddressList(null)\r
+       , __attachmentCount(0)\r
+       , __pThumbnailBitmap(null)\r
+       , __pAttachList(null)\r
+       , __pPageList(null)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT");\r
+}\r
+\r
+MessageData::~MessageData(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pAddressList)\r
+       {\r
+               __pAddressList->RemoveAll(true);\r
+               delete __pAddressList;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+MessageData::Construct(msg_struct_t pMessageInfo, bool mmsDetailInfo)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       if (!pMessageInfo)\r
+       {\r
+               r = E_FAILURE;\r
+               return r;\r
+       }\r
+       // message id\r
+       msg_error_t err = msg_get_int_value(pMessageInfo, MSG_MESSAGE_ID_INT, &__messageId);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("EXIT:Unable to fetch message ID err = %d", (int) err);\r
+               r = E_FAILURE;\r
+               return r;\r
+       }\r
+       // message thread id\r
+       err = msg_get_int_value(pMessageInfo, MSG_MESSAGE_THREAD_ID_INT, &__threadId);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("EXIT:Unable to fetch message thread ID err = %d", (int) err);\r
+               r = E_FAILURE;\r
+               return r;\r
+       }\r
+       err = msg_get_int_value(pMessageInfo, MSG_MESSAGE_FOLDER_ID_INT, &__folderId);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("EXIT:Unable to fetch message folder ID err = %d", (int) err);\r
+               r = E_FAILURE;\r
+               return r;\r
+       }\r
+       // message Type\r
+       err = msg_get_int_value(pMessageInfo, MSG_MESSAGE_TYPE_INT, &__messageType);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("EXIT:Unable to fetch message type err =%d", (int) err);\r
+               r = E_FAILURE;\r
+               return r;\r
+       }\r
+       if (__messageType == MSG_TYPE_MMS)\r
+       {\r
+               //Initialize MMS related data\r
+               InitMmsData(pMessageInfo, mmsDetailInfo);\r
+       }\r
+       err = msg_get_int_value(pMessageInfo, MSG_MESSAGE_DISPLAY_TIME_INT, &__displayTime);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("EXIT:Unable to fetch message display time err =%d", (int) err);\r
+               r = E_FAILURE;\r
+               return r;\r
+       }\r
+       err = msg_get_int_value(pMessageInfo, MSG_MESSAGE_NETWORK_STATUS_INT, &__networkStatus);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("EXIT:Unable to fetch network status err =%d", (int) err);\r
+               r = E_FAILURE;\r
+               return r;\r
+       }\r
+       err = msg_get_bool_value(pMessageInfo, MSG_MESSAGE_READ_BOOL, &__isRead);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("EXIT:Unable to fetch read status err =%d", (int) err);\r
+               r = E_FAILURE;\r
+               return r;\r
+       }\r
+       err = msg_get_int_value(pMessageInfo, MSG_MESSAGE_DIRECTION_INT, &__messageDirection);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("EXIT:Unable to fetch message direction err =%d", (int) err);\r
+               if ((__networkStatus == MSG_NETWORK_SENDING) ||\r
+                       (__networkStatus == MSG_NETWORK_SEND_SUCCESS) ||\r
+                       (__networkStatus == MSG_NETWORK_SEND_FAIL))\r
+               {\r
+                       __messageDirection = MSG_DIRECTION_TYPE_MO;\r
+               }\r
+               else\r
+               {\r
+                       __messageDirection = MSG_DIRECTION_TYPE_MT;\r
+               }\r
+               //      return E_FAILURE;\r
+       }\r
+       InitAddrListDisplayName(pMessageInfo);\r
+       InitMessageBody(pMessageInfo);\r
+       InitTimeStampGroupName();\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(r));\r
+       return r;\r
+}\r
+\r
+result\r
+MessageData::Construct(MessageComposeData& compseData)\r
+{\r
+       AppLogDebug("ENTER");\r
+       result r = E_SUCCESS;\r
+       //Initialize message basic info.\r
+       __pAddressList = new (std::nothrow) ArrayList();\r
+       __pAddressList->Construct();\r
+       __displayName.Append(IDS_PREVIEW);\r
+       if (compseData.IsMms())\r
+       {\r
+               __messageType = MSG_TYPE_MMS;\r
+               __subjectStr.Append(compseData.GetSubject());\r
+               // Intialize page list\r
+               __pPageList = new (std::nothrow) ArrayList();\r
+               const ArrayList* pPageList = compseData.GetPageList();\r
+               if (pPageList)\r
+               {\r
+                       __pPageList->Construct(*pPageList);\r
+               }\r
+               else\r
+               {\r
+                       __pPageList->Construct();\r
+               }\r
+       }\r
+       else\r
+       {\r
+               __messageBody.Append(compseData.GetSmsBody());\r
+               __messageType = MSG_TYPE_SMS;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+BaseData*\r
+MessageData::CloneN(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       MessageData* pMsgData = new (std::nothrow) MessageData();\r
+       if (pMsgData)\r
+       {\r
+               pMsgData->__messageId = this->__messageId;\r
+               pMsgData->__threadId = this->__threadId;\r
+               pMsgData->__messageType = this->__messageType;\r
+               pMsgData->__displayTime = this->__displayTime;\r
+               pMsgData->__networkStatus = this->__networkStatus;\r
+               pMsgData->__isRead = this->__isRead;\r
+               pMsgData->__messageDirection = this->__messageDirection;\r
+\r
+               pMsgData->__pAddressList = new (std::nothrow) ArrayList();\r
+               pMsgData->__pAddressList->Construct();\r
+               for (int index = 0; index < this->__pAddressList->GetCount(); index++)\r
+               {\r
+                       AddressInfo* pNewAddressInfo = new (std::nothrow) AddressInfo();\r
+                       AddressInfo* pAddressInfo = static_cast<AddressInfo*>(this->__pAddressList->GetAt(index));\r
+                       pNewAddressInfo->displayName = pAddressInfo->displayName;\r
+                       pNewAddressInfo->phoneNumber = pAddressInfo->phoneNumber;\r
+                       pNewAddressInfo->needToValidate = pAddressInfo->needToValidate;\r
+                       pMsgData->__pAddressList->Add(pNewAddressInfo);\r
+               }\r
+               pMsgData->__displayName = this->__displayName;\r
+               pMsgData->__messageBody = this->__messageBody;\r
+               pMsgData->__groupName = this->__groupName;\r
+               pMsgData->__timeStamp = this->__timeStamp;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pMsgData;\r
+}\r
+\r
+// Get message short description of given thread index.\r
+const String&\r
+MessageData::GetMessageText(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __messageBody;\r
+}\r
+\r
+// Get message type of given thread list index.\r
+int\r
+MessageData::GetMessageType(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __messageType;\r
+}\r
+\r
+int\r
+MessageData::GetEntryId(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __messageId;\r
+}\r
+\r
+// Fetch display name for a message entry.\r
+const String&\r
+MessageData::GetDisplayName(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __displayName;\r
+}\r
+\r
+// Fetch time stamp of given thread index.\r
+const String&\r
+MessageData::GetTimeStamp(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __timeStamp;\r
+}\r
+\r
+// Fetch time stamp of given thread index.\r
+const String&\r
+MessageData::GetGroupName(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __groupName;\r
+}\r
+\r
+int\r
+MessageData::GetUnreadCount(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (!__isRead && (__folderId != MSG_DRAFT_ID))\r
+       {\r
+               return 1;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return 0;\r
+}\r
+\r
+bool\r
+MessageData::IsSent(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return (__messageDirection == MSG_DIRECTION_TYPE_MO);\r
+}\r
+\r
+DataType\r
+MessageData::GetDataType(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return DATA_TYPE_MESSAGE;\r
+}\r
+\r
+bool\r
+MessageData::IsUnRead(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return (!__isRead);\r
+}\r
+\r
+bool\r
+MessageData::IsSentFail(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       bool setFaild(false);\r
+       setFaild = (__networkStatus == MSG_NETWORK_SEND_FAIL);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return setFaild;\r
+}\r
+\r
+bool\r
+MessageData::IsSending(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return (__networkStatus == MSG_NETWORK_SENDING);\r
+}\r
+\r
+bool\r
+MessageData::IsMms(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return (__messageType == MSG_TYPE_MMS);\r
+}\r
+\r
+result\r
+MessageData::InitAddrListDisplayName(msg_struct_t pMessageInfo)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       msg_struct_list_s* pAddrList = NULL;\r
+       msg_error_t err = msg_get_list_handle(pMessageInfo, MSG_MESSAGE_ADDR_LIST_STRUCT, (void**) &pAddrList);\r
+       if ((err == MSG_SUCCESS) && (pAddrList->nCount > 0))\r
+       {\r
+               __pAddressList = new (std::nothrow) ArrayList();\r
+               __pAddressList->Construct();\r
+               char recipient[MAX_ADDRESS_VAL_LEN] = {0};\r
+               for (int count = 0; count < pAddrList->nCount; count++)\r
+               {\r
+                       AddressInfo* pAddressInfo = new (std::nothrow) AddressInfo();\r
+                       msg_get_str_value(pAddrList->msg_struct_info[count],\r
+                                                         MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, recipient, MAX_ADDRESS_VAL_LEN);\r
+                       pAddressInfo->phoneNumber.Append(recipient);\r
+                       msg_get_str_value(pAddrList->msg_struct_info[count],\r
+                                                         MSG_ADDRESS_INFO_DISPLAYNAME_STR, recipient, MSG_THREAD_DISPLAY_LEN);\r
+                       if ((int) strlen(recipient) > 0)\r
+                       {\r
+                               pAddressInfo->displayName.Append(recipient);\r
+                       }\r
+                       else\r
+                       {\r
+                               pAddressInfo->displayName.Append(pAddressInfo->phoneNumber);\r
+                       }\r
+                       pAddressInfo->needToValidate = false;\r
+                       __pAddressList->Add(pAddressInfo);\r
+               }\r
+               AddressInfo* pAddressInfo = static_cast<AddressInfo*>(this->__pAddressList->GetAt(0));\r
+               __displayName = pAddressInfo->displayName;\r
+       }\r
+       else\r
+       {\r
+               // To prevent crash\r
+               __displayName.Append(IDS_BLANK_SPACE);\r
+       }\r
+       AppLogDebug("Fetching display name = [%S] err = [%d]", __displayName.GetPointer(), (int) err);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+result\r
+MessageData::InitMessageBody(msg_struct_t pMessageInfo)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       char* pMsgText = new (std::nothrow) char[MAX_MSG_TEXT_LEN];\r
+       msg_error_t err = msg_get_str_value(pMessageInfo, MSG_MESSAGE_SMS_DATA_STR, pMsgText\r
+                                                                          , MAX_MSG_TEXT_LEN);\r
+       if (err == MSG_SUCCESS && pMsgText && (int) strlen(pMsgText) > 0)\r
+       {\r
+               __messageBody.Append(pMsgText);\r
+       }\r
+       else\r
+       {\r
+               // To prevent crash\r
+               __messageBody.Append(IDS_BLANK_SPACE);\r
+       }\r
+       AppLogDebug("Fetching message body = [%S] err = [%d]", __messageBody.GetPointer(), (int) err);\r
+       delete[] pMsgText;\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+result\r
+MessageData::InitTimeStampGroupName(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       time_t displayTime(__displayTime);\r
+       struct tm msgTimeInfo, currentTimeInfo;\r
+       // Fetch Message time.\r
+       localtime_r(&displayTime, &msgTimeInfo);\r
+       // Fetch current time.\r
+       time_t now;\r
+       time(&now);\r
+       localtime_r(&now, &currentTimeInfo);\r
+\r
+       // Calculate time difference\r
+       int msgDay = (msgTimeInfo.tm_year - YEAR_1900) * DAYS_365 + msgTimeInfo.tm_yday\r
+                                + (msgTimeInfo.tm_year - YEAR_1900 - 1) / LEAP_YEAR_GAP;\r
+\r
+       int curDay = (currentTimeInfo.tm_year - YEAR_1900) * DAYS_365 + currentTimeInfo.tm_yday\r
+                                + (currentTimeInfo.tm_year - YEAR_1900 - 1) / LEAP_YEAR_GAP;\r
+\r
+       char timeStamp[MAX_DATE_LEN];\r
+       char groupName[MAX_DATE_LEN];\r
+       int dayDiff = curDay - msgDay;\r
+       if (dayDiff == 0)\r
+       {\r
+               __groupName.Append(L"Today");\r
+               strftime(groupName, (size_t) MAX_DATE_LEN, " (%a, %02d. %b.)", &msgTimeInfo);\r
+               __groupName.Append(groupName);\r
+               strftime(timeStamp, (size_t) MAX_DATE_LEN, "%I:%M %p", &msgTimeInfo);\r
+       }\r
+       else if (dayDiff == 1)\r
+       {\r
+\r
+               __groupName.Append(L"Yesterday");\r
+               strftime(groupName, (size_t) MAX_DATE_LEN, " (%a, %02d. %b.)", &msgTimeInfo);\r
+               __groupName.Append(groupName);\r
+               //strcpy(timeStamp, "Yesterday");\r
+               strftime(timeStamp, (size_t) MAX_DATE_LEN, "%I:%M %p", &msgTimeInfo);\r
+       }\r
+       else\r
+       {\r
+               //strftime(timeStamp, MAX_DATE_LEN, "%d-%m-%Y", &msgTimeInfo);\r
+               strftime(timeStamp, (size_t) MAX_DATE_LEN, "%I:%M %p", &msgTimeInfo);\r
+               strftime(groupName, (size_t) MAX_DATE_LEN, "%a, %02d %b", &msgTimeInfo);\r
+               __groupName.Append(groupName);\r
+       }\r
+       __timeStamp.Append(timeStamp);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+const int\r
+MessageData::GetDraftMessageCount(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__folderId == MSG_DRAFT_ID)\r
+       {\r
+               return 1;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return 0;\r
+}\r
+\r
+const ArrayList*\r
+MessageData::GetAddressList(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __pAddressList;\r
+}\r
+\r
+Bitmap*\r
+MessageData::GetThumbnail(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (!__pThumbnailBitmap && __thumbnailPath.GetLength() > 0)\r
+       {\r
+               Image* pImage = new (std::nothrow) Image();\r
+               pImage->Construct();\r
+               __pThumbnailBitmap = pImage->DecodeN(__thumbnailPath, BITMAP_PIXEL_FORMAT_ARGB8888,\r
+                                                                                        310, 204);\r
+               delete pImage;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __pThumbnailBitmap;\r
+}\r
+\r
+const String&\r
+MessageData::GetSubject(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __subjectStr;\r
+}\r
+\r
+int\r
+MessageData::GetAttachmentCount(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __attachmentCount;\r
+}\r
+\r
+const ArrayList*\r
+MessageData::GetAttachList(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __pAttachList;\r
+}\r
+\r
+int\r
+MessageData::GetPageCount(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pPageList)\r
+       {\r
+               return __pPageList->GetCount();\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return 0;\r
+}\r
+\r
+const ArrayList*\r
+MessageData::GetPageList(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __pPageList;\r
+}\r
+\r
+int\r
+MessageData::GetThreadId(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __threadId;\r
+}\r
+\r
+result\r
+MessageData::InitMmsData(msg_struct_t pMessageInfo, bool mmsDetailInfo)\r
+{\r
+       AppLogDebug("ENTER");\r
+       result r = E_SUCCESS;\r
+\r
+       // Load Subject\r
+       char subjectText[MAX_SUBJECT_LEN + 1];\r
+       msg_error_t err = msg_get_str_value(pMessageInfo, MSG_MESSAGE_SUBJECT_STR, subjectText, MAX_SUBJECT_LEN);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("EXIT:Unable to fetch subject err =%d", (int) err);\r
+               result r = E_FAILURE;\r
+               return r;\r
+       }\r
+       __subjectStr.Append(subjectText);\r
+       // Get attachement count\r
+       err = msg_get_int_value(pMessageInfo, MSG_MESSAGE_ATTACH_COUNT_INT, &__attachmentCount);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("EXIT:Unable to fetch attachement count err =%d", (int) err);\r
+               r = E_FAILURE;\r
+               return r;\r
+       }\r
+       // Get default thumbnail path;\r
+       char thumbnailPath[MAX_IMAGE_PATH_LEN + 1];\r
+       err = msg_get_str_value(pMessageInfo, MSG_MESSAGE_THUMBNAIL_PATH_STR, thumbnailPath, MAX_IMAGE_PATH_LEN);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("EXIT:Unable to fetch thumbnail path err =%d", (int) err);\r
+               r = E_FAILURE;\r
+               return r;\r
+       }\r
+       __thumbnailPath.Append(thumbnailPath);\r
+\r
+       if (mmsDetailInfo)\r
+       {\r
+               // Retrive MMS body in details\r
+               msg_struct_t pMmsBody = msg_create_struct(MSG_STRUCT_MMS);\r
+               if (!pMmsBody)\r
+               {\r
+                       r = E_FAILURE;\r
+                       return r;\r
+               }\r
+               err = msg_get_mms_struct(pMessageInfo, pMmsBody);\r
+               if (err != MSG_SUCCESS)\r
+               {\r
+                       msg_release_struct(&pMmsBody);\r
+                       AppLogDebug("EXIT:Unable to fetch MMS Data err =%d", (int) err);\r
+                       r = E_FAILURE;\r
+                       return r;\r
+               }\r
+               // Load region, as of now not require, because as per spec text is always coming up.\r
+               // Load attachment details.\r
+               msg_list_handle_t pAttachList = NULL;\r
+               msg_get_list_handle(pMmsBody, MSG_MMS_ATTACH_LIST_HND, (void**) &pAttachList);\r
+               __attachmentCount = msg_list_length(pAttachList);\r
+               if (__attachmentCount > 0)\r
+               {\r
+                       __pAttachList = new (std::nothrow) ArrayList();\r
+                       __pAttachList->Construct();\r
+                       for (int count = 0; count < __attachmentCount; count++)\r
+                       {\r
+                               msg_struct_t pAttachInfo = (msg_struct_t) msg_list_nth_data(pAttachList, count);\r
+                               if (!pAttachInfo)\r
+                               {\r
+                                       AppLogDebug("[ERROR] attachment [%d]th item loading error ", count);\r
+                                       continue;\r
+                               }\r
+                               int fileType;\r
+                               msg_get_int_value(pAttachInfo, MSG_MMS_ATTACH_MIME_TYPE_INT, &fileType);\r
+                               char* pFilePath = new (std::nothrow) char[MSG_FILEPATH_LEN_MAX];\r
+                               msg_get_str_value(pAttachInfo, MSG_MMS_ATTACH_FILEPATH_STR, pFilePath, MSG_FILEPATH_LEN_MAX);\r
+                               __pAttachList->Add((new (std::nothrow) String(pFilePath)));\r
+                               delete[] pFilePath;\r
+                       }\r
+               }\r
+               // Load Page details\r
+               msg_list_handle_t pPageList = null;\r
+               msg_get_list_handle(pMmsBody, MSG_MMS_PAGE_LIST_HND, (void**) &pPageList);\r
+               int pageCount = msg_list_length(pPageList);\r
+               if (pageCount > 0)\r
+               {\r
+                       __pPageList = new (std::nothrow) ArrayList();\r
+                       __pPageList->Construct();\r
+                       for (int pageIndex = 0; pageIndex < pageCount; pageIndex++)\r
+                       {\r
+                               msg_struct_t pPageInfo = msg_list_nth_data(pPageList, pageIndex);\r
+                               if (!pPageInfo)\r
+                               {\r
+                                       AppLogDebug("[ERROR] MMS PAGE [%d]th page loading error ", pageIndex);\r
+                                       continue;\r
+                               }\r
+                               MmsPageData* pPageData = new (std::nothrow) MmsPageData(IDS_BLANK);\r
+                               // get page duration\r
+                               int pPageDuration = 0;\r
+                               msg_get_int_value(pPageInfo, MSG_MMS_PAGE_PAGE_DURATION_INT, &pPageDuration);\r
+                               if (pPageDuration % 1000)\r
+                                       pPageDuration = pPageDuration / 1000 + 1;\r
+                               else\r
+                                       pPageDuration = pPageDuration / 1000;\r
+                               pPageData->setPageDuration(pPageDuration);\r
+                               msg_list_handle_t pMediaList = null;\r
+                               msg_get_list_handle(pPageInfo, MSG_MMS_PAGE_MEDIA_LIST_HND, (void**) &pMediaList);\r
+                               int mediaCount = msg_list_length(pMediaList);\r
+                               if (mediaCount > 0)\r
+                               {\r
+                                       for (int mediaIndex = 0; mediaIndex < mediaCount; mediaIndex++)\r
+                                       {\r
+                                               msg_struct_t pMediaInfo = msg_list_nth_data(pMediaList, mediaIndex);\r
+                                               if (!pMediaInfo)\r
+                                               {\r
+                                                       AppLogDebug("[ERROR] MMS PAGE [%d]th page loading error ", mediaIndex);\r
+                                                       continue;\r
+                                               }\r
+                                               int mediaType;\r
+                                               msg_get_int_value(pMediaInfo, MSG_MMS_MEDIA_TYPE_INT, &mediaType);\r
+                                               if (mediaType == MMS_SMIL_MEDIA_IMG)\r
+                                               {\r
+                                                       pPageData->SetImagePath(GetMediaPath(pMediaInfo));\r
+                                               }\r
+                                               else if ((mediaType == MMS_SMIL_MEDIA_VIDEO) ||\r
+                                                                (mediaType == MMS_SMIL_MEDIA_IMG_OR_VIDEO))\r
+                                               {\r
+                                                       pPageData->SetVideoPath(GetMediaPath(pMediaInfo));\r
+                                               }\r
+                                               else if (mediaType == MMS_SMIL_MEDIA_AUDIO)\r
+                                               {\r
+                                                       pPageData->SetAudioPath(GetMediaPath(pMediaInfo));\r
+                                               }\r
+                                               else if (mediaType == MMS_SMIL_MEDIA_TEXT)\r
+                                               {\r
+                                                       String pageBodyText;\r
+                                                       char* pFilePath = new (std::nothrow) char[MSG_FILEPATH_LEN_MAX];\r
+                                                       if (pFilePath)\r
+                                                       {\r
+                                                               msg_get_str_value(pMediaInfo, MSG_MMS_MEDIA_FILEPATH_STR, pFilePath, MSG_FILEPATH_LEN_MAX);\r
+                                                               FileAttributes fileAttributes;\r
+                                                               result r = File::GetAttributes(pFilePath, fileAttributes);\r
+                                                               if (r != E_SUCCESS || fileAttributes.GetFileSize() <= 0)\r
+                                                               {\r
+                                                                       delete[] pFilePath;\r
+                                                                       continue;\r
+                                                               }\r
+                                                               File file;\r
+                                                               r = file.Construct(pFilePath, IDS_CHAR);\r
+                                                               if (r != E_SUCCESS)\r
+                                                               {\r
+                                                                       // Unable to open file.\r
+                                                                       delete[] pFilePath;\r
+                                                                       continue;\r
+                                                               }\r
+                                                               file.Read(pageBodyText);\r
+                                                               delete[] pFilePath;\r
+                                                       }\r
+                                                       pPageData->SetBodyText(pageBodyText);\r
+                                               }\r
+                                               else\r
+                                               {\r
+                                                       AppLogDebug("[ERROR] MMS PAGE [%d]th page invalid media ", mediaIndex);\r
+                                               }\r
+                                       }\r
+                               }\r
+                               if (__pPageList->Add(pPageData) != E_SUCCESS)\r
+                               {\r
+                                       delete pPageData;\r
+                               }\r
+                       }\r
+               }\r
+               msg_release_struct(&pMmsBody);\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+String\r
+MessageData::GetMediaPath(msg_struct_t pMediaInfo) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       String mediaPath;\r
+       char* pFilePath = new (std::nothrow) char[MSG_FILEPATH_LEN_MAX];\r
+       msg_get_str_value(pMediaInfo, MSG_MMS_MEDIA_FILEPATH_STR, pFilePath, MSG_FILEPATH_LEN_MAX);\r
+       const char* pFilePth = const_cast<const char*>(pFilePath);\r
+       if (pFilePth)\r
+       {\r
+               mediaPath.Format((int) strlen(pFilePth) + 1, L"%s", pFilePth);\r
+       }\r
+       delete[] pFilePath;\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return mediaPath;\r
+}\r
diff --git a/src/MsgMessagePresentationModel.cpp b/src/MsgMessagePresentationModel.cpp
new file mode 100644 (file)
index 0000000..764b15e
--- /dev/null
@@ -0,0 +1,407 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <cstdlib>\r
+#include <msg.h>\r
+\r
+#include <FBase.h>\r
+#include <FBaseErrorDefine.h>\r
+#include <FSocial.h>\r
+\r
+#include "MsgBaseData.h"\r
+#include "MsgMessagePresentationModel.h"\r
+#include "MsgSettingPresentationModel.h"\r
+#include "MsgMmsManager.h"\r
+#include "MsgSmsManager.h"\r
+#include "MsgSmsSendSettings.h"\r
+\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Base::Runtime;\r
+using namespace Tizen::Base::Utility;\r
+using namespace Tizen::Social;\r
+\r
+MessagePresentationModel* MessagePresentationModel::__pInstance = null;\r
+\r
+MessagePresentationModel*\r
+MessagePresentationModel::GetInstance(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pInstance == null)\r
+       {\r
+               CreateInstance();\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __pInstance;\r
+}\r
+\r
+MessagePresentationModel::MessagePresentationModel(void)\r
+       : __pActiveSearchNamesList(null)\r
+       , __pActiveSearchContactNumbersList(null)\r
+       , __pSmsManager(null)\r
+       , __pMmsManger(null)\r
+       , __pAddressbook(null)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+MessagePresentationModel::~MessagePresentationModel(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pActiveSearchNamesList)\r
+       {\r
+               __pActiveSearchNamesList->RemoveAll(true);\r
+               delete __pActiveSearchNamesList;\r
+       }\r
+\r
+       if (__pActiveSearchContactNumbersList)\r
+       {\r
+               __pActiveSearchContactNumbersList->RemoveAll(true);\r
+               delete __pActiveSearchContactNumbersList;\r
+       }\r
+\r
+       if (__pSmsManager)\r
+       {\r
+               delete __pSmsManager;\r
+       }\r
+       if (__pMmsManger)\r
+       {\r
+               delete __pMmsManger;\r
+       }\r
+\r
+       if (__pAddressbook)\r
+       {\r
+               delete __pAddressbook;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+MessagePresentationModel::Construct(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       r = BasePresentationModel::Construct();\r
+       if (r == E_SUCCESS)\r
+       {\r
+               __pActiveSearchNamesList = new (std::nothrow) ArrayList();\r
+               if (__pActiveSearchNamesList == null)\r
+               {\r
+                       r = E_FAILURE;\r
+                       return r;\r
+               }\r
+               __pActiveSearchNamesList->Construct();\r
+\r
+               __pActiveSearchContactNumbersList = new (std::nothrow) ArrayList();\r
+               if (__pActiveSearchContactNumbersList == null)\r
+               {\r
+                       r = E_FAILURE;\r
+                       return r;\r
+               }\r
+               __pActiveSearchContactNumbersList->Construct();\r
+\r
+               __pSmsManager = new (std::nothrow) SmsManager(__pMsgHandle);\r
+               if (__pSmsManager == null)\r
+               {\r
+                       r = E_FAILURE;\r
+                       return r;\r
+               }\r
+               __pSmsManager->Construct();\r
+               __pMmsManger = new (std::nothrow) MmsManager(__pMsgHandle);\r
+               if (__pMmsManger == null)\r
+               {\r
+                       r = E_FAILURE;\r
+                       return r;\r
+               }\r
+               __pMmsManger->Construct();\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(r));\r
+       return r;\r
+}\r
+\r
+void\r
+MessagePresentationModel::CreateInstance(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       __pInstance = new (std::nothrow) MessagePresentationModel();\r
+       if (E_SUCCESS != __pInstance->Construct())\r
+       {\r
+               delete __pInstance;\r
+               __pInstance = null;\r
+               return;\r
+       }\r
+       // Destroy singletone instance application exit.\r
+       std::atexit(DestroyInstance);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+MessagePresentationModel::DestroyInstance(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       delete __pInstance;\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+\r
+}\r
+\r
+void\r
+MessagePresentationModel::SearchContact(const String& inputText)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pAddressbook == null)\r
+       {\r
+               __pAddressbook = AddressbookManager::GetInstance()->GetAddressbookN();\r
+       }\r
+       __pActiveSearchNamesList->RemoveAll(true);\r
+       __pActiveSearchContactNumbersList->RemoveAll(true);\r
+       //TODO: If there is any performance issue we need to do it through thread.\r
+       if (__pAddressbook)\r
+       {\r
+               IList* pSearchContactList = __pAddressbook->SearchContactsByNameN(inputText);\r
+               if (pSearchContactList)\r
+               {\r
+                       UpdateSearchContactList(*pSearchContactList);\r
+                       pSearchContactList->RemoveAll(true);\r
+                       delete pSearchContactList;\r
+               }\r
+               //\r
+               if (inputText.GetLength() > 3)\r
+               {\r
+                       pSearchContactList = __pAddressbook->SearchContactsByPhoneNumberN(inputText);\r
+                       if (pSearchContactList)\r
+                       {\r
+                               UpdateSearchContactList(*pSearchContactList, inputText);\r
+                               pSearchContactList->RemoveAll(true);\r
+                               delete pSearchContactList;\r
+                       }\r
+               }\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+\r
+}\r
+\r
+void\r
+MessagePresentationModel::UpdateSearchContactList(const IList& searchResultList, const String& searchNumber)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       IEnumerator* pContactEnum = searchResultList.GetEnumeratorN();\r
+       if (pContactEnum)\r
+       {\r
+               String firstName;\r
+               String lastName;\r
+               String contactName;\r
+               Contact* pContact(null);\r
+               while (!IsFailed(pContactEnum->MoveNext()))\r
+               {\r
+                       pContact = (Contact*) pContactEnum->GetCurrent();\r
+                       pContact->GetValue(CONTACT_PROPERTY_ID_FIRST_NAME, firstName);\r
+                       pContact->GetValue(CONTACT_PROPERTY_ID_LAST_NAME, lastName);\r
+                       contactName.Clear();\r
+                       contactName.Append(firstName);\r
+                       contactName.Append(IDS_BLANK_SPACE);\r
+                       contactName.Append(lastName);\r
+                       IList* pPhoneNumberList = pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);\r
+                       if (pPhoneNumberList != null)\r
+                       {\r
+                               PhoneNumber* pPhoneNumber = null;\r
+                               IEnumerator* pEnum = pPhoneNumberList->GetEnumeratorN();\r
+                               if (pEnum)\r
+                               {\r
+                                       while (E_SUCCESS == pEnum->MoveNext())\r
+                                       {\r
+                                               pPhoneNumber = (PhoneNumber*) pEnum->GetCurrent();\r
+                                               // Search by contact or search by number\r
+                                               if (searchNumber.IsEmpty() || (pPhoneNumber->GetPhoneNumber().StartsWith(searchNumber, 0)))\r
+                                               {\r
+                                                       __pActiveSearchNamesList->Add((new String(contactName)));\r
+                                                       __pActiveSearchContactNumbersList->Add((new String(pPhoneNumber->GetPhoneNumber())));\r
+                                               }\r
+                                       }\r
+                                       delete pEnum;\r
+                               }\r
+                               pPhoneNumberList->RemoveAll(true);\r
+                               delete pPhoneNumberList;\r
+                       }\r
+               }\r
+               delete pContactEnum;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+int\r
+MessagePresentationModel::GetContactsCount(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int count = 0;\r
+       count = __pActiveSearchNamesList->GetCount();\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return count;\r
+}\r
+\r
+\r
+String\r
+MessagePresentationModel::GetContactNameAt(int index)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       String contactName;\r
+       if (__pActiveSearchNamesList->GetCount() > 0)\r
+       {\r
+               String* pName = static_cast<String*>(__pActiveSearchNamesList->GetAt(index));\r
+               contactName = *pName;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return contactName;\r
+}\r
+\r
+String\r
+MessagePresentationModel::GetContactNumberAt(int index)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       String contactNumber;\r
+       if (__pActiveSearchContactNumbersList->GetCount() > 0)\r
+       {\r
+               String* pNumber = static_cast<String*>(__pActiveSearchContactNumbersList->GetAt(index));\r
+               contactNumber.Append(*pNumber);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return contactNumber;\r
+}\r
+\r
+MsgResponse\r
+MessagePresentationModel::SendMessage(const MessageComposeData& composeData, int threadId)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       MsgResponse response = MSG_RESPONSE_SUCCESS;\r
+       SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();\r
+       if (composeData.IsMms())\r
+       {\r
+               // Send MMS\r
+               response = __pMmsManger->SendMessage(composeData, threadId, pSettingPrModel->GetMmsSendSettings());\r
+       }\r
+       else\r
+       {\r
+               response = __pSmsManager->SendMessage(composeData.GetSmsBody(), threadId, pSettingPrModel->GetSmsSendSetting());\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return response;\r
+}\r
+\r
+MsgResponse\r
+MessagePresentationModel::SendMessage(const MessageComposeData& composeData, const IList& addressList,\r
+                                                                         int& threadId)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       MsgResponse response = MSG_RESPONSE_SUCCESS;\r
+       SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();\r
+       if (composeData.IsMms())\r
+       {\r
+               // Send MMS\r
+               response = __pMmsManger->SendMessage(composeData, addressList, threadId, pSettingPrModel->GetMmsSendSettings());\r
+       }\r
+       else\r
+       {\r
+               response = __pSmsManager->SendMessage(composeData.GetSmsBody(), addressList, threadId, pSettingPrModel->GetSmsSendSetting());\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return response;\r
+}\r
+\r
+MsgResponse\r
+MessagePresentationModel::SaveMessage(const MessageComposeData& composeData, int threadId)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       MsgResponse response = MSG_RESPONSE_SUCCESS;\r
+       if (composeData.IsMms())\r
+       {\r
+               //  Save MMS\r
+               response = __pMmsManger->SaveMessage(composeData, threadId);\r
+       }\r
+       else\r
+       {\r
+               if (composeData.GetSmsBody().GetLength() > 0)\r
+               {\r
+                       response = __pSmsManager->SaveMessage(composeData.GetSmsBody(), threadId);\r
+               }\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return response;\r
+}\r
+\r
+MsgResponse\r
+MessagePresentationModel::SaveMessage(const MessageComposeData& composeData, const IList& addressList)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       MsgResponse response = MSG_RESPONSE_SUCCESS;\r
+       if (composeData.IsMms())\r
+       {\r
+#ifndef _DISABLE_MMS_FEATURE_\r
+               //  Save MMS\r
+               response = __pMmsManger->SaveMessage(composeData, addressList);\r
+#endif\r
+       }\r
+       else\r
+       {\r
+               response = __pSmsManager->SaveMessage(composeData.GetSmsBody(), addressList);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return response;\r
+}\r
+\r
+MsgResponse\r
+MessagePresentationModel::ReSendMessage(int messageId, bool ismms)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       MsgResponse response = MSG_RESPONSE_SUCCESS;\r
+       if (ismms)\r
+       {\r
+#ifndef _DISABLE_MMS_FEATURE_\r
+               //  Save MMS\r
+               response = __pMmsManger->ReSendMessage(messageId);\r
+#endif\r
+       }\r
+       else\r
+       {\r
+               response = __pSmsManager->ReSendMessage(messageId);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return response;\r
+}\r
diff --git a/src/MsgMessagesApp.cpp b/src/MsgMessagesApp.cpp
new file mode 100644 (file)
index 0000000..6c2e989
--- /dev/null
@@ -0,0 +1,469 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <FBaseUtilStringTokenizer.h>
+#include <FSocial.h>
+
+#include "MsgBaseData.h"
+#include "MsgComposerForm.h"
+#include "MsgCommonUtil.h"
+#include "MsgContactUtility.h"
+#include "MsgFacadeManager.h"
+#include "MsgMainFrame.h"
+#include "MsgMessagesApp.h"
+#include "MsgThreadPresentationModel.h"
+#include "MsgTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Utility;
+using namespace Tizen::Social;
+using namespace Tizen::System;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+const wchar_t* COMPOSE_KEY_TYPE = L"type";
+const wchar_t* COMPOSE_KEY_TO = L"to";
+const wchar_t* COMPOSE_KEY_TEXT = L"text";
+const wchar_t* COMPOSE_KEY_SUBJECT = L"subject";
+const wchar_t* COMPOSE_KEY_IMAGE = L"attachImage";
+const wchar_t* COMPOSE_KEY_AUDIO = L"attachAudio";
+const wchar_t* COMPOSE_KEY_VIDEO = L"attachVideo";
+const wchar_t* COMPOSE_KEY_VCARD = L"attachVcard";
+const wchar_t* COMPOSE_KEY_VCALENDAR = L"attachVcalendar";
+const wchar_t* COMPOSE_MSG_TYPE_SMS = L"SMS";
+const wchar_t* COMPOSE_MSG_TYPE_MMS = L"MMS";
+const wchar_t* IDC_FRAME_NAME = L"Messages";
+
+
+MessagesApp::MessagesApp(void)
+       : __pClientAppRequestId(-1)
+       , __appCntlResult(APP_CTRL_RESULT_SUCCEEDED)
+       , __isApplicationRunning(false)
+       , __isAppRunningEmbededMode(false)
+       , __pFacadeManager(null)
+       , __pAddressBook(null)
+       , __initialScene(null)
+       , __pLaunchArgs(null)
+{
+       //empty implementation
+}
+
+MessagesApp::~MessagesApp(void)
+{
+       AppLogDebug("ENTER");
+       if (__pLaunchArgs)
+       {
+               __pLaunchArgs->RemoveAll(true);
+               delete __pLaunchArgs;
+       }
+       if (__pFacadeManager)
+       {
+               __pFacadeManager->Uninitialize();
+               delete __pFacadeManager;
+       }
+       if (__pAddressBook)
+       {
+               delete __pAddressBook;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+UiApp*
+MessagesApp::CreateInstance(void)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       // Create the instance through the constructor.
+       return new MessagesApp();
+}
+
+bool
+MessagesApp::OnAppInitializing(AppRegistry& appRegistry)
+{
+       AppLogDebug("ENTER");
+       __pFacadeManager = new (std::nothrow) FacadeManager();
+       result r = __pFacadeManager->Initialize();
+       if (!__pFacadeManager || r != E_SUCCESS)
+       {
+               AppLogDebug("Unable to initialize MsgFacadeManager");
+               return false;
+       }
+       AppControlProviderManager::GetInstance()->SetAppControlProviderEventListener(this);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return true;
+}
+
+bool
+MessagesApp::OnAppInitialized(void)
+{
+       AppLogDebug("ENTER");
+
+       // Application not running so, initialize default scene
+       if (!__isApplicationRunning && __initialScene == null)
+       {
+               __initialScene = IDSCN_THREAD_LIST;
+       }
+       __isApplicationRunning = true;
+
+       // Create default application Frame
+       Frame* pMsgFrame = new (std::nothrow) MainFrame();
+       pMsgFrame->Construct();
+       pMsgFrame->SetName(IDC_FRAME_NAME);
+       AddFrame(*pMsgFrame);     // Transfer ownership.
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return true;
+}
+
+bool
+MessagesApp::OnAppWillTerminate(void)
+{
+       // Call when app will terminate not gracefull way.
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return true;
+}
+
+bool
+MessagesApp::OnAppTerminating(AppRegistry& appRegistry,
+                                                         bool forcedTermination)
+{
+       AppLogDebug("ENTER");
+
+       // Deallocate resources allocated by this App for termination.
+       // The App's permanent data and context can be saved via appRegistry.
+//     result r = E_SUCCESS;
+       __pFacadeManager->Uninitialize();
+//     if (r != E_SUCCESS)
+//     {
+//             AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+//     }
+
+       if (__pFacadeManager)
+       {
+               delete __pFacadeManager;
+               __pFacadeManager = null;
+       }
+
+       //Set appcontrol complete result.
+       if (__isAppRunningEmbededMode)
+       {
+               AppControlProviderManager::GetInstance()->SendAppControlResult(__pClientAppRequestId, __appCntlResult, null);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return true;
+}
+
+void
+MessagesApp::OnForeground(void)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+MessagesApp::OnBackground(void)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+MessagesApp::OnLowMemory(void)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+MessagesApp::OnBatteryLevelChanged(BatteryLevel batteryLevel)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+MessagesApp::OnScreenOn(void)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+MessagesApp::OnScreenOff(void)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+MessagesApp::OnAppControlRequestReceived(RequestId reqId, const String& operationId,
+                                                                                const String* pUriScheme, const String* pDataType, const IMap* pArgs)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("Messages:ReqId :%d ", (int) reqId);
+       AppLogDebug("Messages:OperationId :%S ", operationId.GetPointer());
+
+       __pClientAppRequestId = reqId;
+       // Message support only compose and setting app control. Setting not taking any data for launching
+       // through app control
+       ArrayList* pArgList = null;
+       if (pArgs)
+       {
+               AppLogDebug("Argument count: %d", pArgs->GetCount());
+               if (operationId.CompareTo(IDS_APPCONTROL_OPERATION_COMPOSE) == 0)
+               {
+                       pArgList = new (std::nothrow) ArrayList();
+                       pArgList->Construct();
+                       MessageComposeData* pCompseData = new (std::nothrow) MessageComposeData(L"");
+                       // Check Message Type
+                       bool msgTypeMms(false);
+                       const String typeKey(COMPOSE_KEY_TYPE);
+                       const String* pMsgType = (String*) pArgs->GetValue(typeKey);
+                       if (pMsgType)
+                       {
+                               msgTypeMms = (pMsgType->CompareTo(String(COMPOSE_MSG_TYPE_MMS)) == 0);
+                               AppLogDebug("Key: %S Value: %S", typeKey.GetPointer(), pMsgType->GetPointer());
+                       }
+                       pCompseData->SetComposeMms(msgTypeMms);
+                       // Check To field for SMS/MMS
+                       const String toKey(COMPOSE_KEY_TO);
+                       const String* pRecipients = (String*) pArgs->GetValue(toKey);
+                       if (pRecipients)
+                       {
+                               UpdateRecipients(*pCompseData, *pRecipients);
+                               AppLogDebug("Key: %S Value: %S", toKey.GetPointer(), pRecipients->GetPointer());
+                       }
+                       if (msgTypeMms)
+                       {
+                               //TODO: For MMS
+                       }
+                       else
+                       {
+                               // SMS Body text.
+                               const String textKey(COMPOSE_KEY_TEXT);
+                               const String* pSmsText = (String*) pArgs->GetValue(textKey);
+                               // Body text exist
+                               if (pSmsText)
+                               {
+                                       pCompseData->SetSmsBody(*pSmsText);
+                                       AppLogDebug("Key: %S Value: %S", textKey.GetPointer(), pSmsText->GetPointer());
+                               }
+                       }
+                       pArgList->Add(pCompseData);
+               }
+       }
+       // Handle From switching based on app control received.
+       HandleAppControlRequestReceived(operationId, pArgList);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+MessagesApp::HandleAppControlRequestReceived(const String& operationId, IList* pArgsList)
+{
+       AppLogDebug("ENTER");
+
+       // previous instance ownership already transfered
+       __pLaunchArgs = null;
+       if (operationId.CompareTo(IDS_APPCONTROL_OPERATION_COMPOSE) == 0)
+       {
+               __pLaunchArgs = (ArrayList*) pArgsList;
+               pArgsList = null;
+               __pLaunchArgs->InsertAt((new (std::nothrow) Integer(COMPOSER_LAUNCH_APP_CONTROL)), 0);
+               __initialScene = IDSCN_COMPOSER;
+
+               SetAppEmbededMode(true);
+       }
+       else if (operationId.CompareTo(IDS_APPCONTROL_OPERATION_SETTINGS) == 0)
+       {
+               __initialScene = IDSCN_SETTINGS;
+               SetAppEmbededMode(true);
+       }
+       // App launch bring current scene.
+       if (__isApplicationRunning && __initialScene != null)
+       {
+               result r = E_FAILURE;
+               // In case of current view  and target view  same then scene transition will not work.
+               // so, need to refresh the view data
+               SceneManager* pSceneManager = SceneManager::GetInstance();
+               if (__pLaunchArgs && (__initialScene.CompareTo(pSceneManager->GetCurrentSceneId()) == 0))
+               {
+                       Integer* launchType = (Integer*) __pLaunchArgs->GetAt(0);
+                       if (launchType->ToInt() == COMPOSER_LAUNCH_APP_CONTROL)
+                       {
+                               Frame* pAppFrame = UiApp::GetInstance()->GetFrame(IDC_FRAME_NAME);
+                               if (pAppFrame)
+                               {
+                                       ComposerForm* pComposeForm = (ComposerForm*) pAppFrame->GetCurrentForm();
+                                       if (pComposeForm)
+                                       {
+                                               MessageComposeData* pComposedata = (MessageComposeData*) __pLaunchArgs->GetAt(1);
+                                               pComposeForm->LoadComposeData(*pComposedata);
+                                       }
+                               }
+                       }
+               }
+               else
+               {
+                       r = pSceneManager->GoForward(ForwardSceneTransition(__initialScene, SCENE_TRANSITION_ANIMATION_TYPE_NONE),
+                                                                                __pLaunchArgs);
+               }
+               // Scene transition success
+               if (r == E_SUCCESS)
+               {
+                       // Ownership transferr
+                       __pLaunchArgs = null;
+               }
+               else
+               {
+                       if (__pLaunchArgs)
+                       {
+                               __pLaunchArgs->RemoveAll(true);
+                               delete __pLaunchArgs;
+                               __pLaunchArgs = null;
+                       }
+               }
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+IList*
+MessagesApp::GetLaunchArgumentsN(void)
+{
+       AppLogDebug("ENTER");
+       // Transfer ownership
+       IList* pLaunchArgs = __pLaunchArgs;
+       __pLaunchArgs = null;
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pLaunchArgs;
+}
+
+void
+MessagesApp::ExitApp(AppCtrlResult result)
+{
+       AppLogDebug("ENTER");
+
+       __appCntlResult = result;
+
+       UiApp* pApp = UiApp::GetInstance();
+       AppAssert(pApp);
+       pApp->Terminate();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+MessagesApp::UpdateRecipients(MessageComposeData& composeDta, const String& recipientsStr)
+{
+       AppLogDebug("ENTER");
+
+       String delim(L";");
+       // Create a StringTokenizer instance
+       StringTokenizer strToken(recipientsStr, delim);
+       String phoneNumber;
+       int tokenCount = strToken.GetTokenCount();
+       if (tokenCount > 0)
+       {
+               // Max 10 recipients can be added
+               for (int index = 0; index < tokenCount; index++)
+               {
+                       strToken.GetNextToken(phoneNumber);
+                       if (CommonUtil::IsValidPhoneNumber(phoneNumber))
+                       {
+                               // Create Recipient list
+                               AddressInfo* pNewAddrInfo = new (std::nothrow) AddressInfo();
+                               pNewAddrInfo->phoneNumber.Append(phoneNumber);
+                               pNewAddrInfo->needToValidate = false;
+                               // Get recipient name
+                               GetRecipientName(*pNewAddrInfo, phoneNumber);
+                               composeDta.AddRecipient(pNewAddrInfo);
+                       }
+                       else
+                       {
+                               AppLogDebug("invalid phone number");
+                       }
+               }
+       }
+       else if (CommonUtil::IsValidPhoneNumber(recipientsStr))
+       {
+               // Create Recipient list
+               AddressInfo* pNewAddrInfo = new (std::nothrow) AddressInfo();
+               pNewAddrInfo->phoneNumber.Append(recipientsStr);
+               pNewAddrInfo->needToValidate = false;
+               // Get recipient name
+               GetRecipientName(*pNewAddrInfo,recipientsStr);
+               composeDta.AddRecipient(pNewAddrInfo);
+       }
+       else
+       {
+               AppLogDebug("invalid phone number");
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+MessagesApp::GetRecipientName(AddressInfo& addressInfo, const String& strPhoneNumber)
+{
+       AppLogDebug("ENTER");
+       if (!__pAddressBook)
+       {
+               __pAddressBook = AddressbookManager::GetInstance()->GetAddressbookN();
+               if (__pAddressBook)
+               {
+                       __pAddressBook->SetEventListener(null);
+               }
+       }
+       if(__pAddressBook)
+       {
+               IList* pRecipientNameList = __pAddressBook->SearchContactsByPhoneNumberN(strPhoneNumber);
+               if (pRecipientNameList)
+               {
+                       Contact* pRecipientContact = ContactUtility::GetContact(pRecipientNameList,strPhoneNumber);
+                       if(pRecipientContact)
+                       {
+                               pRecipientContact->GetValue(CONTACT_PROPERTY_ID_FIRST_NAME, addressInfo.displayName);
+                       }
+                       pRecipientNameList->RemoveAll(true);
+                       delete pRecipientNameList;
+               }
+       }
+       if(addressInfo.displayName.CompareTo(String(IDS_BLANK)) == 0)
+       {
+               addressInfo.displayName.Append(strPhoneNumber);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
diff --git a/src/MsgMessagesEntry.cpp b/src/MsgMessagesEntry.cpp
new file mode 100644 (file)
index 0000000..65f166e
--- /dev/null
@@ -0,0 +1,60 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include "MsgMessagesApp.h"\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+\r
+#ifdef __cplusplus\r
+extern "C"\r
+{\r
+#endif // __cplusplus\r
+\r
+_EXPORT_ int OspMain(int argc, char* pArgv[]);\r
+\r
+int\r
+OspMain(int argc, char* pArgv[])\r
+{\r
+       AppLogDebug("ENTER");\r
+       result r = E_SUCCESS;\r
+\r
+       AppLog("Application started.");\r
+       ArrayList* pArgs = new ArrayList();\r
+       pArgs->Construct();\r
+       for (int i = 0; i < argc; i++)\r
+       {\r
+               pArgs->Add((new String(pArgv[i])));\r
+       }\r
+\r
+       r = UiApp::Execute(MessagesApp::CreateInstance, pArgs);\r
+       if (IsFailed(r))\r
+       {\r
+               AppLogException("Application execution failed-[%s].", GetErrorMessage(r));\r
+               r &= 0x0000FFFF;\r
+       }\r
+\r
+       pArgs->RemoveAll(true);\r
+       delete pArgs;\r
+       AppLog("Application finished.");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+\r
+       return static_cast<int>(r);\r
+}\r
+#ifdef __cplusplus\r
+}\r
+#endif // __cplusplus\r
diff --git a/src/MsgMmsDetailForm.cpp b/src/MsgMmsDetailForm.cpp
new file mode 100644 (file)
index 0000000..0696c51
--- /dev/null
@@ -0,0 +1,1740 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <FApp.h>\r
+#include <FBase.h>\r
+#include <FMedia.h>\r
+#include <FSystem.h>\r
+#include <FUiCtrlFooter.h>\r
+#include <FUiCtrlHeader.h>\r
+#include <FUiScenesBackwardSceneTransition.h>\r
+#include <FUiScenesSceneManager.h>\r
+\r
+#include "MsgAttachListPanel.h"\r
+#include "MsgAttachmentSavePopup.h"\r
+#include "MsgBaseCustomPopup.h"\r
+#include "MsgBitmapUtility.h"\r
+#include "MsgContactUtility.h"\r
+#include "MsgCommonUtil.h"\r
+#include "MsgMessageData.h"\r
+#include "MsgMessagePresentationModel.h"\r
+#include "MsgSettingPresentationModel.h"\r
+#include "MsgMmsDetailForm.h"\r
+#include "MsgConversationPresentationModel.h"\r
+#include "MsgTypes.h"\r
+\r
+\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Ui;\r
+using namespace Tizen::Ui::Controls;\r
+using namespace Tizen::Ui::Scenes;\r
+using namespace Tizen::App;\r
+using namespace Tizen::Media;\r
+using namespace Tizen::Base::Runtime;\r
+using namespace Tizen::System;\r
+\r
+const wchar_t* IDS_TIZEN_MEDIA = L"tizen.sound.media.volume";\r
+\r
+MmsDetailForm::MmsDetailForm(void)\r
+       : __pMessageData(null)\r
+       , __pMsgAttachListPanel(null)\r
+       , __pAttachFileArray(null)\r
+       , __pGallery(null)\r
+       , __pMmsTextBox(null)\r
+       , __pPlayControlPanel(null)\r
+       , __pPreviousButton(null)\r
+       , __pPlayPausebutton(null)\r
+       , __pNextbutton(null)\r
+       , __pProgress(null)\r
+       , __pTimeElapsedLabel(null)\r
+       , __pPageNumberLabel(null)\r
+       , __pAttachFilesInfoLabel(null)\r
+       , __pMessageDetailsPopup(null)\r
+       , __pDeletePopup(null)\r
+       , __pVolumePopup(null)\r
+       , __pBlockPopup(null)\r
+       , __pContextMenu(null)\r
+       , __pContextMenuText(null)\r
+       , __pMediaVolumeSlider(null)\r
+       , __pOverlay(null)\r
+       , __pPlayer(null)\r
+       , __pSaveAttachmentsPopup(null)\r
+       , __pPageDuration(null)\r
+       , __bIsPlaying(false)\r
+       , __totalDuration(0)\r
+       , __timeElapsed(0)\r
+       , __pageCountOfCurrentMessageData(0)\r
+       , __currentPage(0)\r
+       , __pTimer(null)\r
+       , __pTimerforVolumePopup(null)\r
+       , __pTimerForControlBar(null)\r
+       , __mmsFormType(MMS_FORM_NORMAL)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+MmsDetailForm::~MmsDetailForm(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pTimerforVolumePopup)\r
+       {\r
+               __pTimerforVolumePopup->Cancel();\r
+               delete __pTimerforVolumePopup;\r
+       }\r
+       if (__pTimer)\r
+       {\r
+               __pTimer->Cancel();\r
+               delete __pTimer;\r
+       }\r
+       if (__pTimerForControlBar)\r
+       {\r
+               __pTimerForControlBar->Cancel();\r
+               delete __pTimerForControlBar;\r
+       }\r
+       if (__pSaveAttachmentsPopup)\r
+       {\r
+               delete __pSaveAttachmentsPopup;\r
+       }\r
+       if (__pMessageData)\r
+       {\r
+               delete __pMessageData;\r
+       }\r
+       if (__pPageDuration)\r
+       {\r
+               delete[] __pPageDuration;\r
+               __pPageDuration = null;\r
+       }\r
+       if (__pVolumePopup)\r
+       {\r
+               delete __pVolumePopup;\r
+       }\r
+       if (__pContextMenu)\r
+       {\r
+               delete __pContextMenu;\r
+       }\r
+       if (__pBlockPopup)\r
+       {\r
+               delete __pBlockPopup;\r
+       }\r
+       if (__pMessageDetailsPopup)\r
+       {\r
+               delete __pMessageDetailsPopup;\r
+       }\r
+       if (__pPlayer)\r
+       {\r
+               delete __pPlayer;\r
+       }\r
+       if (__pOverlay)\r
+       {\r
+               delete __pOverlay;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+bool\r
+MmsDetailForm::Initialize(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       Construct(L"IDL_MMS_DETAIL_FORM");\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return true;\r
+}\r
+\r
+void\r
+MmsDetailForm::OnIntializeFooter(Footer& footer)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       // Set event listener\r
+       footer.AddActionEventListener(*this);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+MmsDetailForm::SetFooter(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       Footer* pFooter = GetFooter();\r
+       if (pFooter)\r
+       {\r
+               pFooter->RemoveAllButtons();\r
+               pFooter->RemoveAllItems();\r
+               if (__mmsFormType == MMS_FORM_NORMAL)\r
+               {\r
+                       FooterItem saveButton;\r
+                       saveButton.Construct(IDA_SAVE_ATTACHMENT);\r
+                       Bitmap* pIconBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SAVE_ATTACHMENT);\r
+                       if (pIconBitmap)\r
+                       {\r
+                               saveButton.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pIconBitmap);\r
+                       }\r
+                       pFooter->AddItem(saveButton);\r
+                       FooterItem deleteBtn;\r
+                       deleteBtn.Construct(IDA_DELETE_MESSAGE);\r
+                       pIconBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_DELETE);\r
+                       if (pIconBitmap)\r
+                       {\r
+                               deleteBtn.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pIconBitmap);\r
+                       }\r
+                       pFooter->AddItem(deleteBtn);\r
+                       //Set Resend/Reply button on footer\r
+                       if (__pMessageData && __pMessageData->IsSentFail())\r
+                       {\r
+                               FooterItem resendButton;\r
+                               resendButton.Construct(IDA_RESEND_MESSAGE);\r
+                               pIconBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_RESEND);\r
+                               if (pIconBitmap)\r
+                               {\r
+                                       resendButton.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pIconBitmap);\r
+                               }\r
+                               pFooter->AddItem(resendButton);\r
+                       }\r
+                       else\r
+                       {\r
+                               FooterItem replyButton;\r
+                               replyButton.Construct(IDA_REPLY_MESSAGE);\r
+                               pIconBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_REPLY);\r
+                               if (pIconBitmap)\r
+                               {\r
+                                       replyButton.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pIconBitmap);\r
+                               }\r
+                               pFooter->AddItem(replyButton);\r
+                       }\r
+                       FooterItem moreButton;\r
+                       moreButton.Construct(IDA_MORE);\r
+                       pIconBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_MORE);\r
+                       if (pIconBitmap)\r
+                       {\r
+                               moreButton.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pIconBitmap);\r
+                       }\r
+                       pFooter->AddItem(moreButton);\r
+               }\r
+               pFooter->SetBackButton();\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+MmsDetailForm::OnIntializeHeader(Header& header)\r
+{\r
+       AppLogDebug("ENTER");\r
+       // Set event listener\r
+       header.SetStyle(HEADER_STYLE_SEGMENTED);\r
+       header.AddActionEventListener(*this);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+MmsDetailForm::OnUserEventReceivedN(RequestId requestId, IList* pArgs)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       switch (requestId)\r
+       {\r
+       case REQUEST_DESTROY_SAVE_ATTACHMENT_POPUP:\r
+       {\r
+               if (__pSaveAttachmentsPopup)\r
+               {\r
+                       delete __pSaveAttachmentsPopup;\r
+                       __pSaveAttachmentsPopup = null;\r
+               }\r
+       }\r
+       break;\r
+       }\r
+\r
+       // Release resource\r
+       if (pArgs)\r
+       {\r
+               pArgs->RemoveAll(true);\r
+               delete pArgs;\r
+       }\r
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+\r
+}\r
+\r
+result\r
+MmsDetailForm::OnInitializing(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       Font font;\r
+       r = BaseForm::InitializeBase();\r
+       __pGallery = static_cast<Gallery*>(GetControl(L"IDC_GALLERY_MMS_IMAGE"));\r
+       __pGallery->SetShowState(false);\r
+       __pGallery->AddTouchEventListener(*this);\r
+       __pAttachFilesInfoLabel = static_cast<Label*>(GetControl(L"IDC_ATTACH_FILES_INFO_LABEL"));\r
+       __pAttachFilesInfoLabel->SetShowState(false);\r
+       __pAttachFilesInfoLabel->SetBackgroundColor(GetBackgroundColor());\r
+       __pMmsTextBox = static_cast<TextBox*>(GetControl(L"IDC_MMS_TEXT"));\r
+       if (__pMmsTextBox)\r
+       {\r
+               __pMmsTextBox->SetColor(TEXT_BOX_STATUS_NORMAL, GetBackgroundColor());\r
+               __pMmsTextBox->SetColor(TEXT_BOX_STATUS_HIGHLIGHTED, GetBackgroundColor());\r
+               __pMmsTextBox->SetColor(TEXT_BOX_STATUS_DISABLED, GetBackgroundColor());\r
+               //TODO: If touchevent lsitener is added scroll do not work.\r
+//             __pMmsTextBox->AddTouchEventListener(*this);\r
+               __pMmsTextBox->SetShowState(true);\r
+       }\r
+\r
+       __pPlayControlPanel = static_cast<Panel*>(GetControl(L"IDC_PLAY_CONTROLS_PANEL"));\r
+       if (__pPlayControlPanel)\r
+       {\r
+               //__pPlayControlPanel->SetShowState(false);\r
+               __pPlayControlPanel->SetBackgroundColor(COLOR_PANEL_BORDER);\r
+               Button* pVolumeButton = static_cast<Button*>(__pPlayControlPanel->GetControl(L"IDC_VOLUME_BUTTON"));\r
+               if (pVolumeButton)\r
+               {\r
+                       pVolumeButton->SetActionId(IDA_VOLUME);\r
+                       pVolumeButton->AddActionEventListener(*this);\r
+                       pVolumeButton->SetSize(W_PLAYCONTROL_BUTTON, H_PLAYCONTROL_BUTTON);\r
+\r
+               }\r
+               __pPreviousButton = static_cast<Button*>(__pPlayControlPanel->GetControl(L"IDC_PREVIOUS_BUTTON"));\r
+               if (__pPreviousButton)\r
+               {\r
+                       __pPreviousButton->SetActionId(IDA_PREVIOUS);\r
+                       __pPreviousButton->AddActionEventListener(*this);\r
+                       __pPreviousButton->SetSize(W_PLAYCONTROL_BUTTON, H_PLAYCONTROL_BUTTON);\r
+\r
+               }\r
+               __pPlayPausebutton = static_cast<Button*>(__pPlayControlPanel->GetControl(L"IDC_PLAY_PAUSE_BUTTON"));\r
+               if (__pPlayPausebutton)\r
+               {\r
+                       __pPlayPausebutton->SetActionId(IDA_PLAY);\r
+                       __pPlayPausebutton->AddActionEventListener(*this);\r
+                       __pPlayPausebutton->SetSize(W_PLAYCONTROL_BUTTON, H_PLAYCONTROL_BUTTON);\r
+                       Bitmap* pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SMIL_PLAY);\r
+                       if (pBitMap)\r
+                       {\r
+                               pBitMap->Scale(Dimension(W_PLAYCONTROL_BUTTON, H_PLAYCONTROL_BUTTON));\r
+                       }\r
+                       __pPlayPausebutton->SetNormalBitmap(Point(0, 0), *pBitMap);\r
+               }\r
+               __pNextbutton = static_cast<Button*>(__pPlayControlPanel->GetControl(L"IDC_NEXT_BUTTON"));\r
+               if (__pNextbutton)\r
+               {\r
+                       __pNextbutton->SetActionId(IDA_NEXT);\r
+                       __pNextbutton->AddActionEventListener(*this);\r
+                       __pNextbutton->SetSize(W_PLAYCONTROL_BUTTON, H_PLAYCONTROL_BUTTON);\r
+\r
+               }\r
+               __pProgress = static_cast<Progress*>(__pPlayControlPanel->GetControl(L"IDC_PROGRESS"));\r
+               if (__pProgress)\r
+               {\r
+                       __pProgress->SetSize(482, 17);\r
+                       __pProgress->SetValue(0);\r
+               }\r
+               __pTimeElapsedLabel = static_cast<Label*>(__pPlayControlPanel->GetControl(L"IDC_TIME_ELAPSED_LABEL"));\r
+       }\r
+       __pPageNumberLabel = static_cast<Label*>(GetControl(L"IDC_PAGE_NUMBER_LABEL"));\r
+       if (__pPageNumberLabel)\r
+       {\r
+               __pPageNumberLabel->SetTextHorizontalAlignment(ALIGNMENT_RIGHT);\r
+               __pPageNumberLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);\r
+               __pPageNumberLabel->SetBackgroundColor(COLOR_BUBBLE_BG);\r
+               __pPageNumberLabel->AddTouchEventListener(*this);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+result\r
+MmsDetailForm::OnTerminating(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+void\r
+MmsDetailForm::OnSceneActivatedN(const SceneId& previousSceneId,\r
+                                                                const SceneId& currentSceneId, IList* pArgs)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__previousSceneId.IsEmpty())\r
+       {\r
+               __previousSceneId.Append(previousSceneId);\r
+       }\r
+       if (pArgs && pArgs->GetCount() > 0)\r
+       {\r
+               // MMS form mode\r
+               __mmsFormType = (MmsFormType) ((Integer*) pArgs->GetAt(0))->ToInt();\r
+               if (__mmsFormType == MMS_FORM_PREVIEW)\r
+               {\r
+                       __pMessageData = (MessageData*) pArgs->GetAt(1);\r
+               }\r
+               else\r
+               {\r
+                       Integer* pMessageId = (Integer*) pArgs->GetAt(1);\r
+                       if (pMessageId->ToInt() > 0)\r
+                       {\r
+                               MessagePresentationModel* pMsgPrModel = MessagePresentationModel::GetInstance();\r
+                               if (pMsgPrModel)\r
+                               {\r
+                                       __pMessageData = pMsgPrModel->GetMessageDataByIdN(pMessageId->ToInt());\r
+                               }\r
+                       }\r
+               }\r
+               delete pArgs;\r
+       }\r
+       SetFooter();\r
+       //  Load data to UI from message data\r
+       if (__pMessageData)\r
+       {\r
+               // Set title\r
+               HeaderItem headerLeftItem;\r
+               headerLeftItem.Construct(IDA_MMSDETAIL_FORM_HEADER_TITLEITEM);\r
+               headerLeftItem.SetText(__pMessageData->GetDisplayName());\r
+               GetHeader()->AddItem(headerLeftItem);\r
+               //      GetHeader()->SetTitleText(__pMessageData->GetDisplayName());\r
+               ArrayList* pAttachList = const_cast<ArrayList*>(__pMessageData->GetPageList());\r
+               //Get Page count\r
+               __pageCountOfCurrentMessageData = __pMessageData->GetPageCount();\r
+               __pPageDuration = new int[__pageCountOfCurrentMessageData];\r
+\r
+               for (int i = 0; i < __pageCountOfCurrentMessageData; i++)\r
+               {\r
+                       MmsPageData* pPageData = static_cast<MmsPageData*>(pAttachList->GetAt(i));\r
+                       if (pPageData)\r
+                       {\r
+                               const String mmsBodyText = pPageData->GetBodyText();\r
+                               if (__pMmsTextBox && !i)\r
+                               {\r
+                                       __pMmsTextBox->SetText(mmsBodyText);\r
+                               }\r
+                               __totalDuration = __totalDuration + pPageData->GetPageDuration();\r
+                               __pPageDuration[i] = pPageData->GetPageDuration();\r
+                       }\r
+               }\r
+               if (__pMessageData->GetAttachmentCount())\r
+               {\r
+                       __totalDuration = __totalDuration + 5;\r
+                       __pageCountOfCurrentMessageData++;\r
+               }\r
+               //For slide having only subject\r
+               if (!__pageCountOfCurrentMessageData && !__totalDuration)\r
+               {\r
+                       __pageCountOfCurrentMessageData = 1;\r
+                       __totalDuration = 5;\r
+               }\r
+               if (__pageCountOfCurrentMessageData < 2)\r
+               {\r
+                       __pNextbutton->SetEnabled(false);\r
+               }\r
+               if (__pProgress)\r
+               {\r
+                       __pProgress->SetRange(0, __totalDuration);\r
+               }\r
+               Label* pTotalTimeDuratonLabel = static_cast<Label*>(__pPlayControlPanel->GetControl(L"IDC_TOTAL_TIME_DURATION_LABEL"));\r
+               if (pTotalTimeDuratonLabel)\r
+               {\r
+                       String strTotaltime(L"00:");\r
+                       if (__totalDuration < 9)\r
+                       {\r
+                               strTotaltime = (L"00:0");\r
+                       }\r
+                       strTotaltime.Append(__totalDuration);\r
+                       pTotalTimeDuratonLabel->SetText(strTotaltime);\r
+               }\r
+               if (__pPageNumberLabel)\r
+               {\r
+                       String slideNumber(L"1/");\r
+                       slideNumber.Append(__pageCountOfCurrentMessageData);\r
+\r
+                       __pPageNumberLabel->SetText(slideNumber);\r
+               }\r
+               Label* pSubjectLabel = static_cast<Label*>(GetControl(L"IDC_LABEL_SUBJECT"));\r
+               if (pSubjectLabel)\r
+               {\r
+                       pSubjectLabel->SetBackgroundColor(COLOR_BUBBLE_BG);\r
+                       pSubjectLabel->SetText(__pMessageData->GetSubject());\r
+                       pSubjectLabel->AddTouchEventListener(*this);\r
+               }\r
+               __pPreviousButton->SetEnabled(false);\r
+       }\r
+       UpdateForm(GetSlideType(__currentPage));\r
+       StartSlideShow();\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+MmsDetailForm::OnSceneDeactivated(const SceneId& currentSceneId,\r
+                                                                 const SceneId& nextSceneId)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+MmsDetailForm::OnOrientationChanged(const Control& source, OrientationStatus orientationStatus)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+MmsDetailForm::OnActionPerformed(const Control& source, int actionId)\r
+{\r
+       AppLogDebug("ENTER");\r
+       switch (actionId)\r
+       {\r
+       case IDA_VOLUME:\r
+       {\r
+               ShowVolumePopup();\r
+       }\r
+       break;\r
+\r
+       case IDA_PLAY:\r
+       {\r
+               if (!__bIsPlaying)\r
+               {\r
+                       if (__timeElapsed == __totalDuration)\r
+                       {\r
+                               __timeElapsed = 0;\r
+                               __currentPage = 0;\r
+                               if (__pageCountOfCurrentMessageData > 1)\r
+                               {\r
+                                       __pNextbutton->SetEnabled(true);\r
+                               }\r
+                               if (__pProgress)\r
+                               {\r
+                                       __pProgress->SetValue(__timeElapsed);\r
+                                       __pProgress->RequestRedraw(true);\r
+                               }\r
+                               UpdateForm(GetSlideType(__currentPage));\r
+                               UpdateMmsBodyText();\r
+                               StartSlideShow();\r
+                       }\r
+                       else\r
+                       {\r
+                               __bIsPlaying = true;\r
+                               PlaySlideShow();\r
+                       }\r
+               }\r
+               else\r
+               {\r
+                       __bIsPlaying = false;\r
+                       PauseSlideShow();\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_NEXT:\r
+       {\r
+               __pTimer->Cancel();\r
+               if (GetSlideType(__currentPage) == VideoSlide)\r
+               {\r
+                       __pPlayer->Stop();\r
+                       __pPlayer->Close();\r
+               }\r
+               int timeToRefreshGallery = GetTimeToChangeslide(__currentPage + 2);\r
+               if (__pProgress)\r
+               {\r
+                       __pProgress->SetValue(timeToRefreshGallery);\r
+                       __pProgress->RequestRedraw(true);\r
+               }\r
+               __timeElapsed = timeToRefreshGallery;\r
+               __currentPage++;\r
+               UpdateForm(GetSlideType(__currentPage));\r
+               UpdateMmsBodyText();\r
+               UpdateTimeElapsedLabel(__timeElapsed);\r
+               UpdateSlideNumber(__currentPage + 1);\r
+               if (__pPreviousButton)\r
+               {\r
+                       __pPreviousButton->SetEnabled(true);\r
+               }\r
+               if (__currentPage + 1 == __pageCountOfCurrentMessageData)\r
+               {\r
+                       __pNextbutton->SetEnabled(false);\r
+               }\r
+               __pTimer->StartAsRepeatable(1000);\r
+       }\r
+       break;\r
+\r
+       case IDA_PREVIOUS:\r
+       {\r
+               __pTimer->Cancel();\r
+               if (GetSlideType(__currentPage) == VideoSlide)\r
+               {\r
+                       __pPlayer->Stop();\r
+                       __pPlayer->Close();\r
+               }\r
+               int timeToRefreshGallery = GetTimeToChangeslide(__currentPage);\r
+               if (__pProgress)\r
+               {\r
+                       __pProgress->SetValue(timeToRefreshGallery);\r
+                       __pProgress->RequestRedraw(true);\r
+               }\r
+               __timeElapsed = timeToRefreshGallery;\r
+               __currentPage--;\r
+               UpdateForm(GetSlideType(__currentPage));\r
+               UpdateMmsBodyText();\r
+               UpdateTimeElapsedLabel(__timeElapsed);\r
+               UpdateSlideNumber(__currentPage + 1);\r
+               if (!__currentPage)\r
+               {\r
+                       __pPreviousButton->SetEnabled(false);\r
+               }\r
+               if (__pNextbutton)\r
+               {\r
+                       __pNextbutton->SetEnabled(true);\r
+               }\r
+               __pTimer->StartAsRepeatable(1000);\r
+       }\r
+       break;\r
+\r
+       case IDA_DELETE_MESSAGE:\r
+       {\r
+               ShowDeletePopup();\r
+       }\r
+       break;\r
+\r
+       case IDA_MORE:\r
+       {\r
+               ShowMoreContextMenu();\r
+       }\r
+       break;\r
+\r
+       case IDA_SAVE_ATTACHMENT:\r
+       {\r
+               MessagePresentationModel* pMsgPrModel = MessagePresentationModel::GetInstance();\r
+               if (pMsgPrModel)\r
+               {\r
+                       // Transfer ownership to popup\r
+                       MessageData* pMessageData = pMsgPrModel->GetMessageDataByIdN(__pMessageData->GetEntryId());\r
+                       if (pMessageData)\r
+                       {\r
+                               __pSaveAttachmentsPopup = new (std::nothrow) AttachementSavePopup(*this, pMessageData);\r
+                               //pMessageData = null; // Transfer ownership\r
+                               __pSaveAttachmentsPopup->Construct();\r
+                               __pSaveAttachmentsPopup->Show();\r
+                       }\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_OK_DELETE:\r
+       {\r
+               __pDeletePopup->SetShowState(false);\r
+               delete __pDeletePopup;\r
+               __pDeletePopup = null;\r
+\r
+               ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();\r
+               if (pConvPrModel)\r
+               {\r
+                       pConvPrModel->Delete(__pMessageData->GetEntryId(), REQUEST_DELETE_MESSAGE);\r
+                       OnFormBackRequested(*this);\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_CANCEL_DELETE:\r
+       {\r
+               __pDeletePopup->SetShowState(false);\r
+               delete __pDeletePopup;\r
+               __pDeletePopup = null;\r
+       }\r
+       break;\r
+\r
+       case IDA_MMSDETAIL_FORM_HEADER_TITLEITEM:\r
+       {\r
+               __pTimer->Cancel();\r
+               __bIsPlaying = false;\r
+               UpdatePlayButton();\r
+               String strText;\r
+               int index = -1;\r
+               if (__pContextMenuText)\r
+               {\r
+                       delete __pContextMenuText;\r
+                       __pContextMenuText = null;\r
+               }\r
+               __pContextMenuText = new (std::nothrow) ContextMenu();\r
+               __pContextMenuText->Construct(Point(source.GetX() + source.GetWidth() / 2, source.GetY() + source.GetHeight()),\r
+                                                                         CONTEXT_MENU_STYLE_GRID);\r
+\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_VOICE_CALL", strText);\r
+               __pContextMenuText->AddItem(strText, IDA_CONVERSATION_FORM_VOICE_CALL);\r
+\r
+               if (__pMessageData->GetDisplayName().CompareTo(IDS_UNKNOWN) == 0)\r
+               {\r
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_OPT_ADD_CONTACT", strText);\r
+                       __pContextMenuText->AddItem(strText, IDA_CONVERSATION_FORM_ADD_CONTACT);\r
+               }\r
+               else\r
+               {\r
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_OPT_VIEW_CONTACT", strText);\r
+                       __pContextMenuText->AddItem(strText, IDA_CONVERSATION_FORM_VIEW_CONTACT);\r
+               }\r
+\r
+               SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();\r
+               pSettingPrModel->GetSpamFilterList();\r
+               pSettingPrModel->RefreshSpamFilterList();\r
+               index = pSettingPrModel->GetFilterListIndex(__pMessageData->GetDisplayName());\r
+               if (index == -1)\r
+               {\r
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_OPT_BLOCK", strText);\r
+                       __pContextMenuText->AddItem(strText, IDA_CONVERSATION_FORM_BLOCK);\r
+               }\r
+               else\r
+               {\r
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_OPT_UNBLOCK", strText);\r
+                       __pContextMenuText->AddItem(strText, IDA_CONVERSATION_FORM_UNBLOCK);\r
+               }\r
+\r
+               __pContextMenuText->AddActionEventListener(*this);\r
+               __pContextMenuText->SetShowState(true);\r
+               __pContextMenuText->Show();\r
+       }\r
+       break;\r
+\r
+       case IDA_CONVERSATION_FORM_VOICE_CALL:\r
+       {\r
+               if (CommonUtil::IsSimAvailable())\r
+               {\r
+                       ContactUtility::VoiceCall(__pMessageData->GetDisplayName());\r
+               }\r
+               else\r
+               {\r
+                       // Show error message.\r
+                       String msgText;\r
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_SLCD_POP_TEXT_SIM_CARD_ERROR", msgText);\r
+                       CommonUtil::ShowInfoPopup(msgText);\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_CONVERSATION_FORM_VIEW_CONTACT:\r
+       {\r
+               ContactUtility::AddContact(__pMessageData->GetDisplayName());\r
+       }\r
+       break;\r
+\r
+       case IDA_CONVERSATION_FORM_BLOCK:\r
+       {\r
+               BlockPopup(__pMessageData->GetDisplayName());\r
+       }\r
+       break;\r
+\r
+       case IDA_PHONENUMBER_BLOCK_OK:\r
+       {\r
+               SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();\r
+               pSettingPrModel->AddToFilter(__pMessageData->GetDisplayName(), 1);\r
+               pSettingPrModel->RefreshSpamFilterList();\r
+               if (__pBlockPopup)\r
+               {\r
+                       __pBlockPopup->SetShowState(false);\r
+                       delete __pBlockPopup;\r
+                       __pBlockPopup = null;\r
+               }\r
+\r
+       }\r
+       break;\r
+\r
+       case IDA_PHONENUMBER_BLOCK_CANCEL:\r
+       {\r
+               if (__pBlockPopup)\r
+               {\r
+                       __pBlockPopup->SetShowState(false);\r
+                       delete __pBlockPopup;\r
+                       __pBlockPopup = null;\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_CONVERSATION_FORM_UNBLOCK:\r
+       {\r
+               UnBlockPhoneNumber(__pMessageData->GetDisplayName());\r
+       }\r
+       break;\r
+\r
+       case IDA_BUTTON_MESSAGE_DETAILS_POPUP:\r
+       {\r
+               ShowMessageDetails();\r
+       }\r
+       break;\r
+\r
+       case IDA_BUTTON_CLOSE_OPTIONS_POPUP:\r
+       {\r
+               __pMessageDetailsPopup->SetShowState(false);\r
+       }\r
+       break;\r
+\r
+       case IDA_FORWARD_MESSAGE:\r
+       {\r
+               // Forward message\r
+               MessagePresentationModel* pMsgPrModel = MessagePresentationModel::GetInstance();\r
+               if (pMsgPrModel)\r
+               {\r
+                       MessageData* pMsgData = pMsgPrModel->GetMessageDataByIdN(__pMessageData->GetEntryId());\r
+\r
+                       if (CommonUtil::ForwardMessage(pMsgData) != E_SUCCESS)\r
+                       {\r
+                               delete pMsgData;\r
+                       }\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_REPLY_MESSAGE:\r
+       {\r
+               // Reply message\r
+               MessagePresentationModel* pMsgPrModel = MessagePresentationModel::GetInstance();\r
+               if (pMsgPrModel)\r
+               {\r
+                       MessageData* pMsgData = pMsgPrModel->GetMessageDataByIdN(__pMessageData->GetEntryId());\r
+                       if (CommonUtil::ReplyMessage(pMsgData) != E_SUCCESS)\r
+                       {\r
+                               delete pMsgData;\r
+                       }\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_RESEND_MESSAGE:\r
+       {\r
+               MessagePresentationModel* pMsgPrModel = MessagePresentationModel::GetInstance();\r
+               if (pMsgPrModel)\r
+               {\r
+                       pMsgPrModel->ReSendMessage(__pMessageData->GetEntryId(), __pMessageData->IsMms());\r
+               }\r
+               SceneManager* pSceneManager = SceneManager::GetInstance();\r
+               pSceneManager->GoBackward(BackwardSceneTransition(__previousSceneId,\r
+                                                                                                                 SCENE_TRANSITION_ANIMATION_TYPE_NONE));\r
+       }\r
+       break;\r
+\r
+       case IDA_COPY_MESSAGE_TEXT:\r
+       {\r
+               MmsPageData* pPageData = (MmsPageData*) __pMessageData->GetPageList()->GetAt(__currentPage);\r
+               if (pPageData)\r
+               {\r
+                       CommonUtil::CopyTextToClipBoard(pPageData->GetBodyText());\r
+               }\r
+       }\r
+       break;\r
+\r
+       default:\r
+               break;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+MmsDetailForm::SlideType\r
+MmsDetailForm::GetSlideType(int slideNumber)\r
+{\r
+       AppLogDebug("ENTER");\r
+       SlideType slideType = TextSlide;\r
+       if (__pMessageData)\r
+       {\r
+               ArrayList* pPageList = const_cast<ArrayList*>(__pMessageData->GetPageList());\r
+               if (pPageList)\r
+               {\r
+                       MmsPageData* pPageData = static_cast<MmsPageData*>(pPageList->GetAt(slideNumber));\r
+                       if (pPageData)\r
+                       {\r
+                               if (pPageData->IsImageExist())\r
+                               {\r
+                                       if (pPageData->IsAudioExist())\r
+                                       {\r
+                                               slideType = AudioImageSlide;\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               slideType = ImageSlide;\r
+                                       }\r
+                               }\r
+                               else if (pPageData->IsVideoExist())\r
+                               {\r
+                                       slideType = VideoSlide;\r
+                               }\r
+                               else if (pPageData->IsAudioExist())\r
+                               {\r
+                                       if (pPageData->IsImageExist())\r
+                                       {\r
+                                               slideType = AudioImageSlide;\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               slideType = AudioSlide;\r
+                                       }\r
+                               }\r
+                               else\r
+                               {\r
+                                       slideType = TextSlide;\r
+                               }\r
+                       }\r
+                       else\r
+                       {\r
+                               slideType = AttachmentSlide;\r
+                       }\r
+               }\r
+               else if ((__pMessageData->GetSubject()).GetLength() > 0)\r
+               {\r
+                       slideType = SubjectSlide;\r
+               }\r
+               else\r
+               {\r
+                       slideType = AttachmentSlide;\r
+               }\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return slideType;\r
+}\r
+\r
+void\r
+MmsDetailForm::UpdateForm(SlideType slideType)\r
+{\r
+       AppLogDebug("ENTER");\r
+       switch (slideType)\r
+       {\r
+       case ImageSlide:\r
+       {\r
+               if (__pPlayer)\r
+               {\r
+                       __pPlayer->Stop();\r
+                       __pPlayer->Close();\r
+               }\r
+               if (__pMsgAttachListPanel)\r
+               {\r
+                       __pAttachFilesInfoLabel->SetShowState(false);\r
+                       RemoveControl(*__pMsgAttachListPanel);\r
+                       __pMsgAttachListPanel = null;\r
+               }\r
+               __pGallery->SetItemProvider(*this);\r
+               __pGallery->RefreshGallery(0, GALLERY_REFRESH_TYPE_ITEM_MODIFY);\r
+               __pGallery->SetShowState(true);\r
+               if (__pMmsTextBox)\r
+               {\r
+                       __pMmsTextBox->SetBounds(0, 520, __pMmsTextBox->GetWidth(), __pMmsTextBox->GetHeight());\r
+               }\r
+       }\r
+       break;\r
+\r
+       case VideoSlide:\r
+       case AudioSlide:\r
+       {\r
+               if (__pGallery)\r
+               {\r
+                       __pGallery->SetShowState(false);\r
+               }\r
+               if (__pMsgAttachListPanel)\r
+               {\r
+                       __pAttachFilesInfoLabel->SetShowState(false);\r
+                       RemoveControl(*__pMsgAttachListPanel);\r
+                       __pMsgAttachListPanel = null;\r
+               }\r
+               if (!__pOverlay)\r
+               {\r
+                       Rectangle rect(200, 82, 320, 240);\r
+                       BufferInfo bufferInfo;\r
+                       __pOverlay = GetOverlayRegionN(rect, OVERLAY_REGION_TYPE_NORMAL);\r
+                       __pOverlay->GetBackgroundBufferInfo(bufferInfo);\r
+                       __pPlayer = new (std::nothrow) Player();\r
+                       __pPlayer->Construct(*this, &bufferInfo);\r
+               }\r
+               ArrayList* pPageList = const_cast<ArrayList*>(__pMessageData->GetPageList());\r
+               if (pPageList)\r
+               {\r
+                       MmsPageData* pPageData = static_cast<MmsPageData*>(pPageList->GetAt(__currentPage));\r
+                       if (pPageData)\r
+                       {\r
+                               if (slideType == VideoSlide)\r
+                               {\r
+                                       const String filePath = pPageData->GetVideoPath();\r
+                                       __pPlayer->OpenFile(filePath, false);\r
+                               }\r
+                               else\r
+                               {\r
+                                       const String filePath = pPageData->GetAudioPath();\r
+                                       __pPlayer->OpenFile(filePath, false);\r
+                               }\r
+                               __pPlayer->SetLooping(false);\r
+                               __pPlayer->Play();\r
+                       }\r
+               }\r
+               if (__pMmsTextBox)\r
+               {\r
+                       __pMmsTextBox->SetBounds(0, 356, __pMmsTextBox->GetWidth(), __pMmsTextBox->GetHeight() * 2);\r
+               }\r
+       }\r
+       break;\r
+\r
+       case AttachmentSlide:\r
+       {\r
+               if (__pPlayer)\r
+               {\r
+                       __pPlayer->Stop();\r
+                       __pPlayer->Close();\r
+               }\r
+               if (__pGallery)\r
+               {\r
+                       __pGallery->SetShowState(false);\r
+               }\r
+               if (!__pMsgAttachListPanel)\r
+               {\r
+                       __pMsgAttachListPanel = new (std::nothrow) AttachListPanel(__pMessageData);\r
+                       __pMsgAttachListPanel->Construct();\r
+                       __pMsgAttachListPanel->SetPosition(16, 146);\r
+                       __pAttachFilesInfoLabel->SetText(L"This message includes attached files not shown");\r
+                       __pAttachFilesInfoLabel->SetShowState(true);\r
+               }\r
+               if (__pMmsTextBox)\r
+               {\r
+                       __pMmsTextBox->SetBounds(0, 520, __pMmsTextBox->GetWidth(), __pMmsTextBox->GetHeight());\r
+               }\r
+               AddControl(*__pMsgAttachListPanel);\r
+\r
+       }\r
+       break;\r
+\r
+       case AudioImageSlide:\r
+       {\r
+               if (__pMsgAttachListPanel)\r
+               {\r
+                       __pAttachFilesInfoLabel->SetShowState(false);\r
+                       RemoveControl(*__pMsgAttachListPanel);\r
+                       __pMsgAttachListPanel = null;\r
+               }\r
+               if (__pMmsTextBox)\r
+               {\r
+                       __pMmsTextBox->SetBounds(0, 520, __pMmsTextBox->GetWidth(), __pMmsTextBox->GetHeight());\r
+               }\r
+               __pGallery->SetItemProvider(*this);\r
+               __pGallery->RefreshGallery(0, GALLERY_REFRESH_TYPE_ITEM_MODIFY);\r
+               __pGallery->SetShowState(true);\r
+               if (!__pOverlay)\r
+               {\r
+                       Rectangle rect(200, 82, 320, 240);\r
+                       BufferInfo bufferInfo;\r
+                       __pOverlay = GetOverlayRegionN(rect, OVERLAY_REGION_TYPE_NORMAL);\r
+                       __pOverlay->GetBackgroundBufferInfo(bufferInfo);\r
+                       __pPlayer = new (std::nothrow) Player();\r
+                       __pPlayer->Construct(*this, &bufferInfo);\r
+               }\r
+               ArrayList* pPageList = const_cast<ArrayList*>(__pMessageData->GetPageList());\r
+               if (pPageList)\r
+               {\r
+                       MmsPageData* pPageData = static_cast<MmsPageData*>(pPageList->GetAt(__currentPage));\r
+                       if (pPageData)\r
+                       {\r
+                               const String filePath = pPageData->GetAudioPath();\r
+                               __pPlayer->OpenFile(filePath, false);\r
+                               __pPlayer->SetLooping(false);\r
+                               __pPlayer->Play();\r
+                       }\r
+               }\r
+       }\r
+       break;\r
+\r
+       case TextSlide:\r
+       case SubjectSlide:\r
+       {\r
+               if (__pGallery)\r
+               {\r
+                       __pGallery->SetShowState(false);\r
+               }\r
+               if (__pMsgAttachListPanel)\r
+               {\r
+                       __pAttachFilesInfoLabel->SetShowState(false);\r
+                       RemoveControl(*__pMsgAttachListPanel);\r
+                       __pMsgAttachListPanel = null;\r
+               }\r
+               if (__pPlayer)\r
+               {\r
+                       __pPlayer->Stop();\r
+                       __pPlayer->Close();\r
+               }\r
+               if (__pMmsTextBox)\r
+               {\r
+                       __pMmsTextBox->SetBounds(0, 84, __pMmsTextBox->GetWidth(), __pMmsTextBox->GetHeight() * 3);\r
+               }\r
+       }\r
+       break;\r
+\r
+       default:\r
+               break;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+MmsDetailForm::StartSlideShow()\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (!__pTimer)\r
+       {\r
+               __pTimer = new (std::nothrow) Timer();\r
+               __pTimer->Construct(*this);\r
+       }\r
+       if (!__pTimerForControlBar)\r
+       {\r
+               __pTimerForControlBar = new (std::nothrow) Timer();\r
+               __pTimerForControlBar->Construct(*this);\r
+       }\r
+       __bIsPlaying = true;\r
+       Bitmap* pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SMIL_PAUSE, Dimension(W_PLAYCONTROL_BUTTON, H_PLAYCONTROL_BUTTON));\r
+       __pPlayPausebutton->SetNormalBitmap(Point(0, 0), *pBitMap);\r
+       __pPlayPausebutton->RequestRedraw(true);\r
+\r
+       if (GetSlideType(__currentPage) == VideoSlide || GetSlideType(__currentPage) == AudioSlide)\r
+       {\r
+               __pPlayer->Play();\r
+       }\r
+       UpdateSlideNumber(__currentPage + 1);\r
+       __pTimer->StartAsRepeatable(1000);\r
+       __pTimerForControlBar->Start(3000);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+MmsDetailForm::PlaySlideShow()\r
+{\r
+\r
+       AppLogDebug("ENTER");\r
+       SlideType slideType = GetSlideType(__currentPage);\r
+       if (slideType == VideoSlide || slideType == AudioSlide)\r
+       {\r
+               __pPlayer->Play();\r
+       }\r
+       UpdateForm(GetSlideType(__currentPage));\r
+       UpdateMmsBodyText();\r
+       UpdatePlayButton();\r
+       UpdateSlideNumber(__currentPage + 1);\r
+       __pTimer->StartAsRepeatable(1000);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+MmsDetailForm::PauseSlideShow()\r
+{\r
+       AppLogDebug("ENTER");\r
+       __pTimer->Cancel();\r
+\r
+       SlideType slideType = GetSlideType(__currentPage);\r
+       if (slideType == VideoSlide || slideType == AudioSlide)\r
+       {\r
+               __pPlayer->Pause();\r
+       }\r
+       UpdatePlayButton();\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+MmsDetailForm::ShowVolumePopup()\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (!__pTimerforVolumePopup)\r
+       {\r
+               __pTimerforVolumePopup = new (std::nothrow) Timer();\r
+               __pTimerforVolumePopup->Construct(*this);\r
+       }\r
+       __pVolumePopup = new Popup();\r
+       __pVolumePopup->Construct(L"IDL_VOLUME_POPUP");\r
+       __pMediaVolumeSlider = static_cast<Slider*>(__pVolumePopup->GetControl(L"IDC_MEDIA_VOLUME_SLIDER"));\r
+       int mediaVolumeLevel = 4;\r
+       String key(IDS_TIZEN_MEDIA);\r
+       SettingInfo::GetValue(key, mediaVolumeLevel);\r
+       __pMediaVolumeSlider->SetValue(mediaVolumeLevel);\r
+       __pVolumePopup->SetShowState(true);\r
+       __pVolumePopup->Show();\r
+       __pTimerforVolumePopup->Start(2000);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+MmsDetailForm::ShowDeletePopup()\r
+{\r
+       AppLogDebug("ENTER");\r
+       __pTimer->Cancel();\r
+       __bIsPlaying = false;\r
+       UpdatePlayButton();\r
+       // Create a Popup\r
+\r
+       __pDeletePopup = new (std::nothrow) BaseCustomPopup();\r
+       __pDeletePopup->Construct(L"IDL_DELETE_POPUP");\r
+\r
+       Button* pButtonDelete = static_cast<Button*>(__pDeletePopup->GetControl(L"IDC_BUTTON_LEFT"));\r
+       Button* pButtonCancel = static_cast<Button*>(__pDeletePopup->GetControl(L"IDC_BUTTON_RIGHT"));\r
+\r
+       pButtonDelete->SetActionId(IDA_OK_DELETE);\r
+       pButtonDelete->AddActionEventListener(*this);\r
+\r
+       pButtonCancel->SetActionId(IDA_CANCEL_DELETE);\r
+       pButtonCancel->AddActionEventListener(*this);\r
+\r
+       __pDeletePopup->Show();\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+MmsDetailForm::ShowMoreContextMenu()\r
+{\r
+       AppLogDebug("ENTER");\r
+       __pTimer->Cancel();\r
+       __bIsPlaying = false;\r
+       UpdatePlayButton();\r
+       if (!__pContextMenu)\r
+       {\r
+               __pContextMenu = new (std::nothrow) ContextMenu();\r
+               int footerItemWidth = GetFooter()->GetWidth() / (GetFooter()->GetItemCount() + 1);\r
+               __pContextMenu->Construct(Point(footerItemWidth * 3 + footerItemWidth / 2, GetFooter()->GetY()), CONTEXT_MENU_STYLE_LIST);\r
+               String strText;\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_FORWARD", strText);\r
+               __pContextMenu->AddItem(strText, IDA_FORWARD_MESSAGE);\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB", strText);\r
+               __pContextMenu->AddItem(strText, IDA_COPY_MESSAGE_TEXT);\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB", strText);\r
+               __pContextMenu->AddItem(strText, IDA_BUTTON_MESSAGE_DETAILS_POPUP);\r
+               __pContextMenu->AddActionEventListener(*this);\r
+       }\r
+       __pContextMenu->SetShowState(true);\r
+       __pContextMenu->Show();\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+MmsDetailForm::OnFormBackRequested(Form& source)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       // Back to message list form\r
+       SceneManager* pSceneManager = SceneManager::GetInstance();\r
+       pSceneManager->GoBackward(BackwardSceneTransition(__previousSceneId,\r
+                                                                                                         SCENE_TRANSITION_ANIMATION_TYPE_NONE));\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+// Implement IGalleryItemProvider\r
+GalleryItem*\r
+MmsDetailForm::CreateItem(int index)\r
+{\r
+       AppLogDebug("ENTER");\r
+       ArrayList* pPageList = const_cast<ArrayList*>(__pMessageData->GetPageList());\r
+\r
+       if (pPageList)\r
+       {\r
+               MmsPageData* pPageData = static_cast<MmsPageData*>(pPageList->GetAt(__currentPage));\r
+               if (pPageData)\r
+               {\r
+                       const String filePath = pPageData->GetImagePath();\r
+                       // Get a Bitmap\r
+                       Image* pImage = new (std::nothrow) Image();\r
+                       pImage->Construct();\r
+                       Bitmap* pBitmap = pImage->DecodeN(filePath, BITMAP_PIXEL_FORMAT_ARGB8888, W_GALLERY, H_GALLERY);\r
+                       // IGalleryEventListener\r
+                       GalleryItem* pGallery = new GalleryItem();\r
+                       pGallery->Construct(*pBitmap);\r
+                       // Deallocates the Bitmaps\r
+                       delete pBitmap;\r
+                       delete pImage;\r
+                       return pGallery;\r
+               }\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return null;\r
+}\r
+\r
+bool\r
+MmsDetailForm::DeleteItem(int index, GalleryItem* pItem)\r
+{\r
+       AppLogDebug("ENTER");\r
+       delete pItem;\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return true;\r
+}\r
+\r
+int\r
+MmsDetailForm::GetItemCount(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return 1;\r
+}\r
+\r
+void\r
+MmsDetailForm::OnTimerExpired(Timer& timer)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pTimerforVolumePopup && __pTimerforVolumePopup->Equals(timer))\r
+       {\r
+               if (__pVolumePopup)\r
+               {\r
+                       __pVolumePopup->SetShowState(false);\r
+                       Invalidate(true);\r
+               }\r
+       }\r
+       if (__pTimerForControlBar && __pTimerForControlBar->Equals(timer))\r
+       {\r
+               if (__pPlayControlPanel)\r
+               {\r
+                       __pPlayControlPanel->SetShowState(false);\r
+               }\r
+       }\r
+       if (__pTimer->Equals(timer))\r
+       {\r
+               __timeElapsed++;\r
+               if (__pProgress)\r
+               {\r
+                       __pProgress->SetValue(__timeElapsed);\r
+                       __pProgress->Invalidate(false);\r
+               }\r
+               UpdateTimeElapsedLabel(__timeElapsed);\r
+               if (__timeElapsed == __totalDuration)\r
+               {\r
+                       __pNextbutton->SetEnabled(false);\r
+                       __pPreviousButton->SetEnabled(false);\r
+                       if (__pPlayControlPanel)\r
+                       {\r
+                               __pPlayControlPanel->SetShowState(true);\r
+                       }\r
+                       if (__pTimerForControlBar)\r
+                       {\r
+                               __pTimerForControlBar->Cancel();\r
+                       }\r
+                       OnActionPerformed(*this, IDA_PLAY);\r
+               }\r
+               int timeToRefreshGallery = GetTimeToChangeslide(__currentPage + 2);\r
+               if (__timeElapsed == timeToRefreshGallery && timeToRefreshGallery != __totalDuration)\r
+               {\r
+                       __currentPage++;\r
+                       UpdateForm(GetSlideType(__currentPage));\r
+                       UpdateMmsBodyText();\r
+                       UpdateSlideNumber(__currentPage + 1);\r
+                       if (__pPreviousButton)\r
+                       {\r
+                               __pPreviousButton->SetEnabled(true);\r
+                       }\r
+                       if (__currentPage + 1 == __pageCountOfCurrentMessageData)\r
+                       {\r
+                               __pNextbutton->SetEnabled(false);\r
+                       }\r
+               }\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+MmsDetailForm::UpdatePlayButton(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       Bitmap* pBitMap = null;\r
+       if (__bIsPlaying)\r
+       {\r
+               pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SMIL_PAUSE);\r
+       }\r
+       else\r
+       {\r
+               pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SMIL_PLAY);\r
+       }\r
+\r
+       if (pBitMap)\r
+       {\r
+               pBitMap->Scale(Dimension(W_PLAYCONTROL_BUTTON, H_PLAYCONTROL_BUTTON));\r
+               if (__pPlayPausebutton)\r
+               {\r
+                       __pPlayPausebutton->SetNormalBitmap(Point(0, 0), *pBitMap);\r
+                       __pPlayPausebutton->RequestRedraw(true);\r
+               }\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+MmsDetailForm::UpdateMmsBodyText(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pMessageData)\r
+       {\r
+               ArrayList* pAttachList = const_cast<ArrayList*>(__pMessageData->GetPageList());\r
+\r
+               if (pAttachList)\r
+               {\r
+                       MmsPageData* pPageData = static_cast<MmsPageData*>(pAttachList->GetAt(__currentPage));\r
+                       if (pPageData)\r
+                       {\r
+                               const String mmsBodyText = pPageData->GetBodyText();\r
+                               if (__pMmsTextBox)\r
+                               {\r
+                                       __pMmsTextBox->SetText(mmsBodyText);\r
+                                       __pMmsTextBox->RequestRedraw(true);\r
+                               }\r
+                       }\r
+                       else\r
+                       {\r
+                               __pMmsTextBox->SetText(IDS_BLANK);\r
+                               __pMmsTextBox->RequestRedraw(true);\r
+                       }\r
+               }\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+MmsDetailForm::UpdateSlideNumber(int currentSlideNumber)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pPageNumberLabel)\r
+       {\r
+               String slideNumber;\r
+               slideNumber.Append(currentSlideNumber);\r
+               slideNumber.Append(IDS_CHAR_SLASH);\r
+               slideNumber.Append(__pageCountOfCurrentMessageData);\r
+               __pPageNumberLabel->SetText(slideNumber);\r
+               __pPageNumberLabel->RequestRedraw(true);\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+MmsDetailForm::UpdateTimeElapsedLabel(int timeElapsed)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pTimeElapsedLabel)\r
+       {\r
+               String strTimeElapsed(L"00:");\r
+               if (__timeElapsed < 10)\r
+               {\r
+                       strTimeElapsed = L"00:0";\r
+               }\r
+               strTimeElapsed.Append(timeElapsed);\r
+               __pTimeElapsedLabel->SetText(strTimeElapsed);\r
+               __pTimeElapsedLabel->RequestRedraw(true);\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+bool\r
+MmsDetailForm::IsTextExist(int slideIndex)\r
+{\r
+       AppLogDebug("ENTER");\r
+       bool textExist(false);\r
+       if (__currentPage < __pMessageData->GetPageCount())\r
+       {\r
+               const ArrayList* pPageList = __pMessageData->GetPageList();\r
+               MmsPageData* pMmsPageData = (MmsPageData*) pPageList->GetAt(__currentPage);\r
+               textExist = (!pMmsPageData->GetBodyText().IsEmpty());\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return textExist;\r
+}\r
+\r
+void\r
+MmsDetailForm::OnAdjustmentValueChanged(const Control& source, int adjustment)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       String key(IDS_TIZEN_MEDIA);\r
+       result r = SettingInfo::SetVolume(key, adjustment);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(r));\r
+}\r
+\r
+void\r
+MmsDetailForm::BlockPopup(const String& phoneNumber)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       String number;\r
+       String strText;\r
+       __pBlockPopup = new (std::nothrow) Popup();\r
+       __pBlockPopup->Construct(L"IDL_BLOCK_POPUP");\r
+       Button* pButtonOk = static_cast<Button*>(__pBlockPopup->GetControl(L"IDC_BUTTON_OK"));\r
+       pButtonOk->SetActionId(IDA_PHONENUMBER_BLOCK_OK);\r
+       pButtonOk->AddActionEventListener(*this);\r
+       Button* pButtonCancel = static_cast<Button*>(__pBlockPopup->GetControl(L"IDC_BUTTON_CANCEL"));\r
+       pButtonCancel->SetActionId(IDA_PHONENUMBER_BLOCK_CANCEL);\r
+       pButtonCancel->AddActionEventListener(*this);\r
+\r
+       Label* pLabelNumber = static_cast<Label*>(__pBlockPopup->GetControl(L"IDC_BLOCKNUMBER_LABEL"));\r
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_POP_BLOCK_PS_Q", strText);\r
+       strText.Replace(L"%s", phoneNumber);\r
+       number.Append(strText);\r
+       pLabelNumber->SetText(number);\r
+       __pBlockPopup->Show();\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+MmsDetailForm::UnBlockPhoneNumber(const String& phoneNumber)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();\r
+       int filterIndex = pSettingPrModel->GetFilterListIndex(phoneNumber);\r
+       if (filterIndex >= 0)\r
+       {\r
+               pSettingPrModel->DeleteFilter(filterIndex, 1);\r
+               pSettingPrModel->RefreshSpamFilterList();\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+MmsDetailForm::ShowMessageDetails(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       __pMessageDetailsPopup = new (std::nothrow) Popup();\r
+       result r = __pMessageDetailsPopup->Construct(L"IDL_MSG_OPTION_DETAILS_POPUP");\r
+       if (r == E_SUCCESS)\r
+       {\r
+               MessagePresentationModel* pMsgPrModel = MessagePresentationModel::GetInstance();\r
+               if (pMsgPrModel)\r
+               {\r
+                       TextBox* pTextBox = static_cast<TextBox*>(__pMessageDetailsPopup->GetControl(L"IDC_TEXTBOX_MSG_DETAILS"));\r
+                       if (pTextBox)\r
+                       {\r
+                               String messageDetails;\r
+                               String strText;\r
+                               pTextBox->SetTextSize(36);\r
+                               pTextBox->SetColor(TEXT_BOX_STATUS_NORMAL, __pMessageDetailsPopup->GetColor());\r
+                               pTextBox->SetColor(TEXT_BOX_STATUS_HIGHLIGHTED, __pMessageDetailsPopup->GetColor());\r
+                               pTextBox->SetColor(TEXT_BOX_STATUS_DISABLED, __pMessageDetailsPopup->GetColor());\r
+\r
+                               //To get Message Type\r
+                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_DETAILS_TYPE", strText);\r
+                               strText.Append(IDS_COLON);\r
+                               messageDetails.Append(strText);\r
+                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE", strText);\r
+                               messageDetails.Append(strText);\r
+\r
+                               messageDetails.Append(IDS_NEW_LINE);\r
+\r
+                               //Message contactlist\r
+                               if (__pMessageData->IsSent())\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_TO", strText);\r
+                                       strText.Append(IDS_COLON);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               else\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_FROM", strText);\r
+                                       strText.Append(IDS_COLON);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               ArrayList* pPhoneNumberList = pMsgPrModel->GetPhoneNumberListN(__pMessageData->GetThreadId());\r
+                               if (pPhoneNumberList)\r
+                               {\r
+                                       for (int index = 0; index < pPhoneNumberList->GetCount(); index++)\r
+                                       {\r
+                                               String* contactNumber = static_cast<String*>(pPhoneNumberList->GetAt(index));\r
+                                               messageDetails.Append(*contactNumber);\r
+                                               if (index != pPhoneNumberList->GetCount() - 1)\r
+                                                       messageDetails.Append(", ");\r
+                                       }\r
+                                       pPhoneNumberList->RemoveAll(true);\r
+                                       delete pPhoneNumberList;\r
+                               }\r
+                               messageDetails.Append(IDS_NEW_LINE);\r
+\r
+                               //Message sent/received time\r
+                               if (__pMessageData->IsSent())\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT", strText);\r
+                                       strText.Append(IDS_COLON);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               else\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_RECEIVED", strText);\r
+                                       strText.Append(IDS_COLON);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               messageDetails.Append(__pMessageData->GetTimeStamp());\r
+                               messageDetails.Append(IDS_NEW_LINE);\r
+\r
+                               //Message Subject\r
+                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_SUBJECT", strText);\r
+                               strText.Append(IDS_COLON);\r
+                               messageDetails.Append(strText);\r
+                               messageDetails.Append(__pMessageData->GetSubject());\r
+                               messageDetails.Append(IDS_NEW_LINE);\r
+\r
+                               //Message Size\r
+                               //                                              Application::GetInstance()->GetAppResource()->GetString(L"IDS_SIZE", strText);\r
+                               //                                              messageDetails.Append(strText);\r
+                               //                                              messageDetails.Append(__pMessageData->Get);\r
+                               //                                              messageDetails.Append(L"\n");\r
+\r
+                               //Message delivery report.\r
+                               int deliveryStatus = pMsgPrModel->GetMessageDeliveryStatus(__pMessageData->GetEntryId());\r
+                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_DELIVERY_REPORT", strText);\r
+                               strText.Append(IDS_COLON);\r
+                               messageDetails.Append(strText);\r
+                               switch (deliveryStatus)\r
+                               {\r
+                               // Indicates the status unavailable\r
+                               case MSG_DELIVERY_REPORT_NONE:\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_OPT_STATUS_UNAVAILABLE", strText);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               break;\r
+\r
+                               // Indicates the expired status of message\r
+                               case MSG_DELIVERY_REPORT_EXPIRED:\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_EXPIRED", strText);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               break;\r
+\r
+                               // Indicates the success status of message\r
+                               case MSG_DELIVERY_REPORT_SUCCESS:\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_POP_SUCCESS", strText);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               break;\r
+\r
+                               // Indicates the rejected status of message\r
+                               case MSG_DELIVERY_REPORT_REJECTED:\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_POP_REJECTED", strText);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               break;\r
+\r
+                               // Indicates the deferred status of message\r
+                               case MSG_DELIVERY_REPORT_DEFERRED:\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_POP_DEFERRED", strText);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               break;\r
+\r
+                               // Indicates the unrecongnised status of message\r
+                               case MSG_DELIVERY_REPORT_UNRECOGNISED:\r
+                               case MSG_DELIVERY_REPORT_INDETERMINATE:\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_POP_UNRECOGNISED", strText);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               break;\r
+\r
+                               // Indicates the forwarded status of message\r
+                               case MSG_DELIVERY_REPORT_FORWARDED:\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_POP_FORWARDED", strText);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               break;\r
+\r
+                               // Indicates the unreachable status of message\r
+                               case MSG_DELIVERY_REPORT_UNREACHABLE:\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_POP_UNREACHABLE", strText);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               break;\r
+\r
+                               default:\r
+                                       break;\r
+                               }\r
+\r
+                               messageDetails.Append(IDS_NEW_LINE);\r
+\r
+                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_OPT_STATUS", strText);\r
+                               strText.Append(IDS_COLON);\r
+                               //Message Status\r
+                               bool msgStatus = pMsgPrModel->GetMessageDeliveryStatus(__pMessageData->GetEntryId());\r
+                               messageDetails.Append(strText);\r
+                               if (msgStatus)\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_POP_FAILED", strText);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               else\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_POP_SUCCESS", strText);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               pTextBox->SetText(messageDetails);\r
+                       }\r
+               }\r
+\r
+       }\r
+       Button* pCloseButton = static_cast<Button*>(__pMessageDetailsPopup->GetControl(L"IDC_MSG_CLOSE_BUTTON"));\r
+       pCloseButton->SetActionId(IDA_BUTTON_CLOSE_OPTIONS_POPUP);\r
+       pCloseButton->AddActionEventListener(*this);\r
+\r
+       // Show popup\r
+       __pMessageDetailsPopup->SetShowState(true);\r
+       __pMessageDetailsPopup->Show();\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+int\r
+MmsDetailForm::GetTimeToChangeslide(int slideNumber)\r
+{\r
+       AppLogDebug("ENTER");\r
+       int timeToChangeSlide = 0;\r
+       for (int slide = 0; slide < slideNumber - 1; slide++)\r
+       {\r
+               timeToChangeSlide = timeToChangeSlide + __pPageDuration[slide];\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return timeToChangeSlide;\r
+}\r
+\r
+void\r
+MmsDetailForm::OnTouchPressed(const Control& source, const Point& currentPosition,\r
+                                                         const TouchEventInfo& touchInfo)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pPlayControlPanel->GetShowState())\r
+       {\r
+               __pPlayControlPanel->SetShowState(false);\r
+               __pTimerForControlBar->Cancel();\r
+       }\r
+       else\r
+       {\r
+               __pPlayControlPanel->SetShowState(true);\r
+               __pTimerForControlBar->Cancel();\r
+               __pTimerForControlBar->Start(3000);\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
diff --git a/src/MsgMmsManager.cpp b/src/MsgMmsManager.cpp
new file mode 100644 (file)
index 0000000..96ad0e8
--- /dev/null
@@ -0,0 +1,812 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <msg.h>\r
+#include <msg_storage.h>\r
+#include <msg_transport.h>\r
+#include <msg_types.h>\r
+\r
+#include <FApp.h>\r
+#include <FIo.h>\r
+\r
+#include "MsgBaseData.h"\r
+#include "MsgCommonUtil.h"\r
+#include "MsgEvent.h"\r
+#include "MsgIMmsEventListener.h"\r
+#include "MsgMmsManager.h"\r
+#include "MsgMmsSendSettings.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Base::Runtime;\r
+using namespace Tizen::Base::Utility;\r
+using namespace Tizen::Io;\r
+\r
+const wchar_t* IDS_LOCAL_TEXT = L"Text";\r
+const wchar_t* IDS_LOCAL_IMAGE = L"Image";\r
+\r
+/* defines */\r
+#define MSG_COMPOSER_SMIL_SCREEN_WIDTH  480\r
+#define MSG_COMPOSER_SMIL_SCREEN_HEIGHT 800\r
+\r
+#define MSG_COMPOSER_SMIL_POS_TOP       1\r
+#define MSG_COMPOSER_SMIL_POS_BOTTOM    50\r
+#define MSG_COMPOSER_SMIL_POS_LEFT      0\r
+\r
+#define MSG_COMPOSER_SMIL_REGION_WIDTH  100\r
+#define MSG_COMPOSER_SMIL_REGION_HEIGHT 50\r
+\r
+#define MSG_COMPOSER_SMIL_DEFAULT_BGCOLOR 0xFFFFFF\r
+#define MSG_COMPOSER_SMIL_DEFAULT_FONT_COLOR 0x000000\r
+#define MSG_COMPOSER_SMIL_DEFAULT_FONT_SIZE 30\r
+#define MSG_COMPOSER_SMIL_DEFAULT_BOLD false\r
+#define MSG_COMPOSER_SMIL_DEFAULT_UNDERLINE false\r
+\r
+MmsManager::MmsManager(msg_handle_t pMsgHandle)\r
+       : __pMsgHandle(pMsgHandle)\r
+       , __pMmsEventListener(null)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+// Destructor\r
+MmsManager::~MmsManager(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pMmsEventListener)\r
+       {\r
+               __pMmsEventListener->RemoveAll(true);\r
+               delete __pMmsEventListener;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+\r
+result\r
+MmsManager::Construct(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       msg_error_t err = MSG_SUCCESS;\r
+\r
+       void (* pIncommingMmscb)(msg_handle_t, msg_struct_t, void*);\r
+       pIncommingMmscb = IncommingMmsCallback;\r
+       err = msg_reg_mms_conf_message_callback(__pMsgHandle, pIncommingMmscb, null, (void*) this);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("msg_reg_sms_message_callback err = %d", (int) err);\r
+               r = E_FAILURE;\r
+       }\r
+\r
+       // Keep thread observer\r
+       __pMmsEventListener = new (std::nothrow) ArrayList();\r
+       __pMmsEventListener->Construct();\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+result\r
+MmsManager::AddMmsEventListener(const IMmsEventListener& eventListener)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       MmsEvent* pMmsEvent = new (std::nothrow) MmsEvent(&eventListener);\r
+       result r = __pMmsEventListener->Add(pMmsEvent); // Transfer ownership.\r
+       if (r != E_SUCCESS)\r
+       {\r
+               delete pMmsEvent;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+result\r
+MmsManager::RemoveMmsEventListener(const IMmsEventListener& eventListener)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       if (__pMmsEventListener)\r
+       {\r
+               IEnumerator* pEventenum = __pMmsEventListener->GetEnumeratorN();\r
+               if (pEventenum)\r
+               {\r
+                       MmsEvent* pMmsEvent = null;\r
+                       while (pEventenum->MoveNext() == E_SUCCESS)\r
+                       {\r
+                               pMmsEvent = static_cast<MmsEvent*>(pEventenum->GetCurrent());\r
+                               if (pMmsEvent->IsSame(&eventListener))\r
+                               {\r
+                                       // Took ownership, delete element object.\r
+                                       r = __pMmsEventListener->Remove(*pMmsEvent, true);\r
+                                       break;\r
+                               }\r
+                       }\r
+               }\r
+               // Free memory\r
+               if (pEventenum)\r
+               {\r
+                       delete pEventenum;\r
+                       pEventenum = null;\r
+               }\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+void\r
+MmsManager::IncommingMmsCallback(msg_handle_t pHandle, msg_struct_t pMsg, void* pUserParam)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (!pUserParam || !pMsg)\r
+       {\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return;\r
+       }\r
+       static_cast<MmsManager*>(pUserParam)->IncommingMms(pHandle, pMsg);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+MmsManager::IncommingMms(msg_handle_t pHandle, msg_struct_t pMsg)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pMmsEventListener->GetCount() > 0)\r
+       {\r
+               IEnumerator* pEventenum = __pMmsEventListener->GetEnumeratorN();\r
+               if (pEventenum)\r
+               {\r
+                       MmsEvent* pMmsEvent = null;\r
+                       while (pEventenum->MoveNext() == E_SUCCESS)\r
+                       {\r
+                               pMmsEvent = static_cast<MmsEvent*>(pEventenum->GetCurrent());\r
+                               IMmsEventListener* pMmsListener = static_cast<IMmsEventListener*>(\r
+                                       const_cast<IEventListener*>(pMmsEvent->GetEvent()));\r
+                               if (pMmsListener)\r
+                               {\r
+                                       pMmsListener->OnMmsReceive();\r
+                               }\r
+                       }\r
+               }\r
+               // Free memory\r
+               if (pEventenum)\r
+               {\r
+                       delete pEventenum;\r
+                       pEventenum = null;\r
+               }\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+MsgResponse\r
+MmsManager::SendMessage(const MessageComposeData& mmsComposeData, int threadId, const MmsSendSettings* pMmsSendSetting)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       // 1. Create new message\r
+       msg_struct_t pMsgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);\r
+       if (!pMsgInfo)\r
+       {\r
+               AppLogDebug("msg_new_message fail");\r
+               return MSG_RESPONSE_FAIL;\r
+       }\r
+       msg_error_t err = MSG_SUCCESS;\r
+       // 2. Make SMS\r
+       MsgResponse response = CreateMms(pMsgInfo, mmsComposeData, threadId);\r
+       if (response == MSG_RESPONSE_SUCCESS)\r
+       {\r
+               // 3. Send SMS\r
+               msg_struct_t pRequest = msg_create_struct(MSG_STRUCT_REQUEST_INFO);\r
+               msg_struct_t pSendOpt = NULL;\r
+               msg_get_struct_handle(pRequest, MSG_REQUEST_SENDOPT_HND, &pSendOpt);\r
+               msg_set_bool_value(pSendOpt, MSG_SEND_OPT_SETTING_BOOL, false);\r
+               bool reqDeliveryReport(false);\r
+               if (pMmsSendSetting)\r
+               {\r
+                       reqDeliveryReport = pMmsSendSetting->IsMmsDeliveryReportOn();\r
+               }\r
+               msg_set_bool_value(pSendOpt, MSG_SEND_OPT_DELIVER_REQ_BOOL, reqDeliveryReport);\r
+               msg_set_struct_handle(pRequest, MSG_REQUEST_MESSAGE_HND, pMsgInfo);\r
+               err = msg_mms_send_message(__pMsgHandle, pRequest);\r
+               if (err != MSG_SUCCESS)\r
+               {\r
+                       AppLogDebug("msg_mms_send_message fail = %d", (int) err);\r
+                       response = MSG_RESPONSE_FAIL;\r
+               }\r
+               // Release send message struct.\r
+               msg_release_struct(&pRequest);\r
+       }\r
+       //4. Release message info.\r
+       err = msg_release_struct(&pMsgInfo);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("msg_release_message fail = %d", (int) err);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return response;\r
+}\r
+\r
+MsgResponse\r
+MmsManager::SaveMessage(const MessageComposeData& mmsComposeData, int threadId)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       // 1. Create new message\r
+       msg_struct_t pMsgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);\r
+       if (!pMsgInfo)\r
+       {\r
+               AppLogDebug("msg_new_message fail");\r
+               return MSG_RESPONSE_FAIL;\r
+       }\r
+       msg_error_t err = MSG_SUCCESS;\r
+       // 2. Make SMS\r
+       MsgResponse response = CreateMms(pMsgInfo, mmsComposeData, threadId);\r
+       if (response == MSG_RESPONSE_SUCCESS)\r
+       {\r
+               // 3. Save SMS\r
+               msg_struct_t pSendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);\r
+               msg_set_bool_value(pSendOpt, MSG_SEND_OPT_SETTING_BOOL, false);\r
+               err = msg_add_message(__pMsgHandle, (const msg_struct_t) pMsgInfo, (const msg_struct_t) pSendOpt);\r
+               if (err != MSG_SUCCESS)\r
+               {\r
+                       AppLogDebug("msg_add_message fail = %d", (int) err);\r
+                       response = MSG_RESPONSE_FAIL;\r
+               }\r
+               // Release struct.\r
+               msg_release_struct(&pSendOpt);\r
+       }\r
+       //4. Release message info.\r
+       err = msg_release_struct(&pMsgInfo);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("msg_release_message fail = %d", (int) err);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return response;\r
+}\r
+\r
+MsgResponse\r
+MmsManager::CreateMms(msg_struct_t pMsgInfo, const MessageComposeData& mmsComposeData, int threadId)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       //1. Fetch recipients\r
+       MsgResponse response = MSG_RESPONSE_SUCCESS;\r
+       response = SetRecipientList(pMsgInfo, threadId);\r
+       if (response != MSG_RESPONSE_SUCCESS)\r
+       {\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return response;\r
+       }\r
+       // 3. Set message type.\r
+       response = SetMessageType(pMsgInfo);\r
+       if (response != MSG_RESPONSE_SUCCESS)\r
+       {\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return response;\r
+       }\r
+       // Set Subject\r
+       String subJectText = mmsComposeData.GetSubject();\r
+       if (subJectText.GetLength() > 0)\r
+       {\r
+               char* pSubText = CommonUtil::ConvertStringToPointerCharArrayN(subJectText);\r
+               if (msg_set_str_value(pMsgInfo, MSG_MESSAGE_SUBJECT_STR, pSubText, (int) strlen(pSubText)) != MSG_SUCCESS)\r
+               {\r
+                       AppLogDebug("Unable to set subject");\r
+               }\r
+               delete[] pSubText;\r
+       }\r
+       // Create MMS DATA\r
+       msg_struct_t pMmsData = null;\r
+       pMmsData = msg_create_struct(MSG_STRUCT_MMS);\r
+       if (pMmsData)\r
+       {\r
+               SetMmsData(pMmsData, mmsComposeData);\r
+//             if (response != MSG_RESPONSE_SUCCESS)\r
+//             {\r
+//                     msg_release_struct(&pMmsData);\r
+//                     return response;\r
+//             }\r
+               msg_set_mms_struct(pMsgInfo, pMmsData);\r
+               msg_release_struct(&pMmsData);\r
+       }\r
+       else\r
+       {\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return MSG_RESPONSE_INVALID_BODY;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return MSG_RESPONSE_SUCCESS;\r
+}\r
+\r
+MsgResponse\r
+MmsManager::CreateMms(msg_struct_t pMsgInfo, const MessageComposeData& mmsComposeData, const IList& addressList)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       //1. Fetch recipients\r
+       MsgResponse response = SetRecipientList(pMsgInfo, addressList);\r
+       if (response != MSG_RESPONSE_SUCCESS)\r
+       {\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return response;\r
+       }\r
+\r
+       // 2. Set message type.\r
+       response = SetMessageType(pMsgInfo);\r
+       if (response != MSG_RESPONSE_SUCCESS)\r
+       {\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return response;\r
+       }\r
+\r
+       // 3.Set Subject\r
+       String subJectText = mmsComposeData.GetSubject();\r
+       if (subJectText.GetLength() > 0)\r
+       {\r
+               char* pSubText = CommonUtil::ConvertStringToPointerCharArrayN(subJectText);\r
+               if (msg_set_str_value(pMsgInfo, MSG_MESSAGE_SUBJECT_STR, pSubText, (int) strlen(pSubText)) != MSG_SUCCESS)\r
+               {\r
+                       AppLogDebug("Unable to set subject");\r
+               }\r
+               delete[] pSubText;\r
+       }\r
+\r
+       //4. Create MMS DATA\r
+       msg_struct_t pMmsData = null;\r
+       pMmsData = msg_create_struct(MSG_STRUCT_MMS);\r
+       if (pMmsData)\r
+       {\r
+               SetMmsData(pMmsData, mmsComposeData);\r
+//             if (response != MSG_RESPONSE_SUCCESS)\r
+//             {\r
+//                     msg_release_struct(&pMmsData);\r
+//                     return response;\r
+//             }\r
+               msg_set_mms_struct(pMsgInfo, pMmsData);\r
+               msg_release_struct(&pMmsData);\r
+       }\r
+       else\r
+       {\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return MSG_RESPONSE_INVALID_BODY;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return MSG_RESPONSE_SUCCESS;\r
+}\r
+\r
+MsgResponse\r
+MmsManager::SendMessage(const MessageComposeData& mmsData, const IList& addressList, int& msgThreadId, const MmsSendSettings* pMmsSendSetting)\r
+{\r
+       AppLogDebug("ENTER");\r
+       // 1. Create new message\r
+       msg_struct_t pMsgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);\r
+       if (!pMsgInfo)\r
+       {\r
+               AppLogDebug("msg_new_message fail");\r
+               return MSG_RESPONSE_FAIL;\r
+       }\r
+       msg_error_t err = MSG_SUCCESS;\r
+       // 2. Make SMS\r
+       MsgResponse response = CreateMms(pMsgInfo, mmsData, addressList);\r
+       if (response == MSG_RESPONSE_SUCCESS)\r
+       {\r
+               // 3. Send SMS\r
+               msg_struct_t pRequest = msg_create_struct(MSG_STRUCT_REQUEST_INFO);\r
+               msg_struct_t pSendOpt = NULL;\r
+               msg_get_struct_handle(pRequest, MSG_REQUEST_SENDOPT_HND, &pSendOpt);\r
+               msg_set_bool_value(pSendOpt, MSG_SEND_OPT_SETTING_BOOL, false);\r
+               bool reqDeliveryReport(false);\r
+               if (pMmsSendSetting)\r
+               {\r
+                       reqDeliveryReport = pMmsSendSetting->IsMmsDeliveryReportOn();\r
+               }\r
+               msg_set_bool_value(pSendOpt, MSG_SEND_OPT_DELIVER_REQ_BOOL, reqDeliveryReport);\r
+               msg_set_struct_handle(pRequest, MSG_REQUEST_MESSAGE_HND, pMsgInfo);\r
+               err = msg_mms_send_message(__pMsgHandle, pRequest);\r
+               if (err != MSG_SUCCESS)\r
+               {\r
+                       AppLogDebug("msg_sms_send_message fail = %d", (int) err);\r
+                       response = MSG_RESPONSE_FAIL;\r
+               }\r
+               // Get thread ID\r
+               msg_thread_id_t threadId;\r
+               msg_struct_list_s* pRecepientList = NULL;\r
+               msg_get_list_handle(pMsgInfo, MSG_MESSAGE_ADDR_LIST_STRUCT, (void**) &pRecepientList);\r
+               msg_get_thread_id_by_address(__pMsgHandle, pRecepientList, &threadId);\r
+               AppLogDebug("msg_get_thread_id_by_address  err = %d", (int) err);\r
+               if (err == MSG_SUCCESS)\r
+               {\r
+                       msgThreadId = (int) threadId;\r
+               }\r
+               // Release send message struct.\r
+               msg_release_struct(&pRequest);\r
+       }\r
+       //4. Release message info.\r
+       err = msg_release_struct(&pMsgInfo);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("msg_release_message fail = %d", (int) err);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return response;\r
+}\r
+\r
+MsgResponse\r
+MmsManager::SaveMessage(const MessageComposeData& mmsData, const IList& addressList)\r
+{\r
+       AppLogDebug("ENTER");\r
+       // 1. Create new message\r
+       msg_struct_t pMsgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);\r
+       if (!pMsgInfo)\r
+       {\r
+               AppLogDebug("msg_new_message fail");\r
+               return MSG_RESPONSE_FAIL;\r
+       }\r
+       msg_error_t err = MSG_SUCCESS;\r
+       // 2. Make SMS\r
+       MsgResponse response = CreateMms(pMsgInfo, mmsData, addressList);\r
+       if (response == MSG_RESPONSE_SUCCESS)\r
+       {\r
+               // 3. Save SMS\r
+               msg_struct_t pSendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);\r
+               msg_set_bool_value(pSendOpt, MSG_SEND_OPT_SETTING_BOOL, false);\r
+               err = msg_add_message(__pMsgHandle, (const msg_struct_t) pMsgInfo, (const msg_struct_t) pSendOpt);\r
+               if (err != MSG_SUCCESS)\r
+               {\r
+                       AppLogDebug("msg_add_message fail = %d", (int) err);\r
+                       response = MSG_RESPONSE_FAIL;\r
+               }\r
+               // Release struct.\r
+               msg_release_struct(&pSendOpt);\r
+       }\r
+       //4. Release message info.\r
+       err = msg_release_struct(&pMsgInfo);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("msg_release_message fail = %d", (int) err);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return response;\r
+}\r
+\r
+MsgResponse\r
+MmsManager::SetMessageType(msg_struct_t pMsgInfo)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       msg_error_t err = MSG_SUCCESS;\r
+       if ((err = msg_set_int_value(pMsgInfo, MSG_MESSAGE_TYPE_INT, MSG_TYPE_MMS)) != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("msg_set_message_type error=%d", (int) err);\r
+               AppLogDebug("EXIT");\r
+               return MSG_RESPONSE_INVALID_MSG_TYPE;\r
+       }\r
+\r
+       AppLogDebug("EXIT");\r
+       return MSG_RESPONSE_SUCCESS;\r
+}\r
+\r
+MsgResponse\r
+MmsManager::SetMmsData(msg_struct_t pMmsData, const MessageComposeData& mmsComposeData)\r
+{\r
+       AppLogDebug("ENTER");\r
+       // Set SMIL header.\r
+       SetSmilHeader(pMmsData);\r
+\r
+       // add attachement\r
+       const ArrayList* pAttachList = mmsComposeData.GetAttachList();\r
+       if (pAttachList && pAttachList->GetCount() > 0)\r
+       {\r
+               for (int count = 0; count < pAttachList->GetCount(); count++)\r
+               {\r
+                       String* pAttachPath = (String*) pAttachList->GetAt(count);\r
+                       if (!pAttachPath)\r
+                               continue;\r
+                       char* pFilePath = CommonUtil::ConvertStringToPointerCharArrayN(*pAttachPath);\r
+                       msg_struct_t pAttachment = NULL;\r
+                       msg_mms_add_item(pMmsData, MSG_STRUCT_MMS_ATTACH, &pAttachment);\r
+                       msg_set_str_value(pAttachment, MSG_MMS_ATTACH_FILEPATH_STR, pFilePath, (int) strlen(pFilePath));\r
+                       delete[] pFilePath;\r
+               }\r
+       }\r
+       // Add page\r
+       const ArrayList* pPageList = mmsComposeData.GetPageList();\r
+       if (pPageList && pPageList->GetCount() > 0)\r
+       {\r
+               for (int pageCount = 0; pageCount < pPageList->GetCount(); pageCount++)\r
+               {\r
+                       MmsPageData* pPageData = (MmsPageData*) pPageList->GetAt(pageCount);\r
+                       if (!pPageData)\r
+                       {\r
+                               continue;\r
+                       }\r
+                       msg_struct_t pMmsPage = NULL;\r
+                       msg_mms_add_item(pMmsData, MSG_STRUCT_MMS_PAGE, &pMmsPage);\r
+                       msg_set_int_value(pMmsPage, MSG_MMS_PAGE_PAGE_DURATION_INT, pPageData->GetPageDuration() * 1000);\r
+\r
+                       if (pPageData->GetBodyText().GetLength() > 0)\r
+                       {\r
+                               // Create Temp file for body text\r
+                               String tempFilePath;\r
+                               tempFilePath.Format(250, L"%SMMS_TEMP_%d.txt",\r
+                                                                       App::GetInstance()->GetAppDataPath().GetPointer(), pageCount);\r
+                               File file;\r
+                               result r = file.Construct(tempFilePath, L"wb");\r
+                               if (r == E_SUCCESS)\r
+                               {\r
+                                       file.Write(pPageData->GetBodyText());\r
+                                       file.Flush();\r
+                                       char* pFilePath = CommonUtil::ConvertStringToPointerCharArrayN(tempFilePath);\r
+                                       msg_struct_t pAddPageText = null;\r
+                                       msg_mms_add_item(pMmsPage, MSG_STRUCT_MMS_MEDIA, &pAddPageText);\r
+                                       msg_set_int_value(pAddPageText, MSG_MMS_MEDIA_TYPE_INT, MMS_SMIL_MEDIA_TEXT);\r
+                                       String textRegionId(IDS_LOCAL_TEXT);\r
+                                       char* pRegionId = CommonUtil::ConvertStringToPointerCharArrayN(textRegionId);\r
+                                       msg_set_str_value(pAddPageText, MSG_MMS_MEDIA_REGION_ID_STR, pRegionId, (int) strlen(pRegionId));\r
+                                       delete[] pRegionId;\r
+                                       msg_set_str_value(pAddPageText, MSG_MMS_MEDIA_FILEPATH_STR, pFilePath, (int) strlen(pFilePath));\r
+                                       delete[] pFilePath;\r
+                                       // Set body SMIL text style\r
+                                       msg_struct_t pTextStyle = msg_create_struct(MSG_STRUCT_MMS_SMIL_TEXT);\r
+                                       msg_set_int_value(pTextStyle, MSG_MMS_SMIL_TEXT_COLOR_INT, MSG_COMPOSER_SMIL_DEFAULT_FONT_COLOR);\r
+                                       msg_set_int_value(pTextStyle, MSG_MMS_SMIL_TEXT_SIZE_INT, MSG_COMPOSER_SMIL_DEFAULT_FONT_SIZE);\r
+                                       msg_set_int_value(pTextStyle, MSG_MMS_SMIL_TEXT_BOLD_BOOL, MSG_COMPOSER_SMIL_DEFAULT_BOLD);\r
+                                       msg_set_int_value(pTextStyle, MSG_MMS_SMIL_TEXT_BOLD_BOOL, MSG_COMPOSER_SMIL_DEFAULT_UNDERLINE);\r
+\r
+                                       msg_set_struct_handle(pAddPageText, MSG_MMS_MEDIA_SMIL_TEXT_HND, pTextStyle);\r
+                                       msg_release_struct(&pTextStyle);\r
+                               }\r
+                       }\r
+                       // Image(Video)\r
+                       if (pPageData->IsImageExist())\r
+                       {\r
+                               msg_struct_t pAddImage = NULL;\r
+                               char* pFilePath = CommonUtil::ConvertStringToPointerCharArrayN(pPageData->GetImagePath());\r
+\r
+                               msg_mms_add_item(pMmsPage, MSG_STRUCT_MMS_MEDIA, &pAddImage);\r
+                               msg_set_int_value(pAddImage, MSG_MMS_MEDIA_TYPE_INT, MMS_SMIL_MEDIA_IMG);\r
+                               String imageRegionId(IDS_LOCAL_IMAGE);\r
+                               char* pRegionId = CommonUtil::ConvertStringToPointerCharArrayN(imageRegionId);\r
+                               msg_set_str_value(pAddImage, MSG_MMS_MEDIA_REGION_ID_STR, pRegionId, (int) strlen(pRegionId));\r
+                               delete[] pRegionId;\r
+                               msg_set_str_value(pAddImage, MSG_MMS_MEDIA_FILEPATH_STR, pFilePath, (int) strlen(pFilePath));\r
+                               delete[] pFilePath;\r
+                       }\r
+                       else if (pPageData->IsVideoExist())\r
+                       {\r
+                               msg_struct_t pAddVideo = NULL;\r
+                               char* pFilePath = CommonUtil::ConvertStringToPointerCharArrayN(pPageData->GetVideoPath());\r
+                               msg_mms_add_item(pMmsPage, MSG_STRUCT_MMS_MEDIA, &pAddVideo);\r
+                               msg_set_int_value(pAddVideo, MSG_MMS_MEDIA_TYPE_INT, MMS_SMIL_MEDIA_VIDEO);\r
+                               String imageRegionId(IDS_LOCAL_IMAGE);\r
+                               char* pRegionId = CommonUtil::ConvertStringToPointerCharArrayN(imageRegionId);\r
+                               msg_set_str_value(pAddVideo, MSG_MMS_MEDIA_REGION_ID_STR, pRegionId, (int) strlen(pRegionId));\r
+                               delete[] pRegionId;\r
+                               msg_set_str_value(pAddVideo, MSG_MMS_MEDIA_FILEPATH_STR, pFilePath, (int) strlen(pFilePath));\r
+                               delete[] pFilePath;\r
+                       } // Check Audio File\r
+                       if (pPageData->IsAudioExist())\r
+                       {\r
+                               char* pFilePath = CommonUtil::ConvertStringToPointerCharArrayN(pPageData->GetAudioPath());\r
+                               msg_struct_t pAddAudioFile = NULL;\r
+                               msg_mms_add_item(pMmsPage, MSG_STRUCT_MMS_MEDIA, &pAddAudioFile);\r
+                               msg_set_int_value(pAddAudioFile, MSG_MMS_MEDIA_TYPE_INT, MMS_SMIL_MEDIA_AUDIO);\r
+                               msg_set_str_value(pAddAudioFile, MSG_MMS_MEDIA_FILEPATH_STR, pFilePath, (int) strlen(pFilePath));\r
+                               delete[] pFilePath;\r
+                       }\r
+               }\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return MSG_RESPONSE_SUCCESS;\r
+}\r
+\r
+MsgResponse\r
+MmsManager::SetRecipientList(msg_struct_t pMsgInfo, int threadId)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       msg_error_t err = MSG_SUCCESS;\r
+       MsgResponse response = MSG_RESPONSE_SUCCESS;\r
+       msg_struct_list_s pAddressList = {0};\r
+       msg_thread_id_t thrdId = threadId;\r
+       if ((err = msg_get_address_list(__pMsgHandle, thrdId, &pAddressList)) != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("msg_get_address_list error=%d", (int) err);\r
+               return MSG_RESPONSE_RECIPIENT_INVALID;\r
+       }\r
+       // Set recipient list here\r
+       if (pAddressList.nCount > 0)\r
+       {\r
+               //4. Set Address\r
+               char recipient[MAX_ADDRESS_VAL_LEN] = {0};\r
+               msg_struct_list_s* pRecepientList = NULL;\r
+               msg_get_list_handle(pMsgInfo, MSG_MESSAGE_ADDR_LIST_STRUCT, (void**) &pRecepientList);\r
+               pRecepientList->nCount = pAddressList.nCount;\r
+               for (int count = 0; count < pAddressList.nCount; count++)\r
+               {\r
+                       err = msg_get_str_value(pAddressList.msg_struct_info[count],\r
+                                                                       MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, recipient, MAX_ADDRESS_VAL_LEN);\r
+\r
+                       if (err != MSG_SUCCESS)\r
+                       {\r
+                               continue;\r
+                       }\r
+                       //TODO: Need to check if address type is email or number.\r
+                       msg_set_int_value(pRecepientList->msg_struct_info[count], MSG_ADDRESS_INFO_ADDRESS_TYPE_INT, MSG_ADDRESS_TYPE_PLMN);\r
+                       msg_set_int_value(pRecepientList->msg_struct_info[count], MSG_ADDRESS_INFO_RECIPIENT_TYPE_INT, MSG_RECIPIENTS_TYPE_TO);\r
+                       err = msg_set_str_value(pRecepientList->msg_struct_info[count], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, recipient, (int) strlen(recipient));\r
+                       if (err != MSG_SUCCESS)\r
+                       {\r
+                               AppLogDebug(" msg_set_str_value  error=%d", (int) err);\r
+                               response = MSG_RESPONSE_RECIPIENT_INVALID;\r
+                               break;\r
+                       }\r
+               }\r
+       }\r
+       else\r
+       {\r
+               response = MSG_RESPONSE_RECIPIENT_ZERO;\r
+       }\r
+       // Free memory\r
+       msg_release_list_struct(&pAddressList);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return response;\r
+}\r
+\r
+MsgResponse\r
+MmsManager::SetRecipientList(msg_struct_t pMsgInfo, const IList& addressList)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int addressListCount(0);\r
+       if ((addressListCount = addressList.GetCount()) <= 0)\r
+       {\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return MSG_RESPONSE_RECIPIENT_ZERO;\r
+       }\r
+       MsgResponse response = MSG_RESPONSE_SUCCESS;\r
+       msg_error_t err = MSG_SUCCESS;\r
+       msg_struct_list_s* pRecepientList = NULL;\r
+       msg_get_list_handle(pMsgInfo, MSG_MESSAGE_ADDR_LIST_STRUCT, (void**) &pRecepientList);\r
+       pRecepientList->nCount = addressListCount;\r
+       AppLogDebug("Address list count = %d", pRecepientList->nCount);\r
+       for (int count = 0; count < addressListCount; count++)\r
+       {\r
+               const String* pPhoneNumberObj = static_cast<String*>(\r
+                       const_cast<Object*>(addressList.GetAt(count)));\r
+               int phoneNumberLen = pPhoneNumberObj->GetLength() * 4 + 1;\r
+               char* pPhoneNumber = new (std::nothrow) char[phoneNumberLen];\r
+               const wchar_t* pNumber = pPhoneNumberObj->GetPointer();\r
+               wcstombs(pPhoneNumber, pNumber, (size_t) phoneNumberLen);\r
+               AppLogDebug("Phone Number = %S", pPhoneNumberObj->GetPointer());\r
+               //TODO: Need to check if address type is email or number.\r
+               msg_set_int_value(pRecepientList->msg_struct_info[count], MSG_ADDRESS_INFO_ADDRESS_TYPE_INT, MSG_ADDRESS_TYPE_PLMN);\r
+               msg_set_int_value(pRecepientList->msg_struct_info[count], MSG_ADDRESS_INFO_RECIPIENT_TYPE_INT, MSG_RECIPIENTS_TYPE_TO);\r
+               if (pPhoneNumber)\r
+               {\r
+                       err = msg_set_str_value(pRecepientList->msg_struct_info[count], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, pPhoneNumber, (int) strlen(pPhoneNumber));\r
+               }\r
+               if (err != MSG_SUCCESS)\r
+               {\r
+                       AppLogDebug(" msg_set_str_value  error=%d", (int) err);\r
+                       response = MSG_RESPONSE_RECIPIENT_INVALID;\r
+                       delete[] pPhoneNumber;\r
+                       break;\r
+               }\r
+               // Release memory\r
+               delete[] pPhoneNumber;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return response;\r
+}\r
+\r
+MsgResponse\r
+MmsManager::SetSmilHeader(msg_struct_t pMmsData)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       // Set SMIL header\r
+       // Root layout\r
+       msg_set_int_value(pMmsData, MSG_MMS_ROOTLAYOUT_WIDTH_INT, MSG_COMPOSER_SMIL_SCREEN_WIDTH);\r
+       msg_set_int_value(pMmsData, MSG_MMS_ROOTLAYOUT_HEIGHT_INT, MSG_COMPOSER_SMIL_SCREEN_HEIGHT);\r
+       msg_set_int_value(pMmsData, MSG_MMS_ROOTLAYOUT_BGCOLOR_INT, MSG_COMPOSER_SMIL_DEFAULT_BGCOLOR);\r
+       // Add text region\r
+       msg_struct_t pTextRegion = NULL;\r
+       msg_mms_add_item(pMmsData, MSG_STRUCT_MMS_REGION, &pTextRegion);\r
+       String regionId(IDS_LOCAL_TEXT);\r
+       char* pText = CommonUtil::ConvertStringToPointerCharArrayN(regionId);\r
+       msg_set_str_value(pTextRegion, MSG_MMS_REGION_ID_STR, pText, (int) strlen(pText));\r
+       msg_set_int_value(pTextRegion, MSG_MMS_REGION_LENGTH_LEFT_INT, MSG_COMPOSER_SMIL_POS_LEFT);\r
+       msg_set_int_value(pTextRegion, MSG_MMS_REGION_LENGTH_TOP_INT, MSG_COMPOSER_SMIL_POS_TOP);\r
+       delete[] pText;\r
+\r
+       msg_set_int_value(pTextRegion, MSG_MMS_REGION_LENGTH_WIDTH_INT, MSG_COMPOSER_SMIL_REGION_WIDTH);\r
+       msg_set_int_value(pTextRegion, MSG_MMS_REGION_LENGTH_HEIGHT_INT, MSG_COMPOSER_SMIL_REGION_HEIGHT);\r
+       msg_set_int_value(pTextRegion, MSG_MMS_REGION_BGCOLOR_INT, MSG_COMPOSER_SMIL_DEFAULT_BGCOLOR);\r
+\r
+       // Image(video) region\r
+       msg_struct_t pImageRegion = NULL;\r
+       String imageRegionId(IDS_LOCAL_IMAGE);\r
+       char* pImageId = CommonUtil::ConvertStringToPointerCharArrayN(imageRegionId);\r
+       msg_mms_add_item(pMmsData, MSG_STRUCT_MMS_REGION, &pImageRegion);\r
+       msg_set_str_value(pImageRegion, MSG_MMS_REGION_ID_STR, pImageId, (int) strlen(pImageId));\r
+       msg_set_int_value(pImageRegion, MSG_MMS_REGION_LENGTH_LEFT_INT, MSG_COMPOSER_SMIL_POS_LEFT);\r
+       msg_set_int_value(pImageRegion, MSG_MMS_REGION_LENGTH_TOP_INT, MSG_COMPOSER_SMIL_POS_BOTTOM);\r
+       delete[] pImageId;\r
+\r
+       msg_set_int_value(pImageRegion, MSG_MMS_REGION_LENGTH_WIDTH_INT, MSG_COMPOSER_SMIL_REGION_WIDTH);\r
+       msg_set_int_value(pImageRegion, MSG_MMS_REGION_LENGTH_HEIGHT_INT, MSG_COMPOSER_SMIL_REGION_HEIGHT);\r
+       msg_set_int_value(pImageRegion, MSG_MMS_REGION_BGCOLOR_INT, MSG_COMPOSER_SMIL_DEFAULT_BGCOLOR);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return MSG_RESPONSE_SUCCESS;\r
+}\r
+\r
+\r
+MsgResponse\r
+MmsManager::ReSendMessage(int messageId)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       MsgResponse response = MSG_RESPONSE_SUCCESS;\r
+       msg_struct_t pFaildMsg = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);\r
+       msg_struct_t pSendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);\r
+       msg_message_id_t msgId = messageId;\r
+       msg_error_t err = msg_get_message(__pMsgHandle, msgId, pFaildMsg, pSendOpt);\r
+       if (err == MSG_SUCCESS)\r
+       {\r
+               msg_struct_t pResenRequest = msg_create_struct(MSG_STRUCT_REQUEST_INFO);\r
+               msg_set_struct_handle(pResenRequest, MSG_REQUEST_MESSAGE_HND, pFaildMsg);\r
+               msg_set_struct_handle(pResenRequest, MSG_REQUEST_SENDOPT_HND, pSendOpt);\r
+               err = msg_mms_send_message(__pMsgHandle, pResenRequest);\r
+               if (err != MSG_SUCCESS)\r
+               {\r
+                       AppLog("msg_mms_send_message fail = %d", (int) err);\r
+                       response = MSG_RESPONSE_FAIL;\r
+               }\r
+               msg_release_struct(&pResenRequest);\r
+       }\r
+       else\r
+       {\r
+               AppLog("msg_get_message fail = %d", (int) err);\r
+               response = MSG_RESPONSE_FAIL;\r
+       }\r
+       msg_release_struct(&pSendOpt);\r
+       msg_release_struct(&pFaildMsg);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return response;\r
+}\r
diff --git a/src/MsgMmsReceiveSettings.cpp b/src/MsgMmsReceiveSettings.cpp
new file mode 100644 (file)
index 0000000..c7407c5
--- /dev/null
@@ -0,0 +1,141 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <msg.h>\r
+#include <FBaseErrorDefine.h>\r
+#include <FBaseResult.h>\r
+\r
+#include "MsgMmsReceiveSettings.h"\r
+\r
+using namespace Tizen::Base;\r
+\r
+MmsReceiveSettings::MmsReceiveSettings(msg_struct_t pMmsRecvSetting)\r
+       : __pMmsRecvSetting(pMmsRecvSetting)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+MmsReceiveSettings::~MmsReceiveSettings(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pMmsRecvSetting)\r
+       {\r
+               msg_release_struct(&__pMmsRecvSetting);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+msg_struct_t\r
+MmsReceiveSettings::GetMmsRecvOpt(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __pMmsRecvSetting;\r
+}\r
+\r
+int\r
+MmsReceiveSettings::GetMmsHomeNetworkRetrieveType(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int retrieveType(MSG_HOME_AUTO_DOWNLOAD);\r
+       msg_get_int_value(__pMmsRecvSetting, MSG_MMS_RECVOPT_HOME_RETRIEVE_TYPE_INT, &retrieveType);\r
+\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(GetLastResult()));\r
+       return retrieveType;\r
+}\r
+\r
+int\r
+MmsReceiveSettings::GetMmsForigenNetworkRetrieveType(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int retrieveType(MSG_ABROAD_AUTO_DOWNLOAD);\r
+       msg_get_int_value(__pMmsRecvSetting, MSG_MMS_RECVOPT_ABROAD_RETRIEVE_TYPE_INT, &retrieveType);\r
+\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(GetLastResult()));\r
+       return retrieveType;\r
+}\r
+\r
+bool\r
+MmsReceiveSettings::IsMmsReadReportRequestOn(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       bool readReport(false);\r
+       msg_get_bool_value(__pMmsRecvSetting, MSG_MMS_RECVOPT_READ_REPORT_BOOL, &readReport);\r
+\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(GetLastResult()));\r
+       return readReport;\r
+}\r
+\r
+result\r
+MmsReceiveSettings::SetMmsHomeNetworkRetrieveType(int newType)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       msg_error_t err;\r
+       err = msg_set_int_value(__pMmsRecvSetting, MSG_MMS_RECVOPT_HOME_RETRIEVE_TYPE_INT, newType);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("Home retrieve type setting error [%d]", (int) err);\r
+       }\r
+\r
+       r = GetLastResult();\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(r));\r
+       return r;\r
+}\r
+\r
+result\r
+MmsReceiveSettings::SetMmsForigenNetworkRetrieveType(int newType)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       msg_error_t err;\r
+       err = msg_set_int_value(__pMmsRecvSetting, MSG_MMS_RECVOPT_ABROAD_RETRIEVE_TYPE_INT, newType);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("Abroad retrieve type setting error [%d]", (int) err);\r
+       }\r
+\r
+       r = GetLastResult();\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(r));\r
+       return r;\r
+}\r
+\r
+\r
+result\r
+MmsReceiveSettings::SetMmsReadReportRequestStatus(bool status)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       msg_error_t err;\r
+       err = msg_set_bool_value(__pMmsRecvSetting, MSG_MMS_RECVOPT_READ_REPORT_BOOL, status);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("Read report request setting error [%d]", (int) err);\r
+       }\r
+\r
+       r = GetLastResult();\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(r));\r
+       return r;\r
+}\r
diff --git a/src/MsgMmsSendSettings.cpp b/src/MsgMmsSendSettings.cpp
new file mode 100644 (file)
index 0000000..ad8b579
--- /dev/null
@@ -0,0 +1,147 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <msg.h>\r
+#include <FBaseErrorDefine.h>\r
+#include <FBaseResult.h>\r
+\r
+#include "MsgMmsSendSettings.h"\r
+\r
+using namespace Tizen::Base;\r
+\r
+MmsSendSettings::MmsSendSettings(msg_struct_t pMmsSendSetting)\r
+       : __pMmsSendSetting(pMmsSendSetting)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+MmsSendSettings::~MmsSendSettings(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pMmsSendSetting)\r
+       {\r
+               msg_release_struct(&__pMmsSendSetting);\r
+               __pMmsSendSetting = NULL;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+msg_struct_t\r
+MmsSendSettings::GetMmsSendOpt(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __pMmsSendSetting;\r
+}\r
+\r
+bool\r
+MmsSendSettings::IsMmsDeliveryReportOn(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       bool deliveryReport(false);\r
+       msg_get_bool_value(__pMmsSendSetting, MSG_MMS_SENDOPT_DELIVERY_REPORT_BOOL, &deliveryReport);\r
+\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(GetLastResult()));\r
+       return deliveryReport;\r
+\r
+}\r
+\r
+bool\r
+MmsSendSettings::IsMmsReadReportSendOn(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       bool report(false);\r
+       msg_get_bool_value(__pMmsSendSetting, MSG_MMS_SENDOPT_READ_REPLY_BOOL, &report);\r
+\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(GetLastResult()));\r
+       return report;\r
+\r
+}\r
+\r
+int\r
+MmsSendSettings::GetMmsCreationModeType(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int creationMode(MSG_ENCODE_GSM7BIT);\r
+       msg_get_int_value(__pMmsSendSetting, MSG_MMS_SENDOPT_CREATION_MODE_INT, &creationMode);\r
+\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(GetLastResult()));\r
+       return creationMode;\r
+\r
+}\r
+\r
+result\r
+MmsSendSettings::SetMmsDeliveryReportStatus(bool status)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       msg_error_t err;\r
+       err = msg_set_bool_value(__pMmsSendSetting, MSG_MMS_SENDOPT_DELIVERY_REPORT_BOOL, status);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("Delivery report setting error [%d]", (int) err);\r
+       }\r
+\r
+       r = GetLastResult();\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(r));\r
+       return r;\r
+\r
+}\r
+\r
+result\r
+MmsSendSettings::SetMmsReadReportSendStatus(bool status)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       msg_error_t err;\r
+       err = msg_set_bool_value(__pMmsSendSetting, MSG_MMS_SENDOPT_READ_REPLY_BOOL, status);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("Delivery report setting error [%d]", (int) err);\r
+       }\r
+\r
+       r = GetLastResult();\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(r));\r
+       return r;\r
+\r
+}\r
+\r
+result\r
+MmsSendSettings::SetMmsCreationModeType(int newType)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       msg_error_t err;\r
+       err = msg_set_int_value(__pMmsSendSetting, MSG_MMS_SENDOPT_CREATION_MODE_INT, newType);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("Creation mode setting error [%d]", (int) err);\r
+       }\r
+\r
+       r = GetLastResult();\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(r));\r
+       return r;\r
+\r
+}\r
diff --git a/src/MsgMultimediaSettingsForm.cpp b/src/MsgMultimediaSettingsForm.cpp
new file mode 100644 (file)
index 0000000..01179c3
--- /dev/null
@@ -0,0 +1,1271 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <FApp.h>\r
+\r
+#include <FUiCtrlFooter.h>\r
+#include <FUiCtrlGroupedTableView.h>\r
+#include <FUiCtrlHeader.h>\r
+#include <FUiCtrlLabel.h>\r
+#include <FUiCtrlTableViewGroupItem.h>\r
+#include <FUiCtrlTableViewItem.h>\r
+#include <FUiScenesBackwardSceneTransition.h>\r
+#include <FUiScenesForwardSceneTransition.h>\r
+#include <FUiScenesSceneManager.h>\r
+\r
+#include "MsgBitmapUtility.h"\r
+#include "MsgCustomTableViewItem.h"\r
+#include "MsgMmsReceiveSettings.h"\r
+#include "MsgMmsSendSettings.h"\r
+#include "MsgMultimediaSettingsForm.h"\r
+#include "MsgSettingPresentationModel.h"\r
+#include "MsgSettingsItemList.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Ui::Controls;\r
+using namespace Tizen::Ui::Scenes;\r
+\r
+MutimediaSettingsForm::MutimediaSettingsForm(MutimediaSettingFormType formType)\r
+       : __settingFormType(formType)\r
+       , __pSettingGroupTabledView(null)\r
+       , __pSettingItemsArray(null)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+MutimediaSettingsForm::~MutimediaSettingsForm(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pSettingItemsArray)\r
+       {\r
+               delete __pSettingItemsArray;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+bool\r
+MutimediaSettingsForm::Initialize(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       bool status(true);\r
+       result r = Construct(L"IDL_SETTINGS_FORM");\r
+       if (!IsFailed(r))\r
+       {\r
+               Control* pEmptyBgCntl = GetControl(L"IDC_LISTVIEW_EMPTY_BG");\r
+               if (pEmptyBgCntl)\r
+               {\r
+                       pEmptyBgCntl->SetShowState(false);\r
+               }\r
+               switch (__settingFormType)\r
+               {\r
+               case MULTIMEDIA_SETTING_MESSAGES_FORM:\r
+               {\r
+                       status = InitializeMultimediaSettingItems();\r
+               }\r
+               break;\r
+\r
+               case MULTIMEDIA_SETTING_RECEIVE_OPTIONS_FORM:\r
+               {\r
+                       status = InitializMultimediaReceiveSettingItems();\r
+               }\r
+               break;\r
+\r
+               case MULTIMEDIA_SETTING_READ_REPORT_FORM:\r
+               {\r
+                       status = InitializMultimediaReadReportSettingItems();\r
+               }\r
+               break;\r
+\r
+               default:\r
+                       break;\r
+               }\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return status;\r
+}\r
+\r
+result\r
+MutimediaSettingsForm::OnInitializing(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       r = BaseForm::InitializeBase();\r
+       __pSettingGroupTabledView = static_cast<GroupedTableView*>(GetControl(L"IDC_GROUPEDTABLEVIEW_SETTINGS"));\r
+       __pSettingGroupTabledView->SetBackgroundColor(COLOR_LIST_BG);\r
+       __pSettingGroupTabledView->SetItemProvider(this);\r
+       __pSettingGroupTabledView->AddGroupedTableViewItemEventListener(*this);\r
+       __pSettingGroupTabledView->UpdateTableView();\r
+       __pSettingGroupTabledView->CollapseAllGroup();\r
+       // Load intial setting data.\r
+       if (__pSettingItemsArray)\r
+       {\r
+               __pSettingGroupTabledView->CollapseAllGroup();\r
+               LoadCurrentSettings();\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+result\r
+MutimediaSettingsForm::OnTerminating(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       // TODO: Add your termination code here\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+void\r
+MutimediaSettingsForm::OnIntializeFooter(Footer& footer)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       // Set event listener\r
+       footer.AddActionEventListener(*this);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+MutimediaSettingsForm::OnIntializeHeader(Header& header)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       // Set event listener\r
+       header.AddActionEventListener(*this);\r
+\r
+       String titleText;\r
+       // Empty implementation.\r
+       switch (__settingFormType)\r
+       {\r
+       case MULTIMEDIA_SETTING_MESSAGES_FORM:\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE", titleText);\r
+               break;\r
+\r
+       case MULTIMEDIA_SETTING_RECEIVE_OPTIONS_FORM:\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_RECEIVINGOPTIONS", titleText);\r
+               break;\r
+\r
+       case MULTIMEDIA_SETTING_READ_REPORT_FORM:\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_READ_REPORT", titleText);\r
+               break;\r
+       }\r
+       header.SetTitleText(titleText);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+MutimediaSettingsForm::OnSceneActivatedN(const SceneId& previousSceneId,\r
+                                                                                const SceneId& currentSceneId, IList* pArgs)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (pArgs)\r
+       {\r
+               delete pArgs;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+MutimediaSettingsForm::OnSceneDeactivated(const SceneId& currentSceneId,\r
+                                                                                 const SceneId& nextSceneId)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+MutimediaSettingsForm::OnFormBackRequested(Form& source)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       HandleBackNavigation();\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+bool\r
+MutimediaSettingsForm::InitializeMultimediaSettingItems(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       String strText;\r
+       __pSettingItemsArray = new (std::nothrow) SettingItemsList();\r
+       int groupIndex = __pSettingItemsArray->AddGroup(IDS_BLANK);\r
+       if (groupIndex >= 0)\r
+       {\r
+\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_RECEIVINGOPTIONS", strText);\r
+               SettingItem* settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_MULTIMEDIA_RECV_OPTIONS, strText, SETTING_STYLE_NORMAL);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_DELIVERY_REPORT", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_MULTIMEDIA_DELIVERY_REPORT, strText, SETTING_STYLE_ONOFF_SLIDING);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_READ_REPORT", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_MULTIMEDIA_READ_REPORT, strText, SETTING_STYLE_NORMAL);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_MMSCREATIONMODE", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_MULTIMEDIA_CREATION_MODE, strText,\r
+                                                                                                        SETTING_STYLE_EXPANDABLE,\r
+                                                                                                        SETTING_STATUS_ITEM_CREATION_MODE);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               groupIndex = __pSettingItemsArray->AddGroup("", SETTING_GROUP_STYLE_NORMAL, false);\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_MMSCCCREATIONMODEFREE", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_CREATION_MODE_FREE, strText, SETTING_STYLE_RADIO);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_CREATION_MODE_WARNING, strText, SETTING_STYLE_RADIO);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_CREATION_MODE_RESTRICTED, strText, SETTING_STYLE_RADIO);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return true;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return false;\r
+}\r
+\r
+bool\r
+MutimediaSettingsForm::InitializMultimediaReceiveSettingItems(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       String strText;\r
+       __pSettingItemsArray = new (std::nothrow) SettingItemsList();\r
+\r
+       int groupIndex = __pSettingItemsArray->AddGroup(IDS_BLANK);\r
+       if (groupIndex >= 0)\r
+       {\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_OPT_HOME_NETWORK", strText);\r
+               SettingItem* settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_MULTIMEDIA_RECV_HOME_NETWORK, strText,\r
+                                                                                                                                 SETTING_STYLE_EXPANDABLE,\r
+                                                                                                                                 SETTING_STATUS_ITEM_HOME_NETWORK);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               groupIndex = __pSettingItemsArray->AddGroup(L"", SETTING_GROUP_STYLE_NORMAL, false);\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_AUTODOWNLOAD", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_HOME_NETWORK_AUTO_DOWNLOAD, strText,\r
+                                                                                                        SETTING_STYLE_RADIO);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_HOME_NETWORK_MANUAL, strText,\r
+                                                                                                        SETTING_STYLE_RADIO);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_HOME_NETWORK_REJECT, strText,\r
+                                                                                                        SETTING_STYLE_RADIO);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               groupIndex = __pSettingItemsArray->AddGroup(IDS_BLANK);\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_OPT_ROAM_NETWORK", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_MULTIMEDIA_RECV_FOREIGN_NETWORK, strText,\r
+                                                                                                        SETTING_STYLE_EXPANDABLE,\r
+                                                                                                        SETTING_STATUS_ITEM_FORIGEN_NETWORK);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               groupIndex = __pSettingItemsArray->AddGroup(IDS_BLANK, SETTING_GROUP_STYLE_NORMAL, false);\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_AUTODOWNLOAD", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_FOREIGN_NETWORK_AUTO_DOWNLOAD, strText,\r
+                                                                                                        SETTING_STYLE_RADIO);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_FOREIGN_NETWORK_MANUAL, strText,\r
+                                                                                                        SETTING_STYLE_RADIO);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_FOREIGN_NETWORK_RESTRICTED, strText,\r
+                                                                                                        SETTING_STYLE_RADIO);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_FOREIGN_NETWORK_REJECT, strText,\r
+                                                                                                        SETTING_STYLE_RADIO);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return true;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return false;\r
+}\r
+\r
+bool\r
+MutimediaSettingsForm::InitializMultimediaReadReportSettingItems(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       __pSettingItemsArray = new (std::nothrow) SettingItemsList();\r
+       int groupIndex = __pSettingItemsArray->AddGroup(IDS_BLANK);\r
+       if (groupIndex >= 0)\r
+       {\r
+               String strText;\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_REQUEST_READ_REPORT", strText);\r
+               SettingItem* settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_READ_REPORT_REQUEST, strText, SETTING_STYLE_ONOFF_SLIDING);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_SEND_READ_REPORT", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_READ_REPORT_SEND, strText, SETTING_STYLE_ONOFF_SLIDING);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return true;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return false;\r
+}\r
+\r
+void\r
+MutimediaSettingsForm::HandleBackNavigation(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();\r
+       pSettingPrModel->SaveMmsReceiveSettings();\r
+       pSettingPrModel->SaveMmsSendSettings();\r
+\r
+       SceneManager* pSceneManager = SceneManager::GetInstance();\r
+       switch (__settingFormType)\r
+       {\r
+\r
+       case MULTIMEDIA_SETTING_MESSAGES_FORM:\r
+       {\r
+               pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_SETTINGS, SCENE_TRANSITION_ANIMATION_TYPE_NONE));\r
+\r
+       }\r
+       break;\r
+\r
+       case MULTIMEDIA_SETTING_RECEIVE_OPTIONS_FORM:\r
+       case MULTIMEDIA_SETTING_READ_REPORT_FORM:\r
+       {\r
+               pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_SETTINGS_MULTIMEDIA_MESSAGE, SCENE_TRANSITION_ANIMATION_TYPE_NONE));\r
+\r
+       }\r
+       break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+MutimediaSettingsForm::HandleSettingItemSelection(int groupIndex, int itemIndex, TableViewItemStatus status)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       SettingItem& settingItem = __pSettingItemsArray->GetItemAt(groupIndex, itemIndex);\r
+\r
+       switch (settingItem.GetActionId())\r
+       {\r
+       case IDA_SETTINGS_MULTIMEDIA_RECV_OPTIONS:\r
+       {\r
+               SceneManager* pSceneManager = SceneManager::GetInstance();\r
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SETTINGS_MULTIMEDIA_RECEIVING_OPTIONS, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);\r
+\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_HOME_NETWORK_AUTO_DOWNLOAD:\r
+       {\r
+               if (status == TABLE_VIEW_ITEM_STATUS_CHECKED || status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)\r
+               {\r
+                       MmsReceiveSettings* pMmsReceiveSettings = SettingPresentationModel::GetInstance()->GetMmsReceiveSettings();\r
+                       if (pMmsReceiveSettings)\r
+                       {\r
+                               pMmsReceiveSettings->SetMmsHomeNetworkRetrieveType(SETTING_RECV_DOWNLOAD_AUTO);\r
+                       }\r
+                       CheckedRadioGroupItem(groupIndex, itemIndex);\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_HOME_NETWORK_MANUAL:\r
+       {\r
+               if (status == TABLE_VIEW_ITEM_STATUS_CHECKED || status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)\r
+               {\r
+                       MmsReceiveSettings* pMmsReceiveSettings = SettingPresentationModel::GetInstance()->GetMmsReceiveSettings();\r
+                       if (pMmsReceiveSettings)\r
+                       {\r
+                               pMmsReceiveSettings->SetMmsHomeNetworkRetrieveType(SETTING_RECV_DOWNLOAD_MANUAL);\r
+                       }\r
+                       CheckedRadioGroupItem(groupIndex, itemIndex);\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_HOME_NETWORK_REJECT:\r
+       {\r
+               if (status == TABLE_VIEW_ITEM_STATUS_CHECKED || status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)\r
+               {\r
+                       MmsReceiveSettings* pMmsReceiveSettings = SettingPresentationModel::GetInstance()->GetMmsReceiveSettings();\r
+                       if (pMmsReceiveSettings)\r
+                       {\r
+                               pMmsReceiveSettings->SetMmsHomeNetworkRetrieveType(SETTING_RECV_DOWNLOAD_REJECT);\r
+                       }\r
+                       CheckedRadioGroupItem(groupIndex, itemIndex);\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_FOREIGN_NETWORK_AUTO_DOWNLOAD:\r
+       {\r
+               if (status == TABLE_VIEW_ITEM_STATUS_CHECKED || status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)\r
+               {\r
+                       MmsReceiveSettings* pMmsReceiveSettings = SettingPresentationModel::GetInstance()->GetMmsReceiveSettings();\r
+                       if (pMmsReceiveSettings)\r
+                       {\r
+                               pMmsReceiveSettings->SetMmsForigenNetworkRetrieveType(SETTING_RECV_DOWNLOAD_AUTO);\r
+                       }\r
+                       CheckedRadioGroupItem(groupIndex, itemIndex);\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_FOREIGN_NETWORK_MANUAL:\r
+       {\r
+               if (status == TABLE_VIEW_ITEM_STATUS_CHECKED || status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)\r
+               {\r
+                       MmsReceiveSettings* pMmsReceiveSettings = SettingPresentationModel::GetInstance()->GetMmsReceiveSettings();\r
+                       if (pMmsReceiveSettings)\r
+                       {\r
+                               pMmsReceiveSettings->SetMmsForigenNetworkRetrieveType(SETTING_RECV_DOWNLOAD_MANUAL);\r
+                       }\r
+                       CheckedRadioGroupItem(groupIndex, itemIndex);\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_FOREIGN_NETWORK_RESTRICTED:\r
+       {\r
+               if (status == TABLE_VIEW_ITEM_STATUS_CHECKED || status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)\r
+               {\r
+                       MmsReceiveSettings* pMmsReceiveSettings = SettingPresentationModel::GetInstance()->GetMmsReceiveSettings();\r
+                       if (pMmsReceiveSettings)\r
+                       {\r
+                               pMmsReceiveSettings->SetMmsForigenNetworkRetrieveType(SETTING_RECV_DOWNLOAD_RESTRICTED);\r
+                       }\r
+                       CheckedRadioGroupItem(groupIndex, itemIndex);\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_FOREIGN_NETWORK_REJECT:\r
+       {\r
+               if (status == TABLE_VIEW_ITEM_STATUS_CHECKED || status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)\r
+               {\r
+                       MmsReceiveSettings* pMmsReceiveSettings = SettingPresentationModel::GetInstance()->GetMmsReceiveSettings();\r
+                       if (pMmsReceiveSettings)\r
+                       {\r
+                               pMmsReceiveSettings->SetMmsForigenNetworkRetrieveType(SETTING_RECV_DOWNLOAD_REJECT);\r
+                       }\r
+                       CheckedRadioGroupItem(groupIndex, itemIndex);\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_MULTIMEDIA_DELIVERY_REPORT:\r
+       {\r
+               if (status == TABLE_VIEW_ITEM_STATUS_SELECTED)\r
+               {\r
+                       bool nextState = !__pSettingGroupTabledView->IsItemChecked(groupIndex, itemIndex);\r
+                       __pSettingGroupTabledView->SetItemChecked(groupIndex, itemIndex, nextState);\r
+                       MmsSendSettings* pMmsSendSetting = SettingPresentationModel::GetInstance()->GetMmsSendSettings();\r
+                       if (pMmsSendSetting)\r
+                       {\r
+                               pMmsSendSetting->SetMmsDeliveryReportStatus(nextState);\r
+                       }\r
+                       __pSettingGroupTabledView->RefreshItem(groupIndex, itemIndex, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);\r
+               }\r
+               else if (status == TABLE_VIEW_ITEM_STATUS_CHECKED || status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)\r
+               {\r
+                       bool isItemCheck(status == TABLE_VIEW_ITEM_STATUS_CHECKED);\r
+                       __pSettingGroupTabledView->SetItemChecked(groupIndex, itemIndex, isItemCheck);\r
+                       MmsSendSettings* pMmsSendSetting = SettingPresentationModel::GetInstance()->GetMmsSendSettings();\r
+                       if (pMmsSendSetting)\r
+                       {\r
+                               pMmsSendSetting->SetMmsDeliveryReportStatus(isItemCheck);\r
+                       }\r
+                       __pSettingGroupTabledView->RefreshItem(groupIndex, itemIndex, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_MULTIMEDIA_READ_REPORT:\r
+       {\r
+               SceneManager* pSceneManager = SceneManager::GetInstance();\r
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SETTINGS_MULTIMEDIA_READ_REPORT, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);\r
+\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_READ_REPORT_REQUEST:\r
+       {\r
+               bool nextState = false;\r
+               if (status == TABLE_VIEW_ITEM_STATUS_SELECTED)\r
+               {\r
+                       nextState = !__pSettingGroupTabledView->IsItemChecked(groupIndex, itemIndex);\r
+               }\r
+               else if (status == TABLE_VIEW_ITEM_STATUS_CHECKED || status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)\r
+               {\r
+                       nextState = (status == TABLE_VIEW_ITEM_STATUS_CHECKED);\r
+               }\r
+               __pSettingGroupTabledView->SetItemChecked(groupIndex, itemIndex, nextState);\r
+               MmsReceiveSettings* pMmsReceiveSettings = SettingPresentationModel::GetInstance()->GetMmsReceiveSettings();\r
+               if (pMmsReceiveSettings)\r
+               {\r
+                       pMmsReceiveSettings->SetMmsReadReportRequestStatus(nextState);\r
+               }\r
+               __pSettingGroupTabledView->RefreshItem(groupIndex, itemIndex, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_READ_REPORT_SEND:\r
+       {\r
+               bool nextState = false;\r
+               if (status == TABLE_VIEW_ITEM_STATUS_SELECTED)\r
+               {\r
+                       nextState = !__pSettingGroupTabledView->IsItemChecked(groupIndex, itemIndex);\r
+               }\r
+               else if (status == TABLE_VIEW_ITEM_STATUS_CHECKED || status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)\r
+               {\r
+                       nextState = (status == TABLE_VIEW_ITEM_STATUS_CHECKED);\r
+               }\r
+               __pSettingGroupTabledView->SetItemChecked(groupIndex, itemIndex, nextState);\r
+               MmsSendSettings* pMmsSendSettings = SettingPresentationModel::GetInstance()->GetMmsSendSettings();\r
+               if (pMmsSendSettings)\r
+               {\r
+                       pMmsSendSettings->SetMmsReadReportSendStatus(nextState);\r
+               }\r
+               __pSettingGroupTabledView->RefreshItem(groupIndex, itemIndex, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_MULTIMEDIA_RECV_HOME_NETWORK:\r
+       case IDA_SETTINGS_MULTIMEDIA_RECV_FOREIGN_NETWORK:\r
+       case IDA_SETTINGS_MULTIMEDIA_CREATION_MODE:\r
+       {\r
+               if (__pSettingGroupTabledView->IsGroupExpanded(groupIndex + 1))\r
+               {\r
+                       __pSettingGroupTabledView->CollapseGroup(groupIndex + 1);\r
+                       __pSettingItemsArray->SetgroupExpandStatus(groupIndex + 1, false);\r
+               }\r
+               else\r
+               {\r
+                       __pSettingGroupTabledView->ExpandGroup(groupIndex + 1);\r
+                       __pSettingItemsArray->SetgroupExpandStatus(groupIndex + 1, true);\r
+                       //      __pSettingGroupList->ScrollToItem(groupIndex + 1, __pSettingItemsArray->GetItemCount(groupIndex + 1) - 1);\r
+               }\r
+               __pSettingGroupTabledView->RefreshItem(groupIndex, itemIndex, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_CREATION_MODE_FREE:\r
+       {\r
+               if (status == TABLE_VIEW_ITEM_STATUS_CHECKED || status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)\r
+               {\r
+                       MmsSendSettings* pMmsSendSettings = SettingPresentationModel::GetInstance()->GetMmsSendSettings();\r
+                       if (pMmsSendSettings)\r
+                       {\r
+                               pMmsSendSettings->SetMmsCreationModeType(SETTING_CREATION_MODE_FREE);\r
+                       }\r
+                       CheckedRadioGroupItem(groupIndex, itemIndex);\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_CREATION_MODE_WARNING:\r
+       {\r
+               if (status == TABLE_VIEW_ITEM_STATUS_CHECKED || status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)\r
+               {\r
+                       MmsSendSettings* pMmsSendSettings = SettingPresentationModel::GetInstance()->GetMmsSendSettings();\r
+                       if (pMmsSendSettings)\r
+                       {\r
+                               pMmsSendSettings->SetMmsCreationModeType(SETTING_CREATION_MODE_WARNING);\r
+                       }\r
+                       CheckedRadioGroupItem(groupIndex, itemIndex);\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_CREATION_MODE_RESTRICTED:\r
+       {\r
+               if (status == TABLE_VIEW_ITEM_STATUS_CHECKED || status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)\r
+               {\r
+                       MmsSendSettings* pMmsSendSettings = SettingPresentationModel::GetInstance()->GetMmsSendSettings();\r
+                       if (pMmsSendSettings)\r
+                       {\r
+                               pMmsSendSettings->SetMmsCreationModeType(SETTING_CREATION_MODE_RESTRICTED);\r
+                       }\r
+                       CheckedRadioGroupItem(groupIndex, itemIndex);\r
+               }\r
+       }\r
+       break;\r
+\r
+       default:\r
+               break;\r
+\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+\r
+TableViewItem*\r
+MutimediaSettingsForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       TableViewItem* pViewItem = null;\r
+       switch (__settingFormType)\r
+       {\r
+       case MULTIMEDIA_SETTING_MESSAGES_FORM:\r
+       case MULTIMEDIA_SETTING_RECEIVE_OPTIONS_FORM:\r
+       case MULTIMEDIA_SETTING_READ_REPORT_FORM:\r
+               pViewItem = CreateSettingItem(groupIndex, itemIndex, itemWidth);\r
+               break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pViewItem;\r
+}\r
+\r
+//From IGroupedListViewItemProvider\r
+int\r
+MutimediaSettingsForm::GetGroupCount(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int groupCount(0);\r
+       switch (__settingFormType)\r
+       {\r
+       case MULTIMEDIA_SETTING_MESSAGES_FORM:\r
+       case MULTIMEDIA_SETTING_RECEIVE_OPTIONS_FORM:\r
+       case MULTIMEDIA_SETTING_READ_REPORT_FORM:\r
+               groupCount = __pSettingItemsArray->GetGroupCount();\r
+               break;\r
+\r
+       default:\r
+               break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return groupCount;\r
+}\r
+\r
+int\r
+MutimediaSettingsForm::GetItemCount(int groupIndex)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int groupItemCount(0);\r
+       switch (__settingFormType)\r
+       {\r
+       case MULTIMEDIA_SETTING_MESSAGES_FORM:\r
+       case MULTIMEDIA_SETTING_RECEIVE_OPTIONS_FORM:\r
+       case MULTIMEDIA_SETTING_READ_REPORT_FORM:\r
+               groupItemCount = __pSettingItemsArray->GetItemCount(groupIndex);\r
+               break;\r
+\r
+       default:\r
+               break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return groupItemCount;\r
+}\r
+\r
+TableViewGroupItem*\r
+MutimediaSettingsForm::CreateGroupItem(int groupIndex, int itemWidth)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       Label* pGroupName = null;\r
+       TableViewGroupItem* pViewGroupItem = new (std::nothrow) TableViewGroupItem();\r
+       switch (__settingFormType)\r
+       {\r
+       case MULTIMEDIA_SETTING_MESSAGES_FORM:\r
+       case MULTIMEDIA_SETTING_RECEIVE_OPTIONS_FORM:\r
+       case MULTIMEDIA_SETTING_READ_REPORT_FORM:\r
+       {\r
+               // For static setting items\r
+               String groupName;\r
+               if (__pSettingItemsArray)\r
+               {\r
+                       groupName = __pSettingItemsArray->GetGroupName(groupIndex);\r
+               }\r
+               if (groupName.IsEmpty())\r
+               {\r
+                       pViewGroupItem->Construct(Dimension(itemWidth, 1));\r
+                       pViewGroupItem->SetShowState(false);\r
+               }\r
+               else\r
+               {\r
+                       pViewGroupItem->Construct(Dimension(itemWidth, H_LIST_GROUP));\r
+                       pGroupName = new (std::nothrow) Label();\r
+                       pGroupName->Construct(Rectangle(0, 0, itemWidth, H_LIST_GROUP), groupName);\r
+               }\r
+       }\r
+       break;\r
+\r
+       default:\r
+               break;\r
+       }\r
+       if (pGroupName)\r
+       {\r
+               pGroupName->SetTextHorizontalAlignment(ALIGNMENT_LEFT);\r
+               pViewGroupItem->AddControl(*pGroupName);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pViewGroupItem;\r
+}\r
+\r
+bool\r
+MutimediaSettingsForm::DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (pItem)\r
+       {\r
+               delete pItem;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return true;\r
+}\r
+\r
+bool\r
+MutimediaSettingsForm::DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (pItem)\r
+       {\r
+               delete pItem;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return true;\r
+}\r
+\r
+void\r
+MutimediaSettingsForm::UpdateItem(int groupIndex, int itemIndex, TableViewItem* pItem)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       switch (__settingFormType)\r
+       {\r
+       case MULTIMEDIA_SETTING_MESSAGES_FORM:\r
+       case MULTIMEDIA_SETTING_RECEIVE_OPTIONS_FORM:\r
+       case MULTIMEDIA_SETTING_READ_REPORT_FORM:\r
+       {\r
+               UpdateSettingItem(groupIndex, itemIndex, pItem);\r
+       }\r
+       break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+MutimediaSettingsForm::UpdateGroupItem(int groupIndex, TableViewGroupItem* pItem)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       // Empty implementation\r
+}\r
+\r
+int\r
+MutimediaSettingsForm::GetDefaultItemHeight(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return H_LIST_ITEM_112PX;\r
+}\r
+\r
+int\r
+MutimediaSettingsForm::GetDefaultGroupItemHeight(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return H_GROUP_HEADER;\r
+}\r
+\r
+//Tableview event\r
+void\r
+MutimediaSettingsForm::OnGroupedTableViewGroupItemStateChanged(GroupedTableView& tableView, int groupIndex,\r
+                                                                                                                          TableViewGroupItem* pItem, TableViewItemStatus status)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       // Empty implementation\r
+}\r
+\r
+void\r
+MutimediaSettingsForm::OnGroupedTableViewItemStateChanged(GroupedTableView& tableView, int groupIndex,\r
+                                                                                                                 int itemIndex, TableViewItem* pItem, TableViewItemStatus status)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       switch (__settingFormType)\r
+       {\r
+       case MULTIMEDIA_SETTING_RECEIVE_OPTIONS_FORM:\r
+       case MULTIMEDIA_SETTING_MESSAGES_FORM:\r
+       case MULTIMEDIA_SETTING_READ_REPORT_FORM:\r
+       {\r
+               HandleSettingItemSelection(groupIndex, itemIndex, status);\r
+       }\r
+       break;\r
+\r
+       default:\r
+               break;\r
+\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+MutimediaSettingsForm::OnGroupedTableViewContextItemActivationStateChanged(GroupedTableView& tableView, int groupIndex, int itemIndex,\r
+                                                                                                                                                  TableViewContextItem* pContextItem, bool activated)\r
+{\r
+       AppLogDebug("ENTER");\r
+       // Empty implementation\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+TableViewItem*\r
+MutimediaSettingsForm::CreateSettingItem(int groupIndex, int itemIndex, int itemWidth)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       String itemText;\r
+       TableViewAnnexStyle style = TABLE_VIEW_ANNEX_STYLE_NORMAL;\r
+       CustomTableViewItem* pViewItem = new (std::nothrow) CustomTableViewItem();\r
+       SettingItem& settingItem = __pSettingItemsArray->GetItemAt(groupIndex, itemIndex);\r
+       switch (settingItem.GetStyle())\r
+       {\r
+       case SETTING_STYLE_NORMAL:\r
+               style = TABLE_VIEW_ANNEX_STYLE_NORMAL;\r
+               break;\r
+\r
+       case SETTING_STYLE_RADIO:\r
+               style = TABLE_VIEW_ANNEX_STYLE_RADIO;\r
+               break;\r
+\r
+       case SETTING_STYLE_RADIO_DETAILS:\r
+               style = TABLE_VIEW_ANNEX_STYLE_RADIO;\r
+               break;\r
+\r
+       case SETTING_STYLE_ONOFF_SLIDING:\r
+               style = TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING;\r
+               break;\r
+\r
+       case SETTING_STYLE_EXPANDABLE:\r
+               style = TABLE_VIEW_ANNEX_STYLE_NORMAL;\r
+               break;\r
+       }\r
+       pViewItem->Construct(Dimension(itemWidth, H_LIST_ITEM_112PX), style);\r
+       pViewItem->SetBackgroundColor(COLOR_LIST_DIALOGUE_GROUP_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);\r
+       // Child control max width.\r
+       itemWidth -= (TableViewItem::GetAnnexWidth(style) + W_LIST_ITEM_GROUP_INDICATOR);\r
+       int settingStatusItem = settingItem.GetStatus();\r
+       if (settingStatusItem == SETTING_STATUS_ITEM_INVALID)\r
+       {\r
+               Label* pSettingName = new (std::nothrow) Label();\r
+               pSettingName->Construct(Rectangle(0, MARGIN_4PX / 2, itemWidth, H_LIST_ITEM_112PX - MARGIN_4PX), settingItem.GetName());\r
+               pSettingName->SetName(IDS_LIST_MAIN_TEXT);\r
+               pSettingName->SetTextHorizontalAlignment(ALIGNMENT_LEFT);\r
+               pSettingName->SetTextConfig(LIST_MAIN_TEXT_FONT_SIZE, LABEL_TEXT_STYLE_NORMAL);\r
+               pViewItem->AddControl(*pSettingName);\r
+       }\r
+       else\r
+       {\r
+               Label* pSettingName = new (std::nothrow) Label();\r
+               pSettingName->Construct(Rectangle(0, 0, itemWidth, H_LIST_ITEM_112PX / 2), settingItem.GetName());\r
+               pSettingName->SetName(IDS_LIST_MAIN_TEXT);\r
+               pSettingName->SetTextHorizontalAlignment(ALIGNMENT_LEFT);\r
+               pSettingName->SetTextConfig(LIST_MAIN_TEXT_FONT_SIZE, LABEL_TEXT_STYLE_NORMAL);\r
+               pViewItem->AddControl(*pSettingName);\r
+\r
+               Label* pSettingStatus = new (std::nothrow) Label();\r
+               pSettingStatus->Construct(Rectangle(0, H_LIST_ITEM_112PX / 2, itemWidth, H_LIST_ITEM_112PX / 2), GetStatusItemText(settingStatusItem));\r
+               pSettingStatus->SetName(IDS_LIST_SUB_TEXT);\r
+               pSettingStatus->SetTextHorizontalAlignment(ALIGNMENT_LEFT);\r
+               pSettingStatus->SetTextConfig(LIST_SUB_TEXT_FONT_SIZE, LABEL_TEXT_STYLE_NORMAL);\r
+               pSettingStatus->SetTextColor(COLOR_SETTING_SUB_TEXT);\r
+               pViewItem->AddControl(*pSettingStatus);\r
+       }\r
+\r
+       if (settingItem.GetStyle() == SETTING_STYLE_EXPANDABLE)\r
+       {\r
+               Bitmap* pNormalIcon = null;\r
+               Bitmap* pPressIcon = null;\r
+               if (__pSettingItemsArray->IsGroupExpanded(groupIndex + 1))\r
+               {\r
+                       pNormalIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_OPENED);\r
+                       pPressIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_OPENED_PRESS);\r
+               }\r
+               else\r
+               {\r
+                       pNormalIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_CLOSE);\r
+                       pPressIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_CLOSE_PRESS);\r
+               }\r
+               pViewItem->EnableExpandViewModeStyle(pNormalIcon, pPressIcon);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pViewItem;\r
+}\r
+\r
+\r
+void\r
+MutimediaSettingsForm::CheckedRadioGroupItem(int groupIndex, int itemIndex)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int groupItemCount = __pSettingItemsArray->GetItemCount(groupIndex);\r
+       for (int index = 0; index < groupItemCount; index++)\r
+       {\r
+               __pSettingGroupTabledView->SetItemChecked(groupIndex, index, (itemIndex == index));\r
+               __pSettingGroupTabledView->RefreshItem(groupIndex, index, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);\r
+       }\r
+       int prvGroupItemCount = __pSettingItemsArray->GetItemCount(groupIndex - 1) - 1;\r
+       __pSettingGroupTabledView->RefreshItem(groupIndex - 1, prvGroupItemCount, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+String\r
+MutimediaSettingsForm::GetStatusItemText(int type) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       String strText;\r
+       SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();\r
+       switch (type)\r
+       {\r
+       case SETTING_STATUS_ITEM_INPUTMODE:\r
+       case SETTING_STATUS_ITEM_SERVICE_CENTER:\r
+               break;\r
+\r
+       case SETTING_STATUS_ITEM_HOME_NETWORK:\r
+       {\r
+               int homeNetworkRetrieveType = pSettingPrModel->GetMmsReceiveSettings()->GetMmsHomeNetworkRetrieveType();\r
+               strText = GetDownloadString(homeNetworkRetrieveType);\r
+       }\r
+       break;\r
+\r
+       case SETTING_STATUS_ITEM_FORIGEN_NETWORK:\r
+       {\r
+               int retrieveType = pSettingPrModel->GetMmsReceiveSettings()->GetMmsForigenNetworkRetrieveType();\r
+               strText = GetDownloadString(retrieveType);\r
+       }\r
+       break;\r
+\r
+       case SETTING_STATUS_ITEM_CREATION_MODE:\r
+       {\r
+               int creationModeType = pSettingPrModel->GetMmsSendSettings()->GetMmsCreationModeType();\r
+               strText = GetCreationModeString(creationModeType);\r
+       }\r
+       break;\r
+\r
+       case SETTING_STATUS_ITEM_INVALID:\r
+               break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return strText;\r
+}\r
+\r
+bool\r
+MutimediaSettingsForm::GetItemCheckStatus(int controlId) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       bool status(false);\r
+       switch (controlId)\r
+       {\r
+       case IDA_SETTINGS_HOME_NETWORK_AUTO_DOWNLOAD:\r
+       case IDA_SETTINGS_HOME_NETWORK_MANUAL:\r
+       case IDA_SETTINGS_HOME_NETWORK_REJECT:\r
+       case IDA_SETTINGS_FOREIGN_NETWORK_AUTO_DOWNLOAD:\r
+       case IDA_SETTINGS_FOREIGN_NETWORK_MANUAL:\r
+       case IDA_SETTINGS_FOREIGN_NETWORK_RESTRICTED:\r
+       case IDA_SETTINGS_FOREIGN_NETWORK_REJECT:\r
+       case IDA_SETTINGS_READ_REPORT_REQUEST:\r
+               status = GetMmsReceiveStatus(controlId);\r
+               break;\r
+\r
+       case IDA_SETTINGS_MULTIMEDIA_DELIVERY_REPORT:\r
+       case IDA_SETTINGS_READ_REPORT_SEND:\r
+       case IDA_SETTINGS_CREATION_MODE_FREE:\r
+       case IDA_SETTINGS_CREATION_MODE_WARNING:\r
+       case IDA_SETTINGS_CREATION_MODE_RESTRICTED:\r
+               status = GetMmsSendStatus(controlId);\r
+               break;\r
+\r
+       default:\r
+               break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return status;\r
+}\r
+bool\r
+MutimediaSettingsForm::GetMmsReceiveStatus(int controlId) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       bool status(false);\r
+       SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();\r
+       MmsReceiveSettings* pMmsReceiveSettings = pSettingPrModel->GetMmsReceiveSettings();\r
+       if (pMmsReceiveSettings)\r
+       {\r
+               switch (controlId)\r
+               {\r
+               case IDA_SETTINGS_HOME_NETWORK_AUTO_DOWNLOAD:\r
+                       status = (pMmsReceiveSettings->GetMmsHomeNetworkRetrieveType() == SETTING_RECV_DOWNLOAD_AUTO);\r
+                       break;\r
+\r
+               case IDA_SETTINGS_HOME_NETWORK_MANUAL:\r
+                       status = (pMmsReceiveSettings->GetMmsHomeNetworkRetrieveType() == SETTING_RECV_DOWNLOAD_MANUAL);\r
+                       break;\r
+\r
+               case IDA_SETTINGS_HOME_NETWORK_REJECT:\r
+                       status = (pMmsReceiveSettings->GetMmsHomeNetworkRetrieveType() == SETTING_RECV_DOWNLOAD_REJECT);\r
+                       break;\r
+\r
+               case IDA_SETTINGS_FOREIGN_NETWORK_AUTO_DOWNLOAD:\r
+                       status = (pMmsReceiveSettings->GetMmsForigenNetworkRetrieveType() == SETTING_RECV_DOWNLOAD_AUTO);\r
+                       break;\r
+\r
+               case IDA_SETTINGS_FOREIGN_NETWORK_MANUAL:\r
+                       status = (pMmsReceiveSettings->GetMmsForigenNetworkRetrieveType() == SETTING_RECV_DOWNLOAD_MANUAL);\r
+                       break;\r
+\r
+               case IDA_SETTINGS_FOREIGN_NETWORK_RESTRICTED:\r
+                       status = (pMmsReceiveSettings->GetMmsForigenNetworkRetrieveType() == SETTING_RECV_DOWNLOAD_RESTRICTED);\r
+                       break;\r
+\r
+               case IDA_SETTINGS_FOREIGN_NETWORK_REJECT:\r
+                       status = (pMmsReceiveSettings->GetMmsForigenNetworkRetrieveType() == SETTING_RECV_DOWNLOAD_REJECT);\r
+                       break;\r
+\r
+               case IDA_SETTINGS_READ_REPORT_REQUEST:\r
+                       status = pMmsReceiveSettings->IsMmsReadReportRequestOn();\r
+                       break;\r
+\r
+               default:\r
+                       break;\r
+               }\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return status;\r
+\r
+}\r
+\r
+bool\r
+MutimediaSettingsForm::GetMmsSendStatus(int controlId) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       bool status(false);\r
+       SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();\r
+       MmsSendSettings* pMmsSendSettings = pSettingPrModel->GetMmsSendSettings();\r
+       if (pMmsSendSettings)\r
+       {\r
+               switch (controlId)\r
+               {\r
+               case IDA_SETTINGS_MULTIMEDIA_DELIVERY_REPORT:\r
+                       status = pMmsSendSettings->IsMmsDeliveryReportOn();\r
+                       break;\r
+\r
+               case IDA_SETTINGS_READ_REPORT_SEND:\r
+                       status = pMmsSendSettings->IsMmsReadReportSendOn();\r
+                       break;\r
+\r
+               case IDA_SETTINGS_CREATION_MODE_FREE:\r
+                       status = (pMmsSendSettings->GetMmsCreationModeType() == SETTING_CREATION_MODE_FREE);\r
+                       break;\r
+\r
+               case IDA_SETTINGS_CREATION_MODE_WARNING:\r
+                       status = (pMmsSendSettings->GetMmsCreationModeType() == SETTING_CREATION_MODE_WARNING);\r
+                       break;\r
+\r
+               case IDA_SETTINGS_CREATION_MODE_RESTRICTED:\r
+                       status = (pMmsSendSettings->GetMmsCreationModeType() == SETTING_CREATION_MODE_RESTRICTED);\r
+                       break;\r
+\r
+               default:\r
+                       break;\r
+               }\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return status;\r
+}\r
+\r
+\r
+String\r
+MutimediaSettingsForm::GetDownloadString(int type) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       String strText;\r
+       switch (type)\r
+       {\r
+       case SETTING_RECV_DOWNLOAD_AUTO:\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_AUTODOWNLOAD", strText);\r
+               break;\r
+\r
+       case SETTING_RECV_DOWNLOAD_MANUAL:\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL", strText);\r
+               break;\r
+\r
+       case SETTING_RECV_DOWNLOAD_RESTRICTED:\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED", strText);\r
+               break;\r
+\r
+       case SETTING_RECV_DOWNLOAD_REJECT:\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT", strText);\r
+               break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return strText;\r
+\r
+}\r
+\r
+String\r
+MutimediaSettingsForm::GetCreationModeString(int type) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       String strText;\r
+       switch (type)\r
+       {\r
+       case SETTING_CREATION_MODE_FREE:\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_MMSCCCREATIONMODEFREE", strText);\r
+               break;\r
+\r
+       case SETTING_CREATION_MODE_WARNING:\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING", strText);\r
+               break;\r
+\r
+       case SETTING_CREATION_MODE_RESTRICTED:\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED", strText);\r
+               break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return strText;\r
+}\r
+\r
+void\r
+MutimediaSettingsForm::UpdateSettingItem(int groupIndex, int itemIndex, TableViewItem* pViewItem)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       SettingItem& settingItem = __pSettingItemsArray->GetItemAt(groupIndex, itemIndex);\r
+       int settingStatusItem = settingItem.GetStatus();\r
+       Label* pSettingName = (Label*) pViewItem->GetControl(IDS_LIST_MAIN_TEXT);\r
+       if (pSettingName)\r
+       {\r
+               pSettingName->SetText(settingItem.GetName());\r
+               pSettingName->Draw();\r
+       }\r
+       Label* pSettingStatus = static_cast<Label*>(pViewItem->GetControl(IDS_LIST_SUB_TEXT));\r
+       if (pSettingStatus)\r
+       {\r
+               pSettingStatus->SetText(GetStatusItemText(settingStatusItem));\r
+               pSettingStatus->Draw();\r
+       }\r
+       if (settingItem.GetStyle() == SETTING_STYLE_EXPANDABLE)\r
+       {\r
+               Bitmap* pNormalIcon = null;\r
+               Bitmap* pPressIcon = null;\r
+               if (__pSettingItemsArray->IsGroupExpanded(groupIndex + 1))\r
+               {\r
+                       pNormalIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_OPENED);\r
+                       pPressIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_OPENED_PRESS);\r
+               }\r
+               else\r
+               {\r
+                       pNormalIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_CLOSE);\r
+                       pPressIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_CLOSE_PRESS);\r
+               }\r
+               static_cast<CustomTableViewItem*>(pViewItem)->EnableExpandViewModeStyle(pNormalIcon, pPressIcon);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+MutimediaSettingsForm::LoadCurrentSettings(void)\r
+{\r
+       if (__pSettingItemsArray)\r
+       {\r
+               for (int groupIndex = 0; groupIndex < __pSettingItemsArray->GetGroupCount(); groupIndex++)\r
+               {\r
+                       for (int itemIndex = 0; itemIndex < __pSettingItemsArray->GetItemCount(groupIndex); itemIndex++)\r
+                       {\r
+                               SettingItem& settingItem = __pSettingItemsArray->GetItemAt(groupIndex, itemIndex);\r
+                               __pSettingGroupTabledView->SetItemChecked(groupIndex, itemIndex, GetItemCheckStatus(settingItem.GetActionId()));\r
+                       }\r
+                       if (__pSettingItemsArray->IsGroupExpanded(groupIndex))\r
+                       {\r
+                               __pSettingGroupTabledView->ExpandGroup(groupIndex);\r
+                       }\r
+               }\r
+               __pSettingGroupTabledView->UpdateTableView();\r
+       }\r
+}\r
diff --git a/src/MsgOptionPopup.cpp b/src/MsgOptionPopup.cpp
new file mode 100644 (file)
index 0000000..b4c2923
--- /dev/null
@@ -0,0 +1,587 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include "MsgBitmapUtility.h"\r
+#include "MsgCommonUtil.h"\r
+#include "MsgConversationData.h"\r
+#include "MsgMessagePresentationModel.h"\r
+#include "MsgOptionPopup.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Base::Utility;\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Ui;\r
+using namespace Tizen::Ui::Controls;\r
+using namespace Tizen::Ui::Scenes;\r
+\r
+OptionPopup::OptionPopup(Control& parentCntl, ConversationData* pConvData)\r
+       : __pParentCnt(parentCntl)\r
+       , __pConvData(pConvData)\r
+       , __pOptionList(null)\r
+       , __pPopup(null)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+OptionPopup::~OptionPopup(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pOptionList)\r
+       {\r
+               __pOptionList->RemoveAll(true);\r
+               delete __pOptionList;\r
+       }\r
+       if (__pPopup)\r
+       {\r
+               delete __pPopup;\r
+       }\r
+       if (__pConvData)\r
+       {\r
+               delete __pConvData;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+OptionPopup::Construct(int threadId, int selectedIndex)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = Popup::Construct(L"IDL_MSG_OPTION_POPUP");\r
+       if (!__pConvData)\r
+       {\r
+               r = E_FAILURE;\r
+       }\r
+       if (r == E_SUCCESS)\r
+       {\r
+               String shortTextMsg(__pConvData->GetDisplayName());\r
+               shortTextMsg.Append(": ");\r
+               shortTextMsg.Append(__pConvData->GetMessageText());\r
+               Popup::SetTitleText(shortTextMsg);\r
+\r
+               // Transfer ownership\r
+               Bitmap* pBottomBg = BitmapUtility::GetInstance()->GetIconN(MSG_ICON_BUTTON_PANEL_BG);\r
+               SetFooterBackgroundBitmap(pBottomBg);\r
+               InitalizeMessageOptionList();\r
+               Button* pCanelButton = (Button*) GetControl(L"IDC_BUTTON_CLOSE");\r
+               pCanelButton->SetActionId(IDA_BUTTON_CLOSE_OPTIONS_POPUP);\r
+               pCanelButton->AddActionEventListener(*this);\r
+\r
+               int increaseHeight(0);\r
+               if (__pOptionList->GetCount() > 1)\r
+               {\r
+                       int visibleListItemCount(__pOptionList->GetCount());\r
+                       if (visibleListItemCount > 4)\r
+                       {\r
+                               visibleListItemCount = 4;\r
+                       }\r
+                       increaseHeight = visibleListItemCount * H_LIST_ITEM_112PX - H_LIST_ITEM_112PX;\r
+               }\r
+               Popup::SetSize(Dimension(GetWidth(), GetHeight() + increaseHeight));\r
+               ListView* pList = static_cast<ListView*>(GetControl(L"IDC_MSG_OPTION_LISTVIEW"));\r
+               pList->SetSize(pList->GetWidth(), pList->GetHeight() + increaseHeight);\r
+               Point pos = GetControl(L"IDC_BUTTON_CLOSE")->GetPosition();\r
+               pos.y += increaseHeight;\r
+               GetControl(L"IDC_BUTTON_CLOSE")->SetPosition(pos);\r
+\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+void\r
+OptionPopup::InitalizeMessageOptionList(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       ListItemObject* pListItem = null;\r
+       __pOptionList = new (std::nothrow) ArrayList();\r
+       __pOptionList->Construct();\r
+\r
+       String itemText;\r
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_DELETE", itemText);\r
+       pListItem = new (std::nothrow) ListItemObject(itemText, LIST_ELEMENT_DELETE);\r
+       if (__pOptionList->Add(pListItem) != E_SUCCESS)\r
+       {\r
+               delete pListItem;\r
+       }\r
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB", itemText);\r
+       pListItem = new (std::nothrow) ListItemObject(itemText, LIST_ELEMENT_COPY_MESSAGE_TEXT);\r
+       if (__pOptionList->Add(pListItem) != E_SUCCESS)\r
+       {\r
+               delete pListItem;\r
+       }\r
+       //      Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_OPT_PROTECTION_ON", itemText);\r
+       //      pListItem = new (std::nothrow) ListItemObject(itemText, LIST_ELEMENT_PROTECTION_ON);\r
+       //      if (__pOptionList->Add(pListItem) != E_SUCCESS)\r
+       //      {\r
+       //              delete pListItem;\r
+       //      }\r
+       if (__pConvData->GetMessageType() == MSG_TYPE_SMS)\r
+       {\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_COPY_TO_SIM", itemText);\r
+               pListItem = new (std::nothrow) ListItemObject(itemText, LIST_ELEMENT_COPY_TO_SIM);\r
+               if (__pOptionList->Add(pListItem) != E_SUCCESS)\r
+               {\r
+                       delete pListItem;\r
+               }\r
+       }\r
+\r
+       if (__pConvData->GetMessageType() == MSG_TYPE_MMS)\r
+       {\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_OPT_SAVE_ATTACHMENT", itemText);\r
+               pListItem = new (std::nothrow) ListItemObject(itemText, LIST_ELEMENT_SAVE_ATTACHMENT);\r
+               if (__pOptionList->Add(pListItem) != E_SUCCESS)\r
+               {\r
+                       delete pListItem;\r
+               }\r
+       }\r
+\r
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_FORWARD", itemText);\r
+       pListItem = new (std::nothrow) ListItemObject(itemText, LIST_ELEMENT_FORWARD);\r
+       if (__pOptionList->Add(pListItem) != E_SUCCESS)\r
+       {\r
+               delete pListItem;\r
+       }\r
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB", itemText);\r
+       pListItem = new (std::nothrow) ListItemObject(itemText, LIST_ELEMENT_VIEW_MESSAGE_DETAILS);\r
+       if (__pOptionList->Add(pListItem) != E_SUCCESS)\r
+       {\r
+               delete pListItem;\r
+       }\r
+       ListView* pList = static_cast<ListView*>(GetControl(L"IDC_MSG_OPTION_LISTVIEW"));\r
+       pList->AddListViewItemEventListener(*this);\r
+       pList->SetItemProvider(*this);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+OptionPopup::OnListViewItemStateChanged(ListView& listView, int index, int elementId,\r
+                                                                               ListItemStatus status)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (status == LIST_ITEM_STATUS_SELECTED)\r
+       {\r
+               SetShowState(false);\r
+\r
+               const ListItemObject* pListItem = static_cast<ListItemObject*>(__pOptionList->GetAt(index));\r
+               switch (pListItem->GetItemId())\r
+               {\r
+               case LIST_ELEMENT_DELETE:\r
+               {\r
+                       MessagePresentationModel* pMsgPrModel = MessagePresentationModel::GetInstance();\r
+                       if (pMsgPrModel)\r
+                       {\r
+                               pMsgPrModel->Delete(__pConvData->GetEntryId(), *this, REQUEST_DELETE_MESSAGE);\r
+                       }\r
+               }\r
+               break;\r
+\r
+               case LIST_ELEMENT_COPY_MESSAGE_TEXT:\r
+               {\r
+                       CommonUtil::CopyTextToClipBoard(__pConvData->GetMessageText());\r
+                       RequestId requestId = REQUEST_OPTION_POPUP;\r
+                       __pParentCnt.SendUserEvent(requestId, null);\r
+               }\r
+               break;\r
+\r
+               case LIST_ELEMENT_PROTECTION_ON:\r
+               {\r
+                       // TODO:\r
+                       RequestId requestId = REQUEST_OPTION_POPUP;\r
+                       __pParentCnt.SendUserEvent(requestId, null);\r
+               }\r
+               break;\r
+\r
+               case LIST_ELEMENT_COPY_TO_SIM:\r
+               {\r
+                       MessagePresentationModel* pMsgPrModel = MessagePresentationModel::GetInstance();\r
+                       if (pMsgPrModel)\r
+                       {\r
+                               pMsgPrModel->MoveMessageToSIM(__pConvData->GetEntryId());\r
+                       }\r
+               }\r
+               break;\r
+\r
+               case LIST_ELEMENT_SAVE_ATTACHMENT:\r
+               {\r
+                       ArrayList* pArgList = new (std::nothrow) ArrayList();\r
+                       pArgList->Construct();\r
+                       pArgList->Add((new Integer(__pConvData->GetEntryId())));\r
+                       RequestId requestId = REQUEST_SAVE_MESSAGE_ATTACHMENTS;\r
+                       __pParentCnt.SendUserEvent(requestId, pArgList);\r
+                       // Destroy popup\r
+                       requestId = REQUEST_OPTION_POPUP;\r
+                       __pParentCnt.SendUserEvent(requestId, null);\r
+               }\r
+               break;\r
+\r
+               case LIST_ELEMENT_FORWARD:\r
+               {\r
+                       MessagePresentationModel* pMsgPrModel = MessagePresentationModel::GetInstance();\r
+                       if (pMsgPrModel)\r
+                       {\r
+                               MessageData* pMsgData = pMsgPrModel->GetMessageDataByIdN(__pConvData->GetEntryId());\r
+                               CommonUtil::ForwardMessage(pMsgData);\r
+                               RequestId requestId = REQUEST_OPTION_POPUP;\r
+                               __pParentCnt.SendUserEvent(requestId, null);\r
+                       }\r
+               }\r
+               break;\r
+\r
+               case LIST_ELEMENT_VIEW_MESSAGE_DETAILS:\r
+               {\r
+                       ShowMessageDetails();\r
+               }\r
+               break;\r
+\r
+               default:\r
+               {\r
+                       RequestId requestId = REQUEST_OPTION_POPUP;\r
+                       __pParentCnt.SendUserEvent(requestId, null);\r
+               }\r
+               break;\r
+               }\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+OptionPopup::OnListViewItemSwept(ListView& listView, int index,\r
+                                                                SweepDirection direction)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+OptionPopup::OnListViewContextItemStateChanged(ListView& listView, int index, int elementId,\r
+                                                                                          ListContextItemStatus state)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+OptionPopup::OnListViewItemLongPressed(ListView& listView, int index, int elementId,\r
+                                                                          bool& invokeListViewItemCallback)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+int\r
+OptionPopup::GetItemCount(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       int count(0);\r
+\r
+       if (__pOptionList)\r
+               count = __pOptionList->GetCount();\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return count;\r
+}\r
+\r
+ListItemBase*\r
+OptionPopup::CreateItem(int index, int itemWidth)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       CustomItem* pItem = new (std::nothrow) CustomItem();\r
+       const ListItemObject* pListItem = static_cast<ListItemObject*>(__pOptionList->GetAt(index));\r
+       pItem->Construct(Dimension(itemWidth, H_LIST_ITEM_112PX), LIST_ANNEX_STYLE_NORMAL);\r
+       pItem->AddElement(Rectangle(MARGIN_16PX + 25, 0, (itemWidth - MARGIN_16PX), H_LIST_ITEM_112PX),\r
+                                         pListItem->GetItemId(), pListItem->GetItemText());\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pItem;\r
+}\r
+\r
+bool\r
+OptionPopup::DeleteItem(int index, ListItemBase* pItem, int itemWidth)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (pItem)\r
+       {\r
+               delete pItem;\r
+               pItem = null;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return true;\r
+}\r
+\r
+\r
+void\r
+OptionPopup::OnActionPerformed(const Control& source, int actionId)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       // Destroy Popup\r
+       switch (actionId)\r
+       {\r
+       case IDA_BUTTON_MESSAGE_DETAILS_POPUP:\r
+       case IDA_BUTTON_CLOSE_OPTIONS_POPUP:\r
+       {\r
+               SetShowState(false);\r
+               RequestId requestId = REQUEST_OPTION_POPUP;\r
+               __pParentCnt.SendUserEvent(requestId, null);\r
+       }\r
+       break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+OptionPopup::ShowMessageDetails(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       __pPopup = new (std::nothrow) Popup();\r
+       result r = __pPopup->Construct(L"IDL_MSG_OPTION_DETAILS_POPUP");\r
+       if (r == E_SUCCESS)\r
+       {\r
+\r
+               MessagePresentationModel* pMsgPrModel = MessagePresentationModel::GetInstance();\r
+               if (pMsgPrModel)\r
+               {\r
+                       TextBox* pTextBox = static_cast<TextBox*>(__pPopup->GetControl(L"IDC_TEXTBOX_MSG_DETAILS"));\r
+                       if (pTextBox)\r
+                       {\r
+                               String messageDetails;\r
+                               String strText;\r
+                               pTextBox->SetTextSize(42);\r
+                               pTextBox->SetColor(TEXT_BOX_STATUS_NORMAL, __pPopup->GetColor());\r
+                               pTextBox->SetColor(TEXT_BOX_STATUS_HIGHLIGHTED, __pPopup->GetColor());\r
+                               pTextBox->SetColor(TEXT_BOX_STATUS_DISABLED, __pPopup->GetColor());\r
+\r
+                               //To get Message Type\r
+                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_DETAILS_TYPE", strText);\r
+                               strText.Append(IDS_BLANK_SPACE);\r
+                               strText.Append(IDS_COLON);\r
+                               strText.Append(IDS_BLANK_SPACE);\r
+                               messageDetails.Append(strText);\r
+                               if (__pConvData->GetMessageType() == MSG_TYPE_SMS)\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_SMS", strText);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               else if (__pConvData->GetMessageType() == MSG_TYPE_MMS)\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_MMS", strText);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               messageDetails.Append(IDS_NEW_LINE);\r
+\r
+                               //Message contactlist\r
+                               if (__pConvData->IsSent())\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_TO", strText);\r
+                                       strText.Append(IDS_BLANK_SPACE);\r
+                                       strText.Append(IDS_COLON);\r
+                                       strText.Append(IDS_BLANK_SPACE);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               else\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_FROM", strText);\r
+                                       strText.Append(IDS_BLANK_SPACE);\r
+                                       strText.Append(IDS_COLON);\r
+                                       strText.Append(IDS_BLANK_SPACE);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               ArrayList* pPhoneNumberList = pMsgPrModel->GetPhoneNumberListN(__pConvData->GetThreadId());\r
+                               if (pPhoneNumberList)\r
+                               {\r
+                                       for (int index = 0; index < pPhoneNumberList->GetCount(); index++)\r
+                                       {\r
+                                               String* contactNumber = static_cast<String*>(pPhoneNumberList->GetAt(index));\r
+                                               messageDetails.Append(*contactNumber);\r
+                                               if (index != pPhoneNumberList->GetCount() - 1)\r
+                                                       messageDetails.Append(", ");\r
+                                       }\r
+                                       pPhoneNumberList->RemoveAll(true);\r
+                                       delete pPhoneNumberList;\r
+                               }\r
+                               messageDetails.Append(IDS_NEW_LINE);\r
+\r
+                               //Message sent/received time\r
+                               if (__pConvData->IsSent())\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT", strText);\r
+                                       strText.Append(IDS_BLANK_SPACE);\r
+                                       strText.Append(IDS_COLON);\r
+                                       strText.Append(IDS_BLANK_SPACE);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               else\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_RECEIVED", strText);\r
+                                       strText.Append(IDS_BLANK_SPACE);\r
+                                       strText.Append(IDS_COLON);\r
+                                       strText.Append(IDS_BLANK_SPACE);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               messageDetails.Append(__pConvData->GetTimeStamp());\r
+                               messageDetails.Append(IDS_NEW_LINE);\r
+\r
+                               //Message delivery report.\r
+                               int deliveryStatus = pMsgPrModel->GetMessageDeliveryStatus(__pConvData->GetMessageId());\r
+                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_DELIVERY_REPORT", strText);\r
+                               strText.Append(IDS_BLANK_SPACE);\r
+                               strText.Append(IDS_COLON);\r
+                               strText.Append(IDS_BLANK_SPACE);\r
+                               messageDetails.Append(strText);\r
+                               switch (deliveryStatus)\r
+                               {\r
+                               // Indicates the status unavailable\r
+                               case MSG_DELIVERY_REPORT_NONE:\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_POP_UNRECOGNISED", strText);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               break;\r
+\r
+                               // Indicates the expired status of message\r
+                               case MSG_DELIVERY_REPORT_EXPIRED:\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_EXPIRED", strText);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               break;\r
+\r
+                               // Indicates the success status of message\r
+                               case MSG_DELIVERY_REPORT_SUCCESS:\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_POP_SUCCESS", strText);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               break;\r
+\r
+                               // Indicates the rejected status of message\r
+                               case MSG_DELIVERY_REPORT_REJECTED:\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_POP_REJECTED", strText);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               break;\r
+\r
+                               // Indicates the deferred status of message\r
+                               case MSG_DELIVERY_REPORT_DEFERRED:\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_POP_DEFERRED", strText);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               break;\r
+\r
+                               // Indicates the unrecongnised status of message\r
+                               case MSG_DELIVERY_REPORT_UNRECOGNISED:\r
+                               case MSG_DELIVERY_REPORT_INDETERMINATE:\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_POP_UNRECOGNISED", strText);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               break;\r
+\r
+                               // Indicates the forwarded status of message\r
+                               case MSG_DELIVERY_REPORT_FORWARDED:\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_POP_FORWARDED", strText);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               break;\r
+\r
+                               // Indicates the unreachable status of message\r
+                               case MSG_DELIVERY_REPORT_UNREACHABLE:\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_POP_UNRECOGNISED", strText);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               break;\r
+\r
+\r
+                               default:\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_POP_UNRECOGNISED", strText);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               break;\r
+                               }\r
+\r
+                               messageDetails.Append(IDS_NEW_LINE);\r
+\r
+                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_OPT_STATUS", strText);\r
+                               //Message Status\r
+                               strText.Append(IDS_BLANK_SPACE);\r
+                               strText.Append(IDS_COLON);\r
+                               strText.Append(IDS_BLANK_SPACE);\r
+                               messageDetails.Append(strText);\r
+//                             bool msgStatus = pMsgPrModel->GetMessageDeliveryStatus(__pConvData->GetEntryId());\r
+                               if (__pConvData->IsSent() && __pConvData->IsSentFail())\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_POP_FAILED", strText);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               else\r
+                               {\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_POP_SUCCESS", strText);\r
+                                       messageDetails.Append(strText);\r
+                               }\r
+                               pTextBox->SetText(messageDetails);\r
+                       }\r
+               }\r
+               Button* pCloseButton = static_cast<Button*>(__pPopup->GetControl(L"IDC_MSG_CLOSE_BUTTON"));\r
+               pCloseButton->SetActionId(IDA_BUTTON_MESSAGE_DETAILS_POPUP);\r
+               pCloseButton->AddActionEventListener(*this);\r
+\r
+               // Show popup\r
+               __pPopup->SetShowState(true);\r
+               __pPopup->Show();\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+OptionPopup::OnDeleteComplete(int errCode, Object* pThreadObject)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       // Destroy Popup\r
+       RequestId requestId = REQUEST_OPTION_POPUP;\r
+       __pParentCnt.SendUserEvent(requestId, null);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
diff --git a/src/MsgPhoneNumberListPopup.cpp b/src/MsgPhoneNumberListPopup.cpp
new file mode 100644 (file)
index 0000000..bc66414
--- /dev/null
@@ -0,0 +1,215 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include "MsgContactUtility.h"\r
+#include "MsgIPopupEventListener.h"\r
+#include "MsgPhoneNumberListPopup.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Ui::Controls;\r
+\r
+PhoneNumberListPopup::PhoneNumberListPopup(IPopupEventListener& listener)\r
+       : __pPhoneNumberList(null)\r
+       , __popupListener(listener)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+PhoneNumberListPopup::~PhoneNumberListPopup(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pPhoneNumberList)\r
+       {\r
+               __pPhoneNumberList->RemoveAll(true);\r
+               delete __pPhoneNumberList;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+PhoneNumberListPopup::OnUserEventReceivedN(RequestId requestId, IList* pArgs)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+        switch(requestId)\r
+        {\r
+        case REQUEST_CLOSE_POPUP:\r
+                       __popupListener.OnPopupClose(this);\r
+                break;\r
+        }\r
+       \r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+PhoneNumberListPopup::Construct(ArrayList* pPhoneNumberList)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       __pPhoneNumberList = pPhoneNumberList;\r
+       result r = Popup::Construct(L"IDL_MSG_CONTACT_NUMBER_POPUP");\r
+       if (!IsFailed(r))\r
+       {\r
+               String strText;\r
+               Button* pCancelButton = static_cast<Button*>(GetControl(L"IDC_MSG_CANCEL_BUTTON"));\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_CANCEL", strText);\r
+               pCancelButton->SetText(strText);\r
+               pCancelButton->SetActionId(IDA_BUTTON_CLOSE_NUMBERLIST_POPUP);\r
+               pCancelButton->AddActionEventListener(*this);\r
+\r
+               ListView* pContactNumberList = static_cast<ListView*>(GetControl(L"IDC_MSG_CONTACT_NUMBER_LISTVIEW"));\r
+               pContactNumberList->AddListViewItemEventListener(*this);\r
+               pContactNumberList->SetItemProvider(*this);\r
+               int increaseHeight(0);\r
+               if (__pPhoneNumberList->GetCount() > 1)\r
+               {\r
+                       int visibleListItemCount(__pPhoneNumberList->GetCount());\r
+                       if (visibleListItemCount > 4)\r
+                       {\r
+                               visibleListItemCount = 4;\r
+                       }\r
+                       increaseHeight = (visibleListItemCount - 1) * H_LIST_ITEM_112PX;\r
+               }\r
+               pContactNumberList->SetSize(pContactNumberList->GetWidth(), pContactNumberList->GetHeight() + increaseHeight);\r
+               Popup::SetSize(Dimension(GetWidth(), GetHeight() + increaseHeight));\r
+               Point pos = pCancelButton->GetPosition();\r
+               pos.y += increaseHeight;\r
+               pCancelButton->SetPosition(pos);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+void\r
+PhoneNumberListPopup::OnListViewItemStateChanged(ListView& listView, int index, int elementId,\r
+                                                                                                ListItemStatus status)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (status == LIST_ITEM_STATUS_SELECTED)\r
+       {\r
+               SetShowState(false);\r
+               // Send phone number item selection event.\r
+               const Object* pPhoneNumber = __pPhoneNumberList->GetAt(index);\r
+               __popupListener.OnPopupListItemSelected(*this, index, pPhoneNumber);\r
+               // Send Destroy popup event\r
+               SendUserEvent(REQUEST_CLOSE_POPUP, null);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+PhoneNumberListPopup::OnListViewItemSwept(ListView& listView, int index,\r
+                                                                                 SweepDirection direction)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+PhoneNumberListPopup::OnListViewContextItemStateChanged(ListView& listView, int index, int elementId,\r
+                                                                                                               ListContextItemStatus state)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+PhoneNumberListPopup::OnListViewItemLongPressed(ListView& listView, int index, int elementId,\r
+                                                                                               bool& invokeListViewItemCallback)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+int\r
+PhoneNumberListPopup::GetItemCount(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int count(0);\r
+       if (__pPhoneNumberList)\r
+       {\r
+               count = __pPhoneNumberList->GetCount();\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return count;\r
+}\r
+\r
+ListItemBase*\r
+PhoneNumberListPopup::CreateItem(int index, int itemWidth)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       CustomItem* pItem = new (std::nothrow) CustomItem();\r
+       pItem->Construct(Dimension(itemWidth, H_LIST_ITEM_112PX), LIST_ANNEX_STYLE_NORMAL);\r
+       String* pContactNumber = static_cast<String*>(__pPhoneNumberList->GetAt(index));\r
+       if (pContactNumber)\r
+       {\r
+               pItem->AddElement(Rectangle(MARGIN_16PX, 0, itemWidth, H_LIST_ITEM_112PX),\r
+                                                 IDC_PHONENUMBER_LIST, *pContactNumber);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pItem;\r
+}\r
+\r
+bool\r
+PhoneNumberListPopup::DeleteItem(int index, ListItemBase* pItem, int itemWidth)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (pItem)\r
+       {\r
+               delete pItem;\r
+               pItem = null;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return true;\r
+}\r
+\r
+void\r
+PhoneNumberListPopup::OnActionPerformed(const Control& source, int actionId)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       switch (actionId)\r
+       {\r
+       case IDA_BUTTON_CLOSE_NUMBERLIST_POPUP:\r
+       {\r
+               SetShowState(false);\r
+               __popupListener.OnPopupClose(this);\r
+       }\r
+       break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
diff --git a/src/MsgProgressPopup.cpp b/src/MsgProgressPopup.cpp
new file mode 100644 (file)
index 0000000..864dba6
--- /dev/null
@@ -0,0 +1,108 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <FUiControls.h>\r
+\r
+#include "MsgProgressPopup.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Ui::Controls;\r
+\r
+MsgProgressPopup::MsgProgressPopup(void)\r
+       : __pStatusInfo(null)\r
+       , __pProgress(null)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+MsgProgressPopup::~MsgProgressPopup(void)\r
+{\r
+       //Empty implementation\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+MsgProgressPopup::Construct(int minCount, int maxCount, const String& strTitle)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = Popup::Construct(L"IDL_DELETE_PROGRESS_POPUP");\r
+       if (!IsFailed(r))\r
+       {\r
+               __pStatusInfo = static_cast<Label*>(GetControl(L"IDC_PROGRESS_INFO"));\r
+               __pProgress = static_cast<Progress*>(GetControl(L"IDC_PROGRESSBAR"));\r
+               __pProgress->SetRange(minCount, maxCount);\r
+               __pProgress->SetValue(minCount);\r
+               String statusInfo;\r
+               statusInfo.Format(MAX_LEN_SELECTION_INFO, strTitle.GetPointer(), minCount + 1, maxCount);\r
+               __pStatusInfo->SetText(statusInfo);\r
+               __pStatusInfo->SetTextHorizontalAlignment(ALIGNMENT_CENTER);\r
+\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+void\r
+MsgProgressPopup::UpdateProgressInfo(const String& statusInfo)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       __pStatusInfo->SetText(statusInfo);\r
+       __pStatusInfo->Draw();\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+MsgProgressPopup::SetProgressValue(int value)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       __pProgress->SetValue(value);\r
+       __pProgress->Draw();\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+MsgProgressPopup::ShowPopup(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       SetShowState(true);\r
+       Show();\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+MsgProgressPopup::HidePopup(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       SetShowState(false);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
diff --git a/src/MsgRecipientPanel.cpp b/src/MsgRecipientPanel.cpp
new file mode 100644 (file)
index 0000000..7cf0534
--- /dev/null
@@ -0,0 +1,1276 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <FApp.h>
+#include <FSocial.h>
+
+#include "MsgBitmapUtility.h"
+#include "MsgCommonUtil.h"
+#include "MsgContactListItem.h"
+#include "MsgISizeChangeEventListener.h"
+#include "MsgMessageData.h"
+#include "MsgMessagePresentationModel.h"
+#include "MsgRecipientPanel.h"
+#include "MsgTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Runtime;
+using namespace Tizen::Base::Utility;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Social;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui;
+
+const wchar_t* IDS_SELECTION_MODE_KEY = L"selectionMode";
+const wchar_t* IDS_SELECTION_MODE_VALUE = L"multiple";
+const wchar_t* IDS_CONTACT_ID = L"contactId";
+const wchar_t* IDS_RET_TYPE_KEY = L"returnType";
+const wchar_t* IDS_VALUE = L"value";
+
+
+RecipientPanel::RecipientPanel(void)
+       : __pSizeChangeListener(null)
+       , __errorString(IDS_BLANK)
+       , __pExpandEditArea(null)
+       , __pContactButton(null)
+       , __pContactCountLabel(null)
+       , __pContactSearchList(null)
+       , __pRecipientAddrList(null)
+       , __pAddressBook(null)
+       , __pTokenDeleteThread(null)
+       , __deleteTokenIndex(-1)
+       , __validateOnFocusLost(true)
+       , __oneTimeFlag(true)
+{
+       // Empty implementation
+}
+
+RecipientPanel::~RecipientPanel(void)
+{
+       AppLogDebug("ENTER");
+
+       if (__pAddressBook)
+       {
+               delete __pAddressBook;
+       }
+       if (__pRecipientAddrList)
+       {
+               __pRecipientAddrList->RemoveAll(true);
+               delete __pRecipientAddrList;
+
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+result
+RecipientPanel::Construct(const Rectangle& rectangle)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       r = Panel::Construct(L"IDL_RECIPIENT_PANEL");
+       __pContactButton = (Button*) GetControl(L"IDC_CONTACT_BUTTON");
+       __pContactButton->SetActionId(IDA_CONTACTS);
+       __pContactButton->AddActionEventListener(*this);
+       // Recipient area
+       __pExpandEditArea = (ExpandableEditArea*) GetControl(L"IDC_RECIPIENT_EXPANDABLEEDITAREA");
+       __pExpandEditArea->SetColor(EDIT_STATUS_PRESSED, __pExpandEditArea->GetColor(EDIT_STATUS_NORMAL));
+       String titleText;
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_TO", titleText);
+       titleText.Append(IDS_COLON);
+       __pExpandEditArea->SetTitleText(titleText);
+       __pExpandEditArea->SetTextColor(EDIT_TEXT_COLOR_HIGHLIGHTED, __pExpandEditArea->GetTextColor(EDIT_TEXT_COLOR_NORMAL));
+       __pExpandEditArea->SetAutoShrinkModeEnabled(true);
+       __pExpandEditArea->AddExpandableEditAreaEventListener(*this);
+       __pExpandEditArea->AddTextEventListener(*this);
+       __pExpandEditArea->AddFocusEventListener(*this);
+       __pExpandEditArea->AddKeyEventListener(*this);
+       __pExpandEditArea->SetTokenFilter(this);
+       __pContactCountLabel = (Label*) GetControl(L"IDC_RECIPINT_COUNT_LABEL");
+       __pContactCountLabel->SetMargin(0,0);
+       __pContactCountLabel->SetShowState(false);
+       // Recipient list
+       __pRecipientAddrList = new (std::nothrow) ArrayList();
+       __pRecipientAddrList->Construct();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+void
+RecipientPanel::SetSizeChangeEventListener(const ISizeChangeEventListener& listener)
+{
+       AppLogDebug("ENTER");
+       __pSizeChangeListener = const_cast<ISizeChangeEventListener*>(&listener);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+RecipientPanel::SetKeypadEventListener(IKeypadEventListener& listener)
+{
+       AppLogDebug("ENTER");
+       __pExpandEditArea->AddKeypadEventListener(listener);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+int
+RecipientPanel::GetHeight(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __pExpandEditArea->GetHeight() + MARGIN_28PX * 2;
+}
+
+result
+RecipientPanel::SetFocus(void)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __pExpandEditArea->SetFocus();
+}
+
+void
+RecipientPanel::EnableContactSearch(bool value)
+{
+       AppLogDebug("ENTER");
+
+       if (value)
+       {
+               if (!__pContactSearchList)
+               {
+                       __pContactSearchList = new (std::nothrow) ListView();
+                       __pContactSearchList->Construct(Rectangle(MARGIN_15PX, GetHeight(), GetWidth()-MARGIN_15PX*2,
+                                                                                                         H_LIST_ITEM_128PX), true, SCROLL_STYLE_FADE_OUT);
+                       __pContactSearchList->SetItemProvider(*this);
+                       __pContactSearchList->AddListViewItemEventListener(*this);
+                       __pContactSearchList->SetShowState(false);
+                       __pContactSearchList->SetBackgroundColor(Color::GetColor(COLOR_ID_WHITE));
+                       __pContactSearchList->SetItemDividerColor(Color::GetColor(COLOR_ID_GREY));
+                       GetParent()->AddControl(*__pContactSearchList);
+                       GetParent()->SetControlAlwaysOnTop(*__pContactSearchList, true);
+               }
+       }
+       else
+       {
+               GetParent()->RemoveControl(*__pContactSearchList);
+               __pContactSearchList = null;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+int
+RecipientPanel::GetRecipientCount(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __pRecipientAddrList->GetCount();
+}
+
+void
+RecipientPanel::AddRecipient(const String& recipientNumber)
+{
+       AppLogDebug("ENTER");
+       if (recipientNumber.GetLength() > 0)
+       {
+               if (__pExpandEditArea->GetTokenCount() >= MAX_COUNT)
+               {
+                       String messageText;
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED", messageText);
+                       messageText.Format(messageText.GetLength() * 2, messageText.GetPointer(), MAX_COUNT);
+                       ShowMessage(messageText);
+               }
+               else
+               {
+                       AddressInfo* pRecipient = new (std::nothrow) AddressInfo();
+                       pRecipient->phoneNumber = recipientNumber;
+                       pRecipient->displayName = recipientNumber;
+                       pRecipient->needToValidate = true;
+                       __pRecipientAddrList->Add(pRecipient);
+                       __pExpandEditArea->AppendToken(recipientNumber);
+               }
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+RecipientPanel::SetRecipientList(const IList* pRecipientList)
+{
+       AppLogDebug("ENTER");
+
+       if (pRecipientList)
+       {
+               for (int count = 0; count < pRecipientList->GetCount(); count++)
+               {
+                       if (__pExpandEditArea->GetTokenCount() >= MAX_COUNT)
+                       {
+                               String messageText;
+                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED", messageText);
+                               messageText.Format(messageText.GetLength() * 2, messageText.GetPointer(), MAX_COUNT);
+                               ShowMessage(messageText);
+                               break;
+                       }
+                       else
+                       {
+                               AddressInfo* pAddrInfo = static_cast<AddressInfo*>((Object*) pRecipientList->GetAt(count));
+                               AddressInfo* pNewAddrInfo = new (std::nothrow) AddressInfo();
+                               pNewAddrInfo->displayName = pAddrInfo->displayName;
+                               pNewAddrInfo->phoneNumber = pAddrInfo->phoneNumber;
+                               pNewAddrInfo->needToValidate = pAddrInfo->needToValidate;
+                               __pRecipientAddrList->Add(pNewAddrInfo);
+                               __pExpandEditArea->AppendToken(pAddrInfo->displayName);
+                       }
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+ArrayList*
+RecipientPanel::GeRecipientNumberListN(void) const
+{
+       AppLogDebug("ENTER");
+       ArrayList* pRecipientNumberList = null;
+       if (__pRecipientAddrList->GetCount() > 0)
+       {
+               pRecipientNumberList = new (std::nothrow) ArrayList();
+               pRecipientNumberList->Construct();
+               for (int i = 0; i < __pRecipientAddrList->GetCount(); i++)
+               {
+                       AddressInfo* phoneNumber = static_cast<AddressInfo*>(__pRecipientAddrList->GetAt(i));
+                       pRecipientNumberList->Add((new (std::nothrow) String(phoneNumber->phoneNumber)));
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pRecipientNumberList;
+}
+
+void
+RecipientPanel::SetTextSize(int textSize)
+{
+       AppLogDebug("ENTER");
+       __pExpandEditArea->SetTextSize(textSize);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+RecipientPanel::ShowKeypad(void)
+{
+       AppLogDebug("ENTER");
+       if (__pExpandEditArea)
+       {
+               __pExpandEditArea->ShowKeypad();
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+void
+RecipientPanel::HideKeypad(void)
+{
+       AppLogDebug("ENTER");
+       if (__pExpandEditArea)
+       {
+               __pExpandEditArea->HideKeypad();
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+result
+RecipientPanel::OnDraw(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       Canvas* pCanvas = GetCanvasN();
+       Rectangle rect = GetBounds();
+       pCanvas->FillRectangle(Color::GetColor(COLOR_ID_WHITE),
+                                                  Rectangle(0, 0, rect.width, rect.height));
+       pCanvas->SetForegroundColor(COLOR_PANEL_BORDER);
+       pCanvas->DrawLine(Point(0, rect.height - 1), Point(rect.width - 1, rect.height - 1));
+       delete pCanvas;
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+
+}
+
+void
+RecipientPanel::OnActionPerformed(const Control& source, int actionId)
+{
+       AppLogDebug("ENTER");
+
+       // If entered text not yet converted to token, then check it can it be converted to token.
+       if (CheckRecipentForToken())
+       {
+               switch (actionId)
+               {
+               case IDA_CONTACTS:
+                       LaunchContactApp();
+                       break;
+               }
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+RecipientPanel::LaunchContactApp(void)
+{
+       AppLogDebug("ENTER");
+
+       AppControl* pAppContl = AppManager::FindAppControlN(IDS_APPCONTROL_PROVIDER_CONTACT,
+                                                                                                               IDS_APPCONTROL_OPERATION_PICK);
+       if (pAppContl && __oneTimeFlag)
+       {
+               HashMap* pHashMap = new (std::nothrow) HashMap();
+               pHashMap->Construct();
+               String* pModeKey = new (std::nothrow) String(IDS_SELECTION_MODE_KEY);
+               String* pModeVal = new (std::nothrow) String(IDS_SELECTION_MODE_VALUE);
+               pHashMap->Add(pModeKey, pModeVal);
+               String* pTypeKey = new (std::nothrow) String(IDS_RET_TYPE_KEY);
+               String* pTypeVal = new (std::nothrow) String(IDS_CONTACT_ID);
+               pHashMap->Add(pTypeKey, pTypeVal);
+               pAppContl->Start(null, null, pHashMap, this);
+               pHashMap->RemoveAll(true);
+               delete pHashMap;
+               delete pAppContl;
+               __oneTimeFlag = false;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+RecipientPanel::OnAppControlCompleteResponseReceived(const AppId& appId, const String& operationId,
+                                                                                                        AppCtrlResult appControlResult, const IMap* pResultMap)
+{
+       AppLogDebug("ENTER");
+       String* pPickResult = null;
+       String operation(IDS_APPCONTROL_OPERATION_PICK);
+
+       if (operationId.Equals(operation)) //
+       {
+               if (pResultMap && (appControlResult == APP_CTRL_RESULT_SUCCEEDED))  //
+               {
+                       String* returnTypeValue = (String*) pResultMap->GetValue(String(L"returnType"));
+                       AppLogDebug("count : %d", pResultMap->GetCount());
+                       if (returnTypeValue->Equals(String(IDS_CONTACT_ID)))
+                       {
+                               if (!__pAddressBook)
+                               {
+                                       __pAddressBook = AddressbookManager::GetInstance()->GetAddressbookN();
+                                       if (__pAddressBook)
+                                       {
+                                               __pAddressBook->SetEventListener(null);
+                                       }
+                               }
+                               IList* pRecipientList = GetSelectContactListN(pResultMap);
+                               if (pRecipientList)
+                               {
+                                       bool isMaximumrecipientreached = false;
+                                       bool isInvalidPhoneNumber = false;
+                                       String invalidRecipient(IDS_BLANK);
+                                       for (int index = 0; index < pRecipientList->GetCount(); index++)
+                                       {
+                                               pPickResult = (String*) pRecipientList->GetAt(index);
+                                               int contactId = INVALID_RECORD_ID;
+                                               if (!pPickResult->IsEmpty())
+                                               {
+                                                       if (__pExpandEditArea->GetTokenCount() >= MAX_COUNT)
+                                                       {
+                                                               isMaximumrecipientreached = true;
+                                                               String messageText;
+                                                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED", messageText);
+                                                               messageText.Format(messageText.GetLength() * 2, messageText.GetPointer(), MAX_COUNT);
+                                                               ShowMessage(messageText);
+                                                               break;
+                                                       }
+                                                       // Convert String value to int type value
+                                                       Integer::Parse(*pPickResult, contactId);
+                                                       RecordId recordId = contactId;
+                                                       Contact* pContact = null;
+                                                       if (__pAddressBook)
+                                                       {
+                                                               pContact = __pAddressBook->GetContactN(recordId);
+                                                       }
+                                                       if (pContact)
+                                                       {
+                                                               IList* pPhoneNumberList = pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
+                                                               if (pPhoneNumberList && pPhoneNumberList->GetCount() > 0)
+                                                               {
+                                                                       AddressInfo* pRecipent = new (std::nothrow) AddressInfo();
+                                                                       pRecipent->phoneNumber.Append(((PhoneNumber*) pPhoneNumberList->GetAt(0))->GetPhoneNumber());
+                                                                       if (!IsNumberExistRecipientList(pRecipent->phoneNumber))
+                                                                       {
+                                                                               if (CommonUtil::IsValidPhoneNumber(pRecipent->phoneNumber))
+                                                                               {
+                                                                                       String firstName;
+                                                                                       pContact->GetValue(CONTACT_PROPERTY_ID_FIRST_NAME, firstName);
+                                                                                       String lastName;
+                                                                                       pContact->GetValue(CONTACT_PROPERTY_ID_LAST_NAME, lastName);
+                                                                                       String contactName;
+                                                                                       contactName.Format(50, L"%S %S\n", firstName.GetPointer(), lastName.GetPointer());
+                                                                                       pRecipent->displayName.Append(contactName);
+                                                                                       pRecipent->needToValidate = false;
+                                                                                       __pRecipientAddrList->Add(pRecipent);
+                                                                                       if (firstName.GetLength() > 0 || lastName.GetLength() > 0)
+                                                                                       {
+                                                                                               __pExpandEditArea->AppendToken(contactName);
+                                                                                       }
+                                                                                       else
+                                                                                       {
+                                                                                               __pExpandEditArea->SetTokenFilter(null);
+                                                                                               __pExpandEditArea->AppendToken(((PhoneNumber*) pPhoneNumberList->GetAt(0))->GetPhoneNumber());
+                                                                                               __pExpandEditArea->SetTokenFilter(this);
+                                                                                       }
+                                                                                       __pExpandEditArea->Invalidate(true);
+                                                                                       pRecipent = null; // Transfered ownership
+                                                                               }
+                                                                               else
+                                                                               {
+                                                                                       isInvalidPhoneNumber = true;
+                                                                                       if (invalidRecipient.GetLength())
+                                                                                       {
+                                                                                               invalidRecipient.Append(IDS_COMMA_SPACE);
+                                                                                       }
+                                                                                       invalidRecipient.Append(IDS_BLANK_SPACE);
+                                                                                       invalidRecipient.Append(pRecipent->phoneNumber);
+                                                                               }
+                                                                       }
+                                                                       if(pRecipent)
+                                                                       {
+                                                                               delete pRecipent;
+                                                                       }
+                                                                       pPhoneNumberList->RemoveAll(true);
+                                                               }
+                                                               delete pPhoneNumberList;
+                                                               delete pContact;
+                                                       }
+                                               }
+                                       }
+                                       if (!isMaximumrecipientreached && isInvalidPhoneNumber)
+                                       {
+                                               String messageText;
+                                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_INVALID_RECIPIENTS", messageText);
+                                               messageText.Append(IDS_COLON);
+                                               messageText.Append(IDS_BLANK_SPACE);
+                                               messageText.Append(invalidRecipient);
+                                               ShowMessage(messageText);
+                                       }
+                                       pRecipientList->RemoveAll(true);
+                                       delete pRecipientList;
+                                       // Recipients added here, check send button need to be enabled or not.
+                                       GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON,null);
+                               }
+                       }
+               }
+               __pExpandEditArea->SetFocus();
+       }
+       Invalidate(true);
+       __oneTimeFlag = true;
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+IList*
+RecipientPanel::GetSelectContactListN(const IMap* pResultMap)
+{
+       AppLogDebug("ENTER");
+       ArrayList* pRecipientList = null;
+       String* pContactIds = (String*) pResultMap->GetValue(String(IDS_VALUE));
+       if (pContactIds)
+       {
+               pRecipientList = new (std::nothrow) ArrayList();
+               pRecipientList->Construct();
+               String delim(L";");
+               StringTokenizer strToken(*pContactIds, delim);
+               int tokenCount = strToken.GetTokenCount();
+               if (tokenCount > 0)
+               {
+                       for (int index = 0; index < tokenCount; index++)
+                       {
+                               String* pContactId = new (std::nothrow) String();
+                               strToken.GetNextToken(*pContactId);
+                               if (pRecipientList->Add(pContactId) != E_SUCCESS)
+                               {
+                                       delete pContactId;
+                               }
+                       }
+               }
+               else
+               {
+                       String* pContactId = new (std::nothrow) String();
+                       pContactId->Append(*pContactIds);
+                       if (pRecipientList->Add(pContactId) != E_SUCCESS)
+                       {
+                               delete pContactId;
+                       }
+               }
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pRecipientList;
+}
+
+void
+RecipientPanel::OnExpandableEditAreaLineAdded(ExpandableEditArea& source,
+                                                                                         int newLineCount)
+{
+       AppLogDebug("ENTER");
+
+       Dimension curSize = GetSize();
+       curSize.height = source.GetHeight() + MARGIN_28PX * 2;
+       SetSize(curSize);
+       __pSizeChangeListener->OnSizeIncrease(*this);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+RecipientPanel::OnExpandableEditAreaLineRemoved(ExpandableEditArea& source,
+                                                                                               int newLineCount)
+{
+       AppLogDebug("ENTER");
+
+       Dimension curSize = GetSize();
+       curSize.height = source.GetHeight() + MARGIN_28PX * 2;
+       SetSize(curSize);
+       __pSizeChangeListener->OnSizeDecrease(*this);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+RecipientPanel::OnBoundsChanged(const Rectangle& oldRect, const Rectangle& newRect)
+{
+       AppLogDebug("ENTER");
+
+       if (__pExpandEditArea)
+       {
+               __pExpandEditArea->SetSize(Dimension(__pExpandEditArea->GetWidth(),
+                                                                                        __pExpandEditArea->GetHeight()));
+       }
+       if (__pContactButton)
+       {
+               Point pos = __pContactButton->GetPosition();
+               pos.y += (newRect.height - oldRect.height);
+               __pContactButton->SetPosition(pos);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+// IListViewItemEventListener
+void
+RecipientPanel::OnListViewItemStateChanged(ListView& listView, int index,
+                                                                                  int elementId, ListItemStatus status)
+{
+       AppLogDebug("ENTER");
+       // Hide list box.
+       listView.SetShowState(false);
+       if (__pExpandEditArea->GetTokenCount() >= MAX_COUNT)
+       {
+               String messageText;
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED", messageText);
+               messageText.Format(messageText.GetLength() * 2, messageText.GetPointer(), MAX_COUNT);
+               ShowMessage(messageText);
+       }
+       else
+       {
+               MessagePresentationModel* pMsgPrModel = MessagePresentationModel::GetInstance();
+               if (pMsgPrModel)
+               {
+                       AddressInfo* pRecipent = new (std::nothrow) AddressInfo();
+                       pRecipent->displayName = pMsgPrModel->GetContactNameAt(index);
+                       pRecipent->phoneNumber = pMsgPrModel->GetContactNumberAt(index);
+                       if (!IsNumberExistRecipientList(pRecipent->phoneNumber))
+                       {
+                               pRecipent->needToValidate = false;
+                               __pRecipientAddrList->Add(pRecipent);
+                               __pExpandEditArea->AppendToken(pMsgPrModel->GetContactNameAt(index));
+                               __pExpandEditArea->Invalidate(true);
+                       }
+                       else
+                       {
+                               delete pRecipent;
+                       }
+               }
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+ListItemBase*
+RecipientPanel::CreateItem(int index, int itemWidth)
+{
+       AppLogDebug("ENTER");
+
+       ContactListItem* pItem = null;
+       MessagePresentationModel* pMsgPrModel = MessagePresentationModel::GetInstance();
+       if (pMsgPrModel)
+       {
+               String contactNumber(pMsgPrModel->GetContactNumberAt(index));
+               String contactName(pMsgPrModel->GetContactNameAt(index));
+               pItem = new (std::nothrow) ContactListItem(contactName, contactNumber, itemWidth, false);
+               pItem->CreateContactListItemLayout(__pExpandEditArea->GetText());
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pItem;
+}
+
+bool
+RecipientPanel::DeleteItem(int index, ListItemBase* pItem, int itemWidth)
+{
+       AppLogDebug("ENTER");
+
+       if (pItem)
+       {
+               delete pItem;
+               pItem = null;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return true;
+}
+
+int
+RecipientPanel::GetItemCount(void)
+{
+       AppLogDebug("ENTER");
+
+       int contactCount(0);
+       MessagePresentationModel* pMsgPrModel = MessagePresentationModel::GetInstance();
+       if (pMsgPrModel)
+       {
+               contactCount = pMsgPrModel->GetContactsCount();
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return contactCount;
+}
+
+// Form ITokenFilter
+bool
+RecipientPanel::ReplaceToken(const String& token, String& replacement)
+{
+       AppLogDebug("ENTER");
+       // Hide search list.
+       if (__pContactSearchList->GetShowState())
+       {
+               __pContactSearchList->SetShowState(false);
+               __pContactSearchList->SetSize(GetWidth()-MARGIN_15PX*2, 0);
+       }
+       // Check need to validate
+       if (IsNeedToValidate(token))
+       {
+               // If token exist, duplicate token.
+               if (IsTokenExist(token) || IsNumberExistRecipientList(token))
+               {
+                       __errorString = IDS_BLANK;
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_BODY_DUPLICATED_RECIPIENT", __errorString);
+                       __errorString.Append(token);
+                       //      ShowMessage(messageText);
+                       // Delete last Token, which will insert after this function call
+                       DeleteTokenAt(__pRecipientAddrList->GetCount());
+                       return true;
+               }
+               // Check recipient exist by contact number.
+               if ((!IsNumberExistRecipientList(token)) && (!IsRecipientExist(token)))
+               {
+                       // New token treat as number
+                       AddNumberToRecipientList(token);
+                       if (!CommonUtil::IsValidPhoneNumber(token))
+                       {
+                               __errorString = IDS_BLANK;
+                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_INVALID_RECIPIENTS", __errorString);
+                               __errorString.Append(IDS_COLON);
+                               __errorString.Append(token);
+                               //ShowMessage(messageText);
+                               // Delete last Token, which will insert after this function call
+                               DeleteTokenAt(__pRecipientAddrList->GetCount() - 1);
+                               return true;
+                       }
+               }
+               // If reach max count then need to delete last token.
+               if (__pRecipientAddrList->GetCount() > MAX_COUNT)
+               {
+                       String messageText;
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED", messageText);
+                       messageText.Format(messageText.GetLength() * 2, messageText.GetPointer(), MAX_COUNT);
+                       __errorString = messageText;
+                       //ShowMessage(messageText);
+                       DeleteTokenAt(MAX_COUNT);
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return true;
+}
+
+//From IFocusEventListener
+void
+RecipientPanel::OnFocusGained(const Control& source)
+{
+       AppLogDebug("ENTER");
+
+       GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON,null);
+       __pContactCountLabel->SetShowState(false);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+
+}
+
+void
+RecipientPanel::OnFocusLost(const Control& source)
+{
+       AppLogDebug("ENTER");
+
+       if (__validateOnFocusLost)
+       {
+               // If entered text not yet converted to token, then check it can it be converted to token.
+               CheckRecipentForToken();
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+bool
+RecipientPanel::CheckRecipentForToken(bool updateToken)
+{
+       AppLogDebug("ENTER");
+       __pExpandEditArea->SetTokenFilter(null);
+       // Hide search list.
+       if (__pContactSearchList->GetShowState())
+       {
+               __pContactSearchList->SetShowState(false);
+               __pContactSearchList->SetSize(GetWidth()- MARGIN_15PX*2, 0);
+       }
+       bool validRecipinet(true);
+       String messageText(IDS_BLANK);
+       String tokenText = __pExpandEditArea->GetText();
+       //Need to do this as editor inserted token automatically on focus lost.
+       // In this case invalid recipients popup shown on top of contact appcontrol.
+       __pExpandEditArea->Clear();
+       int selectIndex = __pExpandEditArea->GetSelectedTokenIndex();
+       if (selectIndex < 0)
+       {
+               if (tokenText.GetLength() > 0)
+               {
+                       if (__pExpandEditArea->GetTokenCount() >= MAX_COUNT)
+                       {
+                               // Reach max limit
+                               validRecipinet = false;
+                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED", messageText);
+                               messageText.Format(messageText.GetLength() * 2, messageText.GetPointer(), MAX_COUNT);
+                               RequestId requestId = REQUEST_MOVE_FOCUS_RECIPIENT;
+                               GetParent()->SendUserEvent(requestId, null);
+                       }
+                       else
+                       {
+                               // If token exist, duplicate token.
+                               if (IsTokenExist(tokenText) || IsNumberExistRecipientList(tokenText))
+                               {
+                                       validRecipinet = false;
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_BODY_DUPLICATED_RECIPIENT", messageText);
+                                       messageText.Append(IDS_COLON);
+                                       messageText.Append(tokenText);
+                                       RequestId requestId = REQUEST_MOVE_FOCUS_RECIPIENT;
+                                       GetParent()->SendUserEvent(requestId, null);
+                               }
+                               else if (!CommonUtil::IsValidPhoneNumber(tokenText))
+                               {
+                                       validRecipinet = false;
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_INVALID_RECIPIENTS", messageText);
+                                       messageText.Append(IDS_COLON);
+                                       messageText.Append(tokenText);
+                                       RequestId requestId = REQUEST_MOVE_FOCUS_RECIPIENT;
+                                       GetParent()->SendUserEvent(requestId, null);
+                               }
+                               else
+                               {
+                                       // New token treat as number
+                                       AddNumberToRecipientList(tokenText);
+                                       if (updateToken)
+                                       {
+                                               __pExpandEditArea->AppendToken(tokenText);
+                                               __pExpandEditArea->Invalidate(true);
+                                       }
+                                       validRecipinet = true;
+                               }
+                               if(__validateOnFocusLost && !messageText.IsEmpty())
+                               {
+                                       ShowMessage(messageText);
+                               }
+                       }
+               }
+       }
+       ShowRecipientCount();
+       if (__pContactSearchList)
+       {
+               __pContactSearchList->SetShowState(false);
+       }
+       __pExpandEditArea->SetTokenFilter(this);
+       RequestId requestId = REQUEST_UDATE_FOCUS;
+       GetParent()->SendUserEvent(requestId, null);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return validRecipinet;
+}
+
+bool
+RecipientPanel::IsTextForTokenExist(void) const
+{
+       return (!__pExpandEditArea->GetText().IsEmpty());
+}
+
+void
+RecipientPanel::ShowRecipientCount(void)
+{
+       AppLogDebug("ENTER");
+       int tokenNumber = __pExpandEditArea->GetTokenCount();
+       bool isAlpha = false;
+
+       if (__pExpandEditArea->GetTokenCount() > 0)
+       {
+               int tokenFisrtLineLength = 0;
+               int i = 0;
+               int numberContactsShown = 0;
+               String tokenCount;
+               tokenCount.Append(L"+");
+               while (i < tokenNumber)
+               {
+                       String tokenLength = __pExpandEditArea->GetTokenAt(i);
+                       tokenFisrtLineLength += tokenLength.GetLength();
+
+                       String alpha_pattern(L"([a-z]+)");
+                       RegularExpression alpha_regex;
+                       alpha_regex.Construct(alpha_pattern);
+                       isAlpha = alpha_regex.Match(tokenLength, false);
+
+                       if (isAlpha)
+                       {
+                               tokenFisrtLineLength = tokenFisrtLineLength - 2;
+                       }
+
+                       if (i < 4 && tokenFisrtLineLength <= MAX_LENGTH)
+                       {
+                               __pContactCountLabel->SetShowState(false);
+                               numberContactsShown++;
+                               i++;
+                       }
+                       else
+                       {
+                               if ((i == 0) || (i == 1 && tokenFisrtLineLength <= MAX_LENGTH + 3) || (i == 2 && tokenFisrtLineLength <= MAX_LENGTH + 1)
+                                       || (i == 3 && tokenFisrtLineLength <= MAX_LENGTH - 1)
+                                       || (i == 4 && tokenFisrtLineLength <= MAX_LENGTH - 2))
+                               {
+                                       numberContactsShown++;
+                                       i++;
+                               }
+                               else
+                               {
+                                       __pContactCountLabel->SetShowState(true);
+                                       __pContactCountLabel->Draw();
+                                       __pContactCountLabel->Show();
+                                       break;
+                               }
+                       }
+
+               }
+               tokenCount.Append(tokenNumber - numberContactsShown);
+               __pContactCountLabel->SetText(tokenCount);
+               __pContactCountLabel->RequestRedraw(true);
+       }
+       else
+       {
+               __pContactCountLabel->SetShowState(false);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+RecipientPanel::OnKeyPressed(const Control& source, KeyCode keyCode)
+{
+       AppLogDebug("ENTER");
+
+       switch (keyCode)
+       {
+
+       case KEY_BACKSPACE:
+       {
+               if (source.Equals(*__pExpandEditArea))
+               {
+                       RemoveRecipientFromList();
+               }
+       }
+       break;
+
+       default:
+               break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+RecipientPanel::OnKeyReleased(const Control& source, KeyCode keyCode)
+{
+       AppLogDebug("ENTER");
+
+       switch (keyCode)
+       {
+       case KEY_BACKSPACE:
+       {
+               if (source.Equals(*__pExpandEditArea))
+               {
+                       // In case of back key press, it s not calling editor text valu change
+                       // callback, So, it is handle here.
+                       OnTextValueChanged(source);
+               }
+       }
+       break;
+
+       default:
+               break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+//From ITextEventListener
+void
+RecipientPanel::OnTextValueChanged(const Control& source)
+{
+       AppLogDebug("ENTER");
+
+       GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON,null);
+
+       // In case try to edit existing token
+       int selectTokenIndex = __pExpandEditArea->GetSelectedTokenIndex();
+       String tokenText = __pExpandEditArea->GetText();
+       if (selectTokenIndex >= 0 && tokenText.GetLength())
+       {
+               if (IsNumberToken(selectTokenIndex) && CommonUtil::IsValidPhoneNumber(tokenText))
+               {
+                       // Valid phone number, if so update recipient list
+                       UpdateRecipientList(tokenText, selectTokenIndex);
+               }
+               else
+               {
+                       // Contact token, can't edit contact token name. OR not a vild phone number
+                       // Delete token as, its name not matching with contact
+                       DeleteRecipientAndToken(selectTokenIndex);
+               }
+               AppLogDebug("Selected token index= %d", selectTokenIndex);
+       }
+       else
+       {
+               // Token not yet created entered text. do normal operation
+               MessagePresentationModel* pMsgPrModel = MessagePresentationModel::GetInstance();
+               int searchCount(0);
+               if (pMsgPrModel)
+               {
+                       pMsgPrModel->SearchContact(__pExpandEditArea->GetText());
+                       searchCount = pMsgPrModel->GetContactsCount();
+               }
+               if (__pContactSearchList)
+               {
+                       if (searchCount > 0)
+                       {
+                               __pContactSearchList->SetShowState(true);
+                               int height(2 * H_LIST_ITEM_128PX);
+                               if (searchCount <= 2)
+                               {
+                                       height = searchCount * H_LIST_ITEM_128PX;
+                               }
+                               __pContactSearchList->SetPosition(MARGIN_15PX, GetHeight());
+                               __pContactSearchList->SetSize(GetWidth()- MARGIN_15PX*2, height);
+                       }
+                       else
+                       {
+                               __pContactSearchList->SetShowState(false);
+                               __pContactSearchList->SetSize(GetWidth()-MARGIN_15PX*2, 0);
+                       }
+                       __pContactSearchList->UpdateList();
+                       __pContactSearchList->Draw();
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+
+}
+
+bool
+RecipientPanel::IsEmptyRecipent(void)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       if(__pExpandEditArea->GetTokenCount() > 0 || __pExpandEditArea->GetTextLength() > 0)
+       {
+               return false;
+       }
+       else
+       {
+               return true;
+       }
+}
+
+
+void
+RecipientPanel::ShowMessage(const String& message)
+{
+       AppLogDebug("ENTER");
+       __pExpandEditArea->RemoveFocusEventListener(*this);
+       int modalResult;
+       MessageBox messageBox;
+       String msg(message);
+       if (message.GetLength() > 399)
+       {
+               msg.Remove(398, message.GetLength()-399);
+       }
+       messageBox.Construct(IDS_MESSAGES, msg, MSGBOX_STYLE_OK, 3000);
+       messageBox.ShowAndWait(modalResult);
+       //Wait for modalResult updated value.
+       __pExpandEditArea->AddFocusEventListener(*this);
+       __pExpandEditArea->Invalidate(true);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+RecipientPanel::RemoveRecipientFromList(void)
+{
+       AppLogDebug("ENTER");
+
+       if (__pExpandEditArea->GetTokenCount() > 0)
+       {
+               int selectedIndex = __pExpandEditArea->GetSelectedTokenIndex();
+               if (selectedIndex < 0 && __pExpandEditArea->GetTextLength() <= 0)
+               {
+                       // Turn on selected mode.
+                       __pExpandEditArea->SetTokenSelected(__pExpandEditArea->GetTokenCount() - 1, true);
+                       selectedIndex = __pExpandEditArea->GetSelectedTokenIndex();
+               }
+               // Syncup recipient list , because selected token will be removed.
+               if (selectedIndex >= 0)
+               {
+                       __pRecipientAddrList->RemoveAt(selectedIndex, true);
+               }
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+RecipientPanel::AddNumberToRecipientList(const String& contactNumber)
+{
+       AppLogDebug("ENTER");
+       AddressInfo* recipent = new (std::nothrow) AddressInfo();
+       recipent->phoneNumber.Append(contactNumber);
+       recipent->displayName.Append(contactNumber);
+       __pRecipientAddrList->Add(recipent);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+RecipientPanel::DeleteTokenAt(int tokenIndex)
+{
+       AppLogDebug("ENTER");
+       if (__pTokenDeleteThread)
+       {
+               __pTokenDeleteThread->Join();
+               delete __pTokenDeleteThread;
+               __pTokenDeleteThread = null;
+       }
+       __deleteTokenIndex = tokenIndex;
+       __pTokenDeleteThread = new (std::nothrow) Thread();
+       __pTokenDeleteThread->Construct(*this);
+       __pTokenDeleteThread->Start();
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+Object*
+RecipientPanel::Run(void)
+{
+       AppLogDebug("ENTER");
+       RequestId requestId = REQUEST_SHOW_MESSAGE;
+       SendUserEvent(requestId, null);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return null;
+}
+
+bool
+RecipientPanel::IsRecipientExist(const String& tokenText) const
+{
+       AppLogDebug("ENTER");
+       int recipientCount = __pRecipientAddrList->GetCount();
+       for (int index = 0; index < recipientCount; index++)
+       {
+               AddressInfo* pRecipientAddress = static_cast<AddressInfo*>(__pRecipientAddrList->GetAt(index));
+               if (pRecipientAddress->displayName.CompareTo(tokenText) == 0)
+               {
+                       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+                       return true;
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return false;
+}
+
+bool
+RecipientPanel::IsNumberExistRecipientList(const String& conatctNumber) const
+{
+       AppLogDebug("ENTER");
+       int recipientCount = __pRecipientAddrList->GetCount();
+       for (int index = 0; index < recipientCount; index++)
+       {
+               AddressInfo* pRecipientAddress = static_cast<AddressInfo*>(__pRecipientAddrList->GetAt(index));
+               if (pRecipientAddress->phoneNumber.CompareTo(conatctNumber) == 0)
+               {
+                       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+                       return true;
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return false;
+}
+
+bool
+RecipientPanel::IsTokenExist(const String& tokenName) const
+{
+       AppLogDebug("ENTER");
+       bool tokenExist(false);
+       int tokenCount = __pExpandEditArea->GetTokenCount();
+       for (int index = 0; index < tokenCount; index++)
+       {
+               if (__pExpandEditArea->GetTokenAt(index).CompareTo(tokenName) == 0)
+               {
+                       tokenExist = true;
+                       break;
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return tokenExist;
+}
+
+bool
+RecipientPanel::IsNumberToken(int tokenIndex) const
+{
+       AppLogDebug("ENTER");
+
+       if (__pRecipientAddrList->GetCount() > tokenIndex)
+       {
+               AddressInfo* pRecipientAddress = static_cast<AddressInfo*>(__pRecipientAddrList->GetAt(tokenIndex));
+               if ( pRecipientAddress && pRecipientAddress->phoneNumber.CompareTo(pRecipientAddress->displayName) == 0)
+               {
+                       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+                       return true;
+               }
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return false;
+}
+
+void
+RecipientPanel::DeleteRecipientAndToken(int index)
+{
+       AppLogDebug("ENTER");
+       // This gets called in case of when try to add new token only.
+       int tokenCount = __pExpandEditArea->GetTokenCount();
+       if (index >= 0 && index < tokenCount)
+       {
+               // For duplicate entry
+               if (tokenCount == __pRecipientAddrList->GetCount())
+               {
+                       __pRecipientAddrList->RemoveAt(index);
+               }
+               __pExpandEditArea->RemoveTokenAt(index);
+               //ShowRecipientCount();
+               __pExpandEditArea->Invalidate(true);
+       }
+       __pExpandEditArea->SetFocus();
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+RecipientPanel::UpdateRecipientList(const String& phoneNumber, int recipientIndex)
+{
+       AppLogDebug("ENTER");
+       AddressInfo* pRecipientAddress = static_cast<AddressInfo*>(__pRecipientAddrList->GetAt(recipientIndex));
+       if (pRecipientAddress)
+       {
+               pRecipientAddress->displayName = phoneNumber;
+               pRecipientAddress->phoneNumber = phoneNumber;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+bool
+RecipientPanel::IsNeedToValidate(const String& tokenText)
+{
+       AppLogDebug("ENTER");
+       int recipientCount = __pRecipientAddrList->GetCount();
+       for (int index = 0; index < recipientCount; index++)
+       {
+               AddressInfo* pRecipientAddress = static_cast<AddressInfo*>(__pRecipientAddrList->GetAt(index));
+               if (pRecipientAddress->displayName.CompareTo(tokenText) == 0)
+               {
+                       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+                       return pRecipientAddress->needToValidate;
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return true;
+
+}
+
+void
+RecipientPanel::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
+{
+       switch (requestId)
+       {
+       case REQUEST_SHOW_MESSAGE:
+       {
+               ShowMessage(__errorString);
+               DeleteRecipientAndToken(__deleteTokenIndex);
+               __deleteTokenIndex = -1;
+               __pExpandEditArea->SetFocus();
+       }
+       break;
+
+       case REQUEST_SET_FOCUS_RECIPIENT:
+       {
+               __pExpandEditArea->SetFocus();
+       }
+       break;
+       }
+
+}
diff --git a/src/MsgResendDeletePopup.cpp b/src/MsgResendDeletePopup.cpp
new file mode 100644 (file)
index 0000000..ad6e464
--- /dev/null
@@ -0,0 +1,244 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <FApp.h>\r
+#include <FUiCtrlCustomItem.h>\r
+#include <FUiCtrlListView.h>\r
+\r
+#include "MsgContactUtility.h"\r
+#include "MsgConversationData.h"\r
+#include "MsgIPopupEventListener.h"\r
+#include "MsgMessagePresentationModel.h"\r
+#include "MsgResendDeletePopup.h"\r
+#include "MsgSmsManager.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Ui::Controls;\r
+\r
+MsgResendDeletePopup::MsgResendDeletePopup(ConversationData* pConvData, IPopupEventListener& listener)\r
+       : __pConvData(pConvData)\r
+       , __pCancelButton(null)\r
+       , __popupListener(listener)\r
+{\r
+}\r
+\r
+MsgResendDeletePopup::~MsgResendDeletePopup(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pConvData)\r
+       {\r
+               delete __pConvData;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+MsgResendDeletePopup::Construct(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_FAILURE;\r
+       if (!__pConvData)\r
+       {\r
+               return r;\r
+       }\r
+       r = Popup::Construct(L"IDL_MSG_RESEND_DELETE_POPUP");\r
+       if (r == E_SUCCESS)\r
+       {\r
+               String strText;\r
+               Button* __pCancelButton = static_cast<Button*>(GetControl(L"IDC_MSG_CANCEL_BUTTON"));\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_CANCEL", strText);\r
+               __pCancelButton->SetText(strText);\r
+               __pCancelButton->SetActionId(IDA_BUTTON_MESSAGE_RESEND_DELETE_POPUP);\r
+               __pCancelButton->AddActionEventListener(*this);\r
+\r
+               ListView* __pList = static_cast<ListView*>(GetControl(L"IDC_MSG_RESEND_DELETE_LISTVIEW"));\r
+               __pList->AddListViewItemEventListener(*this);\r
+               __pList->SetItemProvider(*this);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+\r
+}\r
+\r
+void\r
+MsgResendDeletePopup::OnActionPerformed(const Control& source, int actionId)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       switch (actionId)\r
+       {\r
+       case IDA_BUTTON_MESSAGE_RESEND_DELETE_POPUP:\r
+       {\r
+               Popup::SetShowState(false);\r
+               __popupListener.OnPopupClose(this);\r
+               break;\r
+       }\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+MsgResendDeletePopup::OnUserEventReceivedN(RequestId requestId, IList* pArgs)\r
+{\r
+        switch(requestId)\r
+        {\r
+        case REQUEST_CLOSE_POPUP:\r
+                       __popupListener.OnPopupClose(this);\r
+                break;\r
+        }\r
+}\r
+\r
+void\r
+MsgResendDeletePopup::OnListViewItemStateChanged(ListView& listView, int index, int elementId,\r
+                                                                                                ListItemStatus status)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       Popup::SetShowState(false);\r
+       MessagePresentationModel* pMsgPrModel = MessagePresentationModel::GetInstance();\r
+       if ((status == LIST_ITEM_STATUS_SELECTED) && pMsgPrModel)\r
+       {\r
+               switch (index)\r
+               {\r
+               case 0:\r
+               {\r
+                       pMsgPrModel->ReSendMessage(__pConvData->GetEntryId(), __pConvData->IsMms());\r
+                       // Send Destroy popup event\r
+                       SendUserEvent(REQUEST_CLOSE_POPUP, null);\r
+               }\r
+               break;\r
+\r
+               case 1:\r
+               {\r
+                       // Pop destroy will once deletion is done\r
+                       pMsgPrModel->Delete(__pConvData->GetEntryId(), *this, REQUEST_DELETE_MESSAGE);\r
+               }\r
+               break;\r
+\r
+               default:\r
+               {\r
+                       // Send Destroy popup event\r
+                       SendUserEvent(REQUEST_CLOSE_POPUP, null);\r
+               }\r
+               break;\r
+               }\r
+       }\r
+\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+MsgResendDeletePopup::OnListViewItemSwept(ListView& listView, int index, SweepDirection direction)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+MsgResendDeletePopup::OnListViewContextItemStateChanged(ListView& listView, int index, int elementId,\r
+                                                                                                               ListContextItemStatus state)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+MsgResendDeletePopup::OnListViewItemLongPressed(ListView& listView, int index, int elementId,\r
+                                                                                               bool& invokeListViewItemCallback)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+int\r
+MsgResendDeletePopup::GetItemCount(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return 2;\r
+}\r
+\r
+ListItemBase*\r
+MsgResendDeletePopup::CreateItem(int index, int itemWidth)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       String strText;\r
+       ListAnnexStyle style = LIST_ANNEX_STYLE_NORMAL;\r
+       CustomItem* pItem = new (std::nothrow) CustomItem();\r
+       pItem->Construct(Dimension(itemWidth, H_LIST_ITEM_112PX), style);\r
+       switch (index)\r
+       {\r
+       case 0:\r
+       {\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_SK_RESEND", strText);\r
+               pItem->AddElement(Rectangle(MARGIN_16PX, 0, itemWidth, H_LIST_ITEM_112PX), IDC_RESEND_LIST, strText);\r
+       }\r
+       break;\r
+\r
+       case 1:\r
+       {\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_DELETE", strText);\r
+               pItem->AddElement(Rectangle(MARGIN_16PX, 0, itemWidth, H_LIST_ITEM_112PX), IDC_DELETE_LIST, strText);\r
+       }\r
+       break;\r
+\r
+       default:\r
+               break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pItem;\r
+}\r
+\r
+bool\r
+MsgResendDeletePopup::DeleteItem(int index, ListItemBase* pItem, int itemWidth)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (pItem)\r
+       {\r
+               delete pItem;\r
+               pItem = null;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return true;\r
+}\r
+\r
+void\r
+MsgResendDeletePopup::OnDeleteComplete(int errCode, Object* pThreadObject)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       __popupListener.OnPopupClose(this);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
diff --git a/src/MsgSettingPresentationModel.cpp b/src/MsgSettingPresentationModel.cpp
new file mode 100644 (file)
index 0000000..333d759
--- /dev/null
@@ -0,0 +1,709 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <cstdlib>
+#include <msg.h>
+#include <msg_storage.h>
+#include <msg_storage_types.h>
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FBaseErrorDefine.h>
+
+#include "MsgCbReceiveSettings.h"
+#include "MsgCommonUtil.h"
+#include "MsgFontsettings.h"
+#include "MsgIDeleteEventListener.h"
+#include "MsgMmsReceiveSettings.h"
+#include "MsgMmsSendSettings.h"
+#include "MsgSettingPresentationModel.h"
+#include "MsgSmscCenterList.h"
+#include "MsgSmsSendSettings.h"
+#include "MsgSpamFilterList.h"
+#include "MsgTypes.h"
+
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Runtime;
+using namespace Tizen::Ui;
+
+SettingPresentationModel* SettingPresentationModel::__pInstance = null;
+
+SettingPresentationModel*
+SettingPresentationModel::GetInstance(void)
+{
+       AppLogDebug("ENTER");
+       if (__pInstance == null)
+       {
+               __pInstance = new (std::nothrow) SettingPresentationModel();
+               if (E_SUCCESS != __pInstance->Construct())
+               {
+                       delete __pInstance;
+                       __pInstance = null;
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __pInstance;
+}
+
+SettingPresentationModel::SettingPresentationModel(void)
+       : __pMsgHandle(null)
+       , __pMmsRecvSettings(null)
+       , __pMmsSendSettings(null)
+       , __pSmscCentersList(null)
+       , __pSmsSendSettings(null)
+       , __pSpamFilterList(null)
+       , __pCbSettings(null)
+       , __pFontSettings(null)
+       , __pDeleteFilterThread(null)
+       , __pDeleteFilterIndexList(null)
+{
+       //Empty implementation
+}
+
+SettingPresentationModel::~SettingPresentationModel(void)
+{
+       AppLogDebug("ENTER");
+
+       if (__pDeleteFilterThread)
+       {
+               __pDeleteFilterThread->Join();
+               delete __pDeleteFilterThread;
+       }
+
+       if (__pDeleteFilterIndexList)
+       {
+               __pDeleteFilterIndexList->RemoveAll();
+               delete __pDeleteFilterIndexList;
+       }
+
+       if (__pSpamFilterList)
+       {
+               delete __pSpamFilterList;
+       }
+       if (__pSmsSendSettings)
+       {
+               delete __pSmsSendSettings;
+       }
+       if (__pMmsSendSettings)
+       {
+               delete __pMmsSendSettings;
+       }
+       if (__pSmscCentersList)
+       {
+               delete __pSmscCentersList;
+       }
+       if (__pMmsRecvSettings)
+       {
+               delete __pMmsRecvSettings;
+       }
+       if (__pMsgHandle)
+       {
+               // Close open handle with message service
+               msg_close_msg_handle(&__pMsgHandle);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+result
+SettingPresentationModel::Construct(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       msg_error_t err = MSG_SUCCESS;
+       // Open session with message service.
+       err = msg_open_msg_handle(&__pMsgHandle);
+       if (err != MSG_SUCCESS)
+       {
+               AppLogDebug("msg_open_msg_handle err = %d", (int) err);
+               result r = E_FAILURE;
+               return r;
+       }
+       // On filter operation if it is disabled
+       bool filterFlag(false);
+       err = msg_get_filter_operation(__pMsgHandle, &filterFlag);
+       AppLogDebug("msg_get_filter_operation err = %d", (int) err);
+       if (!filterFlag)
+       {
+               err = msg_set_filter_operation(__pMsgHandle, true);
+               AppLogDebug("msg_set_filter_operation err = %d", (int) err);
+       }
+       __pFontSettings = new (std::nothrow) FontSettings();
+       __pFontSettings->Construct();
+       // Update spam filter.
+       RefreshSpamFilterList();
+
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(r));
+       return r;
+}
+
+void
+SettingPresentationModel::CreateInstance(void)
+{
+       AppLogDebug("ENTER");
+       __pInstance = new (std::nothrow) SettingPresentationModel();
+       if (E_SUCCESS != __pInstance->Construct())
+       {
+               delete __pInstance;
+               __pInstance = null;
+               return;
+       }
+       // To destroy singletone object application exit.
+       std::atexit(DestroyInstance);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+SettingPresentationModel::DestroyInstance(void)
+{
+       AppLogDebug("ENTER");
+       delete __pInstance;
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+SmscCenterList*
+SettingPresentationModel::GetSMSCList(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       if (__pSmscCentersList == null)
+       {
+               msg_struct_t pSmscInfo = msg_create_struct(MSG_STRUCT_SETTING_SMSC_OPT);
+               msg_error_t err = msg_get_smsc_opt(__pMsgHandle, pSmscInfo);
+               if (err == MSG_SUCCESS)
+               {
+                       __pSmscCentersList = new (std::nothrow) SmscCenterList(pSmscInfo);
+                       __pSmscCentersList->Construct();
+               }
+               else
+               {
+                       r = E_FAILURE;
+                       msg_release_struct(&pSmscInfo);
+               }
+               AppLogDebug("msg_get_smsc_opt err [%d]", (int) err);
+       }
+
+
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(r));
+       return __pSmscCentersList;
+}
+
+void
+SettingPresentationModel::UpdateSmscCenter(void)
+{
+       AppLogDebug("ENTER");
+
+       if (__pSmscCentersList)
+       {
+               msg_error_t err = msg_set_smsc_opt(__pMsgHandle, __pSmscCentersList->GetSmscOpt());
+               AppLogDebug("msg_set_smsc_opt = [%d]", (int) err);
+       }
+
+       AppLogDebug("EXIT");
+       return;
+}
+
+SmsSendSettings*
+SettingPresentationModel::GetSmsSendSetting(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       if (__pSmsSendSettings == null)
+       {
+               msg_struct_t pSmsSendOpt = msg_create_struct(MSG_STRUCT_SETTING_SMS_SEND_OPT);
+               if (msg_get_sms_send_opt(__pMsgHandle, pSmsSendOpt) == MSG_SUCCESS)
+               {
+                       // Transfer ownership of pSmsSendOpt
+                       __pSmsSendSettings = new (std::nothrow) SmsSendSettings(pSmsSendOpt);
+               }
+               else
+               {
+                       r = E_FAILURE;
+                       msg_release_struct(&pSmsSendOpt);
+               }
+       }
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(r));
+       return __pSmsSendSettings;
+}
+
+void
+SettingPresentationModel::SaveSmsSendSetting(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       if (__pSmsSendSettings)
+       {
+               msg_error_t err = msg_set_sms_send_opt(__pMsgHandle, __pSmsSendSettings->GetSmsSendOpt());
+               if (err != MSG_SUCCESS)
+               {
+                       r = E_FAILURE;
+               }
+               AppLogDebug("msg_set_sms_send_opt = [%d]", (int) err);
+       }
+       else
+       {
+               r = E_FAILURE;
+               AppLogDebug("SMS send settings not yet intialized, __pSmsSendSettings == NULL");
+       }
+
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(r));
+       return;
+}
+
+MmsReceiveSettings*
+SettingPresentationModel::GetMmsReceiveSettings(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       if (__pMmsRecvSettings == null)
+       {
+               msg_struct_t pMmsRecvOpt = msg_create_struct(MSG_STRUCT_SETTING_MMS_RECV_OPT);
+               if (msg_get_mms_recv_opt(__pMsgHandle, pMmsRecvOpt) == MSG_SUCCESS)
+               {
+                       // Transfer ownership of pMmsRecvOpt
+                       __pMmsRecvSettings = new (std::nothrow) MmsReceiveSettings(pMmsRecvOpt);
+               }
+               else
+               {
+                       r = E_FAILURE;
+                       msg_release_struct(&pMmsRecvOpt);
+               }
+       }
+
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(r));
+       return __pMmsRecvSettings;
+}
+
+void
+SettingPresentationModel::SaveMmsReceiveSettings(void)
+{
+       AppLogDebug("ENTER");
+       if (__pMmsRecvSettings)
+       {
+               msg_error_t err = msg_set_mms_recv_opt(__pMsgHandle, __pMmsRecvSettings->GetMmsRecvOpt());
+               AppLogDebug("msg_set_mms_recv_opt = [%d]", (int) err);
+       }
+       AppLogDebug("EXIT");
+       return;
+}
+
+MmsSendSettings*
+SettingPresentationModel::GetMmsSendSettings(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       if (__pMmsSendSettings == null)
+       {
+               msg_struct_t pMmsSendOpt = msg_create_struct(MSG_STRUCT_SETTING_MMS_SEND_OPT);
+               msg_error_t err = msg_get_mms_send_opt(__pMsgHandle, pMmsSendOpt);
+               if (err == MSG_SUCCESS)
+               {
+                       // Transfer ownership of pMmsSendOpt
+                       __pMmsSendSettings = new (std::nothrow) MmsSendSettings(pMmsSendOpt);
+               }
+               else
+               {
+                       r = E_FAILURE;
+                       msg_release_struct(&pMmsSendOpt);
+               }
+               AppLogDebug("msg_get_sms_send_opt err [%d]", (int) err);
+       }
+
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(r));
+       return __pMmsSendSettings;
+}
+
+void
+SettingPresentationModel::SaveMmsSendSettings(void)
+{
+       AppLogDebug("ENTER");
+
+       msg_error_t err = MSG_SUCCESS;
+       if (__pMmsSendSettings)
+       {
+               err = msg_set_mms_send_opt(__pMsgHandle, __pMmsSendSettings->GetMmsSendOpt());
+       }
+
+       AppLogDebug("EXIT: msg_set_mms_send_opt = [%d]", (int) err);
+       return;
+}
+
+SpamFilterList*
+SettingPresentationModel::GetSpamFilterList()
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       if (__pSpamFilterList == null)
+       {
+               msg_struct_list_s* pFilterList = new (std::nothrow) msg_struct_list_s();
+               pFilterList->msg_struct_info = null;
+               pFilterList->nCount = 0;
+               msg_error_t err = msg_get_filter_list(__pMsgHandle, pFilterList);
+               if (err == MSG_SUCCESS)
+               {
+                       __pSpamFilterList = new (std::nothrow) SpamFilterList(pFilterList);
+                       __pSpamFilterList->Construct();
+               }
+               else
+               {
+                       r = E_FAILURE;
+                       msg_release_list_struct(pFilterList);
+                       delete pFilterList;
+               }
+       }
+
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(r));
+       return __pSpamFilterList;
+}
+
+void
+SettingPresentationModel::RefreshSpamFilterList(void)
+{
+       AppLogDebug("ENTER");
+
+       if (__pSpamFilterList)
+       {
+               delete __pSpamFilterList;
+               __pSpamFilterList = null;
+       }
+       GetSpamFilterList();
+
+       AppLogDebug("EXIT");
+       return;
+}
+
+result
+SettingPresentationModel::AddToFilter(const String& strFilter, int matchType)
+{
+       AppLogDebug("ENTER");
+
+       msg_error_t err = MSG_SUCCESS;
+       result r = E_SUCCESS;
+       msg_struct_t pFilter = msg_create_struct(MSG_STRUCT_FILTER);
+       // Set filter type
+       switch (matchType)
+       {
+       case MSG_FILTER_BY_WORD:
+       case MSG_FILTER_BY_ADDRESS_SAME:
+       case MSG_FILTER_BY_ADDRESS_START:
+       case MSG_FILTER_BY_ADDRESS_INCLUDE:
+       {
+               err = msg_set_int_value(pFilter, MSG_FILTER_TYPE_INT, matchType);
+       }
+       break;
+       }
+       if (err != MSG_SUCCESS)
+       {
+               r = E_FAILURE;
+               msg_release_struct(&pFilter);
+               AppLogDebug("EXIT: r = %S", GetErrorMessage(r));
+               return r;
+       }
+       // Set filter string.
+       char* pfilterString = CommonUtil::ConvertStringToPointerCharArrayN(strFilter);
+       err = msg_set_str_value(pFilter, MSG_FILTER_VALUE_STR, pfilterString, (int) strlen(pfilterString));
+       if (err != MSG_SUCCESS)
+       {
+               result r = E_FAILURE;
+               AppLogDebug("EXIT: r = %s", GetErrorMessage(r));
+               delete[] pfilterString;
+               msg_release_struct(&pFilter);
+               return r;
+       }
+       err = msg_add_filter(__pMsgHandle, (const msg_struct_t) pFilter);
+       if (err != MSG_SUCCESS)
+       {
+               delete[] pfilterString;
+               r = E_FAILURE;
+               msg_release_struct(&pFilter);
+               AppLogDebug("EXIT: r = %s", GetErrorMessage(r));
+               return r;
+       }
+       delete[] pfilterString;
+
+       msg_release_struct(&pFilter);
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(r));
+       return r;
+}
+
+result
+SettingPresentationModel::UpdateFilter(int index, int filterType, const String& strFilter, int matchType)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       if (!__pSpamFilterList)
+       {
+               AppLogDebug("Spam filter list not yet intialize, __pSpamFilterList == NULL");
+               AppLogDebug("EXIT: r = %s", GetErrorMessage(r));
+               r = E_FAILURE;
+               return r;
+       }
+       // Set filter string.
+       int filterLength = strFilter.GetLength() * 4 + 1;
+       char* pfilterString = new (std::nothrow) char[filterLength];
+       wcstombs(pfilterString, strFilter.GetPointer(), (size_t) filterLength);
+       msg_struct_t pFilter = __pSpamFilterList->GetFilter(index, filterType);
+       msg_error_t err = msg_set_int_value(pFilter, MSG_FILTER_TYPE_INT, matchType);
+       if (err != MSG_SUCCESS)
+       {
+               r |= E_FAILURE;
+       }
+       err = msg_set_str_value(pFilter, MSG_FILTER_VALUE_STR, pfilterString, filterLength);
+       if (err != MSG_SUCCESS)
+       {
+               r |= E_FAILURE;
+       }
+       err = msg_update_filter(__pMsgHandle, (const msg_struct_t) pFilter);
+       if (err != MSG_SUCCESS)
+       {
+               r |= E_FAILURE;
+       }
+       AppLogDebug("msg_update_filter  err [%d]", (int) err);
+       delete[] pfilterString;
+
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(r));
+       return r;
+}
+
+result
+SettingPresentationModel::DeleteFilter(int filterIndex, int filterType)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+
+       if (!__pSpamFilterList)
+       {
+               AppLogDebug("Spam filter list not yet intialize, __pSpamFilterList == NULL");
+               AppLogDebug("EXIT: r = %s", GetErrorMessage(r));
+               r = E_FAILURE;
+               return r;
+       }
+       msg_filter_id_t filterId = (msg_filter_id_t) __pSpamFilterList->GetFilterId(filterIndex, filterType);
+       msg_error_t err = msg_delete_filter(__pMsgHandle, filterId);
+       if (err != MSG_SUCCESS)
+       {
+               r = E_FAILURE;
+       }
+       AppLogDebug("msg_delete_filter  err [%d]", (int) err);
+
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(r));
+       return r;
+}
+
+result
+SettingPresentationModel::DeleteFilter(IListT< int >* pDeleteIdList, int filterType, Control* pListener)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       if (__pDeleteFilterThread)
+       {
+               __pDeleteFilterThread->Join();
+               delete __pDeleteFilterThread;
+               __pDeleteFilterThread = null;
+       }
+       if (__pDeleteFilterIndexList)
+       {
+               __pDeleteFilterIndexList->RemoveAll();
+               delete __pDeleteFilterIndexList;
+               __pDeleteFilterIndexList = null;
+       }
+       __pDeleteFilterListener = pListener;
+       __pDeleteFilterIndexList = pDeleteIdList;
+       __filterType = filterType;
+       __pDeleteFilterThread = new (std::nothrow) Thread();
+       __pDeleteFilterThread->Construct(*this);
+       r = __pDeleteFilterThread->Start();
+
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+CbReceiveSettings*
+SettingPresentationModel::GetCbSettings(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       if (__pCbSettings == null)
+       {
+               msg_struct_t pCbInfo = msg_create_struct(MSG_STRUCT_SETTING_CB_OPT);
+               msg_error_t err = msg_get_cb_opt(__pMsgHandle, pCbInfo);
+               if (err == MSG_SUCCESS)
+               {
+                       __pCbSettings = new (std::nothrow) CbReceiveSettings(pCbInfo);
+               }
+               else
+               {
+                       r = E_FAILURE;
+                       msg_release_struct(&pCbInfo);
+               }
+               AppLogDebug("msg_get_smsc_opt err [%d]", (int) err);
+       }
+
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(r));
+       return __pCbSettings;
+
+}
+
+void
+SettingPresentationModel::SaveCbSettings(void)
+{
+       AppLogDebug("ENTER");
+
+       msg_error_t err = E_SUCCESS;
+       if (__pCbSettings)
+       {
+               err = msg_set_cb_opt(__pMsgHandle, __pCbSettings->GetCbOpt());
+       }
+
+       AppLogDebug("EXIT: msg_set_mms_send_opt = [%d]", (int) err);
+       return;
+}
+
+FontSettings*
+SettingPresentationModel::GetFontSettings(void)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __pFontSettings;
+}
+
+bool
+SettingPresentationModel::IsVolumeKeyOn(void) const
+{
+       AppLogDebug("ENTER");
+
+       AppRegistry* pAppRegistry = Application::GetInstance()->GetAppRegistry();
+       int isVolumeKeyUse(0);
+       result r = pAppRegistry->Get(IDS_SETTING_VOLUME_KEY, isVolumeKeyUse);
+       if (r == E_KEY_NOT_FOUND)
+       {
+               pAppRegistry->Add(IDS_SETTING_VOLUME_KEY, isVolumeKeyUse);
+               r = pAppRegistry->Save();
+       }
+
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(r));
+       return (isVolumeKeyUse > 0);
+}
+
+void
+SettingPresentationModel::SetVolumeKeyStatus(bool status)
+{
+       AppLogDebug("ENTER");
+
+       AppRegistry* pAppRegistry = Application::GetInstance()->GetAppRegistry();
+       result r = pAppRegistry->Set(IDS_SETTING_VOLUME_KEY, status);
+       if (r == E_KEY_NOT_FOUND)
+       {
+               r = pAppRegistry->Add(IDS_SETTING_VOLUME_KEY, status);
+               if (IsFailed(r))
+               {
+                       AppLogDebug("Unable add volume key setting");
+               }
+       }
+       r = pAppRegistry->Save();
+
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(r));
+       return;
+}
+
+
+int
+SettingPresentationModel::GetFilterListIndex(const String& strFilter)
+{
+       AppLogDebug("ENTER");
+
+       int filterIndex = -1;
+       if (__pSpamFilterList)
+       {
+               filterIndex = __pSpamFilterList->GetFilterListIndex(strFilter, 1);
+       }
+
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(GetLastResult()));
+       return filterIndex;
+}
+
+Object*
+SettingPresentationModel::Run(void)
+{
+       AppLogDebug("ENTER");
+
+       int totalCount(0);
+       IList* pArgs = null;
+       result r = E_SUCCESS;
+       if (__pDeleteFilterIndexList)
+       {
+               totalCount = __pDeleteFilterIndexList->GetCount();
+               if (__pDeleteFilterListener)
+               {
+                       pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+                       if(pArgs)
+                       {
+                               pArgs->Add(new Integer(totalCount));
+                               __pDeleteFilterListener->SendUserEvent(REQUEST_DELETE_START,pArgs);
+                       }
+               }
+               for (int count = 0; count < totalCount; ++count)
+               {
+                       int filterIndex(-1);
+                       r = __pDeleteFilterIndexList->GetAt(count, filterIndex);
+                       if (filterIndex >= 0)
+                       {
+                               DeleteFilter(filterIndex, __filterType);
+                               if (__pDeleteFilterListener)
+                               {
+                                       pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+                                       if(pArgs)
+                                       {
+                                               pArgs->Add(new Integer(count + 1));
+                                               pArgs->Add(new Integer(totalCount));
+                                               __pDeleteFilterListener->SendUserEvent(REQUEST_DELETE_UPDATE,pArgs);
+                                       }
+                               }
+                       }
+               }
+               __pDeleteFilterIndexList->RemoveAll();
+               delete __pDeleteFilterIndexList;
+               __pDeleteFilterIndexList = null;
+               RefreshSpamFilterList();
+       }
+
+       if (__pDeleteFilterListener)
+       {
+               pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+               if(pArgs)
+               {
+                       pArgs->Add(new Integer(E_SUCCESS));
+                       __pDeleteFilterListener->SendUserEvent(REQUEST_DELETE_COMPLETE,pArgs);
+               }
+       }
+
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(GetLastResult()));
+       return null;
+}
diff --git a/src/MsgSettingsForm.cpp b/src/MsgSettingsForm.cpp
new file mode 100644 (file)
index 0000000..11d9aa0
--- /dev/null
@@ -0,0 +1,1452 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <FApp.h>\r
+#include <FUiCtrlEditField.h>\r
+#include <FUiCtrlFooter.h>\r
+#include <FUiCtrlHeader.h>\r
+#include <FUiCtrlLabel.h>\r
+#include <FUiScenesBackwardSceneTransition.h>\r
+#include <FUiScenesForwardSceneTransition.h>\r
+#include <FUiScenesSceneManager.h>\r
+\r
+#include "MsgBitmapUtility.h"\r
+#include "MsgCbReceiveSettings.h"\r
+#include "MsgCommonUtil.h"\r
+#include "MsgCustomTableViewItem.h"\r
+#include "MsgFontsettings.h"\r
+#include "MsgMessagesApp.h"\r
+#include "MsgMmsReceiveSettings.h"\r
+#include "MsgMmsSendSettings.h"\r
+#include "MsgSettingsForm.h"\r
+#include "MsgSettingPresentationModel.h"\r
+#include "MsgSpamFilterList.h"\r
+#include "MsgSmscCenterList.h"\r
+#include "MsgSmsSendSettings.h"\r
+#include "MsgSettingsItemList.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Ui::Controls;\r
+using namespace Tizen::Ui::Scenes;\r
+\r
+const wchar_t* IDS_CENTER = L"Center ";\r
+\r
+SettingsForm::SettingsForm(MessageSettingFormType settingFormType)\r
+       : __settingFormType(settingFormType)\r
+       , __pSettingGroupTableView(null)\r
+       , __pSettingItemsArray(null)\r
+       , __editSmscIndex(-1)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+SettingsForm::~SettingsForm(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pSettingItemsArray)\r
+       {\r
+               delete __pSettingItemsArray;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+bool\r
+SettingsForm::Initialize(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       bool status(true);\r
+       result r = E_SUCCESS;\r
+       if (__settingFormType == MESSAGE_SETTING_FORM_EDIT_SERVICE_CENTER)\r
+       {\r
+               r = Construct(L"IDL_SETTING_EDIT_SERVICE_CENTER_FORM");\r
+       }\r
+       else\r
+       {\r
+               r = Construct(L"IDL_SETTINGS_FORM");\r
+       }\r
+       if (!IsFailed(r))\r
+       {\r
+               switch (__settingFormType)\r
+               {\r
+               case MESSAGE_SETTING_FORM_MESSAGE_MAIN:\r
+               {\r
+                       status = InitializeMessageSettingItems();\r
+               }\r
+               break;\r
+\r
+               case MESSAGE_SETTING_FORM_TEXT_MESSAGES:\r
+               {\r
+                       status = InitializeTextMessageSettingItems();\r
+               }\r
+               break;\r
+\r
+               case MESSAGE_SETTING_FORM_FONT_SIZE:\r
+               {\r
+                       status = InitializeFontSettingItems();\r
+               }\r
+               break;\r
+\r
+               case MESSAGE_SETTING_FORM_SERVICE_CENTER:\r
+               case MESSAGE_SETTING_FORM_EDIT_SERVICE_CENTER:\r
+               default:\r
+                       break;\r
+               }\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return status;\r
+}\r
+\r
+bool\r
+SettingsForm::InitializeMessageSettingItems(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       String strText;\r
+       __pSettingItemsArray = new (std::nothrow) SettingItemsList();\r
+       int groupIndex = __pSettingItemsArray->AddGroup(IDS_BLANK);\r
+       if (groupIndex >= 0)\r
+       {\r
+\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_TEXT_MESSAGES", strText);\r
+               SettingItem* settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_TEXT_MESSAGES, strText, SETTING_STYLE_NORMAL);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+#ifndef _DISABLE_MMS_FEATURE_\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_MULTIMEDIA_MESSAGES, strText, SETTING_STYLE_NORMAL);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+#endif\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_SPAM_MESSAGES", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_SPAM_MESSAGES, strText, SETTING_STYLE_NORMAL);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+#if 0\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_BROADCASTMESSAGES", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_BROADCAST_MESSAGES, strText, SETTING_STYLE_ONOFF_SLIDING);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+#endif\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_DISPLAY", strText);\r
+               groupIndex = __pSettingItemsArray->AddGroup(strText, SETTING_GROUP_STYLE_TITLE);\r
+#if 0\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_FONTSIZE", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_FONT_SIZE, strText, SETTING_STYLE_NORMAL);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+#endif\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSG_MBODY_USE_THE_VOLUME_KEY", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_VOLUME_KEY, strText, SETTING_STYLE_ONOFF_SLIDING);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSG_BODY_CHANGE_TEXT_SIZE_USING_THE_VOLUME_KEY", strText);\r
+               __pSettingItemsArray->AddGroup(strText, SETTING_GROUP_STYLE_HELP_TEXT);\r
+\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return true;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return false;\r
+}\r
+\r
+bool\r
+SettingsForm::InitializeTextMessageSettingItems(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       String strText;\r
+       __pSettingItemsArray = new (std::nothrow) SettingItemsList();\r
+\r
+       int groupIndex = __pSettingItemsArray->AddGroup("");\r
+       if (groupIndex >= 0)\r
+       {\r
+       /*      Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT", strText);\r
+               SettingItem* settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_TEXTMSG_REQ_DELIVERY_REPORT,\r
+                                                                                                                                 strText, SETTING_STYLE_ONOFF_SLIDING);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+       */      Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_HEADER_INPUTMODE", strText);\r
+               SettingItem* settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_TEXTMSG_INPUT_MODE, strText,\r
+                                                                                                        SETTING_STYLE_EXPANDABLE,\r
+                                                                                                        SETTING_STATUS_ITEM_INPUTMODE);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               groupIndex = __pSettingItemsArray->AddGroup("", SETTING_GROUP_STYLE_NORMAL, false);\r
+\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_GSM_ALPHABET", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_TEXTMSG_GSM_ALPHABET, strText,\r
+                                                                                                        SETTING_STYLE_RADIO);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_UNICODE", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_TEXTMSG_GSM_UNICODE, strText,\r
+                                                                                                        SETTING_STYLE_RADIO);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_AUTOMATIC", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_TEXTMSG_GSM_AUTOMATIC, strText,\r
+                                                                                                        SETTING_STYLE_RADIO);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               groupIndex = __pSettingItemsArray->AddGroup("");\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_SERVICECENTRE", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_SERVICE_CENTERS, strText,\r
+                                                                                                        SETTING_STYLE_NORMAL,\r
+                                                                                                        SETTING_STATUS_ITEM_SERVICE_CENTER);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return true;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return false;\r
+}\r
+\r
+bool\r
+SettingsForm::InitializeFontSettingItems(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       __pSettingItemsArray = new (std::nothrow) SettingItemsList();\r
+       int groupIndex = __pSettingItemsArray->AddGroup(IDS_BLANK);\r
+       if (groupIndex >= 0)\r
+       {\r
+               // Font settings\r
+               String strText;\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_SYSTEM_FONT", strText);\r
+               SettingItem* settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_SYSTEM_FONT, strText, SETTING_STYLE_RADIO);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_HUGE_FONT", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_HUGE_FONT, strText, SETTING_STYLE_RADIO);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_LARGE_FONT", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_LARGE_FONT, strText, SETTING_STYLE_RADIO);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_NORMAL_FONT", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_NORMAL_FONT, strText, SETTING_STYLE_RADIO);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_SMALL_FONT", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_SMALL_FONT, strText, SETTING_STYLE_RADIO);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_TINY_FONT", strText);\r
+               settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_TINY_FONT, strText, SETTING_STYLE_RADIO);\r
+               __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
+\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return true;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return false;\r
+}\r
+\r
+result\r
+SettingsForm::OnInitializing(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       r = BaseForm::InitializeBase();\r
+       Control* pEmptyBgCntl = GetControl(L"IDC_LISTVIEW_EMPTY_BG");\r
+       if (pEmptyBgCntl)\r
+       {\r
+               pEmptyBgCntl->SetShowState(false);\r
+       }\r
+\r
+       if (__settingFormType == MESSAGE_SETTING_FORM_EDIT_SERVICE_CENTER)\r
+       {\r
+               EditField* __pEditField = static_cast<EditField*>(GetControl(L"IDC_EDITFIELD"));\r
+               __pEditField->SetOverlayKeypadCommandButtonVisible(false);\r
+               __pEditField->SetFocus();\r
+       }\r
+       else\r
+       {\r
+               __pSettingGroupTableView = static_cast<GroupedTableView*>(GetControl(L"IDC_GROUPEDTABLEVIEW_SETTINGS"));\r
+               __pSettingGroupTableView->SetBackgroundColor(COLOR_LIST_BG);\r
+               __pSettingGroupTableView->SetItemProvider(this);\r
+               __pSettingGroupTableView->AddGroupedTableViewItemEventListener(*this);\r
+               __pSettingGroupTableView->UpdateTableView();\r
+       }\r
+       // Load intial setting data.\r
+       if (__pSettingItemsArray)\r
+       {\r
+               __pSettingGroupTableView->CollapseAllGroup();\r
+               LoadCurrentSettings();\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+result\r
+SettingsForm::OnTerminating(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+void\r
+SettingsForm::OnIntializeFooter(Footer& footer)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       // Set event listener\r
+       footer.AddActionEventListener(*this);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+SettingsForm::OnIntializeHeader(Header& header)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       // Set event listener\r
+       header.AddActionEventListener(*this);\r
+\r
+       String titleText;\r
+       switch (__settingFormType)\r
+       {\r
+       case MESSAGE_SETTING_FORM_MESSAGE_MAIN:\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_MESSAGES", titleText);\r
+               break;\r
+\r
+       case MESSAGE_SETTING_FORM_TEXT_MESSAGES:\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_TEXT_MESSAGES", titleText);\r
+               break;\r
+\r
+       case MESSAGE_SETTING_FORM_SERVICE_CENTER:\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_SERVICECENTRE", titleText);\r
+               break;\r
+\r
+       case MESSAGE_SETTING_FORM_EDIT_SERVICE_CENTER:\r
+       {\r
+               header.SetStyle(HEADER_STYLE_TITLE);\r
+               // left button\r
+               ButtonItem leftButton;\r
+               leftButton.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_DONE);\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_DONE", titleText);\r
+               leftButton.SetText(titleText);\r
+               header.SetButton(BUTTON_POSITION_LEFT, leftButton);\r
+               // right button\r
+               ButtonItem rightButton;\r
+               rightButton.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_CANCEL);\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_CANCEL", titleText);\r
+               rightButton.SetText(titleText);\r
+               header.SetButton(BUTTON_POSITION_RIGHT, rightButton);\r
+               // Title text\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_CENTRE_PD", titleText);\r
+               titleText.Replace(L"%d", L"");\r
+               break;\r
+       }\r
+\r
+       case MESSAGE_SETTING_FORM_FONT_SIZE:\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_FONTSIZE", titleText);\r
+               break;\r
+       }\r
+       header.SetTitleText(titleText);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+SettingsForm::OnSceneActivatedN(const SceneId& previousSceneId,\r
+                                                               const SceneId& currentSceneId, IList* pArgs)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__previoussceneId.IsEmpty())\r
+       {\r
+               __previoussceneId.Append(previousSceneId);\r
+       }\r
+       if (pArgs)\r
+       {\r
+               if (__settingFormType == MESSAGE_SETTING_FORM_EDIT_SERVICE_CENTER)\r
+               {\r
+                       Integer* pInteger = static_cast<Integer*>(pArgs->GetAt(0));\r
+                       __editSmscIndex = pInteger->ToInt();\r
+                       SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();\r
+                       String smscAddr = pSettingPrModel->GetSMSCList()->GetSmscAdress(__editSmscIndex);\r
+                       EditField* pEdirField = static_cast<EditField*>(GetControl(L"IDC_EDITFIELD"));\r
+                       pEdirField->SetText(smscAddr);\r
+               }\r
+               pArgs->RemoveAll(true);\r
+               delete pArgs;\r
+       }\r
+       if (__pSettingGroupTableView)\r
+       {\r
+               __pSettingGroupTableView->UpdateTableView();\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+SettingsForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)\r
+{\r
+       // Add your scene de-activate code here\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+SettingsForm::OnFormBackRequested(Form& source)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       HandleBackNavigation();\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+SettingsForm::OnActionPerformed(const Control& source, int actionId)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       switch (actionId)\r
+       {\r
+       case IDA_DONE:\r
+       {\r
+               SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();\r
+               EditField* pEdirField = static_cast<EditField*>(GetControl(L"IDC_EDITFIELD"));\r
+               if (CommonUtil::IsValidPhoneNumber(pEdirField->GetText()))\r
+               {\r
+                       pSettingPrModel->GetSMSCList()->SetSmscAdress(__editSmscIndex, pEdirField->GetText());\r
+                       pSettingPrModel->UpdateSmscCenter();\r
+                       // Go back previous screen\r
+                       SceneManager* pSceneManager = SceneManager::GetInstance();\r
+                       pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_SETTINGS_TEXT_MESSAGE_SERVICE_CENTERS, SCENE_TRANSITION_ANIMATION_TYPE_NONE));\r
+               }\r
+               else\r
+               {\r
+                       MessageBox messageBox;\r
+                       int modalResult;\r
+                       String msgText;\r
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_INVALID_SERVICE_CENTRE_ADDRESS", msgText);\r
+                       messageBox.Construct(IDS_BLANK, msgText, MSGBOX_STYLE_OK, 3000);\r
+                       messageBox.ShowAndWait(modalResult);\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_CANCEL:\r
+       {\r
+               SceneManager* pSceneManager = SceneManager::GetInstance();\r
+               pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_SETTINGS_TEXT_MESSAGE_SERVICE_CENTERS, SCENE_TRANSITION_ANIMATION_TYPE_NONE));\r
+\r
+       }\r
+       break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+SettingsForm::HandleBackNavigation()\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       SceneManager* pSceneManager = SceneManager::GetInstance();\r
+       switch (__settingFormType)\r
+       {\r
+       case MESSAGE_SETTING_FORM_MESSAGE_MAIN:\r
+       {\r
+               // Close App.\r
+               MessagesApp* pMsgApp = (MessagesApp*) UiApp::GetInstance();\r
+               if (pMsgApp->IsAppRunningEmbededMode())\r
+               {\r
+                       pMsgApp->ExitApp();\r
+                       break;\r
+               }\r
+               pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_NONE));\r
+       }\r
+       break;\r
+\r
+       case MESSAGE_SETTING_FORM_TEXT_MESSAGES:\r
+       {\r
+               SettingPresentationModel::GetInstance()->SaveSmsSendSetting();\r
+               pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_SETTINGS, SCENE_TRANSITION_ANIMATION_TYPE_NONE));\r
+       }\r
+       break;\r
+\r
+       case MESSAGE_SETTING_FORM_FONT_SIZE:\r
+       {\r
+               pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_SETTINGS, SCENE_TRANSITION_ANIMATION_TYPE_NONE));\r
+       }\r
+       break;\r
+\r
+       case MESSAGE_SETTING_FORM_SERVICE_CENTER:\r
+       {\r
+               pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_SETTINGS_TEXT_MESSAGE, SCENE_TRANSITION_ANIMATION_TYPE_NONE));\r
+       }\r
+       break;\r
+\r
+       case MESSAGE_SETTING_FORM_EDIT_SERVICE_CENTER:\r
+       {\r
+               pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_SETTINGS_TEXT_MESSAGE_SERVICE_CENTERS, SCENE_TRANSITION_ANIMATION_TYPE_NONE));\r
+       }\r
+       break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+\r
+void\r
+SettingsForm::HandleSettingSelection(int groupIndex, int itemIndex, TableViewItemStatus status)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       SettingItem& settingItem = __pSettingItemsArray->GetItemAt(groupIndex, itemIndex);\r
+       SceneManager* pSceneManager = SceneManager::GetInstance();\r
+       switch (settingItem.GetActionId())\r
+       {\r
+       case IDA_SETTINGS_TEXT_MESSAGES:\r
+       {\r
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SETTINGS_TEXT_MESSAGE, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_MULTIMEDIA_MESSAGES:\r
+       {\r
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SETTINGS_MULTIMEDIA_MESSAGE), null);\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_SPAM_MESSAGES:\r
+       {\r
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SETTINGS_SPAM_MESSAGE, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_BROADCAST_MESSAGES:\r
+       {\r
+               if (CommonUtil::IsSimAvailable())\r
+               {\r
+                       bool nextState = false;\r
+                       if (status == TABLE_VIEW_ITEM_STATUS_SELECTED)\r
+                       {\r
+                               nextState = !__pSettingGroupTableView->IsItemChecked(groupIndex, itemIndex);\r
+                       }\r
+                       else if (status == TABLE_VIEW_ITEM_STATUS_CHECKED || status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)\r
+                       {\r
+                               nextState = (status == TABLE_VIEW_ITEM_STATUS_CHECKED);\r
+                       }\r
+                       __pSettingGroupTableView->SetItemChecked(groupIndex, itemIndex, nextState);\r
+                       CbReceiveSettings* pCbSettings = SettingPresentationModel::GetInstance()->GetCbSettings();\r
+                       if (pCbSettings)\r
+                       {\r
+                               pCbSettings->SetCbMessagesStatus(nextState);\r
+                               __pSettingGroupTableView->RefreshItem(groupIndex, itemIndex, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);\r
+                               SettingPresentationModel::GetInstance()->SaveCbSettings();\r
+                       }\r
+               }\r
+               else\r
+               {\r
+                       __pSettingGroupTableView->SetItemChecked(groupIndex, itemIndex, false);\r
+                       String msgText;\r
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_SLCD_POP_TEXT_SIM_CARD_ERROR", msgText);\r
+                       CommonUtil::ShowInfoPopup(msgText);\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_FONT_SIZE:\r
+       {\r
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SETTINGS_FONT_SIZE, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_VOLUME_KEY:\r
+       {\r
+               bool nextState = false;\r
+               if (status == TABLE_VIEW_ITEM_STATUS_SELECTED)\r
+               {\r
+                       nextState = !__pSettingGroupTableView->IsItemChecked(groupIndex, itemIndex);\r
+               }\r
+               else if (status == TABLE_VIEW_ITEM_STATUS_CHECKED || status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)\r
+               {\r
+                       nextState = (status == TABLE_VIEW_ITEM_STATUS_CHECKED);\r
+               }\r
+               __pSettingGroupTableView->SetItemChecked(groupIndex, itemIndex, nextState);\r
+               SettingPresentationModel::GetInstance()->SetVolumeKeyStatus(nextState);\r
+               __pSettingGroupTableView->RefreshItem(groupIndex, itemIndex, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_TEXTMSG_INPUT_MODE:\r
+       {\r
+               if (__pSettingGroupTableView->IsGroupExpanded(groupIndex + 1))\r
+               {\r
+                       __pSettingGroupTableView->CollapseGroup(groupIndex + 1);\r
+                       __pSettingItemsArray->SetgroupExpandStatus(groupIndex + 1, false);\r
+               }\r
+               else\r
+               {\r
+                       __pSettingGroupTableView->ExpandGroup(groupIndex + 1);\r
+                       __pSettingItemsArray->SetgroupExpandStatus(groupIndex + 1, true);\r
+               }\r
+               __pSettingGroupTableView->RefreshItem(groupIndex, itemIndex, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_TEXTMSG_REQ_DELIVERY_REPORT:\r
+       {\r
+               bool nextState = false;\r
+               if (status == TABLE_VIEW_ITEM_STATUS_SELECTED)\r
+               {\r
+                       nextState = !__pSettingGroupTableView->IsItemChecked(groupIndex, itemIndex);\r
+               }\r
+               else if (status == TABLE_VIEW_ITEM_STATUS_CHECKED || status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)\r
+               {\r
+                       nextState = (status == TABLE_VIEW_ITEM_STATUS_CHECKED);\r
+               }\r
+               __pSettingGroupTableView->SetItemChecked(groupIndex, itemIndex, nextState);\r
+               SmsSendSettings* pSmsSendSettings = SettingPresentationModel::GetInstance()->GetSmsSendSetting();\r
+               if (pSmsSendSettings)\r
+               {\r
+                       pSmsSendSettings->SetDeliveryReportRequestStatus(nextState);\r
+                       __pSettingGroupTableView->RefreshItem(groupIndex, itemIndex, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_TEXTMSG_GSM_ALPHABET:\r
+       {\r
+               if (status == TABLE_VIEW_ITEM_STATUS_CHECKED || status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)\r
+               {\r
+                       SmsSendSettings* pSmsSendSettings = SettingPresentationModel::GetInstance()->GetSmsSendSetting();\r
+                       if (pSmsSendSettings)\r
+                       {\r
+                               pSmsSendSettings->SetEncodeMode(SETTING_INPUTMODE_ENCODE_GSM_ALPHABET);\r
+                       }\r
+                       CheckedRadioGroupItem(groupIndex, itemIndex);\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_TEXTMSG_GSM_UNICODE:\r
+       {\r
+               if (status == TABLE_VIEW_ITEM_STATUS_CHECKED || status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)\r
+               {\r
+                       SmsSendSettings* pSmsSendSettings = SettingPresentationModel::GetInstance()->GetSmsSendSetting();\r
+                       if (pSmsSendSettings)\r
+                       {\r
+                               pSmsSendSettings->SetEncodeMode(SETTING_INPUTMODE_ENCODE_UCS2);\r
+                       }\r
+                       CheckedRadioGroupItem(groupIndex, itemIndex);\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_TEXTMSG_GSM_AUTOMATIC:\r
+       {\r
+               if (status == TABLE_VIEW_ITEM_STATUS_CHECKED || status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)\r
+               {\r
+                       SmsSendSettings* pSmsSendSettings = SettingPresentationModel::GetInstance()->GetSmsSendSetting();\r
+                       if (pSmsSendSettings)\r
+                       {\r
+                               pSmsSendSettings->SetEncodeMode(SETTING_INPUTMODE_ENCODE_AUTO);\r
+                       }\r
+                       CheckedRadioGroupItem(groupIndex, itemIndex);\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_SERVICE_CENTERS:\r
+       {\r
+               if (CommonUtil::IsSimAvailable())\r
+               {\r
+                       SmscCenterList* pSmscCenterList = SettingPresentationModel::GetInstance()->GetSMSCList();\r
+                       if (pSmscCenterList)\r
+                       {\r
+                               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SETTINGS_TEXT_MESSAGE_SERVICE_CENTERS, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);\r
+                       }\r
+               }\r
+               else\r
+               {\r
+                       String msgText;\r
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_SLCD_POP_TEXT_SIM_CARD_ERROR", msgText);\r
+                       CommonUtil::ShowInfoPopup(msgText);\r
+               }\r
+       }\r
+       break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+SettingsForm::HandleSmscCenterSelection(int groupIndex, int itemIndex, TableViewItemStatus status)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (status == TABLE_VIEW_ITEM_STATUS_MORE)\r
+       {\r
+               ArrayList* pArgList = new (std::nothrow) ArrayList();\r
+               pArgList->Add((new (std::nothrow) Integer(itemIndex)));\r
+\r
+               SceneManager* pSceneManager = SceneManager::GetInstance();\r
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SETTINGS_TEXT_MESSAGE_EDIT_SERVICE_CENTER, SCENE_TRANSITION_ANIMATION_TYPE_NONE), pArgList);\r
+       }\r
+       else\r
+       {\r
+               SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();\r
+               result r = pSettingPrModel->GetSMSCList()->SetSelectedSmscIndex(itemIndex);\r
+               if (IsFailed(r))\r
+               {\r
+                       AppLogDebug("Unable to set SMSC center");\r
+               }\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+SettingsForm::HandleFontSelection(int groupIndex, int itemIndex, TableViewItemStatus status)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (status == TABLE_VIEW_ITEM_STATUS_CHECKED || status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)\r
+       {\r
+               SettingItem& settingItem = __pSettingItemsArray->GetItemAt(groupIndex, itemIndex);\r
+               FontSettings* pFontSettings = SettingPresentationModel::GetInstance()->GetFontSettings();\r
+               switch (settingItem.GetActionId())\r
+               {\r
+               case IDA_SETTINGS_SYSTEM_FONT:\r
+                       pFontSettings->SetMessageFonttype(SETTING_SYSTEM_FONT);\r
+                       break;\r
+\r
+               case IDA_SETTINGS_HUGE_FONT:\r
+                       pFontSettings->SetMessageFonttype(SETTING_HUGE_FONT);\r
+                       break;\r
+\r
+               case IDA_SETTINGS_LARGE_FONT:\r
+                       pFontSettings->SetMessageFonttype(SETTING_LARGE_FONT);\r
+                       break;\r
+\r
+               case IDA_SETTINGS_NORMAL_FONT:\r
+                       pFontSettings->SetMessageFonttype(SETTING_NORMAL_FONT);\r
+                       break;\r
+\r
+               case IDA_SETTINGS_SMALL_FONT:\r
+                       pFontSettings->SetMessageFonttype(SETTING_SMALL_FONT);\r
+                       break;\r
+\r
+               case IDA_SETTINGS_TINY_FONT:\r
+                       pFontSettings->SetMessageFonttype(SETTING_TINY_FONT);\r
+                       break;\r
+               }\r
+               int groupItemCount = __pSettingItemsArray->GetItemCount(groupIndex);\r
+               for (int index = 0; index < groupItemCount; index++)\r
+               {\r
+                       __pSettingGroupTableView->SetItemChecked(groupIndex, index, (itemIndex == index));\r
+                       __pSettingGroupTableView->RefreshItem(groupIndex, index, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);\r
+               }\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+SettingsForm::CheckedRadioGroupItem(int groupIndex, int itemIndex)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int groupItemCount = __pSettingItemsArray->GetItemCount(groupIndex);\r
+       for (int index = 0; index < groupItemCount; index++)\r
+       {\r
+               __pSettingGroupTableView->SetItemChecked(groupIndex, index, (itemIndex == index));\r
+               __pSettingGroupTableView->RefreshItem(groupIndex, index, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);\r
+       }\r
+       int prvGroupItemCount = __pSettingItemsArray->GetItemCount(groupIndex - 1) - 1;\r
+       __pSettingGroupTableView->RefreshItem(groupIndex - 1, prvGroupItemCount, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+TableViewItem*\r
+SettingsForm::CreateSettingItemN(int groupIndex, int itemIndex, int itemWidth)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       String itemText;\r
+       TableViewAnnexStyle style = TABLE_VIEW_ANNEX_STYLE_NORMAL;\r
+       SettingItem& settingItem = __pSettingItemsArray->GetItemAt(groupIndex, itemIndex);\r
+       switch (settingItem.GetStyle())\r
+       {\r
+       case SETTING_STYLE_NORMAL:\r
+       case SETTING_STYLE_EXPANDABLE:\r
+       {\r
+               style = TABLE_VIEW_ANNEX_STYLE_NORMAL;\r
+       }\r
+       break;\r
+\r
+       case SETTING_STYLE_RADIO:\r
+       case SETTING_STYLE_RADIO_DETAILS:\r
+       {\r
+               style = TABLE_VIEW_ANNEX_STYLE_RADIO;\r
+       }\r
+       break;\r
+\r
+       case SETTING_STYLE_ONOFF_SLIDING:\r
+       {\r
+               style = TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING;\r
+       }\r
+       break;\r
+       }\r
+       CustomTableViewItem* pViewItem = new (std::nothrow) CustomTableViewItem();\r
+       pViewItem->Construct(Dimension(itemWidth, H_LIST_ITEM_112PX), style);\r
+       // Child control max width.\r
+       itemWidth -= (TableViewItem::GetAnnexWidth(style) + W_LIST_ITEM_GROUP_INDICATOR);\r
+       pViewItem->SetBackgroundColor(COLOR_LIST_DIALOGUE_GROUP_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);\r
+       int settingStatusItem = settingItem.GetStatus();\r
+       int fontSize = GetFontSize(settingItem.GetActionId());\r
+       if (settingStatusItem == SETTING_STATUS_ITEM_INVALID)\r
+       {\r
+               Label* pSettingName = new (std::nothrow) Label();\r
+               pSettingName->Construct(Rectangle(0, MARGIN_4PX / 2, itemWidth, H_LIST_ITEM_112PX - MARGIN_4PX), settingItem.GetName());\r
+               pSettingName->SetName(IDS_LIST_MAIN_TEXT);\r
+               pSettingName->SetTextHorizontalAlignment(ALIGNMENT_LEFT);\r
+               pSettingName->SetTextConfig(fontSize, LABEL_TEXT_STYLE_NORMAL);\r
+               pViewItem->AddControl(*pSettingName);\r
+       }\r
+       else\r
+       {\r
+               Label* pSettingName = new (std::nothrow) Label();\r
+               pSettingName->Construct(Rectangle(0, 0, itemWidth, H_LIST_ITEM_112PX / 2), settingItem.GetName());\r
+               pSettingName->SetName(IDS_LIST_MAIN_TEXT);\r
+               pSettingName->SetTextHorizontalAlignment(ALIGNMENT_LEFT);\r
+               pSettingName->SetTextConfig(fontSize, LABEL_TEXT_STYLE_NORMAL);\r
+               pViewItem->AddControl(*pSettingName);\r
+\r
+               Label* pSettingStatus = new (std::nothrow) Label();\r
+               pSettingStatus->Construct(Rectangle(0, H_LIST_ITEM_112PX / 2, itemWidth, H_LIST_ITEM_112PX / 2), GetStatusItemText(settingStatusItem));\r
+               pSettingStatus->SetName(IDS_LIST_SUB_TEXT);\r
+               pSettingStatus->SetTextHorizontalAlignment(ALIGNMENT_LEFT);\r
+               pSettingStatus->SetTextConfig(LIST_SUB_TEXT_FONT_SIZE, LABEL_TEXT_STYLE_NORMAL);\r
+               pSettingStatus->SetTextColor(COLOR_SETTING_SUB_TEXT);\r
+               pViewItem->AddControl(*pSettingStatus);\r
+       }\r
+\r
+       if (settingItem.GetStyle() == SETTING_STYLE_EXPANDABLE)\r
+       {\r
+               Bitmap* pNormalIcon = null;\r
+               Bitmap* pPressIcon = null;\r
+               if (__pSettingItemsArray->IsGroupExpanded(groupIndex + 1))\r
+               {\r
+                       pNormalIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_OPENED);\r
+                       pPressIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_OPENED_PRESS);\r
+               }\r
+               else\r
+               {\r
+                       pNormalIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_CLOSE);\r
+                       pPressIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_CLOSE_PRESS);\r
+               }\r
+               pViewItem->EnableExpandViewModeStyle(pNormalIcon, pPressIcon);\r
+\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pViewItem;\r
+}\r
+\r
+void\r
+SettingsForm::UpdateSettingItem(int groupIndex, int itemIndex, TableViewItem* pViewItem)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       SettingItem& settingItem = __pSettingItemsArray->GetItemAt(groupIndex, itemIndex);\r
+       int settingStatusItem = settingItem.GetStatus();\r
+       Label* pSettingName = (Label*) pViewItem->GetControl(IDS_LIST_MAIN_TEXT);\r
+       if (pSettingName)\r
+       {\r
+               pSettingName->SetText(settingItem.GetName());\r
+               pSettingName->Draw();\r
+       }\r
+       Label* pSettingStatus = static_cast<Label*>(pViewItem->GetControl(IDS_LIST_SUB_TEXT));\r
+       if (pSettingStatus)\r
+       {\r
+               pSettingStatus->SetText(GetStatusItemText(settingStatusItem));\r
+               pSettingStatus->Draw();\r
+       }\r
+       if (settingItem.GetStyle() == SETTING_STYLE_EXPANDABLE)\r
+       {\r
+               Bitmap* pNormalIcon = null;\r
+               Bitmap* pPressIcon = null;\r
+               if (__pSettingItemsArray->IsGroupExpanded(groupIndex + 1))\r
+               {\r
+                       pNormalIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_OPENED);\r
+                       pPressIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_OPENED_PRESS);\r
+               }\r
+               else\r
+               {\r
+                       pNormalIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_CLOSE);\r
+                       pPressIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_CLOSE_PRESS);\r
+               }\r
+               static_cast<CustomTableViewItem*>(pViewItem)->EnableExpandViewModeStyle(pNormalIcon, pPressIcon);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+TableViewItem*\r
+SettingsForm::CreateSmscCenterListItemN(int groupIndex, int itemIndex, int itemWidth)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       CustomTableViewItem* pViewItem = new (std::nothrow) CustomTableViewItem();\r
+       if (pViewItem)\r
+       {\r
+               pViewItem->Construct(Dimension(itemWidth, H_LIST_ITEM_112PX), TABLE_VIEW_ANNEX_STYLE_DETAILED);\r
+               pViewItem->SetBackgroundColor(COLOR_LIST_DIALOGUE_GROUP_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);\r
+               // Child control max width.\r
+               itemWidth -= (TableViewItem::GetAnnexWidth(TABLE_VIEW_ANNEX_STYLE_DETAILED) + W_LIST_ITEM_GROUP_INDICATOR);\r
+               String itemText(IDS_CENTER);\r
+               itemText.Append(itemIndex + 1);\r
+               Label* pSmscCenterName = new (std::nothrow) Label();\r
+               pSmscCenterName->Construct(Rectangle(MARGIN_16PX * 2 + W_ICON_60PX, 0, itemWidth, H_LIST_ITEM_112PX), itemText);\r
+               pSmscCenterName->SetTextHorizontalAlignment(ALIGNMENT_LEFT);\r
+               pSmscCenterName->SetTextConfig(LIST_MAIN_TEXT_FONT_SIZE, LABEL_TEXT_STYLE_NORMAL);\r
+               pViewItem->AddControl(*pSmscCenterName);\r
+\r
+               Bitmap* pNormalIcon = null;\r
+               Bitmap* pPressIcon = null;\r
+               // Fetch selected service center\r
+               SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();\r
+               bool isCheck = (itemIndex == pSettingPrModel->GetSMSCList()->GetSelectedId());\r
+               if (isCheck)\r
+               {\r
+                       pNormalIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_RADIO_BUTTON_CHECK);\r
+                       pPressIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_RADIO_BUTTON_CHECK_PRESS);\r
+               }\r
+               else\r
+               {\r
+                       pNormalIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_RADIO_BUTTON_UNCHECK);\r
+                       pPressIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_RADIO_BUTTON_UNCHECK_PRESS);\r
+               }\r
+               pViewItem->EnableDetailsViewModeStyle(pNormalIcon, pPressIcon);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pViewItem;\r
+}\r
+\r
+//IGroupedTableViewItemProvider\r
+int\r
+SettingsForm::GetGroupCount(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int groupCount(0);\r
+       switch (__settingFormType)\r
+       {\r
+       case MESSAGE_SETTING_FORM_MESSAGE_MAIN:\r
+       case MESSAGE_SETTING_FORM_TEXT_MESSAGES:\r
+       case MESSAGE_SETTING_FORM_FONT_SIZE:\r
+               groupCount = __pSettingItemsArray->GetGroupCount();\r
+               break;\r
+\r
+       case MESSAGE_SETTING_FORM_SERVICE_CENTER:\r
+               groupCount = 1;\r
+               break;\r
+\r
+       case MESSAGE_SETTING_FORM_EDIT_SERVICE_CENTER:\r
+       default:\r
+               break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return groupCount;\r
+}\r
+\r
+int\r
+SettingsForm::GetItemCount(int groupIndex)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int groupItemCount(0);\r
+       switch (__settingFormType)\r
+       {\r
+       case MESSAGE_SETTING_FORM_MESSAGE_MAIN:\r
+       case MESSAGE_SETTING_FORM_TEXT_MESSAGES:\r
+       case MESSAGE_SETTING_FORM_FONT_SIZE:\r
+               groupItemCount = __pSettingItemsArray->GetItemCount(groupIndex);\r
+               break;\r
+\r
+       case MESSAGE_SETTING_FORM_SERVICE_CENTER:\r
+       {\r
+               SmscCenterList* pSmscCenterList = SettingPresentationModel::GetInstance()->GetSMSCList();\r
+               if (pSmscCenterList)\r
+               {\r
+                       groupItemCount = pSmscCenterList->GetCount();\r
+               }\r
+       }\r
+       break;\r
+\r
+       case MESSAGE_SETTING_FORM_EDIT_SERVICE_CENTER:\r
+       default:\r
+               break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return groupItemCount;\r
+}\r
+\r
+TableViewGroupItem*\r
+SettingsForm::CreateGroupItem(int groupIndex, int itemWidth)\r
+{\r
+       AppLogDebug("ENTER");\r
+       Label* pGroupName = null;\r
+       CustomTableViewGroupItem* pGroupItem = new (std::nothrow) CustomTableViewGroupItem();\r
+       switch (__settingFormType)\r
+       {\r
+       case MESSAGE_SETTING_FORM_MESSAGE_MAIN:\r
+       case MESSAGE_SETTING_FORM_TEXT_MESSAGES:\r
+       case MESSAGE_SETTING_FORM_FONT_SIZE:\r
+       {\r
+               // For static setting items\r
+               String groupName = __pSettingItemsArray->GetGroupName(groupIndex);\r
+               if (groupName.IsEmpty())\r
+               {\r
+                       pGroupItem->Construct(Dimension(itemWidth, 1));\r
+                       pGroupItem->SetShowState(false);\r
+               }\r
+               else\r
+               {\r
+                       SettingGroupStyle groupStyle = __pSettingItemsArray->GetGroupStyle(groupIndex);\r
+                       if (groupStyle == SETTING_GROUP_STYLE_TITLE)\r
+                       {\r
+                               pGroupItem->Construct(Dimension(itemWidth, H_LIST_GROUP));\r
+                               pGroupName = new (std::nothrow) Label();\r
+                               pGroupName->Construct(Rectangle(0, H_LIST_GROUP / 2 - MARGIN_10PX, itemWidth, (H_LIST_GROUP - MARGIN_10PX) / 2), groupName);\r
+                               pGroupName->SetTextColor(COLOR_LIST_DIALOGUE_GROUP_TITLE);\r
+                               pGroupName->SetTextConfig(LIST_SUB_TEXT_FONT_SIZE, LABEL_TEXT_STYLE_NORMAL);\r
+                       }\r
+                       else if (groupStyle == SETTING_GROUP_STYLE_HELP_TEXT)\r
+                       {\r
+                               pGroupItem->Construct(Dimension(itemWidth, H_LIST_ITEM_112PX));\r
+                               pGroupName = new (std::nothrow) Label();\r
+                               pGroupName->Construct(Rectangle(0, 0, itemWidth, H_LIST_ITEM_112PX), groupName);\r
+                               pGroupName->SetTextColor(COLOR_SETTING_SUB_TEXT);\r
+                               pGroupName->SetTextConfig(LIST_SUB_TEXT_FONT_SIZE, LABEL_TEXT_STYLE_NORMAL);\r
+                       }\r
+                       else\r
+                       {\r
+                               pGroupItem->Construct(Dimension(itemWidth, GetDefaultGroupItemHeight()));\r
+                               pGroupName = new (std::nothrow) Label();\r
+                               pGroupName->Construct(Rectangle(0, 0, itemWidth, GetDefaultGroupItemHeight()), groupName);\r
+                       }\r
+               }\r
+       }\r
+       break;\r
+\r
+       case MESSAGE_SETTING_FORM_SERVICE_CENTER:\r
+       {\r
+               pGroupItem->Construct(Dimension(itemWidth, 1));\r
+               pGroupItem->SetShowState(false);\r
+       }\r
+       break;\r
+\r
+       case MESSAGE_SETTING_FORM_EDIT_SERVICE_CENTER:\r
+       default:\r
+               break;\r
+       }\r
+       if (pGroupName)\r
+       {\r
+               pGroupName->SetTextHorizontalAlignment(ALIGNMENT_LEFT);\r
+               pGroupItem->AddControl(*pGroupName);\r
+       }\r
+       pGroupItem->SetEnabled(false);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pGroupItem;\r
+}\r
+\r
+TableViewItem*\r
+SettingsForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       TableViewItem* pCustomItem = null;\r
+       switch (__settingFormType)\r
+       {\r
+       case MESSAGE_SETTING_FORM_MESSAGE_MAIN:\r
+       case MESSAGE_SETTING_FORM_TEXT_MESSAGES:\r
+       case MESSAGE_SETTING_FORM_FONT_SIZE:\r
+               pCustomItem = CreateSettingItemN(groupIndex, itemIndex, itemWidth);\r
+               break;\r
+\r
+       case MESSAGE_SETTING_FORM_SERVICE_CENTER:\r
+               pCustomItem = CreateSmscCenterListItemN(groupIndex, itemIndex, itemWidth);\r
+               break;\r
+\r
+       case MESSAGE_SETTING_FORM_EDIT_SERVICE_CENTER:\r
+       default:\r
+               break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pCustomItem;\r
+}\r
+\r
+bool\r
+SettingsForm::DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (pItem)\r
+       {\r
+               delete pItem;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return true;\r
+\r
+}\r
+\r
+bool\r
+SettingsForm::DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (pItem)\r
+       {\r
+               delete pItem;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return true;\r
+}\r
+\r
+void\r
+SettingsForm::UpdateItem(int groupIndex, int itemIndex, TableViewItem* pItem)\r
+{\r
+\r
+       AppLogDebug("ENTER");\r
+       UpdateSettingItem(groupIndex, itemIndex, pItem);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+SettingsForm::UpdateGroupItem(int groupIndex, TableViewGroupItem* pItem)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+int\r
+SettingsForm::GetDefaultItemHeight(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return H_LIST_ITEM_112PX;\r
+}\r
+\r
+int\r
+SettingsForm::GetDefaultGroupItemHeight(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return H_GROUP_HEADER;\r
+}\r
+\r
+void\r
+SettingsForm::OnGroupedTableViewGroupItemStateChanged(GroupedTableView& tableView, int groupIndex,\r
+                                                                                                         TableViewGroupItem* pItem, TableViewItemStatus status)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       // Empty implementation\r
+}\r
+\r
+void\r
+SettingsForm::OnGroupedTableViewItemStateChanged(GroupedTableView& tableView, int groupIndex, int itemIndex,\r
+                                                                                                TableViewItem* pItem, TableViewItemStatus status)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       switch (__settingFormType)\r
+       {\r
+       case MESSAGE_SETTING_FORM_MESSAGE_MAIN:\r
+       case MESSAGE_SETTING_FORM_TEXT_MESSAGES:\r
+               HandleSettingSelection(groupIndex, itemIndex, status);\r
+               break;\r
+\r
+       case MESSAGE_SETTING_FORM_FONT_SIZE:\r
+               HandleFontSelection(groupIndex, itemIndex, status);\r
+               break;\r
+\r
+       case MESSAGE_SETTING_FORM_SERVICE_CENTER:\r
+               HandleSmscCenterSelection(groupIndex, itemIndex, status);\r
+               break;\r
+\r
+       case MESSAGE_SETTING_FORM_EDIT_SERVICE_CENTER:\r
+       default:\r
+               break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+SettingsForm::OnGroupedTableViewContextItemActivationStateChanged(GroupedTableView& tableView,\r
+                                                                                                                                 int groupIndex, int itemIndex, TableViewContextItem* pContextItem, bool activated)\r
+{\r
+// Empty implementation\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+String\r
+SettingsForm::GetInputModeText(int type) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       String strText;\r
+       switch (type)\r
+       {\r
+       case SETTING_INPUTMODE_ENCODE_GSM_ALPHABET:\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_GSM_ALPHABET", strText);\r
+               break;\r
+\r
+       case SETTING_INPUTMODE_ENCODE_UCS2:\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_UNICODE", strText);\r
+               break;\r
+\r
+       case SETTING_INPUTMODE_ENCODE_AUTO:\r
+       default:\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_AUTOMATIC", strText);\r
+               break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return strText;\r
+}\r
+\r
+\r
+String\r
+SettingsForm::GetStatusItemText(int type) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       String strText;\r
+       SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();\r
+       switch (type)\r
+       {\r
+       case SETTING_STATUS_ITEM_INPUTMODE:\r
+       {\r
+               SmsSendSettings* pSmsSendSetting = pSettingPrModel->GetSmsSendSetting();\r
+               int encodeMode(-1);\r
+               if (pSmsSendSetting)\r
+               {\r
+                       encodeMode = pSmsSendSetting->GetEncodeMode();\r
+               }\r
+               strText = GetInputModeText(encodeMode);\r
+       }\r
+       break;\r
+\r
+       case SETTING_STATUS_ITEM_SERVICE_CENTER:\r
+       {\r
+               SmscCenterList* pSmscCenters = pSettingPrModel->GetSMSCList();\r
+               int selectCenterIndex(0);\r
+               if (pSmscCenters)\r
+               {\r
+                       selectCenterIndex = pSmscCenters->GetSelectedId();\r
+               }\r
+               strText.Append(IDS_CENTER);\r
+               strText.Append(selectCenterIndex + 1);\r
+       }\r
+       break;\r
+\r
+       case SETTING_STATUS_ITEM_INVALID:\r
+       case SETTING_STATUS_ITEM_HOME_NETWORK:\r
+       case SETTING_STATUS_ITEM_FORIGEN_NETWORK:\r
+       case SETTING_STATUS_ITEM_CREATION_MODE:\r
+               break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return strText;\r
+}\r
+\r
+bool\r
+SettingsForm::GetItemCheckStatus(int controlId) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       bool status(false);\r
+       SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();\r
+       switch (controlId)\r
+       {\r
+       case IDA_SETTINGS_TEXTMSG_REQ_DELIVERY_REPORT:\r
+       {\r
+               SmsSendSettings* pSmsSendSettings = pSettingPrModel->GetSmsSendSetting();\r
+               if (pSmsSendSettings)\r
+               {\r
+                       status = pSmsSendSettings->IsDeliveryReportOn();\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_TEXTMSG_GSM_ALPHABET:\r
+       {\r
+               SmsSendSettings* pSmsSendSettings = pSettingPrModel->GetSmsSendSetting();\r
+               if (pSmsSendSettings)\r
+               {\r
+                       status = (pSmsSendSettings->GetEncodeMode() == SETTING_INPUTMODE_ENCODE_GSM_ALPHABET);\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_TEXTMSG_GSM_UNICODE:\r
+       {\r
+               SmsSendSettings* pSmsSendSettings = pSettingPrModel->GetSmsSendSetting();\r
+               if (pSmsSendSettings)\r
+               {\r
+                       status = (pSmsSendSettings->GetEncodeMode() == SETTING_INPUTMODE_ENCODE_UCS2);\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_TEXTMSG_GSM_AUTOMATIC:\r
+       {\r
+               SmsSendSettings* pSmsSendSettings = pSettingPrModel->GetSmsSendSetting();\r
+               if (pSmsSendSettings)\r
+               {\r
+                       status = (pSmsSendSettings->GetEncodeMode() == SETTING_INPUTMODE_ENCODE_AUTO);\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_BROADCAST_MESSAGES:\r
+       {\r
+               CbReceiveSettings* pCbSetting = pSettingPrModel->GetCbSettings();\r
+               if (pCbSetting)\r
+               {\r
+                       status = pCbSetting->IsCbMessagesOn();\r
+               }\r
+       }\r
+       break;\r
+\r
+       case IDA_SETTINGS_SYSTEM_FONT:\r
+               status = (pSettingPrModel->GetFontSettings()->GetMessageFontType() == SETTING_SYSTEM_FONT);\r
+               break;\r
+\r
+       case IDA_SETTINGS_HUGE_FONT:\r
+               status = (pSettingPrModel->GetFontSettings()->GetMessageFontType() == SETTING_HUGE_FONT);\r
+               break;\r
+\r
+       case IDA_SETTINGS_LARGE_FONT:\r
+               status = (pSettingPrModel->GetFontSettings()->GetMessageFontType() == SETTING_LARGE_FONT);\r
+               break;\r
+\r
+       case IDA_SETTINGS_NORMAL_FONT:\r
+               status = (pSettingPrModel->GetFontSettings()->GetMessageFontType() == SETTING_NORMAL_FONT);\r
+               break;\r
+\r
+       case IDA_SETTINGS_SMALL_FONT:\r
+               status = (pSettingPrModel->GetFontSettings()->GetMessageFontType() == SETTING_SMALL_FONT);\r
+               break;\r
+\r
+       case IDA_SETTINGS_TINY_FONT:\r
+               status = (pSettingPrModel->GetFontSettings()->GetMessageFontType() == SETTING_TINY_FONT);\r
+               break;\r
+\r
+       case IDA_SETTINGS_VOLUME_KEY:\r
+               status = pSettingPrModel->IsVolumeKeyOn();\r
+               break;\r
+\r
+       default:\r
+               break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return status;\r
+}\r
+\r
+int\r
+SettingsForm::GetFontSize(int controlActionId) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       int fontSize;\r
+       SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();\r
+       switch (controlActionId)\r
+       {\r
+       case IDA_SETTINGS_SYSTEM_FONT:\r
+               fontSize = pSettingPrModel->GetFontSettings()->GetMessageTextSize(SETTING_SYSTEM_FONT);\r
+               break;\r
+\r
+       case IDA_SETTINGS_HUGE_FONT:\r
+               fontSize = pSettingPrModel->GetFontSettings()->GetMessageTextSize(SETTING_HUGE_FONT);\r
+               break;\r
+\r
+       case IDA_SETTINGS_LARGE_FONT:\r
+               fontSize = pSettingPrModel->GetFontSettings()->GetMessageTextSize(SETTING_LARGE_FONT);\r
+               break;\r
+\r
+       case IDA_SETTINGS_NORMAL_FONT:\r
+               fontSize = pSettingPrModel->GetFontSettings()->GetMessageTextSize(SETTING_NORMAL_FONT);\r
+               break;\r
+\r
+       case IDA_SETTINGS_SMALL_FONT:\r
+               fontSize = pSettingPrModel->GetFontSettings()->GetMessageTextSize(SETTING_SMALL_FONT);\r
+               break;\r
+\r
+       case IDA_SETTINGS_TINY_FONT:\r
+               fontSize = pSettingPrModel->GetFontSettings()->GetMessageTextSize(SETTING_TINY_FONT);\r
+               break;\r
+\r
+       default:\r
+               fontSize = LIST_MAIN_TEXT_FONT_SIZE;\r
+               break;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return fontSize;\r
+}\r
+\r
+void\r
+SettingsForm::LoadCurrentSettings(void)\r
+{\r
+       if (__pSettingItemsArray)\r
+       {\r
+               for (int groupIndex = 0; groupIndex < __pSettingItemsArray->GetGroupCount(); groupIndex++)\r
+               {\r
+                       for (int itemIndex = 0; itemIndex < __pSettingItemsArray->GetItemCount(groupIndex); itemIndex++)\r
+                       {\r
+                               SettingItem& settingItem = __pSettingItemsArray->GetItemAt(groupIndex, itemIndex);\r
+                               __pSettingGroupTableView->SetItemChecked(groupIndex, itemIndex, GetItemCheckStatus(settingItem.GetActionId()));\r
+                       }\r
+                       if (__pSettingItemsArray->IsGroupExpanded(groupIndex))\r
+                       {\r
+                               __pSettingGroupTableView->ExpandGroup(groupIndex);\r
+                       }\r
+               }\r
+               __pSettingGroupTableView->UpdateTableView();\r
+       }\r
+}\r
diff --git a/src/MsgSettingsItemList.cpp b/src/MsgSettingsItemList.cpp
new file mode 100644 (file)
index 0000000..76aa28f
--- /dev/null
@@ -0,0 +1,138 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include "MsgSettingsItemList.h"\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Ui;\r
+using namespace Tizen::Ui::Controls;\r
+\r
+SettingItemsList::SettingItemsList(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       __settingGroupArray.Construct();\r
+       __settingItemArray.Construct();\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+int\r
+SettingItemsList::GetGroupCount(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __settingGroupArray.GetCount();\r
+}\r
+int\r
+SettingItemsList::GetItemCount(int groupIndex) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       Object* obj = const_cast<Object*>(__settingGroupArray.GetAt(groupIndex));\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return static_cast<GroupData*>(obj)->groupItemCount;\r
+}\r
+\r
+int\r
+SettingItemsList::AddGroup(const String& groupName, SettingGroupStyle groupStyle, bool isExpanded)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       GroupData* pGroupData = new (std::nothrow) GroupData();\r
+       pGroupData->groupName = groupName;\r
+       pGroupData->groupStyle = groupStyle;\r
+       pGroupData->groupExpanded = isExpanded;\r
+       __settingGroupArray.Add(pGroupData);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return (__settingGroupArray.GetCount() - 1);\r
+}\r
+\r
+const String&\r
+SettingItemsList::GetGroupName(int groupIndex) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       GroupData* pGroupData = static_cast<GroupData*>(const_cast<Object*>(__settingGroupArray.GetAt(groupIndex)));\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pGroupData->groupName;\r
+}\r
+\r
+SettingGroupStyle\r
+SettingItemsList::GetGroupStyle(int groupIndex) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       GroupData* pGroupData = static_cast<GroupData*>(const_cast<Object*>(__settingGroupArray.GetAt(groupIndex)));\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pGroupData->groupStyle;\r
+}\r
+\r
+void\r
+SettingItemsList::SetgroupExpandStatus(int groupIndex, bool value)\r
+{\r
+       AppLogDebug("ENTER");\r
+       GroupData* pGroupData = static_cast<GroupData*>(__settingGroupArray.GetAt(groupIndex));\r
+       pGroupData->groupExpanded = value;\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+bool\r
+SettingItemsList::IsGroupExpanded(int groupIndex)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       GroupData* pGroupData = static_cast<GroupData*>(__settingGroupArray.GetAt(groupIndex));\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pGroupData->groupExpanded;\r
+}\r
+\r
+\r
+void\r
+SettingItemsList::AddItem(int groupIndex, SettingItem& settingItem)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       Object* pObject = __settingGroupArray.GetAt(groupIndex);\r
+       static_cast<GroupData*>(pObject)->groupItemCount++;\r
+       __settingItemArray.Add(&settingItem);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+SettingItem&\r
+SettingItemsList::GetItemAt(int groupIndex, int selectIndex) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int index(selectIndex);\r
+       for (int curIndex = 0; curIndex < groupIndex; curIndex++)\r
+       {\r
+               index += static_cast<GroupData*>(const_cast<Object*>(__settingGroupArray.GetAt(curIndex)))->groupItemCount;\r
+       }\r
+       SettingItem* pSettingItem = static_cast<SettingItem*>(const_cast<Object*>(__settingItemArray.GetAt(index)));\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return *pSettingItem;\r
+}\r
diff --git a/src/MsgSmsManager.cpp b/src/MsgSmsManager.cpp
new file mode 100644 (file)
index 0000000..9269cc9
--- /dev/null
@@ -0,0 +1,674 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <msg.h>\r
+#include <msg_storage.h>\r
+#include <msg_transport.h>\r
+#include <msg_types.h>\r
+\r
+#include <FBase.h>\r
+#include <FBaseErrorDefine.h>\r
+\r
+#include "MsgEvent.h"\r
+#include "MsgISmsEventListener.h"\r
+#include "MsgSmsManager.h"\r
+#include "MsgSmsSendSettings.h"\r
+\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Base::Runtime;\r
+using namespace Tizen::Base::Utility;\r
+\r
+SmsManager::SmsManager(msg_handle_t pMsgHandle)\r
+       : __pMsgHandle(pMsgHandle)\r
+       , __pSmsEventListener(null)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+// Destructor\r
+SmsManager::~SmsManager(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pSmsEventListener)\r
+       {\r
+               __pSmsEventListener->RemoveAll(true);\r
+               delete __pSmsEventListener;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+\r
+result\r
+SmsManager::Construct(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       msg_error_t err = MSG_SUCCESS;\r
+       err = msg_reg_sent_status_callback(__pMsgHandle, &MessageSentStatusCallback, this);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("msg_reg_sent_status_callback err = %d", (int) err);\r
+               r |= E_FAILURE;\r
+       }\r
+       err = msg_reg_sms_message_callback(__pMsgHandle, &IncommingSmsCallback, 0, this);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("msg_reg_sms_message_callback err = %d", (int) err);\r
+               r |= E_FAILURE;\r
+       }\r
+\r
+       // Keep thread observer\r
+       __pSmsEventListener = new (std::nothrow) ArrayList();\r
+       __pSmsEventListener->Construct();\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+result\r
+SmsManager::AddSmsEventListener(const ISmsEventListener& eventListener)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       SmsEvent* pSmsEvent = new (std::nothrow) SmsEvent(&eventListener);\r
+       result r = __pSmsEventListener->Add(pSmsEvent); // Transfer ownership.\r
+       if (r != E_SUCCESS)\r
+       {\r
+               delete pSmsEvent;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+result\r
+SmsManager::RemoveSmsEventListener(const ISmsEventListener& eventListener)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       if (__pSmsEventListener)\r
+       {\r
+               IEnumerator* pEventenum = __pSmsEventListener->GetEnumeratorN();\r
+               if (pEventenum)\r
+               {\r
+                       SmsEvent* pSmsEvent = null;\r
+                       while (pEventenum->MoveNext() == E_SUCCESS)\r
+                       {\r
+                               pSmsEvent = static_cast<SmsEvent*>(pEventenum->GetCurrent());\r
+                               if (pSmsEvent->IsSame(&eventListener))\r
+                               {\r
+                                       // Took ownership, delete element object.\r
+                                       r = __pSmsEventListener->Remove(*pSmsEvent, true);\r
+                                       break;\r
+                               }\r
+                       }\r
+               }\r
+               // Free memory\r
+               if (pEventenum)\r
+               {\r
+                       delete pEventenum;\r
+                       pEventenum = null;\r
+               }\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+void\r
+SmsManager::IncommingSmsCallback(msg_handle_t pHandle, msg_struct_t pMsg, void* pUserParam)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (!pUserParam || !pMsg)\r
+       {\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return;\r
+       }\r
+       static_cast<SmsManager*>(pUserParam)->IncommingSMS(pHandle, pMsg);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+SmsManager::MessageSentStatusCallback(msg_handle_t pHandle, msg_struct_t pSentStatus, void* pUserParam)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (!pUserParam || !pSentStatus)\r
+       {\r
+               return;\r
+       }\r
+       static_cast<SmsManager*>(pUserParam)->SentMessageStatus(pHandle, pSentStatus);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+SmsManager::IncommingSMS(msg_handle_t pHandle, msg_struct_t pMsg)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pSmsEventListener->GetCount() > 0)\r
+       {\r
+               IEnumerator* pEventenum = __pSmsEventListener->GetEnumeratorN();\r
+               if (pEventenum)\r
+               {\r
+                       SmsEvent* pSmsEvent = null;\r
+                       while (pEventenum->MoveNext() == E_SUCCESS)\r
+                       {\r
+                               pSmsEvent = static_cast<SmsEvent*>(pEventenum->GetCurrent());\r
+                               ISmsEventListener* pSmsListener = static_cast<ISmsEventListener*>(\r
+                                       const_cast<IEventListener*>(pSmsEvent->GetEvent()));\r
+                               if (pSmsListener)\r
+                               {\r
+                                       pSmsListener->OnSmsReceive();\r
+                               }\r
+                       }\r
+               }\r
+               // Free memory\r
+               if (pEventenum)\r
+               {\r
+                       delete pEventenum;\r
+                       pEventenum = null;\r
+               }\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+SmsManager::SentMessageStatus(msg_handle_t pHandle, msg_struct_t pSentStatus)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__pSmsEventListener->GetCount() > 0)\r
+       {\r
+               IEnumerator* pEventenum = __pSmsEventListener->GetEnumeratorN();\r
+               if (pEventenum)\r
+               {\r
+                       SmsEvent* pSmsEvent = null;\r
+                       while (pEventenum->MoveNext() == E_SUCCESS)\r
+                       {\r
+                               pSmsEvent = static_cast<SmsEvent*>(pEventenum->GetCurrent());\r
+                               ISmsEventListener* pSmsListener = static_cast<ISmsEventListener*>(\r
+                                       const_cast<IEventListener*>(pSmsEvent->GetEvent()));\r
+                               if (pSmsListener)\r
+                               {\r
+                                       int sentStatus = MSG_NETWORK_SEND_FAIL;\r
+                                       msg_get_int_value(pSentStatus, MSG_SENT_STATUS_NETWORK_STATUS_INT, &sentStatus);\r
+                                       pSmsListener->OnSmsSentStatusChange(sentStatus);\r
+                               }\r
+                       }\r
+               }\r
+               // Free memory\r
+               if (pEventenum)\r
+               {\r
+                       delete pEventenum;\r
+                       pEventenum = null;\r
+               }\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+MsgResponse\r
+SmsManager::SendMessage(const String& msgText, int threadId, const SmsSendSettings* pSmsSendings)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       // 1. Create new message\r
+       msg_struct_t pMsgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);\r
+       if (!pMsgInfo)\r
+       {\r
+               AppLogDebug("msg_new_message fail");\r
+               return MSG_RESPONSE_FAIL;\r
+       }\r
+       msg_error_t err = MSG_SUCCESS;\r
+       // 2. Make SMS\r
+       MsgResponse response = CreateSms(pMsgInfo, msgText, threadId);\r
+       if (response == MSG_RESPONSE_SUCCESS)\r
+       {\r
+               // 3. Send SMS\r
+               msg_struct_t pRequest = msg_create_struct(MSG_STRUCT_REQUEST_INFO);\r
+               msg_struct_t pSendOpt = NULL;\r
+               msg_get_struct_handle(pRequest, MSG_REQUEST_SENDOPT_HND, &pSendOpt);\r
+               msg_set_bool_value(pSendOpt, MSG_SEND_OPT_SETTING_BOOL, false);\r
+               bool reqDeliveryReport(false);\r
+               if (pSmsSendings)\r
+               {\r
+                       // Set encoding type based on setting\r
+                       msg_encode_type_t encodeType = pSmsSendings->GetEncodeType();\r
+                       msg_set_int_value(pMsgInfo, MSG_MESSAGE_ENCODE_TYPE_INT, encodeType);\r
+                       reqDeliveryReport = pSmsSendings->IsDeliveryReportOn();\r
+               }\r
+               msg_set_bool_value(pSendOpt, MSG_SEND_OPT_DELIVER_REQ_BOOL, reqDeliveryReport);\r
+               msg_set_struct_handle(pRequest, MSG_REQUEST_MESSAGE_HND, pMsgInfo);\r
+               err = msg_sms_send_message(__pMsgHandle, pRequest);\r
+               if (err != MSG_SUCCESS)\r
+               {\r
+                       AppLogDebug("msg_sms_send_message fail = %d", (int) err);\r
+                       response = MSG_RESPONSE_FAIL;\r
+               }\r
+               // Release send message struct.\r
+               msg_release_struct(&pRequest);\r
+       }\r
+       //4. Release message info.\r
+       err = msg_release_struct(&pMsgInfo);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("msg_release_message fail = %d", (int) err);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return response;\r
+}\r
+\r
+MsgResponse\r
+SmsManager::SaveMessage(const String& msgText, int threadId)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       // 1. Create new message\r
+       msg_struct_t pMsgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);\r
+       if (!pMsgInfo)\r
+       {\r
+               AppLogDebug("msg_new_message fail");\r
+               return MSG_RESPONSE_FAIL;\r
+       }\r
+       msg_error_t err = MSG_SUCCESS;\r
+       // 2. Make SMS\r
+       MsgResponse response = CreateSms(pMsgInfo, msgText, threadId);\r
+       if (response == MSG_RESPONSE_SUCCESS)\r
+       {\r
+               // 3. Save SMS\r
+               msg_struct_t pSendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);\r
+               msg_set_bool_value(pSendOpt, MSG_SEND_OPT_SETTING_BOOL, false);\r
+               err = msg_add_message(__pMsgHandle, (const msg_struct_t) pMsgInfo, (const msg_struct_t) pSendOpt);\r
+               if (err != MSG_SUCCESS)\r
+               {\r
+                       AppLogDebug("msg_add_message fail = %d", (int) err);\r
+                       response = MSG_RESPONSE_FAIL;\r
+               }\r
+               // Release struct.\r
+               msg_release_struct(&pSendOpt);\r
+       }\r
+       //4. Release message info.\r
+       err = msg_release_struct(&pMsgInfo);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("msg_release_message fail = %d", (int) err);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return response;\r
+}\r
+\r
+MsgResponse\r
+SmsManager::CreateSms(msg_struct_t pMsgInfo, const String& msgText, int threadId)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       // 1. Set message type.\r
+       MsgResponse response = SetMessageType(pMsgInfo);\r
+       if (response != MSG_RESPONSE_SUCCESS)\r
+       {\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return response;\r
+       }\r
+       //2. Set body.\r
+       response = SetMessageBody(pMsgInfo, msgText);\r
+       if (response != MSG_RESPONSE_SUCCESS)\r
+       {\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return response;\r
+       }\r
+\r
+       //3. Fetch recipients\r
+       response = SetRecipientList(pMsgInfo, threadId);\r
+       if (response != MSG_RESPONSE_SUCCESS)\r
+       {\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return response;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return MSG_RESPONSE_SUCCESS;\r
+}\r
+\r
+MsgResponse\r
+SmsManager::CreateSms(msg_struct_t pMsgInfo, const String& msgText, const IList& addressList)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       // 1. Set message type.\r
+       MsgResponse response = SetMessageType(pMsgInfo);\r
+       if (response != MSG_RESPONSE_SUCCESS)\r
+       {\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return response;\r
+       }\r
+       //2. Set body.\r
+       response = SetMessageBody(pMsgInfo, msgText);\r
+       if (response != MSG_RESPONSE_SUCCESS)\r
+       {\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return response;\r
+       }\r
+       //3. Fetch recipients\r
+       response = SetRecipientList(pMsgInfo, addressList);\r
+       if (response != MSG_RESPONSE_SUCCESS)\r
+       {\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return response;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return MSG_RESPONSE_SUCCESS;\r
+}\r
+\r
+MsgResponse\r
+SmsManager::SendMessage(const String& msgText, const IList& addressList, int& msgThreadId, const SmsSendSettings* pSmsSendings)\r
+{\r
+       AppLogDebug("ENTER");\r
+       // 1. Create new message\r
+       msg_struct_t pMsgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);\r
+       if (!pMsgInfo)\r
+       {\r
+               AppLogDebug("msg_new_message fail");\r
+               return MSG_RESPONSE_FAIL;\r
+       }\r
+       msg_error_t err = MSG_SUCCESS;\r
+       // 2. Make SMS\r
+       MsgResponse response = CreateSms(pMsgInfo, msgText, addressList);\r
+       if (response == MSG_RESPONSE_SUCCESS)\r
+       {\r
+               // 3. Send SMS\r
+               msg_struct_t pRequest = msg_create_struct(MSG_STRUCT_REQUEST_INFO);\r
+               msg_struct_t pSendOpt = NULL;\r
+               msg_get_struct_handle(pRequest, MSG_REQUEST_SENDOPT_HND, &pSendOpt);\r
+               msg_set_bool_value(pSendOpt, MSG_SEND_OPT_SETTING_BOOL, false);\r
+               bool reqDeliveryReport(false);\r
+               if (pSmsSendings)\r
+               {\r
+                       // Set encoding type based on setting\r
+                       msg_encode_type_t encodeType = pSmsSendings->GetEncodeType();\r
+                       msg_set_int_value(pMsgInfo, MSG_MESSAGE_ENCODE_TYPE_INT, encodeType);\r
+                       reqDeliveryReport = pSmsSendings->IsDeliveryReportOn();\r
+               }\r
+               msg_set_bool_value(pSendOpt, MSG_SEND_OPT_DELIVER_REQ_BOOL, reqDeliveryReport);\r
+               msg_set_struct_handle(pRequest, MSG_REQUEST_MESSAGE_HND, pMsgInfo);\r
+               err = msg_sms_send_message(__pMsgHandle, pRequest);\r
+               if (err != MSG_SUCCESS)\r
+               {\r
+                       AppLogDebug("msg_sms_send_message fail = %d", (int) err);\r
+                       response = MSG_RESPONSE_FAIL;\r
+               }\r
+               // Get thread ID\r
+               msg_thread_id_t threadId;\r
+               msg_struct_list_s* pRecepientList = NULL;\r
+               msg_get_list_handle(pMsgInfo, MSG_MESSAGE_ADDR_LIST_STRUCT, (void**) &pRecepientList);\r
+               err = msg_get_thread_id_by_address(__pMsgHandle, pRecepientList, &threadId);\r
+               AppLogDebug("msg_get_thread_id_by_address  err = %d", (int) err);\r
+               if (err == MSG_SUCCESS)\r
+               {\r
+                       msgThreadId = (int) threadId;\r
+               }\r
+               // Release send message struct.\r
+               msg_release_struct(&pRequest);\r
+       }\r
+       //4. Release message info.\r
+       err = msg_release_struct(&pMsgInfo);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("msg_release_message fail = %d", (int) err);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return response;\r
+}\r
+\r
+MsgResponse\r
+SmsManager::SaveMessage(const String& msgText, const IList& addressList)\r
+{\r
+       AppLogDebug("ENTER");\r
+       // 1. Create new message\r
+       msg_struct_t pMsgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);\r
+       if (!pMsgInfo)\r
+       {\r
+               AppLogDebug("msg_new_message fail");\r
+               return MSG_RESPONSE_FAIL;\r
+       }\r
+       msg_error_t err = MSG_SUCCESS;\r
+       // 2. Make SMS\r
+       MsgResponse response = CreateSms(pMsgInfo, msgText, addressList);\r
+       if (response == MSG_RESPONSE_SUCCESS)\r
+       {\r
+               // 3. Save SMS\r
+               msg_struct_t pSendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);\r
+               msg_set_bool_value(pSendOpt, MSG_SEND_OPT_SETTING_BOOL, false);\r
+               err = msg_add_message(__pMsgHandle, (const msg_struct_t) pMsgInfo, (const msg_struct_t) pSendOpt);\r
+               if (err != MSG_SUCCESS)\r
+               {\r
+                       AppLogDebug("msg_add_message fail = %d", (int) err);\r
+                       response = MSG_RESPONSE_FAIL;\r
+               }\r
+               // Release struct.\r
+               msg_release_struct(&pSendOpt);\r
+       }\r
+       //4. Release message info.\r
+       err = msg_release_struct(&pMsgInfo);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("msg_release_message fail = %d", (int) err);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return response;\r
+}\r
+\r
+MsgResponse\r
+SmsManager::SetMessageType(msg_struct_t pMsgInfo)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       msg_error_t err = MSG_SUCCESS;\r
+       if ((err = msg_set_int_value(pMsgInfo, MSG_MESSAGE_TYPE_INT, MSG_TYPE_SMS)) != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("msg_set_message_type error = %d", (int) err);\r
+               AppLogDebug("EXIT");\r
+               return MSG_RESPONSE_INVALID_MSG_TYPE;\r
+       }\r
+\r
+       AppLogDebug("EXIT");\r
+       return MSG_RESPONSE_SUCCESS;\r
+}\r
+\r
+MsgResponse\r
+SmsManager::SetMessageBody(msg_struct_t pMsgInfo, const String& msgText)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (msgText.GetLength() <= 0)\r
+       {\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return MSG_RESPONSE_EMPTY_BODY;\r
+       }\r
+       int msgLength = msgText.GetLength() * 4 + 1;  // For null terminated.\r
+       char* pBodyText = new (std::nothrow) char[msgLength];\r
+       if (pBodyText)\r
+       {\r
+               memset(pBodyText, '\0', (size_t) msgLength);\r
+               const wchar_t* pText = msgText.GetPointer();\r
+               wcstombs(pBodyText, pText, (size_t) msgLength);\r
+               msg_error_t err = MSG_SUCCESS;\r
+               if ((err = msg_set_str_value(pMsgInfo, MSG_MESSAGE_SMS_DATA_STR, pBodyText\r
+                                                                       , (int) strlen(pBodyText))) != MSG_SUCCESS)\r
+               {\r
+                       delete[] pBodyText;\r
+                       AppLogDebug("msg_sms_set_message_body error=%d", (int) err);\r
+                       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+                       return MSG_RESPONSE_INVALID_BODY;\r
+               }\r
+               // release body text.\r
+               delete[] pBodyText;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return MSG_RESPONSE_SUCCESS;\r
+}\r
+\r
+MsgResponse\r
+SmsManager::SetRecipientList(msg_struct_t pMsgInfo, int threadId)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       msg_error_t err = MSG_SUCCESS;\r
+       MsgResponse response = MSG_RESPONSE_SUCCESS;\r
+       msg_struct_list_s pAddressList = {0};\r
+       msg_thread_id_t thrdId = threadId;\r
+       if ((err = msg_get_address_list(__pMsgHandle, thrdId, &pAddressList)) != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("msg_get_address_list error=%d", (int) err);\r
+               return MSG_RESPONSE_RECIPIENT_INVALID;\r
+       }\r
+       // Set recipient list here\r
+       if (pAddressList.nCount > 0)\r
+       {\r
+               //4. Set Address\r
+               char recipient[MAX_ADDRESS_VAL_LEN] = {0};\r
+               msg_struct_list_s* pRecepientList = NULL;\r
+               msg_get_list_handle(pMsgInfo, MSG_MESSAGE_ADDR_LIST_STRUCT, (void**) &pRecepientList);\r
+               pRecepientList->nCount = pAddressList.nCount;\r
+               for (int count = 0; count < pAddressList.nCount; count++)\r
+               {\r
+                       err = msg_get_str_value(pAddressList.msg_struct_info[count],\r
+                                                                       MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, recipient, MAX_ADDRESS_VAL_LEN);\r
+\r
+                       if (err != MSG_SUCCESS)\r
+                       {\r
+                               continue;\r
+                       }\r
+                       //TODO: Need to check if address type is email or number.\r
+                       msg_set_int_value(pRecepientList->msg_struct_info[count], MSG_ADDRESS_INFO_ADDRESS_TYPE_INT, MSG_ADDRESS_TYPE_PLMN);\r
+                       msg_set_int_value(pRecepientList->msg_struct_info[count], MSG_ADDRESS_INFO_RECIPIENT_TYPE_INT, MSG_RECIPIENTS_TYPE_TO);\r
+                       err = msg_set_str_value(pRecepientList->msg_struct_info[count], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, recipient, (int) strlen(recipient));\r
+                       if (err != MSG_SUCCESS)\r
+                       {\r
+                               AppLogDebug(" msg_set_str_value  error=%d", (int) err);\r
+                               response = MSG_RESPONSE_RECIPIENT_INVALID;\r
+                               break;\r
+                       }\r
+               }\r
+       }\r
+       else\r
+       {\r
+               response = MSG_RESPONSE_RECIPIENT_ZERO;\r
+       }\r
+       // Free memory\r
+       msg_release_list_struct(&pAddressList);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return response;\r
+}\r
+\r
+MsgResponse\r
+SmsManager::SetRecipientList(msg_struct_t pMsgInfo, const IList& addressList)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int addressListCount(0);\r
+       if ((addressListCount = addressList.GetCount()) <= 0)\r
+       {\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               return MSG_RESPONSE_RECIPIENT_ZERO;\r
+       }\r
+       MsgResponse response = MSG_RESPONSE_SUCCESS;\r
+       msg_error_t err = MSG_SUCCESS;\r
+       msg_struct_list_s* pRecepientList = NULL;\r
+       msg_get_list_handle(pMsgInfo, MSG_MESSAGE_ADDR_LIST_STRUCT, (void**) &pRecepientList);\r
+       pRecepientList->nCount = addressListCount;\r
+       AppLogDebug("Address list count = %d", pRecepientList->nCount);\r
+       for (int count = 0; count < addressListCount; count++)\r
+       {\r
+               const String* pPhoneNumberObj = static_cast<String*>(\r
+                       const_cast<Object*>(addressList.GetAt(count)));\r
+               int phoneNumberLen = pPhoneNumberObj->GetLength() * 4 + 1;\r
+               char* pPhoneNumber = new (std::nothrow) char[phoneNumberLen];\r
+               const wchar_t* pNumber = pPhoneNumberObj->GetPointer();\r
+               wcstombs(pPhoneNumber, pNumber, (size_t) phoneNumberLen);\r
+               AppLogDebug("Phone Number = %S", pPhoneNumberObj->GetPointer());\r
+               //TODO: Need to check if address type is email or number.\r
+               msg_set_int_value(pRecepientList->msg_struct_info[count], MSG_ADDRESS_INFO_ADDRESS_TYPE_INT, MSG_ADDRESS_TYPE_PLMN);\r
+               msg_set_int_value(pRecepientList->msg_struct_info[count], MSG_ADDRESS_INFO_RECIPIENT_TYPE_INT, MSG_RECIPIENTS_TYPE_TO);\r
+               if (pPhoneNumber)\r
+               {\r
+                       err = msg_set_str_value(pRecepientList->msg_struct_info[count], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, pPhoneNumber, (int) strlen(pPhoneNumber));\r
+               }\r
+               if (err != MSG_SUCCESS)\r
+               {\r
+                       AppLogDebug(" msg_set_str_value  error=%d", (int) err);\r
+                       response = MSG_RESPONSE_RECIPIENT_INVALID;\r
+                       delete[] pPhoneNumber;\r
+                       break;\r
+               }\r
+               // Release memory\r
+               delete[] pPhoneNumber;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return response;\r
+}\r
+\r
+\r
+MsgResponse\r
+SmsManager::ReSendMessage(int messageId)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       MsgResponse response = MSG_RESPONSE_SUCCESS;\r
+       msg_struct_t pFaildMsg = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);\r
+       msg_struct_t pSendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);\r
+       msg_message_id_t msgId = messageId;\r
+       msg_error_t err = msg_get_message(__pMsgHandle, msgId, pFaildMsg, pSendOpt);\r
+       if (err == MSG_SUCCESS)\r
+       {\r
+               msg_struct_t pResenRequest = msg_create_struct(MSG_STRUCT_REQUEST_INFO);\r
+               msg_set_struct_handle(pResenRequest, MSG_REQUEST_MESSAGE_HND, pFaildMsg);\r
+               msg_set_struct_handle(pResenRequest, MSG_REQUEST_SENDOPT_HND, pSendOpt);\r
+               err = msg_sms_send_message(__pMsgHandle, pResenRequest);\r
+               if (err != MSG_SUCCESS)\r
+               {\r
+                       AppLog("msg_sms_send_message fail = %d", (int) err);\r
+                       response = MSG_RESPONSE_FAIL;\r
+               }\r
+               msg_release_struct(&pResenRequest);\r
+       }\r
+       else\r
+       {\r
+               AppLog("msg_get_message fail = %d", (int) err);\r
+               response = MSG_RESPONSE_FAIL;\r
+       }\r
+       msg_release_struct(&pSendOpt);\r
+       msg_release_struct(&pFaildMsg);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return response;\r
+}\r
diff --git a/src/MsgSmsSendSettings.cpp b/src/MsgSmsSendSettings.cpp
new file mode 100644 (file)
index 0000000..a9528d8
--- /dev/null
@@ -0,0 +1,168 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <msg.h>\r
+\r
+#include <FBaseErrorDefine.h>\r
+#include <FBaseResult.h>\r
+\r
+\r
+#include "MsgSmsSendSettings.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::Base;\r
+\r
+SmsSendSettings::SmsSendSettings(msg_struct_t pSmsSendSetting)\r
+       : __pSmsSendSetting(pSmsSendSetting)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+SmsSendSettings::~SmsSendSettings(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pSmsSendSetting)\r
+       {\r
+               msg_release_struct(&__pSmsSendSetting);\r
+               __pSmsSendSetting = null;\r
+       }\r
+\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+msg_struct_t\r
+SmsSendSettings::GetSmsSendOpt(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(GetLastResult()));\r
+       return __pSmsSendSetting;\r
+\r
+}\r
+int\r
+SmsSendSettings::GetEncodeType(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int encodeType(MSG_ENCODE_GSM7BIT);\r
+       msg_get_int_value(__pSmsSendSetting, MSG_SMS_SENDOPT_ENCODE_TYPE_INT, &encodeType);\r
+\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(GetLastResult()));\r
+       return encodeType;\r
+}\r
+\r
+int\r
+SmsSendSettings::GetEncodeMode(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int encodeType(GetEncodeType());\r
+       switch (GetEncodeType())\r
+       {\r
+       case MSG_ENCODE_GSM7BIT:\r
+       case MSG_ENCODE_8BIT:\r
+       {\r
+               encodeType = SETTING_INPUTMODE_ENCODE_GSM_ALPHABET;\r
+       }\r
+       break;\r
+\r
+       case MSG_ENCODE_UCS2:\r
+       {\r
+               encodeType = SETTING_INPUTMODE_ENCODE_UCS2;\r
+       }\r
+       break;\r
+\r
+       case MSG_ENCODE_AUTO:\r
+       {\r
+               encodeType = SETTING_INPUTMODE_ENCODE_AUTO;\r
+       }\r
+       break;\r
+       }\r
+\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(GetLastResult()));\r
+       return encodeType;\r
+}\r
+\r
+bool\r
+SmsSendSettings::IsDeliveryReportOn(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       bool report(false);\r
+       msg_get_bool_value(__pSmsSendSetting, MSG_SMS_SENDOPT_DELIVERY_REPORT_BOOL, &report);\r
+\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(GetLastResult()));\r
+       return report;\r
+}\r
+\r
+result\r
+SmsSendSettings::SetEncodeMode(int newType)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+\r
+       switch (newType)\r
+       {\r
+       case SETTING_INPUTMODE_ENCODE_GSM_ALPHABET:\r
+       {\r
+               newType = MSG_ENCODE_GSM7BIT;\r
+       }\r
+       break;\r
+\r
+       case SETTING_INPUTMODE_ENCODE_UCS2:\r
+       {\r
+               newType = MSG_ENCODE_UCS2;\r
+       }\r
+       break;\r
+\r
+       case SETTING_INPUTMODE_ENCODE_AUTO:\r
+       {\r
+               newType = MSG_ENCODE_AUTO;\r
+       }\r
+       break;\r
+       }\r
+\r
+       msg_error_t err;\r
+       err = msg_set_int_value(__pSmsSendSetting, MSG_SMS_SENDOPT_ENCODE_TYPE_INT, newType);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("Encode mode setting error [%d]", (int) err);\r
+       }\r
+\r
+       r = GetLastResult();\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(r));\r
+       return r;\r
+}\r
+\r
+result\r
+SmsSendSettings::SetDeliveryReportRequestStatus(bool status)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       msg_error_t err;\r
+       err = msg_set_bool_value(__pSmsSendSetting, MSG_SMS_SENDOPT_DELIVERY_REPORT_BOOL, status);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("Delivery report setting error [%d]", (int) err);\r
+       }\r
+\r
+       r = GetLastResult();\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(r));\r
+       return r;\r
+}\r
diff --git a/src/MsgSmsViewerForm.cpp b/src/MsgSmsViewerForm.cpp
new file mode 100644 (file)
index 0000000..cd0aea8
--- /dev/null
@@ -0,0 +1,187 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <FUiCtrlFooter.h>\r
+#include <FUiCtrlHeader.h>\r
+#include <FUiScenesBackwardSceneTransition.h>\r
+#include <FUiScenesSceneManager.h>\r
+\r
+#include "MsgMessageData.h"\r
+#include "MsgMessagePresentationModel.h"\r
+#include "MsgSmsViewerForm.h"\r
+#include "MsgTypes.h"\r
+\r
+\r
+using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Ui;\r
+using namespace Tizen::Ui::Controls;\r
+using namespace Tizen::Ui::Scenes;\r
+\r
+SmsViewerForm::SmsViewerForm(void)\r
+       : __pMessageEntry(null)\r
+       , __pMessageTextBox(null)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+SmsViewerForm::~SmsViewerForm(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pMessageEntry)\r
+       {\r
+               delete __pMessageEntry;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+bool\r
+SmsViewerForm::Initialize(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = Construct(L"IDL_SMS_VIEWER_FORM");\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return (!IsFailed(r));\r
+}\r
+\r
+void\r
+SmsViewerForm::OnIntializeFooter(Footer& footer)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       // Set event listener\r
+       footer.AddActionEventListener(*this);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+SmsViewerForm::OnIntializeHeader(Header& header)\r
+{\r
+       AppLogDebug("ENTER");\r
+       // Set event listener\r
+       header.AddActionEventListener(*this);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+SmsViewerForm::OnInitializing(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = BaseForm::InitializeBase();\r
+       __pMessageTextBox = new (std::nothrow) TextBox();\r
+       if (r != E_SUCCESS || !__pMessageTextBox)\r
+       {\r
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+               r = E_FAILURE;\r
+               return r;\r
+       }\r
+       Rectangle rect = GetClientAreaBounds();\r
+       r = __pMessageTextBox->Construct(Rectangle(0, 0, rect.width, rect.height),\r
+                                                                        TEXT_BOX_BORDER_NONE);\r
+       AddControl(*__pMessageTextBox);\r
+       __pMessageTextBox->SetTextSize(MSG_SMS_VIEWER_FONT_SIZE);\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+result\r
+SmsViewerForm::OnTerminating(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+void\r
+SmsViewerForm::OnSceneActivatedN(const SceneId& previousSceneId,\r
+                                                                const SceneId& currentSceneId, IList* pArgs)\r
+{\r
+       AppLogDebug("ENTER");\r
+       if (__previousSceneId.IsEmpty())\r
+       {\r
+               __previousSceneId.Append(previousSceneId);\r
+       }\r
+       if (pArgs)\r
+       {\r
+               BaseData* pBaseData = (BaseData*) pArgs->GetAt(0);\r
+               MessagePresentationModel* pMessagePresentationModel = MessagePresentationModel::GetInstance();\r
+               if (pMessagePresentationModel && pBaseData)\r
+               {\r
+                       __pMessageEntry = pMessagePresentationModel->GetMessageDataByIdN(pBaseData->GetEntryId());\r
+               }\r
+               pArgs->RemoveAll(true);\r
+               delete pArgs;\r
+       }\r
+       // Load data to UI\r
+       if (__pMessageEntry)\r
+       {\r
+               // Set title\r
+               GetHeader()->SetTitleText(__pMessageEntry->GetDisplayName());\r
+               // Set Body text\r
+               __pMessageTextBox->SetText(__pMessageEntry->GetMessageText());\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+SmsViewerForm::OnSceneDeactivated(const SceneId& currentSceneId,\r
+                                                                 const SceneId& nextSceneId)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+SmsViewerForm::OnOrientationChanged(const Control& source, OrientationStatus orientationStatus)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+void\r
+SmsViewerForm::OnActionPerformed(const Control& source, int actionId)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       // Empty implementation.\r
+       return;\r
+}\r
+\r
+void\r
+SmsViewerForm::OnFormBackRequested(Form& source)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       // Back to message list form\r
+       SceneManager* pSceneManager = SceneManager::GetInstance();\r
+       pSceneManager->GoBackward(BackwardSceneTransition(__previousSceneId, SCENE_TRANSITION_ANIMATION_TYPE_NONE));\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
diff --git a/src/MsgSmscCenterList.cpp b/src/MsgSmscCenterList.cpp
new file mode 100644 (file)
index 0000000..1f6db97
--- /dev/null
@@ -0,0 +1,174 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <msg.h>\r
+#include <msg_storage.h>\r
+\r
+#include <FBaseErrorDefine.h>\r
+#include <FBaseResult.h>\r
+#include <FBaseString.h>\r
+\r
+#include "MsgSmscCenterList.h"\r
+\r
+using namespace Tizen::Base;\r
+\r
+// Constructor\r
+SmscCenterList::SmscCenterList(msg_struct_t pSmscInfo)\r
+       : __pSmscOpt(pSmscInfo)\r
+       , __pSmscList(null)\r
+{\r
+       //Empty implementation\r
+}\r
+\r
+// Destructor\r
+SmscCenterList::~SmscCenterList(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       // Release resource;\r
+       if (__pSmscOpt)\r
+       {\r
+               msg_release_struct(&__pSmscOpt);\r
+       }\r
+\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+// Second phase constructor\r
+void\r
+SmscCenterList::Construct(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       msg_error_t err = msg_get_list_handle(__pSmscOpt, MSG_SMSC_LIST_STRUCT, (void**) &__pSmscList);\r
+       AppLogDebug("SMSC list fetching error [%d]", (int) err);\r
+\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(GetLastResult()));\r
+       return;\r
+}\r
+\r
+int\r
+SmscCenterList::GetCount(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pSmscList)\r
+       {\r
+               AppLogDebug("EXIT: SMSC center count = [%d]", __pSmscList->nCount);\r
+               return __pSmscList->nCount;\r
+       }\r
+\r
+       AppLogDebug("EXIT");\r
+       return 0;\r
+}\r
+\r
+int\r
+SmscCenterList::GetSelectedId(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int selectedId(0);\r
+       msg_error_t err = msg_get_int_value(__pSmscOpt, MSG_SMSC_SELECTED_ID_INT, &selectedId);\r
+\r
+       AppLogDebug("EXIT: msg_get_int_value err [%d]", (int) err);\r
+       return selectedId;\r
+}\r
+\r
+result\r
+SmscCenterList::SetSelectedSmscIndex(int smscIndex)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       msg_error_t err = msg_set_int_value(__pSmscOpt, MSG_SMSC_SELECTED_ID_INT, smscIndex);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               r = E_FAILURE;\r
+       }\r
+\r
+       AppLogDebug("EXIT: msg_set_int_value err [%d]", (int) err);\r
+       return r;\r
+}\r
+\r
+msg_struct_t\r
+SmscCenterList::GetSmscOpt(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __pSmscOpt;\r
+}\r
+\r
+String\r
+SmscCenterList::GetSmscName(int index) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       char smscName[SMSC_NAME_MAX + 1] = {0};\r
+       msg_get_str_value(__pSmscList->msg_struct_info[index], MSG_SMSC_NAME_STR, smscName, SMSC_NAME_MAX);\r
+\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(GetLastResult()));\r
+       return smscName;\r
+}\r
+\r
+String\r
+SmscCenterList::GetSmscAdress(int index) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       char smscAddr[SMSC_ADDR_MAX + 1] = {0};\r
+       msg_get_str_value(__pSmscList->msg_struct_info[index], MSG_SMSC_ADDR_STR, smscAddr, SMSC_ADDR_MAX);\r
+\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(GetLastResult()));\r
+       return smscAddr;\r
+}\r
+\r
+result\r
+SmscCenterList::SetSmscName(int index, const String& smscName)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       int nameLength = smscName.GetLength() * 4;\r
+       char* pSmscName = new (std::nothrow) char[nameLength];\r
+       wcstombs(pSmscName, smscName.GetPointer(), (size_t) nameLength);\r
+       if (msg_set_str_value(__pSmscList->msg_struct_info[index], MSG_SMSC_NAME_STR, pSmscName, nameLength) == MSG_SUCCESS)\r
+       {\r
+               r = E_FAILURE;\r
+       }\r
+       delete[] pSmscName;\r
+\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(r));\r
+       return r;\r
+}\r
+\r
+result\r
+SmscCenterList::SetSmscAdress(int index, const String& smscAddress)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       int addrLength = smscAddress.GetLength() + 1;\r
+       char* pSmscAddr = new (std::nothrow) char[addrLength];\r
+       wcstombs(pSmscAddr, smscAddress.GetPointer(), (size_t) addrLength);\r
+       if (msg_set_str_value(__pSmscList->msg_struct_info[index], MSG_SMSC_ADDR_STR, pSmscAddr, addrLength) == MSG_SUCCESS)\r
+       {\r
+               r = E_FAILURE;\r
+       }\r
+       delete[] pSmscAddr;\r
+\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(r));\r
+       return r;\r
+}\r
diff --git a/src/MsgSpamFilterList.cpp b/src/MsgSpamFilterList.cpp
new file mode 100644 (file)
index 0000000..341a5a8
--- /dev/null
@@ -0,0 +1,256 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+#include <msg.h>\r
+#include <msg_storage.h>\r
+#include <msg_types.h>\r
+\r
+#include <FBaseErrorDefine.h>\r
+#include <FBaseResult.h>\r
+#include <FBaseString.h>\r
+\r
+#include "MsgSpamFilterList.h"\r
+#include "MsgTypes.h"\r
+\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+\r
+// Destructor\r
+SpamFilterList::~SpamFilterList(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pBlockWordFilterIndex)\r
+       {\r
+               __pBlockWordFilterIndex->RemoveAll();\r
+               delete __pBlockWordFilterIndex;\r
+       }\r
+\r
+       if (__pNumberFilterIndex)\r
+       {\r
+               __pNumberFilterIndex->RemoveAll();\r
+               delete __pNumberFilterIndex;\r
+       }\r
+       // Release resource;\r
+       if (__pFilterList)\r
+       {\r
+               msg_release_list_struct(__pFilterList);\r
+               delete __pFilterList;\r
+       }\r
+\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+// Second phase initialization\r
+result\r
+SpamFilterList::Construct(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       __pBlockWordFilterIndex = new (std::nothrow) ArrayListT< int>();\r
+       __pBlockWordFilterIndex->Construct();\r
+       __pNumberFilterIndex = new (std::nothrow) ArrayListT< int>();\r
+       __pNumberFilterIndex->Construct();\r
+\r
+\r
+       // Filter out index based on filter typed.\r
+       for (int index = 0; index < __pFilterList->nCount; index++)\r
+       {\r
+               int filterType(-1);\r
+               msg_get_int_value(__pFilterList->msg_struct_info[index], MSG_FILTER_TYPE_INT, &filterType);\r
+               if (filterType == MSG_FILTER_BY_WORD)\r
+               {\r
+                       __pBlockWordFilterIndex->Add(index);\r
+               }\r
+               else\r
+               {\r
+                       __pNumberFilterIndex->Add(index);\r
+               }\r
+       }\r
+\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+// Constructor\r
+SpamFilterList::SpamFilterList(msg_struct_list_s* pFilterList)\r
+       : __pFilterList(pFilterList)\r
+       , __pBlockWordFilterIndex(null)\r
+       , __pNumberFilterIndex(null)\r
+{\r
+}\r
+\r
+int\r
+SpamFilterList::GetBlockWordCount(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pBlockWordFilterIndex)\r
+       {\r
+               AppLogDebug("EXIT: r = %s ", GetErrorMessage(GetLastResult()));\r
+               return __pBlockWordFilterIndex->GetCount();\r
+       }\r
+\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(GetLastResult()));\r
+       return 0;\r
+}\r
+\r
+int\r
+SpamFilterList::GetBlockNumberCount(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pNumberFilterIndex)\r
+       {\r
+               AppLogDebug("EXIT: r = %s ", GetErrorMessage(GetLastResult()));\r
+               return __pNumberFilterIndex->GetCount();\r
+       }\r
+\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(GetLastResult()));\r
+       return 0;\r
+}\r
+\r
+msg_struct_t\r
+SpamFilterList::GetFilter(int index, int type) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       // Get filter ID\r
+       int filterIndex(-1);\r
+\r
+       if (type == SPAM_FILTER_TYPE_BLOCK_WORD)\r
+       {\r
+               __pBlockWordFilterIndex->GetAt(index, filterIndex);\r
+       }\r
+       else\r
+       {\r
+               __pNumberFilterIndex->GetAt(index, filterIndex);\r
+       }\r
+\r
+       AppLogDebug("EXIT: r = %s ", GetErrorMessage(GetLastResult()));\r
+       return __pFilterList->msg_struct_info[filterIndex];\r
+}\r
+\r
+int\r
+SpamFilterList::GetFilterId(int index, int type) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_SUCCESS;\r
+       msg_error_t err = MSG_SUCCESS;\r
+       int filterId(-1);\r
+       // Get filter ID\r
+       int filterIndex(-1);\r
+       if (type == SPAM_FILTER_TYPE_BLOCK_WORD)\r
+       {\r
+               __pBlockWordFilterIndex->GetAt(index, filterIndex);\r
+       }\r
+       else\r
+       {\r
+               __pNumberFilterIndex->GetAt(index, filterIndex);\r
+       }\r
+       if (filterIndex > -1)\r
+       {\r
+               err = msg_get_int_value(__pFilterList->msg_struct_info[filterIndex], MSG_FILTER_ID_INT, &filterId);\r
+               if (err != MSG_SUCCESS)\r
+               {\r
+                       AppLogDebug("Filter ID fetching err = %d", (int) err);\r
+                       r = E_FAILURE;\r
+               }\r
+       }\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(r));\r
+       return filterId;\r
+}\r
+\r
+int\r
+SpamFilterList::GetFilterType(int index, int type) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result res = E_SUCCESS;\r
+       msg_error_t err = MSG_SUCCESS;\r
+       int filterType(-1);\r
+       // Get filter ID\r
+       int filterIndex(-1);\r
+       if (type == SPAM_FILTER_TYPE_BLOCK_WORD)\r
+       {\r
+               __pBlockWordFilterIndex->GetAt(index, filterIndex);\r
+       }\r
+       else\r
+       {\r
+               __pNumberFilterIndex->GetAt(index, filterIndex);\r
+       }\r
+       err = msg_get_int_value(__pFilterList->msg_struct_info[filterIndex], MSG_FILTER_TYPE_INT, &filterType);\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("Filter ID fetching err = %d", (int) err);\r
+               res = E_FAILURE;\r
+       }\r
+\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(res));\r
+       return filterType;\r
+\r
+}\r
+\r
+String\r
+SpamFilterList::GetFilterText(int index, int type) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result res = E_SUCCESS;\r
+       msg_error_t err = MSG_SUCCESS;\r
+       char filterText[MAX_FILTER_VALUE_LEN] = {0};\r
+       // Get filter ID\r
+       int filterIndex(-1);\r
+       if (type == SPAM_FILTER_TYPE_BLOCK_WORD)\r
+       {\r
+               __pBlockWordFilterIndex->GetAt(index, filterIndex);\r
+       }\r
+       else\r
+       {\r
+               __pNumberFilterIndex->GetAt(index, filterIndex);\r
+       }\r
+       err = msg_get_str_value(__pFilterList->msg_struct_info[filterIndex], MSG_FILTER_VALUE_STR, filterText, sizeof(filterText));\r
+       if (err != MSG_SUCCESS)\r
+       {\r
+               AppLogDebug("Filter text fetching err = %d", (int) err);\r
+               res = E_FAILURE;\r
+       }\r
+\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(res));\r
+       return filterText;\r
+\r
+}\r
+\r
+\r
+int\r
+SpamFilterList::GetFilterListIndex(const String& strFilter, int matchType) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int count = __pNumberFilterIndex->GetCount();\r
+       for (int filterIndex = 0; filterIndex < count; filterIndex++)\r
+       {\r
+               if (strFilter.CompareTo(GetFilterText(filterIndex, matchType)) == 0)\r
+               {\r
+                       return filterIndex;\r
+               }\r
+       }\r
+\r
+       AppLogDebug("EXIT: r = %s", GetErrorMessage(GetLastResult()));\r
+       return -1;\r
+}\r
diff --git a/src/MsgSpamRestoreHandler.cpp b/src/MsgSpamRestoreHandler.cpp
new file mode 100644 (file)
index 0000000..681599b
--- /dev/null
@@ -0,0 +1,101 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include "MsgSpamRestoreHandler.h"
+#include "MsgThreadPresentationModel.h"
+#include "MsgTypes.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Runtime;
+using namespace Tizen::Ui;
+
+SpamRestoreHandler::SpamRestoreHandler(ArrayListT<int>* pSelectedId,Control* threadCtrl)
+       : __parentCtrl(threadCtrl)
+       , __pselectedIds(pSelectedId)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+SpamRestoreHandler::~SpamRestoreHandler()
+{
+       AppLogDebug("ENTER");
+
+       if(__pselectedIds)
+       {
+               __pselectedIds->RemoveAll();
+               delete __pselectedIds;
+               __pselectedIds = null;
+       }
+       __parentCtrl = null;
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+result
+SpamRestoreHandler::Construct(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = Thread::Construct();
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+Object*
+SpamRestoreHandler::Run(void)
+{
+       AppLogDebug("ENTER");
+       
+       IList* pArgs = null;
+       if(__parentCtrl)
+       {
+               if(__pselectedIds->GetCount() > 0)
+               {
+                       ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
+                       pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+                       if(pArgs)
+                       {
+                               pArgs->Add(new Integer(__pselectedIds->GetCount()));
+                               __parentCtrl->SendUserEvent(REQUEST_DELETE_START,pArgs);
+                       }
+                       for(int index = 0;index < __pselectedIds->GetCount();index++)
+                       {
+                               int entryId = 0;
+                               if(__pselectedIds->GetAt(index,entryId) == E_SUCCESS)
+                               {
+                                       pThreadPrModel->MoveMessageToInbox(entryId);
+                                       pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+                                       if(pArgs)
+                                       {
+                                               pArgs->Add(new Integer(index + 1));
+                                               pArgs->Add(new Integer(__pselectedIds->GetCount()));
+                                               __parentCtrl->SendUserEvent(REQUEST_DELETE_UPDATE,pArgs);
+                                       }
+                               }
+                       }
+               }
+               pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+               if(pArgs)
+               {
+                       pArgs->Add(new Integer(0));
+                       __parentCtrl->SendUserEvent(REQUEST_DELETE_COMPLETE,pArgs);
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return null;
+
+}
diff --git a/src/MsgSpamSettingsForm.cpp b/src/MsgSpamSettingsForm.cpp
new file mode 100644 (file)
index 0000000..2123b03
--- /dev/null
@@ -0,0 +1,2057 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <FApp.h>
+#include <FBaseColArrayListT.h>
+#include <FUiCtrlEditField.h>
+#include <FUiCtrlFooter.h>
+#include <FUiCtrlHeader.h>
+#include <FUiCtrlLabel.h>
+
+#include "MsgBitmapUtility.h"
+#include "MsgCustomTableViewItem.h"
+#include "MsgCommonUtil.h"
+#include "MsgProgressPopup.h"
+#include "MsgSettingsItemList.h"
+#include "MsgSettingPresentationModel.h"
+#include "MsgSpamFilterList.h"
+#include "MsgSpamSettingsForm.h"
+#include "MsgTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Utility;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+const wchar_t* IDS_SELECT_NUMBERS = L"Select numbers (%d)";
+const wchar_t* IDS_SELECT_WORDS = L"Select words (%d)";
+const wchar_t* IDS_RET_TYPE_PHONE = L"returnType:phone";
+const wchar_t* IDS_SELECTION_MODE_SINGLE = L"selectionMode:single";
+
+enum SpamAutoRejectGroup
+{
+       SPAM_AUTO_REJECT_GROUP_NUMBER,
+       SPAM_AUTO_REJECT_GROUP_COUNT
+};
+
+SpamSettingsForm::SpamSettingsForm(SpamSettingFromType formType)
+       : __spamFormType(formType)
+       , __pGroupedTableView(null)
+       , __pEditField(null)
+       , __pSettingItemsArray(null)
+       , __selectedMatchCriteriaIndex(0)
+       , __editSpamFilterIndex(-1)
+       , __pSelectedIds(null)
+       , __previousSceneId(IDS_BLANK)
+       , __pConfirmationPopup(null)
+       , __pProgressPopup(null)
+       , __oneTimeFlag(true)
+{
+}
+
+SpamSettingsForm::~SpamSettingsForm(void)
+{
+       AppLogDebug("ENTER");
+
+       if (__pProgressPopup)
+       {
+               delete __pProgressPopup;
+       }
+       if (__pSelectedIds)
+       {
+               __pSelectedIds->RemoveAll();
+               delete __pSelectedIds;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+bool
+SpamSettingsForm::Initialize(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       switch (__spamFormType)
+       {
+       case SPAM_SETTING_FORM_MAIN:
+       case SPAM_SETTING_FORM_AUTO_REJECT:
+       case SPAM_SETTING_FORM_BLOCK_WORD:
+               r = Construct(L"IDL_SETTINGS_FORM");
+               break;
+
+       case SPAM_SETTING_FORM_ADD_BLOCK_WORD:
+               r = Construct(L"IDL_SETTING_EDIT_ADD_WORDS_FORM");
+               break;
+
+       case SPAM_SETTING_FORM_ADD_REJECT_NUMBER:
+               r = Construct(L"IDL_SETTING_EDIT_ADD_REJECT_NUMBER_FORM");
+               break;
+
+       case SPAM_SETTING_FORM_DELETE_BLOCK_WORD:
+       case SPAM_SETTING_FORM_DELETE_REJECT_NUMBER:
+       {
+               r = Construct(L"IDL_SETTING_DELETE_FILTER_FORM");
+               ShowSelectionInfo();
+       }
+               break;
+       }
+       if (!IsFailed(r))
+       {
+               if (__spamFormType == SPAM_SETTING_FORM_MAIN)
+               {
+                       String strText;
+                       __pSettingItemsArray = new (std::nothrow) SettingItemsList();
+                       int groupIndex = __pSettingItemsArray->AddGroup("");
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_BLOCKED_NUMBERS", strText);
+                       SettingItem* settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_SPAM_REJECT_NUMBERS, strText, SETTING_STYLE_NORMAL);
+                       __pSettingItemsArray->AddItem(groupIndex, *settingItem);
+
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_BLOCKED_WORDS", strText);
+                       settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_SPAM_BLOCK_WORDS, strText, SETTING_STYLE_NORMAL);
+                       __pSettingItemsArray->AddItem(groupIndex, *settingItem);
+               }
+               else if (__spamFormType == SPAM_SETTING_FORM_ADD_REJECT_NUMBER)
+               {
+                       String strText;
+                       __pSettingItemsArray = new (std::nothrow) SettingItemsList();
+                       int groupIndex = __pSettingItemsArray->AddGroup(IDS_BLANK);
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA", strText);
+                       SettingItem* settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_MATCH_CRITERIA, strText,
+                                                                                                                                         SETTING_STYLE_EXPANDABLE,
+                                                                                                                                         SETTING_STATUS_ITEM_MATCH_CRITERIA);
+                       __pSettingItemsArray->AddItem(groupIndex, *settingItem);
+
+                       groupIndex = __pSettingItemsArray->AddGroup(IDS_BLANK, SETTING_GROUP_STYLE_NORMAL, false);
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS", strText);
+                       settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_MATCH_CRITERIA_EXACTLY, strText, SETTING_STYLE_RADIO);
+                       __pSettingItemsArray->AddItem(groupIndex, *settingItem);
+
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_SETBLOCK_START_WITH", strText);
+                       settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_MATCH_CRITERIA_START_WITH, strText, SETTING_STYLE_RADIO);
+                       __pSettingItemsArray->AddItem(groupIndex, *settingItem);
+
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_SETBLOCK_INCLUDE", strText);
+                       settingItem = new (std::nothrow) SettingItem(IDA_SETTINGS_MATCH_CRITERIA_INCLUDE, strText, SETTING_STYLE_RADIO);
+                       __pSettingItemsArray->AddItem(groupIndex, *settingItem);
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return (!IsFailed(r));
+}
+
+result
+SpamSettingsForm::OnInitializing(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       r = BaseForm::InitializeBase();
+       if (!IsFailed(r))
+       {
+               Control* pEmptyBgCntl = GetControl(L"IDC_LISTVIEW_EMPTY_BG");
+               if (pEmptyBgCntl)
+               {
+                       pEmptyBgCntl->SetShowState(false);
+               }
+               switch (__spamFormType)
+               {
+               case SPAM_SETTING_FORM_MAIN:
+               case SPAM_SETTING_FORM_AUTO_REJECT:
+               case SPAM_SETTING_FORM_BLOCK_WORD:
+               {
+                       __pGroupedTableView = static_cast<GroupedTableView*>(GetControl(L"IDC_GROUPEDTABLEVIEW_SETTINGS"));
+               }
+               break;
+
+               case SPAM_SETTING_FORM_ADD_REJECT_NUMBER:
+               {
+                       __pEditField = static_cast<EditField*>(GetControl(L"IDC_EDITFIELD_NUMBER"));
+                       __pEditField->SetOverlayKeypadCommandButtonVisible(false);
+                       __pEditField->AddFocusEventListener(*this);
+                       __pEditField->AddTextEventListener(*this);
+                       __pGroupedTableView = static_cast<GroupedTableView*>(GetControl(L"IDC_GROUPEDTABLEVIEW_MATCH_CRITERIA"));
+                       __pGroupedTableView->SetGroupedLookEnabled(true);
+                       Button* pContactButton = static_cast<Button*>(GetControl(L"IDC_BUTTON_CONTACT"));
+                       pContactButton->SetActionId(IDA_SELECT_SPAM_CONTACT_NUMBER);
+                       pContactButton->AddActionEventListener(*this);
+
+               }
+               break;
+
+               case SPAM_SETTING_FORM_DELETE_BLOCK_WORD:
+               case SPAM_SETTING_FORM_DELETE_REJECT_NUMBER:
+               {
+                       __pSelectedIds = new (std::nothrow) ArrayListT< int>();
+                       __pSelectedIds->Construct();
+                       CheckButton* pCheckAll = static_cast<CheckButton*>(GetControl(L"IDC_CHECKBUTTON_SELECTALL"));
+                       pCheckAll->SetActionId(IDA_SELECT_ALL_ON, IDA_SELECT_ALL_OFF);
+                       pCheckAll->AddActionEventListener(*this);
+                       __pGroupedTableView = static_cast<GroupedTableView*>(GetControl(L"IDC_GROUPEDTABLEVIEW_FILTERLIST"));
+               }
+               break;
+
+               case SPAM_SETTING_FORM_ADD_BLOCK_WORD:
+               {
+                       __pEditField = static_cast<EditField*>(GetControl(L"IDC_EDITFIELD_WORD"));
+                       __pEditField->SetEllipsisPosition(ELLIPSIS_POSITION_END);
+                       __pEditField->SetOverlayKeypadCommandButtonVisible(false);
+                       __pEditField->AddTextEventListener(*this);
+               }
+               break;
+               }
+               if (__pGroupedTableView)
+               {
+                       __pGroupedTableView->SetBackgroundColor(COLOR_LIST_BG);
+                       __pGroupedTableView->SetItemProvider(this);
+                       __pGroupedTableView->AddGroupedTableViewItemEventListener(*this);
+                       __pGroupedTableView->UpdateTableView();
+                       if (__pSettingItemsArray)
+                       {
+                               __pGroupedTableView->CollapseAllGroup();
+                               LoadCurrentSettings();
+                       }
+               }
+               if (__pEditField)
+               {
+                       __pEditField->SetFocus();
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+result
+SpamSettingsForm::OnTerminating(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+
+       // TODO: Add your termination code here
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+void
+SpamSettingsForm::OnIntializeFooter(Footer& footer)
+{
+       AppLogDebug("ENTER");
+
+       // Set event listener
+       footer.AddActionEventListener(*this);
+
+       switch (__spamFormType)
+       {
+       case SPAM_SETTING_FORM_MAIN:
+       case SPAM_SETTING_FORM_ADD_BLOCK_WORD:
+       case SPAM_SETTING_FORM_ADD_REJECT_NUMBER:
+               break;
+
+       case SPAM_SETTING_FORM_AUTO_REJECT:
+       case SPAM_SETTING_FORM_BLOCK_WORD:
+       {
+               // Set Footer
+               footer.SetStyle(FOOTER_STYLE_BUTTON_ICON_TEXT);
+               FooterItem leftItem;
+               leftItem.Construct(IDA_ADD);
+               String strText;
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_ADD", strText);
+               leftItem.SetText(strText);
+//             Bitmap* pAddIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_Add);
+//             if (pAddIcon)
+//             {
+//                     leftItem.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pAddIcon);
+//             }
+               FooterItem centerItem;
+               centerItem.Construct(IDA_EDIT);
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_DELETE", strText);
+               centerItem.SetText(strText);
+//             Bitmap* pDeleteIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_DELETE);
+//             if (pDeleteIcon)
+//             {
+//                     centerItem.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pDeleteIcon);
+//             }
+               ButtonItem backItem;
+               backItem.Construct(BUTTON_ITEM_STYLE_ICON, IDA_BACK);
+               Bitmap* pBackIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_BACK);
+               backItem.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pBackIcon);
+               Bitmap* pBackIconPress = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_BACK_PRESSED);
+               backItem.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pBackIconPress);
+
+               footer.AddItem(leftItem);
+               footer.AddItem(centerItem);
+               footer.SetButton(BUTTON_POSITION_RIGHT, backItem);
+
+       }
+       break;
+
+       case SPAM_SETTING_FORM_DELETE_REJECT_NUMBER:
+       case SPAM_SETTING_FORM_DELETE_BLOCK_WORD:
+       {
+               String strText;
+               footer.SetStyle(FOOTER_STYLE_BUTTON_ICON_TEXT);
+               // Left footer item
+               FooterItem deleteItem;
+               deleteItem.Construct(IDA_DELETE_SPAM_FILTER);
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_DELETE", strText);
+               deleteItem.SetText(strText);
+               footer.AddItem(deleteItem);
+
+               // Right footer item
+               FooterItem cancelItem;
+               cancelItem.Construct(IDA_CANCEL_SPAM_FILTER);
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_CANCEL", strText);
+               cancelItem.SetText(strText);
+               footer.AddItem(cancelItem);
+       }
+       break;
+
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+
+void
+SpamSettingsForm::OnIntializeHeader(Header& header)
+{
+       AppLogDebug("ENTER");
+
+       // Set event listener
+       header.AddActionEventListener(*this);
+
+       // Set Header text
+       String titleText;
+       switch (__spamFormType)
+       {
+       case SPAM_SETTING_FORM_MAIN:
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_SPAM_MESSAGES", titleText);
+               break;
+
+       case SPAM_SETTING_FORM_AUTO_REJECT:
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_BLOCKED_NUMBERS", titleText);
+               break;
+
+       case SPAM_SETTING_FORM_BLOCK_WORD:
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_BLOCKED_WORDS", titleText);
+               break;
+
+       case SPAM_SETTING_FORM_ADD_REJECT_NUMBER:
+       {
+               header.SetStyle(HEADER_STYLE_TITLE);
+               ButtonItem leftButton;
+               leftButton.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_SAVE_REJECT_NUMBER);
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_SAVE", titleText);
+               leftButton.SetText(titleText);
+               header.SetButton(BUTTON_POSITION_LEFT, leftButton);
+               header.SetButtonEnabled(BUTTON_POSITION_LEFT, false);
+
+               ButtonItem rightButton;
+               rightButton.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_CANCEL_REJECT_NUMBER);
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_CANCEL", titleText);
+               rightButton.SetText(titleText);
+               header.SetButton(BUTTON_POSITION_RIGHT, rightButton);
+
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_HEADER_ADD_NUMBER", titleText);
+               break;
+       }
+
+       case SPAM_SETTING_FORM_ADD_BLOCK_WORD:
+       {
+               header.SetStyle(HEADER_STYLE_TITLE);
+               ButtonItem leftButton;
+               leftButton.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_SAVE);
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_SAVE", titleText);
+               leftButton.SetText(titleText);
+               header.SetButton(BUTTON_POSITION_LEFT, leftButton);
+               header.SetButtonEnabled(BUTTON_POSITION_LEFT, false);
+
+               ButtonItem rightButton;
+               rightButton.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_CANCEL);
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_CANCEL", titleText);
+               rightButton.SetText(titleText);
+               header.SetButton(BUTTON_POSITION_RIGHT, rightButton);
+
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_OPT_CREATEMSG_ADD_WORD", titleText);
+               break;
+       }
+
+       case SPAM_SETTING_FORM_DELETE_REJECT_NUMBER:
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_HEADER_DELETE_NUMBER", titleText);
+               break;
+
+       case SPAM_SETTING_FORM_DELETE_BLOCK_WORD:
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_HEADER_DELETE_WORDS", titleText);
+               break;
+       }
+       header.SetTitleText(titleText);
+       header.Draw();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+SpamSettingsForm::OnSceneActivatedN(const SceneId& previousSceneId,
+                                                                       const SceneId& currentSceneId, IList* pArgs)
+{
+       AppLogDebug("ENTER");
+       if (__previousSceneId.IsEmpty())
+       {
+               __previousSceneId = previousSceneId;
+       }
+       SpamFilterList* pFilterList = SettingPresentationModel::GetInstance()->GetSpamFilterList();
+       if (pArgs)
+       {
+               if (pArgs->GetCount() > 0 && pFilterList)
+               {
+                       String strText;
+                       Integer* pInteger = static_cast<Integer*>(pArgs->GetAt(0));
+                       __editSpamFilterIndex = pInteger->ToInt();
+                       // Check setting type.
+                       switch (__spamFormType)
+                       {
+                       case SPAM_SETTING_FORM_MAIN:
+                               break;
+
+                       case SPAM_SETTING_FORM_AUTO_REJECT:
+                       case SPAM_SETTING_FORM_BLOCK_WORD:
+                       case SPAM_SETTING_FORM_DELETE_BLOCK_WORD:
+                       case SPAM_SETTING_FORM_DELETE_REJECT_NUMBER:
+                               break;
+
+                       case SPAM_SETTING_FORM_ADD_BLOCK_WORD:
+                       {
+                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_EDIT_WORD", strText);
+                               GetHeader()->SetTitleText(strText);
+                               strText = pFilterList->GetFilterText(__editSpamFilterIndex, SPAM_FILTER_TYPE_BLOCK_WORD);
+                       }
+                       break;
+
+                       case SPAM_SETTING_FORM_ADD_REJECT_NUMBER:
+                       {
+                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_HEADER_EDIT_NUMBER", strText);
+                               GetHeader()->SetTitleText(strText);
+                               __selectedMatchCriteriaIndex = pFilterList->GetFilterType(__editSpamFilterIndex, SPAM_FILTER_TYPE_BLOCK_NUMBER) - 1;
+                               strText = pFilterList->GetFilterText(__editSpamFilterIndex, SPAM_FILTER_TYPE_BLOCK_NUMBER);
+                       }
+                       break;
+                       }
+                       __pEditField->SetText(strText);
+               }
+               pArgs->RemoveAll(true);
+               delete pArgs;
+       }
+       // Set footer
+       if (GetFooter() && pFilterList)
+       {
+               switch (__spamFormType)
+               {
+               case SPAM_SETTING_FORM_MAIN:
+                       break;
+
+               case SPAM_SETTING_FORM_AUTO_REJECT:
+               {
+                       GetFooter()->SetItemEnabled(1, pFilterList->GetBlockNumberCount() > 0);
+                       ListView* pEmptyBgCntl = (ListView*) GetControl(L"IDC_LISTVIEW_EMPTY_BG");
+                       if (pEmptyBgCntl)
+                       {
+                               String strText;
+                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_NO_BLOCKED_NUMBERS", strText);
+                               pEmptyBgCntl->SetTextOfEmptyList(strText);
+                               pEmptyBgCntl->SetShowState(pFilterList->GetBlockNumberCount() <= 0);
+                       }
+               }
+               break;
+
+               case SPAM_SETTING_FORM_BLOCK_WORD:
+               {
+                       GetFooter()->SetItemEnabled(1, pFilterList->GetBlockWordCount() > 0);
+                       ListView* pEmptyBgCntl = (ListView*) GetControl(L"IDC_LISTVIEW_EMPTY_BG");
+                       if (pEmptyBgCntl)
+                       {
+                               String strText;
+                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_NO_BLOCKED_WORDS", strText);
+                               pEmptyBgCntl->SetTextOfEmptyList(strText);
+                               pEmptyBgCntl->SetShowState(pFilterList->GetBlockWordCount() <= 0);
+                       }
+               }
+               break;
+
+               case SPAM_SETTING_FORM_DELETE_REJECT_NUMBER:
+               case SPAM_SETTING_FORM_DELETE_BLOCK_WORD:
+                       GetFooter()->SetItemEnabled(0, (__pSelectedIds && __pSelectedIds->GetCount() > 0));
+                       break;
+
+               case SPAM_SETTING_FORM_ADD_BLOCK_WORD:
+                       break;
+
+               case SPAM_SETTING_FORM_ADD_REJECT_NUMBER:
+                       break;
+               }
+       }
+       // Refresh list.
+       if (__pGroupedTableView)
+       {
+               __pGroupedTableView->UpdateTableView();
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+SpamSettingsForm::OnSceneDeactivated(const SceneId& currentSceneId,
+                                                                        const SceneId& nextSceneId)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       // Add your scene deactivate code here
+       return;
+}
+
+
+void
+SpamSettingsForm::OnFormBackRequested(Form& source)
+{
+       AppLogDebug("ENTER");
+
+       // Back to thread/ message list form
+       HandleBackNavigation();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+SpamSettingsForm::OnActionPerformed(const Control& source, int actionId)
+{
+       AppLogDebug("ENTER");
+
+       switch (actionId)
+       {
+       case IDA_SELECT_ALL_ON:
+               CheckAll(true);
+               break;
+
+       case IDA_SELECT_ALL_OFF:
+               CheckAll(false);
+               break;
+
+       case IDA_ADD:
+               HandleAddNavigation();
+               break;
+
+       case IDA_BACK:
+               HandleBackNavigation();
+               break;
+
+       case IDA_EDIT:
+               HandleEditNavigation();
+               break;
+
+       case IDA_SAVE:
+       case IDA_SAVE_REJECT_NUMBER:
+       {
+               String number = __pEditField->GetText();
+               char* pPhoneNumber = CommonUtil::ConvertStringToPointerCharArrayN(number);
+               int size = strlen(pPhoneNumber);
+               if (size > 40)
+               {
+                       int modalResult;
+                       MessageBox messageBox;
+                       String msgText;
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_DB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_EXCEEDED_DELETE_SOME_CHARACTERS", msgText);
+                       messageBox.Construct(IDS_BLANK, msgText, MSGBOX_STYLE_OK, 2000);
+                       messageBox.ShowAndWait(modalResult);
+                       __pEditField->SetFocus();
+               }
+               else if (!number.IsEmpty())
+               {
+                       ShowConfirmationPopup();
+               }
+               else
+               {
+                       SceneManager* pSceneManager = SceneManager::GetInstance();
+                       pSceneManager->GoBackward(BackwardSceneTransition(__previousSceneId, SCENE_TRANSITION_ANIMATION_TYPE_NONE));
+               }
+               delete[] pPhoneNumber;
+       }
+       break;
+
+       case IDA_SPAM_WORD_CONFIRMATION_YES:
+       {
+               if (__pEditField)
+               {
+                       __pEditField->HideKeypad();
+                       SaveSpamFilter(SPAM_FILTER_TYPE_BLOCK_WORD);
+               }
+       }
+       break;
+
+       case IDA_SPAM_NUMBER_CONFIRMATION_YES:
+       {
+               if (__pEditField)
+               {
+                       __pEditField->HideKeypad();
+                       SaveSpamFilter(SPAM_FILTER_TYPE_BLOCK_NUMBER);
+               }
+       }
+       break;
+
+       case IDA_SPAM_WORD_CONFIRMATION_NO:
+       case IDA_SPAM_NUMBER_CONFIRMATION_NO:
+       {
+               if (__pConfirmationPopup)
+               {
+                       delete __pConfirmationPopup;
+                       __pConfirmationPopup = null;
+               }
+               __pEditField->SetFocus();
+       }
+       break;
+
+       case IDA_CANCEL:
+       case IDA_CANCEL_REJECT_NUMBER:
+       case IDA_CANCEL_SPAM_FILTER:
+       {
+               HandleBackNavigation();
+       }
+       break;
+
+       case IDA_DELETE_SPAM_FILTER:
+       {
+               DeleteSelectedSpamFilters();
+       }
+       break;
+
+       case IDA_SELECT_SPAM_CONTACT_NUMBER:
+       {
+               SelectContact();
+       }
+       break;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+SpamSettingsForm::HandleSpamSettingItemSelection(int groupIndex, int itemIndex, TableViewItemStatus status)
+{
+       AppLogDebug("ENTER");
+
+       // There is only on group in spam setting else need to consider group index as well.
+       SettingItem& settingItem = __pSettingItemsArray->GetItemAt(groupIndex, itemIndex);
+       SceneManager* pSceneManager = SceneManager::GetInstance();
+
+       switch (settingItem.GetActionId())
+       {
+       case IDA_SETTINGS_SPAM_REJECT_NUMBERS:
+       {
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SETTINGS_SPAM_AUTO_REJECT, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);
+       }
+       break;
+
+       case IDA_SETTINGS_SPAM_BLOCK_WORDS:
+       {
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SETTINGS_SPAM_BLOCK_WORD, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);
+       }
+       break;
+
+       default:
+               break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+SpamSettingsForm::HandleSpamMatchCriteriaItemSelection(int groupIndex, int itemIndex)
+{
+       AppLogDebug("ENTER");
+
+       SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, true);
+       __pGroupedTableView->SetFocus();
+
+       // Set Header & Footer
+       Header* header = GetHeader();
+       if (header)
+       {
+               header->RemoveAllButtons();
+               header->Draw();
+       }
+
+       Footer* pFooter = GetFooter();
+       if (pFooter)
+       {
+               String strText;
+               pFooter->RemoveAllItems();
+               pFooter->RemoveAllButtons();
+               pFooter->SetStyle(FOOTER_STYLE_BUTTON_ICON_TEXT);
+
+               FooterItem saveBtn;
+               saveBtn.Construct(IDA_SAVE_REJECT_NUMBER);
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_SAVE", strText);
+               saveBtn.SetText(strText);
+//             Bitmap* pSaveIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SAVE);
+//             if (pSaveIcon)
+//             {
+//                     saveBtn.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pSaveIcon);
+//             }
+               pFooter->AddItem(saveBtn);
+               pFooter->SetItemEnabled(0, __pEditField->GetTextLength() > 0);
+
+               FooterItem cancelBtn;
+               cancelBtn.Construct(IDA_CANCEL_REJECT_NUMBER);
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_CANCEL", strText);
+               cancelBtn.SetText(strText);
+//             Bitmap* pCanelIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_CANCEL);
+//             if (pCanelIcon)
+//             {
+//                     cancelBtn.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pCanelIcon);
+//             }
+               pFooter->AddItem(cancelBtn);
+       }
+
+       SettingItem& settingItem = __pSettingItemsArray->GetItemAt(groupIndex, itemIndex);
+       switch (settingItem.GetActionId())
+       {
+       case IDA_SETTINGS_MATCH_CRITERIA:
+       {
+               if (__pGroupedTableView->IsGroupExpanded(groupIndex + 1))
+               {
+                       __pGroupedTableView->CollapseGroup(groupIndex + 1);
+                       __pSettingItemsArray->SetgroupExpandStatus(groupIndex + 1, false);
+
+               }
+               else
+               {
+                       __pGroupedTableView->ExpandGroup(groupIndex + 1);
+                       __pSettingItemsArray->SetgroupExpandStatus(groupIndex + 1, true);
+                       //              __pGroupList->ScrollToItem(groupIndex + 1, __pSettingItemsArray->GetItemCount(groupIndex + 1) - 1);
+               }
+               __pGroupedTableView->RefreshItem(groupIndex, itemIndex, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+       }
+       break;
+
+       case IDA_SETTINGS_MATCH_CRITERIA_EXACTLY:
+       {
+               CheckedRadioGroupItem(groupIndex, itemIndex);
+       }
+       break;
+
+       case IDA_SETTINGS_MATCH_CRITERIA_START_WITH:
+       {
+               CheckedRadioGroupItem(groupIndex, itemIndex);
+       }
+       break;
+
+       case IDA_SETTINGS_MATCH_CRITERIA_INCLUDE:
+       {
+               CheckedRadioGroupItem(groupIndex, itemIndex);
+       }
+       break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+SpamSettingsForm::HandleSpamAutoRejectItemSelection(int groupIndex, int itemIndex, TableViewItemStatus status)
+{
+       AppLogDebug("ENTER");
+
+       switch (status)
+       {
+       case TABLE_VIEW_ITEM_STATUS_CHECKED:
+       {
+               if (__spamFormType == SPAM_SETTING_FORM_DELETE_REJECT_NUMBER)
+               {
+                       int totalCount = __pGroupedTableView->GetItemCountAt(groupIndex);
+                       __pSelectedIds->Add(itemIndex);
+                       if (__pSelectedIds->GetCount() == totalCount)
+                       {
+                               CheckButton* pCheckAll = static_cast<CheckButton*>(GetControl(L"IDC_CHECKBUTTON_SELECTALL"));
+                               pCheckAll->SetSelected(true);
+                       }
+                       ShowSelectionInfo();
+               }
+               else
+               {
+                       //TODO: NO C API to block unknown number
+               }
+       }
+       break;
+
+       case TABLE_VIEW_ITEM_STATUS_UNCHECKED:
+       {
+               if (__spamFormType == SPAM_SETTING_FORM_DELETE_REJECT_NUMBER)
+               {
+                       int totalCount = __pGroupedTableView->GetItemCountAt(groupIndex);
+                       __pSelectedIds->Remove(itemIndex);
+                       if (__pSelectedIds->GetCount() <= totalCount)
+                       {
+                               CheckButton* pCheckAll = static_cast<CheckButton*>(GetControl(L"IDC_CHECKBUTTON_SELECTALL"));
+                               pCheckAll->SetSelected(false);
+                       }
+                       ShowSelectionInfo();
+               }
+               else
+               {
+                       //TODO: NO C API to block unknown number
+               }
+       }
+       break;
+
+       case TABLE_VIEW_ITEM_STATUS_SELECTED:
+       {
+               ArrayList* pArgList = new (std::nothrow) ArrayList();
+               if (pArgList == null)
+               {
+                       return;
+               }
+               pArgList->Add((new Integer(itemIndex)));
+
+               // Edit number, passing edit number index in argument list
+               SceneManager* pSceneManager = SceneManager::GetInstance();
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SETTINGS_SPAM_ADD_REJECT_NUMBER, SCENE_TRANSITION_ANIMATION_TYPE_NONE), pArgList);
+       }
+       break;
+
+       case TABLE_VIEW_ITEM_STATUS_HIGHLIGHTED:
+       case TABLE_VIEW_ITEM_STATUS_MORE:
+               break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+
+}
+
+void
+SpamSettingsForm::HandleSpamBlockWordItemSelection(int groupIndex, int itemIndex, TableViewItemStatus status)
+{
+       AppLogDebug("ENTER");
+
+       switch (status)
+       {
+       case TABLE_VIEW_ITEM_STATUS_CHECKED:
+       {
+               int totalCount = __pGroupedTableView->GetItemCountAt(groupIndex);
+               __pSelectedIds->Add(itemIndex);
+               if (__pSelectedIds->GetCount() == totalCount)
+               {
+                       CheckButton* pCheckAll = static_cast<CheckButton*>(GetControl(L"IDC_CHECKBUTTON_SELECTALL"));
+                       pCheckAll->SetSelected(true);
+               }
+               Invalidate(true);
+               ShowSelectionInfo();
+       }
+       break;
+
+       case TABLE_VIEW_ITEM_STATUS_UNCHECKED:
+       {
+               int totalCount = __pGroupedTableView->GetItemCountAt(groupIndex);
+               __pSelectedIds->Remove(itemIndex);
+               if (__pSelectedIds->GetCount() <= totalCount)
+               {
+                       CheckButton* pCheckAll = static_cast<CheckButton*>(GetControl(L"IDC_CHECKBUTTON_SELECTALL"));
+                       pCheckAll->SetSelected(false);
+               }
+               Invalidate(true);
+               ShowSelectionInfo();
+       }
+       break;
+
+       case TABLE_VIEW_ITEM_STATUS_SELECTED:
+       {
+               ArrayList* pArgList = new (std::nothrow) ArrayList();
+               if (pArgList == null)
+               {
+                       return;
+               }
+               pArgList->Add((new Integer(itemIndex)));
+               // Edit number, passing edit number index in argument list
+               SceneManager* pSceneManager = SceneManager::GetInstance();
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SETTINGS_SPAM_ADD_BLOCK_WORD, SCENE_TRANSITION_ANIMATION_TYPE_NONE), pArgList);
+       }
+       break;
+
+       case TABLE_VIEW_ITEM_STATUS_HIGHLIGHTED:
+       case TABLE_VIEW_ITEM_STATUS_MORE:
+               break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+SpamSettingsForm::HandleBackNavigation()
+{
+       AppLogDebug("ENTER");
+
+       // destroy popup if exist
+       if (__pConfirmationPopup)
+       {
+               delete __pConfirmationPopup;
+               __pConfirmationPopup = null;
+       }
+       SceneManager* pSceneManager = SceneManager::GetInstance();
+       pSceneManager->GoBackward(BackwardSceneTransition(__previousSceneId, SCENE_TRANSITION_ANIMATION_TYPE_NONE));
+       __previousSceneId.Clear();
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+SpamSettingsForm::HandleAddNavigation(void)
+{
+       AppLogDebug("ENTER");
+
+       SceneManager* pSceneManager = SceneManager::GetInstance();
+       switch (__spamFormType)
+       {
+       case SPAM_SETTING_FORM_AUTO_REJECT:
+       {
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SETTINGS_SPAM_ADD_REJECT_NUMBER, SCENE_TRANSITION_ANIMATION_TYPE_NONE));
+       }
+       break;
+
+       case SPAM_SETTING_FORM_BLOCK_WORD:
+       {
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SETTINGS_SPAM_ADD_BLOCK_WORD, SCENE_TRANSITION_ANIMATION_TYPE_NONE));
+       }
+       break;
+
+       case SPAM_SETTING_FORM_MAIN:
+       case SPAM_SETTING_FORM_ADD_REJECT_NUMBER:
+       case SPAM_SETTING_FORM_DELETE_REJECT_NUMBER:
+       case SPAM_SETTING_FORM_ADD_BLOCK_WORD:
+       case SPAM_SETTING_FORM_DELETE_BLOCK_WORD:
+               break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+SpamSettingsForm::HandleEditNavigation(void)
+{
+       AppLogDebug("ENTER");
+
+       SceneManager* pSceneManager = SceneManager::GetInstance();
+       switch (__spamFormType)
+       {
+       case SPAM_SETTING_FORM_AUTO_REJECT:
+       {
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SETTINGS_SPAM_DELETE_REJECT_NUMBER, SCENE_TRANSITION_ANIMATION_TYPE_NONE));
+       }
+       break;
+
+       case SPAM_SETTING_FORM_BLOCK_WORD:
+       {
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SETTINGS_SPAM_DELETE_BLOCK_WORD, SCENE_TRANSITION_ANIMATION_TYPE_NONE));
+       }
+       break;
+
+       case SPAM_SETTING_FORM_MAIN:
+       case SPAM_SETTING_FORM_ADD_REJECT_NUMBER:
+       case SPAM_SETTING_FORM_DELETE_REJECT_NUMBER:
+       case SPAM_SETTING_FORM_ADD_BLOCK_WORD:
+       case SPAM_SETTING_FORM_DELETE_BLOCK_WORD:
+               break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+//IGroupedTableViewItemProvider
+int
+SpamSettingsForm::GetGroupCount(void)
+{
+       AppLogDebug("ENTER");
+
+       int groupCount(0);
+       switch (__spamFormType)
+       {
+       case SPAM_SETTING_FORM_MAIN:
+               groupCount = __pSettingItemsArray->GetGroupCount();
+               break;
+
+       // Text message setting has no group
+       case SPAM_SETTING_FORM_AUTO_REJECT:
+               groupCount = SPAM_AUTO_REJECT_GROUP_COUNT;
+               break;
+
+       case SPAM_SETTING_FORM_DELETE_REJECT_NUMBER:
+               groupCount = 1;
+               break;
+
+       case SPAM_SETTING_FORM_ADD_REJECT_NUMBER:
+               groupCount = __pSettingItemsArray->GetGroupCount();
+               break;
+
+       // Font setting has no group.
+       case SPAM_SETTING_FORM_DELETE_BLOCK_WORD:
+       case SPAM_SETTING_FORM_BLOCK_WORD:
+       {
+               SpamFilterList* pFilterList = SettingPresentationModel::GetInstance()->GetSpamFilterList();
+               if (pFilterList->GetBlockWordCount() > 0)
+               {
+                       groupCount = 1;
+               }
+       }
+       break;
+
+       // Need to fetch data from message service
+       //return ID_BLOCK_WORD_GROUP_COUNT;
+       case SPAM_SETTING_FORM_ADD_BLOCK_WORD:
+
+       default:
+               break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return groupCount;
+
+}
+
+int
+SpamSettingsForm::GetItemCount(int groupIndex)
+{
+       AppLogDebug("ENTER");
+
+       int itemCount(0);
+       switch (__spamFormType)
+       {
+       case SPAM_SETTING_FORM_MAIN:
+               itemCount = __pSettingItemsArray->GetItemCount(groupIndex);
+               break;
+
+       // Text message setting has no group
+       case SPAM_SETTING_FORM_AUTO_REJECT:
+               itemCount = GetAutoRejectGroupItemCount(groupIndex);
+               break;
+
+       case SPAM_SETTING_FORM_ADD_REJECT_NUMBER:
+               itemCount = __pSettingItemsArray->GetItemCount(groupIndex);
+               break;
+
+       case SPAM_SETTING_FORM_DELETE_REJECT_NUMBER:
+       {
+               SpamFilterList* pFilterList = SettingPresentationModel::GetInstance()->GetSpamFilterList();
+               if (pFilterList)
+               {
+                       itemCount = pFilterList->GetBlockNumberCount();
+               }
+       }
+       break;
+
+       // Font setting has no group.
+       case SPAM_SETTING_FORM_DELETE_BLOCK_WORD:
+       case SPAM_SETTING_FORM_BLOCK_WORD:
+       {
+               SpamFilterList* pFilterList = SettingPresentationModel::GetInstance()->GetSpamFilterList();
+               if (pFilterList)
+               {
+                       itemCount = pFilterList->GetBlockWordCount();
+               }
+       }
+       break;
+
+       case SPAM_SETTING_FORM_ADD_BLOCK_WORD:
+       default:
+               break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return itemCount;
+}
+
+TableViewGroupItem*
+SpamSettingsForm::CreateGroupItem(int groupIndex, int itemWidth)
+{
+       AppLogDebug("ENTER");
+
+       TableViewGroupItem* pViewGroupItem = null;
+       switch (__spamFormType)
+       {
+       case SPAM_SETTING_FORM_MAIN:
+       case SPAM_SETTING_FORM_AUTO_REJECT:
+       case SPAM_SETTING_FORM_BLOCK_WORD:
+       case SPAM_SETTING_FORM_ADD_REJECT_NUMBER:
+       case SPAM_SETTING_FORM_DELETE_BLOCK_WORD:
+       case SPAM_SETTING_FORM_DELETE_REJECT_NUMBER:
+       {
+               pViewGroupItem = new (std::nothrow) TableViewGroupItem();
+               pViewGroupItem->Construct(Dimension(itemWidth, 1));
+               pViewGroupItem->SetShowState(false);
+       }
+       break;
+
+       default:
+               break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pViewGroupItem;
+
+}
+
+TableViewItem*
+SpamSettingsForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+       AppLogDebug("ENTER");
+
+       switch (__spamFormType)
+       {
+       case SPAM_SETTING_FORM_MAIN:
+               // Only one group for this settings
+               return CreateSpamMessageSettingItemN(groupIndex, itemIndex, itemWidth);
+
+       case SPAM_SETTING_FORM_AUTO_REJECT:
+               return CreateAutoRejectSettingGroupItemsN(groupIndex, itemIndex, itemWidth);
+
+       case SPAM_SETTING_FORM_DELETE_REJECT_NUMBER:
+               return CreateAutoRejectNumberSettingItemN(itemIndex, itemWidth);
+
+       case SPAM_SETTING_FORM_BLOCK_WORD:
+       case SPAM_SETTING_FORM_DELETE_BLOCK_WORD:
+               return CreateBlockWordSettingItemN(groupIndex, itemIndex, itemWidth);
+
+       case SPAM_SETTING_FORM_ADD_REJECT_NUMBER:
+               return CreateMatchCriteriaSettingItemsN(groupIndex, itemIndex, itemWidth);
+
+       default:
+               break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return null;
+
+}
+
+bool
+SpamSettingsForm::DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem)
+{
+       AppLogDebug("ENTER");
+
+       if (pItem)
+       {
+               delete pItem;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return true;
+
+}
+
+bool
+SpamSettingsForm::DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem)
+{
+       AppLogDebug("ENTER");
+
+       if (pItem)
+       {
+               delete pItem;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return true;
+}
+
+void
+SpamSettingsForm::UpdateItem(int groupIndex, int itemIndex, TableViewItem* pItem)
+{
+       AppLogDebug("ENTER");
+
+       switch (__spamFormType)
+       {
+       case SPAM_SETTING_FORM_MAIN:
+       case SPAM_SETTING_FORM_AUTO_REJECT:
+       case SPAM_SETTING_FORM_DELETE_REJECT_NUMBER:
+       case SPAM_SETTING_FORM_BLOCK_WORD:
+       case SPAM_SETTING_FORM_DELETE_BLOCK_WORD:
+               break;
+
+       case SPAM_SETTING_FORM_ADD_REJECT_NUMBER:
+               UpdateMatchCriteriaSettingItem(groupIndex, itemIndex, pItem);
+               break;
+
+       default:
+               break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+SpamSettingsForm::UpdateGroupItem(int groupIndex, TableViewGroupItem* pItem)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+int
+SpamSettingsForm::GetDefaultItemHeight(void)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return H_LIST_ITEM_112PX;
+}
+
+int
+SpamSettingsForm::GetDefaultGroupItemHeight(void)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return H_GROUP_HEADER;
+}
+
+//Tableview event
+void
+SpamSettingsForm::OnGroupedTableViewGroupItemStateChanged(GroupedTableView& tableView, int groupIndex,
+                                                                                                                 TableViewGroupItem* pItem, TableViewItemStatus status)
+{
+       AppLogDebug("ENTER");
+       // Empty implementation
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+SpamSettingsForm::OnGroupedTableViewItemStateChanged(GroupedTableView& tableView, int groupIndex, int itemIndex,
+                                                                                                        TableViewItem* pItem, TableViewItemStatus status)
+{
+       AppLogDebug("ENTER");
+
+       switch (__spamFormType)
+       {
+       case SPAM_SETTING_FORM_MAIN:
+               HandleSpamSettingItemSelection(groupIndex, itemIndex, status);
+               break;
+
+       case SPAM_SETTING_FORM_AUTO_REJECT:
+       case SPAM_SETTING_FORM_DELETE_REJECT_NUMBER:
+               HandleSpamAutoRejectItemSelection(groupIndex, itemIndex, status);
+               break;
+
+       case SPAM_SETTING_FORM_BLOCK_WORD:
+       case SPAM_SETTING_FORM_DELETE_BLOCK_WORD:
+               HandleSpamBlockWordItemSelection(groupIndex, itemIndex, status);
+               break;
+
+       case SPAM_SETTING_FORM_ADD_REJECT_NUMBER:
+               HandleSpamMatchCriteriaItemSelection(groupIndex, itemIndex);
+               break;
+
+       case SPAM_SETTING_FORM_ADD_BLOCK_WORD:
+               break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+
+}
+
+void
+SpamSettingsForm::OnGroupedTableViewContextItemActivationStateChanged(GroupedTableView& tableView,
+                                                                                                                                         int groupIndex, int itemIndex, TableViewContextItem* pContextItem, bool activated)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       // Empty implementation
+}
+
+
+int
+SpamSettingsForm::GetAutoRejectGroupItemCount(int groupIndex) const
+{
+       AppLogDebug("ENTER");
+
+       int groupItemCount(0);
+       switch (groupIndex)
+       {
+       case SPAM_AUTO_REJECT_GROUP_NUMBER:
+       {
+               SpamFilterList* pSpamFilterList = SettingPresentationModel::GetInstance()->GetSpamFilterList();
+               if (pSpamFilterList)
+               {
+                       groupItemCount = pSpamFilterList->GetBlockNumberCount();
+               }
+       }
+       break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return groupItemCount;
+}
+
+TableViewItem*
+SpamSettingsForm::CreateSpamMessageSettingItemN(int groupIndex, int itemIndex, int itemWidth)
+{
+       AppLogDebug("ENTER");
+
+       String itemText;
+       TableViewAnnexStyle style = TABLE_VIEW_ANNEX_STYLE_NORMAL;
+       CustomTableViewItem* pViewItem = new (std::nothrow) CustomTableViewItem();
+       SettingItem& settingItem = __pSettingItemsArray->GetItemAt(groupIndex, itemIndex);
+       switch (settingItem.GetStyle())
+       {
+       case SETTING_STYLE_NORMAL:
+       case SETTING_STYLE_EXPANDABLE:
+               style = TABLE_VIEW_ANNEX_STYLE_NORMAL;
+               break;
+
+       case SETTING_STYLE_RADIO:
+       case SETTING_STYLE_RADIO_DETAILS:
+               style = TABLE_VIEW_ANNEX_STYLE_RADIO;
+               break;
+
+       case SETTING_STYLE_ONOFF_SLIDING:
+               style = TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING;
+               break;
+       }
+       pViewItem->Construct(Dimension(itemWidth, H_LIST_ITEM_112PX), style);
+       pViewItem->SetBackgroundColor(COLOR_LIST_DIALOGUE_GROUP_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+       // Child control max width.
+       itemWidth -= (TableViewItem::GetAnnexWidth(style) + W_LIST_ITEM_GROUP_INDICATOR);
+       Label* pSettingName = new (std::nothrow) Label();
+       pSettingName->Construct(Rectangle(0, 0, itemWidth, H_LIST_ITEM_112PX), settingItem.GetName());
+       pSettingName->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+       pSettingName->SetTextConfig(LIST_MAIN_TEXT_FONT_SIZE, LABEL_TEXT_STYLE_NORMAL);
+       pViewItem->AddControl(*pSettingName);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pViewItem;
+}
+
+TableViewItem*
+SpamSettingsForm::CreateAutoRejectSettingGroupItemsN(int groupIndex, int itemIndex, int itemWidth)
+{
+       AppLogDebug("ENTER");
+
+       TableViewItem* pViewItem = null;
+       switch (groupIndex)
+       {
+       case SPAM_AUTO_REJECT_GROUP_NUMBER:
+       {
+               return (CreateAutoRejectNumberSettingItemN(itemIndex, itemWidth));
+       }
+       break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pViewItem;
+}
+
+TableViewItem*
+SpamSettingsForm::CreateMatchCriteriaSettingItemsN(int groupIndex, int itemIndex, int itemWidth)
+{
+       AppLogDebug("ENTER");
+
+       String itemText;
+       TableViewAnnexStyle style = TABLE_VIEW_ANNEX_STYLE_NORMAL;
+       CustomTableViewItem* pViewItem = new (std::nothrow) CustomTableViewItem();
+       SettingItem& settingItem = __pSettingItemsArray->GetItemAt(groupIndex, itemIndex);
+       switch (settingItem.GetStyle())
+       {
+       case SETTING_STYLE_NORMAL:
+               style = TABLE_VIEW_ANNEX_STYLE_NORMAL;
+               break;
+
+       case SETTING_STYLE_RADIO:
+               style = TABLE_VIEW_ANNEX_STYLE_RADIO;
+               break;
+
+       case SETTING_STYLE_RADIO_DETAILS:
+               style = TABLE_VIEW_ANNEX_STYLE_RADIO;
+               break;
+
+       case SETTING_STYLE_ONOFF_SLIDING:
+               style = TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING;
+               break;
+
+       case SETTING_STYLE_EXPANDABLE:
+               style = TABLE_VIEW_ANNEX_STYLE_NORMAL;
+               break;
+       }
+       int settingStatusItem = settingItem.GetStatus();
+       pViewItem->Construct(Dimension(itemWidth, H_LIST_ITEM_112PX), style);
+       pViewItem->SetBackgroundColor(COLOR_LIST_DIALOGUE_GROUP_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+       // Child control max width.
+       itemWidth -= (TableViewItem::GetAnnexWidth(style) + W_LIST_ITEM_GROUP_INDICATOR);
+       if (settingStatusItem == SETTING_STATUS_ITEM_INVALID)
+       {
+               Label* pSettingName = new (std::nothrow) Label();
+               pSettingName->Construct(Rectangle(0, MARGIN_4PX / 2, itemWidth, H_LIST_ITEM_112PX - MARGIN_4PX), settingItem.GetName());
+               pSettingName->SetName(IDS_LIST_MAIN_TEXT);
+               pSettingName->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+               pSettingName->SetTextConfig(LIST_MAIN_TEXT_FONT_SIZE, LABEL_TEXT_STYLE_NORMAL);
+               pViewItem->AddControl(*pSettingName);
+       }
+       else
+       {
+               Label* pSettingName = new (std::nothrow) Label();
+               pSettingName->Construct(Rectangle(0, 0, itemWidth, H_LIST_ITEM_112PX / 2), settingItem.GetName());
+               pSettingName->SetName(IDS_LIST_MAIN_TEXT);
+               pSettingName->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+               pSettingName->SetTextConfig(LIST_MAIN_TEXT_FONT_SIZE, LABEL_TEXT_STYLE_NORMAL);
+               pViewItem->AddControl(*pSettingName);
+
+               Label* pSettingStatus = new (std::nothrow) Label();
+               pSettingStatus->Construct(Rectangle(0, H_LIST_ITEM_112PX / 2, itemWidth, H_LIST_ITEM_112PX / 2), GetMatchCriteriadString(__selectedMatchCriteriaIndex));
+               pSettingStatus->SetName(IDS_LIST_SUB_TEXT);
+               pSettingStatus->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+               pSettingStatus->SetTextConfig(LIST_SUB_TEXT_FONT_SIZE, LABEL_TEXT_STYLE_NORMAL);
+               pSettingStatus->SetTextColor(COLOR_SETTING_SUB_TEXT);
+               pViewItem->AddControl(*pSettingStatus);
+       }
+
+       if (settingItem.GetStyle() == SETTING_STYLE_EXPANDABLE)
+       {
+               Bitmap* pNormalIcon = null;
+               Bitmap* pPressIcon = null;
+               if (__pSettingItemsArray->IsGroupExpanded(groupIndex + 1))
+               {
+                       pNormalIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_OPENED);
+                       pPressIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_OPENED_PRESS);
+               }
+               else
+               {
+                       pNormalIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_CLOSE);
+                       pPressIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_CLOSE_PRESS);
+               }
+               pViewItem->EnableExpandViewModeStyle(pNormalIcon, pPressIcon);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pViewItem;
+}
+
+TableViewItem*
+SpamSettingsForm::CreateAutoRejectNumberSettingItemN(int itemIndex, int itemWidth)
+{
+       AppLogDebug("ENTER");
+
+       CustomTableViewItem* pViewItem = null;
+       SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
+       if (pSettingPrModel)
+       {
+               String blockNumber = pSettingPrModel->GetSpamFilterList()->GetFilterText(itemIndex, SPAM_FILTER_TYPE_BLOCK_NUMBER);
+               int filterType = pSettingPrModel->GetSpamFilterList()->GetFilterType(itemIndex, SPAM_FILTER_TYPE_BLOCK_NUMBER);
+               pViewItem = new (std::nothrow) CustomTableViewItem();
+               TableViewAnnexStyle style = TABLE_VIEW_ANNEX_STYLE_NORMAL;
+               if (__spamFormType == SPAM_SETTING_FORM_DELETE_REJECT_NUMBER)
+               {
+                       style = TABLE_VIEW_ANNEX_STYLE_MARK;
+               }
+               pViewItem->Construct(Dimension(itemWidth, H_LIST_ITEM_112PX), style);
+               pViewItem->SetBackgroundColor(COLOR_LIST_DIALOGUE_GROUP_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+               // Child control max width.
+               itemWidth -= (TableViewItem::GetAnnexWidth(style) + W_LIST_ITEM_GROUP_INDICATOR);
+               Label* pBlockNumber = new (std::nothrow) Label();
+               pBlockNumber->Construct(Rectangle(0, 0, itemWidth-20, H_LIST_ITEM_112PX / 2), blockNumber);
+               pBlockNumber->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+               pBlockNumber->SetTextConfig(LIST_MAIN_TEXT_FONT_SIZE, LABEL_TEXT_STYLE_NORMAL);
+               pViewItem->AddControl(*pBlockNumber);
+
+               Label* pMatchCriteria = new (std::nothrow) Label();
+               pMatchCriteria->Construct(Rectangle(0, H_LIST_ITEM_112PX / 2, itemWidth, H_LIST_ITEM_112PX / 2), GetMatchCriteriadString(filterType - 1));
+               pMatchCriteria->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+               pMatchCriteria->SetTextConfig(LIST_SUB_TEXT_FONT_SIZE, LABEL_TEXT_STYLE_NORMAL);
+               pMatchCriteria->SetTextColor(COLOR_SETTING_SUB_TEXT);
+               pViewItem->AddControl(*pMatchCriteria);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pViewItem;
+}
+
+TableViewItem*
+SpamSettingsForm::CreateBlockWordSettingItemN(int groupIndex, int itemIndex, int itemWidth)
+{
+       AppLogDebug("ENTER");
+
+       CustomTableViewItem* pViewItem = null;
+       SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
+       if (pSettingPrModel)
+       {
+               String blockWord = pSettingPrModel->GetSpamFilterList()->GetFilterText(itemIndex,
+                                                                                                                                                          SPAM_FILTER_TYPE_BLOCK_WORD);
+               pViewItem = new (std::nothrow) CustomTableViewItem();
+               TableViewAnnexStyle style = TABLE_VIEW_ANNEX_STYLE_NORMAL;
+               if (__spamFormType == SPAM_SETTING_FORM_DELETE_BLOCK_WORD)
+               {
+                       style = TABLE_VIEW_ANNEX_STYLE_MARK;
+               }
+               pViewItem->Construct(Dimension(itemWidth, H_LIST_ITEM_112PX), style);
+               pViewItem->SetBackgroundColor(COLOR_LIST_DIALOGUE_GROUP_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+               // Child control max width.
+               itemWidth -= (TableViewItem::GetAnnexWidth(style) + W_LIST_ITEM_GROUP_INDICATOR);
+               Label* pBlockWord = new (std::nothrow) Label();
+               pBlockWord->Construct(Rectangle(0, 0, itemWidth-20, H_LIST_ITEM_112PX), blockWord);
+               pBlockWord->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+               pBlockWord->SetTextConfig(LIST_MAIN_TEXT_FONT_SIZE, LABEL_TEXT_STYLE_NORMAL);
+               pViewItem->AddControl(*pBlockWord);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pViewItem;
+}
+
+
+void
+SpamSettingsForm::OnFocusGained(const Control& source)
+{
+       AppLogDebug("ENTER");
+
+       if (&source == __pEditField)
+       {
+               SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, false);
+
+               Header& header = *GetHeader();
+               String titleText = header.GetTitleText();
+               header.SetStyle(HEADER_STYLE_TITLE);
+               String strText;
+               ButtonItem leftButton;
+               leftButton.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_SAVE_REJECT_NUMBER);
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_SAVE", strText);
+               leftButton.SetText(strText);
+               header.SetButton(BUTTON_POSITION_LEFT, leftButton);
+               header.SetButtonEnabled(BUTTON_POSITION_LEFT, __pEditField->GetTextLength() > 0);
+
+               ButtonItem rightButton;
+               rightButton.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_CANCEL_REJECT_NUMBER);
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_CANCEL", strText);
+               rightButton.SetText(strText);
+               header.SetButton(BUTTON_POSITION_RIGHT, rightButton);
+               header.SetTitleText(titleText);
+               header.Invalidate(true);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+SpamSettingsForm::OnFocusLost(const Control& source)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       //Empty implementation
+}
+
+void
+SpamSettingsForm::CheckedRadioGroupItem(int groupIndex, int itemIndex)
+{
+       AppLogDebug("ENTER");
+
+       __selectedMatchCriteriaIndex = itemIndex;
+       int groupItemCount = __pSettingItemsArray->GetItemCount(groupIndex);
+
+       for (int index = 0; index < groupItemCount; index++)
+       {
+               __pGroupedTableView->SetItemChecked(groupIndex, index, (itemIndex == index));
+               __pGroupedTableView->RefreshItem(groupIndex, index, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+
+       }
+       int prvGroupItemCount = __pSettingItemsArray->GetItemCount(groupIndex - 1) - 1;
+       __pGroupedTableView->RefreshItem(groupIndex - 1, prvGroupItemCount, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+String
+SpamSettingsForm::GetMatchCriteriadString(int type)
+{
+       AppLogDebug("ENTER");
+
+       String strText;
+       switch (type)
+       {
+       case SETTING_MATCH_CRITERIA_ADDRESS_SAME:
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS", strText);
+               break;
+
+       case SETTING_MATCH_CRITERIA_ADDRESS_START:
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_SETBLOCK_START_WITH", strText);
+               break;
+
+       case SETTING_MATCH_CRITERIA_ADDRESS_INCLUDE:
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_SETBLOCK_INCLUDE", strText);
+               break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return strText;
+}
+
+void
+SpamSettingsForm::ShowSelectionInfo(void)
+{
+       AppLogDebug("ENTER");
+       String strText,selcInfo;
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_PD_SELECTED", strText);
+       Label* pSelectionInfo = static_cast<Label*>(GetControl(L"IDC_LABEL_SELECTINFO"));
+       pSelectionInfo->SetTextHorizontalAlignment(ALIGNMENT_CENTER);
+       pSelectionInfo->SetBackgroundColor(COLOR_SELECTION_INFO_LABEL);
+       if (__pSelectedIds)
+       {
+               bool showInfo = (__pSelectedIds && __pSelectedIds->GetCount() > 0);
+               if (__spamFormType == SPAM_SETTING_FORM_DELETE_REJECT_NUMBER)
+               {
+                       selcInfo.Format(MAX_LEN_SELECTION_INFO, strText.GetPointer(), __pSelectedIds->GetCount());
+               }
+               else if (__spamFormType == SPAM_SETTING_FORM_DELETE_BLOCK_WORD)
+               {
+                       selcInfo.Format(MAX_LEN_SELECTION_INFO, strText.GetPointer(), __pSelectedIds->GetCount());
+               }
+               GetFooter()->SetItemEnabled(0, showInfo);
+               GetFooter()->Draw();
+       }
+       else
+       {
+               selcInfo.Format(MAX_LEN_SELECTION_INFO, strText.GetPointer(), 0);
+       }
+       pSelectionInfo->SetText(selcInfo);
+       pSelectionInfo->RequestRedraw();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+SpamSettingsForm::CheckAll(bool value)
+{
+       AppLogDebug("ENTER");
+
+       __pSelectedIds->RemoveAll();
+       int groupItemCount(0);
+       for (int groupIndex = 0; groupIndex < __pGroupedTableView->GetGroupCount(); groupIndex++)
+       {
+               groupItemCount = __pGroupedTableView->GetItemCountAt(groupIndex);
+               for (int index = 0; index < groupItemCount; index++)
+               {
+                       __pGroupedTableView->SetItemChecked(groupIndex, index, value);
+                       // If item check add it in selected list.
+                       if (value)
+                       {
+                               __pSelectedIds->Add(index);
+                       }
+               }
+       }
+       Invalidate(true);
+       ShowSelectionInfo();
+       GetFooter()->SetItemEnabled(0, value);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+SpamSettingsForm::DeleteSelectedSpamFilters(void)
+{
+       AppLogDebug("ENTER");
+
+       SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
+       SpamFiterType filterType = SPAM_FILTER_TYPE_BLOCK_WORD;
+       if (__spamFormType == SPAM_SETTING_FORM_DELETE_REJECT_NUMBER)
+       {
+               filterType = SPAM_FILTER_TYPE_BLOCK_NUMBER;
+       }
+       int selectedFilterCount = __pSelectedIds->GetCount();
+       if (selectedFilterCount > 0)
+       {
+               // Create delete progress popup
+               if (!__pProgressPopup)
+               {
+                       __pProgressPopup = new (std::nothrow) MsgProgressPopup();
+                       String strTitle(IDS_DELETED_NUMBER_IDS);
+                       __pProgressPopup->Construct(0, selectedFilterCount, strTitle);
+               }
+               pSettingPrModel->DeleteFilter(__pSelectedIds, filterType, this);
+               __pSelectedIds = null;
+       }
+       else
+       {
+               HandleBackNavigation();
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+SpamSettingsForm::SelectContact(void)
+{
+       AppLogDebug("ENTER");
+
+       AppControl* pAppContl = AppManager::FindAppControlN(IDS_APPCONTROL_PROVIDER_CONTACT,
+                                                                                                               IDS_APPCONTROL_OPERATION_PICK);
+       if (pAppContl && __oneTimeFlag)
+       {
+               HashMap* pHashMap = new (std::nothrow) HashMap();
+               pHashMap->Construct();
+               String* pModeKey = new (std::nothrow) String(L"selectionMode");
+               String* pModeVal = new (std::nothrow) String(L"single");
+               pHashMap->Add(pModeKey, pModeVal);
+               String* pTypeKey = new (std::nothrow) String(L"returnType");
+               String* pTypeVal = new (std::nothrow) String(L"phone");
+               pHashMap->Add(pTypeKey, pTypeVal);
+               pAppContl->Start(null, null, pHashMap, this);
+               pHashMap->RemoveAll(true);
+               delete pHashMap;
+               delete pAppContl;
+               __oneTimeFlag = false;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+SpamSettingsForm::OnAppControlCompleteResponseReceived(const AppId& appId, const String& operationId,
+                                                                                                          AppCtrlResult appControlResult, const IMap* pResultMap)
+{
+       AppLogDebug("ENTER");
+       String provider(IDS_APPCONTROL_PROVIDER_CONTACT);
+       String operation(IDS_APPCONTROL_OPERATION_PICK);
+
+       if ( /*appId.Equals(provider) &&*/
+               operationId.Equals(operation))
+       {
+               AppLogDebug("ENTER");
+               if (appControlResult == APP_CTRL_RESULT_SUCCEEDED)
+               {
+                       AppLogDebug("ENTER");
+                       if (pResultMap && pResultMap->GetCount() > 0)
+                       {
+                               String* pPhoneNumber = (String*) pResultMap->GetValue(String(L"value"));
+                               if (pPhoneNumber)
+                               {
+                                       __pEditField->SetText(*pPhoneNumber);
+                               }
+                               if(__pEditField->HasFocus() == false)
+                               {
+                                       __pEditField->SetFocus();
+                               }
+                       }
+               }
+       }
+       __oneTimeFlag = true;
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+
+void
+SpamSettingsForm::ShowConfirmationPopup(void)
+{
+       AppLogDebug("ENTER");
+
+       if (__pConfirmationPopup == null)
+       {
+               __pConfirmationPopup = new (std::nothrow) Popup();
+               __pConfirmationPopup->Construct(L"IDL_BLOCK_MESSAGE_INFO_POPUP");
+
+               TextBox* pTextBoxPopup = static_cast<TextBox*>(__pConfirmationPopup->GetControl(L"IDC_BLOCK_INFO_TEXTBOX"));
+               Button* pButtonYes = static_cast<Button*>(__pConfirmationPopup->GetControl(L"IDC_BUTTON_YES"));
+               Button* pButtonNo = static_cast<Button*>(__pConfirmationPopup->GetControl(L"IDC_BUTTON_NO"));
+               String strText;
+
+               if (__spamFormType == SPAM_SETTING_FORM_ADD_REJECT_NUMBER)
+               {
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_NUMBERS", strText);
+                       pTextBoxPopup->SetText(strText);
+                       pButtonYes->SetActionId(IDA_SPAM_NUMBER_CONFIRMATION_YES);
+                       pButtonNo->SetActionId(IDA_SPAM_NUMBER_CONFIRMATION_NO);
+               }
+               else if (__spamFormType == SPAM_SETTING_FORM_ADD_BLOCK_WORD)
+               {
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS", strText);
+                       pTextBoxPopup->SetText(strText);
+                       pButtonYes->SetActionId(IDA_SPAM_WORD_CONFIRMATION_YES);
+                       pButtonNo->SetActionId(IDA_SPAM_WORD_CONFIRMATION_NO);
+               }
+               pButtonYes->AddActionEventListener(*this);
+               pButtonNo->AddActionEventListener(*this);
+               __pConfirmationPopup->Show();
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+SpamSettingsForm::SaveSpamFilter(SpamFiterType filterType)
+{
+       AppLogDebug("ENTER");
+       bool alreadyExist(false);
+       int index(0),count(0);
+       if (__pConfirmationPopup)
+       {
+               delete __pConfirmationPopup;
+               __pConfirmationPopup = null;
+       }
+       SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
+       if (pSettingPrModel)
+       {
+               String filterText = __pEditField->GetText();
+               if (filterType == SPAM_FILTER_TYPE_BLOCK_WORD)
+               {
+                       count = pSettingPrModel->GetSpamFilterList()->GetBlockWordCount();
+                       while(index++ < count)
+                       {
+                               // Check for duplicate word
+                               if(filterText.CompareTo(pSettingPrModel->GetSpamFilterList()->GetFilterText(index - 1,filterType)) == 0)
+                               {
+                                       alreadyExist = true;
+                                       break;
+                               }
+                       }
+                       if(!alreadyExist)
+                       {
+                               if (__editSpamFilterIndex >= 0)
+                               {
+                                       // Existing word filter edit
+                                       pSettingPrModel->UpdateFilter(__editSpamFilterIndex, SPAM_FILTER_TYPE_BLOCK_WORD, filterText, 0);
+                               }
+                               else
+                               {
+                                       pSettingPrModel->AddToFilter(filterText, 0);
+                               }
+                       }
+               }
+               else
+               {
+                       count = pSettingPrModel->GetSpamFilterList()->GetBlockNumberCount();
+                       while(index++ < count)
+                       {
+                               // Check for duplicate number
+                               if(filterText.CompareTo(pSettingPrModel->GetSpamFilterList()->GetFilterText(index - 1,filterType)) == 0)
+                               {
+                                       alreadyExist = true;
+                                       break;
+                               }
+                       }
+                       if(!alreadyExist)
+                       {
+                               if (__editSpamFilterIndex >= 0)
+                               {
+                                       // Existing number filter edit
+                                       pSettingPrModel->UpdateFilter(__editSpamFilterIndex, SPAM_FILTER_TYPE_BLOCK_NUMBER, filterText, __selectedMatchCriteriaIndex + 1);
+                               }
+                               else
+                               {
+                                       pSettingPrModel->AddToFilter(filterText, __selectedMatchCriteriaIndex + 1);
+                               }
+                       }
+               }
+               pSettingPrModel->RefreshSpamFilterList();
+       }
+       SceneManager* pSceneManager = SceneManager::GetInstance();
+       pSceneManager->GoBackward(BackwardSceneTransition(__previousSceneId, SCENE_TRANSITION_ANIMATION_TYPE_NONE));
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+SpamSettingsForm::OnTextValueChanged(const Control& source)
+{
+       AppLogDebug("ENTER");
+       String editText = __pEditField->GetText();
+       int index(0);
+
+       if(editText.IndexOf(L'\n',0,index) == E_SUCCESS)
+       {
+               editText.Replace(L'\n',' ');
+               __pEditField->SetText(editText);
+       }
+
+       Header* pHeader = GetHeader();
+       if (pHeader)
+       {
+               pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, __pEditField->GetTextLength() > 0);
+               pHeader->Draw();
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+SpamSettingsForm::OnTextValueChangeCanceled(const Control& source)
+{
+       AppLogDebug("ENTER");
+       //Empty implementation
+}
+
+void
+SpamSettingsForm::UpdateMatchCriteriaSettingItem(int groupIndex, int itemIndex, TableViewItem* pViewItem)
+{
+       AppLogDebug("ENTER");
+       SettingItem& settingItem = __pSettingItemsArray->GetItemAt(groupIndex, itemIndex);
+       Label* pSettingName = (Label*) pViewItem->GetControl(IDS_LIST_MAIN_TEXT);
+       if (pSettingName)
+       {
+               pSettingName->SetText(settingItem.GetName());
+               pSettingName->Draw();
+       }
+       Label* pSettingStatus = static_cast<Label*>(pViewItem->GetControl(IDS_LIST_SUB_TEXT));
+       if (pSettingStatus)
+       {
+               pSettingStatus->SetText(GetMatchCriteriadString(__selectedMatchCriteriaIndex));
+               pSettingStatus->Draw();
+       }
+
+       if (settingItem.GetStyle() == SETTING_STYLE_EXPANDABLE)
+       {
+               Bitmap* pNormalIcon = null;
+               Bitmap* pPressIcon = null;
+               if (__pSettingItemsArray->IsGroupExpanded(groupIndex + 1))
+               {
+                       pNormalIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_OPENED);
+                       pPressIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_OPENED_PRESS);
+               }
+               else
+               {
+                       pNormalIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_CLOSE);
+                       pPressIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_LIST_EXPAND_CLOSE_PRESS);
+               }
+               static_cast<CustomTableViewItem*>(pViewItem)->EnableExpandViewModeStyle(pNormalIcon, pPressIcon);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+SpamSettingsForm::LoadCurrentSettings(void)
+{
+       if (__pSettingItemsArray)
+       {
+               for (int groupIndex = 0; groupIndex < __pSettingItemsArray->GetGroupCount(); groupIndex++)
+               {
+                       for (int itemIndex = 0; itemIndex < __pSettingItemsArray->GetItemCount(groupIndex); itemIndex++)
+                       {
+                               __pGroupedTableView->SetItemChecked(groupIndex, itemIndex, (__selectedMatchCriteriaIndex == itemIndex));
+                       }
+                       if (__pSettingItemsArray->IsGroupExpanded(groupIndex))
+                       {
+                               __pGroupedTableView->ExpandGroup(groupIndex);
+                       }
+               }
+               __pGroupedTableView->UpdateTableView();
+       }
+}
+
+
+void
+SpamSettingsForm::OnDeleteStart(int totalCount)
+{
+       AppLogDebug("ENTER");
+
+       if (__pProgressPopup)
+       {
+               __pProgressPopup->ShowPopup();
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+SpamSettingsForm::OnDeleteUpdate(int deleteCount, int totalCount)
+{
+       AppLogDebug("ENTER");
+
+       if (__pProgressPopup)
+       {
+               String statusInfo;
+               statusInfo.Format(MAX_LEN_SELECTION_INFO, IDS_DELETED_NUMBER_IDS, deleteCount, totalCount);
+               __pProgressPopup->UpdateProgressInfo(statusInfo);
+               __pProgressPopup->SetProgressValue(deleteCount);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+SpamSettingsForm::OnDeleteComplete(int errCode, Object* pThreadObject)
+{
+       AppLogDebug("ENTER");
+
+       // Back to thread view mode
+       if (__pProgressPopup)
+       {
+               __pProgressPopup->HidePopup();
+               delete __pProgressPopup;
+               __pProgressPopup = null;
+       }
+
+       // UI thread, Back to list view mode.
+       RequestId requestId = REQUEST_NORMAL_VIEW;
+       SendUserEvent(requestId, null);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+SpamSettingsForm::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
+{
+       AppLogDebug("ENTER");
+
+       switch (requestId)
+       {
+       case REQUEST_NORMAL_VIEW:
+               HandleBackNavigation();
+               break;
+
+       case REQUEST_DELETE_START:
+               if(pArgs->GetCount() > 0)
+               {
+                       Integer* pTotalCount = (Integer*)pArgs->GetAt(0);
+                       OnDeleteStart(pTotalCount->ToInt());
+                       delete pArgs;
+               }
+               break;
+
+       case REQUEST_DELETE_UPDATE:
+               if(pArgs->GetCount() > 0)
+               {
+                       Integer* pCurrentCount = (Integer*)pArgs->GetAt(0);
+                       Integer* pTotalCount = (Integer*)pArgs->GetAt(1);
+                       OnDeleteUpdate(pCurrentCount->ToInt(),pTotalCount->ToInt());
+                       delete pArgs;
+               }
+               break;
+
+       case REQUEST_DELETE_COMPLETE:
+               if(pArgs->GetCount() > 0)
+               {
+                       Integer* pStatus = (Integer*)pArgs->GetAt(0);
+                       OnDeleteComplete(pStatus->ToInt(),null);
+                       delete pArgs;
+               }
+               break;
+
+       default:
+               break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
diff --git a/src/MsgSubjectControl.cpp b/src/MsgSubjectControl.cpp
new file mode 100644 (file)
index 0000000..d6750ae
--- /dev/null
@@ -0,0 +1,230 @@
+//\r
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
+//\r
+// Licensed under the Flora License, Version 1.0 (the License);\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://floralicense.org/license/\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an AS IS BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+\r
+//#include <FApp.h>\r
+\r
+#include "MsgBitmapUtility.h"\r
+#include "MsgSubjectControl.h"\r
+#include "MsgTypes.h"\r
+\r
+\r
+using namespace Tizen::App;\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Graphics;\r
+using namespace Tizen::Ui::Controls;\r
+using namespace Tizen::Ui;\r
+\r
+SubjectControl::SubjectControl(void)\r
+       : __pFocusEvent(null)\r
+       , __pEditArea(null)\r
+       , __pDeleteButton(null)\r
+       , __pBgBitmap(null)\r
+{\r
+       // Empty implementation\r
+}\r
+\r
+SubjectControl::~SubjectControl(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       // Empty implementation\r
+       if (__pBgBitmap)\r
+       {\r
+               delete __pBgBitmap;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+SubjectControl::Construct(const Rectangle& rectangle)\r
+{\r
+       AppLogDebug("ENTER");\r
+       result r = E_SUCCESS;\r
+       r = Container::Construct(rectangle);\r
+       __pBgBitmap = BitmapUtility::GetInstance()->GetIconN(MSG_ICON_SEARCH_INPUT_BG);\r
+       // add delete button\r
+       __pDeleteButton = new (std::nothrow) Button();\r
+       __pDeleteButton->Construct(Rectangle(rectangle.width - W_ICON_48PX - MARGIN_16PX,\r
+                                                                                (rectangle.height - H_ICON_48PX) / 2, W_ICON_48PX, H_ICON_48PX));\r
+       Bitmap* pNormalBitMap = BitmapUtility::GetInstance()->GetIconN(MSG_ICON_PAGE_DELETE);\r
+       __pDeleteButton->SetNormalBackgroundBitmap(*pNormalBitMap);\r
+       Bitmap* pPressBitMap = BitmapUtility::GetInstance()->GetIconN(MSG_ICON_PAGE_DELETE_PRESS);\r
+       __pDeleteButton->SetPressedBackgroundBitmap(*pPressBitMap);\r
+       __pDeleteButton->SetShowState(false);\r
+       AddControl(*__pDeleteButton);\r
+       delete pPressBitMap;\r
+       delete pNormalBitMap;\r
+       // Subject edit filed.\r
+       __pEditArea = new (std::nothrow) EditField();\r
+       __pEditArea->Construct(Rectangle(0, 0, rectangle.width, rectangle.height),\r
+                                                  EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);\r
+       __pEditArea->AddFocusEventListener(*this);\r
+       __pEditArea->SetOverlayKeypadCommandButtonVisible(false);\r
+       //__pEditArea->SetGuideText(L"Subject");\r
+       __pEditArea->SetColor(EDIT_STATUS_PRESSED, __pEditArea->GetColor(EDIT_STATUS_NORMAL));\r
+       __pEditArea->SetTextColor(EDIT_TEXT_COLOR_HIGHLIGHTED, __pEditArea->GetTextColor(EDIT_TEXT_COLOR_NORMAL));\r
+       AddControl(*__pEditArea);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+result\r
+SubjectControl::OnDraw(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       result r = E_SUCCESS;\r
+       Canvas* pCanvas = GetCanvasN();\r
+       if (pCanvas)\r
+       {\r
+               Rectangle rect = GetBounds();\r
+               pCanvas->FillRectangle(COLOR_COMPOSE_PANEL_BG,\r
+                                                          Rectangle(0, 0, rect.width, rect.height));\r
+               if (__pBgBitmap)\r
+               {\r
+                       pCanvas->DrawNinePatchedBitmap(Rectangle(0, 0, rect.width, rect.height), *__pBgBitmap);\r
+               }\r
+               delete pCanvas;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+// Form ComposeBaseControl\r
+ComposeControlType\r
+SubjectControl::GetControlType(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       return COMPOSE_CONTROL_SUBJECT;\r
+}\r
+\r
+void\r
+SubjectControl::AddKeypadEventListener(IKeypadEventListener& listener)\r
+{\r
+       AppLogDebug("ENTER");\r
+       __pEditArea->AddKeypadEventListener(listener);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+SubjectControl::AddTextEventListener(ITextEventListener& listener)\r
+{\r
+       AppLogDebug("ENTER");\r
+       __pEditArea->AddTextEventListener(listener);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+SubjectControl::AddFocusEventListener(IFocusEventListener& listener)\r
+{\r
+       AppLogDebug("ENTER");\r
+       __pEditArea->AddFocusEventListener(listener);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+SubjectControl::AddActionEventListener(IActionEventListener& listener)\r
+{\r
+       AppLogDebug("ENTER");\r
+       __pDeleteButton->AddActionEventListener(listener);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+SubjectControl::SetDeleteActionId(int actionId)\r
+{\r
+       AppLogDebug("ENTER");\r
+       __pDeleteButton->SetActionId(actionId);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+SubjectControl::SetDeleteShowState(bool visible)\r
+{\r
+       AppLogDebug("ENTER");\r
+       __pDeleteButton->SetShowState(visible);\r
+       Rectangle rectangle = GetBounds();\r
+       Dimension editorSize = __pEditArea->GetSize();\r
+       if (visible)\r
+       {\r
+               editorSize.width = rectangle.width - (W_ICON_48PX + MARGIN_16PX * 2);\r
+       }\r
+       else\r
+       {\r
+               editorSize.width = rectangle.width;\r
+       }\r
+       __pEditArea->SetSize(editorSize);\r
+       Draw();\r
+       Show();\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+SubjectControl::ShowKeypad(bool visible)\r
+{\r
+       AppLogDebug("ENTER");\r
+       result r = E_SUCCESS;\r
+       if (visible)\r
+       {\r
+               r = __pEditArea->ShowKeypad();\r
+       }\r
+       else\r
+       {\r
+               r = __pEditArea->HideKeypad();\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return r;\r
+}\r
+\r
+result\r
+SubjectControl::SetFocus(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __pEditArea->SetFocus();\r
+}\r
+\r
+\r
+void\r
+SubjectControl::OnFocusGained(const Control& source)\r
+{\r
+       AppLogDebug("ENTER");\r
+       __pEditArea->SetGuideText(IDS_BLANK);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+SubjectControl::OnFocusLost(const Control& source)\r
+{\r
+       AppLogDebug("ENTER");\r
+       __pEditArea->SetGuideText(IDS_SUBJECT);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+\r
+result\r
+SubjectControl::SetText(const String& strText)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __pEditArea->SetText(strText);\r
+}\r
+\r
+String\r
+SubjectControl::GetText(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return __pEditArea->GetText();\r
+}\r
diff --git a/src/MsgThreadData.cpp b/src/MsgThreadData.cpp
new file mode 100644 (file)
index 0000000..7af3383
--- /dev/null
@@ -0,0 +1,346 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <msg.h>
+#include <msg_storage.h>
+
+#include <FApp.h>
+#include <FBaseResult.h>
+#include <FBaseString.h>
+#include <time.h>
+
+#include "MsgThreadData.h"
+#include "MsgTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+
+
+ThreadData::ThreadData(msg_handle_t msgHandle)
+       : __pMsgHandle(msgHandle)
+       , __threadId(-1)
+       , __threadName(IDS_BLANK)
+       , __messageType(MSG_TYPE_SMS)
+       , __shortDes(IDS_BLANK)
+       , __messageTime(-1)
+       , __unreadCount(0)
+       , __draftMsgCount(0)
+{
+       //Empty implementation
+}
+
+result
+ThreadData::Construct(msg_struct_t pThreadInfo)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       //Thread id
+       msg_error_t err = msg_get_int_value(pThreadInfo, MSG_THREAD_ID_INT, &__threadId);
+       if (err != MSG_SUCCESS)
+       {
+               AppLogDebug("EXIT:Unable to fetch thread ID err =%d", (int) err);
+               result r = E_FAILURE;
+               return r;
+       }
+       // Thread name
+       r = InitThreadName(pThreadInfo);
+       if (IsFailed(r))
+       {
+               AppLogDebug("EXIT: %s", GetErrorMessage(r));
+               return r;
+       }
+       // Get last message type.
+       err = msg_get_int_value(pThreadInfo, MSG_THREAD_MSG_TYPE_INT, &__messageType);
+       if (err != MSG_SUCCESS)
+       {
+               AppLogDebug("EXIT:Unable to fetch thread last message type err =%d", (int) err);
+               result r = E_FAILURE;
+               return r;
+       }
+       // Short description
+       r = InitShortDescription(pThreadInfo);
+       if (IsFailed(r))
+       {
+               AppLogDebug("EXIT: %s", GetErrorMessage(r));
+               return r;
+       }
+       //Get message time
+       err = msg_get_int_value(pThreadInfo, MSG_THREAD_MSG_TIME_INT, &__messageTime);
+       if (err != MSG_SUCCESS)
+       {
+               AppLogDebug("EXIT:Unable to fetch thread message time err =%d", (int) err);
+               r = E_FAILURE;
+               return r;
+       }
+       // Get Unread count
+       err = msg_get_int_value(pThreadInfo, MSG_THREAD_UNREAD_COUNT_INT, &__unreadCount);
+       if (err != MSG_SUCCESS)
+       {
+               AppLogDebug("EXIT:Unable to fetch thread unread count err =%d", (int) err);
+               r = E_FAILURE;
+               return r;
+       }
+       // Group name
+       InitTimeStampGroupName();
+       //Initialize draft property
+       msg_struct_list_s draftList;
+       msg_folder_id_t folderId = MSG_DRAFT_ID;
+       msg_thread_id_t thrdId = __threadId;
+       msg_storage_id_t storageId = MSG_STORAGE_PHONE;
+       msg_message_type_t msgType = 0;
+       msg_get_message_list(__pMsgHandle, folderId, thrdId, msgType, storageId, &draftList);
+       __draftMsgCount = draftList.nCount;
+       msg_release_list_struct(&draftList);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+BaseData*
+ThreadData::CloneN(void)
+{
+       AppLogDebug("ENTER");
+       ThreadData* pThreadData = new (std::nothrow) ThreadData(__pMsgHandle);
+       if (pThreadData)
+       {
+               pThreadData->__threadId = this->__threadId;
+               pThreadData->__threadName = this->__threadName;
+               pThreadData->__messageType = this->__messageType;
+               pThreadData->__shortDes = this->__shortDes;
+               pThreadData->__messageTime = this->__messageTime;
+               pThreadData->__unreadCount = this->__unreadCount;
+               pThreadData->__timeStamp = this->__timeStamp;
+               pThreadData->__groupName = this->__groupName;
+               pThreadData->__draftMsgCount = this->__draftMsgCount;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pThreadData;
+}
+
+ThreadData::~ThreadData(void)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+// Get Thread name
+const String&
+ThreadData::GetDisplayName(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __threadName;
+}
+
+// Get unread message count  of given thread index.
+int
+ThreadData::GetUnreadCount(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+
+       return __unreadCount;
+}
+
+// Get message short description of given thread index.
+const String&
+ThreadData::GetMessageText(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+
+       return __shortDes;
+}
+
+// Get last message type of given thread list index.
+int
+ThreadData::GetMessageType(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+
+       return __messageType;
+}
+
+// Get thread ID of given thread index.
+int
+ThreadData::GetEntryId(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+
+       return __threadId;
+}
+
+
+// Fetch time stamp of given thread index.
+const String&
+ThreadData::GetTimeStamp(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __timeStamp;
+}
+
+const String&
+ThreadData::GetGroupName(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __groupName;
+}
+
+DataType
+ThreadData::GetDataType(void)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return DATA_TYPE_THREAD;
+}
+
+result
+ThreadData::InitThreadName(msg_struct_t pThreadInfo)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       char* pThreadName = new (std::nothrow) char[MAX_DISPLAY_NAME_LEN];
+       msg_error_t err = msg_get_str_value(pThreadInfo, MSG_THREAD_NAME_STR, pThreadName, MAX_DISPLAY_NAME_LEN);
+       if (err != MSG_SUCCESS)
+       {
+               delete[] pThreadName;
+               AppLogDebug("EXIT:Unable to fetch thread name err =%d", (int) err);
+               r = E_FAILURE;
+               return r;
+       }
+       __threadName.Append(pThreadName);
+       delete[] pThreadName;
+       if (__threadName.IsEmpty())
+       {
+               __threadName.Append(IDS_BLANK_SPACE);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+result
+ThreadData::InitShortDescription(msg_struct_t pThreadInfo)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       char* pShortDes = new (std::nothrow) char[MAX_MSG_TEXT_LEN];
+       if (pShortDes)
+       {
+               msg_error_t err = msg_get_str_value(pThreadInfo, MSG_THREAD_MSG_DATA_STR, pShortDes, MAX_MSG_TEXT_LEN);
+               if (err != MSG_SUCCESS)
+               {
+                       delete[] pShortDes;
+                       AppLogDebug("EXIT:Unable to fetch thread short description =%d", (int) err);
+                       r = E_FAILURE;
+                       return r;
+               }
+               __shortDes.Append(pShortDes);
+               if ((__messageType == MSG_TYPE_MMS) && __shortDes.IsEmpty())
+               {
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_NO_SUBJECT", __shortDes);
+               }
+               delete[] pShortDes;
+       }
+       if (__shortDes.IsEmpty())
+       {
+               __shortDes.Append(IDS_BLANK_SPACE);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+result
+ThreadData::InitTimeStampGroupName(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       char timeStamp[MAX_DATE_LEN];
+       char groupName[MAX_DATE_LEN];
+       char timestm[MAX_DATE_LEN];
+       struct tm msgTimeInfo, currentTimeInfo;
+       tzset();
+       // Fetch Message time.
+       time_t pTime(__messageTime);
+       localtime_r(&pTime, &msgTimeInfo);
+       // Fetch current time.
+       time_t now;
+       time(&now);
+       localtime_r(&now, &currentTimeInfo);
+
+       // Calculate time difference
+       int msgDay = (msgTimeInfo.tm_year - YEAR_1900) * DAYS_365 + msgTimeInfo.tm_yday + (msgTimeInfo.tm_year - YEAR_1900 - 1) / LEAP_YEAR_GAP;
+       int curDay = (currentTimeInfo.tm_year - YEAR_1900) * DAYS_365 + currentTimeInfo.tm_yday + (currentTimeInfo.tm_year - YEAR_1900 - 1) / LEAP_YEAR_GAP;
+       int dayDiff = curDay - msgDay;
+       if (dayDiff == 0)
+       {
+               strftime(timeStamp, (size_t) MAX_DATE_LEN, "%I:%M ", &msgTimeInfo);
+               strftime(timestm, (size_t) MAX_DATE_LEN, "%H", &msgTimeInfo);
+               __groupName.Append(L"Today");
+               strftime(groupName, (size_t) MAX_DATE_LEN, " (%a, %02d. %b.)", &msgTimeInfo);
+               __groupName.Append(groupName);
+       }
+       else if (dayDiff == 1)
+       {
+               //strcpy(timeStamp, "Yesterday");
+               strftime(timeStamp, (size_t) MAX_DATE_LEN, "%I:%M ", &msgTimeInfo);
+               strftime(timestm, (size_t) MAX_DATE_LEN, "%H", &msgTimeInfo);
+               __groupName.Append(L"Yesterday");
+               strftime(groupName, (size_t) MAX_DATE_LEN, " (%a, %02d. %b.)", &msgTimeInfo);
+               __groupName.Append(groupName);
+       }
+       else
+       {
+               strftime(timeStamp, (size_t) MAX_DATE_LEN, "%I:%M ", &msgTimeInfo);
+               strftime(timestm, (size_t) MAX_DATE_LEN, "%H", &msgTimeInfo);
+               //strftime(timeStamp, MAX_DATE_LEN, "%02d %b", &msgTimeInfo);
+               strftime(groupName, (size_t) MAX_DATE_LEN, "%a, %02d %b", &msgTimeInfo);
+               __groupName.Append(groupName);
+       }
+       String strtext;
+       String str(L"");
+       str.Append(timestm);
+       if (12 > atoi(timestm))
+       {
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_POP_AM_M_ABB", strtext);
+       }
+       else
+       {
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_POP_PM", strtext);
+       }
+       __timeStamp.Append(timeStamp);
+       __timeStamp.Append(strtext);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+const int
+ThreadData::GetDraftMessageCount(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __draftMsgCount;
+}
diff --git a/src/MsgThreadListForm.cpp b/src/MsgThreadListForm.cpp
new file mode 100644 (file)
index 0000000..eb4993c
--- /dev/null
@@ -0,0 +1,2325 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include "MsgBaseCustomPopup.h"
+#include "MsgBitmapUtility.h"
+#include "MsgCommonUtil.h"
+#include "MsgContactUtility.h"
+#include "MsgLVThreadListItem.h"
+#include "MsgMessageData.h"
+#include "MsgPhoneNumberListPopup.h"
+#include "MsgProgressPopup.h"
+#include "MsgSettingPresentationModel.h"
+#include "MsgSmsManager.h"
+#include "MsgThreadData.h"
+#include "MsgThreadListForm.h"
+#include "MsgThreadPresentationModel.h"
+#include "MsgTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+ThreadListForm::ThreadListForm(ThreadListFormType threadListFormType, ThreadListType threadListType)
+       : __isSearchBarClicked(false)
+       , __threadListFormType(threadListFormType)
+       , __listType(threadListType)
+       , __pThreadGroupList(null)
+       , __pItemContext(null)
+       , __pSearchList(null)
+       , __pSearchBar(null)
+       , __pCheckAll(null)
+       , __pSelectionInfo(null)
+       , __pSelectedIds(null)
+       , __pProgressPopup(null)
+       , __pContextMenu(null)
+       , __pDeletePopup(null)
+       , __msgListItemIndex(-1)
+       , __pPhoneNumberListPopup(null)
+       , __pBlockPopup(null)
+       , __contextItemType(MSG_CONTEXT_ITEM_CALL_TYPE)
+       , __pItemContextUnblock(null)
+       , __blockGroupIndex(0)
+       , __blockItemIndex(0)
+{
+       // Empty implementation
+}
+
+ThreadListForm::~ThreadListForm(void)
+{
+       AppLogDebug("ENTER");
+
+       // Cancel ongoing operation.
+       ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
+       if(pThreadPrModel)
+       {
+               pThreadPrModel->RemoveThreadListEventListener(*this);
+               pThreadPrModel->CancelDelete();
+               pThreadPrModel->CancelRestore();
+       }
+       if (__pContextMenu)
+       {
+               delete __pContextMenu;
+       }
+       if (__pItemContext)
+       {
+               delete __pItemContext;
+       }
+       if (__pDeletePopup)
+       {
+               delete __pDeletePopup;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+bool
+ThreadListForm::Initialize(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       switch (__threadListFormType)
+       {
+       case THREAD_LIST_FORM_VIEW:
+       case THREAD_LIST_FORM_SIMMSG_VIEW:
+       case THREAD_LIST_FORM_SPAMMSG_VIEW:
+       case THREAD_LIST_FORM_CBMSG_VIEW:
+       case THREAD_LIST_FORM_DRAFTMSG_VIEW:
+       {
+               r = Construct(L"IDL_THREAD_LIST_FORM");
+       }
+       break;
+
+       case THREAD_LIST_FORM_EDIT:
+       case THREAD_LIST_FORM_SIMMSG_EDIT:
+       case THREAD_LIST_FORM_SPAMMSG_EDIT:
+       case THREAD_LIST_FORM_CBMSG_EDIT:
+       case THREAD_LIST_FORM_DRAFTMSG_EDIT:
+       {
+               r = Construct(L"IDL_THREAD_LIST_EDIT_FORM");
+       }
+       break;
+       }
+
+       ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
+       if (pThreadPrModel)
+       {
+               pThreadPrModel->Clear();
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return (!IsFailed(r));
+}
+
+void
+ThreadListForm::OnIntializeFooter(Footer& footer)
+{
+       AppLogDebug("ENTER");
+
+       // Update footer.
+       SetFooter();
+       footer.AddActionEventListener(*this);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::OnIntializeHeader(Header& header)
+{
+       AppLogDebug("ENTER");
+
+       // Update header.
+       SetHeader();
+       header.AddActionEventListener(*this);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+result
+ThreadListForm::OnInitializing(void)
+{
+//     result r = E_SUCCESS;
+       BaseForm::InitializeBase();
+//     if (r != E_SUCCESS)
+//     {
+//             AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+//             return r;
+//     }
+
+       result r = CreateContextMenu();
+       if (r != E_SUCCESS)
+       {
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+               return r;
+       }
+
+       r = CreateContextMenuUnBlock();
+       if (r != E_SUCCESS)
+       {
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+               return r;
+       }
+       switch (__threadListFormType)
+       {
+       case THREAD_LIST_FORM_VIEW:
+       case THREAD_LIST_FORM_SIMMSG_VIEW:
+       case THREAD_LIST_FORM_SPAMMSG_VIEW:
+       case THREAD_LIST_FORM_CBMSG_VIEW:
+       case THREAD_LIST_FORM_DRAFTMSG_VIEW:
+       {
+               r = AddSearchBar();
+       }
+       break;
+
+       case THREAD_LIST_FORM_EDIT:
+       case THREAD_LIST_FORM_SIMMSG_EDIT:
+       case THREAD_LIST_FORM_SPAMMSG_EDIT:
+       case THREAD_LIST_FORM_CBMSG_EDIT:
+       case THREAD_LIST_FORM_DRAFTMSG_EDIT:
+       {
+               r = AddEditCheckBox();
+               __pSelectedIds = new (std::nothrow) ArrayListT< int>();
+               __pSelectedIds->Construct();
+               AddLabelSelectionInfo();
+       }
+       break;
+
+       }
+       if (r != E_SUCCESS)
+       {
+               AppLogDebug("EXIT: %s", GetErrorMessage(r));
+               return r;
+       }
+
+       r = AddListBox();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(r));
+       return r;
+}
+
+result
+ThreadListForm::CreateContextMenu()
+{
+       AppLogDebug("ENTER");
+
+       // Create List context menu
+       __pItemContext = new (std::nothrow) ListContextItem();
+       result r = __pItemContext->Construct();
+
+       //ThreadList
+       String strText;
+
+       switch (__threadListFormType)
+       {
+       case THREAD_LIST_FORM_VIEW:
+       {
+               //ThreadList
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_CALL", strText);
+               __pItemContext->AddElement(IDC_VOICE_CALL_ITEM, strText);
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_OPT_BLOCK", strText);
+               __pItemContext->AddElement(IDC_BLOCK_ITEM, strText);
+       }
+       break;
+
+       case THREAD_LIST_FORM_SIMMSG_VIEW:
+       {
+               //SIM Messages
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_COPY_TO_PHONE", strText);
+               __pItemContext->AddElement(IDC_COPY_TO_PHONE, strText);
+       }
+       break;
+
+       case THREAD_LIST_FORM_SPAMMSG_VIEW:
+       {
+               //SPAM Messages
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_SK_RESTORE", strText);
+               __pItemContext->AddElement(IDC_RESTORE, strText);
+       }
+       break;
+
+       case THREAD_LIST_FORM_CBMSG_VIEW:
+       case THREAD_LIST_FORM_DRAFTMSG_VIEW:
+       default:
+               break;
+       }
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_DELETE", strText);
+       Bitmap* pSweepNormalIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_DELETE_SWEEP,
+                                                                                                                                        Dimension(W_LIST_SWEEP_BUTTON_100PX, H_LIST_SWEEP_BUTTON_74PX));
+       Bitmap* pSweepPressIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_DELETE_PRESS_SWEEP,
+                                                                                                                                       Dimension(W_LIST_SWEEP_BUTTON_100PX, H_LIST_SWEEP_BUTTON_74PX));
+       __pItemContext->AddElement(IDC_DELETE_CONTEXT_ITEM, strText, *pSweepNormalIcon, *pSweepPressIcon);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+result
+ThreadListForm::AddSearchBar(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       Rectangle rect = GetClientAreaBounds();
+
+       String strText;
+       __pSearchBar = static_cast<SearchBar*>(GetControl(L"IDC_SEARCHBAR"));
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_SEARCH", strText);
+       __pSearchBar->SetGuideText(strText);
+       __pSearchBar->AddSearchBarEventListener(*this);
+       __pSearchBar->AddTextEventListener(*this);
+       __pSearchBar->AddKeyEventListener(*this);
+       __pSearchBar->AddKeypadEventListener(*this);
+       __pSearchBar->AddTouchEventListener(*this);
+       __pSearchBar->SetSearchFieldTextColor(SEARCH_FIELD_STATUS_NORMAL, COLOR_THREADLIST_SEARCH_TEXT);
+
+       // Creates search  list
+       __pSearchList = new (std::nothrow) GroupedListView();
+       r = __pSearchList->Construct(Rectangle(0, 0, rect.width, rect.height), GROUPED_LIST_VIEW_STYLE_INDEXED, true, SCROLL_STYLE_FADE_OUT);
+       if (r != E_SUCCESS)
+       {
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+               return r;
+       }
+       __pSearchList->SetItemProvider(*this);
+       __pSearchList->AddGroupedListViewItemEventListener(*this);
+       __pSearchList->AddTouchEventListener(*this);
+       __pSearchList->SetBackgroundColor(COLOR_THREADLIST_SEARCH_BG);
+       __pSearchList->SetShowState(false);
+       __pSearchBar->SetContent(__pSearchList); // Transfer ownership
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+result
+ThreadListForm::AddEditCheckBox(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       __pCheckAll = static_cast<CheckButton*>(GetControl(L"IDC_CHECKALL_BUTTON"));
+       __pCheckAll->SetColor(CHECK_BUTTON_STATUS_NORMAL, COLOR_CHECKBOX_BUTTON);
+       String strText;
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_SELECT_ALL", strText);
+       __pCheckAll->SetText(strText);
+       __pCheckAll->SetActionId(IDA_SELECT_ALL_ON, IDA_SELECT_ALL_OFF);
+       __pCheckAll->AddActionEventListener(*this);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(r));
+       return r;
+}
+
+result
+ThreadListForm::AddLabelSelectionInfo(void)
+{
+       AppLogDebug("ENTER");
+       String strText,selcInfo;
+       result r = E_SUCCESS;
+       Rectangle rect = GetClientAreaBounds();
+       __pSelectionInfo = static_cast<Label*>(GetControl(L"IDC_THREAD_EDIT_LABEL"));
+       if (__pSelectionInfo == null)
+       {
+               r = E_FAILURE;
+               return r;
+       }
+       __pSelectionInfo->SetBackgroundColor(COLOR_SELECTION_INFO_LABEL);
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_PD_SELECTED", strText);
+       selcInfo.Format(MAX_LEN_SELECTION_INFO, strText.GetPointer(), __pSelectedIds->GetCount());
+       __pSelectionInfo->SetText(selcInfo);
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+result
+ThreadListForm::AddListBox(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       __pThreadGroupList = static_cast<GroupedListView*>(GetControl(L"IDC_THREAD_GROUPEDLISTVIEW"));
+       __pThreadGroupList->SetItemProvider(*this);
+       __pThreadGroupList->AddGroupedListViewItemEventListener(*this);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+void
+ThreadListForm::CheckAll(bool value)
+{
+       AppLogDebug("ENTER");
+
+       ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
+
+       if (pThreadPrModel)
+       {
+               __pSelectedIds->RemoveAll();
+               int groupItemCount(0), threadIndex(0);
+               if (__listType == THREAD_LIST_TYPE_THREAD)
+               {
+                       for (int groupIndex = 0; groupIndex < pThreadPrModel->GetGroupCount(); groupIndex++)
+                       {
+                               groupItemCount = pThreadPrModel->GetGroupItemCount(groupIndex);
+                               for (int index = 0; index < groupItemCount; index++)
+                               {
+                                       __pThreadGroupList->SetItemChecked(groupIndex, index, value);
+                                       // If item check add it in selected list.
+                                       if (value)
+                                       {
+                                               __pSelectedIds->Add(pThreadPrModel->GetDataAt(threadIndex)->GetEntryId());
+                                               threadIndex++;
+                                       }
+                               }
+                       }
+               }
+               else
+               {
+                       for (int groupIndex = 0; groupIndex < pThreadPrModel->GetGroupCount(); groupIndex++)
+                       {
+                               groupItemCount = pThreadPrModel->GetGroupItemCount(groupIndex);
+                               for (int index = 0; index < groupItemCount; index++)
+                               {
+                                       __pThreadGroupList->SetItemChecked(groupIndex, index, value);
+                                       // If item check add it in selected list.
+                                       if (value)
+                                       {
+                                               __pSelectedIds->Add(pThreadPrModel->GetDataAt(threadIndex)->GetEntryId());
+                                               threadIndex++;
+                                       }
+                               }
+                       }
+               }
+               Invalidate(true);
+       }
+       ShowSelectionInfo();
+       GetFooter()->SetItemEnabled(0, value);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::DeleteSelectedItem(void)
+{
+       AppLogDebug("ENTER");
+
+       if (!__pSelectedIds || __pSelectedIds->GetCount() <= 0)
+       {
+               return;
+       }
+       ThreadPresentationModel* pThreadManager = ThreadPresentationModel::GetInstance();
+       if (pThreadManager)
+       {
+               if (__listType == THREAD_LIST_TYPE_THREAD)
+               {
+                       pThreadManager->Delete(__pSelectedIds, *this, REQUEST_DELETE_THREAD);
+               }
+               else
+               {
+                       pThreadManager->Delete(__pSelectedIds, *this, REQUEST_DELETE_MESSAGE);
+
+               }
+       }
+       __pSelectedIds = null;
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+result
+ThreadListForm::OnTerminating(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+
+       if (__pItemContext)
+       {
+               delete __pItemContext;
+               __pItemContext = null;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+void
+ThreadListForm::SetFooter(void)
+{
+       AppLogDebug("ENTER");
+
+       Footer* footer = GetFooter();
+       if (footer)
+       {
+               switch (__threadListFormType)
+               {
+               case THREAD_LIST_FORM_VIEW:
+                       SetThreadListViewModeFooter(*footer);
+                       break;
+
+               case THREAD_LIST_FORM_SIMMSG_VIEW:
+               case THREAD_LIST_FORM_SPAMMSG_VIEW:
+               case THREAD_LIST_FORM_CBMSG_VIEW:
+               case THREAD_LIST_FORM_DRAFTMSG_VIEW:
+                       SetMessageListViewModeFooter(*footer);
+                       break;
+
+               case THREAD_LIST_FORM_EDIT:
+                       SetThreadListEditModeFooter(*footer);
+                       break;
+
+               case THREAD_LIST_FORM_SIMMSG_EDIT:
+               case THREAD_LIST_FORM_SPAMMSG_EDIT:
+               case THREAD_LIST_FORM_CBMSG_EDIT:
+               case THREAD_LIST_FORM_DRAFTMSG_EDIT:
+                       SetMessageListEditModeFooter(*footer);
+                       break;
+               }
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::SetThreadListViewModeFooter(Footer& footer)
+{
+       AppLogDebug("ENTER");
+
+       footer.RemoveAllItems();
+       footer.RemoveAllButtons();
+
+//     String strText;
+//
+//     FooterItem composeBtn;
+//     composeBtn.Construct(IDA_COMPOSE_CMD);
+//     Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK3_COMPOSE", strText);
+//     composeBtn.SetText(strText);
+//     Bitmap* pComposeIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_COMPOSE);
+//     if (pComposeIcon)
+//     {
+//             composeBtn.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pComposeIcon);
+//     }
+//
+//     FooterItem deleteBtn;
+//     deleteBtn.Construct(IDA_DELETE_CMD);
+//     Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_DELETE", strText);
+//     deleteBtn.SetText(strText);
+//     Bitmap* pDeleteIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_DELETE);
+//     if (pDeleteIcon)
+//     {
+//             deleteBtn.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pDeleteIcon);
+//     }
+//
+//     FooterItem msgBoxesBtn;
+//     msgBoxesBtn.Construct(IDA_MORE_CMD);
+//     Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_HEADER_MESSAGE_BOXES", strText);
+//     msgBoxesBtn.SetText(strText);
+//     Bitmap* pMsgBoxesIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_MESSAGE_BOXES);
+//     if (pMsgBoxesIcon)
+//     {
+//             msgBoxesBtn.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pMsgBoxesIcon);
+//     }
+//
+//     FooterItem closeBtn;
+//     closeBtn.Construct(IDA_BACK_CMD);
+//     Bitmap* pCloseIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_BACK);
+//     if (pCloseIcon)
+//     {
+//             closeBtn.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pCloseIcon);
+//     }
+//
+//     footer.SetStyle(FOOTER_STYLE_BUTTON_ICON_TEXT);
+//     footer.AddItem(composeBtn);
+//     footer.AddItem(deleteBtn);
+//     footer.AddItem(msgBoxesBtn);
+//     footer.AddItem(closeBtn);
+
+       // compose button creation
+       footer.SetStyle(FOOTER_STYLE_BUTTON_ICON_TEXT);
+       // Add more button creation
+       ButtonItem moreBtn;
+       moreBtn.Construct(BUTTON_ITEM_STYLE_ICON, IDA_MORE_CMD);
+       Bitmap* pMoreIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_MORE);
+       if (pMoreIcon)
+       {
+               moreBtn.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pMoreIcon);
+       }
+       Bitmap* pMoreIconPressed = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_MORE_PRESSED);
+       if (pMoreIconPressed)
+       {
+               moreBtn.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pMoreIconPressed);
+       }
+       footer.SetButton(BUTTON_POSITION_LEFT, moreBtn);
+       // Add compose buttoon
+       String strText;
+       FooterItem composeBtn;
+       composeBtn.Construct(IDA_COMPOSE_CMD);
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK3_COMPOSE", strText);
+       composeBtn.SetText(strText);
+       footer.AddItem(composeBtn); // adding compose button to footer as item
+
+       //Add back button
+       ButtonItem closeBtn;
+       closeBtn.Construct(BUTTON_ITEM_STYLE_ICON, IDA_BACK_CMD);
+       Bitmap* pCloseIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_BACK);
+       if (pCloseIcon)
+       {
+               closeBtn.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pCloseIcon);
+       }
+       Bitmap* pCloseIconPressed = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_BACK_PRESSED);
+       if (pCloseIconPressed)
+       {
+               closeBtn.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pCloseIconPressed);
+       }
+       footer.SetButton(BUTTON_POSITION_RIGHT, closeBtn);
+
+
+       // Enable disable footer item
+       ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
+       if (pThreadPrModel && pThreadPrModel->GetCount() > 0)
+       {
+               footer.SetItemEnabled(1, true);
+       }
+       else
+       {
+               footer.SetItemEnabled(1, false);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::SetThreadListEditModeFooter(Footer& footer)
+{
+       AppLogDebug("ENTER");
+
+       //Commented for now as icon and text overlapping.
+       //      String strText;
+       //      footer.RemoveAllItems();
+       //      footer.RemoveAllButtons();
+       //      footer.SetStyle(FOOTER_STYLE_SEGMENTED_ICON_TEXT);
+       //
+       //      ButtonItem deleteBtn;
+       //      deleteBtn.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_DELETE_CMD);
+       //      Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_DELETE", strText);
+       //      deleteBtn.SetText(strText);
+       //      Bitmap* pDeleteIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_DELETE);
+       //      if (pDeleteIcon)
+       //      {
+       //          deleteBtn.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pDeleteIcon);
+       //      }
+       //      footer.SetButton(BUTTON_POSITION_LEFT, deleteBtn);
+       //
+       //      ButtonItem cancelBtn;
+       //      cancelBtn.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_CANCEL_CMD);
+       //      Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_CANCEL", strText);
+       //      cancelBtn.SetText(strText);
+       //      Bitmap* pCancelIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_CANCEL);
+       //      if (pCancelIcon)
+       //      {
+       //          cancelBtn.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pCancelIcon);
+       //      }
+       //      footer.SetButton(BUTTON_POSITION_RIGHT, cancelBtn);
+       //
+       //      // Enable disable footer item
+       //      if (__pSelectedIds && __pSelectedIds->GetCount() > 0)
+       //      {
+       //          footer.SetButtonEnabled(BUTTON_POSITION_LEFT, true);
+       //      }
+       //      else
+       //      {
+       //          footer.SetButtonEnabled(BUTTON_POSITION_LEFT, false);
+       //      }
+
+       String strText;
+       footer.RemoveAllItems();
+       footer.RemoveAllButtons();
+       footer.SetStyle(FOOTER_STYLE_BUTTON_ICON_TEXT);
+
+       // Delete footer item
+       FooterItem deleteBtn;
+       deleteBtn.Construct(IDA_DELETE_CMD);
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_DELETE", strText);
+       deleteBtn.SetText(strText);
+//     Bitmap* pDeleteIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_DELETE);
+//     if (pDeleteIcon)
+//     {
+//             deleteBtn.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pDeleteIcon);
+//     }
+       footer.AddItem(deleteBtn);
+
+       // Dummy footer item
+       //FooterItem dummyBtnOne;
+       //dummyBtnOne.Construct(0);
+       //footer.AddItem(dummyBtnOne);
+       //footer.SetItemEnabled(1, false);
+
+       // Cancel footer item
+//     FooterItem cancelBtn;
+//     cancelBtn.Construct(IDA_CANCEL_CMD);
+//     Bitmap* pCanelIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_CANCEL);
+//     Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_CANCEL", strText);
+//     cancelBtn.SetText(strText);
+//     if (pCanelIcon)
+//     {
+//             cancelBtn.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pCanelIcon);
+//     }
+
+       ButtonItem closeBtn;
+       closeBtn.Construct(BUTTON_ITEM_STYLE_ICON, IDA_BACK_CMD);
+       Bitmap* pCloseIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_BACK);
+       if (pCloseIcon)
+       {
+               closeBtn.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pCloseIcon);
+               Bitmap* pCloseIconPressed = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_BACK_PRESSED);
+               if (pCloseIconPressed)
+                       closeBtn.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pCloseIconPressed);
+
+       }
+       footer.SetButton(BUTTON_POSITION_RIGHT, closeBtn);
+
+       // Enable disable footer item
+       if (__pSelectedIds && __pSelectedIds->GetCount() > 0)
+       {
+               footer.SetItemEnabled(0, true);
+       }
+       else
+       {
+               footer.SetItemEnabled(0, false);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::SetMessageListViewModeFooter(Footer& footer)
+{
+       AppLogDebug("ENTER");
+
+       String strText;
+       footer.RemoveAllItems();
+       footer.RemoveAllButtons();
+       footer.SetStyle(FOOTER_STYLE_BUTTON_ICON_TEXT);
+
+       if (__threadListFormType == THREAD_LIST_FORM_CBMSG_VIEW)
+       {
+               FooterItem deleteBtn;
+               deleteBtn.Construct(IDA_DELETE_CMD);
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_DELETE", strText);
+               deleteBtn.SetText(strText);
+//             Bitmap* pDeleteIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_DELETE);
+//             if (pDeleteIcon)
+//             {
+//                     deleteBtn.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pDeleteIcon);
+//             }
+               footer.AddItem(deleteBtn);
+       }
+       else
+       {
+               FooterItem editBtn;
+               editBtn.Construct(IDA_EDIT);
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_EDIT", strText);
+               editBtn.SetText(strText);
+//             Bitmap* pEditIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_EDIT);
+//             if (pEditIcon)
+//             {
+//                     deleteBtn.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pEditIcon);
+//             }
+               footer.AddItem(editBtn);
+       }
+       if (__threadListFormType == THREAD_LIST_FORM_SPAMMSG_VIEW)
+       {
+               FooterItem settingsBtn;
+               settingsBtn.Construct(IDA_SETTINGS_SPAM_MESSAGES);
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_SETTINGS", strText);
+               settingsBtn.SetText(strText);
+//             Bitmap* pSettingsIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SETTINGS);
+//             if (pSettingsIcon)
+//             {
+//                     settingsBtn.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pSettingsIcon);
+//             }
+               footer.AddItem(settingsBtn);
+       }
+
+//     FooterItem closeBtn;
+//     closeBtn.Construct(IDA_BACK_CMD);
+//     Bitmap* pCloseIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_BACK);
+//     if (pCloseIcon)
+//     {
+//             closeBtn.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pCloseIcon);
+//     }
+//     footer.AddItem(closeBtn);
+
+       // close button creation
+       ButtonItem closeBtn;
+       closeBtn.Construct(BUTTON_ITEM_STYLE_ICON, IDA_BACK_CMD);
+       Bitmap* pCloseIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_BACK);
+       if (pCloseIcon)
+       {
+               closeBtn.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pCloseIcon);
+       }
+       Bitmap* pCloseIconPressed = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_BACK_PRESSED);
+       if (pCloseIconPressed)
+       {
+               closeBtn.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pCloseIconPressed);
+       }
+       footer.SetButton(BUTTON_POSITION_RIGHT, closeBtn);
+
+       // Enable disable footer item
+       ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
+       if (pThreadPrModel && pThreadPrModel->GetCount() > 0)
+       {
+               footer.SetItemEnabled(0, true);
+       }
+       else
+       {
+               footer.SetItemEnabled(0, false);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::SetMessageListEditModeFooter(Footer& footer)
+{
+       AppLogDebug("ENTER");
+
+       String strText;
+       footer.RemoveAllItems();
+       footer.RemoveAllButtons();
+       footer.SetStyle(FOOTER_STYLE_BUTTON_ICON_TEXT);
+
+       FooterItem deleteBtn;
+       deleteBtn.Construct(IDA_DELETE_CMD);
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_DELETE", strText);
+       deleteBtn.SetText(strText);
+       //Bitmap* pDeleteIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_DELETE);
+       //if (pDeleteIcon)
+       //{
+       //      deleteBtn.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pDeleteIcon);
+       //}
+       footer.AddItem(deleteBtn);
+
+       switch (__threadListFormType)
+       {
+       case THREAD_LIST_FORM_SIMMSG_EDIT:
+       {
+               FooterItem copyToPhoneBtn;
+               copyToPhoneBtn.Construct(IDA_COPY_TO_PHONE);
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_COPY_TO_PHONE", strText);
+               copyToPhoneBtn.SetText(strText);
+               //Bitmap* pCoptToPhoneIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_COPY_TO_PHONE);
+               //if (pCoptToPhoneIcon)
+               //{
+               //      copyToPhoneBtn.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pCoptToPhoneIcon);
+               //}
+               footer.AddItem(copyToPhoneBtn);
+       }
+       break;
+
+       case THREAD_LIST_FORM_SPAMMSG_EDIT:
+       {
+               FooterItem restoreBtn;
+               restoreBtn.Construct(IDA_RESTORE);
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_SK_RESTORE", strText);
+               restoreBtn.SetText(strText);
+               //Bitmap* pRestoreIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_RESTORE);
+               //if (pRestoreIcon)
+               //{
+               //      restoreBtn.SetIcon(FOOTER_ITEM_STATUS_NORMAL, pRestoreIcon);
+               //}
+               footer.AddItem(restoreBtn);
+       }
+       break;
+
+       default:
+       {
+               FooterItem dummyBtnTwo;
+               dummyBtnTwo.Construct(0);
+               //footer.AddItem(dummyBtnTwo);
+               footer.SetItemEnabled(3, false);
+       }
+       break;
+       }
+       ButtonItem closeBtn;
+       closeBtn.Construct(BUTTON_ITEM_STYLE_ICON, IDA_CANCEL_CMD);
+       Bitmap* pCloseIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_BACK);
+       if (pCloseIcon)
+       {
+               closeBtn.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pCloseIcon);
+       }
+       Bitmap* pCloseIconPressed = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_BACK_PRESSED);
+       if (pCloseIconPressed)
+       {
+               closeBtn.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pCloseIconPressed);
+       }
+       footer.SetButton(BUTTON_POSITION_RIGHT, closeBtn);
+       // Enable disable footer item
+       if (__pSelectedIds && __pSelectedIds->GetCount() > 0)
+       {
+               footer.SetItemEnabled(0, true);
+               footer.SetItemEnabled(1, true);
+       }
+       else
+       {
+               footer.SetItemEnabled(0, false);
+               footer.SetItemEnabled(1, false);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::SetHeader()
+{
+       AppLogDebug("ENTER");
+
+       Header* header = GetHeader();
+       if (header)
+       {
+               String strText;
+               switch (__threadListFormType)
+               {
+               case THREAD_LIST_FORM_VIEW:
+               {
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_MESSAGES", strText);
+                       header->SetTitleText(strText);
+                       header->Draw();
+               }
+               break;
+
+               case THREAD_LIST_FORM_SIMMSG_VIEW:
+               {
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_SIM_CARD_MESSAGES", strText);
+                       header->SetTitleText(strText);
+                       header->Draw();
+               }
+               break;
+
+               case THREAD_LIST_FORM_SPAMMSG_VIEW:
+               {
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_SPAM_MESSAGES", strText);
+                       header->SetTitleText(strText);
+                       header->Draw();
+               }
+               break;
+
+               case THREAD_LIST_FORM_CBMSG_VIEW:
+               {
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_CB_MESSAGES", strText);
+                       header->SetTitleText(strText);
+                       header->Draw();
+               }
+               break;
+
+               case THREAD_LIST_FORM_DRAFTMSG_VIEW:
+               {
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSG_BODY_DRAFT_MESSAGES", strText);
+                       header->SetTitleText(strText);
+                       header->Draw();
+               }
+               break;
+
+               case THREAD_LIST_FORM_EDIT:
+               case THREAD_LIST_FORM_SIMMSG_EDIT:
+               case THREAD_LIST_FORM_SPAMMSG_EDIT:
+               case THREAD_LIST_FORM_CBMSG_EDIT:
+               case THREAD_LIST_FORM_DRAFTMSG_EDIT:
+               {
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_DELETE", strText);
+                       header->SetTitleText(strText);
+                       header->Draw();
+               }
+               break;
+               }
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+
+void
+ThreadListForm::ShowSelectionInfo()
+{
+       AppLogDebug("ENTER");
+
+       int selectCount(0);
+       String selcInfo,strText;
+       if (__pSelectedIds)
+       {
+               selectCount = __pSelectedIds->GetCount();
+       }
+       bool showInfo = (selectCount > 0);
+       __pSelectionInfo->SetShowState(true);
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_PD_SELECTED", strText);
+       selcInfo.Format(MAX_LEN_SELECTION_INFO, strText.GetPointer(), selectCount);
+       __pSelectionInfo->SetText(selcInfo);
+       __pSelectionInfo->RequestRedraw();
+
+       GetFooter()->SetItemEnabled(0, showInfo);
+       if (__threadListFormType == THREAD_LIST_FORM_SPAMMSG_EDIT)
+       {
+               GetFooter()->SetItemEnabled(1, showInfo);
+       }
+       GetFooter()->Draw();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
+{
+       AppLogDebug("ENTER");
+       int totalcount = 0;
+       switch (requestId)
+       {
+       case REQUEST_NORMAL_VIEW:
+               HandleBackNavigation();
+               break;
+
+       case REQUEST_DELETE_START:
+               if(pArgs->GetCount() > 0)
+               {
+                       Integer* pTotalCount = (Integer*)pArgs->GetAt(0);
+                       totalcount = pTotalCount->ToInt();
+                       OnDeleteStart(totalcount);
+                       delete pArgs;
+               }
+               break;
+
+       case REQUEST_DELETE_UPDATE:
+               if(pArgs->GetCount() > 0)
+               {
+                       Integer* pCurrentCount = (Integer*)pArgs->GetAt(0);
+                       Integer* pTotalCount = (Integer*)pArgs->GetAt(1);
+                       OnDeleteUpdate(pCurrentCount->ToInt(),pTotalCount->ToInt());
+                       delete pArgs;
+               }
+               break;
+
+       case REQUEST_DELETE_COMPLETE:
+               if(pArgs->GetCount() > 0)
+               {
+                       AppLogDebug("complete");
+                       Integer* pStatus = (Integer*)pArgs->GetAt(0);
+                       OnDeleteComplete(pStatus->ToInt(),null);
+                       delete pArgs;
+               }
+               break;
+
+       default:
+               break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::OnSearchBarModeChanged(SearchBar& source, SearchBarMode mode)
+{
+       AppLogDebug("ENTER");
+
+       Rectangle clientRect;
+       __pSearchBar->SetText(IDS_BLANK);
+       if (mode == SEARCH_BAR_MODE_INPUT)
+       {
+               clientRect = GetClientAreaBounds();
+               SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, false);
+               __pSearchBar->SetContentAreaSize(Dimension(clientRect.width, clientRect.height));
+               __pThreadGroupList->SetShowState(false);
+               __pSearchList->SetShowState(true);
+               __pSearchList->UpdateList();
+       }
+       else
+       {
+               __isSearchBarClicked = false;
+               ThreadPresentationModel* pThreadprModel = ThreadPresentationModel::GetInstance();
+               if (pThreadprModel)
+               {
+                       pThreadprModel->GetThreadList(__listType);
+               }
+               SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, true);
+               String strText;
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_SEARCH", strText);
+               __pSearchBar->SetGuideText(strText);
+               __pSearchList->SetShowState(false);
+               __pThreadGroupList->SetShowState(true);
+               __pThreadGroupList->UpdateList();
+       }
+       Draw();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+//ISearchBarEventListener
+void
+ThreadListForm::OnTextValueChanged(const Control& source)
+{
+       AppLogDebug("ENTER");
+       ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
+       if (pThreadPrModel)
+       {
+               if (__pSearchBar->GetTextLength() > 0)
+               {
+                       pThreadPrModel->GetSearchThreadList(__pSearchBar->GetText(), __listType);
+                       if(pThreadPrModel->GetSearchListCount() <= 0)
+                       {
+                               __isSearchBarClicked = true;
+                       }
+                       else
+                       {
+                               __isSearchBarClicked = false;
+                       }
+               }
+               else
+               {
+                       __isSearchBarClicked = false;
+                       pThreadPrModel->GetThreadList(__listType);
+               }
+               if (__pThreadGroupList->GetShowState())
+               {
+                       __pThreadGroupList->SetShowState(false);
+                       __pSearchList->SetShowState(true);
+               }
+               __pSearchList->UpdateList();
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::OnKeyReleased(const Control& source, KeyCode keyCode)
+{
+       AppLogDebug("ENTER");
+
+       switch (keyCode)
+       {
+       case KEY_BACKSPACE:
+       {
+               OnTextValueChanged(source);
+       }
+       break;
+
+       default:
+               break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId,
+                                                                 IList* pArgs)
+{
+       AppLogDebug("ENTER");
+
+       // Request thread list notification.
+       ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
+       if (pThreadPrModel)
+       {
+               pThreadPrModel->AddThreadListEventListener(*this);
+       }
+       UpdateMessageThreadList();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
+{
+       AppLogDebug("ENTER");
+
+       // Remove thread list notification.
+       ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
+       if (pThreadPrModel)
+       {
+               pThreadPrModel->RemoveThreadListEventListener(*this);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+
+void
+ThreadListForm::OnFormBackRequested(Form& source)
+{
+       AppLogDebug("ENTER");
+
+       HandleBackNavigation();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::OnActionPerformed(const Control& source, int actionId)
+{
+       AppLogDebug("ENTER");
+
+       //Handle command
+       switch (actionId)
+       {
+
+       case IDA_BACK_CMD:
+       {
+               HandleBackNavigation();
+       }
+       break;
+
+       case IDA_SELECT_ALL_ON:
+       {
+               CheckAll(true);
+       }
+       break;
+
+       case IDA_SELECT_ALL_OFF:
+       {
+               CheckAll(false);
+       }
+       break;
+
+       case IDA_RESTORE:
+       {
+               ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
+               if (__pProgressPopup == null)
+               {
+                       __pProgressPopup = new (std::nothrow) MsgProgressPopup();
+                       __stringTitle.Clear();
+                       __stringTitle.Append(IDS_RESTORE_NUMBER_IDS);
+                       __pProgressPopup->Construct(0, __pSelectedIds->GetCount(), __stringTitle);
+               }
+               pThreadPrModel->RestoreSpamMsgs(__pSelectedIds,this);
+       }
+       break;
+
+       case IDA_COMPOSE_CMD:
+       {
+
+               SceneManager* pSceneManager = SceneManager::GetInstance();
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_COMPOSER, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);
+       }
+       break;
+
+       case IDA_CANCEL_CMD:
+       {
+               HandleBackNavigation();
+       }
+       break;
+
+       case IDA_EDIT:
+       case IDA_DELETE_CMD:
+       {
+               HandleDeleteOperation();
+       }
+       break;
+
+       case IDA_MORE_CMD:
+       {
+               Point point = source.GetPosition();
+               ShowContextPopup(point);
+       }
+       break;
+
+       case IDA_SIM_MESSAGES_CMD:
+       {
+               SceneManager* pSceneManager = SceneManager::GetInstance();
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SIM_MESSAGE_LIST, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);
+       }
+       break;
+
+       case IDA_SPAM_MESSAGES_CMD:
+       {
+               SceneManager* pSceneManager = SceneManager::GetInstance();
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SPAM_MESSAGE_LIST, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);
+       }
+       break;
+
+       case IDA_DRAFT_MESSAGES_CMD:
+       {
+               SceneManager* pSceneManager = SceneManager::GetInstance();
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_DRAFT_MESSAGE_LIST, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);
+       }
+       break;
+
+       case IDA_SETTING_CMD:
+       {
+               SceneManager* pSceneManager = SceneManager::GetInstance();
+               // Show settings form
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SETTINGS, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);
+       }
+       break;
+
+       case IDA_THREADLIST_MESSAGE_CANCEL:
+       {
+               if (__pDeletePopup)
+               {
+                       __pDeletePopup->SetShowState(false);
+                       delete __pDeletePopup;
+                       __pDeletePopup = null;
+               }
+       }
+       break;
+
+       case IDA_THREADLIST_MESSAGE_DELETE:
+       {
+               if (__pDeletePopup)
+               {
+                       __pDeletePopup->SetShowState(false);
+                       delete __pDeletePopup;
+                       __pDeletePopup = null;
+               }
+               if (__msgListItemIndex > -1)
+               {
+
+                       ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
+                       if (pThreadPrModel)
+                       {
+                               // Create delete progress popup
+                               if (!__pProgressPopup)
+                               {
+                                       __pProgressPopup = new (std::nothrow) MsgProgressPopup();
+                                       __stringTitle.Clear();
+                                       __stringTitle.Append(IDS_DELETED_NUMBER_IDS);
+                                       int maxcount = 1;
+                                       if (__pSelectedIds)
+                                       {
+                                               maxcount = __pSelectedIds->GetCount();
+                                       }
+                                       __pProgressPopup->Construct(0, maxcount, __stringTitle);
+                               }
+                               int deleteId = pThreadPrModel->GetDataAt(__msgListItemIndex)->GetEntryId();
+                               if (__listType == THREAD_LIST_TYPE_THREAD)
+                               {
+                                       pThreadPrModel->Delete(deleteId, *this, REQUEST_DELETE_THREAD);
+                               }
+                               else
+                               {
+                                       pThreadPrModel->Delete(deleteId, *this, REQUEST_DELETE_MESSAGE);
+                               }
+                       }
+                       __msgListItemIndex = -1;
+               }
+               else
+               {
+                       if (__pProgressPopup == null)
+                       {
+                               __pProgressPopup = new (std::nothrow) MsgProgressPopup();
+                               __stringTitle.Append(IDS_DELETED_NUMBER_IDS);
+                               __pProgressPopup->Construct(0, __pSelectedIds->GetCount(), __stringTitle);
+                       }
+                       DeleteSelectedItem();
+               }
+       }
+       break;
+
+       case IDA_SETTINGS_SPAM_MESSAGES:
+       {
+               SceneManager* pSceneManager = SceneManager::GetInstance();
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SETTINGS_SPAM_MESSAGE, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);
+       }
+       break;
+
+       case IDA_PHONENUMBER_BLOCK_OK:
+       {
+               SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
+               pSettingPrModel->AddToFilter(__pPhoneNumber, 1);
+               pSettingPrModel->RefreshSpamFilterList();
+               __pThreadGroupList->RefreshList(__blockGroupIndex, __blockItemIndex, LIST_REFRESH_TYPE_ITEM_MODIFY);
+               if (__pBlockPopup)
+               {
+                       __pBlockPopup->SetShowState(false);
+                       delete __pBlockPopup;
+                       __pBlockPopup = null;
+               }
+
+       }
+       break;
+
+       case IDA_PHONENUMBER_BLOCK_CANCEL:
+       {
+               if (__pBlockPopup)
+               {
+                       __pBlockPopup->SetShowState(false);
+                       delete __pBlockPopup;
+                       __pBlockPopup = null;
+               }
+       }
+       break;
+
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::OnMessageThreadListChange()
+{
+       AppLogDebug("ENTER");
+
+       if (!IsEditForm())
+       {
+               UpdateMessageThreadList();
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::OnDeleteStart(int totalCount)
+{
+       AppLogDebug("ENTER");
+
+       if (__pProgressPopup)
+       {
+               __pProgressPopup->ShowPopup();
+       }
+
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::OnDeleteUpdate(int deleteCount, int totalCount)
+{
+       AppLogDebug("ENTER");
+
+       if (__pProgressPopup)
+       {
+               String statusInfo;
+               statusInfo.Format(MAX_LEN_SELECTION_INFO, __stringTitle.GetPointer(), deleteCount, totalCount);
+               __pProgressPopup->UpdateProgressInfo(statusInfo);
+               __pProgressPopup->SetProgressValue(deleteCount);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::OnDeleteComplete(int errCode, Object* pThreadObject)
+{
+       AppLogDebug("ENTER");
+
+       // Back to thread view mode
+       if (__pProgressPopup)
+       {
+               __pProgressPopup->HidePopup();
+               delete __pProgressPopup;
+               __pProgressPopup = null;
+       }
+
+       // UI thread, Back to list view mode.
+       if (IsEditForm())
+       {
+               RequestId requestId = REQUEST_NORMAL_VIEW;
+               SendUserEvent(requestId, null);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+
+void
+ThreadListForm::OnTouchPressed(const Control& source,
+                                                          const Point& currentPosition, const TouchEventInfo& touchInfo)
+{
+       AppLogDebug("ENTER");
+
+       __pSearchBar->HideKeypad();
+       Draw();
+       Show();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::OnGroupedListViewItemStateChanged(GroupedListView& listView, int groupIndex,
+                                                                                                 int itemIndex, int elementId, ListItemStatus status)
+{
+       AppLogDebug("ENTER");
+
+       if(groupIndex == 0 && itemIndex == 0 && __isSearchBarClicked)
+       {
+               return;
+       }
+       ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
+       if (pThreadPrModel)
+       {
+               // List item selected.
+               int index = pThreadPrModel->GetSelectedIndex(groupIndex) + itemIndex;
+               switch (status)
+               {
+               case LIST_ITEM_STATUS_CHECKED:
+               {
+                       int selectId(0), totalCount(0);
+                       selectId = pThreadPrModel->GetDataAt(index)->GetEntryId();
+                       totalCount = pThreadPrModel->GetCount();
+                       __pSelectedIds->Add(selectId);
+                       if (__pSelectedIds->GetCount() == totalCount)
+                       {
+                               __pCheckAll->SetSelected(true);
+                       }
+                       ShowSelectionInfo();
+               }
+               break;
+
+               case LIST_ITEM_STATUS_UNCHECKED:
+               {
+                       int selectId(0), totalCount(0);
+                       selectId = pThreadPrModel->GetDataAt(index)->GetEntryId();
+                       totalCount = pThreadPrModel->GetCount();
+                       __pSelectedIds->Remove(selectId);
+                       if (__pSelectedIds->GetCount() <= totalCount)
+                       {
+                               __pCheckAll->SetSelected(false);
+                       }
+                       ShowSelectionInfo();
+               }
+               break;
+
+               case LIST_ITEM_STATUS_SELECTED:
+               {
+                       ArrayList* pArgList = new (std::nothrow) ArrayList();
+                       if (pArgList == null)
+                       {
+                               return;
+                       }
+                       SceneManager* pSceneManager = SceneManager::GetInstance();
+                       if (__listType == THREAD_LIST_TYPE_THREAD)
+                       {
+                               // Transfer ownership
+                               BaseData* pThreaddata = pThreadPrModel->GetDataAt(index)->CloneN();
+                               pArgList->Add(pThreaddata);
+                               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONVERSATION_LIST, SCENE_TRANSITION_ANIMATION_TYPE_NONE), pArgList);
+                       }
+                       else if (__listType == THREAD_LIST_TYPE_DRAFT)
+                       {
+                               // Load draft message in composer
+                               pArgList->Add((new Integer(COMPOSER_LAUNCH_DRAFT_MESSAGE)));
+                               int messageId = pThreadPrModel->GetDataAt(index)->GetEntryId();
+                               BaseData* pMessageData = pThreadPrModel->GetMessageDataByIdN(messageId);
+                               pArgList->Add(pMessageData);
+                               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_COMPOSER), pArgList);
+                       }
+                       else
+                       {
+                               // Show SMS viewer for SPAM,SIM and broadcast messages.
+                               BaseData* pMessageData = pThreadPrModel->GetDataAt(index)->CloneN();
+                               pArgList->Add(pMessageData);
+                               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SMS_VIEWER, SCENE_TRANSITION_ANIMATION_TYPE_NONE), pArgList);
+                       }
+               }
+               break;
+
+               case LIST_ITEM_STATUS_HIGHLIGHTED:
+               case LIST_ITEM_STATUS_MORE:
+                       break;
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::OnGroupedListViewContextItemStateChanged(GroupedListView& listView, int groupIndex, int itemIndex, int elementId, ListContextItemStatus status)
+{
+       AppLogDebug("ENTER");
+
+       //TODO: When context list item selected.
+       if (status != LIST_CONTEXT_ITEM_STATUS_SELECTED)
+       {
+               return;
+       }
+
+       ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
+       if (pThreadPrModel)
+       {
+               int index = pThreadPrModel->GetSelectedIndex(groupIndex) + itemIndex;
+               // Handle context menu command.
+               switch (elementId)
+               {
+               // Delete menu press
+               case IDC_DELETE_CONTEXT_ITEM:
+               {
+                       __msgListItemIndex = index;
+                       DeletePopup();
+               }
+               break;
+
+               case IDC_VOICE_CALL_ITEM:
+               {
+                       __contextItemType = MSG_CONTEXT_ITEM_CALL_TYPE;
+                       ContextItemPopup(MSG_CONTEXT_ITEM_CALL_TYPE, index);
+               }
+               break;
+
+               case IDC_BLOCK_ITEM:
+               {
+                       __blockGroupIndex = groupIndex;
+                       __blockItemIndex = itemIndex;
+                       __contextItemType = MSG_CONTEXT_ITEM_BLOCK_TYPE;
+                       ContextItemPopup(MSG_CONTEXT_ITEM_BLOCK_TYPE, index);
+               }
+               break;
+
+               case IDC_UNBLOCK_ITEM:
+               {
+                       __blockGroupIndex = groupIndex;
+                       __blockItemIndex = itemIndex;
+                       __contextItemType = MSG_CONTEXT_ITEM_UNBLOCK_TYPE;
+                       ContextItemPopup(MSG_CONTEXT_ITEM_UNBLOCK_TYPE, index);
+               }
+               break;
+
+               case IDC_RESTORE:
+               {
+                       BaseData* pMsgData = pThreadPrModel->GetDataAt(index);
+                       pThreadPrModel->MoveMessageToInbox(pMsgData->GetEntryId());
+               }
+               break;
+
+               case IDC_COPY_TO_PHONE:
+               {
+                       BaseData* pMsgData = pThreadPrModel->GetDataAt(index);
+                       pThreadPrModel->MoveMessageToPhone(pMsgData->GetEntryId());
+               }
+               break;
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+int
+ThreadListForm::GetGroupCount(void)
+{
+       AppLogDebug("ENTER");
+
+       int groupCount = 0;
+       ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
+       if (pThreadPrModel)
+       {
+               groupCount = pThreadPrModel->GetGroupCount();
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       if(groupCount == 0 && __isSearchBarClicked)
+       {
+               groupCount = 1;
+       }
+       return groupCount;
+}
+
+int
+ThreadListForm::GetItemCount(int groupIndex)
+{
+       AppLogDebug("ENTER");
+       int groupItemCount = 0;
+       ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
+       if (pThreadPrModel)
+       {
+               groupItemCount = pThreadPrModel->GetGroupItemCount(groupIndex);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       if(groupItemCount == 0 && __isSearchBarClicked)
+       {
+               groupItemCount = 1;
+       }
+       return groupItemCount;
+}
+
+GroupItem*
+ThreadListForm::CreateGroupItem(int groupIndex, int itemWidth)
+{
+       AppLogDebug("ENTER");
+
+       if(!__isSearchBarClicked)
+       {
+               GroupItem* pItem = new (std::nothrow) GroupItem();
+               ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
+               if (pThreadPrModel)
+               {
+                       pItem->Construct(Dimension(itemWidth, H_GROUP_HEADER));
+                       String text = pThreadPrModel->GetGroupName(groupIndex);
+                       pItem->SetElement(text, null);
+               }
+
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+               return pItem;
+       }
+       else
+       {
+               return null;
+       }
+}
+
+bool
+ThreadListForm::DeleteGroupItem(int groupIndex, GroupItem* pItem, int itemWidth)
+{
+       AppLogDebug("ENTER");
+
+       if (pItem)
+       {
+               delete pItem;
+               pItem = null;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return true;
+}
+
+ListItemBase*
+ThreadListForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+       AppLogDebug("ENTER");
+
+       if(!__isSearchBarClicked )
+       {
+               LVThreadListItem* pThreadListItem = null;
+               ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
+               if (pThreadPrModel)
+               {
+                       itemIndex = pThreadPrModel->GetSelectedIndex(groupIndex) + itemIndex;
+                       bool editMode = IsEditForm();
+                       BaseData* pBaseEntry = pThreadPrModel->GetDataAt(itemIndex);
+                       pThreadListItem = new (std::nothrow) LVThreadListItem(*pBaseEntry, itemWidth, editMode);
+                       // In case search enable
+                       String searchText;
+                       if (__pSearchBar)
+                       {
+                               searchText = __pSearchBar->GetText();
+                               searchText.ToLowerCase();
+                       }
+
+                       pThreadListItem->CreateThreadItemLayout(searchText);
+                       //For search list no need to display sweep menu.
+                       if (!editMode && __pThreadGroupList->GetShowState())
+                       {
+                               if (__listType == THREAD_LIST_TYPE_THREAD)
+                               {
+                                       bool showBlockContext(false);
+                                       int threadId = pThreadPrModel->GetDataAt(itemIndex)->GetEntryId();
+                                       ArrayList* pPhoneNumberList = pThreadPrModel->GetPhoneNumberListN(threadId);
+                                       if (pPhoneNumberList)
+                                       {
+                                               SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
+                                               for (int index = 0; index < pPhoneNumberList->GetCount(); index++)
+                                               {
+                                                       String* pNumber = static_cast<String*>(pPhoneNumberList->GetAt(index));
+                                                       int filterIndex = pSettingPrModel->GetFilterListIndex(*pNumber);
+                                                       if (filterIndex == -1)
+                                                       {
+                                                               showBlockContext = true;
+                                                               break;
+                                                       }
+                                               }
+                                               pPhoneNumberList->RemoveAll(true);
+                                               delete pPhoneNumberList;
+                                       }
+                                       if (showBlockContext)
+                                       {
+                                               pThreadListItem->SetContextItem(__pItemContext);
+                                       }
+                                       else
+                                       {
+                                               pThreadListItem->SetContextItem(__pItemContextUnblock);
+                                       }
+                               }
+                               else
+                               {
+                                       pThreadListItem->SetContextItem(__pItemContext);
+                               }
+                       }
+               }
+
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+               return pThreadListItem;
+       }
+       else
+       {
+               String strText;
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_NO_SEARCH_RESULTS", strText);
+               CustomItem* pItem = new (std::nothrow) CustomItem();
+               pItem->Construct(Dimension(500,100),LIST_ANNEX_STYLE_NORMAL);
+               //pItem->AddElement(Rectangle(150,25,500,50),1, strText, false);
+               pItem->AddElement(Rectangle(200, 25, 500, 50),
+                                          1, strText, 34,
+                                          COLOR_THREADLIST_DATE_TIME_SHORTMSG_ITEM, COLOR_THREADLIST_DATE_TIME_SHORTMSG_ITEM, COLOR_THREADLIST_DATE_TIME_SHORTMSG_ITEM, false);
+               return pItem;
+       }
+}
+
+bool
+ThreadListForm::DeleteItem(int groupIndex, int itemIndex, ListItemBase* pItem, int itemWidth)
+{
+       AppLogDebug("ENTER");
+
+       if (pItem)
+       {
+               delete pItem;
+               pItem = null;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return true;
+}
+
+void
+ThreadListForm::OnKeypadActionPerformed(Control& source, KeypadAction keypadAction)
+{
+       AppLogDebug("ENTER");
+
+       switch(keypadAction)
+       {
+       case KEYPAD_ACTION_SEARCH:
+               __pSearchBar->HideKeypad();
+               break;
+       default:
+               break;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::UpdateMessageThreadList()
+{
+       AppLogDebug("ENTER");
+
+       if (__pContextMenu)
+       {
+               __pContextMenu->SetShowState(false);
+               delete __pContextMenu;
+               __pContextMenu = null;
+       }
+       //Get thread data list
+       ThreadPresentationModel* pThreadprModel = ThreadPresentationModel::GetInstance();
+       if (pThreadprModel)
+       {
+               if (__pSearchBar && __pSearchBar->GetTextLength() > 0)
+               {
+                       pThreadprModel->GetSearchThreadList(__pSearchBar->GetText(), __listType);
+                       if(pThreadprModel->GetSearchListCount() <= 0)
+                       {
+                               __isSearchBarClicked = true;
+                       }
+                       else
+                       {
+                               __isSearchBarClicked = false;
+                       }
+               }
+               else
+               {
+                       pThreadprModel->GetThreadList(__listType);
+               }
+       }
+       SetFooter();
+       SetHeader();
+
+       if(__pThreadGroupList->GetShowState())
+       {
+               __pThreadGroupList->UpdateList();
+       }
+       if(__pSearchList && __pSearchList->GetShowState())
+       {
+               __pSearchList->UpdateList();
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+result
+ThreadListForm::ShowContextPopup(Point& position)
+{
+       AppLogDebug("ENTER");
+       result r = E_SUCCESS;
+       if (__pContextMenu)
+       {
+               delete __pContextMenu;
+       }
+       __pContextMenu = new (std::nothrow) ContextMenu();
+       r = __pContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST);
+       if (r != E_SUCCESS)
+       {
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+               delete __pContextMenu;
+               __pContextMenu = null;
+               return r;
+       }
+       String strText;
+       ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
+       if (pThreadPrModel && pThreadPrModel->GetCount() > 0)
+       {
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_DELETE", strText);
+               __pContextMenu->AddItem(strText, IDA_DELETE_CMD);
+       }
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_SIM_CARD_MESSAGES", strText);
+       __pContextMenu->AddItem(strText, IDA_SIM_MESSAGES_CMD);
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_SPAM_MESSAGES", strText);
+       __pContextMenu->AddItem(strText, IDA_SPAM_MESSAGES_CMD);
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSG_BODY_DRAFT_MESSAGES", strText);
+       __pContextMenu->AddItem(strText, IDA_DRAFT_MESSAGES_CMD);
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_SETTINGS", strText);
+       __pContextMenu->AddItem(strText, IDA_SETTING_CMD);
+       __pContextMenu->AddActionEventListener(*this);
+       __pContextMenu->SetShowState(true);
+       __pContextMenu->SetMaxVisibleItemsCount(6);
+       __pContextMenu->Show();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+void
+ThreadListForm::VoiceCall(const String& phoneNumber)
+{
+       AppLogDebug("ENTER");
+
+       if (CommonUtil::IsSimAvailable())
+       {
+               ContactUtility::VoiceCall(phoneNumber);
+       }
+       else
+       {
+               // Show error message.
+               String msgText;
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_SLCD_POP_TEXT_SIM_CARD_ERROR", msgText);
+               CommonUtil::ShowInfoPopup(msgText);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::DeletePopup(void)
+{
+       AppLogDebug("ENTER");
+
+       __pDeletePopup = new (std::nothrow) BaseCustomPopup();
+       __pDeletePopup->Construct(L"IDL_DELETE_POPUP");
+
+       Button* pButtonDelete = static_cast<Button*>(__pDeletePopup->GetControl(L"IDC_BUTTON_LEFT"));
+       Button* pButtonCancel = static_cast<Button*>(__pDeletePopup->GetControl(L"IDC_BUTTON_RIGHT"));
+
+       pButtonDelete->SetActionId(IDA_THREADLIST_MESSAGE_DELETE);
+       pButtonDelete->AddActionEventListener(*this);
+
+       pButtonCancel->SetActionId(IDA_THREADLIST_MESSAGE_CANCEL);
+       pButtonCancel->AddActionEventListener(*this);
+
+       __pDeletePopup->Show();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::OnPopupListItemSelected(const Control& popup, int selectedItem, const Object* pPopupListItem)
+{
+       AppLogDebug("ENTER");
+       if (pPopupListItem)
+       {
+               const String* pNumber = (String*) pPopupListItem;
+               __pPhoneNumber = *pNumber;
+               if (__contextItemType == MSG_CONTEXT_ITEM_CALL_TYPE)
+               {
+                       VoiceCall(*pNumber);
+               }
+               else if (__contextItemType == MSG_CONTEXT_ITEM_BLOCK_TYPE)
+               {
+                       BlockPopup(*pNumber);
+               }
+               else
+               {
+                       UnBlockNumber(*pNumber);
+               }
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::OnPopupClose(Object* pObject)
+{
+       AppLogDebug("ENTER");
+
+       if (__pPhoneNumberListPopup && __pPhoneNumberListPopup->Equals(*pObject))
+       {
+               delete __pPhoneNumberListPopup;
+               __pPhoneNumberListPopup = null;
+       }
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::HandleDeleteOperation(void)
+{
+       AppLogDebug("ENTER");
+
+       switch (__threadListFormType)
+       {
+       case THREAD_LIST_FORM_VIEW:
+       {
+               SceneManager* pSceneManager = SceneManager::GetInstance();
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_THREAD_LIST_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);
+       }
+       break;
+
+       case THREAD_LIST_FORM_SIMMSG_VIEW:
+       {
+               SceneManager* pSceneManager = SceneManager::GetInstance();
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SIM_MESSAGE_LIST_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);
+       }
+       break;
+
+       case THREAD_LIST_FORM_SPAMMSG_VIEW:
+       {
+               SceneManager* pSceneManager = SceneManager::GetInstance();
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SPAM_MESSAGE_LIST_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);
+       }
+       break;
+
+       case THREAD_LIST_FORM_CBMSG_VIEW:
+       {
+               SceneManager* pSceneManager = SceneManager::GetInstance();
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CB_MESSAGE_LIST_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);
+       }
+       break;
+
+       case THREAD_LIST_FORM_DRAFTMSG_VIEW:
+       {
+               SceneManager* pSceneManager = SceneManager::GetInstance();
+               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_DRAFT_MESSAGE_LIST_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);
+       }
+       break;
+
+       case THREAD_LIST_FORM_EDIT:
+       case THREAD_LIST_FORM_SIMMSG_EDIT:
+       case THREAD_LIST_FORM_SPAMMSG_EDIT:
+       case THREAD_LIST_FORM_CBMSG_EDIT:
+       case THREAD_LIST_FORM_DRAFTMSG_EDIT:
+       {
+               DeletePopup();
+       }
+       break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::HandleBackNavigation(void)
+{
+       AppLogDebug("ENTER");
+
+       switch (__threadListFormType)
+       {
+       case THREAD_LIST_FORM_VIEW:
+       {
+               // Close App.
+               UiApp* pApp = UiApp::GetInstance();
+               AppAssert(pApp);
+               pApp->Terminate();
+       }
+       break;
+
+       case THREAD_LIST_FORM_SIMMSG_VIEW:
+       case THREAD_LIST_FORM_SPAMMSG_VIEW:
+       case THREAD_LIST_FORM_CBMSG_VIEW:
+       case THREAD_LIST_FORM_DRAFTMSG_VIEW:
+       case THREAD_LIST_FORM_EDIT:
+       {
+               SceneManager* pSceneManager = SceneManager::GetInstance();
+               pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_THREAD_LIST, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);
+       }
+       break;
+
+       case THREAD_LIST_FORM_SIMMSG_EDIT:
+       {
+               SceneManager* pSceneManager = SceneManager::GetInstance();
+               pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_SIM_MESSAGE_LIST, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);
+       }
+       break;
+
+       case THREAD_LIST_FORM_SPAMMSG_EDIT:
+       {
+               SceneManager* pSceneManager = SceneManager::GetInstance();
+               pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_SPAM_MESSAGE_LIST, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);
+       }
+       break;
+
+       case THREAD_LIST_FORM_CBMSG_EDIT:
+       {
+               SceneManager* pSceneManager = SceneManager::GetInstance();
+               pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_CB_MESSAGE_LIST, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);
+       }
+       break;
+
+       case THREAD_LIST_FORM_DRAFTMSG_EDIT:
+       {
+               SceneManager* pSceneManager = SceneManager::GetInstance();
+               pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_DRAFT_MESSAGE_LIST, SCENE_TRANSITION_ANIMATION_TYPE_NONE), null);
+       }
+       break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+bool
+ThreadListForm::IsEditForm(void)
+{
+       AppLogDebug("ENTER");
+
+       bool editMode(false);
+       switch (__threadListFormType)
+       {
+       case THREAD_LIST_FORM_VIEW:
+       case THREAD_LIST_FORM_SIMMSG_VIEW:
+       case THREAD_LIST_FORM_SPAMMSG_VIEW:
+       case THREAD_LIST_FORM_CBMSG_VIEW:
+       case THREAD_LIST_FORM_DRAFTMSG_VIEW:
+       {
+               editMode = false;
+       }
+       break;
+
+       case THREAD_LIST_FORM_EDIT:
+       case THREAD_LIST_FORM_SIMMSG_EDIT:
+       case THREAD_LIST_FORM_SPAMMSG_EDIT:
+       case THREAD_LIST_FORM_CBMSG_EDIT:
+       case THREAD_LIST_FORM_DRAFTMSG_EDIT:
+       {
+               editMode = true;
+       }
+       break;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return editMode;
+}
+
+void
+ThreadListForm::BlockPopup(const String& phoneNumber)
+{
+       AppLogDebug("ENTER");
+
+       String number;
+       String strText;
+
+       __pBlockPopup = new (std::nothrow) Popup();
+       __pBlockPopup->Construct(L"IDL_BLOCK_POPUP");
+       Button* pButtonOk = static_cast<Button*>(__pBlockPopup->GetControl(L"IDC_BUTTON_OK"));
+       pButtonOk->SetActionId(IDA_PHONENUMBER_BLOCK_OK);
+       pButtonOk->AddActionEventListener(*this);
+       Button* pButtonCancel = static_cast<Button*>(__pBlockPopup->GetControl(L"IDC_BUTTON_CANCEL"));
+       pButtonCancel->SetActionId(IDA_PHONENUMBER_BLOCK_CANCEL);
+       pButtonCancel->AddActionEventListener(*this);
+       Label* pLabelNumber = static_cast<Label*>(__pBlockPopup->GetControl(L"IDC_BLOCKNUMBER_LABEL"));
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_POP_BLOCK_PS_Q", strText);
+       strText.Replace(L"%s", phoneNumber);
+       number.Append(strText);
+       pLabelNumber->SetText(number);
+
+       __pBlockPopup->Show();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::ContextItemPopup(int itemType, int itemIndex)
+{
+       AppLogDebug("ENTER");
+
+       ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
+       if (pThreadPrModel)
+       {
+               int threadId = pThreadPrModel->GetDataAt(itemIndex)->GetEntryId();
+               ArrayList* pPhoneNumberList = pThreadPrModel->GetPhoneNumberListN(threadId);
+               if (pPhoneNumberList)
+               {
+                       if (pPhoneNumberList->GetCount() > 1)
+                       {
+                               if ((itemType == MSG_CONTEXT_ITEM_BLOCK_TYPE) || (itemType == MSG_CONTEXT_ITEM_UNBLOCK_TYPE))
+                               {
+                                       FilterBlockUnblockNumberList(*pPhoneNumberList, (itemType == MSG_CONTEXT_ITEM_BLOCK_TYPE));
+                               }
+                               __pPhoneNumberListPopup = new (std::nothrow) PhoneNumberListPopup(*this);
+                               __pPhoneNumberListPopup->Construct(pPhoneNumberList);
+                               __pPhoneNumberListPopup->Show();
+                               pPhoneNumberList = null;
+                       }
+                       else
+                       {
+                               String* pNumber = static_cast<String*>(pPhoneNumberList->GetAt(0));
+                               __pPhoneNumber = *pNumber;
+                               switch (itemType)
+                               {
+                               case MSG_CONTEXT_ITEM_CALL_TYPE:
+                               {
+                                       VoiceCall(*pNumber);
+                               }
+                               break;
+
+                               case MSG_CONTEXT_ITEM_BLOCK_TYPE:
+                               {
+                                       BlockPopup(*pNumber);
+                               }
+                               break;
+
+                               case MSG_CONTEXT_ITEM_UNBLOCK_TYPE:
+                               {
+                                       UnBlockNumber(*pNumber);
+                               }
+                               break;
+                               }
+                       }
+                       // If ownership not yet transferred  released it.
+                       if (pPhoneNumberList)
+                       {
+                               pPhoneNumberList->RemoveAll(true);
+                               delete pPhoneNumberList;
+                               pPhoneNumberList = null;
+                       }
+               }
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::UnBlockNumber(const String& phoneNumber)
+{
+       AppLogDebug("ENTER");
+
+       SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
+       pSettingPrModel->GetSpamFilterList();
+       int filterIndex = pSettingPrModel->GetFilterListIndex(phoneNumber);
+       if (filterIndex >= 0)
+       {
+               pSettingPrModel->DeleteFilter(filterIndex, 1);
+               pSettingPrModel->RefreshSpamFilterList();
+               __pThreadGroupList->RefreshList(__blockGroupIndex, __blockItemIndex, LIST_REFRESH_TYPE_ITEM_MODIFY);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::FilterBlockUnblockNumberList(IList& numberList, bool blockList)
+{
+       AppLogDebug("ENTER");
+
+       SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
+       if (pSettingPrModel)
+       {
+               pSettingPrModel->GetSpamFilterList();
+               for (int index = 0; index < numberList.GetCount(); index++)
+               {
+                       String* pPhoneNumber = (String*) numberList.GetAt(index);
+                       int filterIndex = pSettingPrModel->GetFilterListIndex(*pPhoneNumber);
+                       if (blockList)
+                       {
+                               if (filterIndex >= 0)
+                               {
+                                       numberList.RemoveAt(index, true);
+                                       index--;
+                               }
+                       }
+                       else
+                       {
+                               if (filterIndex < 0)
+                               {
+                                       numberList.RemoveAt(index, true);
+                                       index--;
+                               }
+                       }
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+result
+ThreadListForm::CreateContextMenuUnBlock()
+{
+       AppLogDebug("ENTER");
+
+       // Create List context menu
+       __pItemContextUnblock = new (std::nothrow) ListContextItem();
+       result r = __pItemContextUnblock->Construct();
+       //ThreadList
+       String strText;
+       switch (__threadListFormType)
+       {
+       case THREAD_LIST_FORM_VIEW:
+       {
+               //ThreadList
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_CALL", strText);
+               __pItemContextUnblock->AddElement(IDC_VOICE_CALL_ITEM, strText);
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_OPT_UNBLOCK", strText);
+               __pItemContextUnblock->AddElement(IDC_UNBLOCK_ITEM, strText);
+       }
+       break;
+
+       default:
+               break;
+       }
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_DELETE", strText);
+       Bitmap* pSweepNormalIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_DELETE_SWEEP,
+                                                                                                                                        Dimension(W_LIST_SWEEP_BUTTON_100PX, H_LIST_SWEEP_BUTTON_74PX));
+       Bitmap* pSweepPressIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_DELETE_PRESS_SWEEP,
+                                                                                                                                       Dimension(W_LIST_SWEEP_BUTTON_100PX, H_LIST_SWEEP_BUTTON_74PX));
+       __pItemContextUnblock->AddElement(IDC_DELETE_CONTEXT_ITEM, strText, *pSweepNormalIcon, *pSweepPressIcon);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
diff --git a/src/MsgThreadPresentationModel.cpp b/src/MsgThreadPresentationModel.cpp
new file mode 100644 (file)
index 0000000..09a8a2d
--- /dev/null
@@ -0,0 +1,475 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <cstdlib>
+#include <msg.h>
+#include <msg_storage.h>
+#include <msg_storage_types.h>
+
+#include <FBase.h>
+#include <FBaseColIMapEnumerator.h>
+#include <FBaseErrorDefine.h>
+#include <FBaseRtIEventListener.h>
+
+#include "MsgDeleteHandlerThread.h"
+#include "MsgEvent.h"
+#include "MsgIConversationEventListener.h"
+#include "MsgIThreadEventListener.h"
+#include "MsgMessageData.h"
+#include "MsgThreadData.h"
+#include "MsgThreadPresentationModel.h"
+#include "MsgTypes.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Runtime;
+using namespace Tizen::Ui;
+
+ThreadPresentationModel* ThreadPresentationModel::__pInstance = null;
+
+ThreadPresentationModel*
+ThreadPresentationModel::GetInstance(void)
+{
+       AppLogDebug("ENTER");
+
+       if (__pInstance == null)
+       {
+               CreateInstance();
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __pInstance;
+}
+
+ThreadPresentationModel::ThreadPresentationModel(void)
+       : __pThreadListListener(null)
+       , __listType(-1)
+       , __searchListCount(0)
+{
+       //Empty implementation
+}
+
+ThreadPresentationModel::~ThreadPresentationModel(void)
+{
+       AppLogDebug("ENTER");
+
+       if (__pThreadListListener)
+       {
+               __pThreadListListener->RemoveAll(true);
+               delete __pThreadListListener;
+       }
+
+       // Destructor call, so make sure static instance does not have wrong address.
+       __pInstance = null;
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+
+}
+
+result
+ThreadPresentationModel::Construct(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       r = ListPresentationModel::Construct();
+       if (r == E_SUCCESS)
+       {
+               msg_error_t err = msg_reg_storage_change_callback(__pMsgHandle, &MessageStorageChangeCallback, this);
+               if (err != MSG_SUCCESS)
+               {
+                       AppLogDebug("msg_reg_storage_change_callback err = %d", (int) err);
+                       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+                       r = E_FAILURE;
+                       return r;
+               }
+               // Create thread observer list
+               __pThreadListListener = new (std::nothrow) ArrayList();
+               __pThreadListListener->Construct();
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(r));
+       return r;
+}
+
+void
+ThreadPresentationModel::CreateInstance(void)
+{
+       AppLogDebug("ENTER");
+       __pInstance = new (std::nothrow) ThreadPresentationModel();
+       if (E_SUCCESS != __pInstance->Construct())
+       {
+               delete __pInstance;
+               __pInstance = null;
+               return;
+       }
+       std::atexit(DestroyInstance);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+ThreadPresentationModel::DestroyInstance(void)
+{
+       AppLogDebug("ENTER");
+       delete __pInstance;
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+ThreadPresentationModel::GetThreadList(int threadListType)
+{
+       AppLogDebug("ENTER");
+
+       __listType = threadListType;
+       __pDataList->RemoveAll(true);
+       __pGroupInfo->RemoveAll(true);
+       result r = E_SUCCESS;
+       msg_error_t err = MSG_SUCCESS;
+       msg_struct_list_s* pMsgDataList = new (std::nothrow) msg_struct_list_s();
+       pMsgDataList->nCount = 0;
+       pMsgDataList->msg_struct_info = NULL;
+
+       switch (threadListType)
+       {
+       case THREAD_LIST_TYPE_THREAD:
+       {
+               // Set up sort rule
+               msg_struct_t sortRule = {0};
+               msg_set_int_value(sortRule, MSG_SORT_RULE_SORT_TYPE_INT, MSG_SORT_BY_THREAD_DATE);
+               msg_set_bool_value(sortRule, MSG_SORT_RULE_ACSCEND_BOOL, false);
+               err = msg_get_thread_view_list(__pMsgHandle, (const msg_struct_t) sortRule, pMsgDataList);
+       }
+       break;
+
+       case THREAD_LIST_TYPE_SPAM:
+       {
+               msg_folder_id_t folderId = MSG_SPAMBOX_ID;
+               err = msg_get_message_list(__pMsgHandle, folderId, 0, 0, 0, pMsgDataList);
+       }
+       break;
+
+       case THREAD_LIST_TYPE_SIM:
+       {
+               err = msg_get_message_list(__pMsgHandle, MSG_ALLBOX_ID, 0, MSG_TYPE_SMS, MSG_STORAGE_SIM, pMsgDataList);
+       }
+       break;
+
+       case THREAD_LIST_TYPE_CBMSG:
+       {
+               err = msg_get_message_list(__pMsgHandle, MSG_CBMSGBOX_ID, 0, 0, 0, pMsgDataList);
+       }
+       break;
+
+       case THREAD_LIST_TYPE_DRAFT:
+       {
+               err = msg_get_message_list(__pMsgHandle, MSG_DRAFT_ID, 0, 0, 0, pMsgDataList);
+       }
+       break;
+       }
+
+       if (err == MSG_SUCCESS)
+       {
+               if (__listType == THREAD_LIST_TYPE_THREAD)
+               {
+                       ThreadData* pThreadData = null;
+                       for (int index = 0; index < pMsgDataList->nCount; index++)
+                       {
+                               // Take structure ownership
+                               pThreadData = new (std::nothrow) ThreadData(__pMsgHandle);
+                               pThreadData->Construct(pMsgDataList->msg_struct_info[index]);
+                               r = __pDataList->Add(pThreadData);
+                               if (IsFailed(r))
+                               {
+                                       delete pThreadData;
+                               }
+                       }
+               }
+               else
+               {
+                       MessageData* pMessageData = null;
+                       for (int index = 0; index < pMsgDataList->nCount; index++)
+                       {
+                               // Take structure ownership
+                               pMessageData = new (std::nothrow) MessageData();
+                               pMessageData->Construct(pMsgDataList->msg_struct_info[index]);
+#ifdef _DISABLE_MMS_FEATURE_
+                               if (pMessageData && pMessageData->IsMms())
+                               {
+                                       delete pMessageData;
+                                       pMessageData = null;
+                               }
+#endif
+                               if (pMessageData)
+                               {
+                                       r = __pDataList->Add(pMessageData);
+                                       if (IsFailed(r))
+                                       {
+                                               delete pMessageData;
+                                       }
+                               }
+                       }
+               }
+               PrepareGroupInfo();
+       }
+       AppLogDebug(" msg_get_thread_view_list err = %d", (int) err);
+       msg_release_list_struct(pMsgDataList);
+       delete pMsgDataList;
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadPresentationModel::GetSearchThreadList(const String& msgSearchText, int threadListType)
+{
+       AppLogDebug("ENTER");
+
+       __listType = threadListType;
+       __pDataList->RemoveAll(true);
+       __pGroupInfo->RemoveAll(true);
+       result r = E_SUCCESS;
+       // Prepare search string.
+       int msgLength = msgSearchText.GetLength() * 4 + 1;      // For null terminated.
+       char* pSearchText = new (std::nothrow) char[msgLength];
+       if (pSearchText)
+       {
+               memset(pSearchText, '\0', msgLength);
+               const wchar_t* pText = msgSearchText.GetPointer();
+               wcstombs(pSearchText, pText, (size_t) msgLength);
+       }
+
+       msg_struct_t pSearchCondition = null;
+       switch (threadListType)
+       {
+       case THREAD_LIST_TYPE_THREAD:
+       {
+               // Set up sort rule
+               msg_struct_t sortRule = {0};
+               msg_set_int_value(sortRule, MSG_SORT_RULE_SORT_TYPE_INT, MSG_SORT_BY_THREAD_DATE);
+               msg_set_bool_value(sortRule, MSG_SORT_RULE_ACSCEND_BOOL, false);
+       }
+       break;
+
+       case THREAD_LIST_TYPE_SPAM:
+       {
+               pSearchCondition = msg_create_struct(MSG_STRUCT_SEARCH_CONDITION);
+               msg_set_int_value(pSearchCondition, MSG_SEARCH_CONDITION_FOLDERID_INT, MSG_SPAMBOX_ID);
+       }
+       break;
+
+       case THREAD_LIST_TYPE_SIM:
+       {
+               pSearchCondition = msg_create_struct(MSG_STRUCT_SEARCH_CONDITION);
+               msg_set_int_value(pSearchCondition, MSG_SEARCH_CONDITION_FOLDERID_INT, MSG_ALLBOX_ID);
+               msg_set_int_value(pSearchCondition, MSG_SEARCH_CONDITION_MSGTYPE_INT, MSG_TYPE_SMS);
+       }
+       break;
+
+       case THREAD_LIST_TYPE_CBMSG:
+       {
+               pSearchCondition = msg_create_struct(MSG_STRUCT_SEARCH_CONDITION);
+               msg_set_int_value(pSearchCondition, MSG_SEARCH_CONDITION_FOLDERID_INT, MSG_CBMSGBOX_ID);
+       }
+       break;
+
+       case THREAD_LIST_TYPE_DRAFT:
+       {
+               pSearchCondition = msg_create_struct(MSG_STRUCT_SEARCH_CONDITION);
+               msg_set_int_value(pSearchCondition, MSG_SEARCH_CONDITION_FOLDERID_INT, MSG_DRAFT_ID);
+       }
+       break;
+       }
+
+       msg_struct_list_s* pMsgDataList = new (std::nothrow) msg_struct_list_s();
+       pMsgDataList->nCount = 0;
+       pMsgDataList->msg_struct_info = NULL;
+       msg_error_t err = MSG_SUCCESS;
+       if (pSearchText)
+       {
+               if (threadListType == THREAD_LIST_TYPE_THREAD)
+               {
+                       err = msg_search_message_for_thread_view(__pMsgHandle, pSearchText, pMsgDataList);
+
+               }
+               else
+               {
+                       msg_set_str_value(pSearchCondition, MSG_SEARCH_CONDITION_SEARCH_VALUE_STR, pSearchText, (int) strlen(pSearchText));
+                       err = msg_search_message(__pMsgHandle, (const msg_struct_t) pSearchCondition, 0, 0, pMsgDataList);
+               }
+       }
+       delete[] pSearchText;
+       msg_release_struct(&pSearchCondition);
+
+       if (err == MSG_SUCCESS)
+       {
+               __searchListCount = pMsgDataList->nCount;
+
+               if (__listType == THREAD_LIST_TYPE_THREAD)
+               {
+                       ThreadData* pThreadData = null;
+                       for (int index = 0; index < pMsgDataList->nCount; index++)
+                       {
+                               pThreadData = new (std::nothrow) ThreadData(__pMsgHandle);
+                               pThreadData->Construct(pMsgDataList->msg_struct_info[index]);
+                               r = __pDataList->Add(pThreadData);
+                               if (IsFailed(r))
+                               {
+                                       delete pThreadData;
+                               }
+                       }
+               }
+               else
+               {
+                       MessageData* pMessageData = null;
+                       for (int index = 0; index < pMsgDataList->nCount; index++)
+                       {
+                               pMessageData = new (std::nothrow) MessageData();
+                               pMessageData->Construct(pMsgDataList->msg_struct_info[index]);
+                               r = __pDataList->Add(pMessageData);
+                               if (IsFailed(r))
+                               {
+                                       delete pMessageData;
+                               }
+                       }
+               }
+               PrepareGroupInfo();
+       }
+       AppLogDebug(" msg_get_thread_view_list err = %d", (int) err);
+       msg_release_list_struct(pMsgDataList);
+       delete pMsgDataList;
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+int
+ThreadPresentationModel::GetSearchListCount(void)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __searchListCount;
+}
+
+result
+ThreadPresentationModel::AddThreadListEventListener(const IThreadEventListener& threadListener)
+{
+       AppLogDebug("ENTER");
+
+       ThreadEvent* pThreadEvent = new (std::nothrow) ThreadEvent(&threadListener);
+       result r = __pThreadListListener->Add(pThreadEvent); // Transfer ownership.
+       if (r != E_SUCCESS)
+       {
+               delete pThreadEvent;
+               pThreadEvent = null;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+result
+ThreadPresentationModel::RemoveThreadListEventListener(const IThreadEventListener& threadLitener)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       if (__pThreadListListener)
+       {
+               IEnumerator* pEventenum = __pThreadListListener->GetEnumeratorN();
+               if (pEventenum)
+               {
+                       ThreadEvent* pThreadEvent = null;
+                       while (pEventenum->MoveNext() == E_SUCCESS)
+                       {
+                               pThreadEvent = static_cast<ThreadEvent*>(pEventenum->GetCurrent());
+                               if (pThreadEvent->IsSame(&threadLitener))
+                               {
+                                       // Took ownership, delete element object.
+                                       r = __pThreadListListener->Remove(*pThreadEvent, true);
+                                       break;
+                               }
+                       }
+               }
+               // Free memory
+               if (pEventenum)
+               {
+                       delete pEventenum;
+                       pEventenum = null;
+               }
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+void
+ThreadPresentationModel::MessageStorageChangeCallback(msg_handle_t pHandle,
+                                                                                                         msg_storage_change_type_t storageChangeType, msg_id_list_s* pMsgIdList, void* pUserData)
+{
+       AppLogDebug("ENTER");
+
+       if (!pUserData || !pMsgIdList)
+       {
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+               return;
+       }
+       static_cast<ThreadPresentationModel*>(pUserData)->OnMessageStorageChange(storageChangeType, pMsgIdList);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadPresentationModel::OnMessageStorageChange(msg_storage_change_type_t storageChangeType, msg_id_list_s* pMsgIdList)
+{
+       AppLogDebug("ENTER");
+
+       if (__pThreadListListener->GetCount( ) > 0)
+       {
+               NotifyThreadChange();
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadPresentationModel::NotifyThreadChange(void)
+{
+       AppLogDebug("ENTER");
+
+       IEnumerator* pEventenum = __pThreadListListener->GetEnumeratorN();
+       if (pEventenum)
+       {
+               ThreadEvent* pThreadEvent = null;
+               while (pEventenum->MoveNext() == E_SUCCESS)
+               {
+                       pThreadEvent = static_cast<ThreadEvent*>(pEventenum->GetCurrent());
+                       IThreadEventListener* pThreadObserver = static_cast<IThreadEventListener*>(
+                               const_cast<IEventListener*>(pThreadEvent->GetEvent()));
+                       if (pThreadObserver)
+                       {
+                               pThreadObserver->OnMessageThreadListChange();
+                       }
+               }
+       }
+       // Free memory
+       if (pEventenum)
+       {
+               delete pEventenum;
+               pEventenum = null;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
diff --git a/src/MsgTypes.cpp b/src/MsgTypes.cpp
new file mode 100644 (file)
index 0000000..da89f0a
--- /dev/null
@@ -0,0 +1,292 @@
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://floralicense.org/license/
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an AS IS BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <FGraphics.h>
+
+#include "MsgTypes.h"
+
+using namespace Tizen::Graphics;
+
+// constant
+const int YEAR_1900 = 1900;
+const int DAYS_365 = 365;
+const int LEAP_YEAR_GAP = 4;
+
+//Button
+const int W_CANCEL_BUTTON = 400;
+const int H_CANCEL_BUTTON = 72;
+const int W_SEND_BUTTON = 108;
+const int W_ATTACH_BUTTON = 64;
+const int H_ATTACH_BUTTON = 64;
+const int W_PLAYCONTROL_BUTTON = 56;
+const int H_PLAYCONTROL_BUTTON = 56;
+
+//Check Box
+const int H_CHECKBOX = 75;
+const int W_CHECKBOX = 90;
+
+//Editor
+const int MAX_MSG_EDITOR_LINE = 4;
+const int MIN_COMPOSE_EDITOR_HEIGHT = 74;
+const int H_MSG_COMPOSE_EDITOR = 90;
+
+//Recipent count
+const int MAX_COUNT = 10;
+const int MAX_ITEM = 10;
+const int MAX_LENGTH = 20;
+
+//Panel
+const int PANEL_HEIGHT = 114;
+
+//Label
+const int H_MSG_SELECTION_INFO_LABEL = 50;
+const int H_MSG_DETAILS_LABEL = 60;
+
+// List item
+const int H_LIST_ITEM_112PX = 112;
+const int H_GROUP_HEADER = 48;
+const int W_LIST_ITEM_GROUP_INDICATOR = 10;
+const int H_LIST_GROUP = 82;
+const int H_TITLE_LINE = 60;
+const int H_SUB_TITLE = 48;
+const int H_LIST_ITEM_128PX = 128;
+const int H_LIST_SWEEP_BUTTON_74PX = 74;
+const int W_LIST_SWEEP_BUTTON_100PX = 100;
+const int H_CONTACT_LIST_ITEM = 165;
+const int W_LIST_SUB_ITEMS = 60;
+
+// Message Counter
+const int MESSAGE_LENGTH = 160;
+const int MESSAGE_LENGTH_2 = 146;
+const int MESSAGE_LENGTH_3 = 153;
+const int H_SHOW_COUNTER_TEXT = 130;
+
+// Margin
+const int MARGIN_4PX = 4;
+const int MARGIN_5PX = 5;
+const int MARGIN_10PX = 10;
+const int MARGIN_12PX = 12;
+const int MARGIN_13PX = 13;
+const int MARGIN_14PX = 14;
+const int MARGIN_15PX = 15;
+const int MARGIN_16PX = 16;
+const int MARGIN_20PX = 20;
+const int MARGIN_22PX = 22;
+const int MARGIN_26PX = 26;
+const int MARGIN_28PX = 28;
+const int MARGIN_42PX = 42;
+const int MARGIN_46PX = 46;
+
+// Icon realted
+const int H_UNREAD_ICON = 42;
+const int W_UNREAD_ICON = 60;
+const int H_ICON_32PX = 32;
+const int W_ICON_32PX = 32;
+const int W_ICON_48PX = 48;
+const int H_ICON_48PX = 48;
+const int H_ICON_60PX = 60;
+const int W_ICON_60PX = 60;
+const int H_ICON_64PX = 64;
+const int W_ICON_64PX = 64;
+const int H_COMPOSE_IMAGE_132PX = 132;
+const int W_COMPOSE_IMAGE_132PX = 132;
+const int W_BUBBLE_THUMBNAIL_310PX = 310;
+const int H_BUBBLE_THUMBNAIL_204PX = 204;
+const int MAX_RESTRICT_IMG_W = 640;
+const int MAX_RESTRICT_IMG_H = 480;
+
+//Popup
+const int LIST_ITEM_SUBITEM = 70;
+const int H_POPUP_BOTTOM_96PX = 96;
+const int W_POPUP_CONTROL = 620;
+
+//Gallery
+const int H_GALLERY = 438;
+const int W_GALLERY = 688;
+
+// Selection info
+const int MAX_LEN_SELECTION_INFO = 50;
+const int SIZE_1KB = 1024;
+const int MAX_MMS_SIZE = 300 * 1024;                      // 300 KB
+
+// Font Size
+const int MSG_SYSTEM_FONT_SIZE = 44;
+const int MSG_HUGE_FONT_SIZE = 94;
+const int MSG_LARGE_FONT_SIZE = 70;
+const int MSG_NORMAL_FONT_SIZE = 44;
+const int MSG_SMALL_FONT_SIZE = 36;
+const int MSG_TINY_FONT_SIZE = 28;
+const int MSG_TIME_FONT_SIZE = 26;
+const int MSG_DATE_FONT_SIZE = 32;
+const int MSG_SMS_VIEWER_FONT_SIZE = 30;
+
+// Thread list
+const int THREAD_LIST_MAIN_TEXT_FONT_SIZE = 44;
+const int THREAD_LIST_SUB_TEXT_FONT_SIZE = 32;
+// List= settings;
+const int LIST_MAIN_TEXT_FONT_SIZE = 48;
+const int LIST_SUB_TEXT_FONT_SIZE = 32;
+const int LIST_GROUP_TEXT_FONT_SIZE = 32;
+
+//Bubble and thread
+const int MIN_BUBBLE_HEIGHT = 64;
+const int MSG_THREAD_ADDR_LEN = 200;
+const int MSG_THREAD_DISPLAY_LEN = 200;
+const int MAX_DATE_LEN = 64;
+// SMIL MMS
+const int MIN_MMS_SLIDE_DURATION = 5;
+
+// Color constant
+const Color COLOR_THREADLIST_SEARCH_TEXT = Color(100, 100, 100);
+const Color COLOR_THREADLIST_SEARCH_BG = Color(250, 250, 250);
+const Color COLOR_CHECKBOX_BUTTON = Color(215, 225, 232);
+const Color COLOR_SELECTION_INFO_LABEL = Color(209, 227, 238);
+const Color COLOR_SPAM_SETTINGS_ITEM = Color(35, 35, 35);
+const Color COLOR_THREADLIST_DISPLAY_NAME_ITEM = Color(16, 37, 63);
+const Color COLOR_THREADLIST_DATE_TIME_SHORTMSG_ITEM = Color(102, 102, 102);
+const Color COLOR_THREADLIST_UNREAD_NORMAL_ITEM = Color(255, 0, 0);
+const Color COLOR_COMPOSE_PANEL_BG = Color(182, 206, 219);
+const Color COLOR_BUBBLE_BG = Color(236, 236, 236);
+const Color COLOR_SEARCH_TEXT = Color(0, 128, 192);
+const Color COLOR_CONTACT_SUGGESTION = Color(39, 66, 123);
+const Color COLOR_BUBBLE_SENT_TIME_STAMP = Color(92, 151, 187);
+const Color COLOR_BUBBLE_RECEIVE_TIME_STAMP = Color(139, 139, 139);
+const Color COLOR_BUBBLE_SOS_TIME_STAMP = Color(187, 92, 92);
+const Color COLOR_BUBBLE_TEXT_NORMAL = Color(0, 0, 0);
+const Color COLOR_BUBBLE_SOS_TEXT_NORMAL = Color(192, 23, 23);
+const Color COLOR_SETTING_MAIN_TEXT = Color(0, 0, 0);
+const Color COLOR_SETTING_SUB_TEXT = Color(124, 124, 124);
+const Color COLOR_LIST_BG = Color(249, 249, 249);
+const Color COLOR_LIST_DIALOGUE_GROUP_BG = Color(236, 240, 242);
+const Color COLOR_LIST_DIALOGUE_GROUP_TITLE = Color(92, 151, 187);
+const Color COLOR_BLACK = Color(0, 0, 0);
+const Color COLOR_PANEL_BORDER = Color(57, 60, 65);
+const Color COLOR_GROUP_BORDER = Color(108, 168, 199);
+
+/// scene ID.
+const wchar_t* IDSCN_THREAD_LIST = L"MsgThreadListView";
+const wchar_t* IDSCN_THREAD_LIST_EDITOR = L"MsgThreadEditListView";
+const wchar_t* IDSCN_SIM_MESSAGE_LIST = L"SimMessageViewList";
+const wchar_t* IDSCN_SIM_MESSAGE_LIST_EDITOR = L"SimMessageEditList";
+const wchar_t* IDSCN_CB_MESSAGE_LIST = L"CbMessageViewList";
+const wchar_t* IDSCN_CB_MESSAGE_LIST_EDITOR = L"CbMessageEditList";
+const wchar_t* IDSCN_SPAM_MESSAGE_LIST = L"SpamMessageViewList";
+const wchar_t* IDSCN_SPAM_MESSAGE_LIST_EDITOR = L"SpamMessageEditList";
+const wchar_t* IDSCN_DRAFT_MESSAGE_LIST = L"DraftMessageViewList";
+const wchar_t* IDSCN_DRAFT_MESSAGE_LIST_EDITOR = L"DraftMessageEditList";
+const wchar_t* IDSCN_CONVERSATION_LIST = L"MsgConversationView";
+const wchar_t* IDSCN_CONVERSATION_LIST_EDITOR = L"MsgConversationEditView";
+const wchar_t* IDSCN_COMPOSER = L"MsgComposerView";
+const wchar_t* IDSCN_SMS_VIEWER = L"MsgSmsViewer";
+const wchar_t* IDSCN_MMS_DETAIL = L"MsgMmsDetail";
+const wchar_t* IDSCN_SETTINGS = L"Settings";
+const wchar_t* IDSCN_SETTINGS_TEXT_MESSAGE = L"TextMessage";
+const wchar_t* IDSCN_SETTINGS_TEXT_MESSAGE_SERVICE_CENTERS = L"ServiceCenters";
+const wchar_t* IDSCN_SETTINGS_TEXT_MESSAGE_EDIT_SERVICE_CENTER = L"EditServiceCenter";
+const wchar_t* IDSCN_SETTINGS_MULTIMEDIA_MESSAGE = L"MultimediaMessage";
+const wchar_t* IDSCN_SETTINGS_MULTIMEDIA_RECEIVING_OPTIONS = L"ReceivingOptions";
+const wchar_t* IDSCN_SETTINGS_MULTIMEDIA_READ_REPORT = L"ReadReport";
+const wchar_t* IDSCN_SETTINGS_SPAM_MESSAGE = L"SpamMessage";
+const wchar_t* IDSCN_SETTINGS_SPAM_AUTO_REJECT = L"AutoReject";
+const wchar_t* IDSCN_SETTINGS_SPAM_ADD_REJECT_NUMBER = L"AutoRejectNumber";
+const wchar_t* IDSCN_SETTINGS_SPAM_DELETE_REJECT_NUMBER = L"DeleteRejectNumber";
+const wchar_t* IDSCN_SETTINGS_SPAM_BLOCK_WORD = L"BlockWord";
+const wchar_t* IDSCN_SETTINGS_SPAM_ADD_BLOCK_WORD = L"AddBlockWord";
+const wchar_t* IDSCN_SETTINGS_SPAM_DELETE_BLOCK_WORD = L"DeleteBlockWord";
+const wchar_t* IDSCN_SETTINGS_FONT_SIZE = L"FontSize";
+
+/// From ID
+const wchar_t* IDFRM_THREAD_LIST = L"MsgThreadListView";
+const wchar_t* IDFRM_THREAD_LIST_EDITOR = L"MsgThreadListEditView";
+const wchar_t* IDFRM_SIM_MESSAGE_LIST = L"SimMessageViewList";
+const wchar_t* IDFRM_SIM_MESSAGE_LIST_EDITOR = L"SimMessageEditList";
+const wchar_t* IDFRM_CB_MESSAGE_LIST = L"CbMessageViewList";
+const wchar_t* IDFRM_CB_MESSAGE_LIST_EDITOR = L"CbMessageEditList";
+const wchar_t* IDFRM_SPAM_MESSAGE_LIST = L"SpamMessageViewList";
+const wchar_t* IDFRM_SPAM_MESSAGE_LIST_EDITOR = L"SpamMessageEditList";
+const wchar_t* IDFRM_DRAFT_MESSAGE_LIST = L"DraftMessageViewList";
+const wchar_t* IDFRM_DRAFT_MESSAGE_LIST_EDITOR = L"DraftMessageEditList";
+const wchar_t* IDFRM_CONVERSATION_LIST = L"MsgConversationView";
+const wchar_t* IDFRM_CONVERSATION_LIST_EDITOR = L"MsgConversationEditView";
+const wchar_t* IDFRM_COMPOSER = L"MsgComposerView";
+const wchar_t* IDFRM_SMS_VIEWER = L"MsgSmsViewer";
+const wchar_t* IDFRM_MMS_DETAIL = L"MsgMmsDetail";
+const wchar_t* IDFRM_SETTINGS = L"Settings";
+const wchar_t* IDFRM_SETTINGS_TEXT_MESSAGE = L"TextMessage";
+const wchar_t* IDFRM_SETTINGS_TEXT_MESSAGE_SERVICE_CENTERS = L"ServiceCenters";
+const wchar_t* IDFRM_SETTINGS_TEXT_MESSAGE_EDIT_SERVICE_CENTER = L"EditServiceCenter";
+const wchar_t* IDFRM_SETTINGS_MULTIMEDIA_MESSAGE = L"MultimediaMessage";
+const wchar_t* IDFRM_SETTINGS_MULTIMEDIA_RECEIVING_OPTIONS = L"ReceivingOptions";
+const wchar_t* IDFRM_SETTINGS_MULTIMEDIA_READ_REPORT = L"ReadReport";
+const wchar_t* IDFRM_SETTINGS_SPAM_MESSAGE = L"SpamMessage";
+const wchar_t* IDFRM_SETTINGS_SPAM_AUTO_REJECT = L"AutoReject";
+const wchar_t* IDFRM_SETTINGS_SPAM_ADD_REJECT_NUMBER = L"AutoRejectNumber";
+const wchar_t* IDFRM_SETTINGS_SPAM_DELETE_REJECT_NUMBER = L"DeleteRejectNumber";
+const wchar_t* IDFRM_SETTINGS_SPAM_BLOCK_WORD = L"BlockWord";
+const wchar_t* IDFRM_SETTINGS_SPAM_ADD_BLOCK_WORD = L"AddBlockWord";
+const wchar_t* IDFRM_SETTINGS_SPAM_DELETE_BLOCK_WORD = L"DeleteBlockWord";
+const wchar_t* IDFRM_SETTINGS_FONT_SIZE = L"FontSize";
+
+const wchar_t* IDS_SETTING_FONT_TYPE = L"FontType";
+const wchar_t* IDS_SETTING_VOLUME_KEY = L"VolumeKey";
+const wchar_t* IDS_LIST_MAIN_TEXT = L"listmaintext";
+const wchar_t* IDS_LIST_SUB_TEXT = L"listsubtext";
+//// App Controls
+const wchar_t* IDS_APPCONTROL_OPERATION_MAIN = L"http://tizen.org/appcontrol/operation/main";
+const wchar_t* IDS_APPCONTROL_OPERATION_CALL = L"http://tizen.org/appcontrol/operation/call";
+const wchar_t* IDS_APPCONTROL_OPERATION_ADD = L"http://tizen.org/appcontrol/operation/add";
+const wchar_t* IDS_APPCONTROL_OPERATION_VIEW = L"http://tizen.org/appcontrol/operation/view";
+const wchar_t* IDS_APPCONTROL_OPERATION_PICK = L"http://tizen.org/appcontrol/operation/pick";
+const wchar_t* IDS_APPCONTROL_OPERATION_COMPOSE = L"http://tizen.org/appcontrol/operation/compose";
+const wchar_t* IDS_APPCONTROL_OPERATION_SETTINGS = L"http://tizen.org/appcontrol/operation/configure";
+const wchar_t* IDS_APPCONTROL_OPERATION_RECORD = L"http://tizen.org/appcontrol/operation/record";
+const wchar_t* IDS_APPCONTROL_OPERATION_CAPTURE = L"http://tizen.org/appcontrol/operation/capture";
+
+const wchar_t* IDS_APPCONTROL_PROVIDER_MESSAGE = L"tizen.messages";
+const wchar_t* IDS_APPCONTROL_PROVIDER_CALL = L"tizen.phone";
+const wchar_t* IDS_APPCONTROL_PROVIDER_CONTACT = L"tizen.contacts";
+const wchar_t* IDS_APPCONTROL_PROVIDER_MEDIA = L"tizen.filemanager";
+const wchar_t* IDS_APPCONTROL_PROVIDER_IMAGE = L"tizen.imageviewer";
+const wchar_t* IDS_APPCONTROL_PROVIDER_CAMERA = L"tizen.camera";
+const wchar_t* IDS_APPCONTROL_PROVIDER_VIDEO = L"tizen.videoplayer";
+const wchar_t* IDS_APPCONTROL_PROVIDER_AUDIO = L"tizen.musicplayer";
+const wchar_t* IDS_APPCONTROL_PROVIDER_CALENDAR = L"tizen.calendar";
+const wchar_t* IDS_APPCONTROL_PROVIDER_GALLERY = L"tizen.gallery";
+const wchar_t* IDS_APPCONTROL_PROVIDER_MEMO = L"tizen.memo";
+const wchar_t* IDS_MESSAGING = L"Messaging";
+const wchar_t* IDS_MESSAGES = L"Messages";
+const wchar_t* IDS_FONT_HELVETICA_NEUE = L"Helvetica Neue";
+const wchar_t* IDS_SUBJECT = L"Subject";
+const wchar_t* IDS_BLANK = L"";
+const wchar_t* IDS_BLANK_SPACE = L" ";
+const wchar_t* IDS_NEW_LINE = L"\n";
+const wchar_t* IDS_CHAR_SLASH = L"/";
+const wchar_t* IDS_COLON = L":";
+const wchar_t* IDS_SEMICOLON = L";";
+const wchar_t* IDS_COMMA_SPACE = L",";
+const wchar_t* IDS_PLUS_SPACE = L" + ";
+const wchar_t* IDS_TYPE = L"type";
+const wchar_t* IDS_TEXT = L"text";
+const wchar_t* IDS_TO = L"to";
+const wchar_t* IDS_SMS = L"SMS";
+const wchar_t* IDS_UNKNOWN = L"Unknown";
+const wchar_t* IDS_SELECTED_NUMBER_IDS = L"Selected (%d)";
+const wchar_t* IDS_DELETED_NUMBER_IDS = L"Deleting %d/\%d";
+const wchar_t* IDS_RESTORE_NUMBER_IDS = L"Restoring %d/\%d";
+const wchar_t* FORMAT_SPECIFIER_INT = L"%d";
+const wchar_t* IDS_DRAFT = L"Draft";
+const wchar_t* IDS_TYPE_IMAGE = L"type:image";
+