merge with master
authorJinkun Jang <jinkun.jang@samsung.com>
Fri, 15 Mar 2013 16:06:06 +0000 (01:06 +0900)
committerJinkun Jang <jinkun.jang@samsung.com>
Fri, 15 Mar 2013 16:06:06 +0000 (01:06 +0900)
135 files changed:
inc/MsgAttachItemCntl.h [new file with mode: 0644]
inc/MsgAttachListPanel.h
inc/MsgAttachListPopup.h
inc/MsgAttachementControl.h
inc/MsgAttachmentSavePopup.h
inc/MsgBaseCustomPopup.h
inc/MsgBaseData.h
inc/MsgBasePresentationModel.h
inc/MsgBitmapUtility.h
inc/MsgBubbleBackgroundCntl.h [new file with mode: 0644]
inc/MsgCommonUtil.h
inc/MsgComposeBaseControl.h
inc/MsgComposerForm.h
inc/MsgContactList.h
inc/MsgConversationData.h
inc/MsgConversationForm.h
inc/MsgConversationPresentationModel.h
inc/MsgDeleteHandler.h [moved from inc/MsgDeleteHandlerThread.h with 52% similarity]
inc/MsgDurationPopup.h
inc/MsgIRestoreEventListener.h [new file with mode: 0644]
inc/MsgLVAttachItem.h [deleted file]
inc/MsgLVBackgroundItem.h [deleted file]
inc/MsgLVBubbleListItem.h [deleted file]
inc/MsgMediaControl.h
inc/MsgMediaTextExpandEditArea.h
inc/MsgMessageComposePanel.h
inc/MsgMessageData.h
inc/MsgMessagesApp.h
inc/MsgMmsDetailForm.h
inc/MsgMmsSlideData.h [new file with mode: 0644]
inc/MsgMultiLineTextItemCntl.h [new file with mode: 0644]
inc/MsgOptionPopup.h
inc/MsgProgressCntl.h [new file with mode: 0644]
inc/MsgRecipientPanel.h
inc/MsgResendDeletePopup.h
inc/MsgSettingPresentationModel.h
inc/MsgSpamFilterList.h
inc/MsgSpamRestoreHandler.h
inc/MsgSpamSettingsForm.h
inc/MsgSubjectControl.h
inc/MsgTVBubbleListItem.h [new file with mode: 0644]
inc/MsgThreadData.h
inc/MsgThreadListForm.h
inc/MsgTokenOptionPopup.h [new file with mode: 0644]
inc/MsgTypes.h
manifest.xml
res/screen-density-xhigh/00_Video_play.png [new file with mode: 0644]
res/screen-density-xhigh/00_button_popup_dim.#.png [moved from res/screen-density-xhigh/00_button_popup_normal.9.png with 100% similarity]
res/screen-density-xhigh/00_button_popup_normal.#.png [moved from res/screen-density-xhigh/00_button_popup_dim.9.png with 100% similarity]
res/screen-density-xhigh/00_button_popup_press.#.png [moved from res/screen-density-xhigh/00_button_popup_press.9.png with 100% similarity]
res/screen-density-xhigh/00_icon_select_all.#.png [moved from res/screen-density-xhigh/M01_controlbar_icon_attach.png with 68% similarity]
res/screen-density-xhigh/00_icon_select_all_ef.#.png [new file with mode: 0644]
res/screen-density-xhigh/M01_Play_btn__play.png [new file with mode: 0644]
res/screen-density-xhigh/M01_Play_btn_next.png [new file with mode: 0644]
res/screen-density-xhigh/M01_Play_btn_pause.png [new file with mode: 0644]
res/screen-density-xhigh/M01_Play_btn_previous.png [new file with mode: 0644]
res/screen-density-xhigh/M01_Play_btn_stop.png [new file with mode: 0644]
res/screen-density-xhigh/M01_controller_icon_volume.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_contact_info.png
res/screen-density-xhigh/M01_icon_play.png [new file with mode: 0644]
res/screen-density-xhigh/M01_icon_save.png
res/screen-density-xhigh/M01_input_close.png [new file with mode: 0644]
res/screen-density-xhigh/M01_title_icon_attach_press_web.png [new file with mode: 0644]
res/screen-density-xhigh/M01_title_icon_attach_web.png [new file with mode: 0644]
res/screen-size-normal/IDL_ATTACHMENTS_POPUP.xml
res/screen-size-normal/IDL_ATTACH_LIST_POPUP.xml
res/screen-size-normal/IDL_BLOCK_MESSAGE_INFO_POPUP.xml
res/screen-size-normal/IDL_BLOCK_POPUP.xml
res/screen-size-normal/IDL_COMPOSER_OPTION_TRAY_PANEL.xml
res/screen-size-normal/IDL_CONVERSATION_LIST_EDIT_FORM.xml
res/screen-size-normal/IDL_CONVERSATION_LIST_FORM.xml
res/screen-size-normal/IDL_DELETE_POPUP.xml
res/screen-size-normal/IDL_DURATION_POPUP.xml
res/screen-size-normal/IDL_MMS_DETAIL_FORM.xml
res/screen-size-normal/IDL_MSG_CONTACT_NUMBER_POPUP.xml
res/screen-size-normal/IDL_MSG_CONTACT_POPUP.xml
res/screen-size-normal/IDL_MSG_OPTION_DETAILS_POPUP.xml
res/screen-size-normal/IDL_MSG_OPTION_POPUP.xml
res/screen-size-normal/IDL_MSG_RESEND_DELETE_POPUP.xml
res/screen-size-normal/IDL_OPTION_TRAY_PANEL.xml [deleted file]
res/screen-size-normal/IDL_RECIPIENT_LIST_POPUP.xml
res/screen-size-normal/IDL_RECIPIENT_PANEL.xml
res/screen-size-normal/IDL_SETTING_DELETE_FILTER_FORM.xml
res/screen-size-normal/IDL_THREAD_LIST_EDIT_FORM.xml
res/screen-size-normal/IDL_THREAD_LIST_FORM.xml
res/screen-size-normal/IDL_UNABLE_ATTACH_MESSAGE_POPUP.xml
res/screen-size-normal/IDL_VOLUME_POPUP.xml
src/MsgAttachItemCntl.cpp [new file with mode: 0644]
src/MsgAttachListPanel.cpp
src/MsgAttachListPopup.cpp
src/MsgAttachementControl.cpp
src/MsgAttachmentSavePopup.cpp
src/MsgBaseData.cpp
src/MsgBasePresentationModel.cpp
src/MsgBitmapUtility.cpp
src/MsgBubbleBackgroundCntl.cpp [moved from src/MsgLVBackgroundItem.cpp with 54% similarity]
src/MsgCommonUtil.cpp
src/MsgComposerForm.cpp
src/MsgContactList.cpp
src/MsgContactUtility.cpp
src/MsgConversationData.cpp
src/MsgConversationForm.cpp
src/MsgConversationPresentationModel.cpp
src/MsgDeleteHandler.cpp [moved from src/MsgDeleteHandlerThread.cpp with 50% similarity]
src/MsgDurationPopup.cpp
src/MsgFacadeManager.cpp
src/MsgLVAttachItem.cpp [deleted file]
src/MsgLVBubbleListItem.cpp [deleted file]
src/MsgListPresentationModel.cpp
src/MsgMediaControl.cpp
src/MsgMediaTextExpandEditArea.cpp
src/MsgMessageComposePanel.cpp
src/MsgMessageData.cpp
src/MsgMessagePresentationModel.cpp
src/MsgMessagesApp.cpp
src/MsgMmsDetailForm.cpp
src/MsgMmsSlideData.cpp [new file with mode: 0644]
src/MsgMultiLineTextItemCntl.cpp [new file with mode: 0644]
src/MsgOptionPopup.cpp
src/MsgPhoneNumberListPopup.cpp
src/MsgProgressCntl.cpp [new file with mode: 0644]
src/MsgRecipientPanel.cpp
src/MsgResendDeletePopup.cpp
src/MsgSettingPresentationModel.cpp
src/MsgSettingsForm.cpp
src/MsgSpamFilterList.cpp
src/MsgSpamRestoreHandler.cpp
src/MsgSpamSettingsForm.cpp
src/MsgSubjectControl.cpp
src/MsgTVBubbleListItem.cpp [new file with mode: 0644]
src/MsgThreadData.cpp
src/MsgThreadListForm.cpp
src/MsgThreadPresentationModel.cpp
src/MsgTokenOptionPopup.cpp [new file with mode: 0644]
src/MsgTypes.cpp

diff --git a/inc/MsgAttachItemCntl.h b/inc/MsgAttachItemCntl.h
new file mode 100644 (file)
index 0000000..95c858c
--- /dev/null
@@ -0,0 +1,91 @@
+//
+// 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               MsgAttachItemCntl.h
+ * @brief              This is the header file for the %AttachItemCntl class.
+ *
+ * This header file contains the declarations of the %AttachItemCntl class.
+ */
+#ifndef _MSG_ATTACH_ITEM_CNTL_H_
+#define _MSG_ATTACH_ITEM_CNTL_H_
+
+#include <FGrpTextElement.h>
+#include <FUiCtrlButton.h>
+#include <FUiContainer.h>
+
+/**
+ * @class              AttachItemCntl
+ *
+ * This class AttachItemCntl is used to display attachment along with  icon.
+ */
+
+enum AttachmentType
+{
+       ATTACHMENT_TYPE_ATTACH_COUNT,
+       ATTACHMENT_TYPE_IMAGE,
+       ATTACHMENT_TYPE_AUDIO,
+       ATTACHMENT_TYPE_VIDEO,
+       ATTACHMENT_TYPE_OTHERS,
+};
+
+class AttachItemCntl
+       : public Tizen::Ui::Container
+{
+public:
+       /**
+        * Default constructor for this class.
+        */
+       AttachItemCntl(AttachmentType attachmentType, const Tizen::Graphics::Bitmap* pAttachIcon = null);
+
+       /**
+        * Default destructor for this class.
+        */
+       ~AttachItemCntl(void);
+
+       /**
+        * 2nd phase constructor
+        */
+       result Construct(int maxWidth);
+
+       void SetTitleText(const Tizen::Base::String& msgText, const Tizen::Graphics::Font* ptextFont = null);
+       void AddTouchEventListener(Tizen::Ui::ITouchEventListener& listener);
+       int GetMinimumHeight(void) const;
+       int GetMimimumWidth(void) const;
+
+protected:
+       /// From Container class
+       result OnDraw(void);
+       void InitializeAttachUi(void);
+       const Tizen::Base::String GetAttachIconName(void) const;
+private:
+       /// Empty copy constructor.
+       AttachItemCntl(const AttachItemCntl& rhs);
+       // Empty assignment operator.
+       AttachItemCntl& operator =(const AttachItemCntl& rhs);
+
+private:
+       AttachmentType __attachMentType;
+       Tizen::Base::String __attachMenntIconPath;
+       Tizen::Ui::Controls::Button* __pAttachIconButton;
+       const Tizen::Graphics::Bitmap* __pNormalAttachIcon;  // Not own
+       const Tizen::Graphics::Bitmap* __pPressedAttachIcon;  // Not own
+       Tizen::Graphics::EnrichedText* __pEnrichedText; // Own
+       int __maxWidth;
+};
+
+
+#endif //_MSG_ATTACH_ITEM_CNTL_H_
index 9ba8eed..b2f2a58 100644 (file)
@@ -37,6 +37,7 @@ public:
        AttachListPanel(MessageData* pMessageDta);\r
        result Construct(void);\r
        virtual ~AttachListPanel();\r
+       void SetPanelSize(void);\r
 \r
        // IListViewItemEventListener\r
        virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state){}\r
@@ -71,7 +72,6 @@ private:
        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
index 2cd1b0b..38360fc 100644 (file)
 #ifndef _MSG_ATTACH_LIST_POPUP_H_\r
 #define _MSG_ATTACH_LIST_POPUP_H_\r
 \r
+#include <FUiIActionEventListener.h>\r
+#include <FUiCtrlButton.h>\r
+#include <FUiCtrlIListViewItemEventListener.h>\r
+#include <FUiCtrlIListViewItemProvider.h>\r
+\r
 #include "MsgBaseCustomPopup.h"\r
 \r
 class AttachListPopup\r
index 730c3bd..1ab8a04 100644 (file)
@@ -27,6 +27,7 @@
 \r
 class AttachementControl\r
        : public ComposeBaseControl\r
+       , public Tizen::Ui::IActionEventListener\r
 {\r
 public:\r
        AttachementControl(const Tizen::Base::String& attachFile);\r
@@ -35,7 +36,9 @@ public:
        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
+       void SetActionEventListener(Tizen::Ui::IActionEventListener& listener);\r
+       // Form IActionEventListener\r
+       virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);\r
 \r
 protected:\r
        // Form Base class\r
@@ -49,6 +52,8 @@ private:
        Tizen::Graphics::Bitmap* __pAttachIcon;\r
        Tizen::Ui::Controls::Label* __pAttachLabel;\r
        Tizen::Ui::Controls::Button* __pDeleteButton;\r
+       Tizen::Ui::IActionEventListener* __pActionEventListener;\r
+       int __deleteActionId;\r
 };\r
 \r
 #endif //_MSG_ATTACHEMENT_CONTROL_H_\r
index cd03f77..152a1e9 100644 (file)
 #ifndef _MSG_ATTACHMENT_SAVE_POPUP_H_\r
 #define _MSG_ATTACHMENT_SAVE_POPUP_H_\r
 \r
+#include <FUiIActionEventListener.h>\r
+#include <FUiCtrlIListViewItemEventListener.h>\r
+#include <FUiCtrlIListViewItemProvider.h>\r
+\r
 #include "MsgBaseCustomPopup.h"\r
 \r
 class MessageData;\r
@@ -50,7 +54,6 @@ public:
        // 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
index 0e4c14d..33b8d02 100644 (file)
@@ -23,7 +23,7 @@
 #ifndef _MSG_BASE_CUSTOM_POPUP_H_\r
 #define _MSG_BASE_CUSTOM_POPUP_H_\r
 \r
-#include "FUi.h"\r
+#include <FUiCtrlPopup.h>\r
 \r
 class BaseCustomPopup\r
        : public Tizen::Ui::Controls::Popup\r
index 4f149fc..1eb0d8d 100644 (file)
@@ -139,6 +139,7 @@ public:
        Tizen::Base::String displayName; // display name\r
        Tizen::Base::String phoneNumber; // phone number\r
        bool needToValidate;\r
+       bool isAddFromContacts;\r
        AddressInfo();\r
 };\r
 \r
@@ -147,6 +148,7 @@ class MmsPageData
 {\r
 public:\r
        MmsPageData(const Tizen::Base::String& bodyText, bool isTextTop = true);\r
+       MmsPageData* CloneN(void);\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
index 07fa398..883265e 100644 (file)
 #include <msg_types.h>
 
 #include <FBase.h>
-#include <FUiControl.h>
 
 namespace Tizen { namespace Base { namespace Collection
 {
 class ArrayList;
 }}};
 
-class DeleteHandlerThread;
+class DeleteHandler;
 class IDeleteEventListener;
+class IRestoreEventListener;
 class MessageData;
 class SpamRestoreHandler;
 class ThreadData;
@@ -73,20 +73,20 @@ public:
         * 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
+        * @param pDeleteListener    - delete event listener.
         *
         */
-       void Delete(Tizen::Base::Collection::IListT< int >* pDeleteIdList, Tizen::Ui::Control& listener, int requestType);
+       void Delete(Tizen::Base::Collection::IListT<int>* pDeleteIdList, int requestType, IDeleteEventListener* pDeleteListener);
 
        /**
         * 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
+        * @param pDeleteListener    - delete event listener.
         */
-       void Delete(int deleteId, Tizen::Ui::Control& listener, int requestType);
+       void Delete(int deleteId, int requestType, IDeleteEventListener* pDeleteListener);
 
        /**
         * Fetch phone number list for given thread ID..
@@ -148,14 +148,32 @@ public:
         * 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);
+
+       /**
+        *  Get thread data by thread ID.
+        */
+       ThreadData* GetThreadDataByIdN(int threadId) const;
+
+       /**
+        * Restore spam messages to inbox progressively.
+        */
+       void RestoreSpamMessages(Tizen::Base::Collection::IListT<int>* pSelectedIds, IRestoreEventListener* pRestoreListener);
+
+       /**
+        *  Cancel restore operation.
+        */
        void CancelRestore(void);
-       
+
        /**
         * Cancel ongoing delete operation.
         */
        void CancelDelete(void);
+
+       /**
+        * Get last draft message ID for current thread.
+        */
+       int GetDraftMessageId(int threadId) const;
+
 protected:
        /**
         * Default constructor for this class.
@@ -165,6 +183,7 @@ protected:
         *  Second phase construction
         */
        result Construct(void);
+
 private:
        //! To prevent copy constructor and assignment
        BasePresentationModel(const BasePresentationModel& rhs);
@@ -172,7 +191,7 @@ private:
 
 protected:
        msg_handle_t __pMsgHandle;              //! Message service handler.
-       DeleteHandlerThread* __pDeleteHandler;  //! Delete event listener
+       DeleteHandler* __pDeleteHandler;  //! Delete event listener
        SpamRestoreHandler* __pSpamRestoreHandler;
 };
 
index 951c942..8da3aa3 100644 (file)
@@ -114,7 +114,7 @@ public:
         *\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
+       Tizen::Graphics::Bitmap* GetBubbleGroupBgBitmapN(GroupBgBitmapType groupType, const Tizen::Base::String& groupName, const Tizen::Graphics::Dimension& size);\r
 \r
 private:\r
        /**\r
diff --git a/inc/MsgBubbleBackgroundCntl.h b/inc/MsgBubbleBackgroundCntl.h
new file mode 100644 (file)
index 0000000..aceeb40
--- /dev/null
@@ -0,0 +1,70 @@
+//
+// 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               MsgBubbleBackgroundCntl.h
+ * @brief              This is the header file for the %BubbleBackgroundCntl class.
+ *
+ * This header file contains the declarations of the %BubbleBackgroundCntl class.
+ */
+#ifndef _MSG_BUBBLE_BACKGROUND_CNTL_H_
+#define _MSG_BUBBLE_BACKGROUND_CNTL_H_
+
+#include <FGrpTextElement.h>
+#include <FUiContainer.h>
+
+/**
+ * @class              BubbleBackgroundCntl
+ *
+ * This class BubbleBackgroundCntl is used to draw bubble background
+ * image based on message type.
+ */
+
+class BubbleBackgroundCntl
+       : public Tizen::Ui::Container
+{
+public:
+       /**
+        * Default constructor for this class.
+        */
+       BubbleBackgroundCntl(void);
+
+       /**
+        * Default destructor for this class.
+        */
+       ~BubbleBackgroundCntl(void);
+
+       /**
+        *  Second phase constructor
+        */
+       result Construct(bool isSendBubble);
+
+protected:
+       /// From Base calss
+       result OnDraw(void);
+
+private:
+       /// Empty copy constructor.
+       BubbleBackgroundCntl(const BubbleBackgroundCntl& rhs);
+       // Empty assignment operator.
+       BubbleBackgroundCntl& operator =(const BubbleBackgroundCntl& rhs);
+
+private:
+       const Tizen::Graphics::Bitmap* __pBackgroundBitmap;  // Not own
+};
+
+
+#endif //_MSG_BUBBLE_BACKGROUND_CNTL_H_
index ce0cb72..bebdd25 100644 (file)
@@ -63,7 +63,9 @@ public:
        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
+       static void ShowImage(const Tizen::Base::String& filePath);\r
+       static void PlayVideo(const Tizen::Base::String& filePath);\r
+       static void PlayAudio(const Tizen::Base::String& filePath);\r
 };\r
 \r
 \r
index 561461a..cd7ef62 100644 (file)
@@ -28,7 +28,7 @@
 enum ComposeControlType\r
 {\r
        COMPOSE_CONTROL_SUBJECT,\r
-       COMPOSE_CONTROL_IMAGE_TEXT,\r
+       COMPOSE_CONTROL_MEDIA_TEXT,\r
        COMPOSE_CONTROL_ATTACHEMENT,\r
 };\r
 \r
index 438d3ab..5eb827d 100644 (file)
@@ -24,6 +24,7 @@
 #define _MSG_COMPOSE_FORM_H_\r
 \r
 #include <FApp.h>\r
+#include <FSystem.h>\r
 \r
 #include <FUiCtrlIExpandableEditAreaEventListener.h>\r
 #include <FUiCtrlIListViewItemProvider.h>\r
@@ -37,6 +38,7 @@
 namespace Tizen { namespace Ui { namespace Controls\r
 {\r
 class Button;\r
+class ContextMenu;\r
 class ExpandableEditArea;\r
 class Label;\r
 class ListView;\r
@@ -60,6 +62,7 @@ class ComposerForm
        , public Tizen::Ui::IKeypadEventListener\r
        , public Tizen::Ui::IKeyEventListener\r
        , public Tizen::Ui::Scenes::ISceneEventListener\r
+       , public Tizen::System::ISettingEventListener\r
        , public IComposeEventObserver\r
        , public ISizeChangeEventListener\r
 {\r
@@ -112,6 +115,9 @@ protected:
        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
+       //ISettingEventLisetener\r
+       virtual void OnSettingChanged(Tizen::Base::String& key);\r
+\r
 private:\r
        /**\r
         * create message launching from app control.\r
@@ -122,15 +128,18 @@ private:
        void ShowMessagePopup(const Tizen::Base::String& message, int leftActionId, int rightActionId);\r
        void DestroyMessagePopup(void);\r
        void CreateDraftMsgAndExit(MessageComposeData* pMsgComposeData);\r
+       result ShowMoreContextMenu(const Tizen::Ui::Control& source);\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
+       Tizen::Ui::Controls::ContextMenu* __pMoreContextMenu;\r
        DurationPopup* __pDurationPopup;\r
-       bool  __needToSetFocusRecipient;\r
+       bool __needToSetFocusRecipient;\r
+       int __volumeLevel;\r
+       bool __isLaunchedAsForward;\r
 \r
 };\r
 \r
index 798d870..bba027a 100644 (file)
@@ -57,6 +57,7 @@ public:
        virtual ~ContactList(void);\r
 \r
        result Construct(Tizen::Base::Collection::ArrayList* pPhoneNumberList);\r
+       void UpdateContactListDetails(Tizen::Base::Collection::IList* pContactListDetails);\r
 \r
        // IListViewItemEventListener\r
        virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);\r
index fe775a2..9a02d80 100644 (file)
@@ -121,6 +121,13 @@ public:
        Tizen::Graphics::Bitmap* GetThumbnail(void);\r
 \r
        /**\r
+        *  Get Audo path .\r
+        */\r
+       const Tizen::Base::String& GetAudioPath(void) const;\r
+       const Tizen::Base::String& GetImagePath(void) const;\r
+       const Tizen::Base::String& GetVideoPath(void) const;\r
+\r
+       /**\r
         *  Return subject string if exist.\r
         */\r
        const Tizen::Base::String& GetSubject(void) const;\r
@@ -133,6 +140,8 @@ public:
        // Progress realted animation API\r
        void SetAnimationIconIndex(int index);\r
        int GetAnimationIconIndex(void) const;\r
+       bool GetAnimationShowState(void) const { return __isAnimationStarted;};\r
+       void SetAnimationShowState(bool showState)  {  __isAnimationStarted = showState;};\r
 \r
 private:\r
        result InitMessageBody(msg_struct_t pMessageInfo);\r
@@ -160,11 +169,14 @@ private:
        //! conversation field MMS related\r
        int __pageCount;\r
        int __attachmentCount;\r
-       Tizen::Base::String __thumbnailPath;\r
+       Tizen::Base::String __audioPath;\r
+       Tizen::Base::String __imagePath;\r
+       Tizen::Base::String __videoPath;\r
        Tizen::Graphics::Bitmap* __pThumbnailBitmap;\r
        Tizen::Base::String __subjectStr;\r
        //! Animation icon index for sending message\r
        int __animationIconIndex;\r
+       bool __isAnimationStarted;\r
 };\r
 \r
 #endif // _MSG_CONVERSATION_DATA_H_\r
index a121703..2078047 100644 (file)
 #ifndef _MSG_CONVERSATION_FORM_H_\r
 #define _MSG_CONVERSATION_FORM_H_\r
 \r
-#include <FUiCtrlIGroupedListViewItemEventListener.h>\r
-#include <FUiCtrlIGroupedListViewItemProvider.h>\r
+#include <FSystem.h>\r
+#include <FUiCtrlTableViewTypes.h>\r
+#include <FUiCtrlIGroupedTableViewItemEventListener.h>\r
+#include <FUiCtrlIGroupedTableViewItemProvider.h>\r
 #include <FUiScenesISceneEventListener.h>\r
 \r
 #include "MsgBaseForm.h"\r
@@ -48,13 +50,12 @@ class Label;
 class AttachementSavePopup;\r
 class DurationPopup;\r
 class ThreadData;\r
-class MessageComposePanel;\r
 class ContactList;\r
 class ContactPopup;\r
+class MessageComposePanel;\r
 class MsgProgressPopup;\r
-class OptionPopup;\r
 class MsgResendDeletePopup;\r
-//class ThreadData;\r
+class OptionPopup;\r
 \r
 /**\r
  * @class              ConversationForm\r
@@ -68,9 +69,10 @@ class ConversationForm
        , 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::Controls::IGroupedTableViewItemEventListener\r
+       , public Tizen::Ui::Controls::IGroupedTableViewItemProvider\r
        , public Tizen::Ui::Scenes::ISceneEventListener\r
+       , public Tizen::System::ISettingEventListener\r
        , public IComposeEventObserver\r
        , public IConversationEventListener\r
        , public IDeleteEventListener\r
@@ -135,28 +137,37 @@ protected:
        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
+       //IGroupedTableViewItemProvider\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
+       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
        //Form ISizeChangeEventListener\r
        virtual void OnSizeIncrease(const Tizen::Ui::Control& control);\r
        virtual void OnSizeDecrease(const Tizen::Ui::Control& control);\r
 \r
+       //ISettingEventLisetener\r
+       virtual void OnSettingChanged(Tizen::Base::String& key);\r
+\r
        // Form IComposeEventObserver\r
        virtual void OnComposeStateChange(ComposeType type);\r
        virtual void OnSendButtonClick(void);\r
        void ShowDeleteConfirmPopup(void);\r
+       // New API\r
+       void OnGroupedTableViewItemLongPressed(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, int elementId);\r
+       void OnGroupedTableViewItemSelected(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, int elementId);\r
 \r
 private:\r
        // New API\r
@@ -225,13 +236,6 @@ private:
         *\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
@@ -280,7 +284,9 @@ private:
         *\r
         * @return void\r
         */\r
-       result CreateContextMenu(const Tizen::Ui::Control& source);\r
+       result ShowRecipientContextMenu(const Tizen::Ui::Control& source);\r
+       \r
+       result ShowMoreContextMenu(const Tizen::Ui::Control& source);\r
 \r
        /**\r
         * Context menu to Call,View/Add,Block contact\r
@@ -323,27 +329,26 @@ private:
        ConversationListFormType __convFormType;\r
        MessageComposePanel* __pMsgComposePanel;\r
        Tizen::Graphics::Rectangle __prevBounds;\r
-       Tizen::Ui::Controls::GroupedListView* __pConvMessageList;\r
+       Tizen::Ui::Controls::GroupedTableView* __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
+       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::ContextMenu* __pRecipientContextMenu;\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
+       Tizen::Ui::Controls::ContextMenu* __pMoreContextMenu;\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
+       bool __isConvNeedToUpdate;\r
+       int __volumeLevel;\r
 };\r
 \r
 //}\r
index dda0eb6..1e23c49 100644 (file)
@@ -36,7 +36,6 @@ namespace Tizen { namespace Base { namespace Collection
 class ArrayList;\r
 }}};\r
 \r
-class DeleteHandlerThread;\r
 class IConversationEventListener;\r
 class IDeleteEventListener;\r
 class MessageData;\r
@@ -92,6 +91,8 @@ public:
         *  Get conversation data and hold it for given thread.\r
         */\r
        void GetConversationMessageList(int threadId);\r
+       Tizen::Base::Collection::ArrayList* GetThreadIdListN(msg_id_list_s* pMsgIdList);\r
+       bool IsThreadIdExist(int threadId, Tizen::Base::Collection::IList* pThreadIdList) const;\r
 \r
 protected:\r
        /**\r
@@ -125,7 +126,7 @@ protected:
         *\r
         * @return void.\r
         */\r
-       void NotifyConversationChange(msg_storage_change_type_t storageChangeType);\r
+       void NotifyConversationChange(msg_storage_change_type_t storageChangeType, Tizen::Base::Collection::IList* pThreadIdList);\r
 \r
 private:\r
        /**\r
@@ -147,8 +148,8 @@ private:
 \r
 private:\r
        //! To prevent copy constructor and assignment\r
-       ConversationPresentationModel(const ConversationPresentationModel&);\r
-       ConversationPresentationModel& operator =(const ConversationPresentationModel& msg);\r
+       ConversationPresentationModel(const ConversationPresentationModel& rhs);\r
+       ConversationPresentationModel& operator =(const ConversationPresentationModel& rhs);\r
 \r
 private:\r
        static ConversationPresentationModel* __pInstance;      //! Self instance for singleton design.\r
similarity index 52%
rename from inc/MsgDeleteHandlerThread.h
rename to inc/MsgDeleteHandler.h
index e14612b..7ab4ad4 100644 (file)
 //
 
 /**
- * @file               MsgDeleteHandlerThread.h
- * @brief              This is the header file for the %DeleteHandlerThread class.
+ * @file               MsgDeleteHandler.h
+ * @brief              This is the header file for the %DeleteHandler class.
  *
- * This header file contains the declarations of the %DeleteHandlerThread class.
+ * This header file contains the declarations of the %DeleteHandler class.
  */
-#ifndef _MSG_DLETE_HANDLER_THREAD_H_
-#define _MSG_DLETE_HANDLER_THREAD_H_
+#ifndef _MSG_DLETE_HANDLER_H_
+#define _MSG_DLETE_HANDLER_H_
+
+#include <FBase.h>
 
-#include <FBaseRtThread.h>
-#include "FUi.h"
 
 class IDeleteEventListener;
 
 /**
- * @class              MsgDeleteHandlerThread
+ * @class              MsgDeleteHandler
  *
  *  This is a thread class use to delete thread and messages.
  */
 
-class DeleteHandlerThread
-       : public Tizen::Base::Runtime::Thread
+class DeleteHandler
+       : public Tizen::Base::Object
+       , public Tizen::Base::Runtime::IRunnable
 {
 public:
        /**
         * This is argument constructor for this class
         *
+        * @param pDeleteListener - Delete event listener
+        */
+       DeleteHandler(IDeleteEventListener* pDeleteListener);
+
+       /**
+        * This is 2nd phase 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);
+       result Construct(Tizen::Base::Collection::IListT<int>* pList, int requestType);
 
        /**
-        * This is argument constructor for this class
+        * This is 2nd phase 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);
+       result Construct(int deleteId, int requestType);
 
        /**
         * This is the destructor for this class.
         */
-       virtual ~DeleteHandlerThread(void);
+       virtual ~DeleteHandler(void);
 
-       //! From base class
-       result Construct(void);
-       Object* Run(void);
+       /**
+        * Start delete operation
+        */
+       void Start(void);
+
+       /**
+        *  Cancel ongoing delete operation.
+        */
+       void Cancel(void);
+
+private:
+       //Form IRunnable
+       virtual Tizen::Base::Object* Run(void);
+       //! To prevent copy constructor and assignment
+       DeleteHandler(const DeleteHandler& rhs);
+       DeleteHandler& operator =(const DeleteHandler& rhs);
 
 private:
-       Tizen::Base::Collection::IListT< int >* __pDeleteIdList;  //! Delete id list
+       IDeleteEventListener* __pDeleteListener;
+       Tizen::Base::Runtime::Thread* __pDeleteThread;
+       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_
index 7080287..d077ede 100644 (file)
 #ifndef _MSG_DURATION_POPUP_H_\r
 #define _MSG_DURATION_POPUP_H_\r
 \r
+#include <FUiIActionEventListener.h>\r
+#include <FUiITextEventListener.h>\r
+\r
 #include "MsgBaseCustomPopup.h"\r
 \r
 class DurationPopup\r
        : public BaseCustomPopup\r
+       , public Tizen::Base::Runtime::ITimerEventListener\r
        , public Tizen::Ui::IActionEventListener\r
+       , public Tizen::Ui::ITextEventListener\r
 {\r
 \r
 public:\r
@@ -37,13 +42,17 @@ public:
        int GetDuration(void) const;\r
        result SetDuration(int duration);\r
        result SetInfoText(const Tizen::Base::String& infoText);\r
-       result SetFocusToEditor(void);\r
+       result ShowPopup(void);\r
        // From IActionEventListener\r
        virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);\r
-\r
+protected:\r
+       virtual void OnTextValueChanged(const Tizen::Ui::Control& source);\r
+       virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source){};\r
+       virtual void OnTimerExpired(Tizen::Base::Runtime::Timer& timer);\r
 private:\r
-\r
        Tizen::Ui::Control& __parentCntl;\r
+       Tizen::Base::Runtime::Timer* __pLaunchTimer;\r
+       int __previousValue;\r
 };\r
 \r
 #endif // _MSG_DURATION_POPUP_H_\r
diff --git a/inc/MsgIRestoreEventListener.h b/inc/MsgIRestoreEventListener.h
new file mode 100644 (file)
index 0000000..d60ed41
--- /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               MsgIRestoreEventListener.h\r
+ * @brief              This is the header file for the %IRestoreEventListener interface.\r
+ *\r
+ * This header file contains the declarations of the %IRestoreEventListener interface.\r
+ */\r
+#ifndef _MSG_IRESTORE_EVENT_LISTENER_H_\r
+#define _MSG_IRESTORE_EVENT_LISTENER_H_\r
+\r
+#include <FBaseRtIEventListener.h>\r
+\r
+namespace Tizen { namespace Base\r
+{\r
+class Object;\r
+}};\r
+\r
+/**\r
+ * @interface          IRestoreEventListener\r
+ *\r
+ * Interface IRestoreEventListener is a listener for give progressive call back for message or\r
+ * thread restoring.\r
+ */\r
+\r
+class IRestoreEventListener\r
+       : public Tizen::Base::Runtime::IEventListener\r
+{\r
+public:\r
+       /**\r
+        * This is the destructor for this class.\r
+        */\r
+       virtual ~IRestoreEventListener(void) {}\r
+\r
+       /**\r
+        * Call when restore started by worker thread.\r
+        *\r
+        * @param   totalCount      Total number of item to be restored.\r
+        *\r
+        */\r
+       virtual void OnRestoreStart(int totalCount) = 0;\r
+\r
+       /**\r
+        * Call after each and every restore operation.\r
+        *\r
+        * @param       restoreCount    Number of item restored\r
+        * @param   totalCount      Total number of item to be deleted.\r
+        *\r
+        */\r
+       virtual void OnRestoreUpdate(int restoreCount, int totalCount) = 0;\r
+\r
+       /**\r
+        * Call once delete completed.\r
+        *\r
+        * @param   errCode                     In case of restore error return restore specific error code.\r
+        * @param   pRestoreHandler     Restore handler object responsible for delete operation.\r
+        *\r
+        */\r
+       virtual void OnRestoreComplete(int errCode, Tizen::Base::Object* pRestoreHandler) = 0;\r
+\r
+};\r
+\r
+#endif // _MSG_IRESTORE_EVENT_LISTENER_H_\r
diff --git a/inc/MsgLVAttachItem.h b/inc/MsgLVAttachItem.h
deleted file mode 100644 (file)
index 1414234..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-//\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
deleted file mode 100644 (file)
index acc610e..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-//\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
deleted file mode 100644 (file)
index ff50f39..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-//\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
index e10ca20..7b7fd28 100644 (file)
@@ -32,7 +32,7 @@ class MediaControl
 {\r
 public:\r
        MediaControl(void);\r
-       ~MediaControl(void);\r
+       virtual ~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
index 3c1c24b..5f8064d 100644 (file)
@@ -38,11 +38,11 @@ class MediaTextExpandEditArea
 public:\r
        // Constructor and destructor\r
        MediaTextExpandEditArea(void);\r
-       ~MediaTextExpandEditArea(void);\r
+       virtual ~MediaTextExpandEditArea(void);\r
        result Construct(const Tizen::Graphics::Rectangle& rectangle);\r
 \r
        // Set listener API\r
-       void AddActionEventListener(Tizen::Ui::IActionEventListener& listener);\r
+       void SetActionEventListener(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
@@ -55,6 +55,7 @@ public:
        result SetMedia(const Tizen::Base::String& mediaFilePath, MediaType mediaType);\r
        Tizen::Base::String GetMediaPath(MediaType mediaType) const;\r
        void SetDeleteActionId(int actionId);\r
+       void SetUpdateActionId(int actionId);\r
        bool IsImageExist() const;\r
        bool IsAudioExist() const;\r
        bool IsVideoExist() const;\r
@@ -84,7 +85,9 @@ private:
        Tizen::Ui::Controls::Button* __pDeleteButton;\r
        Tizen::Graphics::Rectangle __prevBounds;\r
        AttachementControl* __pAttachCntrl;\r
-\r
+       Tizen::Ui::IActionEventListener* __pActionEventListener;\r
+       int __deleteActionId;\r
+       int __updateActionId;\r
 };\r
 \r
 \r
index f40045a..11cb051 100644 (file)
@@ -65,15 +65,15 @@ public:
        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 ClearText(bool redraw = false);
        void LoadMessageData(const MessageData& msgData);
        void LoadComposeData(const MessageComposeData& composeData);
 
        void SetFocusToEditor(void);
+       void SetFocusToSubject(void);
        void SetDefaultPageDuration(int pageDuration);
        int GetDefaultPageDuration(void) const;
 
@@ -81,7 +81,8 @@ public:
        virtual result SetBounds(const Tizen::Graphics::Rectangle& rect);
 
        void EnableSendButton(bool status);
-       bool IsComposeFieldEmpty(void);
+       bool IsComposeFieldEmpty(void) const;
+       bool IsSubjectExists(void) const;
 
 protected:
        // Form ISizeChangeEventListener
@@ -128,13 +129,14 @@ protected:
        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;
+       bool IsSuitableCreationMode(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);
+       bool IsConvertedToMms(void) const;
        Tizen::Base::Collection::IList* GetSelectedFileListN(const Tizen::Base::String& operationId, const Tizen::Base::Collection::IMap* pResultMap);
 
 private:
index 4cdd2ee..9e8faaf 100644 (file)
@@ -113,12 +113,6 @@ public:
        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
@@ -148,6 +142,8 @@ public:
         */\r
        int GetThreadId(void) const;\r
 \r
+       bool IsFilePresent(void) const;\r
+\r
 private:\r
        result InitAddrListDisplayName(msg_struct_t pMessageInfo);\r
        result InitMessageBody(msg_struct_t pMessageInfo);\r
@@ -167,6 +163,7 @@ private:
        int __displayTime;\r
        int __networkStatus;\r
        bool __isRead;\r
+       bool __isMediaFilePresent;\r
        int __messageDirection;\r
        Tizen::Base::Collection::ArrayList* __pAddressList;\r
        Tizen::Base::String __displayName;\r
@@ -176,7 +173,6 @@ private:
        //! 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
index d04d76c..7929ee4 100644 (file)
@@ -83,6 +83,7 @@ protected:
        void OnScreenOn(void);
        void OnScreenOff(void);
        void GetRecipientName(AddressInfo& addressInfo, const Tizen::Base::String& strPhoneNumber);
+       int CheckMesageServiceAvailable(void) const;
 
 private:
        RequestId __pClientAppRequestId;
index 36f73ff..f8abc60 100644 (file)
@@ -45,6 +45,7 @@ class TextBox;
 \r
 class AttachListPanel;\r
 class AttachementSavePopup;\r
+class ContactList;\r
 class MessageData;\r
 \r
 /**\r
@@ -131,6 +132,7 @@ protected:
        virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};\r
 \r
 private:\r
+       void SetHeader(void);\r
        void SetFooter(void);\r
        bool IsTextExist(int slideIndex);\r
        void StartSlideShow(void);\r
@@ -140,6 +142,7 @@ private:
        void UpdateMmsBodyText(void);\r
        void UpdateSlideNumber(int currentSlideNumber);\r
        void UpdateTimeElapsedLabel(int timeElapsed);\r
+       void SetTotalTimeDuration(int totalDuration);\r
        void BlockPopup(const Tizen::Base::String& phoneNumber);\r
        void UnBlockPhoneNumber(const Tizen::Base::String& phoneNumber);\r
        void ShowMessageDetails(void);\r
@@ -155,13 +158,31 @@ private:
        void Stop(void){};\r
        void Pause(void){};\r
        Tizen::Graphics::Bitmap* GetIconN(const Tizen::Base::String& filePath) const;\r
+       \r
+       /**\r
+        * To show context menu for single recipient Call,View/Add,Block\r
+        *\r
+        * @return void\r
+        */\r
+       result ShowRecipientContextMenu(const Tizen::Ui::Control& source);\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 ShowRecipientList(bool value);\r
+       void PrepareRecipientList(void);\r
 \r
 private:\r
        // Member variable.\r
+       ContactList* __pConContactList;\r
        MessageData* __pMessageData;\r
        AttachListPanel* __pMsgAttachListPanel;\r
        Tizen::Ui::Scenes::SceneId __previousSceneId;\r
        Tizen::Base::Collection::ArrayList* __pAttachFileArray;\r
+       Tizen::Base::Collection::ArrayList* __pRecipientNameList;\r
        Tizen::Ui::Controls::Gallery* __pGallery;\r
        Tizen::Ui::Controls::TextBox* __pMmsTextBox;\r
        Tizen::Ui::Controls::Panel* __pPlayControlPanel;\r
@@ -172,6 +193,7 @@ private:
        Tizen::Ui::Controls::Label* __pTimeElapsedLabel;\r
        Tizen::Ui::Controls::Label* __pPageNumberLabel;\r
        Tizen::Ui::Controls::Label* __pAttachFilesInfoLabel;\r
+       Tizen::Ui::Controls::ListView* __pList;\r
        Tizen::Ui::Controls::Popup* __pMessageDetailsPopup;\r
        Tizen::Ui::Controls::Popup* __pDeletePopup;\r
        Tizen::Ui::Controls::Popup* __pVolumePopup;\r
@@ -179,6 +201,7 @@ private:
        Tizen::Ui::Controls::ContextMenu* __pContextMenu;\r
        Tizen::Ui::Controls::ContextMenu* __pContextMenuText;\r
        Tizen::Ui::Controls::Slider* __pMediaVolumeSlider;\r
+       Tizen::Ui::Controls::ScrollPanel* __pScrollPanel;\r
        Tizen::Ui::Controls::OverlayRegion* __pOverlay;\r
        Tizen::Media::Player* __pPlayer;\r
        AttachementSavePopup* __pSaveAttachmentsPopup;\r
@@ -192,6 +215,7 @@ private:
        Tizen::Base::Runtime::Timer* __pTimerforVolumePopup;\r
        Tizen::Base::Runtime::Timer* __pTimerForControlBar;\r
        MmsFormType __mmsFormType;\r
+       Tizen::Base::String __recipientPhoneNumber;\r
 };\r
 \r
 #endif //_MSG_MMS_DETAIL_FORM_H_\r
diff --git a/inc/MsgMmsSlideData.h b/inc/MsgMmsSlideData.h
new file mode 100644 (file)
index 0000000..b26b700
--- /dev/null
@@ -0,0 +1,154 @@
+//\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               MsgMmsSlideData.h\r
+ * @brief              This is the header file for the %MmsSlideData class.\r
+ *\r
+ * This header file contains the declarations of the %MmsSlideData class.\r
+ */\r
+#ifndef _MSG_MMS_SLIDE_DATA_H_\r
+#define _MSG_MMS_SLIDE_DATA_H_\r
+\r
+namespace Tizen { namespace Base { namespace Collection {\r
+class ArrayList;\r
+}}};\r
+class MessageData;\r
+class MmsSlideBase;\r
+\r
+enum MmsSlideType\r
+{\r
+       MMS_SLIDE_EMPTY,\r
+       MMS_SLIDE_AUDIO,\r
+       MMS_SLIDE_AUDIO_TEXT,\r
+       MMS_SLIDE_AUDIO_IMAGE,\r
+       MMS_SLIDE_AUDIO_IMAGE_TEXT,\r
+       MMS_SLIDE_TEXT,\r
+       MMS_SLIDE_TEXT_IMAGE,\r
+       MMS_SLIDE_TEXT_VIDEO,\r
+       MMS_SLIDE_IMAGE,\r
+       MMS_SLIDE_VIDEO,\r
+       MMS_SLIDE_ATTACHMENT,\r
+};\r
+\r
+/**\r
+ * @class              MmsSlideData\r
+ *\r
+ * Class MmsSlideData  keep slide information for single MMS message.\r
+ */\r
+class MmsSlideData\r
+       : public Tizen::Base::Object\r
+{\r
+public:\r
+       /**\r
+        * Default constructor for this class.\r
+        */\r
+       MmsSlideData(void);\r
+\r
+       /**\r
+        * Default destructor for this class.\r
+        */\r
+       virtual ~MmsSlideData(void);\r
+\r
+       /**\r
+        * 2nd phase constructor\r
+        */\r
+       result Construct(MessageData* pMessageData);\r
+\r
+       /**\r
+        *  Slide count for MMS data\r
+        */\r
+       int GetSlideCount(void) const;\r
+\r
+       /**\r
+        *  Get Slide Type.\r
+        */\r
+       MmsSlideType GetSlideType(int slideindex) const;\r
+\r
+       /**\r
+        *  Get Slide object.\r
+        */\r
+       const MmsSlideBase* GetSlideAt(int slideIndex) const;\r
+\r
+       /**\r
+        *  Get Slide message data\r
+        */\r
+       const MessageData* GetSlideMessageData(void) const;\r
+\r
+private:\r
+       //! To prevent copy constructor and assignment\r
+       MmsSlideData(const MmsSlideData& rhs);\r
+       MmsSlideData& operator =(const MmsSlideData& rhs);\r
+       MmsSlideType GetSlideType(MmsPageData* pPageData) const;\r
+\r
+private:\r
+       //! Message entry information\r
+       MessageData* __pMessageData;\r
+       //! Slide information\r
+       Tizen::Base::Collection::ArrayList* __pSlideList;\r
+};\r
+\r
+class MmsSlideBase\r
+       : public Tizen::Base::Object\r
+{\r
+public:\r
+       virtual ~MmsSlideBase(void) {}\r
+       virtual MmsSlideType GetSlideType(void) const = 0;\r
+};\r
+\r
+class MmsEmptySlide\r
+       : public MmsSlideBase\r
+{\r
+public:\r
+       virtual MmsSlideType GetSlideType(void) const;\r
+};\r
+\r
+//! MMS media slide\r
+class MmsMediaSlide\r
+       : public MmsSlideBase\r
+{\r
+\r
+public:\r
+       MmsMediaSlide(MmsPageData& pageData, MmsSlideType slideType);\r
+       virtual ~ MmsMediaSlide();\r
+       const Tizen::Base::String& GetSlideText(void) const;\r
+       const Tizen::Base::String& GetAudioFile(void) const;\r
+       const Tizen::Base::String& GetImageFile(void) const;\r
+       const Tizen::Base::String& GetVideoFile(void) const;\r
+       // Form Base class\r
+       virtual MmsSlideType GetSlideType(void) const;\r
+private:\r
+       MmsPageData& __pageData;\r
+       MmsSlideType __slideType;\r
+};\r
+\r
+// MMS attachment slide\r
+class MmsAttachmentSlide\r
+       : public MmsSlideBase\r
+{\r
+\r
+public:\r
+       MmsAttachmentSlide(const Tizen::Base::Collection::IList& attachFiles, MmsSlideType slideType);\r
+       virtual ~MmsAttachmentSlide(void);\r
+       const Tizen::Base::Collection::IList& GetAttachFileList(void) const;\r
+       // Form Base class\r
+       virtual MmsSlideType GetSlideType(void) const;\r
+private:\r
+       const Tizen::Base::Collection::IList& __attachFileList;\r
+       MmsSlideType __slideType;\r
+};\r
+\r
+#endif // _MSG_MMS_SLIDE_DATA_H_\r
diff --git a/inc/MsgMultiLineTextItemCntl.h b/inc/MsgMultiLineTextItemCntl.h
new file mode 100644 (file)
index 0000000..2c15007
--- /dev/null
@@ -0,0 +1,185 @@
+//
+// 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               MsgMultiLineTextItemCntl.h
+ * @brief              This is the header file for the %MultiLineTextItemCntl class.
+ *
+ * This header file contains the declarations of the %MultiLineTextItemCntl class.
+ */
+#ifndef _MSG_MULTILINE_TEXTITEM_CNTL_H_
+#define _MSG_MULTILINE_TEXTITEM_CNTL_H_
+
+#include <FGrpEnrichedText.h>
+#include <FGrpTextElement.h>
+#include <FUiContainer.h>
+/**
+  * @class             MultiLineTextItemCntl
+ *
+ * This class MultiLineTextItemCntl display multiline text in list.Using this class
+ * display text colour and font size/type can be control.
+ *
+ */
+
+class MultiLineTextItemCntl
+       : public Tizen::Ui::Container
+{
+public:
+       /**
+        * This is the default constructor for this class.
+        */
+       MultiLineTextItemCntl(void);
+
+       /**
+        * This is the default destructor for this class.
+        */
+       ~MultiLineTextItemCntl(void);
+
+       /**
+        * 2nd phase constructor
+        */
+       result Construct(void);
+
+       /**
+        * Set text need to be displayed in this list item.
+        *
+        * @param               msgText         - Text need to be displayed.
+        * @param               textColor       - Text color
+        * @param               font            - Text font.
+        *
+        * @return              void
+        */
+       void AddText(const Tizen::Base::String& msgText, const Tizen::Graphics::Color& textColor, const Tizen::Graphics::Color& textSelectionColor, const Tizen::Graphics::Font* ptextFont = null);
+       /**
+        *  Set background image for this list item
+        *
+        *  @param      backgroudImage      - Background image bitmap.
+        *
+        *  @return     void
+        */
+       void SetBackgroundImage(const Tizen::Graphics::Bitmap& backgroudImage);
+
+       /**
+        * Set selection image for this list item.
+        *
+        * @param       selectionImage          - Selection image bitmap.
+        *
+        * @param       void
+        */
+       void SetSelectionImage(const Tizen::Graphics::Bitmap& selectionImage);
+
+       /**
+        *  Set max view rect width for list item.
+        *
+        *  @param      rectWidth       View rect width for list item.
+        *  @return     void
+        */
+       void SetViewRectWidth(const int rectWidth);
+
+       /**
+        * Set margin for text element.
+        * @param       left            left padding
+        * @param   right               right padding
+        * @param       top                     top padding
+        * @param   bottom              bottom padding
+        */
+       void SetTextMargin(int left, int right, int top, int bottom);
+
+       /**
+        * Return minimum height of the list item. This should be call only after
+        * CreateTextLayout().
+        *
+        * @param       none
+        * @return  int         - Minimum height to display list item.
+        *
+        */
+       int GetMinHeight(void) const;
+
+       /**
+        * Return minimum width of the list item. This should be call only after
+        * CreateTextLayout().
+        *
+        * @param       none
+        * @return  int         - Minimum width to display list item.
+        *
+        */
+       int GetMaxWidth(void) const;
+
+       /**
+        * Set vertical alignment for multiline text.
+        *
+        * @param       alignment - vertical position of the text.
+        * @return  void.
+        *
+        */
+       void SetVerticalAlignment(Tizen::Graphics::TextVerticalAlignment alignment);
+
+       /**
+        * Set Horizontal alignment for multiline text.
+        *
+        * @param       alignment - Horizontal position of the text.
+        * @return  void.
+        *
+        */
+       void SetHorizentalAlignment(Tizen::Graphics::TextHorizontalAlignment alignment);
+
+
+       /**
+        * Create layout for item which will display in list. This should be call
+        * after setting the list item properties.
+        *
+        * @param       width   - Width of the list item.
+        *
+        * @return void
+        */
+       void CreateTextLayout(int width = 0, bool singleLine = false);
+       void SetMinimumHeight(int minHeight);
+       void SetMinimumWidth(int minWidth);
+
+private:
+       // Form Base class
+       result OnDraw(void);
+
+       /**
+        * Empty Copy constructor
+        */
+       MultiLineTextItemCntl(const MultiLineTextItemCntl& rhs);
+
+       /**
+        * Empty Assignment operator.
+        *
+        */
+       MultiLineTextItemCntl& operator =(const MultiLineTextItemCntl& rhs);
+
+private:
+       const Tizen::Graphics::Bitmap* __pBackgroundBitmap;  // Not own
+       const Tizen::Graphics::Bitmap* __pSelectedBitmap;   // Not own
+       Tizen::Graphics::EnrichedText* __pEnrichedText; // Own
+       Tizen::Base::Collection::ArrayList* __pNormalColor; // own
+       Tizen::Base::Collection::ArrayList* __pSelectionColor; // own
+       Tizen::Graphics::TextVerticalAlignment __verticalAlignment;
+       Tizen::Graphics::TextHorizontalAlignment __horizontalAlignment;
+       mutable int __viewRectWidth;
+       mutable int __leftMargin;
+       mutable int __rightMargin;
+       mutable int __topMargin;
+       mutable int __bottomMargin;
+       int __minHeight;
+       int __minWidth;
+};
+
+
+#endif // _MSG_MULTILINE_TEXTITEM_CNTL_H_
index dd7c53a..8c5575e 100644 (file)
@@ -27,7 +27,6 @@
 #include <FUi.h>\r
 \r
 #include "MsgBaseCustomPopup.h"\r
-#include "MsgIDeleteEventListener.h"\r
 #include "MsgIPopupEventListener.h"\r
 \r
 class ConversationData;\r
@@ -37,7 +36,6 @@ class OptionPopup
        , public Tizen::Ui::IActionEventListener\r
        , public Tizen::Ui::Controls::IListViewItemEventListener\r
        , public Tizen::Ui::Controls::IListViewItemProvider\r
-       , public IDeleteEventListener\r
 {\r
 \r
 public:\r
@@ -57,11 +55,6 @@ public:
        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
diff --git a/inc/MsgProgressCntl.h b/inc/MsgProgressCntl.h
new file mode 100644 (file)
index 0000000..a527c95
--- /dev/null
@@ -0,0 +1,52 @@
+//
+// 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               MsgProgressCntl.h
+ * @brief              This is the header file for the %ProgressCntl class.
+ *
+ * This header file contains the declarations of the %ProgressCntl class.
+ */
+
+#ifndef _MSG_PROGRESS_CNTL_H_
+#define _MSG_PROGRESS_CNTL_H_
+
+#include <FUiContainer.h>
+#include <FUiCtrlLabel.h>
+
+#include "MsgTypes.h"
+
+class ProgressCntl
+       : public Tizen::Ui::Container
+       , public Tizen::Base::Runtime::ITimerEventListener
+{
+public:
+       ProgressCntl(void);
+       virtual ~ProgressCntl(void);
+
+       result Construct(Tizen::Graphics::Rectangle rect);
+       virtual void OnTimerExpired(Tizen::Base::Runtime::Timer& timer);
+
+       void Start(void);
+       void Cancel(void);
+
+private:
+       Tizen::Ui::Controls::Label* __pProgressIcon;
+       Tizen::Base::Runtime::Timer* __pTimer;
+       MessageIconType __progressIconType;
+};
+
+#endif // _MSG_PROGRESS_CNTL_H_
index 2458571..83b98e0 100644 (file)
@@ -31,6 +31,7 @@ namespace Tizen { namespace Social
 class Addressbook;
 }};
 class ISizeChangeEventListener;
+class TokenOptionPopup;
 
 class RecipientPanel
        : public Tizen::Ui::Controls::Panel
@@ -40,6 +41,7 @@ class RecipientPanel
        , public Tizen::Ui::IFocusEventListener
        , public Tizen::Ui::IKeyEventListener
        , public Tizen::Ui::ITextEventListener
+       , public Tizen::Ui::ITouchEventListener
        , public Tizen::Ui::Controls::IExpandableEditAreaEventListener
        , public Tizen::Ui::Controls::IListViewItemEventListener
        , public Tizen::Ui::Controls::IListViewItemProvider
@@ -56,15 +58,17 @@ public:
        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 AddRecipient(const Tizen::Base::String& recipientNumber);
+       Tizen::Base::Collection::ArrayList* GetRecipientNumberListN(void) const;
        void SetTextSize(int textSize);
        void ShowKeypad(void);
        void HideKeypad(void);
-       bool CheckRecipentForToken(bool updateToken = true);
+       bool CheckRecipientForToken(bool updateToken = true);
        bool IsTextForTokenExist(void) const;
        void EnableValidationOnFocusLost(bool state) { __validateOnFocusLost = state;}
        bool IsEmptyRecipent(void);
+       void Clear(void);
+       
 protected:
        // Form Base class
        virtual result OnDraw(void);
@@ -99,6 +103,12 @@ protected:
        virtual void OnTextValueChanged(const Tizen::Ui::Control& source);
        // Form IRunable
        virtual Tizen::Base::Object* Run(void);
+       // ITouchEventListener
+       virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};
+       virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};
+       virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};
+       virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};
+       virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
 
        /**
         *  Show Message in popup
@@ -138,9 +148,11 @@ private:
        Tizen::Base::String __inProperlist;
        Tizen::Social::Addressbook* __pAddressBook;
        Tizen::Base::Runtime::Thread* __pTokenDeleteThread;
+       TokenOptionPopup * __pTokenOptionPopup;
        int __deleteTokenIndex;
        bool __validateOnFocusLost;
        bool __oneTimeFlag;
+       int __selectedIndex;
 };
 
 #endif //_MSG_RECIPIENT_PANEL_H_
index 0ca46df..f4fbf23 100644 (file)
@@ -29,8 +29,6 @@
 #include <FUiIActionEventListener.h>\r
 #include <FUiCtrlPopup.h>\r
 \r
-#include "MsgIDeleteEventListener.h"\r
-\r
 class ConversationData;\r
 class IPopupEventListener;\r
 \r
@@ -39,7 +37,6 @@ class MsgResendDeletePopup
        , public Tizen::Ui::IActionEventListener\r
        , public Tizen::Ui::Controls::IListViewItemEventListener\r
        , public Tizen::Ui::Controls::IListViewItemProvider\r
-       , public IDeleteEventListener\r
 {\r
 \r
 public:\r
@@ -63,11 +60,6 @@ public:
        // 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
index b09499f..2fca773 100644 (file)
@@ -27,7 +27,6 @@
 #include <msg_types.h>
 
 #include <FBaseColIListT.h>
-#include "FUi.h"
 #include "MsgTypes.h"
 
 class CbReceiveSettings;
@@ -69,7 +68,7 @@ public:
        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);
+       result DeleteFilter(Tizen::Base::Collection::IListT<int>* pDeleteIdList, int filterType, IDeleteEventListener* pDeleteListener = null);
 
        // For Cell broadcast Messages
        CbReceiveSettings* GetCbSettings(void);
@@ -104,8 +103,8 @@ private:
        CbReceiveSettings* __pCbSettings;
        FontSettings* __pFontSettings;
        Tizen::Base::Runtime::Thread* __pDeleteFilterThread;
-       Tizen::Base::Collection::IListT< int >* __pDeleteFilterIndexList;
-       Tizen::Ui::Control* __pDeleteFilterListener;
+       Tizen::Base::Collection::IListT<int>* __pDeleteFilterIndexList;
+       IDeleteEventListener* __pDeleteFilterListener;
        int __filterType;
 };
 
index 218f0ff..3da25ec 100644 (file)
@@ -96,8 +96,8 @@ private:
 \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
+       Tizen::Base::Collection::ArrayListT<int>* __pBlockWordFilterIndex;\r
+       Tizen::Base::Collection::ArrayListT<int>* __pNumberFilterIndex;\r
 \r
 };\r
 \r
index 253f11d..3ba6cd0 100644 (file)
 #ifndef _MSG_SPAM_RESTORE_HANDLER_H_
 #define _MSG_SPAM_RESTORE_HANDLER_H_
 
+class IRestoreEventListener;
 
-#include <FBaseRtThread.h>
-#include "FUi.h"
+#include <FBase.h>
 
 class SpamRestoreHandler
-       : public Tizen::Base::Runtime::Thread
+       : public Tizen::Base::Object
+       , public Tizen::Base::Runtime::IRunnable
 {
 public:
-               SpamRestoreHandler(Tizen::Base::Collection::ArrayListT<int>* pSelectedIds, Tizen::Ui::Control* parentCtl);
-               ~SpamRestoreHandler(void);
-               result Construct(void);
+       /**
+        *  Constructor.
+        */
+       SpamRestoreHandler(IRestoreEventListener* pRestoreListener);
+
+       /**
+        * Destructor
+        */
+       virtual ~SpamRestoreHandler(void);
+
+       /**
+        *  2nd phase constructor.
+        */
+       result Construct(Tizen::Base::Collection::IListT<int>* pSelectedIds);
+
+       /**
+        *  Start delete operation
+        */
+       void Start(void);
+
+       /**
+        * Cancel delete operation
+        */
+       void Cancel(void);
+
 private:
-               virtual Tizen::Base::Object* Run(void);
+       // Form IRunnable;
+       virtual Tizen::Base::Object* Run(void);
+       //! To prevent copy constructor and assignment
+       SpamRestoreHandler(const SpamRestoreHandler& rhs);
+       SpamRestoreHandler& operator =(const SpamRestoreHandler& rhs);
+
 private:
-               Tizen::Ui::Control* __parentCtrl;
-               Tizen::Base::Collection::ArrayListT<int>* __pselectedIds;
+       IRestoreEventListener* __pRestoreListener; //! To give async update
+       Tizen::Base::Runtime::Thread* __pRestoreThread; //! Restore Worker thread
+       Tizen::Base::Collection::ArrayListT<int>* __pselectedIds; // ! List Message id to be restored
 };
 
 #endif // _MSG_SPAM_RESTORE_HANDLER_H_
index baa3932..d2dfa2c 100644 (file)
@@ -112,7 +112,7 @@ protected:
        // From IMsgDeleteEventListener\r
        void OnDeleteStart(int totalCount);\r
        void OnDeleteUpdate(int deleteCount, int totalCount);\r
-       void OnDeleteComplete(int errCode, Tizen::Base::Object* pThreadObject);\r
+       void OnDeleteComplete(int errCode, Tizen::Base::Object* pDeleteHandler);\r
 \r
 private:\r
        Tizen::Ui::Controls::TableViewItem* CreateMatchCriteriaSettingItemsN(int groupIndex, int itemIndex, int itemWidth);\r
@@ -136,7 +136,7 @@ private:
        void DeleteSelectedSpamFilters(void);\r
        void SelectContact(void);\r
        void ShowConfirmationPopup(void);\r
-       void SaveSpamFilter(SpamFiterType filterType);\r
+       void SaveSpamFilter(SpamFilterType filterType);\r
        void UpdateMatchCriteriaSettingItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pViewItem);\r
        void LoadCurrentSettings(void);\r
 \r
@@ -147,7 +147,7 @@ private:
        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::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
index ecf1b25..5d74b8a 100644 (file)
@@ -27,6 +27,7 @@
 \r
 class SubjectControl\r
        : public ComposeBaseControl\r
+       , public Tizen::Ui::IActionEventListener\r
        , public Tizen::Ui::IFocusEventListener\r
 {\r
 public:\r
@@ -35,7 +36,7 @@ public:
        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 SetActionEventListener(Tizen::Ui::IActionEventListener& listener);\r
        void AddTextEventListener(Tizen::Ui::ITextEventListener& listener);\r
        void SetDeleteActionId(int actionId);\r
        result ShowKeypad(bool visible);\r
@@ -44,6 +45,8 @@ public:
        result SetText(const Tizen::Base::String& strText);\r
        Tizen::Base::String GetText(void) const;\r
 \r
+       // Form IActionEventListener\r
+       virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);\r
        // Form IFocusEventListener\r
        virtual void OnFocusGained(const Tizen::Ui::Control& source);\r
        virtual void OnFocusLost(const Tizen::Ui::Control& source);\r
@@ -59,6 +62,8 @@ private:
        Tizen::Ui::Controls::EditField* __pEditArea;\r
        Tizen::Ui::Controls::Button* __pDeleteButton;\r
        Tizen::Graphics::Bitmap* __pBgBitmap;\r
+       Tizen::Ui::IActionEventListener* __pActionEventListener;\r
+       int __deleteActionId;\r
 };\r
 \r
 \r
diff --git a/inc/MsgTVBubbleListItem.h b/inc/MsgTVBubbleListItem.h
new file mode 100644 (file)
index 0000000..a35d70b
--- /dev/null
@@ -0,0 +1,141 @@
+//
+// 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               MsgTVBubbleListItem.h
+ * @brief              This is the header file for the %TVBubbleListItem class.
+ *
+ * This header file contains the declarations of the %TVBubbleListItem class.
+ */
+#ifndef _MSG_TV_BUBBLE_LIST_ITEM_H_
+#define _MSG_TV_BUBBLE_LIST_ITEM_H_
+
+#include <FUiCtrlTableViewItem.h>
+
+class AttachItemCntl;
+class ConversationData;
+class FontSettings;
+class MultiLineTextItemCntl;
+class ProgressCntl;
+
+enum MsgStatus
+{
+       MSG_STATUS_RECEIVE,
+       MSG_STATUS_SENDING,
+       MSG_STATUS_SENT,
+       MSG_STATUS_FAIL,
+       MSG_STATUS_DRAFT
+};
+
+/**
+ * @class              TVBubbleListItem
+ *
+ * This class MsgTVBubbleListItem display text in bubble layout.
+ */
+
+class TVBubbleListItem
+       : public Tizen::Ui::Controls::TableViewItem
+       , public Tizen::Base::Runtime::ITimerEventListener
+       , public Tizen::Ui::ITouchEventListener
+{
+public:
+       enum BubbleItemId
+       {
+               BUBBLE_ITEM_INVALID,
+               BUBBLE_ITEM,
+               BUBBLE_ITEM_TEXT,
+               BUBBLE_ITEM_DATE,
+               BUBBLE_ITEM_SENDING_STATUS,
+               BUBBLE_ITEM_FAIL_STATUS,
+               BUBBLE_ITEM_UNREAD_STATUS,
+               BUBBLE_ITEM_ATTACHMENT_NAME,
+               BUBBLE_ITEM_ATTACHMENT_COUNT,
+               BUBBLE_ITEM_THUMBNAIL_IMAGE,
+               BUBBLE_ITEM_DETAILS,
+               BUBBLE_ITEM_PLAY_AUDIO,
+               BUBBLE_ITEM_VIEW_IMAGE,
+               BUBBLE_ITEM_PLAY_VIDEO,
+               BUBBLE_ITEM_ATTACHMENT,
+       };
+
+public:
+       /**
+        * One argument constructor for this class.
+        *
+        * @param   width       Maximum width of this list item.
+        *
+        */
+       TVBubbleListItem(ConversationData& convData, int width, FontSettings& fontSettings, bool editMode);
+
+       /**
+        * Default Destructor for this class
+        */
+       ~TVBubbleListItem(void);
+
+       /**
+        * Prepare layout based on content, this should be call after setting list item data.
+        *
+        * @param       showAnimation  - Indicate current bubble message need to show prgress animation.
+
+        * @return      void
+        */
+       void CreateBubbleLayout(bool showAnimation = true);
+       int GetSelectedElementId(void) const;
+       bool IsLongPressed(void) const;
+
+       //From ITouchEventListener
+       virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+       virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+       virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};
+       virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};
+       virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){};
+       // Form ITimerEventListener;
+       virtual void OnTimerExpired(Tizen::Base::Runtime::Timer& timer);
+
+private:
+       /**
+        * Create time stamp for this bubble message.
+        *
+        * @param  timeStamp    - Time stamp of the bubble.
+        */
+       MultiLineTextItemCntl* CreateTimeStampElementN(void);
+
+       /**
+        * Create content element for message body.
+        */
+       MultiLineTextItemCntl* CreateContentElementN(void);
+
+       //! Empty copy constructor
+       TVBubbleListItem(const TVBubbleListItem& rhs);
+       //! Empty assignment operator.
+       TVBubbleListItem& operator =(const TVBubbleListItem& rhs);
+
+private:
+       ConversationData& __convData;
+       int __leftMargin;
+       int __rightMargin;
+       int __topMargin;
+       int __bottomMargin;
+       int __Width;
+       bool __editMode;
+       FontSettings& __fontSettings;
+       Tizen::Base::Runtime::Timer* __pLongPressTimer; // Own
+       int __selectBubbleItemId;
+       bool __isLongPressed;
+};
+
+
+#endif //_MSG_TV_BUBBLE_LIST_ITEM_H_
index e6acea7..07989b2 100644 (file)
@@ -63,6 +63,7 @@ public:
        const Tizen::Base::String& GetGroupName(void) const;\r
        const int GetDraftMessageCount(void) const;\r
        DataType GetDataType(void);\r
+       int GetSendReceiveCount(void) const;\r
 \r
 private:\r
        result InitThreadName(msg_struct_t pThreadInfo);\r
@@ -84,6 +85,7 @@ private:
        Tizen::Base::String __timeStamp;\r
        Tizen::Base::String __groupName;\r
        int __draftMsgCount;\r
+       int __sendReceiveCount;\r
 };\r
 \r
 \r
index 87104c8..ca961f9 100644 (file)
@@ -33,6 +33,7 @@
 #include "MsgBaseForm.h"\r
 #include "MsgIDeleteEventListener.h"\r
 #include "MsgIPopupEventListener.h"\r
+#include "MsgIRestoreEventListener.h"\r
 #include "MsgIThreadEventListener.h"\r
 #include "MsgTypes.h"\r
 \r
@@ -71,6 +72,7 @@ class ThreadListForm
        , public Tizen::Ui::Scenes::ISceneEventListener\r
        , public IDeleteEventListener\r
        , public IPopupEventListener\r
+       , public IRestoreEventListener\r
        , public IThreadEventListener\r
 {\r
 public:\r
@@ -146,6 +148,11 @@ protected:
        void OnFormBackRequested(Tizen::Ui::Controls::Form& source);\r
        void OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs);\r
 \r
+       // Form IRestoreEventListener\r
+       virtual void OnRestoreStart(int totalCount);\r
+       virtual void OnRestoreUpdate(int restoreCount, int totalCount);\r
+       virtual void OnRestoreComplete(int errCode, Tizen::Base::Object* pRestoreHandler);\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
@@ -200,12 +207,6 @@ private:
         * 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
@@ -214,7 +215,7 @@ private:
        /**\r
         * Add thread list list box control.\r
         */\r
-       result AddListBox(void);\r
+       result AddGroupListView(void);\r
 \r
        /**\r
         *  Create list context menu, display this menu when list item swipe.\r
@@ -303,10 +304,8 @@ private:
        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
+       Tizen::Base::Collection::ArrayListT<int>* __pSelectedIds;\r
        MsgProgressPopup* __pProgressPopup;\r
        Tizen::Ui::Controls::ContextMenu* __pContextMenu;\r
        Tizen::Ui::Controls::Popup* __pDeletePopup;\r
@@ -318,7 +317,6 @@ private:
        Tizen::Ui::Controls::ListContextItem* __pItemContextUnblock;\r
        int __blockGroupIndex;\r
        int __blockItemIndex;\r
-       Tizen::Base::String __stringTitle;\r
 };\r
 \r
 \r
diff --git a/inc/MsgTokenOptionPopup.h b/inc/MsgTokenOptionPopup.h
new file mode 100644 (file)
index 0000000..9e649f4
--- /dev/null
@@ -0,0 +1,66 @@
+//
+// 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               MsgTokenOptionPopup.h
+ * @brief              This is the header file for the %TokenOptionPopup class.
+ *
+ * This header file contains the declarations of the %TokenOptionPopup class.
+ */
+#ifndef _MSG_TOKEN_OPTION_POPUP_H_
+#define _MSG_TOKEN_OPTION_POPUP_H_
+
+#include <FUiIActionEventListener.h>
+#include <FUiCtrlButton.h>
+#include <FUiCtrlIListViewItemEventListener.h>
+#include <FUiCtrlIListViewItemProvider.h>
+
+#include "MsgBaseCustomPopup.h"
+
+class AddressInfo;
+
+class TokenOptionPopup
+       : public BaseCustomPopup
+       , public Tizen::Ui::IActionEventListener
+       , public Tizen::Ui::Controls::IListViewItemEventListener
+       , public Tizen::Ui::Controls::IListViewItemProvider
+{
+
+public:
+               TokenOptionPopup(Tizen::Ui::Control& parent);
+       virtual ~TokenOptionPopup(void);
+       result Construct(AddressInfo* pRecipient);
+       // 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);
+       // From IActionEventListener
+       virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+
+private:
+
+       Tizen::Ui::Control& __parentCntl;
+       Tizen::Base::Collection::ArrayList* __pOptionList;
+       Tizen::Ui::Controls::ListView* __pOptionListView;
+       Tizen::Ui::Controls::Button* __pCloseButton;
+};
+
+#endif
index d6fc2bb..c019427 100644 (file)
@@ -29,7 +29,7 @@ class Color;
 }};
 
 // To block MMS functionality, Will remove in final released along with this macro
-#define _DISABLE_MMS_FEATURE_
+//#define _DISABLE_MMS_FEATURE_
 
 enum MessageIconType
 {
@@ -88,6 +88,8 @@ enum MessageIconType
        MSG_ICON_BACK_PRESSED,
        MSG_ICON_HEADER_BACK,
        MSG_ICON_HEADER_BACK_PRESSED,
+       MSG_ICON_SELECT_ALL,
+       MSG_ICON_SELECT_ALL_PRESSED,
        MSG_ICON_CALL,
        MSG_ICON_CANCEL,
        MSG_ICON_BUBBLE_RECEIVE_BG,
@@ -129,6 +131,7 @@ enum MessageIconType
        MSG_ICON_BUTTON_PANEL_BG,
        MSG_ICON_SMIL_DELETE,
        MSG_ICON_SAVE_ATTACHMENT,
+       MSG_ICON_SAVE_ATTACHMENT_PRESSED,
        MSG_ICON_SMIL_VOLUME,
        MSG_ICON_SMIL_PLAY,
        MSG_ICON_SMIL_PAUSE,
@@ -145,6 +148,15 @@ enum MessageIconType
        MSG_ICON_PHOTO_DELETE,
        MSG_ICON_PHOTO_DELETE_PRESS,
        MSG_ICON_REPLY,
+       MSG_ICON_PLAY,
+       MSG_ICON_PLAY_PRESS,
+       MSG_ICON_VIDEO_PLAY,
+       MSG_ICON_VIDEO_PLAY_PRESS,
+       MSG_ICON_SEARCH,
+       MSG_ICON_SEARCH_PRESS,
+       //Adding drop down button:
+       MSG_ICON_SIP_CLOSE,
+       MSG_ICON_SIP_CLOSE_PRESS,
 };
 
 enum MsgControlIds
@@ -205,6 +217,7 @@ enum MsgActionIds
        IDA_VOICE_CALL_CMD,
        IDA_VIDEO_CALL_CMD,
        IDA_VIEW_CONTACT,
+       IDA_SELECT_ALL,
        IDA_SELECT_ALL_ON,
        IDA_SELECT_ALL_OFF,
        IDA_PROTECTED_MESSAGES_CMD,
@@ -310,8 +323,10 @@ enum MsgActionIds
        IDA_RESEND_MESSAGE,
        IDA_COPY_MESSAGE_TEXT,
        IDA_MORE,
+       IDA_ADD_SUBJECT,
        IDA_PREVIEW,
        IDA_PAGE_DURATION,
+       IDA_BUTTON_DROP_DOWN,
        IDA_MMSDETAIL_FORM_HEADER_TITLEITEM,
        IDA_VOLUME,
        IDA_PREVIOUS,
@@ -358,7 +373,7 @@ enum RequestType
        REQUEST_EDIT_VIEW,
        // MMS Compose add element request
        REQUEST_ADD_SUBJECT,
-       REQUEST_OPEN_GALLARY,
+       REQUEST_OPEN_GALLERY,
        REQUEST_TAKE_PICTURE,
        REQUEST_CAPTURE_VIDEO,
        REQUEST_RECORD_AUDIO,
@@ -370,22 +385,41 @@ enum RequestType
        REQUEST_SHOW_COMPOSE_INFO,
        REQUEST_IMAGE_RESIZE_RESPONSE,
        REQUEST_DESTROY_ATTACH_POPUP,
+       REQUEST_DESTROY_TOKEN_OPTION_POPUP,
        REQUEST_SAVE_MESSAGE_ATTACHMENTS,
-       REQUEST_OPTION_POPUP,
+       REQUEST_SHOW_OPTION_POPUP,
+       REQUEST_DESTROY_OPTION_POPUP,
        REQUEST_DESTROY_SAVE_ATTACHMENT_POPUP,
        REQUEST_DESTROY_DURATION_POPUP,
        REQUEST_SHOW_MESSAGE,
        REQUEST_SET_FOCUS_RECIPIENT,
+       REQUEST_SHOW_TOKEN_POPUP,
+       REQUEST_EDIT_TOKEN,
+       REQUEST_DELETE_TOKEN,
+       REQUEST_ADD_VIEW_CONTACT,
        REQUEST_DELETE_START,
        REQUEST_DELETE_UPDATE,
        REQUEST_DELETE_COMPLETE,
        REQUEST_ENABLE_DISABLE_SEND_BUTTON,
        REQUEST_CLOSE_POPUP,
        REQUEST_MOVE_FOCUS_RECIPIENT,
-       REQUEST_UDATE_FOCUS,
+       REQUEST_UPDATE_FOCUS,
+       REQUEST_UPDATE_CONV_LIST,
+       REQUEST_PAUSE_PREVIEW_VIEWER,
+       REQUEST_SHOW_IMAGE,
+       REQUEST_PLAY_AUDIO,
+       REQUEST_PLAY_VIDEO,
+       REQUEST_SHOW_RESEND_DELETE_POPUP,
+       REQUEST_DESTROY_RESEND_DELETE_POPUP,
+       REQUEST_RESTORE_START,
+       REQUEST_RESTORE_UPDATE,
+       REQUEST_RESTORE_COMPLETE,
+       REQUEST_SHOW_PROGRESS_POPUP,
+       REQUEST_UPDATE_PROGRESS_POPUP,
+       REQUEST_DESTROY_PROGRESS_POPUP,
 };
 
-enum SpamFiterType
+enum SpamFilterType
 {
        SPAM_FILTER_TYPE_BLOCK_WORD,
        SPAM_FILTER_TYPE_BLOCK_NUMBER
@@ -525,6 +559,7 @@ extern const int MAX_LENGTH;
 
 //Panel
 extern const int PANEL_HEIGHT;
+extern const int CLIPBOARD_HEIGHT_OFFSET;
 
 //Label
 extern const int H_MSG_DETAILS_LABEL;
@@ -717,6 +752,13 @@ 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;
+// Control IDS
+extern const wchar_t* IDC_BUTTON_VIEW_IMAGE;
+extern const wchar_t* IDC_BUTTON_PLAY_AUDIO;
+extern const wchar_t* IDC_BUTTON_VIDEO_THUMBNAIL;
+extern const wchar_t* IDC_BUTTON_PLAY_VIDEO;
+extern const wchar_t* IDC_BUTTON_ATTACH_COUNT;
+extern const wchar_t* IDC_BUTTON_ATTACHMENT;
 
 extern const wchar_t* IDS_SETTING_FONT_TYPE;
 extern const wchar_t* IDS_SETTING_VOLUME_KEY;
@@ -746,6 +788,7 @@ 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_KEY_VOLUME_LEVEL;
 extern const wchar_t* IDS_MESSAGING;
 extern const wchar_t* IDS_MESSAGES;
 extern const wchar_t* IDS_FONT_HELVETICA_NEUE;
index 773e297..6e194eb 100644 (file)
         <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>
+        <Feature Name="http://tizen.org/feature/platform.core.cpu.arch.x86">true</Feature>
+        <Feature Name="http://tizen.org/feature/platform.core.fpu.arch.vfpv3">true</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/application.launch</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>
+            <Privilege>http://tizen.org/privilege/systeminfo</Privilege>
         </Privileges>
         <UiApp Main="True" MenuIconVisible="True" Name="Messages" SubMode="True">
             <UiScalability BaseScreenSize="Normal" CoordinateSystem="Logical" LogicalCoordinate="720"/>
diff --git a/res/screen-density-xhigh/00_Video_play.png b/res/screen-density-xhigh/00_Video_play.png
new file mode 100644 (file)
index 0000000..01c534d
Binary files /dev/null and b/res/screen-density-xhigh/00_Video_play.png differ
similarity index 68%
rename from res/screen-density-xhigh/M01_controlbar_icon_attach.png
rename to res/screen-density-xhigh/00_icon_select_all.#.png
index 67959f0..5e4fe5f 100644 (file)
Binary files a/res/screen-density-xhigh/M01_controlbar_icon_attach.png and b/res/screen-density-xhigh/00_icon_select_all.#.png differ
diff --git a/res/screen-density-xhigh/00_icon_select_all_ef.#.png b/res/screen-density-xhigh/00_icon_select_all_ef.#.png
new file mode 100644 (file)
index 0000000..dbd57a3
Binary files /dev/null and b/res/screen-density-xhigh/00_icon_select_all_ef.#.png differ
diff --git a/res/screen-density-xhigh/M01_Play_btn__play.png b/res/screen-density-xhigh/M01_Play_btn__play.png
new file mode 100644 (file)
index 0000000..0c342bc
Binary files /dev/null and b/res/screen-density-xhigh/M01_Play_btn__play.png differ
diff --git a/res/screen-density-xhigh/M01_Play_btn_next.png b/res/screen-density-xhigh/M01_Play_btn_next.png
new file mode 100644 (file)
index 0000000..74bf260
Binary files /dev/null and b/res/screen-density-xhigh/M01_Play_btn_next.png differ
diff --git a/res/screen-density-xhigh/M01_Play_btn_pause.png b/res/screen-density-xhigh/M01_Play_btn_pause.png
new file mode 100644 (file)
index 0000000..5e0080a
Binary files /dev/null and b/res/screen-density-xhigh/M01_Play_btn_pause.png differ
diff --git a/res/screen-density-xhigh/M01_Play_btn_previous.png b/res/screen-density-xhigh/M01_Play_btn_previous.png
new file mode 100644 (file)
index 0000000..4571a88
Binary files /dev/null and b/res/screen-density-xhigh/M01_Play_btn_previous.png differ
diff --git a/res/screen-density-xhigh/M01_Play_btn_stop.png b/res/screen-density-xhigh/M01_Play_btn_stop.png
new file mode 100644 (file)
index 0000000..a8636a4
Binary files /dev/null and b/res/screen-density-xhigh/M01_Play_btn_stop.png differ
diff --git a/res/screen-density-xhigh/M01_controller_icon_volume.png b/res/screen-density-xhigh/M01_controller_icon_volume.png
new file mode 100644 (file)
index 0000000..7833ab5
Binary files /dev/null and b/res/screen-density-xhigh/M01_controller_icon_volume.png differ
index 12a5b06..0bf94dd 100644 (file)
Binary files a/res/screen-density-xhigh/M01_icon_contact_info.png and b/res/screen-density-xhigh/M01_icon_contact_info.png differ
diff --git a/res/screen-density-xhigh/M01_icon_play.png b/res/screen-density-xhigh/M01_icon_play.png
new file mode 100644 (file)
index 0000000..780dd35
Binary files /dev/null and b/res/screen-density-xhigh/M01_icon_play.png differ
index 4bcf587..3384bbe 100644 (file)
Binary files a/res/screen-density-xhigh/M01_icon_save.png and b/res/screen-density-xhigh/M01_icon_save.png differ
diff --git a/res/screen-density-xhigh/M01_input_close.png b/res/screen-density-xhigh/M01_input_close.png
new file mode 100644 (file)
index 0000000..ba334a9
Binary files /dev/null and b/res/screen-density-xhigh/M01_input_close.png differ
diff --git a/res/screen-density-xhigh/M01_title_icon_attach_press_web.png b/res/screen-density-xhigh/M01_title_icon_attach_press_web.png
new file mode 100644 (file)
index 0000000..86240a3
Binary files /dev/null and b/res/screen-density-xhigh/M01_title_icon_attach_press_web.png differ
diff --git a/res/screen-density-xhigh/M01_title_icon_attach_web.png b/res/screen-density-xhigh/M01_title_icon_attach_web.png
new file mode 100644 (file)
index 0000000..868cea6
Binary files /dev/null and b/res/screen-density-xhigh/M01_title_icon_attach_web.png differ
index 81012be..061db8a 100644 (file)
         <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
+        <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.#.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.#.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="10" y="136"/>\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="10" y="136"/>\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
+        <property disableTextColor="" disabledBitmapPath="00_button_popup_dim.9.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="00_button_popup_normal.#.png" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.#.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.#.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="345" y="136"/>\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="345" y="136"/>\r
     </Button>\r
 </ScenePopup>\r
index c04d328..14ce8ef 100644 (file)
@@ -15,8 +15,8 @@
         <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
+        <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.#.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.#.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="136"/>\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="136"/>\r
     </Button>\r
 </ScenePopup>\r
index 98ce73d..7a66b8d 100644 (file)
         <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"/>
+        <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.#.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.#.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="196"/>
+        <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="198"/>
     </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"/>
+        <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.#.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.#.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="196"/>
+        <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="198"/>
     </Button>
 </ScenePopup>
index 38ede8c..76a5b01 100644 (file)
         <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
+        <property disableTextColor="" disabledBitmapPath="00_button_popup_dim.#.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.#.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.#.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="16" y="114"/>\r
+        <layout height="72" mode="Landscape" width="288" x="16" 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
+        <property disableTextColor="" disabledBitmapPath="00_button_popup_dim.#.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.#.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.#.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="376" y="114"/>\r
+        <layout height="72" mode="Landscape" width="288" x="376" 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
index 8404b8d..fa5511c 100644 (file)
         <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
+        <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.#.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.#.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
+        <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.#.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.#.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
index 8419564..9e1ef49 100644 (file)
@@ -3,7 +3,7 @@
        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">
+<Scene Bversion="2.0.0.201303041025" 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"/>
         <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>
+    <GroupedTableView id="IDC_CONV_GROUPEDTABLELIST" parent="IDL_CONVERSATION_LIST_EDIT_FORM">
+        <property backgroundColor="" backgroundColorOpacity="0" collapseByPinchEnabled="false" fastScrollIndex="" groupedLookEnabled="false" itemDivider="false" itemDividerColor="" scrollBarStyle="TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT" scrollInputMode="SCROLL_INPUT_MODE_ALLOW_ANY_DIRECTION" useSearchIcon="false"/>
+        <layout bottomRelation="IDC_CONV_EDIT_LABEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_TOP" centerHorizontal="false" centerVertical="false" height="962" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_CHECKALL_BUTTON" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="-1"/>
+        <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="547" x="732" y="165"/>
+    </GroupedTableView>
 </Scene>
index 6668eb5..6a5dfd7 100644 (file)
@@ -3,7 +3,7 @@
        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">
+<Scene Bversion="2.0.0.201302151552" 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"/>
@@ -18,9 +18,9 @@
         <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>
+    <GroupedTableView id="IDC_CONV_GROUPEDTABLELIST" parent="IDL_CONVERSATION_LIST_FORM">
+        <property backgroundColor="" backgroundColorOpacity="0" collapseByPinchEnabled="false" fastScrollIndex="" groupedLookEnabled="false" itemDivider="false" itemDividerColor="" scrollBarStyle="TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT" scrollInputMode="SCROLL_INPUT_MODE_ALLOW_ANY_DIRECTION" useSearchIcon="false"/>
+        <layout bottomRelation="" bottomRelationType="" 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="None" 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="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="730" x="480" y="35"/>
+    </GroupedTableView>
 </Scene>
index 481b2a1..661eacf 100644 (file)
@@ -1,27 +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
+<?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="2.0.0.201303041025" Dversion="20120315">
+    <Popup id="IDL_DELETE_POPUP">
+        <property color="" titleText="" titleTextColor=""/>
+        <layout height="214" mode="Portrait" style="" type="NONE" width="720"/>
+        <layout height="214" mode="Landscape" style="" type="NONE" width="720"/>
+    </Popup>
+    <Label id="IDC_DELETE_LABEL" parent="IDL_DELETE_POPUP">
+        <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"/>
+        <layout height="62" mode="Portrait" width="648" x="0" y="18"/>
+        <layout height="62" mode="Landscape" width="648" x="0" y="18"/>
+    </Label>
+    <Button id="IDC_BUTTON_LEFT" parent="IDL_DELETE_POPUP">
+        <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBGBitmapPath="" disabledBitmapPath="00_button_popup_dim.9.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedBitmapPath="" highlightedBitmapX="0" highlightedBitmapY="0" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.#.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.#.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_COM_SK_OK" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+        <layout height="72" mode="Portrait" width="288" x="16" y="100"/>
+        <layout height="72" mode="Landscape" width="288" x="16" y="100"/>
+    </Button>
+    <Button id="IDC_BUTTON_RIGHT" parent="IDL_DELETE_POPUP">
+        <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBGBitmapPath="" disabledBitmapPath="00_button_popup_dim.9.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedBitmapPath="" highlightedBitmapX="0" highlightedBitmapY="0" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.#.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.#.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_COM_SK_CANCEL" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+        <layout height="72" mode="Portrait" width="288" x="376" y="100"/>
+        <layout height="72" mode="Landscape" width="288" x="376" y="100"/>
+    </Button>
+</ScenePopup>
index 813058f..0b3fe92 100644 (file)
     </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="true" centerVertical="false" height="101" 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="658" x="11" y="1"/>\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
+        <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBGBitmapPath="" disabledBitmapPath="00_button_popup_dim.9.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedBitmapPath="" highlightedBitmapX="0" highlightedBitmapY="0" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.#.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.#.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="16" 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="16" 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
+        <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBGBitmapPath="" disabledBitmapPath="00_button_popup_dim.9.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedBitmapPath="" highlightedBitmapX="0" highlightedBitmapY="0" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.#.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.#.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="350" 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="350" 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
+        <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="16" 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="16" y="102"/>\r
     </EditField>\r
 </ScenePopup>\r
index ff6d276..bcf31e4 100644 (file)
@@ -1,86 +1,93 @@
-<?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
+<?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="2.0.0.201303041025" Dversion="20120315">
+    <LogicalCoordinate>720</LogicalCoordinate>
+    <Form id="IDL_MMS_DETAIL_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="NONE"/>
+        <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="NONE"/>
+    </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>
+    <Panel id="IDC_PLAY_CONTROLS_PANEL" parent="IDL_MMS_DETAIL_FORM">
+        <property backgroundColor="#4D4D4D" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>
+        <layout height="216" mode="Portrait" type="NONE" width="720" x="0" y="788"/>
+        <layout height="46" mode="Landscape" type="NONE" width="533" x="90" y="418"/>
+    </Panel>
+    <Button id="IDC_VOLUME_BUTTON" parent="IDC_PLAY_CONTROLS_PANEL">
+        <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBGBitmapPath="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedBitmapPath="" highlightedBitmapX="0" highlightedBitmapY="0" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="M01_play_btn_volume_press.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="M01_play_btn_volume_press.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="20" verticalAlign="ALIGN_MIDDLE"/>
+        <layout height="74" mode="Portrait" width="74" x="32" y="120"/>
+        <layout height="356" mode="Landscape" width="78" x="4" y="0"/>
+    </Button>
+    <Button id="IDC_NEXT_BUTTON" parent="IDC_PLAY_CONTROLS_PANEL">
+        <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBGBitmapPath="" disabledBitmapPath="M01_play_btn_next_press.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedBitmapPath="" highlightedBitmapX="0" highlightedBitmapY="0" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="M01_play_btn_next_press.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="M01_play_btn_next_press.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+        <layout height="74" mode="Portrait" width="74" x="466" y="120"/>
+        <layout height="356" mode="Landscape" width="78" x="14" y="0"/>
+    </Button>
+    <Button id="IDC_PLAY_PAUSE_BUTTON" parent="IDC_PLAY_CONTROLS_PANEL">
+        <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBGBitmapPath="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedBitmapPath="" highlightedBitmapX="0" highlightedBitmapY="0" 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"/>
+        <layout height="74" mode="Portrait" width="74" x="322" y="120"/>
+        <layout height="356" mode="Landscape" width="78" x="14" y="0"/>
+    </Button>
+    <Button id="IDC_PREVIOUS_BUTTON" parent="IDC_PLAY_CONTROLS_PANEL">
+        <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBGBitmapPath="" disabledBitmapPath="M01_play_btn_previous_press.png" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedBitmapPath="" highlightedBitmapX="0" highlightedBitmapY="0" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="M01_play_btn_previous_press.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="M01_play_btn_previous_press.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+        <layout height="74" mode="Portrait" width="74" x="178" y="120"/>
+        <layout height="356" mode="Landscape" width="78" x="14" y="0"/>
+    </Button>
+    <Progress id="IDC_PROGRESS" parent="IDC_PLAY_CONTROLS_PANEL">
+        <property backgroundColor="" barColor="#FFFFFF" leftText="" max="20" min="0" rightText="" showValueState="true" value="0"/>
+        <layout height="28" mode="Portrait" style="PROGRESS_STYLE_NONE" width="486" x="119" y="50"/>
+        <layout height="356" mode="Landscape" style="PROGRESS_STYLE_NONE" width="144" x="39" y="0"/>
+    </Progress>
+    <Label id="IDC_TIME_ELAPSED_LABEL" parent="IDC_PLAY_CONTROLS_PANEL">
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="00:00" textColor="#FFFFFF" textSize="18" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+        <layout height="28" mode="Portrait" width="77" x="20" y="50"/>
+        <layout height="356" mode="Landscape" width="78" x="4" y="0"/>
+    </Label>
+    <Label id="IDC_TOTAL_TIME_DURATION_LABEL" parent="IDC_PLAY_CONTROLS_PANEL">
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="00:05" textColor="#FFFFFF" textSize="18" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+        <layout height="28" mode="Portrait" width="77" x="623" y="50"/>
+        <layout height="356" mode="Landscape" width="78" x="14" y="0"/>
+    </Label>
+    <Label id="IDC_PAGE_NUMBER_LABEL" parent="IDL_MMS_DETAIL_FORM">
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_RIGHT" text="" textColor="" textSize="29" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+        <layout height="56" mode="Portrait" width="155" x="564" y="5"/>
+        <layout height="52" mode="Landscape" width="533" x="236" y="0"/>
+    </Label>
+    <Label id="IDC_LABEL_SUBJECT" parent="IDL_MMS_DETAIL_FORM">
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="29" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+        <layout height="56" mode="Portrait" width="564" x="0" y="5"/>
+        <layout height="52" mode="Landscape" width="533" x="96" y="0"/>
+    </Label>
+    <Label id="IDC_ATTACH_FILES_INFO_LABEL" parent="IDL_MMS_DETAIL_FORM">
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="#1E90FF" textSize="29" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+        <layout height="64" mode="Portrait" width="688" x="16" y="82"/>
+        <layout height="52" mode="Landscape" width="533" x="248" y="0"/>
+    </Label>
+    <ScrollPanel id="IDC_SCROLLPANEL" parent="IDL_MMS_DETAIL_FORM">
+        <property autoResizingEnabled="true" backgroundColor="" backgroundColorOpacity="0" clientAreaHeight="0" clientAreaWidth="0" pageScrollEnabled="true" scrollBarVisible="true" scrollDirection="SCROLL_PANEL_SCROLL_DIRECTION_VERTICAL" scrollInputMode="SCROLL_INPUT_MODE_ALLOW_ANY_DIRECTION"/>
+        <panelLayout height="905" mode="Portrait" width="688"/>
+        <panelLayout height="152" mode="Landscape" width="533"/>
+        <layout height="905" mode="Portrait" type="NONE" width="688" x="16" y="82"/>
+        <layout height="52" mode="Landscape" type="NONE" width="533" x="42" y="370"/>
+    </ScrollPanel>
+    <TextBox id="IDC_MMS_TEXT" parent="IDC_SCROLLPANEL">
+        <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"/>
+        <layout height="193" mode="Portrait" width="688" x="0" y="0"/>
+        <layout height="538" mode="Landscape" width="115" x="18" y="0"/>
+    </TextBox>
+    <Gallery id="IDC_GALLERY_MMS_IMAGE" parent="IDC_SCROLLPANEL">
+        <property backgroundColor="" bitmapPathOfEmptyGallery="" slideShowAnimation="GALLERY_ANIMATION_PAGE" slideShowAnimationDuration="3000" slideShowViewDuration="10" textOfEmptyGallery="" zoomingEnabled="true"/>
+        <layout height="438" mode="Portrait" width="688" x="0" y="0"/>
+        <layout height="466" mode="Landscape" width="115" x="14" y="0"/>
+    </Gallery>
+</Scene>
index f5059bb..bda63e3 100644 (file)
@@ -10,7 +10,7 @@
         <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
+        <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.#.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.#.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
index 0a35caf..b8fd458 100644 (file)
@@ -25,7 +25,7 @@
         <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
+        <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.#.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.#.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
index 171dab8..9004365 100644 (file)
@@ -15,7 +15,7 @@
         <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
+        <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.#.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.#.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
index e07b38c..456dc1f 100644 (file)
@@ -15,7 +15,7 @@
         <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
+        <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="00_button_popup_normal.#.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.#.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
index dcb0d45..bc5bfc4 100644 (file)
     </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
+        <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="16" 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="16" 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
+        <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="16" 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="16" 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
+        <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.#.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.#.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="196" 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="196" 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
deleted file mode 100644 (file)
index e99a4d1..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<?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
index a3f7b5f..2381734 100644 (file)
@@ -15,7 +15,7 @@
         <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
+        <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.#.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="00_button_popup_press.#.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
index f9813e8..e6e5a2b 100644 (file)
@@ -3,7 +3,7 @@
        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">
+<ScenePanel Bversion="2.0.0.201302151552" 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"/>
@@ -20,7 +20,7 @@
         <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"/>
+        <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="" textColor="" textSize="25" 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>
index d73340d..df4d394 100644 (file)
@@ -3,7 +3,7 @@
        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">
+<Scene Bversion="2.0.0.201303041025" 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"/>
         <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"/>
+        <property backgroundColor="" backgroundColorOpacity="0" collapseByPinchEnabled="false" fastScrollIndex="" groupedLookEnabled="false" itemDivider="true" itemDividerColor="" scrollBarStyle="TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT" 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="967" 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="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="467" y="123"/>
     </GroupedTableView>
 </Scene>
index cc094af..c9166b6 100644 (file)
@@ -3,7 +3,7 @@
        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">
+<Scene Bversion="2.0.0.201303041025" 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 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="IDC_THREAD_EDIT_LABEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_TOP" centerHorizontal="false" centerVertical="false" height="966" 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="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="CUSTOM_LIST_STYLE_NORMAL" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="741" x="506" y="77"/>
     </GroupedListView>
 </Scene>
index feb5881..94b5b4f 100644 (file)
         <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"/>
+        <property backgroundBitmapPath="" buttonActionId="0" buttonText="" color="" colorOpacity="100" disabledButtonColor="" disabledButtonTextColor="" disabledSearchFieldColor="" disabledSearchFieldTextColor="" ellipsisPosition="ELLIPSIS_POSITION_END" guideText="::IDS_COM_SK_SEARCH" 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="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="None" topRelationType="" 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>
index a78b473..5066c1c 100644 (file)
     </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
+        <layout height="110" mode="Portrait" width="720" x="0" y="18"/>\r
+        <layout height="110" mode="Landscape" width="720" 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
+        <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.#.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="64" mode="Portrait" width="288" x="180" y="142"/>\r
+        <layout height="64" mode="Landscape" width="288" x="180" y="142"/>\r
     </Button>\r
 </ScenePopup>\r
index a1cd436..5038668 100644 (file)
@@ -1,22 +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 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
+<?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="2.0.0.201302151552" Dversion="20120315">
+    <Popup id="IDL_VOLUME_POPUP">
+        <property color="" titleText="::IDS_COM_BODY_SETTINGS" titleTextColor=""/>
+        <layout height="263" mode="Portrait" style="" type="NONE" width="720"/>
+        <layout height="263" mode="Landscape" style="" type="NONE" width="720"/>
+    </Popup>
+    <Slider id="IDC_MEDIA_VOLUME_SLIDER" parent="IDL_VOLUME_POPUP">
+        <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" titleText="" value="4"/>
+        <layout height="134" mode="Portrait" width="647" x="16" y="11"/>
+        <layout height="134" mode="Landscape" width="648" x="16" y="14"/>
+    </Slider>
+</ScenePopup>
diff --git a/src/MsgAttachItemCntl.cpp b/src/MsgAttachItemCntl.cpp
new file mode 100644 (file)
index 0000000..fa98be2
--- /dev/null
@@ -0,0 +1,310 @@
+//
+// 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 <FGrpEnrichedText.h>
+
+#include "MsgAttachItemCntl.h"
+#include "MsgBitmapUtility.h"
+#include "MsgTypes.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+
+AttachItemCntl::AttachItemCntl(AttachmentType attachmentType, const Bitmap* pAttachIcon)
+       : __attachMentType(attachmentType)
+       , __pNormalAttachIcon(pAttachIcon)
+       , __pPressedAttachIcon(null)
+       , __pEnrichedText(null)
+{
+       //Empty implementation
+}
+
+AttachItemCntl::~AttachItemCntl(void)
+{
+       //Empty implementation
+       if (__pEnrichedText)
+       {
+               __pEnrichedText->RemoveAll(true);
+               delete __pEnrichedText;
+       }
+}
+
+result
+AttachItemCntl::Construct(int maxWidth)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       __maxWidth = maxWidth;
+       r = Container::Construct();
+       InitializeAttachUi();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+result
+AttachItemCntl::OnDraw(void)
+{
+       AppLogDebug("ENTER");
+       //__pAttachIconButton->Invalidate(true);
+       result r = E_SUCCESS;
+       Rectangle rect = GetBounds();
+       rect.x = 0;
+       rect.y = 0;
+       Canvas* pCanvas = GetCanvasN();
+       if (pCanvas)
+       {
+               // Make it transparent
+               pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
+               pCanvas->Clear();
+               // Draw Icon
+               int xPos(rect.x);
+               int yPos;
+               if (__pNormalAttachIcon)
+               {
+                       xPos += __pNormalAttachIcon->GetWidth() + MARGIN_5PX;
+               }
+               // Draw text
+               if (__pEnrichedText)
+               {
+                       __pEnrichedText->SetSize(GetMimimumWidth(), __pEnrichedText->GetTotalLineHeight());
+                       yPos = rect.y + (rect.height - __pEnrichedText->GetHeight()) / 2;
+                       r |= pCanvas->DrawText(Point(xPos, yPos), *__pEnrichedText);
+               }
+               delete pCanvas;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+void
+AttachItemCntl::InitializeAttachUi(void)
+{
+       AppLogDebug("ENTER");
+
+       // Create attachement icon button
+       __pAttachIconButton = new (std::nothrow) Button();
+       __pAttachIconButton->Construct(Rectangle(0, 0, W_ICON_64PX, H_ICON_64PX));
+       __pAttachIconButton->SetName(GetAttachIconName());
+       switch (__attachMentType)
+       {
+       case ATTACHMENT_TYPE_ATTACH_COUNT:
+       case ATTACHMENT_TYPE_OTHERS:
+       {
+               if (!__pNormalAttachIcon)
+               {
+                       __pNormalAttachIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_ATTACHEMENT);
+               }
+               if (!__pPressedAttachIcon)
+               {
+                       __pPressedAttachIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_ATTACHEMENT);
+               }
+       }
+       break;
+
+       case ATTACHMENT_TYPE_AUDIO:
+       {
+               if (!__pNormalAttachIcon)
+               {
+                       __pNormalAttachIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_PLAY, Dimension(W_ICON_64PX, H_ICON_64PX));
+               }
+               if (!__pPressedAttachIcon)
+               {
+                       __pPressedAttachIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_PLAY_PRESS, Dimension(W_ICON_64PX, H_ICON_64PX));
+               }
+       }
+       break;
+
+       case ATTACHMENT_TYPE_IMAGE:
+       case ATTACHMENT_TYPE_VIDEO:
+       {
+               __pPressedAttachIcon = __pNormalAttachIcon;
+       }
+       break;
+
+       }
+       // Load default image size.
+       Dimension iconSize;
+       iconSize.width = __pNormalAttachIcon->GetWidth();
+       iconSize.height = __pNormalAttachIcon->GetHeight();
+       __pAttachIconButton->SetBounds(Rectangle(0, 0, iconSize.width, iconSize.height));
+       __pAttachIconButton->SetNormalBackgroundBitmap(*__pNormalAttachIcon);
+       __pAttachIconButton->SetPressedBackgroundBitmap(*__pPressedAttachIcon);
+       AddControl(*__pAttachIconButton);
+       // For Video file need to add play icon.
+       if (__attachMentType == ATTACHMENT_TYPE_VIDEO)
+       {
+               Bitmap* pVideoPlayIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_VIDEO_PLAY);
+               Bitmap* pVideoPlayPressIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_VIDEO_PLAY_PRESS);
+               Button* pVideoPlayButton = new (std::nothrow) Button();
+               pVideoPlayButton->Construct(Rectangle(0, 0, pVideoPlayIcon->GetWidth(), pVideoPlayIcon->GetHeight()));
+               pVideoPlayButton->SetName(IDC_BUTTON_PLAY_VIDEO);
+               pVideoPlayButton->SetNormalBackgroundBitmap(*pVideoPlayIcon);
+               pVideoPlayButton->SetPressedBackgroundBitmap(*pVideoPlayPressIcon);
+               pVideoPlayButton->SetPosition(Point((__pAttachIconButton->GetWidth() - pVideoPlayButton->GetWidth()) / 2, (__pAttachIconButton->GetHeight() - pVideoPlayButton->GetHeight()) / 2));
+               AddControl(*pVideoPlayButton);
+               SetControlAlwaysOnTop(*pVideoPlayButton, true);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+const String
+AttachItemCntl::GetAttachIconName(void) const
+{
+       AppLogDebug("ENTER");
+
+       switch (__attachMentType)
+       {
+       case ATTACHMENT_TYPE_IMAGE:
+               return IDC_BUTTON_VIEW_IMAGE;
+
+       case ATTACHMENT_TYPE_VIDEO:
+               return IDC_BUTTON_VIDEO_THUMBNAIL;
+
+       case ATTACHMENT_TYPE_AUDIO:
+               return IDC_BUTTON_PLAY_AUDIO;
+
+       case ATTACHMENT_TYPE_ATTACH_COUNT:
+               return IDC_BUTTON_ATTACH_COUNT;
+
+       case ATTACHMENT_TYPE_OTHERS:
+       default:
+               return IDC_BUTTON_ATTACHMENT;
+       }
+}
+
+void
+AttachItemCntl::SetTitleText(const String& strText, const Font* ptextFont)
+{
+       AppLogDebug("ENTER");
+
+       if (strText.IsEmpty())
+       {
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+               return;
+       }
+       if (!__pEnrichedText)
+       {
+               __pEnrichedText = new (std::nothrow) EnrichedText();
+               int fileNameWidth(__maxWidth);
+               if (__pNormalAttachIcon)
+               {
+                       fileNameWidth -= (__pNormalAttachIcon->GetWidth() + MARGIN_10PX);
+               }
+               __pEnrichedText->Construct(Dimension(fileNameWidth, 20));
+               __pEnrichedText->SetTextWrapStyle(TEXT_WRAP_WORD_WRAP);
+               __pEnrichedText->SetTextAbbreviationEnabled(false);
+               __pEnrichedText->SetElementVerticalAlignment(TEXT_ALIGNMENT_MIDDLE);
+               __pEnrichedText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
+       }
+       // Add new text element.
+       TextElement* pTextElement = new (std::nothrow) TextElement();
+       pTextElement->Construct(strText);
+       pTextElement->SetTextColor(Color::GetColor(COLOR_ID_BLACK));
+       pTextElement->SetFont(*ptextFont);
+       __pEnrichedText->Add(*pTextElement);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+AttachItemCntl::AddTouchEventListener(ITouchEventListener& listener)
+{
+       AppLogDebug("ENTER");
+
+       Container::AddTouchEventListener(listener);
+       Control* pVideoPlayButton = GetControl(IDC_BUTTON_PLAY_VIDEO);
+       if (pVideoPlayButton)
+       {
+               pVideoPlayButton->AddTouchEventListener(listener);
+       }
+       __pAttachIconButton->AddTouchEventListener(listener);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+int
+AttachItemCntl::GetMinimumHeight(void) const
+{
+       AppLogDebug("ENTER");
+
+       int minHeight(0);
+       if (__pEnrichedText)
+       {
+               int height, width, length, startIndex = 0;
+               __pEnrichedText->GetTextExtent(startIndex, __pEnrichedText->GetLineLength(0), width, height, length);
+               minHeight = __pEnrichedText->GetTotalLineHeight();
+       }
+       bool isTitleOnBottom((__attachMentType == ATTACHMENT_TYPE_IMAGE) || (__attachMentType == ATTACHMENT_TYPE_IMAGE));
+       if (__pNormalAttachIcon)
+       {
+               if (isTitleOnBottom)
+               {
+                       minHeight += __pNormalAttachIcon->GetHeight();
+               }
+               else if (minHeight < __pNormalAttachIcon->GetHeight())
+               {
+                       minHeight = __pNormalAttachIcon->GetHeight();
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return minHeight;
+}
+
+int
+AttachItemCntl::GetMimimumWidth(void) const
+{
+       AppLogDebug("ENTER");
+
+       int maxWidth = 0;
+       if (__pEnrichedText)
+       {
+               int height, width, length, lineTextLength, startIndex = 0;
+               int lineCount = __pEnrichedText->GetTotalLineCount();
+               for (int count = 0; count < lineCount; count++)
+               {
+                       lineTextLength = __pEnrichedText->GetLineLength(count);
+                       __pEnrichedText->GetTextExtent(startIndex, lineTextLength, width, height, length);
+                       startIndex += lineTextLength;
+                       if (maxWidth < width)
+                       {
+                               maxWidth = width;
+                       }
+               }
+       }
+
+       if (__pNormalAttachIcon)
+       {
+               bool isTitleOnBottom((__attachMentType == ATTACHMENT_TYPE_IMAGE) || (__attachMentType == ATTACHMENT_TYPE_IMAGE));
+               if (isTitleOnBottom)
+               {
+                       if (maxWidth < __pNormalAttachIcon->GetWidth())
+                       {
+                               maxWidth = __pNormalAttachIcon->GetWidth();
+                       }
+               }
+               else
+               {
+                       maxWidth += __pNormalAttachIcon->GetWidth() + MARGIN_10PX;
+               }
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return maxWidth;
+}
index 464b031..f8358d7 100644 (file)
@@ -22,8 +22,8 @@
 #include "MsgAttachListPanel.h"\r
 #include "MsgBitmapUtility.h"\r
 #include "MsgCommonUtil.h"\r
-#include "MsgTypes.h"\r
 #include "MsgMessageData.h"\r
+#include "MsgTypes.h"\r
 \r
 using namespace Tizen::App;\r
 using namespace Tizen::Base;\r
@@ -49,7 +49,6 @@ AttachListPanel::AttachListPanel(MessageData* pMessageDta)
        : __messageData(pMessageDta)\r
        , __pAttachFileArray(null)\r
        , __pPanel(null)\r
-       , __pListView(null)\r
 {\r
 \r
 \r
@@ -91,27 +90,27 @@ AttachListPanel::Construct(void)
                                __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
+                       if (visibleListItemCount > 4)\r
                        {\r
-                               visibleListItemCount = 6;\r
+                               visibleListItemCount = 4;\r
                        }\r
-                       increaseHeight = (visibleListItemCount + 1) * H_LIST_ITEM_128PX;\r
+                       increaseHeight = (visibleListItemCount + 1) * H_LIST_ITEM_112PX;\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
+               Panel::SetPosition(16, 146);\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->SetSize(pAttachmentsListview->GetWidth(), increaseHeight);\r
+               pAttachmentsListview->AddListViewItemEventListener(*this);\r
        }\r
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
        return r;\r
@@ -122,33 +121,39 @@ ListItemBase*
 AttachListPanel::CreateItem(int index, int itemWidth)\r
 {\r
        AppLogDebug("ENTER");\r
+\r
+       bool needToAddSaveAll(__pAttachFileArray->GetCount()>1);\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
+       pItem->Construct(Dimension(itemWidth, H_LIST_ITEM_112PX), LIST_ANNEX_STYLE_NORMAL);\r
+       if (index == 0 && needToAddSaveAll)\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
+               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
        else\r
        {\r
-               const AttachMentsObject* pAttachment = static_cast<AttachMentsObject*>(__pAttachFileArray->GetAt(index - 1));\r
+               if(needToAddSaveAll)\r
+               {\r
+                       index--; //Adjust list item index to add save all item for more than one attach file.\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, *pAttachment->GetIcon());\r
-                       pItem->AddElement(Rectangle(104, 28, 400, 72),\r
+                       pItem->AddElement(Rectangle(104, 28, 470, 72),\r
                                                          LIST_ELEMENT_TEXT, File::GetFileName(pAttachment->GetAttachmentPath()));\r
-                       Bitmap* pBitMap = AppResource::GetInstance()->GetBitmapN(IDB_CONTROLBAR_ICON_SAVE);\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
                else\r
                {\r
-                       pItem->AddElement(Rectangle(104, 28, 400, 72),\r
+                       pItem->AddElement(Rectangle(104, 28, 470, 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
@@ -164,11 +169,12 @@ AttachListPanel::OnListViewItemStateChanged(ListView& listView, int index,
                                                                                        int elementId, ListItemStatus status)\r
 {\r
        AppLogDebug("ENTER");\r
+       bool saveAllExist(__pAttachFileArray->GetCount()>1);\r
        switch (status)\r
        {\r
        case LIST_ITEM_STATUS_SELECTED:\r
        {\r
-               if (index == 0 && elementId == LIST_ELEMENT_SAVE_IMAGE)\r
+               if (index == 0 && saveAllExist && elementId == LIST_ELEMENT_SAVE_IMAGE)\r
                {\r
                        for (int attachFileNumber = 0; attachFileNumber < __pAttachFileArray->GetCount(); attachFileNumber++)\r
                        {\r
@@ -184,7 +190,11 @@ AttachListPanel::OnListViewItemStateChanged(ListView& listView, int index,
                }\r
                else if (elementId == LIST_ELEMENT_SAVE_IMAGE)\r
                {\r
-                       AttachMentsObject* pAttachment = (AttachMentsObject*) __pAttachFileArray->GetAt(index - 1);\r
+                       if(saveAllExist)\r
+                       {\r
+                               index--; //Adjust index for save all list item.\r
+                       }\r
+                       AttachMentsObject* pAttachment = (AttachMentsObject*) __pAttachFileArray->GetAt(index);\r
                        if (pAttachment && !pAttachment->GetAttachmentPath().IsEmpty())\r
                        {\r
                                String destFile;\r
@@ -221,8 +231,14 @@ int
 AttachListPanel::GetItemCount(void)\r
 {\r
        AppLogDebug("ENTER");\r
+\r
+       int itemCount(__pAttachFileArray->GetCount());\r
+       if(itemCount>1)\r
+       {\r
+               itemCount++; // For save all list item\r
+       }\r
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
-       return (__pAttachFileArray->GetCount() + 1);\r
+       return itemCount;\r
 }\r
 \r
 Bitmap*\r
@@ -249,3 +265,21 @@ AttachListPanel::GetIconN(const String& filePath) const
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
        return pBitmap;\r
 }\r
+\r
+void\r
+AttachListPanel::SetPanelSize(void)\r
+{\r
+       ListView* pAttachmentsListview = static_cast<ListView*>(GetControl(L"IDC_ATTACH_FILES_LISTVIEW"));\r
+       int increaseHeight(0);\r
+       if (__pAttachFileArray->GetCount() > 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
+       Panel::SetSize(Dimension(GetWidth(), increaseHeight));\r
+       pAttachmentsListview->SetSize(pAttachmentsListview->GetWidth(), increaseHeight);\r
+}\r
index c81743c..39a8ddc 100644 (file)
@@ -15,6 +15,7 @@
 //\r
 \r
 #include <FApp.h>\r
+#include <FUi.h>\r
 \r
 #include "MsgAttachListPopup.h"\r
 #include "MsgBitmapUtility.h"\r
@@ -59,15 +60,15 @@ AttachListPopup::Construct(bool hideSubject)
                // 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
+//             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
@@ -86,12 +87,12 @@ AttachListPopup::Construct(bool hideSubject)
                {\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_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
@@ -110,17 +111,16 @@ AttachListPopup::Construct(bool hideSubject)
                {\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
+// TODO: Memo does not support app control.\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
@@ -168,7 +168,7 @@ AttachListPopup::OnListViewItemStateChanged(ListView& listView, int index,
 \r
        case ATTACH_ELEMENT_GALLERY:\r
        {\r
-               requestId = REQUEST_OPEN_GALLARY;\r
+               requestId = REQUEST_OPEN_GALLERY;\r
                __parentCntl.SendUserEvent(requestId, null);\r
        }\r
        break;\r
index 4a243d8..38d709b 100644 (file)
@@ -28,12 +28,18 @@ using namespace Tizen::Io;
 using namespace Tizen::Ui;\r
 using namespace Tizen::Ui::Controls;\r
 \r
+enum InternalActionIds\r
+{\r
+       IDA_DELETE_ATTACH_ITEM,\r
+};\r
+\r
 AttachementControl::AttachementControl(const String& attachFile)\r
        : __pBgBitmap(null)\r
        , __attachFilePath(attachFile)\r
        , __pAttachIcon(null)\r
        , __pAttachLabel(null)\r
        , __pDeleteButton(null)\r
+       , __pActionEventListener(null)\r
 {\r
        // Empty implementation\r
 }\r
@@ -71,6 +77,8 @@ AttachementControl::Construct(const Rectangle& rectangle)
        __pDeleteButton->SetNormalBackgroundBitmap(*pNormalBitMap);\r
        Bitmap* pPressBitMap = pBitmapUtility->GetIconN(MSG_ICON_PAGE_DELETE_PRESS);\r
        __pDeleteButton->SetPressedBackgroundBitmap(*pPressBitMap);\r
+       __pDeleteButton->SetActionId(IDA_DELETE_ATTACH_ITEM);\r
+       __pDeleteButton->AddActionEventListener(*this);\r
        AddControl(*__pDeleteButton);\r
        delete pPressBitMap;\r
        delete pNormalBitMap;\r
@@ -107,15 +115,15 @@ void
 AttachementControl::SetDeleteActionId(int actionId)\r
 {\r
        AppLogDebug("ENTER");\r
-       __pDeleteButton->SetActionId(actionId);\r
+       __deleteActionId = actionId;\r
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
 }\r
 \r
 void\r
-AttachementControl::AddActionEventListener(IActionEventListener& listener)\r
+AttachementControl::SetActionEventListener(IActionEventListener& listener)\r
 {\r
        AppLogDebug("ENTER");\r
-       __pDeleteButton->AddActionEventListener(listener);\r
+       __pActionEventListener = &listener;\r
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
 }\r
 \r
@@ -137,7 +145,10 @@ AttachementControl::OnDraw(void)
                        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
+               if (__pAttachIcon)\r
+               {\r
+                       pCanvas->DrawBitmap(Rectangle(MARGIN_16PX, (rect.height - __pAttachIcon->GetHeight()) / 2, __pAttachIcon->GetWidth(), __pAttachIcon->GetHeight()), *__pAttachIcon);\r
+               }\r
                delete pCanvas;\r
        }\r
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
@@ -151,3 +162,23 @@ AttachementControl::GetControlType(void) const
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
        return COMPOSE_CONTROL_ATTACHEMENT;\r
 }\r
+\r
+void\r
+AttachementControl::OnActionPerformed(const Control& source, int actionId)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       switch(actionId)\r
+       {\r
+       case IDA_DELETE_ATTACH_ITEM:\r
+       {\r
+               if(__pActionEventListener)\r
+               {\r
+                       __pActionEventListener->OnActionPerformed(*this, __deleteActionId);\r
+               }\r
+       }\r
+       break;\r
+\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
index db114da..caca7e0 100644 (file)
@@ -18,6 +18,7 @@
 #include <FIo.h>\r
 #include <FMedia.h>\r
 #include <FSysEnvironment.h>\r
+#include <FUi.h>\r
 \r
 #include "MsgAttachmentSavePopup.h"\r
 #include "MsgBitmapUtility.h"\r
@@ -193,6 +194,7 @@ AttachementSavePopup::OnListViewItemStateChanged(ListView& listView, int index,
                        {\r
                                ListView* pAttachmentsListview = static_cast<ListView*>(GetControl(L"IDC_ATTACH_LISTVIEW"));\r
                                pAttachmentsListview->SetItemChecked(0, true);\r
+                               pAttachmentsListview->Invalidate(true);\r
                        }\r
                }\r
        }\r
@@ -211,6 +213,7 @@ AttachementSavePopup::OnListViewItemStateChanged(ListView& listView, int index,
                        {\r
                                ListView* pAttachmentsListview = static_cast<ListView*>(GetControl(L"IDC_ATTACH_LISTVIEW"));\r
                                pAttachmentsListview->SetItemChecked(0, false);\r
+                               pAttachmentsListview->Invalidate(true);\r
                        }\r
                }\r
        }\r
@@ -237,7 +240,7 @@ AttachementSavePopup::CreateItem(int index, int itemWidth)
        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
+               pItem->AddElement(Rectangle(MARGIN_16PX, 0, (itemWidth - MARGIN_16PX - MARGIN_16PX), H_LIST_ITEM_112PX),\r
                                                  LIST_ELEMENT_TEXT, *pFileName);\r
        }\r
        else\r
@@ -248,12 +251,12 @@ AttachementSavePopup::CreateItem(int index, int itemWidth)
                        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
+                       pItem->AddElement(Rectangle(MARGIN_16PX * 2 + pAttachment->GetIcon()->GetWidth(), 0, (itemWidth - MARGIN_16PX * 5 - pAttachment->GetIcon()->GetWidth() * 2), 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
+                       pItem->AddElement(Rectangle(MARGIN_16PX, 0, (itemWidth - MARGIN_16PX - MARGIN_16PX), H_LIST_ITEM_112PX),\r
                                                          LIST_ELEMENT_TEXT, File::GetFileName(pAttachment->GetAttachmentPath()));\r
                }\r
        }\r
index 0dff756..02fb29a 100644 (file)
@@ -23,6 +23,7 @@ using namespace Tizen::Base::Collection;
 \r
 AddressInfo::AddressInfo()\r
        : needToValidate(true)\r
+       , isAddFromContacts(false)\r
 {\r
        // Empty implementation.\r
 }\r
@@ -35,6 +36,17 @@ MmsPageData::MmsPageData(const String& bodyText, bool isTextTop)
        // Empty implementation.\r
 }\r
 \r
+MmsPageData*\r
+MmsPageData::CloneN(void)\r
+{\r
+       MmsPageData* pCloneObject = new (std::nothrow) MmsPageData(this->__bodyText, this->__isTextTop);\r
+       pCloneObject->__pageDuration = this->__pageDuration;\r
+       pCloneObject->__audioPath = this->__audioPath;\r
+       pCloneObject->__imagePath = this->__imagePath;\r
+       pCloneObject->__videoPath = this->__videoPath;\r
+       return pCloneObject;\r
+}\r
+\r
 MessageComposeData::MessageComposeData(const String& subjectText, ArrayList* pPageList, ArrayList* pAttachList)\r
        : __isMms(true)\r
        , __subjectText(subjectText)\r
index cd9e3c6..4d37451 100644 (file)
 #include <msg.h>
 #include <msg_storage.h>
 #include <FBaseColIListT.h>
-
+#include <FSocial.h>
 
 #include "MsgBasePresentationModel.h"
 #include "MsgCommonUtil.h"
+#include "MsgContactUtility.h"
 #include "MsgContactList.h"
-#include "MsgDeleteHandlerThread.h"
+#include "MsgDeleteHandler.h"
 #include "MsgMessageData.h"
 #include "MsgSpamRestoreHandler.h"
 #include "MsgThreadData.h"
 using namespace Tizen::Base;
 using namespace Tizen::Base::Collection;
 using namespace Tizen::Base::Runtime;
+using namespace Tizen::Social;
 using namespace Tizen::Ui;
 
 BasePresentationModel::BasePresentationModel(void)
        : __pMsgHandle(null)
        , __pDeleteHandler(null)
        , __pSpamRestoreHandler(null)
-
 {
        //Empty implementation
 }
@@ -48,14 +49,13 @@ BasePresentationModel::~BasePresentationModel(void)
 
        if (__pDeleteHandler)
        {
-               __pDeleteHandler->Join();
+               __pDeleteHandler->Cancel();
                delete __pDeleteHandler;
-               __pDeleteHandler = null;
        }
 
-       if(__pSpamRestoreHandler)
+       if (__pSpamRestoreHandler)
        {
-               __pSpamRestoreHandler->Join();
+               __pSpamRestoreHandler->Cancel();
                delete __pSpamRestoreHandler;
        }
 
@@ -78,7 +78,6 @@ BasePresentationModel::Construct(void)
        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;
@@ -109,33 +108,26 @@ BasePresentationModel::Delete(int deleteId, int requestType)
 }
 
 void
-BasePresentationModel::Delete(IListT< int >* pIdList,
-                                                               Control& listener, int requestType)
+BasePresentationModel::Delete(IListT<int>* pIdList, int requestType, IDeleteEventListener* pDeleteListener)
 {
        AppLogDebug("ENTER");
 
-       if (__pDeleteHandler)
-       {
-               delete __pDeleteHandler;
-       }
-       __pDeleteHandler = new (std::nothrow) DeleteHandlerThread(pIdList, listener, requestType);
-       __pDeleteHandler->Construct();
+       CancelDelete();
+       __pDeleteHandler = new (std::nothrow) DeleteHandler(pDeleteListener);
+       __pDeleteHandler->Construct(pIdList, requestType);
        __pDeleteHandler->Start();
 
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
 }
 
 void
-BasePresentationModel::Delete(int deleteId, Control& listener, int requestType)
+BasePresentationModel::Delete(int deleteId, int requestType, IDeleteEventListener* pDeleteListener)
 {
        AppLogDebug("ENTER");
 
-       if (__pDeleteHandler)
-       {
-               delete __pDeleteHandler;
-       }
-       __pDeleteHandler = new (std::nothrow) DeleteHandlerThread(deleteId, listener, requestType);
-       __pDeleteHandler->Construct();
+       CancelDelete();
+       __pDeleteHandler = new (std::nothrow) DeleteHandler(pDeleteListener);
+       __pDeleteHandler->Construct(deleteId, requestType);
        __pDeleteHandler->Start();
 
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
@@ -191,6 +183,7 @@ BasePresentationModel::GetRecipientDetailsListN(int threadId) const
 
        if (pAddressList.nCount > 0)
        {
+               Addressbook* pAddressBook = AddressbookManager::GetInstance()->GetAddressbookN();
                pRecipientDetailsList = new (std::nothrow) ArrayList();
                char recipientNumber[MAX_ADDRESS_VAL_LEN] = {0};
                char recipientName[MAX_ADDRESS_VAL_LEN] = {0};
@@ -203,12 +196,30 @@ BasePresentationModel::GetRecipientDetailsListN(int threadId) const
                        ContactDetails* pConDetails = new (std::nothrow) ContactDetails();
                        pConDetails->contactName = recipientName;
                        pConDetails->contactNumber = recipientNumber;
-                       if(pConDetails->contactName.CompareTo(String(IDS_BLANK)) == 0)
+                       if (pConDetails->contactName.CompareTo(String(IDS_BLANK)) == 0)
                        {
                                pConDetails->contactName = IDS_UNKNOWN;
+                               if (pAddressBook)
+                               {
+                                       IList* pRecipientNameList = pAddressBook->SearchContactsByPhoneNumberN(pConDetails->contactNumber);
+                                       if (pRecipientNameList)
+                                       {
+                                               Contact* pRecipientContact = ContactUtility::GetContact(pRecipientNameList, pConDetails->contactNumber);
+                                               if (pRecipientContact)
+                                               {
+                                                       pConDetails->contactName = recipientNumber;
+                                               }
+                                               pRecipientNameList->RemoveAll(true);
+                                               delete pRecipientNameList;
+                                       }
+                               }
                        }
                        pRecipientDetailsList->Add(pConDetails);
                }
+               if(pAddressBook)
+               {
+                       delete pAddressBook;
+               }
        }
        // Free memory
        msg_release_list_struct(&pAddressList);
@@ -274,18 +285,13 @@ BasePresentationModel::MoveMessageToInbox(int messageId)
 }
 
 void
-BasePresentationModel::RestoreSpamMsgs(ArrayListT<int>* pSelectedId,Control* threadCtrl)
+BasePresentationModel::RestoreSpamMessages(IListT<int>* pSelectedId, IRestoreEventListener* pRestoreListener)
 {
        AppLogDebug("ENTER");
 
-
-       if (__pSpamRestoreHandler)
-       {
-               delete __pSpamRestoreHandler;
-       }
-
-       __pSpamRestoreHandler = new (std::nothrow) SpamRestoreHandler(pSelectedId,threadCtrl);
-       __pSpamRestoreHandler->Construct();
+       CancelRestore();
+       __pSpamRestoreHandler = new (std::nothrow) SpamRestoreHandler(pRestoreListener);
+       __pSpamRestoreHandler->Construct(pSelectedId);
        __pSpamRestoreHandler->Start();
 
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
@@ -297,9 +303,9 @@ BasePresentationModel::CancelRestore()
        AppLogDebug("ENTER");
 
 
-       if(__pSpamRestoreHandler)
+       if (__pSpamRestoreHandler)
        {
-               __pSpamRestoreHandler->Join();
+               __pSpamRestoreHandler->Cancel();
                delete __pSpamRestoreHandler;
                __pSpamRestoreHandler = null;
        }
@@ -377,13 +383,28 @@ BasePresentationModel::CancelDelete(void)
 {
        AppLogDebug("ENTER");
 
-        if(__pDeleteHandler)
-        {
-                __pDeleteHandler->Join();
-                delete __pDeleteHandler;
-                __pDeleteHandler = null;
-        }
+       if (__pDeleteHandler)
+       {
+               __pDeleteHandler->Cancel();
+               delete __pDeleteHandler;
+               __pDeleteHandler = null;
+       }
 
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
        return;
 }
+
+int
+BasePresentationModel::GetDraftMessageId(int threadId) const
+{
+       int messageId(-1);
+       msg_struct_list_s draftMsgList = {0, NULL};
+       msg_get_message_list(__pMsgHandle, MSG_DRAFT_ID, threadId, 0, 0, &draftMsgList);
+       if(draftMsgList.nCount>0)
+       {
+               msg_get_int_value(draftMsgList.msg_struct_info[draftMsgList.nCount-1], MSG_MESSAGE_ID_INT, &messageId);
+       }
+       msg_release_list_struct(&draftMsgList);
+       return messageId;
+}
+
index 8e07d5b..4cfcd2f 100644 (file)
@@ -22,6 +22,7 @@
 #include <FGrpCanvas.h>\r
 \r
 #include "MsgBitmapUtility.h"\r
+#include "MsgCommonUtil.h"\r
 #include "MsgTypes.h"\r
 \r
 using namespace Tizen::App;\r
@@ -32,9 +33,26 @@ using namespace Tizen::Graphics;
 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* IDB_ICON_MUSIC = L"M01_icon_music.png";\r
+const wchar_t* IDB_ICON_UNKNOWN = L"M01_icon_unkown.png";\r
+const wchar_t* IDB_ICON_EXCEL = L"M01_icon_excel.png";\r
+const wchar_t* IDB_ICON_PDF = L"M01_icon_pdf.png";\r
+const wchar_t* IDB_ICON_PPT = L"M01_icon_ppt.png";\r
+const wchar_t* IDB_ICON_HTML = L"M01_icon_html.png";\r
+const wchar_t* IDB_ICON_RSS = L"M01_icon_rss.png";\r
+const wchar_t* IDB_ICON_SVG = L"M01_icon_svg.png";\r
+const wchar_t* IDB_ICON_SWF = L"M01_icon_swf.png";\r
+\r
 const wchar_t* FILE_EXTENSION_TXT = L".txt";\r
 const wchar_t* FILE_EXTENSION_DOC = L".doc";\r
+const wchar_t* FILE_EXTENSION_CONTACT_INFO = L".vcf";\r
+const wchar_t* FILE_EXTENSION_EXCEL = L".xlsx";\r
+const wchar_t* FILE_EXTENSION_PDF = L".pdf";\r
+const wchar_t* FILE_EXTENSION_RSS = L".rss";\r
+const wchar_t* FILE_EXTENSION_PPT = L".ppt";\r
+const wchar_t* FILE_EXTENSION_SVG = L".svg";\r
+const wchar_t* FILE_EXTENSION_HTML = L".html";\r
+const wchar_t* FILE_EXTENSION_SWF = L".swf";\r
 \r
 BitmapUtility* BitmapUtility::__pInstance = null;\r
 \r
@@ -203,6 +221,14 @@ BitmapUtility::GetIconN(MessageIconType iconType, const Dimension& size)
                pngFile.Append("00_icon_Back_press_64.png");\r
                break;\r
 \r
+       case MSG_ICON_SELECT_ALL:\r
+               pngFile.Append("00_icon_select_all_ef.#.png");\r
+               break;\r
+\r
+       case MSG_ICON_SELECT_ALL_PRESSED:\r
+               pngFile.Append("00_icon_select_all.#.png");\r
+               break;\r
+\r
        case MSG_ICON_CALL:\r
                pngFile.Append("M01_icon_call.png");\r
                break;\r
@@ -362,7 +388,11 @@ BitmapUtility::GetIconN(MessageIconType iconType, const Dimension& size)
                break;\r
 \r
        case MSG_ICON_SAVE_ATTACHMENT:\r
-               pngFile.Append("M01_controlbar_icon_attach.png");\r
+               pngFile.Append("M01_title_icon_attach_web.png");\r
+               break;\r
+\r
+       case MSG_ICON_SAVE_ATTACHMENT_PRESSED:\r
+               pngFile.Append("M01_title_icon_attach_press_web.png");\r
                break;\r
 \r
        case MSG_ICON_SMIL_VOLUME:\r
@@ -429,6 +459,38 @@ BitmapUtility::GetIconN(MessageIconType iconType, const Dimension& size)
                pngFile.Append("M01_photo_btn_delete_press.png");\r
                break;\r
 \r
+       case MSG_ICON_PLAY:\r
+               pngFile.Append("M01_icon_play.png");\r
+               break;\r
+\r
+       case MSG_ICON_PLAY_PRESS:\r
+               pngFile.Append("00_Video_play.png");\r
+               break;\r
+\r
+       case MSG_ICON_VIDEO_PLAY:\r
+               pngFile.Append("00_Video_play.png");\r
+               break;\r
+\r
+       case MSG_ICON_VIDEO_PLAY_PRESS:\r
+               pngFile.Append("M01_icon_play.png");\r
+               break;\r
+\r
+       case MSG_ICON_SEARCH:\r
+               pngFile.Append("M01_title_icon_search_web.png");\r
+               break;\r
+\r
+       case MSG_ICON_SEARCH_PRESS:\r
+               pngFile.Append("M01_title_icon_search_press_web.png");\r
+               break;\r
+\r
+       case MSG_ICON_SIP_CLOSE:\r
+               pngFile.Append("M01_input_close.png");\r
+               break;\r
+\r
+       case MSG_ICON_SIP_CLOSE_PRESS:\r
+               pngFile.Append("M01_input_close.png");\r
+               break;\r
+\r
        default:\r
                if (iconType >= MSG_ICON_PROGRESS_01 && iconType <= MSG_ICON_PROGRESS_30)\r
                {\r
@@ -587,7 +649,7 @@ BitmapUtility::Release(MessageIconType iconType)
 }\r
 \r
 Bitmap*\r
-BitmapUtility::GetBubbleGroupBgBitmap(GroupBgBitmapType groupType,\r
+BitmapUtility::GetBubbleGroupBgBitmapN(GroupBgBitmapType groupType,\r
                                                                          const String& groupName, const Dimension& size)\r
 {\r
        AppLogDebug("ENTER");\r
@@ -639,9 +701,25 @@ BitmapUtility::GetIconByFileExtN(const String& fileName, const Dimension& size)
        Bitmap* pIconBitmap = null;\r
        String strFileExtnTxt(FILE_EXTENSION_TXT);\r
        String strFileExtnDoc(FILE_EXTENSION_DOC);\r
+       String strfileExtnExcel(FILE_EXTENSION_EXCEL);\r
+       String strfileExtnPdf(FILE_EXTENSION_PDF);\r
+       String strfileExtnPpt(FILE_EXTENSION_PPT);\r
+       String strfileExtnHtml(FILE_EXTENSION_HTML);\r
+       String strfileExtnRss(FILE_EXTENSION_RSS);\r
+       String strfileExtnSvg(FILE_EXTENSION_SVG);\r
+       String strfileExtnSwf(FILE_EXTENSION_SWF);\r
+\r
        String strIconText(IDB_ICON_TEXT);\r
        String strIconWord(IDB_ICON_WORD);\r
+       String strIconMusic(IDB_ICON_MUSIC);\r
        String strIconUnknown(IDB_ICON_UNKNOWN);\r
+       String strIconExcel(IDB_ICON_EXCEL);\r
+       String strIconPdf(IDB_ICON_PDF);\r
+       String strIconPpt(IDB_ICON_PPT);\r
+       String strIconHtml(IDB_ICON_HTML);\r
+       String strIconRss(IDB_ICON_RSS);\r
+       String strIconSvg(IDB_ICON_SVG);\r
+       String strIconSwf(IDB_ICON_SWF);\r
 \r
        if (fileName.EndsWith(strFileExtnTxt))\r
        {\r
@@ -651,6 +729,38 @@ BitmapUtility::GetIconByFileExtN(const String& fileName, const Dimension& size)
        {\r
                pIconBitmap = AppResource::GetInstance()->GetBitmapN(strIconWord);\r
        }\r
+       else if (CommonUtil::IsAudioFile(fileName))\r
+       {\r
+               pIconBitmap = AppResource::GetInstance()->GetBitmapN(strIconMusic);\r
+       }\r
+       else if (fileName.EndsWith(strfileExtnExcel))\r
+       {\r
+               pIconBitmap = AppResource::GetInstance()->GetBitmapN(strIconExcel);\r
+       }\r
+       else if (fileName.EndsWith(strfileExtnPdf))\r
+       {\r
+               pIconBitmap = AppResource::GetInstance()->GetBitmapN(strIconPdf);\r
+       }\r
+       else if (fileName.EndsWith(strfileExtnHtml))\r
+       {\r
+               pIconBitmap = AppResource::GetInstance()->GetBitmapN(strIconHtml);\r
+       }\r
+       else if (fileName.EndsWith(strfileExtnRss))\r
+       {\r
+               pIconBitmap = AppResource::GetInstance()->GetBitmapN(strIconRss);\r
+       }\r
+       else if (fileName.EndsWith(strfileExtnPpt))\r
+       {\r
+               pIconBitmap = AppResource::GetInstance()->GetBitmapN(strIconPpt);\r
+       }\r
+       else if (fileName.EndsWith(strfileExtnSvg))\r
+       {\r
+               pIconBitmap = AppResource::GetInstance()->GetBitmapN(strIconSvg);\r
+       }\r
+       else if (fileName.EndsWith(strfileExtnSwf))\r
+       {\r
+               pIconBitmap = AppResource::GetInstance()->GetBitmapN(strIconSwf);\r
+       }\r
        else\r
        {\r
                pIconBitmap = AppResource::GetInstance()->GetBitmapN(strIconUnknown);\r
similarity index 54%
rename from src/MsgLVBackgroundItem.cpp
rename to src/MsgBubbleBackgroundCntl.cpp
index 410baaf..0ad50d3 100644 (file)
@@ -1,74 +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
-#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
+//
+// 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 "MsgBubbleBackgroundCntl.h"
+
+
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui::Controls;
+
+BubbleBackgroundCntl::BubbleBackgroundCntl(void)
+       : __pBackgroundBitmap(null)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+BubbleBackgroundCntl::~BubbleBackgroundCntl(void)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+result
+BubbleBackgroundCntl::Construct(bool isSendBubble)
+{
+       AppLogDebug("ENTER");
+
+       result r = Container::Construct();
+       BitmapUtility* pBitmapUtility = BitmapUtility::GetInstance();
+       if (isSendBubble)
+       {
+               __pBackgroundBitmap = pBitmapUtility->GetIcon(MSG_ICON_BUBBLE_SENT_BG, Dimension(68, MIN_BUBBLE_HEIGHT));
+       }
+       else
+       {
+               __pBackgroundBitmap = pBitmapUtility->GetIcon(MSG_ICON_BUBBLE_RECEIVE_BG, Dimension(76, MIN_BUBBLE_HEIGHT));
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+result
+BubbleBackgroundCntl::OnDraw(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       Rectangle rect = GetBounds();
+       rect.x = 0;
+       rect.y = 0;
+       Canvas* pCanvas = GetCanvasN();
+       if (pCanvas)
+       {
+               // Make it transparent
+               pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
+               pCanvas->Clear();
+               if (__pBackgroundBitmap)
+               {
+                       r |= pCanvas->DrawNinePatchedBitmap(rect, *__pBackgroundBitmap);
+               }
+               delete pCanvas;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
index c1aeb8d..98ebc85 100644 (file)
@@ -356,3 +356,79 @@ CommonUtil::GetMessageCharCounterInfo(const String& messageText, const SmsSendSe
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
        return charCountInfo;\r
 }\r
+\r
+void\r
+CommonUtil::ShowImage(const String& filePath)\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"email");\r
+               pHashMap->Add(pModeKey, pModeVal);\r
+               String* pTypeKey = new (std::nothrow) String(L"path");\r
+               String* pTypeVal = new (std::nothrow) String(filePath);\r
+               pHashMap->Add(pTypeKey, pTypeVal);\r
+               pAppControl->Start(null, null, pHashMap, null);\r
+               pHashMap->RemoveAll(true);\r
+               delete pHashMap;\r
+               delete pAppControl;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+void\r
+CommonUtil::PlayVideo(const String& filePath)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       AppControl* pAppControl = AppManager::FindAppControlN(IDS_APPCONTROL_PROVIDER_VIDEO,\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"video");\r
+               pHashMap->Add(pModeKey, pModeVal);\r
+               String* pTypeKey = new (std::nothrow) String(L"path");\r
+               String* pTypeVal = new (std::nothrow) String(filePath);\r
+               pHashMap->Add(pTypeKey, pTypeVal);\r
+               pAppControl->Start(null, null, pHashMap, null);\r
+               pHashMap->RemoveAll(true);\r
+               delete pHashMap;\r
+               delete pAppControl;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+\r
+}\r
+\r
+void\r
+CommonUtil::PlayAudio(const String& filePath)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       AppControl* pAppControl = AppManager::FindAppControlN(IDS_APPCONTROL_PROVIDER_AUDIO,\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"audio");\r
+               pHashMap->Add(pModeKey, pModeVal);\r
+               String* pTypeKey = new (std::nothrow) String(L"path");\r
+               String* pTypeVal = new (std::nothrow) String(filePath);\r
+               pHashMap->Add(pTypeKey, pTypeVal);\r
+               pAppControl->Start(null, null, pHashMap, null);\r
+               pHashMap->RemoveAll(true);\r
+               delete pHashMap;\r
+               delete pAppControl;\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
index 6b1d29b..f283c7b 100644 (file)
@@ -37,15 +37,18 @@ using namespace Tizen::Graphics;
 using namespace Tizen::Ui;
 using namespace Tizen::Ui::Controls;
 using namespace Tizen::Ui::Scenes;
+using namespace Tizen::System;
 
 ComposerForm::ComposerForm(void)
        : __pRecipientPanel(null)
        , __pMsgComposePanel(null)
        , __pDraftMessageEntry(null)
        , __pMessagePopup(null)
-       , __pTrayPanel(null)
+       , __pMoreContextMenu(null)
        , __pDurationPopup(null)
        , __needToSetFocusRecipient(false)
+       , __volumeLevel(-1)
+       , __isLaunchedAsForward(false)
 {
        //Empty implementation
 }
@@ -53,6 +56,11 @@ ComposerForm::ComposerForm(void)
 ComposerForm::~ComposerForm(void)
 {
        AppLogDebug("ENTER");
+       SettingInfo::RemoveSettingEventListener(*this);
+       if(__pMoreContextMenu)
+       {
+               delete __pMoreContextMenu;
+       }
        if (__pDurationPopup)
        {
                delete __pDurationPopup;
@@ -90,13 +98,14 @@ void
 ComposerForm::OnIntializeHeader(Header& header)
 {
        AppLogDebug("ENTER");
+
        header.AddActionEventListener(*this);
        header.SetStyle(HEADER_STYLE_TITLE);
-
+       // Set title
        String strText;
        Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_POP_NEW_MESSAGE", strText);
        header.SetTitleText(strText);
-
+       // Set right button
        ButtonItem buttonRightItem;
        buttonRightItem.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_HEADER_BACK);
        Bitmap* pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_HEADER_BACK);
@@ -104,22 +113,19 @@ ComposerForm::OnIntializeHeader(Header& header)
        pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_HEADER_BACK_PRESSED);
        buttonRightItem.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pBitMap);
        header.SetButton(BUTTON_POSITION_RIGHT, buttonRightItem);
-
+       // Set left button
        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
+       btnLeft.SetIcon(BUTTON_ITEM_STATUS_DISABLED, pBitMap);
+       header.SetButton(BUTTON_POSITION_LEFT, btnLeft);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
 }
 
 void
@@ -133,25 +139,27 @@ ComposerForm::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
                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;
                }
+               // Set Focus to editor.
+               if (__pRecipientPanel->GetRecipientCount() > 0)
+               {
+                       __pMsgComposePanel->SetFocusToEditor();
+               }
+               else
+               {
+                       __pRecipientPanel->SetFocus();
+               }
        }
        break;
 
        case REQUEST_ENABLE_DISABLE_SEND_BUTTON:
        {
                //TODO
-               if(__pMsgComposePanel && __pRecipientPanel)
+               if (__pMsgComposePanel && __pRecipientPanel)
                {
-                       if(__pMsgComposePanel->IsComposeFieldEmpty() ||__pRecipientPanel->IsEmptyRecipent())
+                       if (__pMsgComposePanel->IsComposeFieldEmpty())
                        {
                                __pMsgComposePanel->EnableSendButton(false);
                        }
@@ -169,12 +177,12 @@ ComposerForm::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
        }
        break;
 
-       case REQUEST_UDATE_FOCUS:
+       case REQUEST_UPDATE_FOCUS:
        {
-               if( __needToSetFocusRecipient )
+               if (__needToSetFocusRecipient)
                {
-                       RequestId requestId = REQUEST_SET_FOCUS_RECIPIENT;
-                       __pRecipientPanel->SendUserEvent(requestId, null);
+                       RequestId rqsttId = REQUEST_SET_FOCUS_RECIPIENT;
+                       __pRecipientPanel->SendUserEvent(rqsttId, null);
                        __needToSetFocusRecipient = false;
                }
        }
@@ -223,6 +231,10 @@ ComposerForm::OnInitializing(void)
                // For volume key press
                AddKeyEventListener(*this);
                __pRecipientPanel->SetFocus();
+
+               // For increasing/decreasing font size when volume level is changed:
+               SettingInfo::AddSettingEventListener(*this);
+               SettingInfo::GetValue(IDS_KEY_VOLUME_LEVEL, __volumeLevel);
        }
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
        return r;
@@ -257,6 +269,7 @@ ComposerForm::OnSceneActivatedN(const SceneId& previousSceneId,
 
                case COMPOSER_LAUNCH_FORWORD_MESSAGE:
                {
+                       __isLaunchedAsForward = true;
                        MessageData* pMessageData = (MessageData*) pArgs->GetAt(1);
                        __pMsgComposePanel->LoadMessageData(*pMessageData);
                }
@@ -305,7 +318,15 @@ ComposerForm::OnSizeIncrease(const Control& control)
        int panelHeight = __pMsgComposePanel->GetDisplayHeight();
        if (__pRecipientPanel->Equals(control))
        {
-               //TODO:
+               //Check if compose panel overlap with recipient panel
+               int recipientPanelEndPosY = __pRecipientPanel->GetY() + __pRecipientPanel->GetHeight();
+               int composePanelPosY = __pMsgComposePanel->GetY();
+               if (recipientPanelEndPosY > composePanelPosY)
+               {
+                       int sizeToReduce = recipientPanelEndPosY - composePanelPosY;
+                       __pMsgComposePanel->SetBounds(Rectangle(__pMsgComposePanel->GetX(), recipientPanelEndPosY,
+                                                                                                       __pMsgComposePanel->GetWidth(), (panelHeight - sizeToReduce)));
+               }
        }
        else if (__pMsgComposePanel->Equals(control))
        {
@@ -344,16 +365,13 @@ 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);
-       }
+//     Header* pHeader = GetHeader();
+//     if (pHeader)
+//     {
+//             bool mmsMode(type == COMPOSE_MMS);
+//             pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, mmsMode);
+//             pHeader->Invalidate(true);
+//     }
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
 }
 
@@ -363,16 +381,20 @@ 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))
+       if (!__pRecipientPanel->CheckRecipientForToken(false))
        {
-               SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON,null);
+               SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON, null);
                AppLogDebug("Invalid recipients");
                AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
                return;
        }
-       ArrayList* pRecipientList = __pRecipientPanel->GeRecipientNumberListN();
+       ArrayList* pRecipientList = __pRecipientPanel->GetRecipientNumberListN();
        if (pRecipientList)
        {
+               if (pRecipientList->GetCount() > 10)
+               {
+                       pRecipientList->RemoveItems(10, pRecipientList->GetCount()-10);
+               }
                MessageComposeData* pComposeData = __pMsgComposePanel->GetMessageComposeDataN();
                if (pComposeData)
                {
@@ -403,8 +425,17 @@ ComposerForm::OnSendButtonClick(void)
                                        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);
+                                       if (!__isLaunchedAsForward)
+                                       {
+                                               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONVERSATION_LIST,
+                                                                                                                                               SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY, SCENE_DESTROY_OPTION_DESTROY), pArgList);
+                                       }
+                                       else
+                                       {
+                                               __isLaunchedAsForward = false;
+                                               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONVERSATION_LIST,
+                                                                                                                                               SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY, SCENE_DESTROY_OPTION_DESTROY), null);
+                                       }
                                }
                                else
                                {
@@ -427,21 +458,71 @@ ComposerForm::OnSendButtonClick(void)
        return;
 }
 
-void ComposerForm::CreateDraftMsgAndExit(MessageComposeData* pComposeData)
+void
+ComposerForm::CreateDraftMsgAndExit(MessageComposeData* pComposeData)
 {
-       ArrayList* pRecipientsNumberArray = __pRecipientPanel->GeRecipientNumberListN();
+       ArrayList* pRecipientsNumberArray = __pRecipientPanel->GetRecipientNumberListN();
        if (pRecipientsNumberArray)
        {
                MessagePresentationModel* pMessagePresentationModel = MessagePresentationModel::GetInstance();
                if (pMessagePresentationModel)
                {
+                       int draftId(-1);\r
+                       if (__pDraftMessageEntry)\r
+                       {\r
+                               draftId = __pDraftMessageEntry->GetEntryId();\r
+                       }\r
                        pMessagePresentationModel->SaveMessage(*pComposeData, *pRecipientsNumberArray);
+                       if (draftId > -1)\r
+                       {\r
+                               pMessagePresentationModel->Delete(draftId, REQUEST_DELETE_MESSAGE);\r
+                       }\r
                }
                pRecipientsNumberArray->RemoveAll(true);
                delete pRecipientsNumberArray;
        }
 }
 
+result
+ComposerForm::ShowMoreContextMenu(const Control& source)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       if (__pMoreContextMenu)
+       {
+               delete __pMoreContextMenu;
+               __pMoreContextMenu = null;
+       }
+       __pMoreContextMenu = new (std::nothrow) ContextMenu();
+       __pMoreContextMenu->Construct(Point(source.GetWidth()*4/5,source.GetHeight() + MARGIN_15PX), CONTEXT_MENU_STYLE_LIST);
+       __pMoreContextMenu->SetColor(Color::GetColor(COLOR_ID_WHITE));
+       __pMoreContextMenu->SetItemTextColor(CONTEXT_MENU_ITEM_STATUS_NORMAL,Color::GetColor(COLOR_ID_BLACK));
+       String strText;
+       if (!__pMsgComposePanel->IsSubjectExists())
+       {
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_SUBJECT", strText);
+               __pMoreContextMenu->AddItem(strText, IDA_ADD_SUBJECT);
+       }
+
+       if(__pMsgComposePanel->IsMmsMode())
+       {
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK3_PREVIEW", strText);
+               __pMoreContextMenu->AddItem(strText, IDA_PREVIEW);
+               String strFormat;
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS", strFormat);
+               strText.Format(strFormat.GetLength() * 2, strFormat.GetPointer(), __pMsgComposePanel->GetDefaultPageDuration());
+               __pMoreContextMenu->AddItem(strFormat, IDA_PAGE_DURATION);
+       }
+       __pMoreContextMenu->AddActionEventListener(*this);
+       __pMoreContextMenu->SetShowState(true);
+       __pMoreContextMenu->Show();
+
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+
 void
 ComposerForm::OnActionPerformed(const Control& source, int actionId)
 {
@@ -456,7 +537,7 @@ ComposerForm::OnActionPerformed(const Control& source, int actionId)
                        ((pComposeData) && (__pRecipientPanel->IsTextForTokenExist() || __pRecipientPanel->GetRecipientCount() <= 0)))
                {
                        __pRecipientPanel->EnableValidationOnFocusLost(false);
-                       if(__pRecipientPanel->IsTextForTokenExist() && __pRecipientPanel->CheckRecipentForToken())
+                       if (__pRecipientPanel->IsTextForTokenExist() && __pRecipientPanel->CheckRecipientForToken())
                        {
 //                             ArrayList* pRecipientsNumberArray = __pRecipientPanel->GeRecipientNumberListN();
 //                             if (pRecipientsNumberArray)
@@ -469,7 +550,7 @@ ComposerForm::OnActionPerformed(const Control& source, int actionId)
 //                                     pRecipientsNumberArray->RemoveAll(true);
 //                                     delete pRecipientsNumberArray;
 //                             }
-                               if(pComposeData)
+                               if (pComposeData)
                                {
                                        CreateDraftMsgAndExit(pComposeData);
                                }
@@ -493,7 +574,7 @@ ComposerForm::OnActionPerformed(const Control& source, int actionId)
                                        pSceneManager->GoBackward(BackwardSceneTransition());
                                }
                        }
-                       else if(__pRecipientPanel->GetRecipientCount() > 0)
+                       else if (__pRecipientPanel->GetRecipientCount() > 0)
                        {
 //                             ArrayList* pRecipientsNumberArray = __pRecipientPanel->GeRecipientNumberListN();
 //                             if (pRecipientsNumberArray)
@@ -506,7 +587,7 @@ ComposerForm::OnActionPerformed(const Control& source, int actionId)
 //                                     pRecipientsNumberArray->RemoveAll(true);
 //                                     delete pRecipientsNumberArray;
 //                             }
-                               if(pComposeData)
+                               if (pComposeData)
                                {
                                        CreateDraftMsgAndExit(pComposeData);
                                }
@@ -544,13 +625,22 @@ ComposerForm::OnActionPerformed(const Control& source, int actionId)
                        if (pComposeData)
                        {
                                // Save message to draft
-                               ArrayList* pRecipientsNumberArray = __pRecipientPanel->GeRecipientNumberListN();
+                               ArrayList* pRecipientsNumberArray = __pRecipientPanel->GetRecipientNumberListN();
                                if (pRecipientsNumberArray)
                                {
                                        MessagePresentationModel* pMessagePresentationModel = MessagePresentationModel::GetInstance();
                                        if (pMessagePresentationModel)
                                        {
+                                               int draftId(-1);\r
+                                               if (__pDraftMessageEntry)\r
+                                               {\r
+                                                       draftId = __pDraftMessageEntry->GetEntryId();\r
+                                               }\r
                                                pMessagePresentationModel->SaveMessage(*pComposeData, *pRecipientsNumberArray);
+                                               if (draftId > -1)\r
+                                               {\r
+                                                       pMessagePresentationModel->Delete(draftId, REQUEST_DELETE_MESSAGE);\r
+                                               }\r
                                        }
                                        pRecipientsNumberArray->RemoveAll(true);
                                        delete pRecipientsNumberArray;
@@ -604,9 +694,8 @@ ComposerForm::OnActionPerformed(const Control& source, int actionId)
 
        case IDA_DISCARD_MESSAGE_CANCEL:
        {
-               __pMsgComposePanel->ShowKeypad();
                DestroyMessagePopup();
-               if(__pRecipientPanel->GetRecipientCount() > 0)
+               if (__pRecipientPanel->GetRecipientCount() > 0)
                {
                        __pMsgComposePanel->SetFocusToEditor();
                }
@@ -619,63 +708,25 @@ ComposerForm::OnActionPerformed(const Control& source, int actionId)
 
        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
+               ShowMoreContextMenu(source);
+       }
+       break;
+
+       case IDA_ADD_SUBJECT:
+       {
+               RequestId requestId = REQUEST_ADD_SUBJECT;
+               __pMsgComposePanel->SendUserEvent(requestId,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
+                       //Preview MMS
                        ArrayList* pArgList = new (std::nothrow) ArrayList();
                        pArgList->Add((new (std::nothrow) Integer(MMS_FORM_PREVIEW)));
                        MessageData* pMessageData = new (std::nothrow) MessageData();
@@ -690,15 +741,17 @@ ComposerForm::OnActionPerformed(const Control& source, int actionId)
 
        case IDA_PAGE_DURATION:
        {
+               __pMsgComposePanel->HideKeypad();
+               __pRecipientPanel->HideKeypad();
                if (__pDurationPopup)
                {
                        delete __pDurationPopup;
+                       __pDurationPopup = null;
                }
                __pDurationPopup = new (std::nothrow) DurationPopup(*this);
                __pDurationPopup->Construct(L"IDL_DURATION_POPUP");
                __pDurationPopup->SetDuration(__pMsgComposePanel->GetDefaultPageDuration());
-               __pDurationPopup->Show();
-               __pDurationPopup->SetFocusToEditor();
+               __pDurationPopup->ShowPopup();
        }
        break;
 
@@ -733,6 +786,7 @@ ComposerForm::OnKeypadClosed(Control& source)
        AppLogDebug("ENTER");
 
        Rectangle clientArea = GetClientAreaBounds();
+       AppLogDebug("clientArea : %d",clientArea.height);
        if (__pMsgComposePanel != null)
        {
                __pMsgComposePanel->SetMaximumSize(Dimension(__pMsgComposePanel->GetWidth(), clientArea.height - __pRecipientPanel->GetHeight() + 1));
@@ -740,11 +794,26 @@ ComposerForm::OnKeypadClosed(Control& source)
                Clipboard* pClibBoard = Clipboard::GetInstance();
                if (pClibBoard && pClibBoard->IsPopupVisible())
                {
-                       __pMsgComposePanel->SetBounds(Rectangle(0, prePanelBounds.y - PANEL_HEIGHT + 35, clientArea.width, __pMsgComposePanel->GetDisplayHeight()));
+                       Point composePanelPosition = __pRecipientPanel->GetPosition();\r
+                       composePanelPosition.y += __pRecipientPanel->GetHeight();\r
+                       // Platform not returning correct rectangle in case of clip board open, do calculation here\r
+                       int composePosY = prePanelBounds.y - __pMsgComposePanel->GetDisplayHeight() + 35;\r
+                       if (composePanelPosition.y < composePosY)\r
+                       {\r
+                               composePanelPosition.y = composePosY;\r
+                       }\r
+                       if (__pMsgComposePanel->GetDisplayHeight() > __pMsgComposePanel->GetMaximumSize().height)\r
+                       {\r
+                               __pMsgComposePanel->SetBounds(Rectangle(composePanelPosition.x, composePanelPosition.y, clientArea.width, __pMsgComposePanel->GetMaximumSize().height));\r
+                       }\r
+                       else\r
+                       {\r
+                               __pMsgComposePanel->SetBounds(Rectangle(composePanelPosition.x, composePanelPosition.y, clientArea.width, __pMsgComposePanel->GetDisplayHeight()));\r
+                       }\r
                }
                else
                {
-                       if(__pMsgComposePanel->GetDisplayHeight() > __pMsgComposePanel->GetMaximumSize().height)
+                       if (__pMsgComposePanel->GetDisplayHeight() > __pMsgComposePanel->GetMaximumSize().height)
                        {
                                __pMsgComposePanel->SetBounds(Rectangle(0, clientArea.height - __pMsgComposePanel->GetDisplayHeight(), clientArea.width, __pMsgComposePanel->GetMaximumSize().height));
                        }
@@ -827,6 +896,59 @@ ComposerForm::OnKeyReleased(const Control& source, KeyCode keyCode)
 }
 
 
+
+void
+ComposerForm::OnSettingChanged(Tizen::Base::String& key)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("Initial volume level is %d", __volumeLevel);
+       result r = E_SUCCESS;
+
+       int mediaVolumeLevel = -1;
+       r = SettingInfo::GetValue(IDS_KEY_VOLUME_LEVEL, mediaVolumeLevel);
+       if (r == E_SUCCESS)
+       {
+               if (mediaVolumeLevel > __volumeLevel)
+               {
+                       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);
+                       __pMsgComposePanel->Invalidate(true);
+                       __pRecipientPanel->Invalidate(true);
+
+               }
+               else if (mediaVolumeLevel < __volumeLevel)
+               {
+                       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);
+                       __pMsgComposePanel->Invalidate(true);
+                       __pRecipientPanel->Invalidate(true);
+               }
+
+               __volumeLevel = mediaVolumeLevel;
+       }
+
+       AppLogDebug("Volume level is %d and result is %d", mediaVolumeLevel, r);
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+
 void
 ComposerForm::LoadComposeData(const MessageComposeData& composeData)
 {
@@ -837,8 +959,8 @@ ComposerForm::LoadComposeData(const MessageComposeData& composeData)
        // Set Body text.
        __pMsgComposePanel->LoadComposeData(composeData);
        // Set cursor based available data when loading form appcontrol
-       bool recipientExist(pAddressList && pAddressList->GetCount()>0);
-       if( recipientExist )
+       bool recipientExist(pAddressList && pAddressList->GetCount() > 0);
+       if (recipientExist)
        {
                __pMsgComposePanel->SetFocusToEditor();
        }
index 572ad0f..6a095da 100644 (file)
@@ -32,9 +32,9 @@ using namespace Tizen::Ui;
 using namespace Tizen::Ui::Controls;
 
 ContactList::ContactList(void)
-:__pContactList(null)
-, __pContactPopup(null)
-, __pBlockConfirmPopup(null)
+       : __pContactList(null)
+       , __pContactPopup(null)
+       , __pBlockConfirmPopup(null)
 {
        //Empty Implementation
 }
@@ -43,11 +43,11 @@ ContactList::~ContactList(void)
 {
        AppLogDebug("ENTER");
 
-       if(__pContactPopup)
+       if (__pContactPopup)
        {
                delete __pContactPopup;
        }
-       if(__pBlockConfirmPopup)
+       if (__pBlockConfirmPopup)
        {
                delete __pBlockConfirmPopup;
        }
@@ -68,7 +68,7 @@ ContactList::Construct(ArrayList* pPhoneNumberList)
 
 void
 ContactList::OnListViewItemStateChanged(ListView& listView, int index, int elementId,
-               ListItemStatus status)
+                                                                               ListItemStatus status)
 {
        AppLogDebug("ENTER");
 
@@ -83,7 +83,7 @@ ContactList::OnListViewItemStateChanged(ListView& listView, int index, int eleme
 
 void
 ContactList::OnListViewItemSwept(ListView& listView, int index,
-               SweepDirection direction)
+                                                                SweepDirection direction)
 {
        AppLogDebug("ENTER");
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
@@ -92,7 +92,7 @@ ContactList::OnListViewItemSwept(ListView& listView, int index,
 
 void
 ContactList::OnListViewContextItemStateChanged(ListView& listView, int index, int elementId,
-               ListContextItemStatus state)
+                                                                                          ListContextItemStatus state)
 {
        AppLogDebug("ENTER");
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
@@ -101,7 +101,7 @@ ContactList::OnListViewContextItemStateChanged(ListView& listView, int index, in
 
 void
 ContactList::OnListViewItemLongPressed(ListView& listView, int index, int elementId,
-               bool& invokeListViewItemCallback)
+                                                                          bool& invokeListViewItemCallback)
 {
        AppLogDebug("ENTER");
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
@@ -115,7 +115,7 @@ ContactList::GetItemCount(void)
 
        int count(0);
        // In case of single recipient, it will never be invoked.
-       if(__pContactList && __pContactList->GetCount() > 1)
+       if (__pContactList && __pContactList->GetCount() > 1)
        {
                count = __pContactList->GetCount();
        }
@@ -132,12 +132,12 @@ ContactList::CreateItem(int index, int itemWidth)
        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)
+       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);
+               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()));
@@ -149,7 +149,7 @@ ContactList::DeleteItem(int index, ListItemBase* pItem, int itemWidth)
 {
        AppLogDebug("ENTER");
 
-       if(pItem)
+       if (pItem)
        {
                delete pItem;
                pItem = null;
@@ -164,13 +164,13 @@ ContactList::ContactListPopup(void)
 {
        AppLogDebug("ENTER");
        // Release memory if exist
-       if(__pContactPopup)
+       if (__pContactPopup)
        {
-               delete __pContactPopup;
+               delete __pContactPopup;
                __pContactPopup = null;
        }
        __pContactPopup = new (std::nothrow) ContactPopup(*this);
-       __pContactPopup->Construct(__titleName,__contactNumber);
+       __pContactPopup->Construct(__titleName, __contactNumber);
        __pContactPopup->Show();
 
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
@@ -183,17 +183,17 @@ ContactList::OnPopupListItemSelected(const Control& popup, int selectedItem, con
 {
        AppLogDebug("ENTER");
 
-       if(!pPopupListItem)
+       if (!pPopupListItem)
        {
                AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
                return;
        }
-       const PopupListItem* pPopupSelectItem = (PopupListItem*)pPopupListItem;
-       switch(pPopupSelectItem->GetActionId())
+       const PopupListItem* pPopupSelectItem = (PopupListItem*) pPopupListItem;
+       switch (pPopupSelectItem->GetActionId())
        {
        case IDA_CONVERSATION_FORM_VOICE_CALL:
        {
-               ifCommonUtil::IsSimAvailable())
+               if (CommonUtil::IsSimAvailable())
                {
                        ContactUtility::VoiceCall(__contactNumber);
                }
@@ -222,6 +222,7 @@ ContactList::OnPopupListItemSelected(const Control& popup, int selectedItem, con
        case IDA_CONVERSATION_FORM_UNBLOCK:
                UnBlockPhoneNumber();
                break;
+
        default:
                break;
 
@@ -231,15 +232,15 @@ ContactList::OnPopupListItemSelected(const Control& popup, int selectedItem, con
 }
 
 void
-ContactList::OnPopupClose(Object* pObject )
+ContactList::OnPopupClose(Object* pObject)
 {
-       if(__pContactPopup && __pContactPopup->Equals(*pObject))
+       if (__pContactPopup && __pContactPopup->Equals(*pObject))
        {
                delete __pContactPopup;
                __pContactPopup = null;
        }
 
-       if(__pBlockConfirmPopup && __pBlockConfirmPopup->Equals(*pObject))
+       if (__pBlockConfirmPopup && __pBlockConfirmPopup->Equals(*pObject))
        {
                delete __pBlockConfirmPopup;
                __pBlockConfirmPopup = null;
@@ -279,14 +280,14 @@ ContactList::OnActionPerformed(const Control& source, int actionId)
 {
        AppLogDebug("ENTER");
 
-       switch(actionId)
+       switch (actionId)
        {
        case IDA_PHONENUMBER_BLOCK_OK:
        {
                SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
                pSettingPrModel->AddToFilter(__contactNumber, 1);
                pSettingPrModel->RefreshSpamFilterList();
-               if(__pBlockConfirmPopup)
+               if (__pBlockConfirmPopup)
                {
                        __pBlockConfirmPopup->SetShowState(false);
                        delete __pBlockConfirmPopup;
@@ -297,7 +298,7 @@ ContactList::OnActionPerformed(const Control& source, int actionId)
 
        case IDA_PHONENUMBER_BLOCK_CANCEL:
        {
-               if(__pBlockConfirmPopup)
+               if (__pBlockConfirmPopup)
                {
                        __pBlockConfirmPopup->SetShowState(false);
                        delete __pBlockConfirmPopup;
@@ -315,13 +316,20 @@ ContactList::OnActionPerformed(const Control& source, int actionId)
 }
 
 void
+ContactList::UpdateContactListDetails(IList* pContactListDetails)
+{
+       // Not taking ownership
+       __pContactList = (ArrayList*) pContactListDetails;
+}
+
+void
 ContactList::UnBlockPhoneNumber(void)
 {
        AppLogDebug("ENTER");
 
        SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
        int filterIndex = pSettingPrModel->GetFilterListIndex(__contactNumber);
-       pSettingPrModel->DeleteFilter(filterIndex,1);
+       pSettingPrModel->DeleteFilter(filterIndex, 1);
        pSettingPrModel->RefreshSpamFilterList();
 
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
index 5205e6c..3f3725f 100644 (file)
@@ -100,7 +100,6 @@ ContactUtility::ViewContact(const String& contactNumber)
                Addressbook* pAddressbook = AddressbookManager::GetInstance()->GetAddressbookN();\r
                if (pAddressbook)\r
                {\r
-                       pAddressbook->SetEventListener(null);\r
                        IList* pContactList = pAddressbook->SearchContactsByPhoneNumberN(contactNumber);\r
                        if (pContactList)\r
                        {\r
@@ -137,13 +136,13 @@ ContactUtility::GetContact(IList* pContactList, const String& phoneNumber)
 {\r
        Contact* pRecipientContact = null;\r
        bool matchFound(false);\r
-       for(int index = 0;index < pContactList->GetCount();index++)\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
+                       if (pPhoneNumberList)\r
                        {\r
                                PhoneNumber* pPhoneNumber = null;\r
                                IEnumerator* pEnum = pPhoneNumberList->GetEnumeratorN();\r
@@ -162,7 +161,7 @@ ContactUtility::GetContact(IList* pContactList, const String& phoneNumber)
                                }\r
                                pPhoneNumberList->RemoveAll(true);\r
                                delete pPhoneNumberList;\r
-                               if(matchFound)\r
+                               if (matchFound)\r
                                {\r
                                        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
                                        // return match contact\r
index 57fc715..101cac1 100644 (file)
@@ -48,6 +48,7 @@ ConversationData::ConversationData(const String& threadName)
        , __pThumbnailBitmap(null)
        , __subjectStr(IDS_BLANK)
        , __animationIconIndex(MSG_ICON_PROGRESS_01)
+       , __isAnimationStarted(false)
 {
        AppLogDebug("ENTER");
        AppLogDebug("EXIT");
@@ -169,7 +170,9 @@ ConversationData::CloneN(void)
                convData->__timeStamp = this->__timeStamp;
                convData->__pageCount = this->__pageCount;
                convData->__attachmentCount = this->__attachmentCount;
-               convData->__thumbnailPath = this->__thumbnailPath;
+               convData->__imagePath = this->__audioPath;
+               convData->__imagePath = this->__imagePath;
+               convData->__imagePath = this->__videoPath;
                convData->__subjectStr = this->__subjectStr;
        }
 
@@ -297,11 +300,11 @@ ConversationData::IsSentFail(void) const
 {
        AppLogDebug("ENTER");
 
-       bool setFaild(false);
-       setFaild = (__networkStatus == MSG_NETWORK_SEND_FAIL);
+       bool sentFaild(false);
+       sentFaild = (__networkStatus == MSG_NETWORK_SEND_FAIL);
 
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
-       return setFaild;
+       return sentFaild;
 }
 
 bool
@@ -309,7 +312,7 @@ ConversationData::IsSending(void) const
 {
        AppLogDebug("ENTER");
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
-       return (__networkStatus == MSG_NETWORK_SENDING);
+       return  (__networkStatus == MSG_NETWORK_SENDING);
 }
 
 bool
@@ -326,7 +329,8 @@ ConversationData::InitMessageBody(msg_struct_t pMessageInfo)
        AppLogDebug("ENTER");
 
        result r = E_SUCCESS;
-       char* pMsgText = new (std::nothrow) char[MAX_MSG_TEXT_LEN];
+       char* pMsgText = new (std::nothrow) char[MAX_MSG_TEXT_LEN + 1];
+       memset(pMsgText, 0, MAX_MSG_TEXT_LEN + 1);
        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)
@@ -454,19 +458,59 @@ Bitmap*
 ConversationData::GetThumbnail(void)
 {
        AppLogDebug("ENTER");
-       if (!__pThumbnailBitmap && __thumbnailPath.GetLength() > 0)
+
+       if (!__pThumbnailBitmap)
        {
-               Image* pImage = new (std::nothrow) Image();
-               pImage->Construct();
-               __pThumbnailBitmap = pImage->DecodeN(__thumbnailPath, BITMAP_PIXEL_FORMAT_ARGB8888,
-                                                                                        310, 204);
-               delete pImage;
+               if (!__videoPath.IsEmpty())
+               {
+                       // Check Video path exist or not.
+                       Image* pImage = new (std::nothrow) Image();
+                       pImage->Construct();
+                       __pThumbnailBitmap = pImage->DecodeN(__videoPath, BITMAP_PIXEL_FORMAT_ARGB8888,
+                                                                                                W_BUBBLE_THUMBNAIL_310PX, H_BUBBLE_THUMBNAIL_204PX);
+               }
+               else if (!__imagePath.IsEmpty())
+               {
+                       // Check Video path exist or not.
+                       Image* pImage = new (std::nothrow) Image();
+                       pImage->Construct();
+                       __pThumbnailBitmap = pImage->DecodeN(__imagePath, BITMAP_PIXEL_FORMAT_ARGB8888,
+                                                                                                W_BUBBLE_THUMBNAIL_310PX, H_BUBBLE_THUMBNAIL_204PX);
+               }
        }
+
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
        return __pThumbnailBitmap;
 }
 
 const String&
+ConversationData::GetVideoPath(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       // It will return empty in case video file does not exist
+       return __videoPath;
+}
+
+const String&
+ConversationData::GetImagePath(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       // It will return empty in case image file does not exist
+       return __imagePath;
+}
+
+const String&
+ConversationData::GetAudioPath(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       // It will return empty in case audio file does not exist
+       return __audioPath;
+}
+
+const String&
 ConversationData::GetSubject(void) const
 {
        AppLogDebug("ENTER");
@@ -507,16 +551,37 @@ ConversationData::InitMmsData(msg_struct_t pMessageInfo)
                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);
+       char filePath[MSG_FILEPATH_LEN_MAX + 1];
+       err = msg_get_str_value(pMessageInfo, MSG_CONV_MSG_AUDIO_NAME_STR, filePath, MSG_FILEPATH_LEN_MAX);
+       if (err != MSG_SUCCESS)
+       {
+               AppLogDebug("EXIT:Unable to audio file path err =%d", (int) err);
+               r = E_FAILURE;
+               return r;
+       }
+       __audioPath.Append(filePath);
+       AppLogDebug("Audio PATH: %S", __audioPath.GetPointer());
+
+       // Get default thumbnail path; Field: MSG_CONV_MSG_IMAGE_THUMB_PATH_STR/MSG_CONV_MSG_VIDEO_THUMB_PATH_STR
+       err = msg_get_str_value(pMessageInfo, MSG_CONV_MSG_IMAGE_THUMB_PATH_STR, filePath, MAX_IMAGE_PATH_LEN);
+       if (err != MSG_SUCCESS)
+       {
+               AppLogDebug("EXIT:Unable to fetch image thumbnail path err =%d", (int) err);
+               r = E_FAILURE;
+               return r;
+       }
+       __imagePath.Append(filePath);
+       AppLogDebug("IMAGE VIDEO PATH: %S", __imagePath.GetPointer());
+
+       err = msg_get_str_value(pMessageInfo, MSG_CONV_MSG_VIDEO_THUMB_PATH_STR, filePath, MAX_IMAGE_PATH_LEN);
        if (err != MSG_SUCCESS)
        {
-               AppLogDebug("EXIT:Unable to fetch thumbnail path err =%d", (int) err);
+               AppLogDebug("EXIT: Fetch video thumb nail path err = %d", (int) err);
                r = E_FAILURE;
                return r;
        }
-       __thumbnailPath.Append(thumbnailPath);
-       AppLog("THUMNAIL PATH: %S", __thumbnailPath.GetPointer());
+       __videoPath.Append(filePath);
+       AppLogDebug("IMAGE VIDEO PATH: %S", __videoPath.GetPointer());
 
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
        return r;
index 713d682..42eb2bd 100644 (file)
@@ -27,7 +27,6 @@
 #include "MsgConversationPresentationModel.h"
 #include "MsgDurationPopup.h"
 #include "MsgFontsettings.h"
-#include "MsgLVBubbleListItem.h"
 #include "MsgMessageComposePanel.h"
 #include "MsgMessageData.h"
 #include "MsgMessagePresentationModel.h"
 #include "MsgSettingPresentationModel.h"
 #include "MsgSmsManager.h"
 #include "MsgThreadData.h"
+#include "MsgTVBubbleListItem.h"
 #include "MsgTypes.h"
 
-using namespace Tizen::Base;
 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::Graphics;
 using namespace Tizen::Ui::Scenes;
-using namespace Tizen::Base::Collection;
-using namespace Tizen::Base::Utility;
+using namespace Tizen::System;
+
 
 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)
+       , __pRecipientContextMenu(null)
        , __pDeleteConfirmPopup(null)
        , __pContactDetails(null)
        , __pResendDelete(null)
-       , __pTrayPanel(null)
+       , __pMoreContextMenu(null)
        , __pOptionPopup(null)
        , __pResendDeletePopup(null)
        , __pBlockPopup(null)
        , __pSaveAttachmentsPopup(null)
        , __pDurationPopup(null)
-       , __isListViewItemLongPressed(false)
+       , __isConvNeedToUpdate(false)
+       , __volumeLevel(-1)
 {
        //Empty implementation
 }
@@ -80,11 +82,20 @@ ConversationForm::~ConversationForm(void)
 
        // Cancel ongoing operation.
        ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
-       if(pConvPrModel)
+       if (pConvPrModel)
        {
                pConvPrModel->RemoveConversationEventListener(*this);
                pConvPrModel->CancelDelete();
        }
+       SettingInfo::RemoveSettingEventListener(*this);
+       if (__pOptionPopup)
+       {
+               delete __pOptionPopup;
+       }
+       if (__pResendDelete)
+       {
+               delete __pResendDelete;
+       }
        if (__pDurationPopup)
        {
                delete __pDurationPopup;
@@ -128,6 +139,11 @@ ConversationForm::Initialize(void)
                r = Construct(L"IDL_CONVERSATION_LIST_EDIT_FORM");
        }
        AddKeyEventListener(*this);
+
+       // For increasing/decreasing font size when volume level is changed:
+       SettingInfo::AddSettingEventListener(*this);
+       SettingInfo::GetValue(IDS_KEY_VOLUME_LEVEL, __volumeLevel);
+
        AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
        return (!IsFailed(r));
 }
@@ -194,38 +210,6 @@ 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();
@@ -235,25 +219,8 @@ ConversationForm::SetEditModeFooter(Footer& footer)
        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);
@@ -315,6 +282,16 @@ ConversationForm::SetEditModeHeader(Header& header)
        String strText;
        Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_DELETE", strText);
        header.SetTitleText(strText);
+
+       ButtonItem buttonRightItem;
+       buttonRightItem.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_SELECT_ALL);
+       Bitmap* pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SELECT_ALL);
+       buttonRightItem.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pBitMap);
+       pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SELECT_ALL_PRESSED);
+       buttonRightItem.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pBitMap);
+       header.SetButton(BUTTON_POSITION_RIGHT, buttonRightItem);
+       header.Invalidate(true);
+
        header.Draw();
 
        AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
@@ -329,7 +306,6 @@ ConversationForm::SetViewModeHeader(Header& header)
        // Update header.
        header.RemoveAllItems();
        header.RemoveAllButtons();
-
        header.SetStyle(HEADER_STYLE_SEGMENTED);
        String strText;
        HeaderItem headerLeftItem;
@@ -389,8 +365,8 @@ ConversationForm::InitializeConversationViewControls(void)
 
        result r = E_SUCCESS;
        //Initialize from element
-       __pConvMessageList = static_cast<GroupedListView*>(GetControl(L"IDC_MESSAGES_GROUPEDLIST"));
-       String strText;
+       __pConvMessageList = static_cast<GroupedTableView*>(GetControl(L"IDC_CONV_GROUPEDTABLELIST"));
+       __pConvMessageList->SetMinimumSize(Dimension(__pConvMessageList->GetWidth(), H_LIST_ITEM_112PX));
        Rectangle rect = GetClientAreaBounds();
        int panelHeight = 0;
        __pMsgComposePanel = new (std::nothrow) MessageComposePanel();
@@ -411,9 +387,8 @@ ConversationForm::InitializeConversationViewControls(void)
        if (__pConvMessageList)
        {
                __pConvMessageList->SetBounds(Rectangle(0, 0, rect.width, rect.height - panelHeight));
-               __pConvMessageList->SetTextOfEmptyList(IDS_BLANK);
-               __pConvMessageList->SetItemProvider(*this);
-               __pConvMessageList->AddGroupedListViewItemEventListener(*this);
+               __pConvMessageList->SetItemProvider(this);
+               __pConvMessageList->AddGroupedTableViewItemEventListener(*this);
                __pConvMessageList->SetBackgroundColor(COLOR_BUBBLE_BG);
                __pConvMessageList->AddKeyEventListener(*this);
                __pConvMessageList->AddTouchEventListener(*this);
@@ -431,12 +406,12 @@ ConversationForm::InitializeConversationEditControls(void)
        result r = E_SUCCESS;
        Rectangle rect = GetClientAreaBounds();
 
-       __pConvMessageList = static_cast<GroupedListView*>(GetControl(L"IDC_CONV_EDIT_GROUPEDLIST"));
+       __pConvMessageList = static_cast<GroupedTableView*>(GetControl(L"IDC_CONV_GROUPEDTABLELIST"));
        if (__pConvMessageList)
        {
                __pConvMessageList->SetBounds(Rectangle(0, 0, rect.width, rect.height));
-               __pConvMessageList->SetItemProvider(*this);
-               __pConvMessageList->AddGroupedListViewItemEventListener(*this);
+               __pConvMessageList->AddGroupedTableViewItemEventListener(*this);
+               __pConvMessageList->SetItemProvider(this);
                __pConvMessageList->SetBackgroundColor(COLOR_BUBBLE_BG);
        }
        else
@@ -447,9 +422,8 @@ ConversationForm::InitializeConversationEditControls(void)
        SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, true);
        SetEditModeHeader(*GetHeader());
        SetEditModeFooter(*GetFooter());
-       __pSelectedIds = new (std::nothrow) ArrayListT< int>();
+       __pSelectedIds = new (std::nothrow) ArrayListT<int>();
        __pSelectedIds->Construct();
-       AddEditCheckBox();
        AddLabelSelectionInfo();
 
        AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
@@ -467,9 +441,9 @@ ConversationForm::OnTerminating(void)
                delete __pConContactList;
        }
 
-       if (__pContextMenuText)
+       if (__pRecipientContextMenu)
        {
-               delete __pContextMenuText;
+               delete __pRecipientContextMenu;
        }
 
        AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
@@ -509,13 +483,13 @@ ConversationForm::OnSceneActivatedN(const SceneId& previousSceneId,
                        __pMsgComposePanel->ShowKeypad();
                }
        }
-       __pConvMessageList->UpdateList();
+       __pConvMessageList->UpdateTableView();
        // Scroll to latest message.
        int lastGroupIndex = __pConvMessageList->GetGroupCount() - 1;
        int listItemCount = __pConvMessageList->GetItemCountAt(lastGroupIndex);
-       if (lastGroupIndex>= 0 && listItemCount > 0)
+       if (lastGroupIndex >= 0 && listItemCount > 0)
        {
-               __pConvMessageList->ScrollToItem(lastGroupIndex, listItemCount - 1, LIST_SCROLL_ITEM_ALIGNMENT_BOTTOM);
+               __pConvMessageList->ScrollToItem(lastGroupIndex, listItemCount - 1, TABLE_VIEW_SCROLL_ITEM_ALIGNMENT_BOTTOM);
        }
        // Prepare contact list
        PrepareContactList();
@@ -568,6 +542,15 @@ ConversationForm::OnActionPerformed(const Control& source, int actionId)
        //Handle command
        switch (actionId)
        {
+       case IDA_SELECT_ALL:
+       {
+               ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+               int totalCount = pConvPrModel->GetCount();
+               bool selectAll(totalCount != __pSelectedIds->GetCount());
+               CheckAll(selectAll);
+       }
+       break;
+       
        case IDA_SELECT_ALL_ON:
        {
                CheckAll(true);
@@ -588,11 +571,25 @@ ConversationForm::OnActionPerformed(const Control& source, int actionId)
                MessageComposeData* pComposeData = __pMsgComposePanel->GetMessageComposeDataN();
                if (pComposeData)
                {
+                       ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();\r
+                       int draftId(-1);\r
+                       if (pConvPrModel)\r
+                       {\r
+                               const MessageData* pDraftMessage = pConvPrModel->GetDraftMessage();\r
+                               if (pDraftMessage)\r
+                               {\r
+                                       draftId = pDraftMessage->GetEntryId();\r
+                               }\r
+                       }\r
                        MessagePresentationModel* pMessagePresentationModel = MessagePresentationModel::GetInstance();
                        if (pMessagePresentationModel)
                        {
                                pMessagePresentationModel->SaveMessage(*pComposeData, __pCurrentThreadEntry->GetEntryId());
                        }
+                       if (draftId > -1)\r
+                       {\r
+                               pConvPrModel->Delete(draftId, REQUEST_DELETE_MESSAGE);\r
+                       }\r
                        delete pComposeData;
                }
                else
@@ -633,67 +630,19 @@ ConversationForm::OnActionPerformed(const Control& source, int actionId)
 
        case IDA_OPTION_TRAY_COMMAND:
        {
-               ShowContactList(false);
-               Rectangle rect = GetClientAreaBounds();
-               if (!__pTrayPanel)
+               if(__pList && __pList->GetShowState())
                {
-                       //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);
-                       }
+                       ShowContactList(false);
                }
                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);
-                       }
+                       ShowMoreContextMenu(source);
                }
        }
        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)
                {
@@ -713,10 +662,24 @@ ConversationForm::OnActionPerformed(const Control& source, int actionId)
                MessageComposeData* pComposeData = __pMsgComposePanel->GetMessageComposeDataN();
                if (pComposeData)
                {
-                       MessagePresentationModel* pmessagePresentationModel = MessagePresentationModel::GetInstance();
-                       if (pmessagePresentationModel)
-                       {
-                               pmessagePresentationModel->SaveMessage(*pComposeData, __pCurrentThreadEntry->GetEntryId());
+                       ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();\r
+                       int draftId(-1);\r
+                       if (pConvPrModel)\r
+                       {\r
+                               const MessageData* pDraftMessage = pConvPrModel->GetDraftMessage();\r
+                               if (pDraftMessage)\r
+                               {\r
+                                       draftId = pDraftMessage->GetEntryId();\r
+                               }\r
+                       }\r
+                       MessagePresentationModel* pMessagePresentationModel = MessagePresentationModel::GetInstance();\r
+                       if (pMessagePresentationModel)\r
+                       {\r
+                               pMessagePresentationModel->SaveMessage(*pComposeData, __pCurrentThreadEntry->GetEntryId());\r
+                       }\r
+                       if (draftId > -1)\r
+                       {\r
+                               pConvPrModel->Delete(draftId, REQUEST_DELETE_MESSAGE);\r
                        }
                        delete pComposeData;
                }
@@ -806,7 +769,7 @@ ConversationForm::OnActionPerformed(const Control& source, int actionId)
                }
                else
                {
-                       CreateContextMenu(source);
+                       ShowRecipientContextMenu(source);
                }
        }
        break;
@@ -847,6 +810,13 @@ ConversationForm::OnActionPerformed(const Control& source, int actionId)
        }
        break;
 
+       case IDA_ADD_SUBJECT:
+       {
+               RequestId requestId = REQUEST_ADD_SUBJECT;
+               __pMsgComposePanel->SendUserEvent(requestId,null);
+       }
+       break;
+
        case IDA_PREVIEW:
        {
                // Save to draft
@@ -877,8 +847,13 @@ ConversationForm::OnActionPerformed(const Control& source, int actionId)
                __pDurationPopup = new (std::nothrow) DurationPopup(*this);
                __pDurationPopup->Construct(L"IDL_DURATION_POPUP");
                __pDurationPopup->SetDuration(__pMsgComposePanel->GetDefaultPageDuration());
-               __pDurationPopup->Show();
-               __pDurationPopup->SetFocusToEditor();
+               __pDurationPopup->ShowPopup();
+       }
+       break;
+       
+       case IDA_BUTTON_DROP_DOWN:
+       {
+               __pMsgComposePanel->HideKeypad();
        }
        break;
 
@@ -901,31 +876,41 @@ ConversationForm::OnKeypadClosed(Control& source)
 {
        AppLogDebug("ENTER");
 
+       //Hide drop-down button in header and display back button:
+       GetHeader()->RemoveButtonAt(BUTTON_POSITION_RIGHT);
+       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);
+       GetHeader()->SetButton(BUTTON_POSITION_RIGHT, btnRight);
+
        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
+       if (pClibBoard && pClibBoard->IsPopupVisible())
        {
-               __pMsgComposePanel->SetBounds(Rectangle(0, prePanelBounds.y - PANEL_HEIGHT + 35, clientArea.width, __pMsgComposePanel->GetDisplayHeight()));
+               // When clip board is visible, panel position should change
+               // This if condition should be removed later
+               __pMsgComposePanel->SetBounds(Rectangle(0, prePanelBounds.y - CLIPBOARD_HEIGHT_OFFSET, clientArea.width, __pMsgComposePanel->GetDisplayHeight()));
+               int listHeight(__pMsgComposePanel->GetY());
+               __pConvMessageList->SetSize(__pConvMessageList->GetWidth(), listHeight);
        }
        else
        {
+               int listHeight(clientArea.height - __pMsgComposePanel->GetHeight());
+               __pConvMessageList->SetSize(clientArea.width, listHeight);
                __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)
+       if (lastGroupIndex >= 0 && listItemCount > 0)
        {
-               __pConvMessageList->ScrollToItem(lastGroupIndex, listItemCount - 1, LIST_SCROLL_ITEM_ALIGNMENT_BOTTOM);
+               __pConvMessageList->ScrollToItem(lastGroupIndex, listItemCount - 1, TABLE_VIEW_SCROLL_ITEM_ALIGNMENT_BOTTOM);
        }
        AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
        return;
@@ -954,23 +939,28 @@ ConversationForm::OnKeypadOpened(Control& source)
 {
        AppLogDebug("ENTER");
 
+       //Hide Back button in header and display drop down button:
+       GetHeader()->RemoveButtonAt(BUTTON_POSITION_RIGHT);
+       ButtonItem btnRight;
+       btnRight.Construct(BUTTON_ITEM_STYLE_ICON, IDA_BUTTON_DROP_DOWN);
+       Bitmap* pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SIP_CLOSE);
+       btnRight.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pBitMap);
+       pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SIP_CLOSE_PRESS);
+       btnRight.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pBitMap);
+       GetHeader()->SetButton(BUTTON_POSITION_RIGHT, btnRight);
+
        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)
+       if (lastGroupIndex >= 0 && listItemCount > 0)
        {
-               __pConvMessageList->ScrollToItem(lastGroupIndex, listItemCount - 1, LIST_SCROLL_ITEM_ALIGNMENT_BOTTOM);
+               __pConvMessageList->ScrollToItem(lastGroupIndex, listItemCount - 1, TABLE_VIEW_SCROLL_ITEM_ALIGNMENT_BOTTOM);
        }
        AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
        return;
@@ -988,6 +978,7 @@ void
 ConversationForm::OnSizeIncrease(const Tizen::Ui::Control& control)
 {
        AppLogDebug("ENTER");
+
        Rectangle clientArea = GetClientAreaBounds();
        Rectangle prePanelBounds = __pMsgComposePanel->GetBounds();
        int panelHeight = __pMsgComposePanel->GetDisplayHeight();
@@ -997,9 +988,9 @@ ConversationForm::OnSizeIncrease(const Tizen::Ui::Control& control)
        __pConvMessageList->SetSize(clientArea.width, clientArea.height - panelHeight);
        int lastGroupIndex = __pConvMessageList->GetGroupCount() - 1;
        int listItemCount = __pConvMessageList->GetItemCountAt(lastGroupIndex);
-       if (lastGroupIndex>= 0 && listItemCount > 0 )
+       if (lastGroupIndex >= 0 && listItemCount > 0)
        {
-               __pConvMessageList->ScrollToItem(lastGroupIndex, listItemCount - 1, LIST_SCROLL_ITEM_ALIGNMENT_BOTTOM);
+               __pConvMessageList->ScrollToItem(lastGroupIndex, listItemCount - 1, TABLE_VIEW_SCROLL_ITEM_ALIGNMENT_BOTTOM);
        }
        //      Draw();
        //      Show();
@@ -1010,6 +1001,7 @@ void
 ConversationForm::OnSizeDecrease(const Tizen::Ui::Control& control)
 {
        AppLogDebug("ENTER");
+
        Rectangle clientArea = GetClientAreaBounds();
        Rectangle prePanelBounds = __pMsgComposePanel->GetBounds();
        int panelHeight = __pMsgComposePanel->GetDisplayHeight();
@@ -1019,15 +1011,72 @@ ConversationForm::OnSizeDecrease(const Tizen::Ui::Control& control)
        __pConvMessageList->SetSize(clientArea.width, clientArea.height - panelHeight);
        int lastGroupIndex = __pConvMessageList->GetGroupCount() - 1;
        int listItemCount = __pConvMessageList->GetItemCountAt(lastGroupIndex);
-       if (lastGroupIndex>= 0 && listItemCount > 0)
+       if (lastGroupIndex >= 0 && listItemCount > 0)
        {
-               __pConvMessageList->ScrollToItem(lastGroupIndex, listItemCount - 1, LIST_SCROLL_ITEM_ALIGNMENT_BOTTOM);
+               __pConvMessageList->ScrollToItem(lastGroupIndex, listItemCount - 1, TABLE_VIEW_SCROLL_ITEM_ALIGNMENT_BOTTOM);
        }
        //      Draw();
        //      Show();
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
 }
 
+
+void
+ConversationForm::OnSettingChanged(Tizen::Base::String& key)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("Initial volume level is %d", __volumeLevel);
+       result r = E_SUCCESS;
+
+       int mediaVolumeLevel = -1;
+       r = SettingInfo::GetValue(IDS_KEY_VOLUME_LEVEL, mediaVolumeLevel);
+       if (r == E_SUCCESS)
+       {
+               if (mediaVolumeLevel > __volumeLevel)
+               {
+                       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);
+                       if (__convFormType == CONVERSATION_LIST_FORM_VIEW)
+                       {
+                               __pMsgComposePanel->SetTextSize(size);
+                               __pMsgComposePanel->Invalidate(true);
+                       }
+                       __pConvMessageList->UpdateTableView();
+               }
+               else if (mediaVolumeLevel < __volumeLevel)
+               {
+                       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);
+                       if (__convFormType == CONVERSATION_LIST_FORM_VIEW)
+                       {
+                               __pMsgComposePanel->SetTextSize(size);
+                               __pMsgComposePanel->Invalidate(true);
+                       }
+                       __pConvMessageList->UpdateTableView();
+               }
+
+               __volumeLevel = mediaVolumeLevel;
+       }
+
+       AppLogDebug("Volume level is %d and result is %d", mediaVolumeLevel, r);
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+
+
 void
 ConversationForm::OnFormBackRequested(Form& source)
 {
@@ -1061,73 +1110,82 @@ ConversationForm::OnConversationListChange(MsgStorageChangeType msgStorageChange
 {
        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)
+       if (msgStorageChangeType == MSG_STORAGE_UPDATE_CONTACT)
        {
                ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
                if (pConvPrModel && __pCurrentThreadEntry)
                {
                        int threadId = __pCurrentThreadEntry->GetEntryId();
                        ThreadData* pThreadData = pConvPrModel->GetThreadDataByIdN(threadId);
-                       if(__pCurrentThreadEntry)
+                       if (__pCurrentThreadEntry)
                        {
                                delete __pCurrentThreadEntry;
                        }
                        __pCurrentThreadEntry = pThreadData;
                        Header* pHeader = GetHeader();
                        pHeader->Invalidate(true);
-                       if(__pContactDetails)
+                       if (__pContactDetails)
                        {
                                delete __pContactDetails;
                                __pContactDetails = null;
                        }
                        PrepareContactList();
                        SetViewModeHeader(*pHeader);
-                       if(__pList)
+                       if (__pList)
                        {
-                               ShowContactList(true);
+                               if (__pContactDetails && __pContactDetails->GetCount() > 1)
+                               {
+                                       ShowContactList(true);
+                               }
                        }
                }
        }
-       else
+
+       UiApp* pAppUi = UiApp::GetInstance();
+       if (pAppUi && pAppUi->GetAppUiState() != APP_UI_STATE_FOREGROUND)
        {
-               ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
-               if (pConvPrModel && __pCurrentThreadEntry)
+               __isConvNeedToUpdate = true;
+               return;
+       }
+
+       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;
+       }
+
+       ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+       if (pConvPrModel && __pCurrentThreadEntry)
+       {
+               int threadId = __pCurrentThreadEntry->GetEntryId();
+               pConvPrModel->GetConversationMessageList(threadId);
+               if (pConvPrModel->GetCount() <= 0)
                {
-                       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->UpdateTableView();
+                       const MessageData* draftMessage = pConvPrModel->GetDraftMessage();
+                       if ((__convFormType == CONVERSATION_LIST_FORM_VIEW) && draftMessage)
                        {
-                               // Back to thread list view.
-                               SceneManager* pSceneManager = SceneManager::GetInstance();
-                               pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_THREAD_LIST, SCENE_TRANSITION_ANIMATION_TYPE_NONE));
+                               // Load draft to UI
+                               __pMsgComposePanel->LoadMessageData(*draftMessage);
                        }
-                       else
+                       // 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->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();
-                               }
+                               __pConvMessageList->ScrollToItem(lastGroupIndex, listItemCount - 1, TABLE_VIEW_SCROLL_ITEM_ALIGNMENT_BOTTOM);
+                               __pConvMessageList->Invalidate(true);
                        }
                }
        }
@@ -1136,35 +1194,10 @@ ConversationForm::OnConversationListChange(MsgStorageChangeType msgStorageChange
 }
 
 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;
+       String strText, selcInfo;
        result r = E_SUCCESS;
        Rectangle rect = GetClientAreaBounds();
        __pSelectionInfo = static_cast<Label*>(GetControl(L"IDC_CONV_EDIT_LABEL"));
@@ -1177,8 +1210,8 @@ ConversationForm::AddLabelSelectionInfo()
        __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));
+       __pConvMessageList->SetBounds(Rectangle(rect.x, 0, rect.width,
+                                                                                       rect.height - H_MSG_SELECTION_INFO_LABEL));
        __pSelectionInfo->SetText(selcInfo);
 
        AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
@@ -1226,7 +1259,7 @@ void
 ConversationForm::ShowHideSelectionInfo(void)
 {
        AppLogDebug("ENTER");
-       String strText,selcInfo;
+       String strText, selcInfo;
        int selectCount(0);
        if (__pSelectedIds)
        {
@@ -1342,7 +1375,26 @@ ConversationForm::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
        }
        break;
 
-       case REQUEST_OPTION_POPUP:
+       case REQUEST_SHOW_OPTION_POPUP:
+       {
+               if (pArgs->GetCount() > 0)
+               {
+                       Integer* pDataIndex = (Integer*) pArgs->GetAt(0);
+                       ConversationData* pConvData = (ConversationData*) pConvPrModel->GetDataAt(pDataIndex->ToInt())->CloneN();
+                       pConvData->SetDisplayName(__pCurrentThreadEntry->GetDisplayName());
+                       if (pConvData)
+                       {
+                               __pOptionPopup = new (std::nothrow) OptionPopup(*this, pConvData);
+                               __pOptionPopup->Construct(__pCurrentThreadEntry->GetEntryId(), pDataIndex->ToInt());
+                               __pOptionPopup->SetShowState(true);
+                               __pOptionPopup->Show();
+                               //      pConvData = null; // Transfer ownership to popup
+                       }
+               }
+       }
+       break;
+
+       case REQUEST_DESTROY_OPTION_POPUP:
        {
                if (__pOptionPopup)
                {
@@ -1367,51 +1419,109 @@ ConversationForm::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
                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;
+                       // Apply focus to compose panel.
+                       __pMsgComposePanel->SetFocusToEditor();
                }
        }
        break;
 
-       case REQUEST_DELETE_START:
-               if(pArgs->GetCount() > 0)
+       case REQUEST_UPDATE_CONV_LIST:
+               if (__isConvNeedToUpdate)
                {
-                       Integer* pTotalCount = (Integer*)pArgs->GetAt(0);
-                       OnDeleteStart(pTotalCount->ToInt());
+                       __isConvNeedToUpdate = false;
+                       OnConversationListChange(MSG_STORAGE_UPDATE);
+                       Invalidate(true);
                }
                break;
 
-       case REQUEST_DELETE_UPDATE:
-               if(pArgs->GetCount() > 0)
+       case REQUEST_SHOW_IMAGE:
+       {
+               if (pArgs->GetCount() > 0)
                {
-                       Integer* pCurrentCount = (Integer*)pArgs->GetAt(0);
-                       Integer* pTotalCount = (Integer*)pArgs->GetAt(1);
-                       OnDeleteUpdate(pCurrentCount->ToInt(),pTotalCount->ToInt());
+                       String* pFilePath = (String*) pArgs->GetAt(0);
+                       CommonUtil::ShowImage(*pFilePath);
                }
-               break;
+       }
+       break;
 
-       case REQUEST_DELETE_COMPLETE:
-               if(pArgs->GetCount() > 0)
+       case REQUEST_PLAY_AUDIO:
+       {
+               if (pArgs->GetCount() > 0)
                {
-                       Integer* pStatus = (Integer*)pArgs->GetAt(0);
-                       OnDeleteComplete(pStatus->ToInt(),null);
+                       String* pFilePath = (String*) pArgs->GetAt(0);
+                       CommonUtil::PlayAudio(*pFilePath);
                }
-               break;
+       }
+       break;
 
-       default:
-               break;
+       case REQUEST_PLAY_VIDEO:
+       {
+               if (pArgs->GetCount() > 0)
+               {
+                       String* pFilePath = (String*) pArgs->GetAt(0);
+                       CommonUtil::PlayVideo(*pFilePath);
+               }
+       }
+       break;
 
+       case REQUEST_SHOW_RESEND_DELETE_POPUP:
+       {
+               if (pArgs->GetCount() > 0)
+               {
+                       Integer* pDataIndex = (Integer*) pArgs->GetAt(0);
+                       ResendDeletePopup(pDataIndex->ToInt());
+               }
+       }
+       break;
 
+       case REQUEST_SHOW_PROGRESS_POPUP:
+       {
+               // Create progress dialog.
+               if (!__pProgressPopup)
+               {
+                       String* pTitleText = (String*) pArgs->GetAt(0);
+                       Integer* pTotalCount = (Integer*) pArgs->GetAt(1);
+                       __pProgressPopup = new (std::nothrow) MsgProgressPopup();
+                       __pProgressPopup->Construct(0, pTotalCount->ToInt(), *pTitleText);
+               }
+               if (__pProgressPopup)
+               {
+                       __pProgressPopup->ShowPopup();
+               }
        }
+       break;
 
+       case REQUEST_UPDATE_PROGRESS_POPUP:
+       {
+               if (__pProgressPopup && pArgs->GetCount() > 1)
+               {
+                       String* pStatusInfo = (String*) pArgs->GetAt(0);
+                       Integer* pProgressValue = (Integer*) pArgs->GetAt(1);
+                       __pProgressPopup->UpdateProgressInfo(*pStatusInfo);
+                       __pProgressPopup->SetProgressValue(pProgressValue->ToInt());
+               }
+       }
+       break;
+
+       case REQUEST_DESTROY_PROGRESS_POPUP:
+       {
+               if (__pProgressPopup)
+               {
+                       __pProgressPopup->HidePopup();
+                       delete __pProgressPopup;
+                       __pProgressPopup = null;
+               }
+       }
+       break;
+
+       default:
+               break;
+
+       }
        delete pArgs;
+
        AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
        return;
 }
@@ -1421,10 +1531,12 @@ ConversationForm::OnDeleteStart(int totalCount)
 {
        AppLogDebug("ENTER");
 
-       if (__pProgressPopup)
-       {
-               __pProgressPopup->ShowPopup();
-       }
+       ArrayList* pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+       pArgs->Construct();
+       pArgs->Add(new (std::nothrow) String(IDS_DELETED_NUMBER_IDS));
+       pArgs->Add(new (std::nothrow) Integer(totalCount));
+       SendUserEvent(REQUEST_SHOW_PROGRESS_POPUP, pArgs);
+
        AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
        return;
 }
@@ -1438,8 +1550,11 @@ ConversationForm::OnDeleteUpdate(int deleteCount, int totalCount)
        {
                String statusInfo;
                statusInfo.Format(MAX_LEN_SELECTION_INFO, IDS_DELETED_NUMBER_IDS, deleteCount, totalCount);
-               __pProgressPopup->UpdateProgressInfo(statusInfo);
-               __pProgressPopup->SetProgressValue(deleteCount);
+               ArrayList* pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+               pArgs->Construct();
+               pArgs->Add(new (std::nothrow) String(statusInfo));
+               pArgs->Add(new (std::nothrow) Integer(deleteCount));
+               SendUserEvent(REQUEST_UPDATE_PROGRESS_POPUP, pArgs);
        }
 
        AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
@@ -1452,12 +1567,7 @@ ConversationForm::OnDeleteComplete(int errCode, Object* pThreadObject)
        // Back to thread view mode
        AppLogDebug("ENTER");
 
-       if (__pProgressPopup)
-       {
-               __pProgressPopup->HidePopup();
-               delete __pProgressPopup;
-               __pProgressPopup = null;
-       }
+       SendUserEvent(REQUEST_DESTROY_PROGRESS_POPUP, null);
        // UI thread, Back to list view mode.
        if (__convFormType == CONVERSATION_LIST_FORM_EDIT)
        {
@@ -1485,17 +1595,10 @@ ConversationForm::DeleteSelectedItem(void)
        {
                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);
+               pConvPrModel->Delete(__pSelectedIds, REQUEST_DELETE_MESSAGE, this);
                __pSelectedIds = null;
        }
        AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
@@ -1508,10 +1611,10 @@ ConversationForm::GetTitleText() const
 
        AppLogDebug("ENTER");
        String contactName;
-       if(__pContactDetails && __pContactDetails->GetCount()>0)
+       if (__pContactDetails && __pContactDetails->GetCount() > 0)
        {
                ContactDetails* firstRecipientName = static_cast<ContactDetails*>(__pContactDetails->GetAt(0));
-               if(firstRecipientName->contactName.CompareTo(String(IDS_UNKNOWN))== 0)
+               if (firstRecipientName->contactName.CompareTo(String(IDS_UNKNOWN)) == 0)
                {
                        contactName.Append(firstRecipientName->contactNumber);
                }
@@ -1519,7 +1622,7 @@ ConversationForm::GetTitleText() const
                {
                        contactName.Append(firstRecipientName->contactName);
                }
-               if(__pContactDetails->GetCount() >= 2)
+               if (__pContactDetails->GetCount() >= 2)
                {
                        contactName.Append(IDS_PLUS_SPACE);
                        contactName.Append(__pContactDetails->GetCount() - 1);
@@ -1597,6 +1700,7 @@ ConversationForm::ShowContactList(bool value)
                        __pList->SetItemProvider(*__pConContactList);
                        AddControl(*__pList);
                }
+               __pConContactList->UpdateContactListDetails(__pContactDetails);
                __pList->UpdateList();
                __pList->SetShowState(true);
        }
@@ -1619,71 +1723,110 @@ ConversationForm::ShowContactList(bool value)
 }
 
 result
-ConversationForm::CreateContextMenu(const Control& source)
+ConversationForm::ShowRecipientContextMenu(const Control& source)
 {
        AppLogDebug("ENTER");
 
        result r = E_SUCCESS;
        String strText;
-       int index = -1;
-       if (__pContextMenuText)
+       if (__pRecipientContextMenu)
        {
-               delete __pContextMenuText;
-               __pContextMenuText = null;
+               delete __pRecipientContextMenu;
+               __pRecipientContextMenu = null;
        }
-       if (__pContactDetails && __pContactDetails->GetCount()>0)
+       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);
+               __pRecipientContextMenu = new (std::nothrow) ContextMenu();
+               r = __pRecipientContextMenu->Construct(Point(source.GetWidth()/4,source.GetHeight()),   CONTEXT_MENU_STYLE_LIST);
+               __pRecipientContextMenu->SetColor(Color::GetColor(COLOR_ID_WHITE));
+               __pRecipientContextMenu->SetItemTextColor(CONTEXT_MENU_ITEM_STATUS_NORMAL,Color::GetColor(COLOR_ID_BLACK));
                if (r != E_SUCCESS)
                {
-                       delete __pContextMenuText;
-                       __pContextMenuText = null;
+                       delete __pRecipientContextMenu;
+                       __pRecipientContextMenu = 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);
+               __pRecipientContextMenu->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);
+                       __pRecipientContextMenu->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);
+                       __pRecipientContextMenu->AddItem(strText, IDA_CONVERSATION_FORM_VIEW_CONTACT);
                }
 
                SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
                pSettingPrModel->GetSpamFilterList();
                pSettingPrModel->RefreshSpamFilterList();
-               index = pSettingPrModel->GetFilterListIndex(contactname->contactNumber);
+               int 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);
+                       __pRecipientContextMenu->AddItem(strText, IDA_CONVERSATION_FORM_BLOCK);
                }
                else
                {
                        Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_OPT_UNBLOCK", strText);
-                       __pContextMenuText->AddItem(strText, IDA_CONVERSATION_FORM_UNBLOCK);
+                       __pRecipientContextMenu->AddItem(strText, IDA_CONVERSATION_FORM_UNBLOCK);
                }
-               __pContextMenuText->AddActionEventListener(*this);
-               __pContextMenuText->SetShowState(true);
-               __pContextMenuText->Show();
+               __pRecipientContextMenu->AddActionEventListener(*this);
+               __pRecipientContextMenu->SetShowState(true);
+               __pRecipientContextMenu->Show();
        }
 
+       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+result
+ConversationForm::ShowMoreContextMenu(const Control& source)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       if (__pMoreContextMenu)
+       {
+               delete __pMoreContextMenu;
+               __pMoreContextMenu = null;
+       }
+       __pMoreContextMenu = new (std::nothrow) ContextMenu();
+       __pMoreContextMenu->Construct(Point(source.GetWidth()*4/5,source.GetHeight() + MARGIN_15PX), CONTEXT_MENU_STYLE_LIST);
+       __pMoreContextMenu->SetColor(Color::GetColor(COLOR_ID_WHITE));
+       __pMoreContextMenu->SetItemTextColor(CONTEXT_MENU_ITEM_STATUS_NORMAL,Color::GetColor(COLOR_ID_BLACK));
+       String strText;
+       if (!__pMsgComposePanel->IsSubjectExists())
+       {
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_SUBJECT", strText);
+               __pMoreContextMenu->AddItem(strText, IDA_ADD_SUBJECT);
+       }
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_DELETE", strText);
+       __pMoreContextMenu->AddItem(strText, IDA_CONVERSATION_DELETE);
+       if(__pMsgComposePanel->IsMmsMode())
+       {
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK3_PREVIEW", strText);
+               __pMoreContextMenu->AddItem(strText, IDA_PREVIEW);
+               String strFormat;
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS", strFormat);
+               strText.Format(strFormat.GetLength() * 2, strFormat.GetPointer(), __pMsgComposePanel->GetDefaultPageDuration());
+               __pMoreContextMenu->AddItem(strFormat, IDA_PAGE_DURATION);
+       }
+       __pMoreContextMenu->AddActionEventListener(*this);
+       __pMoreContextMenu->SetShowState(true);
+       __pMoreContextMenu->Show();
 
        AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
        return r;
 }
 
+
 void
 ConversationForm::ContactHelper(int helperType)
 {
@@ -1787,7 +1930,7 @@ ConversationForm::OnKeyReleased(const Control& source, KeyCode keyCode)
                        }
                        int size = pFontSettings->GetMessageTextSize((SettingFontType) fontType);
                        __pMsgComposePanel->SetTextSize(size);
-                       __pConvMessageList->UpdateList();
+                       __pConvMessageList->UpdateTableView();
                }
                else if (keyCode == KEY_SIDE_DOWN)
                {
@@ -1800,7 +1943,7 @@ ConversationForm::OnKeyReleased(const Control& source, KeyCode keyCode)
                        }
                        int size = pFontSettings->GetMessageTextSize((SettingFontType) fontType);
                        __pMsgComposePanel->SetTextSize(size);
-                       __pConvMessageList->UpdateList();
+                       __pConvMessageList->UpdateTableView();
                }
        }
 
@@ -1851,6 +1994,16 @@ ConversationForm::OnTouchPressed(const Control& source,
 
        if (source.Equals(*__pConvMessageList))
        {
+               Clipboard* pClibBoard = Clipboard::GetInstance();
+               if (pClibBoard->IsPopupVisible())
+               {
+                       Rectangle rect = GetClientAreaBounds();
+                       __pMsgComposePanel->SetPosition(rect.x, rect.height - __pMsgComposePanel->GetDisplayHeight());
+
+                       int listHeight(__pMsgComposePanel->GetY());
+                       __pConvMessageList->SetSize(__pConvMessageList->GetWidth(), listHeight);
+                       __pMsgComposePanel->Invalidate(true);
+               }
                __pMsgComposePanel->HideKeypad();
        }
 
@@ -1903,103 +2056,84 @@ ConversationForm::UnBlockPhoneNumber(const String& phoneNumber)
        return;
 }
 
+//Tableview event
+void
+ConversationForm::OnGroupedTableViewGroupItemStateChanged(GroupedTableView& tableView, int groupIndex, TableViewGroupItem* pItem, TableViewItemStatus status)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+
+}
 
 void
-ConversationForm::OnGroupedListViewItemStateChanged(GroupedListView& listView, int groupIndex, int itemIndex, int elementId, ListItemStatus status)
+ConversationForm::OnGroupedTableViewItemStateChanged(GroupedTableView& tableView, int groupIndex, int itemIndex, TableViewItem* pItem, TableViewItemStatus status)
 {
        AppLogDebug("ENTER");
 
+       TVBubbleListItem* pBubbleItem = (TVBubbleListItem*) pItem;
+       int elementId = pBubbleItem->GetSelectedElementId();
+       // If long pressed then handle it, it is valid for only view mode.
+       if (pBubbleItem->IsLongPressed() && (__convFormType == CONVERSATION_LIST_FORM_VIEW) )
+       {
+               OnGroupedTableViewItemLongPressed(tableView, groupIndex, itemIndex, elementId);
+               AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+               return;
+       }
        //List item selected.
        ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
-       if (pConvPrModel)
+       if (!pConvPrModel)
+       {
+               AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+               return;
+       }
+       switch (status)
+       {
+       case TABLE_VIEW_ITEM_STATUS_CHECKED:
        {
                int index = pConvPrModel->GetSelectedIndex(groupIndex) + itemIndex;
                BaseData* pConvData = pConvPrModel->GetDataAt(index);
-
-               switch (status)
+               __pSelectedIds->Add(pConvData->GetEntryId());
+               if (__pSelectedIds->GetCount() > 0)
                {
-               case LIST_ITEM_STATUS_CHECKED:
+                       GetFooter()->SetItemEnabled(0, true);
+                       GetFooter()->Draw();
+               }
+               if (__pSelectedIds->GetCount() == pConvPrModel->GetCount())
                {
-                       __pSelectedIds->Add(pConvData->GetEntryId());
-                       if (__pSelectedIds->GetCount() > 0)
-                       {
-                               GetFooter()->SetItemEnabled(0, true);
-                               GetFooter()->Draw();
-                       }
-                       if (__pSelectedIds->GetCount() == pConvPrModel->GetCount())
-                       {
-                               __pCheckAll->SetSelected(true);
-                       }
-                       ShowHideSelectionInfo();
+                       //TODO: Need to update check box
                }
-               break;
+               ShowHideSelectionInfo();
+       }
+       break;
 
-               case LIST_ITEM_STATUS_UNCHECKED:
+       case TABLE_VIEW_ITEM_STATUS_UNCHECKED:
+       {
+               int index = pConvPrModel->GetSelectedIndex(groupIndex) + itemIndex;
+               BaseData* pConvData = pConvPrModel->GetDataAt(index);
+               __pSelectedIds->Remove(pConvData->GetEntryId());
+               if (__pSelectedIds->GetCount() <= pConvPrModel->GetCount())
                {
-                       __pSelectedIds->Remove(pConvData->GetEntryId());
-                       if (__pSelectedIds->GetCount() <= pConvPrModel->GetCount())
-                       {
-                               __pCheckAll->SetSelected(false);
-                       }
-                       ShowHideSelectionInfo();
+                       //TODO: Need to update check box
                }
-               break;
-
-               case LIST_ITEM_STATUS_SELECTED:
+               if (__pSelectedIds->GetCount() == 0)
                {
-                       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
-                       }
+                       GetFooter()->SetItemEnabled(0, false);
+                       GetFooter()->Draw();
                }
-               break;
+               ShowHideSelectionInfo();
+       }
+       break;
 
-               case LIST_ITEM_STATUS_HIGHLIGHTED:
-               case LIST_ITEM_STATUS_MORE:
-                       break;
-               }
+       case TABLE_VIEW_ITEM_STATUS_SELECTED:
+       {
+               __pMsgComposePanel->HideKeypad();
+               OnGroupedTableViewItemSelected(tableView, groupIndex, itemIndex, elementId);
+       }
+       break;
+
+       case TABLE_VIEW_ITEM_STATUS_HIGHLIGHTED:
+       case TABLE_VIEW_ITEM_STATUS_MORE:
+               break;
        }
 
        AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
@@ -2007,55 +2141,182 @@ ConversationForm::OnGroupedListViewItemStateChanged(GroupedListView& listView, i
 }
 
 void
-ConversationForm::OnGroupedListViewItemSwept(GroupedListView& listView, int groupIndex,
-                                                                                        int itemIndex, SweepDirection direction)
+ConversationForm::OnGroupedTableViewContextItemActivationStateChanged(GroupedTableView& tableView, int groupIndex, int itemIndex, TableViewContextItem* pContextItem, bool activated)
 {
        AppLogDebug("ENTER");
-       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
-       return;
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
 
 }
 
 void
-ConversationForm::OnGroupedListViewContextItemStateChanged(GroupedListView& listView, int groupIndex,
-                                                                                                                  int itemIndex, int elementId, ListContextItemStatus status)
+ConversationForm::OnGroupedTableViewItemLongPressed(GroupedTableView& tableView, int groupIndex, int itemIndex, int elementId)
 {
        AppLogDebug("ENTER");
+
+       if (__pList && __pList->GetShowState())
+       {
+               ShowContactList(false);
+               return;
+       }
+       //List item selected.
+       ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+       if (!pConvPrModel)
+       {
+               AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+               return;
+       }
+       switch (elementId)
+       {
+       case TVBubbleListItem::BUBBLE_ITEM_INVALID:
+       case TVBubbleListItem::BUBBLE_ITEM_DATE:
+       case TVBubbleListItem::BUBBLE_ITEM_SENDING_STATUS:
+       case TVBubbleListItem::BUBBLE_ITEM_FAIL_STATUS:
+       case TVBubbleListItem::BUBBLE_ITEM_UNREAD_STATUS:
+       case TVBubbleListItem::BUBBLE_ITEM_PLAY_AUDIO:
+       case TVBubbleListItem::BUBBLE_ITEM_PLAY_VIDEO:
+       case TVBubbleListItem::BUBBLE_ITEM_ATTACHMENT:
+       case TVBubbleListItem::BUBBLE_ITEM_DETAILS:
+               break;
+
+       case TVBubbleListItem::BUBBLE_ITEM:
+       case TVBubbleListItem::BUBBLE_ITEM_TEXT:
+       case TVBubbleListItem::BUBBLE_ITEM_ATTACHMENT_NAME:
+       case TVBubbleListItem::BUBBLE_ITEM_ATTACHMENT_COUNT:
+       case TVBubbleListItem::BUBBLE_ITEM_THUMBNAIL_IMAGE:
+       case TVBubbleListItem::BUBBLE_ITEM_VIEW_IMAGE:
+       {
+               int index = pConvPrModel->GetSelectedIndex(groupIndex) + itemIndex;
+               ArrayList* pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+               pArgs->Construct();
+               pArgs->Add(new (std::nothrow) Integer(index));
+               SendUserEvent(REQUEST_SHOW_OPTION_POPUP, pArgs);
+       }
+       break;
+       }
+
        AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
        return;
 }
 
 void
-ConversationForm::OnGroupedListViewItemLongPressed(GroupedListView& listView, int groupIndex,
-                                                                                                  int itemIndex, int elementId, bool& invokeListViewItemCallback)
+ConversationForm::OnGroupedTableViewItemSelected(GroupedTableView& tableView, int groupIndex, int itemIndex, int elementId)
 {
        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
-//             }
-//
-//     }
+       // Form List view call back if try to show any popup then it is not changing the child control
+       // state, So, using SendUserEvent to do the same.
+       if (__pList && __pList->GetShowState())
+       {
+               ShowContactList(false);
+               return;
+       }
+       //List item selected.
+       ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
+       if (!pConvPrModel)
+       {
+               AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+               return;
+       }
+       int index = pConvPrModel->GetSelectedIndex(groupIndex) + itemIndex;
+       BaseData* pConvData = pConvPrModel->GetDataAt(index);
 
-       AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
+       switch (elementId)
+       {
+       case TVBubbleListItem::BUBBLE_ITEM_FAIL_STATUS:
+       {
+               int index = pConvPrModel->GetSelectedIndex(groupIndex) + itemIndex;
+               ArrayList* pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+               pArgs->Construct();
+               pArgs->Add(new (std::nothrow) Integer(index));
+               SendUserEvent(REQUEST_SHOW_RESEND_DELETE_POPUP, pArgs);
+       }
+       break;
+
+       case TVBubbleListItem::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 TVBubbleListItem::BUBBLE_ITEM_PLAY_AUDIO:
+       {
+               MessageData* pMessageData = pConvPrModel->GetMessageDataByIdN(pConvData->GetEntryId());
+               if (pMessageData)
+               {
+                       const ArrayList* pPageList = pMessageData->GetPageList();
+                       if (pPageList && pPageList->GetCount() > 0)
+                       {
+                               const MmsPageData* pMmsPageData = (MmsPageData*) pPageList->GetAt(0);
+                               ArrayList* pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+                               pArgs->Construct();
+                               pArgs->Add(new (std::nothrow) String(pMmsPageData->GetAudioPath()));
+                               SendUserEvent(REQUEST_PLAY_AUDIO, pArgs); // Taking ownership
+                       }
+                       delete pMessageData;
+               }
+       }
+       break;
+
+       case TVBubbleListItem::BUBBLE_ITEM_VIEW_IMAGE:
+       {
+               MessageData* pMessageData = pConvPrModel->GetMessageDataByIdN(pConvData->GetEntryId());
+               if (pMessageData)
+               {
+                       const ArrayList* pPageList = pMessageData->GetPageList();
+                       if (pPageList && pPageList->GetCount() > 0)
+                       {
+                               const MmsPageData* pMmsPageData = (MmsPageData*) pPageList->GetAt(0);
+                               ArrayList* pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+                               pArgs->Construct();
+                               pArgs->Add(new (std::nothrow) String(pMmsPageData->GetImagePath()));
+                               SendUserEvent(REQUEST_SHOW_IMAGE, pArgs); // Taking ownership
+                       }
+                       delete pMessageData;
+               }
+       }
+       break;
+
+       case TVBubbleListItem::BUBBLE_ITEM_PLAY_VIDEO:
+       {
+               MessageData* pMessageData = pConvPrModel->GetMessageDataByIdN(pConvData->GetEntryId());
+               if (pMessageData)
+               {
+                       const ArrayList* pPageList = pMessageData->GetPageList();
+                       if (pPageList && pPageList->GetCount() > 0)
+                       {
+                               const MmsPageData* pMmsPageData = (MmsPageData*) pPageList->GetAt(0);
+                               ArrayList* pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+                               pArgs->Construct();
+                               pArgs->Add(new (std::nothrow) String(pMmsPageData->GetVideoPath()));
+                               SendUserEvent(REQUEST_PLAY_VIDEO, pArgs); // Taking ownership
+                       }
+                       delete pMessageData;
+               }
+       }
+       break;
+
+       case TVBubbleListItem::BUBBLE_ITEM_UNREAD_STATUS:
+       case TVBubbleListItem::BUBBLE_ITEM_ATTACHMENT_NAME:
+       case TVBubbleListItem::BUBBLE_ITEM_ATTACHMENT_COUNT:
+       case TVBubbleListItem::BUBBLE_ITEM_THUMBNAIL_IMAGE:
+       case TVBubbleListItem::BUBBLE_ITEM_ATTACHMENT:
+       case TVBubbleListItem::BUBBLE_ITEM:
+       case TVBubbleListItem::BUBBLE_ITEM_TEXT:
+       case TVBubbleListItem::BUBBLE_ITEM_DATE:
+       case TVBubbleListItem::BUBBLE_ITEM_SENDING_STATUS:
+       case TVBubbleListItem::BUBBLE_ITEM_INVALID:
+               break;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
        return;
 }
 
-
 int
 ConversationForm::GetGroupCount(void)
 {
@@ -2086,17 +2347,19 @@ ConversationForm::GetItemCount(int groupIndex)
        return groupItemCount;
 }
 
-GroupItem*
+//IGroupedTableViewItemProvider
+TableViewGroupItem*
 ConversationForm::CreateGroupItem(int groupIndex, int itemWidth)
 {
        AppLogDebug("ENTER");
-       GroupItem* pItem = new (std::nothrow) GroupItem();
+       TableViewGroupItem* pItem = new (std::nothrow) TableViewGroupItem();
        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));
+               pItem->SetEnabled(false);
+               Bitmap* pGroupBgBitmap = BitmapUtility::GetInstance()->GetBubbleGroupBgBitmapN(
+                       MSG_GROUP_BG_BITMAP_BUBBLE, pConvPrModel->GetGroupName(groupIndex), Dimension(itemWidth, H_GROUP_HEADER));
                if (pGroupBgBitmap)
                {
                        pItem->SetBackgroundBitmap(pGroupBgBitmap);
@@ -2109,7 +2372,7 @@ ConversationForm::CreateGroupItem(int groupIndex, int itemWidth)
 }
 
 bool
-ConversationForm::DeleteGroupItem(int groupIndex, GroupItem* pItem, int itemWidth)
+ConversationForm::DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem)
 {
        AppLogDebug("ENTER");
 
@@ -2123,11 +2386,19 @@ ConversationForm::DeleteGroupItem(int groupIndex, GroupItem* pItem, int itemWidt
        return true;
 }
 
-ListItemBase*
+void
+ConversationForm::UpdateGroupItem(int groupIndex, TableViewGroupItem* pItem)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+
+TableViewItem*
 ConversationForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
 {
        AppLogDebug("ENTER");
-       LVBubbleListItem* pCustomItem = null;
+       TVBubbleListItem* pCustomItem = null;
        ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();
        if (pConvPrModel)
        {
@@ -2137,17 +2408,17 @@ ConversationForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
                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);
+               pCustomItem = new (std::nothrow) TVBubbleListItem(*pConvData, itemWidth, *pFontSettings, editMode);
                // Create layout.
-               pCustomItem->CreateBubbleLayout();
+               bool showAnimation(GetShowState() && (!editMode));
+               pCustomItem->CreateBubbleLayout(showAnimation);
        }
        AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
        return pCustomItem;
 }
 
 bool
-ConversationForm::DeleteItem(int groupIndex, int itemIndex, ListItemBase* pItem, int itemWidth)
+ConversationForm::DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem)
 {
        AppLogDebug("ENTER");
 
@@ -2162,19 +2433,37 @@ ConversationForm::DeleteItem(int groupIndex, int itemIndex, ListItemBase* pItem,
 }
 
 void
+ConversationForm::UpdateItem(int groupIndex, int itemIndex, TableViewItem* pItem)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+int
+ConversationForm::GetDefaultItemHeight(void)
+{
+       return 0;
+}
+
+int
+ConversationForm::GetDefaultGroupItemHeight(void)
+{
+       return 0;
+}
+
+
+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);
-       }
+//     //TODO:
+//     Header* pHeader = GetHeader();
+//     if (pHeader)
+//     {
+//             bool mmsMode(type == COMPOSE_MMS);
+//             pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, mmsMode);
+//             pHeader->Invalidate(true);
+//     }
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
 }
 
@@ -2193,14 +2482,8 @@ ConversationForm::OnSendButtonClick(void)
                }
                delete pComposeData;
        }
-//     __pMsgComposePanel->Reset();
-       __pMsgComposePanel->HideKeypad();
-       UiApp* pAppUi = UiApp::GetInstance();
-       if( pAppUi && pAppUi->GetAppUiState() == APP_UI_STATE_FOREGROUND)
-       {
-               __pMsgComposePanel->SetFocusToEditor();
-       }
-       __pMsgComposePanel->ClearText();
+       __pMsgComposePanel->SetFocusToEditor();
+       __pMsgComposePanel->ClearText(true);
        __pMsgComposePanel->Invalidate(true);
 
        ShowContactList(false); //To hide contact list on send button click
index 050613c..90effc5 100644 (file)
@@ -26,7 +26,6 @@
 \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
@@ -140,6 +139,7 @@ ConversationPresentationModel::GetConversationMessageList(int threadId)
        __pDataList->RemoveAll(true);\r
        delete __pDraftMessage;\r
        __pDraftMessage = null;\r
+       __draftMessageId = -1;\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
@@ -150,6 +150,7 @@ ConversationPresentationModel::GetConversationMessageList(int threadId)
        //err = msg_get_message_list(__pMsgHandle, MSG_ALLBOX_ID, convThreadID, 0, MSG_STORAGE_PHONE, pMsgDataList);\r
        if (err == MSG_SUCCESS)\r
        {\r
+               int maxSendingAnimation(0);\r
                ConversationData* pConvData = null;\r
                for (int index = 0; index < pMsgDataList->nCount; index++)\r
                {\r
@@ -170,6 +171,14 @@ ConversationPresentationModel::GetConversationMessageList(int threadId)
                                {\r
                                        delete pConvData;\r
                                }\r
+                               else if (pConvData->IsSending())\r
+                               {\r
+                                       if (maxSendingAnimation < 2)\r
+                                       {\r
+                                               pConvData->SetAnimationShowState(true);\r
+                                               maxSendingAnimation++;\r
+                                       }\r
+                               }\r
                        }\r
                        else\r
                        {\r
@@ -186,6 +195,69 @@ ConversationPresentationModel::GetConversationMessageList(int threadId)
        return;\r
 }\r
 \r
+ArrayList*\r
+ConversationPresentationModel::GetThreadIdListN(msg_id_list_s* pMsgIdList)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       ArrayList* pUpdatedThreadIdList = null;\r
+       if (pMsgIdList && pMsgIdList->nCount > 0)\r
+       {\r
+               pUpdatedThreadIdList = new (std::nothrow) ArrayList();\r
+               pUpdatedThreadIdList->Construct();\r
+               for (int index = 0; index < pMsgIdList->nCount; index++)\r
+               {\r
+                       msg_struct_t pMsgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);\r
+                       if (pMsgInfo)\r
+                       {\r
+                               msg_struct_t pMsgSendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);\r
+                               if (pMsgSendOpt)\r
+                               {\r
+                                       if (msg_get_message(__pMsgHandle, (msg_message_id_t) pMsgIdList->msgIdList[index],\r
+                                                                               pMsgInfo, pMsgSendOpt) == MSG_SUCCESS)\r
+                                       {\r
+                                               // Get message thread ID\r
+                                               int threadId(-1);\r
+                                               if (msg_get_int_value(pMsgInfo, MSG_MESSAGE_THREAD_ID_INT, &threadId) == MSG_SUCCESS)\r
+                                               {\r
+                                                       pUpdatedThreadIdList->Add(new (std::nothrow) Integer(threadId));\r
+                                               }\r
+                                       }\r
+                                       msg_release_struct(&pMsgSendOpt);\r
+                               }\r
+                               msg_release_struct(&pMsgInfo);\r
+                       }\r
+               }\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pUpdatedThreadIdList;\r
+}\r
+\r
+bool\r
+ConversationPresentationModel::IsThreadIdExist(int threadId, IList* pThreadIdList) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       bool threadExist(false);\r
+       if (pThreadIdList)\r
+       {\r
+               for (int index = 0; index < pThreadIdList->GetCount(); index++)\r
+               {\r
+                       Integer* pThreadId = (Integer*) pThreadIdList->GetAt(index);\r
+                       if (pThreadId && pThreadId->ToInt() == threadId)\r
+                       {\r
+                               threadExist = true;\r
+                               break;\r
+                       }\r
+               }\r
+       }\r
+       AppLogDebug("Thread exist = %d", threadExist);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return threadExist;\r
+}\r
+\r
+\r
 result\r
 ConversationPresentationModel::AddConversationEventListener(const IConversationEventListener& convLitener,\r
                                                                                                                        const int threadId)\r
@@ -263,7 +335,9 @@ ConversationPresentationModel::OnMessageStorageChange(msg_storage_change_type_t
 \r
        if (__pConversationListener->GetCount() > 0)\r
        {\r
-               NotifyConversationChange(storageChangeType);\r
+               ArrayList* pModifiedThreadIdList = GetThreadIdListN(pMsgIdList);\r
+               NotifyConversationChange(storageChangeType, pModifiedThreadIdList);\r
+               pModifiedThreadIdList = null;\r
        }\r
 \r
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
@@ -271,7 +345,7 @@ ConversationPresentationModel::OnMessageStorageChange(msg_storage_change_type_t
 }\r
 \r
 void\r
-ConversationPresentationModel::NotifyConversationChange(msg_storage_change_type_t storageChangeType)\r
+ConversationPresentationModel::NotifyConversationChange(msg_storage_change_type_t storageChangeType, IList* pThreadIdList)\r
 {\r
        AppLogDebug("ENTER");\r
 \r
@@ -286,10 +360,21 @@ ConversationPresentationModel::NotifyConversationChange(msg_storage_change_type_
                                const_cast<IEventListener*>(pConvEvent->GetEvent()));\r
                        if (pConvObserver)\r
                        {\r
-                               pConvObserver->OnConversationListChange((MsgStorageChangeType)storageChangeType);\r
+                               if ((storageChangeType == MSG_STORAGE_UPDATE_CONTACT) ||\r
+                                       (storageChangeType == MSG_STORAGE_DELETE) ||\r
+                                       IsThreadIdExist(pConvEvent->GetThreadId(), pThreadIdList))\r
+                               {\r
+                                       pConvObserver->OnConversationListChange((MsgStorageChangeType) storageChangeType);\r
+                               }\r
                        }\r
                }\r
        }\r
+       if (pThreadIdList)\r
+       {\r
+               pThreadIdList->RemoveAll(true);\r
+               delete pThreadIdList;\r
+               pThreadIdList = null;\r
+       }\r
        // Free memory\r
        if (pEventenum)\r
        {\r
similarity index 50%
rename from src/MsgDeleteHandlerThread.cpp
rename to src/MsgDeleteHandler.cpp
index bdf24bc..0a73260 100644 (file)
 
 #include <FBaseColArrayListT.h>
 
-#include "MsgDeleteHandlerThread.h"
+#include "MsgDeleteHandler.h"
 #include "MsgIDeleteEventListener.h"
 #include "MsgThreadPresentationModel.h"
 #include "MsgTypes.h"
+
 using namespace Tizen::Base;
+using namespace Tizen::Base::Runtime;
 using namespace Tizen::Base::Collection;
 using namespace Tizen::Ui;
 
-
-DeleteHandlerThread::DeleteHandlerThread(IListT< int >* pIdList, Control& listener, int requestType)
-       : __pDeleteIdList(pIdList)
+DeleteHandler::DeleteHandler(IDeleteEventListener* pDeleteListener)
+       : __pDeleteListener(pDeleteListener)
+       , __pDeleteThread(null)
+       , __pDeleteIdList(null)
        , __deleteId(-1)
-       , __requestType(requestType)
-       , __parentCntl(&listener)
+       , __requestType(-1)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+result
+DeleteHandler::Construct(IListT<int>* pDeleteIdList, int requestType)
 {
        AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       __requestType = requestType;
+       __pDeleteIdList = pDeleteIdList;
+
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
 }
 
-DeleteHandlerThread::DeleteHandlerThread(int deleteId, Control& listener, int requestType)
-       : __pDeleteIdList(null)
-       , __deleteId(deleteId)
-       , __requestType(requestType)
-       , __parentCntl(&listener)
+result
+DeleteHandler::Construct(int deleteId, int requestType)
 {
        AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       __requestType = requestType;
+       __deleteId = deleteId;
+
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
 }
 
-DeleteHandlerThread::~DeleteHandlerThread(void)
+DeleteHandler::~DeleteHandler(void)
 {
        AppLogDebug("ENTER");
 
-       __parentCntl = null;
+       Cancel();
        delete __pDeleteIdList;
 
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
 }
 
-result
-DeleteHandlerThread::Construct(void)
+
+void
+DeleteHandler::Start(void)
 {
        AppLogDebug("ENTER");
 
-       result r = Thread::Construct();
+       Cancel();
+       __pDeleteThread = new (std::nothrow) Thread();
+       __pDeleteThread->Construct(*this);
+       __pDeleteThread->Start();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+DeleteHandler::Cancel(void)
+{
+       AppLogDebug("ENTER");
+
+       if (__pDeleteThread)
+       {
+               __pDeleteThread->Join();
+               delete __pDeleteThread;
+               __pDeleteThread = null;
+       }
+
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
-       return r;
 }
 
+
 Object*
-DeleteHandlerThread::Run(void)
+DeleteHandler::Run(void)
 {
        AppLogDebug("ENTER");
 
        ThreadPresentationModel* pThreadManager = ThreadPresentationModel::GetInstance();
-       IList* pArgs = null;
-       int totalCount(1);
-       if (__parentCntl && pThreadManager)
+       if (pThreadManager)
        {
+               int totalCount(1);
                if (__pDeleteIdList)
                {
                        totalCount = __pDeleteIdList->GetCount();
-                       pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
-                       if(pArgs)
+                       // Send delete start event
+                       if (__pDeleteListener)
                        {
-                               pArgs->Add(new Integer(totalCount));
-                               __parentCntl->SendUserEvent(REQUEST_DELETE_START,pArgs);
+                               __pDeleteListener->OnDeleteStart(totalCount);
                        }
 
                        for (int count = 0; count < totalCount; ++count)
@@ -92,41 +128,33 @@ DeleteHandlerThread::Run(void)
                                {
                                        pThreadManager->Delete(deleteId, __requestType);
                                }
-
-                               pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
-                               if(pArgs)
+                               // Send delete update event
+                               if (__pDeleteListener)
                                {
-                                       pArgs->Add(new Integer(count + 1));
-                                       pArgs->Add(new Integer(totalCount));
-                                       __parentCntl->SendUserEvent(REQUEST_DELETE_UPDATE,pArgs);
+                                       __pDeleteListener->OnDeleteUpdate((count + 1), totalCount);
                                }
                        }
                }
                else
                {
-                       pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
-                       if(pArgs)
+                       // Send delete start event
+                       if (__pDeleteListener)
                        {
-                               pArgs->Add(new Integer(totalCount));
-                               __parentCntl->SendUserEvent(REQUEST_DELETE_START,pArgs);
+                               __pDeleteListener->OnDeleteStart(totalCount);
                        }
                        pThreadManager->Delete(__deleteId, __requestType);
-                       pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
-                       if(pArgs)
+                       // Send delete update event
+                       if (__pDeleteListener)
                        {
-                               pArgs->Add(new Integer(totalCount));
-                               pArgs->Add(new Integer(totalCount));
-                               __parentCntl->SendUserEvent(REQUEST_DELETE_UPDATE,pArgs);
+                               __pDeleteListener->OnDeleteUpdate(totalCount, totalCount);
                        }
                }
-
-               pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
-               if(pArgs)
+               // Send delete complete event
+               if (__pDeleteListener)
                {
-                       pArgs->Add(new Integer(E_SUCCESS));
-                       __parentCntl->SendUserEvent(REQUEST_DELETE_COMPLETE,pArgs);
+                       __pDeleteThread->Sleep(90); // Put this delay to show complete progress.
+                       __pDeleteListener->OnDeleteComplete(E_SUCCESS, null);
                }
-
        }
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
        return null;
index 6719be3..e2787c8 100644 (file)
 // limitations under the License.\r
 //\r
 \r
+#include <FUi.h>\r
+#include <FApp.h>\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::Base::Runtime;\r
 using namespace Tizen::Graphics;\r
 using namespace Tizen::Ui::Controls;\r
 \r
 DurationPopup::DurationPopup(Control& parent)\r
-: __parentCntl(parent)\r
+       : __parentCntl(parent)\r
+       , __pLaunchTimer(null)\r
+       , __previousValue(5)\r
 {\r
 }\r
 \r
 DurationPopup::~DurationPopup(void)\r
 {\r
        AppLogDebug("ENTER");\r
+\r
+       if(__pLaunchTimer)\r
+       {\r
+               __pLaunchTimer->Cancel();\r
+               delete __pLaunchTimer;\r
+       }\r
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
 }\r
 \r
@@ -41,13 +53,22 @@ DurationPopup::Construct(const String& resourceId)
        result r = Popup::Construct(resourceId);\r
        if (!IsFailed(r))\r
        {\r
-               Button* pButtonOk = (Button*)GetControl(L"IDC_BUTTON_OK");\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
+               Button* pButtonCancel = (Button*) GetControl(L"IDC_BUTTON_CANCEL");\r
                pButtonCancel->SetActionId(IDA_CANCEL);\r
                pButtonCancel->AddActionEventListener(*this);\r
+               EditField* pDurationField = (EditField*) GetControl(L"IDC_EDITFIELD_DURATION");\r
+               pDurationField->AddTextEventListener(*this);\r
+               Label* pInfoLabel = (Label*) GetControl(L"IDC_DURATION_LABEL");\r
+               String labelText;\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS", labelText);\r
+               labelText.Replace(L"%d",L"5");\r
+               pInfoLabel->SetText(labelText);\r
        }\r
+       __pLaunchTimer = new (std::nothrow) Timer();\r
+       __pLaunchTimer->Construct(*this);\r
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
        return r;\r
 }\r
@@ -57,13 +78,20 @@ DurationPopup::GetDuration(void) const
 {\r
        AppLogDebug("ENTER");\r
        int slideDuration(5);\r
-       EditField* pDurationField = (EditField*)GetControl(L"IDC_EDITFIELD_DURATION");\r
-       if(pDurationField)\r
+       EditField* pDurationField = (EditField*) GetControl(L"IDC_EDITFIELD_DURATION");\r
+       if (pDurationField)\r
        {\r
                String durationTextValue = pDurationField->GetText();\r
-               Integer::Parse(durationTextValue, slideDuration);\r
+               if (durationTextValue.GetLength() > 0)\r
+               {\r
+                       Integer::Parse(durationTextValue, slideDuration);\r
+               }\r
+               else\r
+               {\r
+                       slideDuration = __previousValue;\r
+               }\r
        }\r
-       if(slideDuration<5)\r
+       if (slideDuration < 5)\r
        {\r
                slideDuration = 5;\r
        }\r
@@ -76,13 +104,14 @@ DurationPopup::SetDuration(int duration)
 {\r
        AppLogDebug("ENTER");\r
        result r = E_SUCCESS;\r
-       EditField* pDurationField = (EditField*)GetControl(L"IDC_EDITFIELD_DURATION");\r
-       if(pDurationField)\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
+       __previousValue = duration;\r
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
        return r;\r
 }\r
@@ -92,25 +121,36 @@ DurationPopup::SetInfoText(const String& infoText)
 {\r
        AppLogDebug("ENTER");\r
        result r = E_SUCCESS;\r
-       Label* pInfoLabel = (Label*)GetControl(L"IDC_DURATION_LABEL");\r
-       if(pInfoLabel)\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
+DurationPopup::ShowPopup(void)\r
 {\r
        AppLogDebug("ENTER");\r
-       EditField* pDurationField = (EditField*)GetControl(L"IDC_EDITFIELD_DURATION");\r
+\r
+       result r = E_SUCCESS;\r
+       Show();\r
+       // To avoid keyboard overlapping.\r
+       r = __pLaunchTimer->Start(10);\r
+\r
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
-       return pDurationField->SetFocus();\r
+       return r;\r
 }\r
 \r
+// Form ITimerEventListener\r
+void\r
+DurationPopup::OnTimerExpired(Timer& timer)\r
+{\r
+       EditField* pDurationField = (EditField*) GetControl(L"IDC_EDITFIELD_DURATION");\r
+       pDurationField->SetFocus();\r
+}\r
 \r
 // From IActionEventListener\r
 void\r
@@ -122,6 +162,8 @@ DurationPopup::OnActionPerformed(const Control& source, int actionId)
        case IDA_OK:\r
        case IDA_CANCEL:\r
        {\r
+               EditField* pDurationField = (EditField*) GetControl(L"IDC_EDITFIELD_DURATION");\r
+               pDurationField->HideKeypad();\r
                SetShowState(false);\r
                RequestId requestId = REQUEST_DESTROY_DURATION_POPUP;\r
                __parentCntl.SendUserEvent(requestId, null);\r
@@ -130,3 +172,23 @@ DurationPopup::OnActionPerformed(const Control& source, int actionId)
        }\r
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
 }\r
+\r
+//ITextEventListener\r
+void\r
+DurationPopup::OnTextValueChanged(const Tizen::Ui::Control& source)\r
+{\r
+       AppLogDebug("ENTER in duration popup");\r
+       Button* pButtonOk = (Button*) GetControl(L"IDC_BUTTON_OK");\r
+       EditField* pDurationField = (EditField*) GetControl(L"IDC_EDITFIELD_DURATION");\r
+       if (pDurationField->GetTextLength() > 0)\r
+       {\r
+               pButtonOk->SetEnabled(true);\r
+       }\r
+       else\r
+       {\r
+               pButtonOk->SetEnabled(false);\r
+       }\r
+       pButtonOk->Invalidate(true);\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
index 45ad802..c7d8a58 100644 (file)
@@ -44,13 +44,11 @@ FacadeManager::Initialize(void)
 \r
        result r = E_SUCCESS;\r
        ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();\r
-       if (pThreadPrModel == null)\r
+       if (!pThreadPrModel)\r
        {\r
-               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
                r = E_FAILURE;\r
-               return r;\r
        }\r
-       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(r));\r
        return r;\r
 }\r
 \r
diff --git a/src/MsgLVAttachItem.cpp b/src/MsgLVAttachItem.cpp
deleted file mode 100644 (file)
index acdd5c5..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-//\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/MsgLVBubbleListItem.cpp b/src/MsgLVBubbleListItem.cpp
deleted file mode 100644 (file)
index ca48f0b..0000000
+++ /dev/null
@@ -1,416 +0,0 @@
-//\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
index a45c3fa..e5570cf 100644 (file)
@@ -56,14 +56,11 @@ ListPresentationModel::Construct(void)
        AppLogDebug("ENTER");\r
 \r
        result r = BasePresentationModel::Construct();\r
-       if (r == E_SUCCESS)\r
-       {\r
-               __pDataList = new (std::nothrow) ArrayList();\r
-               __pDataList->Construct();\r
+       __pDataList = new (std::nothrow) ArrayList();\r
+       __pDataList->Construct();\r
 \r
-               __pGroupInfo = new (std::nothrow) ArrayList();\r
-               __pGroupInfo->Construct();\r
-       }\r
+       __pGroupInfo = new (std::nothrow) ArrayList();\r
+       __pGroupInfo->Construct();\r
 \r
        AppLogDebug("EXIT: %s", GetErrorMessage(r));\r
        return r;\r
index d2f23b1..441f0bc 100644 (file)
 // 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
+#include <FMediaVideoFrameExtractor.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
+using namespace Tizen::Ui::Controls;\r
 \r
 const wchar_t* IDS_PATH_COLON = L"path:";\r
 \r
@@ -55,7 +44,8 @@ MediaControl::MediaControl(void)
        , __pMediaIconBitmap(null)\r
        , __pWorkerThread(null)\r
 {\r
-       // Empty\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
 }\r
 \r
 MediaControl::~MediaControl(void)\r
@@ -68,7 +58,7 @@ MediaControl::~MediaControl(void)
        }\r
        if (__pWorkerThread)\r
        {\r
-               __pWorkerThread->Exit(); // stop is deprecated. Hence the replacement with exit function call\r
+               __pWorkerThread->Join();\r
                delete __pWorkerThread;\r
        }\r
 \r
@@ -110,7 +100,11 @@ MediaControl::SetMediaPath(const String& mediaPath, MediaType mediaType)
        // Load media icon image\r
        if (!__mediaPath.IsEmpty())\r
        {\r
-               delete __pWorkerThread;\r
+               if(__pWorkerThread)\r
+               {\r
+                       __pWorkerThread->Join();\r
+                       delete __pWorkerThread;\r
+               }\r
                __pWorkerThread = new (std::nothrow) Thread();\r
                __pWorkerThread->Construct(*this);\r
                __pWorkerThread->Start();\r
@@ -156,7 +150,10 @@ MediaControl::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
                {\r
                case ID_EVENT_IMAGE_LOADED:\r
                {\r
-                       delete __pMediaIconBitmap;\r
+                       if (__pMediaIconBitmap)\r
+                       {\r
+                               delete __pMediaIconBitmap;\r
+                       }\r
                        __pMediaIconBitmap = static_cast<Bitmap*>(pArgs->GetAt(0));\r
                        __pDeleteMedia->SetShowState(true);\r
                        pArgs->RemoveAt(0);\r
@@ -201,22 +198,13 @@ MediaControl::OnTouchPressed(const Control& source, const Point& currentPosition
 {\r
        AppLogDebug("ENTER");\r
 \r
-       AppControl* pAppControl = AppManager::FindAppControlN(IDS_APPCONTROL_PROVIDER_IMAGE,\r
-                                                                                                                 IDS_APPCONTROL_OPERATION_VIEW);\r
-       if (pAppControl)\r
+       if (CommonUtil::IsImageFile(__mediaPath))\r
+       {\r
+               CommonUtil::ShowImage(__mediaPath);\r
+       }\r
+       else // It should be video file\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
+               CommonUtil::PlayVideo(__mediaPath);\r
        }\r
 \r
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
@@ -240,27 +228,15 @@ MediaControl::LoadMediaIcon(void)
        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
+               //To extract frame from video:\r
+               VideoFrameExtractor extractor;\r
+               extractor.Construct(__mediaPath, MEDIA_PIXEL_FORMAT_BGRA8888);\r
+               ImageBuffer* pImage = extractor.GetFrameN(0);\r
+               pBitmap = pImage->GetBitmapN(BITMAP_PIXEL_FORMAT_ARGB8888, BUFFER_SCALING_AUTO);\r
+               delete pImage;\r
+               AppLogDebug("Bitmap Album EXIT: %s", GetErrorMessage(GetLastResult()));\r
        }\r
        else\r
        {\r
index 2855949..d4458f2 100644 (file)
@@ -13,7 +13,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 //
-#include <FApp.h>
+
 #include <FIo.h>
 
 #include "MsgAttachementControl.h"
 #include "MsgMediaTextExpandEditArea.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::Ui::Controls;
 using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
 
 enum InternalActionIds
 {
        IDA_DELETE_IMAGE,
        IDA_DELETE_AUDIO,
-       IDA_VIEW_IMAGE
+       IDA_VIEW_IMAGE,
+       IDA_DELETE_PAGE,
 };
 
 MediaTextExpandEditArea::MediaTextExpandEditArea(void)
@@ -44,6 +45,7 @@ MediaTextExpandEditArea::MediaTextExpandEditArea(void)
        , __pExpandEditArea(null)
        , __pDeleteButton(null)
        , __pAttachCntrl(null)
+       , __pActionEventListener(null)
 {
        // Empty
 }
@@ -76,7 +78,7 @@ MediaTextExpandEditArea::Construct(const Rectangle& rectangle)
        __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->SetLimitLength(1999); // Set To max limit
        __pExpandEditArea->AddExpandableEditAreaEventListener(*this);
        __pExpandEditArea->SetAutoResizingEnabled(false);
        __pExpandEditArea->SetAutoShrinkModeEnabled(false);
@@ -88,7 +90,7 @@ MediaTextExpandEditArea::Construct(const Rectangle& rectangle)
        __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));
+       pEditorBgCanvas->FillRoundRectangle(__pExpandEditArea->GetColor(EDIT_STATUS_NORMAL), editorBound, Dimension(2, 2));
        __pBgBitmap->Construct(*pEditorBgCanvas, editorBound);
        delete pEditorBgCanvas;
        // add delete button
@@ -101,6 +103,8 @@ MediaTextExpandEditArea::Construct(const Rectangle& rectangle)
        __pDeleteButton->SetPressedBackgroundBitmap(*pPressBitMap);
        __pDeleteButton->SetShowState(false);
        AddControl(*__pDeleteButton);
+       __pDeleteButton->SetActionId(IDA_DELETE_PAGE);
+       __pDeleteButton->AddActionEventListener(*this);
        delete pPressBitMap;
        delete pNormalBitMap;
 
@@ -109,10 +113,11 @@ MediaTextExpandEditArea::Construct(const Rectangle& rectangle)
 }
 
 void
-MediaTextExpandEditArea::AddActionEventListener(IActionEventListener& listener)
+MediaTextExpandEditArea::SetActionEventListener(IActionEventListener& listener)
 {
        AppLogDebug("ENTER");
-       __pDeleteButton->AddActionEventListener(listener);
+       __pActionEventListener = &listener;
+       //__pDeleteButton->AddActionEventListener(*this);
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
 }
 
@@ -160,10 +165,20 @@ void
 MediaTextExpandEditArea::SetDeleteActionId(int actionId)
 {
        AppLogDebug("ENTER");
-       __pDeleteButton->SetActionId(actionId);
+       __deleteActionId = actionId;
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+MediaTextExpandEditArea::SetUpdateActionId(int actionId)
+{
+       AppLogDebug("ENTER");
+       __updateActionId = actionId;
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+
 }
 
+
 result
 MediaTextExpandEditArea::SetText(const String& strText)
 {
@@ -176,8 +191,22 @@ result
 MediaTextExpandEditArea::ClearText(void)
 {
        AppLogDebug("ENTER");
+       __pDeleteButton->SetShowState(false);
+       __pExpandEditArea->Clear();
+       if (__pMediaCntl)
+       {
+               RemoveControl(*__pMediaCntl);
+               __pMediaCntl = null;
+       }
+       if (__pAttachCntrl)
+       {
+               RemoveControl(*__pAttachCntrl);
+               __pAttachCntrl = null;
+       }
+       __pExpandEditArea->SetBounds(0, 0, __prevBounds.width, __prevBounds.height);
+       SetSize(GetWidth(), __pExpandEditArea->GetHeight());
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
-       return __pExpandEditArea->Clear();
+       return E_SUCCESS;
 }
 
 String
@@ -268,7 +297,7 @@ MediaTextExpandEditArea::SetMedia(const String& mediafilePath, MediaType mediaTy
                        height += __pAttachCntrl->GetHeight() + MARGIN_16PX;
                }
                __pAttachCntrl->SetDeleteActionId(IDA_DELETE_AUDIO);
-               __pAttachCntrl->AddActionEventListener(*this);
+               __pAttachCntrl->SetActionEventListener(*this);
                AddControl(*__pAttachCntrl);
        }
        __pExpandEditArea->SetBounds(0, height, __prevBounds.width, __prevBounds.height);
@@ -321,6 +350,14 @@ MediaTextExpandEditArea::OnActionPerformed(const Control& source,
        {
        case IDA_DELETE_IMAGE:
        {
+               // Check need to delete this page or not
+               int pageCount(GetParent()->GetControlCount());
+               if(( pageCount >1) && __pActionEventListener && (!__pAttachCntrl) && (__pExpandEditArea->GetTextLength() <= 0))
+               {
+                       // Send delete event.
+                       __pActionEventListener->OnActionPerformed(*this, __deleteActionId);
+                       break;
+               }
                File::Remove(__pMediaCntl->GetMediaPath());
                RemoveControl(*__pMediaCntl);
                __pMediaCntl = null;
@@ -335,15 +372,26 @@ MediaTextExpandEditArea::OnActionPerformed(const Control& source,
                        __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);
+               //  Send update event
+               if(__pActionEventListener)
+               {
+                       __pActionEventListener->OnActionPerformed(*this, __updateActionId);
+               }
        }
        break;
 
        case IDA_DELETE_AUDIO:
        {
+               // Check need to delete this page or not
+               int pageCount(GetParent()->GetControlCount());
+               if((pageCount>1) && __pActionEventListener && (!__pMediaCntl) && (__pExpandEditArea->GetTextLength() <= 0))
+               {
+                       __pActionEventListener->OnActionPerformed(*this,  __deleteActionId);
+                       break;
+               }
                RemoveControl(*__pAttachCntrl);
                __pAttachCntrl = null;
+
                if (__pMediaCntl)
                {
                        __pExpandEditArea->SetBounds(0, __pMediaCntl->GetHeight() + MARGIN_16PX + MARGIN_16PX, __prevBounds.width, __prevBounds.height);
@@ -354,6 +402,22 @@ MediaTextExpandEditArea::OnActionPerformed(const Control& source,
                        __pExpandEditArea->SetBounds(0, 0, __prevBounds.width, __prevBounds.height);
                        SetSize(GetWidth(), __pExpandEditArea->GetHeight());
                }
+               //  Send update event
+               if(__pActionEventListener)
+               {
+                       __pActionEventListener->OnActionPerformed(*this, __updateActionId);
+               }
+       }
+       break;
+       case IDA_DELETE_PAGE:
+       {
+               // Delegate event.
+               // Check need to delete this page or not
+               int pageCount(GetParent()->GetControlCount());
+               if(pageCount>1 && __pActionEventListener)
+               {
+                       __pActionEventListener->OnActionPerformed(*this, __deleteActionId );
+               }
        }
        break;
        }
@@ -373,7 +437,7 @@ MediaTextExpandEditArea::OnDraw(void)
                pCanvas->FillRectangle(COLOR_COMPOSE_PANEL_BG,
                                                           Rectangle(0, 0, rect.width, rect.height));
                pCanvas->DrawBitmap(Rectangle(0, 0, rect.width, rect.height),
-                                                                          *__pBgBitmap);
+                                                       *__pBgBitmap);
                delete pCanvas;
        }
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
@@ -430,13 +494,14 @@ MediaTextExpandEditArea::GetControlType(void) const
 {
        AppLogDebug("ENTER");
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
-       return COMPOSE_CONTROL_IMAGE_TEXT;
+       return COMPOSE_CONTROL_MEDIA_TEXT;
 }
 
 void
 MediaTextExpandEditArea::SetDeleteShowState(bool visible)
 {
        AppLogDebug("ENTER");
+
        __pDeleteButton->SetShowState(visible);
        Rectangle rectangle = GetBounds();
        Dimension editorSize = __pExpandEditArea->GetSize();
@@ -449,8 +514,6 @@ MediaTextExpandEditArea::SetDeleteShowState(bool visible)
                editorSize.width = rectangle.width;
        }
        __pExpandEditArea->SetSize(editorSize);
-       Draw();
-       Show();
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
 }
 
index 1896094..b23be46 100644 (file)
@@ -45,7 +45,7 @@ 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_CAMERA = L"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";
@@ -62,6 +62,7 @@ enum ComposeActionId
        IDA_COMPOSE_DELETE_ATTACHEMENT,
        IDA_COMPOSE_SEND,
        IDA_CLOSE_POPUP,
+       IDA_CHECK_COMPOSE_STATE,
 };
 
 MessageComposePanel::MessageComposePanel(void)
@@ -156,13 +157,6 @@ MessageComposePanel::Construct(const String& resourceId)
        {
                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);
@@ -191,12 +185,23 @@ MessageComposePanel::ShowDefaultUi(void)
        AppLogDebug("ENTER");
        CreatePage();
        SetShowState(true);
+       ShowComposeInfo();
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
 }
 
 MediaTextExpandEditArea*
 MessageComposePanel::CreatePage(const String& pageText)
 {
+       // Calculate image/Text size
+       Panel* pImageTextSlidePanel = static_cast<Panel*>(__pScrollPanel->
+                       GetControl(L"IDC_PANEL_IMAGE_TEXT"));
+       int pageCount = pImageTextSlidePanel->GetControlCount();
+
+       if (pageCount >= 10 )
+       {
+       // TODO : SHOW Popup - Maximum pages created
+               return null;
+       }
        AppLogDebug("ENTER");
        Panel* pImageTextPanel = static_cast<Panel*>(__pScrollPanel->
                                                                                                   GetControl(L"IDC_PANEL_IMAGE_TEXT"));
@@ -217,7 +222,8 @@ MessageComposePanel::CreatePage(const String& pageText)
                pComposePage->AddFocusEventListener(*this);
                pComposePage->AddTextEventListener(*this);
                pComposePage->SetDeleteActionId(IDA_COMPOSE_DELETE_ATTACHEMENT);
-               pComposePage->AddActionEventListener(*this);
+               pComposePage->SetUpdateActionId(IDA_CHECK_COMPOSE_STATE);
+               pComposePage->SetActionEventListener(*this);
                pComposePage->SetText(pageText);
                pImageTextPanel->AddControl(*pComposePage);
                __pScrollPanel->ScrollToBottom();
@@ -248,7 +254,7 @@ MessageComposePanel::AddAttachementElement(const String& attachFile)
                AttachementControl* pAttachCntl = new (std::nothrow) AttachementControl(attachFile);
                pAttachCntl->Construct(Rectangle(0, posY, __pScrollPanel->GetWidth(), 60));
                pAttachCntl->SetDeleteActionId(IDA_COMPOSE_DELETE_ATTACHEMENT);
-               pAttachCntl->AddActionEventListener(*this);
+               pAttachCntl->SetActionEventListener(*this);
                pAttachementPanel->AddControl(*pAttachCntl);
                __pScrollPanel->ScrollToTop();
 
@@ -271,7 +277,7 @@ MessageComposePanel::AddSubjectField(const String& subjectText)
                SubjectControl* pSubjectCntl = new (std::nothrow) SubjectControl();
                pSubjectCntl->Construct(Rectangle(0, 0, __pScrollPanel->GetWidth(), 71));
                pSubjectCntl->SetDeleteActionId(IDA_COMPOSE_DELETE_ATTACHEMENT);
-               pSubjectCntl->AddActionEventListener(*this);
+               pSubjectCntl->SetActionEventListener(*this);
                pSubjectCntl->AddKeypadEventListener(*this);
                pSubjectCntl->AddFocusEventListener(*this);
                pSubjectCntl->AddTextEventListener(*this);
@@ -327,15 +333,23 @@ MessageComposePanel::InsertFileToPage(const String& selectFilepath)
                        mmsDataPath.Append(File::GetFileName(selectFilepath));
                        AppLogDebug("***MMS DATA PATH: %S ****", mmsDataPath.GetPointer());
                        File::Copy(selectFilepath, mmsDataPath, true);
-                       if (!__pFocusControl)
+                       ComposeBaseControl* pPageInFocus  = __pFocusControl;
+                       if (!pPageInFocus|| (pPageInFocus && (pPageInFocus->GetControlType() != COMPOSE_CONTROL_MEDIA_TEXT)))
                        {
+                               // Get Default focus page.
                                Panel* pImageTextPanel = static_cast<Panel*>(__pScrollPanel->GetControl(L"IDC_PANEL_IMAGE_TEXT"));
-                               __pFocusControl = static_cast<ComposeBaseControl*>(pImageTextPanel->GetControl(0));
+                               pPageInFocus = static_cast<ComposeBaseControl*>(pImageTextPanel->GetControl(0));
+                       }
+                       MediaTextExpandEditArea* pFocusComposePage = static_cast<MediaTextExpandEditArea*>(pPageInFocus);
+                       if ((pFocusComposePage->IsAudioExist() && mediaType == MEDIA_TYPE_IMAGE) ||
+                               (pFocusComposePage->IsImageExist() && mediaType == MEDIA_TYPE_AUDIO) ||
+                               ((mediaType == MEDIA_TYPE_VIDEO) && (!pFocusComposePage->IsAudioExist()) && (!pFocusComposePage->IsImageExist()) && (!pFocusComposePage->IsVideoExist())) ||
+                               ((mediaType == MEDIA_TYPE_AUDIO) && (!pFocusComposePage->IsAudioExist()) && (!pFocusComposePage->IsVideoExist())) ||
+                               ((mediaType == MEDIA_TYPE_IMAGE) && (!pFocusComposePage->IsVideoExist()) && (!pFocusComposePage->IsImageExist())))
+                       {
+                               pFocusComposePage->SetMedia(mmsDataPath, mediaType);
                        }
-                       MediaTextExpandEditArea* pFocusComposePage = static_cast<MediaTextExpandEditArea*>(__pFocusControl);
-                       if (pFocusComposePage->IsVideoExist() ||
-                               (pFocusComposePage->IsImageExist() && mediaType == MEDIA_TYPE_IMAGE) ||
-                               (pFocusComposePage->IsAudioExist() && mediaType == MEDIA_TYPE_AUDIO))
+                       else
                        {
                                MediaTextExpandEditArea* pNewComposePage = CreatePage();
                                if (pNewComposePage)
@@ -343,11 +357,6 @@ MessageComposePanel::InsertFileToPage(const String& selectFilepath)
                                        pNewComposePage->SetMedia(mmsDataPath, mediaType);
                                }
                        }
-                       else
-                       {
-                               pFocusComposePage->SetMedia(mmsDataPath, mediaType);
-                               pFocusComposePage->SetFocus();
-                       }
                }
                else
                {
@@ -382,7 +391,9 @@ MessageComposePanel::InsertFileToPage(const String& selectFilepath)
                // Create thread to resize.
                if (__pWorkerThread)
                {
+                       __pWorkerThread->Join();
                        delete __pWorkerThread;
+                       __pWorkerThread = null;
                }
                __pWorkerThread = new (std::nothrow) Thread();
                __pWorkerThread->Construct(*this);
@@ -415,7 +426,7 @@ MessageComposePanel::ShowSizeErrorPopup(void)
                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"));
+               Label* pPanel = static_cast<Label*>(__pSizeExceedPopup->GetControl(L"IDC_LABEL1"));
                pPanel->SetBackgroundColor(COLOR_COMPOSE_PANEL_BG);
                Timer* pTimerForMaximumsizePopup = new (std::nothrow) Timer();
                pTimerForMaximumsizePopup->Construct(*this);
@@ -425,6 +436,27 @@ MessageComposePanel::ShowSizeErrorPopup(void)
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
 }
 
+bool
+MessageComposePanel::IsConvertedToMms(void) const
+{
+       String msgText = GetSmsText();
+       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;
+               int length = size - MESSAGE_LENGTH - MESSAGE_LENGTH_2;
+               int messagecount = length / MESSAGE_LENGTH_3 + 1;
+               if (messagecount > 8)
+               {
+                       return true;
+               }
+       }
+       return false;
+}
 void
 MessageComposePanel::OnTimerExpired(Timer& timer)
 {
@@ -524,7 +556,8 @@ MessageComposePanel::SetBounds(const Rectangle& rect)
        if (prvBounds.height == rect.height)
        {
                AdjustChildControl();
-               __pScrollPanel->ScrollToBottom();
+               //TODO:
+               //__pScrollPanel->ScrollToBottom();
        }
        r = Panel::SetBounds(rect);
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
@@ -683,17 +716,24 @@ MessageComposePanel::OnActionPerformed(const Control& source, int actionId)
 
        case IDA_COMPOSE_DELETE_ATTACHEMENT:
        {
-               ComposeBaseControl* pComposeCntl = static_cast<ComposeBaseControl*>(source.GetParent());
-               if (pComposeCntl->GetControlType() == COMPOSE_CONTROL_IMAGE_TEXT)
+               ComposeBaseControl* pComposeCntl = (ComposeBaseControl*)(const_cast<Control*>(&source));
+               if (pComposeCntl->GetControlType() == COMPOSE_CONTROL_MEDIA_TEXT)
                {
+                       static_cast<MediaTextExpandEditArea*>(pComposeCntl)->SetFocus();
                        static_cast<MediaTextExpandEditArea*>(pComposeCntl)->ShowKeypad(false);
                        static_cast<Panel*>(__pScrollPanel->GetControl(L"IDC_PANEL_IMAGE_TEXT"))->
-                       RemoveControl(*source.GetParent());
+                                       RemoveControl(source);
+                       // 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_SUBJECT)
                {
                        static_cast<Panel*>(__pScrollPanel->GetControl(L"IDC_PANEL_SUBJECT"))->
-                       RemoveControl(*source.GetParent());
+                                       RemoveControl(source);
                        // SetFocus
                        Panel* pImageTextPanel = static_cast<Panel*>(__pScrollPanel->GetControl(L"IDC_PANEL_IMAGE_TEXT"));
                        if (pImageTextPanel)
@@ -704,7 +744,13 @@ MessageComposePanel::OnActionPerformed(const Control& source, int actionId)
                else if (pComposeCntl->GetControlType() == COMPOSE_CONTROL_ATTACHEMENT)
                {
                        static_cast<Panel*>(__pScrollPanel->GetControl(L"IDC_PANEL_ATTACHEMENT"))->
-                       RemoveControl(*source.GetParent());
+                                       RemoveControl(source);
+                       // SetFocus
+                       Panel* pImageTextPanel = static_cast<Panel*>(__pScrollPanel->GetControl(L"IDC_PANEL_IMAGE_TEXT"));
+                       if (pImageTextPanel)
+                       {
+                               (static_cast<MediaTextExpandEditArea*>(pImageTextPanel->GetControl(0)))->SetFocus();
+                       }
                }
                // At least there should be one compose element
                __pSizeChangeListener->OnSizeDecrease(*this);
@@ -720,6 +766,7 @@ MessageComposePanel::OnActionPerformed(const Control& source, int actionId)
                {
                        __pCompseEventListener->OnSendButtonClick();
                }
+               ShowComposeInfo();
        }
        break;
 
@@ -732,6 +779,14 @@ MessageComposePanel::OnActionPerformed(const Control& source, int actionId)
                }
        }
        break;
+       case IDA_CHECK_COMPOSE_STATE:
+       {
+               // Check is it MMS, change button icon.
+               RequestId requestId = REQUEST_CHECK_COMPOSE_STATE;
+               SendUserEvent(requestId, null);
+       }
+       break;
+
        }
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
 }
@@ -740,30 +795,21 @@ void
 MessageComposePanel::OnFocusGained(const Control& source)
 {
        AppLogDebug("ENTER");
-       __pFocusControl = static_cast<ComposeBaseControl*>(source.GetParent());
+       __pFocusControl = dynamic_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)
+       if (__pFocusControl->GetControlType() == COMPOSE_CONTROL_MEDIA_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);
+               static_cast<MediaTextExpandEditArea*>(__pFocusControl)->SetDeleteShowState(elementCount > 1);
+
        }
        else if (__pFocusControl->GetControlType() == COMPOSE_CONTROL_SUBJECT)
        {
                static_cast<SubjectControl*>(__pFocusControl)->SetDeleteShowState(true);
        }
-
-       RequestId requestId = REQUEST_UDATE_FOCUS;
+       RequestId requestId = REQUEST_UPDATE_FOCUS;
        GetParent()->SendUserEvent(requestId, null);
 
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
@@ -775,9 +821,9 @@ MessageComposePanel::OnFocusLost(const Control& source)
 {
        AppLogDebug("ENTER");
        ComposeBaseControl* pComposeElement = static_cast<ComposeBaseControl*>(source.GetParent());
-       if(__pFocusControl)
+       if (__pFocusControl)
        {
-               if (__pFocusControl->GetControlType() == COMPOSE_CONTROL_IMAGE_TEXT)
+               if (__pFocusControl->GetControlType() == COMPOSE_CONTROL_MEDIA_TEXT)
                {
                        static_cast<MediaTextExpandEditArea*>(pComposeElement)->SetDeleteShowState(false);
                }
@@ -802,7 +848,7 @@ MessageComposePanel::OnAppControlCompleteResponseReceived(const AppId& appId, co
                if (appControlResult == APP_CTRL_RESULT_SUCCEEDED)
                {
                        // Prepare selected file list and start processing
-                       __pSelectedFilesQueue = (ArrayList*) GetSelectedFileListN(operationId, pResultMap);
+                       __pSelectedFilesQueue = (ArrayList*) GetSelectedFileListN(appId, pResultMap);
                        ProcessNextFileComposeQueue();
                }
                else if (appControlResult == APP_CTRL_RESULT_CANCELED)
@@ -851,27 +897,11 @@ MessageComposePanel::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
                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;
 
@@ -880,14 +910,17 @@ MessageComposePanel::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
                int rType = ((Integer*) pArgs->GetAt(0))->ToInt();
                if (rType == MSG_RESPONSE_RESIZE_IMAGE)
                {
-                       if (!__pFocusControl)
+                       ComposeBaseControl* pPageInFocus  = __pFocusControl;
+                       if (!pPageInFocus|| (pPageInFocus && pPageInFocus->GetControlType() != COMPOSE_CONTROL_MEDIA_TEXT))
                        {
+                               // Get Default focus page.
                                Panel* pImageTextPanel = static_cast<Panel*>(__pScrollPanel->GetControl(L"IDC_PANEL_IMAGE_TEXT"));
-                               __pFocusControl = static_cast<ComposeBaseControl*>(pImageTextPanel->GetControl(0));
+                               pPageInFocus = static_cast<ComposeBaseControl*>(pImageTextPanel->GetControl(0));
                        }
-                       MediaTextExpandEditArea* pFocusComposePage = static_cast<MediaTextExpandEditArea*>(__pFocusControl);
+                       MediaTextExpandEditArea* pFocusComposePage = static_cast<MediaTextExpandEditArea*>(pPageInFocus);
                        if (pFocusComposePage->IsVideoExist() || pFocusComposePage->IsImageExist())
                        {
+                               // Create new page for inserted item
                                MediaTextExpandEditArea* pComposePage = CreatePage();
                                if (pComposePage)
                                {
@@ -897,12 +930,11 @@ MessageComposePanel::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
                        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.
+               // After resizing current image, need to look at remaining file(s) in queue.
                ProcessNextFileComposeQueue();
        }
        break;
@@ -920,6 +952,7 @@ MessageComposePanel::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
        case REQUEST_ADD_SUBJECT:
        {
                AddSubjectField();
+               SetFocusToSubject();
        }
        break;
 
@@ -929,7 +962,7 @@ MessageComposePanel::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
        }
        break;
 
-       case REQUEST_OPEN_GALLARY:
+       case REQUEST_OPEN_GALLERY:
        case REQUEST_TAKE_PICTURE:
        case REQUEST_CAPTURE_VIDEO:
        case REQUEST_RECORD_AUDIO:
@@ -964,20 +997,25 @@ MessageComposePanel::OnTextValueChanged(const Control& source)
 }
 
 bool
-MessageComposePanel::IsComposeFieldEmpty(void)
+MessageComposePanel::IsComposeFieldEmpty(void) const
 {
        AppLogDebug("ENTER");
-       String strComposeText = GetSmsText();
-       if(strComposeText.GetLength() > 0)
-       {
-               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
-               return false;
-       }
-       else
-       {
-               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
-               return true;
-       }
+
+       long long int  size = GetMessageComposeSize();
+       AppLogDebug("Message Size = %lld bytes", size);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return ( size <= 0 );
+}
+
+bool
+MessageComposePanel::IsSubjectExists(void) const
+{
+       AppLogDebug("ENTER");
+
+       Panel* pSubjectPanel = static_cast<Panel*>(__pScrollPanel->GetControl(L"IDC_PANEL_SUBJECT"));
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return (pSubjectPanel->GetControlCount() > 0 );
 }
 
 result
@@ -993,7 +1031,7 @@ MessageComposePanel::LaunchAppControl(RequestType requestType)
                pHashMap->Construct();
                switch (requestType)
                {
-               case REQUEST_OPEN_GALLARY:
+               case REQUEST_OPEN_GALLERY:
                {
                        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)));
@@ -1003,24 +1041,24 @@ MessageComposePanel::LaunchAppControl(RequestType requestType)
 
                case REQUEST_TAKE_PICTURE:
                {
-                       pHashMap->Add((new (std::nothrow) String(L"type")), (new (std::nothrow) String(IDS_TYPE_CAMERA)));
+                       pHashMap->Add((new (std::nothrow) String(L"type")), (new (std::nothrow) String(L"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);
+                       pHashMap->Add((new (std::nothrow) String(L"type")), (new (std::nothrow) String(L"camcorder")));
+                       pAppCntl = AppManager::FindAppControlN(IDS_APPCONTROL_PROVIDER_CAMERA, IDS_APPCONTROL_OPERATION_CAPTURE);
                }
                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_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:
                {
@@ -1041,6 +1079,7 @@ MessageComposePanel::LaunchAppControl(RequestType requestType)
                case REQUEST_ADD_CALENDAR:
                {
                        pHashMap->Add((new (std::nothrow) String(L"itemType")), (new (std::nothrow) String(L"event")));
+                       pHashMap->Add((new (std::nothrow) String(L"selectionMode")), (new (std::nothrow) String(L"single")));
                        pAppCntl = AppManager::FindAppControlN(IDS_APPCONTROL_PROVIDER_CALENDAR, IDS_APPCONTROL_OPERATION_PICK);
                }
                break;
@@ -1195,6 +1234,9 @@ MessageComposePanel::GetMessageCounterInfo(int msgLength) const
                }
                length = messaglength - msgLength;
                counterMsg.Append(length);
+               counterMsg.Append("/");
+               counterMsg.Append(messagecount + 1);
+
                if (messagecount != 0)
                {
                        counterMsg.Append("/");
@@ -1203,7 +1245,7 @@ MessageComposePanel::GetMessageCounterInfo(int msgLength) const
        }
        else if (msgLength < MESSAGE_LENGTH + MESSAGE_LENGTH_2)
        {
-               length = msgLength - MESSAGE_LENGTH ;
+               length = msgLength - MESSAGE_LENGTH;
                messagecount = length / MESSAGE_LENGTH_2 + 1;
                messaglength = MESSAGE_LENGTH + MESSAGE_LENGTH_2;
                length = messaglength - msgLength;
@@ -1217,7 +1259,7 @@ MessageComposePanel::GetMessageCounterInfo(int msgLength) const
                messagecount = length / MESSAGE_LENGTH_3 + 1;
                if (messagecount > 1)
                {
-                       messaglength = MESSAGE_LENGTH + MESSAGE_LENGTH_2 +(MESSAGE_LENGTH_3 * (messagecount));
+                       messaglength = MESSAGE_LENGTH + MESSAGE_LENGTH_2 + (MESSAGE_LENGTH_3 * (messagecount));
                }
                else
                {
@@ -1229,32 +1271,6 @@ MessageComposePanel::GetMessageCounterInfo(int msgLength) const
                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;
 }
@@ -1304,7 +1320,7 @@ MessageComposePanel::GetMessageComposeSize(void) const
                        if (!pComposeElement->GetMediaPath(MEDIA_TYPE_AUDIO).IsEmpty())
                        {
                                FileAttributes fileAttr;
-                               r = File::GetAttributes(pComposeElement->GetMediaPath(MEDIA_TYPE_IMAGE), fileAttr);
+                               r = File::GetAttributes(pComposeElement->GetMediaPath(MEDIA_TYPE_AUDIO), fileAttr);
                                if (r == E_SUCCESS)
                                {
                                        sizeBytes += fileAttr.GetFileSize();
@@ -1371,34 +1387,14 @@ MessageComposePanel::IsMmsMode(void) const
                return true;
        MediaTextExpandEditArea* pMediaTextArea = static_cast<MediaTextExpandEditArea*>(pCompoasePanel->
                                                                                                                                                                          GetControl(0));
-       if (pMediaTextArea->IsImageExist() || pMediaTextArea->IsAudioExist() || pMediaTextArea->IsVideoExist())
+       if (pMediaTextArea->IsImageExist() || pMediaTextArea->IsAudioExist() || pMediaTextArea->IsVideoExist() || IsConvertedToMms())
                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)
@@ -1411,7 +1407,7 @@ MessageComposePanel::HideKeypad(void)
                {
                        ((SubjectControl*) pFocusCntl)->ShowKeypad(false);
                }
-               else if (pFocusCntl->GetControlType() == COMPOSE_CONTROL_IMAGE_TEXT)
+               else if (pFocusCntl->GetControlType() == COMPOSE_CONTROL_MEDIA_TEXT)
                {
                        ((MediaTextExpandEditArea*) pFocusCntl)->ShowKeypad(false);
                }
@@ -1432,14 +1428,13 @@ MessageComposePanel::ShowKeypad(void)
                {
                        ((SubjectControl*) pFocusCntl)->ShowKeypad(true);
                }
-               else if (pFocusCntl->GetControlType() == COMPOSE_CONTROL_IMAGE_TEXT)
+               else if (pFocusCntl->GetControlType() == COMPOSE_CONTROL_MEDIA_TEXT)
                {
                        ((MediaTextExpandEditArea*) pFocusCntl)->ShowKeypad(true);
                }
        }
        AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
        return;
-
 }
 
 void
@@ -1459,20 +1454,43 @@ MessageComposePanel::SetTextSize(int textSize)
 }
 
 void
-MessageComposePanel::ClearText(void)
+MessageComposePanel::ClearText(bool redraw)
 {
        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();
-       }
+
+       // Reset subject panel
+       Panel* pSubjectPanel = static_cast<Panel*>(__pScrollPanel->GetControl(L"IDC_PANEL_SUBJECT"));
+       pSubjectPanel->RemoveAllControls();
+       // Reset attach panel
+       Panel* pAttachmentPanel = static_cast<Panel*>(__pScrollPanel->GetControl(L"IDC_PANEL_ATTACHEMENT"));
+       pAttachmentPanel->RemoveAllControls();
+       // Reset image text panel
+       Panel* pImageTextSlidePanel = static_cast<Panel*>(__pScrollPanel->GetControl(L"IDC_PANEL_IMAGE_TEXT"));
+       pImageTextSlidePanel->RemoveAllControls();
+       // Add default page in panel
+       MediaTextExpandEditArea* pDefaultPage = new (std::nothrow) MediaTextExpandEditArea();
+       pDefaultPage->Construct(Rectangle(0, 0, __pScrollPanel->GetWidth(), MIN_COMPOSE_EDITOR_HEIGHT));
+       pDefaultPage->AddKeypadEventListener(*this);
+       pDefaultPage->SetSizeChangeEventListener(*this);
+       pDefaultPage->AddFocusEventListener(*this);
+       pDefaultPage->AddTextEventListener(*this);
+       pDefaultPage->SetDeleteActionId(IDA_COMPOSE_DELETE_ATTACHEMENT);
+       pDefaultPage->SetUpdateActionId(IDA_CHECK_COMPOSE_STATE);
+       pDefaultPage->SetActionEventListener(*this);
+       pImageTextSlidePanel->AddControl(*pDefaultPage);
+       if(redraw)
+       {
+               Draw(); // For immediate refresh, otherwise it will hide behind keypad
+       }
+       pDefaultPage->SetFocus(); // To lunch keyboard.
        __pComposeInfoLabel->SetShowState(false);
        __pSendMessage->SetEnabled(false);
+       // Notify control size reduced.
+       if (__pSizeChangeListener)
+       {
+               __pSizeChangeListener->OnSizeDecrease(*this);
+       }
+
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
 }
 
@@ -1480,13 +1498,23 @@ void
 MessageComposePanel::SetFocusToEditor(void)
 {
        AppLogDebug("ENTER");
-       Panel* pComposePanel = static_cast<Panel*>(__pScrollPanel->
-                                                                                                GetControl(L"IDC_PANEL_IMAGE_TEXT"));
+       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::SetFocusToSubject(void)
+{
+       AppLogDebug("ENTER");
+       Panel* pSubjectPanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                GetControl(L"IDC_PANEL_SUBJECT"));
+       int focusIndex = pSubjectPanel->GetControlCount() - 1;
+       SubjectControl* pSubject = (SubjectControl*) pSubjectPanel->GetControl(focusIndex);
+       pSubject->SetFocus();
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
 }
 
 void
@@ -1513,15 +1541,28 @@ MessageComposePanel::LoadMessageData(const MessageData& msgData)
        if (msgData.IsMms())
        {
 #ifndef _DISABLE_MMS_FEATURE_
-               // Load Subject
                String subjectText = msgData.GetSubject();
                if (subjectText.GetLength() > 0)
                {
-                       AddSubjectField(subjectText);
+                       // Load Subject
+                       Panel* pSubjectPanel = static_cast<Panel*>(__pScrollPanel->GetControl(L"IDC_PANEL_SUBJECT"));
+                       if( pSubjectPanel->GetControlCount()>0 )
+                       {
+                               //Set Subject
+                               SubjectControl* pSubject = (SubjectControl*)pSubjectPanel->GetControl(0);
+                               pSubject->SetText(subjectText);
+                       }
+                       else
+                       {
+                               AddSubjectField(subjectText);
+                       }
                }
-               // Load attachement
+               // Load attachment
                if (msgData.GetAttachmentCount() > 0)
                {
+                       Panel* pAttachPanel = static_cast<Panel*>(__pScrollPanel->
+                                                                                                                               GetControl(L"IDC_PANEL_ATTACHEMENT"));
+                       pAttachPanel->RemoveAllControls();
                        const ArrayList* pAttachList = msgData.GetAttachList();
                        for (int index = 0; index < pAttachList->GetCount(); index++)
                        {
@@ -1534,29 +1575,24 @@ MessageComposePanel::LoadMessageData(const MessageData& msgData)
                {
                        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++)
+                       // Assuming it won't be decrease page count, when try to preview message data.
+                       // Reset and load remaining page data
+                       for (int index = 0; index < pPageList->GetCount(); index++)
                        {
                                MmsPageData* pPageData = (MmsPageData*) pPageList->GetAt(index);
-                               MediaTextExpandEditArea* pComposePage = CreatePage(pPageData->GetBodyText());
+                               MediaTextExpandEditArea* pComposePage = (MediaTextExpandEditArea*) pImageTextSlidePanel->GetControl(index);
+                               // Reset old UI data
+                               if( pComposePage)
+                               {
+                                       pComposePage->ClearText();
+                               }
+                               else
+                               {
+                                       // Create new page for display
+                                       pComposePage = CreatePage(pPageData->GetBodyText());
+                               }
+                               // Load page data
                                if (pComposePage)
                                {
                                        pComposePage->SetText(pPageData->GetBodyText());
@@ -1576,8 +1612,7 @@ MessageComposePanel::LoadMessageData(const MessageData& msgData)
                                }
                        }
                }
-               //__pSendMessage->SetEnabled(true);
-               GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON,null);
+               GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON, null);
 #endif
        }
        else
@@ -1587,9 +1622,10 @@ MessageComposePanel::LoadMessageData(const MessageData& msgData)
                MediaTextExpandEditArea* pComposeElement = (MediaTextExpandEditArea*)
                                                                                                   pImageTextSlidePanel->GetControl(0);
                pComposeElement->SetText(msgData.GetMessageText());
-               //__pSendMessage->SetEnabled(true);
-               GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON,null);
+               GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON, null);
        }
+       __pScrollPanel->ScrollToBottom();
+       ShowComposeInfo();
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
 }
 
@@ -1603,7 +1639,7 @@ MessageComposePanel::ShowComposeInfo(void)
                // Show Byte info
                long long int size = GetMessageComposeSize();
                //__pSendMessage->SetEnabled(size > 0);
-               GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON,null);
+               GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON, null);
                int sizeKb = size / SIZE_1KB;
                if (sizeKb == 0) sizeKb = 1;
                String mmsByteCount;
@@ -1615,7 +1651,7 @@ MessageComposePanel::ShowComposeInfo(void)
        {
                String msgText = GetSmsText();
                //__pSendMessage->SetEnabled(msgText.GetLength() > 0);
-               GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON,null);
+               GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON, null);
                if (GetHeight() > GetMinimumSize().height)
                {
                        //TODO: SLP API is throwing -9 in case of UCS2 type encodeing.
@@ -1641,13 +1677,14 @@ MessageComposePanel::ShowComposeInfo(void)
        }
        __pSendMessage->Draw();
        __pComposeInfoLabel->Draw();
+       __pComposeInfoLabel->Invalidate(true);
 
        AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
        return;
 }
 
 result
-MessageComposePanel::ChangeResolution(const String& sourcPath)
+MessageComposePanel::ChangeResolution(const String& sourcePath)
 {
        AppLogDebug("ENTER");
 
@@ -1661,7 +1698,7 @@ MessageComposePanel::ChangeResolution(const String& sourcPath)
 //     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);
+       Bitmap* pBitmap = pImage->DecodeN(sourcePath, BITMAP_PIXEL_FORMAT_ARGB8888);
        if (pBitmap)
        {
                AppLogDebug("Image resolution( %d, %d )", pBitmap->GetWidth(), pBitmap->GetHeight());
@@ -1716,7 +1753,7 @@ MessageComposePanel::ChangeResolution(const String& sourcPath)
                }
                else
                {
-                       r = pImage->EncodeToFile(*pBitmap, IMG_FORMAT_JPG, sourcPath, true);
+                       r = pImage->EncodeToFile(*pBitmap, IMG_FORMAT_JPG, sourcePath, true);
                        delete pBitmap;
                        delete pImage;
                        AppLogDebug("EXIT: r= %s", GetErrorMessage(GetLastResult()));
@@ -1725,8 +1762,8 @@ MessageComposePanel::ChangeResolution(const String& sourcPath)
 
                if (pBitmap->Scale(Dimension(destWidth, destHeight)) == E_SUCCESS)
                {
-                       AppLogDebug("PATH = %S", sourcPath.GetPointer());
-                       r = pImage->EncodeToFile(*pBitmap, IMG_FORMAT_JPG, sourcPath, true);
+                       AppLogDebug("PATH = %S", sourcePath.GetPointer());
+                       r = pImage->EncodeToFile(*pBitmap, IMG_FORMAT_JPG, sourcePath, true);
                }
                delete pBitmap;
        }
@@ -1749,7 +1786,7 @@ MessageComposePanel::Run(void)
        File::Copy(__pSelectFilePath, mmsDataPath, true);
        __pSelectFilePath.Clear();
        result r = E_SUCCESS;
-       if (!IsSutitableCreationMode(mmsDataPath))
+       if (!IsSuitableCreationMode(mmsDataPath))
        {
                r = ChangeResolution(mmsDataPath);
        }
@@ -1757,7 +1794,7 @@ MessageComposePanel::Run(void)
        {
                if ((GetFileSize(mmsDataPath) > __remainSizeBytes))
                {
-                       // Compress file file.
+                       // Compress file.
                        String compressDataPath(App::GetInstance()->GetAppDataPath());
                        compressDataPath.Append(IDS_COMPRESS + File::GetFileName(mmsDataPath));
                        AppLogDebug("Compress data PATH: %S", compressDataPath.GetPointer());
@@ -1801,7 +1838,7 @@ MessageComposePanel::Run(void)
 }
 
 bool
-MessageComposePanel::IsSutitableCreationMode(const String& filePath) const
+MessageComposePanel::IsSuitableCreationMode(const String& filePath) const
 {
        AppLogDebug("ENTER");
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
@@ -1844,6 +1881,7 @@ MessageComposePanel::LoadComposeData(const MessageComposeData& composeData)
 {
        AppLogDebug("ENTER");
        // In case of SMS, need to check MMS use case
+       ClearText();
        if (composeData.IsMms())
        {
 #ifndef _DISABLE_MMS_FEATURE_
@@ -1911,7 +1949,7 @@ MessageComposePanel::LoadComposeData(const MessageComposeData& composeData)
                        }
                }
                //__pSendMessage->SetEnabled(true);
-               GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON,null);
+               GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON, null);
 #endif
        }
        else
@@ -1921,26 +1959,36 @@ MessageComposePanel::LoadComposeData(const MessageComposeData& composeData)
                MediaTextExpandEditArea* pComposeElement = (MediaTextExpandEditArea*)
                                                                                                   pImageTextSlidePanel->GetControl(0);
                pComposeElement->SetText(composeData.GetSmsBody());
-               if(composeData.GetSmsBody().GetLength() > 0)
+               if (composeData.GetSmsBody().GetLength() > 0)
                {
                        //__pSendMessage->SetEnabled(true);
-                       GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON,null);
+                       GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON, null);
                }
                else
                {
                        __pSendMessage->SetEnabled(false);
                }
        }
+       __pScrollPanel->ScrollToBottom();
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
 }
 
 IList*
-MessageComposePanel::GetSelectedFileListN(const String& operationId, const IMap* pResultMap)
+MessageComposePanel::GetSelectedFileListN(const String& appId, const IMap* pResultMap)
 {
        AppLogDebug("ENTER");
 
        ArrayList* pSelectedFileList = null;
-       String* pSelectedFiles = (String*) pResultMap->GetValue(String(IDS_VALUE_KEY));
+       String* pSelectedFiles = null;
+       String contactsAppID(L"tizen.contacts");
+       if (appId.Equals(contactsAppID))
+       {
+               pSelectedFiles = (String*) pResultMap->GetValue(String(L"value"));
+       }
+       else
+       {
+               pSelectedFiles = (String*) pResultMap->GetValue(String(L"path"));
+       }
        if (pSelectedFiles)
        {
                pSelectedFileList = new (std::nothrow) ArrayList();
@@ -1954,13 +2002,13 @@ MessageComposePanel::GetSelectedFileListN(const String& operationId, const IMap*
                        for (int index = 0; index < tokenCount; index++)
                        {
                                strToken.GetNextToken(*pFilePath);
-                               pSelectedFileList->Add(pFilePath);
+                               pSelectedFileList->Add(new (std::nothrow) String(*pFilePath));
                        }
                }
                else
                {
                        pFilePath->Append(*pSelectedFiles);
-                       pSelectedFileList->Add(pFilePath);
+                       pSelectedFileList->Add(new (std::nothrow) String(*pFilePath));
                }
        }
 
@@ -1973,7 +2021,7 @@ MessageComposePanel::EnableSendButton(bool status)
 {
        AppLogDebug("ENTER");
 
-       if(__pSendMessage)
+       if (__pSendMessage)
        {
                __pSendMessage->SetEnabled(status);
                Invalidate(true);
@@ -1981,5 +2029,3 @@ MessageComposePanel::EnableSendButton(bool status)
 
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
 }
-
-
index c158533..b0fd6be 100644 (file)
@@ -43,10 +43,10 @@ MessageData::MessageData(void)
        , __displayTime(0)\r
        , __networkStatus(-1)\r
        , __isRead(true)\r
+       , __isMediaFilePresent(false)\r
        , __messageDirection(0)\r
        , __pAddressList(null)\r
        , __attachmentCount(0)\r
-       , __pThumbnailBitmap(null)\r
        , __pAttachList(null)\r
        , __pPageList(null)\r
 {\r
@@ -63,6 +63,17 @@ MessageData::~MessageData(void)
                __pAddressList->RemoveAll(true);\r
                delete __pAddressList;\r
        }\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
+\r
 \r
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
 }\r
@@ -174,14 +185,12 @@ MessageData::Construct(MessageComposeData& compseData)
                __subjectStr.Append(compseData.GetSubject());\r
                // Intialize page list\r
                __pPageList = new (std::nothrow) ArrayList();\r
+               __pPageList->Construct();\r
                const ArrayList* pPageList = compseData.GetPageList();\r
-               if (pPageList)\r
+               for(int count=0; count<pPageList->GetCount(); count++)\r
                {\r
-                       __pPageList->Construct(*pPageList);\r
-               }\r
-               else\r
-               {\r
-                       __pPageList->Construct();\r
+                       MmsPageData* pMmmsPageData = (MmsPageData*)pPageList->GetAt(count);\r
+                       __pPageList->Add(pMmmsPageData->CloneN());\r
                }\r
        }\r
        else\r
@@ -207,7 +216,6 @@ MessageData::CloneN(void)
                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
@@ -223,6 +231,24 @@ MessageData::CloneN(void)
                pMsgData->__messageBody = this->__messageBody;\r
                pMsgData->__groupName = this->__groupName;\r
                pMsgData->__timeStamp = this->__timeStamp;\r
+               // For MMS\r
+               pMsgData->__attachmentCount = this->__attachmentCount;\r
+               pMsgData->__thumbnailPath = this->__thumbnailPath;\r
+               pMsgData->__subjectStr = this->__subjectStr;\r
+               pMsgData->__pAttachList = new (std::nothrow) ArrayList();\r
+               pMsgData->__pAttachList->Construct();\r
+               for (int index = 0; index < this->__pAttachList->GetCount(); index++)\r
+               {\r
+                       String* pFilePath = (String*)__pAttachList->GetAt(index);\r
+                       pMsgData->__pAttachList->Add(new (std::nothrow) String(*pFilePath));\r
+               }\r
+               pMsgData->__pPageList = new (std::nothrow) ArrayList();\r
+               pMsgData->__pPageList->Construct();\r
+               for (int index = 0; index < this->__pAttachList->GetCount(); index++)\r
+               {\r
+                       MmsPageData* pMmmsPageData = (MmsPageData*)__pPageList->GetAt(index);\r
+                       pMsgData->__pPageList->Add(pMmmsPageData->CloneN());\r
+               }\r
        }\r
 \r
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
@@ -495,22 +521,6 @@ MessageData::GetAddressList(void) const
        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
@@ -563,6 +573,16 @@ MessageData::GetThreadId(void) const
        return __threadId;\r
 }\r
 \r
+bool\r
+MessageData::IsFilePresent(void) const\r
+{\r
+       if (__isMediaFilePresent || GetAttachmentCount())\r
+       {\r
+               return true;\r
+       }\r
+       return false;\r
+}\r
+\r
 result\r
 MessageData::InitMmsData(msg_struct_t pMessageInfo, bool mmsDetailInfo)\r
 {\r
@@ -682,20 +702,24 @@ MessageData::InitMmsData(msg_struct_t pMessageInfo, bool mmsDetailInfo)
                                                msg_get_int_value(pMediaInfo, MSG_MMS_MEDIA_TYPE_INT, &mediaType);\r
                                                if (mediaType == MMS_SMIL_MEDIA_IMG)\r
                                                {\r
+                                                       __isMediaFilePresent = true;\r
                                                        pPageData->SetImagePath(GetMediaPath(pMediaInfo));\r
                                                }\r
                                                else if ((mediaType == MMS_SMIL_MEDIA_VIDEO) ||\r
                                                                 (mediaType == MMS_SMIL_MEDIA_IMG_OR_VIDEO))\r
                                                {\r
+                                                       __isMediaFilePresent = true;\r
                                                        pPageData->SetVideoPath(GetMediaPath(pMediaInfo));\r
                                                }\r
                                                else if (mediaType == MMS_SMIL_MEDIA_AUDIO)\r
                                                {\r
+                                                       __isMediaFilePresent = true;\r
                                                        pPageData->SetAudioPath(GetMediaPath(pMediaInfo));\r
                                                }\r
                                                else if (mediaType == MMS_SMIL_MEDIA_TEXT)\r
                                                {\r
                                                        String pageBodyText;\r
+                                                       String pageMmsBodyText;\r
                                                        char* pFilePath = new (std::nothrow) char[MSG_FILEPATH_LEN_MAX];\r
                                                        if (pFilePath)\r
                                                        {\r
@@ -715,10 +739,16 @@ MessageData::InitMmsData(msg_struct_t pMessageInfo, bool mmsDetailInfo)
                                                                        delete[] pFilePath;\r
                                                                        continue;\r
                                                                }\r
-                                                               file.Read(pageBodyText);\r
+                                                               r = E_SUCCESS;\r
+\r
+                                                               while (r != E_END_OF_FILE)\r
+                                                               {\r
+                                                                       r = file.Read(pageBodyText);\r
+                                                                       pageMmsBodyText.Append(pageBodyText);\r
+                                                               }\r
                                                                delete[] pFilePath;\r
                                                        }\r
-                                                       pPageData->SetBodyText(pageBodyText);\r
+                                                       pPageData->SetBodyText(pageMmsBodyText);\r
                                                }\r
                                                else\r
                                                {\r
index 764b15e..c3aeff6 100644 (file)
@@ -209,19 +209,12 @@ MessagePresentationModel::UpdateSearchContactList(const IList& searchResultList,
        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
+                       pContact->GetValue(CONTACT_PROPERTY_ID_DISPLAY_NAME, contactName);\r
                        IList* pPhoneNumberList = pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);\r
                        if (pPhoneNumberList != null)\r
                        {\r
@@ -235,8 +228,19 @@ MessagePresentationModel::UpdateSearchContactList(const IList& searchResultList,
                                                // 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
+                                                       if (!__pActiveSearchContactNumbersList->Contains(pPhoneNumber->GetPhoneNumber()))\r
+                                                       {\r
+                                                               __pActiveSearchNamesList->Add((new String(contactName)));\r
+                                                               __pActiveSearchContactNumbersList->Add((new String(pPhoneNumber->GetPhoneNumber())));\r
+                                                       }\r
+                                                       else\r
+                                                       {\r
+                                                               if (!__pActiveSearchNamesList->Contains(contactName))\r
+                                                               {\r
+                                                                       __pActiveSearchNamesList->Add((new String(contactName)));\r
+                                                                       __pActiveSearchContactNumbersList->Add((new String(pPhoneNumber->GetPhoneNumber())));\r
+                                                               }\r
+                                                       }\r
                                                }\r
                                        }\r
                                        delete pEnum;\r
index 6c2e989..ce47faf 100644 (file)
@@ -14,6 +14,7 @@
 // limitations under the License.
 //
 
+#include <msg.h>
 #include <FBaseUtilStringTokenizer.h>
 #include <FSocial.h>
 
@@ -97,9 +98,16 @@ bool
 MessagesApp::OnAppInitializing(AppRegistry& appRegistry)
 {
        AppLogDebug("ENTER");
+
+       msg_error_t err = CheckMesageServiceAvailable();
+       if(err != MSG_SUCCESS)
+       {
+               CommonUtil::ShowErrorInfo(err);
+               return false;
+       }
        __pFacadeManager = new (std::nothrow) FacadeManager();
        result r = __pFacadeManager->Initialize();
-       if (!__pFacadeManager || r != E_SUCCESS)
+       if ( r == E_FAILURE)
        {
                AppLogDebug("Unable to initialize MsgFacadeManager");
                return false;
@@ -115,13 +123,18 @@ MessagesApp::OnAppInitialized(void)
 {
        AppLogDebug("ENTER");
 
+       msg_error_t err = CheckMesageServiceAvailable();
+       if(err != MSG_SUCCESS)
+       {
+               CommonUtil::ShowErrorInfo(err);
+               return false;
+       }
        // 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();
@@ -176,6 +189,16 @@ void
 MessagesApp::OnForeground(void)
 {
        AppLogDebug("ENTER");
+       Frame* pAppFrame = UiApp::GetInstance()->GetFrame(IDC_FRAME_NAME);
+       if (pAppFrame)
+       {
+               Form* pCurrentForm = pAppFrame->GetCurrentForm();
+               if (pCurrentForm)
+               {
+                       RequestId requestId = REQUEST_UPDATE_CONV_LIST;
+                       pCurrentForm->SendUserEvent(requestId, null);
+               }
+       }
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
        return;
 }
@@ -184,6 +207,16 @@ void
 MessagesApp::OnBackground(void)
 {
        AppLogDebug("ENTER");
+       Frame* pAppFrame = UiApp::GetInstance()->GetFrame(IDC_FRAME_NAME);
+       if (pAppFrame)
+       {
+               Form* pCurrentForm = pAppFrame->GetCurrentForm();
+               if (pCurrentForm)
+               {
+                       RequestId requestId = REQUEST_PAUSE_PREVIEW_VIEWER;
+                       pCurrentForm->SendUserEvent(requestId, null);
+               }
+       }
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
        return;
 }
@@ -403,6 +436,7 @@ MessagesApp::UpdateRecipients(MessageComposeData& composeDta, const String& reci
                                AddressInfo* pNewAddrInfo = new (std::nothrow) AddressInfo();
                                pNewAddrInfo->phoneNumber.Append(phoneNumber);
                                pNewAddrInfo->needToValidate = false;
+                               pNewAddrInfo->isAddFromContacts = true;
                                // Get recipient name
                                GetRecipientName(*pNewAddrInfo, phoneNumber);
                                composeDta.AddRecipient(pNewAddrInfo);
@@ -419,8 +453,9 @@ MessagesApp::UpdateRecipients(MessageComposeData& composeDta, const String& reci
                AddressInfo* pNewAddrInfo = new (std::nothrow) AddressInfo();
                pNewAddrInfo->phoneNumber.Append(recipientsStr);
                pNewAddrInfo->needToValidate = false;
+               pNewAddrInfo->isAddFromContacts = true;
                // Get recipient name
-               GetRecipientName(*pNewAddrInfo,recipientsStr);
+               GetRecipientName(*pNewAddrInfo, recipientsStr);
                composeDta.AddRecipient(pNewAddrInfo);
        }
        else
@@ -439,31 +474,36 @@ MessagesApp::GetRecipientName(AddressInfo& addressInfo, const String& strPhoneNu
        if (!__pAddressBook)
        {
                __pAddressBook = AddressbookManager::GetInstance()->GetAddressbookN();
-               if (__pAddressBook)
-               {
-                       __pAddressBook->SetEventListener(null);
-               }
        }
-       if(__pAddressBook)
+       if (__pAddressBook)
        {
                IList* pRecipientNameList = __pAddressBook->SearchContactsByPhoneNumberN(strPhoneNumber);
                if (pRecipientNameList)
                {
-                       Contact* pRecipientContact = ContactUtility::GetContact(pRecipientNameList,strPhoneNumber);
-                       if(pRecipientContact)
+                       Contact* pRecipientContact = ContactUtility::GetContact(pRecipientNameList, strPhoneNumber);
+                       if (pRecipientContact)
                        {
-                               pRecipientContact->GetValue(CONTACT_PROPERTY_ID_FIRST_NAME, addressInfo.displayName);
+                               pRecipientContact->GetValue(CONTACT_PROPERTY_ID_DISPLAY_NAME, addressInfo.displayName);
                        }
                        pRecipientNameList->RemoveAll(true);
                        delete pRecipientNameList;
                }
        }
-       if(addressInfo.displayName.CompareTo(String(IDS_BLANK)) == 0)
+       if (addressInfo.displayName.CompareTo(String(IDS_BLANK)) == 0)
        {
                addressInfo.displayName.Append(strPhoneNumber);
+               addressInfo.isAddFromContacts = false;
        }
 
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
        return;
 }
 
+int
+MessagesApp::CheckMesageServiceAvailable(void) const
+{
+       msg_handle_t pMsgHandle;
+       msg_error_t err = msg_open_msg_handle(&pMsgHandle);
+       msg_close_msg_handle(&pMsgHandle);
+       return err;
+}
index 0696c51..b70e267 100644 (file)
@@ -17,6 +17,7 @@
 #include <FApp.h>\r
 #include <FBase.h>\r
 #include <FMedia.h>\r
+#include <FSocial.h>\r
 #include <FSystem.h>\r
 #include <FUiCtrlFooter.h>\r
 #include <FUiCtrlHeader.h>\r
@@ -27,6 +28,7 @@
 #include "MsgAttachmentSavePopup.h"\r
 #include "MsgBaseCustomPopup.h"\r
 #include "MsgBitmapUtility.h"\r
+#include "MsgContactList.h"\r
 #include "MsgContactUtility.h"\r
 #include "MsgCommonUtil.h"\r
 #include "MsgMessageData.h"\r
 #include "MsgConversationPresentationModel.h"\r
 #include "MsgTypes.h"\r
 \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::Graphics;\r
+using namespace Tizen::Media;\r
+using namespace Tizen::Social;\r
+using namespace Tizen::System;\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
+const wchar_t* IDS_TIZEN_MEDIA = L"http://tizen.org/setting/sound.media.volume";\r
 \r
 MmsDetailForm::MmsDetailForm(void)\r
-       : __pMessageData(null)\r
+       : __pConContactList(null)\r
+       , __pMessageData(null)\r
        , __pMsgAttachListPanel(null)\r
        , __pAttachFileArray(null)\r
+       , __pRecipientNameList(null)\r
        , __pGallery(null)\r
        , __pMmsTextBox(null)\r
        , __pPlayControlPanel(null)\r
@@ -64,6 +69,7 @@ MmsDetailForm::MmsDetailForm(void)
        , __pTimeElapsedLabel(null)\r
        , __pPageNumberLabel(null)\r
        , __pAttachFilesInfoLabel(null)\r
+       , __pList(null)\r
        , __pMessageDetailsPopup(null)\r
        , __pDeletePopup(null)\r
        , __pVolumePopup(null)\r
@@ -71,6 +77,7 @@ MmsDetailForm::MmsDetailForm(void)
        , __pContextMenu(null)\r
        , __pContextMenuText(null)\r
        , __pMediaVolumeSlider(null)\r
+       , __pScrollPanel(null)\r
        , __pOverlay(null)\r
        , __pPlayer(null)\r
        , __pSaveAttachmentsPopup(null)\r
@@ -84,6 +91,7 @@ MmsDetailForm::MmsDetailForm(void)
        , __pTimerforVolumePopup(null)\r
        , __pTimerForControlBar(null)\r
        , __mmsFormType(MMS_FORM_NORMAL)\r
+       , __recipientPhoneNumber(IDS_BLANK)\r
 {\r
        //Empty implementation\r
 }\r
@@ -143,7 +151,15 @@ MmsDetailForm::~MmsDetailForm(void)
        {\r
                delete __pOverlay;\r
        }\r
-\r
+       if(__pConContactList)\r
+       {\r
+               delete __pConContactList;\r
+       }\r
+       if(__pRecipientNameList)\r
+       {\r
+               __pRecipientNameList->RemoveAll(true);\r
+               delete __pRecipientNameList;\r
+       }\r
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
 }\r
 \r
@@ -180,53 +196,13 @@ MmsDetailForm::SetFooter(void)
                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
+                       ButtonItem btnLeft;\r
+                       btnLeft.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_MORE);\r
+                       Bitmap* pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_MORE);\r
+                       btnLeft.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pBitMap);\r
+                       pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_MORE_PRESSED);\r
+                       btnLeft.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pBitMap);\r
+                       pFooter->SetButton(BUTTON_POSITION_LEFT, btnLeft);\r
                }\r
                pFooter->SetBackButton();\r
        }\r
@@ -244,6 +220,71 @@ MmsDetailForm::OnIntializeHeader(Header& header)
 }\r
 \r
 void\r
+MmsDetailForm::SetHeader(void)\r
+{\r
+       if(__mmsFormType == MMS_FORM_PREVIEW)\r
+       {\r
+               Header* pHeader = GetHeader();\r
+               pHeader->RemoveAllItems();\r
+               pHeader->SetStyle(HEADER_STYLE_TITLE);\r
+               pHeader->SetTitleText(__pMessageData->GetDisplayName());\r
+       }\r
+       else\r
+       {\r
+               bool showAttachmentIcon = false;\r
+               if (__pMessageData->GetAttachmentCount())\r
+               {\r
+                       showAttachmentIcon = true;\r
+               }\r
+               else if (__pMessageData->GetPageCount())\r
+               {\r
+                       for (int i = 0; i < __pMessageData->GetPageCount(); i++)\r
+                       {\r
+                               if (GetSlideType(i) != TextSlide && GetSlideType(i) != SubjectSlide)\r
+                               {\r
+                                       showAttachmentIcon = true;\r
+                               }\r
+                       }\r
+               }\r
+               GetHeader()->RemoveAllItems();\r
+               GetHeader()->RemoveAllButtons();\r
+               if (showAttachmentIcon)\r
+               {\r
+                       ButtonItem btnLeft;\r
+                       btnLeft.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_SAVE_ATTACHMENT);\r
+                       Bitmap* pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SAVE_ATTACHMENT);\r
+                       btnLeft.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pBitMap);\r
+                       pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SAVE_ATTACHMENT_PRESSED);\r
+                       btnLeft.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pBitMap);\r
+                       GetHeader()->SetButton(BUTTON_POSITION_RIGHT, btnLeft);\r
+               }\r
+               // Set title\r
+               HeaderItem headerLeftItem;\r
+               headerLeftItem.Construct(IDA_MMSDETAIL_FORM_HEADER_TITLEITEM);\r
+               const ArrayList* pNameList = __pMessageData->GetAddressList();\r
+               if(pNameList)\r
+               {\r
+                       String headerTitleName(IDS_BLANK);\r
+                       AddressInfo* pAddressInfo = (AddressInfo *)pNameList->GetAt(0);\r
+                       if(pAddressInfo)\r
+                       {\r
+                               headerTitleName.Append(pAddressInfo->displayName);\r
+                               __recipientPhoneNumber.Clear();\r
+                               __recipientPhoneNumber.Append(pAddressInfo->phoneNumber);\r
+                               if(pNameList->GetCount() > 1)\r
+                               {\r
+                                       headerTitleName.Append(" + ");\r
+                                       headerTitleName.Append(pNameList->GetCount() - 1);\r
+                               }\r
+                       }\r
+                       headerLeftItem.SetText(headerTitleName);\r
+               }\r
+               GetHeader()->AddItem(headerLeftItem);\r
+               GetHeader()->Invalidate(true);\r
+       }\r
+}\r
+\r
+void\r
 MmsDetailForm::OnUserEventReceivedN(RequestId requestId, IList* pArgs)\r
 {\r
        AppLogDebug("ENTER");\r
@@ -259,8 +300,51 @@ MmsDetailForm::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
                }\r
        }\r
        break;\r
+\r
+       case REQUEST_PAUSE_PREVIEW_VIEWER:\r
+       {\r
+               if (__bIsPlaying)\r
+               {\r
+                       __bIsPlaying = false;\r
+                       PauseSlideShow();\r
+               }\r
        }\r
+       break;\r
+\r
+       case REQUEST_UPDATE_CONV_LIST:\r
+       {\r
+               int messageEntryId = __pMessageData->GetEntryId();\r
+               if(__pMessageData)\r
+               {\r
+                       delete __pMessageData;\r
+                       __pMessageData = null;\r
+               }\r
 \r
+               if(__pRecipientNameList)\r
+               {\r
+                       delete __pRecipientNameList;\r
+                       __pRecipientNameList = null;\r
+               }\r
+               MessagePresentationModel* pMsgPrModel = MessagePresentationModel::GetInstance();\r
+               if(pMsgPrModel)\r
+               {\r
+                       __pMessageData = pMsgPrModel->GetMessageDataByIdN(messageEntryId);\r
+                       if(__pMessageData)\r
+                       {\r
+                               SetHeader();\r
+                               PrepareRecipientList();\r
+                               if(__pMessageData->GetAddressList()->GetCount() > 1)\r
+                               {\r
+                                       if(__pList)\r
+                                       {\r
+                                               ShowRecipientList(true);\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+       break;\r
+       }\r
        // Release resource\r
        if (pArgs)\r
        {\r
@@ -280,21 +364,32 @@ MmsDetailForm::OnInitializing(void)
        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
+\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
+       __pScrollPanel = static_cast<ScrollPanel*>(GetControl(L"IDC_SCROLLPANEL"));\r
+\r
+       if (__pScrollPanel)\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
+               __pScrollPanel->AddTouchEventListener(*this);\r
+               __pMmsTextBox = static_cast<TextBox*>(__pScrollPanel->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
+                       Color color = __pMmsTextBox->GetTextColor(TEXT_BOX_TEXT_COLOR_NORMAL);\r
+                       __pMmsTextBox->SetTextColor(TEXT_BOX_TEXT_COLOR_DISABLED, color);\r
+\r
+                       //      TODO: If touchevent lsitener is added scroll do not work.\r
+                       __pMmsTextBox->SetShowState(true);\r
+                       __pMmsTextBox->AddTouchEventListener(*this);\r
+                       __pMmsTextBox->SetEnabled(false);\r
+               }\r
+               __pGallery = static_cast<Gallery*>(__pScrollPanel->GetControl(L"IDC_GALLERY_MMS_IMAGE"));\r
+               __pGallery->SetShowState(false);\r
+               __pGallery->AddTouchEventListener(*this);\r
        }\r
 \r
        __pPlayControlPanel = static_cast<Panel*>(GetControl(L"IDC_PLAY_CONTROLS_PANEL"));\r
@@ -302,25 +397,38 @@ MmsDetailForm::OnInitializing(void)
        {\r
                //__pPlayControlPanel->SetShowState(false);\r
                __pPlayControlPanel->SetBackgroundColor(COLOR_PANEL_BORDER);\r
+               SetControlAlwaysOnTop(*__pPlayControlPanel, true);\r
                Button* pVolumeButton = static_cast<Button*>(__pPlayControlPanel->GetControl(L"IDC_VOLUME_BUTTON"));\r
                if (pVolumeButton)\r
                {\r
+                       pVolumeButton->SetColor(BUTTON_STATUS_PRESSED,COLOR_PANEL_BORDER);\r
+                       pVolumeButton->SetColor(BUTTON_STATUS_NORMAL,COLOR_PANEL_BORDER);\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->SetColor(BUTTON_STATUS_PRESSED,COLOR_PANEL_BORDER);\r
+                       __pPreviousButton->SetColor(BUTTON_STATUS_NORMAL,COLOR_PANEL_BORDER);\r
+                       __pPreviousButton->SetColor(BUTTON_STATUS_DISABLED,COLOR_PANEL_BORDER);\r
                        __pPreviousButton->SetActionId(IDA_PREVIOUS);\r
                        __pPreviousButton->AddActionEventListener(*this);\r
-                       __pPreviousButton->SetSize(W_PLAYCONTROL_BUTTON, H_PLAYCONTROL_BUTTON);\r
+                       Bitmap* pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SMIL_PREVIOUS);\r
+                       if (pBitMap)\r
+                       {\r
+                               pBitMap->Scale(Dimension(W_PLAYCONTROL_BUTTON, H_PLAYCONTROL_BUTTON));\r
+                       }\r
+                       __pPreviousButton->SetDisabledBitmap(Point(0,0), *pBitMap);\r
 \r
                }\r
                __pPlayPausebutton = static_cast<Button*>(__pPlayControlPanel->GetControl(L"IDC_PLAY_PAUSE_BUTTON"));\r
                if (__pPlayPausebutton)\r
                {\r
+                       __pPlayPausebutton->SetColor(BUTTON_STATUS_PRESSED,COLOR_PANEL_BORDER);\r
+                       __pPlayPausebutton->SetColor(BUTTON_STATUS_NORMAL,COLOR_PANEL_BORDER);\r
+                       __pPlayPausebutton->SetColor(BUTTON_STATUS_DISABLED,COLOR_PANEL_BORDER);\r
                        __pPlayPausebutton->SetActionId(IDA_PLAY);\r
                        __pPlayPausebutton->AddActionEventListener(*this);\r
                        __pPlayPausebutton->SetSize(W_PLAYCONTROL_BUTTON, H_PLAYCONTROL_BUTTON);\r
@@ -329,14 +437,23 @@ MmsDetailForm::OnInitializing(void)
                        {\r
                                pBitMap->Scale(Dimension(W_PLAYCONTROL_BUTTON, H_PLAYCONTROL_BUTTON));\r
                        }\r
-                       __pPlayPausebutton->SetNormalBitmap(Point(0, 0), *pBitMap);\r
+                       __pPlayPausebutton->SetNormalBackgroundBitmap(*pBitMap);\r
+                       __pPlayPausebutton->SetPressedBackgroundBitmap(*pBitMap);\r
                }\r
                __pNextbutton = static_cast<Button*>(__pPlayControlPanel->GetControl(L"IDC_NEXT_BUTTON"));\r
                if (__pNextbutton)\r
                {\r
+                       __pNextbutton->SetColor(BUTTON_STATUS_PRESSED,COLOR_PANEL_BORDER);\r
+                       __pNextbutton->SetColor(BUTTON_STATUS_NORMAL,COLOR_PANEL_BORDER);\r
+                       __pNextbutton->SetColor(BUTTON_STATUS_DISABLED,COLOR_PANEL_BORDER);\r
                        __pNextbutton->SetActionId(IDA_NEXT);\r
                        __pNextbutton->AddActionEventListener(*this);\r
-                       __pNextbutton->SetSize(W_PLAYCONTROL_BUTTON, H_PLAYCONTROL_BUTTON);\r
+                       Bitmap* pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SMIL_NEXT);\r
+                       if (pBitMap)\r
+                       {\r
+                               pBitMap->Scale(Dimension(W_PLAYCONTROL_BUTTON, H_PLAYCONTROL_BUTTON));\r
+                       }\r
+                       __pNextbutton->SetDisabledBitmap(Point(0,0), *pBitMap);\r
 \r
                }\r
                __pProgress = static_cast<Progress*>(__pPlayControlPanel->GetControl(L"IDC_PROGRESS"));\r
@@ -402,81 +519,66 @@ MmsDetailForm::OnSceneActivatedN(const SceneId& previousSceneId,
                        }\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
+               SetHeader();\r
+               SetFooter();\r
+               PrepareRecipientList();\r
+               //  Load data to UI from message data\r
+               if (__pMessageData)\r
+               {\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
-                               const String mmsBodyText = pPageData->GetBodyText();\r
-                               if (__pMmsTextBox && !i)\r
+                               MmsPageData* pPageData = static_cast<MmsPageData*>(pAttachList->GetAt(i));\r
+                               if (pPageData)\r
                                {\r
-                                       __pMmsTextBox->SetText(mmsBodyText);\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
-                               __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
+                       if (__pMessageData->GetAttachmentCount())\r
                        {\r
-                               strTotaltime = (L"00:0");\r
+                               __totalDuration = __totalDuration + 5;\r
+                               __pageCountOfCurrentMessageData++;\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
+                       //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
+                       SetTotalTimeDuration(__totalDuration);\r
+                       if (__pPageNumberLabel)\r
+                       {\r
+                               String slideNumber(L"1/");\r
+                               slideNumber.Append(__pageCountOfCurrentMessageData);\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
-               __pPreviousButton->SetEnabled(false);\r
        }\r
        UpdateForm(GetSlideType(__currentPage));\r
        StartSlideShow();\r
@@ -531,8 +633,8 @@ MmsDetailForm::OnActionPerformed(const Control& source, int actionId)
                                        __pProgress->SetValue(__timeElapsed);\r
                                        __pProgress->RequestRedraw(true);\r
                                }\r
-                               UpdateForm(GetSlideType(__currentPage));\r
                                UpdateMmsBodyText();\r
+                               UpdateForm(GetSlideType(__currentPage));\r
                                StartSlideShow();\r
                        }\r
                        else\r
@@ -565,8 +667,8 @@ MmsDetailForm::OnActionPerformed(const Control& source, int actionId)
                }\r
                __timeElapsed = timeToRefreshGallery;\r
                __currentPage++;\r
-               UpdateForm(GetSlideType(__currentPage));\r
                UpdateMmsBodyText();\r
+               UpdateForm(GetSlideType(__currentPage));\r
                UpdateTimeElapsedLabel(__timeElapsed);\r
                UpdateSlideNumber(__currentPage + 1);\r
                if (__pPreviousButton)\r
@@ -597,8 +699,8 @@ MmsDetailForm::OnActionPerformed(const Control& source, int actionId)
                }\r
                __timeElapsed = timeToRefreshGallery;\r
                __currentPage--;\r
-               UpdateForm(GetSlideType(__currentPage));\r
                UpdateMmsBodyText();\r
+               UpdateForm(GetSlideType(__currentPage));\r
                UpdateTimeElapsedLabel(__timeElapsed);\r
                UpdateSlideNumber(__currentPage + 1);\r
                if (!__currentPage)\r
@@ -621,23 +723,37 @@ MmsDetailForm::OnActionPerformed(const Control& source, int actionId)
 \r
        case IDA_MORE:\r
        {\r
-               ShowMoreContextMenu();\r
+               if(__pList && __pList->GetShowState())\r
+               {\r
+                       __pList->SetShowState(false);\r
+               }\r
+               else\r
+               {\r
+                       ShowMoreContextMenu();\r
+               }\r
        }\r
        break;\r
 \r
        case IDA_SAVE_ATTACHMENT:\r
        {\r
-               MessagePresentationModel* pMsgPrModel = MessagePresentationModel::GetInstance();\r
-               if (pMsgPrModel)\r
+               if(__pList && __pList->GetShowState())\r
+               {\r
+                       __pList->SetShowState(false);\r
+               }\r
+               else\r
                {\r
-                       // Transfer ownership to popup\r
-                       MessageData* pMessageData = pMsgPrModel->GetMessageDataByIdN(__pMessageData->GetEntryId());\r
-                       if (pMessageData)\r
+                       MessagePresentationModel* pMsgPrModel = MessagePresentationModel::GetInstance();\r
+                       if (pMsgPrModel)\r
                        {\r
-                               __pSaveAttachmentsPopup = new (std::nothrow) AttachementSavePopup(*this, pMessageData);\r
-                               //pMessageData = null; // Transfer ownership\r
-                               __pSaveAttachmentsPopup->Construct();\r
-                               __pSaveAttachmentsPopup->Show();\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
        }\r
@@ -648,11 +764,10 @@ MmsDetailForm::OnActionPerformed(const Control& source, int actionId)
                __pDeletePopup->SetShowState(false);\r
                delete __pDeletePopup;\r
                __pDeletePopup = null;\r
-\r
-               ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();\r
-               if (pConvPrModel)\r
+               MessagePresentationModel* pMsgPrModel = MessagePresentationModel::GetInstance();\r
+               if (pMsgPrModel)\r
                {\r
-                       pConvPrModel->Delete(__pMessageData->GetEntryId(), REQUEST_DELETE_MESSAGE);\r
+                       pMsgPrModel->Delete(__pMessageData->GetEntryId(), REQUEST_DELETE_MESSAGE);\r
                        OnFormBackRequested(*this);\r
                }\r
        }\r
@@ -672,48 +787,24 @@ MmsDetailForm::OnActionPerformed(const Control& source, int actionId)
                __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
+               bool showRecpList(true);\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
+               const ArrayList* pNameList = __pMessageData->GetAddressList();\r
+               if(pNameList)\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
+                       if(pNameList->GetCount() == 1)\r
+                       {\r
+                               ShowRecipientContextMenu(source);\r
+                       }\r
+                       else if(pNameList->GetCount() > 1)\r
+                       {\r
+                               if(__pList)\r
+                               {\r
+                                       showRecpList = !(__pList->GetShowState());\r
+                               }\r
+                               ShowRecipientList(showRecpList);\r
+                       }\r
                }\r
-\r
-               __pContextMenuText->AddActionEventListener(*this);\r
-               __pContextMenuText->SetShowState(true);\r
-               __pContextMenuText->Show();\r
        }\r
        break;\r
 \r
@@ -721,7 +812,7 @@ MmsDetailForm::OnActionPerformed(const Control& source, int actionId)
        {\r
                if (CommonUtil::IsSimAvailable())\r
                {\r
-                       ContactUtility::VoiceCall(__pMessageData->GetDisplayName());\r
+                       ContactUtility::VoiceCall(__recipientPhoneNumber);\r
                }\r
                else\r
                {\r
@@ -733,22 +824,28 @@ MmsDetailForm::OnActionPerformed(const Control& source, int actionId)
        }\r
        break;\r
 \r
+       case IDA_CONVERSATION_FORM_ADD_CONTACT:\r
+       {\r
+               ContactUtility::AddContact(__recipientPhoneNumber);\r
+       }\r
+       break;\r
+\r
        case IDA_CONVERSATION_FORM_VIEW_CONTACT:\r
        {\r
-               ContactUtility::AddContact(__pMessageData->GetDisplayName());\r
+               ContactUtility::ViewContact(__recipientPhoneNumber);\r
        }\r
        break;\r
 \r
        case IDA_CONVERSATION_FORM_BLOCK:\r
        {\r
-               BlockPopup(__pMessageData->GetDisplayName());\r
+               BlockPopup(__recipientPhoneNumber);\r
        }\r
        break;\r
 \r
        case IDA_PHONENUMBER_BLOCK_OK:\r
        {\r
                SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();\r
-               pSettingPrModel->AddToFilter(__pMessageData->GetDisplayName(), 1);\r
+               pSettingPrModel->AddToFilter(__recipientPhoneNumber, 1);\r
                pSettingPrModel->RefreshSpamFilterList();\r
                if (__pBlockPopup)\r
                {\r
@@ -773,7 +870,7 @@ MmsDetailForm::OnActionPerformed(const Control& source, int actionId)
 \r
        case IDA_CONVERSATION_FORM_UNBLOCK:\r
        {\r
-               UnBlockPhoneNumber(__pMessageData->GetDisplayName());\r
+               UnBlockPhoneNumber(__recipientPhoneNumber);\r
        }\r
        break;\r
 \r
@@ -850,6 +947,154 @@ MmsDetailForm::OnActionPerformed(const Control& source, int actionId)
        return;\r
 }\r
 \r
+void\r
+MmsDetailForm::PrepareRecipientList(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if (__pRecipientNameList == null)\r
+       {\r
+               __pRecipientNameList = new (std::nothrow) ArrayList();\r
+               if (__pRecipientNameList)\r
+               {\r
+                       __pRecipientNameList->Construct();\r
+                       ConversationPresentationModel* pConvPrModel = ConversationPresentationModel::GetInstance();\r
+                       if (pConvPrModel)\r
+                       {\r
+                               ArrayList* pContactList = pConvPrModel->GetRecipientDetailsListN(__pMessageData->GetThreadId());\r
+                               if (pContactList)\r
+                               {\r
+                                       for (int i = 0; i < pContactList->GetCount(); i++)\r
+                                       {\r
+                                               ContactDetails* recipientDetails = static_cast<ContactDetails*>(pContactList->GetAt(i));\r
+                                               ContactDetails* contactDetails = new (std::nothrow) ContactDetails();\r
+                                               contactDetails->contactName = recipientDetails->contactName;\r
+                                               contactDetails->contactNumber = recipientDetails->contactNumber;\r
+                                               __pRecipientNameList->Add(contactDetails);\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+\r
+void\r
+MmsDetailForm::ShowRecipientList(bool value)\r
+{\r
+       AppLogDebug("ENTER");\r
+       \r
+       if(value)\r
+       {\r
+               if(!__pList)\r
+               {\r
+                       const ArrayList* pNameList = __pMessageData->GetAddressList();\r
+                       int height = H_LIST_ITEM_128PX * 3;\r
+                       if(pNameList->GetCount() < 3)\r
+                       {\r
+                               height = pNameList->GetCount() * H_LIST_ITEM_128PX;\r
+                       }\r
+                       __pConContactList = new (std::nothrow) ContactList();\r
+                       __pConContactList->Construct(__pRecipientNameList);\r
+\r
+                       Rectangle rect = GetClientAreaBounds();\r
+                       __pList = new ( std::nothrow ) ListView();\r
+                       __pList->Construct(Rectangle(MARGIN_10PX * 5, 0, W_POPUP_CONTROL, height), true, SCROLL_STYLE_FADE_OUT);\r
+                       __pList->SetBackgroundColor(Color::GetColor(COLOR_ID_WHITE));\r
+\r
+                       __pList->AddListViewItemEventListener(*__pConContactList);\r
+                       __pList->SetItemProvider(*__pConContactList);\r
+\r
+                       AddControl(*__pList);\r
+               }\r
+               __pConContactList->UpdateContactListDetails(__pRecipientNameList);\r
+               __pList->UpdateList();\r
+               __pList->SetShowState(true);\r
+\r
+       }\r
+       else\r
+       {\r
+               if(__pConContactList)\r
+               {\r
+                       delete __pConContactList;\r
+                       __pConContactList = null;\r
+               }\r
+               if(__pList)\r
+               {\r
+                       RemoveControl(*__pList);\r
+                       __pList = null;\r
+               }\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+MmsDetailForm::ShowRecipientContextMenu(const Control& source)\r
+{\r
+       String strText;\r
+       int index;\r
+       if (__pContextMenuText)\r
+       {\r
+               delete __pContextMenuText;\r
+               __pContextMenuText = null;\r
+       }\r
+       __pContextMenuText = new (std::nothrow) ContextMenu();\r
+       __pContextMenuText->Construct(Point(source.GetWidth()/4,source.GetHeight()),    CONTEXT_MENU_STYLE_LIST);\r
+       __pContextMenuText->SetColor(Color::GetColor(COLOR_ID_WHITE));\r
+       __pContextMenuText->SetItemTextColor(CONTEXT_MENU_ITEM_STATUS_NORMAL,Color::GetColor(COLOR_ID_BLACK));\r
+       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_VOICE_CALL", strText);\r
+       __pContextMenuText->AddItem(strText, IDA_CONVERSATION_FORM_VOICE_CALL);\r
+       Addressbook* pAddressBook = AddressbookManager::GetInstance()->GetAddressbookN();\r
+       if(pAddressBook)\r
+       {\r
+               const ArrayList* pNameList = __pMessageData->GetAddressList();\r
+               AddressInfo* pAddressInfo = (AddressInfo *)pNameList->GetAt(0);\r
+               IList* pRecipientNameList = pAddressBook->SearchContactsByPhoneNumberN(pAddressInfo->phoneNumber);\r
+               if(pRecipientNameList && pRecipientNameList->GetCount() > 0)\r
+               {\r
+                       Contact* pRecipientContact = ContactUtility::GetContact(pRecipientNameList, pAddressInfo->phoneNumber);\r
+                       if (pRecipientContact)\r
+                       {\r
+                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_OPT_VIEW_CONTACT", strText);\r
+                               __pContextMenuText->AddItem(strText, IDA_CONVERSATION_FORM_VIEW_CONTACT);\r
+                       }\r
+                       else\r
+                       {\r
+                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_OPT_ADD_CONTACT", strText);\r
+                               __pContextMenuText->AddItem(strText, IDA_CONVERSATION_FORM_ADD_CONTACT);\r
+                       }\r
+               }\r
+               else\r
+               {\r
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_OPT_ADD_CONTACT", strText);\r
+                       __pContextMenuText->AddItem(strText, IDA_CONVERSATION_FORM_ADD_CONTACT);\r
+               }\r
+               delete pRecipientNameList;\r
+               delete pAddressBook;\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
+       __pContextMenuText->AddActionEventListener(*this);\r
+       __pContextMenuText->SetShowState(true);\r
+       __pContextMenuText->Show();\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return E_SUCCESS;\r
+}\r
+\r
 MmsDetailForm::SlideType\r
 MmsDetailForm::GetSlideType(int slideNumber)\r
 {\r
@@ -924,6 +1169,13 @@ MmsDetailForm::UpdateForm(SlideType slideType)
                {\r
                        __pPlayer->Stop();\r
                        __pPlayer->Close();\r
+                       delete __pPlayer;\r
+                       __pPlayer = null;\r
+               }\r
+               if (__pOverlay)\r
+               {\r
+                       delete __pOverlay;\r
+                       __pOverlay = null;\r
                }\r
                if (__pMsgAttachListPanel)\r
                {\r
@@ -934,15 +1186,15 @@ MmsDetailForm::UpdateForm(SlideType slideType)
                __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
+               int linecount = __pMmsTextBox->GetLineCount();\r
+               __pMmsTextBox->SetBounds(0, 500,__pMmsTextBox->GetWidth(), 80 + 57* (linecount-1));\r
+//                     __pScrollPanel->SetPosition(0, 520);// __pMmsTextBox->GetWidth(), __pMmsTextBox->GetHeight());\r
+\r
        }\r
        break;\r
 \r
        case VideoSlide:\r
-       case AudioSlide:\r
        {\r
                if (__pGallery)\r
                {\r
@@ -979,13 +1231,66 @@ MmsDetailForm::UpdateForm(SlideType slideType)
                                        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
+                       int linecount = __pMmsTextBox->GetLineCount();\r
+                       __pMmsTextBox->SetBounds(0, 356, __pMmsTextBox->GetWidth(), 80 + 57* (linecount-1));\r
+               }\r
+       }\r
+       break;\r
+\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 (!__pPlayer)\r
+               {\r
+                       __pPlayer = new (std::nothrow) Player();\r
+                       __pPlayer->Construct(*this, null);\r
+               }\r
+               if (__pOverlay)\r
+               {\r
+                       delete __pOverlay;\r
+                       __pOverlay = null;\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
+                                       AppLogDebug("Result is ");\r
+                               }\r
+                               else\r
+                               {\r
+                                       const String filePath = pPageData->GetAudioPath();\r
+                                       __pPlayer->OpenFile(filePath, false);\r
+                               }\r
                                __pPlayer->SetLooping(false);\r
                                __pPlayer->Play();\r
+                               AppLogDebug("Result is ");\r
                        }\r
                }\r
                if (__pMmsTextBox)\r
                {\r
-                       __pMmsTextBox->SetBounds(0, 356, __pMmsTextBox->GetWidth(), __pMmsTextBox->GetHeight() * 2);\r
+                       int linecount = __pMmsTextBox->GetLineCount();\r
+                       __pMmsTextBox->SetBounds(0, 84, __pMmsTextBox->GetWidth(), 80 + 57* (linecount-1));\r
                }\r
        }\r
        break;\r
@@ -996,6 +1301,13 @@ MmsDetailForm::UpdateForm(SlideType slideType)
                {\r
                        __pPlayer->Stop();\r
                        __pPlayer->Close();\r
+                       delete __pPlayer;\r
+                       __pPlayer = null;\r
+               }\r
+               if (__pOverlay)\r
+               {\r
+                       delete __pOverlay;\r
+                       __pOverlay = null;\r
                }\r
                if (__pGallery)\r
                {\r
@@ -1005,16 +1317,17 @@ MmsDetailForm::UpdateForm(SlideType slideType)
                {\r
                        __pMsgAttachListPanel = new (std::nothrow) AttachListPanel(__pMessageData);\r
                        __pMsgAttachListPanel->Construct();\r
+                       AddControl(*__pMsgAttachListPanel);\r
                        __pMsgAttachListPanel->SetPosition(16, 146);\r
+                       __pMsgAttachListPanel->SetPanelSize();\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
+                       int linecount = __pMmsTextBox->GetLineCount();\r
+                       __pMmsTextBox->SetBounds(0, 520, __pMmsTextBox->GetWidth(), 80 + 57* (linecount-1));\r
                }\r
-               AddControl(*__pMsgAttachListPanel);\r
-\r
        }\r
        break;\r
 \r
@@ -1028,19 +1341,21 @@ MmsDetailForm::UpdateForm(SlideType slideType)
                }\r
                if (__pMmsTextBox)\r
                {\r
-                       __pMmsTextBox->SetBounds(0, 520, __pMmsTextBox->GetWidth(), __pMmsTextBox->GetHeight());\r
+                       int linecount = __pMmsTextBox->GetLineCount();\r
+                       __pMmsTextBox->SetBounds(0, 520, __pMmsTextBox->GetWidth(), 80 + 57* (linecount-1));\r
                }\r
                __pGallery->SetItemProvider(*this);\r
                __pGallery->RefreshGallery(0, GALLERY_REFRESH_TYPE_ITEM_MODIFY);\r
                __pGallery->SetShowState(true);\r
-               if (!__pOverlay)\r
+               if (__pOverlay)\r
+               {\r
+                       delete __pOverlay;\r
+                       __pOverlay = null;\r
+               }\r
+               if (!__pPlayer)\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
+                       __pPlayer->Construct(*this, null);\r
                }\r
                ArrayList* pPageList = const_cast<ArrayList*>(__pMessageData->GetPageList());\r
                if (pPageList)\r
@@ -1074,10 +1389,18 @@ MmsDetailForm::UpdateForm(SlideType slideType)
                {\r
                        __pPlayer->Stop();\r
                        __pPlayer->Close();\r
+                       delete __pPlayer;\r
+                       __pPlayer = null;\r
+               }\r
+               if (__pOverlay)\r
+               {\r
+                       delete __pOverlay;\r
+                       __pOverlay = null;\r
                }\r
                if (__pMmsTextBox)\r
                {\r
-                       __pMmsTextBox->SetBounds(0, 84, __pMmsTextBox->GetWidth(), __pMmsTextBox->GetHeight() * 3);\r
+                       int linecount = __pMmsTextBox->GetLineCount();\r
+                       __pMmsTextBox->SetBounds(0, 50, __pMmsTextBox->GetWidth(), 70 + 60* (linecount-1));\r
                }\r
        }\r
        break;\r
@@ -1085,6 +1408,7 @@ MmsDetailForm::UpdateForm(SlideType slideType)
        default:\r
                break;\r
        }\r
+       Invalidate(true);\r
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
 }\r
 \r
@@ -1104,7 +1428,8 @@ MmsDetailForm::StartSlideShow()
        }\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->SetNormalBackgroundBitmap(*pBitMap);\r
+       __pPlayPausebutton->SetPressedBackgroundBitmap(*pBitMap);\r
        __pPlayPausebutton->RequestRedraw(true);\r
 \r
        if (GetSlideType(__currentPage) == VideoSlide || GetSlideType(__currentPage) == AudioSlide)\r
@@ -1122,13 +1447,13 @@ MmsDetailForm::PlaySlideShow()
 {\r
 \r
        AppLogDebug("ENTER");\r
+       UpdateMmsBodyText();\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
@@ -1162,6 +1487,7 @@ MmsDetailForm::ShowVolumePopup()
        __pVolumePopup = new Popup();\r
        __pVolumePopup->Construct(L"IDL_VOLUME_POPUP");\r
        __pMediaVolumeSlider = static_cast<Slider*>(__pVolumePopup->GetControl(L"IDC_MEDIA_VOLUME_SLIDER"));\r
+       __pMediaVolumeSlider->AddAdjustmentEventListener(*this);\r
        int mediaVolumeLevel = 4;\r
        String key(IDS_TIZEN_MEDIA);\r
        SettingInfo::GetValue(key, mediaVolumeLevel);\r
@@ -1209,17 +1535,31 @@ MmsDetailForm::ShowMoreContextMenu()
        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
+               __pContextMenu->Construct(Point(16, GetFooter()->GetY()), CONTEXT_MENU_STYLE_LIST);\r
                String strText;\r
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_DELETE", strText);\r
+               __pContextMenu->AddItem(strText, IDA_DELETE_MESSAGE);\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
+       ArrayList* pPageList = const_cast<ArrayList*>(__pMessageData->GetPageList());\r
+       if (pPageList)\r
+       {\r
+               MmsPageData* pPageData = static_cast<MmsPageData*>(pPageList->GetAt(__currentPage));\r
+               if (pPageData && pPageData->GetBodyText().GetLength())\r
+               {\r
+                       String strText;\r
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB", strText);\r
+                       __pContextMenu->AddItem(strText, IDA_COPY_MESSAGE_TEXT);\r
+               }\r
+               else if (__pContextMenu->GetItemCount() > 2)\r
+               {\r
+                       __pContextMenu->RemoveItemAt(2);\r
+               }\r
+       }\r
        __pContextMenu->SetShowState(true);\r
        __pContextMenu->Show();\r
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
@@ -1332,8 +1672,8 @@ MmsDetailForm::OnTimerExpired(Timer& timer)
                if (__timeElapsed == timeToRefreshGallery && timeToRefreshGallery != __totalDuration)\r
                {\r
                        __currentPage++;\r
-                       UpdateForm(GetSlideType(__currentPage));\r
                        UpdateMmsBodyText();\r
+                       UpdateForm(GetSlideType(__currentPage));\r
                        UpdateSlideNumber(__currentPage + 1);\r
                        if (__pPreviousButton)\r
                        {\r
@@ -1343,6 +1683,7 @@ MmsDetailForm::OnTimerExpired(Timer& timer)
                        {\r
                                __pNextbutton->SetEnabled(false);\r
                        }\r
+\r
                }\r
        }\r
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
@@ -1367,7 +1708,8 @@ MmsDetailForm::UpdatePlayButton(void)
                pBitMap->Scale(Dimension(W_PLAYCONTROL_BUTTON, H_PLAYCONTROL_BUTTON));\r
                if (__pPlayPausebutton)\r
                {\r
-                       __pPlayPausebutton->SetNormalBitmap(Point(0, 0), *pBitMap);\r
+                       __pPlayPausebutton->SetNormalBackgroundBitmap(*pBitMap);\r
+                       __pPlayPausebutton->SetPressedBackgroundBitmap(*pBitMap);\r
                        __pPlayPausebutton->RequestRedraw(true);\r
                }\r
        }\r
@@ -1381,7 +1723,6 @@ MmsDetailForm::UpdateMmsBodyText(void)
        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
@@ -1439,6 +1780,29 @@ MmsDetailForm::UpdateTimeElapsedLabel(int timeElapsed)
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
 }\r
 \r
+void\r
+MmsDetailForm::SetTotalTimeDuration(int totalDuration)\r
+{\r
+       Label* pTotalTimeDuratonLabel = static_cast<Label*>(__pPlayControlPanel->GetControl(L"IDC_TOTAL_TIME_DURATION_LABEL"));\r
+       if (pTotalTimeDuratonLabel)\r
+       {\r
+               int minutes = totalDuration / 60;\r
+               int seconds = totalDuration - minutes*60;\r
+               String strTotaltime(IDS_BLANK);\r
+               if (minutes < 10)\r
+               {\r
+                       strTotaltime.Append(L"0");\r
+               }\r
+               strTotaltime.Append(minutes);\r
+               strTotaltime.Append(IDS_COLON);\r
+               if (seconds < 10)\r
+               {\r
+                       strTotaltime.Append(L"0");\r
+               }\r
+               strTotaltime.Append(seconds);\r
+               pTotalTimeDuratonLabel->SetText(strTotaltime);\r
+       }\r
+}\r
 bool\r
 MmsDetailForm::IsTextExist(int slideIndex)\r
 {\r
@@ -1534,6 +1898,7 @@ MmsDetailForm::ShowMessageDetails(void)
                                //To get Message Type\r
                                Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_DETAILS_TYPE", strText);\r
                                strText.Append(IDS_COLON);\r
+                               strText.Append(IDS_BLANK_SPACE);\r
                                messageDetails.Append(strText);\r
                                Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE", strText);\r
                                messageDetails.Append(strText);\r
@@ -1545,12 +1910,14 @@ MmsDetailForm::ShowMessageDetails(void)
                                {\r
                                        Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_TO", strText);\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_COLON);\r
+                                       strText.Append(IDS_BLANK_SPACE);\r
                                        messageDetails.Append(strText);\r
                                }\r
                                ArrayList* pPhoneNumberList = pMsgPrModel->GetPhoneNumberListN(__pMessageData->GetThreadId());\r
@@ -1573,12 +1940,14 @@ MmsDetailForm::ShowMessageDetails(void)
                                {\r
                                        Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT", strText);\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_COLON);\r
+                                       strText.Append(IDS_BLANK_SPACE);\r
                                        messageDetails.Append(strText);\r
                                }\r
                                messageDetails.Append(__pMessageData->GetTimeStamp());\r
@@ -1587,6 +1956,7 @@ MmsDetailForm::ShowMessageDetails(void)
                                //Message Subject\r
                                Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_SUBJECT", strText);\r
                                strText.Append(IDS_COLON);\r
+                               strText.Append(IDS_BLANK_SPACE);\r
                                messageDetails.Append(strText);\r
                                messageDetails.Append(__pMessageData->GetSubject());\r
                                messageDetails.Append(IDS_NEW_LINE);\r
@@ -1601,13 +1971,14 @@ MmsDetailForm::ShowMessageDetails(void)
                                int deliveryStatus = pMsgPrModel->GetMessageDeliveryStatus(__pMessageData->GetEntryId());\r
                                Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_DELIVERY_REPORT", strText);\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_OPT_STATUS_UNAVAILABLE", strText);\r
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_POP_UNRECOGNISED", strText);\r
                                        messageDetails.Append(strText);\r
                                }\r
                                break;\r
@@ -1677,6 +2048,7 @@ MmsDetailForm::ShowMessageDetails(void)
 \r
                                Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_OPT_STATUS", strText);\r
                                strText.Append(IDS_COLON);\r
+                               strText.Append(IDS_BLANK_SPACE);\r
                                //Message Status\r
                                bool msgStatus = pMsgPrModel->GetMessageDeliveryStatus(__pMessageData->GetEntryId());\r
                                messageDetails.Append(strText);\r
@@ -1725,6 +2097,10 @@ MmsDetailForm::OnTouchPressed(const Control& source, const Point& currentPositio
                                                          const TouchEventInfo& touchInfo)\r
 {\r
        AppLogDebug("ENTER");\r
+       if(__pList && __pList->GetShowState())\r
+       {\r
+               __pList->SetShowState(false);\r
+       }\r
        if (__pPlayControlPanel->GetShowState())\r
        {\r
                __pPlayControlPanel->SetShowState(false);\r
@@ -1734,7 +2110,10 @@ MmsDetailForm::OnTouchPressed(const Control& source, const Point& currentPositio
        {\r
                __pPlayControlPanel->SetShowState(true);\r
                __pTimerForControlBar->Cancel();\r
-               __pTimerForControlBar->Start(3000);\r
+               if (__bIsPlaying)\r
+               {\r
+                       __pTimerForControlBar->Start(3000);\r
+               }\r
        }\r
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
 }\r
diff --git a/src/MsgMmsSlideData.cpp b/src/MsgMmsSlideData.cpp
new file mode 100644 (file)
index 0000000..3aaeb8d
--- /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 "MsgMessageData.h"\r
+#include "MsgMmsSlideData.h"\r
+\r
+using namespace Tizen::Base;\r
+using namespace Tizen::Base::Collection;\r
+\r
+MmsSlideData::MmsSlideData(void)\r
+: __pMessageData(null)\r
+, __pSlideList(null)\r
+{\r
+       AppLogDebug("ENTER");\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+MmsSlideData::~MmsSlideData(void)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       if(__pSlideList)\r
+       {\r
+               __pSlideList->RemoveAll(true);\r
+               delete __pSlideList;\r
+       }\r
+\r
+       if(__pMessageData)\r
+       {\r
+               delete __pMessageData;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
+\r
+result\r
+MmsSlideData::Construct(MessageData* pMessageData)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       result r = E_FAILURE;\r
+       if(pMessageData)\r
+       {\r
+               // Create Slide list\r
+               __pSlideList = new (std::nothrow) ArrayList();\r
+               __pSlideList->Construct();\r
+               const ArrayList* pPageList = pMessageData->GetPageList();\r
+               for(int pageIndex=0; pageIndex<pPageList->GetCount(); pageIndex++)\r
+               {\r
+                       MmsPageData* pPageData = (MmsPageData*)pPageList->GetAt(pageIndex);\r
+                       MmsSlideType slideType = GetSlideType(pPageData);\r
+                       MmsSlideBase* pMmsSlide = new (std::nothrow) MmsMediaSlide(*pPageData, slideType);\r
+                       __pSlideList->Add(pMmsSlide);\r
+               }\r
+               // Check Need to create attachment slide or not.\r
+               const ArrayList* pAttachList = pMessageData->GetAttachList();\r
+               if(pAttachList && pAttachList->GetCount()>0)\r
+               {\r
+                       MmsSlideBase* pAttachSlide = new (std::nothrow) MmsAttachmentSlide(*pAttachList, MMS_SLIDE_ATTACHMENT);\r
+                       __pSlideList->Add(pAttachSlide);\r
+               }\r
+               // Now Check If slide list is empty then create default slide\r
+               if(__pSlideList->GetCount() <= 0)\r
+               {\r
+                       MmsSlideBase* pEmptySlide = new (std::nothrow) MmsEmptySlide();\r
+                       __pSlideList->Add(pEmptySlide);\r
+               }\r
+               r = E_SUCCESS;\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(r));\r
+       return r;\r
+}\r
+\r
+MmsSlideType\r
+MmsSlideData::GetSlideType(MmsPageData* pPageData) const\r
+{\r
+       MmsSlideType slideType = MMS_SLIDE_EMPTY;\r
+       if( pPageData)\r
+       {\r
+               // Check\r
+               if(pPageData->IsVideoExist())\r
+               {\r
+                       if(pPageData->GetBodyText().IsEmpty())\r
+                       {\r
+                               // Video slide\r
+                               slideType = MMS_SLIDE_VIDEO;\r
+                       }\r
+                       else\r
+                       {\r
+                               // Video Text slide\r
+                               slideType = MMS_SLIDE_TEXT_VIDEO;\r
+                       }\r
+               }\r
+               else\r
+               {\r
+                       if(pPageData->IsAudioExist() && pPageData->IsImageExist())\r
+                       {\r
+                               if(pPageData->GetBodyText().IsEmpty())\r
+                               {\r
+                                       // Audio image slide\r
+                                       slideType = MMS_SLIDE_AUDIO_IMAGE;\r
+                               }\r
+                               else\r
+                               {\r
+                                       // Audio image text slide\r
+                                       slideType = MMS_SLIDE_AUDIO_IMAGE_TEXT;\r
+                               }\r
+                       }\r
+                       else if(pPageData->IsAudioExist())\r
+                       {\r
+                               if(pPageData->GetBodyText().IsEmpty())\r
+                               {\r
+                                       // Audio slide\r
+                                       slideType = MMS_SLIDE_AUDIO;\r
+                               }\r
+                               else\r
+                               {\r
+                                       // Audio text slide\r
+                                       slideType = MMS_SLIDE_AUDIO_TEXT;\r
+                               }\r
+                       }\r
+                       else if(pPageData->IsImageExist())\r
+                       {\r
+                               if(pPageData->GetBodyText().IsEmpty())\r
+                               {\r
+                                       // image slide\r
+                                       slideType = MMS_SLIDE_IMAGE;\r
+                               }\r
+                               else\r
+                               {\r
+                                       // image text slide\r
+                                       slideType = MMS_SLIDE_TEXT_IMAGE;\r
+                               }\r
+                       }\r
+                       else\r
+                       {\r
+                               // Text Slide.\r
+                               slideType = MMS_SLIDE_TEXT;\r
+                       }\r
+               }\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return slideType;\r
+}\r
+\r
+int\r
+MmsSlideData::GetSlideCount(void) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       int slideCount(0);\r
+       if(__pSlideList)\r
+       {\r
+               slideCount = __pSlideList->GetCount();\r
+       }\r
+\r
+       AppLogDebug("EXIT: Slide Count %d", slideCount);\r
+       return slideCount;\r
+}\r
+\r
+MmsSlideType\r
+MmsSlideData::GetSlideType(int slideindex) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       MmsSlideType slideType = MMS_SLIDE_EMPTY;\r
+       if(__pSlideList)\r
+       {\r
+       const MmsSlideBase* pSlideObject = (MmsSlideBase*)__pSlideList->GetAt(slideindex);\r
+       slideType = pSlideObject->GetSlideType();\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return slideType;\r
+}\r
+\r
+const MmsSlideBase*\r
+MmsSlideData::GetSlideAt(int slideIndex) const\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       const MmsSlideBase* pSlideObject = null;\r
+       if(__pSlideList)\r
+       {\r
+               pSlideObject = (MmsSlideBase*)__pSlideList->GetAt(slideIndex);\r
+       }\r
+\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+       return pSlideObject;\r
+}\r
+\r
+const MessageData*\r
+MmsSlideData::GetSlideMessageData(void) const\r
+{\r
+       return __pMessageData;\r
+}\r
+\r
+//! Empty slide\r
+MmsSlideType\r
+MmsEmptySlide::GetSlideType(void) const\r
+{\r
+       return MMS_SLIDE_EMPTY;\r
+}\r
+\r
+//! MMS media slide\r
+MmsMediaSlide::MmsMediaSlide(MmsPageData& pageData, MmsSlideType slideType)\r
+       : __pageData(pageData)\r
+       , __slideType(slideType)\r
+{\r
+}\r
+\r
+MmsMediaSlide::~ MmsMediaSlide()\r
+{\r
+}\r
+\r
+const String&\r
+MmsMediaSlide::GetSlideText(void) const\r
+{\r
+       return __pageData.GetBodyText();\r
+}\r
+\r
+const String&\r
+MmsMediaSlide::GetAudioFile(void) const\r
+{\r
+       return __pageData.GetAudioPath();\r
+}\r
+\r
+const String&\r
+MmsMediaSlide::GetImageFile(void) const\r
+{\r
+       return __pageData.GetImagePath();\r
+}\r
+\r
+const String&\r
+MmsMediaSlide::GetVideoFile(void) const\r
+{\r
+       return __pageData.GetVideoPath();\r
+}\r
+\r
+MmsSlideType\r
+MmsMediaSlide::GetSlideType(void) const\r
+{\r
+       return __slideType;\r
+}\r
+\r
+//! MMS attachment slide\r
+MmsAttachmentSlide::MmsAttachmentSlide(const IList& attachFiles, MmsSlideType slideType)\r
+       : __attachFileList(attachFiles)\r
+       , __slideType(slideType)\r
+{\r
+}\r
+\r
+MmsAttachmentSlide::~MmsAttachmentSlide(void)\r
+{\r
+}\r
+\r
+const IList&\r
+MmsAttachmentSlide::GetAttachFileList(void) const\r
+{\r
+       return __attachFileList;\r
+}\r
+\r
+MmsSlideType\r
+MmsAttachmentSlide::GetSlideType(void) const\r
+{\r
+       return __slideType;\r
+}\r
diff --git a/src/MsgMultiLineTextItemCntl.cpp b/src/MsgMultiLineTextItemCntl.cpp
new file mode 100644 (file)
index 0000000..2ca8bca
--- /dev/null
@@ -0,0 +1,336 @@
+//
+// 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 <FGrpEnrichedText.h>
+
+#include "MsgMultiLineTextItemCntl.h"
+#include "MsgTypes.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui::Controls;
+
+MultiLineTextItemCntl::MultiLineTextItemCntl(void)
+       : __pBackgroundBitmap(null)
+       , __pSelectedBitmap(null)
+       , __pEnrichedText(null)
+       , __pNormalColor(null)
+       , __pSelectionColor(null)
+       , __verticalAlignment(TEXT_ALIGNMENT_TOP)
+       , __horizontalAlignment(TEXT_ALIGNMENT_LEFT)
+       , __viewRectWidth(0)
+       , __leftMargin(0)
+       , __rightMargin(0)
+       , __topMargin(0)
+       , __bottomMargin(0)
+       , __minHeight(0)
+       , __minWidth(0)
+{
+       //Empty implementation
+}
+
+MultiLineTextItemCntl::~MultiLineTextItemCntl(void)
+{
+       AppLogDebug("ENTER");
+
+       if (__pEnrichedText)
+       {
+               __pEnrichedText->RemoveAll(true);
+               delete __pEnrichedText;
+       }
+       if (__pNormalColor)
+       {
+               __pNormalColor->RemoveAll(false);
+               delete __pNormalColor;
+       }
+       if (__pSelectionColor)
+       {
+               __pSelectionColor->RemoveAll(false);
+               delete __pSelectionColor;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+result
+MultiLineTextItemCntl::Construct(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       r = Container::Construct();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+void
+MultiLineTextItemCntl::SetViewRectWidth(int rectWidth)
+{
+       AppLogDebug("ENTER");
+       __viewRectWidth = rectWidth;
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+MultiLineTextItemCntl::CreateTextLayout(int width, bool singleLine)
+{
+       AppLogDebug("ENTER");
+       if (width > 0)
+       {
+               __viewRectWidth = width;
+       }
+       __pEnrichedText->SetSize(Dimension(__viewRectWidth - __leftMargin - __rightMargin, 800));
+       __pEnrichedText->SetVerticalAlignment(__verticalAlignment);
+       __pEnrichedText->SetHorizontalAlignment(__horizontalAlignment);
+       if (singleLine)
+       {
+               __pEnrichedText->SetTextWrapStyle(TEXT_WRAP_NONE);
+               __pEnrichedText->SetTextAbbreviationEnabled(true);
+
+       }
+       else
+       {
+               __pEnrichedText->SetTextWrapStyle(TEXT_WRAP_WORD_WRAP);
+               __pEnrichedText->SetTextAbbreviationEnabled(false);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+MultiLineTextItemCntl::SetTextMargin(int left, int right, int top, int bottom)
+{
+       AppLogDebug("ENTER");
+
+       __leftMargin = left;
+       __rightMargin = right;
+       __topMargin = top;
+       __bottomMargin = bottom;
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+MultiLineTextItemCntl::AddText(const String& msgText, const Color& textColor,
+                                                          const Color& textSelectionColor, const Font* ptextFont)
+{
+       AppLogDebug("ENTER");
+
+       if (__pEnrichedText == null)
+       {
+               __pEnrichedText = new (std::nothrow) EnrichedText();
+               // Dummy dimension
+               if (__pEnrichedText == null)
+               {
+                       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+                       return;
+               }
+               __pEnrichedText->Construct(Dimension(5, 40));
+       }
+
+       // Add new text element.
+       TextElement* pTextElement = new (std::nothrow) TextElement();
+       if (pTextElement == null)
+       {
+               AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+               return;
+       }
+       pTextElement->Construct(msgText);
+       pTextElement->SetTextColor(textColor);
+       // Set font.
+       if (ptextFont)
+       {
+               pTextElement->SetFont(*ptextFont);
+       }
+       //Store color for future drawing
+       if (__pNormalColor == null)
+       {
+               __pNormalColor = new (std::nothrow) ArrayList();
+               __pNormalColor->Construct();
+       }
+       __pNormalColor->Add(new Color(textColor));
+
+       if (__pSelectionColor == null)
+       {
+               __pSelectionColor = new (std::nothrow) ArrayList();
+               __pSelectionColor->Construct();
+       }
+       __pSelectionColor->Add(new Color(textSelectionColor));
+       // Explicitly need to remove element.
+       __pEnrichedText->Add(*pTextElement);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+int
+MultiLineTextItemCntl::GetMinHeight(void) const
+{
+       AppLogDebug("ENTER");
+
+       int minHeight = 0;
+       if (__pEnrichedText)
+       {
+               int height, width, length, startIndex = 0;
+               __pEnrichedText->GetTextExtent(startIndex, __pEnrichedText->GetLineLength(0), width, height, length);
+               minHeight = __pEnrichedText->GetTotalLineHeight() + __topMargin + __bottomMargin;
+       }
+       if (minHeight <= __minHeight)
+       {
+               __topMargin = (__minHeight - minHeight) / 2;
+               __bottomMargin = (__minHeight - minHeight) / 2;
+               minHeight = __minHeight;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return minHeight;
+}
+
+void
+MultiLineTextItemCntl::SetMinimumHeight(int minHeight)
+{
+       AppLogDebug("ENTER");
+       __minHeight = minHeight;
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+void
+MultiLineTextItemCntl::SetMinimumWidth(int minWidth)
+{
+       AppLogDebug("ENTER");
+       __minWidth = minWidth;
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+int
+MultiLineTextItemCntl::GetMaxWidth(void) const
+{
+       AppLogDebug("ENTER");
+
+       int maxWidth = 0;
+       if (__pEnrichedText)
+       {
+               int height, width, length, lineTextLength, startIndex = 0;
+               int lineCount = __pEnrichedText->GetTotalLineCount();
+               for (int count = 0; count < lineCount; count++)
+               {
+                       lineTextLength = __pEnrichedText->GetLineLength(count);
+                       __pEnrichedText->GetTextExtent(startIndex, lineTextLength, width, height, length);
+                       startIndex += lineTextLength;
+                       if (maxWidth < width)
+                       {
+                               maxWidth = width;
+                       }
+               }
+       }
+       if ((maxWidth + __leftMargin + __rightMargin) < __minWidth)
+       {
+               __leftMargin += (__minWidth - maxWidth) / 2;
+               __rightMargin += (__minWidth - maxWidth) / 2;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return (maxWidth + __leftMargin + __rightMargin); // for bubble
+}
+
+void
+MultiLineTextItemCntl::SetBackgroundImage(const Bitmap& backgroudImage)
+{
+       AppLogDebug("ENTER");
+
+       __pBackgroundBitmap = &backgroudImage;
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+MultiLineTextItemCntl::SetSelectionImage(const Bitmap& selectionImage)
+{
+       AppLogDebug("ENTER");
+
+       __pSelectedBitmap = &selectionImage;
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+MultiLineTextItemCntl::SetVerticalAlignment(TextVerticalAlignment alignment)
+{
+       AppLogDebug("ENTER");
+
+       __verticalAlignment = alignment;
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+MultiLineTextItemCntl::SetHorizentalAlignment(TextHorizontalAlignment alignment)
+{
+       AppLogDebug("ENTER");
+
+       __horizontalAlignment = alignment;
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+result
+MultiLineTextItemCntl::OnDraw(void)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       Rectangle rect = GetBounds();
+       rect.x = 0;
+       rect.y = 0;
+       Canvas* pCanvas = GetCanvasN(rect);
+       if (pCanvas)
+       {
+               pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
+               pCanvas->Clear();
+               // Text element count
+               int elementCount = __pEnrichedText->GetTextElementCount();
+
+               __pEnrichedText->SetSize(Dimension(__viewRectWidth - __leftMargin - __rightMargin,
+                                                                                  __pEnrichedText->GetTotalLineHeight()));
+               // Draw background normal mode
+               if (__pBackgroundBitmap)
+               {
+                       r = pCanvas->DrawNinePatchedBitmap(rect, *__pBackgroundBitmap);
+                       if (r != E_SUCCESS)
+                       {
+                               pCanvas->DrawBitmap(rect, *__pBackgroundBitmap);
+                       }
+               }
+               // Update text element colour in normal mode.
+               for (int count = 0; count < elementCount; count++)
+               {
+                       __pEnrichedText->GetTextElementAt(count)->SetTextColor(
+                               *(static_cast<Color*>(__pNormalColor->GetAt(count))));
+               }
+               pCanvas->DrawText(Point(rect.x + __leftMargin, rect.y + __topMargin), *__pEnrichedText);
+
+               delete pCanvas;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
index b4c2923..ece846e 100644 (file)
@@ -17,6 +17,7 @@
 #include "MsgBitmapUtility.h"\r
 #include "MsgCommonUtil.h"\r
 #include "MsgConversationData.h"\r
+#include "MsgMessageData.h"\r
 #include "MsgMessagePresentationModel.h"\r
 #include "MsgOptionPopup.h"\r
 #include "MsgTypes.h"\r
@@ -145,7 +146,12 @@ OptionPopup::InitalizeMessageOptionList(void)
                }\r
        }\r
 \r
-       if (__pConvData->GetMessageType() == MSG_TYPE_MMS)\r
+#ifndef  _DISABLE_MMS_FEATURE_\r
+       int messageId = __pConvData->GetEntryId();\r
+       MessagePresentationModel* basePrModel = MessagePresentationModel::GetInstance();\r
+       MessageData* msgData = basePrModel->GetMessageDataByIdN(messageId);\r
+\r
+       if (msgData->IsFilePresent())\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
@@ -154,6 +160,7 @@ OptionPopup::InitalizeMessageOptionList(void)
                        delete pListItem;\r
                }\r
        }\r
+#endif\r
 \r
        Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_BODY_FORWARD", itemText);\r
        pListItem = new (std::nothrow) ListItemObject(itemText, LIST_ELEMENT_FORWARD);\r
@@ -193,15 +200,17 @@ OptionPopup::OnListViewItemStateChanged(ListView& listView, int index, int eleme
                        MessagePresentationModel* pMsgPrModel = MessagePresentationModel::GetInstance();\r
                        if (pMsgPrModel)\r
                        {\r
-                               pMsgPrModel->Delete(__pConvData->GetEntryId(), *this, REQUEST_DELETE_MESSAGE);\r
+                               pMsgPrModel->Delete(__pConvData->GetEntryId(), REQUEST_DELETE_MESSAGE);\r
                        }\r
+                       RequestId requestId = REQUEST_DESTROY_OPTION_POPUP;\r
+                       __pParentCnt.SendUserEvent(requestId, null);\r
                }\r
                break;\r
 \r
                case LIST_ELEMENT_COPY_MESSAGE_TEXT:\r
                {\r
                        CommonUtil::CopyTextToClipBoard(__pConvData->GetMessageText());\r
-                       RequestId requestId = REQUEST_OPTION_POPUP;\r
+                       RequestId requestId = REQUEST_DESTROY_OPTION_POPUP;\r
                        __pParentCnt.SendUserEvent(requestId, null);\r
                }\r
                break;\r
@@ -209,7 +218,7 @@ OptionPopup::OnListViewItemStateChanged(ListView& listView, int index, int eleme
                case LIST_ELEMENT_PROTECTION_ON:\r
                {\r
                        // TODO:\r
-                       RequestId requestId = REQUEST_OPTION_POPUP;\r
+                       RequestId requestId = REQUEST_DESTROY_OPTION_POPUP;\r
                        __pParentCnt.SendUserEvent(requestId, null);\r
                }\r
                break;\r
@@ -232,7 +241,7 @@ OptionPopup::OnListViewItemStateChanged(ListView& listView, int index, int eleme
                        RequestId requestId = REQUEST_SAVE_MESSAGE_ATTACHMENTS;\r
                        __pParentCnt.SendUserEvent(requestId, pArgList);\r
                        // Destroy popup\r
-                       requestId = REQUEST_OPTION_POPUP;\r
+                       requestId = REQUEST_DESTROY_OPTION_POPUP;\r
                        __pParentCnt.SendUserEvent(requestId, null);\r
                }\r
                break;\r
@@ -244,7 +253,7 @@ OptionPopup::OnListViewItemStateChanged(ListView& listView, int index, int eleme
                        {\r
                                MessageData* pMsgData = pMsgPrModel->GetMessageDataByIdN(__pConvData->GetEntryId());\r
                                CommonUtil::ForwardMessage(pMsgData);\r
-                               RequestId requestId = REQUEST_OPTION_POPUP;\r
+                               RequestId requestId = REQUEST_DESTROY_OPTION_POPUP;\r
                                __pParentCnt.SendUserEvent(requestId, null);\r
                        }\r
                }\r
@@ -258,7 +267,7 @@ OptionPopup::OnListViewItemStateChanged(ListView& listView, int index, int eleme
 \r
                default:\r
                {\r
-                       RequestId requestId = REQUEST_OPTION_POPUP;\r
+                       RequestId requestId = REQUEST_DESTROY_OPTION_POPUP;\r
                        __pParentCnt.SendUserEvent(requestId, null);\r
                }\r
                break;\r
@@ -352,7 +361,7 @@ OptionPopup::OnActionPerformed(const Control& source, int actionId)
        case IDA_BUTTON_CLOSE_OPTIONS_POPUP:\r
        {\r
                SetShowState(false);\r
-               RequestId requestId = REQUEST_OPTION_POPUP;\r
+               RequestId requestId = REQUEST_DESTROY_OPTION_POPUP;\r
                __pParentCnt.SendUserEvent(requestId, null);\r
        }\r
        break;\r
@@ -572,16 +581,3 @@ OptionPopup::ShowMessageDetails(void)
        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
index bc66414..4c5237c 100644 (file)
@@ -50,13 +50,13 @@ PhoneNumberListPopup::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
 {\r
        AppLogDebug("ENTER");\r
 \r
-        switch(requestId)\r
-        {\r
-        case REQUEST_CLOSE_POPUP:\r
-                       __popupListener.OnPopupClose(this);\r
-                break;\r
-        }\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
diff --git a/src/MsgProgressCntl.cpp b/src/MsgProgressCntl.cpp
new file mode 100644 (file)
index 0000000..74ea474
--- /dev/null
@@ -0,0 +1,107 @@
+//
+// Tizen C++ SDK
+// Copyright (c) 2012-2013 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 "MsgProgressCntl.h"
+
+
+using namespace Tizen::Base::Runtime;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui::Controls;
+
+ProgressCntl::ProgressCntl(void)
+       : __pProgressIcon(null)
+       , __pTimer(null)
+{
+}
+
+ProgressCntl::~ProgressCntl(void)
+{
+       AppLogDebug("ENTER");
+       Cancel();
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+result
+ProgressCntl::Construct(Tizen::Graphics::Rectangle rect)
+{
+       AppLogDebug("ENTER");
+
+       result r = E_SUCCESS;
+       r = Container::Construct(rect);
+       __pProgressIcon = new (std::nothrow) Label();
+       __pProgressIcon->Construct(rect, L"");
+       Bitmap* pProgressIcon = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_PROGRESS_01, Dimension(rect.width, rect.height));
+       __pProgressIcon->SetBackgroundBitmap(*pProgressIcon);
+       AddControl(*__pProgressIcon); // Transferred ownership.
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+void
+ProgressCntl::Start(void)
+{
+       AppLogDebug("ENTER");
+
+       __progressIconType = MSG_ICON_PROGRESS_01;
+       if (!__pTimer)
+       {
+               __pTimer = new (std::nothrow) Timer();
+               __pTimer->Construct(*this);
+       }
+       __pTimer->StartAsRepeatable(150);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+ProgressCntl::Cancel(void)
+{
+       AppLogDebug("ENTER");
+
+       if (__pTimer)
+       {
+               __pTimer->Cancel();
+               delete __pTimer;
+               __pTimer = null;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+ProgressCntl::OnTimerExpired(Timer& timer)
+{
+       AppLogDebug("ENTER");
+
+       int iconIndex = (int) __progressIconType;
+       iconIndex++;
+       if (iconIndex > MSG_ICON_PROGRESS_30)
+       {
+               __progressIconType = MSG_ICON_PROGRESS_01;
+       }
+       else
+       {
+               __progressIconType = (MessageIconType) iconIndex;
+       }
+       Bitmap* pProgressIcon = BitmapUtility::GetInstance()->GetIcon(__progressIconType,
+                                                                                                                                 Dimension(W_ICON_32PX, H_ICON_32PX));
+       __pProgressIcon->SetBackgroundBitmap(*pProgressIcon);
+       Invalidate(true);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
index 7cf0534..d0434af 100644 (file)
 #include "MsgBitmapUtility.h"
 #include "MsgCommonUtil.h"
 #include "MsgContactListItem.h"
+#include "MsgContactUtility.h"
 #include "MsgISizeChangeEventListener.h"
 #include "MsgMessageData.h"
 #include "MsgMessagePresentationModel.h"
 #include "MsgRecipientPanel.h"
+#include "MsgTokenOptionPopup.h"
 #include "MsgTypes.h"
 
 using namespace Tizen::App;
@@ -53,11 +55,14 @@ RecipientPanel::RecipientPanel(void)
        , __pRecipientAddrList(null)
        , __pAddressBook(null)
        , __pTokenDeleteThread(null)
+       , __pTokenOptionPopup(null)
        , __deleteTokenIndex(-1)
        , __validateOnFocusLost(true)
        , __oneTimeFlag(true)
+       , __selectedIndex(-1)
 {
-       // Empty implementation
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
 }
 
 RecipientPanel::~RecipientPanel(void)
@@ -102,8 +107,9 @@ RecipientPanel::Construct(const Rectangle& rectangle)
        __pExpandEditArea->AddFocusEventListener(*this);
        __pExpandEditArea->AddKeyEventListener(*this);
        __pExpandEditArea->SetTokenFilter(this);
+       __pExpandEditArea->AddTouchEventListener(*this);
        __pContactCountLabel = (Label*) GetControl(L"IDC_RECIPINT_COUNT_LABEL");
-       __pContactCountLabel->SetMargin(0,0);
+       __pContactCountLabel->SetMargin(0, 0);
        __pContactCountLabel->SetShowState(false);
        // Recipient list
        __pRecipientAddrList = new (std::nothrow) ArrayList();
@@ -155,7 +161,7 @@ RecipientPanel::EnableContactSearch(bool value)
                if (!__pContactSearchList)
                {
                        __pContactSearchList = new (std::nothrow) ListView();
-                       __pContactSearchList->Construct(Rectangle(MARGIN_15PX, GetHeight(), GetWidth()-MARGIN_15PX*2,
+                       __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);
@@ -184,39 +190,39 @@ RecipientPanel::GetRecipientCount(void) const
        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::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");
-
+       Clear();
        if (pRecipientList)
        {
                for (int count = 0; count < pRecipientList->GetCount(); count++)
@@ -236,6 +242,7 @@ RecipientPanel::SetRecipientList(const IList* pRecipientList)
                                pNewAddrInfo->displayName = pAddrInfo->displayName;
                                pNewAddrInfo->phoneNumber = pAddrInfo->phoneNumber;
                                pNewAddrInfo->needToValidate = pAddrInfo->needToValidate;
+                               pNewAddrInfo->isAddFromContacts = pAddrInfo->isAddFromContacts;
                                __pRecipientAddrList->Add(pNewAddrInfo);
                                __pExpandEditArea->AppendToken(pAddrInfo->displayName);
                        }
@@ -245,7 +252,7 @@ RecipientPanel::SetRecipientList(const IList* pRecipientList)
 }
 
 ArrayList*
-RecipientPanel::GeRecipientNumberListN(void) const
+RecipientPanel::GetRecipientNumberListN(void) const
 {
        AppLogDebug("ENTER");
        ArrayList* pRecipientNumberList = null;
@@ -285,7 +292,7 @@ void
 RecipientPanel::HideKeypad(void)
 {
        AppLogDebug("ENTER");
-       if (__pExpandEditArea)
+       if (__pExpandEditArea )
        {
                __pExpandEditArea->HideKeypad();
        }
@@ -315,8 +322,8 @@ 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())
+       // If the text entered has not been converted to token, then check if it can be converted to token.
+       if (CheckRecipientForToken())
        {
                switch (actionId)
                {
@@ -366,9 +373,9 @@ RecipientPanel::OnAppControlCompleteResponseReceived(const AppId& appId, const S
        String* pPickResult = null;
        String operation(IDS_APPCONTROL_OPERATION_PICK);
 
-       if (operationId.Equals(operation)) //
+       if (operationId.Equals(operation))
        {
-               if (pResultMap && (appControlResult == APP_CTRL_RESULT_SUCCEEDED))  //
+               if (pResultMap && (appControlResult == APP_CTRL_RESULT_SUCCEEDED))
                {
                        String* returnTypeValue = (String*) pResultMap->GetValue(String(L"returnType"));
                        AppLogDebug("count : %d", pResultMap->GetCount());
@@ -377,10 +384,6 @@ RecipientPanel::OnAppControlCompleteResponseReceived(const AppId& appId, const S
                                if (!__pAddressBook)
                                {
                                        __pAddressBook = AddressbookManager::GetInstance()->GetAddressbookN();
-                                       if (__pAddressBook)
-                                       {
-                                               __pAddressBook->SetEventListener(null);
-                                       }
                                }
                                IList* pRecipientList = GetSelectContactListN(pResultMap);
                                if (pRecipientList)
@@ -396,6 +399,7 @@ RecipientPanel::OnAppControlCompleteResponseReceived(const AppId& appId, const S
                                                {
                                                        if (__pExpandEditArea->GetTokenCount() >= MAX_COUNT)
                                                        {
+                                                               __pContactCountLabel->SetShowState(false);
                                                                isMaximumrecipientreached = true;
                                                                String messageText;
                                                                Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED", messageText);
@@ -422,16 +426,13 @@ RecipientPanel::OnAppControlCompleteResponseReceived(const AppId& appId, const S
                                                                        {
                                                                                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());
+                                                                                       pContact->GetValue(CONTACT_PROPERTY_ID_DISPLAY_NAME, contactName);
                                                                                        pRecipent->displayName.Append(contactName);
                                                                                        pRecipent->needToValidate = false;
+                                                                                       pRecipent->isAddFromContacts = true;
                                                                                        __pRecipientAddrList->Add(pRecipent);
-                                                                                       if (firstName.GetLength() > 0 || lastName.GetLength() > 0)
+                                                                                       if (contactName.GetLength() > 0)
                                                                                        {
                                                                                                __pExpandEditArea->AppendToken(contactName);
                                                                                        }
@@ -455,12 +456,24 @@ RecipientPanel::OnAppControlCompleteResponseReceived(const AppId& appId, const S
                                                                                        invalidRecipient.Append(pRecipent->phoneNumber);
                                                                                }
                                                                        }
-                                                                       if(pRecipent)
+                                                                       if (pRecipent)
                                                                        {
                                                                                delete pRecipent;
                                                                        }
                                                                        pPhoneNumberList->RemoveAll(true);
                                                                }
+                                                               else
+                                                               {
+                                                                       isInvalidPhoneNumber = true;
+                                                                       if (invalidRecipient.GetLength())
+                                                                       {
+                                                                               invalidRecipient.Append(IDS_COMMA_SPACE);
+                                                                       }
+                                                                       invalidRecipient.Append(IDS_BLANK_SPACE);
+                                                                       String displayName;
+                                                                       pContact->GetValue(CONTACT_PROPERTY_ID_DISPLAY_NAME, displayName);
+                                                                       invalidRecipient.Append(displayName);
+                                                               }
                                                                delete pPhoneNumberList;
                                                                delete pContact;
                                                        }
@@ -468,6 +481,7 @@ RecipientPanel::OnAppControlCompleteResponseReceived(const AppId& appId, const S
                                        }
                                        if (!isMaximumrecipientreached && isInvalidPhoneNumber)
                                        {
+                                               __pContactCountLabel->SetShowState(false);
                                                String messageText;
                                                Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_INVALID_RECIPIENTS", messageText);
                                                messageText.Append(IDS_COLON);
@@ -477,8 +491,8 @@ RecipientPanel::OnAppControlCompleteResponseReceived(const AppId& appId, const S
                                        }
                                        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);
+                                       // Recipients added here, check if SEND button needs to be enabled.
+                                       //GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON, null);
                                }
                        }
                }
@@ -588,6 +602,7 @@ RecipientPanel::OnListViewItemStateChanged(ListView& listView, int index,
 {
        AppLogDebug("ENTER");
        // Hide list box.
+       __pExpandEditArea->Clear();
        listView.SetShowState(false);
        if (__pExpandEditArea->GetTokenCount() >= MAX_COUNT)
        {
@@ -606,10 +621,32 @@ RecipientPanel::OnListViewItemStateChanged(ListView& listView, int index,
                        pRecipent->phoneNumber = pMsgPrModel->GetContactNumberAt(index);
                        if (!IsNumberExistRecipientList(pRecipent->phoneNumber))
                        {
-                               pRecipent->needToValidate = false;
-                               __pRecipientAddrList->Add(pRecipent);
-                               __pExpandEditArea->AppendToken(pMsgPrModel->GetContactNameAt(index));
-                               __pExpandEditArea->Invalidate(true);
+                               if (!CommonUtil::IsValidPhoneNumber(pRecipent->phoneNumber))
+                               {
+                                       String messageText;
+                                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_INVALID_RECIPIENTS", messageText);
+                                       messageText.Append(IDS_COLON);
+                                       messageText.Append(pRecipent->phoneNumber);
+                                       ShowMessage(messageText);
+                                       delete pRecipent;
+                               }
+                               else
+                               {
+                                       pRecipent->needToValidate = false;
+                                       pRecipent->isAddFromContacts = true;
+                                       String tokenDisplayName(IDS_BLANK);
+                                       tokenDisplayName = pMsgPrModel->GetContactNameAt(index);
+                                       if (tokenDisplayName.Equals(IDS_BLANK_SPACE, false))
+                                       {
+                                               tokenDisplayName = pMsgPrModel->GetContactNumberAt(index);
+                                       }
+                                       else
+                                       {
+                                               __pRecipientAddrList->Add(pRecipent);
+                                       }
+                                       __pExpandEditArea->AppendToken(tokenDisplayName);
+                                       __pExpandEditArea->Invalidate(true);
+                               }
                        }
                        else
                        {
@@ -617,7 +654,7 @@ RecipientPanel::OnListViewItemStateChanged(ListView& listView, int index,
                        }
                }
        }
-
+       Invalidate(true);
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
        return;
 }
@@ -672,30 +709,36 @@ RecipientPanel::GetItemCount(void)
        return contactCount;
 }
 
-// Form ITokenFilter
+// From ITokenFilter
 bool
 RecipientPanel::ReplaceToken(const String& token, String& replacement)
 {
        AppLogDebug("ENTER");
+       int selectedTokenIndex(__pExpandEditArea->GetSelectedTokenIndex());
        // Hide search list.
        if (__pContactSearchList->GetShowState())
        {
                __pContactSearchList->SetShowState(false);
-               __pContactSearchList->SetSize(GetWidth()-MARGIN_15PX*2, 0);
+               __pContactSearchList->SetSize(GetWidth() - MARGIN_15PX * 2, 0);
        }
+
        // Check need to validate
-       if (IsNeedToValidate(token))
+       if (selectedTokenIndex < 0)
        {
-               // If token exist, duplicate token.
-               if (IsTokenExist(token) || IsNumberExistRecipientList(token))
+               if (IsNeedToValidate(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;
+                       if (IsTokenExist(token) || IsNumberExistRecipientList(token))
+                       {
+                               __errorString = IDS_BLANK;
+                               Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_BODY_DUPLICATED_RECIPIENT", __errorString);
+                               __errorString.Append(IDS_COLON);
+                               __errorString.Append(IDS_BLANK_SPACE);
+                               __errorString.Append(token);
+
+                               // 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)))
@@ -707,8 +750,9 @@ RecipientPanel::ReplaceToken(const String& token, String& replacement)
                                __errorString = IDS_BLANK;
                                Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_INVALID_RECIPIENTS", __errorString);
                                __errorString.Append(IDS_COLON);
+                               __errorString.Append(IDS_BLANK_SPACE);
                                __errorString.Append(token);
-                               //ShowMessage(messageText);
+
                                // Delete last Token, which will insert after this function call
                                DeleteTokenAt(__pRecipientAddrList->GetCount() - 1);
                                return true;
@@ -725,6 +769,29 @@ RecipientPanel::ReplaceToken(const String& token, String& replacement)
                        DeleteTokenAt(MAX_COUNT);
                }
        }
+       else
+       {
+               //              bool NumberExist(IsNumberExistRecipientList(token));
+               //              if (!NumberExist && IsNumberToken(selectedTokenIndex) && CommonUtil::IsValidPhoneNumber(token))
+               //              {
+               //                      UpdateRecipientList(token, selectedTokenIndex);
+               //              }
+               //              else
+               //              {
+               //                      __errorString.Clear();
+               //                      Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_BODY_DUPLICATED_RECIPIENT", __errorString);
+               //                      if(!NumberExist)
+               //                      {
+               //                              __errorString.Clear();
+               //                              Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_INVALID_RECIPIENTS", __errorString);
+               //                      }
+               //                      __errorString.Append(IDS_BLANK);
+               //                      __errorString.Append(IDS_COLON);
+               //                      __errorString.Append(IDS_BLANK);
+               //                      __errorString.Append(token);
+               //                      DeleteTokenAt(selectedTokenIndex);
+               //              }
+       }
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
        return true;
 }
@@ -735,7 +802,7 @@ RecipientPanel::OnFocusGained(const Control& source)
 {
        AppLogDebug("ENTER");
 
-       GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON,null);
+       //GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON, null);
        __pContactCountLabel->SetShowState(false);
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
        return;
@@ -749,8 +816,15 @@ RecipientPanel::OnFocusLost(const Control& source)
 
        if (__validateOnFocusLost)
        {
-               // If entered text not yet converted to token, then check it can it be converted to token.
-               CheckRecipentForToken();
+               // If text entered has not been converted to token yet, then check if it can be converted to token.
+               if (__pExpandEditArea->GetSelectedTokenIndex() < 0)
+               {
+                       CheckRecipientForToken();
+               }
+               else
+               {
+                       ShowRecipientCount();
+               }
        }
 
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
@@ -758,56 +832,53 @@ RecipientPanel::OnFocusLost(const Control& source)
 }
 
 bool
-RecipientPanel::CheckRecipentForToken(bool updateToken)
+RecipientPanel::CheckRecipientForToken(bool updateToken)
 {
        AppLogDebug("ENTER");
+
        __pExpandEditArea->SetTokenFilter(null);
        // Hide search list.
        if (__pContactSearchList->GetShowState())
        {
                __pContactSearchList->SetShowState(false);
-               __pContactSearchList->SetSize(GetWidth()- MARGIN_15PX*2, 0);
+               __pContactSearchList->SetSize(GetWidth() - MARGIN_15PX * 2, 0);
        }
-       bool validRecipinet(true);
+       bool validRecipient(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.
+       // Need to do this as editor creates and inserts token automatically upon recipient panel loses focus.
        __pExpandEditArea->Clear();
+       // In this case a pop up message displaying "Invalid Recipient" will be shown on top of contact
+       // application control
        int selectIndex = __pExpandEditArea->GetSelectedTokenIndex();
        if (selectIndex < 0)
        {
+               __pExpandEditArea->Clear();
                if (tokenText.GetLength() > 0)
                {
                        if (__pExpandEditArea->GetTokenCount() >= MAX_COUNT)
                        {
                                // Reach max limit
-                               validRecipinet = false;
+                               validRecipient = 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;
+                                       validRecipient = 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;
+                                       validRecipient = 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
                                {
@@ -818,13 +889,13 @@ RecipientPanel::CheckRecipentForToken(bool updateToken)
                                                __pExpandEditArea->AppendToken(tokenText);
                                                __pExpandEditArea->Invalidate(true);
                                        }
-                                       validRecipinet = true;
-                               }
-                               if(__validateOnFocusLost && !messageText.IsEmpty())
-                               {
-                                       ShowMessage(messageText);
+                                       validRecipient = true;
                                }
                        }
+                       if (__validateOnFocusLost && !messageText.IsEmpty())\r
+                       {\r
+                               ShowMessage(messageText);\r
+                       }\r
                }
        }
        ShowRecipientCount();
@@ -833,11 +904,11 @@ RecipientPanel::CheckRecipentForToken(bool updateToken)
                __pContactSearchList->SetShowState(false);
        }
        __pExpandEditArea->SetTokenFilter(this);
-       RequestId requestId = REQUEST_UDATE_FOCUS;
+       RequestId requestId = REQUEST_UPDATE_FOCUS;
        GetParent()->SendUserEvent(requestId, null);
 
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
-       return validRecipinet;
+       return validRecipient;
 }
 
 bool
@@ -928,6 +999,12 @@ RecipientPanel::OnKeyPressed(const Control& source, KeyCode keyCode)
        }
        break;
 
+       case KEY_INVALID:
+       {
+               CheckRecipientForToken();
+       }
+       break;
+
        default:
                break;
        }
@@ -967,32 +1044,12 @@ 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())
+       //GetParent()->SendUserEvent(REQUEST_ENABLE_DISABLE_SEND_BUTTON, null);
+       int selectedTokenIndex(__pExpandEditArea->GetSelectedTokenIndex());
+       int searchCount(0);
+       if (selectedTokenIndex < 0)
        {
-               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());
@@ -1009,17 +1066,41 @@ RecipientPanel::OnTextValueChanged(const Control& source)
                                        height = searchCount * H_LIST_ITEM_128PX;
                                }
                                __pContactSearchList->SetPosition(MARGIN_15PX, GetHeight());
-                               __pContactSearchList->SetSize(GetWidth()- MARGIN_15PX*2, height);
+                               __pContactSearchList->SetSize(GetWidth() - MARGIN_15PX * 2, height);
                        }
                        else
                        {
                                __pContactSearchList->SetShowState(false);
-                               __pContactSearchList->SetSize(GetWidth()-MARGIN_15PX*2, 0);
+                               __pContactSearchList->SetSize(GetWidth() - MARGIN_15PX * 2, 0);
                        }
                        __pContactSearchList->UpdateList();
                        __pContactSearchList->Draw();
                }
        }
+       else
+       {
+               //              String tokenText(__pExpandEditArea->GetText());
+               //              bool NumberExist(IsNumberExistRecipientList(tokenText));
+               //              if (!NumberExist && IsNumberToken(selectedTokenIndex) && CommonUtil::IsValidPhoneNumber(tokenText))
+               //              {
+               //                      UpdateRecipientList(tokenText, selectedTokenIndex);
+               //              }
+               //              else
+               //              {
+               //                      __errorString.Clear();
+               //                      Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_BODY_DUPLICATED_RECIPIENT", __errorString);
+               //                      if(!NumberExist)
+               //                      {
+               //                              __errorString.Clear();
+               //                              Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGF_BODY_INVALID_RECIPIENTS", __errorString);
+               //                      }
+               //                      __errorString.Append(IDS_BLANK);
+               //                      __errorString.Append(IDS_COLON);
+               //                      __errorString.Append(IDS_BLANK);
+               //                      __errorString.Append(tokenText);
+               //                      DeleteTokenAt(selectedTokenIndex);
+               //              }
+       }
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
        return;
 
@@ -1030,7 +1111,7 @@ RecipientPanel::IsEmptyRecipent(void)
 {
        AppLogDebug("ENTER");
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
-       if(__pExpandEditArea->GetTokenCount() > 0 || __pExpandEditArea->GetTextLength() > 0)
+       if (__pExpandEditArea->GetTokenCount() > 0 || __pExpandEditArea->GetTextLength() > 0)
        {
                return false;
        }
@@ -1040,6 +1121,20 @@ RecipientPanel::IsEmptyRecipent(void)
        }
 }
 
+void
+RecipientPanel::Clear(void)
+{
+       AppLogDebug("ENTER");
+
+       __pRecipientAddrList->RemoveAll(true);
+       int tokenCount(__pExpandEditArea->GetTokenCount());
+       for(int index=0; index<tokenCount; index++)
+       {
+               __pExpandEditArea->RemoveTokenAt(index);
+       }
+       __pExpandEditArea->Clear();
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
 
 void
 RecipientPanel::ShowMessage(const String& message)
@@ -1051,9 +1146,9 @@ RecipientPanel::ShowMessage(const String& message)
        String msg(message);
        if (message.GetLength() > 399)
        {
-               msg.Remove(398, message.GetLength()-399);
+               msg.Remove(398, message.GetLength() - 399);
        }
-       messageBox.Construct(IDS_MESSAGES, msg, MSGBOX_STYLE_OK, 3000);
+       messageBox.Construct(IDS_MESSAGES, msg, MSGBOX_STYLE_OK);
        messageBox.ShowAndWait(modalResult);
        //Wait for modalResult updated value.
        __pExpandEditArea->AddFocusEventListener(*this);
@@ -1145,14 +1240,14 @@ RecipientPanel::IsRecipientExist(const String& tokenText) const
 }
 
 bool
-RecipientPanel::IsNumberExistRecipientList(const String& conatctNumber) const
+RecipientPanel::IsNumberExistRecipientList(const String& contactNumber) 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)
+               if (pRecipientAddress->phoneNumber.CompareTo(contactNumber) == 0)
                {
                        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
                        return true;
@@ -1188,7 +1283,7 @@ RecipientPanel::IsNumberToken(int tokenIndex) const
        if (__pRecipientAddrList->GetCount() > tokenIndex)
        {
                AddressInfo* pRecipientAddress = static_cast<AddressInfo*>(__pRecipientAddrList->GetAt(tokenIndex));
-               if ( pRecipientAddress && pRecipientAddress->phoneNumber.CompareTo(pRecipientAddress->displayName) == 0)
+               if (pRecipientAddress && pRecipientAddress->phoneNumber.CompareTo(pRecipientAddress->displayName) == 0)
                {
                        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
                        return true;
@@ -1255,6 +1350,7 @@ RecipientPanel::IsNeedToValidate(const String& tokenText)
 void
 RecipientPanel::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
 {
+       AppLogDebug("ENTER");
        switch (requestId)
        {
        case REQUEST_SHOW_MESSAGE:
@@ -1271,6 +1367,74 @@ RecipientPanel::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
                __pExpandEditArea->SetFocus();
        }
        break;
+
+       case REQUEST_EDIT_TOKEN:
+       {
+               AddressInfo* pRecipient= (AddressInfo*) __pRecipientAddrList->GetAt(__selectedIndex);
+               DeleteRecipientAndToken(__selectedIndex);
+               __pExpandEditArea->SetText(pRecipient->phoneNumber);
+               __selectedIndex = -1;
+       }
+       break;
+
+       case REQUEST_DELETE_TOKEN:
+       {
+               DeleteRecipientAndToken(__selectedIndex);
+               __selectedIndex = -1;
+       }
+       break;
+
+
+       case REQUEST_SHOW_TOKEN_POPUP:
+       {
+               if (__pTokenOptionPopup)
+               {
+                       delete __pTokenOptionPopup;
+                       __pTokenOptionPopup = null;
+               }
+               __selectedIndex = __pExpandEditArea->GetSelectedTokenIndex();
+               if ( __selectedIndex > -1)
+               {
+                       AddressInfo* pRecipient= (AddressInfo*) __pRecipientAddrList->GetAt(__selectedIndex);
+                       __pTokenOptionPopup = new (std::nothrow) TokenOptionPopup(*this);
+                       __pTokenOptionPopup->Construct(pRecipient);
+                       __pTokenOptionPopup->SetTitleText(__pExpandEditArea->GetTokenAt(__selectedIndex));
+                       __pTokenOptionPopup->Show();
+               }
        }
+       break;
 
+       case REQUEST_ADD_VIEW_CONTACT:
+       {
+               AddressInfo* pRecipient= (AddressInfo*) __pRecipientAddrList->GetAt(__selectedIndex);
+               if (pRecipient->isAddFromContacts)
+               {
+                       ContactUtility::ViewContact(pRecipient->phoneNumber);
+               }
+               else
+               {
+                       ContactUtility::AddContact(pRecipient->phoneNumber);
+               }
+       }
+               break;
+
+       case REQUEST_DESTROY_TOKEN_OPTION_POPUP:
+               {
+                       if (__pTokenOptionPopup)
+                       {
+                               delete __pTokenOptionPopup;
+                               __pTokenOptionPopup = null;
+                       }
+               }
+       break;
+
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+RecipientPanel::OnTouchReleased(const Control& source, const Point& currentPosition, const TouchEventInfo& touchInfo)
+{
+       RequestId requestId = REQUEST_SHOW_TOKEN_POPUP;
+       SendUserEvent(requestId, null);
 }
index ad6e464..d963242 100644 (file)
@@ -101,12 +101,12 @@ MsgResendDeletePopup::OnActionPerformed(const Control& source, int actionId)
 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
+       switch (requestId)\r
+       {\r
+       case REQUEST_CLOSE_POPUP:\r
+               __popupListener.OnPopupClose(this);\r
+               break;\r
+       }\r
 }\r
 \r
 void\r
@@ -132,7 +132,9 @@ MsgResendDeletePopup::OnListViewItemStateChanged(ListView& listView, int index,
                case 1:\r
                {\r
                        // Pop destroy will once deletion is done\r
-                       pMsgPrModel->Delete(__pConvData->GetEntryId(), *this, REQUEST_DELETE_MESSAGE);\r
+                       pMsgPrModel->Delete(__pConvData->GetEntryId(), REQUEST_DELETE_MESSAGE);\r
+                       // Send Destroy popup event\r
+                       SendUserEvent(REQUEST_CLOSE_POPUP, null);\r
                }\r
                break;\r
 \r
@@ -231,14 +233,3 @@ MsgResendDeletePopup::DeleteItem(int index, ListItemBase* pItem, int itemWidth)
        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
index 333d759..7f43d76 100644 (file)
@@ -516,7 +516,7 @@ SettingPresentationModel::DeleteFilter(int filterIndex, int filterType)
 }
 
 result
-SettingPresentationModel::DeleteFilter(IListT< int >* pDeleteIdList, int filterType, Control* pListener)
+SettingPresentationModel::DeleteFilter(IListT<int>* pDeleteIdList, int filterType, IDeleteEventListener* pDeleteListener)
 {
        AppLogDebug("ENTER");
 
@@ -533,7 +533,7 @@ SettingPresentationModel::DeleteFilter(IListT< int >* pDeleteIdList, int filterT
                delete __pDeleteFilterIndexList;
                __pDeleteFilterIndexList = null;
        }
-       __pDeleteFilterListener = pListener;
+       __pDeleteFilterListener = pDeleteListener;
        __pDeleteFilterIndexList = pDeleteIdList;
        __filterType = filterType;
        __pDeleteFilterThread = new (std::nothrow) Thread();
@@ -655,36 +655,25 @@ SettingPresentationModel::Run(void)
        AppLogDebug("ENTER");
 
        int totalCount(0);
-       IList* pArgs = null;
-       result r = E_SUCCESS;
        if (__pDeleteFilterIndexList)
        {
                totalCount = __pDeleteFilterIndexList->GetCount();
+               // Delete start
                if (__pDeleteFilterListener)
                {
-                       pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
-                       if(pArgs)
-                       {
-                               pArgs->Add(new Integer(totalCount));
-                               __pDeleteFilterListener->SendUserEvent(REQUEST_DELETE_START,pArgs);
-                       }
+                       __pDeleteFilterListener->OnDeleteStart(totalCount);
                }
                for (int count = 0; count < totalCount; ++count)
                {
                        int filterIndex(-1);
-                       r = __pDeleteFilterIndexList->GetAt(count, filterIndex);
+                       __pDeleteFilterIndexList->GetAt(count, filterIndex);
                        if (filterIndex >= 0)
                        {
                                DeleteFilter(filterIndex, __filterType);
+                               // Delete update.
                                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);
-                                       }
+                                       __pDeleteFilterListener->OnDeleteUpdate(count + 1, totalCount);
                                }
                        }
                }
@@ -693,15 +682,11 @@ SettingPresentationModel::Run(void)
                __pDeleteFilterIndexList = null;
                RefreshSpamFilterList();
        }
-
+       // Delete complete call back
        if (__pDeleteFilterListener)
        {
-               pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
-               if(pArgs)
-               {
-                       pArgs->Add(new Integer(E_SUCCESS));
-                       __pDeleteFilterListener->SendUserEvent(REQUEST_DELETE_COMPLETE,pArgs);
-               }
+               __pDeleteFilterThread->Sleep(90);
+               __pDeleteFilterListener->OnDeleteComplete(0, null);
        }
 
        AppLogDebug("EXIT: r = %s", GetErrorMessage(GetLastResult()));
index 11d9aa0..0e50802 100644 (file)
@@ -175,14 +175,14 @@ SettingsForm::InitializeTextMessageSettingItems(void)
        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
+               /*      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
+                                                                                                                                 SETTING_STYLE_EXPANDABLE,\r
+                                                                                                                                 SETTING_STATUS_ITEM_INPUTMODE);\r
                __pSettingItemsArray->AddItem(groupIndex, *settingItem);\r
 \r
                groupIndex = __pSettingItemsArray->AddGroup("", SETTING_GROUP_STYLE_NORMAL, false);\r
index 341a5a8..554075c 100644 (file)
@@ -61,9 +61,9 @@ SpamFilterList::Construct(void)
        AppLogDebug("ENTER");\r
 \r
        result r = E_SUCCESS;\r
-       __pBlockWordFilterIndex = new (std::nothrow) ArrayListT< int>();\r
+       __pBlockWordFilterIndex = new (std::nothrow) ArrayListT<int>();\r
        __pBlockWordFilterIndex->Construct();\r
-       __pNumberFilterIndex = new (std::nothrow) ArrayListT< int>();\r
+       __pNumberFilterIndex = new (std::nothrow) ArrayListT<int>();\r
        __pNumberFilterIndex->Construct();\r
 \r
 \r
index 681599b..ff4ebbc 100644 (file)
@@ -14,6 +14,7 @@
 // limitations under the License.
 //
 
+#include "MsgIRestoreEventListener.h"
 #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)
+SpamRestoreHandler::SpamRestoreHandler(IRestoreEventListener* pRestoreListener)
+       : __pRestoreListener(pRestoreListener)
+       , __pRestoreThread(null)
+       , __pselectedIds(null)
 {
        AppLogDebug("ENTER");
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
@@ -35,67 +36,90 @@ SpamRestoreHandler::~SpamRestoreHandler()
 {
        AppLogDebug("ENTER");
 
-       if(__pselectedIds)
+       Cancel();
+       if (__pselectedIds)
        {
                __pselectedIds->RemoveAll();
                delete __pselectedIds;
                __pselectedIds = null;
        }
-       __parentCtrl = null;
+
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
 }
 
 result
-SpamRestoreHandler::Construct(void)
+SpamRestoreHandler::Construct(Tizen::Base::Collection::IListT<int>* pSelectedIds)
 {
        AppLogDebug("ENTER");
 
-       result r = Thread::Construct();
+       result r = E_SUCCESS;
+       __pselectedIds = (ArrayListT<int>*)pSelectedIds;
+
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
        return r;
 }
 
+void
+SpamRestoreHandler::Start(void)
+{
+       AppLogDebug("ENTER");
+
+       Cancel();
+       __pRestoreThread = new (std::nothrow) Thread();
+       __pRestoreThread->Construct(*this);
+       __pRestoreThread->Start();
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+SpamRestoreHandler::Cancel(void)
+{
+       AppLogDebug("ENTER");
+
+       if (__pRestoreThread)
+       {
+               __pRestoreThread->Join();
+               delete __pRestoreThread;
+               __pRestoreThread = null;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+
 Object*
 SpamRestoreHandler::Run(void)
 {
        AppLogDebug("ENTER");
-       
-       IList* pArgs = null;
-       if(__parentCtrl)
+
+       if (__pselectedIds->GetCount() > 0)
        {
-               if(__pselectedIds->GetCount() > 0)
+               if (__pRestoreListener)
                {
-                       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++)
+                       __pRestoreListener->OnRestoreStart(__pselectedIds->GetCount());
+               }
+               ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
+               for (int index = 0; index < __pselectedIds->GetCount(); index++)
+               {
+                       int entryId = 0;
+                       if (__pselectedIds->GetAt(index, entryId) == E_SUCCESS)
                        {
-                               int entryId = 0;
-                               if(__pselectedIds->GetAt(index,entryId) == E_SUCCESS)
+                               pThreadPrModel->MoveMessageToInbox(entryId);
+                               if (__pRestoreListener)
                                {
-                                       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);
-                                       }
+                                       __pRestoreListener->OnRestoreUpdate(index + 1, __pselectedIds->GetCount());
                                }
                        }
                }
-               pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
-               if(pArgs)
-               {
-                       pArgs->Add(new Integer(0));
-                       __parentCtrl->SendUserEvent(REQUEST_DELETE_COMPLETE,pArgs);
-               }
        }
+       if (__pRestoreListener)
+       {
+               __pRestoreThread->Sleep(90); // Put this delay to show complete progress.
+               __pRestoreListener->OnRestoreComplete(E_SUCCESS, null);
+       }
+
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
        return null;
-
 }
index 2123b03..3feeb25 100644 (file)
@@ -111,7 +111,7 @@ SpamSettingsForm::Initialize(void)
                r = Construct(L"IDL_SETTING_DELETE_FILTER_FORM");
                ShowSelectionInfo();
        }
-               break;
+       break;
        }
        if (!IsFailed(r))
        {
@@ -199,11 +199,19 @@ SpamSettingsForm::OnInitializing(void)
                case SPAM_SETTING_FORM_DELETE_BLOCK_WORD:
                case SPAM_SETTING_FORM_DELETE_REJECT_NUMBER:
                {
-                       __pSelectedIds = new (std::nothrow) ArrayListT< int>();
+                       __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);
+
+                       ButtonItem buttonRightItem;
+                       buttonRightItem.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_SELECT_ALL);
+                       Bitmap* pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SELECT_ALL);
+                       buttonRightItem.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pBitMap);
+                       pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SELECT_ALL_PRESSED);
+                       buttonRightItem.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pBitMap);
+                       GetHeader()->SetButton(BUTTON_POSITION_RIGHT, buttonRightItem);
+                       GetHeader()->Invalidate(true);
+
+
                        __pGroupedTableView = static_cast<GroupedTableView*>(GetControl(L"IDC_GROUPEDTABLEVIEW_FILTERLIST"));
                }
                break;
@@ -226,7 +234,7 @@ SpamSettingsForm::OnInitializing(void)
                        if (__pSettingItemsArray)
                        {
                                __pGroupedTableView->CollapseAllGroup();
-                               LoadCurrentSettings();
+                               // LoadCurrentSettings();
                        }
                }
                if (__pEditField)
@@ -459,6 +467,7 @@ SpamSettingsForm::OnSceneActivatedN(const SceneId& previousSceneId,
                pArgs->RemoveAll(true);
                delete pArgs;
        }
+       LoadCurrentSettings();
        // Set footer
        if (GetFooter() && pFilterList)
        {
@@ -546,6 +555,27 @@ SpamSettingsForm::OnActionPerformed(const Control& source, int actionId)
 
        switch (actionId)
        {
+
+       case IDA_SELECT_ALL:
+       {
+               SettingPresentationModel* pSettingsPrModel = SettingPresentationModel::GetInstance();
+               if(pSettingsPrModel)
+               {
+                       SpamFilterList* pSpamFilterList = pSettingsPrModel->GetSpamFilterList();
+                       bool selectAll(false);
+                       if(SPAM_SETTING_FORM_DELETE_BLOCK_WORD == __spamFormType)
+                       {
+                               selectAll = (pSpamFilterList->GetBlockWordCount() != __pSelectedIds->GetCount());
+                       }
+                       else
+                       {
+                               selectAll = (pSpamFilterList->GetBlockNumberCount() != __pSelectedIds->GetCount());
+                       }
+                       CheckAll(selectAll);
+               }
+       }
+       break;
+       
        case IDA_SELECT_ALL_ON:
                CheckAll(true);
                break;
@@ -569,8 +599,8 @@ SpamSettingsForm::OnActionPerformed(const Control& source, int actionId)
        case IDA_SAVE:
        case IDA_SAVE_REJECT_NUMBER:
        {
-               String number = __pEditField->GetText();
-               char* pPhoneNumber = CommonUtil::ConvertStringToPointerCharArrayN(number);
+               String editFieldText = __pEditField->GetText();
+               char* pPhoneNumber = CommonUtil::ConvertStringToPointerCharArrayN(editFieldText);
                int size = strlen(pPhoneNumber);
                if (size > 40)
                {
@@ -582,9 +612,20 @@ SpamSettingsForm::OnActionPerformed(const Control& source, int actionId)
                        messageBox.ShowAndWait(modalResult);
                        __pEditField->SetFocus();
                }
-               else if (!number.IsEmpty())
+               else if (!editFieldText.IsEmpty())
                {
-                       ShowConfirmationPopup();
+                       if (__pEditField)
+                       {
+                               __pEditField->HideKeypad();
+                               if (actionId != IDA_SAVE_REJECT_NUMBER)
+                               {
+                                       ShowConfirmationPopup();
+                               }
+                               else
+                               {
+                                       SaveSpamFilter(SPAM_FILTER_TYPE_BLOCK_NUMBER);
+                               }
+                       }
                }
                else
                {
@@ -605,18 +646,7 @@ SpamSettingsForm::OnActionPerformed(const Control& source, int actionId)
        }
        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)
                {
@@ -708,24 +738,33 @@ SpamSettingsForm::HandleSpamMatchCriteriaItemSelection(int groupIndex, int itemI
                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);
+               SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
+               int itemPosition = 0;
+               bool result = false;
+               if(groupIndex == 1)
+               {
+                       while(itemPosition++ < pSettingPrModel->GetSpamFilterList()->GetBlockNumberCount())
+                       {
+                               if ((__pEditField->GetText().CompareTo(pSettingPrModel->GetSpamFilterList()->GetFilterText(itemPosition - 1, SPAM_FILTER_TYPE_BLOCK_NUMBER)) == 0))
+                               {
+                                       int filterCriteria = pSettingPrModel->GetSpamFilterList()->GetFilterType(itemPosition - 1, SPAM_FILTER_TYPE_BLOCK_NUMBER);
+                                       if(filterCriteria - 1 != itemIndex)
+                                       {
+                                               result = true;
+                                               break;
+                                       }
+                               }
+                       }
+               }
+               pFooter->SetItemEnabled(0, result);
+               pFooter->Invalidate(true);
        }
 
        SettingItem& settingItem = __pSettingItemsArray->GetItemAt(groupIndex, itemIndex);
@@ -786,8 +825,7 @@ SpamSettingsForm::HandleSpamAutoRejectItemSelection(int groupIndex, int itemInde
                        __pSelectedIds->Add(itemIndex);
                        if (__pSelectedIds->GetCount() == totalCount)
                        {
-                               CheckButton* pCheckAll = static_cast<CheckButton*>(GetControl(L"IDC_CHECKBUTTON_SELECTALL"));
-                               pCheckAll->SetSelected(true);
+                               //TODO: Need to update the check box
                        }
                        ShowSelectionInfo();
                }
@@ -806,8 +844,7 @@ SpamSettingsForm::HandleSpamAutoRejectItemSelection(int groupIndex, int itemInde
                        __pSelectedIds->Remove(itemIndex);
                        if (__pSelectedIds->GetCount() <= totalCount)
                        {
-                               CheckButton* pCheckAll = static_cast<CheckButton*>(GetControl(L"IDC_CHECKBUTTON_SELECTALL"));
-                               pCheckAll->SetSelected(false);
+                               //TODO: Need to update the check box
                        }
                        ShowSelectionInfo();
                }
@@ -856,8 +893,7 @@ SpamSettingsForm::HandleSpamBlockWordItemSelection(int groupIndex, int itemIndex
                __pSelectedIds->Add(itemIndex);
                if (__pSelectedIds->GetCount() == totalCount)
                {
-                       CheckButton* pCheckAll = static_cast<CheckButton*>(GetControl(L"IDC_CHECKBUTTON_SELECTALL"));
-                       pCheckAll->SetSelected(true);
+                       //TODO: Need to update the check box
                }
                Invalidate(true);
                ShowSelectionInfo();
@@ -870,8 +906,7 @@ SpamSettingsForm::HandleSpamBlockWordItemSelection(int groupIndex, int itemIndex
                __pSelectedIds->Remove(itemIndex);
                if (__pSelectedIds->GetCount() <= totalCount)
                {
-                       CheckButton* pCheckAll = static_cast<CheckButton*>(GetControl(L"IDC_CHECKBUTTON_SELECTALL"));
-                       pCheckAll->SetSelected(false);
+                       //TODO: Need to update the check box
                }
                Invalidate(true);
                ShowSelectionInfo();
@@ -1467,7 +1502,7 @@ SpamSettingsForm::CreateAutoRejectNumberSettingItemN(int itemIndex, int itemWidt
                // 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->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);
@@ -1505,7 +1540,7 @@ SpamSettingsForm::CreateBlockWordSettingItemN(int groupIndex, int itemIndex, int
                // 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->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);
@@ -1533,7 +1568,23 @@ SpamSettingsForm::OnFocusGained(const Control& source)
                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);
+
+               SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
+               int itemPosition = 0;
+               bool result = true;
+               while(itemPosition++ < pSettingPrModel->GetSpamFilterList()->GetBlockNumberCount())
+               {
+                       if ((__pEditField->GetText().CompareTo(pSettingPrModel->GetSpamFilterList()->GetFilterText(itemPosition - 1, SPAM_FILTER_TYPE_BLOCK_NUMBER)) == 0))
+                       {
+                               int filterCriteria = pSettingPrModel->GetSpamFilterList()->GetFilterType(itemPosition - 1, SPAM_FILTER_TYPE_BLOCK_NUMBER);
+                               if(filterCriteria - 1 == __selectedMatchCriteriaIndex)
+                               {
+                                       result = false;
+                                       break;
+                               }
+                       }
+               }
+               header.SetButtonEnabled(BUTTON_POSITION_LEFT, result && __pEditField->GetTextLength() > 0);
 
                ButtonItem rightButton;
                rightButton.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_CANCEL_REJECT_NUMBER);
@@ -1605,7 +1656,7 @@ void
 SpamSettingsForm::ShowSelectionInfo(void)
 {
        AppLogDebug("ENTER");
-       String strText,selcInfo;
+       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);
@@ -1669,7 +1720,7 @@ SpamSettingsForm::DeleteSelectedSpamFilters(void)
        AppLogDebug("ENTER");
 
        SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
-       SpamFiterType filterType = SPAM_FILTER_TYPE_BLOCK_WORD;
+       SpamFilterType filterType = SPAM_FILTER_TYPE_BLOCK_WORD;
        if (__spamFormType == SPAM_SETTING_FORM_DELETE_REJECT_NUMBER)
        {
                filterType = SPAM_FILTER_TYPE_BLOCK_NUMBER;
@@ -1745,7 +1796,7 @@ SpamSettingsForm::OnAppControlCompleteResponseReceived(const AppId& appId, const
                                {
                                        __pEditField->SetText(*pPhoneNumber);
                                }
-                               if(__pEditField->HasFocus() == false)
+                               if (__pEditField->HasFocus() == false)
                                {
                                        __pEditField->SetFocus();
                                }
@@ -1773,20 +1824,10 @@ SpamSettingsForm::ShowConfirmationPopup(void)
                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);
-               }
+               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();
@@ -1797,33 +1838,35 @@ SpamSettingsForm::ShowConfirmationPopup(void)
 }
 
 void
-SpamSettingsForm::SaveSpamFilter(SpamFiterType filterType)
+SpamSettingsForm::SaveSpamFilter(SpamFilterType filterType)
 {
        AppLogDebug("ENTER");
        bool alreadyExist(false);
-       int index(0),count(0);
+       int index(0), count(0);
        if (__pConfirmationPopup)
        {
                delete __pConfirmationPopup;
                __pConfirmationPopup = null;
        }
        SettingPresentationModel* pSettingPrModel = SettingPresentationModel::GetInstance();
-       if (pSettingPrModel)
+       SpamFilterList* pFilterList = SettingPresentationModel::GetInstance()->GetSpamFilterList();
+
+       if (pSettingPrModel && pFilterList)
        {
                String filterText = __pEditField->GetText();
                if (filterType == SPAM_FILTER_TYPE_BLOCK_WORD)
                {
                        count = pSettingPrModel->GetSpamFilterList()->GetBlockWordCount();
-                       while(index++ < count)
+                       while (index++ < count)
                        {
                                // Check for duplicate word
-                               if(filterText.CompareTo(pSettingPrModel->GetSpamFilterList()->GetFilterText(index - 1,filterType)) == 0)
+                               if (filterText.CompareTo(pSettingPrModel->GetSpamFilterList()->GetFilterText(index - 1, filterType)) == 0)
                                {
                                        alreadyExist = true;
                                        break;
                                }
                        }
-                       if(!alreadyExist)
+                       if (!alreadyExist)
                        {
                                if (__editSpamFilterIndex >= 0)
                                {
@@ -1839,16 +1882,20 @@ SpamSettingsForm::SaveSpamFilter(SpamFiterType filterType)
                else
                {
                        count = pSettingPrModel->GetSpamFilterList()->GetBlockNumberCount();
-                       while(index++ < count)
+                       while (index++ < count)
                        {
                                // Check for duplicate number
-                               if(filterText.CompareTo(pSettingPrModel->GetSpamFilterList()->GetFilterText(index - 1,filterType)) == 0)
+                               if ((filterText.CompareTo(pSettingPrModel->GetSpamFilterList()->GetFilterText(index - 1, filterType)) == 0))
                                {
-                                       alreadyExist = true;
-                                       break;
+                                       int filterCriteria = pSettingPrModel->GetSpamFilterList()->GetFilterType(index - 1, SPAM_FILTER_TYPE_BLOCK_NUMBER);
+                                       if (__selectedMatchCriteriaIndex == filterCriteria - 1)
+                                       {
+                                               alreadyExist = true;
+                                               break;
+                                       }
                                }
                        }
-                       if(!alreadyExist)
+                       if (!alreadyExist)
                        {
                                if (__editSpamFilterIndex >= 0)
                                {
@@ -1877,9 +1924,9 @@ SpamSettingsForm::OnTextValueChanged(const Control& source)
        String editText = __pEditField->GetText();
        int index(0);
 
-       if(editText.IndexOf(L'\n',0,index) == E_SUCCESS)
+       if (editText.IndexOf(L'\n', 0, index) == E_SUCCESS)
        {
-               editText.Replace(L'\n',' ');
+               editText.Replace(L'\n', ' ');
                __pEditField->SetText(editText);
        }
 
@@ -1962,10 +2009,7 @@ SpamSettingsForm::OnDeleteStart(int totalCount)
 {
        AppLogDebug("ENTER");
 
-       if (__pProgressPopup)
-       {
-               __pProgressPopup->ShowPopup();
-       }
+       this->SendUserEvent(REQUEST_DELETE_START, null);
 
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
        return;
@@ -1976,31 +2020,22 @@ 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);
-       }
+       ArrayList* pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+       pArgs->Construct();
+       pArgs->Add(new (std::nothrow) Integer(deleteCount));
+       pArgs->Add(new (std::nothrow) Integer(totalCount));
+       this->SendUserEvent(REQUEST_DELETE_UPDATE, pArgs);
 
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
        return;
 }
 
 void
-SpamSettingsForm::OnDeleteComplete(int errCode, Object* pThreadObject)
+SpamSettingsForm::OnDeleteComplete(int errCode, Object* pDeleteHandler)
 {
        AppLogDebug("ENTER");
 
-       // Back to thread view mode
-       if (__pProgressPopup)
-       {
-               __pProgressPopup->HidePopup();
-               delete __pProgressPopup;
-               __pProgressPopup = null;
-       }
-
+       this->SendUserEvent(REQUEST_DELETE_COMPLETE, null);
        // UI thread, Back to list view mode.
        RequestId requestId = REQUEST_NORMAL_VIEW;
        SendUserEvent(requestId, null);
@@ -2021,32 +2056,43 @@ SpamSettingsForm::OnUserEventReceivedN(RequestId requestId, IList* pArgs)
                break;
 
        case REQUEST_DELETE_START:
-               if(pArgs->GetCount() > 0)
+       {
+               if (__pProgressPopup)
                {
-                       Integer* pTotalCount = (Integer*)pArgs->GetAt(0);
-                       OnDeleteStart(pTotalCount->ToInt());
-                       delete pArgs;
+                       __pProgressPopup->Show();
                }
-               break;
+       }
+       break;
 
        case REQUEST_DELETE_UPDATE:
-               if(pArgs->GetCount() > 0)
+       {
+               if (__pProgressPopup)
                {
-                       Integer* pCurrentCount = (Integer*)pArgs->GetAt(0);
-                       Integer* pTotalCount = (Integer*)pArgs->GetAt(1);
-                       OnDeleteUpdate(pCurrentCount->ToInt(),pTotalCount->ToInt());
-                       delete pArgs;
+                       if (pArgs && pArgs->GetCount() > 1)
+                       {
+                               Integer* pCurrentCount = (Integer*) pArgs->GetAt(0);
+                               Integer* pTotalCount = (Integer*) pArgs->GetAt(1);
+                               String statusInfo;
+                               statusInfo.Format(MAX_LEN_SELECTION_INFO, IDS_DELETED_NUMBER_IDS, pCurrentCount->ToInt(), pTotalCount->ToInt());
+                               __pProgressPopup->UpdateProgressInfo(statusInfo);
+                               __pProgressPopup->SetProgressValue(pCurrentCount->ToInt());
+                       }
                }
-               break;
+               delete pArgs;
+       }
+       break;
 
        case REQUEST_DELETE_COMPLETE:
-               if(pArgs->GetCount() > 0)
+       {
+               // Delete progress popup
+               if (__pProgressPopup)
                {
-                       Integer* pStatus = (Integer*)pArgs->GetAt(0);
-                       OnDeleteComplete(pStatus->ToInt(),null);
-                       delete pArgs;
+                       __pProgressPopup->HidePopup();
+                       delete __pProgressPopup;
+                       __pProgressPopup = null;
                }
-               break;
+       }
+       break;
 
        default:
                break;
index d6750ae..a6bcdf9 100644 (file)
 // 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
+enum InternalActionIds\r
+{\r
+       IDA_DELETE_SUBJECT,\r
+};\r
+\r
+\r
 SubjectControl::SubjectControl(void)\r
        : __pFocusEvent(null)\r
        , __pEditArea(null)\r
        , __pDeleteButton(null)\r
        , __pBgBitmap(null)\r
+       , __pActionEventListener(null)\r
 {\r
        // Empty implementation\r
 }\r
@@ -63,6 +67,8 @@ SubjectControl::Construct(const Rectangle& rectangle)
        Bitmap* pPressBitMap = BitmapUtility::GetInstance()->GetIconN(MSG_ICON_PAGE_DELETE_PRESS);\r
        __pDeleteButton->SetPressedBackgroundBitmap(*pPressBitMap);\r
        __pDeleteButton->SetShowState(false);\r
+       __pDeleteButton->SetActionId(IDA_DELETE_SUBJECT);\r
+       __pDeleteButton->AddActionEventListener(*this);\r
        AddControl(*__pDeleteButton);\r
        delete pPressBitMap;\r
        delete pNormalBitMap;\r
@@ -134,10 +140,10 @@ SubjectControl::AddFocusEventListener(IFocusEventListener& listener)
 }\r
 \r
 void\r
-SubjectControl::AddActionEventListener(IActionEventListener& listener)\r
+SubjectControl::SetActionEventListener(IActionEventListener& listener)\r
 {\r
        AppLogDebug("ENTER");\r
-       __pDeleteButton->AddActionEventListener(listener);\r
+       __pActionEventListener = &listener;\r
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
 }\r
 \r
@@ -145,7 +151,7 @@ void
 SubjectControl::SetDeleteActionId(int actionId)\r
 {\r
        AppLogDebug("ENTER");\r
-       __pDeleteButton->SetActionId(actionId);\r
+       __deleteActionId = actionId;\r
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
 }\r
 \r
@@ -165,8 +171,6 @@ SubjectControl::SetDeleteShowState(bool visible)
                editorSize.width = rectangle.width;\r
        }\r
        __pEditArea->SetSize(editorSize);\r
-       Draw();\r
-       Show();\r
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
 }\r
 \r
@@ -228,3 +232,23 @@ SubjectControl::GetText(void) const
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
        return __pEditArea->GetText();\r
 }\r
+\r
+void\r
+SubjectControl::OnActionPerformed(const Control& source, int actionId)\r
+{\r
+       AppLogDebug("ENTER");\r
+\r
+       switch(actionId)\r
+       {\r
+       case IDA_DELETE_SUBJECT:\r
+       {\r
+               if(__pActionEventListener)\r
+               {\r
+               __pActionEventListener->OnActionPerformed(*this, __deleteActionId);\r
+               }\r
+       }\r
+       break;\r
+\r
+       }\r
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));\r
+}\r
diff --git a/src/MsgTVBubbleListItem.cpp b/src/MsgTVBubbleListItem.cpp
new file mode 100644 (file)
index 0000000..80aad5b
--- /dev/null
@@ -0,0 +1,541 @@
+//
+// 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_types.h>
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FGraphics.h>
+#include <FUiCtrlLabel.h>
+
+#include "MsgAttachItemCntl.h"
+#include "MsgBubbleBackgroundCntl.h"
+#include "MsgBitmapUtility.h"
+#include "MsgConversationData.h"
+#include "MsgFontsettings.h"
+#include "MsgMultiLineTextItemCntl.h"
+#include "MsgProgressCntl.h"
+#include "MsgTVBubbleListItem.h"
+#include "MsgTypes.h"
+
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Runtime;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+
+const wchar_t* IDC_MESSAGE_BUBBLE = L"IDC_MESSAGE_BUBBLE";
+const wchar_t* IDC_MESSAGE_BODY = L"IDC_MESSAGE_BODY";
+const wchar_t* IDC_TIME_STAMP = L"IDC_TIME_STAMP";
+const wchar_t* IDC_MESSAGE_DETAIL = L"IDC_MESSAGE_DETAIL";
+const wchar_t* IDC_ATTACH_FILE_THUMBNAIL = L"IDC_ATTACH_FILE_THUMBNAIL";
+const wchar_t* IDC_ATTACH_FILE_NAME = L"IDC_ATTACH_FILE_NAME";
+const wchar_t* IDC_ATTACH_FILE_COUNT = L"IDC_ATTACH_FILE_COUNT";
+const wchar_t* IDC_FAIL_INDICATOR = L"IDC_FAIL_INDICATOR";
+
+
+TVBubbleListItem::TVBubbleListItem(ConversationData& msgEntry, int width, FontSettings& fontSettings, bool editMode)
+       : __convData(msgEntry)
+       , __Width(width)
+       , __editMode(editMode)
+       , __fontSettings(fontSettings)
+       , __pLongPressTimer(null)
+       , __isLongPressed(false)
+{
+       AppLogDebug("ENTER");
+       //intialize default bubble margin
+       if (msgEntry.IsSent())
+       {
+               __leftMargin = (int) MARGIN_20PX;
+               __rightMargin = (int) MARGIN_46PX;
+               __topMargin = (int) MARGIN_14PX;
+               __bottomMargin = (int) MARGIN_22PX;
+
+       }
+       else
+       {
+               __leftMargin = (int) MARGIN_46PX;
+               __rightMargin = (int) MARGIN_28PX;
+               __topMargin = (int) MARGIN_14PX;
+               __bottomMargin = (int) MARGIN_22PX;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+TVBubbleListItem::~TVBubbleListItem(void)
+{
+       AppLogDebug("ENTER");
+
+       RemoveTouchEventListener(*this);
+
+       if (__pLongPressTimer)
+       {
+               __pLongPressTimer->Cancel();
+               delete __pLongPressTimer;
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+MultiLineTextItemCntl*
+TVBubbleListItem::CreateTimeStampElementN(void)
+{
+       AppLogDebug("ENTER");
+
+       MultiLineTextItemCntl* pMsgTimeStamp = null;
+
+       pMsgTimeStamp = new (std::nothrow) MultiLineTextItemCntl();
+       pMsgTimeStamp->Construct();
+       Bitmap* pTimeStampBg = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_BUBBLE_DATE_BG);
+       pMsgTimeStamp->SetBackgroundImage(*pTimeStampBg);
+       pMsgTimeStamp->SetSelectionImage(*pTimeStampBg);
+       Font* pTimeStampFont = __fontSettings.GetFont(MSG_FONT_ID_TIME_STAMP);
+       if (__convData.IsSent())
+       {
+               pMsgTimeStamp->AddText(__convData.GetTimeStamp(),
+                                                          COLOR_BUBBLE_SENT_TIME_STAMP, COLOR_BUBBLE_SENT_TIME_STAMP,
+                                                          pTimeStampFont);
+       }
+       else
+       {
+               pMsgTimeStamp->AddText(__convData.GetTimeStamp(),
+                                                          COLOR_BUBBLE_RECEIVE_TIME_STAMP, COLOR_BUBBLE_RECEIVE_TIME_STAMP,
+                                                          pTimeStampFont);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pMsgTimeStamp;
+}
+
+MultiLineTextItemCntl*
+TVBubbleListItem::CreateContentElementN(void)
+{
+       AppLogDebug("ENTER");
+
+       // Create content
+       MultiLineTextItemCntl* pMsgContent = null;
+       String bodyText(__convData.GetMessageText());
+       String subject(__convData.GetSubject());
+       if ((bodyText.GetLength() > 0 || subject.GetLength() > 0))
+       {
+               pMsgContent = new (std::nothrow) MultiLineTextItemCntl();
+               pMsgContent->Construct();
+               pMsgContent->SetName(IDC_MESSAGE_BODY);
+               pMsgContent->SetTextMargin(__leftMargin, __rightMargin, 0, 0);
+               pMsgContent->SetMinimumHeight(MIN_BUBBLE_HEIGHT);
+               // If subject exist Add it.
+               if (subject.GetLength() > 0)
+               {
+                       if (bodyText.GetLength() > 0)
+                       {
+                               bodyText.Insert("\n", 0);
+                       }
+                       pMsgContent->AddText(subject, COLOR_SEARCH_TEXT, COLOR_SEARCH_TEXT,
+                                                                __fontSettings.GetMessageFont());
+               }
+               // Set Body Text
+               if (bodyText.GetLength() > 0)
+               {
+                       pMsgContent->AddText(bodyText, COLOR_BUBBLE_TEXT_NORMAL,
+                                                                COLOR_BUBBLE_TEXT_NORMAL, __fontSettings.GetMessageFont());
+               }
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pMsgContent;
+
+}
+
+void
+TVBubbleListItem::CreateBubbleLayout(bool showAnimation)
+{
+       AppLogDebug("ENTER");
+
+       int leftX(0), leftY(MARGIN_12PX);
+       // Check mode
+       int checkboxWidth(0);
+       TableViewAnnexStyle listStyle = TABLE_VIEW_ANNEX_STYLE_NORMAL;
+       if (__editMode)
+       {
+               // add check box element here for edit mode.
+               listStyle = TABLE_VIEW_ANNEX_STYLE_MARK;
+               checkboxWidth = TableViewItem::GetAnnexWidth(listStyle) + MARGIN_26PX * 2;
+       }
+       //Reserver space for check box, traditional way.
+       int itemWidth = __Width - checkboxWidth;
+       // For failed item date field won't be there.
+       int statusWidth(0), statusHeight(0);
+       ProgressCntl* pMsgSendProgressCntl = null;
+       Button* pMsgSendFailIndicator = null;
+       MultiLineTextItemCntl* pMsgTimeStamp = null;
+       if (__convData.IsSending())
+       {
+               pMsgSendProgressCntl = new (std::nothrow) ProgressCntl();
+               if (pMsgSendProgressCntl)
+               {
+                       pMsgSendProgressCntl->Construct(Rectangle(0, 0, W_ICON_32PX, H_ICON_32PX));
+                       statusWidth = pMsgSendProgressCntl->GetWidth() + MARGIN_16PX + MARGIN_10PX;
+                       statusHeight = pMsgSendProgressCntl->GetHeight();
+               }
+       }
+       else if (__convData.IsSentFail())
+       {
+               pMsgSendFailIndicator = new (std::nothrow) Button();
+               if (pMsgSendFailIndicator)
+               {
+                       pMsgSendFailIndicator->Construct(Rectangle(0, 0, W_ICON_64PX, H_ICON_64PX));
+                       pMsgSendFailIndicator->SetName(IDC_FAIL_INDICATOR);
+                       Bitmap* pNormalBgBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_WARNING_CIRCLE_BUTTON_BG);
+                       Bitmap* pPressBgBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_WARNING_CIRCLE_BUTTON_BG_PRESS);
+                       pMsgSendFailIndicator->SetNormalBackgroundBitmap(*pNormalBgBitmap);
+                       pMsgSendFailIndicator->SetPressedBackgroundBitmap(*pPressBgBitmap);
+                       Bitmap* pIconBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_WARNING, Dimension(W_ICON_64PX, H_ICON_64PX));
+                       pMsgSendFailIndicator->SetNormalBitmap(Point(0, 0), *pIconBitmap);
+                       pMsgSendFailIndicator->SetEnabled(!__editMode);
+                       statusWidth = H_ICON_64PX + MARGIN_16PX + MARGIN_10PX;
+                       statusHeight = H_ICON_64PX;
+               }
+       }
+       else
+       {
+               pMsgTimeStamp = CreateTimeStampElementN();
+               pMsgTimeStamp->CreateTextLayout(__Width);
+               statusWidth = pMsgTimeStamp->GetMaxWidth() + MARGIN_16PX + MARGIN_10PX; /* + MARGIN_10PX*2 */
+               statusHeight = pMsgTimeStamp->GetMinHeight();
+       }
+       //Create text layout.
+       int bubbleWidth(0);
+       int bubbleHeight(__topMargin + __bottomMargin);
+       MultiLineTextItemCntl* pMsgContent = CreateContentElementN();
+       if (pMsgContent)
+       {
+               pMsgContent->CreateTextLayout(itemWidth - statusWidth);
+               bubbleHeight += pMsgContent->GetMinHeight();
+               bubbleWidth += pMsgContent->GetMaxWidth();
+       }
+       // MMS related bubble element height need to be include
+       AttachItemCntl* pAttachMentDetail = null;
+       AttachItemCntl* pImageVideoAttachment = null;
+       AttachItemCntl* pAudioAttachment = null;
+       Button* pMmsDetail = null;
+       if (__convData.IsMms())
+       {
+               if (__convData.GetAttachmentCount() > 0)
+               {
+                       // Create attachment layout.
+                       pAttachMentDetail = new (std::nothrow) AttachItemCntl(ATTACHMENT_TYPE_ATTACH_COUNT);
+                       if (pAttachMentDetail)
+                       {
+                               String attachCount;
+                               attachCount.Append(__convData.GetAttachmentCount());
+                               pAttachMentDetail->Construct(itemWidth - statusWidth - __leftMargin - __rightMargin);
+                               pAttachMentDetail->SetName(IDC_ATTACH_FILE_NAME);
+                               pAttachMentDetail->SetTitleText(attachCount, __fontSettings.GetFont(MSG_FONT_ID_TINY));
+                               bubbleHeight += pAttachMentDetail->GetMinimumHeight();
+                               if (bubbleWidth < (pAttachMentDetail->GetMimimumWidth() + __leftMargin + __rightMargin))
+                               {
+                                       bubbleWidth = (pAttachMentDetail->GetMimimumWidth() + __leftMargin + __rightMargin);
+                               }
+                       }
+                       bubbleHeight += MARGIN_14PX;
+               }
+               // Check Image/Video for 1st page
+               if (!__convData.GetImagePath().IsEmpty())
+               {
+                       pImageVideoAttachment = new (std::nothrow) AttachItemCntl(ATTACHMENT_TYPE_IMAGE, __convData.GetThumbnail());
+                       pImageVideoAttachment->Construct(itemWidth - statusWidth - __leftMargin - __rightMargin);
+               }
+               else if (!__convData.GetVideoPath().IsEmpty())
+               {
+                       pImageVideoAttachment = new (std::nothrow) AttachItemCntl(ATTACHMENT_TYPE_VIDEO, __convData.GetThumbnail());
+                       pImageVideoAttachment->Construct(itemWidth - statusWidth - __leftMargin - __rightMargin);
+               }
+               if (pImageVideoAttachment)
+               {
+                       pImageVideoAttachment->SetEnabled(!__editMode);
+                       pImageVideoAttachment->SetName(IDC_ATTACH_FILE_THUMBNAIL);
+                       if (bubbleWidth < (pImageVideoAttachment->GetMimimumWidth() + __leftMargin + __rightMargin))
+                       {
+                               bubbleWidth = pImageVideoAttachment->GetMimimumWidth() + __leftMargin + __rightMargin;
+                       }
+                       bubbleHeight += (MARGIN_14PX + pImageVideoAttachment->GetMinimumHeight());
+               }
+               // Check for Audio file
+               if (!__convData.GetAudioPath().IsEmpty())
+               {
+                       pAudioAttachment = new (std::nothrow) AttachItemCntl(ATTACHMENT_TYPE_AUDIO);
+                       if (pAudioAttachment)
+                       {
+                               pAudioAttachment->Construct(itemWidth - statusWidth - __leftMargin - __rightMargin);
+                               pAudioAttachment->SetTitleText(__convData.GetAudioPath(), __fontSettings.GetFont(MSG_FONT_ID_TINY));
+                               pAudioAttachment->SetName(IDC_ATTACH_FILE_NAME);
+                               bubbleHeight += pAudioAttachment->GetMinimumHeight();
+                               if (bubbleWidth < (pAudioAttachment->GetMimimumWidth() + __leftMargin + __rightMargin))
+                               {
+                                       bubbleWidth = (pAudioAttachment->GetMimimumWidth() + __leftMargin + __rightMargin);
+                               }
+                               pAudioAttachment->SetEnabled(!__editMode);
+                       }
+                       bubbleHeight += MARGIN_14PX;
+               }
+               // Detail button
+               if (!__convData.IsSending())
+               {
+                       pMmsDetail = new (std::nothrow) Button();
+                       if (pMmsDetail)
+                       {
+                               pMmsDetail->Construct(Rectangle(0, 0, W_ICON_64PX, H_ICON_64PX));
+                               pMmsDetail->SetName(IDC_MESSAGE_DETAIL);
+                               Bitmap* pNormalBgBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_CIRCLE_BUTTON_BG);
+                               Bitmap* pPressBgBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_CIRCLE_BUTTON_BG_PRESS);
+                               pMmsDetail->SetNormalBackgroundBitmap(*pNormalBgBitmap);
+                               pMmsDetail->SetPressedBackgroundBitmap(*pPressBgBitmap);
+                               Bitmap* pIconBitmap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_ARROW_EXPAND);
+                               pMmsDetail->SetNormalBitmap(Point((W_ICON_64PX - pIconBitmap->GetWidth()) / 2, (W_ICON_64PX - pIconBitmap->GetHeight()) / 2), *pIconBitmap);
+                               pMmsDetail->SetEnabled(!__editMode);
+                               bubbleHeight += H_ICON_64PX;
+                               if (bubbleWidth < (W_ICON_64PX * 3 + __leftMargin + __rightMargin))
+                               {
+                                       bubbleWidth = (W_ICON_64PX * 3 + __leftMargin + __rightMargin);
+                               }
+                       }
+                       bubbleHeight += MARGIN_14PX;
+               }
+       }
+       bubbleHeight += (MARGIN_12PX * 2); // Include margin between two bubble
+       Construct(Dimension(__Width, bubbleHeight), listStyle);
+       AddTouchEventListener(*this);
+       // Disable default list item selection color
+       SetBackgroundColor(GetBackgroundColor(TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL), TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+       SetBackgroundColor(GetBackgroundColor(TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+       SetBackgroundColor(GetBackgroundColor(TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL), TABLE_VIEW_ITEM_DRAWING_STATUS_HIGHLIGHTED);
+       if (__convData.IsSent())
+       {
+               leftX = itemWidth - bubbleWidth;
+       }
+       // Add Bubble background.
+       BubbleBackgroundCntl* pBackgroudItem = new (std::nothrow) BubbleBackgroundCntl();
+       pBackgroudItem->Construct(__convData.IsSent());
+       pBackgroudItem->SetName(IDC_MESSAGE_BUBBLE);
+       pBackgroudItem->SetBounds(Rectangle(leftX, leftY, bubbleWidth, bubbleHeight - MARGIN_12PX * 2));
+       AddControl(*pBackgroudItem);
+       pBackgroudItem->AddTouchEventListener(*this);
+       SetIndividualSelectionEnabled(pBackgroudItem, false);
+
+       int yPos(__topMargin + MARGIN_12PX);
+       if (pMsgContent)
+       {
+               pMsgContent->SetBounds(Rectangle(leftX, yPos, pMsgContent->GetMaxWidth(), pMsgContent->GetMinHeight()));
+               AddControl(*pMsgContent);
+               pMsgContent->AddTouchEventListener(*this);
+               SetIndividualSelectionEnabled(pMsgContent, false);
+               yPos += pMsgContent->GetMinHeight();
+       }
+       if (__convData.IsSent())
+       {
+               if (pMsgSendProgressCntl)
+               {
+                       // Add message sending progress control
+                       pMsgSendProgressCntl->SetBounds(Rectangle(leftX - statusWidth + MARGIN_16PX
+                                                                                                        , bubbleHeight - statusHeight - MARGIN_20PX, statusWidth - MARGIN_16PX - MARGIN_10PX, statusHeight));
+                       AddControl(*pMsgSendProgressCntl);
+                       SetIndividualSelectionEnabled(pMsgSendProgressCntl, __editMode);
+                       if (showAnimation && __convData.GetAnimationShowState())
+                       {
+                               pMsgSendProgressCntl->Start();
+                       }
+               }
+               else if (pMsgSendFailIndicator)
+               {
+                       //  Add message send fail indicator control
+                       pMsgSendFailIndicator->SetBounds(Rectangle(leftX - statusWidth + MARGIN_16PX
+                                                                                                         , bubbleHeight - statusHeight - __bottomMargin - MARGIN_12PX, statusWidth - MARGIN_16PX - MARGIN_10PX, statusHeight));
+                       AddControl(*pMsgSendFailIndicator);
+                       pMsgSendFailIndicator->AddTouchEventListener(*this);
+                       SetIndividualSelectionEnabled(pMsgSendFailIndicator, __editMode);
+               }
+               else
+               {
+                       // Add date control
+                       pMsgTimeStamp->SetBounds(Rectangle(leftX - statusWidth, bubbleHeight - statusHeight - __bottomMargin - MARGIN_12PX
+                                                                                         , pMsgTimeStamp->GetMaxWidth(), statusHeight));
+                       AddControl(*pMsgTimeStamp);
+                       SetIndividualSelectionEnabled(pMsgTimeStamp, __editMode);
+               }
+       }
+       else
+       {
+               // Add receive message date control
+               pMsgTimeStamp->SetBounds(Rectangle(leftX + bubbleWidth + MARGIN_16PX,
+                                                                                  bubbleHeight - statusHeight - __bottomMargin, pMsgTimeStamp->GetMaxWidth(), MARGIN_26PX));
+               AddControl(*pMsgTimeStamp);
+               SetIndividualSelectionEnabled(pMsgTimeStamp, __editMode);
+       }
+       // Add Attachment
+       if (pAttachMentDetail)
+       {
+               yPos += MARGIN_14PX;
+               pAttachMentDetail->SetBounds(Rectangle(leftX + MARGIN_16PX, yPos,
+                                                                                          pAttachMentDetail->GetMimimumWidth(), pAttachMentDetail->GetMinimumHeight()));
+               AddControl(*pAttachMentDetail);
+               SetIndividualSelectionEnabled(pAttachMentDetail, false);
+               yPos += pAttachMentDetail->GetMinimumHeight();
+       }
+       // Add image/Video thumb nail if it is exist
+       if (pImageVideoAttachment)
+       {
+               yPos += MARGIN_14PX;
+               pImageVideoAttachment->SetBounds(Rectangle(leftX + MARGIN_16PX, yPos, pImageVideoAttachment->GetMimimumWidth(), pImageVideoAttachment->GetMinimumHeight()));
+               AddControl(*pImageVideoAttachment);
+               pImageVideoAttachment->AddTouchEventListener(*this);
+               SetIndividualSelectionEnabled(pImageVideoAttachment, false);
+               yPos += pImageVideoAttachment->GetMinimumHeight();
+       }
+       // Add audio file item if it is exist
+       if (pAudioAttachment)
+       {
+               yPos += MARGIN_14PX;
+               pAudioAttachment->SetBounds(Rectangle(leftX + MARGIN_16PX, yPos,
+                                                                                         pAudioAttachment->GetMimimumWidth(), pAudioAttachment->GetMinimumHeight()));
+               AddControl(*pAudioAttachment);
+               pAudioAttachment->AddTouchEventListener(*this);
+               SetIndividualSelectionEnabled(pAudioAttachment, false);
+               yPos += pAudioAttachment->GetMinimumHeight();
+       }
+       //Add detail button for MMS
+       if (pMmsDetail)
+       {
+               yPos += MARGIN_14PX;
+               pMmsDetail->SetBounds(Rectangle(leftX + bubbleWidth - H_ICON_64PX - __rightMargin, yPos,
+                                                                               W_ICON_64PX, H_ICON_64PX));
+               AddControl(*pMmsDetail);
+               pMmsDetail->AddTouchEventListener(*this);
+               SetIndividualSelectionEnabled(pMmsDetail, __editMode);
+       }
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+int
+TVBubbleListItem::GetSelectedElementId(void) const
+{
+       return __selectBubbleItemId;
+}
+
+bool
+TVBubbleListItem::IsLongPressed(void) const
+{
+       return __isLongPressed;
+}
+
+void
+TVBubbleListItem::OnTouchPressed(const Control& source, const Point& currentPosition,
+                                                                const TouchEventInfo& touchInfo)
+{
+       AppLogDebug("ENTER");
+
+       __isLongPressed = false;
+       if (!__pLongPressTimer)
+       {
+               __pLongPressTimer = new (std::nothrow) Timer();
+               __pLongPressTimer->Construct(*this);
+       }
+       // Need to take  action when click on fail indicator
+       if (source.GetName().CompareTo(String(IDC_MESSAGE_BUBBLE)) == 0)
+       {
+               __selectBubbleItemId = BUBBLE_ITEM;
+       }
+       else if (source.GetName().CompareTo(String(IDC_MESSAGE_BODY)) == 0)
+       {
+               __selectBubbleItemId = BUBBLE_ITEM_TEXT;
+       }
+       else if (source.GetName().CompareTo(String(IDC_TIME_STAMP)) == 0)
+       {
+               __selectBubbleItemId = BUBBLE_ITEM_DATE;
+       }
+       else if (source.GetName().CompareTo(String(IDC_MESSAGE_DETAIL)) == 0)
+       {
+               __selectBubbleItemId = BUBBLE_ITEM_DETAILS;
+       }
+       else if (source.GetName().CompareTo(String(IDC_FAIL_INDICATOR)) == 0)
+       {
+               __selectBubbleItemId = BUBBLE_ITEM_FAIL_STATUS;
+       }
+       else if (source.GetName().CompareTo(String(IDC_ATTACH_FILE_THUMBNAIL)) == 0)
+       {
+               __selectBubbleItemId = BUBBLE_ITEM_THUMBNAIL_IMAGE;
+       }
+       else if (source.GetName().CompareTo(String(IDC_BUTTON_VIDEO_THUMBNAIL)) == 0)
+       {
+               __selectBubbleItemId = BUBBLE_ITEM_THUMBNAIL_IMAGE;
+       }
+       else if (source.GetName().CompareTo(String(IDC_ATTACH_FILE_NAME)) == 0)
+       {
+               __selectBubbleItemId = BUBBLE_ITEM_ATTACHMENT_NAME;
+       }
+       else if (source.GetName().CompareTo(String(IDC_ATTACH_FILE_COUNT)) == 0)
+       {
+               __selectBubbleItemId = BUBBLE_ITEM_ATTACHMENT_COUNT;
+       }
+       else if (source.GetName().CompareTo(String(IDC_BUTTON_VIEW_IMAGE)) == 0)
+       {
+               __selectBubbleItemId = BUBBLE_ITEM_VIEW_IMAGE;
+       }
+       else if (source.GetName().CompareTo(String(IDC_BUTTON_PLAY_AUDIO)) == 0)
+       {
+               __selectBubbleItemId = BUBBLE_ITEM_PLAY_AUDIO;
+       }
+       else if (source.GetName().CompareTo(String(IDC_BUTTON_PLAY_VIDEO)) == 0)
+       {
+               __selectBubbleItemId = BUBBLE_ITEM_PLAY_VIDEO;
+       }
+       else if (source.GetName().CompareTo(String(IDC_BUTTON_ATTACH_COUNT)) == 0)
+       {
+               __selectBubbleItemId = BUBBLE_ITEM_ATTACHMENT_COUNT;
+       }
+       else if (source.GetName().CompareTo(String(IDC_BUTTON_ATTACHMENT)) == 0)
+       {
+               __selectBubbleItemId = BUBBLE_ITEM_ATTACHMENT;
+       }
+       else
+       {
+               __selectBubbleItemId = BUBBLE_ITEM_INVALID;
+       }
+       __pLongPressTimer->Start(500);
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+
+void
+TVBubbleListItem::OnTouchReleased(const Control& source, const Point& currentPosition,
+                                                                 const TouchEventInfo& touchInfo)
+{
+       AppLogDebug("ENTER");
+       __isLongPressed = false;
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+TVBubbleListItem::OnTimerExpired(Timer& timer)
+{
+       AppLogDebug("ENTER");
+       __isLongPressed = true;
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
index 7af3383..cb5bb35 100644 (file)
@@ -38,6 +38,8 @@ ThreadData::ThreadData(msg_handle_t msgHandle)
        , __messageTime(-1)
        , __unreadCount(0)
        , __draftMsgCount(0)
+       , __sendReceiveCount(0)
+
 {
        //Empty implementation
 }
@@ -94,6 +96,24 @@ ThreadData::Construct(msg_struct_t pThreadInfo)
                r = E_FAILURE;
                return r;
        }
+       int sendReceiveCount(0);
+       err = msg_get_int_value(pThreadInfo, MSG_THREAD_SMS_COUNT_INT, &sendReceiveCount);
+       if (err != MSG_SUCCESS)
+       {
+               AppLogDebug("EXIT:Unable to fetch thread unread count err =%d", (int) err);
+               r = E_FAILURE;
+               return r;
+       }
+       __sendReceiveCount += sendReceiveCount;
+
+       err = msg_get_int_value(pThreadInfo, MSG_THREAD_MMS_COUNT_INT, &sendReceiveCount);
+       if (err != MSG_SUCCESS)
+       {
+               AppLogDebug("EXIT:Unable to fetch thread unread count err =%d", (int) err);
+               r = E_FAILURE;
+               return r;
+       }
+       __sendReceiveCount += sendReceiveCount;
        // Group name
        InitTimeStampGroupName();
        //Initialize draft property
@@ -212,6 +232,13 @@ ThreadData::GetDataType(void)
        return DATA_TYPE_THREAD;
 }
 
+int
+ThreadData::GetSendReceiveCount(void) const
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __sendReceiveCount;
+}
 result
 ThreadData::InitThreadName(msg_struct_t pThreadInfo)
 {
index eb4993c..31e77dd 100644 (file)
@@ -45,7 +45,6 @@ ThreadListForm::ThreadListForm(ThreadListFormType threadListFormType, ThreadList
        , __pItemContext(null)
        , __pSearchList(null)
        , __pSearchBar(null)
-       , __pCheckAll(null)
        , __pSelectionInfo(null)
        , __pSelectedIds(null)
        , __pProgressPopup(null)
@@ -68,7 +67,7 @@ ThreadListForm::~ThreadListForm(void)
 
        // Cancel ongoing operation.
        ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
-       if(pThreadPrModel)
+       if (pThreadPrModel)
        {
                pThreadPrModel->RemoveThreadListEventListener(*this);
                pThreadPrModel->CancelDelete();
@@ -197,8 +196,16 @@ ThreadListForm::OnInitializing(void)
        case THREAD_LIST_FORM_CBMSG_EDIT:
        case THREAD_LIST_FORM_DRAFTMSG_EDIT:
        {
-               r = AddEditCheckBox();
-               __pSelectedIds = new (std::nothrow) ArrayListT< int>();
+               ButtonItem buttonRightItem;
+               buttonRightItem.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_SELECT_ALL);
+               Bitmap* pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SELECT_ALL);
+               buttonRightItem.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pBitMap);
+               pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SELECT_ALL_PRESSED);
+               buttonRightItem.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pBitMap);
+               GetHeader()->SetButton(BUTTON_POSITION_RIGHT, buttonRightItem);
+               GetHeader()->Invalidate(true);
+
+               __pSelectedIds = new (std::nothrow) ArrayListT<int>();
                __pSelectedIds->Construct();
                AddLabelSelectionInfo();
        }
@@ -211,7 +218,7 @@ ThreadListForm::OnInitializing(void)
                return r;
        }
 
-       r = AddListBox();
+       r = AddGroupListView();
 
        AppLogDebug("EXIT: %s", GetErrorMessage(r));
        return r;
@@ -280,10 +287,7 @@ ThreadListForm::AddSearchBar(void)
        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);
@@ -305,34 +309,17 @@ ThreadListForm::AddSearchBar(void)
        __pSearchList->SetBackgroundColor(COLOR_THREADLIST_SEARCH_BG);
        __pSearchList->SetShowState(false);
        __pSearchBar->SetContent(__pSearchList); // Transfer ownership
+       __pSearchBar->SetShowState(false); //To hide search bar during initial launch
 
        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;
+       String strText, selcInfo;
        result r = E_SUCCESS;
        Rectangle rect = GetClientAreaBounds();
        __pSelectionInfo = static_cast<Label*>(GetControl(L"IDC_THREAD_EDIT_LABEL"));
@@ -351,12 +338,13 @@ ThreadListForm::AddLabelSelectionInfo(void)
 }
 
 result
-ThreadListForm::AddListBox(void)
+ThreadListForm::AddGroupListView(void)
 {
        AppLogDebug("ENTER");
 
        result r = E_SUCCESS;
        __pThreadGroupList = static_cast<GroupedListView*>(GetControl(L"IDC_THREAD_GROUPEDLISTVIEW"));
+       __pThreadGroupList->SetBounds(GetClientAreaBounds());
        __pThreadGroupList->SetItemProvider(*this);
        __pThreadGroupList->AddGroupedListViewItemEventListener(*this);
 
@@ -432,11 +420,11 @@ ThreadListForm::DeleteSelectedItem(void)
        {
                if (__listType == THREAD_LIST_TYPE_THREAD)
                {
-                       pThreadManager->Delete(__pSelectedIds, *this, REQUEST_DELETE_THREAD);
+                       pThreadManager->Delete(__pSelectedIds, REQUEST_DELETE_THREAD, this);
                }
                else
                {
-                       pThreadManager->Delete(__pSelectedIds, *this, REQUEST_DELETE_MESSAGE);
+                       pThreadManager->Delete(__pSelectedIds, REQUEST_DELETE_MESSAGE, this);
 
                }
        }
@@ -898,7 +886,7 @@ void
 ThreadListForm::SetHeader()
 {
        AppLogDebug("ENTER");
-
+       bool showSearchBar(true);
        Header* header = GetHeader();
        if (header)
        {
@@ -951,12 +939,27 @@ ThreadListForm::SetHeader()
                case THREAD_LIST_FORM_CBMSG_EDIT:
                case THREAD_LIST_FORM_DRAFTMSG_EDIT:
                {
+                       showSearchBar = false;
                        Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_DELETE", strText);
                        header->SetTitleText(strText);
                        header->Draw();
                }
                break;
+
                }
+               
+               if(showSearchBar)
+               {
+                       //Add search button in header:
+                       ButtonItem btnRight;
+                       btnRight.Construct(BUTTON_ITEM_STYLE_ICON, IDA_OPTION_TRAY_COMMAND);
+                       Bitmap* pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SEARCH);
+                       btnRight.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pBitMap);
+                       pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SEARCH_PRESS);
+                       btnRight.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pBitMap);
+                       header->SetButton(BUTTON_POSITION_RIGHT, btnRight);
+               }
+
        }
 
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
@@ -970,7 +973,7 @@ ThreadListForm::ShowSelectionInfo()
        AppLogDebug("ENTER");
 
        int selectCount(0);
-       String selcInfo,strText;
+       String selcInfo, strText;
        if (__pSelectedIds)
        {
                selectCount = __pSelectedIds->GetCount();
@@ -997,42 +1000,53 @@ 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)
+       case REQUEST_SHOW_PROGRESS_POPUP:
+       {
+               // Create progress dialog.
+               if (!__pProgressPopup)
                {
-                       Integer* pTotalCount = (Integer*)pArgs->GetAt(0);
-                       totalcount = pTotalCount->ToInt();
-                       OnDeleteStart(totalcount);
-                       delete pArgs;
+                       String* pTitleText = (String*) pArgs->GetAt(0);
+                       Integer* pTotalCount = (Integer*) pArgs->GetAt(1);
+                       __pProgressPopup = new (std::nothrow) MsgProgressPopup();
+                       __pProgressPopup->Construct(0, pTotalCount->ToInt(), *pTitleText);
                }
-               break;
+               if (__pProgressPopup)
+               {
+                       __pProgressPopup->ShowPopup();
+               }
+               delete pArgs;
+       }
+       break;
 
-       case REQUEST_DELETE_UPDATE:
-               if(pArgs->GetCount() > 0)
+       case REQUEST_UPDATE_PROGRESS_POPUP:
+       {
+               if (__pProgressPopup && pArgs->GetCount() > 1)
                {
-                       Integer* pCurrentCount = (Integer*)pArgs->GetAt(0);
-                       Integer* pTotalCount = (Integer*)pArgs->GetAt(1);
-                       OnDeleteUpdate(pCurrentCount->ToInt(),pTotalCount->ToInt());
-                       delete pArgs;
+                       String* pStatusInfo = (String*) pArgs->GetAt(0);
+                       Integer* pProgressValue = (Integer*) pArgs->GetAt(1);
+                       __pProgressPopup->UpdateProgressInfo(*pStatusInfo);
+                       __pProgressPopup->SetProgressValue(pProgressValue->ToInt());
                }
-               break;
+               delete pArgs;
+       }
+       break;
 
-       case REQUEST_DELETE_COMPLETE:
-               if(pArgs->GetCount() > 0)
+       case REQUEST_DESTROY_PROGRESS_POPUP:
+       {
+               if (__pProgressPopup)
                {
-                       AppLogDebug("complete");
-                       Integer* pStatus = (Integer*)pArgs->GetAt(0);
-                       OnDeleteComplete(pStatus->ToInt(),null);
-                       delete pArgs;
+                       __pProgressPopup->HidePopup();
+                       delete __pProgressPopup;
+                       __pProgressPopup = null;
                }
-               break;
+       }
+       break;
 
        default:
                break;
@@ -1067,12 +1081,22 @@ ThreadListForm::OnSearchBarModeChanged(SearchBar& source, SearchBarMode mode)
                        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);
+               __pSearchBar->SetShowState(false);
+
+               // To adjust the list view size:
+               __pThreadGroupList->SetBounds(GetClientAreaBounds());
                __pThreadGroupList->SetShowState(true);
                __pThreadGroupList->UpdateList();
+
+               //Add search button in header:
+               ButtonItem btnRight;
+               btnRight.Construct(BUTTON_ITEM_STYLE_ICON, IDA_OPTION_TRAY_COMMAND);
+               Bitmap* pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SEARCH);
+               btnRight.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pBitMap);
+               pBitMap = BitmapUtility::GetInstance()->GetIcon(MSG_ICON_SEARCH_PRESS);
+               btnRight.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pBitMap);
+               GetHeader()->SetButton(BUTTON_POSITION_RIGHT, btnRight);
        }
        Draw();
 
@@ -1091,7 +1115,7 @@ ThreadListForm::OnTextValueChanged(const Control& source)
                if (__pSearchBar->GetTextLength() > 0)
                {
                        pThreadPrModel->GetSearchThreadList(__pSearchBar->GetText(), __listType);
-                       if(pThreadPrModel->GetSearchListCount() <= 0)
+                       if (pThreadPrModel->GetSearchListCount() <= 0)
                        {
                                __isSearchBarClicked = true;
                        }
@@ -1198,6 +1222,15 @@ ThreadListForm::OnActionPerformed(const Control& source, int actionId)
                HandleBackNavigation();
        }
        break;
+       
+       case IDA_SELECT_ALL:
+       {
+               ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
+               int totalCount = pThreadPrModel->GetCount();
+               bool selectAll(totalCount != __pSelectedIds->GetCount());
+               CheckAll(selectAll);
+       }
+       break;
 
        case IDA_SELECT_ALL_ON:
        {
@@ -1214,14 +1247,7 @@ ThreadListForm::OnActionPerformed(const Control& source, int actionId)
        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);
+               pThreadPrModel->RestoreSpamMessages(__pSelectedIds, this);
        }
        break;
 
@@ -1307,39 +1333,20 @@ ThreadListForm::OnActionPerformed(const Control& source, int actionId)
                        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);
+                                       pThreadPrModel->Delete(deleteId, REQUEST_DELETE_THREAD, this);
                                }
                                else
                                {
-                                       pThreadPrModel->Delete(deleteId, *this, REQUEST_DELETE_MESSAGE);
+                                       pThreadPrModel->Delete(deleteId, REQUEST_DELETE_MESSAGE, this);
                                }
                        }
                        __msgListItemIndex = -1;
                }
                else
                {
-                       if (__pProgressPopup == null)
-                       {
-                               __pProgressPopup = new (std::nothrow) MsgProgressPopup();
-                               __stringTitle.Append(IDS_DELETED_NUMBER_IDS);
-                               __pProgressPopup->Construct(0, __pSelectedIds->GetCount(), __stringTitle);
-                       }
                        DeleteSelectedItem();
                }
        }
@@ -1379,6 +1386,21 @@ ThreadListForm::OnActionPerformed(const Control& source, int actionId)
        }
        break;
 
+       case IDA_OPTION_TRAY_COMMAND:
+       {
+               if (!__pSearchBar->GetShowState())
+               {
+                       GetHeader()->RemoveButtonAt(BUTTON_POSITION_RIGHT);
+                       int height = __pSearchBar->GetHeight();
+                       __pSearchBar->SetShowState(true);
+                       __pSearchBar->SetMode(SEARCH_BAR_MODE_INPUT);
+                       __pThreadGroupList->SetBounds(0,height,__pThreadGroupList->GetWidth(),__pThreadGroupList->GetHeight() - height);
+                       __pThreadGroupList->UpdateList();
+               }
+
+       }
+       break;
+
        }
 
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
@@ -1404,11 +1426,11 @@ ThreadListForm::OnDeleteStart(int totalCount)
 {
        AppLogDebug("ENTER");
 
-       if (__pProgressPopup)
-       {
-               __pProgressPopup->ShowPopup();
-       }
-
+       ArrayList* pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+       pArgs->Construct();
+       pArgs->Add(new (std::nothrow) String(IDS_DELETED_NUMBER_IDS));
+       pArgs->Add(new (std::nothrow) Integer(totalCount));
+       SendUserEvent(REQUEST_SHOW_PROGRESS_POPUP, pArgs);
 
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
        return;
@@ -1422,9 +1444,12 @@ ThreadListForm::OnDeleteUpdate(int deleteCount, int totalCount)
        if (__pProgressPopup)
        {
                String statusInfo;
-               statusInfo.Format(MAX_LEN_SELECTION_INFO, __stringTitle.GetPointer(), deleteCount, totalCount);
-               __pProgressPopup->UpdateProgressInfo(statusInfo);
-               __pProgressPopup->SetProgressValue(deleteCount);
+               statusInfo.Format(MAX_LEN_SELECTION_INFO, IDS_DELETED_NUMBER_IDS, deleteCount, totalCount);
+               ArrayList* pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+               pArgs->Construct();
+               pArgs->Add(new (std::nothrow) String(statusInfo));
+               pArgs->Add(new (std::nothrow) Integer(deleteCount));
+               SendUserEvent(REQUEST_UPDATE_PROGRESS_POPUP, pArgs);
        }
 
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
@@ -1436,14 +1461,61 @@ ThreadListForm::OnDeleteComplete(int errCode, Object* pThreadObject)
 {
        AppLogDebug("ENTER");
 
-       // Back to thread view mode
+       SendUserEvent(REQUEST_DESTROY_PROGRESS_POPUP, 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::OnRestoreStart(int totalCount)
+{
+       AppLogDebug("ENTER");
+
+       ArrayList* pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+       pArgs->Construct();
+       pArgs->Add(new (std::nothrow) String(IDS_RESTORE_NUMBER_IDS));
+       pArgs->Add(new (std::nothrow) Integer(totalCount));
+       SendUserEvent(REQUEST_SHOW_PROGRESS_POPUP, pArgs);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::OnRestoreUpdate(int restoreCount, int totalCount)
+{
+       AppLogDebug("ENTER");
+
        if (__pProgressPopup)
        {
-               __pProgressPopup->HidePopup();
-               delete __pProgressPopup;
-               __pProgressPopup = null;
+               String statusInfo;
+               statusInfo.Format(MAX_LEN_SELECTION_INFO, IDS_RESTORE_NUMBER_IDS, restoreCount, totalCount);
+               ArrayList* pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+               pArgs->Construct();
+               pArgs->Add(new (std::nothrow) String(statusInfo));
+               pArgs->Add(new (std::nothrow) Integer(restoreCount));
+               SendUserEvent(REQUEST_UPDATE_PROGRESS_POPUP, pArgs);
        }
 
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return;
+}
+
+void
+ThreadListForm::OnRestoreComplete(int errCode, Object* pRestoreHandler)
+{
+       AppLogDebug("ENTER");
+
+       SendUserEvent(REQUEST_DESTROY_PROGRESS_POPUP, null);
+
        // UI thread, Back to list view mode.
        if (IsEditForm())
        {
@@ -1455,7 +1527,6 @@ ThreadListForm::OnDeleteComplete(int errCode, Object* pThreadObject)
        return;
 }
 
-
 void
 ThreadListForm::OnTouchPressed(const Control& source,
                                                           const Point& currentPosition, const TouchEventInfo& touchInfo)
@@ -1476,7 +1547,7 @@ ThreadListForm::OnGroupedListViewItemStateChanged(GroupedListView& listView, int
 {
        AppLogDebug("ENTER");
 
-       if(groupIndex == 0 && itemIndex == 0 && __isSearchBarClicked)
+       if (groupIndex == 0 && itemIndex == 0 && __isSearchBarClicked)
        {
                return;
        }
@@ -1495,7 +1566,7 @@ ThreadListForm::OnGroupedListViewItemStateChanged(GroupedListView& listView, int
                        __pSelectedIds->Add(selectId);
                        if (__pSelectedIds->GetCount() == totalCount)
                        {
-                               __pCheckAll->SetSelected(true);
+                               //TODO: Need to update check box
                        }
                        ShowSelectionInfo();
                }
@@ -1509,7 +1580,7 @@ ThreadListForm::OnGroupedListViewItemStateChanged(GroupedListView& listView, int
                        __pSelectedIds->Remove(selectId);
                        if (__pSelectedIds->GetCount() <= totalCount)
                        {
-                               __pCheckAll->SetSelected(false);
+                               //TODO: Need to update check box
                        }
                        ShowSelectionInfo();
                }
@@ -1527,8 +1598,20 @@ ThreadListForm::OnGroupedListViewItemStateChanged(GroupedListView& listView, int
                        {
                                // Transfer ownership
                                BaseData* pThreaddata = pThreadPrModel->GetDataAt(index)->CloneN();
-                               pArgList->Add(pThreaddata);
-                               pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONVERSATION_LIST, SCENE_TRANSITION_ANIMATION_TYPE_NONE), pArgList);
+                               ThreadData* pthrdData = pThreadPrModel->GetThreadDataByIdN(pThreadPrModel->GetDataAt(index)->GetEntryId());
+                               if (pthrdData->GetSendReceiveCount() - pthrdData->GetDraftMessageCount() > 0)
+                               {
+                                       pArgList->Add(pThreaddata);
+                                       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONVERSATION_LIST, SCENE_TRANSITION_ANIMATION_TYPE_NONE), pArgList);
+                               }
+                               else
+                               {
+                                       pArgList->Add((new (std::nothrow) Integer(COMPOSER_LAUNCH_DRAFT_MESSAGE)));
+                                       int threadId = pThreadPrModel->GetDataAt(index)->GetEntryId();
+                                       BaseData* pMessageData = pThreadPrModel->GetMessageDataByIdN(pThreadPrModel->GetDraftMessageId(threadId));
+                                       pArgList->Add(pMessageData);
+                                       pSceneManager->GoForward(ForwardSceneTransition(IDSCN_COMPOSER), pArgList);
+                               }
                        }
                        else if (__listType == THREAD_LIST_TYPE_DRAFT)
                        {
@@ -1641,7 +1724,7 @@ ThreadListForm::GetGroupCount(void)
        }
 
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
-       if(groupCount == 0 && __isSearchBarClicked)
+       if (groupCount == 0 && __isSearchBarClicked)
        {
                groupCount = 1;
        }
@@ -1659,7 +1742,7 @@ ThreadListForm::GetItemCount(int groupIndex)
                groupItemCount = pThreadPrModel->GetGroupItemCount(groupIndex);
        }
        AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
-       if(groupItemCount == 0 && __isSearchBarClicked)
+       if (groupItemCount == 0 && __isSearchBarClicked)
        {
                groupItemCount = 1;
        }
@@ -1671,7 +1754,7 @@ ThreadListForm::CreateGroupItem(int groupIndex, int itemWidth)
 {
        AppLogDebug("ENTER");
 
-       if(!__isSearchBarClicked)
+       if (!__isSearchBarClicked)
        {
                GroupItem* pItem = new (std::nothrow) GroupItem();
                ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
@@ -1711,7 +1794,7 @@ ThreadListForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
 {
        AppLogDebug("ENTER");
 
-       if(!__isSearchBarClicked )
+       if (!__isSearchBarClicked)
        {
                LVThreadListItem* pThreadListItem = null;
                ThreadPresentationModel* pThreadPrModel = ThreadPresentationModel::GetInstance();
@@ -1778,11 +1861,11 @@ ThreadListForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
                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->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);
+                                                 1, strText, 34,
+                                                 COLOR_THREADLIST_DATE_TIME_SHORTMSG_ITEM, COLOR_THREADLIST_DATE_TIME_SHORTMSG_ITEM, COLOR_THREADLIST_DATE_TIME_SHORTMSG_ITEM, false);
                return pItem;
        }
 }
@@ -1807,11 +1890,12 @@ ThreadListForm::OnKeypadActionPerformed(Control& source, KeypadAction keypadActi
 {
        AppLogDebug("ENTER");
 
-       switch(keypadAction)
+       switch (keypadAction)
        {
        case KEYPAD_ACTION_SEARCH:
                __pSearchBar->HideKeypad();
                break;
+
        default:
                break;
        }
@@ -1837,7 +1921,7 @@ ThreadListForm::UpdateMessageThreadList()
                if (__pSearchBar && __pSearchBar->GetTextLength() > 0)
                {
                        pThreadprModel->GetSearchThreadList(__pSearchBar->GetText(), __listType);
-                       if(pThreadprModel->GetSearchListCount() <= 0)
+                       if (pThreadprModel->GetSearchListCount() <= 0)
                        {
                                __isSearchBarClicked = true;
                        }
@@ -1854,11 +1938,11 @@ ThreadListForm::UpdateMessageThreadList()
        SetFooter();
        SetHeader();
 
-       if(__pThreadGroupList->GetShowState())
+       if (__pThreadGroupList->GetShowState())
        {
                __pThreadGroupList->UpdateList();
        }
-       if(__pSearchList && __pSearchList->GetShowState())
+       if (__pSearchList && __pSearchList->GetShowState())
        {
                __pSearchList->UpdateList();
        }
index 09a8a2d..1a4bce3 100644 (file)
@@ -24,7 +24,6 @@
 #include <FBaseErrorDefine.h>
 #include <FBaseRtIEventListener.h>
 
-#include "MsgDeleteHandlerThread.h"
 #include "MsgEvent.h"
 #include "MsgIConversationEventListener.h"
 #include "MsgIThreadEventListener.h"
@@ -107,15 +106,18 @@ void
 ThreadPresentationModel::CreateInstance(void)
 {
        AppLogDebug("ENTER");
+       result r = E_SUCCESS;
        __pInstance = new (std::nothrow) ThreadPresentationModel();
        if (E_SUCCESS != __pInstance->Construct())
        {
                delete __pInstance;
                __pInstance = null;
+               r = E_FAILURE;
+               AppLogDebug("EXIT: %s", GetErrorMessage(r));
                return;
        }
        std::atexit(DestroyInstance);
-       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       AppLogDebug("EXIT: %s", GetErrorMessage(r));
 }
 
 void
@@ -334,6 +336,12 @@ ThreadPresentationModel::GetSearchThreadList(const String& msgSearchText, int th
                        MessageData* pMessageData = null;
                        for (int index = 0; index < pMsgDataList->nCount; index++)
                        {
+                               int storageId;
+                               msg_get_int_value(pMsgDataList->msg_struct_info[index], MSG_CONV_MSG_STORAGE_ID_INT, &storageId);
+                               if ((THREAD_LIST_TYPE_SIM == __listType) && storageId != MSG_STORAGE_SIM)
+                               {
+                                       continue;
+                               }
                                pMessageData = new (std::nothrow) MessageData();
                                pMessageData->Construct(pMsgDataList->msg_struct_info[index]);
                                r = __pDataList->Add(pMessageData);
diff --git a/src/MsgTokenOptionPopup.cpp b/src/MsgTokenOptionPopup.cpp
new file mode 100644 (file)
index 0000000..0167540
--- /dev/null
@@ -0,0 +1,192 @@
+//
+// 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 <FUi.h>
+
+#include "MsgBaseData.h"
+#include "MsgBitmapUtility.h"
+#include "MsgContactUtility.h"
+#include "MsgTokenOptionPopup.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;
+
+TokenOptionPopup::TokenOptionPopup(Control& parent)
+: __parentCntl(parent)
+, __pOptionList(null)
+, __pOptionListView(null)
+, __pCloseButton(null)
+{
+}
+
+TokenOptionPopup::~TokenOptionPopup(void)
+{
+       AppLogDebug("ENTER");
+       if (__pOptionList)
+       {
+               __pOptionList->RemoveAll(true);
+               delete __pOptionList;
+       }
+}
+
+result
+TokenOptionPopup::Construct(AddressInfo* pRecipient)
+{
+       AppLogDebug("ENTER");
+       result r = Popup::Construct(L"IDL_ATTACH_LIST_POPUP");
+       if (!IsFailed(r))
+       {
+               // Transfer ownership
+               Bitmap* pBottomBg = BitmapUtility::GetInstance()->GetIconN(MSG_ICON_BUTTON_PANEL_BG);
+               SetFooterBackgroundBitmap(pBottomBg);
+               __pOptionList = new (std::nothrow) ArrayList();
+               __pOptionList->Construct();
+               // Load attach list element.
+               String strText;
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_DELETE", strText);
+               __pOptionList->Add(* new String(strText));
+               Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_SK_EDIT", strText);
+               __pOptionList->Add(* new String(strText));
+
+               if (pRecipient->isAddFromContacts)
+               {
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_MSGC_OPT_VIEW_CONTACT", strText);
+               }
+               else
+               {
+                       Application::GetInstance()->GetAppResource()->GetString(L"IDS_COM_OPT_ADD_CONTACT", strText);
+               }
+               __pOptionList->Add(* new String(strText));
+
+               __pOptionListView = static_cast<ListView*>(GetControl(L"IDC_ATTACH_LISTVIEW"));
+               __pOptionListView->SetItemProvider(*this);
+               __pOptionListView->AddListViewItemEventListener(*this);
+               __pCloseButton = static_cast<Button*>(GetControl(L"IDC_BUTTON_CLOSE"));
+               __pCloseButton->SetActionId(IDA_CLOSE);
+               __pCloseButton->AddActionEventListener(*this);
+
+               int increaseHeight(0);
+               if (__pOptionList->GetCount() > 1)
+               {
+                       int visibleListItemCount(__pOptionList->GetCount());
+                       increaseHeight = (visibleListItemCount - 1) * H_LIST_ITEM_112PX;
+               }
+               __pOptionListView->SetSize(__pOptionListView->GetWidth(), __pOptionListView->GetHeight() + increaseHeight);
+
+               Popup::SetSize(Dimension(GetWidth(), GetHeight() + increaseHeight));
+               Point pos = GetControl(L"IDC_BUTTON_CLOSE")->GetPosition();
+               pos.y += increaseHeight;
+               GetControl(L"IDC_BUTTON_CLOSE")->SetPosition(pos);
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return r;
+}
+
+void
+TokenOptionPopup::OnListViewItemStateChanged(ListView& listView, int index,
+               int elementId, ListItemStatus status)
+{
+       AppLogDebug("ENTER");
+       if (status != LIST_ITEM_STATUS_SELECTED)
+       {
+               return;
+       }
+
+       switch (index)
+       {
+       case 0:
+       {
+               RequestId requestId = REQUEST_DELETE_TOKEN;
+               __parentCntl.SendUserEvent(requestId,null);
+       }
+       break;
+
+       case 1:
+       {
+               RequestId requestId = REQUEST_EDIT_TOKEN;
+               __parentCntl.SendUserEvent(requestId,null);
+       }
+       break;
+
+       case 2:
+       {
+               RequestId requestId = REQUEST_ADD_VIEW_CONTACT;
+               __parentCntl.SendUserEvent(requestId,null);
+       }
+       break;
+       }
+       SetShowState(false);
+       RequestId requestId = REQUEST_DESTROY_TOKEN_OPTION_POPUP;
+       __parentCntl.SendUserEvent(requestId, null);
+
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
+//
+//IListViewItemProvider
+ListItemBase*
+TokenOptionPopup::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);
+       pItem->AddElement(Rectangle(MARGIN_16PX, 0, (itemWidth - MARGIN_16PX), H_LIST_ITEM_112PX),
+                       1,* (String*)__pOptionList->GetAt(index));
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return pItem;
+}
+
+bool
+TokenOptionPopup::DeleteItem(int index, ListItemBase* pItem, int itemWidth)
+{
+       AppLogDebug("ENTER");
+       if (pItem)
+       {
+               delete pItem;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return true;
+}
+
+int
+TokenOptionPopup::GetItemCount(void)
+{
+       AppLogDebug("ENTER");
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+       return __pOptionList->GetCount();
+}
+
+// From IActionEventListener
+void
+TokenOptionPopup::OnActionPerformed(const Control& source, int actionId)
+{
+       AppLogDebug("ENTER");
+       switch (actionId)
+       {
+       case IDA_CLOSE:
+       {
+               SetShowState(false);
+               RequestId requestId = REQUEST_DESTROY_TOKEN_OPTION_POPUP;
+               __parentCntl.SendUserEvent(requestId, null);
+       }
+       break;
+       }
+       AppLogDebug("EXIT: %s", GetErrorMessage(GetLastResult()));
+}
index da89f0a..2eb63be 100644 (file)
@@ -31,8 +31,8 @@ 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;
+const int W_PLAYCONTROL_BUTTON = 74;
+const int H_PLAYCONTROL_BUTTON = 74;
 
 //Check Box
 const int H_CHECKBOX = 75;
@@ -50,6 +50,7 @@ const int MAX_LENGTH = 20;
 
 //Panel
 const int PANEL_HEIGHT = 114;
+const int CLIPBOARD_HEIGHT_OFFSET = 79;
 
 //Label
 const int H_MSG_SELECTION_INFO_LABEL = 50;
@@ -240,6 +241,13 @@ 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* IDC_BUTTON_VIEW_IMAGE = L"IDC_BUTTON_VIEW_IMAGE";
+const wchar_t* IDC_BUTTON_PLAY_AUDIO = L"IDC_BUTTON_PLAY_AUDIO";
+const wchar_t* IDC_BUTTON_VIDEO_THUMBNAIL = L"IDC_BUTTON_VIDEO_THUMBNAIL";
+const wchar_t* IDC_BUTTON_PLAY_VIDEO = L"IDC_BUTTON_PLAY_VIDEO";
+const wchar_t* IDC_BUTTON_ATTACH_COUNT = L"IDC_BUTTON_ATTACH_COUNT";
+const wchar_t* IDC_BUTTON_ATTACHMENT = L"IDC_BUTTON_ATTACHMENT";
+
 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";
@@ -255,15 +263,17 @@ const wchar_t* IDS_APPCONTROL_OPERATION_SETTINGS = L"http://tizen.org/appcontrol
 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_KEY_VOLUME_LEVEL = L"http://tizen.org/setting/sound.ringtone.volume";
+
 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_CALL = L"tizen.Call";
 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_CALENDAR = L"tizen.events";
 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";
@@ -289,4 +299,3 @@ 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";
-