--- /dev/null
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+
+# Target name and PKGID
+## TODO : set application name and ID
+SET(this_target Phone)
+SET(PKGID zktdpemtmw)
+
+# include directory
+INCLUDE_DIRECTORIES(
+ /usr/include/glib-2.0
+ /usr/lib/glib-2.0/include
+ /usr/include/osp
+ /usr/include/vconf
+ /usr/include/media
+ /usr/include/telephony-client
+ /usr/include/contacts-svc
+ inc
+ )
+
+# Source files
+FILE(GLOB ${this_target}_SOURCE_FILES
+ src/*.cpp
+)
+
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIE")
+
+
+# Create executable
+SET(CMAKE_EXECUTABLE_SUFFIX ".exe")
+ADD_EXECUTABLE (${this_target} ${${this_target}_SOURCE_FILES})
+
+# Set link libraries and link options
+## TODO : add more link libraries and options
+TARGET_LINK_LIBRARIES(${this_target} -L/usr/lib/osp osp-appfw osp-uifw osp-social osp-messaging osp-media osp-image osp-image-core)
+TARGET_LINK_LIBRARIES(${this_target} -L/usr/lib capi-media-sound-manager SLP-tapi vconf contacts-service2)
+TARGET_LINK_LIBRARIES(${this_target} -Xlinker --allow-shlib-undefined -pthread -pie)
+
+# Copy info, data, res, and icons directories
+INSTALL(TARGETS ${this_target} DESTINATION ../usr/apps/${PKGID}/bin)
+
+# Copy resource
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/manifest.xml DESTINATION ../usr/apps/${PKGID}/info)
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res DESTINATION ../usr/apps/${PKGID})
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/shared DESTINATION ../usr/apps/${PKGID})
--- /dev/null
+Flora License
+
+Version 1.0, May, 2012
+
+http://floralicense.org/license/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction,
+and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by
+the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and
+all other entities that control, are controlled by, or are
+under common control with that entity. For the purposes of
+this definition, "control" means (i) the power, direct or indirect,
+to cause the direction or management of such entity,
+whether by contract or otherwise, or (ii) ownership of fifty percent (50%)
+or more of the outstanding shares, or (iii) beneficial ownership of
+such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity
+exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications,
+including but not limited to software source code, documentation source,
+and configuration files.
+
+"Object" form shall mean any form resulting from mechanical
+transformation or translation of a Source form, including but
+not limited to compiled object code, generated documentation,
+and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form,
+made available under the License, as indicated by a copyright notice
+that is included in or attached to the work (an example is provided
+in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form,
+that is based on (or derived from) the Work and for which the editorial
+revisions, annotations, elaborations, or other modifications represent,
+as a whole, an original work of authorship. For the purposes of this License,
+Derivative Works shall not include works that remain separable from,
+or merely link (or bind by name) to the interfaces of, the Work and
+Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original
+version of the Work and any modifications or additions to that Work or
+Derivative Works thereof, that is intentionally submitted to Licensor
+for inclusion in the Work by the copyright owner or by an individual or
+Legal Entity authorized to submit on behalf of the copyright owner.
+For the purposes of this definition, "submitted" means any form of
+electronic, verbal, or written communication sent to the Licensor or
+its representatives, including but not limited to communication on
+electronic mailing lists, source code control systems, and issue
+tracking systems that are managed by, or on behalf of, the Licensor
+for the purpose of discussing and improving the Work, but excluding
+communication that is conspicuously marked or otherwise designated
+in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity
+on behalf of whom a Contribution has been received by Licensor and
+subsequently incorporated within the Work.
+
+"Tizen Certified Platform" shall mean a software platform that complies
+with the standards set forth in the Compatibility Definition Document
+and passes the Compatibility Test Suite as defined from time to time
+by the Tizen Technical Steering Group and certified by the Tizen
+Association or its designated agent.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+this License, each Contributor hereby grants to You a perpetual,
+worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+copyright license to reproduce, prepare Derivative Works of,
+publicly display, publicly perform, sublicense, and distribute the
+Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+this License, each Contributor hereby grants to You a perpetual,
+worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+(except as stated in this section) patent license to make, have made,
+use, offer to sell, sell, import, and otherwise transfer the Work
+solely as incorporated into a Tizen Certified Platform, where such
+license applies only to those patent claims licensable by such
+Contributor that are necessarily infringed by their Contribution(s)
+alone or by combination of their Contribution(s) with the Work solely
+as incorporated into a Tizen Certified Platform to which such
+Contribution(s) was submitted. If You institute patent litigation
+against any entity (including a cross-claim or counterclaim
+in a lawsuit) alleging that the Work or a Contribution incorporated
+within the Work constitutes direct or contributory patent infringement,
+then any patent licenses granted to You under this License for that
+Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+Work or Derivative Works thereof pursuant to the copyright license
+above, in any medium, with or without modifications, and in Source or
+Object form, provided that You meet the following conditions:
+
+ 1. You must give any other recipients of the Work or Derivative Works
+ a copy of this License; and
+ 2. You must cause any modified files to carry prominent notices stating
+ that You changed the files; and
+ 3. You must retain, in the Source form of any Derivative Works that
+ You distribute, all copyright, patent, trademark, and attribution
+ notices from the Source form of the Work, excluding those notices
+ that do not pertain to any part of the Derivative Works; and
+ 4. If the Work includes a "NOTICE" text file as part of its distribution,
+ then any Derivative Works that You distribute must include a readable
+ copy of the attribution notices contained within such NOTICE file,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works, in at least one of the following places:
+ within a NOTICE text file distributed as part of the Derivative Works;
+ within the Source form or documentation, if provided along with the
+ Derivative Works; or, within a display generated by the Derivative Works,
+ if and wherever such third-party notices normally appear.
+ The contents of the NOTICE file are for informational purposes only
+ and do not modify the License.
+
+You may add Your own attribution notices within Derivative Works
+that You distribute, alongside or as an addendum to the NOTICE text
+from the Work, provided that such additional attribution notices
+cannot be construed as modifying the License. You may add Your own
+copyright statement to Your modifications and may provide additional or
+different license terms and conditions for use, reproduction, or
+distribution of Your modifications, or for any such Derivative Works
+as a whole, provided Your use, reproduction, and distribution of
+the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+any Contribution intentionally submitted for inclusion in the Work
+by You to the Licensor shall be under the terms and conditions of
+this License, without any additional terms or conditions.
+Notwithstanding the above, nothing herein shall supersede or modify
+the terms of any separate license agreement you may have executed
+with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+names, trademarks, service marks, or product names of the Licensor,
+except as required for reasonable and customary use in describing the
+origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+agreed to in writing, Licensor provides the Work (and each
+Contributor provides its Contributions) on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+implied, including, without limitation, any warranties or conditions
+of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+PARTICULAR PURPOSE. You are solely responsible for determining the
+appropriateness of using or redistributing the Work and assume any
+risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+whether in tort (including negligence), contract, or otherwise,
+unless required by applicable law (such as deliberate and grossly
+negligent acts) or agreed to in writing, shall any Contributor be
+liable to You for damages, including any direct, indirect, special,
+incidental, or consequential damages of any character arising as a
+result of this License or out of the use or inability to use the
+Work (including but not limited to damages for loss of goodwill,
+work stoppage, computer failure or malfunction, or any and all
+other commercial damages or losses), even if such Contributor
+has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+the Work or Derivative Works thereof, You may choose to offer,
+and charge a fee for, acceptance of support, warranty, indemnity,
+or other liability obligations and/or rights consistent with this
+License. However, in accepting such obligations, You may act only
+on Your own behalf and on Your sole responsibility, not on behalf
+of any other Contributor, and only if You agree to indemnify,
+defend, and hold each Contributor harmless for any liability
+incurred by, or claims asserted against, such Contributor by reason
+of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Flora License to your work
+
+To apply the Flora License to your work, attach the following
+boilerplate notice, with the fields enclosed by brackets "[]"
+replaced with your own identifying information. (Don't include
+the brackets!) The text should be enclosed in the appropriate
+comment syntax for the file format. We also recommend that a
+file or class name and description of purpose be included on the
+same "printed page" as the copyright notice for easier
+identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Flora License, Version 1.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://floralicense.org/license/
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
--- /dev/null
+Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.
+Except as noted, this software is licensed under Flora License, Version 1.
+Please, see the LICENSE.Flora file for Flora License, Version 1 terms and conditions.
\ No newline at end of file
--- /dev/null
+//
+// 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 PhnActiveCallForm.h
+ * @brief This is the header file for the %ActiveCallForm class.
+ *
+ * This header file contains the declarations for %ActiveCallForm class.
+ */
+#ifndef _PHN_ACTIVE_CALL_FORM_H_
+#define _PHN_ACTIVE_CALL_FORM_H_
+
+#include <FBase.h>
+#include <FUi.h>
+#include "PhnBaseForm.h"
+
+class CallButtonsPanel;
+class DtmfKeyPadPanel;
+class CallInfo;
+
+/**
+ * @class ActiveCallForm
+ * @brief This class presents a form based UI for dialing call, active call, conference call,
+ * single active call, multiple active call scenarios.
+ *
+ */
+class ActiveCallForm
+ : public BaseForm
+ , public Tizen::Ui::Controls::IListViewItemEventListener
+ , public Tizen::Ui::Controls::IListViewItemProvider
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public Tizen::Base::Runtime::ITimerEventListener
+{
+public:
+ ActiveCallForm(FormType formType);
+ virtual ~ActiveCallForm(void);
+ //From BaseForm
+ virtual void Initialize(void);
+
+public:
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ virtual void OnTimerExpired(Tizen::Base::Runtime::Timer& timer);
+
+ // Handle the call swap notification in multiple call screen
+ void HandleCallSwapN(Tizen::Base::Collection::IList* pCallList);
+
+private:
+ // Create the call buttons panel and add to form
+ result InitializeCallButtonsPanel(void);
+ // Set the correct bitmaps and action listeners for swap button
+ void InitializeSwapButton(void);
+ // Set the action listener for manage conf call button
+ void InitializeManageConfCallButton(void);
+ // Set the correct bitmaps and action listeners for hold button
+ void InitializeHoldButton(void);
+ // Set the state of the hold button according to call state
+ void SetHoldButtonStatus(bool toHoldCall);
+ // This function is used to fetch person details using phone number.
+ void ShowPersonDetails(const Tizen::Base::String& phoneNumber, const Tizen::Base::String& contactLblName, const Tizen::Base::String& nameLblName, bool isSecondCaller, CallInfo* pCallInfo);
+ // Method to show phone number on screen for all calls except conference call.
+ void ShowPhoneNumber(const Tizen::Base::String& phoneNumber, const Tizen::Base::String& contactLblName);
+ // Method to show caller name for all calls.
+ void ShowCallerName(const Tizen::Base::String& callerName, const Tizen::Base::String& nameLblName);
+ // This function draws the caller's photo onto screen.
+ void ShowCallerPhoto(Tizen::Graphics::Bitmap* pPhotoId, bool isSecondCaller);
+ //This function is used to show small Thumbnail size photo of caller.
+ void ShowCallersPhotoThumbnail(const Tizen::Graphics::Bitmap& pPhotoId);
+ // Method to show call duration/state(held) for call in progress
+ void ShowTimerInfo(const Tizen::Base::String& timerLblName, bool isOnHold, long long startTime = 0);
+ // Method to set the show state of all the labels when DTMF keypad is launched
+ void SetShowStateOnKeypad(bool showState);
+ // Method to populate the list shown on "More" option
+ void CreateMoreOptionsMenuList(void);
+ // Method to destroy the list shown on "More" option
+ void DestroyMoreOptionsMenuList(void);
+ //Used to Show DTMF keypad
+ void ShowDTMFKeypad(void);
+ //Used to hide DTMF Keypad
+ void HideDTMFKeypad(void);
+ //Used to show text in text field
+ void SetTextToDTMFTextField(const Tizen::Base::String& dtmfStr);
+
+ //From 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);
+
+ //From 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);
+
+private:
+ //Start time for Active call
+ long long __activeCallStartTime;
+ //Timer used to show call time
+ Tizen::Base::Runtime::Timer* __pActiveCallTimer;
+ //Custom Buttons Panel
+ CallButtonsPanel* __pCallButtonsPanel;
+ DtmfKeyPadPanel* __pDTMFKeypad;
+ //Option Menu List for conference call
+ Tizen::Ui::Controls::ListView* __pMoreOptionsList;
+ Tizen::Ui::Controls::Label* __pMoreOptionsListAnchor;
+ Tizen::Ui::Controls::Label* __pSmallPhotoLabel;
+ CallInfo* __pActiveCallInfo;
+ CallInfo* __pHeldCallInfo;
+};
+
+#endif //_PHN_ACTIVE_CALL_FORM_H_
--- /dev/null
+//
+// 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 PhnAppUtility.h
+ * @brief This is the header file for the %AppUtility class.
+ *
+ * This header file contains the declarations for %AppUtility class.
+ */
+#ifndef _PHN_APP_UTILITY_H_
+#define _PHN_APP_UTILITY_H_
+
+#include <FBase.h>
+#include <FMedia.h>
+
+enum KeypadTextPosition
+{
+ POSITION_LEFT,
+ POSITION_RIGHT,
+ POSITION_CENTER,
+ POSITION_TOP_LEFT,
+ POSITION_TOP_CENTER,
+ POSITION_BOTTOM_LEFT,
+ POSITION_BOTTOM_CENTER
+};
+
+/**
+ * @class AppUtility
+ * @brief This class provides common functionalities across application through static member functions.
+ * Its instance cannot needed.
+ *
+ */
+class AppUtility
+{
+private:
+ AppUtility(void);
+ AppUtility(const AppUtility& obj);
+ virtual ~AppUtility(void);
+
+public:
+ /**
+ * Fetches the String from resources based on
+ * resource id provided by "stringId".
+ */
+ static Tizen::Base::String GetResourceString(const Tizen::Base::String& stringId);
+
+ /**
+ * Fetches the Bitmap from resources and
+ * scales it to specified width and height, if provided.
+ */
+ static Tizen::Graphics::Bitmap* GetBitmapFromResourcesN(const Tizen::Base::String& imagePath, int imgWidth = 0, int imgHeight = 0);
+};
+
+#endif // _PHN_APP_UTILITY_H_
--- /dev/null
+//
+// 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 PhnBaseForm.h
+ * @brief This is the header file for the %BaseForm class.
+ *
+ * This header file contains the declarations for %BaseForm class.
+ */
+#ifndef _PHN_BASE_FORM_H_
+#define _PHN_BASE_FORM_H_
+
+#include <FBase.h>
+#include <FSystem.h>
+#include <FGraphics.h>
+#include <FUi.h>
+#include "PhnITelephonyEventListener.h"
+#include "PhnErrorMsgPopup.h"
+
+class CallInfo;
+class CallPresentationModel;
+
+enum FormType
+{
+ FORMTYPE_OUTGOINGCALL,
+ FORMTYPE_EMERGENCYOUTGOINGCALL,
+ FORMTYPE_INCOMINGCALL,
+ FORMTYPE_ACTIVECALL,
+ FORMTYPE_EMERGENCYACTIVECALL,
+ FORMTYPE_ACTIVECONFCALL,
+ FORMTYPE_CONFCALLLIST,
+ FORMTYPE_ENDCALL,
+ FORMTYPE_MULTIPLECALLS,
+};
+
+/**
+ * @class BaseForm
+ * @brief This class presents a form based UI all call scenarios and provides
+ * common functionalities in all call forms.
+ *
+ */
+class BaseForm
+ : public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::IOrientationEventListener
+ , public ITelephonyEventListener
+ , public IPopupClosedEventListener
+{
+public:
+ BaseForm(FormType formType);
+ virtual ~BaseForm(void);
+ virtual void Initialize(void) = 0;
+
+public:
+ //Used to add user specific code after controls are added to form
+ virtual result OnInitializing(void);
+
+ //From 'Tizen::Ui::IActionEventListener'
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+ //Event Listener methods from ITelephonyEventListener
+ virtual void HandleCallConnected(Tizen::Base::Collection::IListT<CallInfo>& pCallList);
+ virtual void HandleCallDisconnected(bool isLastCall, Tizen::Base::Collection::IListT<CallInfo>& pCallList);
+ virtual void HandleConferenceCall(CallInfo& pCallInfo);
+ virtual void HandleIncomingCall(CallInfo& pCallInfo);
+ virtual void HandleCallSwapOccured(Tizen::Base::Collection::IListT<CallInfo>& pCallList);
+ virtual void HandleConferenceChange(void);
+ virtual void HandleTelephonyError(int errorCode);
+ //Event Listener method from IPopupClosedEventListener
+ virtual void HandlePopupClosed(void);
+ //From IOrientationEventListener
+ virtual void OnOrientationChanged(const Tizen::Ui::Control& source, Tizen::Ui::OrientationStatus orientationStatus);
+protected:
+ FormType __formType;
+ //Ownership
+ ErrorMsgPopup* __pErrorMsgPopup;
+ CallPresentationModel* __pCallPresentor;
+};
+
+#endif // _PHN_BASE_FORM_H_
--- /dev/null
+//
+// 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 PhnCallButtonsPanel.h
+ * @brief This is the header file for the %CallButtonsPanel class.
+ *
+ * This header file contains the declarations for %CallButtonsPanel class.
+ */
+#ifndef _PHN_CALL_BUTTONS_PANEL_H_
+#define _PHN_CALL_BUTTONS_PANEL_H_
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FUi.h>
+#include "PhnBaseForm.h"
+#include "PhnTypes.h"
+
+/**
+ * @class CallButtonsPanel
+ * @brief This class presents a panel based UI for keypads used in active call
+ * and end call scenarios.
+ *
+ */
+class CallButtonsPanel
+ : public Tizen::Ui::Controls::Panel
+{
+private:
+ enum ButtonState
+ {
+ BTN_NORMAL,
+ BTN_PRESS,
+ BTN_DIM,
+ };
+
+public:
+ CallButtonsPanel(void);
+ virtual ~CallButtonsPanel(void);
+
+ bool ConstructPanel(Tizen::Ui::IActionEventListener* pEventListener, FormType parentFormType);
+
+ /**
+ * Overrides this method to provide user-specific initialization code after the control is added to a container.
+ * @remarks OnInitializing() is called when the control is about to be added to a container.
+ * @remarks To cancel adding this control to the parent, return E_FAILURE in this method.
+ * @see OnTerminating()
+ */
+ virtual result OnInitializing(void);
+
+ /**
+ * Overrides this method to provide user-specific termination code.
+ * @return An error code
+ * @remarks OnTerminating() is called right before the control is removed successfully from the container.
+ * @remarks To cancel removing this control from the parent, return E_FAILURE in this method.
+ * @see OnInitializing()
+ */
+ virtual result OnTerminating(void);
+ //Called to change state, when keypad is opened or closed.
+ void SetKeypadButtonState(CommandIds cmdId);
+ //used to set or change speaker button state.
+ void SetSpeakerButtonState(CommandIds cmdId);
+ //used to set or change Mute button state.
+ void SetMuteButtonState(CommandIds cmdId);
+ //used to set the button panel state in end call form based on type of call.
+ void SetEndCallPanelState(bool isEnabled);
+ //Used to enable or disable "Add Call" Button
+ void EnableAddCallButton(bool enable);
+
+protected:
+ // Construct the panel to be shown in "End Call" form
+ result ConstructEndCallPanel(void);
+ // Construct the panel to be shown in "Active Call" form
+ result ConstructActiveCallPanel(void);
+ // Draws the background for the panel
+ result AddBackgroundBitmap(void);
+ // Draws the bitmap at the correct position on the button
+ void SetBitmapsToButton(const Tizen::Base::String& buttonId, const Tizen::Base::String& buttonName, const Tizen::Base::String& imgPath, ButtonState state);
+ // Draws the text at the correct position on the button
+ void SetEnrichedTextToButton(const Tizen::Base::String& buttonName, Tizen::Graphics::Canvas* pCanvas, ButtonState state, int verticalPos);
+ // Adds the action listener for the buttons
+ void AddKeyPadActionListener(const Tizen::Base::String& buttonId, CommandIds cmdId);
+ //Disable the unused buttons for Outgoing / Emergency Forms
+ void DisableKeysForOutgoingCall(void);
+
+ //set the buttons in the panel as the top controls. Chk if its needed in RC2
+ void SetButtonPosition(void);
+
+private:
+ //action listener
+ Tizen::Ui::IActionEventListener* __pActionListener;
+ FormType __parentFormType;
+};
+
+#endif /* _PHN_CALL_BUTTONS_PANEL_H_ */
--- /dev/null
+//
+// 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 PhnCallInfo.h
+ * @brief This is the header file for the %CallInfo class.
+ *
+ * This header file contains the declarations for %CallInfo class.
+ */
+#ifndef _PHN_CALL_INFO_H_
+#define _PHN_CALL_INFO_H_
+
+#include <FBase.h>
+#include <FSocial.h>
+#include "PhnTypes.h"
+
+/**
+ * @class CallInfo
+ * @brief This class holds information about currently active Single party,
+ * mutli-party or conference calls.
+ *
+ */
+class CallInfo
+ : public Tizen::Base::Object
+{
+public:
+ enum CallType
+ {
+ VOICE_CALL,
+ VIDEO_CALL, // Currently not supported
+ };
+
+public:
+ // Default Constructor.
+ CallInfo(void);
+ virtual ~CallInfo(void);
+
+ //returns if a call is conference call or not
+ bool IsConferenceCall(void);
+ //Sets the conferenceflag for a call
+ void SetConference(bool isConferenceCall);
+ //returns if a call is emergency call or not
+ bool IsEmergency(void);
+ //Sets if a call is emergency call
+ void SetEmergency(bool isEmergency);
+ //get the call Handle
+ Tizen::Base::Long* GetCallHandle(void);
+ //Set the call handle
+ void SetCallHandle(unsigned int handle);
+ //Get for Contact Number for the call
+ Tizen::Base::String& GetContactNumber(void);
+ //Set the contact number for the call
+ void SetContactNumber(Tizen::Base::String& contactNumber);
+ //Sets the contact info for the call
+ void SetContactInfo(const Tizen::Social::Contact& contact);
+ //returns if a call is held call or not
+ bool IsOnHold(void);
+ //Sets the held call for the call
+ void SetOnHold(bool onHold);
+ //get the connected time for the call
+ long long GetCallConnectTime(void);
+ //Sets the connected time when call started
+ void SetCallConnectTime(long long connectTime);
+ //get the notified / dialed time when call started
+ long long GetCallNotificationTime(void);
+ //Sets the notified / dialed time when call started
+ void SetCallNotificationTime(long long callNotificationTime);
+ //gets the end call cause
+ Tizen::Base::String& GetEndCallCause(void);
+ //Sets the end call cause
+ void SetEndCallCause(Tizen::Base::String& pEndCause);
+ //gets the caller list for a conference call
+ Tizen::Base::Collection::IListT<CallInfo>* GetCallerList(void);
+ //Adds a call to conference call list
+ result AddCallToCallerList(CallInfo& callInfo);
+ //removes a call from the conference call list
+ result RemoveCallFromCallerList(int index);
+ //returns the number of calls in conference
+ int GetCallerListCount(void);
+ //sets the type of the call for the logs application
+ void SetCalllogType(CallLogType callLogType);
+ //returns the type of the call log
+ CallLogType GetCalllogType(void);
+ /**
+ * This is the equality operator for this CallInfo.
+ * returns true, if both have same value for call handle.
+ *
+ * @param[in] rhs A reference to the %CallInfo instance
+ */
+ bool operator ==(const CallInfo& rhs) const;
+
+ /**
+ * This is the InEquality operator for this CallInfo.
+ * returns true, if value for call handle is different.
+ *
+ * @param[in] rhs A reference to the %CallInfo instance
+ */
+ bool operator !=(const CallInfo& rhs) const;
+
+ /**
+ * This is the assignment operator for this class.
+ * @param[in] rhs A reference to the %CallInfo instance
+ */
+ CallInfo& operator =(const CallInfo& rhs);
+
+ // this funtion fetches the contact person's name.
+ Tizen::Base::String* FetchCallerNameN(void);
+ // this funtion fetches the contact person's photo id, if present.
+ Tizen::Graphics::Bitmap* FetchCallerPhotoN(void);
+ //returns true if number is present in contacts
+ bool IsNumberPresent(void);
+
+private:
+ bool __isConfCall;
+ CallType __callType;
+
+ ///Calllog type information like outgoing, incoming, missed call
+ CallLogType __calllogType;
+
+ //To uniquely identify both Single / Conf. Call.
+ Tizen::Base::Long* __pCallHandle;
+
+ bool __isEmergency;
+
+ //applicable only for Single Call
+ Tizen::Base::String __contactNumber;
+
+ //call is held
+ bool __isOnHold;
+
+ //system time when call connected
+ long long __callConnectTime;
+
+ //system time when the call was notified / dialed
+ long long __callNotificationTime;
+
+ //end call cause
+ Tizen::Base::String* __pEndCallCause;
+
+ //callHandles for individual callers in conf. calls
+ Tizen::Base::Collection::ArrayListT<CallInfo>* __pParticipantCallHandles;
+
+ //used to store previously fetched contact.
+ Tizen::Social::Contact* __pContact;
+};
+
+#endif // _PHN_CALL_INFO_H_
--- /dev/null
+//
+// 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 PhnCallOptionPopup.h
+ * @brief This is the header file for the %CallOptionPopup class.
+ *
+ * This header file contains the declarations for %CallOptionPopup class.
+ */
+#ifndef _PHN_CALL_OPTION_POPUP_H_
+#define _PHN_CALL_OPTION_POPUP_H_
+
+#include <FApp.h>
+#include <FUi.h>
+
+#include "PhnIPopupItemSelectListener.h"
+#include "PhnCallPresentationModel.h"
+#include "PhnTypes.h"
+
+/**
+ * @class CallOptionPopup
+ * @brief This class presents a Popup based UI and functionality for popup
+ * shown for incoming call scenarios.
+ *
+ */
+class CallOptionPopup
+ : public Tizen::Ui::Controls::Popup
+ , public Tizen::Ui::Controls::IListViewItemEventListener
+ , public Tizen::Ui::Controls::IListViewItemProvider
+ , public Tizen::Ui::IActionEventListener
+{
+
+public:
+ CallOptionPopup(IPopupItemSelectListener& listener, CallPresentationModel& callPresenter);
+ virtual ~CallOptionPopup(void);
+ result Initialize(void);
+ // 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
+ void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+
+private:
+ void ConstructListData(void);
+
+private:
+ Tizen::Base::Collection::ArrayList* __pContactList;
+ IPopupItemSelectListener& __popupListener;
+ CallPresentationModel& __callPresenter;
+};
+
+#endif // _PHN_CALL_OPTION_POPUP_H_
--- /dev/null
+//
+// 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 PhnCallPresentationModel.h
+ * @brief This is the header file for the %CallPresentationModel class.
+ *
+ * This header file contains the declarations for %CallPresentationModel class.
+ */
+#ifndef _PHN_CALL_PRESENTATION_MODEL_H_
+#define _PHN_CALL_PRESENTATION_MODEL_H_
+
+#include <FApp.h>
+#include "PhnTypes.h"
+#include "PhnITelephonyEventListener.h"
+#include "PhnCalllogManager.h"
+
+class CallInfo;
+class TelephonyManager;
+class SettingsPresentationModel;
+
+/**
+ * @class CallPresentationModel
+ * @brief CallPresentationModel is Singleton class and acts as interface between
+ * events from other managers and all the views.
+ *
+ */
+class CallPresentationModel: public ITelephonyEventListener
+ , public Tizen::App::IAppControlResponseListener
+{
+public:
+ //create a singleton instance
+ static CallPresentationModel* GetInstance(void);
+
+private:
+ CallPresentationModel(void);
+ CallPresentationModel(CallPresentationModel& presentor);
+ virtual ~CallPresentationModel(void);
+ CallPresentationModel& operator =(const CallPresentationModel& presentor);
+
+
+ result Construct(void);
+ static void CreateInstance(void);
+ static void DestroyInstance(void);
+
+public:
+ //set the telephony event listener
+ void SetTelEventListener(ITelephonyEventListener* pTelEventListener);
+
+ //Dial an outgoing call
+ void DialCall(Tizen::Base::String& contactNumber, bool isEmergency);
+ //End the call
+ void EndCall(Tizen::Base::Long callHandle);
+ void EndCall(Tizen::Base::String& contactNumber);
+ //End the conference call
+ bool EndConferenceCall(void);
+ /**
+ * Hold the call.
+ * @returns true if successful.
+ */
+ bool HoldCall(Tizen::Base::Long callHandle);
+ /**
+ * Unhold the call.
+ * @returns true if successful.
+ */
+ bool UnHoldCall(Tizen::Base::Long callHandle);
+ //Hold conference call
+ bool HoldConferenceCall(void);
+ //UnHold conference call
+ bool ActivateConferenceCall(void);
+ //Join active and held call to conference call.
+ void JoinCall(void);
+ //Swap between active and held call
+ void SwapCalls(void);
+ //Mute or Unmute Call
+ bool SetMuteStatus(bool setMute);
+ //Get the call Muted status
+ bool IsCallMuted(void);
+ //Set speaker to On or Off mode.
+ bool SetSpeakerStatus(bool setSpeaker);
+ //Get the speaker status
+ bool IsSpeakerOn(void);
+ //Send DTMF strings
+ void SendDTMFSignal(Tizen::Base::String& textToBeSent);
+ //Function to get the conference call info
+ CallInfo* GetConferenceCallInfoN(void);
+ //Split this call from the conference call
+ void SplitFromConference(SplitConfCallerCmdIds splitCallerCmdId, Tizen::Base::Collection::IListT<CallInfo>* pConfCallList);
+ //End this single call from the conference call
+ void EndCallFromConference(EndConfCallerCmdIds endCallerCmdId, Tizen::Base::Collection::IListT<CallInfo>* pConfCallList);
+ //returns true, if split operation is allowed. Else, returns false.
+ bool IsSplitAllowed(void);
+ //Accept the incoming call as per the options
+ void AcceptIncomingCall(CallAnswerOptions answerOptions,int callHandle);
+ //Reject an incoming call and send message, if required.
+ bool RejectCall(int callHandle, bool sendMsg, const Tizen::Base::String& contactNumber);
+ //Get the current call count
+ int GetCurrentCallCount(void);
+ //Get the current call list
+ Tizen::Base::Collection::IListT<CallInfo>* GetCallListN(void);
+ //Check if modem and sim initialization is complete.
+ bool CheckSimInitializationIsCompleted();
+ //This function returns true, if contact number is emergency no.
+ bool IsEmergencyNumber(const Tizen::Base::String& phoneNumber, bool isSimInitialized);
+ //Start the alert in case of incoming call
+ void StartAlert(CallInfo& incomingCallInfo);
+ //Stop the alert in case of incoming call
+ void StopAlert(void);
+ //Gets the contact for the given phonenumber.returns null if not present.
+ Tizen::Social::Contact* GetContactN(const Tizen::Base::String& phoneNumber);
+ //Fetch the incoming call details.
+ CallInfo* FetchIncomingCallDetailsN(const Tizen::Base::String& callHandle, const Tizen::Base::String& contactNumber);
+ //Function is used to auto reject the call based on call settings and return true, if rejected.
+ bool CheckIncomingCallToBeRejected(CallInfo* pIncomingCallInfo);
+
+ //Event Listener methods from ITelephonyEventListener
+ virtual void HandleCallConnected(Tizen::Base::Collection::IListT<CallInfo>& pCallList);
+ virtual void HandleCallDisconnected(bool isLastCall, Tizen::Base::Collection::IListT<CallInfo>& pCallList);
+ virtual void HandleConferenceCall(CallInfo& pCallInfo);
+ virtual void HandleIncomingCall(CallInfo& pCallInfo);
+ virtual void HandleCallSwapOccured(Tizen::Base::Collection::IListT<CallInfo>& pCallList);
+ virtual void HandleConferenceChange(void);
+ virtual void HandleTelephonyError(int errorCode);
+ //From IAppControlResponseListener
+ virtual void OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData);
+
+private:
+ static CallPresentationModel* __pInstance;
+ //to forward telephony events
+ ITelephonyEventListener* __pTelEventListener;
+ TelephonyManager* __pTelephonyMgr;
+ SettingsPresentationModel* __pSettingsPresentor;
+ // This is only to save PhoneApp from closing when only 1 incoming call is present and
+ // incoming call is rejected with "Reject With message" by opening Msg AppControl.
+ bool __isMessageAppControlRunning;
+};
+
+#endif // _PHN_CALL_PRESENTATION_MODEL_H_
--- /dev/null
+//
+// 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 PhnCallRejectInfo.h
+ * @brief This is the header file for the %CallRejectInfo class.
+ *
+ * This header file contains the declarations for %CallRejectInfo class.
+ */
+#ifndef _PHN_CALL_REJECT_INFO_H_
+#define _PHN_CALL_REJECT_INFO_H_
+
+#include <FBase.h>
+#include "PhnSettingsConstants.h"
+
+/**
+ * @class CallRejectInfo
+ * @brief This class holds information about currently active Single party calls.
+ *
+ */
+class CallRejectInfo
+ : public Tizen::Base::Object
+{
+
+public:
+ // Default Constructor
+ CallRejectInfo(void);
+ virtual ~CallRejectInfo(void);
+ /**
+ * This is the equality operator for this CallRejectInfo.
+ * returns true, if both have same value for call handle.
+ *
+ * @param[in] rhs A reference to the %CallRejectInfo instance
+ */
+ bool operator ==(const CallRejectInfo& rhs) const;
+
+ /**
+ * This is the InEquality operator for this CallRejectInfo.
+ * returns true, if value for call handle is different.
+ *
+ * @param[in] rhs A reference to the %CallRejectInfo instance
+ */
+ bool operator !=(const CallRejectInfo& rhs) const;
+
+ /**
+ * This is the assignment operator for this class.
+ * @param[in] rhs A reference to the %CallRejectInfo instance
+ */
+ CallRejectInfo& operator =(const CallRejectInfo& rhs);
+
+public:
+ int rowId;
+ Tizen::Base::String phoneNumber;
+ CallRejectMatchCondition rejectCondition;
+ bool isActivated;
+};
+
+#endif // _PHN_CALL_REJECT_INFO_H_
--- /dev/null
+//
+// 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 PhnCallSettingDataService.h
+ * @brief This is the header file for the %CallSettingDataService class.
+ *
+ * This header file contains the declarations for %CallSettingDataService class.
+ */
+#ifndef _PHN_CALL_SETTING_DATA_SERVICE_H_
+#define _PHN_CALL_SETTING_DATA_SERVICE_H_
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FIo.h>
+#include "PhnCallRejectInfo.h"
+#include "PhnSpeedDialInfo.h"
+
+/**
+ * @class CallSettingDataService
+ * @brief This class providing database service APIS to CallRejectInfo Application forms
+ *
+ */
+class CallSettingDataService
+{
+public:
+ /**
+ * Creates an instance of its own.
+ * creates CallSettingDataService(singleton) if it does not exist else returns the existing form
+ */
+ static CallSettingDataService* CreateInstance(void);
+
+ virtual ~CallSettingDataService(void);
+
+ ///Opens the Database.
+ /**
+ * Only one Database is maintained. Its name is hardcoded.
+ * It is assumed that OpenDB is called once while starting the application and CloseDB is called once while closing application.
+ */
+ result OpenDatabase(void);
+
+ ///Closes the Database
+ result CloseDatabase(void);
+
+ ///Creates a database table to store CallRejectInfo information
+ result CreateCallRejectTableDatabase(void);
+ ///Creates a database table to store SpeedDial information
+ result CreateSpeedDialTableDatabase(void);
+ ///Adds a CallRejectInfo to the database
+ result AddCallRejectInfoToDatabase(CallRejectInfo* pNewItem);
+
+ ///Deletes a CallRejectInfo from Database
+ /**
+ * @param an array of indexs of the CallRejectInfos to be deleted
+ * @param number of CallRejectInfo to be deleted
+ */
+ result DeleteCallRejectInfoListFromDatabase(Tizen::Base::Collection::ArrayList* pIndexArray);
+
+ /// Deletes a CallRejectInfo from Database
+ /**
+ * @param index of the CallRejectInfo to be deleted
+ */
+ result DeleteCallRejectInfoFromDatabase(int index);
+
+ ///Updates the CallRejectInfo details(contents, modification time etc) in Database
+ /**
+ * @param index of the CallRejectInfo to be updated
+ * @param a reference to CallRejectInfoInfo structure having the updated info
+ */
+ result UpdateCallRejectInfoDatabase(int aIndex, CallRejectInfo* pCallRejectInfoItem);
+
+ ///Gets one CallRejectInfo from the database
+ /**
+ * @param index of the CallRejectInfo to be fetched
+ * @param a reference to CallRejectInfoInfo structure into which the CallRejectInfo data is to be stored
+ */
+ result GetCallRejectInfoFromDatabase(int aIndex, CallRejectInfo& dbItem);
+
+ /// Gets all the CallRejectInfo from database into the linked list
+ /**
+ * @param a linked list reference to store the result
+ */
+ result GetAllCallRejectInfoFromDatabaseN(Tizen::Base::Collection::ArrayListT<CallRejectInfo>& callRejectInfoList);
+
+ ///Finds the number of entries in the database
+ /**
+ * @param an int reference to store the result
+ */
+ result GetCallRejectCount(int& count);
+
+ ///Searches for a keyword in the CallRejectInfo Contents from Database
+ /**
+ * @param search keyword
+ * @param Linked list to store the result of the search
+ */
+ bool IsCallToBeRejected(Tizen::Base::String& phoneNumber);
+
+ ///Adds a SpeedDialInfo to the database
+ result AddSpeedDialInfoToDatabase(SpeedDialInfo* pNewItem);
+
+ /// Deletes a SpeedDialInfo from Database
+ /**
+ * @param index of the SpeedDialInfo to be deleted
+ */
+ result DeleteSpeedDialInfoFromDatabase(int aIndex);
+ ///Updates the SpeedDialInfo details(contents, modification time etc) in Database
+ /**
+ * @param index of the SpeedDialInfo to be updated
+ * @param a reference to SpeedDialInfo structure having the updated info
+ */
+ result UpdateSpeedDialInfoDatabase(int aIndex, SpeedDialInfo* pSpeedDialInfoItem);
+
+ /// Gets all the SpeedDialInfo from database into the linked list
+ /**
+ * @param a linked list reference to store the result
+ */
+ Tizen::Base::Collection::IMapT<int,SpeedDialInfo>* GetAllSpeedDialInfoMapFromDatabaseN(void);
+
+ //Gets the SpeedDialContact mapped against "aIndex", if any. Else returns null.
+ Tizen::Base::String* GetSpeedDialContactN(int aIndex);
+
+private:
+ /**
+ * Constructor
+ * made private as CallSettingDataService a singleton.
+ */
+ CallSettingDataService(void);
+
+ /**
+ * Copy constructor
+ * made private as CallSettingDataService a singleton.
+ */
+ CallSettingDataService(const CallSettingDataService& dataService);
+
+ /**
+ * Operator =
+ * made private as CallSettingDataService a singleton.
+ */
+ CallSettingDataService& operator =(const CallSettingDataService& dataService);
+
+ //checks if the condition is applicable for the passed phoneNumber
+ bool CheckRejectCondition(Tizen::Base::String& phoneNumber, CallRejectInfo& callRejectInfo);
+
+ ///singleton CallSettingDataService object
+ static CallSettingDataService* __pCallSettingDataService;
+
+ void SyncWithCurrentAddressbookStatus(Tizen::Base::Collection::HashMapT<int,SpeedDialInfo>* pSpeedDialInfoList);
+
+ /// Database object
+ /**
+ * Its made static as we need only one instance of it across different CallSettingDataService object calls.
+ * Its created while calling OpenDB and distructed while calling CloseDB.
+ */
+ static Tizen::Io::Database* __pDatabase;
+
+ ///name of the database
+ const Tizen::Base::String __strDbName;
+
+ /// an Enumerator used to iterate through the results of a database query.
+ Tizen::Io::DbEnumerator* __pEnum;
+
+ /// Used to create and execute database statements(queries)
+ Tizen::Io::DbStatement* __pStmt;
+};
+
+#endif /* _PHN_CALL_SETTING_DATA_SERVICE_H_ */
--- /dev/null
+//
+// 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 PhnCalllogManager.h
+ * @brief This is the header file for the %CallLogManager class.
+ *
+ * This header file contains the declarations for %CallLogManager, %CallLogDetails, %LogListComparer class.
+ */
+
+#ifndef _PHN_CALL_LOG_MANAGER_H_
+#define _PHN_CALL_LOG_MANAGER_H_
+#include "contacts.h"
+#include <FBase.h>
+#include "PhnCallInfo.h"
+#include "PhnTypes.h"
+#include "PhnICalllogChangeListener.h"
+
+class CallLogDetails;
+
+/**
+ * @class LogListComparer
+ * @brief LogListComparer provides comparison functions used to
+ * sort an arraylist of CallLogDetails.
+ *
+ */
+class LogListComparer
+: public Tizen::Base::Collection::IComparerT<CallLogDetails>
+{
+public:
+ LogListComparer() {};
+ virtual ~LogListComparer() {};
+ result Compare (const CallLogDetails& obj1, const CallLogDetails& obj2, int& cmp) const;
+};
+
+/**
+ * @class CallLogDetails
+ * @brief CallLogDetails used to store information call logs.
+ *
+ */
+class CallLogDetails
+: public Tizen::Base::Object
+{
+public:
+ CallLogDetails();
+ virtual ~CallLogDetails();
+ bool operator ==(const CallLogDetails& rhs) const;
+ bool operator !=(const CallLogDetails& rhs) const;
+ CallLogDetails& operator =(const CallLogDetails& rhs);
+
+ void SetCalllogDbId(int id);
+ int GetCalllogDbId(void);
+ void SetCalllogType(contacts_phone_log_type_e type);
+ CallLogType GetCalllogType(void);
+ void SetContactDbId(int id);
+ int GetContactDbId(void);
+ void SetFirstName(char* name);
+ char* GetFirstName(void);
+ void SetLastName(char* name);
+ char* GetLastName(void);
+ void SetDisplayName(char* name);
+ char* GetDisplayName(void);
+ void SetContactImagePath(char* path);
+ char* GetContactImagePath(void);
+ void SetPhoneNumber(char* number);
+ char* GetPhoneNumber(void);
+ void SetShortMessage(char* message);
+ char* GetShortMessage(void);
+ void SetStartTime(time_t time);
+ time_t GetStartTime(void);
+ void SetDuration(int duration);
+ int GetDuration(void);
+ void ConvertTimetoDateTime(void);
+ Tizen::Base::DateTime GetDateTime(void);
+
+private:
+ //TODO: Naming conventions to be followed.
+ //NOTE: Below fields are not owned.
+ int calllog_db_id; /**< Call log entry id */
+ CallLogType calllog_type; /**< Call log entry type */
+ int contact_db_id; /**< Contact's id in database */
+ char* first_name; /**< Contact's first name (also known as given name) */
+ char* last_name; /**< Contact's last name (also known as family name) */
+ char* display_name; /**< Display name (how contact's name should be presented) */
+ char* contact_image_path; /**< Path to image with contact's picture */
+ // contact_number_type_e phone_number_type; /**< Phone number type (i.e.: work, cell) */
+ char* phone_number; /**< Phone number */
+ char* short_message; /**< Short message for this log */
+ time_t startTime; /**< Timestamp of this change */
+ int duration_sec;
+ Tizen::Base::DateTime dateTime;
+
+};
+
+/**
+ * @class CallLogManager
+ * @brief CallLogManager is a singleton class used to save and retrieve call log related data.
+ *
+ */
+class CallLogManager
+{
+public:
+ static CallLogManager* GetInstance(void);
+
+private:
+ CallLogManager(void);
+ virtual ~CallLogManager(void);
+ result Construct(void);
+ static void CreateInstance(void);
+ static void DestroyInstance(void);
+public:
+
+ result AddCallogInfoToDatabase(CallInfo* calllogInfo);
+ void ResetAndNotifyCalllogData(void);
+ //Tizen::Base::Collection::HashMapT<int, CallLogDetails>* GetCallogListByNumberFromDatabaseN(char* number);
+ Tizen::Base::Collection::ArrayListT<CallLogDetails>* GetCallogListByNumberFromDatabaseN(char* number);
+ unsigned long GetDuration(long long start_time);
+ bool GetAllCallogDataFromDatabseCB();
+ bool GetCallogListByNumberFromDatabaseCB(char *number);
+ void changed_db_cb();
+ void CopyDataToCallLogDetails(CallLogDetails* calllogInfo , contacts_record_h record);
+
+ result GetCallLogItemAtIndex(int index, CallLogDetails& calllogInfo);
+
+ Tizen::Base::Collection::IListT<int>* GetCalllogListKeys(void);
+ Tizen::Base::Collection::IListT<CallLogDetails>* GetCalllogListValues(void);
+ Tizen::Base::Collection::IMapEnumeratorT<int, CallLogDetails>* GetCalllogListEnum(void);
+
+ Tizen::Base::Collection::IListT<int>* GetCalllogListByNumKeys(void);
+ Tizen::Base::Collection::IListT<CallLogDetails>* GetCalllogListByNumValues(void);
+ Tizen::Base::Collection::IMapEnumeratorT<int, CallLogDetails>* GetCalllogListByNumEnum(void);
+ void DeleteCalllogByDbId(int dbId);
+ void DeleteAllCalllog(void);
+ int GetAllCalllogCount(void);
+ int GetCalllogCountByNumber(void);
+ //Used to get the latest dialed or incoming number from call log database.
+ Tizen::Base::String* GetLatestCallLogFromDbN(void);
+ //Used to fetch list of call from unknown numbers from logs.
+ Tizen::Base::Collection::HashMapT<int, CallLogDetails>* GetCallogListByUnknownNumberFromDatabaseN(char* number);
+
+
+ void SortCalllogList(void);
+ void SortCalllogListByNumber(void);
+
+ void AddCalllogChangeListener(ICalllogChangeListener& listner );
+ void RemoveCalllogChangeListner(ICalllogChangeListener& listner );
+ void GetCalllogContactName(Tizen::Base::String number,Tizen::Base::String& name);
+private:
+
+ static CallLogManager* __pCallogManager;
+ Tizen::Base::Collection::LinkedListT<CallLogDetails>* __pCalllogList;
+ Tizen::Base::Collection::HashMapT<int,int>* __pCalllogDBIds;
+ //Tizen::Base::Collection::HashMapT<int, CallLogDetails>* __pCalllogListByNumber;
+ Tizen::Base::Collection::ArrayListT<CallLogDetails>* __pCalllogListByNumber;
+ Tizen::Base::Collection::HashMapT<int, CallLogDetails>* __pCalllogUnkownListByNumber;
+ char* __pNumber;
+ Tizen::Base::Collection::ArrayListT<ICalllogChangeListener*>* __pCalllogChangeListerners;
+};
+
+
+#endif // _PHN_CALL_LOG_MANAGER_H_
--- /dev/null
+//
+// 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 PhnCommonUtils.h
+ * @brief This is the header file for the %DialUtil class.
+ *
+ * This header file contains the declarations for commonly used functions.
+ */
+#ifndef _PHN_COMMON_UTILS_H_
+#define _PHN_COMMON_UTILS_H_
+
+#include <FUi.h>
+#include <FBase.h>
+
+enum DialerFontStyle
+{
+ FONT_CALLING_TEXT,
+ FONT_KEYPAD_NUMBER,
+ FONT_KEYPAD_TEXT,
+ FONT_KEYPAD_P,
+ FONT_KEYPAD_PLUS,
+ FONT_KEYPAD_CANCEL,
+ FONT_SUGGESTION_NAME,
+ FONT_SUGGESTION_MOBILE,
+ FONT_SUGGESTION_NUMBER,
+ FONT_SUGGESTION_LIST_NUMBER,
+ FONT_HIGHLIGHT_SEARCH_KEYWORD
+};
+
+//Command Ids used in Dialer tab. Always append new command ids at bottom.
+enum DialCommandIds
+{
+ NUM_KEY1 = 1,
+ NUM_KEY2,
+ NUM_KEY3,
+ NUM_KEY4,
+ NUM_KEY5,
+ NUM_KEY6,
+ NUM_KEY7,
+ NUM_KEY8,
+ NUM_KEY9,
+ PAUSE_KEY,
+ NUM_KEY0,
+ HASH_KEY,
+ VIDEOCALL_KEY,
+ CALL_KEY,
+ CLEAR_KEY,
+ CANCEL_KEY,
+ DIAL_CMD_TOTAL_COUNT,
+};
+
+enum LogContextActionIds
+{
+ IDA_LIST_ELEMENT_CALL = 105,
+ IDA_LIST_ELEMENT_VIDEO_CALL,
+ IDA_LIST_ELEMENT_MESSAGE,
+ IDA_LIST_ELEMENT_DELETE,
+
+};
+
+
+extern const int ID_NAME_STRING;
+extern const int ID_NUMBER_STRING;
+extern const int ID_TIME_STRING;
+extern const int ID_CONTACT_BITMAP;
+extern const int ID_CALLTYPE_BITMAP;
+
+
+extern const int X_TEXT_LINE1_ITEM;
+extern const int Y_TEXT_LINE1_ITEM;
+extern const int H_TEXT_LINE1_ITEM;
+extern const int W_TEXT_LINE1_ITEM;
+
+extern const int X_TEXT_LINE2_ITEM;
+extern const int Y_TEXT_LINE2_ITEM;
+extern const int H_TEXT_LINE2_ITEM;
+extern const int W_TEXT_LINE2_ITEM;
+
+extern const int X_TEXT_TIME_ITEM;
+extern const int Y_TEXT_TIME_ITEM;
+extern const int H_TEXT_TIME_ITEM;
+extern const int W_TEXT_TIME_ITEM;
+
+extern const int X_CONTACT_BITMAP_ITEM;
+extern const int Y_CONTACT_BITMAP_ITEM;
+extern const int H_CONTACT_BITMAP_ITEM;
+extern const int W_CONTACT_BITMAP_ITEM;
+
+extern const int X_CALLTYPE_BITMAP_ITEM;
+extern const int Y_CALLTYPE_BITMAP_ITEM;
+extern const int H_CALLTYPE_BITMAP_ITEM;
+extern const int W_CALLTYPE_BITMAP_ITEM;
+
+extern const int X_DIALER_BTN_TXT;
+extern const int W_DIALER_BTN_NUM_TXT;
+extern const int W_DIALER_BTN_ALPHA_TXT;
+
+/**
+ * @class DialUtil
+ * @brief This class provides static public utility functions to dialer module.
+ *
+ */
+class DialUtil
+{
+private:
+ DialUtil(void){};
+ DialUtil(const DialUtil& obj){};
+ virtual ~DialUtil(void){};
+
+public:
+ //used to get text font for button in dialer tab.
+ static Tizen::Graphics::Font* GetTextFontN(int textFontStyle);
+ //used to get text color for button in dialer tab.
+ static Tizen::Graphics::Color* GetTextColorN(int textColor, int buttonStatus);
+ //Function to check if keyword is numeric. This function assumes that a string starting with digit will be numeric.
+ //If needed, it might be implemented in more generic way to check all characters for digits.
+ static bool IsNumericString(Tizen::Base::String& keyWord);
+ //Sets the 'bgImg' image to 'pCanvas' Canvas, if image is a 9-patch image.
+ static void Draw9PatchToCanvas(Tizen::Graphics::Canvas& pCanvas, const Tizen::Base::String& bgImg);
+ //Used to set image to canvas.
+ static void DrawImageToCanvas(const Tizen::Base::String& image, Tizen::Graphics::Dimension imageDimention, Tizen::Graphics::Canvas& pCanvas, int pos);
+ //Used to convert text to Enriched text and set it to canvas.
+ static void DrawTextToCanvas(const Tizen::Base::String& buttonText1, int fontSize, Tizen::Graphics::Canvas& pCanvas, int pos, int buttonStatus);
+ //Used to set nnormal, pressed image to button.
+ static void DrawCanvasToButton(Tizen::Graphics::Canvas* pCanvasNormal, Tizen::Graphics::Canvas* pCanvasPressed, Tizen::Ui::Controls::Button* pButton);
+ //Used to convert provided digit to its equivalent String instance.
+ static Tizen::Base::String ConvertDialedNumberToString(int dialNumber);
+ //Function used to fetch a list of possible names mapped to 'nextCharPos'.
+ static Tizen::Base::Collection::IList* FetchPossibleNamesListN(const Tizen::Base::String& prevSearchStr, int nextCharPos);
+ //Function used to convert substring of 'name' to keys typed, eg. Ani -> 264
+ static void ConvertNameToNumericKeys(Tizen::Base::String& subContactName, Tizen::Base::String& possibleKeysTyped);
+};
+
+#endif /* _PHN_COMMON_UTILS_H_ */
--- /dev/null
+//
+// 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 PhnConfCallerListForm.h
+ * @brief This is the header file for the %ConfCallerListForm class.
+ *
+ * This header file contains the declarations for %ConfCallerListForm class.
+ */
+#ifndef _PHN_CONF_CALLER_LIST_FORM_H_
+#define _PHN_CONF_CALLER_LIST_FORM_H_
+
+#include <FBase.h>
+#include <FApp.h>
+#include <FUi.h>
+#include "PhnBaseForm.h"
+#include "PhnTypes.h"
+
+class CallInfo;
+
+/**
+ * @class ConfCallerListForm
+ * @brief This class presents a form based UI for participants list of conference call.
+ *
+ */
+class ConfCallerListForm
+ : public BaseForm
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public Tizen::Base::Runtime::ITimerEventListener
+{
+public:
+ ConfCallerListForm(void);
+ virtual ~ConfCallerListForm(void);
+ //From BaseForm
+ virtual void Initialize(void);
+
+public:
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ //Disable all the elements
+ void DisableAllControls(void);
+ //
+ // From 'Container'.
+ // Called when the container needs to draw itself. @n
+ // Users can override this method to display user-specific drawings. @n
+ // This method is called after the container has drawn itself, but just before the container draws its child controls.
+ //
+ virtual result OnDraw(void);
+ // Handle change in conf call list
+ void HandleCallChange(void);
+
+ virtual void OnTimerExpired(Tizen::Base::Runtime::Timer& timer);
+
+private:
+ // Add the action listener for the buttons
+ void AddActionListener(const Tizen::Base::String& keyName, CommandIds cmdId);
+ // Activate the panels to be shown according to the number of calls
+ void ActivatePanels(void);
+ // Activate each individual element in the panel
+ void ActivatePanelAndAddActionListener(const Tizen::Base::String& panelName, const Tizen::Base::String& lineLabelName, const Tizen::Base::String& splitButtonName, const Tizen::Base::String& endButtonName, const Tizen::Base::String& callerLabelName, SplitConfCallerCmdIds splitCmdId, EndConfCallerCmdIds EndCmdId, const Tizen::Base::String& displayName);
+ // Method to show call duration/state(held) for call in progress
+ void ShowTimerInfo(const Tizen::Base::String& timerLblName, long long startTime = 0);
+ // Method to set "Hold" Button status
+ void SetHoldButtonStatus(bool isCallOnHold);
+
+private:
+ CallInfo* __pConfCallInfo;
+ //Timer used to show call time
+ Tizen::Base::Runtime::Timer* __pConfCallTimer;
+};
+
+#endif //_PHN_CONF_CALLER_LIST_FORM_H_
--- /dev/null
+//
+// 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 PhnCustomItemBgElement.h
+ * @brief This is the header file for the %CustomItemBgElement class.
+ *
+ * This header file contains the declarations for %CustomItemBgElement class.
+ */
+#ifndef _PHN_CUSTOM_ITEM_BG_ELEMENT_H_
+#define _PHN_CUSTOM_ITEM_BG_ELEMENT_H_
+
+#include <FApp.h>
+#include <FUi.h>
+
+/**
+ * @class CustomItemBgElement
+ * @brief This class presents a custom drawing for list item in settings forms.
+ *
+ */
+class CustomItemBgElement
+ : public Tizen::Ui::Controls::ICustomElement
+{
+public:
+ CustomItemBgElement(void);
+ virtual ~CustomItemBgElement(void);
+
+ //From ICustomElement
+ virtual bool OnDraw(Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& rect, Tizen::Ui::Controls::ListItemDrawingStatus status);
+};
+
+#endif // _PHN_CUSTOM_ITEM_BG_ELEMENT_H_
--- /dev/null
+//
+// 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 PhnDialAppForm.h
+ * @brief The Dial application form
+ *
+ */
+#ifndef _PHN_DIAL_APP_FORM_H_
+#define _PHN_DIAL_APP_FORM_H_
+
+#include <FBase.h>
+#include <FUi.h>
+
+/**
+ * @class DialAppForm
+ * @brief This class presents a main form for Phone application.
+ *
+ */
+class DialAppForm
+ : public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::Controls::IFormBackEventListener
+{
+public:
+ DialAppForm(void);
+ virtual ~DialAppForm(void);
+ bool Initialize(void);
+
+public:
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+
+protected:
+ static const int ID_HEADER_DIALER;
+ static const int ID_HEADER_LOGS;
+
+private:
+ ///Form Footer
+ Tizen::Ui::Controls::Footer* __pFormFooter;
+};
+
+#endif //_PHN_DIAL_APP_FORM_H_
--- /dev/null
+//
+// 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 PhnDialContactInfo.h
+ * @brief This is the header file for the %DialContactInfo class.
+ *
+ * This header file contains the declarations for %DialContactInfo class.
+ */
+#ifndef _PHN_DIAL_CONTACT_INFO_H_
+#define _PHN_DIAL_CONTACT_INFO_H_
+
+#include <FSocial.h>
+
+/**
+ * @class DialContactInfo
+ * @brief This is a light-weight class used to provides display name,
+ * phone number and Thumbnail using simple methods.
+ *
+ */
+class DialContactInfo: public Tizen::Base::Object
+{
+public:
+ DialContactInfo(void);
+ virtual ~DialContactInfo(void);
+ /*
+ //Used to create new 'DialContactInfo' object which is clone of 'this' object.
+ DialContactInfo* CloneN(void);
+ */
+ //display name
+ void SetDisplayName(Tizen::Base::String& pDisplayName);
+ Tizen::Base::String& GetDisplayName(void) const;
+ //phone number
+ void SetPhoneNumber(Tizen::Base::String& pPhoneNumber);
+ Tizen::Base::String& GetPhoneNumber(void) const;
+ //matched search string
+ void AddSearchKey(Tizen::Base::String& pSearchString);
+ void RemoveSearchKey(int index);
+ void ReplaceSearchKey(int index, Tizen::Base::String& pSearchString);
+ //Used to get the first matched search key
+ Tizen::Base::String* GetSearchKey(void);
+ Tizen::Base::Collection::IList* GetSearchKeyList(void);
+ //Used to transfer ownership of 'pBitmap' to 'DialContactInfo'.
+ void SetThumbnail(Tizen::Graphics::Bitmap* pBitmap);
+ Tizen::Graphics::Bitmap* GetThumbnailN(void) const;
+ //Coll Log Db Id
+ void SetCallLogDbId(int callLogDbId);
+ int GetCallLogDbId(void);
+ //Checks whether the value of the specified instance is equal to the value of the current instance of %Object.
+ virtual bool Equals(const Object& obj) const;
+ /**
+ * Used to return new 'DialContactInfo' object with the same state
+ * as the object on which this function is called.
+ */
+ DialContactInfo* CloneN(void);
+
+private:
+ //Copy Constructor - we dont want any bitwise copy.
+ DialContactInfo(const DialContactInfo& obj);
+
+private:
+ int __callLogDbId;
+ Tizen::Base::String* __pDisplayName;
+ Tizen::Base::String* __pPhoneNumber;
+ Tizen::Graphics::Bitmap* __pThumbnail;
+ Tizen::Base::Collection::ArrayList* __pSearchKeyList;
+};
+
+#endif // _PHN_DIAL_CONTACT_INFO_H_
--- /dev/null
+//
+// 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 PhnDialPresentationModel.h
+ * @brief This is the header file for the %DialPresentationModel class.
+ *
+ * This header file contains the declarations for %DialPresentationModel class.
+ */
+#ifndef PHNDIALPRESENTATIONMODEL_H_
+#define PHNDIALPRESENTATIONMODEL_H_
+
+#include <FApp.h>
+#include <FBase.h>
+#include "PhnRetrieveSuggestionsTasks.h"
+
+class DialContactInfo;
+class DialTabDialer;
+class SettingsManager;
+
+/**
+ * @class DialPresentationModel
+ * @brief This class acts as an interface between the Dialer Screen and core engine.
+ */
+class DialPresentationModel
+ : public Tizen::App::IAppControlResponseListener
+ , public ISuggestionsRetrievedEventListener
+{
+public:
+ DialPresentationModel(DialTabDialer& pParentPanel);
+ ~DialPresentationModel();
+
+ /**
+ * Used to fetch the contacts suggestion list.
+ * Starts a new thread for async search of contacts, call logs with phone number and name.
+ */
+ bool FetchSuggestionList(const Tizen::Base::String& searchString);
+ //Used to fetch Speed dial mapping for pressed button, if present.
+ Tizen::Base::String* FetchSpeedDialNumberN(int actionId);
+ //Used to fetch contact at specified index from search result list.
+ DialContactInfo* GetSuggestionAtIndex(int index);
+ //Used to fetch the no. of suggested contacts in search result list.
+ int GetNumberOfSuggestions(void);
+ //clear search results
+ void ClearSearchResults(void);
+ //Used to open contacts "Add" AppControl
+ void AddContactsToAddressBook(Tizen::Base::String& contactNumber);
+ //Used to open Messaging "Compose" AppControl
+ void OpenMessagingAppControl(Tizen::Base::String& contactNumber);
+ //Used to fetch latest dialed or caller number from call logs
+ Tizen::Base::String* FetchLatestNumberFromLogsN(void);
+
+protected:
+ //Called when the application control is completed.
+ virtual void OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData);
+ // Called when the retrieval of contact suggestion list is completed
+ virtual void HandleContactsRetrievalCompleted(Tizen::Base::Collection::IList* pContactsList);
+
+private:
+ SettingsManager* __pSettingsManager;
+ Tizen::Base::Collection::ArrayList* __pNumberSuggestionList;
+ //Used to Control access to __pNumberSuggestionList
+ Tizen::Base::Runtime::Mutex __mutex;
+ Tizen::Base::String* __pSearchString;
+ /// Worker thread
+ Tizen::Base::Runtime::Thread* __pSearchThread;
+ RetrieveContactsListTask* __pAsyncSearchTask;
+ DialTabDialer& __pParentPanel;
+};
+
+#endif /* PHNDIALPRESENTATIONMODEL_H_ */
--- /dev/null
+//
+// 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 PhnDialerKeypad.h
+ * @brief This is the header file for the %DialerKeypad class.
+ *
+ * This header file contains the declarations for %DialerKeypad class.
+ */
+#ifndef _PHN_DIALER_KEYPAD_H_
+#define _PHN_DIALER_KEYPAD_H_
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FUi.h>
+
+/**
+ * @class DialerKeypad
+ * @brief This class presents a Panel based UI for keypads used in Dialer Tab.
+ *
+ */
+class DialerKeypad
+ : public Tizen::Ui::Controls::Panel
+{
+private:
+ enum ButtonState
+ {
+ BTN_NORMAL,
+ BTN_PRESS,
+ BTN_DIM,
+ };
+
+public:
+ enum DialerState
+ {
+ DIALER_STATE_FIRST_SCENE = 0,
+ DIALER_STATE_NORMAL_APPCONTROL,
+ DIALER_STATE_EMERGENCY_APPCONTROL,
+ DIALER_STATE_ADD_CALL,
+ };
+
+ DialerKeypad(DialerState openedState);
+ virtual ~DialerKeypad(void);
+
+ bool ConstructPanel(Tizen::Ui::IActionEventListener* pActionListener, Tizen::Ui::ITouchLongPressGestureEventListener* pLongTapListener);
+ /**
+ * Overrides this method to provide user-specific initialization code after the control is added to a container.
+ * @remarks OnInitializing() is called when the control is about to be added to a container.
+ * @remarks To cancel adding this control to the parent, return E_FAILURE in this method.
+ * @see OnTerminating()
+ */
+ virtual result OnInitializing(void);
+ /**
+ * Overrides this method to provide user-specific termination code.
+ * @return An error code
+ * @remarks OnTerminating() is called right before the control is removed successfully from the container.
+ * @remarks To cancel removing this control from the parent, return E_FAILURE in this method.
+ * @see OnInitializing()
+ */
+ virtual result OnTerminating(void);
+
+private:
+ // Set Bitmap to the Buttons in panel.
+ void SetBitmapToKeypadButtons(void);
+ //Adds Action listener and Long press detectors to buttons.
+ void AddListenersToButtons(void);
+ //used to determine whether to show cancel button
+ bool IsShowCancelButton(void);
+ //used to determine whether to show voice mail
+ bool IsShowVoiceMailIcon(void);
+ //used to determine whether to show video call button
+ bool IsShowVideoCallButton(void);
+
+private:
+ //Acts as Action listener & LongPress Gesture Listener
+ Tizen::Ui::IActionEventListener* __pParentActionListener;
+ Tizen::Ui::ITouchLongPressGestureEventListener* __pParentLongTapListener;
+ //Long press gesture detectors for buttons
+ Tizen::Base::Collection::ArrayList* __pLongPressDetectors;
+ //Identifies dialer keypad opened from which state
+ DialerState __openedState;
+};
+
+#endif // _PHN_DIALER_KEYPAD_H_
--- /dev/null
+//
+// 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 PhnDtmfKeypadPanel.h
+ * @brief This is the header file for the %DtmfKeyPadPanel class.
+ *
+ * This header file contains the declarations for %DtmfKeyPadPanel class.
+ */
+#ifndef _PHN_DTMF_KEYPAD_PANEL_H_
+#define _PHN_DTMF_KEYPAD_PANEL_H_
+
+#include <FBase.h>
+#include <FUi.h>
+
+/**
+ * @class DtmfKeyPadPanel
+ * @brief This class presents a panel based UI for DTMF keypad
+ * shown while active call scenarios.
+ *
+ */
+class DtmfKeyPadPanel
+ : public Tizen::Ui::Controls::Panel
+{
+public:
+ DtmfKeyPadPanel(void);
+ virtual ~DtmfKeyPadPanel(void);
+ bool Initialize(Tizen::Ui::IActionEventListener* pEventListener,Tizen::Graphics::Rectangle& boundsRect);
+
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+
+protected:
+
+ enum DialerFontStyle
+ {
+ FONT_CALLING_TEXT,
+ FONT_KEYPAD_NUMBER,
+ FONT_KEYPAD_TEXT,
+ FONT_KEYPAD_P,
+ FONT_KEYPAD_PLUS,
+ FONT_KEYPAD_CANCEL
+ };
+ //Add action listener.
+ void AddListenersToButtons();
+ result SetBackgroundtoButton();
+ // Draws the bitmap at the correct position on the buttons
+ void SetBitmapsToButton(Tizen::Base::String& buttonId,const Tizen::Base::String& buttonText,int actionID);
+ //Constructs the canvas and adds the bitmap to the buttons
+ result ConstructButtonCanvas(Tizen::Graphics::Canvas& pCanvas, Tizen::Ui::Controls::Button* pButton, const Tizen::Base::String& bgImg,int buttonStatus);
+ // Draws the image at the correct position on the button
+ void DrawImageToCanvas(const Tizen::Base::String& image, Tizen::Graphics::Dimension imageDimention, Tizen::Graphics::Canvas& pCanvas, int pos);
+ // Draws the text at the correct position on the button
+ void DrawTextToCanvas(const Tizen::Base::String& buttonText1, int fontSize, Tizen::Graphics::Canvas& pCanvas, int pos, int buttonStatus);
+ // retrieves the position for the text/image in the button
+ void GetPositionToDraw(Object* item, Tizen::Graphics::Canvas* pCanvas, int itemType, int pos, Tizen::Graphics::Point* itemPos);
+ // Gets the font based on the style
+ Tizen::Graphics::Font* GetTextFontN(int textFontStyle);
+ // Get the color to be set for the text
+ Tizen::Graphics::Color* GetTextColorN(int textColor, int buttonStatus);
+
+private:
+ //action listener
+ Tizen::Ui::IActionEventListener* __pActionListener;
+};
+
+#endif // _PHN_DTMF_KEYPAD_PANEL_H_
--- /dev/null
+//
+// 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 PhnEmergencyDialForm.h
+ * @brief This is the header file for the EmergencyDialForm class.
+ *
+ * This header file contains the declarations for EmergencyDialForm class.
+ */
+#ifndef _PHN_EMERGENCY_DIAL_FORM_H_
+#define _PHN_EMERGENCY_DIAL_FORM_H_
+
+#include <FBase.h>
+#include <FUi.h>
+
+class DialerKeypad;
+class ErrorMsgPopup;
+
+/**
+ * @class EmergencyDialForm
+ * @brief This class presents Emergency dial form.
+ *
+ */
+class EmergencyDialForm
+ : public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public Tizen::Ui::IActionEventListener
+ , public IPopupClosedEventListener
+ , public Tizen::Ui::ITouchLongPressGestureEventListener
+{
+public:
+ EmergencyDialForm(void);
+ virtual ~EmergencyDialForm(void);
+ bool Initialize(void);
+
+public:
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+
+ //Event Listeners from TouchLongPressGestureDetector
+ // Called when a long press gesture is detected.
+ virtual void OnLongPressGestureDetected(Tizen::Ui::TouchLongPressGestureDetector& gestureDetector);
+ //Called when a long press detection is canceled.
+ virtual void OnLongPressGestureCanceled(Tizen::Ui::TouchLongPressGestureDetector& gestureDetector){}
+
+ //Event Listener method from IPopupClosedEventListener
+ virtual void HandlePopupClosed(void);
+
+private:
+ //Used to construct dialer keypad.
+ void ConstructKeypad(void);
+ //Used to show formatted contact number in text field.
+ void ShowFormattedText(Tizen::Ui::Controls::EditField* pEditField, int actionId);
+ //Used to prepare for MOCall and switch to emergency outgoing call screen.
+ void SwitchToOutgoingCallScreen(const Tizen::Base::String& contactNumber);
+
+private:
+ DialerKeypad* __pDialKeypad;
+ ErrorMsgPopup* __pErrorMsgPopup;
+};
+
+#endif // _PHN_EMERGENCY_DIAL_FORM_H_
--- /dev/null
+//
+// 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 PhnEndCallForm.h
+ * @brief This is the header file for the %EndCallForm class.
+ *
+ * This header file contains the declarations for %EndCallForm class.
+ */
+#ifndef _PHN_END_CALL_FORM_H_
+#define _PHN_END_CALL_FORM_H_
+
+#include <FBase.h>
+#include <FApp.h>
+#include <FUi.h>
+#include "PhnBaseForm.h"
+#include "PhnTypes.h"
+#include "PhnIAppStateChangeListner.h"
+
+class CallButtonsPanel;
+
+/**
+ * @class EndCallForm
+ * @brief This class presents a form based UI for end call scenarios.
+ *
+ */
+class EndCallForm
+ : public BaseForm
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public Tizen::Base::Runtime::ITimerEventListener
+ , public Tizen::App::IAppControlResponseListener
+ , public IAppStateChangeListener
+{
+public:
+ EndCallForm(void);
+ virtual ~EndCallForm(void);
+ //From BaseForm
+ virtual void Initialize(void);
+
+public:
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ /**
+ * Called when the container needs to draw itself. @n
+ * Users can override this method to display user-specific drawings. @n
+ * This method is called after the container has drawn itself, but just before the container draws its child controls.
+ */
+ virtual result OnDraw(void);
+
+ virtual void OnTimerExpired(Tizen::Base::Runtime::Timer& timer);
+
+ /**
+ * Called when the application control is completed.
+ * @param[in] providerId The provider ID
+ * @param[in] operationId The operation ID used in application control invocation
+ * @param[in] pResultList The list of callback strings of application control
+ * @remarks The specified @c pResultList provides the result code for the first array element.
+ * @remarks When the invoked application control is terminated without sending a result,
+ * then this method is invoked with @c pResultList and it contains App::APPCONTROL_RESULT_TERMINATED.
+ * @remarks Switching forms using Tizen::Ui::Controls::Frame::SetCurrentForm() in this listener disables the upcoming form
+ * (UiApp::OnForeground()). If UiApp::OnForeground() is being used in the application logic,
+ * it is recommended to avoid switching forms in this listener.
+ * @see Tizen::App::AppControl
+ */
+ virtual void OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData);
+ //Used to set the contact button state in the end call form
+ void SetContactButtonState(bool showState);
+ //Called when App comes to foreground
+ virtual void OnForeground(void);
+ //Called when App goes to background
+ virtual void OnBackground(void);
+
+private:
+ //initialise the end call panel
+ void InitializeCallButtonsPanel(void);
+ //Add the action listener for the buttons
+ void AddKeyPadActionListener(const Tizen::Base::String& keyName, CommandIds cmdId);
+ // Method to show phone number on screen for all calls except conference call.
+ void ShowPhoneNumber(const Tizen::Base::String& phoneNumber, const Tizen::Base::String& lblName);
+ // Method to show caller name and photo for all calls.
+ void ShowPersonDetails(const Tizen::Base::String& phoneNumber, const Tizen::Base::String& nameLblName, const Tizen::Base::String& photoLblName, CallInfo* pCallInfo);
+ // Method to show thumbnail
+ void ShowCallersPhotoThumbnail(const Tizen::Graphics::Bitmap& pPhotoId);
+ //private method to handle whether to close App or goto initial scene, after no more active calls are left.
+ void HandleLastCallCompletion(void);
+
+private:
+ //Custom Buttons Panel
+ CallButtonsPanel* __pCallButtonsPanel;
+ Tizen::Base::String* __pContactNumber;
+ //Timer used to show End call scene for 3 sec
+ Tizen::Base::Runtime::Timer* __pEndCallEventTimer;
+ Tizen::Ui::Controls::Label* __pSmallPhotoLabel;
+ bool __isMsgAppControlLaunched;
+ bool __isContactAppControlLaunched;
+};
+
+#endif // _PHN_END_CALL_FORM_H_
--- /dev/null
+//
+// 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 PhnErrorMsgPopup.h
+ * @brief This is the header file for the %ErrorMsgPopup class.
+ *
+ * This header file contains the declarations for %ErrorMsgPopup class.
+ */
+#ifndef _PHN_ERROR_MSG_POPUP_H_
+#define _PHN_ERROR_MSG_POPUP_H_
+
+#include <FBase.h>
+#include <FUi.h>
+
+/**
+ * @class IPopupClosedEventListener
+ * @brief This interface is used to notify the popup is closed event to Scenes.
+ *
+ */
+class IPopupClosedEventListener
+{
+public:
+ virtual ~IPopupClosedEventListener(void){};
+ // Called when the error message Pop-up is closed.
+ virtual void HandlePopupClosed(void) = 0;
+};
+
+/**
+ * @class ErrorMsgPopup
+ * @brief This class shows message popup in error condition.
+ *
+ */
+class ErrorMsgPopup: public Tizen::Ui::Controls::Popup
+ ,public Tizen::Base::Runtime::ITimerEventListener
+{
+public:
+ ErrorMsgPopup(IPopupClosedEventListener* pEventListener);
+ virtual ~ErrorMsgPopup(void);
+ /**
+ * Function is used to show error message popup
+ * based on the error code received.
+ */
+ void ShowErrorMsgPopupN(int errorCode);
+
+ //From ITimerEventListener
+ virtual void OnTimerExpired(Tizen::Base::Runtime::Timer& timer);
+
+private:
+ void ConstructPopup(int errorCode);
+ //Function is used to fetch error messages based on error code
+ Tizen::Base::String FetchErrorMessage(int errorCode);
+ //draws and shows the popup on screen
+ void ShowPopup(void);
+
+private:
+ //Timer used to show message
+ Tizen::Base::Runtime::Timer* __pTimer;
+ //Listener to popup closed event.
+ IPopupClosedEventListener* __pEventListener;
+ //used to close the popup
+ int __popupModalResult;
+};
+
+#endif // _PHN_ERROR_MSG_POPUP_H_
--- /dev/null
+//
+// 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 PhnIAppStateChangeListner.h
+ * @brief This is the header file for the IPhnIAppStateChangeListner class.
+ */
+
+#ifndef _PHN_STATE_CHANGE_LISTNER_H_
+#define _PHN_STATE_CHANGE_LISTNER_H_
+
+#include <FBase.h>
+
+class IAppStateChangeListener
+ : public Tizen::Base::Object
+{
+public:
+ virtual ~IAppStateChangeListener(void) {}
+
+ virtual void OnForeground(void) = 0;
+ virtual void OnBackground(void) = 0;
+};
+
+#endif /* _PHN_STATE_CHANGE_LISTNER_H_ */
--- /dev/null
+//
+// 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 PhnICalllogChangeListener.h
+ * @brief This is the header file for the %ICalllogChangeListener class.
+ *
+ * This header file contains the declarations for %ICalllogChangeListener class.
+ */
+#ifndef _PHN_CALL_LOG_CHANGE_LISTENER_H_
+#define _PHN_CALL_LOG_CHANGE_LISTENER_H_
+
+/**
+ * @class ICalllogChangeListener
+ * @brief This class presents call back function from call log module.
+ *
+ */
+class ICalllogChangeListener
+{
+public:
+ virtual ~ICalllogChangeListener(void){};
+
+ virtual void OnCalllogChanged(void) = 0;
+
+};
+
+#endif //_PHN_CALL_LOG_CHANGE_LISTENER_H_
--- /dev/null
+//
+// 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 PhnIPopupItemSelectListener.h
+ * @brief This is the header file for the %IPopupItemSelectListener class.
+ *
+ * This header file contains the declarations for %IPopupItemSelectListener class.
+ */
+#ifndef _IPOPUP_ITEM_SELECT_LISTENER_H_
+#define _IPOPUP_ITEM_SELECT_LISTENER_H_
+
+#include <FBaseRtIEventListener.h>
+
+/**
+ * @class IPopupItemSelectListener
+ * @brief Class IPopupItemSelectListener is listener for popup object deletion.
+ *
+ */
+class IPopupItemSelectListener
+ : public Tizen::Base::Runtime::IEventListener
+{
+public:
+ /**
+ * This is the destructor for this class.
+ */
+ virtual ~IPopupItemSelectListener(void) {}
+
+ /**
+ * On Item selected.
+ */
+ virtual void OnItemSelected(int itemIndex) = 0;
+};
+
+#endif // _IPOPUP_ITEM_SELECT_LISTENER_H_
--- /dev/null
+//
+// 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 PhnISettingsEventListener.h
+ * @brief This is the header file for the %ISettingsEventListener class.
+ *
+ * This header file contains the declarations for %ISettingsEventListener class.
+ */
+#ifndef _PHN_I_SETTINGS_EVENT_LISTENER_H_
+#define _PHN_I_SETTINGS_EVENT_LISTENER_H_
+
+#include "PhnSettingsConstants.h"
+
+/**
+ * @class ISettingsEventListener
+ * @brief This interface is used to listen to events from Telephony Manager.
+ *
+ */
+class ISettingsEventListener
+{
+public:
+ virtual ~ISettingsEventListener(void){};
+
+ //Handle the response for getCallWaiting request
+ virtual void HandleGetCallWaitingResponse(bool isCallSuccessful, bool callWaitingActivated) = 0;
+ //Handle the response for setCallWaiting request
+ virtual void HandleSetCallWaitingResponse(bool isCallSuccessful, bool isCallWaitingEnabled) = 0;
+ //Handle the response for getCallForwarding request
+ virtual void HandleGetCallForwardResponse(bool isCallSuccessful, CallForwardCondition callFwdCondition, const Tizen::Base::String& callFwdNumber, bool callForwardActivated, int noReplyWaitTime) = 0;
+ //Handle the response for setCallForwarding request
+ virtual void HandleSetCallForwardResponse(bool isCallSuccessful, CallForwardCondition callFwdCondition, const Tizen::Base::String& callFwdNumber, bool isCallForwardActivated, int noReplyWaitTime) = 0;
+ //Handle the response for setcallBarring request
+ virtual void HandleSetCallBarringResponse(bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated) = 0;
+ //Handle the response for getCallBarring request
+ virtual void HandleGetCallBarringResponse(bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated) = 0;
+};
+
+#endif // _PHN_I_SETTINGS_EVENT_LISTENER_H_
--- /dev/null
+//
+// 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 PhnITelephonyEventListener.h
+ * @brief This is the header file for the %ITelephonyEventListener class.
+ *
+ * This header file contains the declarations for %ITelephonyEventListener class.
+ */
+#ifndef _PHN_I_TELEPHONY_EVENT_LISTENER_H_
+#define _PHN_I_TELEPHONY_EVENT_LISTENER_H_
+
+#include "PhnCallInfo.h"
+
+/**
+ * @class ITelephonyEventListener
+ * @brief This interface is used to listen to events from Telephony Manager.
+ *
+ */
+class ITelephonyEventListener
+{
+public:
+ virtual ~ITelephonyEventListener(void){};
+
+ /**
+ * Called when the dialed call / incoming call is accepted.
+ * Implement this to handle voice call events.
+ * @param[out] pCallList - list of active calls.
+ */
+ virtual void HandleCallConnected(Tizen::Base::Collection::IListT<CallInfo>& pCallList) = 0;
+
+ /**
+ * This function is called when a call is disconnected. It returns the list of active calls, if any is existing.
+ * Otherwise it returns the last ended call along with call duration and cause to show.
+ *
+ * @param[out] isLastCall - true, if this call was last call.
+ * @param[out] pCallList - list of calls - ended Call if last call, otherwise currently active call.
+ */
+ virtual void HandleCallDisconnected(bool isLastCall, Tizen::Base::Collection::IListT<CallInfo>& pCallList) = 0;
+
+ /**
+ * This function is called when two calls are joined and a conference call is setup.
+ *
+ * @param[in] pCallInfo - The conference call information data.
+ */
+ virtual void HandleConferenceCall(CallInfo& pCallInfo) = 0;
+
+ /**
+ * This function is called when incoming call is received.
+ *
+ * @param[in] pCallInfo - The conference call information data.
+ */
+ virtual void HandleIncomingCall(CallInfo& pCallInfo) = 0;
+
+ /**
+ * Called when the dialed call / incoming call is accepted.
+ * Implement this to handle voice call events.
+ * @param[out] pCallList - list of active calls.
+ */
+ virtual void HandleCallSwapOccured(Tizen::Base::Collection::IListT<CallInfo>& pCallList) = 0;
+
+ /**
+ * Called when the conference list changes.
+ * Implement this to handle voice call events.
+ * @param[out] pCallInfo - The conference call information data.
+ */
+ virtual void HandleConferenceChange(void) = 0;
+
+ /**
+ * Telephony event callback sent to listeners to handle
+ * error and show customized error message.
+ * @ param[out] errorCode - error cause returned by SLP TAPI.
+ */
+ virtual void HandleTelephonyError(int errorCode) = 0;
+};
+
+#endif // _PHN_I_TELEPHONY_EVENT_LISTENER_H_
--- /dev/null
+//
+// 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 PhnIncomingCallForm.h
+ * @brief This is the header file for the %IncomingCallForm class.
+ *
+ * This header file contains the declarations for %IncomingCallForm class.
+ */
+#ifndef _PHN_INCOMING_CALL_FORM_H_
+#define _PHN_INCOMING_CALL_FORM_H_
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FUi.h>
+#include "PhnBaseForm.h"
+#include "PhnTypes.h"
+#include "PhnIPopupItemSelectListener.h"
+#include "PhnCallOptionPopup.h"
+
+/**
+ * @class IncomingCallForm
+ * @brief This class presents a form based UI for incoming call scenarios.
+ *
+ */
+class IncomingCallForm
+ : public BaseForm
+ , public Tizen::Ui::Controls::ITableViewItemEventListener
+ , public Tizen::Ui::Controls::ITableViewItemProvider
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public Tizen::Ui::ITouchEventListener
+ , public IPopupItemSelectListener
+{
+public:
+ IncomingCallForm(void);
+ virtual ~IncomingCallForm(void);
+ //From BaseForm
+ virtual void Initialize(void);
+
+public:
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ /**
+ * Called when the container needs to draw itself. @n
+ * Users can override this method to display user-specific drawings. @n
+ * This method is called after the container has drawn itself, but just before the container draws its child controls.
+ */
+ virtual result OnDraw(void);
+
+ // From 'ITableViewItemProvider' - Gets the total number of items in the specified group.
+ virtual int GetItemCount(void);
+ // From 'ITableViewItemProvider' - Creates the specified item.
+ virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int itemIndex, int itemWidth);
+ // From 'ITableViewItemProvider' - Deletes the specified item.
+ virtual bool DeleteItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ // From 'ITableViewItemProvider' - Updates the specified item.
+ virtual void UpdateItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem){};
+ // From 'ITableViewItemProvider' - Gets the default height of an item.
+ virtual int GetDefaultItemHeight(void);
+ // From 'ITableViewItemEventListener' - Called when the state of a TableViewItem in the TableView is changed.
+ virtual void OnTableViewItemStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status){};
+ // From 'ITableViewItemEventListener' - Called when the TableViewContextItem is opened or closed.
+ virtual void OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated){};
+ // From 'ITableViewItemEventListener' - Called when the item is reordered.
+ virtual void OnTableViewItemReordered(Tizen::Ui::Controls::TableView& tableView, int itemIndexFrom, int itemIndexTo){};
+
+ //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){};
+ virtual void OnTouchCanceled(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo) {};
+ virtual void OnTouchLongPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo) {};
+ virtual void OnTouchDoublePressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo) {};
+ virtual void OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs);
+
+ //From IPopupEventListener
+ void OnItemSelected(int itemIndex);
+private:
+ // Method to fetch person details using phone number.
+ void ShowPersonDetails(const Tizen::Base::String& phoneNumber, const Tizen::Base::String& contactLblName, const Tizen::Base::String& nameLblName, CallInfo* pCallInfo);
+ // Method to show caller name for all calls.
+ void SetTextToLabel(const Tizen::Base::String& textToBeSet, const Tizen::Base::String& lblName);
+ // This function draws the caller's photo onto screen.
+ void ShowCallerPhoto(const Tizen::Graphics::Bitmap* pPhotoId);
+ //This function is used to show small Thumbnail size photo of caller.
+ void ShowCallersPhotoThumbnail(const Tizen::Graphics::Bitmap& pPhotoId);
+ // Method to show call duration/state(held) for call in progress
+ void ShowTimerInfo(const Tizen::Base::String& timerLblName, const Tizen::Base::String& textToBeDisplayed);
+ // Method to hide the "Reject with Message" panel
+ void HideRejectPanel(void);
+ // Method to create the Tableview to show the list of messages for the "Reject with Message" panel
+ void InitializeTableView(void);
+ // Method to create the canvas for the "Reject with Message" Button
+ void SetBitmapToRejectMessageButton(const Tizen::Base::String& btnName, const Tizen::Base::String& bgBitmap
+ , const Tizen::Base::String& arrowBitmap, const Tizen::Base::String& messageIconBitmap, bool isButtonInPanel, bool setButtonPressBitmap);
+ void HandleMultipleCallSelection(int itemIndex);
+
+private:
+ //contact number for incoming call
+ Tizen::Base::String* __pActiveContactNo;
+ //Call Handle for the incoming call
+ int __incomingCallHandle;
+ //List for holding the rejectMessages from settings
+ Tizen::Base::Collection::IListT<Tizen::Base::String>* __pRejectMessageList;
+ bool __isAnswerCallStarted;
+ bool __isRejectCallStarted;
+ Tizen::Base::Collection::ArrayList* __pAcceptArrowLabelsList;
+ Tizen::Base::Collection::ArrayList* __pRejectArrowLabelsList;
+ Tizen::Graphics::Bitmap* __pRejectCircle;
+ Tizen::Graphics::Bitmap* __pAcceptCircle;
+ Tizen::Graphics::Bitmap* __pAcceptDial;
+ Tizen::Graphics::Bitmap* __pRejectDial;
+ Tizen::Graphics::Bitmap* __pAcceptArrow;
+ Tizen::Graphics::Bitmap* __pRejectArrow;
+ Tizen::Ui::Controls::Label* __pAcceptLabel; //for dial
+ Tizen::Ui::Controls::Label* __pRejectLabel;
+ Tizen::Ui::Controls::Label* __pAcceptArrowLabel;
+ Tizen::Ui::Controls::Label* __pRejectArrowLabel;
+ Tizen::Ui::Controls::Panel* __pCallHandlePanel;
+ Tizen::Ui::Animations::VisualElement* __pAcceptVisElem;
+ Tizen::Ui::Animations::VisualElement* __pRejectVisElem;
+ Tizen::Ui::Animations::VisualElement* __pRejectFinalVisElem;
+ Tizen::Ui::Animations::VisualElement* __pAcceptFinalVisElem;
+ Tizen::Ui::Animations::VisualElement* __pAcceptArrowVisElem;
+ Tizen::Ui::Animations::VisualElement* __pRejectArrowVisElem;
+ CallOptionPopup* __pOptionPopup;
+ Tizen::Ui::Controls::Label* __pSmallPhotoLabel;
+};
+
+#endif // _PHN_INCOMING_CALL_FORM_H_
--- /dev/null
+//
+// 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 PhnLogsDetailForm.h
+ * @brief This is the header file for the %DlLogsDetailForm class.
+ *
+ * This header file contains the declarations for %DlLogsDetailForm class.
+ */
+#ifndef _PHN_LOGS_DETAIL_FORM_H_
+#define _PHN_LOGS_DETAIL_FORM_H_
+
+#include <FBase.h>
+#include <FUi.h>
+#include "PhnLogsDetailItemProvider.h"
+
+class CallLogDetails;
+class CallLogManager;
+
+/**
+ * @class DlLogsDetailForm
+ * @brief This class presents a form based UI for call log details scene.
+ *
+ */
+class DlLogsDetailForm
+ : public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::App::IAppControlResponseListener
+ , public Tizen::Ui::Controls::IFormBackEventListener
+ , public Tizen::Ui::Controls::IListViewItemEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+{
+
+// Construction
+public:
+ ///DlLogsDetailForm constructor
+ DlLogsDetailForm(void);
+
+ ///DlLogsDetailForm destructor
+ virtual ~DlLogsDetailForm(void);
+
+ ///Initializes the DlLogsDetailForm form
+ /*
+ * @param: Whether Initialize is success or not
+ */
+ bool Initialize();
+
+ ///This functions gets called during form OnInitializing
+ /*
+ * @param: result
+ */
+ result OnInitializing(void);
+
+ ///This functions gets called during form terminating
+ /*
+ * @param: result
+ */
+ result OnTerminating(void);
+
+ ///IActionEventListener
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+
+ ///IFormBackEventListener method
+ virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
+
+ void SetFormMode(bool mode);
+
+ void SetAllListItems(bool checked);
+
+ void UnCheckAllItems(void);
+
+ void GetUpdatedListFromDatabase(char* number);
+
+ bool DeleteSelectedCalllog(void);
+
+ virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus status);
+ virtual void OnListViewItemLongPressed(Tizen::Ui::Controls::ListView& listView, int index, int elementId, bool& invokeListViewItemCallback);
+ 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);
+
+ ///ISceneEventListener
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ ///ISceneEventListener
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+ void UpdateForm(void);
+ /**
+ * Called when the application control is completed.
+ */
+ virtual void OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData);
+
+private:
+ ///Call button
+ Tizen::Ui::Controls::Button* __pButtonCall;
+
+ ///Message button
+ Tizen::Ui::Controls::Button* __pButtonMessage;
+
+ ///Contact Image
+ Tizen::Ui::Controls::Button* __pButtonContactImage;
+
+ ///Contact name
+ Tizen::Ui::Controls::Label* __pLabelName;
+
+ ///Contact number
+ Tizen::Ui::Controls::Label* __pLabelNumber;
+ Tizen::Ui::Controls::Label* __pLabelNumberUnsaved;
+ Tizen::Ui::Controls::Label* __pLabelBlocked;
+
+ ///Form footer
+ Tizen::Ui::Controls::Footer* __pFormFooter;
+
+ ///Delete footer item
+ Tizen::Ui::Controls::FooterItem __pFooterItemDelete;
+
+ ///Delete footer item
+ Tizen::Ui::Controls::FooterItem __pFooterItemCancel;
+
+ ///Grouped list view
+ Tizen::Ui::Controls::ListView* __pList;
+
+ Tizen::Ui::Controls::CheckButton* __pSelectAll;
+
+ //Selected pop up label
+ Tizen::Ui::Controls::Label* __pSelectedLabel;
+
+ ///Grouped list view item provider
+ DlLogsDetailItemDataProvider* __pDataProvider;
+
+ ///List view height
+ int __listHeight;
+
+ ///form mode
+ bool __isEditMode;
+
+ bool __isSelectAll;
+ bool __isPresentInContacts;
+
+ int __listItemCount;
+ int __selectedItemCount;
+ //Tizen::Base::Collection::HashMapT<int, CallLogDetails>* __calllogListByNum;
+ Tizen::Base::Collection::ArrayListT<CallLogDetails>* __calllogListByNum;
+ CallLogManager* __pCallMgr;
+ int __calllogCount;
+ Tizen::Base::String __number;
+ bool __isMsgAppControlLaunched;
+};
+
+#endif /*_PHN_LOGS_DETAIL_FORM_H_*/
--- /dev/null
+//
+// 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 PhnActiveCallForm.h
+ * @brief This is the header file for the %DlLogsDetailItemDataProvider class.
+ *
+ * This header file contains the declarations for %DlLogsDetailItemDataProvider class.
+ */
+#ifndef _PHN_LOGS_DETAIL_ITEM_PROVIDER_H_
+#define _PHN_LOGS_DETAIL_ITEM_PROVIDER_H_
+
+#include <FBase.h>
+#include <FUi.h>
+
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+
+class CallLogManager;
+class CallLogDetails;
+
+/**
+ * @class DlLogsDetailItemDataProvider
+ * @brief This class provides Item provider for list memo
+ *
+ */
+class DlLogsDetailItemDataProvider
+ : public IListViewItemProvider
+{
+public:
+ DlLogsDetailItemDataProvider(void);
+
+ ~DlLogsDetailItemDataProvider(void);
+
+ ///IListViewItemProvider method
+ virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int index, int itemWidth);
+
+ ///IListViewItemProvider method
+ virtual bool DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);
+
+ ///IListViewItemProvider method
+ virtual int GetItemCount(void);
+
+ void SetViewMode(bool mode);
+
+ void ResetDetailsList(void);
+
+protected:
+ static const int ID_NAME_STRING;
+ static const int ID_NUMBER_STRING;
+ static const int ID_TIME_STRING;
+ static const int ID_CALLTYPE_BITMAP;
+
+ static const int X_TEXT_LINE1_ITEM;
+ static const int Y_TEXT_LINE1_ITEM;
+ static const int H_TEXT_LINE1_ITEM;
+ static const int W_TEXT_LINE1_ITEM;
+
+ static const int X_TEXT_LINE2_ITEM;
+ static const int Y_TEXT_LINE2_ITEM;
+ static const int H_TEXT_LINE2_ITEM;
+ static const int W_TEXT_LINE2_ITEM;
+
+ static const int X_TEXT_TIME_ITEM;
+ static const int Y_TEXT_TIME_ITEM;
+ static const int H_TEXT_TIME_ITEM;
+ static const int W_TEXT_TIME_ITEM;
+
+
+ static const int X_CALLTYPE_BITMAP_ITEM;
+ static const int Y_CALLTYPE_BITMAP_ITEM;
+ static const int H_CALLTYPE_BITMAP_ITEM;
+ static const int W_CALLTYPE_BITMAP_ITEM;
+private:
+ bool __isEditMode;
+ CallLogManager* __pCallMgr;
+ Tizen::Base::Collection::IListT<CallLogDetails>* __pCalllogListByNumber;
+};
+
+#endif /* _PHN_LOGS_DETAIL_ITEM_PROVIDER_H_ */
--- /dev/null
+//
+// 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 PhnPanelFactory.h
+ * @brief This is the header file for the %PanelFactory class.
+ *
+ * This header file contains the declarations for %PanelFactory class.
+ */
+#ifndef _PHN_PANEL_FACTORY_H_
+#define _PHN_PANEL_FACTORY_H_
+
+#include <FUi.h>
+
+extern const wchar_t* PANEL_DIALER;
+extern const wchar_t* PANEL_LOGS;
+
+/**
+ * @class PanelFactory
+ * @brief This class provides the Panel factory for Dial application
+ *
+ */
+class PanelFactory
+ : public Tizen::Ui::Scenes::IPanelFactory
+{
+public:
+ PanelFactory(void);
+ virtual ~PanelFactory(void);
+
+ virtual Tizen::Ui::Controls::Panel* CreatePanelN(const Tizen::Base::String& panelId, const Tizen::Ui::Scenes::SceneId& sceneId);
+};
+
+#endif // _PHN_PANEL_FACTORY_H_
--- /dev/null
+//
+// 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 PhnPhoneApp.h
+ * @brief This is the header file for the %PhoneApp class.
+ *
+ * This header file contains the declarations for %PhoneApp class.
+ */
+#ifndef _PHN_PHONE_APP_H_
+#define _PHN_PHONE_APP_H_
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FSystem.h>
+#include <FUi.h>
+
+class IAppStateChangeListener;
+
+/**
+ * @class PhoneApp
+ * @brief PhoneApp must inherit from UiApp class
+ * which provides basic features necessary to define an UiApp.
+ *
+ */
+class PhoneApp
+ : public Tizen::App::UiApp
+ , public Tizen::System::IScreenEventListener
+ , public Tizen::App::IAppControlProviderEventListener
+{
+public:
+
+ static Tizen::App::UiApp* CreateInstance(void);
+
+public:
+ PhoneApp(void);
+ virtual ~PhoneApp(void);
+
+public:
+ bool OnAppInitializing(Tizen::App::AppRegistry& appRegistry);
+ bool OnAppInitialized(void);
+ bool OnAppWillTerminate(void);
+ bool OnAppTerminating(Tizen::App::AppRegistry& appRegistry, bool forcedTermination = false);
+ void OnForeground(void);
+ void OnBackground(void);
+ void OnLowMemory(void);
+ void OnBatteryLevelChanged(Tizen::System::BatteryLevel batteryLevel);
+ void OnScreenOn(void);
+ void OnScreenOff(void);
+
+ // Called when the application control request is received from the caller application.
+ virtual void OnAppControlRequestReceived(RequestId reqId, const Tizen::Base::String& operationId, const Tizen::Base::String* pUriData, const Tizen::Base::String* pMimeType, const Tizen::Base::Collection::IMap* pExtraData);
+
+ //Used to query whether application is initialized as AppControl.
+ bool IsOpenAsAppControl(void);
+ //Used to get the initial scene Id
+ Tizen::Ui::Scenes::SceneId GetInitialScene(void);
+ //Used to set initial scene id
+ void SetInitialScene(Tizen::Ui::Scenes::SceneId initialSceneId);
+ //Used to get launch arguments at application launch
+ Tizen::Base::Collection::IList* GetAppLaunchArguments(void);
+
+ void AddAppStateChangeListener(const IAppStateChangeListener& listener);
+ void RemoveAppStateChangeListener(const IAppStateChangeListener& listener);
+
+private:
+ //internal function to process AppControl request.
+ void ProcessAppControlRequest(RequestId reqId, const Tizen::Base::String& operationId,const Tizen::Base::Collection::IMap* pArgsMap);
+ //internal function to handle AppControl Request for Incoming call.
+ void HandleIncomingCallAppControlRequest(RequestId reqId,const Tizen::Base::Collection::IMap* pArgsMap);
+ //internal function to handle AppControl Request for Dial.
+ void HandleDialerAppControlRequest(RequestId reqId,const Tizen::Base::Collection::IMap* pArgsMap);
+ //internal function to handle AppControl Request for dial call.
+ void HandleDialCallAppControlRequest(RequestId reqId,const Tizen::Base::Collection::IMap* pArgsMap);
+ //internal function to handle AppControl Request for call Settings.
+ void HandleSettingsAppControlRequest(RequestId reqId,const Tizen::Base::Collection::IMap* pArgsMap);
+
+private:
+ //Used to implement AppControl Specific features.
+ bool __isOpenAsAppControl;
+ Tizen::Base::Collection::ArrayList* __pLaunchArgs;
+ //Used to store initial scene id
+ Tizen::Ui::Scenes::SceneId __initialSceneId;
+ Tizen::Base::Collection::ArrayList __listenerList;
+};
+
+#endif // _PHN_PHONE_APP_H_
--- /dev/null
+//
+// 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 PhnPhoneAppFrame.h
+ * @brief This is the header file for the %PhoneAppFrame class.
+ *
+ * This header file contains the declarations for %PhoneAppFrame class.
+ */
+#ifndef _PHN_PHONE_APP_FRAME_H_
+#define _PHN_PHONE_APP_FRAME_H_
+
+#include <FBase.h>
+#include <FUi.h>
+
+/**
+ * @class PhoneAppFrame
+ * @brief This class presents a main application frame and performs scene registration.
+ *
+ */
+class PhoneAppFrame
+ : public Tizen::Ui::Controls::Frame
+{
+public:
+ PhoneAppFrame(void);
+ virtual ~PhoneAppFrame(void);
+
+public:
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+};
+
+#endif // _PHN_PHONE_APP_FRAME_H_
--- /dev/null
+//
+// 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 PhnPhoneFormFactory.h
+ * @brief This is the header file for the %FormFactory class.
+ *
+ * This header file contains the declarations for %FormFactory class.
+ */
+#ifndef _PHN_PHONE_FORM_FACTORY_H_
+#define _PHN_PHONE_FORM_FACTORY_H_
+
+#include <FUi.h>
+#include "PhnBaseForm.h"
+
+//Corresponding Call form name
+extern const wchar_t* IDL_FORM_OUTCALL;
+extern const wchar_t* IDL_FORM_OUT_EMERGENCYCALL;
+extern const wchar_t* IDL_FORM_INCOMINGCALL;
+extern const wchar_t* IDL_FORM_ACTIVECALL;
+extern const wchar_t* IDL_FORM_ACTIVE_EMERGENCYCALL;
+extern const wchar_t* IDL_FORM_CONFCALL;
+extern const wchar_t* IDL_FORM_CONFCALLLIST;
+extern const wchar_t* IDL_FORM_ENDCALL;
+extern const wchar_t* IDL_FORM_MULTIPLEACTIVECALL;
+//Corresponding Settings form name
+extern const wchar_t* IDL_FORM_SETTINGS_PREFIX;
+extern const wchar_t* IDL_FORM_MAIN_SETTING_MENU;
+extern const wchar_t* IDL_FORM_CALL_REJECTLIST_MENU;
+extern const wchar_t* IDL_FORM_CALL_REJECTMSGS_MENU;
+extern const wchar_t* IDL_FORM_SPEED_DIAL;
+extern const wchar_t* IDL_FORM_MORE_OPTIONS;
+extern const wchar_t* IDL_FORM_CALL_STATUSTONES;
+extern const wchar_t* IDL_FORM_CALLTYPE_FORWARD;
+extern const wchar_t* IDL_FORM_CALL_FORWARD_OPTIONS;
+extern const wchar_t* IDL_FORM_CALLTYPE_BARRING;
+extern const wchar_t* IDL_FORM_CALL_BARRING_OPTIONS;
+extern const wchar_t* IDL_FORM_CALL_WAITING_OPTIONS;
+extern const wchar_t* IDL_FORM_ADD_REJECT_NUMBER;
+extern const wchar_t* IDL_FORM_AUTO_AREA_CODE;
+extern const wchar_t* IDL_FORM_ADD_REJECT_MSG;
+extern const wchar_t* IDL_FORM_EDIT_REJECT_MSG;
+extern const wchar_t* IDL_FORM_FORWARD_TO_NUMBER;
+extern const wchar_t* IDL_FORM_NOREPLY_FORWARD_TO_NUMBER;
+extern const wchar_t* IDL_FORM_SCENE_SET_BARRING_PWD;
+extern const wchar_t* IDL_FORM_DEL_NUMBER;
+extern const wchar_t* IDL_FORM_DEL_MESSAGE;
+//Dialer & Call Log Form names
+extern const wchar_t* IDL_FORM_DIAL_APP;
+extern const wchar_t* IDL_FORM_CALL_LOG_DETAIL;
+
+/**
+ * @class FormFactory
+ * @brief This class presents a form factory functionality for all forms.
+ *
+ */
+class FormFactory
+ : public Tizen::Ui::Scenes::IFormFactory
+{
+public:
+ FormFactory(void);
+ virtual ~FormFactory(void);
+
+ //Factory Method from IFormFactory
+ virtual Tizen::Ui::Controls::Form* CreateFormN(const Tizen::Base::String& formId, const Tizen::Ui::Scenes::SceneId& sceneId);
+
+private:
+ //Used to create forms related to Voice Call module
+ Tizen::Ui::Controls::Form* CreateVoiceCallForm(const Tizen::Base::String& formId, const Tizen::Ui::Scenes::SceneId& sceneId);
+ //Used to create forms related to Call Settings module
+ Tizen::Ui::Controls::Form* CreateCallSettingsForm(const Tizen::Base::String& formId, const Tizen::Ui::Scenes::SceneId& sceneId);
+
+};
+
+#endif // _PHN_PHONE_FORM_FACTORY_H_
--- /dev/null
+//
+// 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 PhnRetrieveSuggestionsTasks.h
+ * @brief This is the header file for the %RetrieveContactsListTask class.
+ *
+ * This header file contains the declarations for %RetrieveContactsListTask class.
+ */
+#ifndef _PHN_RETRIEVE_SUGGESTIONS_TASKS_H_
+#define _PHN_RETRIEVE_SUGGESTIONS_TASKS_H_
+
+#include <FBase.h>
+#include <FSocial.h>
+
+class DialContactInfo;
+//class CallLogDetails;
+
+/**
+ * @class ISuggestionsRetrievedEventListener
+ * @brief This is event listener interface for informing that
+ * the retrieval of contact suggestion list is completed.
+ */
+class ISuggestionsRetrievedEventListener
+{
+public:
+ virtual ~ISuggestionsRetrievedEventListener(void){};
+
+ /**
+ * Called when the retrieval of contact suggestion list is completed.
+ * Ownership transferred for 'pContactsMap' to listener.
+ */
+ virtual void HandleContactsRetrievalCompleted(Tizen::Base::Collection::IList* pContactsMap) = 0;
+};
+
+/**
+ * @class RetrieveContactsListTask
+ * @brief This Class used to provide Thread functionality for all Search Tasks asynchronously.
+ *
+ */
+class RetrieveContactsListTask
+ : public Tizen::Base::Object
+ , public Tizen::Base::Runtime::IRunnable
+{
+public:
+ RetrieveContactsListTask( ISuggestionsRetrievedEventListener& pEventListener);
+ //Destructor
+ ~RetrieveContactsListTask(void);
+ //2nd phase contruct to initialize search string and old search results if present.
+ result Construct(Tizen::Base::String& searchString,const Tizen::Base::Collection::IList* oldSearchResults);
+ ///called when the thread for search task starts
+ virtual Tizen::Base::Object* Run(void);
+
+private:
+ //internal function to search speed-dial numbers and add to list
+ void SearchSpeedDialForNumberN(void);
+ //internal function to search contacts by phone number and add to list.
+ void SearchContactsForNumber(void);
+ //internal function to searches call logs for phone number and add to list.
+ /*void SearchCallLogsForNumber(void);*/
+ //internal function to search contacts by name and add to list.
+ void SearchContactsForName(void);
+ //internal function to save contacts starting with 'searchStr'.
+ void SearchContactsWithInitialChar(Tizen::Base::String& searchStr);
+ //internal function to update the already fetched suggestion list
+ void UpdateSuggestionList(void);
+
+ //internal function to save searched contact by number to single consolidated list.
+ void SaveContactsToListByNumber(Tizen::Base::Collection::IList& saveList, Tizen::Base::String& matchedString);
+ /**
+ * internal function to convert Contact to DialContactInfo.
+ * return null, if the contact does not have any phone numbers assigned to it.
+ */
+ DialContactInfo* ConvertToDialContactN(Tizen::Social::Contact& contact, Tizen::Base::String& matchedString);
+ /*DialContactInfo* ConvertLogDetailsToDialContactN(CallLogDetails& logDetails);*/
+
+private:
+ Tizen::Social::Addressbook* __pAddressBook;
+ ISuggestionsRetrievedEventListener& __pEventListener;
+ Tizen::Base::Collection::ArrayList* __pContactsList;
+ Tizen::Base::String* __pNumberStr;
+};
+
+/**
+ * @class SuggestionListComparer
+ * @brief This Class is used to compare 2 objects of 'DialContactInfo' type and returns the comparison results.
+ * This class can be used to sort an ArrayList of 'DialContactInfo' objects.
+ */
+class SuggestionListComparer
+: public Tizen::Base::Collection::IComparer
+{
+public:
+ SuggestionListComparer(){};
+ virtual ~SuggestionListComparer(){};
+ /**
+ * Used to compare two reference of 'DialContactInfo' and return 'cmpResult' as the comparison result.
+ *
+ * @code
+ * < 0 if the value of @c obj1 is less than the value of @c obj2
+ * == 0 if the value of @c obj1 is equal to the value of @c obj2
+ * > 0 if the value of @c obj1 is greater than the value of @c obj2
+ */
+ virtual result Compare(const Tizen::Base::Object& objRef1, const Tizen::Base::Object& objRef2, int& cmpResult) const;
+};
+
+#endif // _PHN_RETRIEVE_SUGGESTIONS_TASKS_H_
--- /dev/null
+//
+// 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 PhnSceneRegister.h
+ * @brief This is the header file for the %SceneRegister class.
+ *
+ * This header file contains the declarations for %SceneRegister class.
+ */
+#ifndef _PHN_SCENE_REGISTER_H_
+#define _PHN_SCENE_REGISTER_H_
+
+//Constants - Call Scene name
+extern const wchar_t* IDSCN_SCENE_OUTCALL;
+extern const wchar_t* IDSCN_SCENE_OUT_EMERGENCYCALL;
+extern const wchar_t* IDSCN_SCENE_INCOMINGCALL;
+extern const wchar_t* IDSCN_SCENE_ACTIVECALL;
+extern const wchar_t* IDSCN_SCENE_ACTIVE_EMERGENCYCALL;
+extern const wchar_t* IDSCN_SCENE_CONFCALL;
+extern const wchar_t* IDSCN_SCENE_CONFCALLLIST;
+extern const wchar_t* IDSCN_SCENE_ENDCALL;
+extern const wchar_t* IDSCN_SCENE_MULTIPLEACTIVECALL;
+//Settings Scene name
+extern const wchar_t* IDSCN_SCENE_MAIN_SETTING_MENU;
+extern const wchar_t* IDSCN_SCENE_CALL_REJECTLIST_MENU;
+extern const wchar_t* IDSCN_SCENE_CALL_REJECTMSGS_MENU;
+extern const wchar_t* IDSCN_SCENE_SPEED_DIAL;
+extern const wchar_t* IDSCN_SCENE_MORE_OPTIONS;
+extern const wchar_t* IDSCN_SCENE_CALL_STATUSTONES;
+extern const wchar_t* IDSCN_SCENE_CALLTYPE_FORWARD;
+extern const wchar_t* IDSCN_SCENE_CALL_FORWARD_OPTIONS;
+extern const wchar_t* IDSCN_SCENE_CALLTYPE_BARRING;
+extern const wchar_t* IDSCN_SCENE_CALL_BARRING_OPTIONS;
+extern const wchar_t* IDSCN_SCENE_CALL_WAITING_OPTIONS;
+extern const wchar_t* IDSCN_SCENE_ADD_REJECT_NUMBER;
+extern const wchar_t* IDSCN_SCENE_AUTO_AREA_CODE;
+extern const wchar_t* IDSCN_SCENE_ADD_REJECT_MSG;
+extern const wchar_t* IDSCN_SCENE_EDIT_REJECT_MSG;
+extern const wchar_t* IDSCN_SCENE_FORWARD_TO_NUMBER;
+extern const wchar_t* IDSCN_SCENE_NOREPLY_FORWARD_TO_NUMBER;
+extern const wchar_t* IDSCN_SCENE_SET_BARRING_PWD;
+extern const wchar_t* IDSCN_SCENE_DEL_NUMBER;
+extern const wchar_t* IDSCN_SCENE_DEL_MESSAGE;
+//Dialer & Call Log Scene names
+extern const wchar_t* IDSCN_DIALER;
+extern const wchar_t* IDSCN_CALL_LOG;
+extern const wchar_t* IDSCN_CALL_LOG_DETAILS;
+
+/**
+ * @class SceneRegister
+ * @brief This class presents function to register all scenes.
+ *
+ */
+class SceneRegister
+{
+public:
+ SceneRegister(void);
+ ~SceneRegister(void);
+
+ //This function is used to register all scenes.
+ static result RegisterAllScenes(void);
+};
+
+#endif // _PHN_SCENE_REGISTER_H_
--- /dev/null
+//
+// 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 PhnSettingsAddNumberForm.h
+ * @brief This is the header file for the %SettingsAddNumberForm class.
+ *
+ * This header file contains the declarations for %SettingsAddNumberForm class.
+ */
+#ifndef _PHN_SETTINGS_ADD_NUMBER_FORM_H_
+#define _PHN_SETTINGS_ADD_NUMBER_FORM_H_
+
+#include <FBase.h>
+#include <FUi.h>
+
+/**
+ * @class SettingsAddNumberForm
+ * @brief This class presents a settings form based UI for call settings.
+ *
+ */
+class SettingsAddNumberForm
+ : public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::Controls::IGroupedTableViewItemProvider
+ , public Tizen::Ui::Controls::IGroupedTableViewItemEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public Tizen::Ui::ITextEventListener
+ , public Tizen::Ui::IKeypadEventListener
+ , public Tizen::App::IAppControlResponseListener
+{
+public:
+ enum FormType
+ {
+ FORMTYPE_NUMBER_TO_REJECT,
+ FORMTYPE_AUTO_AREA_CODE,
+ };
+
+public:
+ SettingsAddNumberForm(FormType formType);
+ virtual ~SettingsAddNumberForm(void);
+ void Initialize(void);
+
+public:
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ //From IActionEventListener
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+ //From ISceneEventListener
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ //From IGroupedTableViewItemEventListener - Called when the state of a TableViewGroupItem is changed.
+ virtual void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status){};
+ //From IGroupedTableViewItemEventListener - Called when the state of a TableViewItem in the GroupedTableView is changed.
+ virtual void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
+ //From IGroupedTableViewItemEventListener - Called when the TableViewContextItem is opened or closed.
+ virtual void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated){};
+
+ //From IGroupedTableViewItemProvider - Gets the total number of groups.
+ virtual int GetGroupCount(void);
+ //From IGroupedTableViewItemProvider - Gets the total number of items in the specified group.
+ virtual int GetItemCount(int groupIndex);
+ //From IGroupedTableViewItemProvider - Gets the group item for the specified index from the item provider.
+ virtual Tizen::Ui::Controls::TableViewGroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ //From IGroupedTableViewItemProvider - Deletes the specified group item.
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
+ //From IGroupedTableViewItemProvider - Updates the specified group item.
+ virtual void UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
+ //From IGroupedTableViewItemProvider - Creates the specified item.
+ virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ //From IGroupedTableViewItemProvider - Deletes the specified item.
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ //From IGroupedTableViewItemProvider - Updates the specified item.
+ virtual void UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ //From IGroupedTableViewItemProvider - Gets the default height of an group item.
+ virtual int GetDefaultGroupItemHeight(void);
+ //From IGroupedTableViewItemProvider - Gets the default height of an item.
+ virtual int GetDefaultItemHeight(void);
+
+ //From IKeypadEventListener
+ virtual void OnKeypadWillOpen(Tizen::Ui::Control& source);
+ virtual void OnKeypadOpened(Tizen::Ui::Control& source){};
+ virtual void OnKeypadClosed(Tizen::Ui::Control& source){};
+ virtual void OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction){};
+ virtual void OnKeypadBoundsChanged(Tizen::Ui::Control& source){};
+
+ //Launches contacts app control for pick operation
+ void LaunchContactsAppControl(void);
+ //From IAppControlResponseListener
+ virtual void OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData);
+
+ // Called when a text is changed.
+ virtual void OnTextValueChanged(const Tizen::Ui::Control& source);
+ // Called when a change made to the text is canceled.
+ virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source);
+
+private:
+ // This function is used to collapse selective groups while form initialization only.
+ void CollapseSelectiveGroups(Tizen::Ui::Controls::GroupedTableView* pMainMenuTableView);
+ //Function is used to initialize header and headerItems.
+ void InitializeHeader(void);
+ //Function is used to initialize numeric edit field.
+ void InitializeNumberEditField(void);
+ //Initialize group table view.
+ result InitializeGroupedTableView(void);
+ // This function is used to create list items which come under "GROUP_CRITERIA_OPTIONS".
+ Tizen::Ui::Controls::TableViewItem* CreateCriteriaOptionsMenuItem(int itemIndex, int itemWidth);
+ // This function is used to create "GROUP_SELECT_CRITERIA".
+ Tizen::Ui::Controls::TableViewItem* CreateExpandableCriteriaItem(int itemWidth);
+ //function is used to set and change expand icon to expandable item based on its state.
+ void SetExpandIconToItem(Tizen::Ui::Controls::TableViewItem* pItem, bool isExpanded);
+ // This function is used to handle selection of 'GROUP_SELECT_CRITERIA'.
+ void ToggleGroupExpansion(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex);
+ // This function is used to handle selection of matching criteria.
+ void HandleMatchingCriteriaSelected(Tizen::Ui::Controls::GroupedTableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewItemStatus status);
+ //Function is used to go to previous form, based on current form state.
+ void GoBackToPreviousForm(void);
+ Tizen::Base::String FetchTextForCriteria(int itemIndex);
+ //Used to show error message box
+ void ShowDuplicateErrorMessageBox(Tizen::Base::String& message);
+
+private:
+ //Main Group Items for group list view
+ enum CriteriaGroupId
+ {
+ GROUP_SELECT_CRITERIA = 0,
+ GROUP_CRITERIA_OPTIONS,
+ GROUP_TOTALCOUNT,
+ };
+ //Items for 'GROUP_SELECT_CRITERIA'
+ enum GroupSelectCriteriaItems
+ {
+ SELECTCRITERIA_MATCH_CRITERIA,
+ SELECTCRITERIA_TOTALCOUNT, //No of options in "caller id" drop down menu
+ };
+ //Items for 'GROUP_CRITERIA_OPTIONS'
+ enum GroupCriteriaOptionsItems
+ {
+ CRITERIAOPTIONS_EXACT,
+ CRITERIAOPTIONS_STARTSWITH,
+ CRITERIAOPTIONS_ENDSWITH,
+ CRITERIAOPTIONS_INCLUDE,
+ CRITERIAOPTIONS_TOTALCOUNT,
+ };
+ //used to store form state.
+ FormType __formType;
+ GroupCriteriaOptionsItems __selectedCriteria;
+ bool __isCriteriaOptionsMenuExpanded;
+ Tizen::Base::String __activePrefixDialingNumber;
+ bool __isContactAppControlLaunched;
+};
+
+#endif //_PHN_SETTINGS_ADD_NUMBER_FORM_H_
--- /dev/null
+//
+// 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 PhnSettingsBarringPwdForm.h
+ * @brief This is the header file for the %SettingsBarringPwdForm class.
+ *
+ * This header file contains the declarations for %SettingsBarringPwdForm class.
+ */
+#ifndef _PHN_SETTINGS_BARRING_PWD_FORM_H_
+#define _PHN_SETTINGS_BARRING_PWD_FORM_H_
+
+#include <FBase.h>
+#include <FUi.h>
+#include "PhnErrorMsgPopup.h"
+#include "PhnSettingsConstants.h"
+
+/**
+ * @class SettingsBarringPwdForm
+ * @brief This class presents a settings form based UI for call settings barring password.
+ *
+ */
+class SettingsBarringPwdForm
+ : public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::ITextEventListener
+ , public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public IPopupClosedEventListener
+{
+public:
+ SettingsBarringPwdForm(void);
+ virtual ~SettingsBarringPwdForm(void);
+ void Initialize(void);
+
+public:
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ //From IActionEventListener
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+ //From ISceneEventListener
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+ //From ITextEventListener
+ virtual void OnTextValueChanged(const Tizen::Ui::Control& source);
+ virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source);
+
+ //Event Listener method from IPopupClosedEventListener
+ virtual void HandlePopupClosed(void);
+
+private:
+ //Function is used to initialise header and header items.
+ void InitializeHeader(void);
+ void ShowErrorMessage(int errorCode);
+
+private:
+ //call Barring condition to be set
+ CallBarringType __callBarringCondition;
+ //State of the condition to be set;
+ bool __conditionState;
+ //Ownership
+ ErrorMsgPopup* __pErrorMsgPopup;
+};
+
+#endif //_PHN_SETTINGS_BARRING_PWD_FORM_H_
--- /dev/null
+//
+// 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 PhnSettingsCallForwardWaitBarrForm.h
+ * @brief This is the header file for the %SettingsCallForwardWaitBarrForm class.
+ *
+ * This header file contains the declarations for %SettingsCallForwardWaitBarrForm class.
+ */
+#ifndef _PHN_SETTINGS_CALL_FORWARD_WAIT_BARR_FORM_H_
+#define _PHN_SETTINGS_CALL_FORWARD_WAIT_BARR_FORM_H_
+
+#include <FBase.h>
+#include <FUi.h>
+#include "PhnErrorMsgPopup.h"
+#include "PhnISettingsEventListener.h"
+
+class SettingsPresentationModel;
+
+/**
+ * @class SettingsCallForwardWaitBarrForm
+ * @brief This class presents a settings form based UI for call settings - Forwarding, waiting, barring call .
+ *
+ */
+class SettingsCallForwardWaitBarrForm
+ : public ISettingsEventListener
+ , public IPopupClosedEventListener
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::Controls::IFormBackEventListener
+ , public Tizen::Ui::Controls::IGroupedTableViewItemProvider
+ , public Tizen::Ui::Controls::IGroupedTableViewItemEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+{
+public:
+ enum FormType
+ {
+ FORMTYPE_CALLFORWARDING_TYPE, //decide voice/video type for forwarding
+ FORMTYPE_VOICE_CALLFORWARDING, //actual options for call forwarding
+ FORMTYPE_CALLBARRING_TYPE, //decide voice/video type for barring
+ FORMTYPE_VOICE_CALLBARRING, //actual options for call barring
+ FORMTYPE_CALL_WAITING, //call waiting options
+ };
+
+public:
+ SettingsCallForwardWaitBarrForm(FormType formType);
+ virtual ~SettingsCallForwardWaitBarrForm(void);
+ void Initialize(void);
+
+public:
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ //From IActionEventListener
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+ //From IFormBackEventListener
+ virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
+ //From ISceneEventListener
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ //From IGroupedTableViewItemEventListener - Called when the state of a TableViewGroupItem is changed.
+ virtual void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status){};
+ //From IGroupedTableViewItemEventListener - Called when the state of a TableViewItem in the GroupedTableView is changed.
+ virtual void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
+ //From IGroupedTableViewItemEventListener - Called when the TableViewContextItem is opened or closed.
+ virtual void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated){};
+
+ //From IGroupedTableViewItemProvider - Gets the total number of groups.
+ virtual int GetGroupCount(void);
+ //From IGroupedTableViewItemProvider - Gets the total number of items in the specified group.
+ virtual int GetItemCount(int groupIndex);
+ //From IGroupedTableViewItemProvider - Gets the group item for the specified index from the item provider.
+ virtual Tizen::Ui::Controls::TableViewGroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ //From IGroupedTableViewItemProvider - Deletes the specified group item.
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
+ //From IGroupedTableViewItemProvider - Updates the specified group item.
+ virtual void UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
+ //From IGroupedTableViewItemProvider - Creates the specified item.
+ virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ //From IGroupedTableViewItemProvider - Deletes the specified item.
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ //From IGroupedTableViewItemProvider - Updates the specified item.
+ virtual void UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ //From IGroupedTableViewItemProvider - Gets the default height of an group item.
+ virtual int GetDefaultGroupItemHeight(void);
+ //From IGroupedTableViewItemProvider - Gets the default height of an item.
+ virtual int GetDefaultItemHeight(void);
+
+ //From ISettingsEventListener
+ virtual void HandleGetCallWaitingResponse(bool isCallSuccessful, bool callWaitingActivated);
+ virtual void HandleSetCallWaitingResponse(bool isCallSuccessful, bool isCallWaitingEnabled);
+ virtual void HandleGetCallForwardResponse(bool isCallSuccessful, CallForwardCondition callFwdCondition, const Tizen::Base::String& callFwdNumber, bool callForwardActivated, int noReplyWaitTime);
+ virtual void HandleSetCallForwardResponse(bool isCallSuccessful, CallForwardCondition callFwdCondition, const Tizen::Base::String& callFwdNumber, bool isCallForwardActivated, int noReplyWaitTime);
+ virtual void HandleGetCallBarringResponse(bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated);
+ virtual void HandleSetCallBarringResponse(bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated);
+
+ //Event Listener method from IPopupClosedEventListener
+ virtual void HandlePopupClosed(void);
+
+private:
+ //Function is used to initialize group table menu
+ result InitializeGroupedTableView(void);
+ // Function is used to create list items which come under "CallTypeItemIds"
+ Tizen::Ui::Controls::TableViewItem* CreateSettingCallTypeMenuItem(int itemIndex, int itemWidth);
+ // Function is used to handle item selection which come under "CallTypeItemIds"
+ void HandleCallTypeSelected(int itemIndex);
+ // Function is used to create list items under "CallForwardItemIds"
+ Tizen::Ui::Controls::TableViewItem* CreateCallForwardingOptions(int itemIndex, int itemWidth);
+ // Function is used to handle item selection for "CallForwardItemIds"
+ void HandleCallForwardingOptionSelected(int itemIndex, Tizen::Ui::Controls::TableViewItemStatus status);
+ // Function is used to create list items only which come under "CallBarringItemIds"
+ Tizen::Ui::Controls::TableViewItem* CreateCallBarringOptions(int itemIndex, int itemWidth);
+ // Function is used to handle item selection for "CallBarringItemIds"
+ void HandleCallBarringOptionSelected(int itemIndex, Tizen::Ui::Controls::TableViewItemStatus status);
+ // This function is used to create list items which come under "CallBarringItemIds"
+ Tizen::Ui::Controls::TableViewItem* CreateCallWaitingOptions(int itemIndex, int itemWidth);
+ // Function is used to handle item selection for "CallWaitingItemIds"
+ void HandleCallWaitingOptionSelected(Tizen::Ui::Controls::TableViewItem* pItem, int itemIndex, Tizen::Ui::Controls::TableViewItemStatus status);
+ // Used to show error message popup
+ void ShowErrorMessage(int errorCode);
+ //used to un-check all items in group
+ void UncheckAllOptions(void);
+ //Used to fetch processing animation and construct animation list.
+ void ConstructAnimationList(void);
+
+private:
+ //Groups supported by group table view
+ enum CallGroupTypes
+ {
+ CALLTYPE_GROUP,
+ CALLWAITING_GROUP,
+ CALLBARRING_GROUP,
+ CALLFORWARDING_GROUP,
+ CALLGROUP_COUNT,
+ };
+ //Setting ids for "CALLFORWARDING_GROUP" group
+ enum CallForwardItemIds
+ {
+ CALLFORWARD_ALWAYS,
+ CALLFORWARD_IF_BUSY,
+ CALLFORWARD_IF_NO_REPLY,
+ CALLFORWARD_IF_OUT_OF_REACH,
+ CALLFORWARD_TOTALITEMCOUNT, //always the last element to get settings count
+ };
+ //Setting ids for "CALLBARRING_GROUP" group
+ enum CallBarringItemIds
+ {
+ CALLBARRING_ALL_OUTGOING_CALL,
+ CALLBARRING_INTERNATIONAL_CALL,
+ CALLBARRING_INTERNATIONAL_EXCEPT_HOME,
+ CALLBARRING_ALL_INCOMING_CALL,
+ CALLBARRING_INCOMING_WHILE_ROAMING,
+ CALLBARRING_TOTALCOUNT, //always the last element to get settings count
+ };
+ //Setting ids for "CALLWAITING_GROUP" group
+ enum CallWaitingItemIds
+ {
+ CALLWAITING_ITEM,
+ CALLWAITING_TOTALCOUNT, //always the last element to get settings count
+ };
+
+ enum CallTypeItemIds
+ {
+ CALLTYPE_VOICE_CALL,
+// CALLTYPE_VIDEO_CALL,
+ CALLTYPE_TOTALCOUNT, //always the last element to get group count
+ };
+
+ //used to record which view to open - Call Forwarding, Barring, Waiting.
+ FormType __formType;
+ SettingsPresentationModel* __pSettingsPresentor;
+ //Ownership
+ ErrorMsgPopup* __pErrorMsgPopup;
+ //used to check if 'CALLFORWARD_ALWAYS' is activated
+ bool __isCallForwardAlwaysActivated;
+ //For processing animation
+ Tizen::Base::Collection::ArrayList* __pAnimationFrameList;
+ //Used to check if call waiting status is available.
+ bool __isCallWaitingStatusAvailable;
+ //Used to check call waiting is Enabled
+ bool __isCallWaitingEnabled;
+};
+
+#endif //_PHN_SETTINGS_CALL_FORWARD_WAIT_BARR_FORM_H_
--- /dev/null
+//
+// 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 PhnSettingsCallStatusTonesForm.h
+ * @brief This is the header file for the %SettingsCallStatusTonesForm class.
+ *
+ * This header file contains the declarations for %SettingsCallStatusTonesForm class.
+ */
+#ifndef _PHN_SETTINGS_CALL_STATUS_TONES_FORM_H_
+#define _PHN_SETTINGS_CALL_STATUS_TONES_FORM_H_
+
+#include <FBase.h>
+#include <FUi.h>
+
+class SettingsPresentationModel;
+
+/**
+ * @class SettingsCallStatusTonesForm
+ * @brief This class presents a settings form based UI for call settings - call status tones.
+ *
+ */
+class SettingsCallStatusTonesForm
+ : public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::Controls::IFormBackEventListener
+ , public Tizen::Ui::Controls::IGroupedTableViewItemProvider
+ , public Tizen::Ui::Controls::IGroupedTableViewItemEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+{
+public:
+ SettingsCallStatusTonesForm(void);
+ virtual ~SettingsCallStatusTonesForm(void);
+ void Initialize(void);
+
+public:
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+ virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ //From IGroupedTableViewItemEventListener - Called when the state of a TableViewGroupItem is changed.
+ virtual void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status){};
+ //From IGroupedTableViewItemEventListener - Called when the state of a TableViewItem in the GroupedTableView is changed.
+ virtual void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
+ //From IGroupedTableViewItemEventListener - Called when the TableViewContextItem is opened or closed.
+ virtual void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated){};
+
+ //From IGroupedTableViewItemProvider - Gets the total number of groups.
+ virtual int GetGroupCount(void);
+ //From IGroupedTableViewItemProvider - Gets the total number of items in the specified group.
+ virtual int GetItemCount(int groupIndex);
+ //From IGroupedTableViewItemProvider - Gets the group item for the specified index from the item provider.
+ virtual Tizen::Ui::Controls::TableViewGroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ //From IGroupedTableViewItemProvider - Deletes the specified group item.
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
+ //From IGroupedTableViewItemProvider - Updates the specified group item.
+ virtual void UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
+ //From IGroupedTableViewItemProvider - Creates the specified item.
+ virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ //From IGroupedTableViewItemProvider - Deletes the specified item.
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ //From IGroupedTableViewItemProvider - Updates the specified item.
+ virtual void UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ //From IGroupedTableViewItemProvider - Gets the default height of an group item.
+ virtual int GetDefaultGroupItemHeight(void);
+ //From IGroupedTableViewItemProvider - Gets the default height of an item.
+ virtual int GetDefaultItemHeight(void);
+
+private:
+ //create call reminders status menu
+ result InitializeGroupedTableView(void);
+
+private:
+ //Groups for menu
+ enum TonesMenuGroupId
+ {
+ GROUP_CALL_CONNECT,
+ GROUP_CALL_CONNECT_HLPTXT,
+ GROUP_CALL_REMINDER,
+ GROUP_CALL_REMINDER_HLPTXT,
+ GROUP_CALL_END,
+ GROUP_CALL_END_HLPTXT,
+ GROUP_TOTALCOUNT, //always the last element to get group count
+ };
+
+ //Items for "GROUP_CALL_CONNECT" group
+ enum CallConnectItems
+ {
+ CALLCONNECT_CONNECT_TONE,
+ CALLCONNECT_TOTALCOUNT,
+ };
+
+ //Items for "GROUP_CALL_REMINDER" group
+ enum CallReminderItems
+ {
+ CALLREMINDER_MINUTE_REMINDERS,
+ CALLREMINDER_TOTALCOUNT,
+ };
+
+ //Items for "GROUP_CALL_END" group
+ enum CallEndItems
+ {
+ CALLEND_END_TONE,
+ CALLEND_TOTALCOUNT,
+ };
+
+ //Singleton.
+ SettingsPresentationModel* __pSettingsPresentor;
+};
+
+#endif //_PHN_SETTINGS_CALL_STATUS_TONES_FORM_H_
--- /dev/null
+//
+// 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 PhnSettingsConstants.h
+ * @brief This is the header file for providing common constants across application.
+ *
+ */
+#ifndef _PHN_SETTINGS_CONSTANTS_H_
+#define _PHN_SETTINGS_CONSTANTS_H_
+
+#include <FBase.h>
+#include <FMedia.h>
+#include <FGraphics.h>
+
+enum ActionId
+{
+ IDA_VOICEMAIL = 1,
+ IDA_SELECT_PHOTO2,
+ IDA_SELECT_PHOTO3,
+ IDA_SELECT_PHOTO4,
+ IDA_SELECT_PHOTO5,
+ IDA_SELECT_PHOTO6,
+ IDA_SELECT_PHOTO7,
+ IDA_SELECT_PHOTO8,
+ IDA_SELECT_PHOTO9,
+ IDA_SELECT_CONTACT,
+};
+
+enum FooterActionId
+{
+ IDA_ADD_FOOTER_ITEMID = IDA_SELECT_CONTACT + 1,
+ IDA_DELETE_FOOTER_ITEMID,
+ IDA_CANCEL_FOOTER_ITEMID,
+ IDA_NOACTION_ITEMID,
+};
+
+enum HeaderActionId
+{
+ IDA_SAVE_HEADER_ITEMID = IDA_NOACTION_ITEMID + 1,
+ IDA_CANCEL_HEADER_ITEMID,
+};
+
+enum PopupActionId
+{
+ IDA_BUTTON_CLOSE_SPEED_DIAL_POPUP = IDA_CANCEL_HEADER_ITEMID + 1,
+ IDA_UPDATE_SPEED_DIAL,
+ IDA_REMOVE_SPEED_DIAL,
+};
+enum CallForwardCondition
+{
+ CALL_FORWARD_ALL, /* Forward All Calls */
+ CALL_FORWARD_BUSY, /* Forward if Busy */
+ CALL_FORWARD_NO_REPLY, /* Forward if No Reply */
+ CALL_FORWARD_NOT_REACHABLE /* Forward if Not Reachable */
+};
+
+enum CallBarringType
+{
+ CALL_BARRING_ALL_OUTGOING, /* Barring All Outgoing Calls */
+ CALL_BARRING_INTERNATIONAL_OUTGOING, /* Barring Outgoing International Calls */
+ CALL_BARRING_INTERNATIONAL_EXCEPT_HOME, /* Barring Outgoing International Calls except to Home Country */
+ CALL_BARRING_ALL_INCOMING, /* Barring All Incoming Calls */
+ CALL_BARRING_INCOMING_ROAMING /* Barring Incoming Calls when roam*/
+};
+
+enum CallLineIdentity
+{
+ CALL_LINE_IDENTITY_DEFAULT = 0, /**< Calling line identity will be sent. Based on network setting, Line identity will presented to the called party. */
+ CALL_LINE_IDENTITY_SHOW, /**< Display calling line identity */
+ CALL_LINE_IDENTITY_HIDE /**< Hide the display of Calling line identity */
+};
+
+enum CallRejectMatchCondition
+{
+ CALL_REJECT_MATCH_EXACTLY = 1,
+ CALL_REJECT_MATCH_START,
+ CALL_REJECT_MATCH_END,
+ CALL_REJECT_MATCH_INCLUDE,
+};
+
+enum CallRejectUpdateField
+{
+ CALL_REJECT_UPDATE_RULE = 1,
+ CALL_REJECT_UPDATE_NUMBER,
+ CALL_REJECT_UPDATE_ACTIVATE
+};
+
+enum CallAlertStatus
+{
+ CALL_ALERT_OFF = 0,
+ CALL_ALERT_SOUND,
+ CALL_ALERT_VIBRATE
+};
+
+enum CallState
+{
+ /** No call connected */
+ CALL_STATE__CALL_OFF = 0,
+ /** Voice call is connecting */
+ CALL_STATE_CALL_VOICE_CONNECTING,
+ /** Voice call is connected */
+ CALL_STATE_CALL_VOICE_ACTIVE,
+ /** Video call is connecting */
+ CALL_STATE_CALL_VIDEO_CONNECTING,
+ /** Video call is connecting */
+ CALL_STATE_CALL_VIDEO_ACTIVE,
+
+ CALL_STATE_MAX
+
+};
+
+//Settings UI contants
+// Colors used in List views //
+extern const unsigned int COLOR_GROUP_ITEM_BG;
+extern const unsigned int COLOR_LIST_MENU_ITEM;
+extern const unsigned int COLOR_SECONDDEPTH_ITEM_BG;
+extern const unsigned int COLOR_HELP_ITEM_BG;
+extern const unsigned int COLOR_NORMAL_MAIN_TXT;
+extern const unsigned int COLOR_NORMAL_SUB_TXT;
+extern const unsigned int COLOR_PRESS_SUB_TXT;
+extern const unsigned int COLOR_PRESS_MAIN_TXT;
+extern const unsigned int COLOR_HELP_TXT;
+extern const unsigned int COLOR_LEFT_HEADER_EXPAND_ITEMS;
+//Main List Option text
+extern const unsigned int COLOR_MAIN_TXT;
+//Main List text
+extern const int FONT_SIZE_MAIN_TXT;
+extern const int FONT_SIZE_SUB_TXT;
+//Help text
+extern const int FONT_SIZE_HELP_TXT;
+extern const int W_HDR_FTR_ICON;
+extern const int H_HDR_FTR_ICON;
+//Processing Animation constants
+extern const int IDI_ANIM_DURATION;
+extern const int IDI_ANIM_PROGRESS_COUNT;
+//Delete List
+extern const unsigned int COLOR_NORMAL_ITEM_BG;
+extern const unsigned int COLOR_PRESS_ITEM_BG;
+extern const unsigned int COLOR_SELECTALL_ITEM_BG;
+
+// Dimensions used in List views //
+// menu item height
+extern const int H_LIST_HIDDENGROUP_ITEM;
+extern const int H_LIST_NORMAL_MENU_ITEM;
+extern const int H_LIST_DROPDOWN_MENU_ITEM;
+extern const int H_LIST_MENU_SINGLELINE_HLPTXT_ITEM;
+extern const int H_LIST_MENU_TWOLINE_HLPTXT_ITEM;
+//text item height
+extern const int H_LIST_NORMAL_TXT_ITEM;
+extern const int H_LIST_SUB_TXT_ITEM;
+//Two line text for Drop down menu item
+extern const int H_LIST_DROPDOWN_TXT_ITEM;
+//single line text
+extern const int X_LIST_MENU_TEXT_ITEM;
+extern const int Y_LIST_MENU_TEXT_ITEM;
+//Help text
+extern const int X_LIST_MENU_HLPTXT_ITEM;
+extern const int Y_LIST_MENU_HLPTXT_ITEM;
+//custom Item for Bg line
+extern const int Y_CUSTOM_BG_ELEMENT;
+//Position for delete list item
+extern const int X_DEL_LIST_ELEMENT;
+extern const int Y_DEL_LIST_ELEMENT;
+
+// Dimensions for icons //
+//Expand icon for DropDown Menu Items
+extern const int W_EXPAND_ICON;
+extern const int H_EXPAND_ICON;
+extern const int W_SLIDER_ICON;
+extern const int H_SLIDER_ICON;
+//contact icon for Add Rejected Number view
+extern const int W_CONTACT_ICON;
+extern const int H_CONTACT_ICON;
+//Dimensions for custom bg line
+extern const int W_CUSTOM_BG_ELEMENT;
+//Item Width for delete list
+extern const int W_DELETE_LIST_ITEM;
+//Width of Blue Header Rectangle for expandable group items
+extern const int W_LEFT_HEADER_EXPAND_ITEMS;
+
+// String Constants - Bitmap File
+extern const wchar_t* IDB_CONTROLBAR_SAVE_ICON;
+extern const wchar_t* IDB_CONTROLBAR_ICON_DELETE;
+extern const wchar_t* IDB_CANCEL_BTN_NORMAL;
+extern const wchar_t* IDB_VOICECALL_ICON;
+extern const wchar_t* IDB_LIST_EXPAND;
+extern const wchar_t* IDB_LIST_EXPAND_PRESSED;
+extern const wchar_t* IDB_LIST_OPENED;
+extern const wchar_t* IDB_LIST_OPENED_PRESSED;
+extern const wchar_t* IDB_BACK_HEADER_ITEM;
+extern const wchar_t* IDB_BACK_HEADER_ITEM_PRESSED;
+extern const wchar_t* IDB_CANCEL_FOOTER_ITEM;
+extern const wchar_t* IDB_PROCESSING_ICONS;
+
+//control name
+extern const wchar_t* IDC_GROUPEDTABLEVIEW;
+extern const wchar_t* IDC_LISTVIEW;
+extern const wchar_t* IDC_NUMBER_EDITFIELD;
+extern const wchar_t* IDC_SELECT_CONTACT_BUTTON;
+extern const wchar_t* IDC_FOWARDING_NUMBER_EDITFIELD;
+extern const wchar_t* IDC_VOICEMAIL_BUTTON;
+extern const wchar_t* IDC_REJECTMSG_EXPANDABLEEDITAREA;
+extern const wchar_t* IDC_EDITFIELD;
+extern const wchar_t* IDC_SELECTEDOPTION_SUBTEXT_LABEL;
+extern const wchar_t* IDC_ANIMATION_CONTROL;
+
+//resource string contants
+extern const wchar_t* IDS_ADD_BTN_STRING;
+extern const wchar_t* IDS_DELETE_BTN_STRING;
+extern const wchar_t* IDS_CANCEL_BTN_STRING;
+extern const wchar_t* IDS_REMOVE_CONTACT;
+extern const wchar_t* IDS_DELETE_NUMBER_TITLE;
+extern const wchar_t* IDS_DELETE_MSGS_TITLE;
+extern const wchar_t* IDS_SELECT_ALL_LIST_ITEM_STRING;
+extern const wchar_t* IDS_DEFAULT_REJECT_ITEM_STRING;
+extern const wchar_t* IDS_SETTINGS_MATCHCRITERIA_STRING;
+extern const wchar_t* IDS_CALLERID_BYNETWORK_STRING;
+extern const wchar_t* IDS_CALLERID_SHOW_STRING;
+extern const wchar_t* IDS_CALLERID_HIDE_STRING;
+extern const wchar_t* IDS_SETTING_CALLALERT_OFF_STRING;
+extern const wchar_t* IDS_SETTING_CALLALERT_SOUND_STRING;
+extern const wchar_t* IDS_SETTING_CALLALERT_VIBRATE_STRING;
+extern const wchar_t* IDS_SETTING_BARRING_STRING;
+extern const wchar_t* IDS_SETTING_WAITING_STRING;
+extern const wchar_t* IDS_SETTING_WAITING_HLP_STRING;
+extern const wchar_t* IDS_SETTING_STATUS_TONES_STRING;
+extern const wchar_t* IDS_SETTING_STATUS_TONES_HLP_STRING;
+extern const wchar_t* IDS_SETTING_AUTO_AREACODE_STRING;
+extern const wchar_t* IDS_SETTING_AUTO_AREACODE_HLP_STRING;
+extern const wchar_t* IDS_SETTING_REJECT_STRING;
+extern const wchar_t* IDS_SETTING_REJECT_HLP_STRING;
+extern const wchar_t* IDS_SETTING_REJECT_MSG_STRING;
+extern const wchar_t* IDS_SETTING_REJECT_MSG_HLP_STRING;
+extern const wchar_t* IDS_SETTING_SPEEDDIAL_STRING;
+extern const wchar_t* IDS_SETTING_FORWARDING_STRING;
+extern const wchar_t* IDS_SETTING_MORE_MAIN_STRING;
+extern const wchar_t* IDS_SETTING_MORE_SUB_STRING;
+extern const wchar_t* IDS_SETTING_WAITING_TIME_STRING;
+extern const wchar_t* IDS_SETTING_WAIT_INTERVAL_STRING;
+extern const wchar_t* IDS_SETTING_CONNECTTONE_STRING;
+extern const wchar_t* IDS_SETTING_CONNECTTONE_HLP_STRING;
+extern const wchar_t* IDS_SETTING_REMINDERS_STRING;
+extern const wchar_t* IDS_SETTING_REMINDERS_HLP_STRING;
+extern const wchar_t* IDS_SETTING_ENDTONE_STRING;
+extern const wchar_t* IDS_SETTING_ENDTONE_HLP_STRING;
+extern const wchar_t* IDS_SETTING_FORWARD_CALLTYPE_TITLE;
+extern const wchar_t* IDS_SETTING_BARRING_CALLTYPE_TITLE;
+extern const wchar_t* IDS_SETTING_VOICEFORWARD_OPTIONS_TITLE;
+extern const wchar_t* IDS_SETTING_VOICEBARRING_OPTIONS_TITLE;
+extern const wchar_t* IDS_SETTING_WAITING_OPTIONS_TITLE;
+extern const wchar_t* IDS_SETTING_CALLTYPE_VOICE_STRING;
+extern const wchar_t* IDS_SETTING_VOICEFORWARD_ALWAYS;
+extern const wchar_t* IDS_SETTING_VOICEFORWARD_IFBUSY;
+extern const wchar_t* IDS_SETTING_VOICEFORWARD_NOREPLY;
+extern const wchar_t* IDS_SETTING_VOICEFORWARD_OUTOFREACH;
+extern const wchar_t* IDS_SETTING_DEACTIVATE_STATUS;
+extern const wchar_t* IDS_SETTING_VOICEBARRING_OUTGOING;
+extern const wchar_t* IDS_SETTING_VOICEBARRING_INTERNATIONAL;
+extern const wchar_t* IDS_SETTING_VOICEBARRING_EXCEPTHOME;
+extern const wchar_t* IDS_SETTING_VOICEBARRING_INCOMING;
+extern const wchar_t* IDS_SETTING_VOICEBARRING_WHENROAMING;
+extern const wchar_t* IDS_SETTING_CALL_WAITING_OPTIONS;
+extern const wchar_t* IDS_MATCHCRITERIA_EXACT;
+extern const wchar_t* IDS_MATCHCRITERIA_START;
+extern const wchar_t* IDS_MATCHCRITERIA_END;
+extern const wchar_t* IDS_MATCHCRITERIA_INCLUDE;
+extern const wchar_t* IDS_SETTING_CALLERID_MAIN_STR;
+extern const wchar_t* IDS_SETTING_CALLERID_SUB_STR;
+extern const wchar_t* IDS_SETTING_CALL_ALERT_MAIN_STR;
+extern const wchar_t* IDS_SETTING_CALL_ALERT_SUB_STR;
+extern const wchar_t* IDS_SETTING_SAVE_HEADER_ITEM;
+extern const wchar_t* IDS_SETTING_DONE_HEADER_ITEM;
+extern const wchar_t* IDS_NOT_ASSIGNED_STR;
+
+#endif // _PHN_SETTINGS_CONSTANTS_H_
--- /dev/null
+//
+// 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 PhnSettingsDeleteListForm.h
+ * @brief This is the header file for the %SettingsDeleteListForm class.
+ *
+ * This header file contains the declarations for %SettingsDeleteListForm class.
+ */
+#ifndef _PHN_SETTINGS_DELETE_LIST_FORM_H_
+#define _PHN_SETTINGS_DELETE_LIST_FORM_H_
+
+#include <FBase.h>
+#include <FUi.h>
+#include "PhnCallRejectInfo.h"
+
+class SettingsPresentationModel;
+
+/**
+ * @class SettingsDeleteListForm
+ * @brief This class presents a settings form based UI for call settings - delete numbers to reject,
+ * delete rejection messages.
+ *
+ */
+class SettingsDeleteListForm
+ : public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::Controls::IListViewItemProvider
+ , public Tizen::Ui::Controls::IListViewItemEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+{
+public:
+ enum ListOfType
+ {
+ LISTOF_NUMBERS,
+ LISTOF_MESSAGES,
+ };
+
+public:
+ SettingsDeleteListForm(ListOfType listOfType);
+ virtual ~SettingsDeleteListForm(void);
+ void Initialize(void);
+
+public:
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ //Initialize list view's main menu
+ result InitializeListView(void);
+
+ void InitializeSelectLabel();
+
+ //From 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);
+
+ //From 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);
+
+private:
+ // Funtion is used to fetch list of rejected call numbers.
+ void FetchNumbersRejectList(void);
+ // Funtion is used to fetch list of "reject with messages".
+ void FetchRejectMsgsList(void);
+ // Funtion is used to initialise footer and footer items.
+ void InitializeFooter(void);
+ // Function is used to create "rejected number" items for list view.
+ Tizen::Ui::Controls::CustomItem* CreateListItemForNumbers(int index, int itemWidth);
+ // Function is used to create "reject with message" items for list view.
+ Tizen::Ui::Controls::CustomItem* CreateListItemForMsgs(int index, int itemWidth);
+ //used to select all items when selecting "Select All"
+ void SelectAllItems(bool isSelect);
+ //used to delete rejected numbers list
+ void DeleteRejectNumbersList(void);
+ //used to delete rejected messages list
+ void DeleteRejectMsgsList(void);
+
+private:
+ ListOfType __listOfType;
+ //list of rejected numbers
+ Tizen::Base::Collection::ArrayListT<CallRejectInfo>* __pNumbersList;
+ //list of reject msgs
+ Tizen::Base::Collection::IMapT<int, Tizen::Base::String>* __pMsgsMap;
+ //not owned
+ SettingsPresentationModel* __pSettingsPresentor;
+ int __checkedItemCount;
+ //Selected pop up label
+ Tizen::Ui::Controls::Label* __pSelectedLabel;
+};
+
+#endif //_PHN_SETTINGS_DELETE_LIST_FORM_H_
--- /dev/null
+//
+// 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 PhnSettingsEditRejectMsgForm.h
+ * @brief This is the header file for the %SettingsEditRejectMsgForm class.
+ *
+ * This header file contains the declarations for %SettingsEditRejectMsgForm class.
+ */
+#ifndef _PHN_SETTINGS_EDIT_REJECT_MSG_FORM_H_
+#define _PHN_SETTINGS_EDIT_REJECT_MSG_FORM_H_
+
+#include <FBase.h>
+#include <FUi.h>
+
+class SettingsPresentationModel;
+
+/**
+ * @class SettingsEditRejectMsgForm
+ * @brief This class presents a settings form based UI for editing reject messages from call settings.
+ *
+ */
+class SettingsEditRejectMsgForm
+ : public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::ITextEventListener
+ , public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::Scenes::ISceneEventListener
+{
+public:
+ enum FormMode
+ {
+ FORMMODE_NEW_MESSAGE,
+ FORMMODE_EDIT_MESSAGE,
+ };
+
+public:
+ SettingsEditRejectMsgForm(FormMode formMode);
+ virtual ~SettingsEditRejectMsgForm(void);
+ bool Initialize(void);
+
+public:
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ //From ITextEventListener
+ virtual void OnTextValueChanged(const Tizen::Ui::Control& source);
+ virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source);
+
+private:
+ //Funtion is used to initialise header and header items.
+ void InitializeHeader(void);
+
+private:
+ int __itemIndex;
+ //used to store form mode.
+ FormMode __formMode;
+ SettingsPresentationModel* __pSettingsPresentor;
+};
+
+#endif //_PHN_SETTINGS_EDIT_REJECT_MSG_FORM_H_
--- /dev/null
+//
+// 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 PhnSettingsForwardToNumberForm.h
+ * @brief This is the header file for the %SettingsForwardToNumberForm class.
+ *
+ * This header file contains the declarations for %SettingsForwardToNumberForm class.
+ */
+#ifndef _PHN_SETTINGS_FORWARD_TO_NUMBER_FORM_H_
+#define _PHN_SETTINGS_FORWARD_TO_NUMBER_FORM_H_
+
+#include <FBase.h>
+#include <FUi.h>
+#include "PhnSettingsConstants.h"
+#include "PhnErrorMsgPopup.h"
+
+class SettingsPresentationModel;
+
+/**
+ * @class SettingsForwardToNumberForm
+ * @brief This class presents a settings form based UI for saving forwarding call settings.
+ *
+ */
+class SettingsForwardToNumberForm
+ : public IPopupClosedEventListener
+ , public ISettingsEventListener
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::IKeypadEventListener
+ , public Tizen::Ui::ITextEventListener
+ , public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::Controls::IGroupedTableViewItemProvider
+ , public Tizen::Ui::Controls::IGroupedTableViewItemEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public Tizen::App::IAppControlResponseListener
+{
+public:
+ enum ForwardCondition
+ {
+ FORWARDCONDITION,
+ FORWARDCONDITION_NOREPLY,
+ };
+
+public:
+ SettingsForwardToNumberForm(ForwardCondition forwardCondition);
+ virtual ~SettingsForwardToNumberForm(void);
+ bool Initialize(void);
+
+public:
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ //From IGroupedTableViewItemEventListener - Called when the state of a TableViewGroupItem is changed.
+ virtual void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status){};
+ //From IGroupedTableViewItemEventListener - Called when the state of a TableViewItem in the GroupedTableView is changed.
+ virtual void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
+ //From IGroupedTableViewItemEventListener - Called when the TableViewContextItem is opened or closed.
+ virtual void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated){};
+
+ //From IGroupedTableViewItemProvider - Gets the total number of groups.
+ virtual int GetGroupCount(void);
+ //From IGroupedTableViewItemProvider - Gets the total number of items in the specified group.
+ virtual int GetItemCount(int groupIndex);
+ //From IGroupedTableViewItemProvider - Gets the group item for the specified index from the item provider.
+ virtual Tizen::Ui::Controls::TableViewGroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ //From IGroupedTableViewItemProvider - Deletes the specified group item.
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
+ //From IGroupedTableViewItemProvider - Updates the specified group item.
+ virtual void UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
+ //From IGroupedTableViewItemProvider - Creates the specified item.
+ virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ //From IGroupedTableViewItemProvider - Deletes the specified item.
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ //From IGroupedTableViewItemProvider - Updates the specified item.
+ virtual void UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ //From IGroupedTableViewItemProvider - Gets the default height of an group item.
+ virtual int GetDefaultGroupItemHeight(void);
+ //From IGroupedTableViewItemProvider - Gets the default height of an item.
+ virtual int GetDefaultItemHeight(void);
+
+ //From IKeypadEventListener
+ virtual void OnKeypadWillOpen(Tizen::Ui::Control& source);
+ virtual void OnKeypadOpened(Tizen::Ui::Control& source){};
+ virtual void OnKeypadClosed(Tizen::Ui::Control& source);
+ virtual void OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction){};
+ virtual void OnKeypadBoundsChanged(Tizen::Ui::Control& source){};
+
+ //From ISettingsEventListener
+ virtual void HandleGetCallWaitingResponse(bool isCallSuccessful, bool callWaitingActivated){};
+ virtual void HandleSetCallWaitingResponse(bool isCallSuccessful, bool isCallWaitingEnabled){};
+ virtual void HandleGetCallForwardResponse(bool isCallSuccessful, CallForwardCondition callFwdCondition, const Tizen::Base::String& callFwdNumber, bool callForwardActivated, int noReplyWaitTime);
+ virtual void HandleSetCallForwardResponse(bool isCallSuccessful, CallForwardCondition callFwdCondition, const Tizen::Base::String& callFwdNumber, bool isCallForwardActivated, int noReplyWaitTime){};
+ virtual void HandleGetCallBarringResponse(bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated){};
+ virtual void HandleSetCallBarringResponse(bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated){};
+
+ //Event Listener method from IPopupClosedEventListener
+ virtual void HandlePopupClosed(void);
+
+ //Launches contacts app control for pick operation
+ void LaunchContactsAppControl(void);
+ //From IAppControlResponseListener
+ virtual void OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData);
+ // Called when a text is changed.
+ virtual void OnTextValueChanged(const Tizen::Ui::Control& source);
+ // Called when a change made to the text is canceled.
+ virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source);
+
+private:
+ // This function is used to collapse selective groups while form initialization only.
+ void CollapseSelectiveGroups(Tizen::Ui::Controls::GroupedTableView* pMainMenuTableView);
+ // Function is used to initialise header and headerItems.
+ void InitializeHeader(void);
+ // Funtion is use dto initalise numeric edit field.
+ void InitializeNumberEditField(void);
+ // Function is used to initialise group table view and add item provider.
+ result InitializeGroupedTableView(void);
+ // Function is used to create list items which come under "GroupWaitTimeOptionsItems".
+ Tizen::Ui::Controls::TableViewItem* CreateWaitingTimeOptionsMenuItems(int itemIndex, int itemWidth);
+ // This function is used to create "SELECTWAITTIME_WAIT_TIME".
+ Tizen::Ui::Controls::TableViewItem* CreateExpandableWaitingItem(int itemWidth);
+ //Funtion is used to set or change expand icon based on item's state.
+ void SetExpandIconToItem(Tizen::Ui::Controls::TableViewItem* pItem, bool isExpanded);
+ // This function is used to handle selection of 'GroupSelectWaitTimeItems'.
+ void ToggleGroupExpansion(Tizen::Ui::Controls::GroupedTableView& tableView, int itemIndex);
+ // This function is used to handle selection of waiting time.
+ void HandleSelectedWaitingTime(Tizen::Ui::Controls::GroupedTableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewItemStatus status);
+ Tizen::Base::String FetchTextForSelectedOption(int selectedWaitTimeOption);
+ void ShowErrorMessage(int errorCode);
+
+private:
+ //Main groups available in list view.
+ enum WaitingTimeGroupId
+ {
+ GROUP_SELECT_WAIT_TIME,
+ GROUP_WAIT_TIME_OPTIONS,
+ GROUP_TOTALCOUNT,
+ };
+ //Items for 'GROUP_SELECT_WAIT_TIME'
+ enum GroupSelectWaitTimeItems
+ {
+ SELECTWAITTIME_WAIT_TIME,
+ SELECTWAITTIME_TOTALCOUNT, //No of options in "GROUP_ENTER_WAIT" drop down menu
+ };
+ //Items for 'GROUP_WAIT_TIME_OPTIONS'
+ enum GroupWaitTimeOptionsItems
+ {
+ WAITTIMEOPTIONS_FIVE_SEC = 5,
+ WAITTIMEOPTIONS_TEN_SEC = 10,
+ WAITTIMEOPTIONS_FIFTEEN_SEC = 15,
+ WAITTIMEOPTIONS_TWENTY_SEC = 20,
+ WAITTIMEOPTIONS_TWENTYFIVE_SEC = 25,
+ WAITTIMEOPTIONS_THIRTY_SEC = 30,
+ };
+
+ ForwardCondition __forwardCondition;
+ //call forward condition to be set
+ CallForwardCondition __callForwardCondition;
+ SettingsPresentationModel* __pSettingsPresentor;
+ GroupWaitTimeOptionsItems __selectedWaitTime;
+ bool __isWaitTimeOptionsMenuExpanded;
+ //Ownership
+ ErrorMsgPopup* __pErrorMsgPopup;
+};
+
+#endif //_PHN_SETTINGS_FORWARD_TO_NUMBER_FORM_H_
--- /dev/null
+//
+// 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 PhnSettingsMainMenuForm.h
+ * @brief This is the header file for the %SettingsMainMenuForm class.
+ *
+ * This header file contains the declarations for %SettingsMainMenuForm class.
+ */
+#ifndef _PHN_SETTINGS_MAIN_MENU_FORM_H_
+#define _PHN_SETTINGS_MAIN_MENU_FORM_H_
+
+#include <FBase.h>
+#include <FUi.h>
+
+/**
+ * @class SettingsMainMenuForm
+ * @brief This class presents a main menu form based UI for call settings.
+ *
+ */
+class SettingsMainMenuForm
+ : public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::Controls::IFormBackEventListener
+ , public Tizen::Ui::Controls::IGroupedTableViewItemProvider
+ , public Tizen::Ui::Controls::IGroupedTableViewItemEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+{
+public:
+ SettingsMainMenuForm(void);
+ virtual ~SettingsMainMenuForm(void);
+ bool Initialize(void);
+
+public:
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+ virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ //From IGroupedTableViewItemEventListener - Called when the state of a TableViewGroupItem is changed.
+ virtual void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status){};
+ //From IGroupedTableViewItemEventListener - Called when the state of a TableViewItem in the GroupedTableView is changed.
+ virtual void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
+ //From IGroupedTableViewItemEventListener - Called when the TableViewContextItem is opened or closed.
+ virtual void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated){};
+
+ //From IGroupedTableViewItemProvider - Gets the total number of groups.
+ virtual int GetGroupCount(void);
+ //From IGroupedTableViewItemProvider - Gets the total number of items in the specified group.
+ virtual int GetItemCount(int groupIndex);
+ //From IGroupedTableViewItemProvider - Gets the group item for the specified index from the item provider.
+ virtual Tizen::Ui::Controls::TableViewGroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ //From IGroupedTableViewItemProvider - Deletes the specified group item.
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
+ //From IGroupedTableViewItemProvider - Updates the specified group item.
+ virtual void UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
+ //From IGroupedTableViewItemProvider - Creates the specified item.
+ virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ //From IGroupedTableViewItemProvider - Deletes the specified item.
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ //From IGroupedTableViewItemProvider - Updates the specified item.
+ virtual void UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ //From IGroupedTableViewItemProvider - Gets the default height of an group item.
+ virtual int GetDefaultGroupItemHeight(void);
+ //From IGroupedTableViewItemProvider - Gets the default height of an item.
+ virtual int GetDefaultItemHeight(void);
+
+private:
+ //Function is used to initialize group table view.
+ result InitializeGroupedTableView(void);
+
+private:
+ //Groups for main menu
+ enum MainMenuGroupId
+ {
+ GROUP_CALL_REJECTION,
+ GROUP_CALL_REJECTION_HLPTXT,
+ GROUP_REJECT_MSG,
+ GROUP_REJECT_MSG_HLPTXT,
+ GROUP_MAIN_CALL_SETTINGS,
+// GROUP_VIDEOCALL_SETTING,
+// GROUP_VOICEMAIL_SETTING,
+ GROUP_TOTALCOUNT, //always the last element to get group count
+ };
+
+ //Items for 'GROUP_CALL_REJECTION'
+ enum GroupCallRejectionItems
+ {
+ CALLREJECTION_CALLREJECT_SETTINGS,
+ CALLREJECTION_TOTALCOUNT,
+ };
+
+ //Items for 'GROUP_REJECT_MSG'
+ enum GroupRejectMsgItems
+ {
+ REJECTMSG_REJECT_MESSAGES_SETTINGS,
+ REJECTMSG_TOTALCOUNT,
+ };
+
+ //Setting id's for "GROUP_MAIN_CALL_SETTINGS" group
+ enum GroupMainCallSettingsItems
+ {
+ MAINCALLSETTINGS_SPEEDDIAL,
+ MAINCALLSETTINGS_CALLFORWARDING,
+ MAINCALLSETTINGS_MORECALLSETTINGS,
+ MAINCALLSETTINGS_TOTALCOUNT, //always the last element to get settings count
+ };
+};
+
+#endif //_PHN_SETTINGS_MAIN_MENU_FORM_H_
--- /dev/null
+//
+// 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 PhnSettingsManager.h
+ * @brief This is the header file for the %SettingsManager class.
+ *
+ * This header file contains the declarations for %SettingsManager class.
+ */
+#ifndef _PHN_SETTINGS_MANAGER_H_
+#define _PHN_SETTINGS_MANAGER_H_
+
+#include <FBase.h>
+#include <FIo.h>
+#include <FSocial.h>
+#include "ITapiCall.h"
+#include "ITapiSs.h"
+#include "tapi_common.h"
+#include "TapiUtility.h"
+#include "TelCall.h"
+#include "TelSs.h"
+#include "vconf.h"
+#include "PhnCallRejectInfo.h"
+#include "PhnISettingsEventListener.h"
+#include "PhnSettingsConstants.h"
+#include "PhnCallSettingDataService.h"
+
+/**
+ * @class SettingsManager
+ * @brief This class provides functionality to set and fetch settings related to voice call, e.g. Call barring,
+ * call forwarding, etc.
+ */
+class SettingsManager
+{
+public:
+ //create a singleton instance
+ static SettingsManager* GetInstance(void);
+
+private:
+ //constructor
+ SettingsManager(void);
+ SettingsManager(SettingsManager& manager);
+ SettingsManager& operator =(const SettingsManager& manager);
+
+ result Construct(void);
+ static void CreateInstance(void);
+ static void DestroyInstance(void);
+
+public:
+ // Add the observer for setting events
+ void AddSettingEventListener(ISettingsEventListener* pSettingsEventListener);
+ //remove the observer for setting events
+ void RemoveSettingEventListener(ISettingsEventListener* pSettingsEventListener);
+ // Set the call Forwarding status
+ int SetCallForwardStatus(const Tizen::Base::String& phoneNumber, CallForwardCondition callFwdCondition, bool activateFwding, int noReplyTime = TAPI_SS_CF_NO_REPLY_TIME_30_SECS);
+ // Get the call Forwarding status
+ int GetCallForwardStatus(CallForwardCondition callFwdCondition);
+ // callback function to handle response for set call forward request
+ static void HandleSetForwardResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData);
+ // callback function to handle response for get call forward request
+ static void HandleGetForwardResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData);
+ // Set the call barring status
+ int SetCallBarringStatus(const Tizen::Base::String& password, CallBarringType callBarringType, bool activateBarring);
+ // callback function to handle response for set call barring request
+ static void HandleSetBarringResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData);
+ // Get the call barring status
+ int GetCallBarringStatus(CallBarringType callBarringType);
+ // callback function to handle response for set call barring request
+ static void HandleGetBarringResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData);
+ // Set the call waiting status
+ int SetCallWaitingStatus(bool activateWaiting);
+ // callback function to handle response for set call waiting request
+ static void HandleSetWaitingResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData);
+ // Get the call waiting status
+ int GetCallWaitingStatus(void);
+ // callback function to handle response for set call waiting request
+ static void HandleGetWaitingResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData);
+ // Get the reject message list
+ Tizen::Base::Collection::IMapT<int,Tizen::Base::String>* GetRejectMessageListN(void);
+ // Add/edit the message list at the given index
+ result SetRejectMessage(int messageIndex, const Tizen::Base::String& rejectMessage);
+ // delete the message from the list
+ result RemoveRejectMessage(const Tizen::Base::Collection::IListT<int>& deleteKeyList);
+ // get the prefix dialing list
+ Tizen::Base::Collection::IList* GetPrefixDialListN(void);
+ // Set the number to the prefix dial list
+ result SetPrefixDialNumber(int phoneNumberIndex, const Tizen::Base::String& phoneNumber);
+ // Get the number set at 'phoneNumberIndex'.
+ result GetPrefixDialNumberAtIndex(int phoneNumberIndex, Tizen::Base::String& phoneNumber);
+ // delete the number from the list
+ result RemovePrefixDialNumber(int phoneNumberIndex);
+ // Set the prefix dial status
+ result SetPrefixDialingStatus(bool enablePrefixDialing);
+ // Set the active prefix dial to be used
+ result SetActivePrefixDialingValue(int prefixDialIndex);
+ // Get the active prefix dial to be used
+ result GetActivePrefixDialingValue(int& prefixDialIndex);
+ // Get the prefix dialing status
+ bool GetPrefixDialingStatus(void);
+ // Set the video call image path
+ result SetVideoCallImagePath(const Tizen::Base::String& imagePath);
+ // Get the video call image path
+ result GetVideoCallImagePath(Tizen::Base::String& imagePath);
+ // Set the call line identity
+ result SetCallLineIdentity(CallLineIdentity identity);
+ // Get the call line identity
+ result GetCallLineIdentity(CallLineIdentity& identity);
+ // Add the number to the call reject list
+ result AddToCallRejectList(const Tizen::Base::String& phoneNumber, CallRejectMatchCondition rejectCondition);
+ // Get the call reject list
+ Tizen::Base::Collection::IListT<CallRejectInfo>* GetCallRejectList(void);
+ // Update the call reject number already present
+ result UpdateCallRejectRow(int rowId, const Tizen::Base::String& phoneNumber, bool activate, CallRejectMatchCondition rejectCondition);
+ // Remove the call reject item
+ result RemoveCallRejectRow(int rowId);
+ // Set the reject "unknown" status
+ result SetUnknownRejectStatus(bool activate);
+ // Get the reject "unknown" status
+ bool GetUnknownRejectStatus(void);
+ // checks if the call is to be rejected
+ bool IsCallToBeRejected(Tizen::Base::String& phoneNumber);
+ // Set the call alert status
+ result SetCallAlertStatus(CallAlertStatus callAlertStatus);
+ // Get the call alert status
+ result GetCallAlertStatus(CallAlertStatus& callAlertStatus);
+ // Set the call connect tone status
+ result SetCallConnectToneStatus(bool activate);
+ // Get the call connect tone status
+ bool GetCallConnectToneStatus(void);
+ // Set the minute minder tone status
+ result SetMinuteMinderToneStatus(bool activate);
+ // Get the minute minder tone status
+ bool GetMinuteMinderToneStatus(void);
+ // Set the call End tone status
+ result SetCallEndToneStatus(bool activate);
+ // Get the call End tone status
+ bool GetCallEndToneStatus(void);
+ //Set the speed dial mapping
+ result SetSpeedDialMapping(const Tizen::Base::String& contactId, int numberToMap);
+ // Get the speed dial mapping list
+ Tizen::Base::Collection::IMapT<int,SpeedDialInfo>* GetSpeedDialMappingN(void);
+ //Remove the speed dial mapping
+ result RemoveSpeedDialMapping(int rowId);
+ //Change the speed dial mapped
+ result UpdateSpeedDialMapping(int rowId, const Tizen::Base::String& contactId, int numberToMap);
+ //fetch the mapped speed dial contact no.
+ Tizen::Base::String* GetMappedSpeedDialNumberN(int aIndex);
+ //Fetch Contacts details by contact id
+ Tizen::Social::Contact* FetchContactDetailsN(const Tizen::Base::String& contactId);
+ //Sets the Call State
+ result SetCallState(CallState callState);
+
+private:
+
+ enum ForwardResponseType
+ {
+ SET_CALLFORWARD_RESPONSE,
+ GET_CALLFORWARD_RESPONSE,
+ };
+ enum BarringResponseType
+ {
+ SET_CALLBARRING_RESPONSE,
+ GET_CALLBARRING_RESPONSE,
+ };
+ enum WaitingResponseType
+ {
+ SET_CALLWAITING_RESPONSE,
+ GET_CALLWAITING_RESPONSE,
+ };
+private:
+ virtual ~SettingsManager(void);
+ //notify event listeners for Setting or Getting Call Forwarding status events.
+ void NotifyForwardingEventListeners(ForwardResponseType responseType, bool isCallSuccessful, CallForwardCondition callFwdCondition, const Tizen::Base::String& callFwdNumber, bool isCallForwardActivated, int noReplyWaitTime);
+ //notify event listeners for Setting or Getting Call Barring status events.
+ void NotifyBarringEventListeners(BarringResponseType responseType, bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated);
+ //notify event listeners for Setting or Getting Call Waiting status events.
+ void NotifyWaitingEventListeners(WaitingResponseType responseType, bool isCallSuccessful, bool isCallWaitingActivated);
+
+private:
+ static SettingsManager* __pInstance;
+ //handle to Telephony API
+ TapiHandle* __pTapiHandle;
+ Tizen::Base::Collection::ArrayListT<ISettingsEventListener*>* __pSettingsEventListener;
+ CallSettingDataService* __pCallSettingDataService;
+};
+
+#endif // _PHN_SETTINGS_MANAGER_H_
--- /dev/null
+//
+// 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 PhnSettingsMoreOptionsForm.h
+ * @brief This is the header file for the %SettingsMoreOptionsForm class.
+ *
+ * This header file contains the declarations for %SettingsMoreOptionsForm class.
+ */
+#ifndef _PHN_SETTINGS_MORE_OPTIONS_FORM_H_
+#define _PHN_SETTINGS_MORE_OPTIONS_FORM_H_
+
+#include <FBase.h>
+#include <FUi.h>
+
+class SettingsPresentationModel;
+
+/**
+ * @class SettingsMoreOptionsForm
+ * @brief This class presents a additional settings form for call settings.
+ *
+ */
+class SettingsMoreOptionsForm
+ : public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::Controls::IFormBackEventListener
+ , public Tizen::Ui::Controls::IGroupedTableViewItemProvider
+ , public Tizen::Ui::Controls::IGroupedTableViewItemEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+{
+public:
+ SettingsMoreOptionsForm(void);
+ virtual ~SettingsMoreOptionsForm(void);
+ bool Initialize(void);
+
+public:
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+ virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ // Function is used to initialise group table view.
+ result InitializeGroupedTableView(void);
+
+ //From IGroupedTableViewItemEventListener - Called when the state of a TableViewGroupItem is changed.
+ virtual void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status){};
+ //From IGroupedTableViewItemEventListener - Called when the state of a TableViewItem in the GroupedTableView is changed.
+ virtual void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
+ //From IGroupedTableViewItemEventListener - Called when the TableViewContextItem is opened or closed.
+ virtual void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated){};
+
+ //From IGroupedTableViewItemProvider - Gets the total number of groups.
+ virtual int GetGroupCount(void);
+ //From IGroupedTableViewItemProvider - Gets the total number of items in the specified group.
+ virtual int GetItemCount(int groupIndex);
+ //From IGroupedTableViewItemProvider - Gets the group item for the specified index from the item provider.
+ virtual Tizen::Ui::Controls::TableViewGroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ //From IGroupedTableViewItemProvider - Deletes the specified group item.
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
+ //From IGroupedTableViewItemProvider - Updates the specified group item.
+ virtual void UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
+ //From IGroupedTableViewItemProvider - Creates the specified item.
+ virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ //From IGroupedTableViewItemProvider - Deletes the specified item.
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ //From IGroupedTableViewItemProvider - Updates the specified item.
+ virtual void UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ //From IGroupedTableViewItemProvider - Gets the default height of an group item.
+ virtual int GetDefaultGroupItemHeight(void);
+ //From IGroupedTableViewItemProvider - Gets the default height of an item.
+ virtual int GetDefaultItemHeight(void);
+
+private:
+ // This function is used to collapse selective groups while form initialization only.
+ void CollapseSelectiveGroups(Tizen::Ui::Controls::GroupedTableView* pMoreOptionsTableView);
+ // This function is used to create list items which come under "GROUP_CALLERID" & "GROUP_CALL_ALERT".
+ Tizen::Ui::Controls::TableViewItem* CreateExpandableItem(int groupIndex, int itemIndex, int itemWidth);
+ // This function is used to create list items which come under "GROUP_CALLERID_OPTIONS"
+ Tizen::Ui::Controls::TableViewItem* CreateCallerIdOptionsItem(int itemIndex, int itemWidth);
+ // This function is used to create list items which come under "GROUP_CALL_ALERT_OPTIONS"
+ Tizen::Ui::Controls::TableViewItem* CreateCallerAlertOptionsItem(int itemIndex, int itemWidth);
+ // This function is used to create list menu items
+ Tizen::Ui::Controls::TableViewItem* CreateSettingMenuItem(int groupIndex, int itemIndex, int itemWidth);
+ // Funtion is used to set icon to Expandable items based on its state.
+ void SetExpandIconToItem(Tizen::Ui::Controls::TableViewItem* pItem, bool isExpanded);
+ // Function is used to handle item selection for individual items.
+ void HandleSelectedSettings(int groupIndex, int itemIndex);
+ // Function is used to handle item selection for "GROUP_CALLERID_OPTIONS"
+ void HandleSelectedCallerIdOptions(Tizen::Ui::Controls::GroupedTableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewItemStatus state);
+ // Function is used to handle item selection for "GROUP_CALL_ALERT_OPTIONS"
+ void HandleSelectedCallAlertOptions(Tizen::Ui::Controls::GroupedTableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewItemStatus state);
+ Tizen::Base::String FetchSubTextForSelectedCallerId();
+ Tizen::Base::String FetchSubTextForSelectedCallerAlert();
+
+private:
+ //Groups
+ enum MoreMenuGroupId
+ {
+ GROUP_CALLERID,
+ GROUP_CALLERID_OPTIONS,
+ GROUP_CALL_SETTINGS,
+ GROUP_CALL_SETTINGS_HLPTXT,
+ GROUP_CALL_REMINDER,
+ GROUP_CALL_REMINDER_HLPTXT,
+ GROUP_CALL_ALERT,
+ GROUP_CALL_ALERT_OPTIONS,
+ GROUP_AREACODE,
+ GROUP_AREACODE_HLPTXT,
+ GROUP_TOTALCOUNT, //always the last element to get group count
+ };
+ //Items for 'GROUP_CALLERID'
+ enum GroupCallerIdItems
+ {
+ CALLERID_CALLER_SETTING,
+ CALLERID_TOTALCOUNT,
+ };
+ //Items for 'GROUP_CALLERID_OPTIONS'
+ enum GroupCallerIdOptionsItems
+ {
+ CALLEROPTIONS_BY_NETWORK,
+ CALLEROPTIONS_SHOW,
+ CALLEROPTIONS_HIDE,
+ CALLEROPTIONS_TOTALCOUNT, //No of options in "caller id" drop down menu
+ };
+ //Items for "GROUP_CALL_SETTINGS" group
+ enum CallSettingsItems
+ {
+ CALLSETTINGS_CALL_BARRING,
+ CALLSETTINGS_CALL_WAITING,
+ CALLSETTINGS_TOTALCOUNT,
+ };
+ //Items for "GROUP_CALL_REMINDER" group
+ enum CallReminderItems
+ {
+ CALLREMINDER_STATUS_TONES,
+ CALLREMINDER_TOTALCOUNT,
+ };
+ //Item for "GROUP_CALL_ALERT"
+ enum GroupCallAlertItems
+ {
+ CALLALERT_SETTING,
+ CALLALERT_TOTALCOUNT,
+ };
+ //Option Items for "GROUP_CALL_ALERT_OPTIONS"
+ enum GroupCallAlertOptionsItems
+ {
+ CALLALERT_OPTIONS_OFF,
+ CALLALERT_OPTIONS_SOUND,
+ CALLALERT_OPTIONS_VIBRATION,
+ CALLALERT_OPTIONS_TOTALCOUNT,
+ };
+ //Item for "GROUP_AREACODE" group
+ enum GroupAreaCodeItems
+ {
+ AREACODE_AUTO_AREA_CODE,
+ AREACODE_TOTALCOUNT,
+ };
+
+ SettingsPresentationModel* __pSettingsPresentor;
+ bool __isCallerIdExpanded;
+ bool __isCallAlertExpanded;
+ Tizen::Base::String __autoAreaCode;
+};
+
+#endif //_PHN_SETTINGS_MORE_OPTIONS_FORM_H_
--- /dev/null
+//
+// 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 PhnSettingsPresentationModel.h
+ * @brief This is the header file for the %SettingsPresentationModel class.
+ *
+ * This header file contains the declarations for %SettingsPresentationModel class.
+ */
+#ifndef _PHN_SETTINGS_PRESENTATION_MODEL_H_
+#define _PHN_SETTINGS_PRESENTATION_MODEL_H_
+
+#include <FSocial.h>
+#include "PhnISettingsEventListener.h"
+
+class SettingsManager;
+class CallRejectInfo;
+class SpeedDialInfo;
+
+/**
+ * @class SettingsPresentationModel
+ * @brief This class provides data to settings forms and provides functions
+ * to interact with Settings manager.
+ *
+ */
+class SettingsPresentationModel: public ISettingsEventListener
+{
+public:
+ //create a singleton instance
+ static SettingsPresentationModel* GetInstance(void);
+
+private:
+ SettingsPresentationModel(void);
+ SettingsPresentationModel(SettingsPresentationModel& presentor);
+ virtual ~SettingsPresentationModel(void);
+ SettingsPresentationModel& operator =(const SettingsPresentationModel& presentor);
+
+ //perform 2nd phase initialization
+ result Construct(void);
+ static void CreateInstance(void);
+ static void DestroyInstance(void);
+
+public:
+ // Add the observer for setting events
+ result AddSettingEventListener(ISettingsEventListener* pSettingsEventListener);
+ //remove the observer for setting events
+ void RemoveSettingEventListener(void);
+
+ // Get the reject message list
+ Tizen::Base::Collection::IMapT<int,Tizen::Base::String>* GetRejectMessageListN(void);
+ // Add the number to the call reject list
+ result AddToCallRejectList(const Tizen::Base::String& phoneNumber, CallRejectMatchCondition rejectCondition);
+ // Get the call reject list
+ Tizen::Base::Collection::IListT<CallRejectInfo>* GetCallRejectList(void);
+ // Set the number to the prefix dial list
+ result SetPrefixDialNumber(int phoneNumberIndex, const Tizen::Base::String& phoneNumber);
+ // Set the active prefix dial to be used
+ result SetActivePrefixDialingValue(int prefixDialIndex);
+ // Set the prefix dial status
+ result SetPrefixDialingStatus(bool enablePrefixDialing);
+ // Get the active prefix dial number to be used
+ result GetActivePrefixDialNumber(Tizen::Base::String& phoneNumber);
+ // Set the call barring status
+ int SetCallBarringStatus(const Tizen::Base::String& password, CallBarringType callBarringType, bool activateBarring);
+ // Get the call Forwarding status
+ int GetCallForwardStatus(CallForwardCondition callFwdCondition);
+ // Set the call Forwarding status
+ int SetCallForwardStatus(const Tizen::Base::String& phoneNumber, CallForwardCondition callFwdCondition, bool activateFwding, int noReplyTime);
+ // Get the call barring status
+ int GetCallBarringStatus(CallBarringType callBarringType);
+ // Set the call waiitng status
+ int SetCallWaitingStatus(bool activateWaiting);
+ // Get the call waiting status
+ int GetCallWaitingStatus(void);
+ // Set the call connect tone status
+ result SetCallConnectToneStatus(bool activate);
+ // Get the call connect tone status
+ bool GetCallConnectToneStatus(void);
+ // Set the minute minder tone status
+ result SetMinuteMinderToneStatus(bool activate);
+ // Get the minute minder tone status
+ bool GetMinuteMinderToneStatus(void);
+ // Set the call End tone status
+ result SetCallEndToneStatus(bool activate);
+ // Get the call End tone status
+ bool GetCallEndToneStatus(void);
+ // Update the call reject number already present
+ result UpdateCallRejectRow(int rowId, const Tizen::Base::String& phoneNumber, bool activate, CallRejectMatchCondition rejectCondition);
+ // Remove the call reject item
+ result RemoveCallRejectRow(int rowId);
+ // Add/edit the message list at the given index
+ result SetRejectMessage(int messageIndex, const Tizen::Base::String& rejectMessage);
+ // delete the message from the list
+ result RemoveRejectMessage(const Tizen::Base::Collection::IListT<int>& deleteKeyList);
+ // checks if the call is to be rejected
+ bool IsCallToBeRejected(Tizen::Base::String& phoneNumber);
+ //Set the speed dial mapping
+ result SetSpeedDialMapping(const Tizen::Base::String& contactId, int numberToMap);
+ // Get the speed dial mapping list
+ Tizen::Base::Collection::IMapT<int,SpeedDialInfo>* GetSpeedDialMappingN(void);
+ //remove speed dial mapping for given 'rowId'.
+ result RemoveSpeedDialMapping(int rowId);
+ //update speed dial mapping for given 'rowId'.
+ result UpdateSpeedDialMapping(int rowId, const Tizen::Base::String& contactId, int numberToMap);
+ // Set the call line identity
+ result SetCallLineIdentity(CallLineIdentity identity);
+ // Get the call line identity
+ result GetCallLineIdentity(CallLineIdentity& identity);
+ // Set the call alert status
+ result SetCallAlertStatus(CallAlertStatus callAlertStatus);
+ // Get the call alert status
+ result GetCallAlertStatus(CallAlertStatus& callAlertStatus);
+ // Set the reject "unknown" status
+ result SetUnknownRejectStatus(bool activate);
+ // Get the reject "unknown" status
+ bool GetUnknownRejectStatus(void);
+ //Fetch Contacts details by contact id
+ Tizen::Social::Contact* FetchContactDetailsN(const Tizen::Base::String& contactId);
+ //Sets the call state
+ result SetCallState(CallState callState);
+
+protected:
+ //From ISettingsEventListener
+ virtual void HandleGetCallWaitingResponse(bool isCallSuccessful, bool callWaitingActivated);
+ virtual void HandleSetCallWaitingResponse(bool isCallSuccessful, bool isCallWaitingEnabled);
+ virtual void HandleGetCallForwardResponse(bool isCallSuccessful, CallForwardCondition callFwdCondition, const Tizen::Base::String& callFwdNumber, bool callForwardActivated, int noReplyWaitTime);
+ virtual void HandleSetCallForwardResponse(bool isCallSuccessful, CallForwardCondition callFwdCondition, const Tizen::Base::String& callFwdNumber, bool isCallForwardActivated, int noReplyWaitTime);
+ virtual void HandleGetCallBarringResponse(bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated);
+ virtual void HandleSetCallBarringResponse(bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated);
+
+private:
+ static SettingsPresentationModel* __pInstance;
+ //Owned. Is responsible for destroying the instance
+ SettingsManager* __pSettingsMgr;
+ ISettingsEventListener* __pSettingsEventListener;
+};
+
+#endif // _PHN_SETTINGS_PRESENTATION_MODEL_H_
--- /dev/null
+//
+// 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 PhnSettingsRejectListForm.h
+ * @brief This is the header file for the %SettingsRejectListForm class.
+ *
+ * This header file contains the declarations for %SettingsRejectListForm class.
+ */
+#ifndef _PHN_SETTINGS_REJECT_LIST_FORM_H_
+#define _PHN_SETTINGS_REJECT_LIST_FORM_H_
+
+#include <FBase.h>
+#include <FUi.h>
+#include "PhnCallRejectInfo.h"
+
+class SettingsPresentationModel;
+
+/**
+ * @class SettingsRejectListForm
+ * @brief This class presents a form based UI for call settings.
+ *
+ */
+class SettingsRejectListForm
+ : public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::Controls::IFormBackEventListener
+ , public Tizen::Ui::Controls::IGroupedTableViewItemProvider
+ , public Tizen::Ui::Controls::IGroupedTableViewItemEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+{
+public:
+ SettingsRejectListForm(void);
+ virtual ~SettingsRejectListForm(void);
+ bool Initialize(void);
+
+public:
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+ virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ //From IGroupedTableViewItemEventListener - Called when the state of a TableViewGroupItem is changed.
+ virtual void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status){};
+ //From IGroupedTableViewItemEventListener - Called when the state of a TableViewItem in the GroupedTableView is changed.
+ virtual void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
+ //From IGroupedTableViewItemEventListener - Called when the TableViewContextItem is opened or closed.
+ virtual void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated){};
+
+ //From IGroupedTableViewItemProvider - Gets the total number of groups.
+ virtual int GetGroupCount(void);
+ //From IGroupedTableViewItemProvider - Gets the total number of items in the specified group.
+ virtual int GetItemCount(int groupIndex);
+ //From IGroupedTableViewItemProvider - Gets the group item for the specified index from the item provider.
+ virtual Tizen::Ui::Controls::TableViewGroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ //From IGroupedTableViewItemProvider - Deletes the specified group item.
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
+ //From IGroupedTableViewItemProvider - Updates the specified group item.
+ virtual void UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
+ //From IGroupedTableViewItemProvider - Creates the specified item.
+ virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ //From IGroupedTableViewItemProvider - Deletes the specified item.
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ //From IGroupedTableViewItemProvider - Updates the specified item.
+ virtual void UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ //From IGroupedTableViewItemProvider - Gets the default height of an group item.
+ virtual int GetDefaultGroupItemHeight(void);
+ //From IGroupedTableViewItemProvider - Gets the default height of an item.
+ virtual int GetDefaultItemHeight(void);
+
+private:
+ // Function is used to initialize group list view.
+ result InitializeGroupedTableView(void);
+ // Function is used to fetch list of "rejected call numbers".
+ void FetchNumbersRejectList(void);
+ // Function is used to initialize footer and footer items.
+ void InitializeFooter(void);
+
+private:
+ //list of rejected call numbers fetched from Db.
+ Tizen::Base::Collection::ArrayListT<CallRejectInfo>* __pNumbersList;
+ //matching criteria
+ enum MatchingCriteriaId
+ {
+ CRITERIAID_EXACT,
+ CRITERIAID_STARTSWITH,
+ CRITERIAID_ENDSWITH,
+ CRITERIAID_INCLUDE,
+ };
+ SettingsPresentationModel* __pSettingsPresentor;
+};
+
+#endif //_PHN_SETTINGS_REJECT_LIST_FORM_H_
--- /dev/null
+//
+// 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 PhnSettingsRejectListForm.h
+ * @brief This is the header file for the %SettingsRejectMsgsForm class.
+ *
+ * This header file contains the declarations for %SettingsRejectMsgsForm class.
+ */
+#ifndef _PHN_SETTINGS_REJECT_MSGS_FORM_H_
+#define _PHN_SETTINGS_REJECT_MSGS_FORM_H_
+
+#include <FBase.h>
+#include <FUi.h>
+
+class SettingsPresentationModel;
+
+/**
+ * @class SettingsRejectMsgsForm
+ * @brief This class presents a additional settings form for storing reject messages.
+ *
+ */
+class SettingsRejectMsgsForm
+ : public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::Controls::IFormBackEventListener
+ , public Tizen::Ui::Controls::IGroupedTableViewItemProvider
+ , public Tizen::Ui::Controls::IGroupedTableViewItemEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+{
+public:
+ SettingsRejectMsgsForm(void);
+ virtual ~SettingsRejectMsgsForm(void);
+ bool Initialize(void);
+
+public:
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+ virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ //From IGroupedTableViewItemEventListener - Called when the state of a TableViewGroupItem is changed.
+ virtual void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status){};
+ //From IGroupedTableViewItemEventListener - Called when the state of a TableViewItem in the GroupedTableView is changed.
+ virtual void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
+ //From IGroupedTableViewItemEventListener - Called when the TableViewContextItem is opened or closed.
+ virtual void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated){};
+
+ //From IGroupedTableViewItemProvider - Gets the total number of groups.
+ virtual int GetGroupCount(void);
+ //From IGroupedTableViewItemProvider - Gets the total number of items in the specified group.
+ virtual int GetItemCount(int groupIndex);
+ //From IGroupedTableViewItemProvider - Gets the group item for the specified index from the item provider.
+ virtual Tizen::Ui::Controls::TableViewGroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ //From IGroupedTableViewItemProvider - Deletes the specified group item.
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
+ //From IGroupedTableViewItemProvider - Updates the specified group item.
+ virtual void UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
+ //From IGroupedTableViewItemProvider - Creates the specified item.
+ virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ //From IGroupedTableViewItemProvider - Deletes the specified item.
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ //From IGroupedTableViewItemProvider - Updates the specified item.
+ virtual void UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ //From IGroupedTableViewItemProvider - Gets the default height of an group item.
+ virtual int GetDefaultGroupItemHeight(void);
+ //From IGroupedTableViewItemProvider - Gets the default height of an item.
+ virtual int GetDefaultItemHeight(void);
+
+private:
+ // Function is used to initialise group list view.
+ result InitializeGroupedTableView(void);
+ // Function is used to fetch list of "rejected with messages".
+ void FetchRejectMsgs(void);
+ // Function is used to initialise footer and footer items.
+ void InitializeFooter(void);
+
+private:
+ //list of reject messages fetched from Db.
+ Tizen::Base::Collection::IMapT<int, Tizen::Base::String>* __pMsgsMap;
+ //settings presentation model
+ SettingsPresentationModel* __pSettingsPresentor;
+ //footer action id
+ enum FooterActionId
+ {
+ IDA_ADD_FOOTER_ITEMID,
+ IDA_DELETE_FOOTER_ITEMID,
+ IDA_CANCEL_FOOTER_ITEMID,
+ };
+ //matching criteria
+ enum MatchingCriteriaId
+ {
+ CRITERIAID_EXACT,
+ CRITERIAID_STARTSWITH,
+ CRITERIAID_ENDSWITH,
+ CRITERIAID_INCLUDE,
+ };
+};
+
+#endif //_PHN_SETTINGS_REJECT_MSGS_FORM_H_
--- /dev/null
+//
+// 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 PhnSettingsSpeedDialForm.h
+ * @brief This is the header file for the %SettingsSpeedDialForm class.
+ *
+ * This header file contains the declarations for %SettingsSpeedDialForm class.
+ */
+#ifndef _PHN_SETTINGS_SPEED_DIAL_FORM_H_
+#define _PHN_SETTINGS_SPEED_DIAL_FORM_H_
+
+#include <FBase.h>
+#include <FUi.h>
+#include "PhnSettingsConstants.h"
+#include "PhnSpeedDialPopup.h"
+#include "PhnIPopupItemSelectListener.h"
+
+class SettingsPresentationModel;
+class SpeedDialInfo;
+
+/**
+ * @class SettingsSpeedDialForm
+ * @brief This class presents a additional settings form for setting and updating speed dial settings.
+ *
+ */
+class SettingsSpeedDialForm
+ : public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::Controls::IFormBackEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public Tizen::App::IAppControlResponseListener
+ , public Tizen::Social::IAddressbookEventListener
+ , public IPopupItemSelectListener
+{
+public:
+ SettingsSpeedDialForm(void);
+ virtual ~SettingsSpeedDialForm(void);
+ bool Initialize(void);
+
+public:
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ //From IActionEventListener
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+ //From IFormBackEventListener
+ virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
+
+ //From ISceneEventListener
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+ //From IAppControlResponseListener
+ virtual void OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData);
+ //From IPopupEventListener
+ void OnItemSelected(int itemIndex);
+ //From IAddressbookEventListener
+ virtual void OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList);
+ virtual void OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList){};
+
+
+private:
+ // Function is used to initialise footer and footer items.
+ void InitializeFooter(void);
+ // Function is used to initialise buttons and add listener.
+ void InitializePhotoButtons(const Tizen::Base::String& btnName, const Tizen::Base::String& lblName, ActionId actionId);
+ // Function is used to initialise voice mail button and add listener.
+ void InitializeVoiceMail(void);
+ //Launches contacts app control for pick operation
+ void LaunchAppControl(void);
+ // updates the button according to the button clicked
+ void UpdateButton(void);
+ // updates all buttons
+ void UpdateAllButtons(void);
+
+private:
+ Tizen::Base::Collection::HashMapT<int,SpeedDialInfo>* __pSpeedDialMappingList;
+ //Singleton do not delete
+ SettingsPresentationModel* __pSettingsPresentor;
+ int __keyToMap;
+ bool __isUpdate;
+ bool __isDeleteMode;
+ Tizen::Social::Addressbook* __pAddressbook;
+ SpeedDialPopup* __pSpeedDialPopup;
+ Tizen::Base::Collection::ArrayListT<int>* __pDeleteList;
+ Tizen::Ui::Scenes::SceneId* __pPreviousSceneId;
+ bool __isContactAppControlLaunched;
+};
+
+#endif //_PHN_SETTINGS_SPEED_DIAL_FORM_H_
--- /dev/null
+//
+// 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 PhnSoundManager.h
+ * @brief This is the header file for the %SoundManager class.
+ *
+ * This header file contains the declarations for %SoundManager class.
+ */
+#ifndef _PHN_SOUND_MANAGER_H_
+#define _PHN_SOUND_MANAGER_H_
+
+#include <FBase.h>
+#include <FSystem.h>
+#include <FMedia.h>
+#include "sound_manager.h"
+#include "vconf.h"
+#include "vconf-keys.h"
+#include "PhnTypes.h"
+
+/**
+ * @class SoundManager
+ * @brief This class presents sound related functionality required in call module.
+ *
+ */
+class SoundManager
+ : public Tizen::Media::IPlayerEventListener
+{
+public:
+ SoundManager(void);
+ virtual ~SoundManager(void);
+ //start the sound manager session
+ result StartSession(void);
+ //Change the speaker status
+ result SetSpeakerStatus(bool setSpeaker);
+ //Set the sound mode for the call
+ result SetSoundMode(SoundMode soundMode);
+ void StartAlert(Tizen::Base::String& contactRingTone);
+ void StopAlert(void);
+ result StopSession(void);
+
+protected:
+ virtual void OnPlayerOpened(result r);
+ virtual void OnPlayerEndOfClip(void);
+ virtual void OnPlayerSeekCompleted(result r);
+ virtual void OnPlayerBuffering(int percent);
+ virtual void OnPlayerErrorOccurred(Tizen::Media::PlayerErrorReason r);
+ virtual void OnPlayerInterrupted(void);
+ virtual void OnPlayerReleased(void);
+
+private:
+ bool IsEarJackConnected(void);
+
+private:
+ //Sound manager handle
+ sound_call_session_h __pSoundCallSession;
+ //For notifying via vibrate during incoming call
+ Tizen::System::Vibrator* __pVibrator;
+ // Audio player
+ Tizen::Media::Player* __pPlayer;
+ bool __isSoundStatusOn;
+ bool __isVibrateStatusOn;
+};
+
+#endif /* _PHN_SOUND_MANAGER_H_ */
--- /dev/null
+//
+// 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 PhnSpeedDialInfo.h
+ * @brief This is the header file for the %SpeedDialInfo class.
+ *
+ * This header file contains the declarations for %SpeedDialInfo class.
+ */
+#ifndef _PHN_SPEED_DIAL_INFO_H_
+#define _PHN_SPEED_DIAL_INFO_H_
+
+#include <FBase.h>
+#include "PhnSettingsConstants.h"
+
+/**
+ * @class SpeedDialInfo
+ * @brief This class holds information about speed dial mappings fetched/stored from database.
+ *
+ */
+class SpeedDialInfo
+ : public Tizen::Base::Object
+{
+
+public:
+ // Default Constructor
+ SpeedDialInfo(void);
+ virtual ~SpeedDialInfo(void);
+ /**
+ * This is the equality operator for this SpeedDialInfo.
+ * returns true, if both have same value for call handle.
+ *
+ * @param[in] rhs A reference to the %SpeedDialInfo instance
+ */
+ bool operator ==(const SpeedDialInfo& rhs) const;
+
+ /**
+ * This is the InEquality operator for this SpeedDialInfo.
+ * returns true, if value for call handle is different.
+ *
+ * @param[in] rhs A reference to the %SpeedDialInfo instance
+ */
+ bool operator !=(const SpeedDialInfo& rhs) const;
+
+ /**
+ * This is the assignment operator for this class.
+ * @param[in] rhs A reference to the %SpeedDialInfo instance
+ */
+ SpeedDialInfo& operator =(const SpeedDialInfo& rhs);
+
+public:
+ int rowId;
+ int keyMapping;
+ Tizen::Base::String contactId;
+};
+
+#endif // _PHN_SPEED_DIAL_INFO_H_
--- /dev/null
+//
+// 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 PhnSpeedDialPopup.h
+ * @brief This is the header file for the %SpeedDialPopup class.
+ *
+ * This header file contains the declarations for %SpeedDialPopup class.
+ */
+#ifndef _PHN_SPEED_DIAL_POPUP_H_
+#define _PHN_SPEED_DIAL_POPUP_H_
+
+#include <FApp.h>
+#include <FUi.h>
+
+#include "PhnIPopupItemSelectListener.h"
+
+/**
+ * @class SpeedDialPopup
+ * @brief This class provides popup messages in Speed dial settings form.
+ *
+ */
+class SpeedDialPopup
+ : public Tizen::Ui::Controls::Popup
+ , public Tizen::Ui::Controls::IListViewItemEventListener
+ , public Tizen::Ui::Controls::IListViewItemProvider
+ , public Tizen::Ui::IActionEventListener
+{
+
+public:
+ SpeedDialPopup(IPopupItemSelectListener& listener);
+ virtual ~SpeedDialPopup(void);
+ int Initialize(void);
+
+ // 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
+ void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+
+private:
+ void ConstructListData(void);
+
+private:
+ Tizen::Ui::Controls::Button* __pCancelButton;
+ IPopupItemSelectListener& __popupListener;
+ Tizen::Base::Collection::ArrayList* __pListItemArray;
+};
+
+#endif // _PHN_SPEED_DIAL_POPUP_H_
--- /dev/null
+//
+// 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 PhnSuggestionItemProvider.h
+ * @brief This is the header file for the %SuggestionItemProvider class.
+ *
+ * This header file contains the declarations for %SuggestionItemProvider class.
+ */
+#include <FBase.h>
+#include <FUi.h>
+
+#ifndef _PHN_SUGGESTION_ITEM_PROVIDER_H_
+#define _PHN_SUGGESTION_ITEM_PROVIDER_H_
+
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+
+class DialPresentationModel;
+
+/**
+ * @class SuggestionItemProvider
+ * @brief This class provides Item provider for search contact list.
+ *
+ */
+class SuggestionItemProvider
+ : public IListViewItemProvider
+{
+public:
+ SuggestionItemProvider(DialPresentationModel& pDialPresentationModel);
+ ~SuggestionItemProvider(void);
+ ///IListViewItemProvider method
+ virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int index, int itemWidth);
+ ///IListViewItemProvider method
+ virtual bool DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);
+ ///IListViewItemProvider method
+ virtual int GetItemCount(void);
+
+private:
+ //Internal function to return EnrichedText with Text + Highlighted keyword, if any.
+ Tizen::Graphics::EnrichedText* ConstructEnrichedTextN(Tizen::Base::String& text,Tizen::Base::String& keyword, int textFontStyle, int buttonStatus);
+
+private:
+ DialPresentationModel& __dialPresentationModel;
+};
+#endif // _PHN_SUGGESTION_ITEM_PROVIDER_H_
--- /dev/null
+//
+// 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 PhnTabContacts.h
+ * @brief This is the header file for the %DialTabContacts class.
+ *
+ * This header file contains the declarations for %DialTabContacts class.
+ */
+#ifndef _PHN_TAB_CONTACTS_H_
+#define _PHN_TAB_CONTACTS_H_
+
+#include <FBase.h>
+#include <FUi.h>
+
+/**
+ * @class DialTabContacts
+ * @brief This class provides tab based UI for Contacts.
+ *
+ */
+class DialTabContacts
+ : public Tizen::Ui::Controls::Panel
+ , public Tizen::Ui::Scenes::ISceneEventListener
+{
+public:
+ DialTabContacts(void);
+ virtual ~DialTabContacts(void);
+ bool Initialize(void);
+
+public:
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+};
+
+#endif // _PHN_TAB_CONTACTS_H_
--- /dev/null
+//
+// 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 PhnTabDialer.h
+ * @brief This is the header file for the %DialTabDialer class.
+ *
+ * This header file contains the declarations for %DialTabDialer class.
+ */
+#ifndef _PHN_TAB_DIALER_H_
+#define _PHN_TAB_DIALER_H_
+
+#include <FBase.h>
+#include <FSocial.h>
+#include <FUi.h>
+#include "PhnSuggestionItemProvider.h"
+#include "PhnDialPresentationModel.h"
+#include "PhnErrorMsgPopup.h"
+#include "PhnIAppStateChangeListner.h"
+
+class CallPresentationModel;
+class DialerKeypad;
+
+/**
+ * @class DialTabDialer
+ * @brief This class provides tab based UI for Dialer.
+ *
+ */
+class DialTabDialer
+ : public Tizen::Ui::Controls::Panel
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::Controls::IListViewItemEventListener
+ , public IPopupClosedEventListener
+ , public Tizen::Ui::IOrientationEventListener
+ , public Tizen::Ui::ITouchLongPressGestureEventListener
+ , public Tizen::Social::IAddressbookEventListener
+ , public IAppStateChangeListener
+{
+public:
+ DialTabDialer(void);
+ virtual ~DialTabDialer(void);
+ bool Initialize(void);
+
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ //Used to show suggestions
+ void ShowSuggestionBox(Tizen::Base::String& name, Tizen::Base::String& mobileNo, Tizen::Base::String& resultCount);
+ //Used to hide search results.
+ void HideSearchBox(void);
+ //Used to check if dialer is opened from other screen or as first screen.
+ bool IsOpenedFromOtherView(void);
+ //Used to show "Add to Contacts" button
+ void ShowAddToContactsButton(void);
+ //Used to update search results.
+ void UpdateSearchResults(void);
+ //Called when App comes to foreground
+ virtual void OnForeground(void);
+ //Called when App goes to background
+ virtual void OnBackground(void);
+
+protected:
+ void ShowFormattedText(Tizen::Ui::Controls::EditField* pEditField, int actionId);
+ //search box create, update and hide
+ void InitializeSearchBox(void);
+ //Used to initialize search list view
+ void InitializeSearchListView(void);
+ //Used to show search results in list view.
+ void ShowSearchListView(void);
+ //Used to hide search results list view.
+ void HideSearchListView(void);
+ //Used to initialize EditField for contacts.
+ void InitializeContactsTextBox(void);
+ //Used to contruct drop-down menu for search results.
+ void ConstructMenu(void);
+ //Used to construct dial keypad.
+ void ConstructKeypad(int dialerState);
+
+ //Used to prepare for MOCall and switch to outgoing call screen.
+ void SwitchToOutgoingCallScreen(const Tizen::Base::String& contactNumber);
+ //Used to switch back to previous active call screen.
+ void SwitchToPreviousActiveCallScreen(void);
+ //Used to add pause
+ void AddPause(void);
+ //Used to add pause
+ void AddWait(void);
+ //Used to add +
+ void AddPlus(void);
+ //Switch to Speed dial settings form.
+ void SwitchToSpeedDialForm(void);
+ //Used to get confirmation for assigning speed dial.
+ void ShowSpeedDialConfirmationPopup(void);
+ //Used to show context menu
+ void ShowContextMenu(Tizen::Base::String& contactNumber);
+ //Used to check if App is in foreground.
+ bool IsForeground();
+
+ void SetAppControlLaunched(bool launched);
+ bool GetAppControlLaunched(void);
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+ //IListViewItemEventListener method
+ virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus status){}
+ virtual void OnListViewItemLongPressed(Tizen::Ui::Controls::ListView& listView, int index, int elementId, bool& invokeListViewItemCallback){}
+ virtual void OnListViewItemReordered(Tizen::Ui::Controls::ListView& listView, int indexFrom, int indexTo){}
+ 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 OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs);
+
+ ///IOrientationEventListener
+ virtual void OnOrientationChanged(const Control& source, OrientationStatus orientationStatus);
+ //Event Listener method from IPopupClosedEventListener
+ virtual void HandlePopupClosed(void);
+ // Called from TouchLongPressGestureDetector when a long press gesture is detected.
+ virtual void OnLongPressGestureDetected(Tizen::Ui::TouchLongPressGestureDetector& gestureDetector);
+ //Called from TouchLongPressGestureDetector when a long press detection is canceled.
+ virtual void OnLongPressGestureCanceled(Tizen::Ui::TouchLongPressGestureDetector& gestureDetector){}
+ // Called by AddressBook to notify when contacts are changed.
+ virtual void OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList);
+ // Called by AddressBook to notify when categories are changed.
+ virtual void OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList) {};
+
+ enum ActionIds
+ {
+ IDA_BTN_SHOW_CONTEXTMENU = 100,
+ IDA_BTN_USE_CONTACT_DATA,
+ IDA_BTN_DISPLAY_CONTACTS,
+ IDA_BTN_ADD_TO_CONTACTS,
+ IDA_MENU_SEND_MESSAGE,
+ IDA_MENU_ADD_CONTACT,
+ IDA_MENU_SPEED_DIAL,
+ IDA_MENU_ADD_PAUSE,
+ IDA_MENU_ADD_WAIT,
+ IDA_MENU_EXIT,
+ IDA_SPEEDDIAL_POPUP_YES,
+ IDA_SPEEDDIAL_POPUP_NO,
+ };
+
+ //Button Dimensions
+ static const int IDI_BGBITMAP_WIDTH ;
+ static const int IDI_BGBITMAP_HEIGHT;
+ static const int IDI_BGBITMAP_POS_X;
+ static const int IDI_BGBITMAP_POS_Y;
+ static const int IDI_TEXT1_SIZE;
+ static const int IDI_TEXT2_SIZE;
+
+private:
+ //Panel* __pSearchBox;
+ Tizen::Ui::Controls::ListView* __pSearchListView;
+ Tizen::Ui::Controls::ContextMenu* __pContextMenu;
+ SuggestionItemProvider* __pSuggestionListProvider;
+ //Ownership
+ ErrorMsgPopup* __pErrorMsgPopup;
+ bool __isSearchListOpened;
+ DialPresentationModel* __pDialPresentationModel;
+ CallPresentationModel* __pCallPresentor;
+ Tizen::Ui::Scenes::SceneId* __pPreviousSceneId;
+ DialerKeypad* __pDialKeypad;
+ Tizen::Ui::Controls::Popup* __pConfirmationPopup;
+ bool __isAppForeground;
+ Tizen::Social::Addressbook* __pAddressBook;
+ bool __isAppControlLaunched;
+};
+
+#endif // _PHN_TAB_DIALER_H_
--- /dev/null
+//
+// 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 PhnTabFavorites.h
+ * @brief This is the header file for the %DialTabFavorites class.
+ *
+ * This header file contains the declarations for %DialTabFavorites class.
+ */
+#ifndef _PHN_TAB_FAVORITES_H_
+#define _PHN_TAB_FAVORITES_H_
+
+#include <FBase.h>
+#include <FUi.h>
+
+/**
+ * @class DialTabFavorites
+ * @brief This class provides tab based UI for Favorites.
+ *
+ */
+class DialTabFavorites
+ : public Tizen::Ui::Controls::Panel
+ , public Tizen::Ui::Scenes::ISceneEventListener
+{
+public:
+ DialTabFavorites(void);
+ virtual ~DialTabFavorites(void);
+ bool Initialize(void);
+
+public:
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+};
+
+#endif // _PHN_TAB_FAVORITES_H_
--- /dev/null
+//
+// 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 PhnTabLogs.h
+ * @brief This is the header file for the %DialTabLogs class.
+ *
+ * This header file contains the declarations for %DialTabLogs class.
+ */
+#ifndef _PHN_TAB_LOGS_H_
+#define _PHN_TAB_LOGS_H_
+
+#include <FBase.h>
+#include <FUi.h>
+#include "PhnTabLogsItemProvider.h"
+#include "PhnICalllogChangeListener.h"
+//#include "calllog.h"
+
+class CallLogDetails;
+class CallLogManager;
+
+/**
+ * @class DialTabLogs
+ * @brief This class provides tab based UI for Call Log.
+ *
+ */
+class DialTabLogs
+ : public Tizen::Ui::Controls::Panel
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public Tizen::Ui::Controls::IGroupedListViewItemEventListener
+ , public Tizen::Ui::IActionEventListener
+ , public ICalllogChangeListener
+{
+public:
+ ///DialTabLogs constructor
+ DialTabLogs(void);
+
+ ///DialTabLogs destructor
+ virtual ~DialTabLogs(void);
+
+ ///Initializes the DialTabLogs form
+ /*
+ * @param: Whether Initialize is success or not
+ */
+ bool Initialize(void);
+
+ ///This functions gets called during form OnInitializing
+ /*
+ * @param: result
+ */
+ virtual result OnInitializing(void);
+
+ ///This functions gets called during form terminating
+ /*
+ * @param: result
+ */
+ virtual result OnTerminating(void);
+
+ void SetCallLogDisplayMode(bool isEdit);
+
+ void UnCheckAllItems(void);
+
+ ///IActionEventListener
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+ ///ISceneEventListener
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+
+ ///ISceneEventListener
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ /// IGroupedListViewItemEventListener
+ virtual void OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);
+ /// IGroupedListViewItemEventListener
+ virtual void OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus state);
+ /// IGroupedListViewItemEventListener
+ virtual void OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction);
+ /// ICalllogChangeListener
+ virtual void OnCalllogChanged(void);
+
+ void SetListItemSelectStatus(bool status);
+
+ void DeleteSelectedCalllog(void);
+
+private:
+ //used to handle 'IDA_CHECKBUTTON_SELECT_ALL'
+ void HandleAllItemSelection(void);
+
+protected:
+ static const int IDA_FOOTER_LOG_DELETE = 105;
+ static const int IDA_FOOTER_LOG_CANCEL = 106;
+ static const int IDA_CHECKBUTTON_SELECT_ALL = 108;
+ static const int IDA_CHECKBUTTON_UNSELECT_ALL = 109;
+
+private:
+ ///Form Footer
+ Tizen::Ui::Controls::Footer* __pFormFooter;
+
+ ///Delete footer item
+ Tizen::Ui::Controls::FooterItem __footerItemDelete;
+
+ ///Cancel footer item
+ Tizen::Ui::Controls::FooterItem __footerItemCancel;
+
+ ///Grouped list view
+ Tizen::Ui::Controls::GroupedListView* __plogsListView;
+
+ ///Grouped list view
+ Tizen::Ui::Controls::CheckButton* __pButtonSelectAll;
+
+ //Selected pop up label
+ Tizen::Ui::Controls::Label* __pSelectedLabel;
+
+ ///Grouped list view item provider
+ CustomDataProvider* __pDataProvider;
+
+ CallLogManager* __pCallMgr;
+ int __groupCount;
+ int __itemCount;
+ bool __isSelectAll;
+ int __selectedItemCount;
+ bool __isEditMode;
+ int calllogCount;
+ Tizen::Base::Collection::ArrayList* __pArgs;
+};
+
+#endif // _PHN_TAB_LOGS_H_
--- /dev/null
+//
+// 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 PhnTabLogsItemProvider.h
+ * @brief This is the header file for the %CustomDataProvider class.
+ *
+ * This header file contains the declarations for %CustomDataProvider class.
+ */
+#include <FBase.h>
+#include <FUi.h>
+#include <FSocial.h>
+#include "PhnCalllogManager.h"
+
+#ifndef _PHN_TAB_LOGS_ITEM_PROVIDER_H_
+#define _PHN_TAB_LOGS_ITEM_PROVIDER_H_
+
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+
+class GroupItemClass;
+
+/**
+ * @class CustomDataProvider
+ * @brief This class provides base class for item providers of calllog application
+ *
+ */
+class CustomDataProvider
+ : public Tizen::Ui::Controls::IGroupedListViewItemProvider
+{
+public:
+ CustomDataProvider(void);
+ virtual ~CustomDataProvider(void);
+
+ void SetListItemStyle(bool mode);
+
+ // IGroupedListViewItemProvider
+ virtual int GetGroupCount(void);
+ virtual int GetItemCount(int groupIndex);
+ virtual Tizen::Ui::Controls::GroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth);
+ virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);
+
+ bool GetCurrentDateTime(Tizen::Base::DateTime& dt);
+ void CreateGroupItems(void);
+ bool IsGroupPresent(GroupItemClass* group);
+ GroupItemClass* GetGroupWithTitle(Tizen::Base::String title);
+ int GetDaysDifferenceBetweenDates(Tizen::Base::DateTime date1, Tizen::Base::DateTime date2);
+ void GetItemAtGroupIndex(int groupIndex, int itemIndex, CallLogDetails** pCalllogDetails);
+ void DeleteItemAtGroupIndex(int groupIndex, int itemIndex);
+ void DeleteAllItems(void);
+
+private:
+ bool __isEditStyle;
+ Tizen::Base::Collection::ArrayList* __pGroupData;
+ Tizen::Social::Addressbook* __pAddressBook;
+ Tizen::Ui::Controls::ListContextItem* __pItemContext;
+
+};
+
+/**
+ * @class GroupItemClass
+ * @brief This class helps in storing group item data
+ *
+ */
+class GroupItemClass
+ :public Tizen::Base::Object
+{
+private:
+ Tizen::Base::String __titleText;
+ Tizen::Base::Collection::ArrayList* __pData;
+
+public:
+ GroupItemClass(void);
+ virtual ~GroupItemClass(void);
+
+ /**
+ * This function sets the titleText for the History object
+ *
+ * @return No return type
+ * @param titleText The titleText for the History
+ */
+ void SetTitleText(Tizen::Base::String titleText);
+
+ /**
+ * This function sets the data for the History object
+ *
+ * @return No return type
+ * @param pData The data for the History
+ */
+ void SetLogData(Tizen::Base::Collection::ArrayList* pData);
+
+ /**
+ * This function gets the GetTitleText of History
+ *
+ * @return A String
+ * @param No parameter
+ */
+ Tizen::Base::String GetTitleText(void);
+
+ /**
+ * This function gets the GetHistoryData of History
+ *
+ * @return A Pointer to ArrayList
+ * @param No parameter
+ */
+ Tizen::Base::Collection::ArrayList* GetLogData(void);
+};
+#endif /* _PHN_TAB_LOGS_ITEM_PROVIDER_H_ */
--- /dev/null
+//
+// 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 PhnTelephonyManager.h
+ * @brief This is the header file for the %TelephonyManager class.
+ *
+ * This header file contains the declarations for %TelephonyManager class.
+ */
+#ifndef _PHN_TELEPHONY_MANAGER_H_
+#define _PHN_TELEPHONY_MANAGER_H_
+
+#include <FBase.h>
+#include <FSocial.h>
+#include "ITapiCall.h"
+#include "TapiUtility.h"
+#include "PhnITelephonyEventListener.h"
+#include "PhnSoundManager.h"
+#include "PhnCalllogManager.h"
+
+class CallInfo;
+class SettingsManager;
+
+/**
+ * @class TelephonyManager
+ * @brief TelephonyManager is a singleton class used to intialize TAPI library.
+ * And register to telephony events, interact with TAPI library.
+ */
+class TelephonyManager
+{
+public:
+ //Get singleton instance
+ static TelephonyManager* GetInstance(ITelephonyEventListener* pEventListener);
+ //Function to initiate (dial) an outgoing call.
+ ErrorCodes SetupMoCall(Tizen::Base::String& contactNumber, bool isEmergency);
+ //Function to end a call
+ result EndCall(Tizen::Base::Long callHandle);
+ result EndCall(Tizen::Base::String& contactNumber);
+ //Function to accept/reject an incoming call
+ result AnswerCall(int callHandle, bool acceptCall);
+ //Function to accept call with the given options
+ result AcceptCall(CallAnswerOptions answerOptions,int callHandle);
+ //Function to end a conference call
+ result EndConferenceCall(void);
+ //Function to hold/retrieve a conference call
+ result HoldConferenceCall(bool holdCall);
+ //Function to join active and held call to conference
+ result JoinCall(void);
+ //Function to hold/unhold the call
+ result HoldCall(Tizen::Base::Long callHandle, bool holdCall);
+ //Function to swap the active and held call
+ result SwapCalls(void);
+ //Function to send DTMF strings
+ result SendCallDTMF(Tizen::Base::String& textToBeSent);
+ //Function to end a single call from the conference
+ result EndFromConference(int callHandle);
+ //Function to split a single call from the conference
+ result SplitFromConference(int callHandle);
+ //Function to set the mute status
+ result SetMuteStatus(bool setMute);
+ //Function to get the mute Status
+ bool IsCallMuted(void);
+ //Function to set the speaker status
+ result SetSpeakerStatus(bool setSpeaker);
+ //Function to get the speaker status
+ bool IsSpeakerOn(void);
+ //Function to check if split operation is allowed from the conference
+ bool IsSplitAllowed(void);
+ //Function to get the conference call info
+ CallInfo* GetConferenceCallInfoN(void);
+ //Get the current call list
+ Tizen::Base::Collection::IListT<CallInfo>* GetCallListN(void);
+ //Get the current call count
+ int GetCurrentCallCount(void);
+ //Start the alert in case of incoming call
+ void StartAlert(CallInfo& incomingCallInfo);
+ //Stop the alert in case of incoming call
+ void StopAlert(void);
+ //Main Callback function used while registering to TAPI
+ static void HandleCallback(TapiHandle* pHandle, const char* pNotiId, void* pData, void* pUserData);
+ //Dummy callback function used when nothing is to be done on response
+ static void HandleCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData);
+ //callback function used when dialed call is ended
+ static void HandleEndDialedCallResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData);
+ //callback function for dial operation
+ static void HandleDialCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData);
+ //callback function for the join operation
+ static void HandleJoinCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData);
+ //callback function for the reject call operation
+ static void HandleRejectCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData);
+ //callback function for the swap calls operation
+ static void HandleSwapCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData);
+ //callback function for the End from conference operation
+ static void HandleEndFromConferenceCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData);
+ //callback function for the split from conference operation
+ static void HandleSplitFromConferenceCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData);
+ //callback function to handle the idle callback(received when call is ended)
+ static void HandleIdleCallBack(void* pData, TelephonyManager* pTelManager);
+ //callback function to handle the active callback(received when call is connected)
+ static void HandleActiveCallBack(void* pData, TelephonyManager* pTelManager);
+ //callback function to handle the incoming call callback
+ static void HandleIncomingCallBack(void* pData, TelephonyManager* pTelManager);
+ //callback function to handle the dial call callback
+ static void HandleDialingCallBack(void* pData, TelephonyManager* pTelManager);
+ //Check if MOCall is emergency number and returns true. Otherwise, false.
+ bool CheckIfMOCallIsEmergency(const Tizen::Base::String& contactNumber, bool isSimInitialized);
+ //Check is modem and sim are initialised successfully and MO call can be made.
+ result CheckIfMOCallIsPossible();
+ //Gets the contact for the given phonenumber.returns null if not present.
+ Tizen::Social::Contact* GetContactN(const Tizen::Base::String& phoneNumber);
+ //This function make a synchronus API call to TAPI to fetch active/waiting incoming calls.
+ CallInfo* FetchIncomingCallHandleN(const Tizen::Base::String& callHandle, const Tizen::Base::String& contactNumber);
+ //This callback function is called by TAPI each time for every single call.
+ static void HandleIncomingCallStatusCallBack(TelCallStatus_t* pCallStatus, void* pUserData);
+ //function used to process incoming call and decide whether to reject call based on call settings.
+ //Rejects the call and returns true, Else returns false.
+ bool CheckIncomingCallToBeRejected(CallInfo* pIncomingCallInfo);
+
+private:
+ //create a singleton instance
+ static void CreateInstance(ITelephonyEventListener* pEventListener);
+ //used to destroy 'TelephonyManager' instance at application exit.
+ static void DestroyInstance(void);
+ //private destructor
+ virtual ~TelephonyManager(void);
+ TelephonyManager(ITelephonyEventListener* pEventListener);
+ TelephonyManager(TelephonyManager& manager);
+ TelephonyManager& operator =(TelephonyManager& manager);
+ //perform 2nd phase initialisation
+ result Initialize(void);
+ //initialise the TAPI library
+ result InitializeTelephonyLibrary(void);
+ //register for the TAPI events
+ int RegisterEvents(void);
+ //unregister from the TAPI events
+ void UnregisterEvents(void);
+ //internal function to hold an active call
+ result HoldActiveCall(CallInfo* pActiveCallInfo, bool holdCall);
+ //internal function to make a call
+ result DialOutgoingCall(Tizen::Base::String& contactNumber, bool isEmergency);
+ //internal function to handle waiting call options when single call is present
+ result AcceptSecondCall(CallAnswerOptions answerOptions,int callHandle);
+ //internal function to handle waiting call options when multiple calls are present
+ result AcceptMultipleCall(CallAnswerOptions answerOptions,int callHandle);
+ /**
+ * This function is internally used to fetch contact person details -
+ * display name & photo id from AddressBook for the given phone number.
+ *
+ * @param[in] phoneNumber - The substring of the phoneNumber to search
+ * @return E_SUCCESS, if found else E_FAILURE.
+ */
+ result FetchContactInfoForNumber(const Tizen::Base::String& phoneNumberStr);
+ //check if given contact number is valid and returns 'E_SUCCESS', else 'E_FAILURE'.
+ result CheckValidTelePhoneNumber(const Tizen::Base::String& contactNumber);
+ //End all active
+ void EndAllCalls(void);
+
+private:
+ static TelephonyManager* __pManager;
+
+ //Outgoing call Info
+ CallInfo* __pDialedCall;
+ //Incoming call Info
+ CallInfo* __pIncomingCall;
+ //Active Calls - only 2 active calls at any time
+ //can hold both Single or Conf. Calls
+ //mapping of "Call handle" to "CallInfo"
+ Tizen::Base::Collection::HashMapT<long, CallInfo>* __pActiveCallList;
+
+ //Listener for telephony events
+ ITelephonyEventListener* __pEventListener;
+
+ SettingsManager* __pSettingsManager;
+
+ //handle to Telephony API
+ TapiHandle* __pTapiHandle;
+ bool __isIncomingCallPresent;
+ //used to connect to Address Book APIs.
+ Tizen::Social::Addressbook* __pAddressBook;
+ //used to store previously fetched contact.
+ Tizen::Social::Contact* __pCachedContact;
+ //mute status
+ bool __isMuted;
+ //Speaker Status
+ bool __isSpeakerOn;
+ SoundManager* __pSoundManager;
+ CallLogManager* __pCalllogMgr;
+};
+
+#endif // _PHN_TELEPHONY_MANAGER_H_
--- /dev/null
+//
+// 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 PhnTypes.h
+ * @brief This is the header file provides common constants and enums used across application.
+ *
+ */
+#ifndef PHNTYPES_H_
+#define PHNTYPES_H_
+
+#include "PhnCommonUtils.h"
+
+//bitmap
+extern const wchar_t* IDB_BTN_OPTION_BG_ICON ;
+extern const wchar_t* IDB_BTN_OPTION_PRESS_BG_ICON;
+extern const wchar_t* IDB_BTN_MORE_ICON ;
+extern const wchar_t* IDB_BTN_MORE_PRESS_ICON ;
+extern const wchar_t* IDB_POPUP_BUBBLE_ICON ;
+extern const wchar_t* IDB_DIALER_BTN_LINE_ICON;
+extern const wchar_t* IDB_DIALER_BTN_PRESS_ICON;
+extern const wchar_t* IDB_VOICEMAIL_BTN_ICON;
+extern const wchar_t* IDB_VOICEMAIL_BTN_PRESS_ICON;
+extern const wchar_t* IDB_DIALER_BTN_LINE2_ICON;
+extern const wchar_t* IDB_DIALER_BTN_LINE3_ICON;
+extern const wchar_t* IDB_DIALER_BTN_LINE4_ICON;
+extern const wchar_t* IDB_DIALER_BTN_LINE5_ICON;
+extern const wchar_t* IDB_DIALER_STAR_ICON ;
+extern const wchar_t* IDB_DIALER_MUTE_ICON ;
+extern const wchar_t* IDB_DIALER_VIDEOCALL_ICON ;
+extern const wchar_t* IDB_DIALER_CALL_ICON ;
+extern const wchar_t* IDB_DIALER_CLEAR_ICON ;
+extern const wchar_t* IDB_DIALER_CALL_BG_ICON ;
+extern const wchar_t* IDB_HIDE_KEYPAD_ICON;
+extern const wchar_t* IDB_HIDE_KEYPAD_PRESS_ICON;
+extern const wchar_t* IDB_HIDE_KEYPAD_DIM_ICON;
+extern const wchar_t* IDB_CLOSE_KEYPAD_ICON;
+extern const wchar_t* IDB_CLOSE_KEYPAD_PRESS_ICON;
+extern const wchar_t* IDB_CLOSE_KEYPAD_DIM_ICON;
+extern const wchar_t* IDB_SPEAKER_ON_ICON;
+extern const wchar_t* IDB_SPEAKER_ON_PRESS_ICON;
+extern const wchar_t* IDB_SPEAKER_ON_DIM_ICON;
+extern const wchar_t* IDB_SPEAKER_OFF_ICON;
+extern const wchar_t* IDB_SPEAKER_OFF_PRESS_ICON;
+extern const wchar_t* IDB_SPEAKER_OFF_DIM_ICON;
+extern const wchar_t* IDB_MUTE_ON_ICON;
+extern const wchar_t* IDB_MUTE_ON_PRESS_ICON;
+extern const wchar_t* IDB_MUTE_ON_DIM_ICON;
+extern const wchar_t* IDB_MUTE_OFF_ICON;
+extern const wchar_t* IDB_MUTE_OFF_PRESS_ICON;
+extern const wchar_t* IDB_MUTE_OFF_DIM_ICON;
+extern const wchar_t* IDB_BACKGROUND_BITMAP;
+extern const wchar_t* IDB_VOICE_CALL_ICON;
+extern const wchar_t* IDB_VOICE_CALL_PRESS_ICON;
+extern const wchar_t* IDB_VOICE_CALL_DIM_ICON;
+extern const wchar_t* IDB_VIDEO_CALL_ICON;
+extern const wchar_t* IDB_VIDEO_CALL_PRESS_ICON;
+extern const wchar_t* IDB_VIDEO_CALL_DIM_ICON;
+extern const wchar_t* IDB_MESSAGE_ICON;
+extern const wchar_t* IDB_MESSAGE_PRESS_ICON;
+extern const wchar_t* IDB_MESSAGE_DIM_ICON;
+extern const wchar_t* IDB_END_CALL_ICON;
+extern const wchar_t* IDB_END_CALL_PRESS_ICON;
+extern const wchar_t* IDB_END_CALL_DIM_ICON;
+extern const wchar_t* IDB_ADD_CALL_ICON;
+extern const wchar_t* IDB_ADD_CALL_PRESS_ICON;
+extern const wchar_t* IDB_ADD_CALL_DIM_ICON;
+extern const wchar_t* IDB_JOIN_CALL_ICON;
+extern const wchar_t* IDB_JOIN_CALL_PRESS_ICON;
+extern const wchar_t* IDB_JOIN_CALL_DIM_ICON;
+extern const wchar_t* IDB_CONTACT_ICON;
+extern const wchar_t* IDB_CONTACT_PRESS_ICON;
+extern const wchar_t* IDB_CONTACT_DIM_ICON;
+extern const wchar_t* IDB_SWAP_ICON_NORMAL;
+extern const wchar_t* IDB_SWAP_ICON_PRESS;
+extern const wchar_t* IDB_POPUP_ARROW_ICON;
+extern const wchar_t* IDB_POPUP_BG_ICON;
+extern const wchar_t* IDB_MORE_MANAGE_CONFERENCE_ICON;
+extern const wchar_t* IDB_CONFERENCE_BG_ICON;
+extern const wchar_t* IDB_CONFERENCE_BIG_BG_ICON;
+extern const wchar_t* IDB_ACTIVE_CALL_DEFAULT_ICON;
+extern const wchar_t* IDB_MULTIPLE_CALL_DEFAULT_ICON;
+extern const wchar_t* IDB_KEYPAD_BUTTON_NORMAL;
+extern const wchar_t* IDB_KEYPAD_BUTTON_PRESS;
+extern const wchar_t* IDB_KEYPAD_NUM1_ICON;
+extern const wchar_t* IDB_HOLD_NORMAL_BUTTON_ICON;
+extern const wchar_t* IDB_HOLD_PRESS_BUTTON_ICON;
+extern const wchar_t* IDB_UNHOLD_NORMAL_BUTTON_ICON;
+extern const wchar_t* IDB_UNHOLD_PRESS_BUTTON_ICON;
+extern const wchar_t* IDB_CALLOG_LIST_BG;
+extern const wchar_t* IDB_LOG_RECEIVEDCALL_ICON;
+extern const wchar_t* IDB_LOG_DIALEDCALL_ICON;
+extern const wchar_t* IDB_LOG_MISSEDCALL_ICON;
+extern const wchar_t* IDB_LOG_BLOCKEDCALL_ICON;
+extern const wchar_t* IDB_LOG_DETAIL_CALL_ICON;
+extern const wchar_t* IDB_LOG_DETAIL_MSG_ICON;
+extern const wchar_t* IDB_LOG_NO_CONTENT;
+
+//String messages
+extern const wchar_t* IDS_DIALER_MOBILE_STR;
+extern const wchar_t* IDS_DIALER_SPEEDDIAL_POPUP_MSG;
+extern const wchar_t* IDS_SPEEDDIAL_POP_YES_BTN_STRING;
+extern const wchar_t* IDS_SPEEDDIAL_POP_NO_BTN_STRING;
+extern const wchar_t* IDS_DIALER_MENU_ITEM_SEND_MSG;
+extern const wchar_t* IDS_DIALER_MENU_ITEM_ADD_CONTACT;
+extern const wchar_t* IDS_DIALER_MENU_ITEM_SPEED_DIAL;
+extern const wchar_t* IDS_DIALER_MENU_ITEM_ADD_PAUSE;
+extern const wchar_t* IDS_DIALER_MENU_ITEM_ADD_WAIT;
+extern const wchar_t* IDS_DIALER_MENU_ITEM_EXIT;
+extern const wchar_t* IDS_SPEED_DIAL_SEARCH_KEY;
+extern const wchar_t* IDS_KEYPAD_BTN_NAME;
+extern const wchar_t* IDS_SPEAKER_BTN_NAME;
+extern const wchar_t* IDS_MUTE_BTN_NAME;
+extern const wchar_t* IDS_VOICE_CALL_BTN_NAME;
+extern const wchar_t* IDS_VIDEO_CALL_BTN_NAME;
+extern const wchar_t* IDS_MSG_BTN_NAME;
+extern const wchar_t* IDS_ENDCALL_BTN_NAME;
+extern const wchar_t* IDS_ADDCALL_BTN_NAME;
+extern const wchar_t* IDS_JOINCALL_BTN_NAME;
+extern const wchar_t* IDS_CONTACT_BTN_NAME;
+extern const wchar_t* IDS_HOLD_BTN_NAME;
+extern const wchar_t* IDS_UNHOLD_BTN_NAME;
+extern const wchar_t* IDS_PEOPLE_STR;
+extern const wchar_t* IDS_MGR_CONF_CALL_LIST_STR;
+extern const wchar_t* IDS_LOG_CONTEXT_CALL;
+extern const wchar_t* IDS_LOG_CONTEXT_MESSAGE;
+extern const wchar_t* IDS_LOG_CONTEXT_VIDEOCALL;
+extern const wchar_t* IDS_LOG_CONTEXT_DELETE;
+extern const wchar_t* IDS_AM_TIME;
+extern const wchar_t* IDS_PM_TIME;
+extern const wchar_t* IDS_CALLLOG_NO_NAME;
+extern const wchar_t* IDS_CALLLOG_NO_NUMBER;
+extern const wchar_t* IDS_CALLLOG_RECEIVED;
+extern const wchar_t* IDS_CALLLOG_MISSED;
+extern const wchar_t* IDS_CALLLOG_OUTGOING;
+extern const wchar_t* IDS_CALLLOG_RECEIVED_MSG;
+extern const wchar_t* IDS_CALLLOG_SENT_MSG;
+extern const wchar_t* IDS_CALLLOG_REJECTED;
+extern const wchar_t* IDS_CALLLOG_DELETE_FOOTER;
+extern const wchar_t* IDS_CALLLOG_CANCEL_FOOTER;
+extern const wchar_t* IDS_EMERGENCY_CALL;
+extern const wchar_t* IDS_SELECT_CALL_LOG ;
+extern const wchar_t* IDS_SELECTED_ITEM_STRING;
+extern const wchar_t* IDS_SELECTED_ITEMS_STRING;
+extern const wchar_t* IDS_SELECT_NUMBER;
+extern const wchar_t* IDS_NUMBER_SELECTED;
+extern const wchar_t* IDS_NUMBERS_SELECTED;
+extern const wchar_t* IDS_SELECT_MESSAGE;
+extern const wchar_t* IDS_MESSAGE_SELECTED;
+extern const wchar_t* IDS_MESSAGES_SELECTED;
+extern const wchar_t* IDS_NO_LOGS;
+
+//Panel
+extern const wchar_t* PANEL_DIALER;
+extern const wchar_t* PANEL_LOGS;
+
+//Corresponding Call form name
+extern const wchar_t* IDL_FORM_OUTCALL;
+extern const wchar_t* IDL_FORM_OUT_EMERGENCYCALL;
+extern const wchar_t* IDL_FORM_INCOMINGCALL;
+extern const wchar_t* IDL_FORM_ACTIVECALL;
+extern const wchar_t* IDL_FORM_ACTIVE_EMERGENCYCALL;
+extern const wchar_t* IDL_FORM_CONFCALL;
+extern const wchar_t* IDL_FORM_CONFCALLLIST;
+extern const wchar_t* IDL_FORM_ENDCALL;
+extern const wchar_t* IDL_FORM_MULTIPLEACTIVECALL;
+//Corresponding Settings form name
+extern const wchar_t* IDL_FORM_SETTINGS_PREFIX;
+extern const wchar_t* IDL_FORM_MAIN_SETTING_MENU;
+extern const wchar_t* IDL_FORM_CALL_REJECTLIST_MENU;
+extern const wchar_t* IDL_FORM_CALL_REJECTMSGS_MENU;
+extern const wchar_t* IDL_FORM_SPEED_DIAL;
+extern const wchar_t* IDL_FORM_MORE_OPTIONS;
+extern const wchar_t* IDL_FORM_CALL_STATUSTONES;
+extern const wchar_t* IDL_FORM_CALLTYPE_FORWARD;
+extern const wchar_t* IDL_FORM_CALL_FORWARD_OPTIONS;
+extern const wchar_t* IDL_FORM_CALLTYPE_BARRING;
+extern const wchar_t* IDL_FORM_CALL_BARRING_OPTIONS;
+extern const wchar_t* IDL_FORM_CALL_WAITING_OPTIONS;
+extern const wchar_t* IDL_FORM_ADD_REJECT_NUMBER;
+extern const wchar_t* IDL_FORM_AUTO_AREA_CODE;
+extern const wchar_t* IDL_FORM_ADD_REJECT_MSG;
+extern const wchar_t* IDL_FORM_EDIT_REJECT_MSG;
+extern const wchar_t* IDL_FORM_FORWARD_TO_NUMBER;
+extern const wchar_t* IDL_FORM_NOREPLY_FORWARD_TO_NUMBER;
+extern const wchar_t* IDL_FORM_SCENE_SET_BARRING_PWD;
+extern const wchar_t* IDL_FORM_DEL_NUMBER;
+extern const wchar_t* IDL_FORM_DEL_MESSAGE;
+//Dialer & Call Log Form names
+extern const wchar_t* IDL_FORM_DIAL_APP;
+extern const wchar_t* IDL_FORM_CALL_LOG_DETAIL;
+extern const wchar_t* IDL_CALL_PANEL;
+extern const wchar_t* IDL_END_CALL_PANEL;
+extern const wchar_t* IDL_OUTCALL_FORM;
+extern const wchar_t* IDL_OUT_EMERGENCYCALL_FORM;
+extern const wchar_t* IDL_CALL_FORM;
+extern const wchar_t* IDL_EMERGENCY_CALL_FORM;
+extern const wchar_t* IDL_MULTIPLE_CALL_FORM;
+extern const wchar_t* IDL_CONFCALL_FORM;
+extern const wchar_t* IDL_DTMF_PANEL;
+extern const wchar_t* IDL_DIALER_KEYPAD_PANEL;
+extern const wchar_t* IDL_FORM_EMERGENCY_DIAL;
+
+//Constants - Call Scene name
+extern const wchar_t* IDSCN_SCENE_OUTCALL;
+extern const wchar_t* IDSCN_SCENE_OUT_EMERGENCYCALL;
+extern const wchar_t* IDSCN_SCENE_INCOMINGCALL;
+extern const wchar_t* IDSCN_SCENE_ACTIVECALL;
+extern const wchar_t* IDSCN_SCENE_ACTIVE_EMERGENCYCALL;
+extern const wchar_t* IDSCN_SCENE_CONFCALL;
+extern const wchar_t* IDSCN_SCENE_CONFCALLLIST;
+extern const wchar_t* IDSCN_SCENE_ENDCALL;
+extern const wchar_t* IDSCN_SCENE_MULTIPLEACTIVECALL;
+//Constants - Settings Scene name
+extern const wchar_t* IDSCN_SCENE_MAIN_SETTING_MENU;
+extern const wchar_t* IDSCN_SCENE_CALL_REJECTLIST_MENU;
+extern const wchar_t* IDSCN_SCENE_CALL_REJECTMSGS_MENU;
+extern const wchar_t* IDSCN_SCENE_SPEED_DIAL;
+extern const wchar_t* IDSCN_SCENE_MORE_OPTIONS;
+extern const wchar_t* IDSCN_SCENE_CALL_STATUSTONES;
+extern const wchar_t* IDSCN_SCENE_CALLTYPE_FORWARD;
+extern const wchar_t* IDSCN_SCENE_CALL_FORWARD_OPTIONS;
+extern const wchar_t* IDSCN_SCENE_CALLTYPE_BARRING;
+extern const wchar_t* IDSCN_SCENE_CALL_BARRING_OPTIONS;
+extern const wchar_t* IDSCN_SCENE_CALL_WAITING_OPTIONS;
+extern const wchar_t* IDSCN_SCENE_ADD_REJECT_NUMBER;
+extern const wchar_t* IDSCN_SCENE_AUTO_AREA_CODE;
+extern const wchar_t* IDSCN_SCENE_ADD_REJECT_MSG;
+extern const wchar_t* IDSCN_SCENE_EDIT_REJECT_MSG;
+extern const wchar_t* IDSCN_SCENE_FORWARD_TO_NUMBER;
+extern const wchar_t* IDSCN_SCENE_NOREPLY_FORWARD_TO_NUMBER;
+extern const wchar_t* IDSCN_SCENE_SET_BARRING_PWD;
+extern const wchar_t* IDSCN_SCENE_DEL_NUMBER;
+extern const wchar_t* IDSCN_SCENE_DEL_MESSAGE;
+//Dialer & Call Log Scene names
+extern const wchar_t* IDSCN_DIALER;
+extern const wchar_t* IDSCN_CALL_LOG;
+extern const wchar_t* IDSCN_CALL_LOG_DETAILS;
+extern const wchar_t* IDSCN_EMERGENCY_DIAL;
+
+extern const wchar_t* TYPE_VIDEO;
+extern const wchar_t* TYPE_VOICE;
+extern const wchar_t* TYPE_SMS;
+extern const wchar_t* TEL;
+extern const wchar_t* TO;
+
+extern const wchar_t* OPERATION_ID_PICK;
+extern const wchar_t* OPERATION_ID_VIEW;
+extern const wchar_t* OPERATION_ID_ADD;
+extern const wchar_t* OPERATION_ID_EDIT;
+extern const wchar_t* OPERATION_ID_CONFIGURE;
+extern const wchar_t* OPERATION_ID_CAPTURE;
+extern const wchar_t* OPERATION_ID_CALL;
+extern const wchar_t* OPERATION_ID_COMPOSE;
+extern const wchar_t* OPERATION_ID_DIAL;
+
+extern const wchar_t* PROVIDER_ID_CAMERA;
+extern const wchar_t* PROVIDER_ID_GALLERY;
+extern const wchar_t* PROVIDER_ID_CALL;
+extern const wchar_t* PROVIDER_ID_MESSAGE;
+extern const wchar_t* PROVIDER_ID_EMAIL;
+extern const wchar_t* PROVIDER_ID_MEDIA;
+extern const wchar_t* PROVIDER_ID_CONTACTS;
+
+extern const wchar_t* RETURN_TYPE_PHONE;
+extern const wchar_t* RETURN_TYPE_EMAIL;
+extern const wchar_t* RETURN_TYPE_CONTACT_ID;
+
+extern const wchar_t* DELIMITER;
+extern const wchar_t* LAUNCHTYPE;
+extern const wchar_t* PARAM_ORIGIN_MT;
+extern const wchar_t* CALL_HANDLE;
+extern const wchar_t* CONTACT_NUMBER;
+extern const wchar_t* PARAM_CALL_TYPE;
+extern const wchar_t* PARAM_CALL_VALUE_VOICE;
+extern const wchar_t* PARAM_PHONE_NUMBER;
+extern const wchar_t* INPUT_TYPE_PHONE;
+extern const wchar_t* MESSAGE_TYPE;
+extern const wchar_t* MESSAGE_SMS_TYPE;
+extern const wchar_t* MESSAGE_TEXT;
+extern const wchar_t* MESSAGE_TO;
+
+extern const wchar_t* SELECTION_MODE;
+extern const wchar_t* RETURN_TYPE;
+extern const wchar_t* SELECTION_MODE_SINGLE;
+extern const wchar_t* RETURN_KEY_VALUE;
+
+//Voice Call- Common Command Ids
+enum CommandIds
+{
+ IDA_ADD_CALL = DIAL_CMD_TOTAL_COUNT+1,
+ IDA_JOIN_CALL,
+ IDA_OPEN_CONTACTS,
+ IDA_HOLD_CALL,
+ IDA_UNHOLD_CALL,
+ IDA_MUTE,
+ IDA_UNMUTE,
+ IDA_SPEAKER,
+ IDA_SPEAKER_OFF,
+ IDA_OPEN_NUMKEYPAD,
+ IDA_CLOSE_NUMKEYPAD,
+ IDA_END_CALL,
+ IDA_SHOW_REJECT_CALL_MESSAGE_PANEL, //Show the reject with message panel
+ IDA_CANCEL_REJECT_CALL_MESSAGE_PANEL,//Cancel the reject with message panel
+ IDA_CREATE_REJECT_CALL_MESSAGE,//Reject the call with new message
+ IDA_VOICE_CALL,
+ IDA_VIDEO_CALL,
+ IDA_MESSAGE,
+ IDA_END_CONF_CALL,
+ IDA_HOLD_CONF_CALL,
+ IDA_UNHOLD_CONF_CALL,
+ IDA_ADD_TO_CONTACTS, //add current contact to AddressBook
+ IDA_BACK_EVENT,
+ IDA_SWAP_CALLS,
+ IDA_MORE_OPTIONS_MENU,
+ IDA_MORE_CONF_CALLLIST_OPTION,
+ IDA_SEND_REJECT_MSG1,
+ IDA_SEND_REJECT_MSG2,
+ IDA_SEND_REJECT_MSG3,
+ IDA_SEND_REJECT_MSG4,
+ IDA_SEND_REJECT_MSG5,
+ IDA_SEND_REJECT_MSG6,
+ IDA_CALL_WAITING_OPTION_CHECKED,
+ IDA_CALL_WAITING_OPTION_UNCHECKED,
+ IDA_TOTAL_CMD_IDS,
+};
+
+//Command Ids for Ending Caller in Conference list.
+enum EndConfCallerCmdIds
+{
+ IDA_END_CALLER1 = IDA_TOTAL_CMD_IDS + 1,
+ IDA_END_CALLER2,
+ IDA_END_CALLER3,
+ IDA_END_CALLER4,
+ IDA_END_CALLER5,
+ IDA_TOTAL_ENDCONFCALLER_CMD_IDS,
+};
+
+enum SplitConfCallerCmdIds
+{
+ IDA_SPLIT_CALLER1 = IDA_TOTAL_ENDCONFCALLER_CMD_IDS + 1,
+ IDA_SPLIT_CALLER2,
+ IDA_SPLIT_CALLER3,
+ IDA_SPLIT_CALLER4,
+ IDA_SPLIT_CALLER5,
+ IDA_TOTAL_SPLITCONFCALLER_CMD_IDS,
+};
+
+enum CallAnswerOptions
+{
+ CALL_ANSWER_HOLD_ACCEPT,
+ CALL_ANSWER_END_ACTIVE_ACCEPT,
+ CALL_ANSWER_END_HELD_ACCEPT,
+ CALL_ANSWER_END_ALL_ACCEPT,
+ CALL_ANSWER_CALL
+};
+
+enum SoundMode
+{
+ SOUND_MODE_VOICE = 0,
+ SOUND_MODE_RINGTONE,
+ SOUND_MODE_MEDIA
+};
+
+//Type of the call (incoming, outgoing etc for call log database
+enum CallLogType
+{
+ CALL_LOG_TYPE_VOICE_INCOMING,
+ CALL_LOG_TYPE_VOICE_OUTGOING,
+ CALL_LOG_TYPE_VOICE_MISSED,
+ CALL_LOG_TYPE_VOICE_REJECTED,
+ CALL_LOG_TYPE_VOICE_BLOCKED,
+ CALL_LOG_TYPE_SMS_INCOMING,
+ CALL_LOG_TYPE_SMS_OUTGOING,
+};
+
+//Error code to handle error scenarios
+enum ErrorCodes
+{
+ ERROR_NONE,
+ ERROR_INVALID_INPUT,
+ ERROR_DIAL_FAILED,
+ ERROR_INVALID_NUMBER,
+ ERROR_REJECT_FAILED,
+ ERROR_JOIN_FAILED,
+ ERROR_SWAP_FAILED,
+ ERROR_END_CALL_FAILED,
+ ERROR_END_FROM_CONFERENCE_FAILED,
+ ERROR_SPLIT_FROM_CONFERENCE_FAILED,
+ ERROR_CODE_SIM_INITIALIZATION_FAILED,
+ ERROR_NOT_EMERGENCY_NUM,
+ ERROR_TAPI_INIT_FAILED,
+ ERROR_TAPI_ERROR,
+ ERROR_BARRING_PWD_TOO_LONG,
+ ERROR_GENERAL,
+};
+
+enum DialerRequestType
+{
+ REQUEST_SHOW_SUGGESTION,
+ REQUEST_SHOW_ADD_TO_CONTACTS,
+ REQUEST_SHOW_SPEED_DIAL_POPUP,
+ REQUEST_CALL_SPEED_DIAL_NUM,
+};
+
+enum IncomingCallFormRequestType
+{
+ REQUEST_ITEM_SELECTED,
+};
+
+
+//Dimensions for Small photo of caller/callee.
+extern const int W_SMALL_PHOTO;
+extern const int H_SMALL_PHOTO;
+extern const int W_CONFERENCE_PHOTO;
+extern const int H_CONFERENCE_PHOTO;
+//Maximum number of calls
+extern const int IDI_MAX_ACTIVE_CALLS;
+extern const int IDI_MAX_CONF_CALL_PARTICIPANTS;
+//Constants used for custom list item in message panel in Incoming call screen
+extern const int IDA_FORMAT_SENDTEXT;
+extern const int IDA_BUTTON_CANCEL_OPTIONS_POPUP;
+extern const int ID_MULTI_PARTY_CALL;
+extern const int ID_SECOND_INCOMING_CALL;
+//Constants
+extern const wchar_t* IDI_KEY2_TXT;
+extern const wchar_t* IDI_KEY3_TXT;
+extern const wchar_t* IDI_KEY4_TXT;
+extern const wchar_t* IDI_KEY5_TXT;
+extern const wchar_t* IDI_KEY6_TXT;
+extern const wchar_t* IDI_KEY7_TXT;
+extern const wchar_t* IDI_KEY8_TXT;
+extern const wchar_t* IDI_KEY9_TXT;
+
+#endif /* PHNTYPES_H_ */
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Manifest xmlns="http://schemas.tizen.org/2012/12/manifest">
+ <Id>zktdpemtmw</Id>
+ <Version>1.0.0</Version>
+ <Type>C++App</Type>
+ <Descriptions>
+ <Description Locale="eng-US"/>
+ <Description Locale="eng-GB"/>
+ </Descriptions>
+ <Url/>
+ <Requirements>
+ <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/application.launch</Privilege>
+ <Privilege>http://tizen.org/privilege/setting</Privilege>
+ <Privilege>http://tizen.org/privilege/messaging.sms</Privilege>
+ <Privilege>http://tizen.org/privilege/contact.read</Privilege>
+ </Privileges>
+ <UiApp Main="True" MenuIconVisible="True" Name="Phone">
+ <UiScalability BaseScreenSize="Normal" CoordinateSystem="Logical" LogicalCoordinate="720"/>
+ <UiTheme SystemTheme="White"/>
+ <DisplayNames>
+ <DisplayName Locale="eng-US">Phone-Ref</DisplayName>
+ <DisplayName Locale="eng-GB">Phone-Ref</DisplayName>
+ </DisplayNames>
+ <Icons>
+ <Icon Section="MainMenu" Type="Xhigh">mainmenu.png</Icon>
+ </Icons>
+ <AppControls>
+ <AppControl>
+ <Operation>http://tizen.org/appcontrol/operation/call</Operation>
+ <Operation>http://tizen.org/appcontrol/operation/configure</Operation>
+ <Operation>http://tizen.org/appcontrol/operation/dial</Operation>
+ <Uri>tel</Uri>
+ </AppControl>
+ </AppControls>
+ <LaunchConditions/>
+ <Notifications>
+ <Notification Name="Ticker">On</Notification>
+ <Notification Name="Sound">On</Notification>
+ <Notification Name="Contents">Off</Notification>
+ <Notification Name="Badge">On</Notification>
+ </Notifications>
+ </UiApp>
+ </Apps>
+</Manifest>
--- /dev/null
+Name: apps.Phone
+Summary: Phone application
+Version: 1.0.0.0
+Release: 1
+Group: TO_BE/FILLED_IN
+License: TO BE FILLED IN
+Source0: %{name}-%{version}.tar.gz
+BuildRequires: cmake
+BuildRequires: pkgconfig(osp-appfw)
+BuildRequires: pkgconfig(osp-uifw)
+BuildRequires: pkgconfig(osp-social)
+BuildRequires: pkgconfig(osp-messaging)
+BuildRequires: pkgconfig(osp-media)
+BuildRequires: pkgconfig(osp-image)
+BuildRequires: pkgconfig(osp-image-core)
+BuildRequires: pkgconfig(osp-shell)
+BuildRequires: pkgconfig(glib-2.0)
+BuildRequires: pkgconfig(capi-media-sound-manager)
+BuildRequires: pkgconfig(vconf)
+BuildRequires: pkgconfig(tapi)
+BuildRequires: pkgconfig(mm-sound)
+BuildRequires: pkgconfig(contacts-service2)
+BuildRequires: osp-appfw-internal-devel
+BuildRequires: osp-uifw-internal-devel
+BuildRequires: osp-media-internal-devel
+
+ # runtime requires
+Requires: osp-installer
+
+%description
+Verification application: Phone
+
+%prep
+%setup -q
+
+%build
+MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'`
+%ifarch %{ix86}
+CXXFLAGS="$CXXFLAGS -D_OSP_DEBUG_ -D_OSP_X86_ -D_OSP_EMUL_" cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DFULLVER=%{version} -DMAJORVER=${MAJORVER}
+%else
+CXXFLAGS="$CXXFLAGS -D_OSP_DEBUG_ -D_OSP_ARMEL_" cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DFULLVER=%{version} -DMAJORVER=${MAJORVER}
+%endif
+
+# Call make instruction with smp support
+make %{?jobs:-j%jobs}
+
+%install
+rm -rf %{buildroot}
+%make_install
+
+%post
+/sbin/ldconfig
+PKG_ID=zktdpemtmw
+echo "/usr/etc/package-manager/backend/tpk -i /usr/apps/"${PKG_ID}
+/usr/etc/package-manager/backend/tpk -i /usr/apps/${PKG_ID}
+cp -f /usr/lib/osp/osp-ui-app-loader /usr/apps/${PKG_ID}/bin/Phone
+/usr/bin/vconftool set -t int memory/call/state "0" -g 6521 -i -f
+
+%postun
+/sbin/ldconfig
+PKG_ID=zktdpemtmw
+echo "/usr/etc/package-manager/backend/tpk -u "${PKG_ID}
+/usr/etc/package-manager/backend/tpk -u ${PKG_ID}
+
+%files
+%defattr(-,root,root,-)
+/usr/apps/*
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="3.0.0.201302021409" Dversion="20120315">
+ <text id="IDS_SETTING_VOICEFORWARD_NOREPLY_STRING">If no reply</text>
+ <text id="IDS_SETTING_CALLERID_SUB_STRING">Show</text>
+ <text id="IDS_SETTING_CONNECTTONE_STRING">Call connect tone</text>
+ <text id="IDS_CALLLOG_DELETE_FOOTER">Delete</text>
+ <text id="IDS_DIALER_MENU_ITEM_EXIT">Exit</text>
+ <text id="IDS_SETTING_CONNECTTONE_HLP_STRING">There will be a signal sound when the line is connected</text>
+ <text id="IDS_SETTING_MORE_SUB_STRING">Call waiting, Call barring, Prefix...</text>
+ <text id="IDS_KEYPAD_BTN_NAME">Keypad</text>
+ <text id="IDS_SETTINGS_MATCHCRITERIA_STRING">Match criteria</text>
+ <text id="IDS_DATETIME_SEP">Sep</text>
+ <text id="IDS_MUTE_BTN_NAME">Mute</text>
+ <text id="IDS_SETTING_REJECT_HLP_STRING">Manage auto reject mode</text>
+ <text id="IDS_SETTING_VOICEBARRING_INTERNATIONAL_STRING">Int'l calls</text>
+ <text id="IDS_SETTING_DONE_HEADER_ITEM">Done</text>
+ <text id="IDS_NO_MESSAGE_STR">No Messages</text>
+ <text id="IDS_SETTING_WAIT_INTERVAL_STRING">seconds</text>
+ <text id="IDS_CALLERID_HIDE_STRING">Hide</text>
+ <text id="IDS_NO_LOGS">No Logs</text>
+ <text id="IDS_ADDCALL_BTN_NAME">Add call</text>
+ <text id="IDS_DIALER_MENU_ITEM_ADD_WAIT">Add Wait</text>
+ <text id="IDS_SPEEDDIAL_POP_YES_BTN_STRING">Yes</text>
+ <text id="IDS_MESSAGES_SELECTED">%d Messages Selected</text>
+ <text id="IDS_SETTING_CALLTYPE_VOICE_STRING">Voice call</text>
+ <text id="IDS_SETTING_REMINDERS_STRING">Minute reminders</text>
+ <text id="IDS_SETTINGS_DELETE_MSGS_TITLE_STRING">Set reject messages</text>
+ <text id="IDS_ALREADY_USED_MSG">already in use</text>
+ <text id="IDS_DEFAULT_SPEED_DIAL_TEXT">.Name</text>
+ <text id="IDS_SETTING_ENDTONE_HLP_STRING">There will be a signal sound when the line is disconnected</text>
+ <text id="IDS_SETTING_WAITING_HLP_STRING">During call, notify me of incoming calls</text>
+ <text id="IDS_SETTING_REJECT_MSG_STRING">Set reject messages</text>
+ <text id="IDS_ENDCALL_BTN_NAME">End call</text>
+ <text id="IDS_SETTING_VOICEFORWARD_IFBUSY_STRING">If busy</text>
+ <text id="IDS_REMOVE_CONTACT">Remove</text>
+ <text id="IDS_CANCEL">Cancel</text>
+ <text id="IDS_MATCHCRITERIA_INCLUDE_STRING">Includes</text>
+ <text id="IDS_SETTING_FORWARDING_STRING">Call forwarding</text>
+ <text id="IDS_SETTING_AUTO_AREACODE_STRING">Auto area code</text>
+ <text id="IDS_INVALID_NUMBER_ERROR_MSG">Invalid Number.</text>
+ <text id="IDS_CALLLOG_REJECTED">Rejected Call</text>
+ <text id="IDS_PEOPLE_STR">people</text>
+ <text id="IDS_DIALER_MENU_ITEM_ADD_CONTACT">Add Contact</text>
+ <text id="IDS_SETTING_CALLALERT_OFF_STRING">Off</text>
+ <text id="IDS_DIALER_MENU_ITEM_SPEED_DIAL">Speed Dial</text>
+ <text id="IDS_CONTACT_BTN_NAME">Contact</text>
+ <text id="IDS_DATETIME_OCT">Oct</text>
+ <text id="IDS_AM_TIME">AM</text>
+ <text id="IDS_MATCHCRITERIA_END_STRING">Ends with</text>
+ <text id="IDS_SPEED_DIAL_TITLE">SPEED DIAL</text>
+ <text id="IDS_CALLLOG_CANCEL_FOOTER">Cancel</text>
+ <text id="IDS_CHANGE_CONTACT">Change contact</text>
+ <text id="IDS_SELECTED_ITEMS_STRING">%d call logs selected</text>
+ <text id="IDS_CALLLOG_NO_NUMBER">No Number</text>
+ <text id="IDS_SETTING_SAVE_HEADER_ITEM">Save</text>
+ <text id="IDS_SETTING_REJECT_STRING">Call rejection</text>
+ <text id="IDS_NUMBER_SELECTED">%d Number Selected</text>
+ <text id="IDS_SETTING_AUTO_AREACODE_HLP_STRING">Add the area code on the dialer by default</text>
+ <text id="IDS_CALLLOG_NO_NAME">No Name</text>
+ <text id="IDS_LONG_BARRING_PWD_ERROR_MSG">Barring Password length should be less than or equal to 4.</text>
+ <text id="IDS_DATETIME_APR">Apr</text>
+ <text id="IDS_SETTING_SPEEDDIAL_STRING">Speed dial</text>
+ <text id="IDS_JOINCALL_BTN_NAME">Join call</text>
+ <text id="IDS_DATETIME_JUN">Jun</text>
+ <text id="IDS_DATETIME_JUL">Jul</text>
+ <text id="IDS_DIALER_MOBILE_STR">Mobile</text>
+ <text id="IDS_SETTING_WAITING_TIME_STRING">Waiting time</text>
+ <text id="IDS_SETTING_WAITING_STRING">Call waiting</text>
+ <text id="IDS_SETTING_VOICEFORWARD_OUTOFREACH_STRING">If out of reach</text>
+ <text id="IDS_SETTING_VOICEBARRING_WHENROAMING_STRING">Incoming when roaming</text>
+ <text id="IDS_TAPI_INIT_ERROR_MSG">TAPI Server initialization failed.</text>
+ <text id="IDS_ADD_BTN_STRING">Add</text>
+ <text id="IDS_MSG_BTN_NAME">Message</text>
+ <text id="IDS_SETTING_VOICEFORWARD_OPTIONS_TITLE_STRING">Voice Call forwarding</text>
+ <text id="IDS_DATETIME_MAY">May</text>
+ <text id="IDS_SPEED_DIAL_POPUP_TITLE">Edit</text>
+ <text id="IDS_SETTING_CALLERID_MAIN_STRING">Show my caller ID</text>
+ <text id="IDS_DATETIME_MAR">Mar</text>
+ <text id="IDS_CALLLOG_RECEIVED_MSG">Received Message</text>
+ <text id="IDS_SETTING_CALL_ALERT_MAIN_STRING">Alerts on call</text>
+ <text id="IDS_SPEED_DIAL_DELETE_TITLE">SELECT SPEED DIAL</text>
+ <text id="IDS_DIALER_MENU_ITEM_SEND_MSG">Send Message</text>
+ <text id="IDS_MATCHCRITERIA_EXACT_STRING">Exactly the same as</text>
+ <text id="IDS_HOLD_BTN_NAME">Hold</text>
+ <text id="IDS_CALL_OPTION_TITLE">Accept call after</text>
+ <text id="IDS_CALLLOG_OUTGOING">Outgoing Call</text>
+ <text id="IDS_SETTING_WAITING_OPTIONS_TITLE_STRING">Call waiting</text>
+ <text id="IDS_GENERAL_TAPI_ERROR_MSG">TAPI Error occurred.</text>
+ <text id="IDS_SETTING_STATUS_TONES_STRING">Call status tones</text>
+ <text id="IDS_EMERGENCY_CALLS_ONLY_ERROR_MSG">Emergency Calls Only.</text>
+ <text id="IDS_CALL_OPTION8">Putting held calls(%d) on hold</text>
+ <text id="IDS_CALL_OPTION7">Putting active calls(%d) on hold</text>
+ <text id="IDS_CALL_OPTION6">Ending all calls</text>
+ <text id="IDS_DEFAULT_REJECT_ITEM_STRING">Unknown</text>
+ <text id="IDS_CALL_OPTION5">Ending call </text>
+ <text id="IDS_CALL_OPTION4">Ending active calls(%d)</text>
+ <text id="IDS_SPLIT_PARTICIPANT_ERROR_MSG">Split From Conference Failed.</text>
+ <text id="IDS_CALL_OPTION3">Ending held calls(%d)</text>
+ <text id="IDS_CALL_OPTION2">Ending call with </text>
+ <text id="IDS_CALL_OPTION1">Putting %ls on hold</text>
+ <text id="IDS_SETTING_FORWARD_CALLTYPE_TITLE_STRING">Call forwarding</text>
+ <text id="IDS_NUMBERS_SELECTED">%d Numbers Selected</text>
+ <text id="IDS_UNHOLD_BTN_NAME">Unhold</text>
+ <text id="IDS_DIALER_MENU_ITEM_ADD_PAUSE">Add Pause</text>
+ <text id="IDS_SETTING_CALL_WAITING_OPTIONS_STRING">Call waiting</text>
+ <text id="IDS_SELECT_ALL_LIST_ITEM_STRING">Select all</text>
+ <text id="IDS_SETTING_ENDTONE_STRING">Call end tone</text>
+ <text id="IDS_SETTING_CALLALERT_SOUND_STRING">Sound</text>
+ <text id="IDS_SETTING_BARRING_CALLTYPE_TITLE_STRING">Call barring</text>
+ <text id="IDS_SETTING_VOICEBARRING_INCOMING_STRING">All incoming calls</text>
+ <text id="IDS_SETTINGS_DELETE_NUMBER_TITLE_STRING">Select number</text>
+ <text id="IDS_MESSAGE_SELECTED">%d Message Selected</text>
+ <text id="IDS_NOT_ASSIGNED_STR">Not assigned</text>
+ <text id="IDS_MATCHCRITERIA_START_STRING">Start with</text>
+ <text id="IDS_VOICE_CALL_BTN_NAME">Voice call</text>
+ <text id="IDS_INVALID_ARGS_ERROR_MSG">Invalid Parameters Passed.</text>
+ <text id="IDS_SETTING_STATUS_TONES_HLP_STRING">Edit alerts that sound during calls</text>
+ <text id="IDS_SETTING_VOICEBARRING_EXCEPTHOME_STRING">Int'l calls except home</text>
+ <text id="IDS_CONFERENCE_CALL_STRING">Conference call</text>
+ <text id="IDS_SPEAKER_BTN_NAME">Speaker</text>
+ <text id="IDS_DELETE_BTN_STRING">Delete</text>
+ <text id="IDS_SPEEDDIAL_POP_NO_BTN_STRING">No</text>
+ <text id="IDS_SELECT_CALL_LOG">Select Call log</text>
+ <text id="IDS_CALLLOG_MISSED">Missed Call</text>
+ <text id="IDS_CALLLOG_RECEIVED">Received Call</text>
+ <text id="IDS_DATETIME_FEB">Feb</text>
+ <text id="IDS_DATETIME_DEC">Dec</text>
+ <text id="IDS_SELECT_NUMBER">Select Number</text>
+ <text id="IDS_SIM_INIT_ERROR_MSG">Sim initialization is failed or not completed.</text>
+ <text id="IDS_SELECT_MESSAGE">Select Message</text>
+ <text id="IDS_SETTING_BARRING_STRING">Call barring</text>
+ <text id="IDS_DATETIME_NOV">Nov</text>
+ <text id="IDS_SETTING_CALL_ALERT_SUB_STRING">Sound</text>
+ <text id="IDS_SETTING_CALLALERT_VIBRATE_STRING">Vibration</text>
+ <text id="IDS_REJECT_MESSAGE_BTN">Reject With Message</text>
+ <text id="IDS_CANCEL_BTN_STRING">Cancel</text>
+ <text id="IDS_SETTING_VOICEBARRING_OUTGOING_STRING">All outgoing calls</text>
+ <text id="IDS_SETTING_CALLTYPE_VIDEO_STRING">Video call</text>
+ <text id="IDS_MGR_CONF_CALL_LIST_STR">Manage conference call</text>
+ <text id="IDS_CALLLOG_SENT_MSG">Sent Message</text>
+ <text id="IDS_SETTINGS_ENTERNUMBER_STRING">Enter number</text>
+ <text id="IDS_DIALER_SPEEDDIAL_POPUP_MSG">No Speed dial assigned.\n Assign now?</text>
+ <text id="IDS_CALLERID_BYNETWORK_STRING">By network</text>
+ <text id="IDS_CLOSE_POPUP">Close</text>
+ <text id="IDS_LIST_SEND_BUTTON">Send</text>
+ <text id="IDS_EMERGENCY_CALL">EMERGENCY CALL</text>
+ <text id="IDS_PM_TIME">PM</text>
+ <text id="IDS_CALLERID_SHOW_STRING">Show</text>
+ <text id="IDS_DIAL_ERROR_MSG">Call not allowed.</text>
+ <text id="IDS_SETTING_REJECT_MSG_HLP_STRING">Edit reject messages</text>
+ <text id="IDS_GENERAL_ERROR_MSG">General Error.</text>
+ <text id="IDS_SETTING_MORE_MAIN_STRING">More call settings</text>
+ <text id="IDS_SETTING_VOICEBARRING_OPTIONS_TITLE_STRING">Voice call barring</text>
+ <text id="IDS_REJECT_FAILED_ERROR_MSG">Reject Failed.</text>
+ <text id="IDS_SETTING_VOICEFORWARD_ALWAYS_STRING">Always</text>
+ <text id="IDS_SETTING_REMINDERS_HLP_STRING">There will be signal sounds every minute</text>
+ <text id="IDS_VIDEO_CALL_BTN_NAME">Video call</text>
+ <text id="IDS_CALL_SWAP_ERROR_MSG">Swap Failed.</text>
+ <text id="IDS_SETTING_DEACTIVATE_STATUS_STRING">Deactivated</text>
+ <text id="IDS_END_PARTICIPANT_ERROR_MSG">End From Conference failed.</text>
+ <text id="IDS_JOIN_FAILED_ERROR_MSG">Join Failed.</text>
+ <text id="IDS_DATETIME_AUG">Aug</text>
+ <text id="IDS_DATETIME_JAN">Jan</text>
+ <text id="IDS_SELECTED_ITEM_STRING">%d call log selected</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+
+<Scene Bversion="3.0.0.201302021409" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_CALL_FORM">
+ <property backgroundColor="#000000" 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" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Label id="IDC_CALLER1_BIGPHOTO_LABEL" parent="IDL_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDL_CALL_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="true" centerVertical="false" height="720" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="500" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDL_CALL_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="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="618" y="107"/>
+ </Label>
+ <Label id="IDC_BACKGROUND_LABEL" parent="IDL_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="50" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="162" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" 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="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="515" y="29"/>
+ </Label>
+ <Label id="IDC_LINE_LABEL" parent="IDL_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#ABF005" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="10" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_BACKGROUND_LABEL" 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="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="254" y="0"/>
+ </Label>
+ <Label id="IDC_VOICE_CALL_ICON_LABEL" parent="IDL_CALL_FORM">
+ <property backgroundBitmapPath="C01-1_voice_call_icon.png" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="9" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="70" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="24" marginTop="23" mode="Portrait" rightRelation="IDL_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_BACKGROUND_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="70" x="626" y="23"/>
+ <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="512" y="431"/>
+ </Label>
+ <Label id="IDC_CALLER1_LABEL" parent="IDL_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="#FFFFFF" textSize="58" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="69" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="24" marginRight="0" marginTop="24" mode="Portrait" rightRelation="IDC_VOICE_CALL_ICON_LABEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_LEFT" topRelation="IDC_BACKGROUND_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="602" x="24" y="24"/>
+ <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="250" y="436"/>
+ </Label>
+ <Label id="IDC_CALLER1_TIME_LABEL" parent="IDL_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="Calling..." textColor="#8BF632" textSize="30" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="46" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="24" marginTop="6" mode="Portrait" rightRelation="IDL_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="160" x="536" y="99"/>
+ <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="734" y="462"/>
+ </Label>
+ <Label id="IDC_NUMBER1_LABEL" parent="IDL_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="#FFFFFF" textSize="38" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="46" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_CALLER1_BIGPHOTO_LABEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="24" marginRight="24" marginTop="6" mode="Portrait" rightRelation="IDC_CALLER1_TIME_LABEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_LEFT" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="488" x="24" y="99"/>
+ <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="376" y="428"/>
+ </Label>
+ <Button id="IDC_HOLD_BUTTON" parent="IDL_CALL_FORM">
+ <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="C01-1_button_hold_normal_01.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="C01-1_button_hold_normal_01_press.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_CALLER1_BIGPHOTO_LABEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="78" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="15" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="78" x="458" y="627"/>
+ <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="382" x="897" y="353"/>
+ </Button>
+ <Label id="IDC_HOLD_LABEL" parent="IDL_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="#FFFFFF" textSize="36" textStyle="LABEL_TEXT_STYLE_BOLD" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_CALLER1_BIGPHOTO_LABEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="78" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_HOLD_BUTTON" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="15" marginLeft="0" marginRight="14" marginTop="0" mode="Portrait" rightRelation="IDC_CALLER1_BIGPHOTO_LABEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="170" x="536" y="627"/>
+ <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="193" x="1086" y="350"/>
+ </Label>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+
+<Scene Bversion="3.0.0.201301291730" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_CALL_LOG_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_FOOTER" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Footer>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" footerStyle="FOOTER_STYLE_TAB" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" showBackButton="false"/>
+ <itemSet/>
+ </Footer>
+ <Label id="IDC_LABEL_NAME" parent="IDL_CALL_LOG_DETAIL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" 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="546" x="158" y="25"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="19" 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="835" x="179" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL_NUMBER" parent="IDL_CALL_LOG_DETAIL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="32" 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="546" x="158" y="85"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="16" 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="967" x="279" y="20"/>
+ </Label>
+ <Button id="IDC_BUTTON_CALL" parent="IDL_CALL_LOG_DETAIL_FORM">
+ <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"/>
+ <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="336" x="16" y="162"/>
+ <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="579" x="16" y="57"/>
+ </Button>
+ <Button id="IDC_BUTTON_MESSAGE" parent="IDL_CALL_LOG_DETAIL_FORM">
+ <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"/>
+ <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="336" x="368" y="162"/>
+ <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="579" x="26" y="67"/>
+ </Button>
+ <Button id="IDC_BUTTON_CONTACT_IMAGE" parent="IDL_CALL_LOG_DETAIL_FORM">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="#FFFFFF" highlightedColorOpacity="0" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="#FFFFFF" normalColorOpacity="0" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="#FFFFFF" pressedColorOpacity="0" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="142" 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="142" x="0" y="0"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="82" 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="273" x="5" y="0"/>
+ </Button>
+ <CheckButton id="IDC_SELECTALL" parent="IDL_CALL_LOG_DETAIL_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="Select All" titleText="" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="153" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" style="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="0"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="153" 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="272" x="48" y="0"/>
+ </CheckButton>
+ <Label id="IDC_LABEL_NUMBER_UNSAVED" parent="IDL_CALL_LOG_DETAIL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="50" textStyle="LABEL_TEXT_STYLE_BOLD" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="142" 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="616" x="16" y="0"/>
+ <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="536" y="255"/>
+ </Label>
+ <Label id="IDC_LABEL_BLOCKED" parent="IDL_CALL_LOG_DETAIL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <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="50" x="648" y="43"/>
+ <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="88" x="1191" y="17"/>
+ </Label>
+ <Label id="IDC_LABEL_DETAIL_SELECTED" parent="IDL_CALL_LOG_DETAIL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="32" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDL_CALL_LOG_DETAIL_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="48" horizontalFitPolicy="FIT_POLICY_PARENT" leftRelation="IDL_CALL_LOG_DETAIL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_CALL_LOG_DETAIL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="1074"/>
+ <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="465" y="248"/>
+ </Label>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE ScenePopup SYSTEM "UIForm.dtd">
+<ScenePopup Bversion="3.0.0.201212071727" Dversion="20120315">
+ <Popup id="IDL_CALL_OPTION_POPUP">
+ <property color="" titleText="::IDS_CALL_OPTION_TITLE" titleTextColor=""/>
+ <layout height="474" mode="Portrait" style="" type="LAYOUT_RELATIVE" width="600"/>
+ <layout height="660" mode="Landscape" style="" type="LAYOUT_RELATIVE" width="414"/>
+ </Popup>
+</ScenePopup>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+
+<Scene Bversion="3.0.0.201302021409" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_CONFCALL_FORM">
+ <property backgroundColor="#000000" 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" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Label id="IDC_CONFCALL_BIGPHOTO_LABEL" parent="IDL_CONFCALL_FORM">
+ <property backgroundBitmapPath="C01-1_multil_default_caller ID_720x720.png" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDL_CONFCALL_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="true" centerVertical="false" height="720" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_CONFCALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="500" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDL_CONFCALL_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="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="618" y="107"/>
+ </Label>
+ <Label id="IDC_BACKGROUND_LABEL" parent="IDL_CONFCALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="50" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="162" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_CONFCALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_CONFCALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" 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="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="515" y="29"/>
+ </Label>
+ <Label id="IDC_LINE_LABEL" parent="IDL_CONFCALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#ABF005" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="10" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_CONFCALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_CONFCALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_BACKGROUND_LABEL" 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="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="254" y="0"/>
+ </Label>
+ <Button id="IDC_CONF_CALL_MORE_BUTTON" parent="IDL_CONFCALL_FORM">
+ <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="C01-1_icon_more.png" normalBitmapPath="" normalColor="#FFFFFF" normalColorOpacity="0" normalTextColor="" pressedBGBitmapPath="C01-1_icon_more_press.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="72" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="16" marginTop="0" mode="Portrait" rightRelation="IDL_CONFCALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="72" x="632" y="23"/>
+ <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="533" x="620" y="122"/>
+ </Button>
+ <Label id="IDC_CALLER1_LABEL" parent="IDL_CONFCALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="Conference call" textColor="#FFFFFF" textSize="64" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="69" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_CONFCALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="24" marginRight="2" marginTop="24" mode="Portrait" rightRelation="IDC_CONF_CALL_MORE_BUTTON" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_LEFT" topRelation="IDC_BACKGROUND_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="606" x="24" y="24"/>
+ <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="250" y="436"/>
+ </Label>
+ <Label id="IDC_PARTICIPANTS_LABEL" parent="IDL_CONFCALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="#FFFFFF" textSize="38" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="46" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_CONFCALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="24" marginRight="24" marginTop="6" mode="Portrait" rightRelation="IDL_CONFCALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="672" x="24" y="99"/>
+ <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="376" y="428"/>
+ </Label>
+ <Label id="IDC_CALLER1_TIME_LABEL" parent="IDL_CONFCALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_RIGHT" text="00:00:01" textColor="#FFFFFF" textSize="30" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="46" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="24" marginTop="6" mode="Portrait" rightRelation="IDL_CONFCALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="300" x="396" y="99"/>
+ <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="734" y="462"/>
+ </Label>
+ <Button id="IDC_HOLD_BUTTON" parent="IDL_CONFCALL_FORM">
+ <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="C01-1_button_hold_normal_01.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="C01-1_button_hold_normal_01_press.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_CONFCALL_BIGPHOTO_LABEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="78" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="15" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="78" x="458" y="627"/>
+ <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="348" x="931" y="348"/>
+ </Button>
+ <Label id="IDC_HOLD_LABEL" parent="IDL_CONFCALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="#FFFFFF" textSize="36" textStyle="LABEL_TEXT_STYLE_BOLD" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_CONFCALL_BIGPHOTO_LABEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="78" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_HOLD_BUTTON" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="15" marginLeft="0" marginRight="14" marginTop="0" mode="Portrait" rightRelation="IDC_CONFCALL_BIGPHOTO_LABEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="170" x="536" y="627"/>
+ <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="229" x="1050" y="355"/>
+ </Label>
+ <Label id="IDC_DIVIDER_LABEL" parent="IDL_CONFCALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#554747" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <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="IDC_CONF_CALL_MORE_BUTTON" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_LEFT" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="2" x="630" y="24"/>
+ <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="314" x="965" y="68"/>
+ </Label>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+
+<Scene Bversion="3.0.0.201302021409" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_CONFCALL_LIST_FORM">
+ <property backgroundColor="#FFFFFF" 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" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Label id="IDC_FOOTER_LABEL" parent="IDL_CONFCALL_LIST_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#6B8DA4" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDL_CONFCALL_LIST_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="114" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_CONFCALL_LIST_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_CONFCALL_LIST_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="1106"/>
+ <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="711" y="626"/>
+ </Label>
+ <Button id="IDC_END_CONFCALL_BUTTON" parent="IDL_CONFCALL_LIST_FORM">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="#DDDDDD" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="#000000" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="#B33C3C" normalColorOpacity="100" normalTextColor="#F9F9F9" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="#409CD3" pressedColorOpacity="100" pressedTextColor="#000000" text="End Call" textSize="48" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_FOOTER_LABEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_TOP" centerHorizontal="false" centerVertical="false" height="112" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_CONFCALL_LIST_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="26" marginLeft="16" marginRight="16" marginTop="0" mode="Portrait" rightRelation="IDL_CONFCALL_LIST_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="688" x="16" y="968"/>
+ <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="533" x="275" y="500"/>
+ </Button>
+ <Label id="IDC_CALL_TIME_LABEL" parent="IDL_CONFCALL_LIST_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="01:02:30" textColor="#000000" textSize="48" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_END_CONFCALL_BUTTON" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_TOP" centerHorizontal="true" centerVertical="false" height="78" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="118" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="300" x="210" y="772"/>
+ <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="583" y="386"/>
+ </Label>
+ <Label id="IDC_CONF_TITLE_LABEL" parent="IDL_CONFCALL_LIST_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#3F9BD2" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="Conference Call" textColor="#F9F9F9" textSize="54" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="108" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_CONFCALL_LIST_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDL_CONFCALL_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="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="325" y="2"/>
+ </Label>
+ <Button id="IDC_HOLD_CONFCALL_BUTTON" parent="IDL_CONFCALL_LIST_FORM">
+ <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_LEFT" normalBGBitmapPath="C01-1_button_hold_normal.png" normalBitmapPath="C01-1_icon_hold_78x78.png" normalColor="#8E9BA3" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="C01-1_button_hold_press.png" pressedBitmapPath="C01-1_button_hold_press.png" pressedColor="#409CD3" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDC_END_CONFCALL_BUTTON" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_TOP" centerHorizontal="false" centerVertical="false" height="78" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="118" marginLeft="0" marginRight="40" marginTop="0" mode="Portrait" rightRelation="IDL_CONFCALL_LIST_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="78" x="602" y="772"/>
+ <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="533" x="622" y="444"/>
+ </Button>
+ <Panel id="IDC_CALLER1_PANEL" parent="IDL_CONFCALL_LIST_FORM">
+ <property backgroundColor="" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="112" 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="108"/>
+ <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="" type="NONE" verticalFitPolicy="FIT_POLICY_FIXED" width="533" x="368" y="397"/>
+ </Panel>
+ <Button id="IDC_END_CALLER1" parent="IDC_CALLER1_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="C01-1_conference_end.png" normalColor="#B43C3C" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="C01-1_conference_end_press.png" pressedColor="#3D99D0" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="74" mode="Portrait" width="80" x="624" y="19"/>
+ <layout height="469" mode="Landscape" width="72" x="100" y="0"/>
+ </Button>
+ <Button id="IDC_SPLIT_CALLER1" parent="IDC_CALLER1_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="C01-1_conference_split.png" normalColor="#818C94" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="C01-1_conference_split_press.png" pressedColor="#3F9BD2" pressedColorOpacity="100" pressedTextColor="" text="" textSize="6" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="72" mode="Portrait" width="72" x="16" y="20"/>
+ <layout height="462" mode="Landscape" width="72" x="87" y="0"/>
+ </Button>
+ <Label id="IDC_CALLER1_LABEL" parent="IDC_CALLER1_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="TEST" textColor="#000000" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="112" mode="Portrait" width="504" x="104" y="0"/>
+ <layout height="565" mode="Landscape" width="46" x="4" y="0"/>
+ </Label>
+ <Label id="IDC__LINE_LABEL1" parent="IDL_CONFCALL_LIST_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#C0C0C0" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="1" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_CONFCALL_LIST_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_CONFCALL_LIST_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_CALLER1_PANEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="220"/>
+ <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="118" y="391"/>
+ </Label>
+ <Panel id="IDC_CALLER2_PANEL" parent="IDL_CONFCALL_LIST_FORM">
+ <property backgroundColor="" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="112" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC__LINE_LABEL1" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" type="NONE" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="221"/>
+ <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="" type="NONE" verticalFitPolicy="FIT_POLICY_FIXED" width="533" x="378" y="407"/>
+ </Panel>
+ <Button id="IDC_END_CALLER2" parent="IDC_CALLER2_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="C01-1_conference_end.png" normalColor="#B43C3C" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="C01-1_conference_end_press.png" pressedColor="#3D99D0" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="74" mode="Portrait" width="80" x="624" y="19"/>
+ <layout height="469" mode="Landscape" width="72" x="100" y="0"/>
+ </Button>
+ <Button id="IDC_SPLIT_CALLER2" parent="IDC_CALLER2_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="C01-1_conference_split.png" normalColor="#818C94" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="C01-1_conference_split_press.png" pressedColor="#3F9BD2" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="72" mode="Portrait" width="72" x="16" y="20"/>
+ <layout height="462" mode="Landscape" width="72" x="87" y="0"/>
+ </Button>
+ <Label id="IDC_CALLER2_LABEL" parent="IDC_CALLER2_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="TEST" textColor="#000000" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="112" mode="Portrait" width="504" x="104" y="0"/>
+ <layout height="565" mode="Landscape" width="46" x="4" y="0"/>
+ </Label>
+ <Label id="IDC__LINE_LABEL2" parent="IDL_CONFCALL_LIST_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#C0C0C0" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="1" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_CONFCALL_LIST_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_CONFCALL_LIST_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_CALLER2_PANEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="333"/>
+ <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="118" y="391"/>
+ </Label>
+ <Panel id="IDC_CALLER3_PANEL" parent="IDL_CONFCALL_LIST_FORM">
+ <property backgroundColor="" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="112" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC__LINE_LABEL2" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" type="NONE" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="334"/>
+ <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="" type="NONE" verticalFitPolicy="FIT_POLICY_FIXED" width="533" x="378" y="407"/>
+ </Panel>
+ <Button id="IDC_END_CALLER3" parent="IDC_CALLER3_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="C01-1_conference_end.png" normalColor="#B43C3C" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="C01-1_conference_end_press.png" pressedColor="#3D99D0" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="74" mode="Portrait" width="80" x="624" y="19"/>
+ <layout height="469" mode="Landscape" width="72" x="100" y="0"/>
+ </Button>
+ <Button id="IDC_SPLIT_CALLER3" parent="IDC_CALLER3_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="C01-1_conference_split.png" normalColor="#818C94" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="C01-1_conference_split_press.png" pressedColor="#3F9BD2" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="72" mode="Portrait" width="72" x="16" y="20"/>
+ <layout height="462" mode="Landscape" width="72" x="87" y="0"/>
+ </Button>
+ <Label id="IDC_CALLER3_LABEL" parent="IDC_CALLER3_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="TEST" textColor="#000000" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="112" mode="Portrait" width="504" x="104" y="0"/>
+ <layout height="565" mode="Landscape" width="46" x="4" y="0"/>
+ </Label>
+ <Label id="IDC__LINE_LABEL3" parent="IDL_CONFCALL_LIST_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#C0C0C0" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="1" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_CONFCALL_LIST_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_CONFCALL_LIST_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_CALLER3_PANEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="446"/>
+ <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="118" y="391"/>
+ </Label>
+ <Panel id="IDC_CALLER4_PANEL" parent="IDL_CONFCALL_LIST_FORM">
+ <property backgroundColor="" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="112" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC__LINE_LABEL3" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" type="NONE" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="447"/>
+ <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="" type="NONE" verticalFitPolicy="FIT_POLICY_FIXED" width="533" x="388" y="417"/>
+ </Panel>
+ <Button id="IDC_END_CALLER4" parent="IDC_CALLER4_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="C01-1_conference_end.png" normalColor="#B43C3C" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="C01-1_conference_end_press.png" pressedColor="#3D99D0" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="74" mode="Portrait" width="80" x="624" y="19"/>
+ <layout height="469" mode="Landscape" width="72" x="100" y="0"/>
+ </Button>
+ <Button id="IDC_SPLIT_CALLER4" parent="IDC_CALLER4_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="C01-1_conference_split.png" normalColor="#818C94" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="C01-1_conference_split_press.png" pressedColor="#3F9BD2" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="72" mode="Portrait" width="72" x="16" y="20"/>
+ <layout height="462" mode="Landscape" width="72" x="87" y="0"/>
+ </Button>
+ <Label id="IDC_CALLER4_LABEL" parent="IDC_CALLER4_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="TEST" textColor="#000000" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="112" mode="Portrait" width="504" x="104" y="0"/>
+ <layout height="565" mode="Landscape" width="46" x="4" y="0"/>
+ </Label>
+ <Label id="IDC__LINE_LABEL4" parent="IDL_CONFCALL_LIST_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#C0C0C0" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="1" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_CONFCALL_LIST_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_CONFCALL_LIST_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_CALLER4_PANEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="559"/>
+ <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="118" y="391"/>
+ </Label>
+ <Panel id="IDC_CALLER5_PANEL" parent="IDL_CONFCALL_LIST_FORM">
+ <property backgroundColor="" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="112" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC__LINE_LABEL4" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" type="NONE" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="560"/>
+ <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="" type="NONE" verticalFitPolicy="FIT_POLICY_FIXED" width="533" x="388" y="417"/>
+ </Panel>
+ <Button id="IDC_END_CALLER5" parent="IDC_CALLER5_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="C01-1_conference_end.png" normalColor="#B43C3C" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="C01-1_conference_end_press.png" pressedColor="#3D99D0" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="74" mode="Portrait" width="80" x="624" y="19"/>
+ <layout height="469" mode="Landscape" width="72" x="100" y="0"/>
+ </Button>
+ <Button id="IDC_SPLIT_CALLER5" parent="IDC_CALLER5_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="C01-1_conference_split.png" normalColor="#818C94" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="C01-1_conference_split_press.png" pressedColor="#3F9BD2" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="72" mode="Portrait" width="72" x="16" y="20"/>
+ <layout height="462" mode="Landscape" width="72" x="87" y="0"/>
+ </Button>
+ <Label id="IDC_CALLER5_LABEL" parent="IDC_CALLER5_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="TEST" textColor="#000000" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="112" mode="Portrait" width="504" x="104" y="0"/>
+ <layout height="565" mode="Landscape" width="46" x="4" y="0"/>
+ </Label>
+ <Label id="IDC__LINE_LABEL5" parent="IDL_CONFCALL_LIST_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#C0C0C0" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="1" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_CONFCALL_LIST_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_CONFCALL_LIST_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_CALLER5_PANEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="672"/>
+ <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="108" y="381"/>
+ </Label>
+ <Button id="IDC_BACK_BUTTON" parent="IDL_CONFCALL_LIST_FORM">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="#6B8DA4" highlightedColorOpacity="0" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="C01-1_btn_back.png" normalColor="#6B8DA4" normalColorOpacity="0" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="#6B8DA4" pressedColorOpacity="0" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_FOOTER_LABEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="72" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_FOOTER_LABEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="10" marginLeft="628" marginRight="20" marginTop="32" mode="Portrait" rightRelation="IDC_FOOTER_LABEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_FOOTER_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="72" x="628" y="1138"/>
+ <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="177" x="1102" y="588"/>
+ </Button>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE ScenePanel SYSTEM "UIForm.dtd">
+
+<ScenePanel Bversion="3.0.0.201302021409" Dversion="20120315">
+ <Panel id="IDL_DIALER_KEYPAD_PANEL">
+ <property backgroundColor="#202020" backgroundColorOpacity="100" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>
+ <layout column1Collapsed="false" column1Shrinkable="true" column1Spacing="0" column1Stretchable="true" column2Collapsed="false" column2Shrinkable="true" column2Spacing="12" column2Stretchable="true" column3Collapsed="false" column3Shrinkable="true" column3Spacing="12" column3Stretchable="true" height="754" maxColumn="3" maxRow="5" mode="Portrait" row1Collapsed="false" row1Shrinkable="true" row1Spacing="0" row1Stretchable="true" row2Collapsed="false" row2Shrinkable="true" row2Spacing="4" row2Stretchable="true" row3Collapsed="false" row3Shrinkable="true" row3Spacing="4" row3Stretchable="true" row4Collapsed="false" row4Shrinkable="true" row4Spacing="4" row4Stretchable="true" row5Collapsed="false" row5Shrinkable="true" row5Spacing="4" row5Stretchable="true" type="LAYOUT_GRID" width="720" x="0" y="0"/>
+ <layout height="720" mode="Landscape" type="LAYOUT_RELATIVE" width="1000" x="0" y="0"/>
+ </Panel>
+ <Button id="IDC_BUTTON1" parent="IDL_DIALER_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="146" horizontalAlignment="LAYOUT_HORIZONTAL_ALIGN_LEFT" marginBottom="0" marginLeft="12" marginRight="0" marginTop="10" mode="Portrait" positionColumn="0" positionColumnSpan="1" positionRow="0" positionRowSpan="1" verticalAlignment="LAYOUT_VERTICAL_ALIGN_TOP" width="228"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="88" 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="269" y="233"/>
+ </Button>
+ <Button id="IDC_BUTTON2" parent="IDL_DIALER_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="146" horizontalAlignment="LAYOUT_HORIZONTAL_ALIGN_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="10" mode="Portrait" positionColumn="1" positionColumnSpan="1" positionRow="0" positionRowSpan="1" verticalAlignment="LAYOUT_VERTICAL_ALIGN_TOP" width="228"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="88" 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="352" y="171"/>
+ </Button>
+ <Button id="IDC_BUTTON3" parent="IDL_DIALER_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="146" horizontalAlignment="LAYOUT_HORIZONTAL_ALIGN_LEFT" marginBottom="0" marginLeft="0" marginRight="12" marginTop="10" mode="Portrait" positionColumn="2" positionColumnSpan="1" positionRow="0" positionRowSpan="1" verticalAlignment="LAYOUT_VERTICAL_ALIGN_TOP" width="228"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="88" 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="175" x="578" y="97"/>
+ </Button>
+ <Button id="IDC_BUTTON4" parent="IDL_DIALER_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="146" horizontalAlignment="LAYOUT_HORIZONTAL_ALIGN_LEFT" marginBottom="0" marginLeft="12" marginRight="0" marginTop="0" mode="Portrait" positionColumn="0" positionColumnSpan="1" positionRow="1" positionRowSpan="1" verticalAlignment="LAYOUT_VERTICAL_ALIGN_TOP" width="228"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="88" 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="148" y="185"/>
+ </Button>
+ <Button id="IDC_BUTTON5" parent="IDL_DIALER_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="146" horizontalAlignment="LAYOUT_HORIZONTAL_ALIGN_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" positionColumn="1" positionColumnSpan="1" positionRow="1" positionRowSpan="1" verticalAlignment="LAYOUT_VERTICAL_ALIGN_TOP" width="228"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="88" 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="326" y="188"/>
+ </Button>
+ <Button id="IDC_BUTTON6" parent="IDL_DIALER_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="146" horizontalAlignment="LAYOUT_HORIZONTAL_ALIGN_LEFT" marginBottom="0" marginLeft="0" marginRight="12" marginTop="0" mode="Portrait" positionColumn="2" positionColumnSpan="1" positionRow="1" positionRowSpan="1" verticalAlignment="LAYOUT_VERTICAL_ALIGN_TOP" width="228"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="88" 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="195" x="558" y="204"/>
+ </Button>
+ <Button id="IDC_BUTTON7" parent="IDL_DIALER_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="146" horizontalAlignment="LAYOUT_HORIZONTAL_ALIGN_LEFT" marginBottom="0" marginLeft="12" marginRight="0" marginTop="0" mode="Portrait" positionColumn="0" positionColumnSpan="1" positionRow="2" positionRowSpan="1" verticalAlignment="LAYOUT_VERTICAL_ALIGN_TOP" width="228"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="88" 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="205" y="354"/>
+ </Button>
+ <Button id="IDC_BUTTON8" parent="IDL_DIALER_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="146" horizontalAlignment="LAYOUT_HORIZONTAL_ALIGN_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" positionColumn="1" positionColumnSpan="1" positionRow="2" positionRowSpan="1" verticalAlignment="LAYOUT_VERTICAL_ALIGN_TOP" width="228"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="88" 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="311" y="344"/>
+ </Button>
+ <Button id="IDC_BUTTON9" parent="IDL_DIALER_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="146" horizontalAlignment="LAYOUT_HORIZONTAL_ALIGN_LEFT" marginBottom="0" marginLeft="0" marginRight="12" marginTop="0" mode="Portrait" positionColumn="2" positionColumnSpan="1" positionRow="2" positionRowSpan="1" verticalAlignment="LAYOUT_VERTICAL_ALIGN_TOP" width="228"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="88" 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="139" x="614" y="329"/>
+ </Button>
+ <Button id="IDC_BUTTON10" parent="IDL_DIALER_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="145" horizontalAlignment="LAYOUT_HORIZONTAL_ALIGN_LEFT" marginBottom="0" marginLeft="12" marginRight="0" marginTop="0" mode="Portrait" positionColumn="0" positionColumnSpan="1" positionRow="3" positionRowSpan="1" verticalAlignment="LAYOUT_VERTICAL_ALIGN_TOP" width="228"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="88" 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="135" y="479"/>
+ </Button>
+ <Button id="IDC_BUTTON11" parent="IDL_DIALER_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="145" horizontalAlignment="LAYOUT_HORIZONTAL_ALIGN_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" positionColumn="1" positionColumnSpan="1" positionRow="3" positionRowSpan="1" verticalAlignment="LAYOUT_VERTICAL_ALIGN_TOP" width="228"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="88" 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="401" y="491"/>
+ </Button>
+ <Button id="IDC_BUTTON12" parent="IDL_DIALER_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="145" horizontalAlignment="LAYOUT_HORIZONTAL_ALIGN_LEFT" marginBottom="0" marginLeft="0" marginRight="12" marginTop="0" mode="Portrait" positionColumn="2" positionColumnSpan="1" positionRow="3" positionRowSpan="1" verticalAlignment="LAYOUT_VERTICAL_ALIGN_TOP" width="228"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="88" 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="172" x="581" y="477"/>
+ </Button>
+ <Button id="IDC_BUTTON13" parent="IDL_DIALER_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="145" horizontalAlignment="LAYOUT_HORIZONTAL_ALIGN_LEFT" marginBottom="8" marginLeft="12" marginRight="0" marginTop="0" mode="Portrait" positionColumn="0" positionColumnSpan="1" positionRow="4" positionRowSpan="1" verticalAlignment="LAYOUT_VERTICAL_ALIGN_TOP" width="228"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="88" 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="57" y="617"/>
+ </Button>
+ <Button id="IDC_BUTTON14" parent="IDL_DIALER_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="145" horizontalAlignment="LAYOUT_HORIZONTAL_ALIGN_LEFT" marginBottom="8" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" positionColumn="1" positionColumnSpan="1" positionRow="4" positionRowSpan="1" verticalAlignment="LAYOUT_VERTICAL_ALIGN_TOP" width="228"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="88" 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="217" x="536" y="611"/>
+ </Button>
+ <Button id="IDC_BUTTON15" parent="IDL_DIALER_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout height="145" horizontalAlignment="LAYOUT_HORIZONTAL_ALIGN_LEFT" marginBottom="8" marginLeft="0" marginRight="12" marginTop="0" mode="Portrait" positionColumn="2" positionColumnSpan="1" positionRow="4" positionRowSpan="1" verticalAlignment="LAYOUT_VERTICAL_ALIGN_TOP" width="228"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="88" 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="217" x="536" y="611"/>
+ </Button>
+</ScenePanel>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+
+<Scene Bversion="3.0.0.201208240913" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_DIAL_FORM">
+ <property backgroundColor="" backgroundColorOpacity="100" orientation="Portrait" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>
+ <layout mode="Portrait" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Footer>
+ <property backgroundBitmapPath="" color="" colorOpacity="0" disabledButtonColor="" disabledButtonColorOpacity="0" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="0" disabledItemTextColor="" footerStyle="FOOTER_STYLE_BUTTON_TEXT" highlightedButtonColor="" highlightedButtonColorOpacity="0" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="0" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="0" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="0" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="0" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="0" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="0" selectedItemTextColor="" showBackButton="true"/>
+ <itemSet/>
+ </Footer>
+ <Header>
+ <property backgroundBitmapPath="" color="" colorOpacity="0" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="0" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="0" disabledItemTextColor="" headerStyle="HEADER_STYLE_TAB" 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="" titleIconPath="" titleText="" titleTextColor=""/>
+ <itemSet>
+ <headerItem actionId="101" disabledBGBitmapPath="" disabledIconPath="" highlightedBGBitmapPath="" highlightedIconPath="" normalBGBitmapPath="" normalIconPath="" pressedBGBitmapPath="" pressedIconPath="" selectedBGBitmapPath="" text="Dialer"/>
+ <headerItem actionId="103" disabledBGBitmapPath="" disabledIconPath="" highlightedBGBitmapPath="" highlightedIconPath="" normalBGBitmapPath="" normalIconPath="" pressedBGBitmapPath="" pressedIconPath="" selectedBGBitmapPath="" text="Logs"/>
+ </itemSet>
+ </Header>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE ScenePanel SYSTEM "UIForm.dtd">
+<ScenePanel Bversion="3.0.0.201302021409" Dversion="20120315">
+ <Panel id="IDL_DTMF_KEYPAD_PANEL">
+ <property backgroundColor="#FFFFFF" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>
+ <layout height="713" mode="Portrait" type="LAYOUT_RELATIVE" width="640" x="40" y="0"/>
+ <layout height="720" mode="Landscape" type="LAYOUT_RELATIVE" width="1000" x="0" y="0"/>
+ </Panel>
+ <TextBox id="IDC_TEXTBOX" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property disabledBackgroundBitmapPath="" disabledColor="#FFFFFF" disabledColorOpacity="0" disabledTextColor="" highlightedBackgroundBitmapPath="" highlightedColor="#FFFFFF" highlightedColorOpacity="0" highlightedTextColor="" lineSpacingExtra="1" lineSpacingMultiplier="1" normalBackgroundBitmapPath="" normalColor="#FFFFFF" normalColorOpacity="0" normalTextColor="#FFFFFF" text="" textAlignment="ALIGNMENT_LEFT" textSize="94" textboxBorder="TEXT_BOX_BORDER_NONE"/>
+ <layout bottomRelation="None" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="115" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_DTMF_KEYPAD_PANEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="147" marginLeft="0" marginRight="0" marginTop="32" mode="Portrait" rightRelation="IDL_DTMF_KEYPAD_PANEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDL_DTMF_KEYPAD_PANEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="640" x="0" y="32"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="155" 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="587" x="350" y="119"/>
+ </TextBox>
+ <Label id="IDC_LABEL1" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#8C8889" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="108" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_DTMF_KEYPAD_PANEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="212" marginRight="0" marginTop="33" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_TEXTBOX" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="1" x="212" y="180"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="256" y="148"/>
+ </Label>
+ <Label id="IDC_LABEL2" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#5B5B5B" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="108" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL1" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="33" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_TEXTBOX" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="1" x="213" y="180"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="266" y="158"/>
+ </Label>
+ <Label id="IDC_LABEL3" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#8C8889" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="108" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL2" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="212" marginRight="0" marginTop="33" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_TEXTBOX" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="1" x="426" y="180"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="266" y="158"/>
+ </Label>
+ <Label id="IDC_LABEL4" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#5B5B5B" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="108" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL3" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="33" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_TEXTBOX" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="1" x="427" y="180"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="276" y="168"/>
+ </Label>
+ <Label id="IDC_LABEL5" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#8C8889" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="1" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="14" marginRight="0" marginTop="154" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_TEXTBOX" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="612" x="14" y="301"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="140" y="329"/>
+ </Label>
+ <Label id="IDC_LABEL6" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#5B5B5B" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="1" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="14" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_LABEL5" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="612" x="14" y="302"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="150" y="339"/>
+ </Label>
+ <Label id="IDC_LABEL7" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#8C8889" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="108" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_DTMF_KEYPAD_PANEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="212" marginRight="0" marginTop="165" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_TEXTBOX" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="1" x="212" y="312"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="276" y="168"/>
+ </Label>
+ <Label id="IDC_LABEL8" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#5B5B5B" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="108" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL7" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="165" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_TEXTBOX" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="1" x="213" y="312"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="276" y="168"/>
+ </Label>
+ <Label id="IDC_LABEL9" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#8C8889" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="108" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL8" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="212" marginRight="0" marginTop="165" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_TEXTBOX" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="1" x="426" y="312"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="266" y="158"/>
+ </Label>
+ <Label id="IDC_LABEL10" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#5B5B5B" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="108" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL9" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="165" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_TEXTBOX" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="1" x="427" y="312"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="286" y="178"/>
+ </Label>
+ <Label id="IDC_LABEL12" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#8C8889" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="1" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="14" marginRight="0" marginTop="134" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_LABEL6" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="612" x="14" y="437"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="150" y="339"/>
+ </Label>
+ <Label id="IDC_LABEL11" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#5B5B5B" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="1" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="14" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_LABEL12" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="612" x="14" y="438"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="160" y="349"/>
+ </Label>
+ <Label id="IDC_LABEL13" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#8C8889" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="108" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_DTMF_KEYPAD_PANEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="212" marginRight="0" marginTop="301" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_TEXTBOX" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="1" x="212" y="448"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="266" y="158"/>
+ </Label>
+ <Label id="IDC_LABEL14" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#5B5B5B" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="108" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL13" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="301" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_TEXTBOX" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="1" x="213" y="448"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="276" y="168"/>
+ </Label>
+ <Label id="IDC_LABEL16" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#8C8889" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="108" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL14" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="212" marginRight="0" marginTop="301" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_TEXTBOX" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="1" x="426" y="448"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="276" y="168"/>
+ </Label>
+ <Label id="IDC_LABEL15" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#5B5B5B" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="108" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL16" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="301" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_TEXTBOX" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="1" x="427" y="448"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="286" y="178"/>
+ </Label>
+ <Label id="IDC_LABEL18" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#8C8889" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="1" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="14" marginRight="0" marginTop="134" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_LABEL11" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="612" x="14" y="573"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="150" y="339"/>
+ </Label>
+ <Label id="IDC_LABEL17" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#5B5B5B" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="1" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="14" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_LABEL18" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="612" x="14" y="574"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="160" y="349"/>
+ </Label>
+ <Label id="IDC_LABEL21" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#8C8889" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="108" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_DTMF_KEYPAD_PANEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="426" marginRight="213" marginTop="437" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_TEXTBOX" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="1" x="426" y="584"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="286" y="178"/>
+ </Label>
+ <Label id="IDC_LABEL19" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#5B5B5B" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="108" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL21" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="437" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_TEXTBOX" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="1" x="427" y="584"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="296" y="188"/>
+ </Label>
+ <Label id="IDC_LABEL22" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#8C8889" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="108" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_DTMF_KEYPAD_PANEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="212" marginRight="0" marginTop="437" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_TEXTBOX" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="1" x="212" y="584"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="276" y="168"/>
+ </Label>
+ <Label id="IDC_LABEL20" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#5B5B5B" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="108" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL22" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="437" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_TEXTBOX" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="1" x="213" y="584"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="286" y="178"/>
+ </Label>
+ <Button id="IDC_BUTTON1" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_LABEL5" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_TOP" centerHorizontal="false" centerVertical="false" height="134" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_DTMF_KEYPAD_PANEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="20" mode="Portrait" rightRelation="IDC_LABEL1" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_LEFT" topRelation="IDC_TEXTBOX" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="212" x="0" y="167"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="79" y="191"/>
+ </Button>
+ <Button id="IDC_BUTTON2" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_LABEL5" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_TOP" centerHorizontal="false" centerVertical="false" height="134" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL2" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="20" mode="Portrait" rightRelation="IDC_LABEL3" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_LEFT" topRelation="IDC_TEXTBOX" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="212" x="214" y="167"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="305" x="407" y="211"/>
+ </Button>
+ <Button id="IDC_BUTTON3" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_LABEL5" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_TOP" centerHorizontal="false" centerVertical="false" height="134" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL4" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="20" mode="Portrait" rightRelation="IDL_DTMF_KEYPAD_PANEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_TEXTBOX" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="212" x="428" y="167"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="152" x="560" y="196"/>
+ </Button>
+ <Button id="IDC_BUTTON4" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_LABEL12" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_TOP" centerHorizontal="false" centerVertical="false" height="134" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_DTMF_KEYPAD_PANEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDC_LABEL7" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_LEFT" topRelation="IDC_LABEL6" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="212" x="0" y="303"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="83" y="350"/>
+ </Button>
+ <Button id="IDC_BUTTON5" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_LABEL12" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_TOP" centerHorizontal="false" centerVertical="false" height="134" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL8" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDC_LABEL9" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_LEFT" topRelation="IDC_LABEL6" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="212" x="214" y="303"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="359" y="324"/>
+ </Button>
+ <Button id="IDC_BUTTON6" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_LABEL12" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_TOP" centerHorizontal="false" centerVertical="false" height="134" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL10" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_DTMF_KEYPAD_PANEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_LABEL6" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="212" x="428" y="303"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="171" x="541" y="316"/>
+ </Button>
+ <Button id="IDC_BUTTON7" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_LABEL18" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_TOP" centerHorizontal="false" centerVertical="false" height="134" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_DTMF_KEYPAD_PANEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDC_LABEL13" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_LEFT" topRelation="IDC_LABEL11" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="212" x="0" y="439"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="132" y="455"/>
+ </Button>
+ <Button id="IDC_BUTTON8" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_LABEL18" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_TOP" centerHorizontal="false" centerVertical="false" height="134" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL14" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDC_LABEL16" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_LEFT" topRelation="IDC_LABEL11" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="212" x="214" y="439"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="402" y="451"/>
+ </Button>
+ <Button id="IDC_BUTTON9" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_LABEL18" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_TOP" centerHorizontal="false" centerVertical="false" height="134" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL15" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_DTMF_KEYPAD_PANEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_LABEL11" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="212" x="428" y="439"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="120" x="592" y="414"/>
+ </Button>
+ <Button id="IDC_BUTTON10" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDL_DTMF_KEYPAD_PANEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="134" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_DTMF_KEYPAD_PANEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="4" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDC_LABEL22" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_LEFT" topRelation="IDC_LABEL17" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="212" x="0" y="575"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="83" 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="334" x="84" y="556"/>
+ </Button>
+ <Button id="IDC_BUTTON11" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDL_DTMF_KEYPAD_PANEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="134" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL20" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="4" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDC_LABEL21" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_LEFT" topRelation="IDC_LABEL17" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="212" x="214" y="575"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="77" 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="334" x="374" y="562"/>
+ </Button>
+ <Button id="IDC_BUTTON12" parent="IDL_DTMF_KEYPAD_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDL_DTMF_KEYPAD_PANEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="134" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL19" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="4" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_DTMF_KEYPAD_PANEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_LABEL17" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="212" x="428" y="575"/>
+ <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="106" x="606" y="575"/>
+ </Button>
+</ScenePanel>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+
+<Scene Bversion="3.0.0.201302021409" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_EMERGENCY_CALL_FORM">
+ <property backgroundColor="#000000" 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" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Label id="IDC_CALLER1_BIGPHOTO_LABEL" parent="IDL_EMERGENCY_CALL_FORM">
+ <property backgroundBitmapPath="C01-1_end call_default_caller ID_720x720.png" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDL_EMERGENCY_CALL_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="true" centerVertical="false" height="720" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_EMERGENCY_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="500" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDL_EMERGENCY_CALL_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="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="618" y="107"/>
+ </Label>
+ <Label id="IDC_BACKGROUND_LABEL" parent="IDL_EMERGENCY_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="50" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="162" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_EMERGENCY_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_EMERGENCY_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" 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="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="515" y="29"/>
+ </Label>
+ <Label id="IDC_LINE_LABEL" parent="IDL_EMERGENCY_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#ABF005" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="10" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_EMERGENCY_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_EMERGENCY_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_BACKGROUND_LABEL" 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="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="254" y="0"/>
+ </Label>
+ <Label id="IDC_VOICE_CALL_ICON_LABEL" parent="IDL_EMERGENCY_CALL_FORM">
+ <property backgroundBitmapPath="C01-1_voice_call_icon.png" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="9" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="70" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="24" marginTop="23" mode="Portrait" rightRelation="IDL_EMERGENCY_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_BACKGROUND_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="70" x="626" y="23"/>
+ <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="512" y="431"/>
+ </Label>
+ <Label id="IDC_CALLER1_LABEL" parent="IDL_EMERGENCY_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="Emergency call" textColor="#FFFFFF" textSize="58" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="69" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_EMERGENCY_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="24" marginRight="0" marginTop="24" mode="Portrait" rightRelation="IDC_VOICE_CALL_ICON_LABEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_LEFT" topRelation="IDC_BACKGROUND_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="602" x="24" y="24"/>
+ <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="250" y="436"/>
+ </Label>
+ <Label id="IDC_NUMBER1_LABEL" parent="IDL_EMERGENCY_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="#FFFFFF" textSize="38" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="46" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_EMERGENCY_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="24" marginRight="24" marginTop="6" mode="Portrait" rightRelation="IDL_EMERGENCY_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="672" x="24" y="99"/>
+ <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="376" y="428"/>
+ </Label>
+ <Label id="IDC_CALLER1_TIME_LABEL" parent="IDL_EMERGENCY_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_RIGHT" text="Calling..." textColor="#8BF632" textSize="30" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="46" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="24" marginTop="6" mode="Portrait" rightRelation="IDL_EMERGENCY_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="300" x="396" y="99"/>
+ <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="734" y="462"/>
+ </Label>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+<Scene Bversion="3.0.0.201212201745" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_EMERGENCY_DIAL_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" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Panel id="IDC_PANEL_EMERGENCY_DISPLAY_DATA" parent="IDL_EMERGENCY_DIAL_FORM">
+ <property backgroundColor="#E8F5FD" backgroundColorOpacity="100" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="1231" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_EMERGENCY_DIAL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_EMERGENCY_DIAL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDL_EMERGENCY_DIAL_FORM" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" type="LAYOUT_RELATIVE" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="0"/>
+ <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="" type="LAYOUT_RELATIVE" verticalFitPolicy="FIT_POLICY_FIXED" width="533" x="362" y="14"/>
+ </Panel>
+ <Label id="IDC_LABEL_EMERGENCY" parent="IDC_PANEL_EMERGENCY_DISPLAY_DATA">
+ <property backgroundBitmapPath="" backgroundColor="#3F9BD2" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="::IDS_EMERGENCY_CALL" textColor="#F9F9F9" textSize="54" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="108" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PANEL_EMERGENCY_DISPLAY_DATA" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDC_PANEL_EMERGENCY_DISPLAY_DATA" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_PANEL_EMERGENCY_DISPLAY_DATA" 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="150" 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="185" x="200" y="0"/>
+ </Label>
+ <EditField id="IDC_EDITFIELD_NUMBER" parent="IDC_PANEL_EMERGENCY_DISPLAY_DATA">
+ <property disabledBGBitmapPath="" disabledColor="" disabledColorOpacity="100" disabledTextColor="" ellipsisPosition="ELLIPSIS_POSITION_END" enableClear="false" groupStyle="GROUP_STYLE_NONE" guideText="" guideTextColor="" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalMargin="16" inputStyle="INPUT_STYLE_FULLSCREEN" keypadAction="" keypadEnabled="false" limitLength="18" linkTextColor="" lowerCaseMode="false" normalBGBitmapPath="" normalColor="#E8F5FD" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedColor="" pressedColorOpacity="100" text="" textHorizontalAlignment="ALIGNMENT_LEFT" textSize="45" titleStyle="EDIT_FIELD_TITLE_STYLE_NONE" titleText="" titleTextColor="" verticalMargin="12" viewMode="false"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="90" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PANEL_EMERGENCY_DISPLAY_DATA" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="77" mode="Portrait" rightRelation="IDC_PANEL_EMERGENCY_DISPLAY_DATA" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" style="EDIT_FIELD_STYLE_NORMAL" topRelation="IDC_LABEL_EMERGENCY" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="185"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="256" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" style="EDIT_FIELD_STYLE_NORMAL" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="148" x="268" y="0"/>
+ </EditField>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE ScenePanel SYSTEM "UIForm.dtd">
+<ScenePanel Bversion="3.0.0.201301291730" Dversion="20120315">
+ <Panel id="IDL_ENDCALLKEYS_PANEL">
+ <property backgroundColor="#FFFFFF" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>
+ <layout height="241" mode="Portrait" type="LAYOUT_RELATIVE" width="720" x="0" y="990"/>
+ <layout height="52" mode="Landscape" type="LAYOUT_RELATIVE" width="533" x="350" y="164"/>
+ </Panel>
+ <Label id="IDC_LABEL1" parent="IDL_ENDCALLKEYS_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#656D76" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="9" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="1" 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="0"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="139" 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="200" x="272" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL5" parent="IDL_ENDCALLKEYS_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="9" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="198" 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="3" x="236" y="21"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="139" 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="200" x="119" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL6" parent="IDL_ENDCALLKEYS_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#354B5B" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="198" 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="3" x="239" y="21"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="139" 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="200" x="213" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL7" parent="IDL_ENDCALLKEYS_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="9" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="198" 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="3" x="478" y="21"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="139" 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="200" x="277" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL8" parent="IDL_ENDCALLKEYS_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#354B5B" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="9" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="198" 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="3" x="481" y="21"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="139" 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="200" x="231" y="0"/>
+ </Label>
+ <Button id="IDC_VOICECALL_BUTTON" parent="IDL_ENDCALLKEYS_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="#FFFFFF" disabledColorOpacity="0" 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"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="239" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_ENDCALLKEYS_PANEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_LABEL1" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="236" x="0" y="1"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="277" 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="100" x="100" y="0"/>
+ </Button>
+ <Button id="IDC_VIDEOCALL_BUTTON" parent="IDL_ENDCALLKEYS_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="#FFFFFF" disabledColorOpacity="0" 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"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="239" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL6" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_LABEL1" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="236" x="242" y="1"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="277" 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="98" x="142" y="0"/>
+ </Button>
+ <Button id="IDC_MSG_BUTTON" parent="IDL_ENDCALLKEYS_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="#FFFFFF" disabledColorOpacity="0" 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"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="239" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL8" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_LABEL1" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="236" x="484" y="1"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="277" 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="180" y="0"/>
+ </Button>
+</ScenePanel>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+
+<Scene Bversion="3.0.0.201302021409" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_END_CALL_FORM">
+ <property backgroundColor="#000000" 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" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Label id="IDC_CALLER1_BIGPHOTO_LABEL" parent="IDL_END_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDL_END_CALL_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="true" centerVertical="false" height="720" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_END_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="500" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDL_END_CALL_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="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="618" y="107"/>
+ </Label>
+ <Label id="IDC_BACKGROUND_LABEL" parent="IDL_END_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="50" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="162" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_END_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_END_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" 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="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="515" y="29"/>
+ </Label>
+ <Label id="IDC_LINE_LABEL" parent="IDL_END_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BE2F30" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="10" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_END_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_END_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_BACKGROUND_LABEL" 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="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="254" y="0"/>
+ </Label>
+ <Label id="IDC_CALLER1_LABEL" parent="IDL_END_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="#FFFFFF" textSize="58" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="69" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_END_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="24" marginRight="24" marginTop="24" mode="Portrait" rightRelation="IDL_END_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_BACKGROUND_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="672" x="24" y="24"/>
+ <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="250" y="436"/>
+ </Label>
+ <Label id="IDC_CALL_TIME_LABEL" parent="IDL_END_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_RIGHT" text="Call ended" textColor="#FF4800" textSize="30" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="46" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="24" marginTop="6" mode="Portrait" rightRelation="IDL_END_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="177" x="519" y="99"/>
+ <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="734" y="462"/>
+ </Label>
+ <Label id="IDC_NUMBER1_LABEL" parent="IDL_END_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="#FFFFFF" textSize="38" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="46" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_END_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="24" marginRight="24" marginTop="6" mode="Portrait" rightRelation="IDC_CALL_TIME_LABEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_LEFT" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="471" x="24" y="99"/>
+ <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="376" y="428"/>
+ </Label>
+ <Button id="IDC_ADD_TO_CONTACT_BUTTON" parent="IDL_END_CALL_FORM">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="#F9F9F9" 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="Add to contacts" textSize="38" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDL_END_CALL_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="true" centerVertical="false" height="92" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_END_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="322" marginLeft="40" marginRight="40" marginTop="803" mode="Portrait" rightRelation="IDL_END_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="None" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="640" x="40" y="806"/>
+ <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="533" x="592" y="448"/>
+ </Button>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE ScenePopup SYSTEM "UIForm.dtd">
+<ScenePopup Bversion="3.0.0.201301251814" Dversion="20120315">
+ <Popup id="IDL_ERROR_MSG_POPUP">
+ <property color="" titleText="" titleTextColor=""/>
+ <layout height="213" mode="Portrait" style="" type="LAYOUT_RELATIVE" width="720"/>
+ <layout height="612" mode="Landscape" style="" type="LAYOUT_RELATIVE" width="414"/>
+ </Popup>
+ <TextBox id="IDC_MSG_TEXTBOX" parent="IDL_ERROR_MSG_POPUP">
+ <property disabledBackgroundBitmapPath="" disabledColor="#FFFFFF" disabledColorOpacity="0" disabledTextColor="" highlightedBackgroundBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" lineSpacingExtra="1" lineSpacingMultiplier="1" normalBackgroundBitmapPath="" normalColor="#FFFFFF" normalColorOpacity="0" normalTextColor="" text="" textAlignment="" textSize="42" textboxBorder="TEXT_BOX_BORDER_NONE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="true" centerVertical="true" height="54" 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="79"/>
+ <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="58" x="33" y="30"/>
+ </TextBox>
+</ScenePopup>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+
+<Scene Bversion="3.0.0.201302021409" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_INCOMING_CALL_FORM">
+ <property backgroundColor="#000000" 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" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Label id="IDC_BIG_PHOTO_LABEL" parent="IDL_INCOMING_CALL_FORM">
+ <property backgroundBitmapPath="C01-1_end call_default_caller ID_720x720.png" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDL_INCOMING_CALL_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="true" centerVertical="false" height="720" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_INCOMING_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="500" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDL_INCOMING_CALL_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="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="618" y="107"/>
+ </Label>
+ <Label id="IDC_BACKGROUND_LABEL" parent="IDL_INCOMING_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="50" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="162" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_INCOMING_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_INCOMING_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" 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="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="515" y="29"/>
+ </Label>
+ <Label id="IDC_LINE_LABEL" parent="IDL_INCOMING_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#ABF005" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="10" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_INCOMING_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_INCOMING_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_BACKGROUND_LABEL" 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="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="254" y="0"/>
+ </Label>
+ <Label id="IDC_VOICE_CALL_ICON_LABEL" parent="IDL_INCOMING_CALL_FORM">
+ <property backgroundBitmapPath="C01-1_voice_call_icon.png" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="9" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="70" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="24" marginTop="23" mode="Portrait" rightRelation="IDL_INCOMING_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_BACKGROUND_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="70" x="626" y="23"/>
+ <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="512" y="431"/>
+ </Label>
+ <Label id="IDC_CALLER_LABEL" parent="IDL_INCOMING_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="#FFFFFF" textSize="58" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="69" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_INCOMING_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="24" marginRight="0" marginTop="24" mode="Portrait" rightRelation="IDC_VOICE_CALL_ICON_LABEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_LEFT" topRelation="IDC_BACKGROUND_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="602" x="24" y="24"/>
+ <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="250" y="436"/>
+ </Label>
+ <Label id="IDC_NUMBER_LABEL" parent="IDL_INCOMING_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="#FFFFFF" textSize="38" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="46" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_INCOMING_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="24" marginRight="24" marginTop="6" mode="Portrait" rightRelation="IDL_INCOMING_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_CALLER_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="672" x="24" y="99"/>
+ <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="376" y="428"/>
+ </Label>
+ <Label id="IDC_CALL_TIME_LABEL" parent="IDL_INCOMING_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_RIGHT" text="" textColor="#FFFFFF" textSize="48" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="46" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="24" marginTop="6" mode="Portrait" rightRelation="IDL_INCOMING_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_CALLER_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="300" x="396" y="99"/>
+ <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="734" y="462"/>
+ </Label>
+ <Panel id="IDC_REJECT_PANEL" parent="IDL_INCOMING_CALL_FORM">
+ <property backgroundColor="" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>
+ <layout bottomRelation="IDL_INCOMING_CALL_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="310" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_INCOMING_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_INCOMING_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="" type="LAYOUT_RELATIVE" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="910"/>
+ <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="" type="LAYOUT_RELATIVE" verticalFitPolicy="FIT_POLICY_FIXED" width="533" x="433" y="606"/>
+ </Panel>
+ <Button id="IDC_REJECT_MESSAGE_CANCEL_BUTTON" parent="IDC_REJECT_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="#F9F9F9" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="32" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="92" 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="0"/>
+ <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="368" x="165" y="0"/>
+ </Button>
+ <ScrollPanel id="IDC_LIST_SCROLLPANEL" parent="IDC_REJECT_PANEL">
+ <property autoResizingEnabled="true" backgroundColor="#F9F9F9" backgroundColorOpacity="100" clientAreaHeight="0" clientAreaWidth="0" pageScrollEnabled="false" scrollBarVisible="true" scrollDirection="SCROLL_PANEL_SCROLL_DIRECTION_VERTICAL" scrollInputMode="SCROLL_INPUT_MODE_ALLOW_ANY_DIRECTION"/>
+ <panelLayout height="100" mode="Portrait" width="720"/>
+ <panelLayout height="468" mode="Landscape" width="368"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="105" 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="92"/>
+ <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="" type="NONE" verticalFitPolicy="FIT_POLICY_FIXED" width="368" x="141" y="0"/>
+ </ScrollPanel>
+ <TableView id="IDC_MSG_TABLEVIEW" parent="IDC_LIST_SCROLLPANEL">
+ <property backgroundColor="" backgroundColorOpacity="0" fastScrollIndex="" itemDivider="true" itemDividerColor="" scrollBarStyle="TABLE_VIEW_SCROLL_BAR_STYLE_NONE" scrollInputMode="SCROLL_INPUT_MODE_ALLOW_ANY_DIRECTION" useSearchIcon="false"/>
+ <layout height="100" mode="Portrait" width="720" x="0" y="0"/>
+ <layout height="468" mode="Landscape" width="57" x="0" y="0"/>
+ </TableView>
+ <Label id="IDC_LABEL2" parent="IDC_REJECT_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#698BA2" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDC_REJECT_PANEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="114" 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="196"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="37" 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="368" x="165" y="15"/>
+ </Label>
+ <Button id="IDC_BACK_BUTTON" parent="IDC_REJECT_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="C01-1_btn_back.png" normalColor="#698BA2" normalColorOpacity="0" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_LABEL2" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="72" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="21" marginLeft="0" marginRight="21" marginTop="0" mode="Portrait" rightRelation="IDC_LABEL2" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="72" x="627" y="217"/>
+ <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="90" x="443" y="0"/>
+ </Button>
+ <Button id="IDC_CREATE_BUTTON" parent="IDC_REJECT_PANEL">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="C01-1_btn_create.png" normalColor="#698BA2" normalColorOpacity="0" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_LABEL2" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="72" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL2" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="21" marginLeft="21" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="72" x="21" y="217"/>
+ <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="90" x="453" y="0"/>
+ </Button>
+ <Button id="IDC_REJECT_MESSAGE_BUTTON" parent="IDL_INCOMING_CALL_FORM">
+ <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="32" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDL_INCOMING_CALL_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="92" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_INCOMING_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_INCOMING_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="1128"/>
+ <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="533" x="332" y="588"/>
+ </Button>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE ScenePanel SYSTEM "UIForm.dtd">
+<ScenePanel Bversion="3.0.0.201211281258" Dversion="20120315">
+ <Panel id="IDL_KEYS_PANEL">
+ <property backgroundColor="#FFFFFF" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>
+ <layout height="481" mode="Portrait" type="LAYOUT_RELATIVE" width="720" x="0" y="741"/>
+ <layout height="52" mode="Landscape" type="LAYOUT_RELATIVE" width="533" x="350" y="164"/>
+ </Panel>
+ <Label id="IDC_LABEL1" parent="IDL_KEYS_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#656D76" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="9" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="1" 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="0"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="139" 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="200" x="272" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL2" parent="IDL_KEYS_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="9" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="3" 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="238"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="139" 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="200" x="227" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL4" parent="IDL_KEYS_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#354B5B" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="3" 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="241"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="139" 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="200" x="140" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL5" parent="IDL_KEYS_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="9" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="198" 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="3" x="236" y="21"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="139" 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="200" x="119" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL6" parent="IDL_KEYS_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#354B5B" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="198" 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="3" x="239" y="21"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="139" 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="200" x="213" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL7" parent="IDL_KEYS_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="9" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="198" 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="3" x="478" y="21"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="139" 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="200" x="277" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL8" parent="IDL_KEYS_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#354B5B" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="9" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="198" 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="3" x="481" y="21"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="139" 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="200" x="231" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL9" parent="IDL_KEYS_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="9" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="198" 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="3" x="236" y="263"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="139" 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="200" x="146" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL10" parent="IDL_KEYS_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#354B5B" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="9" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="198" 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="3" x="239" y="263"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="139" 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="200" x="212" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL11" parent="IDL_KEYS_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="9" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="198" 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="3" x="478" y="263"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="139" 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="122" x="358" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL12" parent="IDL_KEYS_PANEL">
+ <property backgroundBitmapPath="" backgroundColor="#354B5B" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="198" 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="3" x="481" y="263"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="139" 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="200" x="233" y="0"/>
+ </Label>
+ <Button id="IDC_ADDJOINCALL_BUTTON" parent="IDL_KEYS_PANEL">
+ <property disableTextColor="" disabledBitmapPath="" disabledColor="#FFFFFF" disabledColorOpacity="0" 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"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="237" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_LABEL1" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="236" x="0" y="1"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="139" 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="200" x="75" y="0"/>
+ </Button>
+ <Button id="IDC_KEYPAD_BUTTON" parent="IDL_KEYS_PANEL">
+ <property disableTextColor="" disabledBitmapPath="" disabledColor="#FFFFFF" disabledColorOpacity="0" 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"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="237" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL6" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_LABEL1" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="236" x="242" y="1"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="139" 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="183" x="297" y="0"/>
+ </Button>
+ <Button id="IDC_ENDCALL_BUTTON" parent="IDL_KEYS_PANEL">
+ <property disableTextColor="" disabledBitmapPath="" disabledColor="#FFFFFF" disabledColorOpacity="0" 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"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="237" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL8" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_LABEL1" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="236" x="484" y="1"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="139" 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="200" x="274" y="0"/>
+ </Button>
+ <Button id="IDC_SPEAKER_BUTTON" parent="IDL_KEYS_PANEL">
+ <property disableTextColor="" disabledBitmapPath="" disabledColor="#FFFFFF" disabledColorOpacity="0" 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"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="237" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_KEYS_PANEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_LABEL4" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="236" x="0" y="244"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="139" 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="200" x="233" y="0"/>
+ </Button>
+ <Button id="IDC_MUTE_BUTTON" parent="IDL_KEYS_PANEL">
+ <property disableTextColor="" disabledBitmapPath="" disabledColor="#FFFFFF" disabledColorOpacity="0" 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"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="237" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL10" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_LABEL4" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="236" x="242" y="244"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="139" 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="200" x="240" y="0"/>
+ </Button>
+ <Button id="IDC_CONTACT_BUTTON" parent="IDL_KEYS_PANEL">
+ <property disableTextColor="" disabledBitmapPath="" disabledColor="#FFFFFF" disabledColorOpacity="0" 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"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="237" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL12" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_LABEL4" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="236" x="484" y="244"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="139" 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="140" x="340" y="0"/>
+ </Button>
+</ScenePanel>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+
+<Scene Bversion="3.0.0.201302021409" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_MULTIPLE_CALL_FORM">
+ <property backgroundColor="#000000" 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" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Label id="IDC_CALLER1_PHOTO_LABEL" parent="IDL_MULTIPLE_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="true" centerVertical="false" height="370" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_MULTIPLE_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_MULTIPLE_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDL_MULTIPLE_CALL_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="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="618" y="107"/>
+ </Label>
+ <Label id="IDC_BACKGROUND_LABEL" parent="IDL_MULTIPLE_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="50" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="162" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_MULTIPLE_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_MULTIPLE_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" 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="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="515" y="29"/>
+ </Label>
+ <Label id="IDC_LINE_LABEL" parent="IDL_MULTIPLE_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#ABF005" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="10" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_MULTIPLE_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_MULTIPLE_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_BACKGROUND_LABEL" 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="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="254" y="0"/>
+ </Label>
+ <Label id="IDC_CALLER1_LABEL" parent="IDL_MULTIPLE_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="#FFFFFF" textSize="58" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="69" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_MULTIPLE_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="24" marginRight="94" marginTop="24" mode="Portrait" rightRelation="IDL_MULTIPLE_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_BACKGROUND_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="602" x="24" y="24"/>
+ <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="250" y="436"/>
+ </Label>
+ <Label id="IDC_NUMBER1_LABEL" parent="IDL_MULTIPLE_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="#FFFFFF" textSize="38" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="46" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_MULTIPLE_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="24" marginRight="24" marginTop="6" mode="Portrait" rightRelation="IDL_MULTIPLE_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="672" x="24" y="99"/>
+ <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="376" y="428"/>
+ </Label>
+ <Label id="IDC_VOICE_CALL_ICON_LABEL" parent="IDL_MULTIPLE_CALL_FORM">
+ <property backgroundBitmapPath="C01-1_voice_call_icon.png" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="9" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="70" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="24" marginTop="23" mode="Portrait" rightRelation="IDL_MULTIPLE_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_BACKGROUND_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="70" x="626" y="23"/>
+ <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="512" y="431"/>
+ </Label>
+ <Label id="IDC_CALLER1_TIME_LABEL" parent="IDL_MULTIPLE_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_RIGHT" text="00:01:24" textColor="#8BF632" textSize="30" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="46" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="24" marginTop="6" mode="Portrait" rightRelation="IDL_MULTIPLE_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="300" x="396" y="99"/>
+ <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="734" y="462"/>
+ </Label>
+ <Label id="IDC_CALLER2_PHOTO_LABEL" parent="IDL_MULTIPLE_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="#FFFFFF" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDL_MULTIPLE_CALL_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="370" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_MULTIPLE_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="480" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_MULTIPLE_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_CALLER1_PHOTO_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="370"/>
+ <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="702" y="276"/>
+ </Label>
+ <Label id="IDC_BACKGROUND_LABEL2" parent="IDL_MULTIPLE_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="50" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="162" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_MULTIPLE_CALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_CALLER2_PHOTO_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="370"/>
+ <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="525" y="39"/>
+ </Label>
+ <Label id="IDC_CALLER2_LABEL" parent="IDL_MULTIPLE_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="#FFFFFF" textSize="58" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="69" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_BACKGROUND_LABEL2" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="24" marginRight="0" marginTop="24" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_BACKGROUND_LABEL2" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="680" x="24" y="394"/>
+ <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="449" y="215"/>
+ </Label>
+ <Label id="IDC_NUMBER2_LABEL" parent="IDL_MULTIPLE_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="#FFFFFF" textSize="38" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="46" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_BACKGROUND_LABEL2" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="24" marginRight="0" marginTop="6" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_CALLER2_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="680" x="24" y="469"/>
+ <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="485" y="217"/>
+ </Label>
+ <Label id="IDC_CALLER2_TIME_LABEL" parent="IDL_MULTIPLE_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_RIGHT" text="on hold" textColor="#FFFFFF" textSize="30" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="46" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDC_NUMBER2_LABEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_NUMBER2_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="300" x="404" y="469"/>
+ <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="433" x="846" y="247"/>
+ </Label>
+ <Button id="IDC_SWAP_BUTTON" parent="IDL_MULTIPLE_CALL_FORM">
+ <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="C01-1_button_hold_normal_01.png" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="C01-1_button_hold_normal_01_press.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_CALLER2_PHOTO_LABEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="78" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="15" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="78" x="458" y="647"/>
+ <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="476" x="803" y="360"/>
+ </Button>
+ <Label id="IDC_SWAP_LABEL" parent="IDL_MULTIPLE_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="Swap" textColor="#FFFFFF" textSize="36" textStyle="LABEL_TEXT_STYLE_BOLD" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="78" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_SWAP_BUTTON" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="0" marginRight="14" marginTop="0" mode="Portrait" rightRelation="IDL_MULTIPLE_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_SWAP_BUTTON" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="170" x="536" y="647"/>
+ <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="184" x="1095" y="347"/>
+ </Label>
+ <Button id="IDC_CONF_CALL_MORE_BUTTON" parent="IDL_MULTIPLE_CALL_FORM">
+ <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="C01-1_icon_more.png" normalBitmapPath="" normalColor="#FFFFFF" normalColorOpacity="0" normalTextColor="" pressedBGBitmapPath="C01-1_icon_more_press.png" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="72" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="16" marginTop="0" mode="Portrait" rightRelation="IDL_MULTIPLE_CALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="72" x="632" y="23"/>
+ <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="533" x="620" y="122"/>
+ </Button>
+ <Label id="IDC_DIVIDER_LABEL" parent="IDL_MULTIPLE_CALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#554747" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <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="IDC_CONF_CALL_MORE_BUTTON" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_LEFT" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="2" x="630" y="24"/>
+ <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="314" x="965" y="68"/>
+ </Label>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+
+<Scene Bversion="3.0.0.201302021409" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_OUTCALL_FORM">
+ <property backgroundColor="#000000" 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" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Label id="IDC_CALLER1_BIGPHOTO_LABEL" parent="IDL_OUTCALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDL_OUTCALL_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="true" centerVertical="false" height="720" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_OUTCALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="500" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDL_OUTCALL_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="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="618" y="107"/>
+ </Label>
+ <Label id="IDC_BACKGROUND_LABEL" parent="IDL_OUTCALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="50" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="162" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_OUTCALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_OUTCALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" 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="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="515" y="29"/>
+ </Label>
+ <Label id="IDC_LINE_LABEL" parent="IDL_OUTCALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#ABF005" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="10" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_OUTCALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_OUTCALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_BACKGROUND_LABEL" 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="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="254" y="0"/>
+ </Label>
+ <Label id="IDC_VOICE_CALL_ICON_LABEL" parent="IDL_OUTCALL_FORM">
+ <property backgroundBitmapPath="C01-1_voice_call_icon.png" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="9" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="70" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="24" marginTop="23" mode="Portrait" rightRelation="IDL_OUTCALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_BACKGROUND_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="70" x="626" y="23"/>
+ <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="512" y="431"/>
+ </Label>
+ <Label id="IDC_CALLER1_LABEL" parent="IDL_OUTCALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="#FFFFFF" textSize="58" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="69" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_OUTCALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="24" marginRight="0" marginTop="24" mode="Portrait" rightRelation="IDC_VOICE_CALL_ICON_LABEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_LEFT" topRelation="IDC_BACKGROUND_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="602" x="24" y="24"/>
+ <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="250" y="436"/>
+ </Label>
+ <Label id="IDC_CALLER1_TIME_LABEL" parent="IDL_OUTCALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_RIGHT" text="Calling..." textColor="#8BF632" textSize="30" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="46" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="24" marginTop="6" mode="Portrait" rightRelation="IDL_OUTCALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="142" x="554" y="99"/>
+ <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="734" y="462"/>
+ </Label>
+ <Label id="IDC_NUMBER1_LABEL" parent="IDL_OUTCALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="#FFFFFF" textSize="38" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="46" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_OUTCALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="24" marginRight="24" marginTop="6" mode="Portrait" rightRelation="IDC_CALLER1_TIME_LABEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_LEFT" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="506" x="24" y="99"/>
+ <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="376" y="428"/>
+ </Label>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+
+<Scene Bversion="3.0.0.201302021409" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_OUT_EMERGENCYCALL_FORM">
+ <property backgroundColor="#000000" 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" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Label id="IDC_CALLER1_BIGPHOTO_LABEL" parent="IDL_OUT_EMERGENCYCALL_FORM">
+ <property backgroundBitmapPath="C01-1_end call_default_caller ID_720x720.png" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDL_OUT_EMERGENCYCALL_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="true" centerVertical="false" height="720" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_OUT_EMERGENCYCALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="500" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDL_OUT_EMERGENCYCALL_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="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="618" y="107"/>
+ </Label>
+ <Label id="IDC_BACKGROUND_LABEL" parent="IDL_OUT_EMERGENCYCALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="50" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="162" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_OUT_EMERGENCYCALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_OUT_EMERGENCYCALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" 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="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="515" y="29"/>
+ </Label>
+ <Label id="IDC_LINE_LABEL" parent="IDL_OUT_EMERGENCYCALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#ABF005" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="10" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_OUT_EMERGENCYCALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_OUT_EMERGENCYCALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_BACKGROUND_LABEL" 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="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="254" y="0"/>
+ </Label>
+ <Label id="IDC_VOICE_CALL_ICON_LABEL" parent="IDL_OUT_EMERGENCYCALL_FORM">
+ <property backgroundBitmapPath="C01-1_voice_call_icon.png" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="9" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="70" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="24" marginTop="23" mode="Portrait" rightRelation="IDL_OUT_EMERGENCYCALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_BACKGROUND_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="70" x="626" y="23"/>
+ <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="512" y="431"/>
+ </Label>
+ <Label id="IDC_CALLER1_LABEL" parent="IDL_OUT_EMERGENCYCALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="Emergency call" textColor="#FFFFFF" textSize="58" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="69" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_OUT_EMERGENCYCALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="24" marginRight="0" marginTop="24" mode="Portrait" rightRelation="IDC_VOICE_CALL_ICON_LABEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_LEFT" topRelation="IDC_BACKGROUND_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="602" x="24" y="24"/>
+ <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="250" y="436"/>
+ </Label>
+ <Label id="IDC_NUMBER1_LABEL" parent="IDL_OUT_EMERGENCYCALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="#FFFFFF" textSize="38" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="46" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_OUT_EMERGENCYCALL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="24" marginRight="24" marginTop="6" mode="Portrait" rightRelation="IDL_OUT_EMERGENCYCALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="672" x="24" y="99"/>
+ <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="376" y="428"/>
+ </Label>
+ <Label id="IDC_CALLER1_TIME_LABEL" parent="IDL_OUT_EMERGENCYCALL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#FFFFFF" backgroundColorOpacity="0" horizontalAlign="ALIGN_RIGHT" text="Calling..." textColor="#8BF632" textSize="30" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="46" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="24" marginTop="6" mode="Portrait" rightRelation="IDL_OUT_EMERGENCYCALL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="300" x="396" y="99"/>
+ <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="734" y="462"/>
+ </Label>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE ScenePanel SYSTEM "UIForm.dtd">
+
+<ScenePanel Bversion="3.0.0.201208240913" Dversion="20120315">
+ <Panel id="IDL_PANEL_CONTACTS">
+ <property backgroundColor="" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>
+ <layout height="1000" mode="Portrait" type="LAYOUT_RELATIVE" width="720" x="0" y="0"/>
+ <layout height="720" mode="Landscape" type="LAYOUT_RELATIVE" width="1000" x="0" y="0"/>
+ </Panel>
+</ScenePanel>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE ScenePanel SYSTEM "UIForm.dtd">
+
+<ScenePanel Bversion="3.0.0.201302021409" Dversion="20120315">
+ <Panel id="IDL_PANEL_DIALER">
+ <property backgroundColor="" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>
+ <layout height="1097" mode="Portrait" type="LAYOUT_RELATIVE" width="720" x="0" y="0"/>
+ <layout height="720" mode="Landscape" type="LAYOUT_RELATIVE" width="1000" x="0" y="0"/>
+ </Panel>
+ <Panel id="IDC_PANEL_DISPLAY_DATA" parent="IDL_PANEL_DIALER">
+ <property backgroundColor="#E8F5FD" backgroundColorOpacity="100" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="355" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_PANEL_DIALER" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_PANEL_DIALER" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="" type="LAYOUT_RELATIVE" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="0"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="66" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" type="LAYOUT_RELATIVE" verticalFitPolicy="FIT_POLICY_FIXED" width="416" x="301" y="118"/>
+ </Panel>
+ <Panel id="IDC_PANEL_SEARCH_BOX" parent="IDC_PANEL_DISPLAY_DATA">
+ <property backgroundColor="#4D4D4D" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>
+ <layout bottomRelation="IDC_PANEL_DISPLAY_DATA" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="130" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="12" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" type="LAYOUT_RELATIVE" verticalFitPolicy="FIT_POLICY_FIXED" width="557" x="16" y="213"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="66" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" type="LAYOUT_RELATIVE" verticalFitPolicy="FIT_POLICY_FIXED" width="144" x="55" y="0"/>
+ </Panel>
+ <Button id="IDC_BUTTON_USE_CONTACT" parent="IDC_PANEL_SEARCH_BOX">
+ <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"/>
+ <layout height="130" mode="Portrait" width="457" x="0" y="0"/>
+ <layout height="66" mode="Landscape" width="72" x="12" y="0"/>
+ </Button>
+ <Panel id="IDC_PANEL_DROPDOWN" parent="IDC_PANEL_SEARCH_BOX">
+ <property backgroundColor="#4D4D4D" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>
+ <layout height="130" mode="Portrait" type="NONE" width="100" x="457" y="0"/>
+ <layout height="66" mode="Landscape" type="NONE" width="144" x="121" y="0"/>
+ </Panel>
+ <Button id="IDC_BUTTON_DROP_DOWN" parent="IDC_PANEL_DROPDOWN">
+ <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"/>
+ <layout height="130" mode="Portrait" width="100" x="0" y="0"/>
+ <layout height="66" mode="Landscape" width="72" x="72" y="0"/>
+ </Button>
+ <Button id="IDC_BUTTON_ADD_CONTACTS" parent="IDC_PANEL_SEARCH_BOX">
+ <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"/>
+ <layout height="130" mode="Portrait" width="557" x="0" y="0"/>
+ <layout height="66" mode="Landscape" width="72" x="25" y="0"/>
+ </Button>
+ <EditField id="IDC_EDITFIELD" parent="IDC_PANEL_DISPLAY_DATA">
+ <property disabledBGBitmapPath="" disabledColor="" disabledColorOpacity="100" disabledTextColor="" ellipsisPosition="ELLIPSIS_POSITION_END" enableClear="false" groupStyle="GROUP_STYLE_NONE" guideText="" guideTextColor="" highlightedBGBitmapPath="" highlightedColor="#E8F5FD" highlightedColorOpacity="100" highlightedTextColor="" horizontalMargin="0" inputStyle="INPUT_STYLE_FULLSCREEN" keypadAction="" keypadEnabled="false" limitLength="100" linkTextColor="" lowerCaseMode="false" normalBGBitmapPath="" normalColor="#E8F5FD" normalColorOpacity="100" normalTextColor="#000000" pressedBGBitmapPath="" pressedColor="#E8F5FD" pressedColorOpacity="100" text="" textHorizontalAlignment="ALIGNMENT_LEFT" textSize="94" titleStyle="EDIT_FIELD_TITLE_STYLE_NONE" titleText="" titleTextColor="" verticalMargin="0" viewMode="false"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="120" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PANEL_DISPLAY_DATA" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDC_PANEL_DISPLAY_DATA" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" style="EDIT_FIELD_STYLE_NORMAL" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="68"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="66" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" style="EDIT_FIELD_STYLE_NORMAL" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="122" x="145" y="0"/>
+ </EditField>
+ <Panel id="IDC_PANEL_MENU" parent="IDC_PANEL_DISPLAY_DATA">
+ <property backgroundColor="" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>
+ <layout bottomRelation="IDC_PANEL_SEARCH_BOX" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="130" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PANEL_SEARCH_BOX" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="16" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PANEL_SEARCH_BOX" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" type="LAYOUT_RELATIVE" verticalFitPolicy="FIT_POLICY_FIXED" width="115" x="589" y="213"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="66" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" type="LAYOUT_RELATIVE" verticalFitPolicy="FIT_POLICY_FIXED" width="39" x="315" y="0"/>
+ </Panel>
+ <Button id="IDC_BUTTON_MENU" parent="IDC_PANEL_MENU">
+ <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"/>
+ <layout height="130" mode="Portrait" width="115" x="0" y="0"/>
+ <layout height="66" mode="Landscape" width="39" x="0" y="47"/>
+ </Button>
+ <Panel id="IDC_PANEL_SEARCH_LIST" parent="IDL_PANEL_DIALER">
+ <property backgroundColor="" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>
+ <layout bottomRelation="IDL_PANEL_DIALER" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="1097" horizontalFitPolicy="FIT_POLICY_PARENT" leftRelation="IDL_PANEL_DIALER" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_PANEL_DIALER" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_PANEL_DISPLAY_DATA" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" type="LAYOUT_RELATIVE" verticalFitPolicy="FIT_POLICY_PARENT" width="720" x="0" y="0"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="66" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" type="LAYOUT_RELATIVE" verticalFitPolicy="FIT_POLICY_FIXED" width="416" x="241" y="190"/>
+ </Panel>
+ <ListView id="IDC_LISTVIEW_SEARCH" parent="IDC_PANEL_SEARCH_LIST">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" bitmapPathOfEmptyList="" colorOfEmptyListText="" fastScroll="false" itemDivider="true" itemDividerColor="" sweepEnabled="false" textOfEmptyList=""/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="1" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PANEL_SEARCH_LIST" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="16" marginRight="147" marginTop="0" mode="Portrait" rightRelation="IDC_PANEL_SEARCH_LIST" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_PANEL_SEARCH_LIST" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="557" x="16" y="0"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="66" 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="416" x="-7" y="0"/>
+ </ListView>
+</ScenePanel>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE ScenePanel SYSTEM "UIForm.dtd">
+
+<ScenePanel Bversion="3.0.0.201208240913" Dversion="20120315">
+ <Panel id="IDL_PANEL_FAVORITES">
+ <property backgroundColor="" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>
+ <layout height="93" mode="Portrait" type="NONE" width="300" x="0" y="0"/>
+ <layout height="300" mode="Landscape" type="NONE" width="93" x="0" y="0"/>
+ </Panel>
+</ScenePanel>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE ScenePanel SYSTEM "UIForm.dtd">
+
+<ScenePanel Bversion="3.0.0.201301311444" Dversion="20120315">
+ <Panel id="IDL_PANEL_LOGS">
+ <property backgroundColor="" backgroundColorOpacity="0" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>
+ <layout height="1000" mode="Portrait" type="LAYOUT_RELATIVE" width="720" x="0" y="0"/>
+ <layout height="720" mode="Landscape" type="LAYOUT_RELATIVE" width="1000" x="0" y="0"/>
+ </Panel>
+ <CheckButton id="IDC_CHECKBUTTON_SELECTALL" parent="IDL_PANEL_LOGS">
+ <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="Select All" titleText="" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="112" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" style="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="720" 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="212" x="22" y="20"/>
+ </CheckButton>
+ <Label id="IDC_LABEL_SELECTED_POPUP" parent="IDL_PANEL_LOGS">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="32" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDL_PANEL_LOGS" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="48" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_PANEL_LOGS" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_PANEL_LOGS" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="952"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="23" 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="995" x="0" y="696"/>
+ </Label>
+</ScenePanel>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+<Scene Bversion="3.0.0.201301041523" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_SETTINGS_ADD_EDIT_REJECT_MSGS_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" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Header>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="0" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="0" disabledItemTextColor="" headerStyle="HEADER_STYLE_TITLE_BUTTON" 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="" titleIconPath="" titleText="" titleTextColor=""/>
+ <itemSet/>
+ </Header>
+ <ExpandableEditArea id="IDC_REJECTMSG_EXPANDABLEEDITAREA" parent="IDL_SETTINGS_ADD_EDIT_REJECT_MSGS_FORM">
+ <property autoResizing="false" autoShrinkModeEnabled="false" disabledBGBitmapPath="" disabledColor="" disabledColorOpacity="100" disabledTextColor="" disabledTitleTextColor="" guideText="" guideTextColor="" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" highlightedTitleTextColor="" horizontalMargin="10" keypadAction="KEYPAD_ACTION_ENTER" keypadStyle="KEYPAD_STYLE_NORMAL" limitLength="2048" linkTextColor="" lowerCaseMode="false" maxLines="10" normalBGBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" normalTitleTextColor="" normalTokenColor="" pressedBGBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTitleTextColor="" selectedTokenColor="" selectedTokenTextColor="" style="EXPANDABLE_EDIT_AREA_STYLE_NORMAL" text="" textPredictionEnabled="true" textSize="45" titleStyle="EXPANDABLE_EDIT_AREA_TITLE_STYLE_NONE" titleText="" tokenTextColor="" verticalMargin="10"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="90" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_SETTINGS_ADD_EDIT_REJECT_MSGS_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="16" marginRight="16" marginTop="40" mode="Portrait" rightRelation="IDL_SETTINGS_ADD_EDIT_REJECT_MSGS_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDL_SETTINGS_ADD_EDIT_REJECT_MSGS_FORM" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="688" x="16" y="40"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="135" 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="426" x="318" y="0"/>
+ </ExpandableEditArea>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+
+<Scene Bversion="3.0.0.201302021409" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_SETTINGS_ADD_NUMBER_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" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Header>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="0" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="0" disabledItemTextColor="" headerStyle="HEADER_STYLE_TITLE" 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="" titleIconPath="" titleText="Number to reject" titleTextColor=""/>
+ <itemSet/>
+ </Header>
+ <Label id="IDC_DUMMY_LISTVIEW_LABEL" parent="IDL_SETTINGS_ADD_NUMBER_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#ECF0F2" backgroundColorOpacity="100" horizontalAlign="ALIGN_CENTER" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="136" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_SETTINGS_ADD_NUMBER_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="16" marginRight="16" marginTop="40" mode="Portrait" rightRelation="IDL_SETTINGS_ADD_NUMBER_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDL_SETTINGS_ADD_NUMBER_FORM" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="688" x="16" y="40"/>
+ <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="183" y="16"/>
+ </Label>
+ <Label id="IDC_LABEL1" parent="IDL_SETTINGS_ADD_NUMBER_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#6CA8C7" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDC_DUMMY_LISTVIEW_LABEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="136" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_DUMMY_LISTVIEW_LABEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_DUMMY_LISTVIEW_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="8" x="16" y="40"/>
+ <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="140" y="16"/>
+ </Label>
+ <Label id="IDC_EDITFIELD_TITLE_LABEL" parent="IDL_SETTINGS_ADD_NUMBER_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="Enter number" textColor="#666666" textSize="44" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="44" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL1" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="16" marginRight="160" marginTop="0" mode="Portrait" rightRelation="IDC_DUMMY_LISTVIEW_LABEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_DUMMY_LISTVIEW_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="504" x="40" y="40"/>
+ <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="160" y="16"/>
+ </Label>
+ <Button id="IDC_SELECT_CONTACT_BUTTON" parent="IDL_SETTINGS_ADD_NUMBER_FORM">
+ <property DisabledBitmapX="0" DisabledBitmapY="0" NormalBitmapX="0" NormalBitmapY="0" PressedBitmapX="0" PressedBitmapY="0" disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="M01_contact_default_image.png" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="M01_contact_default_image_press.png" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_DUMMY_LISTVIEW_LABEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="72" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_EDITFIELD_TITLE_LABEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="16" marginRight="16" marginTop="0" mode="Portrait" rightRelation="None" rightRelationType="" topRelation="None" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="72" x="560" y="104"/>
+ <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="188" x="1091" y="16"/>
+ </Button>
+ <EditField id="IDC_NUMBER_EDITFIELD" parent="IDL_SETTINGS_ADD_NUMBER_FORM">
+ <property commandButtonVisible="true" disabledBGBitmapPath="" disabledColor="" disabledColorOpacity="100" disabledTextColor="" ellipsisPosition="ELLIPSIS_POSITION_END" enableClear="false" groupStyle="GROUP_STYLE_NONE" guideText="" guideTextColor="" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalMargin="16" inputStyle="INPUT_STYLE_OVERLAY" keypadAction="KEYPAD_ACTION_ENTER" keypadEnabled="true" limitLength="100" linkTextColor="" lowerCaseMode="false" normalBGBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedColor="" pressedColorOpacity="100" text="" textHorizontalAlignment="ALIGNMENT_LEFT" textSize="45" titleStyle="EDIT_FIELD_TITLE_STYLE_NONE" titleText="" titleTextColor="" verticalMargin="12" viewMode="false"/>
+ <layout bottomRelation="IDC_DUMMY_LISTVIEW_LABEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="90" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL1" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="1" marginLeft="16" marginRight="160" marginTop="0" mode="Portrait" rightRelation="IDC_DUMMY_LISTVIEW_LABEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" style="EDIT_FIELD_STYLE_PHONE_NUMBER" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="504" x="40" y="85"/>
+ <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_PHONE_NUMBER" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="426" x="323" y="0"/>
+ </EditField>
+ <GroupedTableView id="IDC_GROUPEDTABLEVIEW" parent="IDL_SETTINGS_ADD_NUMBER_FORM">
+ <property backgroundColor="#F9F9F9" backgroundColorOpacity="100" collapseByPinchEnabled="false" fastScrollIndex="" groupedLookEnabled="true" itemDivider="true" itemDividerColor="#8E9AA3" scrollBarStyle="TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT" scrollInputMode="SCROLL_INPUT_MODE_ALLOW_ANY_DIRECTION" useSearchIcon="false"/>
+ <layout bottomRelation="IDL_SETTINGS_ADD_NUMBER_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="892" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_SETTINGS_ADD_NUMBER_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="40" marginLeft="16" marginRight="16" marginTop="1" mode="Portrait" rightRelation="IDL_SETTINGS_ADD_NUMBER_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_DUMMY_LISTVIEW_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="688" x="16" y="177"/>
+ <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="496" y="144"/>
+ </GroupedTableView>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+<Scene Bversion="3.0.0.201211281258" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_SETTINGS_AUTO_AREA_CODE_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" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Header>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="0" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="0" disabledItemTextColor="" headerStyle="HEADER_STYLE_TITLE" 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="" titleIconPath="" titleText="Auto area code" titleTextColor=""/>
+ <itemSet/>
+ </Header>
+ <Label id="IDC_DUMMY_LISTVIEW_LABEL" parent="IDL_SETTINGS_AUTO_AREA_CODE_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#ECF0F2" backgroundColorOpacity="100" horizontalAlign="ALIGN_CENTER" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="136" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_SETTINGS_AUTO_AREA_CODE_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="16" marginRight="16" marginTop="40" mode="Portrait" rightRelation="IDL_SETTINGS_AUTO_AREA_CODE_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDL_SETTINGS_AUTO_AREA_CODE_FORM" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="688" x="16" y="40"/>
+ <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="183" y="16"/>
+ </Label>
+ <Label id="IDC_LABEL1" parent="IDL_SETTINGS_AUTO_AREA_CODE_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#6CA8C7" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDC_DUMMY_LISTVIEW_LABEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="136" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_DUMMY_LISTVIEW_LABEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_DUMMY_LISTVIEW_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="12" x="16" y="40"/>
+ <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="140" y="16"/>
+ </Label>
+ <EditField id="IDC_NUMBER_EDITFIELD" parent="IDL_SETTINGS_AUTO_AREA_CODE_FORM">
+ <property commandButtonVisible="true" disabledBGBitmapPath="" disabledColor="" disabledColorOpacity="100" disabledTextColor="" ellipsisPosition="ELLIPSIS_POSITION_END" enableClear="true" groupStyle="GROUP_STYLE_NONE" guideText="" guideTextColor="" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalMargin="16" inputStyle="INPUT_STYLE_OVERLAY" keypadAction="KEYPAD_ACTION_ENTER" keypadEnabled="true" limitLength="100" linkTextColor="" lowerCaseMode="false" normalBGBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedColor="" pressedColorOpacity="100" text="" textHorizontalAlignment="ALIGNMENT_LEFT" textSize="45" titleStyle="EDIT_FIELD_TITLE_STYLE_NONE" titleText="" titleTextColor="" verticalMargin="12" viewMode="false"/>
+ <layout bottomRelation="IDC_DUMMY_LISTVIEW_LABEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="90" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL1" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="1" marginLeft="16" marginRight="16" marginTop="0" mode="Portrait" rightRelation="IDC_DUMMY_LISTVIEW_LABEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" style="EDIT_FIELD_STYLE_NUMBER" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="644" x="44" y="85"/>
+ <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="426" x="414" y="4"/>
+ </EditField>
+ <Label id="IDC_LABEL2" parent="IDL_SETTINGS_AUTO_AREA_CODE_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="Enter number" textColor="#666666" textSize="44" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="44" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL1" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="16" marginRight="16" marginTop="0" mode="Portrait" rightRelation="IDC_DUMMY_LISTVIEW_LABEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_DUMMY_LISTVIEW_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="644" x="44" y="40"/>
+ <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="337" y="0"/>
+ </Label>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+
+<Scene Bversion="3.0.0.201302071045" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_SETTINGS_CALL_FORWARD_WAIT_BARRING_FORM">
+ <property backgroundColor="" backgroundColorOpacity="100" orientation="Portrait" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>
+ <layout mode="Portrait" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Footer>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" disabledButtonColor="" disabledButtonColorOpacity="0" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" footerStyle="FOOTER_STYLE_BUTTON_ICON_TEXT" 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="100" 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>
+ <GroupedTableView id="IDC_GROUPEDTABLEVIEW" parent="IDL_SETTINGS_CALL_FORWARD_WAIT_BARRING_FORM">
+ <property backgroundColor="#F9F9F9" backgroundColorOpacity="100" collapseByPinchEnabled="false" fastScrollIndex="" groupedLookEnabled="true" itemDivider="true" itemDividerColor="#8E9AA3" scrollBarStyle="TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT" scrollInputMode="SCROLL_INPUT_MODE_ALLOW_ANY_DIRECTION" useSearchIcon="false"/>
+ <layout bottomRelation="IDL_SETTINGS_CALL_FORWARD_WAIT_BARRING_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="1011" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_SETTINGS_CALL_FORWARD_WAIT_BARRING_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_SETTINGS_CALL_FORWARD_WAIT_BARRING_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDL_SETTINGS_CALL_FORWARD_WAIT_BARRING_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="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="424" y="43"/>
+ </GroupedTableView>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+
+<Scene Bversion="3.0.0.201302071045" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_SETTINGS_DELETE_LIST_FORM">
+ <property backgroundColor="" backgroundColorOpacity="100" orientation="Portrait" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>
+ <layout mode="Portrait" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Footer>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" footerStyle="FOOTER_STYLE_BUTTON_ICON_TEXT" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" showBackButton="false"/>
+ <itemSet/>
+ </Footer>
+ <Header>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" headerStyle="HEADER_STYLE_TITLE" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" titleIconPath="" titleText="" titleTextColor=""/>
+ <itemSet/>
+ </Header>
+ <ListView id="IDC_LISTVIEW" parent="IDL_SETTINGS_DELETE_LIST_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#F9F9F9" backgroundColorOpacity="100" bitmapPathOfEmptyList="" colorOfEmptyListText="" fastScroll="false" itemDivider="true" itemDividerColor="#A9A9A9" sweepEnabled="false" textOfEmptyList=""/>
+ <layout bottomRelation="IDL_SETTINGS_DELETE_LIST_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="963" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_SETTINGS_DELETE_LIST_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="48" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_SETTINGS_DELETE_LIST_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDL_SETTINGS_DELETE_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="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="524" y="340"/>
+ </ListView>
+ <Label id="IDC_LABEL_DELETE_SELECTED" parent="IDL_SETTINGS_DELETE_LIST_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="32" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDL_SETTINGS_DELETE_LIST_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="48" horizontalFitPolicy="FIT_POLICY_PARENT" leftRelation="IDL_SETTINGS_DELETE_LIST_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_SETTINGS_DELETE_LIST_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_LISTVIEW" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="963"/>
+ <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="458" y="421"/>
+ </Label>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+<Scene Bversion="3.0.0.201301081740" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_SETTINGS_FORWARDTO_NUMBER_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" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Header>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="0" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="0" disabledItemTextColor="" headerStyle="HEADER_STYLE_TITLE" 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="" titleIconPath="" titleText="" titleTextColor=""/>
+ <itemSet/>
+ </Header>
+ <Label id="IDC_DUMMY_LISTVIEW_LABEL" parent="IDL_SETTINGS_FORWARDTO_NUMBER_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#ECF0F2" backgroundColorOpacity="100" horizontalAlign="ALIGN_CENTER" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="136" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="16" marginRight="16" marginTop="40" mode="Portrait" rightRelation="" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="688" x="16" y="40"/>
+ <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="183" y="16"/>
+ </Label>
+ <Button id="IDC_VOICEMAIL_BUTTON" parent="IDL_SETTINGS_FORWARDTO_NUMBER_FORM">
+ <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="Voicemail" textSize="36" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="true" centerVertical="false" height="74" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="20" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_DUMMY_LISTVIEW_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="328" x="196" y="196"/>
+ <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="533" x="652" y="44"/>
+ </Button>
+ <Label id="IDC_LABEL1" parent="IDL_SETTINGS_FORWARDTO_NUMBER_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#6CA8C7" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDC_DUMMY_LISTVIEW_LABEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="136" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_DUMMY_LISTVIEW_LABEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_DUMMY_LISTVIEW_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="8" x="16" y="40"/>
+ <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="140" y="16"/>
+ </Label>
+ <Label id="IDC_EDITFIELD_TITLE_LABEL" parent="IDL_SETTINGS_FORWARDTO_NUMBER_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="Enter number" textColor="#666666" textSize="44" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="44" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL1" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="16" marginRight="160" marginTop="0" mode="Portrait" rightRelation="IDC_DUMMY_LISTVIEW_LABEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_DUMMY_LISTVIEW_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="504" x="40" y="40"/>
+ <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="160" y="16"/>
+ </Label>
+ <Button id="IDC_SELECT_CONTACT_BUTTON" parent="IDL_SETTINGS_FORWARDTO_NUMBER_FORM">
+ <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="C01-1_icon_contacts.png" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="128" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_EDITFIELD_TITLE_LABEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="16" marginRight="16" marginTop="0" mode="Portrait" rightRelation="IDC_DUMMY_LISTVIEW_LABEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_DUMMY_LISTVIEW_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="128" x="560" y="40"/>
+ <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="188" x="1091" y="16"/>
+ </Button>
+ <EditField id="IDC_FOWARDING_NUMBER_EDITFIELD" parent="IDL_SETTINGS_FORWARDTO_NUMBER_FORM">
+ <property commandButtonVisible="true" disabledBGBitmapPath="" disabledColor="" disabledColorOpacity="100" disabledTextColor="" ellipsisPosition="ELLIPSIS_POSITION_END" enableClear="true" groupStyle="GROUP_STYLE_NONE" guideText="" guideTextColor="" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalMargin="16" inputStyle="INPUT_STYLE_OVERLAY" keypadAction="KEYPAD_ACTION_ENTER" keypadEnabled="true" limitLength="100" linkTextColor="" lowerCaseMode="false" normalBGBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedColor="" pressedColorOpacity="100" text="" textHorizontalAlignment="ALIGNMENT_LEFT" textSize="45" titleStyle="EDIT_FIELD_TITLE_STYLE_NONE" titleText="" titleTextColor="" verticalMargin="12" viewMode="false"/>
+ <layout bottomRelation="IDC_DUMMY_LISTVIEW_LABEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="90" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL1" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="1" marginLeft="16" marginRight="160" marginTop="0" mode="Portrait" rightRelation="IDC_DUMMY_LISTVIEW_LABEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" style="EDIT_FIELD_STYLE_PHONE_NUMBER" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="504" x="40" y="85"/>
+ <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_PHONE_NUMBER" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="426" x="382" y="0"/>
+ </EditField>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+
+<Scene Bversion="3.0.0.201302071045" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_SETTINGS_MAINMENU_FORM">
+ <property backgroundColor="" backgroundColorOpacity="100" orientation="Portrait" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>
+ <layout mode="Portrait" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Footer>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" footerStyle="FOOTER_STYLE_BUTTON_ICON_TEXT" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" showBackButton="false"/>
+ <itemSet/>
+ </Footer>
+ <Header>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" headerStyle="HEADER_STYLE_TITLE" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" titleIconPath="" titleText="Call" titleTextColor=""/>
+ <itemSet/>
+ </Header>
+ <GroupedTableView id="IDC_GROUPEDTABLEVIEW" parent="IDL_SETTINGS_MAINMENU_FORM">
+ <property backgroundColor="#F9F9F9" backgroundColorOpacity="100" collapseByPinchEnabled="false" fastScrollIndex="" groupedLookEnabled="true" itemDivider="true" itemDividerColor="#8E9AA3" scrollBarStyle="TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT" scrollInputMode="SCROLL_INPUT_MODE_ALLOW_ANY_DIRECTION" useSearchIcon="false"/>
+ <layout bottomRelation="IDL_SETTINGS_MAINMENU_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="1011" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_SETTINGS_MAINMENU_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_SETTINGS_MAINMENU_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDL_SETTINGS_MAINMENU_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="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="380" y="22"/>
+ </GroupedTableView>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+
+<Scene Bversion="3.0.0.201302071045" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_SETTINGS_MOREOPTIONS_FORM">
+ <property backgroundColor="" backgroundColorOpacity="100" orientation="Portrait" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>
+ <layout mode="Portrait" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Footer>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" disabledButtonColor="" disabledButtonColorOpacity="0" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" footerStyle="FOOTER_STYLE_BUTTON_ICON_TEXT" 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="100" 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="More call settings" titleTextColor=""/>
+ <itemSet/>
+ </Header>
+ <GroupedTableView id="IDC_GROUPEDTABLEVIEW" parent="IDL_SETTINGS_MOREOPTIONS_FORM">
+ <property backgroundColor="#F9F9F9" backgroundColorOpacity="100" collapseByPinchEnabled="false" fastScrollIndex="" groupedLookEnabled="true" itemDivider="true" itemDividerColor="#8E9AA3" scrollBarStyle="TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT" scrollInputMode="SCROLL_INPUT_MODE_ALLOW_ANY_DIRECTION" useSearchIcon="false"/>
+ <layout bottomRelation="IDL_SETTINGS_MOREOPTIONS_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="1011" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_SETTINGS_MOREOPTIONS_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_SETTINGS_MOREOPTIONS_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDL_SETTINGS_MOREOPTIONS_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="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="408" y="20"/>
+ </GroupedTableView>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+<Scene Bversion="3.0.0.201301081740" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_SETTINGS_NOREPLY_FORWARDTO_NUMBER_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" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Header>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="0" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="0" disabledItemTextColor="" headerStyle="HEADER_STYLE_TITLE" 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="" titleIconPath="" titleText="" titleTextColor=""/>
+ <itemSet/>
+ </Header>
+ <Label id="IDC_DUMMY_LISTVIEW_LABEL" parent="IDL_SETTINGS_NOREPLY_FORWARDTO_NUMBER_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#ECF0F2" backgroundColorOpacity="100" horizontalAlign="ALIGN_CENTER" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="136" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="16" marginRight="16" marginTop="40" mode="Portrait" rightRelation="" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="688" x="16" y="40"/>
+ <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="183" y="16"/>
+ </Label>
+ <Button id="IDC_VOICEMAIL_BUTTON" parent="IDL_SETTINGS_NOREPLY_FORWARDTO_NUMBER_FORM">
+ <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="Voicemail" textSize="36" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="true" centerVertical="false" height="74" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="20" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_DUMMY_LISTVIEW_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="328" x="196" y="196"/>
+ <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="533" x="652" y="44"/>
+ </Button>
+ <Label id="IDC_LABEL1" parent="IDL_SETTINGS_NOREPLY_FORWARDTO_NUMBER_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#6CA8C7" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDC_DUMMY_LISTVIEW_LABEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="136" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_DUMMY_LISTVIEW_LABEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_DUMMY_LISTVIEW_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="8" x="16" y="40"/>
+ <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="140" y="16"/>
+ </Label>
+ <Label id="IDC_EDITFIELD_TITLE_LABEL" parent="IDL_SETTINGS_NOREPLY_FORWARDTO_NUMBER_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="Enter number" textColor="#666666" textSize="44" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="44" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL1" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="16" marginRight="160" marginTop="0" mode="Portrait" rightRelation="IDC_DUMMY_LISTVIEW_LABEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_DUMMY_LISTVIEW_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="504" x="40" y="40"/>
+ <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="160" y="16"/>
+ </Label>
+ <Button id="IDC_SELECT_CONTACT_BUTTON" parent="IDL_SETTINGS_NOREPLY_FORWARDTO_NUMBER_FORM">
+ <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="C01-1_icon_contacts.png" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="128" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_EDITFIELD_TITLE_LABEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="16" marginRight="16" marginTop="0" mode="Portrait" rightRelation="IDC_DUMMY_LISTVIEW_LABEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_DUMMY_LISTVIEW_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="128" x="560" y="40"/>
+ <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="188" x="1091" y="16"/>
+ </Button>
+ <EditField id="IDC_FOWARDING_NUMBER_EDITFIELD" parent="IDL_SETTINGS_NOREPLY_FORWARDTO_NUMBER_FORM">
+ <property commandButtonVisible="true" disabledBGBitmapPath="" disabledColor="" disabledColorOpacity="100" disabledTextColor="" ellipsisPosition="ELLIPSIS_POSITION_END" enableClear="true" groupStyle="GROUP_STYLE_NONE" guideText="" guideTextColor="" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalMargin="16" inputStyle="INPUT_STYLE_OVERLAY" keypadAction="KEYPAD_ACTION_ENTER" keypadEnabled="true" limitLength="100" linkTextColor="" lowerCaseMode="false" normalBGBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedColor="" pressedColorOpacity="100" text="" textHorizontalAlignment="ALIGNMENT_LEFT" textSize="45" titleStyle="EDIT_FIELD_TITLE_STYLE_NONE" titleText="" titleTextColor="" verticalMargin="12" viewMode="false"/>
+ <layout bottomRelation="IDC_DUMMY_LISTVIEW_LABEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="90" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_LABEL1" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="1" marginLeft="16" marginRight="160" marginTop="0" mode="Portrait" rightRelation="IDC_DUMMY_LISTVIEW_LABEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" style="EDIT_FIELD_STYLE_PHONE_NUMBER" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="504" x="40" y="85"/>
+ <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_PHONE_NUMBER" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="426" x="382" y="0"/>
+ </EditField>
+ <GroupedTableView id="IDC_GROUPEDTABLEVIEW" parent="IDL_SETTINGS_NOREPLY_FORWARDTO_NUMBER_FORM">
+ <property backgroundColor="#F9F9F9" backgroundColorOpacity="100" collapseByPinchEnabled="false" fastScrollIndex="" groupedLookEnabled="true" itemDivider="true" itemDividerColor="#8E9AA3" scrollBarStyle="TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT" scrollInputMode="SCROLL_INPUT_MODE_ALLOW_ANY_DIRECTION" useSearchIcon="false"/>
+ <layout bottomRelation="IDL_SETTINGS_NOREPLY_FORWARDTO_NUMBER_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="770" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_SETTINGS_NOREPLY_FORWARDTO_NUMBER_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="40" marginLeft="16" marginRight="16" marginTop="40" mode="Portrait" rightRelation="IDL_SETTINGS_NOREPLY_FORWARDTO_NUMBER_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_VOICEMAIL_BUTTON" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="688" x="16" y="310"/>
+ <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="711" x="568" y="176"/>
+ </GroupedTableView>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+
+<Scene Bversion="3.0.0.201302071045" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_SETTINGS_REJECTLIST_FORM">
+ <property backgroundColor="" backgroundColorOpacity="100" orientation="Portrait" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>
+ <layout mode="Portrait" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Footer>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" disabledButtonColor="" disabledButtonColorOpacity="0" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" footerStyle="FOOTER_STYLE_BUTTON_ICON_TEXT" 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="false"/>
+ <itemSet/>
+ </Footer>
+ <Header>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" 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="Numbers to reject" titleTextColor=""/>
+ <itemSet/>
+ </Header>
+ <GroupedTableView id="IDC_GROUPEDTABLEVIEW" parent="IDL_SETTINGS_REJECTLIST_FORM">
+ <property backgroundColor="#F9F9F9" backgroundColorOpacity="100" collapseByPinchEnabled="false" fastScrollIndex="" groupedLookEnabled="true" itemDivider="true" itemDividerColor="#8E9AA3" scrollBarStyle="TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT" scrollInputMode="SCROLL_INPUT_MODE_ALLOW_ANY_DIRECTION" useSearchIcon="false"/>
+ <layout bottomRelation="IDL_SETTINGS_REJECTLIST_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="1011" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_SETTINGS_REJECTLIST_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_SETTINGS_REJECTLIST_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDL_SETTINGS_REJECTLIST_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="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="622" x="657" y="52"/>
+ </GroupedTableView>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+
+<Scene Bversion="3.0.0.201302071045" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_SETTINGS_REJECTMSGS_FORM">
+ <property backgroundColor="" backgroundColorOpacity="100" orientation="Portrait" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>
+ <layout mode="Portrait" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Footer>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" disabledButtonColor="" disabledButtonColorOpacity="0" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" footerStyle="FOOTER_STYLE_BUTTON_ICON_TEXT" 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="false"/>
+ <itemSet/>
+ </Footer>
+ <Header>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" 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="Set reject messages" titleTextColor=""/>
+ <itemSet/>
+ </Header>
+ <GroupedTableView id="IDC_GROUPEDTABLEVIEW" parent="IDL_SETTINGS_REJECTMSGS_FORM">
+ <property backgroundColor="#F9F9F9" backgroundColorOpacity="100" collapseByPinchEnabled="false" fastScrollIndex="" groupedLookEnabled="true" itemDivider="true" itemDividerColor="#8E9AA3" scrollBarStyle="TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT" scrollInputMode="SCROLL_INPUT_MODE_ALLOW_ANY_DIRECTION" useSearchIcon="false"/>
+ <layout bottomRelation="IDL_SETTINGS_REJECTMSGS_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="1011" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_SETTINGS_REJECTMSGS_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_SETTINGS_REJECTMSGS_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDL_SETTINGS_REJECTMSGS_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="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="600" x="679" y="63"/>
+ </GroupedTableView>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+<Scene Bversion="3.0.0.201211281258" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_SETTINGS_SET_BARRING_PWD__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" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Header>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="0" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="0" disabledItemTextColor="" headerStyle="HEADER_STYLE_TITLE" 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="" titleIconPath="" titleText="Password" titleTextColor=""/>
+ <itemSet/>
+ </Header>
+ <Label id="IDC_LABEL1" parent="IDL_SETTINGS_SET_BARRING_PWD__FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="Enter password" textColor="#666666" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="44" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_SETTINGS_SET_BARRING_PWD__FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="16" marginRight="16" marginTop="40" mode="Portrait" rightRelation="IDL_SETTINGS_SET_BARRING_PWD__FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDL_SETTINGS_SET_BARRING_PWD__FORM" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="688" x="16" y="40"/>
+ <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="190" y="0"/>
+ </Label>
+ <EditField id="IDC_EDITFIELD" parent="IDL_SETTINGS_SET_BARRING_PWD__FORM">
+ <property commandButtonVisible="true" disabledBGBitmapPath="" disabledColor="" disabledColorOpacity="100" disabledTextColor="" ellipsisPosition="ELLIPSIS_POSITION_END" enableClear="true" groupStyle="GROUP_STYLE_NONE" guideText="" guideTextColor="" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalMargin="16" inputStyle="INPUT_STYLE_OVERLAY" keypadAction="KEYPAD_ACTION_ENTER" keypadEnabled="true" limitLength="100" linkTextColor="" lowerCaseMode="false" normalBGBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedColor="" pressedColorOpacity="100" text="" textHorizontalAlignment="ALIGNMENT_LEFT" textSize="45" titleStyle="EDIT_FIELD_TITLE_STYLE_NONE" titleText="" titleTextColor="" verticalMargin="12" viewMode="false"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="90" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_SETTINGS_SET_BARRING_PWD__FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="16" marginRight="16" marginTop="1" mode="Portrait" rightRelation="IDL_SETTINGS_SET_BARRING_PWD__FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" style="EDIT_FIELD_STYLE_PASSWORD_NUMBER" topRelation="IDC_LABEL1" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="688" x="16" y="85"/>
+ <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_PASSWORD_NUMBER" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="426" x="400" y="0"/>
+ </EditField>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+<Scene Bversion="3.0.0.201211281258" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundColor="" backgroundColorOpacity="100" orientation="Portrait" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>
+ <layout mode="Portrait" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Footer>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" disabledButtonColor="" disabledButtonColorOpacity="0" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" footerStyle="FOOTER_STYLE_BUTTON_ICON_TEXT" 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="false"/>
+ <itemSet/>
+ </Footer>
+ <Header>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" 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="SPEED DIAL" titleTextColor=""/>
+ <itemSet/>
+ </Header>
+ <Panel id="IDC_PHOTO_PANEL" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundColor="#FFFFFF" backgroundColorOpacity="100" compositeEnabled="true" groupStyle="GROUP_STYLE_NONE"/>
+ <layout bottomRelation="IDL_SETTINGS_SPEEDDIAL_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="1022" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_SETTINGS_SPEEDDIAL_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_SETTINGS_SPEEDDIAL_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDL_SETTINGS_SPEEDDIAL_FORM" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" type="NONE" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="0"/>
+ <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="" type="NONE" verticalFitPolicy="FIT_POLICY_FIXED" width="533" x="419" y="0"/>
+ </Panel>
+ <Label id="IDC_VOICEMAIL_LABEL" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="233" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_PANEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="6" marginRight="0" marginTop="25" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_PANEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="233" x="6" y="25"/>
+ <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="391" y="0"/>
+ </Label>
+ <Label id="IDC__PHOTO_LABEL2" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="233" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="4" marginRight="0" marginTop="25" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_PANEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="233" x="243" y="25"/>
+ <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="631" y="0"/>
+ </Label>
+ <Label id="IDC_PHOTO_LABEL3" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="233" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC__PHOTO_LABEL2" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="4" marginRight="7" marginTop="25" mode="Portrait" rightRelation="IDC_PHOTO_PANEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_PHOTO_PANEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="233" x="480" y="25"/>
+ <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="256" x="1024" y="0"/>
+ </Label>
+ <Label id="IDC_PHOTO_LABEL4" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="233" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_PANEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="6" marginRight="0" marginTop="40" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_VOICEMAIL_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="233" x="6" y="298"/>
+ <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="312" y="125"/>
+ </Label>
+ <Label id="IDC_PHOTO_LABEL5" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="233" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_LABEL4" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="4" marginRight="0" marginTop="40" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC__PHOTO_LABEL2" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="233" x="243" y="298"/>
+ <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="526" x="753" y="105"/>
+ </Label>
+ <Label id="IDC_PHOTO_LABEL6" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="233" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_LABEL5" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="4" marginRight="7" marginTop="40" mode="Portrait" rightRelation="IDC_PHOTO_PANEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_PHOTO_LABEL3" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="233" x="480" y="298"/>
+ <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="243" x="1036" y="122"/>
+ </Label>
+ <Label id="IDC_PHOTO_LABEL7" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="233" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_PANEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="6" marginRight="0" marginTop="40" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_LABEL4" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="233" x="6" y="571"/>
+ <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="295" y="263"/>
+ </Label>
+ <Label id="IDC_PHOTO_LABEL8" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="233" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_LABEL7" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="4" marginRight="0" marginTop="40" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_LABEL5" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="233" x="243" y="571"/>
+ <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="711" y="301"/>
+ </Label>
+ <Label id="IDC_PHOTO_LABEL9" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="233" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_LABEL8" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_RIGHT" marginBottom="0" marginLeft="4" marginRight="7" marginTop="40" mode="Portrait" rightRelation="IDC_PHOTO_PANEL" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_PHOTO_LABEL6" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="233" x="480" y="571"/>
+ <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="318" x="961" y="297"/>
+ </Label>
+ <Button id="IDC_VOICEMAIL_BUTTON" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_VOICEMAIL_LABEL" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="8" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_VOICEMAIL_LABEL" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="14" y="25"/>
+ <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="533" x="90" y="0"/>
+ </Button>
+ <Button id="IDC_PHOTO_BUTTON2" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC__PHOTO_LABEL2" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="8" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC__PHOTO_LABEL2" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="251" y="25"/>
+ <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="533" x="487" y="0"/>
+ </Button>
+ <Button id="IDC_PHOTO_BUTTON3" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_LABEL3" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="8" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_LABEL3" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="488" y="25"/>
+ <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="416" x="864" y="5"/>
+ </Button>
+ <Button id="IDC_PHOTO_BUTTON4" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_LABEL4" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="8" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_LABEL4" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="14" y="298"/>
+ <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="533" x="112" y="143"/>
+ </Button>
+ <Button id="IDC_PHOTO_BUTTON5" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_LABEL5" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="8" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_LABEL5" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="251" y="298"/>
+ <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="533" x="624" y="149"/>
+ </Button>
+ <Button id="IDC_PHOTO_BUTTON6" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_LABEL6" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="8" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_LABEL6" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="488" y="298"/>
+ <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="346" x="933" y="109"/>
+ </Button>
+ <Button id="IDC_PHOTO_BUTTON7" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_LABEL7" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="8" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_LABEL7" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="14" y="571"/>
+ <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="533" x="126" y="292"/>
+ </Button>
+ <Button id="IDC_PHOTO_BUTTON8" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_LABEL8" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="8" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_LABEL8" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="251" y="571"/>
+ <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="533" x="474" y="298"/>
+ </Button>
+ <Button id="IDC_PHOTO_BUTTON9" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_LABEL9" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="8" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_LABEL9" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="488" y="571"/>
+ <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="291" x="988" y="291"/>
+ </Button>
+ <Label id="IDC_LABEL1" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_VOICEMAIL_BUTTON" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_VOICEMAIL_BUTTON" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="2" x="14" y="25"/>
+ <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="513" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL2" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDC_VOICEMAIL_BUTTON" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_VOICEMAIL_BUTTON" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="2" x="229" y="25"/>
+ <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="426" y="68"/>
+ </Label>
+ <Label id="IDC_LABEL3" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDC_VOICEMAIL_BUTTON" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="2" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_VOICEMAIL_BUTTON" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="14" y="240"/>
+ <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="599" y="34"/>
+ </Label>
+ <Label id="IDC_LABEL4" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="2" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_VOICEMAIL_BUTTON" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_VOICEMAIL_BUTTON" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="14" y="25"/>
+ <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="446" y="8"/>
+ </Label>
+ <Label id="IDC_LABEL5" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON2" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON2" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="2" x="251" y="25"/>
+ <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="513" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL6" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDC_PHOTO_BUTTON2" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_PHOTO_BUTTON2" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="2" x="466" y="25"/>
+ <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="426" y="68"/>
+ </Label>
+ <Label id="IDC_LABEL7" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDC_PHOTO_BUTTON2" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="2" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON2" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="251" y="240"/>
+ <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="599" y="34"/>
+ </Label>
+ <Label id="IDC_LABEL8" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="2" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON2" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON2" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="251" y="25"/>
+ <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="446" y="8"/>
+ </Label>
+ <Label id="IDC_LABEL9" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON3" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON3" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="2" x="488" y="25"/>
+ <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="513" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL10" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDC_PHOTO_BUTTON3" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_PHOTO_BUTTON3" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="2" x="703" y="25"/>
+ <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="426" y="68"/>
+ </Label>
+ <Label id="IDC_LABEL11" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDC_PHOTO_BUTTON3" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="2" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON3" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="488" y="240"/>
+ <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="599" y="34"/>
+ </Label>
+ <Label id="IDC_LABEL12" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="2" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON3" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON3" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="488" y="25"/>
+ <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="446" y="8"/>
+ </Label>
+ <Label id="IDC_LABEL13" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON4" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON4" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="2" x="14" y="298"/>
+ <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="513" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL14" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDC_PHOTO_BUTTON4" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_PHOTO_BUTTON4" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="2" x="229" y="298"/>
+ <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="426" y="68"/>
+ </Label>
+ <Label id="IDC_LABEL15" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDC_PHOTO_BUTTON4" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="2" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON4" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="14" y="513"/>
+ <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="599" y="34"/>
+ </Label>
+ <Label id="IDC_LABEL16" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="2" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON5" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON5" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="251" y="298"/>
+ <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="446" y="8"/>
+ </Label>
+ <Label id="IDC_LABEL17" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON5" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON5" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="2" x="251" y="298"/>
+ <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="513" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL18" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDC_PHOTO_BUTTON5" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_PHOTO_BUTTON5" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="2" x="466" y="298"/>
+ <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="426" y="68"/>
+ </Label>
+ <Label id="IDC_LABEL19" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDC_PHOTO_BUTTON5" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="2" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON5" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="251" y="513"/>
+ <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="599" y="34"/>
+ </Label>
+ <Label id="IDC_LABEL20" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="2" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON5" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON5" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="251" y="298"/>
+ <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="446" y="8"/>
+ </Label>
+ <Label id="IDC_LABEL21" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON6" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON6" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="2" x="488" y="298"/>
+ <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="513" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL22" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDC_PHOTO_BUTTON6" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_PHOTO_BUTTON6" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="2" x="703" y="298"/>
+ <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="426" y="68"/>
+ </Label>
+ <Label id="IDC_LABEL23" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDC_PHOTO_BUTTON6" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="2" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON6" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="488" y="513"/>
+ <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="599" y="34"/>
+ </Label>
+ <Label id="IDC_LABEL24" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="2" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON6" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON6" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="488" y="298"/>
+ <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="446" y="8"/>
+ </Label>
+ <Label id="IDC_LABEL25" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON7" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON7" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="2" x="14" y="571"/>
+ <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="513" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL26" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDC_PHOTO_BUTTON7" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_PHOTO_BUTTON7" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="2" x="229" y="571"/>
+ <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="426" y="68"/>
+ </Label>
+ <Label id="IDC_LABEL27" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDC_PHOTO_BUTTON7" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="2" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON7" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="14" y="786"/>
+ <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="599" y="34"/>
+ </Label>
+ <Label id="IDC_LABEL28" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="2" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON7" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON7" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="14" y="571"/>
+ <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="446" y="8"/>
+ </Label>
+ <Label id="IDC_LABEL29" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON8" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON8" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="2" x="251" y="571"/>
+ <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="513" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL30" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDC_PHOTO_BUTTON8" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_PHOTO_BUTTON8" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="2" x="466" y="571"/>
+ <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="426" y="68"/>
+ </Label>
+ <Label id="IDC_LABEL31" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDC_PHOTO_BUTTON8" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="2" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON8" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="251" y="786"/>
+ <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="599" y="34"/>
+ </Label>
+ <Label id="IDC_LABEL32" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="2" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON8" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON8" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="251" y="571"/>
+ <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="446" y="8"/>
+ </Label>
+ <Label id="IDC_LABEL33" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON9" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON9" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="2" x="488" y="571"/>
+ <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="513" y="0"/>
+ </Label>
+ <Label id="IDC_LABEL34" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="217" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDC_PHOTO_BUTTON9" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDC_PHOTO_BUTTON9" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="2" x="703" y="571"/>
+ <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="426" y="68"/>
+ </Label>
+ <Label id="IDC_LABEL35" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="IDC_PHOTO_BUTTON9" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="2" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON9" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="488" y="786"/>
+ <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="599" y="34"/>
+ </Label>
+ <Label id="IDC_LABEL36" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#BEBDBD" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="2" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON9" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON9" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="488" y="571"/>
+ <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="446" y="8"/>
+ </Label>
+ <Label id="IDC_LABEL37" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="50" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="3" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="14" y="242"/>
+ <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="181" y="70"/>
+ </Label>
+ <Label id="IDC_LABEL38" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="50" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="3" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="251" y="242"/>
+ <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="547" y="91"/>
+ </Label>
+ <Label id="IDC_LABEL39" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="50" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="3" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="488" y="242"/>
+ <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="565" y="91"/>
+ </Label>
+ <Label id="IDC_LABEL40" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="50" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="3" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="14" y="515"/>
+ <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="565" y="91"/>
+ </Label>
+ <Label id="IDC_LABEL41" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="50" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="3" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="251" y="515"/>
+ <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="565" y="91"/>
+ </Label>
+ <Label id="IDC_LABEL42" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="50" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="3" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="488" y="515"/>
+ <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="565" y="91"/>
+ </Label>
+ <Label id="IDC_LABEL43" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="50" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="3" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="14" y="788"/>
+ <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="565" y="91"/>
+ </Label>
+ <Label id="IDC_LABEL44" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="50" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="3" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="251" y="788"/>
+ <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="565" y="91"/>
+ </Label>
+ <Label id="IDC_LABEL45" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#000000" backgroundColorOpacity="50" horizontalAlign="ALIGN_LEFT" text="" textColor="" textSize="33" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_TOP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="3" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="488" y="788"/>
+ <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="565" y="91"/>
+ </Label>
+ <Label id="IDC_LABEL46" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="2" textColor="#FFFFFF" textSize="86" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_PHOTO_BUTTON2" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="86" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="2" marginLeft="0" marginRight="2" marginTop="0" mode="Portrait" rightRelation="IDC_PHOTO_BUTTON2" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="86" x="380" y="154"/>
+ <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="705" y="30"/>
+ </Label>
+ <Label id="IDC_LABEL47" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="3" textColor="#FFFFFF" textSize="86" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_PHOTO_BUTTON3" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="86" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="2" marginLeft="0" marginRight="2" marginTop="0" mode="Portrait" rightRelation="IDC_PHOTO_BUTTON3" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="86" x="617" y="154"/>
+ <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="325" x="954" y="6"/>
+ </Label>
+ <Label id="IDC_LABEL48" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="4" textColor="#FFFFFF" textSize="86" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_PHOTO_BUTTON4" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="93" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="2" marginLeft="0" marginRight="2" marginTop="0" mode="Portrait" rightRelation="IDC_PHOTO_BUTTON4" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="86" x="143" y="420"/>
+ <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="160" y="177"/>
+ </Label>
+ <Label id="IDC_LABEL49" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="5" textColor="#FFFFFF" textSize="86" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_PHOTO_BUTTON5" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="93" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="2" marginLeft="0" marginRight="2" marginTop="0" mode="Portrait" rightRelation="IDC_PHOTO_BUTTON5" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="86" x="380" y="420"/>
+ <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="641" y="182"/>
+ </Label>
+ <Label id="IDC_LABEL50" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="6" textColor="#FFFFFF" textSize="86" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_PHOTO_BUTTON6" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="86" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="2" marginLeft="0" marginRight="2" marginTop="0" mode="Portrait" rightRelation="IDC_PHOTO_BUTTON6" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="86" x="617" y="427"/>
+ <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="250" x="1029" y="161"/>
+ </Label>
+ <Label id="IDC_LABEL51" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="7" textColor="#FFFFFF" textSize="86" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_PHOTO_BUTTON7" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="86" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="2" marginLeft="0" marginRight="2" marginTop="0" mode="Portrait" rightRelation="IDC_PHOTO_BUTTON7" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="86" x="143" y="700"/>
+ <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="332" y="325"/>
+ </Label>
+ <Label id="IDC_LABEL52" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="8" textColor="#FFFFFF" textSize="86" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_PHOTO_BUTTON8" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="86" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="2" marginLeft="0" marginRight="2" marginTop="0" mode="Portrait" rightRelation="IDC_PHOTO_BUTTON8" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="86" x="380" y="700"/>
+ <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="504" x="775" y="339"/>
+ </Label>
+ <Label id="IDC_LABEL53" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="9" textColor="#FFFFFF" textSize="86" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDC_PHOTO_BUTTON9" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="86" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="2" marginLeft="0" marginRight="2" marginTop="0" mode="Portrait" rightRelation="IDC_PHOTO_BUTTON9" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="86" x="617" y="700"/>
+ <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="224" x="1056" y="347"/>
+ </Label>
+ <Label id="IDC_VOICEMAIL_TXT_LABEL" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="Voice mail" textColor="#000000" textSize="26" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="56" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_VOICEMAIL_BUTTON" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_VOICEMAIL_BUTTON" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="14" y="242"/>
+ <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="58" y="233"/>
+ </Label>
+ <Label id="IDC_NAME_LABEL2" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="2. Name" textColor="#000000" textSize="26" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="56" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON2" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON2" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="251" y="242"/>
+ <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="391" y="113"/>
+ </Label>
+ <Label id="IDC_NAME_LABEL3" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="3. Name" textColor="#000000" textSize="26" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="56" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON3" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON3" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="488" y="242"/>
+ <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="231" x="1048" y="86"/>
+ </Label>
+ <Label id="IDC_NAME_LABEL4" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="4. Name" textColor="#000000" textSize="26" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="56" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON4" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON4" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="14" y="515"/>
+ <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="161" y="223"/>
+ </Label>
+ <Label id="IDC_NAME_LABEL5" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="5. Name" textColor="#000000" textSize="26" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="56" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON5" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON5" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="251" y="515"/>
+ <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="643" y="240"/>
+ </Label>
+ <Label id="IDC_NAME_LABEL6" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="6. Name" textColor="#000000" textSize="26" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="56" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON6" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON6" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="488" y="515"/>
+ <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="387" x="892" y="245"/>
+ </Label>
+ <Label id="IDC_NAME_LABEL7" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="7. Name" textColor="#000000" textSize="26" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="56" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON7" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON7" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="14" y="788"/>
+ <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="72" y="406"/>
+ </Label>
+ <Label id="IDC_NAME_LABEL8" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="8. Name" textColor="#000000" textSize="26" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="56" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON8" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON8" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="251" y="788"/>
+ <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="464" y="412"/>
+ </Label>
+ <Label id="IDC_NAME_LABEL9" parent="IDL_SETTINGS_SPEEDDIAL_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" horizontalAlign="ALIGN_CENTER" text="9. Name" textColor="#000000" textSize="26" textStyle="LABEL_TEXT_STYLE_NORMAL" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="56" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDC_PHOTO_BUTTON9" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_PHOTO_BUTTON9" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="217" x="488" y="788"/>
+ <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="346" x="933" y="395"/>
+ </Label>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+
+<Scene Bversion="3.0.0.201301181014" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_SETTINGS_STATUS_TONES_FORM">
+ <property backgroundColor="" backgroundColorOpacity="100" orientation="Portrait" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>
+ <layout mode="Portrait" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Footer>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" disabledButtonColor="" disabledButtonColorOpacity="0" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" footerStyle="FOOTER_STYLE_BUTTON_TEXT" 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="100" 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="Call status tones" titleTextColor=""/>
+ <itemSet/>
+ </Header>
+ <GroupedTableView id="IDC_GROUPEDTABLEVIEW" parent="IDL_SETTINGS_STATUS_TONES_FORM">
+ <property backgroundColor="#F9F9F9" backgroundColorOpacity="100" collapseByPinchEnabled="false" fastScrollIndex="" groupedLookEnabled="true" itemDivider="true" itemDividerColor="#8E9AA3" scrollBarStyle="TABLE_VIEW_SCROLL_BAR_STYLE_NONE" scrollInputMode="SCROLL_INPUT_MODE_ALLOW_ANY_DIRECTION" useSearchIcon="false"/>
+ <layout bottomRelation="IDL_SETTINGS_STATUS_TONES_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="931" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="IDL_SETTINGS_STATUS_TONES_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="40" marginLeft="16" marginRight="16" marginTop="40" mode="Portrait" rightRelation="IDL_SETTINGS_STATUS_TONES_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDL_SETTINGS_STATUS_TONES_FORM" topRelationType="RECT_EDGE_RELATION_TOP_TO_TOP" verticalFitPolicy="FIT_POLICY_FIXED" width="688" x="16" y="40"/>
+ <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="20"/>
+ </GroupedTableView>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE ScenePopup SYSTEM "UIForm.dtd">
+<ScenePopup Bversion="3.0.0.201212071727" Dversion="20120315">
+ <Popup id="IDL_SPEED_DIAL_POPUP">
+ <property color="" titleText="::IDS_SPEED_DIAL_POPUP_TITLE" titleTextColor=""/>
+ <layout height="473" mode="Portrait" style="" type="LAYOUT_RELATIVE" width="640"/>
+ <layout height="660" mode="Landscape" style="" type="LAYOUT_RELATIVE" width="414"/>
+ </Popup>
+ <ListView id="IDC_LISTVIEW" parent="IDL_SPEED_DIAL_POPUP">
+ <property backgroundColor="" backgroundColorOpacity="0" bitmapPathOfEmptyList="" colorOfEmptyListText="" fastScroll="false" itemDivider="true" itemDividerColor="" sweepEnabled="false" textOfEmptyList=""/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="true" centerVertical="false" height="224" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="None" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="600" x="8" y="0"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="292" 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="231" x="158" y="222"/>
+ </ListView>
+ <Button id="IDC_CLOSE_BUTTON" parent="IDL_SPEED_DIAL_POPUP">
+ <property disableTextColor="" disabledBitmapPath="" disabledColor="" disabledColorOpacity="100" highlightedBGBitmapPath="" highlightedColor="" highlightedColorOpacity="100" highlightedTextColor="" horizontalAlign="ALIGN_CENTER" normalBGBitmapPath="" normalBitmapPath="" normalColor="" normalColorOpacity="100" normalTextColor="" pressedBGBitmapPath="" pressedBitmapPath="" pressedColor="" pressedColorOpacity="100" pressedTextColor="" text="::IDS_CLOSE_POPUP" textSize="33" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="true" centerVertical="false" height="72" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0" marginLeft="0" marginRight="0" marginTop="10" mode="Portrait" rightRelation="" rightRelationType="" topRelation="IDC_LISTVIEW" topRelationType="RECT_EDGE_RELATION_TOP_TO_BOTTOM" verticalFitPolicy="FIT_POLICY_FIXED" width="300" x="158" y="234"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="113" 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="189" x="170" y="401"/>
+ </Button>
+</ScenePopup>
--- /dev/null
+//
+// 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 PhnActiveCallForm.cpp
+ * @brief Active Call Form class
+ */
+#include <FApp.h>
+#include <FUi.h>
+#include <FMedia.h>
+#include <FSystem.h>
+#include "PhnActiveCallForm.h"
+#include "PhnCallButtonsPanel.h"
+#include "PhnCallInfo.h"
+#include "PhnAppUtility.h"
+#include "PhnDtmfKeypadPanel.h"
+#include "PhnCallPresentationModel.h"
+#include "PhnSceneRegister.h"
+#include "PhnTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Utility;
+using namespace Tizen::Graphics;
+using namespace Tizen::Media;
+using namespace Tizen::Social;
+using namespace Tizen::System;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+//constants
+const int IDI_MAX_SECONDS = 60;
+const int IDI_MAX_MINS = 60;
+const int W_HOLD_BITMAP = 78;
+const int H_HOLD_BITMAP = 78;
+//for Options menu list
+const int IDI_POPUP_TEXT_SIZE = 33;
+const unsigned int COLOR_POPUP_TEXT = Color32<255, 255, 255, 255>::Value;
+const int IDI_MOREOPTIONS_LIST_ITEMS = 1;
+const int W_OPTION_ANCHOR = 72;
+const int H_OPTION_ANCHOR = 22;
+const int W_MGR_CONFCALL_BITMAP = 64;
+const int H_MGR_CONFCALL_BITMAP = 64;
+const int X_DTMF_KEYPAD = 40;
+const int IDI_YMARGIN_DTMF_KEYPAD = 26;
+const int X_POPUP_ANCHOR = 632;
+const int Y_POPUP_ANCHOR = 140;
+const int W_POPUP_ANCHOR = 72;
+const int H_POPUP_ANCHOR = 22;
+const int IDI_OPTIONMENU_ITEM_SPACING = 16;
+const Point IDI_OPTIONMENU_POS(238, 162);
+const Dimension IDI_OPTIONMENU_DIMEN(466, 99);
+const int X_PHOTO_LBL = 166;
+const int Y_PHOTO_LBL = 232;
+const int W_PHOTO_LBL = 388;
+const int H_PHOTO_LBL = 388;
+const int W_PHOTO_LABEL = 720;
+const int H_PHOTO_LABEL = 720;
+
+static const wchar_t* IDC_CONF_CALL_MORE_BUTTON = L"IDC_CONF_CALL_MORE_BUTTON";
+static const wchar_t* IDC_HOLD_BUTTON = L"IDC_HOLD_BUTTON";
+static const wchar_t* IDC_SWAP_BUTTON = L"IDC_SWAP_BUTTON";
+static const wchar_t* IDC_HOLD_LABEL = L"IDC_HOLD_LABEL";
+static const wchar_t* IDC_TEXTBOX = L"IDC_TEXTBOX";
+static const wchar_t* IDC_LINE_LABEL = L"IDC_LINE_LABEL";
+static const wchar_t* IDC_CALLER1_LABEL = L"IDC_CALLER1_LABEL";
+static const wchar_t* IDC_BACKGROUND_LABEL = L"IDC_BACKGROUND_LABEL";
+static const wchar_t* IDC_CALLER1_TIME_LABEL = L"IDC_CALLER1_TIME_LABEL";
+static const wchar_t* IDC_NUMBER1_LABEL = L"IDC_NUMBER1_LABEL";
+static const wchar_t* IDC_VOICE_CALL_ICON_LABEL = L"IDC_VOICE_CALL_ICON_LABEL";
+static const wchar_t* IDC_CALLER2_LABEL = L"IDC_CALLER2_LABEL";
+static const wchar_t* IDC_NUMBER2_LABEL = L"IDC_NUMBER2_LABEL";
+static const wchar_t* IDC_CALLER2_TIME_LABEL = L"IDC_CALLER2_TIME_LABEL";
+static const wchar_t* IDC_SWAP_LABEL = L"IDC_SWAP_LABEL";
+static const wchar_t* IDC_BACKGROUND_LABEL2 = L"IDC_BACKGROUND_LABEL2";
+static const wchar_t* IDC_PARTICIPANTS_LABEL = L"IDC_PARTICIPANTS_LABEL";
+static const wchar_t* IDC_DIVIDER_LABEL = L"IDC_DIVIDER_LABEL";
+static const wchar_t* IDC_CALLER1_BIGPHOTO_LABEL = L"IDC_CALLER1_BIGPHOTO_LABEL";
+static const wchar_t* IDC_CALLER2_PHOTO_LABEL = L"IDC_CALLER2_PHOTO_LABEL";
+static const wchar_t* IDC_CALLER1_PHOTO_LABEL = L"IDC_CALLER1_PHOTO_LABEL";
+
+ActiveCallForm::ActiveCallForm(FormType formType)
+ : BaseForm(formType)
+{
+ __pActiveCallTimer = null;
+ __pCallButtonsPanel = null;
+ __pDTMFKeypad = null;
+ __pMoreOptionsList = null;
+ __pMoreOptionsListAnchor = null;
+ __pSmallPhotoLabel = null;
+ __pActiveCallInfo = null;
+ __pHeldCallInfo = null;
+}
+
+ActiveCallForm::~ActiveCallForm(void)
+{
+ if (__pActiveCallTimer != null)
+ {
+ __pActiveCallTimer->Cancel();
+ delete __pActiveCallTimer;
+ }
+ if (__pMoreOptionsList != null)
+ {
+ RemoveControl(*__pMoreOptionsList);
+ __pMoreOptionsList = null;
+ }
+ if (__pMoreOptionsListAnchor != null)
+ {
+ RemoveControl(*__pMoreOptionsListAnchor);
+ __pMoreOptionsListAnchor = null;
+ }
+ if (__pSmallPhotoLabel != null)
+ {
+ RemoveControl(*__pSmallPhotoLabel);
+ __pSmallPhotoLabel = null;
+ }
+ if (__pActiveCallInfo != null)
+ {
+ delete __pActiveCallInfo;
+ }
+ if (__pHeldCallInfo != null)
+ {
+ delete __pHeldCallInfo;
+ }
+ if(__pDTMFKeypad != null)
+ {
+ RemoveControl(*__pDTMFKeypad);
+ __pDTMFKeypad = null;
+ }
+}
+
+void
+ActiveCallForm::Initialize(void)
+{
+ switch (__formType)
+ {
+ case FORMTYPE_OUTGOINGCALL:
+ Construct(IDL_OUTCALL_FORM);
+ break;
+
+ case FORMTYPE_EMERGENCYOUTGOINGCALL:
+ Construct(IDL_OUT_EMERGENCYCALL_FORM);
+ break;
+
+ case FORMTYPE_ACTIVECALL:
+ Construct(IDL_CALL_FORM);
+ break;
+
+ case FORMTYPE_EMERGENCYACTIVECALL:
+ Construct(IDL_EMERGENCY_CALL_FORM);
+ break;
+
+ case FORMTYPE_MULTIPLECALLS:
+ Construct(IDL_MULTIPLE_CALL_FORM);
+ break;
+
+ case FORMTYPE_ACTIVECONFCALL:
+ Construct(IDL_CONFCALL_FORM);
+ break;
+
+ default:
+ break;
+ }
+
+ //Initialize keypad and buttons
+ InitializeCallButtonsPanel();
+ //Hold Button - Shown on single active/conf call scene
+ InitializeHoldButton();
+ //Swap button for multiple call screen
+ InitializeSwapButton();
+ //Initialize manage conf. call list form
+ InitializeManageConfCallButton();
+}
+
+result
+ActiveCallForm::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+
+ RelativeLayout* pRelativeLayout = dynamic_cast<RelativeLayout*>(GetParent()->GetLandscapeLayoutN());
+ if (pRelativeLayout != null)
+ {
+ pRelativeLayout->SetHorizontalFitPolicy(*this, FIT_POLICY_PARENT);
+ pRelativeLayout->SetVerticalFitPolicy(*this, FIT_POLICY_PARENT);
+ delete pRelativeLayout;
+ }
+ pRelativeLayout = dynamic_cast<RelativeLayout*>(GetParent()->GetPortraitLayoutN());
+ if (pRelativeLayout != null)
+ {
+ pRelativeLayout->SetHorizontalFitPolicy(*this, FIT_POLICY_PARENT);
+ pRelativeLayout->SetVerticalFitPolicy(*this, FIT_POLICY_PARENT);
+ delete pRelativeLayout;
+ }
+
+ __pCallPresentor = CallPresentationModel::GetInstance();
+
+ return r;
+}
+
+void
+ActiveCallForm::ShowDTMFKeypad(void)
+{
+ if(__pDTMFKeypad == null)
+ {
+ Rectangle rect(X_DTMF_KEYPAD, 0, 0, 0);
+ //update rect according to client screen area
+ rect.width = GetClientAreaBounds().width - (2 * X_DTMF_KEYPAD);
+ rect.height = GetClientAreaBounds().height - __pCallButtonsPanel->GetHeight() - IDI_YMARGIN_DTMF_KEYPAD;
+ __pDTMFKeypad = new (std::nothrow) DtmfKeyPadPanel();
+ __pDTMFKeypad->Initialize(this, rect);
+ AddControl(*__pDTMFKeypad);
+ }
+ TextBox* pTextBox = static_cast<TextBox*>(__pDTMFKeypad->GetControl(IDC_TEXTBOX));
+ pTextBox->SetText(L"");
+ __pDTMFKeypad->SetShowState(true);
+ __pDTMFKeypad->Draw(true);
+ __pDTMFKeypad->Show();
+}
+
+void
+ActiveCallForm::HideDTMFKeypad(void)
+{
+ if(__pDTMFKeypad != null)
+ {
+ __pDTMFKeypad->SetShowState(false);
+ }
+}
+
+result
+ActiveCallForm::InitializeCallButtonsPanel(void)
+{
+ __pCallButtonsPanel = new (std::nothrow) CallButtonsPanel();
+ __pCallButtonsPanel->ConstructPanel(this, __formType);
+
+ result r = AddControl(*__pCallButtonsPanel);
+ return r;
+}
+
+void
+ActiveCallForm::InitializeSwapButton(void)
+{
+ Button* pSwapBtn = static_cast<Button*>(GetControl(IDC_SWAP_BUTTON));
+ if (pSwapBtn)
+ {
+ Bitmap* pSwapBmp = AppUtility::GetBitmapFromResourcesN(IDB_SWAP_ICON_NORMAL,
+ W_HOLD_BITMAP, H_HOLD_BITMAP);
+ if (pSwapBmp)
+ {
+ pSwapBtn->SetNormalBitmap(Point(0, 0), *pSwapBmp);
+ }
+ delete pSwapBmp;
+ pSwapBmp = null;
+
+ pSwapBmp = AppUtility::GetBitmapFromResourcesN(IDB_SWAP_ICON_PRESS,
+ W_HOLD_BITMAP, H_HOLD_BITMAP);
+ if (pSwapBmp)
+ {
+ pSwapBtn->SetPressedBitmap(Point(0, 0), *pSwapBmp);
+ }
+ delete pSwapBmp;
+ pSwapBmp = null;
+ pSwapBtn->SetActionId(IDA_SWAP_CALLS);
+ pSwapBtn->AddActionEventListener(*this);
+ }
+}
+
+void
+ActiveCallForm::InitializeManageConfCallButton(void)
+{
+ Button* pMoreBtn = static_cast<Button*>(GetControl(IDC_CONF_CALL_MORE_BUTTON));
+ if (pMoreBtn != null)
+ {
+ pMoreBtn->SetActionId(IDA_MORE_OPTIONS_MENU);
+ pMoreBtn->AddActionEventListener(*this);
+ if (__formType == FORMTYPE_MULTIPLECALLS)
+ {
+ //Correct state will be set in OnSceneActivated based on the call
+ pMoreBtn->SetShowState(false);
+ Label* pLblControl = static_cast<Label*>(GetControl(IDC_DIVIDER_LABEL));
+ if (pLblControl)
+ {
+ pLblControl->SetShowState(false);
+ }
+ }
+ else if (__formType == FORMTYPE_ACTIVECONFCALL)
+ {
+ pMoreBtn->SetShowState(true);
+ Label* pLblControl = static_cast<Label*>(GetControl(IDC_DIVIDER_LABEL));
+ if (pLblControl)
+ {
+ pLblControl->SetShowState(true);
+ }
+ }
+ }
+}
+
+void
+ActiveCallForm::InitializeHoldButton(void)
+{
+ Button* pHoldBtn = static_cast<Button*>(GetControl(IDC_HOLD_BUTTON));
+ if (pHoldBtn != null)
+ {
+ //set status of Hold Button
+ SetHoldButtonStatus(true);
+ pHoldBtn->AddActionEventListener(*this);
+ }
+}
+
+void
+ActiveCallForm::SetHoldButtonStatus(bool toHoldCall)
+{
+ //background bitmap & button name
+ String btnName("");
+ Bitmap* normalImg = null;
+ Bitmap* pressImg = null;
+ if (toHoldCall)
+ {
+ btnName.Append(AppUtility::GetResourceString(IDS_HOLD_BTN_NAME));
+ normalImg = AppUtility::GetBitmapFromResourcesN(IDB_HOLD_NORMAL_BUTTON_ICON,
+ W_HOLD_BITMAP, H_HOLD_BITMAP);
+ pressImg = AppUtility::GetBitmapFromResourcesN(IDB_HOLD_PRESS_BUTTON_ICON,
+ W_HOLD_BITMAP, H_HOLD_BITMAP);
+ }
+ else
+ {
+ btnName.Append(AppUtility::GetResourceString(IDS_UNHOLD_BTN_NAME));
+ normalImg = AppUtility::GetBitmapFromResourcesN(IDB_UNHOLD_NORMAL_BUTTON_ICON,
+ W_HOLD_BITMAP, H_HOLD_BITMAP);
+ pressImg = AppUtility::GetBitmapFromResourcesN(IDB_UNHOLD_PRESS_BUTTON_ICON,
+ W_HOLD_BITMAP, H_HOLD_BITMAP);
+ }
+
+ //Action id
+ CommandIds cmdId = IDA_HOLD_CALL;
+ switch (__formType)
+ {
+ case FORMTYPE_ACTIVECALL:
+ {
+ cmdId = toHoldCall ? IDA_HOLD_CALL : IDA_UNHOLD_CALL;
+ }
+ break;
+
+ case FORMTYPE_ACTIVECONFCALL:
+ {
+ cmdId = toHoldCall ? IDA_HOLD_CONF_CALL : IDA_UNHOLD_CONF_CALL;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ //set background bitmap, button name & action id
+ Button* pHoldBtn = static_cast<Button*>(GetControl(IDC_HOLD_BUTTON));
+ Label* pHoldLbl = static_cast<Label*>(GetControl(IDC_HOLD_LABEL));
+ if (pHoldBtn)
+ {
+ pHoldBtn->SetActionId(cmdId);
+ pHoldBtn->SetNormalBitmap(Point(0, 0),*normalImg);
+ pHoldBtn->SetPressedBitmap(Point(0, 0),*pressImg);
+ }
+ if (pHoldLbl)
+ {
+ pHoldLbl->SetText(btnName);
+ pHoldLbl->Invalidate(true);
+ }
+
+ //free the resources
+ delete normalImg;
+ normalImg = null;
+ delete pressImg;
+ pressImg = null;
+}
+
+void
+ActiveCallForm::CreateMoreOptionsMenuList(void)
+{
+ //create option list anchor
+ if (__pMoreOptionsListAnchor == null)
+ {
+ Bitmap* pBgPopupArwBmp = AppUtility::GetBitmapFromResourcesN(IDB_POPUP_ARROW_ICON, W_OPTION_ANCHOR,
+ H_OPTION_ANCHOR);
+ __pMoreOptionsListAnchor = new (std::nothrow) Label();
+ __pMoreOptionsListAnchor->Construct(Rectangle(X_POPUP_ANCHOR, Y_POPUP_ANCHOR, W_POPUP_ANCHOR, H_POPUP_ANCHOR), L"");
+ __pMoreOptionsListAnchor->SetBackgroundBitmap(*pBgPopupArwBmp);
+
+ delete pBgPopupArwBmp;
+ pBgPopupArwBmp = null;
+
+ // Adds a Label to the Form
+ AddControl(*__pMoreOptionsListAnchor);
+ }
+
+ //create options menu list
+ if (__pMoreOptionsList == null)
+ {
+ __pMoreOptionsList = new (std::nothrow) ListView();
+ __pMoreOptionsList->Construct(Rectangle(IDI_OPTIONMENU_POS, IDI_OPTIONMENU_DIMEN), false, SCROLL_STYLE_FADE_OUT);
+ __pMoreOptionsList->SetItemProvider(*this);
+ __pMoreOptionsList->AddListViewItemEventListener(*this);
+ //Add option list to the form
+ AddControl(*__pMoreOptionsList);
+ }
+ else
+ {
+ //Hide option menu list
+ DestroyMoreOptionsMenuList();
+ }
+}
+
+void
+ActiveCallForm::DestroyMoreOptionsMenuList(void)
+{
+ if (__pMoreOptionsListAnchor != null)
+ {
+ //removes and delete the child control
+ RemoveControl(*__pMoreOptionsListAnchor);
+ __pMoreOptionsListAnchor = null;
+ }
+
+ if (__pMoreOptionsList != null)
+ {
+ //removes and delete the child control
+ RemoveControl(*__pMoreOptionsList);
+ __pMoreOptionsList = null;
+ }
+}
+
+result
+ActiveCallForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+ if (__pCallPresentor != null)
+ {
+ __pCallPresentor = null;
+ }
+ return r;
+}
+
+void
+ActiveCallForm::OnActionPerformed(const Control& source, int actionId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ String dtmfString;
+ switch (actionId)
+ {
+ case IDA_END_CALL:
+ {
+ //End the currently active / dialing call
+ if (__pActiveCallInfo->IsConferenceCall() == false)
+ {
+ String activeContactNo;
+ activeContactNo.Append(__pActiveCallInfo->GetContactNumber());
+ //In case of if its a hidden call
+ if(__pActiveCallInfo->GetContactNumber().IsEmpty() == true)
+ {
+ __pCallPresentor->EndCall(*__pActiveCallInfo->GetCallHandle());
+ }
+ else
+ {
+ __pCallPresentor->EndCall(activeContactNo);
+ }
+ }
+ else
+ {
+ __pCallPresentor->EndConferenceCall();
+ }
+ }
+ break;
+
+ case IDA_END_CONF_CALL:
+ {
+ AppAssert(__formType == FORMTYPE_ACTIVECONFCALL);
+ __pCallPresentor->EndConferenceCall();
+ }
+ break;
+
+ case IDA_OPEN_NUMKEYPAD:
+ {
+ SetShowStateOnKeypad(false);
+ ShowDTMFKeypad();
+ SetTextToDTMFTextField(L"");
+ __pCallButtonsPanel->SetKeypadButtonState(IDA_CLOSE_NUMKEYPAD);
+ }
+ break;
+
+ case IDA_CLOSE_NUMKEYPAD:
+ {
+ SetShowStateOnKeypad(true);
+ HideDTMFKeypad();
+ __pCallButtonsPanel->SetKeypadButtonState(IDA_OPEN_NUMKEYPAD);
+ }
+ break;
+
+ case IDA_ADD_CALL:
+ {
+ //switch to Dialer Form to make an call
+ if(__pCallPresentor->GetCurrentCallCount() == 1)
+ {
+ ArrayList* pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pArgs->Construct();
+ String* formType = new (std::nothrow) String();
+ formType->Append(__formType);
+ pArgs->Add(formType);
+ pSceneManager->GoForward( ForwardSceneTransition(IDSCN_DIALER, SCENE_TRANSITION_ANIMATION_TYPE_NONE,
+ SCENE_HISTORY_OPTION_NO_HISTORY), pArgs);
+ }
+ }
+ break;
+
+ case IDA_HOLD_CALL:
+ {
+ bool success = true;
+ if (__pActiveCallInfo->IsConferenceCall() == false)
+ {
+ if(__pActiveCallInfo->GetCallHandle() != null)
+ {
+ success = __pCallPresentor->HoldCall(*__pActiveCallInfo->GetCallHandle());
+ }
+ }
+ else
+ {
+ success = __pCallPresentor->HoldConferenceCall();
+ }
+ //reset hold status and "OnHold" text
+ ShowTimerInfo(IDC_CALLER1_TIME_LABEL, success);
+ if(__pActiveCallTimer != null)
+ {
+ __pActiveCallTimer->Cancel();
+ }
+ SetHoldButtonStatus(!success);
+ }
+ break;
+
+ case IDA_UNHOLD_CALL:
+ {
+ bool success = false;
+ if (__pActiveCallInfo->IsConferenceCall() == false)
+ {
+ if(__pActiveCallInfo->GetCallHandle() != null)
+ {
+ success = __pCallPresentor->UnHoldCall(*__pActiveCallInfo->GetCallHandle());
+ }
+ }
+ else
+ {
+ success = __pCallPresentor->ActivateConferenceCall();
+ }
+ //reset hold status and show call timer
+ ShowTimerInfo(IDC_CALLER1_TIME_LABEL, !success, __activeCallStartTime);
+ SetHoldButtonStatus(success);
+ }
+ break;
+
+ case IDA_HOLD_CONF_CALL:
+ {
+ AppAssert(__formType == FORMTYPE_ACTIVECONFCALL);
+ bool success = __pCallPresentor->HoldConferenceCall();
+ //reset hold status and "OnHold" text
+ SetHoldButtonStatus(!success);
+ ShowTimerInfo(IDC_CALLER1_TIME_LABEL, success);
+ if(__pActiveCallTimer != null)
+ {
+ __pActiveCallTimer->Cancel();
+ }
+ }
+ break;
+
+ case IDA_UNHOLD_CONF_CALL:
+ {
+ AppAssert(__formType == FORMTYPE_ACTIVECONFCALL);
+ bool success = __pCallPresentor->ActivateConferenceCall();
+ //reset hold status and show call timer
+ ShowTimerInfo(IDC_CALLER1_TIME_LABEL, !success, __activeCallStartTime);
+ SetHoldButtonStatus(success);
+ }
+ break;
+
+ case IDA_OPEN_CONTACTS:
+ //Open Contacts APP
+ break;
+
+ case IDA_MUTE:
+ {
+ bool success = __pCallPresentor->SetMuteStatus(true);
+ if (success)
+ {
+ __pCallButtonsPanel->SetMuteButtonState(IDA_UNMUTE);
+ }
+ }
+ break;
+
+ case IDA_UNMUTE:
+ {
+ bool success = __pCallPresentor->SetMuteStatus(false);
+ if (success)
+ {
+ __pCallButtonsPanel->SetMuteButtonState(IDA_MUTE);
+ }
+ }
+ break;
+
+ case IDA_SPEAKER:
+ {
+ bool success = __pCallPresentor->SetSpeakerStatus(true);
+ if (success)
+ {
+ __pCallButtonsPanel->SetSpeakerButtonState(IDA_SPEAKER_OFF);
+ }
+ }
+ break;
+
+ case IDA_SPEAKER_OFF:
+ {
+ bool success = __pCallPresentor->SetSpeakerStatus(false);
+ if (success)
+ {
+ __pCallButtonsPanel->SetSpeakerButtonState(IDA_SPEAKER);
+ }
+ }
+ break;
+
+ case IDA_JOIN_CALL:
+ {
+ AppAssert(__formType == FORMTYPE_MULTIPLECALLS);
+ __pCallPresentor->JoinCall();
+ }
+ break;
+
+ case IDA_SWAP_CALLS:
+ {
+ AppAssert(__formType == FORMTYPE_MULTIPLECALLS);
+ __pCallPresentor->SwapCalls();
+ }
+ break;
+
+ case IDA_MORE_OPTIONS_MENU:
+ {
+ //Show 'more' options menu
+ CreateMoreOptionsMenuList();
+ }
+ break;
+
+ case NUM_KEY0:
+ {
+ dtmfString.Append(L"0");
+ SetTextToDTMFTextField(dtmfString);
+ __pCallPresentor->SendDTMFSignal(dtmfString);
+ }
+ break;
+
+ case NUM_KEY1:
+ {
+ dtmfString.Append(L"1");
+ SetTextToDTMFTextField(dtmfString);
+ __pCallPresentor->SendDTMFSignal(dtmfString);
+ }
+ break;
+
+ case NUM_KEY2:
+ {
+ dtmfString.Append(L"2");
+ SetTextToDTMFTextField(dtmfString);
+ __pCallPresentor->SendDTMFSignal(dtmfString);
+ }
+ break;
+
+ case NUM_KEY3:
+ {
+ dtmfString.Append(L"3");
+ SetTextToDTMFTextField(dtmfString);
+ __pCallPresentor->SendDTMFSignal(dtmfString);
+ }
+ break;
+
+ case NUM_KEY4:
+ {
+ dtmfString.Append(L"4");
+ SetTextToDTMFTextField(dtmfString);
+ __pCallPresentor->SendDTMFSignal(dtmfString);
+ }
+ break;
+
+ case NUM_KEY5:
+ {
+ dtmfString.Append(L"5");
+ SetTextToDTMFTextField(dtmfString);
+ __pCallPresentor->SendDTMFSignal(dtmfString);
+ }
+ break;
+
+ case NUM_KEY6:
+ {
+ dtmfString.Append(L"6");
+ SetTextToDTMFTextField(dtmfString);
+ __pCallPresentor->SendDTMFSignal(dtmfString);
+ }
+ break;
+
+ case NUM_KEY7:
+ {
+ dtmfString.Append(L"7");
+ SetTextToDTMFTextField(dtmfString);
+ __pCallPresentor->SendDTMFSignal(dtmfString);
+ }
+ break;
+
+ case NUM_KEY8:
+ {
+ dtmfString.Append(L"8");
+ SetTextToDTMFTextField(dtmfString);
+ __pCallPresentor->SendDTMFSignal(dtmfString);
+ }
+ break;
+
+ case NUM_KEY9:
+ {
+ dtmfString.Append(L"9");
+ SetTextToDTMFTextField(dtmfString);
+ __pCallPresentor->SendDTMFSignal(dtmfString);
+ }
+ break;
+
+ case PAUSE_KEY:
+ {
+ dtmfString.Append(L"*");
+ SetTextToDTMFTextField(dtmfString);
+ __pCallPresentor->SendDTMFSignal(dtmfString);
+ }
+ break;
+
+ case HASH_KEY:
+ {
+ dtmfString.Append(L"#");
+ SetTextToDTMFTextField(dtmfString);
+ __pCallPresentor->SendDTMFSignal(dtmfString);
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+void
+ActiveCallForm::SetTextToDTMFTextField(const String& dtmfStr)
+{
+ if(__pDTMFKeypad != null)
+ {
+ TextBox* pTextBox = static_cast<TextBox*>(__pDTMFKeypad->GetControl(IDC_TEXTBOX));
+ pTextBox->AppendText(dtmfStr);
+ pTextBox->Invalidate(true);
+ }
+}
+
+void
+ActiveCallForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
+{
+ //set itself as listener
+ __pCallPresentor->SetTelEventListener(this);
+ if (__pActiveCallInfo != null)
+ {
+ delete __pActiveCallInfo;
+ __pActiveCallInfo = null;
+ }
+ if (__pHeldCallInfo != null)
+ {
+ delete __pHeldCallInfo;
+ __pHeldCallInfo = null;
+ }
+ DestroyMoreOptionsMenuList();
+
+ switch (__formType)
+ {
+ case FORMTYPE_OUTGOINGCALL:
+ {
+ String contactNo;
+ contactNo.Append(*(static_cast<String*>(pArgs->GetAt(0))));
+ __pActiveCallInfo = new (std::nothrow) CallInfo();
+ __pActiveCallInfo->SetContactNumber(contactNo);
+ Contact* pContact = __pCallPresentor->GetContactN(contactNo);
+ if (pContact != null)
+ {
+ __pActiveCallInfo->SetContactInfo(*pContact);
+ delete pContact;
+ }
+ ShowPersonDetails(contactNo, IDC_NUMBER1_LABEL, IDC_CALLER1_LABEL, false,__pActiveCallInfo);
+ //make an normal outgoing call
+ __pCallPresentor->DialCall(contactNo, false);
+ }
+ break;
+
+ case FORMTYPE_EMERGENCYOUTGOINGCALL:
+ {
+ String* pContactNo = static_cast<String*>(pArgs->GetAt(0));
+ __pActiveCallInfo = new (std::nothrow) CallInfo();
+ long long phNumber = 0;
+ LongLong::Parse(*pContactNo, phNumber);
+ __pActiveCallInfo->SetContactNumber(*pContactNo);
+ //make an emergency call
+ __pCallPresentor->DialCall(*pContactNo, true);
+ }
+ break;
+
+ case FORMTYPE_ACTIVECALL:
+ {
+ //get contact number
+ CallInfo* pCall = static_cast<CallInfo*>(pArgs->GetAt(0));
+
+ __pActiveCallInfo = new (std::nothrow) CallInfo();
+ *__pActiveCallInfo = *pCall;
+ String activeContactNo;
+ activeContactNo.Append(pCall->GetContactNumber());
+ ShowPersonDetails(activeContactNo, IDC_NUMBER1_LABEL, IDC_CALLER1_LABEL, false,__pActiveCallInfo);
+
+ //show call active time using Timer
+ __activeCallStartTime = pCall->GetCallConnectTime();
+ ShowTimerInfo(IDC_CALLER1_TIME_LABEL, pCall->IsOnHold(), __activeCallStartTime);
+ }
+ break;
+
+ case FORMTYPE_EMERGENCYACTIVECALL:
+ {
+ //get contact number
+ CallInfo* pCall = static_cast<CallInfo*>(pArgs->GetAt(0));
+
+ __pActiveCallInfo = new (std::nothrow) CallInfo();
+ *__pActiveCallInfo = *pCall;
+
+ //show call active time using Timer
+ __activeCallStartTime = pCall->GetCallConnectTime();
+ ShowTimerInfo(IDC_CALLER1_TIME_LABEL, pCall->IsOnHold(), __activeCallStartTime);
+ }
+ break;
+
+ case FORMTYPE_MULTIPLECALLS:
+ {
+ Button* pMoreBtn = static_cast<Button*>(GetControl(IDC_CONF_CALL_MORE_BUTTON));
+ if (pMoreBtn != null)
+ {
+ pMoreBtn->SetShowState(false);
+ }
+ Label* pLblControl = static_cast<Label*>(GetControl(IDC_DIVIDER_LABEL));
+ if (pLblControl)
+ {
+ pLblControl->SetShowState(false);
+ }
+ //show caller's info.
+ for (int index = 0; index < pArgs->GetCount();index++)
+ {
+ //Fetch call info
+ CallInfo* pCallInfo = static_cast<CallInfo*>(pArgs->GetAt(index));
+
+ String contactNo;
+ contactNo.Append(pCallInfo->GetContactNumber());
+
+ if (pCallInfo->IsOnHold() == false)
+ {
+ __pActiveCallInfo = new (std::nothrow) CallInfo();
+ *__pActiveCallInfo = *pCallInfo;
+
+ if (pCallInfo->IsConferenceCall() == false)
+ {
+ Label* pVoiceIconLbl = static_cast<Label*>(GetControl(IDC_VOICE_CALL_ICON_LABEL));
+ if (pVoiceIconLbl)
+ {
+ pVoiceIconLbl->SetShowState(true);
+ }
+ if (pMoreBtn != null)
+ {
+ pMoreBtn->SetShowState(false);
+ }
+ Label* pLblControl = static_cast<Label*>(GetControl(IDC_DIVIDER_LABEL));
+ if (pLblControl)
+ {
+ pLblControl->SetShowState(false);
+ }
+ ShowPersonDetails(contactNo, IDC_NUMBER1_LABEL, IDC_CALLER1_LABEL, false,__pActiveCallInfo);
+ }
+ else
+ {
+ // show display name on name Label
+ Label* pPeopleCountLbl = static_cast<Label*>(GetControl(IDC_NUMBER1_LABEL));
+ if (pPeopleCountLbl)
+ {
+ String count;
+ count.Append(pCallInfo->GetCallerListCount());
+ count.Append(" ");
+ count.Append(AppUtility::GetResourceString(IDS_PEOPLE_STR));
+ pPeopleCountLbl->SetText(count);
+ }
+ String nameStr = AppUtility::GetResourceString(L"IDS_CONFERENCE_CALL_STRING");
+ Label* pNameLbl = static_cast<Label*>(GetControl(IDC_CALLER1_LABEL));
+ if (pNameLbl)
+ {
+ pNameLbl->SetText(nameStr);
+ }
+ Label* pVoiceIconLbl = static_cast<Label*>(GetControl(IDC_VOICE_CALL_ICON_LABEL));
+ if (pVoiceIconLbl)
+ {
+ pVoiceIconLbl->SetShowState(false);
+ }
+ if (pMoreBtn != null)
+ {
+ pMoreBtn->SetShowState(true);
+ }
+ if (pLblControl)
+ {
+ pLblControl->SetShowState(true);
+ }
+ Bitmap* pPhotoBitmap = AppUtility::GetBitmapFromResourcesN(IDB_CONFERENCE_BG_ICON,W_CONFERENCE_PHOTO,H_CONFERENCE_PHOTO);
+ if (pPhotoBitmap != null)
+ {
+ Label* pPhotoLbl = static_cast<Label*>(GetControl(IDC_CALLER1_PHOTO_LABEL));
+ if (pPhotoLbl)
+ {
+ pPhotoLbl->SetBackgroundBitmap(*pPhotoBitmap);
+ pPhotoLbl->Invalidate(true);
+ }
+ delete pPhotoBitmap;
+ }
+ }
+ //show call active time using Timer
+ __activeCallStartTime = pCallInfo->GetCallConnectTime();
+ ShowTimerInfo(IDC_CALLER1_TIME_LABEL,false,__activeCallStartTime);
+ }
+ else
+ {
+ __pHeldCallInfo = new (std::nothrow) CallInfo();
+ *__pHeldCallInfo = *pCallInfo;
+
+ if (pCallInfo->IsConferenceCall() == false)
+ {
+ ShowPersonDetails(contactNo, IDC_NUMBER2_LABEL, IDC_CALLER2_LABEL, true,__pHeldCallInfo);
+ }
+ else
+ {
+ // show display name on name Label
+ Label* pPeopleCountLbl = static_cast<Label*>(GetControl(IDC_NUMBER2_LABEL));
+ if (pPeopleCountLbl)
+ {
+ String count;
+ count.Append(pCallInfo->GetCallerListCount());
+ count.Append(" ");
+ count.Append(AppUtility::GetResourceString(IDS_PEOPLE_STR));
+ pPeopleCountLbl->SetText(count);
+ }
+ String nameStr = AppUtility::GetResourceString(L"IDS_CONFERENCE_CALL_STRING");
+ Label* pNameLbl = static_cast<Label*>(GetControl(IDC_CALLER2_LABEL));
+ if (pNameLbl)
+ {
+ pNameLbl->SetText(nameStr);
+ }
+ Bitmap* pPhotoBitmap = AppUtility::GetBitmapFromResourcesN(IDB_CONFERENCE_BG_ICON,W_CONFERENCE_PHOTO,H_CONFERENCE_PHOTO);
+ if (pPhotoBitmap != null)
+ {
+ Label* pPhotoLbl = static_cast<Label*>(GetControl(IDC_CALLER2_PHOTO_LABEL));
+ if (pPhotoLbl)
+ {
+ pPhotoLbl->SetBackgroundBitmap(*pPhotoBitmap);
+ pPhotoLbl->Invalidate(true);
+ }
+ delete pPhotoBitmap;
+ }
+ }
+ //show "On Hold"
+ ShowTimerInfo(IDC_CALLER2_TIME_LABEL, true);
+ }
+ }
+ }
+ break;
+
+ case FORMTYPE_ACTIVECONFCALL:
+ {
+ //get contact number
+ CallInfo* pConfInfo = static_cast<CallInfo*>(pArgs->GetAt(0));
+ int participantsCount = pConfInfo->GetCallerListCount();
+
+ // show display name on name Label
+ Label* pPeopleCountLbl = static_cast<Label*>(GetControl(IDC_PARTICIPANTS_LABEL));
+ if (pPeopleCountLbl)
+ {
+ String count;
+ count.Append(participantsCount);
+ count.Append(" ");
+ count.Append(AppUtility::GetResourceString(IDS_PEOPLE_STR));
+ pPeopleCountLbl->SetText(count);
+ }
+
+ if(participantsCount >= IDI_MAX_CONF_CALL_PARTICIPANTS)
+ {
+ __pCallButtonsPanel->EnableAddCallButton(false);
+ }
+ else
+ {
+ __pCallButtonsPanel->EnableAddCallButton(true);
+ }
+
+ //show call active time using Timer
+ __activeCallStartTime = pConfInfo->GetCallConnectTime();
+ ShowTimerInfo(IDC_CALLER1_TIME_LABEL, pConfInfo->IsOnHold(),__activeCallStartTime);
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ //Hide DTMFKeypad, if visible and show caller info
+ HideDTMFKeypad();
+ SetShowStateOnKeypad(true);
+ __pCallButtonsPanel->SetKeypadButtonState(IDA_OPEN_NUMKEYPAD);
+
+ //Set the correct speaker status
+ if(__pCallPresentor->IsSpeakerOn() == true)
+ {
+ __pCallButtonsPanel->SetSpeakerButtonState(IDA_SPEAKER_OFF);
+ }
+ else
+ {
+ __pCallButtonsPanel->SetSpeakerButtonState(IDA_SPEAKER);
+ }
+
+ //Set the correct Mute status
+ if (__pCallPresentor->IsCallMuted() == true)
+ {
+ __pCallButtonsPanel->SetMuteButtonState(IDA_UNMUTE);
+ }
+ else
+ {
+ __pCallButtonsPanel->SetMuteButtonState(IDA_MUTE);
+ }
+
+ if (pArgs)
+ {
+ pArgs->RemoveAll();
+ delete pArgs;
+ pArgs = null;
+ }
+}
+
+void
+ActiveCallForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
+{
+ // Add your scene deactivate code here
+ if (__pActiveCallTimer != null)
+ {
+ __pActiveCallTimer->Cancel();
+ delete __pActiveCallTimer;
+ __pActiveCallTimer = null;
+ }
+ if (__pSmallPhotoLabel != null)
+ {
+ __pSmallPhotoLabel->SetShowState(false);
+ }
+ //Hide "Manage conf. Call" Context menu
+ if (__pMoreOptionsListAnchor != null)
+ {
+ __pMoreOptionsListAnchor->SetShowState(false);
+ }
+ if (__pMoreOptionsList != null)
+ {
+ __pMoreOptionsList->SetShowState(false);
+ }
+}
+
+void
+ActiveCallForm::HandleCallSwapN(IList* pCallList)
+{
+ if (pCallList != null)
+ {
+ if (__pActiveCallInfo)
+ {
+ delete __pActiveCallInfo;
+ }
+ if (__pHeldCallInfo)
+ {
+ delete __pHeldCallInfo;
+ }
+ //show caller's info.
+ for (int index = 0; index < pCallList->GetCount();index++)
+ {
+ //Fetch call info
+ CallInfo* pCallInfo = static_cast<CallInfo*>(pCallList->GetAt(index));
+
+ String contactNo;
+ contactNo.Append(pCallInfo->GetContactNumber());
+
+ if (pCallInfo->IsOnHold() == false)
+ {
+ __pActiveCallInfo = new (std::nothrow) CallInfo();
+ *__pActiveCallInfo = *pCallInfo;
+
+ if (pCallInfo->IsConferenceCall() == false)
+ {
+ Label* pVoiceIconLbl = static_cast<Label*>(GetControl(IDC_VOICE_CALL_ICON_LABEL));
+ if (pVoiceIconLbl)
+ {
+ pVoiceIconLbl->SetShowState(true);
+ }
+ Button* pMoreBtn = static_cast<Button*>(GetControl(IDC_CONF_CALL_MORE_BUTTON));
+ if (pMoreBtn != null)
+ {
+ pMoreBtn->SetShowState(false);
+ }
+ Label* pLblControl = static_cast<Label*>(GetControl(IDC_DIVIDER_LABEL));
+ if (pLblControl)
+ {
+ pLblControl->SetShowState(false);
+ }
+ ShowPersonDetails(contactNo, IDC_NUMBER1_LABEL, IDC_CALLER1_LABEL, false,__pActiveCallInfo);
+ }
+ else
+ {
+ Label* pVoiceIconLbl = static_cast<Label*>(GetControl(IDC_VOICE_CALL_ICON_LABEL));
+ if (pVoiceIconLbl)
+ {
+ pVoiceIconLbl->SetShowState(false);
+ }
+ Button* pMoreBtn = static_cast<Button*>(GetControl(IDC_CONF_CALL_MORE_BUTTON));
+ if (pMoreBtn != null)
+ {
+ pMoreBtn->SetShowState(true);
+ }
+ Label* pLblControl = static_cast<Label*>(GetControl(IDC_DIVIDER_LABEL));
+ if (pLblControl)
+ {
+ pLblControl->SetShowState(true);
+ }
+ // show display name on name Label
+ Label* pPeopleCountLbl = static_cast<Label*>(GetControl(IDC_NUMBER1_LABEL));
+ if (pPeopleCountLbl)
+ {
+ String count;
+ count.Append(pCallInfo->GetCallerListCount());
+ count.Append(" ");
+ count.Append(AppUtility::GetResourceString(IDS_PEOPLE_STR));
+ pPeopleCountLbl->SetText(count);
+ }
+ String nameStr = AppUtility::GetResourceString(L"IDS_CONFERENCE_CALL_STRING");
+ Label* pNameLbl = static_cast<Label*>(GetControl(IDC_CALLER1_LABEL));
+ if (pNameLbl)
+ {
+ pNameLbl->SetText(nameStr);
+ }
+ Bitmap* pPhotoBitmap = AppUtility::GetBitmapFromResourcesN(IDB_CONFERENCE_BG_ICON,W_CONFERENCE_PHOTO,H_CONFERENCE_PHOTO);
+ if (pPhotoBitmap != null)
+ {
+ Label* pPhotoLbl = static_cast<Label*>(GetControl(IDC_CALLER1_PHOTO_LABEL));
+ if (pPhotoLbl)
+ {
+ pPhotoLbl->SetBackgroundBitmap(*pPhotoBitmap);
+ }
+ delete pPhotoBitmap;
+ }
+ }
+ //show call active time using Timer
+ __activeCallStartTime = pCallInfo->GetCallConnectTime();
+ ShowTimerInfo(IDC_CALLER1_TIME_LABEL,false,__activeCallStartTime);
+ }
+ else
+ {
+ __pHeldCallInfo = new (std::nothrow) CallInfo();
+ *__pHeldCallInfo = *pCallInfo;
+
+ if (pCallInfo->IsConferenceCall() == false)
+ {
+ ShowPersonDetails(contactNo, IDC_NUMBER2_LABEL, IDC_CALLER2_LABEL, true,__pHeldCallInfo);
+ }
+ else
+ {
+ // show display name on name Label
+ Label* pPeopleCountLbl = static_cast<Label*>(GetControl(IDC_NUMBER2_LABEL));
+ if (pPeopleCountLbl)
+ {
+ String count;
+ count.Append(pCallInfo->GetCallerListCount());
+ count.Append(" ");
+ count.Append(AppUtility::GetResourceString(IDS_PEOPLE_STR));
+ pPeopleCountLbl->SetText(count);
+ }
+ String nameStr = AppUtility::GetResourceString(L"IDS_CONFERENCE_CALL_STRING");
+ Label* pNameLbl = static_cast<Label*>(GetControl(IDC_CALLER2_LABEL));
+ if (pNameLbl)
+ {
+ pNameLbl->SetText(nameStr);
+ }
+ Bitmap* pPhotoBitmap = AppUtility::GetBitmapFromResourcesN(IDB_CONFERENCE_BG_ICON,W_CONFERENCE_PHOTO,H_CONFERENCE_PHOTO);
+ if (pPhotoBitmap != null)
+ {
+ Label* pPhotoLbl = static_cast<Label*>(GetControl(IDC_CALLER2_PHOTO_LABEL));
+ if (pPhotoLbl)
+ {
+ pPhotoLbl->SetBackgroundBitmap(*pPhotoBitmap);
+ }
+ delete pPhotoBitmap;
+ }
+ }
+ //show "On Hold"
+ ShowTimerInfo(IDC_CALLER2_TIME_LABEL, true);
+ }
+ }
+ Invalidate(true);
+ }
+}
+
+void
+ActiveCallForm::ShowPersonDetails(const String& phoneNumber, const String& contactLblName, const String& nameLblName, bool isSecondCaller, CallInfo* pCallInfo)
+{
+ //call individual methods to show contact number, caller name & photo
+ ShowPhoneNumber(phoneNumber, contactLblName);
+
+ //fetch contact details based on phone number
+ String* pDisplayName = pCallInfo->FetchCallerNameN();
+ ShowCallerName(*pDisplayName, nameLblName);
+
+ Bitmap* pPhotoBitmap = pCallInfo->FetchCallerPhotoN();
+ ShowCallerPhoto(pPhotoBitmap, isSecondCaller);
+
+ //free resources
+ if (pDisplayName)
+ {
+ delete pDisplayName;
+ pDisplayName = null;
+ }
+ if (pPhotoBitmap)
+ {
+ delete pPhotoBitmap;
+ pPhotoBitmap = null;
+ }
+}
+
+void
+ActiveCallForm::ShowPhoneNumber(const String& phoneNumber, const String& contactLblName)
+{
+ String formattedNumber = phoneNumber;
+
+ Label* pContactLbl = static_cast<Label*>(GetControl(contactLblName));
+ if (pContactLbl)
+ {
+ pContactLbl->SetText(formattedNumber);
+ pContactLbl->Invalidate(true);
+ }
+}
+
+void
+ActiveCallForm::ShowCallerName(const String& callerName, const String& nameLblName)
+{
+ // show display name on name Label
+ Label* pNameLbl = static_cast<Label*>(GetControl(nameLblName));
+ if (pNameLbl)
+ {
+ //passing an empty string to SetText fails in label,
+ //if previously valid text has been set
+ if (callerName.IsEmpty() == true && pNameLbl->GetText().IsEmpty() == false)
+ {
+ String stringToBeSet(L" ");
+ pNameLbl->SetText(stringToBeSet);
+ }
+ else
+ {
+ pNameLbl->SetText(callerName);
+ }
+ pNameLbl->Invalidate(true);
+ }
+}
+
+void
+ActiveCallForm::ShowCallerPhoto(Bitmap* pPhotoId, bool isSecondCaller)
+{
+ //to check if default image is to be shown
+ bool showDefaultPhoto = false;
+ String photoLabel("");
+
+ switch (__formType)
+ {
+ case FORMTYPE_OUTGOINGCALL:
+ case FORMTYPE_ACTIVECALL:
+ {
+ if (pPhotoId == null)
+ {
+ //show default caller image
+ showDefaultPhoto = true;
+ }
+ photoLabel.Append(IDC_CALLER1_BIGPHOTO_LABEL);
+ }
+ break;
+
+ case FORMTYPE_MULTIPLECALLS:
+ {
+ if (isSecondCaller)
+ {
+ photoLabel.Append(IDC_CALLER2_PHOTO_LABEL);
+ }
+ else
+ {
+ photoLabel.Append(IDC_CALLER1_PHOTO_LABEL);
+ }
+
+ if (pPhotoId == null)
+ {
+ showDefaultPhoto = true;
+ }
+ else
+ {
+ if (pPhotoId->GetHeight() <= H_SMALL_PHOTO
+ || pPhotoId->GetWidth() <= W_SMALL_PHOTO)
+ {
+ pPhotoId->Scale(Dimension(W_CONFERENCE_PHOTO,H_CONFERENCE_PHOTO));
+ }
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ //Remove small photo label
+ if (__pSmallPhotoLabel != null)
+ {
+ RemoveControl(*__pSmallPhotoLabel);
+ __pSmallPhotoLabel = null;
+ }
+
+ //show photo - for Big Photo Id, Animated Call Image
+ if (!showDefaultPhoto)
+ {
+ Label* pPhotoLbl = static_cast<Label*>(GetControl(photoLabel));
+ if (pPhotoLbl)
+ {
+ pPhotoLbl->SetBackgroundBitmap(*pPhotoId);
+ pPhotoLbl->Invalidate(true);
+ }
+ }
+ else
+ {
+ Bitmap* pDefaultPhoto = null;
+ switch (__formType)
+ {
+ case FORMTYPE_OUTGOINGCALL:
+ case FORMTYPE_ACTIVECALL:
+ pDefaultPhoto = AppUtility::GetBitmapFromResourcesN(IDB_ACTIVE_CALL_DEFAULT_ICON,W_CONFERENCE_PHOTO,W_CONFERENCE_PHOTO);
+ break;
+
+ case FORMTYPE_MULTIPLECALLS:
+ pDefaultPhoto = AppUtility::GetBitmapFromResourcesN(IDB_MULTIPLE_CALL_DEFAULT_ICON,W_CONFERENCE_PHOTO,H_CONFERENCE_PHOTO);
+ break;
+
+ case FORMTYPE_ACTIVECONFCALL:
+ pDefaultPhoto = AppUtility::GetBitmapFromResourcesN(IDB_CONFERENCE_BIG_BG_ICON,W_CONFERENCE_PHOTO,W_CONFERENCE_PHOTO);
+ break;
+
+ default:
+ break;
+ }
+ if (pDefaultPhoto != null)
+ {
+ Label* pPhotoLbl = static_cast<Label*>(GetControl(photoLabel));
+ if (pPhotoLbl)
+ {
+ pPhotoLbl->SetBackgroundBitmap(*pDefaultPhoto);
+ }
+ delete pDefaultPhoto;
+ }
+ }
+}
+
+void
+ActiveCallForm::ShowCallersPhotoThumbnail(const Bitmap& pPhotoId)
+{
+ if (__pSmallPhotoLabel != null)
+ {
+ RemoveControl(*__pSmallPhotoLabel);
+ __pSmallPhotoLabel = null;
+ }
+ //Draw Small Photo and show on small photo label
+ __pSmallPhotoLabel = new (std::nothrow) Label();//static_cast<Label*>(GetControl(IDC_SMALL_PHOTO_LABEL));
+ __pSmallPhotoLabel->Construct(Rectangle(X_PHOTO_LBL, Y_PHOTO_LBL, W_PHOTO_LBL, H_PHOTO_LBL), L"");
+ __pSmallPhotoLabel->SetBackgroundColor(Color(0,0,0));
+ __pSmallPhotoLabel->SetBackgroundBitmap(pPhotoId);
+ // Add a Label to the Form
+ AddControl(*__pSmallPhotoLabel);
+ __pSmallPhotoLabel->Invalidate(true);
+}
+
+void
+ActiveCallForm::ShowTimerInfo(const String& timerLblName, bool isOnHold, long long startTime)
+{
+ Label* pTimerLbl = static_cast<Label*>(GetControl(timerLblName));
+
+ if (__pActiveCallTimer == null)
+ {
+ __pActiveCallTimer = new (std::nothrow) Tizen::Base::Runtime::Timer();
+ __pActiveCallTimer->Construct(*this);
+ }
+
+ if (pTimerLbl != null)
+ {
+ if (isOnHold == true)
+ {
+ pTimerLbl->SetText(L"On hold");
+ //update Hold button status
+ SetHoldButtonStatus(false);
+ }
+ else
+ {
+ //update Hold button status
+ SetHoldButtonStatus(true);
+ //current system time
+ long long currTime = 0;
+ SystemTime::GetTicks(currTime);
+ //Set call duration
+ TimeSpan diffSpan(abs(startTime - currTime));
+
+ String activeCallTime(L"");
+
+ long long hr = diffSpan.GetHours();
+ if (hr <= 9)
+ {
+ activeCallTime.Append("0");
+ }
+ activeCallTime.Append(hr);
+ activeCallTime.Append(L":");
+
+ long long min = diffSpan.GetMinutes();
+ if (min <= 9)
+ {
+ activeCallTime.Append("0");
+ }
+ activeCallTime.Append(min);
+ activeCallTime.Append(L":");
+
+ long long sec = diffSpan.GetSeconds();
+ if (sec <= 9)
+ {
+ activeCallTime.Append("0");
+ }
+ activeCallTime.Append(sec);
+
+ pTimerLbl->SetText(activeCallTime);
+ __pActiveCallTimer->StartAsRepeatable(TimeSpan::NUM_OF_TICKS_IN_SECOND);
+ }
+ pTimerLbl->Invalidate(true);
+ }
+}
+
+void
+ActiveCallForm::SetShowStateOnKeypad(bool showState)
+{
+ Label* pLblControl = static_cast<Label*>(GetControl(IDC_LINE_LABEL));
+ pLblControl->SetShowState(showState);
+ pLblControl = static_cast<Label*>(GetControl(IDC_CALLER1_LABEL));
+ pLblControl->SetShowState(showState);
+ pLblControl = static_cast<Label*>(GetControl(IDC_BACKGROUND_LABEL));
+ pLblControl->SetShowState(showState);
+ pLblControl = static_cast<Label*>(GetControl(IDC_CALLER1_TIME_LABEL));
+ pLblControl->SetShowState(showState);
+ if (__pSmallPhotoLabel != null)
+ {
+ __pSmallPhotoLabel->SetShowState(showState);
+ }
+
+ switch (__formType)
+ {
+ case FORMTYPE_ACTIVECALL:
+ {
+ pLblControl = static_cast<Label*>(GetControl(IDC_NUMBER1_LABEL));
+ pLblControl->SetShowState(showState);
+ pLblControl = static_cast<Label*>(GetControl(IDC_VOICE_CALL_ICON_LABEL));
+ pLblControl->SetShowState(showState);
+ pLblControl = static_cast<Label*>(GetControl(IDC_HOLD_LABEL));
+ pLblControl->SetShowState(showState);
+ Button* pButtonControl = static_cast<Button*>(GetControl(IDC_HOLD_BUTTON));
+ pButtonControl->SetShowState(showState);
+ }
+ break;
+
+ case FORMTYPE_MULTIPLECALLS:
+ {
+ pLblControl = static_cast<Label*>(GetControl(IDC_NUMBER1_LABEL));
+ pLblControl->SetShowState(showState);
+ pLblControl = static_cast<Label*>(GetControl(IDC_CALLER2_LABEL));
+ pLblControl->SetShowState(showState);
+ pLblControl = static_cast<Label*>(GetControl(IDC_NUMBER2_LABEL));
+ pLblControl->SetShowState(showState);
+ pLblControl = static_cast<Label*>(GetControl(IDC_CALLER2_TIME_LABEL));
+ pLblControl->SetShowState(showState);
+ pLblControl = static_cast<Label*>(GetControl(IDC_SWAP_LABEL));
+ pLblControl->SetShowState(showState);
+ pLblControl = static_cast<Label*>(GetControl(IDC_BACKGROUND_LABEL2));
+ pLblControl->SetShowState(showState);
+ if (__pActiveCallInfo != null && __pActiveCallInfo->IsConferenceCall() == false)
+ {
+ pLblControl = static_cast<Label*>(GetControl(IDC_VOICE_CALL_ICON_LABEL));
+ pLblControl->SetShowState(showState);
+ }
+ else
+ {
+ Button* pButtonControl = static_cast<Button*>(GetControl(IDC_CONF_CALL_MORE_BUTTON));
+ pButtonControl->SetShowState(showState);
+ pLblControl = static_cast<Label*>(GetControl(IDC_DIVIDER_LABEL));
+ pLblControl->SetShowState(showState);
+ }
+ Button* pButtonControl = static_cast<Button*>(GetControl(IDC_SWAP_BUTTON));
+ pButtonControl->SetShowState(showState);
+ }
+ break;
+
+ case FORMTYPE_ACTIVECONFCALL:
+ {
+ pLblControl = static_cast<Label*>(GetControl(IDC_PARTICIPANTS_LABEL));
+ pLblControl->SetShowState(showState);
+ pLblControl = static_cast<Label*>(GetControl(IDC_HOLD_LABEL));
+ pLblControl->SetShowState(showState);
+ pLblControl = static_cast<Label*>(GetControl(IDC_DIVIDER_LABEL));
+ pLblControl->SetShowState(showState);
+ Button* pButtonControl = static_cast<Button*>(GetControl(IDC_HOLD_BUTTON));
+ pButtonControl->SetShowState(showState);
+ pButtonControl = static_cast<Button*>(GetControl(IDC_CONF_CALL_MORE_BUTTON));
+ pButtonControl->SetShowState(showState);
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+void
+ActiveCallForm::OnTimerExpired(Tizen::Base::Runtime::Timer& timer)
+{
+ //Call default implementation of "Object.Equals()"
+ //returns true, if they are pointing to same address.
+ if (__pActiveCallTimer->Equals(timer))
+ {
+ Label* pTimerLbl = static_cast<Label*>(GetControl(IDC_CALLER1_TIME_LABEL));
+ if (pTimerLbl)
+ {
+ String activeCallTime = pTimerLbl->GetText();
+ // Create a StringTokenizer instance
+ StringTokenizer strTokens(activeCallTime, L":");
+
+ int count = strTokens.GetTokenCount(); // count == 3
+ String token;
+ int sec = 0;
+ int min = 0;
+ int hr = 0;
+ for (int index = 0; index < count; index++)
+ {
+ switch (index)
+ {
+ case 0:
+ strTokens.GetNextToken(token);
+ Integer::Parse(token, hr);
+ break;
+
+ case 1:
+ strTokens.GetNextToken(token);
+ Integer::Parse(token, min);
+ break;
+
+ case 2:
+ strTokens.GetNextToken(token);
+ Integer::Parse(token, sec);
+ break;
+ }
+ }
+ //update all values
+ sec = sec + 1;
+ if (sec == IDI_MAX_SECONDS)
+ {
+ sec = 0;
+ min = min + 1;
+ }
+ if (min == IDI_MAX_MINS)
+ {
+ min = 0;
+ hr = hr + 1;
+ }
+
+ //replace string
+ activeCallTime.Clear();
+ if (hr <= 9)
+ {
+ activeCallTime.Append("0");
+ }
+ activeCallTime.Append(hr);
+ activeCallTime.Append(":");
+ if (min <= 9)
+ {
+ activeCallTime.Append("0");
+ }
+ activeCallTime.Append(min);
+ activeCallTime.Append(":");
+ if (sec <= 9)
+ {
+ activeCallTime.Append("0");
+ }
+ activeCallTime.Append(sec);
+ //update timer label
+ pTimerLbl->SetText(activeCallTime);
+ pTimerLbl->Invalidate(true);
+ }
+ }
+}
+
+///////////////////////////////////////////////////////////
+/////////// Options Menu List Functionality /////////
+///////////////////////////////////////////////////////////
+void
+ActiveCallForm::OnListViewContextItemStateChanged(ListView& listView, int index, int elementId, ListContextItemStatus state)
+{
+}
+
+void
+ActiveCallForm::OnListViewItemStateChanged(ListView& listView, int index, int elementId, ListItemStatus status)
+{
+ //Goto conference call list form
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALLLIST), null);
+}
+
+void
+ActiveCallForm::OnListViewItemSwept(ListView& listView, int index, SweepDirection direction)
+{
+}
+
+void
+ActiveCallForm::OnListViewItemLongPressed(ListView& listView, int index, int elementId, bool& invokeListViewItemCallback)
+{
+}
+
+int
+ActiveCallForm::GetItemCount(void)
+{
+ return IDI_MOREOPTIONS_LIST_ITEMS;
+}
+
+ListItemBase*
+ActiveCallForm::CreateItem(int index, int itemWidth)
+{
+ //create 1st Menu option
+ CustomItem* pItem = new (std::nothrow) CustomItem();
+ pItem->Construct(IDI_OPTIONMENU_DIMEN, LIST_ANNEX_STYLE_NORMAL);
+
+ //Set background 9-patch bitmap to option menu
+ Bitmap* pBgBmp = AppUtility::GetBitmapFromResourcesN(IDB_POPUP_BG_ICON);
+ if (pBgBmp != null && pBgBmp->IsNinePatchedBitmap())
+ {
+ Canvas bgCanvas;
+ bgCanvas.Construct(Rectangle(IDI_OPTIONMENU_POS, IDI_OPTIONMENU_DIMEN));
+ bgCanvas.DrawNinePatchedBitmap(bgCanvas.GetBounds(), *pBgBmp);
+ }
+ else
+ {
+ pItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_NORMAL, Color(40, 45, 48));
+ }
+ delete pBgBmp;
+ pBgBmp = null;
+
+ //Set bitmap to option menu
+ Bitmap* pNormalConfCallBmp = AppUtility::GetBitmapFromResourcesN(IDB_MORE_MANAGE_CONFERENCE_ICON ,
+ W_MGR_CONFCALL_BITMAP, H_MGR_CONFCALL_BITMAP);
+ pItem->AddElement(Rectangle(16, 17, W_MGR_CONFCALL_BITMAP, H_MGR_CONFCALL_BITMAP), 1, *pNormalConfCallBmp, null, null);
+ // Deallocate bitmaps
+ delete pNormalConfCallBmp;
+ pNormalConfCallBmp = null;
+
+ //Set text to menu option
+ String confCallName = AppUtility::GetResourceString(IDS_MGR_CONF_CALL_LIST_STR);
+
+ TextElement* pTextElement = new (std::nothrow) TextElement();
+ pTextElement->Construct(confCallName);
+ pTextElement->SetTextColor(COLOR_POPUP_TEXT);
+ //create font
+ Font font;
+ font.Construct(FONT_STYLE_PLAIN, IDI_POPUP_TEXT_SIZE);
+ pTextElement->SetFont(font);
+ //construct Enriched text
+ EnrichedText* pEnrichedText = new (std::nothrow) EnrichedText();
+ Dimension textDimension;
+ font.GetTextExtent(confCallName, confCallName.GetLength(), textDimension);
+ textDimension.height = textDimension.height + font.GetDescender();
+ pEnrichedText->Construct(textDimension);
+ //add text element to enriched text
+ pEnrichedText->Add(*pTextElement);
+
+ //Add Enriched text to pItem
+ Point textPos(((2 * IDI_OPTIONMENU_ITEM_SPACING) + W_MGR_CONFCALL_BITMAP), ((IDI_OPTIONMENU_DIMEN.height - textDimension.height) / 2));
+ pItem->AddElement(Rectangle(textPos, textDimension), 2, *pEnrichedText);
+ // Cleans up
+ pEnrichedText->RemoveAll(true);
+ delete pEnrichedText;
+ return pItem;
+}
+
+bool
+ActiveCallForm::DeleteItem(int index, ListItemBase* pItem, int itemWidth)
+{
+ delete pItem;
+ return true;
+}
--- /dev/null
+//
+// 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 PhnAppUtility.cpp
+ * @brief Utility Class for Phone Application
+ */
+#include <FApp.h>
+#include "PhnAppUtility.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Graphics;
+
+AppUtility::AppUtility(void)
+{
+}
+
+AppUtility::~AppUtility(void)
+{
+}
+
+String
+AppUtility::GetResourceString(const String& stringId)
+{
+ String resourceString(L"");
+ AppResource* pAppResource = AppResource::GetInstance();
+ if (pAppResource)
+ {
+ pAppResource->GetString(stringId, resourceString);
+ }
+
+ return resourceString;
+}
+
+Bitmap*
+AppUtility::GetBitmapFromResourcesN(const String& imagePath, int imgWidth, int imgHeight)
+{
+ Bitmap* pBitmap = null;
+ AppResource* pAppResource = AppResource::GetInstance();
+ if (pAppResource)
+ {
+ pBitmap = pAppResource->GetBitmapN(imagePath);
+ if (pBitmap && imgWidth > 0 && imgHeight > 0)
+ {
+ //scale bitmap to predefined size
+ pBitmap->SetScalingQuality(BITMAP_SCALING_QUALITY_MID);
+ pBitmap->Scale(Dimension(imgWidth, imgHeight));
+ }
+ }
+ return pBitmap;
+}
--- /dev/null
+//
+// 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 PhnBaseForm.cpp
+ * @brief Base class for all Call forms
+ */
+#include "PhnActiveCallForm.h"
+#include "PhnBaseForm.h"
+#include "PhnCallInfo.h"
+#include "PhnCallPresentationModel.h"
+#include "PhnConfCallerListForm.h"
+#include "PhnPhoneFormFactory.h"
+#include "PhnSceneRegister.h"
+#include "PhnPhoneApp.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Ui;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Ui::Controls;
+
+BaseForm::BaseForm(FormType formType)
+ : __formType(formType)
+{
+ __pCallPresentor = null;
+ __pErrorMsgPopup = null;
+}
+
+BaseForm::~BaseForm(void)
+{
+}
+
+result
+BaseForm::OnInitializing(void)
+{
+ AddOrientationEventListener(*this);
+ //To be implemented in sub classes
+ return E_SUCCESS;
+}
+
+void
+BaseForm::OnActionPerformed(const Control& source, int actionId)
+{
+}
+
+/////////////////////////////////////////////////////////////////
+///// Event Listener methods from ITelephonyEventListener /////
+/////////////////////////////////////////////////////////////////
+
+void
+BaseForm::HandleCallConnected(IListT<CallInfo>& pCallList)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ switch (__formType)
+ {
+ case FORMTYPE_OUTGOINGCALL:
+ case FORMTYPE_INCOMINGCALL:
+ case FORMTYPE_CONFCALLLIST:
+ case FORMTYPE_ACTIVECALL:
+ case FORMTYPE_ACTIVECONFCALL:
+ {
+ int noOfCalls = pCallList.GetCount();
+ //Ownership - To be deleted in 'OnSceneActivatedN' of next form
+ ArrayList* pCallInfoList = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pCallInfoList->Construct(noOfCalls);
+
+ for (int index = 0; index < noOfCalls; index++)
+ {
+ //fetch call info and add to list
+ CallInfo callInfo;
+ result r = pCallList.GetAt(index, callInfo);
+ if (r == E_SUCCESS)
+ {
+ //copy call information to new instance
+ CallInfo* pCaller = new (std::nothrow) CallInfo();
+ *pCaller = callInfo;
+ pCallInfoList->Add(pCaller);
+ }
+ }
+
+ if (noOfCalls == 1)
+ {
+ //Check if active call is conference call
+ CallInfo* pActiveCallInfo = static_cast<CallInfo*>(pCallInfoList->GetAt(0));
+ if(pActiveCallInfo->IsConferenceCall() == true)
+ {
+ //single Conference call - goto active Conf. call form
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALL), pCallInfoList);
+ }
+ else
+ {
+ //single active call - goto active call form
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_ACTIVECALL), pCallInfoList);
+ }
+ }
+ else if(noOfCalls == 2)
+ {
+ //goto multiple active call form
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MULTIPLEACTIVECALL), pCallInfoList);
+ }
+ }
+ break;
+
+ case FORMTYPE_EMERGENCYOUTGOINGCALL:
+ {
+ //Ownership - To be deleted in 'OnSceneActivatedN' of next form
+ ArrayList* pCallInfoList = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pCallInfoList->Construct(1);
+
+ //fetch call info and add to list
+ CallInfo callInfo;
+ result r = pCallList.GetAt(0, callInfo);
+ if (r == E_SUCCESS)
+ {
+ //copy call information to new instance
+ CallInfo* pCaller = new (std::nothrow) CallInfo();
+ *pCaller = callInfo;
+ pCallInfoList->Add(pCaller);
+ //single active call - goto active call form
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_ACTIVE_EMERGENCYCALL), pCallInfoList);
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+void
+BaseForm::HandleCallDisconnected(bool isLastCall, IListT<CallInfo>& pCallList)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ PhoneApp* pPhoneApp = static_cast<PhoneApp*>(UiApp::GetInstance());
+
+ int callCount = pCallList.GetCount();
+ if (callCount > 0)
+ {
+ //Ownership - To be deleted in 'OnSceneActivatedN' of next form
+ ArrayList* pCallInfoList = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pCallInfoList->Construct(callCount);
+ for (int index = 0; index < callCount; index++)
+ {
+ //fetch call info and add to list
+ CallInfo callInfo;
+ result r = pCallList.GetAt(index, callInfo);
+ if (r == E_SUCCESS)
+ {
+ //copy call information to new instance
+ CallInfo* pCaller = new (std::nothrow) CallInfo();
+ *pCaller = callInfo;
+ pCallInfoList->Add(pCaller);
+ }
+ }
+ if (callCount == 1)
+ {
+ //fetch call info and add to list
+ CallInfo callInfo;
+ result r = pCallList.GetAt(0, callInfo);
+ if (r == E_SUCCESS)
+ {
+ //copy call information to new instance
+ CallInfo* pCaller = new (std::nothrow) CallInfo();
+ *pCaller = callInfo;
+ pCallInfoList->Add(pCaller);
+ }
+
+ if (isLastCall == true)
+ {
+ //goto End Call form if single call. else go to dialer
+ SceneId nextSceneId = pPhoneApp->GetInitialScene();
+ if (callInfo.IsConferenceCall() == false)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_ENDCALL), pCallInfoList);
+ }
+ else if (nextSceneId == IDSCN_DIALER || nextSceneId == IDSCN_CALL_LOG)
+ {
+ pSceneManager->GoForward( ForwardSceneTransition(nextSceneId, SCENE_TRANSITION_ANIMATION_TYPE_NONE,
+ SCENE_HISTORY_OPTION_NO_HISTORY));
+ pCallInfoList->RemoveAll();
+ delete pCallInfoList;
+ pCallInfoList = null;
+ }
+ else
+ {
+ pPhoneApp->Terminate();
+ }
+ }
+ else
+ {
+ if (pCallList.GetCount() == 1)
+ {
+ if (callInfo.IsConferenceCall() == true)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALL), pCallInfoList);
+ }
+ else
+ {
+ //goto Single Active Call form
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_ACTIVECALL), pCallInfoList);
+ }
+ }
+ }
+ }
+ else
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MULTIPLEACTIVECALL), pCallInfoList);
+ }
+ }
+ else
+ {
+ SceneId nextSceneId = pPhoneApp->GetInitialScene();
+ //No more calls are active
+ if (nextSceneId == IDSCN_DIALER || nextSceneId == IDSCN_CALL_LOG)
+ {
+ pSceneManager->GoForward( ForwardSceneTransition(nextSceneId, SCENE_TRANSITION_ANIMATION_TYPE_NONE,
+ SCENE_HISTORY_OPTION_NO_HISTORY));
+ }
+ else
+ {
+ pPhoneApp->Terminate();
+ }
+ }
+}
+
+
+void
+BaseForm::HandleConferenceCall(CallInfo& pCallInfo)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ //Ownership - To be deleted in 'OnSceneActivatedN' of next form
+ ArrayList* pCallInfoList = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pCallInfoList->Construct(1);
+
+ //update list to be passed
+ CallInfo* pConfInfo = new (std::nothrow) CallInfo();
+ *pConfInfo = pCallInfo;
+ pCallInfoList->Add(pConfInfo);
+
+ //Todo: create screens for single conf call and conf call with another held call
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALL), pCallInfoList);
+}
+
+void
+BaseForm::HandleIncomingCall(CallInfo& pCallInfo)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ //Ownership - To be deleted in 'OnSceneActivatedN' of next form
+ ArrayList* pCallInfoList = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pCallInfoList->Construct(1);
+
+ //update list to be passed
+ CallInfo* pIncomingCall = new (std::nothrow) CallInfo();
+ *pIncomingCall = pCallInfo;
+ pCallInfoList->Add(pIncomingCall);
+
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_INCOMINGCALL), pCallInfoList);
+}
+
+void
+BaseForm::HandleCallSwapOccured(IListT<CallInfo>& pCallList)
+{
+ int noOfCalls = pCallList.GetCount();
+ ArrayList* pCallInfoList = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pCallInfoList->Construct(noOfCalls);
+
+ for (int index = 0; index < noOfCalls; index++)
+ {
+ //fetch call info and add to list
+ CallInfo callInfo;
+ result r = pCallList.GetAt(index, callInfo);
+ if (r == E_SUCCESS)
+ {
+ //copy call information to new instance
+ CallInfo* pCallInfo = new (std::nothrow) CallInfo();
+ *pCallInfo = callInfo;
+ pCallInfoList->Add(pCallInfo);
+ }
+ }
+
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ if (pSceneManager != null)
+ {
+ Scene* pActiveScene = pSceneManager->GetCurrentScene();
+ if (pActiveScene != null)
+ {
+ String formString = pActiveScene->GetFormId();
+ if (formString == IDL_FORM_MULTIPLEACTIVECALL)
+ {
+ ActiveCallForm* pActiveForm = (ActiveCallForm*) pActiveScene->GetForm();
+ pActiveForm->HandleCallSwapN(pCallInfoList);
+ }
+ }
+ }
+}
+
+void
+BaseForm::HandleConferenceChange(void)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ if (pSceneManager != null)
+ {
+ Scene* pActiveScene = pSceneManager->GetCurrentScene();
+ if (pActiveScene != null)
+ {
+ String formString = pActiveScene->GetFormId();
+ if (formString == IDL_FORM_CONFCALLLIST)
+ {
+ ConfCallerListForm* pConfListForm = (ConfCallerListForm*) pActiveScene->GetForm();
+ pConfListForm->HandleCallChange();
+ }
+ }
+ }
+}
+
+void
+BaseForm::HandleTelephonyError(int errorCode)
+{
+ //show error msg Popup
+ if (__pErrorMsgPopup == null)
+ {
+ __pErrorMsgPopup = new (std::nothrow) ErrorMsgPopup(this);
+ }
+ __pErrorMsgPopup->ShowErrorMsgPopupN(errorCode);
+}
+
+void
+BaseForm::HandlePopupClosed(void)
+{
+ Draw();
+ delete __pErrorMsgPopup;
+ __pErrorMsgPopup = null;
+
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ switch(__formType)
+ {
+ case FORMTYPE_OUTGOINGCALL:
+ {
+ //fetch no of calls from telephony
+ CallPresentationModel* pPresentor = CallPresentationModel::GetInstance();
+ if(pPresentor != null)
+ {
+ //check if any call is present
+ if(pPresentor->GetCurrentCallCount() > 0)
+ {
+ //fetch current call list
+ IListT<CallInfo>* pCurrentCallList = pPresentor->GetCallListN();
+ HandleCallDisconnected(false,*pCurrentCallList);
+ delete pCurrentCallList;
+ pCurrentCallList = null;
+ }
+ else
+ {
+ //No more calls are active
+ PhoneApp* pPhoneApp = static_cast<PhoneApp*>(UiApp::GetInstance());
+ SceneId nextSceneId = pPhoneApp->GetInitialScene();
+ if (nextSceneId == IDSCN_DIALER || nextSceneId == IDSCN_CALL_LOG)
+ {
+ pSceneManager->GoForward( ForwardSceneTransition(nextSceneId, SCENE_TRANSITION_ANIMATION_TYPE_NONE,
+ SCENE_HISTORY_OPTION_NO_HISTORY));
+ }
+ else
+ {
+ PhoneApp* pPhoneApp = static_cast<PhoneApp*>(UiApp::GetInstance());
+ pPhoneApp->Terminate();
+ }
+ }
+ }
+ }
+ break;
+
+ case FORMTYPE_ENDCALL:
+ {
+ //It comes here, only when we make voice call for Last call from EndCallForm
+ //and some TAPI error is encountered.
+ PhoneApp* pPhoneApp = static_cast<PhoneApp*>(UiApp::GetInstance());
+ pPhoneApp->Terminate();
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+void
+BaseForm::OnOrientationChanged(const Control& source, OrientationStatus orientationStatus)
+{
+ SetOrientation(ORIENTATION_PORTRAIT);
+}
+
--- /dev/null
+//
+// 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 PhnCallButtonsPanel.cpp
+ * @brief Base class for all Call forms
+ */
+#include "PhnCallButtonsPanel.h"
+#include "PhnAppUtility.h"
+#include "PhnTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Graphics;
+
+//Constants - Scene name
+const wchar_t* IDC_ADDJOINCALL_BUTTON = L"IDC_ADDJOINCALL_BUTTON";
+const wchar_t* IDC_KEYPAD_BUTTON = L"IDC_KEYPAD_BUTTON";
+const wchar_t* IDC_MUTE_BUTTON = L"IDC_MUTE_BUTTON";
+const wchar_t* IDC_CONTACT_BUTTON = L"IDC_CONTACT_BUTTON";
+const wchar_t* IDC_SPEAKER_BUTTON = L"IDC_SPEAKER_BUTTON";
+const wchar_t* IDC_VOICECALL_BUTTON = L"IDC_VOICECALL_BUTTON";
+const wchar_t* IDC_VIDEOCALL_BUTTON = L"IDC_VIDEOCALL_BUTTON";
+const wchar_t* IDC_MSG_BUTTON = L"IDC_MSG_BUTTON";
+const wchar_t* IDC_ENDCALL_BUTTON = L"IDC_ENDCALL_BUTTON";
+
+//Button Dimensions
+const int W_BG_BITMAP = 80;
+const int H_BG_BITMAP = 80;
+const int Y_BG_BITMAP_POS = 56;
+const int IDI_TEXT_SIZE = 38;
+const int IDI_VERTICAL_SPACE = 6;
+
+CallButtonsPanel::CallButtonsPanel(void)
+{
+}
+
+CallButtonsPanel::~CallButtonsPanel(void)
+{
+ //Empty Implementation
+}
+
+bool
+CallButtonsPanel::ConstructPanel(IActionEventListener* pEventListener, FormType parentFormType)
+{
+ if (pEventListener == null)
+ {
+ return false;
+ }
+
+ result r = E_SUCCESS;
+
+ //set action listener & save form state
+ __pActionListener = pEventListener;
+ __parentFormType = parentFormType;
+
+ switch (__parentFormType)
+ {
+ case FORMTYPE_ENDCALL:
+ r = Construct(IDL_END_CALL_PANEL);
+ break;
+
+ default:
+ r = Construct(IDL_CALL_PANEL);
+ break;
+ }
+
+ TryCatch(r == E_SUCCESS, , "CallButtonsPanel::Initialize() resource not found");
+
+ return true;
+CATCH:
+ return false;
+}
+
+result
+CallButtonsPanel::OnInitializing(void)
+{
+ result r = E_FAILURE;
+
+ RelativeLayout* pRelativeLayout = dynamic_cast<RelativeLayout*>(GetParent()->GetLandscapeLayoutN());
+ if (pRelativeLayout != null)
+ {
+ pRelativeLayout->SetHorizontalFitPolicy(*this, FIT_POLICY_PARENT);
+ pRelativeLayout->SetRelation(*this, *GetParent(), RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM);
+ delete pRelativeLayout;
+ }
+
+ pRelativeLayout = dynamic_cast<RelativeLayout*>(GetParent()->GetPortraitLayoutN());
+ if (pRelativeLayout != null)
+ {
+ pRelativeLayout->SetHorizontalFitPolicy(*this, FIT_POLICY_PARENT);
+ pRelativeLayout->SetRelation(*this, *GetParent(), RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM);
+ delete pRelativeLayout;
+ }
+
+ //Set background bitmap
+ r = AddBackgroundBitmap();
+ if (IsFailed(r))
+ {
+ return r;
+ }
+ //set buttons as child controls
+ switch (__parentFormType)
+ {
+ case FORMTYPE_ENDCALL:
+ r = ConstructEndCallPanel();
+ break;
+
+ default:
+ r = ConstructActiveCallPanel();
+ break;
+ }
+
+ if (IsFailed(r))
+ {
+ return r;
+ }
+ SetButtonPosition();
+ Draw();
+ Show();
+ return r;
+}
+
+result
+CallButtonsPanel::OnTerminating(void)
+{
+ //remove all child controls...
+ RemoveAllControls();
+ return E_SUCCESS;
+}
+
+void
+CallButtonsPanel::SetSpeakerButtonState(CommandIds cmdId)
+{
+ //Speaker
+ String speakerButtonId(IDC_SPEAKER_BUTTON);
+ Button* pButton = static_cast<Button*>(GetControl(speakerButtonId));
+ //Check if Button exist and needs to change state.
+ if(pButton == null || pButton->GetActionId() == cmdId)
+ {
+ return;
+ }
+
+ String btnName = AppUtility::GetResourceString(IDS_SPEAKER_BTN_NAME);
+ AddKeyPadActionListener(speakerButtonId, cmdId);
+ switch (cmdId)
+ {
+ case IDA_SPEAKER:
+ {
+ SetBitmapsToButton(speakerButtonId, btnName, IDB_SPEAKER_OFF_ICON, BTN_NORMAL);
+ SetBitmapsToButton(speakerButtonId, btnName, IDB_SPEAKER_OFF_PRESS_ICON, BTN_PRESS);
+ SetBitmapsToButton(speakerButtonId, btnName, IDB_SPEAKER_OFF_DIM_ICON, BTN_DIM);
+ }
+ break;
+
+ case IDA_SPEAKER_OFF:
+ {
+ SetBitmapsToButton(speakerButtonId, btnName, IDB_SPEAKER_ON_ICON, BTN_NORMAL);
+ SetBitmapsToButton(speakerButtonId, btnName, IDB_SPEAKER_ON_PRESS_ICON, BTN_PRESS);
+ SetBitmapsToButton(speakerButtonId, btnName, IDB_SPEAKER_ON_DIM_ICON, BTN_DIM);
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+void
+CallButtonsPanel::SetMuteButtonState(CommandIds cmdId)
+{
+ String muteButtonId(IDC_MUTE_BUTTON);
+ Button* pButton = static_cast<Button*>(GetControl(muteButtonId));
+ //Check if Button exist and needs to change state.
+ if(pButton == null || pButton->GetActionId() == cmdId)
+ {
+ return;
+ }
+
+ String btnName = AppUtility::GetResourceString(IDS_MUTE_BTN_NAME);
+ AddKeyPadActionListener(muteButtonId, cmdId);
+ switch(cmdId)
+ {
+ case IDA_UNMUTE:
+ {
+ SetBitmapsToButton(muteButtonId, btnName, IDB_MUTE_ON_ICON, BTN_NORMAL);
+ SetBitmapsToButton(muteButtonId, btnName, IDB_MUTE_ON_PRESS_ICON, BTN_PRESS);
+ SetBitmapsToButton(muteButtonId, btnName, IDB_MUTE_ON_DIM_ICON, BTN_DIM);
+ }
+ break;
+
+ case IDA_MUTE:
+ {
+ SetBitmapsToButton(muteButtonId, btnName, IDB_MUTE_OFF_ICON, BTN_NORMAL);
+ SetBitmapsToButton(muteButtonId, btnName, IDB_MUTE_OFF_PRESS_ICON, BTN_PRESS);
+ SetBitmapsToButton(muteButtonId, btnName, IDB_MUTE_OFF_DIM_ICON, BTN_DIM);
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+void
+CallButtonsPanel::SetKeypadButtonState(CommandIds cmdId)
+{
+ String keypadButtonId(IDC_KEYPAD_BUTTON);
+ Button* pButton = static_cast<Button*>(GetControl(keypadButtonId));
+ //Check if Button exist and needs to change state.
+ if(pButton == null || pButton->GetActionId() == cmdId)
+ {
+ return;
+ }
+
+ String btnName = AppUtility::GetResourceString(IDS_KEYPAD_BTN_NAME);
+ AddKeyPadActionListener(keypadButtonId, cmdId);
+ switch (cmdId)
+ {
+ case IDA_CLOSE_NUMKEYPAD:
+ {
+ SetBitmapsToButton(keypadButtonId, btnName, IDB_HIDE_KEYPAD_ICON, BTN_NORMAL);
+ SetBitmapsToButton(keypadButtonId, btnName, IDB_HIDE_KEYPAD_PRESS_ICON, BTN_PRESS);
+ SetBitmapsToButton(keypadButtonId, btnName, IDB_HIDE_KEYPAD_DIM_ICON, BTN_DIM);
+ }
+ break;
+
+ case IDA_OPEN_NUMKEYPAD:
+ {
+ SetBitmapsToButton(keypadButtonId, btnName, IDB_CLOSE_KEYPAD_ICON, BTN_NORMAL);
+ SetBitmapsToButton(keypadButtonId, btnName, IDB_CLOSE_KEYPAD_PRESS_ICON, BTN_PRESS);
+ SetBitmapsToButton(keypadButtonId, btnName, IDB_CLOSE_KEYPAD_DIM_ICON, BTN_DIM);
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+result
+CallButtonsPanel::AddBackgroundBitmap(void)
+{
+ result r = E_FAILURE;
+
+ Rectangle panelRect = GetBounds();
+ //Set BackGround bitmap
+ Bitmap* pBgBitmap = null;
+ AppResource* pAppResource = AppResource::GetInstance();
+ if (pAppResource)
+ {
+ pBgBitmap = pAppResource->GetBitmapN(IDB_BACKGROUND_BITMAP);
+ if (pBgBitmap)
+ {
+ Label* pBackgroundLabel = new (std::nothrow) Label();
+ pBackgroundLabel->Construct(Rectangle(0, 1, panelRect.width, panelRect.height), L"");
+ pBackgroundLabel->SetBackgroundBitmap(*pBgBitmap);
+ r = AddControl(*pBackgroundLabel);
+
+ //always display in background
+ SetControlAlwaysAtBottom(*pBackgroundLabel, true);
+
+ delete pBgBitmap;
+ pBgBitmap = null;
+ }
+ }
+ return r;
+}
+
+result
+CallButtonsPanel::ConstructEndCallPanel(void)
+{
+ result r = E_SUCCESS;
+ Rectangle relativeCtrlRect = GetBounds();
+
+ //Voice Call
+ String voiceButtonId(IDC_VOICECALL_BUTTON);
+ String btnName = AppUtility::GetResourceString(IDS_VOICE_CALL_BTN_NAME);
+ SetBitmapsToButton(voiceButtonId, btnName, IDB_VOICE_CALL_ICON, BTN_NORMAL);
+ SetBitmapsToButton(voiceButtonId, btnName, IDB_VOICE_CALL_PRESS_ICON, BTN_PRESS);
+ SetBitmapsToButton(voiceButtonId, btnName, IDB_VOICE_CALL_DIM_ICON, BTN_DIM);
+ AddKeyPadActionListener(voiceButtonId, IDA_VOICE_CALL);
+
+ //Video Call
+ String videoButtonId(IDC_VIDEOCALL_BUTTON);
+ btnName = AppUtility::GetResourceString(IDS_VIDEO_CALL_BTN_NAME);
+ SetBitmapsToButton(videoButtonId, btnName, IDB_VIDEO_CALL_ICON, BTN_NORMAL);
+ SetBitmapsToButton(videoButtonId, btnName, IDB_VIDEO_CALL_PRESS_ICON, BTN_PRESS);
+ SetBitmapsToButton(videoButtonId, btnName, IDB_VIDEO_CALL_DIM_ICON, BTN_DIM);
+ AddKeyPadActionListener(videoButtonId, IDA_VIDEO_CALL);
+
+ //Message
+ String msgButtonId(IDC_MSG_BUTTON);
+ btnName = AppUtility::GetResourceString(IDS_MSG_BTN_NAME);
+ SetBitmapsToButton(msgButtonId, btnName, IDB_MESSAGE_ICON, BTN_NORMAL);
+ SetBitmapsToButton(msgButtonId, btnName, IDB_MESSAGE_PRESS_ICON, BTN_PRESS);
+ SetBitmapsToButton(msgButtonId, btnName, IDB_MESSAGE_DIM_ICON, BTN_DIM);
+ AddKeyPadActionListener(msgButtonId, IDA_MESSAGE);
+
+ return r;
+}
+
+result
+CallButtonsPanel::ConstructActiveCallPanel(void)
+{
+ result r = E_SUCCESS;
+
+ //End Call
+ String endButtonId(IDC_ENDCALL_BUTTON);
+ String btnName = AppUtility::GetResourceString(IDS_ENDCALL_BTN_NAME);
+ SetBitmapsToButton(endButtonId, btnName, IDB_END_CALL_ICON, BTN_NORMAL);
+ SetBitmapsToButton(endButtonId, btnName, IDB_END_CALL_PRESS_ICON, BTN_PRESS);
+ SetBitmapsToButton(endButtonId, btnName, IDB_END_CALL_DIM_ICON, BTN_DIM);
+
+ //Add or Join call based on form state
+ String addJoinButtonId(IDC_ADDJOINCALL_BUTTON);
+ switch (__parentFormType)
+ {
+ case FORMTYPE_OUTGOINGCALL:
+ case FORMTYPE_ACTIVECALL:
+ case FORMTYPE_EMERGENCYOUTGOINGCALL:
+ case FORMTYPE_EMERGENCYACTIVECALL:
+ {
+ //End call listener
+ AddKeyPadActionListener(endButtonId, IDA_END_CALL);
+ //Add Call
+ btnName = AppUtility::GetResourceString(IDS_ADDCALL_BTN_NAME);
+ SetBitmapsToButton(addJoinButtonId, btnName, IDB_ADD_CALL_ICON, BTN_NORMAL);
+ SetBitmapsToButton(addJoinButtonId, btnName, IDB_ADD_CALL_PRESS_ICON, BTN_PRESS);
+ SetBitmapsToButton(addJoinButtonId, btnName, IDB_ADD_CALL_DIM_ICON, BTN_DIM);
+ AddKeyPadActionListener(addJoinButtonId, IDA_ADD_CALL);
+ }
+ break;
+
+ case FORMTYPE_ACTIVECONFCALL:
+ {
+ //End call listener
+ AddKeyPadActionListener(endButtonId, IDA_END_CONF_CALL);
+ //Add Call
+ btnName = AppUtility::GetResourceString(IDS_ADDCALL_BTN_NAME);
+ SetBitmapsToButton(addJoinButtonId, btnName, IDB_ADD_CALL_ICON, BTN_NORMAL);
+ SetBitmapsToButton(addJoinButtonId, btnName, IDB_ADD_CALL_PRESS_ICON, BTN_PRESS);
+ SetBitmapsToButton(addJoinButtonId, btnName, IDB_ADD_CALL_DIM_ICON, BTN_DIM);
+ AddKeyPadActionListener(addJoinButtonId, IDA_ADD_CALL);
+ }
+ break;
+
+ case FORMTYPE_MULTIPLECALLS:
+ {
+ //End call listener
+ AddKeyPadActionListener(endButtonId, IDA_END_CALL);
+ //Join Call
+ btnName = AppUtility::GetResourceString(IDS_JOINCALL_BTN_NAME);
+ SetBitmapsToButton(addJoinButtonId, btnName, IDB_JOIN_CALL_ICON, BTN_NORMAL);
+ SetBitmapsToButton(addJoinButtonId, btnName, IDB_JOIN_CALL_PRESS_ICON, BTN_PRESS);
+ SetBitmapsToButton(addJoinButtonId, btnName, IDB_JOIN_CALL_DIM_ICON, BTN_DIM);
+ AddKeyPadActionListener(addJoinButtonId, IDA_JOIN_CALL);
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ //Keypad is closed, bt default
+ SetKeypadButtonState(IDA_OPEN_NUMKEYPAD);
+ //Speaker is off, by default
+ SetSpeakerButtonState(IDA_SPEAKER);
+ //Mute is off, by default
+ SetMuteButtonState(IDA_MUTE);
+ //Contact
+ String contactButtonId(IDC_CONTACT_BUTTON);
+ btnName = AppUtility::GetResourceString(IDS_CONTACT_BTN_NAME);
+ SetBitmapsToButton(contactButtonId, btnName, IDB_CONTACT_ICON, BTN_NORMAL);
+ SetBitmapsToButton(contactButtonId, btnName, IDB_CONTACT_PRESS_ICON, BTN_PRESS);
+ SetBitmapsToButton(contactButtonId, btnName, IDB_CONTACT_DIM_ICON, BTN_DIM);
+ AddKeyPadActionListener(contactButtonId, IDA_OPEN_CONTACTS);
+
+ //ToDO: For now disabling the contact button as there is no way to launch contact app control
+ // just for viewwing
+ Button* pButton = static_cast<Button*>(GetControl(IDC_CONTACT_BUTTON));
+ pButton->SetEnabled(false);
+ //disable all keys except 'Speaker' keys while dialing outgoing call
+ if (__parentFormType == FORMTYPE_OUTGOINGCALL || __parentFormType == FORMTYPE_EMERGENCYOUTGOINGCALL
+ || __parentFormType == FORMTYPE_EMERGENCYACTIVECALL)
+ {
+ DisableKeysForOutgoingCall();
+ }
+
+ return r;
+}
+
+void
+CallButtonsPanel::SetBitmapsToButton(const String& buttonId, const String& buttonName, const String& imgPath, ButtonState state)
+{
+ Button* pButton = static_cast<Button*>(GetControl(buttonId));
+ if (pButton != null)
+ {
+ //Fetch Bitmap from resource
+ Bitmap* pBitmap = AppUtility::GetBitmapFromResourcesN(imgPath,
+ W_BG_BITMAP, H_BG_BITMAP);
+
+ //Create a new canvas
+ Canvas* pCanvas = new (std::nothrow) Canvas;
+ pCanvas->Construct(Rectangle(0, 0, pButton->GetBounds().width, pButton->GetBounds().height));
+
+ //Set Text to Canvas
+ Point bitmapPos(0, 0);
+ bitmapPos.SetPosition(((pCanvas->GetBounds().width - pBitmap->GetWidth()) / 2), Y_BG_BITMAP_POS);
+ SetEnrichedTextToButton(buttonName, pCanvas, state, (bitmapPos.y + pBitmap->GetHeight() + IDI_VERTICAL_SPACE));
+
+ //set normal bitmap to canvas
+ pCanvas->DrawBitmap(Rectangle(bitmapPos, Dimension(pBitmap->GetWidth(), pBitmap->GetHeight())), *pBitmap);
+
+ //Set the final Bitmap to Button
+ Bitmap* pActualBgBmp = new (std::nothrow) Bitmap();
+ pActualBgBmp->Construct(*pCanvas, pCanvas->GetBounds());
+
+ switch (state)
+ {
+ case BTN_NORMAL:
+ {
+ pButton->SetNormalBackgroundBitmap(*pActualBgBmp);
+ }
+ break;
+
+ case BTN_PRESS:
+ {
+ Bitmap* highlightedBmp = AppUtility::GetBitmapFromResourcesN(L"C01-1_icon_button_press.png",236,237);
+ if(highlightedBmp != null)
+ {
+ pButton->SetHighlightedBackgroundBitmap(*highlightedBmp);
+ delete highlightedBmp;
+ highlightedBmp = null;
+ }
+ pButton->SetPressedBitmap(Point(0,0),*pActualBgBmp);
+ }
+ break;
+
+ case BTN_DIM:
+ {
+ pButton->SetDisabledBitmap(Point(0, 0), *pActualBgBmp);
+ }
+ break;
+ }
+ pButton->Invalidate(true);
+
+ delete pBitmap;
+ delete pActualBgBmp;
+ delete pCanvas;
+ }
+}
+
+void
+CallButtonsPanel::SetEnrichedTextToButton(const String& buttonName, Canvas* pCanvas, ButtonState state, int verticalPos)
+{
+ //find text color
+ Color textColor(255, 255, 255);
+ switch (state)
+ {
+ case BTN_NORMAL:
+ textColor.SetAlpha(255);
+ break;
+
+ case BTN_PRESS:
+ textColor.SetAlpha(127);
+ break;
+
+ case BTN_DIM:
+ textColor.SetAlpha(77);
+ break;
+ }
+
+ Font font;
+ font.Construct(FONT_STYLE_PLAIN, IDI_TEXT_SIZE);
+ Dimension textDimension;
+ font.GetTextExtent(buttonName, buttonName.GetLength(), textDimension);
+ textDimension.height = textDimension.height + font.GetDescender();
+ TextElement* pTextElement = new (std::nothrow) TextElement();
+ pTextElement->Construct(buttonName);
+ pTextElement->SetTextColor(textColor);
+ pTextElement->SetFont(font);
+
+ EnrichedText* pEnrichedText = new (std::nothrow) EnrichedText();
+ pEnrichedText->Construct(textDimension);
+ pEnrichedText->Add(*pTextElement);
+
+ //Draw text
+ Point textPos(((pCanvas->GetBounds().width - pEnrichedText->GetWidth()) / 2), verticalPos);
+ pCanvas->DrawText(textPos, *pEnrichedText);
+
+ // Cleans up
+ pEnrichedText->RemoveAll(true);
+ delete pEnrichedText;
+}
+
+void
+CallButtonsPanel::AddKeyPadActionListener(const String& buttonId, CommandIds cmdId)
+{
+ Button* pButton = static_cast<Button*>(GetControl(buttonId));
+ if (pButton != null)
+ {
+ pButton->SetActionId(cmdId);
+ pButton->AddActionEventListener(*__pActionListener);
+ }
+}
+
+void
+CallButtonsPanel::DisableKeysForOutgoingCall(void)
+{
+ //add call
+ EnableAddCallButton(false);
+
+ //keypad
+ Button* pButton = static_cast<Button*>(GetControl(IDC_KEYPAD_BUTTON));
+ pButton->SetEnabled(false);
+
+ //mute
+ pButton = static_cast<Button*>(GetControl(IDC_MUTE_BUTTON));
+ pButton->SetEnabled(false);
+
+ //contact
+ pButton = static_cast<Button*>(GetControl(IDC_CONTACT_BUTTON));
+ pButton->SetEnabled(false);
+}
+
+void
+CallButtonsPanel::SetEndCallPanelState(bool isEnabled)
+{
+ //Voice Call
+ Button* pButton = static_cast<Button*>(GetControl(IDC_VOICECALL_BUTTON));
+ pButton->SetEnabled(isEnabled);
+
+ //Video Call
+ pButton = static_cast<Button*>(GetControl(IDC_VIDEOCALL_BUTTON));
+ pButton->SetEnabled(isEnabled);
+
+ //Message
+ pButton = static_cast<Button*>(GetControl(IDC_MSG_BUTTON));
+ pButton->SetEnabled(isEnabled);
+}
+
+void
+CallButtonsPanel::EnableAddCallButton(bool enable)
+{
+ //add call
+ Button* pButton = static_cast<Button*>(GetControl(IDC_ADDJOINCALL_BUTTON));
+ if(pButton != null && pButton->GetActionId() == IDA_ADD_CALL)
+ {
+ pButton->SetEnabled(enable);
+ }
+}
+
+void
+CallButtonsPanel::SetButtonPosition(void)
+{
+ switch (__parentFormType)
+ {
+ case FORMTYPE_ENDCALL:
+ {
+ //Voice Call
+ Button* pButton = static_cast<Button*>(GetControl(IDC_VOICECALL_BUTTON));
+ SetControlAlwaysOnTop(*pButton,true);
+
+ //Video Call
+ pButton = static_cast<Button*>(GetControl(IDC_VIDEOCALL_BUTTON));
+ SetControlAlwaysOnTop(*pButton,true);
+
+ //Message
+ pButton = static_cast<Button*>(GetControl(IDC_MSG_BUTTON));
+ SetControlAlwaysOnTop(*pButton,true);
+ Label* pLabel = static_cast<Label*>(GetControl(L"IDC_LABEL1"));
+ SetControlAlwaysOnTop(*pLabel,true);
+ pLabel = static_cast<Label*>(GetControl(L"IDC_LABEL5"));
+ SetControlAlwaysOnTop(*pLabel,true);
+ pLabel = static_cast<Label*>(GetControl(L"IDC_LABEL6"));
+ SetControlAlwaysOnTop(*pLabel,true);
+ pLabel = static_cast<Label*>(GetControl(L"IDC_LABEL7"));
+ SetControlAlwaysOnTop(*pLabel,true);
+ pLabel = static_cast<Label*>(GetControl(L"IDC_LABEL8"));
+ SetControlAlwaysOnTop(*pLabel,true);
+ }
+ break;
+
+ default:
+ {
+ //keypad
+ Button* pButton = static_cast<Button*>(GetControl(IDC_KEYPAD_BUTTON));
+ SetControlAlwaysOnTop(*pButton,true);
+ //mute
+ pButton = static_cast<Button*>(GetControl(IDC_MUTE_BUTTON));
+ SetControlAlwaysOnTop(*pButton,true);
+ //contact
+ pButton = static_cast<Button*>(GetControl(IDC_CONTACT_BUTTON));
+ SetControlAlwaysOnTop(*pButton,true);
+ //Add or Join call based on form state
+ pButton = static_cast<Button*>(GetControl(IDC_ADDJOINCALL_BUTTON));
+ SetControlAlwaysOnTop(*pButton,true);
+ //End call
+ pButton = static_cast<Button*>(GetControl(IDC_ENDCALL_BUTTON));
+ SetControlAlwaysOnTop(*pButton,true);
+ //Speaker
+ pButton = static_cast<Button*>(GetControl(IDC_SPEAKER_BUTTON));
+ SetControlAlwaysOnTop(*pButton,true);
+ Label* pLabel = static_cast<Label*>(GetControl(L"IDC_LABEL1"));
+ SetControlAlwaysOnTop(*pLabel,true);
+ pLabel = static_cast<Label*>(GetControl(L"IDC_LABEL1"));
+ SetControlAlwaysOnTop(*pLabel,true);
+ pLabel = static_cast<Label*>(GetControl(L"IDC_LABEL2"));
+ SetControlAlwaysOnTop(*pLabel,true);
+ pLabel = static_cast<Label*>(GetControl(L"IDC_LABEL4"));
+ SetControlAlwaysOnTop(*pLabel,true);
+ pLabel = static_cast<Label*>(GetControl(L"IDC_LABEL5"));
+ SetControlAlwaysOnTop(*pLabel,true);
+ pLabel = static_cast<Label*>(GetControl(L"IDC_LABEL6"));
+ SetControlAlwaysOnTop(*pLabel,true);
+ pLabel = static_cast<Label*>(GetControl(L"IDC_LABEL7"));
+ SetControlAlwaysOnTop(*pLabel,true);
+ pLabel = static_cast<Label*>(GetControl(L"IDC_LABEL8"));
+ SetControlAlwaysOnTop(*pLabel,true);
+ pLabel = static_cast<Label*>(GetControl(L"IDC_LABEL9"));
+ SetControlAlwaysOnTop(*pLabel,true);
+ pLabel = static_cast<Label*>(GetControl(L"IDC_LABEL10"));
+ SetControlAlwaysOnTop(*pLabel,true);
+ pLabel = static_cast<Label*>(GetControl(L"IDC_LABEL11"));
+ SetControlAlwaysOnTop(*pLabel,true);
+ pLabel = static_cast<Label*>(GetControl(L"IDC_LABEL12"));
+ SetControlAlwaysOnTop(*pLabel,true);
+
+ }
+ break;
+ }
+}
--- /dev/null
+//
+// 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 PhnCallInfo.cpp
+ * @brief Call Information class
+ */
+#include "PhnAppUtility.h"
+#include "PhnCallInfo.h"
+#include <FMedia.h>
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Media;
+using namespace Tizen::Social;
+
+CallInfo::CallInfo(void)
+{
+ //by Default, neither a conference call nor emergency call
+ __isConfCall = false;
+ __isEmergency = false;
+ __callType = VOICE_CALL;
+ __isOnHold = false;
+ __callConnectTime = 0;
+ __callNotificationTime = 0;
+ __pCallHandle = null;
+ __pEndCallCause = null;
+ __pParticipantCallHandles = null;
+ __pContact = null;
+}
+
+CallInfo::~CallInfo(void)
+{
+ if (__pCallHandle)
+ {
+ delete __pCallHandle;
+ }
+
+ if (__pEndCallCause)
+ {
+ delete __pEndCallCause;
+ }
+
+ if (__pParticipantCallHandles)
+ {
+ delete __pParticipantCallHandles;
+ __pParticipantCallHandles = null;
+ }
+ if (__pContact != null)
+ {
+ delete __pContact;
+ }
+}
+
+Long*
+CallInfo::GetCallHandle(void)
+{
+ return __pCallHandle;
+}
+
+void
+CallInfo::SetCallHandle(unsigned int handle)
+{
+ if (__pCallHandle != null)
+ {
+ delete __pCallHandle;
+ }
+ __pCallHandle = new (std::nothrow) Long(handle);
+}
+
+bool
+CallInfo::IsConferenceCall(void)
+{
+ return __isConfCall;
+}
+
+void
+CallInfo::SetConference(bool isConferenceCall)
+{
+ __isConfCall = isConferenceCall;
+}
+
+bool
+CallInfo::IsEmergency(void)
+{
+ return __isEmergency;
+}
+
+void
+CallInfo::SetEmergency(bool isEmergency)
+{
+ __isEmergency = isEmergency;
+}
+
+String&
+CallInfo::GetContactNumber(void)
+{
+ return __contactNumber;
+}
+
+void
+CallInfo::SetContactNumber(String& contactNumber)
+{
+ if (__isConfCall == false)
+ {
+ __contactNumber = contactNumber;
+ }
+}
+
+void
+CallInfo::SetContactInfo(const Contact& contact)
+{
+ if (__pContact != null)
+ {
+ delete __pContact;
+ __pContact = null;
+ }
+ __pContact = new (std::nothrow) Contact(contact);
+}
+
+bool
+CallInfo::IsOnHold(void)
+{
+ return __isOnHold;
+}
+
+void
+CallInfo::SetOnHold(bool onHold)
+{
+ __isOnHold = onHold;
+}
+
+long long
+CallInfo::GetCallConnectTime(void)
+{
+ return __callConnectTime;
+}
+
+void
+CallInfo::SetCallConnectTime(long long connectTime)
+{
+ __callConnectTime = connectTime;
+}
+
+long long
+CallInfo::GetCallNotificationTime(void)
+{
+ return __callNotificationTime;
+}
+
+void
+CallInfo::SetCallNotificationTime(long long callNotificationTime)
+{
+ __callNotificationTime = callNotificationTime;
+}
+
+String&
+CallInfo::GetEndCallCause(void)
+{
+ return *(__pEndCallCause);
+}
+
+void
+CallInfo::SetEndCallCause(String& pEndCause)
+{
+ if (__pEndCallCause != null)
+ {
+ delete __pEndCallCause;
+ }
+ __pEndCallCause = new (std::nothrow) String(pEndCause);
+}
+
+IListT<CallInfo>*
+CallInfo::GetCallerList(void)
+{
+ return __pParticipantCallHandles;
+}
+
+int
+CallInfo::GetCallerListCount(void)
+{
+ if (__pParticipantCallHandles != null)
+ {
+ return __pParticipantCallHandles->GetCount();
+ }
+ return -1;
+}
+
+result
+CallInfo::AddCallToCallerList(CallInfo& callInfo)
+{
+ if (__pParticipantCallHandles == NULL)
+ {
+ __pParticipantCallHandles = new (std::nothrow) ArrayListT<CallInfo>();
+ }
+ result r = E_FAILURE;
+ CallInfo* pNewCallInfo = new (std::nothrow) CallInfo();
+ *pNewCallInfo = callInfo;
+ r = __pParticipantCallHandles->Add(*pNewCallInfo);
+ pNewCallInfo = NULL;
+ return r;
+}
+
+result
+CallInfo::RemoveCallFromCallerList(int index)
+{
+ result r = E_FAILURE;
+ if (__pParticipantCallHandles == NULL)
+ {
+ return r;
+ }
+ r = __pParticipantCallHandles->RemoveAt(index);
+ return r;
+}
+
+void
+CallInfo::SetCalllogType(CallLogType callLogType)
+{
+ __calllogType = callLogType;
+}
+
+CallLogType
+CallInfo::GetCalllogType(void)
+{
+ return __calllogType;
+}
+
+bool
+CallInfo::operator ==(const CallInfo& rhs) const
+{
+ return (this->__pCallHandle->Equals(*(rhs.__pCallHandle)));
+}
+
+bool
+CallInfo::operator !=(const CallInfo& rhs) const
+{
+ return (!(this->__pCallHandle->Equals(*(rhs.__pCallHandle))));
+}
+
+CallInfo&
+CallInfo::operator =(const CallInfo& rhs)
+{
+ if (this != null)
+ {
+ this->__isConfCall = rhs.__isConfCall;
+ this->__callType = rhs.__callType;
+ this->__isEmergency = rhs.__isEmergency;
+ this->__contactNumber = rhs.__contactNumber;
+ this->__isOnHold = rhs.__isOnHold;
+ //call connected time
+ this->__callConnectTime = rhs.__callConnectTime;
+ //call notification time
+ this->__callNotificationTime = rhs.__callNotificationTime;
+ this->__calllogType = rhs.__calllogType;
+ //copy call handle, if exist
+ if (this->__pCallHandle != null)
+ {
+ delete this->__pCallHandle;
+ this->__pCallHandle = null;
+ }
+ if (rhs.__pCallHandle != null)
+ {
+ this->__pCallHandle = new (std::nothrow) Long(*(rhs.__pCallHandle));
+ }
+
+ //copy end call cause, if any exist
+ if (this->__pEndCallCause != null)
+ {
+ delete this->__pEndCallCause;
+ this->__pEndCallCause = null;
+ }
+ if (rhs.__pEndCallCause)
+ {
+ this->__pEndCallCause = new (std::nothrow) String(*(rhs.__pEndCallCause));
+ }
+
+ //Add participant call list
+ if (this->__pParticipantCallHandles != null)
+ {
+ delete this->__pParticipantCallHandles;
+ this->__pParticipantCallHandles = null;
+ }
+ if (rhs.__pParticipantCallHandles != null)
+ {
+ this->__pParticipantCallHandles = new (std::nothrow) ArrayListT<CallInfo>();
+ this->__pParticipantCallHandles->Construct(*(rhs.__pParticipantCallHandles));
+ }
+ if (this->__pContact != null)
+ {
+ delete this->__pContact;
+ this->__pContact = null;
+ }
+ if (rhs.__pContact != null)
+ {
+ this->__pContact = new (std::nothrow) Contact(*(rhs.__pContact));
+ }
+ }
+
+ return *this;
+}
+
+String*
+CallInfo::FetchCallerNameN(void)
+{
+ String displayName(L"");
+
+ //get caller name from already fetched or newly fetched contact info
+ if (__pContact != null)
+ {
+ //fetch name to be displayed
+ __pContact->GetValue(CONTACT_PROPERTY_ID_DISPLAY_NAME, displayName);
+ if (displayName.IsEmpty())
+ {
+ String firstName(L"");
+ String lastName(L"");
+ __pContact->GetValue(CONTACT_PROPERTY_ID_FIRST_NAME, firstName);
+ __pContact->GetValue(CONTACT_PROPERTY_ID_LAST_NAME, lastName);
+ displayName.Append(firstName + " " + lastName);
+ }
+ }
+
+ return new (std::nothrow) String(displayName);
+}
+
+Bitmap*
+CallInfo::FetchCallerPhotoN(void)
+{
+ if (__pContact != null)
+ {
+ return __pContact->GetThumbnailN();
+ }
+ return null;
+}
+
+bool
+CallInfo::IsNumberPresent(void)
+{
+ if (__pContact != null)
+ {
+ return true;
+ }
+ return false;
+}
--- /dev/null
+//
+// 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 PhnCallOptionPopup.cpp
+ * @brief Call Options Popup class
+ */
+#include <FApp.h>
+#include <FSocial.h>
+#include <FSystem.h>
+#include <FUi.h>
+#include <FGraphics.h>
+#include <FMedia.h>
+
+#include "PhnCallOptionPopup.h"
+#include "PhnAppUtility.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Utility;
+using namespace Tizen::App;
+using namespace Tizen::Graphics;
+using namespace Tizen::Social;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+const int W_POPUP = 620;
+const int H_POPUP = 712;
+const int W_CANCEL_BUTTON = 400;
+const int H_CANCEL_BUTTON = 72;
+const int CANCEL_BUTTON_PADDING = 20;
+const int H_LIST_ITEM = 112;
+const int W_LIST_ITEM = 112;
+const int HORIZONTAL_PADDING = 16;
+const int VERTICAL_PADDING = 110;
+const int IDA_BUTTON_CANCEL_OPTIONS_POPUP = 502;
+static const wchar_t* IDL_CALL_OPTION_POPUP = L"IDL_CALL_OPTION_POPUP";
+
+CallOptionPopup::CallOptionPopup(IPopupItemSelectListener& listener, CallPresentationModel& callPresenter)
+ : __pContactList(null)
+ , __popupListener(listener)
+ , __callPresenter(callPresenter)
+{
+
+}
+
+CallOptionPopup::~CallOptionPopup(void)
+{
+ if (__pContactList)
+ {
+ __pContactList->RemoveAll();
+ delete __pContactList;
+ __pContactList = null;
+ }
+}
+
+result
+CallOptionPopup::Initialize(void)
+{
+ result r = E_SUCCESS;
+ r = Construct(IDL_CALL_OPTION_POPUP);
+ TryReturn(r == E_SUCCESS, r, "CallOptionPopup construction failed");
+
+ ConstructListData();
+ int listHeight = H_LIST_ITEM * __pContactList->GetCount();
+ int popupHeight = H_CANCEL_BUTTON + listHeight + CANCEL_BUTTON_PADDING + VERTICAL_PADDING;
+ r = SetSize(Dimension(W_POPUP + HORIZONTAL_PADDING, popupHeight));
+ TryReturn(r == E_SUCCESS, r, "CallOptionPopup::SetSize() failed");
+
+ String strText;
+ Application::GetInstance()->GetAppResource()->GetString(L"IDS_CANCEL", strText);
+ Button* pCancelButton = new (std::nothrow) Button();
+ r = pCancelButton->Construct(Rectangle(VERTICAL_PADDING, listHeight + CANCEL_BUTTON_PADDING , W_CANCEL_BUTTON, H_CANCEL_BUTTON), strText);
+ pCancelButton->SetActionId(IDA_BUTTON_CANCEL_OPTIONS_POPUP);
+ pCancelButton->AddActionEventListener(*this);
+ r = AddControl(*pCancelButton);
+ TryReturn(r == E_SUCCESS, r, "CallOptionPopup::AddControl() failed");
+
+ ListView* pListView = new (std::nothrow) ListView();
+ pListView->Construct(Rectangle(0, 0, W_POPUP - HORIZONTAL_PADDING, listHeight), true, SCROLL_STYLE_FADE_OUT);
+ pListView->AddListViewItemEventListener(*this);
+ pListView->SetItemProvider(*this);
+ r = AddControl(*pListView);
+
+ return r;
+}
+
+void
+CallOptionPopup::ConstructListData(void)
+{
+ ArrayListT<CallInfo>* pCallList = static_cast<ArrayListT<CallInfo>*>(__callPresenter.GetCallListN());
+ if (pCallList != null)
+ {
+ int callCount = pCallList->GetCount();
+ switch (callCount)
+ {
+ case 1:
+ {
+ //only one call.
+ CallInfo phnCallInfo;
+ pCallList->GetAt(0,phnCallInfo);
+ //show contact number
+ String contactNo;
+ contactNo.Append(phnCallInfo.GetContactNumber());
+ String* displayName = phnCallInfo.FetchCallerNameN();
+ if (displayName->IsEmpty() == true)
+ {
+ displayName->Append(contactNo);
+ }
+
+ __pContactList = new (std::nothrow) ArrayList();
+ __pContactList->Construct(2);
+ if (phnCallInfo.IsConferenceCall() == false)
+ {
+ String optionStr = AppUtility::GetResourceString(L"IDS_CALL_OPTION1");
+ String* listItem1 = new (std::nothrow) String();
+ listItem1->Format(100,optionStr.GetPointer(),displayName->GetPointer());//(L"Putting " + *displayName + L" on hold");
+ __pContactList->Add(*listItem1);
+ optionStr.Clear();
+ optionStr = AppUtility::GetResourceString(L"IDS_CALL_OPTION2");
+ String* listItem2 = new (std::nothrow) String();
+ listItem2->Append(optionStr + *displayName);
+ __pContactList->Add(*listItem2);
+ }
+ else
+ {
+ String optionStr = AppUtility::GetResourceString(L"IDS_CALL_OPTION7");
+ String* listItem1 = new (std::nothrow) String();
+ if (phnCallInfo.IsOnHold() == true)
+ {
+ String optionStr = AppUtility::GetResourceString(L"IDS_CALL_OPTION8");
+ listItem1->Format(100, optionStr.GetPointer(),phnCallInfo.GetCallerListCount());
+ }
+ else
+ {
+ String optionStr = AppUtility::GetResourceString(L"IDS_CALL_OPTION7");
+ listItem1->Format(100, optionStr.GetPointer(),phnCallInfo.GetCallerListCount());
+ }
+ __pContactList->Add(*listItem1);
+ String* listItem2 = new (std::nothrow) String();
+ if (phnCallInfo.IsOnHold() == true)
+ {
+ String optionStr = AppUtility::GetResourceString(L"IDS_CALL_OPTION3");
+ listItem2->Format(100, optionStr.GetPointer(),phnCallInfo.GetCallerListCount());
+ }
+ else
+ {
+ String optionStr = AppUtility::GetResourceString(L"IDS_CALL_OPTION4");
+ listItem2->Format(100, optionStr.GetPointer(),phnCallInfo.GetCallerListCount());
+ }
+ __pContactList->Add(*listItem2);
+ }
+
+ delete displayName;
+ }
+ break;
+
+ case 2:
+ {
+ //2calls present. active call and held call
+ CallInfo firstCallInfo;
+ pCallList->GetAt(0,firstCallInfo);
+ CallInfo secondCallInfo;
+ pCallList->GetAt(1,secondCallInfo);
+ __pContactList = new (std::nothrow) ArrayList();
+ __pContactList->Construct(3);
+ //show contact number
+ String contactNo;
+ contactNo.Append(firstCallInfo.GetContactNumber());
+ String* displayName = firstCallInfo.FetchCallerNameN();
+ if (displayName->IsEmpty() == true)
+ {
+ displayName->Append(contactNo);
+ }
+ String* listItem1 = new (std::nothrow) String();
+ if (firstCallInfo.IsConferenceCall() == true)
+ {
+ if (firstCallInfo.IsOnHold() == true)
+ {
+ String optionStr = AppUtility::GetResourceString(L"IDS_CALL_OPTION3");
+ listItem1->Format(100, optionStr.GetPointer(),firstCallInfo.GetCallerListCount());
+ }
+ else
+ {
+ String optionStr = AppUtility::GetResourceString(L"IDS_CALL_OPTION4");
+ listItem1->Format(100, optionStr.GetPointer(),firstCallInfo.GetCallerListCount());
+ }
+ }
+ else
+ {
+ String optionStr = AppUtility::GetResourceString(L"IDS_CALL_OPTION5");
+ listItem1->Append(optionStr + *displayName );
+ }
+ delete displayName;
+ contactNo.Clear();
+ contactNo.Append(secondCallInfo.GetContactNumber());
+ displayName = secondCallInfo.FetchCallerNameN();
+ if (displayName->IsEmpty() == true)
+ {
+ displayName->Append(contactNo);
+ }
+ String* listItem2 = new (std::nothrow) String();
+ if (secondCallInfo.IsConferenceCall() == true)
+ {
+ String callCountStr;
+ callCountStr.Append(secondCallInfo.GetCallerListCount());
+
+ if (secondCallInfo.IsOnHold() == true)
+ {
+ String optionStr = AppUtility::GetResourceString(L"IDS_CALL_OPTION3");
+ listItem2->Format(100, optionStr.GetPointer(),secondCallInfo.GetCallerListCount());
+ }
+ else
+ {
+ String optionStr = AppUtility::GetResourceString(L"IDS_CALL_OPTION4");
+ listItem2->Format(100, optionStr.GetPointer(),secondCallInfo.GetCallerListCount());
+ }
+ }
+ else
+ {
+ String optionStr = AppUtility::GetResourceString(L"IDS_CALL_OPTION5");
+ listItem2->Append(optionStr + *displayName );
+ }
+ if (firstCallInfo.IsOnHold() == true)
+ {
+ __pContactList->Add(*listItem2);
+ __pContactList->Add(*listItem1);
+ }
+ else
+ {
+ __pContactList->Add(*listItem1);
+ __pContactList->Add(*listItem2);
+ }
+ String optionStr = AppUtility::GetResourceString(L"IDS_CALL_OPTION6");
+ String* listItem3 = new (std::nothrow) String();
+ listItem3->Append(optionStr);
+ __pContactList->Add(*listItem3);
+ delete displayName;
+ }
+ break;
+
+ default:
+ break;
+ }
+ pCallList->RemoveAll();
+ delete pCallList;
+ }
+}
+
+void
+CallOptionPopup::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId,
+ Tizen::Ui::Controls::ListItemStatus status)
+{
+ Popup::SetShowState(false);
+ __popupListener.OnItemSelected(elementId);
+ return;
+}
+
+void
+CallOptionPopup::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index,
+ Tizen::Ui::Controls::SweepDirection direction)
+{
+ return;
+}
+
+void
+CallOptionPopup::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId,
+ Tizen::Ui::Controls::ListContextItemStatus state)
+{
+ return;
+}
+
+void
+CallOptionPopup::OnListViewItemLongPressed(Tizen::Ui::Controls::ListView& listView, int index, int elementId,
+ bool& invokeListViewItemCallback)
+{
+ return;
+}
+
+int
+CallOptionPopup::GetItemCount(void)
+{
+ if (__pContactList != null)
+ {
+ return __pContactList->GetCount();
+ }
+ return 0;
+}
+
+Tizen::Ui::Controls::ListItemBase*
+CallOptionPopup::CreateItem(int index, int itemWidth)
+{
+ int elementId = 0;
+ String* strText = static_cast<String*>(__pContactList->GetAt(index));
+ ListAnnexStyle style = LIST_ANNEX_STYLE_NORMAL;
+ CustomItem* pItem = new CustomItem();
+ pItem->Construct(Dimension(itemWidth, W_LIST_ITEM), style);
+ if (__pContactList->GetCount() == 2)
+ {
+ elementId = ID_SECOND_INCOMING_CALL + index;
+ }
+ else
+ {
+ elementId = ID_MULTI_PARTY_CALL + index;
+ }
+ pItem->AddElement(Rectangle(HORIZONTAL_PADDING, 0, W_POPUP - HORIZONTAL_PADDING, H_LIST_ITEM), elementId, *strText);
+ return pItem;
+}
+
+bool
+CallOptionPopup::DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+ return true;
+}
+
+
+void
+CallOptionPopup::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ switch (actionId)
+ {
+ case IDA_BUTTON_CANCEL_OPTIONS_POPUP:
+ {
+ Popup::SetShowState(false);
+ __popupListener.OnItemSelected(IDA_BUTTON_CANCEL_OPTIONS_POPUP);
+ }
+ break;
+
+ default:
+ break;
+ }
+}
--- /dev/null
+//
+// 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 PhnCallPresentationModel.cpp
+ * @brief Call Presentation model class
+ */
+#include <FApp.h>
+#include <FUi.h>
+#include <FMedia.h>
+#include "PhnPhoneApp.h"
+#include "PhnActiveCallForm.h"
+#include "PhnCallInfo.h"
+#include "PhnCallPresentationModel.h"
+#include "PhnSettingsPresentationModel.h"
+#include "PhnConfCallerListForm.h"
+#include "PhnTelephonyManager.h"
+#include "PhnSceneRegister.h"
+#include "PhnTypes.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::App;
+using namespace Tizen::Graphics;
+using namespace Tizen::Media;
+using namespace Tizen::Social;
+using namespace Tizen::Ui::Scenes;
+
+CallPresentationModel* CallPresentationModel::__pInstance = null;
+
+CallPresentationModel::CallPresentationModel(void)
+{
+ __pTelephonyMgr = null;
+ __pTelEventListener = null;
+ __pSettingsPresentor = null;
+ __isMessageAppControlRunning = false;
+}
+
+CallPresentationModel::~CallPresentationModel(void)
+{
+ __pTelephonyMgr = null;
+ __pSettingsPresentor = null;
+}
+
+void
+CallPresentationModel::CreateInstance(void)
+{
+ __pInstance = new (std::nothrow) CallPresentationModel();
+ result r = __pInstance->Construct();
+ if(IsFailed(r))
+ {
+ delete __pInstance;
+ __pInstance = null;
+ return;
+ }
+
+ std::atexit(DestroyInstance);
+}
+
+CallPresentationModel*
+CallPresentationModel::GetInstance(void)
+{
+ if (__pInstance == null)
+ {
+ CreateInstance();
+ }
+ return __pInstance;
+}
+
+void
+CallPresentationModel::DestroyInstance(void)
+{
+ if (__pInstance != null)
+ {
+ delete __pInstance;
+ __pInstance = null;
+ }
+}
+
+result
+CallPresentationModel::Construct(void)
+{
+ //Fetch Telephony Manager
+ __pTelephonyMgr = TelephonyManager::GetInstance(this);
+ __pSettingsPresentor = SettingsPresentationModel::GetInstance();
+ return E_SUCCESS;
+}
+
+void
+CallPresentationModel::SetTelEventListener(ITelephonyEventListener* pTelEventListener)
+{
+ //set form as telephony event listener
+ __pTelEventListener = pTelEventListener;
+}
+
+void
+CallPresentationModel::DialCall(String& contactNumber, bool isEmergency)
+{
+ int errorCode = ERROR_NONE;
+ //Check if Telephony Manager is initialized
+ TryCatch(__pTelephonyMgr != null, (errorCode = ERROR_TAPI_INIT_FAILED), "TAPI initialization failed");
+
+ //setup outgoing call
+ errorCode = __pTelephonyMgr->SetupMoCall(contactNumber, isEmergency);
+ TryCatch(errorCode == ERROR_NONE,,"Error occurred while setup MO call");
+ if(__pSettingsPresentor != null)
+ {
+ __pSettingsPresentor->SetCallState(CALL_STATE_CALL_VOICE_CONNECTING);
+ }
+ return;
+
+CATCH:
+ __pTelEventListener->HandleTelephonyError(errorCode);
+}
+
+void
+CallPresentationModel::EndCall(Long callHandle)
+{
+ if(__pTelephonyMgr != null)
+ {
+ __pTelephonyMgr->EndCall(callHandle);
+ }
+}
+
+void
+CallPresentationModel::EndCall(String& contactNumber)
+{
+ if(__pTelephonyMgr != null)
+ {
+ __pTelephonyMgr->EndCall(contactNumber);
+ }
+}
+
+bool
+CallPresentationModel::EndConferenceCall(void)
+{
+ result r = __pTelephonyMgr->EndConferenceCall();
+ if (IsFailed(r))
+ {
+ //TODO: send proper error code
+ __pTelEventListener->HandleTelephonyError(ERROR_GENERAL);
+ return false;
+ }
+ return true;
+}
+
+bool
+CallPresentationModel::HoldCall(Tizen::Base::Long callHandle)
+{
+ result r = __pTelephonyMgr->HoldCall(callHandle, true);
+ return (!IsFailed(r));
+}
+
+bool
+CallPresentationModel::UnHoldCall(Tizen::Base::Long callHandle)
+{
+ result r = __pTelephonyMgr->HoldCall(callHandle, false);
+ return (!IsFailed(r));
+}
+
+bool
+CallPresentationModel::HoldConferenceCall(void)
+{
+ result r = __pTelephonyMgr->HoldConferenceCall(true);
+ return (!IsFailed(r));
+}
+
+bool
+CallPresentationModel::ActivateConferenceCall(void)
+{
+ result r = __pTelephonyMgr->HoldConferenceCall(false);
+ return (!IsFailed(r));
+}
+
+void
+CallPresentationModel::JoinCall(void)
+{
+ result r = __pTelephonyMgr->JoinCall();
+ if (IsFailed(r))
+ {
+ __pTelEventListener->HandleTelephonyError(ERROR_JOIN_FAILED);
+ }
+}
+
+void
+CallPresentationModel::SwapCalls(void)
+{
+ result r = __pTelephonyMgr->SwapCalls();
+ if (IsFailed(r))
+ {
+ __pTelEventListener->HandleTelephonyError(ERROR_SWAP_FAILED);
+ }
+}
+
+bool
+CallPresentationModel::SetMuteStatus(bool setMute)
+{
+ result r = __pTelephonyMgr->SetMuteStatus(setMute);
+ return (!IsFailed(r));
+}
+
+bool
+CallPresentationModel::IsCallMuted(void)
+{
+ return __pTelephonyMgr->IsCallMuted();
+}
+
+bool
+CallPresentationModel::SetSpeakerStatus(bool setSpeaker)
+{
+ result r = __pTelephonyMgr->SetSpeakerStatus(setSpeaker);
+ return (!IsFailed(r));
+}
+
+bool
+CallPresentationModel::IsSpeakerOn(void)
+{
+ return __pTelephonyMgr->IsSpeakerOn();
+}
+void
+CallPresentationModel::SendDTMFSignal(String& textToBeSent)
+{
+ __pTelephonyMgr->SendCallDTMF(textToBeSent);
+}
+
+CallInfo*
+CallPresentationModel::GetConferenceCallInfoN(void)
+{
+ return __pTelephonyMgr->GetConferenceCallInfoN();
+}
+
+void
+CallPresentationModel::SplitFromConference(SplitConfCallerCmdIds splitCallerCmdId, IListT<CallInfo>* pConfCallList)
+{
+ int callIndex = -1;
+ CallInfo callToBeSpli;
+ switch (splitCallerCmdId)
+ {
+ case IDA_SPLIT_CALLER1:
+ callIndex = 0;
+ break;
+
+ case IDA_SPLIT_CALLER2:
+ callIndex = 1;
+ break;
+
+ case IDA_SPLIT_CALLER3:
+ callIndex = 2;
+ break;
+
+ case IDA_SPLIT_CALLER4:
+ callIndex = 3;
+ break;
+
+ case IDA_SPLIT_CALLER5:
+ callIndex = 4;
+ break;
+
+ default:
+ break;
+ }
+
+ result r = pConfCallList->GetAt(callIndex, callToBeSpli);
+ TryCatch(r == E_SUCCESS,,"conf. call list corrupted");
+ //split single call from conference
+ r = __pTelephonyMgr->SplitFromConference(callToBeSpli.GetCallHandle()->ToLong());
+ TryCatch(r == E_SUCCESS,,"Split from conf. call failed");
+ return;
+
+CATCH:
+ __pTelEventListener->HandleTelephonyError(ERROR_SPLIT_FROM_CONFERENCE_FAILED);
+ return;
+}
+
+void
+CallPresentationModel::EndCallFromConference(EndConfCallerCmdIds endCallerCmdId, IListT<CallInfo>* pConfCallList)
+{
+ int callIndex = -1;
+ CallInfo callToBeEnded;
+ switch (endCallerCmdId)
+ {
+ case IDA_END_CALLER1:
+ callIndex = 0;
+ break;
+
+ case IDA_END_CALLER2:
+ callIndex = 1;
+ break;
+
+ case IDA_END_CALLER3:
+ callIndex = 2;
+ break;
+
+ case IDA_END_CALLER4:
+ callIndex = 3;
+ break;
+
+ case IDA_END_CALLER5:
+ callIndex = 4;
+ break;
+
+ default:
+ break;
+ }
+
+ result r = pConfCallList->GetAt(callIndex, callToBeEnded);
+ TryCatch(r == E_SUCCESS,,"conference call list corrupted");
+ //end single call
+ r = __pTelephonyMgr->EndFromConference(callToBeEnded.GetCallHandle()->ToLong());
+ TryCatch(r == E_SUCCESS,,"End single call from conference call failed");
+
+ return;
+
+CATCH:
+ __pTelEventListener->HandleTelephonyError(ERROR_END_CALL_FAILED);
+ return;
+}
+
+bool
+CallPresentationModel::IsSplitAllowed(void)
+{
+ return __pTelephonyMgr->IsSplitAllowed();
+}
+
+void
+CallPresentationModel::AcceptIncomingCall(CallAnswerOptions answerOptions,int callHandle)
+{
+ result r = E_FAILURE;
+ if (answerOptions == CALL_ANSWER_CALL)
+ {
+ r = __pTelephonyMgr->AnswerCall(callHandle, true);
+ }
+ else
+ {
+ r = __pTelephonyMgr->AcceptCall(answerOptions,callHandle);
+ }
+ if (IsFailed(r))
+ {
+ __pTelEventListener->HandleTelephonyError(ERROR_GENERAL);
+ }
+}
+
+IListT<CallInfo>*
+CallPresentationModel::GetCallListN(void)
+{
+ return __pTelephonyMgr->GetCallListN();
+}
+
+
+bool
+CallPresentationModel::RejectCall(int callHandle, bool sendMsg, const String& contactNumber)
+{
+ result r = __pTelephonyMgr->AnswerCall(callHandle, false);
+ if (IsFailed(r))
+ {
+ __pTelEventListener->HandleTelephonyError(ERROR_GENERAL);
+ return false;
+ }
+
+ if (sendMsg == true)
+ {
+ //launch message
+ result r = E_SUCCESS;
+ HashMap extraData;
+ extraData.Construct();
+
+ extraData.Add(new (std::nothrow) String(MESSAGE_TYPE), new (std::nothrow) String(MESSAGE_SMS_TYPE));
+ extraData.Add(new (std::nothrow) String(MESSAGE_TO), new (std::nothrow) String(contactNumber));
+
+ AppControl* pAc = AppManager::FindAppControlN(PROVIDER_ID_MESSAGE, OPERATION_ID_COMPOSE);
+ if (pAc != null)
+ {
+ r = pAc->Start(null, null, &extraData, this);
+ __isMessageAppControlRunning = true;
+ delete pAc;
+ }
+
+ extraData.RemoveAll(true);
+ }
+ return true;
+}
+
+void
+CallPresentationModel::OnAppControlCompleteResponseReceived(const AppId& appId, const String& operationId, AppCtrlResult appControlResult, const IMap* pExtraData)
+{
+ if (__isMessageAppControlRunning == true)
+ {
+ //This comes here, when Message AppControl is finished working.
+ __isMessageAppControlRunning = false;
+ //Check if this was the last call, then terminate application.
+ //And if any calls are active, then those cases are already handled from Other places.
+ if( GetCurrentCallCount() == 0)
+ {
+ PhoneApp* pPhoneApp = static_cast<PhoneApp*>(UiApp::GetInstance());
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ SceneId startingScene = pPhoneApp->GetInitialScene();
+ //No more calls are active
+ if (startingScene == IDSCN_DIALER || startingScene == IDSCN_CALL_LOG)
+ {
+ pSceneManager->GoForward( ForwardSceneTransition(startingScene, SCENE_TRANSITION_ANIMATION_TYPE_NONE,
+ SCENE_HISTORY_OPTION_NO_HISTORY));
+ }
+ else
+ {
+ pPhoneApp->Terminate();
+ }
+ }
+ }
+}
+
+int
+CallPresentationModel::GetCurrentCallCount(void)
+{
+ return __pTelephonyMgr->GetCurrentCallCount();
+}
+
+bool
+CallPresentationModel::CheckSimInitializationIsCompleted()
+{
+ result r = E_FAILURE;
+ if(__pTelephonyMgr != null)
+ {
+ r = __pTelephonyMgr->CheckIfMOCallIsPossible();
+ }
+ return (!IsFailed(r));
+}
+
+bool
+CallPresentationModel::IsEmergencyNumber(const Tizen::Base::String& phoneNumber, bool isSimInitialized)
+{
+ return __pTelephonyMgr->CheckIfMOCallIsEmergency(phoneNumber, isSimInitialized);
+}
+
+void
+CallPresentationModel::StartAlert(CallInfo& incomingCallInfo)
+{
+ __pTelephonyMgr->StartAlert(incomingCallInfo);
+}
+
+void
+CallPresentationModel::StopAlert(void)
+{
+ __pTelephonyMgr->StopAlert();
+}
+
+Contact*
+CallPresentationModel::GetContactN(const String& phoneNumber)
+{
+ return __pTelephonyMgr->GetContactN(phoneNumber);
+}
+
+CallInfo*
+CallPresentationModel::FetchIncomingCallDetailsN(const String& callHandle, const String& contactNumber)
+{
+ //Adding incoming call sate setting here
+ if(__pSettingsPresentor != null)
+ {
+ __pSettingsPresentor->SetCallState(CALL_STATE_CALL_VOICE_CONNECTING);
+ }
+ return __pTelephonyMgr->FetchIncomingCallHandleN(callHandle, contactNumber);
+}
+
+bool
+CallPresentationModel::CheckIncomingCallToBeRejected(CallInfo* pIncomingCallInfo)
+{
+ return __pTelephonyMgr->CheckIncomingCallToBeRejected(pIncomingCallInfo);
+}
+
+/////////////////////////////////////////////////////////////////
+///// Event Listener methods from ITelephonyEventListener /////
+/////////////////////////////////////////////////////////////////
+void
+CallPresentationModel::HandleCallConnected(Tizen::Base::Collection::IListT<CallInfo>& pCallList)
+{
+ if (__pTelEventListener != null)
+ {
+ __pTelEventListener->HandleCallConnected(pCallList);
+ }
+ if(__pSettingsPresentor != null)
+ {
+ __pSettingsPresentor->SetCallState(CALL_STATE_CALL_VOICE_ACTIVE);
+ }
+}
+
+void
+CallPresentationModel::HandleCallDisconnected(bool isLastCall, Tizen::Base::Collection::IListT<CallInfo>& pCallList)
+{
+ if (isLastCall == true)
+ {
+ SetSpeakerStatus(false);
+ SetMuteStatus(false);
+ if(__pSettingsPresentor != null)
+ {
+ __pSettingsPresentor->SetCallState(CALL_STATE__CALL_OFF);
+ }
+ }
+ //Defer from sending call disconnected event to form, in case Msg AppControl is running,
+ //to avoid PhoneApp from going to EndCall form, where it shows for 3 sec. and automatically closes.
+ if (__pTelEventListener != null && __isMessageAppControlRunning == false)
+ {
+ __pTelEventListener->HandleCallDisconnected(isLastCall, pCallList);
+ }
+
+}
+
+void
+CallPresentationModel::HandleConferenceCall(CallInfo& pCallInfo)
+{
+ if (__pTelEventListener != null)
+ {
+ __pTelEventListener->HandleConferenceCall(pCallInfo);
+ }
+}
+
+void
+CallPresentationModel::HandleIncomingCall(CallInfo& pCallInfo)
+{
+ StartAlert(pCallInfo);
+ if (__pTelEventListener != null)
+ {
+ __pTelEventListener->HandleIncomingCall(pCallInfo);
+ }
+ else
+ {
+ //as base form not created. So no listener set.
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ //Ownership - To be deleted in 'OnSceneActivatedN' of next form
+ ArrayList* pCallInfoList = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pCallInfoList->Construct(1);
+
+ //update list to be passed
+ CallInfo* pIncomingCall = new (std::nothrow) CallInfo();
+ *pIncomingCall = pCallInfo;
+ pCallInfoList->Add(pIncomingCall);
+
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_INCOMINGCALL), pCallInfoList);
+ }
+ if(__pSettingsPresentor != null)
+ {
+ __pSettingsPresentor->SetCallState(CALL_STATE_CALL_VOICE_CONNECTING);
+ }
+}
+
+void
+CallPresentationModel::HandleCallSwapOccured(Tizen::Base::Collection::IListT<CallInfo>& pCallList)
+{
+ if (__pTelEventListener != null)
+ {
+ __pTelEventListener->HandleCallSwapOccured(pCallList);
+ }
+}
+
+void
+CallPresentationModel::HandleConferenceChange(void)
+{
+ if (__pTelEventListener != null)
+ {
+ __pTelEventListener->HandleConferenceChange();
+ }
+}
+
+void
+CallPresentationModel::HandleTelephonyError(int errorCode)
+{
+ if (__pTelEventListener != null)
+ {
+ __pTelEventListener->HandleTelephonyError(errorCode);
+ }
+}
+
--- /dev/null
+//
+// 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 PhnCallRejectInfo.cpp
+ * @brief Call Reject info class
+ */
+#include "PhnCallRejectInfo.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+
+CallRejectInfo::CallRejectInfo(void)
+{
+}
+
+CallRejectInfo::~CallRejectInfo(void)
+{
+}
+
+bool
+CallRejectInfo::operator ==(const CallRejectInfo& rhs) const
+{
+ /*return (this->rowId == rhs.rowId);*/
+ if ((this->phoneNumber == rhs.phoneNumber)
+ && (this->rejectCondition == rhs.rejectCondition))
+ {
+ return true;
+ }
+ return false;
+}
+
+bool
+CallRejectInfo::operator !=(const CallRejectInfo& rhs) const
+{
+ /*return (!(this->rowId == rhs.rowId));*/
+ if ((this->phoneNumber == rhs.phoneNumber)
+ && (this->rejectCondition == rhs.rejectCondition))
+ {
+ return false;
+ }
+ return true;
+}
+
+CallRejectInfo&
+CallRejectInfo::operator =(const CallRejectInfo& rhs)
+{
+ if (this != null)
+ {
+ this->rowId = rhs.rowId;
+ this->phoneNumber.Append(rhs.phoneNumber);
+ this->rejectCondition = rhs.rejectCondition;
+ this->isActivated = rhs.isActivated;
+ }
+ return *this;
+}
--- /dev/null
+//
+// 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 PhnCallSettingDataService.cpp
+ * @brief Call Database class
+ */
+
+#include <FApp.h>
+#include <FSocial.h>
+#include <FIo.h>
+#include "PhnCallSettingDataService.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Io;
+using namespace Tizen::App;
+using namespace Tizen::Social;
+
+CallSettingDataService* CallSettingDataService::__pCallSettingDataService = null;
+Database* CallSettingDataService::__pDatabase = null;
+
+CallSettingDataService::CallSettingDataService(void)
+: __strDbName(App::GetInstance()->GetAppRootPath() + L"data/CallRejectInfoListDataBase")
+{
+ __pStmt = null;
+ __pEnum = null;
+
+ return;
+}
+
+CallSettingDataService::~CallSettingDataService(void)
+{
+ if (__pDatabase != null)
+ {
+ delete __pDatabase;
+ __pDatabase = null;
+ }
+ __pCallSettingDataService = null;
+ return;
+}
+
+CallSettingDataService*
+CallSettingDataService::CreateInstance(void)
+{
+ if (__pCallSettingDataService == null)
+ {
+ __pCallSettingDataService = new (std::nothrow) CallSettingDataService();
+ }
+ return __pCallSettingDataService;
+}
+result
+CallSettingDataService::OpenDatabase(void)
+{
+ result r = E_SUCCESS;
+
+ // create the database if it doesn't exist
+ if (__pDatabase != null)
+ {
+ return E_OBJ_ALREADY_EXIST;
+ }
+ __pDatabase = new (std::nothrow) Database();
+ r = __pDatabase->Construct(__strDbName, true);
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::OpenDatabase() database construct failed");
+
+ r = CreateCallRejectTableDatabase();
+ // TryCatch(r == E_SUCCESS, , "CallSettingDataService::OpenDatabase() call reject Create Table failed");
+ r = CreateSpeedDialTableDatabase();
+ // TryCatch(r == E_SUCCESS, , "CallSettingDataService::OpenDatabase() speed dial Create Table failed");
+
+ return r;
+
+ CATCH:
+ delete __pDatabase;
+ __pDatabase = null;
+ return r;
+}
+
+result
+CallSettingDataService::CreateCallRejectTableDatabase(void)
+{
+ String sqlQuery;
+ result r = E_SUCCESS;
+
+ sqlQuery.Append(L"CREATE TABLE IF NOT EXISTS CallRejectInfoTable(id INTEGER PRIMARY KEY AUTOINCREMENT,phonenumber TEXT,rejectcondition INT,activated INT)");
+
+ r = __pDatabase->ExecuteSql(sqlQuery, true);
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::CreateCallRejectInfoTableDatabase() Create Table failed");
+
+ return r;
+
+ CATCH:
+ return r;
+}
+
+result
+CallSettingDataService::CreateSpeedDialTableDatabase(void)
+{
+ String sqlQuery;
+ result r = E_SUCCESS;
+
+ sqlQuery.Append(L"CREATE TABLE IF NOT EXISTS SpeedDialTable(id INTEGER PRIMARY KEY AUTOINCREMENT,contactInfo TEXT,keyMappedTo INT)");
+
+ r = __pDatabase->ExecuteSql(sqlQuery, true);
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::CreateCallRejectInfoTableDatabase() Create Table failed");
+
+ return r;
+
+ CATCH:
+ return r;
+}
+
+result
+CallSettingDataService::CloseDatabase(void)
+{
+ if (__pEnum != null)
+ {
+ delete __pEnum;
+ __pEnum = null;
+ }
+ if (__pStmt != null)
+ {
+ delete __pStmt;
+ __pStmt = null;
+ }
+ if (__pDatabase != null)
+ {
+ delete __pDatabase;
+ __pDatabase = null;
+ }
+
+ return E_SUCCESS;
+}
+
+result
+CallSettingDataService::AddCallRejectInfoToDatabase(CallRejectInfo* pNewItem)
+{
+ String statement;
+ __pStmt = null;
+ __pEnum = null;
+ result r = E_FAILURE;
+
+ TryCatch(pNewItem != null, , "CallSettingDataService::AddCallRejectInfoToDatabase() no item to add");
+
+ __pDatabase->BeginTransaction();
+
+ statement.Append(L"INSERT INTO CallRejectInfoTable(phonenumber,rejectcondition,activated) VALUES (?,?,?)");
+ __pStmt = __pDatabase->CreateStatementN(statement);
+ r = GetLastResult();
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::AddCallRejectInfoToDatabase() CreateStatementN failed");
+ if (__pStmt != null)
+ {
+ r = __pStmt->BindString(0, pNewItem->phoneNumber);
+ __pStmt->BindInt(1, pNewItem->rejectCondition);
+ __pStmt->BindInt(2, pNewItem->isActivated);
+
+ __pEnum = __pDatabase->ExecuteStatementN(*__pStmt);
+ }
+ r = GetLastResult();
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::AddCallRejectInfoToDatabase() Add CallRejectInfo to DB failed");
+
+ r = __pDatabase->CommitTransaction();
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::AddCallRejectInfoToDatabase() CommitTransaction to DB failed");
+
+ if (__pStmt != null)
+ {
+ delete __pStmt;
+ __pStmt = null;
+ }
+ if (__pEnum != null)
+ {
+ delete __pEnum;
+ __pEnum = null;
+ }
+ return r;
+
+ CATCH:
+ return r;
+}
+
+result
+CallSettingDataService::DeleteCallRejectInfoListFromDatabase(ArrayList* pIndexArray)
+{
+ result r = E_SUCCESS;
+ IEnumerator* pEnum = null;
+ Integer* index;
+
+ TryCatch(pIndexArray != null, , "CallSettingDataService::DeleteCallRejectInfoListFromDatabase() no item to delete");
+
+ pEnum = pIndexArray->GetEnumeratorN();
+ index = null;
+ if (pEnum != null)
+ {
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ index = static_cast<Integer*>(pEnum->GetCurrent());
+ r = DeleteCallRejectInfoFromDatabase(index->ToInt());
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::AddCallRejectInfoToDatabase() Add CallRejectInfo to DB failed");
+ }
+ delete pEnum;
+ pEnum = null;
+ }
+
+ if (pIndexArray != null)
+ {
+ pIndexArray->RemoveAll(true);
+ delete pIndexArray;
+ pIndexArray = null;
+ }
+ return r;
+
+ CATCH:
+ if (pEnum != null)
+ {
+ delete pEnum;
+ pEnum = null;
+ }
+ if (pIndexArray != null)
+ {
+ pIndexArray->RemoveAll(true);
+ delete pIndexArray;
+ pIndexArray = null;
+ }
+ return r;
+}
+
+result
+CallSettingDataService::DeleteCallRejectInfoFromDatabase(int aIndex)
+{
+ String statement;
+ __pStmt = null;
+ __pEnum = null;
+ result r = E_SUCCESS;
+
+ __pDatabase->BeginTransaction();
+
+ statement.Append(L"DELETE FROM CallRejectInfoTable WHERE id = ?");
+ __pStmt = __pDatabase->CreateStatementN(statement);
+ r = GetLastResult();
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::DeleteCallRejectInfoFromDatabase CreateStatementN failed");
+ if (__pStmt != null)
+ {
+ __pStmt->BindInt(0, aIndex);
+ __pEnum = __pDatabase->ExecuteStatementN(*__pStmt);
+ }
+ r = GetLastResult();
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::DeleteCallRejectInfoFromDatabase Delete CallRejectInfo from DB failed");
+
+ __pDatabase->CommitTransaction();
+
+ if (__pStmt != null)
+ {
+ delete __pStmt;
+ __pStmt = null;
+ }
+ if (__pEnum != null)
+ {
+ delete __pEnum;
+ __pEnum = null;
+ }
+ return r;
+
+ CATCH:
+ return r;
+}
+
+result
+CallSettingDataService::UpdateCallRejectInfoDatabase(int aIndex, CallRejectInfo* pCallInfoItem)
+{
+ String statement;
+ __pStmt = null;
+ __pEnum = null;
+ result r = E_SUCCESS;
+
+ TryCatch(pCallInfoItem != null, , "CallSettingDataService::UpdateCallRejectInfoDatabase() no item to update");
+
+ __pDatabase->BeginTransaction();
+
+ statement.Append(L"UPDATE CallRejectInfoTable SET phonenumber=?,rejectcondition=?,activated=? WHERE id=?");
+ __pStmt = __pDatabase->CreateStatementN(statement);
+ r = GetLastResult();
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::UpdateCallRejectInfoDatabase CreateStatementN failed");
+ if (__pStmt != null)
+ {
+ r = __pStmt->BindString(0, pCallInfoItem->phoneNumber);
+ __pStmt->BindInt(1, pCallInfoItem->rejectCondition);
+ __pStmt->BindInt(2, pCallInfoItem->isActivated);
+ __pStmt->BindInt(3, aIndex);
+
+ __pEnum = __pDatabase->ExecuteStatementN(*__pStmt);
+ }
+ r = GetLastResult();
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::UpdateCallRejectInfoDatabase Update CallRejectInfo in DB failed");
+
+ __pDatabase->CommitTransaction();
+
+ if (__pStmt != null)
+ {
+ delete __pStmt;
+ __pStmt = null;
+ }
+ if (__pEnum != null)
+ {
+ delete __pEnum;
+ __pEnum = null;
+ }
+ return r;
+
+ CATCH:
+ return r;
+}
+
+result
+CallSettingDataService::GetCallRejectInfoFromDatabase(int aIndex, CallRejectInfo& dbItem)
+{
+ String statement;
+ __pStmt = null;
+ __pEnum = null;
+ result r = E_SUCCESS;
+ __pDatabase->BeginTransaction();
+ statement.Append(L"SELECT id,phonenumber,rejectcondition,activated FROM CallRejectInfoTable WHERE id=?");
+ __pStmt = __pDatabase->CreateStatementN(statement);
+ r = GetLastResult();
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::GetCallRejectInfoFromDatabase CreateStatementN failed");
+
+ __pStmt->BindInt(0, aIndex);
+ __pEnum = __pDatabase->ExecuteStatementN(*__pStmt);
+ r = GetLastResult();
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::GetCallRejectInfoFromDatabase Get CallRejectInfo from DB failed");
+
+ if (__pEnum != null)
+ {
+ int activateflag;
+ int rejectCondition;
+ __pEnum->GetIntAt(0, dbItem.rowId);
+ __pEnum->GetStringAt(1, dbItem.phoneNumber);
+ __pEnum->GetIntAt(2, rejectCondition);
+ __pEnum->GetIntAt(3, activateflag);
+ dbItem.rejectCondition = (CallRejectMatchCondition)rejectCondition;
+ dbItem.isActivated = (bool)activateflag;
+ }
+ __pDatabase->CommitTransaction();
+
+
+ delete __pStmt;
+ __pStmt = NULL;
+
+ if (__pEnum != null)
+ {
+ delete __pEnum;
+ __pEnum = NULL;
+ }
+ return r;
+
+ CATCH:
+ return r;
+}
+
+result
+CallSettingDataService::GetAllCallRejectInfoFromDatabaseN(ArrayListT<CallRejectInfo>& callRejectInfoList)
+{
+ String sql;
+ __pEnum = null;
+ result r = E_SUCCESS;
+ __pDatabase->BeginTransaction();
+
+ sql.Append(L"SELECT id,phonenumber,rejectcondition,activated from CallRejectInfoTable");
+ __pEnum = __pDatabase->QueryN(sql);
+ r = GetLastResult();
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::GetAllCallRejectInfoFromDatabase Get CallRejectInfo from DB failed");
+
+ //check if the query returned any result and then iterate through the results
+ if (__pEnum != null)
+ {
+ while (__pEnum->MoveNext() == E_SUCCESS)
+ {
+ CallRejectInfo* pCallRejectInfoItem = new (std::nothrow) CallRejectInfo;
+ int activateflag;
+ int rejectCondition;
+ __pEnum->GetIntAt(0, pCallRejectInfoItem->rowId);
+ __pEnum->GetStringAt(1, pCallRejectInfoItem->phoneNumber);
+ __pEnum->GetIntAt(2, rejectCondition);
+ __pEnum->GetIntAt(3, activateflag);
+ pCallRejectInfoItem->rejectCondition = (CallRejectMatchCondition)rejectCondition;
+ pCallRejectInfoItem->isActivated = (bool)activateflag;
+ callRejectInfoList.Add(*pCallRejectInfoItem);
+ }
+ }
+ __pDatabase->CommitTransaction();
+ if (__pEnum != null)
+ {
+ delete __pEnum;
+ __pEnum = NULL;
+ }
+ return r;
+
+ CATCH:
+ return r;
+}
+
+result
+CallSettingDataService::GetCallRejectCount(int& count)
+{
+ String statement;
+ result r = E_SUCCESS;
+ __pStmt = null;
+ __pEnum = null;
+
+ __pDatabase->BeginTransaction();
+ statement.Append(L"SELECT COUNT (*) FROM CallRejectInfoTable");
+ __pStmt = __pDatabase->CreateStatementN(statement);
+ r = GetLastResult();
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::GetCount CreateStatementN failed");
+ if (__pStmt != null)
+ {
+ __pEnum = __pDatabase->ExecuteStatementN(*__pStmt);
+ }
+ r = GetLastResult();
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::GetCount Count from DB failed");
+
+ if (__pEnum != null)
+ {
+ r = __pEnum->MoveNext();
+ __pEnum->GetIntAt(0, count);
+ }
+ __pDatabase->CommitTransaction();
+
+ if (__pStmt != null)
+ {
+ delete __pStmt;
+ __pStmt = NULL;
+ }
+ if (__pEnum != null)
+ {
+ delete __pEnum;
+ __pEnum = NULL;
+ }
+ return r;
+
+ CATCH:
+ return r;
+}
+
+bool
+CallSettingDataService::IsCallToBeRejected(String& phoneNumber)
+{
+ bool isCallToBeRejected = false;
+ String statement;
+ __pStmt = null;
+ __pEnum = null;
+ result r = E_SUCCESS;
+ __pDatabase->BeginTransaction();
+
+ //statement.Append(L"SELECT * FROM CallRejectInfoTable WHERE phonenumber LIKE ?");
+ statement.Append(L"SELECT * FROM CallRejectInfoTable WHERE activated=?");
+
+ __pStmt = __pDatabase->CreateStatementN(statement);
+ r = GetLastResult();
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::SearchFromDataBase CreateStatementN failed");
+
+ //__pStmt->BindString(0, phoneNumber);
+ if (__pStmt != null)
+ {
+ __pStmt->BindInt(0,(int)true);
+ __pEnum = __pDatabase->ExecuteStatementN(*__pStmt);
+ }
+ r = GetLastResult();
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::SearchFromDataBaseN search failed");
+
+ //check if the query returned any result and then iterate through the results
+ if (__pEnum != null)
+ {
+ while (__pEnum->MoveNext() == E_SUCCESS)
+ {
+ CallRejectInfo* pCallRejectInfoItem = new (std::nothrow) CallRejectInfo;
+ int activateflag;
+ int rejectCondition;
+ __pEnum->GetIntAt(0, pCallRejectInfoItem->rowId);
+ __pEnum->GetStringAt(1, pCallRejectInfoItem->phoneNumber);
+ __pEnum->GetIntAt(2, rejectCondition);
+ __pEnum->GetIntAt(3, activateflag);
+ pCallRejectInfoItem->rejectCondition = (CallRejectMatchCondition)rejectCondition;
+ pCallRejectInfoItem->isActivated = (bool)activateflag;
+ if (CheckRejectCondition(phoneNumber, *pCallRejectInfoItem) == true)
+ {
+ delete pCallRejectInfoItem;
+ isCallToBeRejected = true;
+ break;
+ }
+ delete pCallRejectInfoItem;
+ }
+ }
+ __pDatabase->CommitTransaction();
+
+ if (__pStmt != null)
+ {
+ delete __pStmt;
+ __pStmt = NULL;
+ }
+ if (__pEnum != null)
+ {
+ delete __pEnum;
+ __pEnum = NULL;
+ }
+ return isCallToBeRejected;
+
+ CATCH:
+ return isCallToBeRejected;
+}
+
+bool
+CallSettingDataService::CheckRejectCondition(String& phoneNumber, CallRejectInfo& callRejectInfo)
+{
+ bool isCallToBeRejected = false;
+ switch (callRejectInfo.rejectCondition)
+ {
+ case CALL_REJECT_MATCH_EXACTLY:
+ {
+ if (callRejectInfo.phoneNumber.CompareTo(phoneNumber) == 0)
+ {
+ isCallToBeRejected = true;
+ }
+ }
+ break;
+ case CALL_REJECT_MATCH_START:
+ {
+ isCallToBeRejected = phoneNumber.StartsWith(callRejectInfo.phoneNumber, 0);
+ }
+ break;
+ case CALL_REJECT_MATCH_END:
+ {
+ isCallToBeRejected = phoneNumber.EndsWith(callRejectInfo.phoneNumber);
+ }
+ break;
+ case CALL_REJECT_MATCH_INCLUDE:
+ {
+ isCallToBeRejected = phoneNumber.Contains(callRejectInfo.phoneNumber);
+ }
+ break;
+ default:
+ break;
+ }
+
+ return isCallToBeRejected;
+}
+result
+CallSettingDataService::AddSpeedDialInfoToDatabase(SpeedDialInfo* pNewItem)
+{
+ String statement;
+ __pStmt = null;
+ __pEnum = null;
+ result r = E_FAILURE;
+
+ TryCatch(pNewItem != null, , "CallSettingDataService::AddSpeedDialInfoToDatabase() no item to add");
+
+ __pDatabase->BeginTransaction();
+
+ statement.Append(L"INSERT INTO SpeedDialTable(contactInfo,keyMappedTo) VALUES (?,?)");
+ __pStmt = __pDatabase->CreateStatementN(statement);
+ r = GetLastResult();
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::AddSpeedDialInfoToDatabase() CreateStatementN failed");
+ if (__pStmt != null)
+ {
+ r = __pStmt->BindString(0, pNewItem->contactId);
+ __pStmt->BindInt(1, pNewItem->keyMapping);
+
+ __pEnum = __pDatabase->ExecuteStatementN(*__pStmt);
+ }
+ r = GetLastResult();
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::AddSpeedDialInfoToDatabase() Add SpeedDialInfo to DB failed");
+
+ r = __pDatabase->CommitTransaction();
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::AddSpeedDialInfoToDatabase() CommitTransaction to DB failed");
+
+ if (__pStmt != null)
+ {
+ delete __pStmt;
+ __pStmt = null;
+ }
+ if (__pEnum != null)
+ {
+ delete __pEnum;
+ __pEnum = null;
+ }
+ return r;
+
+ CATCH:
+ return r;
+}
+
+result
+CallSettingDataService::DeleteSpeedDialInfoFromDatabase(int aIndex)
+{
+ String statement;
+ __pStmt = null;
+ __pEnum = null;
+ result r = E_SUCCESS;
+
+ __pDatabase->BeginTransaction();
+
+ statement.Append(L"DELETE FROM SpeedDialTable WHERE id = ?");
+ __pStmt = __pDatabase->CreateStatementN(statement);
+ r = GetLastResult();
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::DeleteSpeedDialInfoFromDatabase CreateStatementN failed");
+ if (__pStmt != null)
+ {
+ __pStmt->BindInt(0, aIndex);
+ __pEnum = __pDatabase->ExecuteStatementN(*__pStmt);
+ }
+ r = GetLastResult();
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::DeleteSpeedDialInfoFromDatabase Delete SpeedDialInfo from DB failed");
+
+ __pDatabase->CommitTransaction();
+
+ if (__pStmt != null)
+ {
+ delete __pStmt;
+ __pStmt = null;
+ }
+ if (__pEnum != null)
+ {
+ delete __pEnum;
+ __pEnum = null;
+ }
+ return r;
+
+ CATCH:
+ return r;
+}
+
+result
+CallSettingDataService::UpdateSpeedDialInfoDatabase(int aIndex, SpeedDialInfo* pSpeedDialInfoItem)
+{
+ String statement;
+ __pStmt = null;
+ __pEnum = null;
+ result r = E_SUCCESS;
+
+ TryCatch(pSpeedDialInfoItem != null, , "CallSettingDataService::UpdateSpeedDialInfoDatabase() no item to update");
+
+ __pDatabase->BeginTransaction();
+
+ statement.Append(L"UPDATE SpeedDialTable SET contactInfo=?,keyMappedTo=? WHERE id=?");
+ __pStmt = __pDatabase->CreateStatementN(statement);
+ r = GetLastResult();
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::UpdateSpeedDialInfoDatabase CreateStatementN failed");
+ if (__pStmt != null)
+ {
+ r = __pStmt->BindString(0, pSpeedDialInfoItem->contactId);
+ __pStmt->BindInt(1, pSpeedDialInfoItem->keyMapping);
+ __pStmt->BindInt(2, aIndex);
+
+ __pEnum = __pDatabase->ExecuteStatementN(*__pStmt);
+ }
+ r = GetLastResult();
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::UpdateSpeedDialInfoDatabase Update SpeedDialInfo in DB failed");
+
+ __pDatabase->CommitTransaction();
+
+ if (__pStmt != null)
+ {
+ delete __pStmt;
+ __pStmt = null;
+ }
+ if (__pEnum != null)
+ {
+ delete __pEnum;
+ __pEnum = null;
+ }
+ return r;
+
+ CATCH:
+ return r;
+}
+
+IMapT<int,SpeedDialInfo>*
+CallSettingDataService::GetAllSpeedDialInfoMapFromDatabaseN(void)
+{
+ String sql;
+ __pEnum = null;
+ result r = E_SUCCESS;
+ HashMapT<int,SpeedDialInfo>* pSpeedDialInfoList = null;
+ r = __pDatabase->BeginTransaction();
+
+ sql.Append(L"SELECT id,contactInfo,keyMappedTo from SpeedDialTable");
+ __pEnum = __pDatabase->QueryN(sql);
+ r = GetLastResult();
+ TryCatch(r == E_SUCCESS, , "CallSettingDataService::GetAllSpeedDialInfoFromDatabase Get SpeedDialInfo from DB failed");
+
+ //check if the query returned any result and then iterate through the results
+ if (__pEnum != null)
+ {
+ pSpeedDialInfoList = new (std::nothrow) HashMapT<int,SpeedDialInfo>();
+ pSpeedDialInfoList->Construct(10);
+ while (__pEnum->MoveNext() == E_SUCCESS)
+ {
+ SpeedDialInfo* pSpeedDialInfoItem = new (std::nothrow) SpeedDialInfo();
+ int keyMappedTo;;
+ __pEnum->GetIntAt(0, pSpeedDialInfoItem->rowId);
+ __pEnum->GetStringAt(1, pSpeedDialInfoItem->contactId);
+ __pEnum->GetIntAt(2, keyMappedTo);
+ pSpeedDialInfoItem->keyMapping = keyMappedTo;
+ pSpeedDialInfoList->Add(keyMappedTo ,*pSpeedDialInfoItem);
+ }
+ }
+
+ __pDatabase->CommitTransaction();
+
+ if (__pEnum != null)
+ {
+ delete __pEnum;
+ __pEnum = NULL;
+ }
+ SyncWithCurrentAddressbookStatus(pSpeedDialInfoList);
+ return pSpeedDialInfoList;
+
+ CATCH:
+ return pSpeedDialInfoList;
+}
+
+void
+CallSettingDataService::SyncWithCurrentAddressbookStatus(HashMapT<int,SpeedDialInfo>* pSpeedDialInfoList)
+{
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+ Addressbook* pAddressbook = pAddressbookManager->GetAddressbookN(DEFAULT_ADDRESSBOOK_ID);
+
+ if(pAddressbook == null || pSpeedDialInfoList == null)
+ {
+ return;
+ }
+
+ IListT<SpeedDialInfo>* pSpeedDialList = pSpeedDialInfoList->GetValuesN();
+ IEnumeratorT<SpeedDialInfo> *pSpeedDialListEnum = pSpeedDialList->GetEnumeratorN();
+ while(pSpeedDialListEnum->MoveNext() == E_SUCCESS)
+ {
+ SpeedDialInfo speeDialInfo;
+ RecordId recordId = INVALID_RECORD_ID;
+ pSpeedDialListEnum->GetCurrent(speeDialInfo);
+ Integer::Parse(speeDialInfo.contactId, recordId);
+
+ Contact* pMappedContact = pAddressbook->GetContactN(recordId);
+ if(pMappedContact == null)
+ {
+ DeleteSpeedDialInfoFromDatabase(speeDialInfo.rowId);
+ pSpeedDialInfoList->Remove(speeDialInfo.keyMapping);
+ }
+ else
+ {
+ delete pMappedContact;
+ }
+ }
+ delete pAddressbook;
+ delete pSpeedDialListEnum;
+ delete pSpeedDialList;
+
+}
+
+String*
+CallSettingDataService::GetSpeedDialContactN(int aIndex)
+{
+ result r = E_SUCCESS;
+ String statement;
+ __pStmt = null;
+ __pEnum = null;
+ String* fetchedInfo = null;
+
+ __pDatabase->BeginTransaction();
+
+ statement.Append(L"SELECT contactInfo from SpeedDialTable WHERE keyMappedTo=?");
+ __pStmt = __pDatabase->CreateStatementN(statement);
+ r = GetLastResult();
+ TryCatch(r == E_SUCCESS, , "GetSpeedDialInfoN - CreateStatementN failed");
+ if (__pStmt != null)
+ {
+ __pStmt->BindInt(0, aIndex);
+
+ __pEnum = __pDatabase->ExecuteStatementN(*__pStmt);
+ }
+ r = GetLastResult();
+ TryCatch(r == E_SUCCESS, , "GetSpeedDialInfoN - ExecuteStatementN failed");
+
+ //check if the query returned any result and then iterate through the results
+ if (__pEnum != null && __pEnum->MoveNext() == E_SUCCESS)
+ {
+ String contact;
+ __pEnum->GetStringAt(0, contact);
+ fetchedInfo = new (std::nothrow) String(contact);
+ }
+
+ __pDatabase->CommitTransaction();
+
+ if (__pStmt != null)
+ {
+ delete __pStmt;
+ __pStmt = null;
+ }
+ if (__pEnum != null)
+ {
+ delete __pEnum;
+ __pEnum = null;
+ }
+ return fetchedInfo;
+
+ CATCH:
+ return fetchedInfo;
+}
--- /dev/null
+//
+// 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 PhnCalllogManager.cpp
+ * @brief This class provides call log APIs
+ */
+#include "PhnCalllogManager.h"
+#include <FLocales.h>
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Utility;
+using namespace Tizen::System;
+using namespace Tizen::Locales;
+
+static const int MAX_CALL_LOG_COUNT = 100;
+CallLogManager* CallLogManager::__pCallogManager = null;
+
+result
+LogListComparer::Compare(const CallLogDetails& obj1, const CallLogDetails& obj2, int& cmp) const
+{
+ CallLogDetails* log1 = const_cast<CallLogDetails*>((&obj1));
+ CallLogDetails* log2 = const_cast<CallLogDetails*>((&obj2));
+ if(log1 == null || log2 == null)
+ {
+ return E_FAILURE;
+ }
+ log1->ConvertTimetoDateTime();
+ DateTime date1 = log1->GetDateTime();
+ //AppLog(" %d %d %s %d:%d:%d", log1->GetCalllogDbId(), log1->GetCalllogType(), log1->GetPhoneNumber(), date1.GetDay(), date1.GetMonth(), date1.GetYear());
+ log2->ConvertTimetoDateTime();
+ DateTime date2 = log2->GetDateTime();
+ //AppLog(" %d %d %s %d:%d:%d", log2->GetCalllogDbId(), log2->GetCalllogType(), log2->GetPhoneNumber(), date2.GetDay(), date2.GetMonth(), date2.GetYear());
+ cmp = date2.CompareTo(date1);
+ return E_SUCCESS;
+}
+
+CallLogDetails::CallLogDetails(void)
+{
+ dateTime.SetValue(0,0,0);
+ first_name = null;
+ last_name = null;
+ display_name = null;
+ contact_image_path = null;
+ phone_number = null;
+ short_message = null;
+ contact_db_id = -1;
+}
+
+CallLogDetails::~CallLogDetails(void)
+{
+ //NOTE: none of the fields are owned. Free() them will lead to crash.
+}
+
+bool
+CallLogDetails::operator ==(const CallLogDetails& rhs) const
+{
+ if(this->calllog_db_id == rhs.calllog_db_id)
+ {
+ return true;
+ }
+ return false;
+}
+
+bool
+CallLogDetails::operator !=(const CallLogDetails& rhs) const
+{
+ if(this->calllog_db_id != rhs.calllog_db_id)
+ {
+ return true;
+ }
+ return false;
+}
+
+CallLogDetails&
+CallLogDetails::operator =(const CallLogDetails& rhs)
+{
+ this->calllog_db_id = rhs.calllog_db_id;
+ this->contact_db_id = rhs.contact_db_id;
+ this->calllog_type = rhs.calllog_type;
+ /*if(rhs.contact_image_path != null)
+ {
+ this->contact_image_path = strdup(rhs.contact_image_path);
+ }
+ if(rhs.display_name != null)
+ {
+ this->display_name = strdup(rhs.display_name);
+ }*/
+
+ this->duration_sec = rhs.duration_sec;
+
+ /*if(rhs.first_name != null)
+ {
+ this->first_name = strdup(rhs.first_name);
+ }
+
+ if(rhs.last_name != null)
+ {
+ this->last_name = strdup(rhs.last_name);
+ }
+*/
+ if(rhs.phone_number != null)
+ {
+ this->phone_number = strdup(rhs.phone_number);
+ }
+
+ /*if(rhs.short_message != null)
+ {
+ this->short_message = strdup(rhs.short_message);
+ }*/
+
+ this->startTime = rhs.startTime;
+ return *this;
+}
+
+
+void
+CallLogDetails::SetCalllogDbId(int id)
+{
+ calllog_db_id = id;
+}
+
+
+int
+CallLogDetails::GetCalllogDbId(void)
+{
+ return calllog_db_id;
+}
+
+void
+CallLogDetails::SetCalllogType(contacts_phone_log_type_e type)
+{
+ switch (type)
+ {
+ case CONTACTS_PLOG_TYPE_VOICE_INCOMMING:
+ calllog_type = CALL_LOG_TYPE_VOICE_INCOMING;
+ break;
+ case CONTACTS_PLOG_TYPE_VOICE_OUTGOING:
+ calllog_type = CALL_LOG_TYPE_VOICE_OUTGOING;
+ break;
+ case CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN:
+ calllog_type = CALL_LOG_TYPE_VOICE_MISSED;
+ break;
+ case CONTACTS_PLOG_TYPE_VOICE_REJECT:
+ calllog_type = CALL_LOG_TYPE_VOICE_REJECTED;
+ break;
+ case CONTACTS_PLOG_TYPE_VOICE_BLOCKED:
+ calllog_type = CALL_LOG_TYPE_VOICE_BLOCKED;
+ break;
+ default:
+ break;
+ }
+}
+
+CallLogType
+CallLogDetails::GetCalllogType(void)
+{
+ return calllog_type;
+}
+
+void
+CallLogDetails::SetContactDbId(int id)
+{
+ contact_db_id = id;
+}
+
+int
+CallLogDetails::GetContactDbId(void)
+{
+ return contact_db_id;
+}
+
+void
+CallLogDetails::SetFirstName(char* name)
+{
+ first_name = strdup(name);
+}
+
+char*
+CallLogDetails::GetFirstName(void)
+{
+ return first_name;
+}
+
+void
+CallLogDetails::SetLastName(char* name)
+{
+ last_name = strdup(name);
+}
+
+char*
+CallLogDetails::GetLastName(void)
+{
+ return last_name;
+}
+
+void
+CallLogDetails::SetDisplayName(char* name)
+{
+ display_name = strdup(name);
+}
+
+char*
+CallLogDetails::GetDisplayName(void)
+{
+ return display_name;
+}
+
+void
+CallLogDetails::SetContactImagePath(char* name)
+{
+ contact_image_path = strdup(name);
+}
+
+char*
+CallLogDetails::GetContactImagePath(void)
+{
+ return contact_image_path;
+}
+
+void
+CallLogDetails::SetPhoneNumber(char* name)
+{
+ phone_number = strdup(name);
+}
+
+char*
+CallLogDetails::GetPhoneNumber(void)
+{
+ return phone_number;
+}
+
+void
+CallLogDetails::SetShortMessage(char* name)
+{
+ short_message = strdup(name);
+}
+
+char*
+CallLogDetails::GetShortMessage(void)
+{
+ return short_message;
+}
+
+void
+CallLogDetails::ConvertTimetoDateTime(void)
+{
+ DateTime dtNow;
+ struct tm* time = null;
+ time = gmtime(&startTime);
+ LocaleManager localManager;
+ TimeZone tz;
+ if(time != null)
+ {
+ dtNow.SetValue(time->tm_year+1900,time->tm_mon+1, time->tm_mday,time->tm_hour, time->tm_min, time->tm_sec);
+
+ }
+ localManager.Construct();
+ tz = localManager.GetSystemTimeZone();
+ dateTime = tz.UtcTimeToWallTime(dtNow);
+
+
+}
+
+void
+CallLogDetails::SetStartTime(time_t time)
+{
+ startTime = time;
+ ConvertTimetoDateTime();
+}
+
+time_t
+CallLogDetails::GetStartTime(void)
+{
+ return startTime;
+}
+
+DateTime
+CallLogDetails::GetDateTime(void)
+{
+ return dateTime;
+}
+
+void
+CallLogDetails::SetDuration(int duration)
+{
+ duration_sec = duration;
+}
+
+int
+CallLogDetails::GetDuration(void)
+{
+ return duration_sec;
+}
+
+CallLogManager*
+CallLogManager::GetInstance(void)
+{
+ if(__pCallogManager == null)
+ {
+ CreateInstance();
+ }
+ return __pCallogManager;
+}
+
+void
+CallLogManager::CreateInstance(void)
+{
+ __pCallogManager = new CallLogManager();
+ result r = __pCallogManager->Construct();
+ if(IsFailed(r))
+ {
+ delete __pCallogManager;
+ __pCallogManager = null;
+ return;
+ }
+ std::atexit(DestroyInstance);
+}
+void
+CallLogManager::DestroyInstance(void)
+{
+ contacts_disconnect2();
+ delete __pCallogManager;
+}
+result
+CallLogManager::Construct(void)
+{
+ int ret = contacts_connect2();
+ if(ret != 0)
+ {
+ return E_FAILURE;
+ }
+
+ __pCalllogList = new (std::nothrow) LinkedListT<CallLogDetails>;
+ __pCalllogChangeListerners = new (std::nothrow) ArrayListT<ICalllogChangeListener*>;
+ __pCalllogChangeListerners->Construct(10);
+ __pCalllogDBIds = new (std::nothrow) HashMapT<int,int>();
+ __pCalllogDBIds->Construct(100);
+
+ GetAllCallogDataFromDatabseCB();
+ SortCalllogList();
+ //TODO
+ //calllog_add_calllog_db_changed_cb(changed_db_cb, this);
+ return E_SUCCESS;
+
+}
+///////////////////////////////////////Calllog Manager////////////////////////////////////////////////////////////////////////////////
+CallLogManager::CallLogManager(void)
+{
+ __pCalllogList = null;
+ __pCalllogListByNumber = null;
+ __pNumber = null;
+ __pCalllogChangeListerners = null;
+}
+
+CallLogManager::~CallLogManager(void)
+{
+ if (__pCalllogList != null)
+ {
+ __pCalllogList->RemoveAll();
+ delete __pCalllogList;
+ __pCalllogList = null;
+ }
+ if(__pCalllogListByNumber != null)
+ {
+ __pCalllogListByNumber = null;
+ }
+ if(__pNumber != null)
+ {
+ delete __pNumber;
+ __pNumber = null;
+ }
+ if(__pCalllogChangeListerners != null)
+ {
+ delete __pCalllogChangeListerners;
+ }
+ __pCallogManager = null;
+}
+
+unsigned long
+CallLogManager::GetDuration(long long start_time)
+{
+ time_t curr_time;
+ unsigned long call_duration_in_sec = 50;
+ curr_time = time(0);
+ /*if(start_time != 0)
+ {
+ start_time /= 1000;
+ }*/
+ call_duration_in_sec = curr_time - start_time;
+ return call_duration_in_sec;
+}
+
+result
+CallLogManager::AddCallogInfoToDatabase(CallInfo* calllogInfo)
+{
+ AppLog(" AddVoiceCallInfo Entry");
+ int duration = 0;
+ long long startTime;
+
+ if(calllogInfo != null)
+ {
+ CallLogType callLogType = calllogInfo->GetCalllogType();
+ contacts_phone_log_type_e logType = CONTACTS_PLOG_TYPE_NONE;
+ switch (callLogType)
+ {
+ case CALL_LOG_TYPE_VOICE_INCOMING:
+ logType = CONTACTS_PLOG_TYPE_VOICE_INCOMMING;
+ break;
+ case CALL_LOG_TYPE_VOICE_OUTGOING:
+ logType = CONTACTS_PLOG_TYPE_VOICE_OUTGOING;
+ break;
+ case CALL_LOG_TYPE_VOICE_MISSED:
+ logType = CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN;
+ break;
+ case CALL_LOG_TYPE_VOICE_REJECTED:
+ logType = CONTACTS_PLOG_TYPE_VOICE_REJECT;
+ break;
+ case CALL_LOG_TYPE_VOICE_BLOCKED:
+ logType = CONTACTS_PLOG_TYPE_VOICE_BLOCKED;
+ break;
+ default:
+ break;
+ }
+ startTime = calllogInfo->GetCallNotificationTime();
+ if ((logType == CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN)
+ || (logType == CONTACTS_PLOG_TYPE_VOICE_REJECT)
+ || (logType == CONTACTS_PLOG_TYPE_VOICE_BLOCKED))
+ {
+ duration = 0;
+ }
+ else
+ {
+ //start time is in miliseconds . so convert to seconds and set it to time_t format.
+ long long connectTime = calllogInfo->GetCallConnectTime();
+ if(connectTime == 0 || connectTime < 0)
+ {
+ connectTime = time(null);
+ }
+ else
+ {
+ connectTime = calllogInfo->GetCallConnectTime()/ 1000;
+ }
+ duration = (int)GetDuration(connectTime);
+ }
+
+ String PhNumber(L"");
+ ByteBuffer* pByteBuffer = null;
+
+ if(calllogInfo->GetContactNumber().IsEmpty() == false)
+ {
+ PhNumber.Append(calllogInfo->GetContactNumber());
+ pByteBuffer = StringUtil::StringToUtf8N(PhNumber);
+ }
+
+
+ contacts_record_h hContactLog=0;
+ int ret = contacts_record_create(_contacts_phone_log._uri,&hContactLog);
+ if (ret != 0)
+ {
+ return E_FAILURE;
+ }
+ int id;
+
+
+ if (contacts_record_set_int(hContactLog,_contacts_phone_log.log_type,logType) != CONTACTS_ERROR_NONE)
+ {
+ AppLog(" calllog_set_type is failed");
+ }
+ else if (contacts_record_set_int(hContactLog,_contacts_phone_log.log_time,startTime/1000) != CONTACTS_ERROR_NONE)
+ {
+ AppLog(" calllog_set_time is failed");
+ }
+ else if (contacts_record_set_int(hContactLog,_contacts_phone_log.extra_data1,duration) != CONTACTS_ERROR_NONE)
+ {
+ AppLog(" calllog_set_duration is failed");
+ }
+ else if ((pByteBuffer != null) && (contacts_record_set_str(hContactLog,_contacts_phone_log.address,(const char*) pByteBuffer->GetPointer()) != CONTACTS_ERROR_NONE))
+ {
+ AppLog(" calllog_set_number is failed");
+ }
+ else if (contacts_db_insert_record(hContactLog,&id) != CONTACTS_ERROR_NONE)
+ {
+ AppLog(" calllog_insert_to_db is failed");
+ }
+ else
+ {
+ AppLog(" Call log is added successfully");
+ }
+
+ }
+ changed_db_cb();
+ AppLog(" AddVoiceCallInfo Exit");
+ return E_SUCCESS;
+}
+
+void
+CallLogManager::CopyDataToCallLogDetails(CallLogDetails* calllogInfo , contacts_record_h getrec)
+{
+ int logid=0;
+ contacts_record_get_int(getrec,_contacts_phone_log.id,&logid);
+ calllogInfo->SetCalllogDbId(logid);
+
+ contacts_phone_log_type_e logType=CONTACTS_PLOG_TYPE_NONE;
+ contacts_record_get_int(getrec,_contacts_phone_log.log_type,(int*)&logType);
+ calllogInfo->SetCalllogType(logType);
+
+ int log_time=0;
+ contacts_record_get_int(getrec,_contacts_phone_log.log_time,&log_time);
+ calllogInfo->SetStartTime((time_t)log_time);
+
+ char* address = null;
+ int ret = contacts_record_get_str(getrec,_contacts_phone_log.address,&address);
+ if(ret == 0 && address != null)
+ {
+ calllogInfo->SetPhoneNumber(address);
+ }
+
+ int duration=0;
+ contacts_record_get_int(getrec,_contacts_phone_log.extra_data1,&duration);
+ calllogInfo->SetDuration(duration);
+
+ char* shortMsg=0;
+ contacts_record_get_str(getrec,_contacts_phone_log.extra_data2,&shortMsg);
+ if(shortMsg)
+ calllogInfo->SetShortMessage(shortMsg);
+
+}
+
+bool
+CallLogManager::GetAllCallogDataFromDatabseCB()
+{
+ contacts_list_h list;
+ int ret;
+ int calLogCount = 0;
+
+ contacts_db_get_count(_contacts_phone_log._uri,&calLogCount);
+
+ if(calLogCount > MAX_CALL_LOG_COUNT)
+ {
+ ret = contacts_db_get_all_records(_contacts_phone_log._uri,calLogCount - MAX_CALL_LOG_COUNT,MAX_CALL_LOG_COUNT,&list);
+ }
+ else
+ {
+ ret = contacts_db_get_all_records(_contacts_phone_log._uri,0,MAX_CALL_LOG_COUNT,&list);
+ }
+ if (ret != 0)
+ {
+ return false;
+ }
+
+ unsigned int count;
+
+ ret = contacts_list_get_count(list,&count);
+ contacts_list_first(list);
+ for (unsigned int i = 0; i < count; i++)
+ {
+ CallLogDetails* calllogInfo = new CallLogDetails();
+
+ contacts_record_h getrec=0;
+ ret = contacts_list_get_current_record_p(list,&getrec);
+ if(ret == 0)
+ {
+ contacts_phone_log_type_e logType=CONTACTS_PLOG_TYPE_NONE;
+ contacts_record_get_int(getrec,_contacts_phone_log.log_type,(int*)&logType);
+
+ if(logType == CONTACTS_PLOG_TYPE_VOICE_INCOMMING ||
+ logType == CONTACTS_PLOG_TYPE_VOICE_OUTGOING ||
+ logType == CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN||
+ logType == CONTACTS_PLOG_TYPE_VOICE_REJECT ||
+ logType == CONTACTS_PLOG_TYPE_VOICE_BLOCKED)
+ {
+
+ CopyDataToCallLogDetails(calllogInfo, getrec);
+ if(__pCalllogDBIds->Add(calllogInfo->GetCalllogDbId(),calllogInfo->GetCalllogDbId()) == E_SUCCESS)
+ {
+ __pCalllogList->InsertAt(*calllogInfo, 0);
+ }
+ }
+ }
+ delete calllogInfo;
+ //move to next record
+ ret = contacts_list_next(list);
+ if (ret != 0)
+ {
+ continue;
+ }
+ contacts_record_destroy(getrec,true);
+ }
+
+ return true;
+}
+
+
+void
+CallLogManager::ResetAndNotifyCalllogData(void)
+{
+ if(__pCalllogList != null)
+ {
+ __pCalllogList->RemoveAll();
+ delete __pCalllogList;
+ }
+ if(__pCalllogDBIds != null)
+ {
+ __pCalllogDBIds->RemoveAll();
+ delete __pCalllogDBIds;
+ }
+
+ __pCalllogList = new (std::nothrow) LinkedListT<CallLogDetails>;
+ __pCalllogDBIds = new (std::nothrow) HashMapT<int,int>;
+ __pCalllogDBIds->Construct(100);
+
+ GetAllCallogDataFromDatabseCB();
+ SortCalllogList();
+
+ //__pCalllogChangeListerners->GetEnumeratorN();
+
+ IEnumeratorT<ICalllogChangeListener*>* pListenerEnum = null;
+ result r = E_FAILURE;
+ if (__pCalllogChangeListerners != null)
+ {
+ pListenerEnum = __pCalllogChangeListerners->GetEnumeratorN();
+ while ((r = pListenerEnum->MoveNext()) != E_OUT_OF_RANGE)
+ {
+ ICalllogChangeListener* pListener;
+ r = pListenerEnum->GetCurrent(pListener);
+ pListener->OnCalllogChanged();
+
+ }
+ }
+
+}
+
+
+
+IListT<CallLogDetails>*
+CallLogManager::GetCalllogListByNumValues(void) //to be verified
+{
+ if(__pCalllogListByNumber != null)
+ {
+ //return __pCalllogListByNumber->GetValuesN();
+ return __pCalllogListByNumber->GetItemsN(0, __pCalllogListByNumber->GetCount());
+ }
+ return null;
+}
+
+bool
+CallLogManager::GetCallogListByNumberFromDatabaseCB(char* number)
+{
+
+ contacts_filter_h filter=NULL;
+ contacts_list_h list=NULL;
+ contacts_query_h query = NULL;
+ unsigned int count = 0;
+ int ret = 0;
+
+ contacts_filter_create(_contacts_phone_log._uri,&filter);
+ contacts_filter_add_str(filter,_contacts_phone_log.address,CONTACTS_MATCH_EXACTLY,number);
+ contacts_query_create(_contacts_phone_log._uri,&query);
+ contacts_query_set_filter(query,filter);
+
+ ret = contacts_db_get_records_with_query(query,0,0,&list);
+ if (ret != 0)
+ {
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+ return false;
+ }
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+
+
+ contacts_list_get_count(list,&count);
+ contacts_list_first(list);
+ for(unsigned int i=0;i<count;i++)
+ {
+ CallLogDetails* calllogInfo = new CallLogDetails();
+ contacts_record_h getrec=0;
+ result ret = contacts_list_get_current_record_p(list,&getrec);
+ if(ret == 0)
+ {
+ //__pCalllogListByNumber->Add( calllogInfo->GetCalllogDbId(), *calllogInfo);
+ contacts_phone_log_type_e logType=CONTACTS_PLOG_TYPE_NONE;
+ contacts_record_get_int(getrec,_contacts_phone_log.log_type,(int*)&logType);
+
+ if(logType == CONTACTS_PLOG_TYPE_VOICE_INCOMMING ||
+ logType == CONTACTS_PLOG_TYPE_VOICE_OUTGOING ||
+ logType == CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN||
+ logType == CONTACTS_PLOG_TYPE_VOICE_REJECT ||
+ logType == CONTACTS_PLOG_TYPE_VOICE_BLOCKED)
+ {
+ CopyDataToCallLogDetails(calllogInfo, getrec);
+ __pCalllogListByNumber->Add(*calllogInfo); //to be verified
+ }
+ }
+
+ delete calllogInfo;
+ ret = contacts_list_next(list);
+ if (ret != 0)
+ {
+ continue;
+ }
+ contacts_record_destroy(getrec,true);
+ }
+
+ return true;
+}
+
+Tizen::Base::Collection::ArrayListT<CallLogDetails>*
+CallLogManager::GetCallogListByNumberFromDatabaseN(char* number)
+{
+ __pCalllogListByNumber = new (std::nothrow) Tizen::Base::Collection::ArrayListT<CallLogDetails>(); //to be verified
+ __pCalllogListByNumber->Construct(100);
+ if(__pNumber != null)
+ {
+ delete __pNumber;
+ }
+ int len = strlen(number) + 1;
+ __pNumber = new (std::nothrow) char[len];
+ strcpy(__pNumber,number);
+
+ GetCallogListByNumberFromDatabaseCB(number);
+
+ if (__pCalllogListByNumber->GetCount() > 0)
+ {
+ SortCalllogListByNumber();
+ return __pCalllogListByNumber;
+ }
+ delete __pCalllogListByNumber;
+ __pCalllogListByNumber = null;
+ return null;
+}
+
+HashMapT<int, CallLogDetails>*
+CallLogManager::GetCallogListByUnknownNumberFromDatabaseN(char* number)
+{
+ //Used to fetch list of call from unknown numbers from logs.
+ __pCalllogUnkownListByNumber = new (std::nothrow) HashMapT<int, CallLogDetails>();
+ __pCalllogUnkownListByNumber->Construct(100);
+ if(__pNumber != null)
+ {
+ delete __pNumber;
+ }
+ int len = strlen(number) + 1;
+ __pNumber = new (std::nothrow) char[len];
+ strcpy(__pNumber,number);
+
+ GetCallogListByNumberFromDatabaseCB(number);
+ if (__pCalllogUnkownListByNumber->GetCount() > 0)
+ {
+ return __pCalllogUnkownListByNumber;
+ }
+ delete __pCalllogUnkownListByNumber;
+ __pCalllogUnkownListByNumber = null;
+ return null;
+}
+
+void
+CallLogManager::changed_db_cb()
+{
+ ResetAndNotifyCalllogData();
+}
+
+
+void
+CallLogManager::DeleteCalllogByDbId(int dbId)
+{
+ int ret = 0;
+ contacts_filter_h filter=NULL;
+ contacts_list_h list=NULL;
+ contacts_query_h query = NULL;
+ unsigned int count;
+
+ contacts_filter_create(_contacts_phone_log._uri,&filter);
+ contacts_filter_add_int(filter,_contacts_phone_log.id,CONTACTS_MATCH_EQUAL,dbId);
+ contacts_query_create(_contacts_phone_log._uri,&query);
+ contacts_query_set_filter(query,filter);
+
+ ret = contacts_db_get_records_with_query(query,0,0,&list);
+ if (ret != 0)
+ {
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+ return ;
+ }
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+
+
+ ret = contacts_list_get_count(list,&count);
+ contacts_list_first(list);
+ for(unsigned int i=0;i<count;i++)
+ {
+ contacts_record_h getrec=0;
+ ret = contacts_list_get_current_record_p(list,&getrec);
+ contacts_db_delete_record(_contacts_phone_log._uri,dbId);
+ contacts_record_destroy(getrec,true);
+ changed_db_cb();
+ }
+
+}
+
+void
+CallLogManager::DeleteAllCalllog(void)
+{
+ int count =0;
+
+ AppLogDebug("Enter");
+ count = __pCalllogList->GetCount();
+
+ for(int i=0; i< count; i++)
+ {
+ CallLogDetails latestCallLog;
+ if(__pCalllogList->GetAt(i,latestCallLog) == E_SUCCESS)
+ {
+ contacts_db_delete_record(_contacts_phone_log._uri,latestCallLog.GetCalllogDbId());
+ }
+ }
+ AppLogDebug("Exit");
+ contacts_phone_log_reset_statistics();
+ changed_db_cb();
+}
+
+int
+CallLogManager::GetAllCalllogCount(void)
+{
+ if(__pCalllogList != null)
+ {
+ return __pCalllogList->GetCount();
+ }
+ return 0;
+}
+
+int
+CallLogManager::GetCalllogCountByNumber(void)
+{
+ if(__pCalllogListByNumber != null)
+ {
+ return __pCalllogListByNumber->GetCount();
+ }
+ return 0;
+}
+
+void
+CallLogManager::SortCalllogList(void)
+{
+ LogListComparer cmp;
+ __pCalllogList->Sort(cmp);
+}
+
+void
+CallLogManager::SortCalllogListByNumber(void) //to be verified
+{
+ LogListComparer cmp;
+ __pCalllogListByNumber->Sort(cmp);
+}
+
+String*
+CallLogManager::GetLatestCallLogFromDbN(void)
+{
+ String* latestNumber = null;
+ if(__pCalllogList != null && __pCalllogList->GetCount() > 0)
+ {
+ CallLogDetails latestCallLog;
+ if(__pCalllogList->GetAt(0,latestCallLog) == E_SUCCESS)
+ {
+ latestNumber = new String(latestCallLog.GetPhoneNumber());
+ }
+ }
+
+ return latestNumber;
+}
+
+result CallLogManager::GetCallLogItemAtIndex(int index, CallLogDetails& calllogInfo)
+{
+ return __pCalllogList->GetAt(index,calllogInfo);
+}
+
+
+
+
+void CallLogManager::AddCalllogChangeListener(ICalllogChangeListener& listner )
+{
+ if(!__pCalllogChangeListerners->Contains(&listner))
+ __pCalllogChangeListerners->Add(&listner);
+
+}
+
+void CallLogManager::RemoveCalllogChangeListner(ICalllogChangeListener& listner)
+{
+ __pCalllogChangeListerners->Remove(&listner);
+}
+
+void CallLogManager::GetCalllogContactName(String number,String& name)
+{
+
+ ByteBuffer* pByteBuffer;
+ char * charname=NULL;
+ pByteBuffer = StringUtil::StringToUtf8N(number);
+
+ contacts_filter_h filter=NULL;
+ contacts_list_h list=NULL;
+ contacts_query_h query = NULL;
+ unsigned int count = 0;
+
+ contacts_filter_create(_contacts_contact_number._uri,&filter);
+ contacts_filter_add_str(filter,_contacts_contact_number.number,CONTACTS_MATCH_EXACTLY,(const char*)pByteBuffer->GetPointer());
+ contacts_query_create(_contacts_contact_number._uri,&query);
+ contacts_query_set_filter(query,filter);
+
+ int ret = contacts_db_get_records_with_query(query,0,0,&list);
+ if (ret != 0)
+ {
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+ return ;
+ }
+
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+
+
+ contacts_list_get_count(list,&count);
+ AppLogTag("Amith","%d",count);
+ if(count > 0)
+ {
+ contacts_record_h getrec=0;
+ contacts_list_first(list);
+ contacts_list_get_current_record_p(list,&getrec);
+
+ contacts_record_get_str(getrec,_contacts_contact_number.display_name,&charname);
+ AppLogTag("Amith","%s",charname);
+ if(charname)
+ {
+ String buffer(charname);
+ name.Clear();
+ name.Append(buffer);
+
+ }
+ contacts_record_destroy(getrec,true);
+ }
+
+
+
+
+}
--- /dev/null
+//
+// 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 CommonUtils.cpp
+ * @brief commonly used functions
+ */
+
+#include <FApp.h>
+#include <FMedia.h>
+#include <FGraphics.h>
+#include "PhnAppUtility.h"
+#include "PhnCommonUtils.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Base::Collection;
+
+const int ID_NAME_STRING = 100;
+const int ID_NUMBER_STRING = 101;
+const int ID_TIME_STRING = 102;
+const int ID_CONTACT_BITMAP = 103;
+const int ID_CALLTYPE_BITMAP = 104;
+
+
+const int X_TEXT_LINE1_ITEM = 16;
+const int Y_TEXT_LINE1_ITEM = 10;
+const int H_TEXT_LINE1_ITEM = 60;
+const int W_TEXT_LINE1_ITEM = 560;
+
+const int X_TEXT_LINE2_ITEM = 64;
+const int Y_TEXT_LINE2_ITEM = 70;
+const int H_TEXT_LINE2_ITEM = 48;
+const int W_TEXT_LINE2_ITEM = 256;
+
+const int X_TEXT_TIME_ITEM = 320;
+const int Y_TEXT_TIME_ITEM = 70;
+const int H_TEXT_TIME_ITEM = 48;
+const int W_TEXT_TIME_ITEM = 256;
+
+const int X_CONTACT_BITMAP_ITEM = 592;
+const int Y_CONTACT_BITMAP_ITEM = 0;
+const int H_CONTACT_BITMAP_ITEM = 128;
+const int W_CONTACT_BITMAP_ITEM = 128;
+
+const int X_CALLTYPE_BITMAP_ITEM = 16;
+const int Y_CALLTYPE_BITMAP_ITEM = 70 + 8;
+const int H_CALLTYPE_BITMAP_ITEM = 32;
+const int W_CALLTYPE_BITMAP_ITEM = 32;
+
+const int X_DIALER_BTN_TXT = 13;
+const int W_DIALER_BTN_NUM_TXT = 77;
+const int W_DIALER_BTN_ALPHA_TXT = 121;
+
+const int W_ENRICHED_TEXT = 190;
+const int X_ENRICHED_TEXT = 143;
+
+Font*
+DialUtil::GetTextFontN(int textFontStyle)
+{
+ Font* font = new (std::nothrow) Font();
+
+ switch (textFontStyle)
+ {
+ case FONT_CALLING_TEXT:
+ {
+ font->Construct(FONT_STYLE_PLAIN, 94);
+ }
+ break;
+
+ case FONT_KEYPAD_NUMBER:
+ {
+ font->Construct(FONT_STYLE_PLAIN, 116);
+ }
+ break;
+
+ case FONT_KEYPAD_TEXT:
+ {
+ font->Construct(FONT_STYLE_BOLD, 40);
+ }
+ break;
+
+ case FONT_KEYPAD_P:
+ {
+ font->Construct(FONT_STYLE_BOLD, 56);
+ }
+ break;
+
+ case FONT_KEYPAD_PLUS:
+ {
+ font->Construct(FONT_STYLE_BOLD, 64);
+ }
+ break;
+
+ case FONT_KEYPAD_CANCEL:
+ {
+ font->Construct(FONT_STYLE_PLAIN, 34);
+ }
+ break;
+
+ case FONT_SUGGESTION_NAME:
+ {
+ font->Construct(FONT_STYLE_PLAIN, 40);
+ }
+ break;
+
+ case FONT_SUGGESTION_MOBILE:
+ {
+ font->Construct(FONT_STYLE_PLAIN, 35);
+ }
+ break;
+
+ case FONT_SUGGESTION_NUMBER:
+ {
+ font->Construct(FONT_STYLE_PLAIN, 35);
+ }
+ break;
+
+ case FONT_SUGGESTION_LIST_NUMBER:
+ {
+ font->Construct(FONT_STYLE_PLAIN, 40);
+ }
+ break;
+ }
+ return font;
+}
+
+Color*
+DialUtil::GetTextColorN(int textColor, int buttonStatus)
+{
+ Color* color = new (std::nothrow) Color();
+
+ if (buttonStatus == BUTTON_STATUS_PRESSED)
+ {
+ color->SetColorComponents(249, 249, 249);
+ return color;
+ }
+
+ switch (textColor)
+ {
+ case FONT_CALLING_TEXT:
+ {
+ color->SetColorComponents(0, 0, 0);
+ }
+ break;
+
+ case FONT_KEYPAD_NUMBER:
+ {
+ color->SetColorComponents(255, 255, 255);
+ }
+ break;
+
+ case FONT_KEYPAD_TEXT:
+ case FONT_KEYPAD_P:
+ case FONT_KEYPAD_PLUS:
+ {
+ color->SetColorComponents(148, 177, 200);
+ }
+ break;
+
+ case FONT_KEYPAD_CANCEL:
+ {
+ color->SetColorComponents(255, 255, 255);
+ }
+ break;
+
+ case FONT_SUGGESTION_NAME:
+ {
+ color->SetColorComponents(255, 255, 255);
+ }
+ break;
+
+ case FONT_SUGGESTION_MOBILE:
+ {
+ color->SetColorComponents(148, 177, 200);
+ }
+ break;
+
+ case FONT_HIGHLIGHT_SEARCH_KEYWORD:
+ case FONT_SUGGESTION_NUMBER:
+ {
+ color->SetColorComponents(26, 214, 227);
+ }
+ break;
+
+ case FONT_SUGGESTION_LIST_NUMBER:
+ {
+ color->SetColorComponents(124, 189, 224);
+ }
+ break;
+ }
+ return color;
+}
+
+bool
+DialUtil::IsNumericString(Tizen::Base::String& keyWord)
+{
+ bool isDigit = false;
+ String digitStr(L"");
+ if(keyWord.SubString(0,1,digitStr) == E_SUCCESS)
+ {
+ int digit;
+ if(Integer::Parse(digitStr,digit) == E_SUCCESS)
+ {
+ isDigit = true;
+ }
+ }
+ return isDigit;
+}
+
+void
+DialUtil::Draw9PatchToCanvas(Canvas& pCanvas, const String& bgImg)
+{
+ AppResource* pAppResource = AppResource::GetInstance();
+ Bitmap* pBitmap = pAppResource->GetBitmapN(bgImg);
+
+ if (pBitmap->IsNinePatchedBitmap())
+ {
+ pCanvas.DrawNinePatchedBitmap(pCanvas.GetBounds(), *pBitmap);
+ }
+ delete pBitmap;
+
+ return;
+}
+
+void
+DialUtil::DrawImageToCanvas(const String& image, Dimension imageDimention, Canvas& pCanvas, int pos)
+{
+ //create and scale bitmap
+ Bitmap* pBitmap = AppUtility::GetBitmapFromResourcesN(image, imageDimention.width, imageDimention.height);
+
+ //Find position to draw bitmap
+ Point bitmapPos(0, 0);
+ switch (pos)
+ {
+ case POSITION_LEFT:
+ {
+ bitmapPos.SetPosition(X_DIALER_BTN_TXT + (W_DIALER_BTN_NUM_TXT - pBitmap->GetWidth()) / 2, (pCanvas.GetBounds().height - pBitmap->GetHeight()) / 2);
+ }
+ break;
+
+ case POSITION_RIGHT:
+ {
+ bitmapPos.SetPosition(X_DIALER_BTN_TXT + W_DIALER_BTN_NUM_TXT + ((W_DIALER_BTN_ALPHA_TXT - pBitmap->GetWidth()) / 2), (pCanvas.GetBounds().height - pBitmap->GetHeight()) / 2);
+ }
+ break;
+
+ case POSITION_CENTER:
+ {
+ bitmapPos.SetPosition((pCanvas.GetBounds().width - pBitmap->GetWidth()) / 2, (pCanvas.GetBounds().height - pBitmap->GetHeight()) / 2);
+ }
+ break;
+
+ case POSITION_BOTTOM_CENTER:
+ {
+ bitmapPos.SetPosition((pCanvas.GetBounds().width - pBitmap->GetWidth()) / 2, pCanvas.GetBounds().height / 2 + (pCanvas.GetBounds().height / 2 - pBitmap->GetHeight()) / 2);
+ }
+ break;
+ }
+
+ //draw bitmap
+ pCanvas.DrawBitmap(Rectangle(bitmapPos, Dimension(pBitmap->GetWidth(), pBitmap->GetHeight())), *pBitmap);
+ delete pBitmap;
+ pBitmap = null;
+
+ return;
+}
+
+void
+DialUtil::DrawTextToCanvas(const String& buttonText, int textFontStyle, Canvas& pCanvas, int pos, int buttonStatus)
+{
+ AppLogDebug("ENTER");
+ if (buttonText == null)
+ {
+ return;
+ }
+
+ //get text font
+ Font* font = GetTextFontN(textFontStyle);
+
+ //get text color
+ Color* textColor = GetTextColorN(textFontStyle, buttonStatus);
+
+ //create text element
+ TextElement* pTextElement = new (std::nothrow) TextElement();
+ pTextElement->Construct(buttonText);
+ pTextElement->SetTextColor(*textColor);
+ pTextElement->SetFont(*font);
+ delete textColor;
+
+ //get dimensions of the text
+ Dimension textDimension;
+ font->GetTextExtent(buttonText, buttonText.GetLength(), textDimension);
+ if(textFontStyle != FONT_KEYPAD_NUMBER)
+ {
+ textDimension.height += font->GetDescender();
+ }
+
+ //create enriched text
+ EnrichedText* pEnrichedText = new (std::nothrow) EnrichedText();
+ pEnrichedText->Construct(textDimension);
+ pEnrichedText->Add(*pTextElement);
+
+ //set the position of the text in canvas
+ Point textPos(0, 0);
+ switch (pos)
+ {
+ case POSITION_LEFT:
+ {
+ //Margin 13, rectangle for left text (13,0,77, height of canvas), center aligned
+ textPos.SetPosition(X_DIALER_BTN_TXT + ((W_DIALER_BTN_NUM_TXT - pEnrichedText->GetWidth()) / 2), (pCanvas.GetBounds().height - pEnrichedText->GetHeight()) / 2);
+ }
+ break;
+
+ case POSITION_RIGHT:
+ {
+ //rectangle for right text (13+77,0, 121, height of canvas), center aligned
+ textPos.SetPosition(X_DIALER_BTN_TXT + W_DIALER_BTN_NUM_TXT + ((121 - pEnrichedText->GetWidth()) / 2), (pCanvas.GetBounds().height - pEnrichedText->GetHeight()) / 2);
+ }
+ break;
+
+ case POSITION_CENTER:
+ {
+ //rectangle for image : entire canvas, center aligned
+ textPos.SetPosition((pCanvas.GetBounds().width - pEnrichedText->GetWidth()) / 2, (pCanvas.GetBounds().height - pEnrichedText->GetHeight()) / 2);
+ }
+ break;
+
+ case POSITION_TOP_LEFT:
+ {
+ textPos.SetPosition(10, (pCanvas.GetBounds().height / 2 - pEnrichedText->GetHeight()) / 2);
+ }
+ break;
+
+ case POSITION_TOP_CENTER:
+ {
+ textPos.SetPosition((pCanvas.GetBounds().width - pEnrichedText->GetWidth()) / 2, (pCanvas.GetBounds().height / 2 - pEnrichedText->GetHeight()) / 2);
+ }
+ break;
+
+ case POSITION_BOTTOM_LEFT:
+ {
+ textPos.SetPosition(10, pCanvas.GetBounds().height / 2 + ((pCanvas.GetBounds().height / 2 - pEnrichedText->GetHeight()) / 2));
+ }
+ break;
+
+ case POSITION_BOTTOM_CENTER:
+ {
+ int width = pEnrichedText->GetWidth();
+ if(width > W_ENRICHED_TEXT)
+ {
+ textPos.SetPosition(X_ENRICHED_TEXT, pCanvas.GetBounds().height / 2 + ((pCanvas.GetBounds().height / 2 - pEnrichedText->GetHeight()) / 2));
+ }
+ else
+ {
+ textPos.SetPosition(10 + ((pCanvas.GetBounds().width - pEnrichedText->GetWidth()) / 2), pCanvas.GetBounds().height / 2 + ((pCanvas.GetBounds().height / 2 - pEnrichedText->GetHeight()) / 2));
+ }
+
+ }
+ break;
+ }
+
+ //Draw EnrichedText to canvas
+ pCanvas.DrawText(textPos, *pEnrichedText);
+
+ // Cleans up
+ pEnrichedText->RemoveAll(true);
+ delete pEnrichedText;
+ delete font;
+
+ AppLogDebug("EXIT");
+ return;
+}
+
+void
+DialUtil::DrawCanvasToButton(Canvas* pCanvasNormal, Canvas* pCanvasPressed, Button* pButton)
+{
+ Bitmap* pNormalBgBmp = new (std::nothrow) Bitmap();
+ pNormalBgBmp->Construct(*pCanvasNormal, pCanvasNormal->GetBounds());
+
+ pButton->SetNormalBackgroundBitmap(*pNormalBgBmp);
+
+ if (pCanvasPressed != null)
+ {
+ Bitmap* pPressedBgBmp = new (std::nothrow) Bitmap();
+ pPressedBgBmp->Construct(*pCanvasPressed, pCanvasPressed->GetBounds());
+ pButton->SetPressedBackgroundBitmap(*pPressedBgBmp);
+ delete pPressedBgBmp;
+ pPressedBgBmp = null;
+ }
+ else
+ {
+ pButton->SetPressedBackgroundBitmap(*pNormalBgBmp);
+ }
+
+ pButton->SetDisabledBitmap(Point(0, 0), *pNormalBgBmp);
+ pButton->Invalidate(true);
+ delete pNormalBgBmp;
+ pNormalBgBmp = null;
+
+ return;
+}
+
+String
+DialUtil::ConvertDialedNumberToString(int dialNumber)
+{
+ switch (dialNumber)
+ {
+ case NUM_KEY1:
+ {
+ return L"1";
+ }
+ case NUM_KEY2:
+ {
+ return L"2";
+ }
+ case NUM_KEY3:
+ {
+ return L"3";
+ }
+ case NUM_KEY4:
+ {
+ return L"4";
+ }
+ case NUM_KEY5:
+ {
+ return L"5";
+ }
+ case NUM_KEY6:
+ {
+ return L"6";
+ }
+ case NUM_KEY7:
+ {
+ return L"7";
+ }
+ case NUM_KEY8:
+ {
+ return L"8";
+ }
+ case NUM_KEY9:
+ {
+ return L"9";
+ }
+ break;
+ case NUM_KEY0:
+ {
+ return L"0";
+ }
+ break;
+ }
+ return null;
+}
+
+IList*
+DialUtil::FetchPossibleNamesListN(const String& prevSearchStr, int nextDigit)
+{
+ //Fetch matching names for mapping char for digit, e.g. 2->ABC, 3->DEF.
+ ArrayList* pNamesList = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pNamesList->Construct(8);
+
+ if(nextDigit >=2 && nextDigit <= 9)
+ {
+ switch(nextDigit)
+ {
+ case 2:
+ {
+ pNamesList->Add((new String(prevSearchStr+L"a")));
+ pNamesList->Add((new String(prevSearchStr+L"b")));
+ pNamesList->Add((new String(prevSearchStr+L"c")));
+ pNamesList->Add((new String(prevSearchStr+L"A")));
+ pNamesList->Add((new String(prevSearchStr+L"B")));
+ pNamesList->Add((new String(prevSearchStr+L"C")));
+ }
+ break;
+
+ case 3:
+ {
+ pNamesList->Add((new String(prevSearchStr+L"d")));
+ pNamesList->Add((new String(prevSearchStr+L"e")));
+ pNamesList->Add((new String(prevSearchStr+L"f")));
+ pNamesList->Add((new String(prevSearchStr+L"D")));
+ pNamesList->Add((new String(prevSearchStr+L"E")));
+ pNamesList->Add((new String(prevSearchStr+L"F")));
+ }
+ break;
+
+ case 4:
+ {
+ pNamesList->Add((new String(prevSearchStr+L"g")));
+ pNamesList->Add((new String(prevSearchStr+L"h")));
+ pNamesList->Add((new String(prevSearchStr+L"i")));
+ pNamesList->Add((new String(prevSearchStr+L"G")));
+ pNamesList->Add((new String(prevSearchStr+L"H")));
+ pNamesList->Add((new String(prevSearchStr+L"I")));
+ }
+ break;
+
+ case 5:
+ {
+ pNamesList->Add((new String(prevSearchStr+L"j")));
+ pNamesList->Add((new String(prevSearchStr+L"k")));
+ pNamesList->Add((new String(prevSearchStr+L"l")));
+ pNamesList->Add((new String(prevSearchStr+L"J")));
+ pNamesList->Add((new String(prevSearchStr+L"K")));
+ pNamesList->Add((new String(prevSearchStr+L"L")));
+ }
+ break;
+
+ case 6:
+ {
+ pNamesList->Add((new String(prevSearchStr+L"m")));
+ pNamesList->Add((new String(prevSearchStr+L"n")));
+ pNamesList->Add((new String(prevSearchStr+L"o")));
+ pNamesList->Add((new String(prevSearchStr+L"M")));
+ pNamesList->Add((new String(prevSearchStr+L"N")));
+ pNamesList->Add((new String(prevSearchStr+L"O")));
+ }
+ break;
+
+ case 7:
+ {
+ pNamesList->Add((new String(prevSearchStr+L"p")));
+ pNamesList->Add((new String(prevSearchStr+L"q")));
+ pNamesList->Add((new String(prevSearchStr+L"r")));
+ pNamesList->Add((new String(prevSearchStr+L"s")));
+ pNamesList->Add((new String(prevSearchStr+L"P")));
+ pNamesList->Add((new String(prevSearchStr+L"Q")));
+ pNamesList->Add((new String(prevSearchStr+L"R")));
+ pNamesList->Add((new String(prevSearchStr+L"S")));
+ }
+ break;
+
+ case 8:
+ {
+ pNamesList->Add((new String(prevSearchStr+L"t")));
+ pNamesList->Add((new String(prevSearchStr+L"u")));
+ pNamesList->Add((new String(prevSearchStr+L"v")));
+ pNamesList->Add((new String(prevSearchStr+L"T")));
+ pNamesList->Add((new String(prevSearchStr+L"U")));
+ pNamesList->Add((new String(prevSearchStr+L"V")));
+ }
+ break;
+
+ case 9:
+ {
+ pNamesList->Add((new String(prevSearchStr+L"w")));
+ pNamesList->Add((new String(prevSearchStr+L"x")));
+ pNamesList->Add((new String(prevSearchStr+L"y")));
+ pNamesList->Add((new String(prevSearchStr+L"z")));
+ pNamesList->Add((new String(prevSearchStr+L"W")));
+ pNamesList->Add((new String(prevSearchStr+L"X")));
+ pNamesList->Add((new String(prevSearchStr+L"Y")));
+ pNamesList->Add((new String(prevSearchStr+L"Z")));
+ }
+ break;
+
+ }
+ }
+ return pNamesList;
+}
+
+void
+DialUtil::ConvertNameToNumericKeys(String& subContactName, String& possibleKeysTyped)
+{
+ for(int charPos=0;charPos < subContactName.GetLength();charPos++)
+ {
+ wchar_t nextChar;
+ subContactName.GetCharAt(charPos,nextChar);
+ switch(nextChar)
+ {
+ case 'a':case 'A':
+ case 'b':case 'B':
+ case 'c':case 'C':
+ possibleKeysTyped.Append(2);
+ break;
+
+ case 'd':case 'D':
+ case 'e':case 'E':
+ case 'f':case 'F':
+ possibleKeysTyped.Append(3);
+ break;
+
+ case 'g':case 'G':
+ case 'h':case 'H':
+ case 'i':case 'I':
+ possibleKeysTyped.Append(4);
+ break;
+
+ case 'j':case 'J':
+ case 'k':case 'K':
+ case 'l':case 'L':
+ possibleKeysTyped.Append(5);
+ break;
+
+ case 'm':case 'M':
+ case 'n':case 'N':
+ case 'o':case 'O':
+ possibleKeysTyped.Append(6);
+ break;
+
+ case 'p':case 'P':
+ case 'q':case 'Q':
+ case 'r':case 'R':
+ case 's':case 'S':
+ possibleKeysTyped.Append(7);
+ break;
+
+ case 't':case 'T':
+ case 'u':case 'U':
+ case 'v':case 'V':
+ possibleKeysTyped.Append(8);
+ break;
+
+ case 'w':case 'W':
+ case 'x':case 'X':
+ case 'y':case 'Y':
+ case 'z':case 'Z':
+ possibleKeysTyped.Append(9);
+ break;
+
+ default:
+ break;
+ }
+ }
+}
--- /dev/null
+//
+// 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 PhnConfCallerListForm.cpp
+ * @brief Conference caller list form
+ */
+#include <FSystem.h>
+#include "PhnConfCallerListForm.h"
+#include "PhnAppUtility.h"
+#include "PhnCallPresentationModel.h"
+#include "PhnSceneRegister.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Runtime;
+using namespace Tizen::Base::Utility;
+using namespace Tizen::Graphics;
+using namespace Tizen::System;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+//Constants
+const int W_HOLD_BITMAP = 78;
+const int H_HOLD_BITMAP = 78;
+const int W_BACK_BITMAP = 56;
+const int H_BACK_BITMAP = 56;
+const int X_BACK_BITMAP = 8;
+const int Y_BACK_BITMAP = 8;
+const int W_SPLIT_BITMAP = 66;
+const int H_SPLIT_BITMAP = 68;
+const int W_END_BITMAP = 80;
+const int H_END_BITMAP = 74;
+const int IDI_MAX_SECONDS = 60;
+const int IDI_MAX_MINS = 60;
+
+static const wchar_t* IDL_CONFCALL_LIST_FORM = L"IDL_CONFCALL_LIST_FORM";
+static const wchar_t* IDC_CALL_TIME_LABEL = L"IDC_CALL_TIME_LABEL";
+static const wchar_t* IDB_BACK_BUTTON_ICON = L"C01-1_btn_back.png";
+static const wchar_t* IDB_SPLIT_NORMAL_BUTTON_ICON = L"C01-1_conference_split.png";
+static const wchar_t* IDB_SPLIT_PRESS_BUTTON_ICON = L"C01-1_conference_split_press.png";
+static const wchar_t* IDB_END_NORMAL_BUTTON_ICON = L"C01-1_conference_end.png";
+static const wchar_t* IDB_END_PRESS_BUTTON_ICON = L"C01-1_conference_end_press.png";
+static const wchar_t* IDC_END_CONFCALL_BUTTON = L"IDC_END_CONFCALL_BUTTON";
+static const wchar_t* IDC_HOLD_CONFCALL_BUTTON = L"IDC_HOLD_CONFCALL_BUTTON";
+static const wchar_t* IDC_BACK_BUTTON = L"IDC_BACK_BUTTON";
+static const wchar_t* IDC_CALLER1_PANEL = L"IDC_CALLER1_PANEL";
+static const wchar_t* IDC__LINE_LABEL1 = L"IDC__LINE_LABEL1";
+static const wchar_t* IDC_CALLER2_PANEL = L"IDC_CALLER2_PANEL";
+static const wchar_t* IDC__LINE_LABEL2 = L"IDC__LINE_LABEL2";
+static const wchar_t* IDC_CALLER3_PANEL = L"IDC_CALLER3_PANEL";
+static const wchar_t* IDC__LINE_LABEL3 = L"IDC__LINE_LABEL3";
+static const wchar_t* IDC_CALLER4_PANEL = L"IDC_CALLER4_PANEL";
+static const wchar_t* IDC__LINE_LABEL4 = L"IDC__LINE_LABEL4";
+static const wchar_t* IDC_CALLER5_PANEL = L"IDC_CALLER5_PANEL";
+static const wchar_t* IDC__LINE_LABEL5 = L"IDC__LINE_LABEL5";
+static const wchar_t* IDC_END_CALLER1 = L"IDC_END_CALLER1";
+static const wchar_t* IDC_SPLIT_CALLER1 = L"IDC_SPLIT_CALLER1";
+static const wchar_t* IDC_CALLER1_LABEL = L"IDC_CALLER1_LABEL";
+static const wchar_t* IDC_END_CALLER2 = L"IDC_END_CALLER2";
+static const wchar_t* IDC_SPLIT_CALLER2 = L"IDC_SPLIT_CALLER2";
+static const wchar_t* IDC_CALLER2_LABEL = L"IDC_CALLER2_LABEL";
+static const wchar_t* IDC_END_CALLER3 = L"IDC_END_CALLER3";
+static const wchar_t* IDC_SPLIT_CALLER3 = L"IDC_SPLIT_CALLER3";
+static const wchar_t* IDC_CALLER3_LABEL = L"IDC_CALLER3_LABEL";
+static const wchar_t* IDC_END_CALLER4 = L"IDC_END_CALLER4";
+static const wchar_t* IDC_SPLIT_CALLER4 = L"IDC_SPLIT_CALLER4";
+static const wchar_t* IDC_CALLER4_LABEL = L"IDC_CALLER4_LABEL";
+static const wchar_t* IDC_END_CALLER5 = L"IDC_END_CALLER5";
+static const wchar_t* IDC_SPLIT_CALLER5 = L"IDC_SPLIT_CALLER5";
+static const wchar_t* IDC_CALLER5_LABEL = L"IDC_CALLER5_LABEL";
+
+ConfCallerListForm::ConfCallerListForm(void)
+: BaseForm(FORMTYPE_CONFCALLLIST)
+{
+ __pConfCallInfo = null;
+ __pConfCallTimer = null;
+}
+
+ConfCallerListForm::~ConfCallerListForm(void)
+{
+ if (__pConfCallTimer != null)
+ {
+ __pConfCallTimer->Cancel();
+ delete __pConfCallTimer;
+ }
+}
+
+void
+ConfCallerListForm::Initialize(void)
+{
+ Construct(IDL_CONFCALL_LIST_FORM);
+}
+
+result
+ConfCallerListForm::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+ Bitmap* pRejectMessageBitmap = null;
+ AppResource* pAppResource = null;
+ Button* pButtonKeypad = null;
+
+ //Add action listener to buttons
+ AddActionListener(IDC_END_CONFCALL_BUTTON, IDA_END_CONF_CALL);
+ AddActionListener(IDC_HOLD_CONFCALL_BUTTON, IDA_HOLD_CONF_CALL);
+
+ pAppResource = AppResource::GetInstance();
+ pButtonKeypad = static_cast<Button*>(GetControl(IDC_BACK_BUTTON));
+
+ if (pButtonKeypad != null)
+ {
+ pButtonKeypad->SetActionId(IDA_BACK_EVENT);
+ pButtonKeypad->AddActionEventListener(*this);
+ pRejectMessageBitmap = pAppResource->GetBitmapN(IDB_BACK_BUTTON_ICON);
+ pRejectMessageBitmap->Scale(Dimension(W_BACK_BITMAP, H_BACK_BITMAP));
+ pButtonKeypad->SetNormalBitmap(Point(X_BACK_BITMAP, X_BACK_BITMAP), *pRejectMessageBitmap);
+ delete pRejectMessageBitmap;
+ pRejectMessageBitmap = null;
+ }
+
+ __pCallPresentor = CallPresentationModel::GetInstance();
+ return r;
+}
+
+void
+ConfCallerListForm::AddActionListener(const String& keyName, CommandIds cmdId)
+{
+ Button* pButtonKeypad = static_cast<Button*>(GetControl(keyName));
+ if (pButtonKeypad != null)
+ {
+ pButtonKeypad->SetActionId(cmdId);
+ pButtonKeypad->AddActionEventListener(*this);
+ }
+}
+
+result
+ConfCallerListForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pCallPresentor != null)
+ {
+ __pCallPresentor = null;
+ }
+
+ if (__pConfCallInfo != null)
+ {
+ delete __pConfCallInfo;
+ __pConfCallInfo = null;
+ }
+
+ RemoveAllControls();
+ return r;
+}
+
+void
+ConfCallerListForm::OnActionPerformed(const Control& source, int actionId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager);
+
+ switch (actionId)
+ {
+ case IDA_END_CONF_CALL:
+ {
+ bool success = __pCallPresentor->EndConferenceCall();
+ if (success == true)
+ {
+ delete __pConfCallInfo;
+ __pConfCallInfo = null;
+ }
+ }
+ break;
+
+ case IDA_HOLD_CONF_CALL:
+ {
+ // User has pressed end conference call and we are waiting for TAPI response
+ if(__pConfCallInfo == null)
+ {
+ return;
+ }
+ bool success = true;
+ bool isCallOnHold = __pConfCallInfo->IsOnHold();
+ if (isCallOnHold == false)
+ {
+ success = __pCallPresentor->HoldConferenceCall();
+ }
+ else
+ {
+ success = __pCallPresentor->ActivateConferenceCall();
+ }
+
+ //Check if request to Hold / UnHold call is successful.
+ if(success == true)
+ {
+ //If success, then invert the Hold status in conference call
+ isCallOnHold = !(isCallOnHold);
+ __pConfCallInfo->SetOnHold(isCallOnHold);
+ //update panels and Hold button status
+ ActivatePanels();
+ SetHoldButtonStatus(isCallOnHold);
+ }
+ }
+ break;
+
+ case IDA_BACK_EVENT:
+ {
+ ArrayListT<CallInfo>* pCallList = static_cast<ArrayListT<CallInfo>*>(__pCallPresentor->GetCallListN());
+ int noOfCalls = pCallList->GetCount();
+
+ //Ownership - To be deleted in 'OnSceneActivatedN' of next form
+ ArrayList* pCallInfoList = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pCallInfoList->Construct(noOfCalls);
+
+ for (int index = 0; index < noOfCalls; index++)
+ {
+ //fetch call info and add to list
+ CallInfo callInfo;
+ result r = pCallList->GetAt(index, callInfo);
+ if (r == E_SUCCESS)
+ {
+ //copy call information to new instance
+ CallInfo* pCaller = new (std::nothrow) CallInfo();
+ *pCaller = callInfo;
+ pCallInfoList->Add(pCaller);
+ }
+ }
+
+ if (noOfCalls == 1)
+ {
+ //single active call - goto active call form
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALL), pCallInfoList);
+ }
+ else
+ {
+ //goto multiple active call form
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MULTIPLEACTIVECALL), pCallInfoList);
+ }
+ pCallList->RemoveAll();
+ delete pCallList;
+ }
+ break;
+
+ case IDA_SPLIT_CALLER1:
+ case IDA_SPLIT_CALLER2:
+ case IDA_SPLIT_CALLER3:
+ case IDA_SPLIT_CALLER4:
+ case IDA_SPLIT_CALLER5:
+ {
+ // User has pressed end conference call and we are waiting for TAPI response
+ if(__pConfCallInfo == null)
+ {
+ break;
+ }
+ __pCallPresentor->SplitFromConference(SplitConfCallerCmdIds(actionId),__pConfCallInfo->GetCallerList());
+ }
+ break;
+
+ case IDA_END_CALLER1:
+ case IDA_END_CALLER2:
+ case IDA_END_CALLER3:
+ case IDA_END_CALLER4:
+ case IDA_END_CALLER5:
+ {
+ // User has pressed end conference call and we are waiting for TAPI response
+ if(__pConfCallInfo == null)
+ {
+ break;
+ }
+ __pCallPresentor->EndCallFromConference(EndConfCallerCmdIds(actionId),__pConfCallInfo->GetCallerList());
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+void
+ConfCallerListForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
+{
+ //set itself as listener
+ __pCallPresentor->SetTelEventListener(this);
+
+ DisableAllControls();
+ if (__pConfCallInfo != null)
+ {
+ delete __pConfCallInfo;
+ __pConfCallInfo = null;
+ }
+ //show 1st caller's info.
+ //Fetch Conference call info from telephony manager
+ __pConfCallInfo = __pCallPresentor->GetConferenceCallInfoN();
+
+ //show active call timer
+ ShowTimerInfo(IDC_CALL_TIME_LABEL, __pConfCallInfo->GetCallConnectTime());
+
+ //Set the correct bitmap to the "hold" button based on the current state of the call
+ SetHoldButtonStatus(__pConfCallInfo->IsOnHold());
+ //disable Hold Button, if 2 active calls are present,Else enable it.
+ Button* pButtonHold = static_cast<Button*>(GetControl(IDC_HOLD_CONFCALL_BUTTON));
+ if(pButtonHold != null)
+ {
+ if (__pCallPresentor->GetCurrentCallCount() == IDI_MAX_ACTIVE_CALLS)
+ {
+ pButtonHold->SetShowState(false);
+ }
+ else
+ {
+ pButtonHold->SetShowState(true);
+ }
+ pButtonHold->Invalidate(true);
+ }
+
+ ActivatePanels();
+}
+
+void
+ConfCallerListForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
+{
+ if (__pConfCallInfo != null)
+ {
+ delete __pConfCallInfo;
+ __pConfCallInfo = null;
+ }
+ if (__pConfCallTimer != null)
+ {
+ __pConfCallTimer->Cancel();
+ delete __pConfCallTimer;
+ __pConfCallTimer = null;
+ }
+}
+
+result
+ConfCallerListForm::OnDraw(void)
+{
+ return E_SUCCESS;
+}
+
+void
+ConfCallerListForm::SetHoldButtonStatus(bool isCallOnHold)
+{
+ Button* pButtonHold = static_cast<Button*>(GetControl(IDC_HOLD_CONFCALL_BUTTON));
+ if(pButtonHold != null)
+ {
+ Bitmap* pNormalBitmapToBeDrawn = null;
+ Bitmap* pPressBitmapToBeDrawn = null;
+
+ if (isCallOnHold == true)
+ {
+ pNormalBitmapToBeDrawn = AppUtility::GetBitmapFromResourcesN(IDB_UNHOLD_NORMAL_BUTTON_ICON,
+ W_HOLD_BITMAP, W_HOLD_BITMAP);
+ pPressBitmapToBeDrawn = AppUtility::GetBitmapFromResourcesN(IDB_UNHOLD_PRESS_BUTTON_ICON,
+ W_HOLD_BITMAP, W_HOLD_BITMAP);
+ }
+ else
+ {
+ pNormalBitmapToBeDrawn = AppUtility::GetBitmapFromResourcesN(IDB_HOLD_NORMAL_BUTTON_ICON,
+ W_HOLD_BITMAP, W_HOLD_BITMAP);
+ pPressBitmapToBeDrawn = AppUtility::GetBitmapFromResourcesN(IDB_HOLD_PRESS_BUTTON_ICON,
+ W_HOLD_BITMAP, W_HOLD_BITMAP);
+ }
+
+ if (pNormalBitmapToBeDrawn)
+ {
+ pButtonHold->SetNormalBitmap(Point(0, 0), *pNormalBitmapToBeDrawn);
+ }
+ if (pPressBitmapToBeDrawn)
+ {
+ pButtonHold->SetPressedBitmap(Point(0, 0), *pPressBitmapToBeDrawn);
+ }
+
+ pButtonHold->Invalidate(true);
+ delete pNormalBitmapToBeDrawn;
+ pNormalBitmapToBeDrawn = null;
+ delete pPressBitmapToBeDrawn;
+ pPressBitmapToBeDrawn = null;
+ }
+}
+
+void
+ConfCallerListForm::HandleCallChange(void)
+{
+ CallInfo* pCallInfo = __pCallPresentor->GetConferenceCallInfoN();
+ if (pCallInfo == null)
+ {
+ return;
+ }
+ if (__pConfCallInfo != null)
+ {
+ delete __pConfCallInfo;
+ __pConfCallInfo = null;
+ }
+ __pConfCallInfo = new (std::nothrow) CallInfo();
+ *__pConfCallInfo = *pCallInfo;
+ //Disable all key panels and redraw with new caller list
+ DisableAllControls();
+ ActivatePanels();
+}
+
+void
+ConfCallerListForm::DisableAllControls(void)
+{
+ Panel* pKeysPanel = static_cast<Panel*>(GetControl(IDC_CALLER1_PANEL));
+ if (pKeysPanel != null)
+ {
+ pKeysPanel->SetShowState(false);
+ Label* pLineLabel1 = static_cast<Label*>(GetControl(IDC__LINE_LABEL1));
+ pLineLabel1->SetShowState(false);
+ pKeysPanel = null;
+ }
+ pKeysPanel = static_cast<Panel*>(GetControl(IDC_CALLER2_PANEL));
+ if (pKeysPanel != null)
+ {
+ pKeysPanel->SetShowState(false);
+ Label* pLineLabel1 = static_cast<Label*>(GetControl(IDC__LINE_LABEL2));
+ pLineLabel1->SetShowState(false);
+ pKeysPanel = null;
+ }
+ pKeysPanel = static_cast<Panel*>(GetControl(IDC_CALLER3_PANEL));
+ if (pKeysPanel != null)
+ {
+ pKeysPanel->SetShowState(false);
+ Label* pLineLabel1 = static_cast<Label*>(GetControl(IDC__LINE_LABEL3));
+ pLineLabel1->SetShowState(false);
+ pKeysPanel = null;
+ }
+ pKeysPanel = static_cast<Panel*>(GetControl(IDC_CALLER4_PANEL));
+ if (pKeysPanel != null)
+ {
+ pKeysPanel->SetShowState(false);
+ Label* pLineLabel1 = static_cast<Label*>(GetControl(IDC__LINE_LABEL4));
+ pLineLabel1->SetShowState(false);
+ pKeysPanel = null;
+ }
+ pKeysPanel = static_cast<Panel*>(GetControl(IDC_CALLER5_PANEL));
+ if (pKeysPanel != null)
+ {
+ pKeysPanel->SetShowState(false);
+ Label* pLineLabel1 = static_cast<Label*>(GetControl(IDC__LINE_LABEL5));
+ pLineLabel1->SetShowState(false);
+ pKeysPanel = null;
+ }
+}
+
+void
+ConfCallerListForm::ActivatePanels(void)
+{
+ IListT<CallInfo>* pCallList = __pConfCallInfo->GetCallerList();
+ int confCallCount = pCallList->GetCount();
+
+ for (int index = 0; index < confCallCount; index++)
+ {
+ CallInfo callInfo;
+ String pContactNo;
+ result r = pCallList->GetAt(index, callInfo);
+
+ pContactNo.Append(callInfo.GetContactNumber());
+ //fetch contact details based on phone number
+ String* pDisplayName = callInfo.FetchCallerNameN();
+
+ if ((pDisplayName->IsEmpty()) || r != E_SUCCESS)
+ {
+ pDisplayName->Append(pContactNo);
+ }
+
+ switch (index)
+ {
+ case 0:
+ {
+ ActivatePanelAndAddActionListener(IDC_CALLER1_PANEL,IDC__LINE_LABEL1,IDC_SPLIT_CALLER1,IDC_END_CALLER1
+ ,IDC_CALLER1_LABEL,IDA_SPLIT_CALLER1,IDA_END_CALLER1,*pDisplayName);
+ }
+ break;
+
+ case 1:
+ {
+ ActivatePanelAndAddActionListener(IDC_CALLER2_PANEL,IDC__LINE_LABEL2,IDC_SPLIT_CALLER2,IDC_END_CALLER2
+ ,IDC_CALLER2_LABEL,IDA_SPLIT_CALLER2,IDA_END_CALLER2,*pDisplayName);
+ }
+ break;
+
+ case 2:
+ {
+ ActivatePanelAndAddActionListener(IDC_CALLER3_PANEL,IDC__LINE_LABEL3,IDC_SPLIT_CALLER3,IDC_END_CALLER3
+ ,IDC_CALLER3_LABEL,IDA_SPLIT_CALLER3,IDA_END_CALLER3,*pDisplayName);
+ }
+ break;
+
+ case 3:
+ {
+ ActivatePanelAndAddActionListener(IDC_CALLER4_PANEL,IDC__LINE_LABEL4,IDC_SPLIT_CALLER4,IDC_END_CALLER4
+ ,IDC_CALLER4_LABEL,IDA_SPLIT_CALLER4,IDA_END_CALLER4,*pDisplayName);
+ }
+ break;
+
+ case 4:
+ {
+ ActivatePanelAndAddActionListener(IDC_CALLER5_PANEL,IDC__LINE_LABEL5,IDC_SPLIT_CALLER5,IDC_END_CALLER5
+ ,IDC_CALLER5_LABEL,IDA_SPLIT_CALLER5,IDA_END_CALLER5,*pDisplayName);
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ delete pDisplayName;
+ pDisplayName = null;
+ }
+}
+
+void
+ConfCallerListForm::ActivatePanelAndAddActionListener( const String& panelName, const String& lineLabelName, const String& splitButtonName,
+ const String& endButtonName, const String& callerLabelName, SplitConfCallerCmdIds splitCmdId,
+ EndConfCallerCmdIds EndCmdId, const String& displayName)
+{
+ Bitmap* pNormalSplitBitmap = null;
+ Bitmap* pPressSplitBitmap = null;
+ Bitmap* pNormalEndBitmap = null;
+ Bitmap* pPressEndBitmap = null;
+
+ pNormalSplitBitmap = AppUtility::GetBitmapFromResourcesN(IDB_SPLIT_NORMAL_BUTTON_ICON,
+ W_SPLIT_BITMAP, H_SPLIT_BITMAP);
+ pPressSplitBitmap = AppUtility::GetBitmapFromResourcesN(IDB_SPLIT_PRESS_BUTTON_ICON,
+ W_SPLIT_BITMAP, H_SPLIT_BITMAP);
+ pNormalEndBitmap = AppUtility::GetBitmapFromResourcesN(IDB_END_NORMAL_BUTTON_ICON,
+ W_END_BITMAP, H_END_BITMAP);
+ pPressEndBitmap = AppUtility::GetBitmapFromResourcesN(IDB_END_PRESS_BUTTON_ICON,
+ W_END_BITMAP, H_END_BITMAP);
+
+ bool isSplitAllowed = true;
+ if ((__pCallPresentor->IsSplitAllowed() == false) || (__pConfCallInfo->IsOnHold() == true))
+ {
+ isSplitAllowed = false;
+ }
+
+ Panel* pKeysPanel = static_cast<Panel*>(GetControl(panelName));
+ if (pKeysPanel != null)
+ {
+ Button* pButtonSplit = static_cast<Button*>(pKeysPanel->GetControl(splitButtonName));
+ if (pButtonSplit != null)
+ {
+ pButtonSplit->SetActionId(splitCmdId);
+ pButtonSplit->AddActionEventListener(*this);
+ pButtonSplit->SetNormalBitmap(Point(0, 0), *pNormalSplitBitmap);
+ pButtonSplit->SetPressedBitmap(Point(0, 0), *pPressSplitBitmap);
+ }
+ Button* pButtonEnd = static_cast<Button*>(pKeysPanel->GetControl(endButtonName));
+ if (pButtonEnd != null)
+ {
+ pButtonEnd->SetActionId(EndCmdId);
+ pButtonEnd->AddActionEventListener(*this);
+ pButtonEnd->SetNormalBitmap(Point(0, 0), *pNormalEndBitmap);
+ pButtonEnd->SetPressedBitmap(Point(0, 0), *pPressEndBitmap);
+ }
+ Label* pNameLabel = static_cast<Label*>(pKeysPanel->GetControl(callerLabelName));
+ if (pButtonSplit != null)
+ {
+ if (isSplitAllowed == false)
+ {
+ pButtonSplit->SetShowState(false);
+ pNameLabel->SetBounds(pButtonSplit->GetBounds().x, pNameLabel->GetBounds().y,
+ pNameLabel->GetBounds().width, pNameLabel->GetBounds().height);
+ }
+ else
+ {
+ pButtonSplit->SetShowState(true);
+ pNameLabel->SetBounds((pButtonSplit->GetBounds().x + pButtonSplit->GetBounds().width), pNameLabel->GetBounds().y,
+ pNameLabel->GetBounds().width, pNameLabel->GetBounds().height);
+ }
+ }
+ pNameLabel->SetText(displayName);
+
+ pKeysPanel->SetShowState(true);
+ Label* pLineLabel1 = static_cast<Label*>(GetControl(lineLabelName));
+ pLineLabel1->SetShowState(true);
+
+ pKeysPanel->Draw(true);
+ pKeysPanel->Show();
+ }
+
+ delete pNormalEndBitmap;
+ pNormalEndBitmap = null;
+ delete pPressEndBitmap;
+ pPressEndBitmap = null;
+ delete pNormalSplitBitmap;
+ pNormalSplitBitmap = null;
+ delete pPressSplitBitmap;
+ pPressSplitBitmap = null;
+}
+
+void
+ConfCallerListForm::ShowTimerInfo(const String& timerLblName, long long startTime)
+{
+ Label* pTimerLbl = static_cast<Label*>(GetControl(timerLblName));
+
+ if (__pConfCallTimer == null)
+ {
+ __pConfCallTimer = new (std::nothrow) Timer();
+ __pConfCallTimer->Construct(*this);
+ }
+
+ if (pTimerLbl != null)
+ {
+ //current system time
+ long long currTime = 0;
+ SystemTime::GetTicks(currTime);
+ //Set call duration
+ TimeSpan diffSpan(abs(startTime - currTime));
+
+ String activeCallTime(L"");
+
+ long long hr = diffSpan.GetHours();
+ if (hr <= 9) {
+ activeCallTime.Append("0");
+ }
+ activeCallTime.Append(hr);
+ activeCallTime.Append(L":");
+
+ long long min = diffSpan.GetMinutes();
+ if (min <= 9) {
+ activeCallTime.Append("0");
+ }
+ activeCallTime.Append(min);
+ activeCallTime.Append(L":");
+
+ long long sec = diffSpan.GetSeconds();
+ if (sec <= 9) {
+ activeCallTime.Append("0");
+ }
+ activeCallTime.Append(sec);
+
+ pTimerLbl->SetText(activeCallTime);
+ __pConfCallTimer->StartAsRepeatable(TimeSpan::NUM_OF_TICKS_IN_SECOND);
+
+ }
+}
+
+void
+ConfCallerListForm::OnTimerExpired(Tizen::Base::Runtime::Timer& timer)
+{
+ //Call default implementation of "Object.Equals()"
+ //returns true, if they are pointing to same address.
+ if (__pConfCallTimer->Equals(timer))
+ {
+ Label* pTimerLbl = static_cast<Label*>(GetControl(IDC_CALL_TIME_LABEL));
+ if (pTimerLbl)
+ {
+ String activeCallTime = pTimerLbl->GetText();
+ // Create a StringTokenizer instance
+ StringTokenizer strTokens(activeCallTime, L":");
+
+ int count = strTokens.GetTokenCount(); // count == 3
+ String token;
+ int sec = 0;
+ int min = 0;
+ int hr = 0;
+ for (int index = 0; index < count; index++)
+ {
+ switch (index)
+ {
+ case 0:
+ strTokens.GetNextToken(token);
+ Integer::Parse(token, hr);
+ break;
+
+ case 1:
+ strTokens.GetNextToken(token);
+ Integer::Parse(token, min);
+ break;
+
+ case 2:
+ strTokens.GetNextToken(token);
+ Integer::Parse(token, sec);
+ break;
+ }
+ }
+ //update all values
+ sec = sec + 1;
+ if (sec == IDI_MAX_SECONDS)
+ {
+ sec = 0;
+ min = min + 1;
+ }
+ if (min == IDI_MAX_MINS)
+ {
+ min = 0;
+ hr = hr + 1;
+ }
+
+ //replace string
+ activeCallTime.Clear();
+ if (hr <= 9)
+ {
+ activeCallTime.Append("0");
+ }
+ activeCallTime.Append(hr);
+ activeCallTime.Append(":");
+ if (min <= 9)
+ {
+ activeCallTime.Append("0");
+ }
+ activeCallTime.Append(min);
+ activeCallTime.Append(":");
+ if (sec <= 9)
+ {
+ activeCallTime.Append("0");
+ }
+ activeCallTime.Append(sec);
+ //update timer label
+ pTimerLbl->SetText(activeCallTime);
+ pTimerLbl->Invalidate(true);
+ }
+ }
+}
--- /dev/null
+//
+// 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 PhnCustomItemBgElement.cpp
+ * @brief Custom Background element class
+ */
+#include "PhnCustomItemBgElement.h"
+#include "PhnSettingsConstants.h"
+
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui::Controls;
+
+CustomItemBgElement::CustomItemBgElement(void)
+{
+}
+
+CustomItemBgElement::~CustomItemBgElement(void)
+{
+}
+
+bool
+CustomItemBgElement::OnDraw(Canvas& canvas, const Rectangle& rect, ListItemDrawingStatus itemStatus)
+{
+ //drawing boundary for all items.
+ canvas.SetBackgroundColor(Color(142,154,163));
+ canvas.DrawRectangle(rect);
+
+ //draw blue bg color
+ Rectangle blueHeaderRect(0,0,W_LEFT_HEADER_EXPAND_ITEMS,rect.height);
+ canvas.FillRectangle(COLOR_LEFT_HEADER_EXPAND_ITEMS, blueHeaderRect);
+ return true;
+}
--- /dev/null
+//
+// 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 DlAppForm.cpp
+ * @brief The Dial application form
+ */
+
+#include <FApp.h>
+#include "PhnBaseForm.h"
+#include "PhnCommonUtils.h"
+#include "PhnCallPresentationModel.h"
+#include "PhnDialAppForm.h"
+#include "PhnPhoneApp.h"
+#include "PhnSceneRegister.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::App;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+const int DialAppForm::ID_HEADER_DIALER = 101;
+const int DialAppForm::ID_HEADER_LOGS = 103;
+static const wchar_t* IDL_DIAL_FORM = L"IDL_DIAL_FORM";
+
+DialAppForm::DialAppForm(void)
+{
+}
+
+DialAppForm::~DialAppForm(void)
+{
+}
+
+bool
+DialAppForm::Initialize(void)
+{
+ Construct(IDL_DIAL_FORM);
+
+ return true;
+}
+
+result
+DialAppForm::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+
+ Header* pHeader = GetHeader();
+ pHeader->AddActionEventListener(*this);
+/* __pFormFooter = GetFooter();
+ __pFormFooter->AddActionEventListener(*this);*/
+ // Setup back event listener
+ SetFormBackEventListener(this);
+
+ return r;
+}
+
+result
+DialAppForm::OnTerminating(void)
+{
+ return E_SUCCESS;
+}
+
+void
+DialAppForm::OnActionPerformed(const Control& source, int actionId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager);
+
+ PhoneApp* pPhoneApp = static_cast<PhoneApp*>(UiApp::GetInstance());
+ switch (actionId)
+ {
+ case ID_HEADER_DIALER:
+ {
+ pSceneManager->GoForward( ForwardSceneTransition(IDSCN_DIALER, SCENE_TRANSITION_ANIMATION_TYPE_NONE,
+ SCENE_HISTORY_OPTION_NO_HISTORY));
+ pPhoneApp->SetInitialScene(IDSCN_DIALER);
+ }
+ break;
+
+ case ID_HEADER_LOGS:
+ {
+
+ pSceneManager->GoForward( ForwardSceneTransition(IDSCN_CALL_LOG, SCENE_TRANSITION_ANIMATION_TYPE_NONE,
+ SCENE_HISTORY_OPTION_NO_HISTORY));
+ pPhoneApp->SetInitialScene(IDSCN_CALL_LOG);
+
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+void
+DialAppForm::OnFormBackRequested(Form& source)
+{
+ //if this is add call senario, if there is no active call only then allow user to access call log
+ CallPresentationModel* pCallPresentor = CallPresentationModel::GetInstance();
+ if(pCallPresentor->GetCurrentCallCount() == 0)
+ {
+ UiApp* pApp = UiApp::GetInstance();
+ AppAssert(pApp);
+ pApp->Terminate();
+ }
+ else
+ {
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ PhoneApp* pPhoneApp = static_cast<PhoneApp*>(UiApp::GetInstance());
+ pSceneManager->GoForward( ForwardSceneTransition(IDSCN_DIALER, SCENE_TRANSITION_ANIMATION_TYPE_NONE,
+ SCENE_HISTORY_OPTION_NO_HISTORY));
+ pPhoneApp->SetInitialScene(IDSCN_DIALER);
+ }
+}
--- /dev/null
+//
+// 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 PhnDialContactInfo.cpp
+ * @brief Dial Contact Info class
+ */
+#include "PhnDialContactInfo.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Graphics;
+using namespace Tizen::Social;
+using namespace Tizen::Base::Collection;
+
+DialContactInfo::DialContactInfo(void) {
+ __pDisplayName = null;
+ __pPhoneNumber = null;
+ __pThumbnail = null;
+ __pSearchKeyList = null;
+ //By default, value is '0' - indicates it is not fetched from call logs
+ __callLogDbId = 0;
+}
+
+DialContactInfo*
+DialContactInfo::CloneN(void)
+{
+ //Used to create new 'DialContactInfo' object which is clone of 'this' object.
+ //We cant use Copy Contructor, since we will need 2-phase constructor in this case.
+
+ result r = E_SUCCESS;
+ DialContactInfo* cloneObj = new (std::nothrow) DialContactInfo();
+ cloneObj->__pDisplayName = new (std::nothrow) String(*this->__pDisplayName);
+ cloneObj->__pPhoneNumber = new (std::nothrow) String(*this->__pPhoneNumber);
+
+ //Thumbnail
+ if(this->__pThumbnail != null)
+ {
+ Bitmap& pSrcTn = *(this->__pThumbnail);
+ cloneObj->__pThumbnail = new (std::nothrow) Bitmap();
+ r = cloneObj->__pThumbnail->Construct( pSrcTn, Rectangle(0, 0, pSrcTn.GetWidth(), pSrcTn.GetHeight()));
+ }
+ TryCatch(r == E_SUCCESS,,"Object Cloning failed");
+
+ //list of search key.
+ if(this->__pSearchKeyList != null && this->__pSearchKeyList->GetCount() > 0)
+ {
+ cloneObj->__pSearchKeyList = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ r = cloneObj->__pSearchKeyList->Construct();
+ TryCatch(r == E_SUCCESS,,"Object Cloning failed");
+
+ for (int index = 0; index < this->__pSearchKeyList->GetCount(); index++)
+ {
+ String* key = static_cast<String*>(this->__pSearchKeyList->GetAt(index));
+ r = cloneObj->__pSearchKeyList->Add(new (std::nothrow) String(*key));
+ TryCatch(r == E_SUCCESS,,"Object Cloning failed");
+ }
+ }
+
+ return cloneObj;
+ CATCH:
+ //failed
+ delete cloneObj;
+ cloneObj = null;
+ return cloneObj;
+}
+
+DialContactInfo::~DialContactInfo(void) {
+ if(__pDisplayName != null)
+ {
+ delete __pDisplayName;
+ }
+ if(__pPhoneNumber != null)
+ {
+ delete __pPhoneNumber;
+ }
+ if(__pSearchKeyList != null)
+ {
+ __pSearchKeyList->RemoveAll();
+ delete __pSearchKeyList;
+ }
+ if(__pThumbnail != null)
+ {
+ delete __pThumbnail;
+ }
+}
+
+bool
+DialContactInfo::Equals(const Object& obj) const
+{
+ DialContactInfo* objInfo = dynamic_cast<DialContactInfo*>(const_cast<Object*>(&obj));
+ if(objInfo != null && __pPhoneNumber->Equals(objInfo->GetPhoneNumber()))
+ {
+ return true;
+ }
+ return false;
+}
+
+void
+DialContactInfo::AddSearchKey(String& pSearchString)
+{
+ if(__pSearchKeyList == null)
+ {
+ __pSearchKeyList = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ __pSearchKeyList->Construct();
+ }
+ __pSearchKeyList->Add(new (std::nothrow) String(pSearchString));
+}
+
+void
+DialContactInfo::RemoveSearchKey(int index)
+{
+ if(__pSearchKeyList != null && index >= 0 && index < __pSearchKeyList->GetCount())
+ {
+ __pSearchKeyList->RemoveAt(index);
+ }
+}
+
+void
+DialContactInfo::ReplaceSearchKey(int index, String& pSearchString)
+{
+ if(__pSearchKeyList != null && (index >= 0 && index < __pSearchKeyList->GetCount()))
+ {
+ __pSearchKeyList->RemoveAt(index);
+ __pSearchKeyList->InsertAt(new String(pSearchString),index);
+ }
+}
+
+IList*
+DialContactInfo::GetSearchKeyList(void)
+{
+ return __pSearchKeyList;
+}
+
+String*
+DialContactInfo::GetSearchKey(void)
+{
+ if(__pSearchKeyList != null && __pSearchKeyList->GetCount() > 0)
+ {
+ return (static_cast<String*>(__pSearchKeyList->GetAt(0)));
+ }
+ return null;
+}
+
+void
+DialContactInfo::SetDisplayName(String& pDisplayName)
+{
+ if(__pDisplayName != null)
+ {
+ delete __pDisplayName;
+ }
+ __pDisplayName = new (std::nothrow) String(pDisplayName);
+}
+
+String&
+DialContactInfo::GetDisplayName(void) const
+{
+ return *__pDisplayName;
+}
+
+void
+DialContactInfo::SetPhoneNumber(String& pPhoneNumber)
+{
+ if(__pPhoneNumber != null)
+ {
+ delete __pPhoneNumber;
+ }
+ __pPhoneNumber = new (std::nothrow) String(pPhoneNumber);
+}
+
+String&
+DialContactInfo::GetPhoneNumber(void) const
+{
+ return *__pPhoneNumber;
+}
+
+void
+DialContactInfo::SetThumbnail(Bitmap* pBitmap)
+{
+ if(__pThumbnail != null)
+ {
+ delete __pThumbnail;
+ __pThumbnail = null;
+ }
+
+ if(pBitmap != null)
+ {
+ __pThumbnail = pBitmap;
+ __pThumbnail->SetScalingQuality(BITMAP_SCALING_QUALITY_MID);
+ __pThumbnail->Scale(Dimension(96, 96));
+ }
+}
+
+Bitmap*
+DialContactInfo::GetThumbnailN(void) const
+{
+ Bitmap* pThumbnail = null;
+ result r = E_FAILURE;
+ if(__pThumbnail != null)
+ {
+ pThumbnail = new (std::nothrow) Bitmap();
+ r = pThumbnail->Construct( *__pThumbnail, Rectangle(0, 0, __pThumbnail->GetWidth(),
+ __pThumbnail->GetHeight()));
+ TryCatch(r == E_SUCCESS,,"[%s] Thumbnail contruction failed", GetErrorMessage(r));
+ }
+ return pThumbnail;
+
+CATCH:
+ delete pThumbnail;
+ return null;
+}
+
+void
+DialContactInfo::SetCallLogDbId(int callLogDbId)
+{
+ __callLogDbId = callLogDbId;
+}
+
+int
+DialContactInfo::GetCallLogDbId(void)
+{
+ return __callLogDbId;
+}
--- /dev/null
+//
+// 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 PhnDialPresentationModel.cpp
+ * @brief Dial presentation model class
+ */
+#include <FSocial.h>
+#include "PhnAppUtility.h"
+#include "PhnCalllogManager.h"
+#include "PhnCommonUtils.h"
+#include "PhnDialContactInfo.h"
+#include "PhnDialPresentationModel.h"
+#include "PhnPhoneApp.h"
+#include "PhnSettingsManager.h"
+#include "PhnTabDialer.h"
+#include "PhnTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Runtime;
+using namespace Tizen::Social;
+
+DialPresentationModel::DialPresentationModel(DialTabDialer& pParentPanel) : __pParentPanel(pParentPanel)
+{
+ AppLogDebug("ENTER");
+ __pNumberSuggestionList = null;
+ __pSearchString = null;
+ __pSettingsManager = null;
+ __pAsyncSearchTask = null;
+ __pSearchThread = null;
+ __mutex.Create();
+ AppLogDebug("EXIT");
+}
+
+DialPresentationModel::~DialPresentationModel()
+{
+ AppLogDebug("ENTER");
+ ClearSearchResults();
+ AppLogDebug("EXIT");
+}
+
+void
+DialPresentationModel::ClearSearchResults(void)
+{
+ if(__pNumberSuggestionList != null)
+ {
+ __mutex.Acquire();
+ __pNumberSuggestionList->RemoveAll();
+ delete __pNumberSuggestionList;
+ __pNumberSuggestionList = null;
+ __mutex.Release();
+ }
+ if(__pSearchString != null)
+ {
+ delete __pSearchString;
+ __pSearchString = null;
+ }
+}
+
+bool
+DialPresentationModel::FetchSuggestionList(const String& searchString)
+{
+ bool newSearch = false;
+ if (__pSearchThread != null)
+ {
+ //Wait until the previous thread finished execution.
+ //otherwise "start_thread()" crashes.
+ __pSearchThread->Join();
+ delete __pSearchThread;
+ __pSearchThread = null;
+ delete __pAsyncSearchTask;
+ __pAsyncSearchTask = null;
+ }
+
+ result r = E_SUCCESS;
+ __pAsyncSearchTask = new (std::nothrow) RetrieveContactsListTask( *this);
+ //check if this search string is subset of previous search string
+ if(__pSearchString != null && searchString.StartsWith(*__pSearchString,0))
+ {
+ newSearch = false;
+ __pSearchString->Clear();
+ __pSearchString->Append(searchString);
+ __mutex.Acquire();
+ r = __pAsyncSearchTask->Construct(*__pSearchString, __pNumberSuggestionList);
+ __mutex.Release();
+ }
+ else
+ {
+ newSearch = true;
+ __pSearchString = new (std::nothrow) String(searchString);
+ r = __pAsyncSearchTask->Construct(*__pSearchString, null);
+ }
+ TryCatch(r == E_SUCCESS,,"Async Task construction failed");
+
+ //Start Async Task to search for contacts, call logs, Speed dial.
+ __pSearchThread = new (std::nothrow) Thread();
+ r = __pSearchThread->Construct(*__pAsyncSearchTask);
+ TryCatch(r == E_SUCCESS,,"Thread construction failed");
+ r = __pSearchThread->Start();
+ TryCatch(r == E_SUCCESS,,"Failed to start Thread");
+
+ return newSearch;
+
+CATCH:
+ //clear previous search results
+ ClearSearchResults();
+ delete __pAsyncSearchTask;
+ __pAsyncSearchTask = null;
+ delete __pSearchThread;
+ __pSearchThread = null;
+ return true;
+}
+
+void
+DialPresentationModel::HandleContactsRetrievalCompleted(IList* pContactsList)
+{
+ __mutex.Acquire();
+ if(__pNumberSuggestionList != null)
+ {
+ __pNumberSuggestionList->RemoveAll();
+ delete __pNumberSuggestionList;
+ __pNumberSuggestionList = null;
+ }
+
+ if(pContactsList != null && pContactsList->GetCount() > 0)
+ {
+ //Taking Ownership of List.
+ __pNumberSuggestionList = static_cast<ArrayList*>(pContactsList);
+
+ //inform Tab Dialer to update view.
+ DialContactInfo* pDialInfo = null;
+ //Fetch the contact's info at a given index
+ if (__pNumberSuggestionList != null && __pNumberSuggestionList->GetCount() > 0)
+ {
+ pDialInfo = static_cast<DialContactInfo*>(__pNumberSuggestionList->GetAt(0));
+ }
+
+ if(pDialInfo != null)
+ {
+
+ ArrayList* pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pArgs->Construct();
+
+ //display name, mobile number
+ String* argDisplayName = new (std::nothrow) String();
+ argDisplayName->Append(pDialInfo->GetDisplayName());
+ pArgs->Add(argDisplayName);
+
+ String* argMobilNum = new (std::nothrow) String();
+ argMobilNum->Append(pDialInfo->GetPhoneNumber());
+ pArgs->Add(argMobilNum);
+
+ //fetch total no. of results
+ String* argResCount = new (std::nothrow) String();
+ argResCount->Append(__pNumberSuggestionList->GetCount());
+ pArgs->Add(argResCount);
+ __pParentPanel.SendUserEvent(REQUEST_SHOW_SUGGESTION,pArgs);
+ }
+ }
+ else
+ {
+ //remove old search key
+ if(__pSearchString != null)
+ {
+ delete __pSearchString;
+ __pSearchString = null;
+ }
+ //Show "Add to contact"
+ ArrayList* pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pArgs->Construct();
+ __pParentPanel.SendUserEvent(REQUEST_SHOW_ADD_TO_CONTACTS,pArgs);
+ //empty list
+ delete pContactsList;
+ pContactsList = null;
+ }
+ __mutex.Release();
+}
+
+DialContactInfo*
+DialPresentationModel::GetSuggestionAtIndex(int index)
+{
+ DialContactInfo* pDialInfo = null;
+ __mutex.Acquire();
+ //Fetch the contact's info at a given index
+ if (__pNumberSuggestionList != null
+ && __pNumberSuggestionList->GetCount() > 0
+ && (index >= 0 && index < __pNumberSuggestionList->GetCount()))
+ {
+ pDialInfo = static_cast<DialContactInfo*>(__pNumberSuggestionList->GetAt(index));
+ }
+ __mutex.Release();
+ return pDialInfo;
+}
+
+int
+DialPresentationModel::GetNumberOfSuggestions(void)
+{
+ int resultCount = 0;
+ if(__pNumberSuggestionList != null)
+ {
+ __mutex.Acquire();
+ resultCount = __pNumberSuggestionList->GetCount();
+ __mutex.Release();
+ }
+ return resultCount;
+}
+
+String*
+DialPresentationModel::FetchSpeedDialNumberN(int rowId)
+{
+ if(__pSettingsManager == null)
+ {
+ __pSettingsManager = SettingsManager::GetInstance();
+ }
+ return __pSettingsManager->GetMappedSpeedDialNumberN(rowId);
+}
+
+String*
+DialPresentationModel::FetchLatestNumberFromLogsN(void)
+{
+ String* pRetString = CallLogManager::GetInstance()->GetLatestCallLogFromDbN();
+ return pRetString;
+}
+
+void
+DialPresentationModel::AddContactsToAddressBook(String& contactNumber)
+{
+ result r = E_SUCCESS;
+ HashMap extraData;
+ extraData.Construct();
+
+ extraData.Add(new (std::nothrow) String(INPUT_TYPE_PHONE), new (std::nothrow) String(contactNumber));
+ AppControl* pAc = AppManager::FindAppControlN(PROVIDER_ID_CONTACTS, OPERATION_ID_ADD);
+ if (pAc != null)
+ {
+ r = pAc->Start(null, null, &extraData, this);
+ delete pAc;
+ }
+
+ extraData.RemoveAll(true);
+}
+
+void
+DialPresentationModel::OpenMessagingAppControl(String& contactNumber)
+{
+ //launch message
+ result r = E_SUCCESS;
+ HashMap extraData;
+ extraData.Construct();
+
+ extraData.Add(new (std::nothrow) String(MESSAGE_TYPE), new (std::nothrow) String(MESSAGE_SMS_TYPE));
+ extraData.Add(new (std::nothrow) String(MESSAGE_TO), new (std::nothrow) String(contactNumber));
+
+ AppControl* pAc = AppManager::FindAppControlN(PROVIDER_ID_MESSAGE, OPERATION_ID_COMPOSE);
+ if (pAc != null)
+ {
+ r = pAc->Start(null, null, &extraData, this);
+ delete pAc;
+ }
+ extraData.RemoveAll(true);
+}
+
+void
+DialPresentationModel::OnAppControlCompleteResponseReceived(const AppId& appId, const Tizen::Base::String& operationId, AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData)
+{
+ if (appId.Equals(String(PROVIDER_ID_CONTACTS)) && operationId.Equals(String(OPERATION_ID_ADD)))
+ {
+ if (appControlResult == APP_CTRL_RESULT_SUCCEEDED)
+ {
+ //delete search string to start new search
+ if(__pSearchString != null)
+ {
+ delete __pSearchString;
+ __pSearchString = null;
+ }
+ //Fetch latest added contact and show in suggestion list.
+ __pParentPanel.UpdateSearchResults();
+ }
+ }
+
+}
--- /dev/null
+//
+// 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 PhnDialerKeypad.cpp
+ * @brief Dial Contact Info class
+ */
+#include "PhnDialerKeypad.h"
+#include "PhnAppUtility.h"
+#include "PhnCommonUtils.h"
+#include "PhnPhoneApp.h"
+#include "PhnTabDialer.h"
+#include "PhnTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Ui;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Base::Collection;
+
+//Constants
+const wchar_t* IDI_CANCEL_KEY_TXT = L"Cancel";
+const wchar_t* IDC_VIDEOCALL_KEY_NAME = L"IDC_BUTTON13";
+const wchar_t* IDC_CALL_KEY_NAME = L"IDC_BUTTON14";
+const wchar_t* IDC_BUTTON_NAME = L"IDC_BUTTON";
+static const wchar_t* IDC_PANEL_DISPLAY_DATA = L"IDC_PANEL_DISPLAY_DATA";
+const int W_VOICEMAIL_ICON = 75;
+const int H_VOICEMAIL_ICON = 75;
+const int W_STAR_ICON = 75;
+const int H_STAR_ICON = 75;
+const int W_MUTE_ICON = 64;
+const int H_MUTE_ICON = 64;
+const int W_VIDEOCALL_ICON = 76;
+const int H_VIDEOCALL_ICON = 76;
+const int W_CALL_ICON = 76;
+const int H_CALL_ICON = 76;
+const int W_CLEAR_ICON = 76;
+const int H_CLEAR_ICON = 44;
+const int X_CALL_KEY = 12;
+const int MAX_SLIDEDOWN_PIXELS = 110;
+
+DialerKeypad::DialerKeypad(DialerState openedState) : Panel()
+{
+ __openedState = openedState;
+ __pParentActionListener = null;
+ __pParentLongTapListener = null;
+ __pLongPressDetectors = null;
+}
+
+DialerKeypad::~DialerKeypad(void)
+{
+ if(__pLongPressDetectors != null)
+ {
+ __pLongPressDetectors->RemoveAll();
+ delete __pLongPressDetectors;
+ }
+ //remove all child controls
+ RemoveAllControls();
+}
+
+bool
+DialerKeypad::ConstructPanel(IActionEventListener* pActionListener, ITouchLongPressGestureEventListener* pLongTapListener)
+{
+ result r = E_FAILURE;
+ TryCatch(pActionListener != null,,"pActionListener is null");
+ TryCatch(pLongTapListener != null,,"pLongTapListener is null");
+
+ //set parent panel which acts as action listener
+ __pParentActionListener = pActionListener;
+ __pParentLongTapListener = pLongTapListener;
+
+ r = Construct(IDL_DIALER_KEYPAD_PANEL);
+ TryCatch(r == E_SUCCESS, , "Panel::Construct() failed");
+
+ if(__openedState == DIALER_STATE_EMERGENCY_APPCONTROL)
+ {
+ //no video call or cancel button is shown for Emergency Screen
+ Button* pVideoCallButton = static_cast<Button*>(GetControl(IDC_VIDEOCALL_KEY_NAME, true));
+ if (pVideoCallButton != null)
+ {
+ RemoveControl(*pVideoCallButton);
+ pVideoCallButton = null;
+ }
+ }
+ //Add action listener and long press gesture listeners.
+ AddListenersToButtons();
+
+ return true;
+CATCH:
+ return false;
+}
+
+result
+DialerKeypad::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+ if(__openedState == DIALER_STATE_EMERGENCY_APPCONTROL)
+ {
+ //reset size and position for emergency dial form
+ Rectangle rect = GetBounds();
+ rect.y = rect.y + MAX_SLIDEDOWN_PIXELS;
+ r = SetBounds(rect);
+ //reset position and size for call button
+ Button* pCallButton = static_cast<Button*>(GetControl(IDC_CALL_KEY_NAME, true));
+ Rectangle callRect = pCallButton->GetBounds();
+ callRect.x = X_CALL_KEY;
+ callRect.width += pCallButton->GetBounds().width + X_CALL_KEY;
+ r = pCallButton->SetBounds(callRect);
+ }
+
+ RelativeLayout* pRelativeLayout = dynamic_cast<RelativeLayout*>(GetParent()->GetLandscapeLayoutN());
+ Panel* pDisplayPanel = static_cast<Panel*>(GetParent()->GetControl(IDC_PANEL_DISPLAY_DATA, true));
+ if (pRelativeLayout != null)
+ {
+ pRelativeLayout->SetHorizontalFitPolicy(*this, FIT_POLICY_PARENT);
+ pRelativeLayout->SetRelation(*this, *pDisplayPanel, RECT_EDGE_RELATION_TOP_TO_BOTTOM);
+ pRelativeLayout->SetRelation(*this, *GetParent(), RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM);
+ delete pRelativeLayout;
+ }
+
+ pRelativeLayout = dynamic_cast<RelativeLayout*>(GetParent()->GetPortraitLayoutN());
+ if (pRelativeLayout != null)
+ {
+ pRelativeLayout->SetHorizontalFitPolicy(*this, FIT_POLICY_PARENT);
+ pRelativeLayout->SetRelation(*this, *pDisplayPanel, RECT_EDGE_RELATION_TOP_TO_BOTTOM);
+ pRelativeLayout->SetRelation(*this, *GetParent(), RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM);
+ delete pRelativeLayout;
+ }
+
+ //initialize buttons
+ SetBitmapToKeypadButtons();
+ Draw(true);
+ Show();
+ return r;
+}
+
+void
+DialerKeypad::AddListenersToButtons(void)
+{
+ //Construct array to store LongPress touch detectors
+ __pLongPressDetectors = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ __pLongPressDetectors->Construct(14);
+ for (int i = 1; i <= 15; i++)
+ {
+ //initialize buttons and add action listener
+ String buttonName(IDC_BUTTON_NAME);
+ buttonName.Append(i);
+ Button* pButton = static_cast<Button*>(GetControl(buttonName, true));
+ if(pButton == null)
+ {
+ continue;
+ }
+ //check if cancel button is shown instead of video call button
+ if((i == VIDEOCALL_KEY) && (IsShowCancelButton() == true))
+ {
+ pButton->SetActionId(CANCEL_KEY);
+ }
+ else
+ {
+ pButton->SetActionId(i);
+ }
+ SetControlAlwaysOnTop(*pButton,true);
+
+ //Add Listeners
+ if(__pParentActionListener != null)
+ {
+ pButton->AddActionEventListener(*__pParentActionListener);
+ }
+
+ if(__pParentLongTapListener != null)
+ {
+ //If __openedState is Emergency Call AppControl then add LongPress detector for only 'CLEAR_KEY'.
+ if ( (i == NUM_KEY1 && (IsShowVoiceMailIcon() == true))
+ || ((i >= NUM_KEY2 && i <= HASH_KEY) && (__openedState != DIALER_STATE_EMERGENCY_APPCONTROL))
+ || (i == CLEAR_KEY) )
+ {
+ //Construct and Add gesture detector to "0-9,P,#,Clear" buttons
+ TouchLongPressGestureDetector* pLongPressDetector = new (std::nothrow) TouchLongPressGestureDetector();
+ pLongPressDetector->Construct();
+ pLongPressDetector->SetCancelTouchEventOnSuccessEnabled(true);
+ pLongPressDetector->AddLongPressGestureEventListener(*__pParentLongTapListener);
+ pButton->AddGestureDetector(*pLongPressDetector);
+ //stored in an array list
+ __pLongPressDetectors->Add(pLongPressDetector);
+ }
+ }
+ }
+}
+
+void
+DialerKeypad::SetBitmapToKeypadButtons(void)
+{
+ AppLogDebug("ENTER");
+ //Create the buttons of the keypad
+ for (int i = 1; i <= 15; i++)
+ {
+ //initialize buttons and add action listener
+ String buttonName(IDC_BUTTON_NAME);
+ buttonName.Append(i);
+ Button* pButton = static_cast<Button*>(GetControl(buttonName, true));
+ if(pButton == null)
+ {
+ continue;
+ }
+
+ //Draw text/image and background in a canvas and add it to the button
+ Rectangle canvasRect(0, 0, pButton->GetBounds().width, pButton->GetBounds().height);
+ Canvas* pCanvasNormal = new (std::nothrow) Canvas();
+ pCanvasNormal->Construct(canvasRect);
+ Canvas* pCanvasPressed = new (std::nothrow) Canvas();
+ pCanvasPressed->Construct(canvasRect);
+
+ String number(DialUtil::ConvertDialedNumberToString(pButton->GetActionId()));
+ switch (pButton->GetActionId())
+ {
+ case NUM_KEY1:
+ {
+ DialUtil::Draw9PatchToCanvas(*pCanvasNormal, IDB_DIALER_BTN_LINE_ICON);
+ DialUtil::DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, *pCanvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
+ //Set canvas for pressed state of the button
+ DialUtil::Draw9PatchToCanvas(*pCanvasPressed, IDB_DIALER_BTN_PRESS_ICON);
+ DialUtil::DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, *pCanvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
+ if(IsShowVoiceMailIcon() == true)
+ {
+ DialUtil::DrawImageToCanvas(IDB_VOICEMAIL_BTN_ICON, Dimension(W_VOICEMAIL_ICON, H_VOICEMAIL_ICON), *pCanvasNormal, POSITION_RIGHT);
+ DialUtil::DrawImageToCanvas(IDB_VOICEMAIL_BTN_PRESS_ICON, Dimension(W_VOICEMAIL_ICON, H_VOICEMAIL_ICON), *pCanvasPressed, POSITION_RIGHT);
+ }
+ }
+ break;
+
+ case NUM_KEY2:
+ {
+ DialUtil::Draw9PatchToCanvas(*pCanvasNormal, IDB_DIALER_BTN_LINE_ICON);
+ DialUtil::DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, *pCanvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
+ DialUtil::DrawTextToCanvas(IDI_KEY2_TXT, FONT_KEYPAD_TEXT, *pCanvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
+
+ DialUtil::Draw9PatchToCanvas(*pCanvasPressed, IDB_DIALER_BTN_PRESS_ICON);
+ DialUtil::DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, *pCanvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
+ DialUtil::DrawTextToCanvas(IDI_KEY2_TXT, FONT_KEYPAD_TEXT, *pCanvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
+ }
+ break;
+
+ case NUM_KEY3:
+ {
+ DialUtil::Draw9PatchToCanvas(*pCanvasNormal, IDB_DIALER_BTN_LINE_ICON);
+ DialUtil::DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, *pCanvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
+ DialUtil::DrawTextToCanvas(IDI_KEY3_TXT, FONT_KEYPAD_TEXT, *pCanvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
+
+ DialUtil::Draw9PatchToCanvas(*pCanvasPressed, IDB_DIALER_BTN_PRESS_ICON);
+ DialUtil::DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, *pCanvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
+ DialUtil::DrawTextToCanvas(IDI_KEY3_TXT, FONT_KEYPAD_TEXT, *pCanvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
+ }
+ break;
+
+ case NUM_KEY4:
+ {
+ DialUtil::Draw9PatchToCanvas(*pCanvasNormal, IDB_DIALER_BTN_LINE2_ICON);
+ DialUtil::DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, *pCanvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
+ DialUtil::DrawTextToCanvas(IDI_KEY4_TXT, FONT_KEYPAD_TEXT, *pCanvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
+
+ DialUtil::Draw9PatchToCanvas(*pCanvasPressed, IDB_DIALER_BTN_PRESS_ICON);
+ DialUtil::DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, *pCanvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
+ DialUtil::DrawTextToCanvas(IDI_KEY4_TXT, FONT_KEYPAD_TEXT, *pCanvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
+ }
+ break;
+
+ case NUM_KEY5:
+ {
+ DialUtil::Draw9PatchToCanvas(*pCanvasNormal, IDB_DIALER_BTN_LINE2_ICON);
+ DialUtil::DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, *pCanvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
+ DialUtil::DrawTextToCanvas(IDI_KEY5_TXT, FONT_KEYPAD_TEXT, *pCanvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
+
+ DialUtil::Draw9PatchToCanvas(*pCanvasPressed, IDB_DIALER_BTN_PRESS_ICON);
+ DialUtil::DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, *pCanvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
+ DialUtil::DrawTextToCanvas(IDI_KEY5_TXT, FONT_KEYPAD_TEXT, *pCanvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
+ }
+ break;
+
+ case NUM_KEY6:
+ {
+ DialUtil::Draw9PatchToCanvas(*pCanvasNormal, IDB_DIALER_BTN_LINE2_ICON);
+ DialUtil::DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, *pCanvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
+ DialUtil::DrawTextToCanvas(IDI_KEY6_TXT, FONT_KEYPAD_TEXT, *pCanvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
+
+ DialUtil::Draw9PatchToCanvas(*pCanvasPressed, IDB_DIALER_BTN_PRESS_ICON);
+ DialUtil::DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, *pCanvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
+ DialUtil::DrawTextToCanvas(IDI_KEY6_TXT, FONT_KEYPAD_TEXT, *pCanvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
+ }
+ break;
+
+ case NUM_KEY7:
+ {
+ DialUtil::Draw9PatchToCanvas(*pCanvasNormal, IDB_DIALER_BTN_LINE3_ICON);
+ DialUtil::DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, *pCanvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
+ DialUtil::DrawTextToCanvas(IDI_KEY7_TXT, FONT_KEYPAD_TEXT, *pCanvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
+
+ DialUtil::Draw9PatchToCanvas(*pCanvasPressed, IDB_DIALER_BTN_PRESS_ICON);
+ DialUtil::DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, *pCanvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
+ DialUtil::DrawTextToCanvas(IDI_KEY7_TXT, FONT_KEYPAD_TEXT, *pCanvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
+ }
+ break;
+
+ case NUM_KEY8:
+ {
+ DialUtil::Draw9PatchToCanvas(*pCanvasNormal, IDB_DIALER_BTN_LINE3_ICON);
+ DialUtil::DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, *pCanvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
+ DialUtil::DrawTextToCanvas(IDI_KEY8_TXT, FONT_KEYPAD_TEXT, *pCanvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
+
+ DialUtil::Draw9PatchToCanvas(*pCanvasPressed, IDB_DIALER_BTN_PRESS_ICON);
+ DialUtil::DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, *pCanvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
+ DialUtil::DrawTextToCanvas(IDI_KEY8_TXT, FONT_KEYPAD_TEXT, *pCanvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
+ }
+ break;
+
+ case NUM_KEY9:
+ {
+ DialUtil::Draw9PatchToCanvas(*pCanvasNormal, IDB_DIALER_BTN_LINE3_ICON);
+ DialUtil::DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, *pCanvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
+ DialUtil::DrawTextToCanvas(IDI_KEY9_TXT, FONT_KEYPAD_TEXT, *pCanvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
+
+ DialUtil::Draw9PatchToCanvas(*pCanvasPressed, IDB_DIALER_BTN_PRESS_ICON);
+ DialUtil::DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, *pCanvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
+ DialUtil::DrawTextToCanvas(IDI_KEY9_TXT, FONT_KEYPAD_TEXT, *pCanvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
+ }
+ break;
+
+ case PAUSE_KEY:
+ {
+ DialUtil::Draw9PatchToCanvas(*pCanvasNormal, IDB_DIALER_BTN_LINE4_ICON);
+ DialUtil::DrawImageToCanvas(IDB_DIALER_STAR_ICON, Dimension(W_STAR_ICON, H_STAR_ICON), *pCanvasNormal, POSITION_LEFT);
+ DialUtil::DrawTextToCanvas(L"P", FONT_KEYPAD_P, *pCanvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
+
+ DialUtil::Draw9PatchToCanvas(*pCanvasPressed, IDB_DIALER_BTN_PRESS_ICON);
+ DialUtil::DrawImageToCanvas(IDB_DIALER_STAR_ICON, Dimension(W_STAR_ICON, H_STAR_ICON), *pCanvasPressed, POSITION_LEFT);
+ DialUtil::DrawTextToCanvas(L"P", FONT_KEYPAD_P, *pCanvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
+ }
+ break;
+
+ case NUM_KEY0:
+ {
+ DialUtil::Draw9PatchToCanvas(*pCanvasNormal, IDB_DIALER_BTN_LINE4_ICON);
+ DialUtil::DrawTextToCanvas(L"0", FONT_KEYPAD_NUMBER, *pCanvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
+ DialUtil::DrawTextToCanvas(L"+", FONT_KEYPAD_PLUS, *pCanvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
+
+ DialUtil::Draw9PatchToCanvas(*pCanvasPressed, IDB_DIALER_BTN_PRESS_ICON);
+ DialUtil::DrawTextToCanvas(L"0", FONT_KEYPAD_NUMBER, *pCanvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
+ DialUtil::DrawTextToCanvas(L"+", FONT_KEYPAD_PLUS, *pCanvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
+ }
+ break;
+
+ case HASH_KEY:
+ {
+ DialUtil::Draw9PatchToCanvas(*pCanvasNormal, IDB_DIALER_BTN_LINE4_ICON);
+ DialUtil::DrawTextToCanvas(L"#", FONT_KEYPAD_NUMBER, *pCanvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
+ DialUtil::DrawImageToCanvas(IDB_DIALER_MUTE_ICON, Dimension(W_MUTE_ICON, H_MUTE_ICON), *pCanvasNormal, POSITION_RIGHT);
+
+ DialUtil::Draw9PatchToCanvas(*pCanvasPressed, IDB_DIALER_BTN_PRESS_ICON);
+ DialUtil::DrawTextToCanvas(L"#", FONT_KEYPAD_NUMBER, *pCanvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
+ DialUtil::DrawImageToCanvas(IDB_DIALER_MUTE_ICON, Dimension(W_MUTE_ICON, H_MUTE_ICON), *pCanvasPressed, POSITION_RIGHT);
+ }
+ break;
+
+ case VIDEOCALL_KEY:
+ {
+ DialUtil::Draw9PatchToCanvas(*pCanvasNormal, IDB_DIALER_BTN_LINE5_ICON);
+ DialUtil::DrawImageToCanvas(IDB_DIALER_VIDEOCALL_ICON, Dimension(W_VIDEOCALL_ICON, H_VIDEOCALL_ICON), *pCanvasNormal, POSITION_CENTER);
+
+ DialUtil::Draw9PatchToCanvas(*pCanvasPressed, IDB_DIALER_BTN_PRESS_ICON);
+ DialUtil::DrawImageToCanvas(IDB_DIALER_VIDEOCALL_ICON, Dimension(W_VIDEOCALL_ICON, H_VIDEOCALL_ICON), *pCanvasPressed, POSITION_CENTER);
+ }
+ break;
+
+ case CANCEL_KEY:
+ {
+ DialUtil::Draw9PatchToCanvas(*pCanvasNormal, IDB_DIALER_BTN_LINE5_ICON);
+ DialUtil::DrawTextToCanvas(IDI_CANCEL_KEY_TXT, FONT_KEYPAD_CANCEL, *pCanvasNormal, POSITION_CENTER, BUTTON_STATUS_NORMAL);
+
+ DialUtil::Draw9PatchToCanvas(*pCanvasPressed, IDB_DIALER_BTN_PRESS_ICON);
+ DialUtil::DrawTextToCanvas(IDI_CANCEL_KEY_TXT, FONT_KEYPAD_CANCEL, *pCanvasPressed, POSITION_CENTER, BUTTON_STATUS_NORMAL);
+ }
+ break;
+
+ case CALL_KEY:
+ {
+ DialUtil::Draw9PatchToCanvas(*pCanvasNormal, IDB_DIALER_CALL_BG_ICON);
+ DialUtil::DrawImageToCanvas(IDB_DIALER_CALL_ICON, Dimension(W_CALL_ICON, H_CALL_ICON), *pCanvasNormal, POSITION_CENTER);
+
+ DialUtil::Draw9PatchToCanvas(*pCanvasPressed, IDB_DIALER_BTN_PRESS_ICON);
+ DialUtil::DrawImageToCanvas(IDB_DIALER_CALL_ICON, Dimension(W_CALL_ICON, H_CALL_ICON), *pCanvasPressed, POSITION_CENTER);
+ }
+ break;
+
+ case CLEAR_KEY:
+ {
+ DialUtil::Draw9PatchToCanvas(*pCanvasNormal, IDB_DIALER_BTN_LINE5_ICON);
+ DialUtil::DrawImageToCanvas(IDB_DIALER_CLEAR_ICON, Dimension(W_CLEAR_ICON, H_CLEAR_ICON), *pCanvasNormal, POSITION_CENTER);
+
+ DialUtil::Draw9PatchToCanvas(*pCanvasPressed, IDB_DIALER_BTN_PRESS_ICON);
+ DialUtil::DrawImageToCanvas(IDB_DIALER_CLEAR_ICON, Dimension(W_CLEAR_ICON, H_CLEAR_ICON), *pCanvasPressed, POSITION_CENTER);
+ }
+ break;
+ }
+
+ //Set the final Bitmap to Button
+ DialUtil::DrawCanvasToButton(pCanvasNormal, pCanvasPressed, pButton);
+ delete pCanvasNormal;
+ pCanvasNormal = null;
+ delete pCanvasPressed;
+ pCanvasPressed = null;
+ }
+ AppLogDebug("EXIT");
+ return;
+}
+
+bool
+DialerKeypad::IsShowCancelButton(void)
+{
+ //'Cancel' is shown instead of 'Video Call' when opened in 'DIALER_STATE_ADD_CALL'.
+ bool isShowCancel = false;
+ if (__openedState == DIALER_STATE_ADD_CALL)
+ {
+ isShowCancel = true;
+ }
+ return isShowCancel;
+}
+
+bool
+DialerKeypad::IsShowVoiceMailIcon(void)
+{
+ //voice mail icon is not shown when opened from any APPCONTROL or from DIALER_STATE_ADD_CALL.
+ bool isShowVoiceMail = false;
+ if (__openedState == DIALER_STATE_FIRST_SCENE)
+ {
+ isShowVoiceMail = true;
+ }
+ return isShowVoiceMail;
+}
+
+bool
+DialerKeypad::IsShowVideoCallButton(void)
+{
+ //video call button is shown in 'DIALER_STATE_FIRST_SCENE' , 'DIALER_STATE_NORMAL_APPCONTROL'.
+ bool isShowVideoCall = true;
+ if ((__openedState == DIALER_STATE_EMERGENCY_APPCONTROL) || (__openedState == DIALER_STATE_ADD_CALL))
+ {
+ isShowVideoCall = false;
+ }
+ return isShowVideoCall;
+}
+
+result
+DialerKeypad::OnTerminating(void)
+{
+ for (int index = 0; index < __pLongPressDetectors->GetCount(); index++)
+ {
+ TouchLongPressGestureDetector* pLongPressDetector = static_cast<TouchLongPressGestureDetector*>(__pLongPressDetectors->GetAt(index));
+ Button* pButton = static_cast<Button*>(pLongPressDetector->GetControl());
+ pButton->RemoveGestureDetector(*pLongPressDetector);
+ }
+ return E_SUCCESS;
+}
--- /dev/null
+//
+// 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 PhnDtmfKeypadPanel.cpp
+ * @brief Dtmf keypad implementation class
+ */
+#include <FApp.h>
+#include <FMedia.h>
+#include "PhnAppUtility.h"
+#include "PhnCommonUtils.h"
+#include "PhnDtmfKeypadPanel.h"
+#include "PhnTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Graphics;
+using namespace Tizen::Media;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+const int W_VOICE_CALL_ICON = 70;
+const int H_VOICE_CALL_ICON = 36;
+const int INITIAL_X_OFFSET = 13;
+const int LEFT_X_OFFSET = 77;
+const int RIGHT_X_OFFSET = 121;
+const int INITIAL_TEXT_X_OFFSET = 24;
+const int LEFT_TEXT_X_OFFSET = 64;
+const int LEFT_TEXT_X_MARGIN = 18;
+const int RIGHT_TEXT_X_OFFSET = 94;
+const Color COLOR_KEYPAD_BG(0, 0, 0, 100);
+const wchar_t* IDC_TEXTBOX = L"IDC_TEXTBOX";
+const wchar_t* IDC_BUTTON = L"IDC_BUTTON";
+
+DtmfKeyPadPanel::DtmfKeyPadPanel(void)
+{
+ __pActionListener = null;
+}
+
+DtmfKeyPadPanel::~DtmfKeyPadPanel(void)
+{
+}
+
+bool
+DtmfKeyPadPanel::Initialize(IActionEventListener* pEventListener, Rectangle& boundsRect)
+{
+ result r = Construct(IDL_DTMF_PANEL);
+ if (IsFailed(r))
+ {
+ return false;
+ }
+ r = SetBounds(boundsRect);
+ if (IsFailed(r))
+ {
+ return false;
+ }
+ __pActionListener = pEventListener;
+ //Add action listener.
+ AddListenersToButtons();
+ return true;
+}
+
+result
+DtmfKeyPadPanel::OnInitializing(void)
+{
+ result r = SetBackgroundtoButton();
+ return r;
+}
+
+void
+DtmfKeyPadPanel::AddListenersToButtons()
+{
+ for (int i = NUM_KEY1; i <= HASH_KEY; ++i)
+ {
+ String buttonName(IDC_BUTTON);
+ buttonName.Append(i);
+ Button* pButton = static_cast<Button*>(GetControl(buttonName, true));
+ if(pButton == null)
+ {
+ continue;
+ }
+ pButton->SetActionId(i);
+ SetControlAlwaysOnTop(*pButton,true);
+ //Add Listeners
+ if(__pActionListener != null)
+ {
+ pButton->AddActionEventListener(*__pActionListener);
+ }
+ }
+}
+
+result
+DtmfKeyPadPanel::SetBackgroundtoButton()
+{
+ AppLogDebug("ENTER");
+ result r = E_FAILURE;
+ for (int i = 1; i <= 12; i++)
+ {
+ String buttonName(IDC_BUTTON);
+ buttonName.Append(i);
+ Button* pButton = static_cast<Button*>(GetControl(buttonName,true));
+ if(pButton == null)
+ {
+ continue;
+ }
+
+ Rectangle canvasRect(0, 0, pButton->GetBounds().width, pButton->GetBounds().height);
+ Canvas canvasNormal;
+ canvasNormal.Construct(canvasRect);
+ Canvas canvasPressed;
+ canvasPressed.Construct(canvasRect);
+
+ String number(DialUtil::ConvertDialedNumberToString(pButton->GetActionId()));
+ switch (pButton->GetActionId())
+ {
+ case NUM_KEY1:
+ {
+ r = ConstructButtonCanvas(canvasNormal, pButton, IDB_KEYPAD_BUTTON_NORMAL, BUTTON_STATUS_NORMAL);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
+ DrawImageToCanvas(IDB_KEYPAD_NUM1_ICON, Dimension(W_VOICE_CALL_ICON, H_VOICE_CALL_ICON), canvasNormal, POSITION_RIGHT);
+
+ //Set canvas for pressed state of the button
+ r = ConstructButtonCanvas(canvasPressed, pButton, IDB_KEYPAD_BUTTON_PRESS, BUTTON_STATUS_PRESSED);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
+ DrawImageToCanvas(IDB_KEYPAD_NUM1_ICON, Dimension(W_VOICE_CALL_ICON, H_VOICE_CALL_ICON), canvasPressed, POSITION_RIGHT);
+ }
+ break;
+
+ case NUM_KEY2:
+ {
+ r = ConstructButtonCanvas(canvasNormal, pButton, IDB_KEYPAD_BUTTON_NORMAL, BUTTON_STATUS_NORMAL);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
+ DrawTextToCanvas(IDI_KEY2_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
+
+ //Set canvas for pressed state of the button
+ r = ConstructButtonCanvas(canvasPressed, pButton, IDB_KEYPAD_BUTTON_PRESS, BUTTON_STATUS_PRESSED);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
+ DrawTextToCanvas(IDI_KEY2_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
+ }
+ break;
+
+ case NUM_KEY3:
+ {
+ r = ConstructButtonCanvas(canvasNormal, pButton, IDB_KEYPAD_BUTTON_NORMAL, BUTTON_STATUS_NORMAL);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
+ DrawTextToCanvas(IDI_KEY3_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
+
+ r = ConstructButtonCanvas(canvasPressed, pButton, IDB_KEYPAD_BUTTON_PRESS, BUTTON_STATUS_PRESSED);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
+ DrawTextToCanvas(IDI_KEY3_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
+ }
+ break;
+
+ case NUM_KEY4:
+ {
+ r = ConstructButtonCanvas(canvasNormal, pButton, IDB_KEYPAD_BUTTON_NORMAL, BUTTON_STATUS_NORMAL);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
+ DrawTextToCanvas(IDI_KEY4_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
+
+ r = ConstructButtonCanvas(canvasPressed, pButton, IDB_KEYPAD_BUTTON_PRESS, BUTTON_STATUS_PRESSED);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
+ DrawTextToCanvas(IDI_KEY4_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
+ }
+ break;
+
+ case NUM_KEY5:
+ {
+ r = ConstructButtonCanvas(canvasNormal, pButton, IDB_KEYPAD_BUTTON_NORMAL, BUTTON_STATUS_NORMAL);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
+ DrawTextToCanvas(IDI_KEY5_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
+
+ r = ConstructButtonCanvas(canvasPressed, pButton, IDB_KEYPAD_BUTTON_PRESS, BUTTON_STATUS_PRESSED);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
+ DrawTextToCanvas(IDI_KEY5_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
+ }
+ break;
+
+ case NUM_KEY6:
+ {
+ r = ConstructButtonCanvas(canvasNormal, pButton, IDB_KEYPAD_BUTTON_NORMAL, BUTTON_STATUS_NORMAL);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
+ DrawTextToCanvas(IDI_KEY6_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
+
+ r = ConstructButtonCanvas(canvasPressed, pButton, IDB_KEYPAD_BUTTON_PRESS, BUTTON_STATUS_PRESSED);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
+ DrawTextToCanvas(IDI_KEY6_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
+ }
+ break;
+
+ case NUM_KEY7:
+ {
+ r = ConstructButtonCanvas(canvasNormal, pButton, IDB_KEYPAD_BUTTON_NORMAL, BUTTON_STATUS_NORMAL);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
+ DrawTextToCanvas(IDI_KEY7_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
+
+ r = ConstructButtonCanvas(canvasPressed, pButton, IDB_KEYPAD_BUTTON_PRESS, BUTTON_STATUS_PRESSED);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
+ DrawTextToCanvas(IDI_KEY7_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
+ }
+ break;
+
+ case NUM_KEY8:
+ {
+ r = ConstructButtonCanvas(canvasNormal, pButton, IDB_KEYPAD_BUTTON_NORMAL, BUTTON_STATUS_NORMAL);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
+ DrawTextToCanvas(IDI_KEY8_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
+
+ r = ConstructButtonCanvas(canvasPressed, pButton, IDB_KEYPAD_BUTTON_PRESS, BUTTON_STATUS_PRESSED);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
+ DrawTextToCanvas(IDI_KEY8_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
+ }
+ break;
+
+ case NUM_KEY9:
+ {
+ r = ConstructButtonCanvas(canvasNormal, pButton, IDB_KEYPAD_BUTTON_NORMAL, BUTTON_STATUS_NORMAL);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
+ DrawTextToCanvas(IDI_KEY9_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
+
+ r = ConstructButtonCanvas(canvasPressed, pButton, IDB_KEYPAD_BUTTON_PRESS, BUTTON_STATUS_PRESSED);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
+ DrawTextToCanvas(IDI_KEY9_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
+ }
+ break;
+
+ case PAUSE_KEY:
+ {
+ r = ConstructButtonCanvas(canvasNormal, pButton, IDB_KEYPAD_BUTTON_NORMAL, BUTTON_STATUS_NORMAL);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawImageToCanvas(IDB_DIALER_STAR_ICON, Dimension(75, 36), canvasNormal, POSITION_LEFT);
+ DrawTextToCanvas(L"P", FONT_KEYPAD_P, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
+
+ r = ConstructButtonCanvas(canvasPressed, pButton, IDB_KEYPAD_BUTTON_PRESS, BUTTON_STATUS_PRESSED);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawImageToCanvas(IDB_DIALER_STAR_ICON, Dimension(75, 36), canvasPressed, POSITION_LEFT);
+ DrawTextToCanvas(L"P", FONT_KEYPAD_P, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
+ }
+ break;
+
+ case NUM_KEY0:
+ {
+ r = ConstructButtonCanvas(canvasNormal, pButton, IDB_KEYPAD_BUTTON_NORMAL, BUTTON_STATUS_NORMAL);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawTextToCanvas(L"0", FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
+ DrawTextToCanvas(L"+", FONT_KEYPAD_PLUS, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL);
+
+ r = ConstructButtonCanvas(canvasPressed, pButton, IDB_KEYPAD_BUTTON_PRESS, BUTTON_STATUS_PRESSED);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawTextToCanvas(L"0", FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
+ DrawTextToCanvas(L"+", FONT_KEYPAD_PLUS, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED);
+ }
+ break;
+
+ case HASH_KEY:
+ {
+ r = ConstructButtonCanvas(canvasNormal, pButton, IDB_KEYPAD_BUTTON_NORMAL, BUTTON_STATUS_NORMAL);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawTextToCanvas(L"#", FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL);
+
+ r = ConstructButtonCanvas(canvasPressed, pButton, IDB_KEYPAD_BUTTON_PRESS, BUTTON_STATUS_PRESSED);
+ TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() ConstructButtonCanvas failed");
+ DrawTextToCanvas(L"#", FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED);
+ }
+
+ break;
+ }
+ //Set the final Bitmap to Button
+ DialUtil::DrawCanvasToButton(&canvasNormal, &canvasPressed, pButton);
+ }
+
+ AppLogDebug("EXIT");
+ return E_SUCCESS;
+
+CATCH:
+ RemoveAllControls();
+ return r;
+}
+
+result
+DtmfKeyPadPanel::ConstructButtonCanvas(Canvas& canvas, Button* pButton, const String& bgImg, int buttonStatus)
+{
+ if (pButton == null)
+ {
+ return E_FAILURE;
+ }
+
+ //Construct a canvas
+ AppResource* pAppResource = AppResource::GetInstance();
+ Bitmap* pBitmap = pAppResource->GetBitmapN(bgImg);
+ if (pBitmap == null)
+ {
+ return E_FAILURE;
+ }
+
+ if (pBitmap->IsNinePatchedBitmap())
+ {
+ canvas.DrawNinePatchedBitmap(canvas.GetBounds(), *pBitmap);
+ }
+ else
+ {
+ if (buttonStatus == BUTTON_STATUS_NORMAL)
+ {
+ pButton->SetNormalBackgroundBitmap(*pBitmap);
+ }
+ else
+ {
+ pButton->SetPressedBackgroundBitmap(*pBitmap);
+ }
+ }
+ delete pBitmap;
+ return E_SUCCESS;
+}
+
+void
+DtmfKeyPadPanel::DrawImageToCanvas(const String& image, Dimension imageDimention, Canvas& canvas, int pos)
+{
+ //create and scale bitmap
+ AppResource* pAppResource = AppResource::GetInstance();
+ Bitmap* pBitmap = pAppResource->GetBitmapN(image);
+ pBitmap->SetScalingQuality(BITMAP_SCALING_QUALITY_MID);
+ pBitmap->Scale(imageDimention);
+
+ //Find position to draw bitmap
+ Point bitmapPos(0, 0);
+ switch (pos)
+ {
+ case POSITION_LEFT:
+ {
+ bitmapPos.SetPosition(INITIAL_X_OFFSET + (LEFT_X_OFFSET - pBitmap->GetWidth()) / 2, (canvas.GetBounds().height - pBitmap->GetHeight()) / 2);
+ }
+ break;
+
+ case POSITION_RIGHT:
+ {
+ bitmapPos.SetPosition(INITIAL_X_OFFSET + LEFT_X_OFFSET + ((RIGHT_X_OFFSET - pBitmap->GetWidth()) / 2), (canvas.GetBounds().height - pBitmap->GetHeight()) / 2);
+ }
+ break;
+
+ case POSITION_CENTER:
+ {
+ bitmapPos.SetPosition((canvas.GetBounds().width - pBitmap->GetWidth()) / 2, (canvas.GetBounds().height - pBitmap->GetHeight()) / 2);
+ }
+ break;
+ }
+
+ //draw bitmap
+ canvas.DrawBitmap(Rectangle(bitmapPos, Dimension(pBitmap->GetWidth(), pBitmap->GetHeight())), *pBitmap);
+ delete pBitmap;
+ pBitmap = null;
+}
+
+void
+DtmfKeyPadPanel::DrawTextToCanvas(const String& buttonText, int textFontStyle, Canvas& canvas, int pos, int buttonStatus)
+{
+ if (buttonText == null)
+ {
+ return;
+ }
+
+ //get text font
+ Font* font = GetTextFontN(textFontStyle);
+
+ //get text color
+ Color* textColor = GetTextColorN(textFontStyle, buttonStatus);
+
+ //create text element
+ TextElement* pTextElement = new (std::nothrow) TextElement();
+ pTextElement->Construct(buttonText);
+ pTextElement->SetTextColor(*textColor);
+ pTextElement->SetFont(*font);
+
+ //get dimensions of the text
+ Dimension textDimension;
+ font->GetTextExtent(buttonText, buttonText.GetLength(), textDimension);
+ textDimension.height = textDimension.height + font->GetDescender();
+ //create enriched text
+ EnrichedText* pEnrichedText = new (std::nothrow) EnrichedText();
+ pEnrichedText->Construct(textDimension);
+ pEnrichedText->Add(*pTextElement);
+
+ //set the position of the text in canvas
+ Point textPos(0, 0);
+ switch (pos)
+ {
+ case POSITION_LEFT:
+ {
+ textPos.SetPosition(INITIAL_TEXT_X_OFFSET + ((LEFT_TEXT_X_OFFSET - pEnrichedText->GetWidth()) / 2), (canvas.GetBounds().height - pEnrichedText->GetHeight()) / 2);
+ }
+ break;
+
+ case POSITION_RIGHT:
+ {
+ textPos.SetPosition(INITIAL_TEXT_X_OFFSET + LEFT_TEXT_X_OFFSET + LEFT_TEXT_X_MARGIN + ((RIGHT_TEXT_X_OFFSET - pEnrichedText->GetWidth()) / 2), (canvas.GetBounds().height - pEnrichedText->GetHeight()) / 2);
+ }
+ break;
+
+ case POSITION_CENTER:
+ {
+ textPos.SetPosition((canvas.GetBounds().width - pEnrichedText->GetWidth()) / 2, (canvas.GetBounds().height - pEnrichedText->GetHeight()) / 2);
+ }
+ break;
+ }
+
+ //Draw EnrichedText to canvas
+ canvas.DrawText(textPos, *pEnrichedText);
+
+ // Cleans up
+ pEnrichedText->RemoveAll(true);
+ delete pEnrichedText;
+ delete textColor;
+ delete font;
+}
+
+Font*
+DtmfKeyPadPanel::GetTextFontN(int textFontStyle)
+{
+ Font* font = new (std::nothrow) Font();
+
+ switch (textFontStyle)
+ {
+ case FONT_CALLING_TEXT:
+ {
+ font->Construct(FONT_STYLE_PLAIN, 94);
+ }
+ break;
+
+ case FONT_KEYPAD_NUMBER:
+ {
+ font->Construct(FONT_STYLE_PLAIN, 112);
+ }
+ break;
+
+ case FONT_KEYPAD_TEXT:
+ {
+ font->Construct(FONT_STYLE_PLAIN, 32);
+ }
+ break;
+
+ case FONT_KEYPAD_P:
+ case FONT_KEYPAD_PLUS:
+ {
+ font->Construct(FONT_STYLE_PLAIN, 64);
+ }
+ break;
+
+ case FONT_KEYPAD_CANCEL:
+ {
+ font->Construct(FONT_STYLE_PLAIN, 34);
+ }
+ break;
+ }
+ return font;
+}
+
+Color*
+DtmfKeyPadPanel::GetTextColorN(int textColor, int buttonStatus)
+{
+ Color* color = new (std::nothrow) Color();
+
+ if (buttonStatus == BUTTON_STATUS_PRESSED)
+ {
+ color->SetColorComponents(249, 249, 249);
+ return color;
+ }
+
+ switch (textColor)
+ {
+ case FONT_CALLING_TEXT:
+ {
+ color->SetColorComponents(0, 0, 0);
+ }
+ break;
+
+ case FONT_KEYPAD_NUMBER:
+ {
+ color->SetColorComponents(255, 255, 255);
+ }
+ break;
+
+ case FONT_KEYPAD_TEXT:
+ case FONT_KEYPAD_P:
+ case FONT_KEYPAD_PLUS:
+ {
+ color->SetColorComponents(148, 177, 200);
+ }
+ break;
+
+ case FONT_KEYPAD_CANCEL:
+ {
+ color->SetColorComponents(255, 255, 255);
+ }
+ break;
+ }
+ return color;
+}
+
+result
+DtmfKeyPadPanel::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+ RemoveAllControls();
+ return r;
+}
--- /dev/null
+//
+// 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 PhnEmergencyDialForm.cpp
+ * @brief Base class for all Call forms
+ */
+#include <FApp.h>
+#include "PhnAppUtility.h"
+#include "PhnCommonUtils.h"
+#include "PhnCallPresentationModel.h"
+#include "PhnDialerKeypad.h"
+#include "PhnErrorMsgPopup.h"
+#include "PhnEmergencyDialForm.h"
+#include "PhnPhoneApp.h"
+#include "PhnTypes.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::App;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Graphics;
+
+//resources
+const wchar_t* IDL_EMERGENCY_DIAL_FORM = L"IDL_EMERGENCY_DIAL_FORM";
+const wchar_t* IDC_LABEL_EMERGENCY = L"IDC_LABEL_EMERGENCY";
+const wchar_t* IDC_PANEL_EMERGENCY_DISPLAY_DATA = L"IDC_PANEL_EMERGENCY_DISPLAY_DATA";
+const wchar_t* IDC_EDITFIELD_NUMBER = L"IDC_EDITFIELD_NUMBER";
+//color
+const unsigned int COLOR_LABEL_BG = Color32<43, 107, 144>::Value;
+const int MAX_NUMBER_WITH_SEPERATOR = 11;
+const int MIN_NUMBER_WITH_TWO_SEPERATOR = 7;
+const int MIN_NUMBER_WITH_ONE_SEPERATOR = 3;
+const int MAX_TXT_LENGTH_WITH_SEPERATOR = 12;
+const int MAX_VISIBLE_TXT_WITH_MIN_FONT = 18;
+const int IDI_DELTA_FONT_SIZE = 5;
+const int IDI_MAX_TXT_FONT = 94;
+const int IDI_MIN_TXT_FONT = 67;
+const int IDI_MAX_LIMIT_LENGTH = 18;
+
+EmergencyDialForm::EmergencyDialForm(void)
+{
+ __pDialKeypad = null;
+ __pErrorMsgPopup = null;
+}
+
+EmergencyDialForm::~EmergencyDialForm(void)
+{
+ if(__pDialKeypad != null)
+ {
+ //RemoveControl() also deletes the child control.
+ RemoveControl(*__pDialKeypad);
+ __pDialKeypad = null;
+ }
+}
+
+bool
+EmergencyDialForm::Initialize(void)
+{
+ Construct(IDL_EMERGENCY_DIAL_FORM);
+ return true;
+}
+
+result
+EmergencyDialForm::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+ ConstructKeypad();
+ return r;
+}
+
+void
+EmergencyDialForm::ConstructKeypad(void)
+{
+ AppLogDebug("ENTER");
+ //Construct Alpha numeric Keypad
+ if(__pDialKeypad == null)
+ {
+ __pDialKeypad = new (std::nothrow) DialerKeypad(DialerKeypad::DIALER_STATE_EMERGENCY_APPCONTROL);
+ __pDialKeypad->ConstructPanel(this, this);
+ AddControl(*__pDialKeypad);
+ }
+ AppLogDebug("EXIT");
+ return;
+}
+
+void
+EmergencyDialForm::ShowFormattedText(EditField* pEditField, int actionId)
+{
+ AppLogDebug("ENTER");
+ String contactNumber = pEditField->GetText();
+ contactNumber.Replace(L"-",L"");
+ if(actionId == CLEAR_KEY)
+ {
+ contactNumber.Remove(contactNumber.GetLength() - 1, 1);
+ }
+ else
+ {
+ contactNumber.Append(DialUtil::ConvertDialedNumberToString(actionId));
+ }
+
+ int textLength = contactNumber.GetLength();
+ if(textLength == 0)
+ {
+ pEditField->Clear();
+ AppLogDebug("EXIT");
+ return;
+ }
+ //Insert separator if required
+ if(textLength < MAX_NUMBER_WITH_SEPERATOR)
+ {
+ if(textLength > MIN_NUMBER_WITH_TWO_SEPERATOR)
+ {
+ contactNumber.Insert(L"-",MIN_NUMBER_WITH_TWO_SEPERATOR);
+ }
+ if(textLength > MIN_NUMBER_WITH_ONE_SEPERATOR)
+ {
+ contactNumber.Insert(L"-",MIN_NUMBER_WITH_ONE_SEPERATOR);
+ }
+ }
+ //update text length
+ textLength = contactNumber.GetLength();
+ //need to change font to fit inside text box
+ //With size 94 -> 12 chars, 67 -> 18 chars
+ int fontSize = pEditField->GetTextSize();
+ if((actionId == CLEAR_KEY) && (textLength <= MAX_VISIBLE_TXT_WITH_MIN_FONT))
+ {
+ //clearing
+ fontSize += IDI_DELTA_FONT_SIZE;
+ }
+ else if(textLength > MAX_TXT_LENGTH_WITH_SEPERATOR)
+ {
+ //appending
+ fontSize -= IDI_DELTA_FONT_SIZE;
+ }
+
+ if(fontSize > IDI_MAX_TXT_FONT)
+ {
+ fontSize = IDI_MAX_TXT_FONT;
+ }
+ if(fontSize < IDI_MIN_TXT_FONT)
+ {
+ fontSize = IDI_MIN_TXT_FONT;
+ }
+ pEditField->SetTextSize(fontSize);
+ //set text to edit field
+ pEditField->SetText(contactNumber);
+
+ AppLogDebug("EXIT");
+ return;
+}
+
+void
+EmergencyDialForm::OnActionPerformed(const Control& source, int actionId)
+{
+ EditField* pEditField = static_cast<EditField*>(GetControl(IDC_EDITFIELD_NUMBER, true));
+ if (pEditField == null)
+ {
+ return;
+ }
+
+ switch (actionId)
+ {
+ case NUM_KEY1:
+ case NUM_KEY2:
+ case NUM_KEY3:
+ case NUM_KEY4:
+ case NUM_KEY5:
+ case NUM_KEY6:
+ case NUM_KEY7:
+ case NUM_KEY8:
+ case NUM_KEY9:
+ case NUM_KEY0:
+ case CLEAR_KEY:
+ {
+ if(pEditField->GetTextLength() >= IDI_MAX_LIMIT_LENGTH && actionId != CLEAR_KEY)
+ {
+ //Maximum capacity reached, Don't append any more numbers.
+ AppLogDebug("EXIT");
+ return;
+ }
+ //append / clear last character to contact
+ ShowFormattedText(pEditField, actionId);
+ }
+ break;
+
+ case CALL_KEY:
+ {
+ if (pEditField->GetTextLength() > 0)
+ {
+ String contactNo = pEditField->GetText();
+ contactNo.Replace(L"-",L"");
+ SwitchToOutgoingCallScreen(contactNo);
+ return;
+ }
+ }
+ break;
+
+ case PAUSE_KEY:
+ {
+ pEditField->AppendText(L"*");
+ }
+ break;
+
+ case HASH_KEY:
+ {
+ pEditField->AppendText(L"#");
+ }
+ break;
+
+ case VIDEOCALL_KEY:
+ {
+ //Not yet Supported
+ }
+ break;
+
+ case CANCEL_KEY:
+ {
+ PhoneApp* pApp = static_cast<PhoneApp*>(UiApp::GetInstance());
+ pApp->Terminate();
+ }
+ break;
+
+ default:
+ break;
+ }
+ pEditField->Invalidate(false);
+
+ return;
+}
+
+void
+EmergencyDialForm::OnLongPressGestureDetected(TouchLongPressGestureDetector& gestureDetector)
+{
+ if (gestureDetector.GetControl() != null)
+ {
+ Button* pButton = static_cast<Button*>(gestureDetector.GetControl());
+ int actionId = pButton->GetActionId();
+ switch(actionId)
+ {
+ case CLEAR_KEY:
+ {
+ EditField* pEditField = static_cast<EditField*>(GetControl(IDC_EDITFIELD_NUMBER, true));
+ if (pEditField != null && pEditField->GetTextLength() > 0)
+ {
+ pEditField->Clear();
+ pEditField->SetTextSize(IDI_MAX_TXT_FONT);
+ pEditField->Invalidate(false);
+ }
+ }
+ break;
+ }
+ }
+}
+
+result
+EmergencyDialForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+ return r;
+}
+
+void
+EmergencyDialForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
+{
+}
+
+void
+EmergencyDialForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
+{
+}
+
+void
+EmergencyDialForm::SwitchToOutgoingCallScreen(const String& contactNumber)
+{
+ AppLogDebug("ENTER");
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager);
+
+ CallPresentationModel* pCallPresentor = CallPresentationModel::GetInstance();
+ //Check if dialing a call is possible
+ bool isSimInitialized = pCallPresentor->CheckSimInitializationIsCompleted();
+ if (isSimInitialized)
+ {
+ //make an outgoing call with given number
+ String* contactTxt = new (std::nothrow) String(contactNumber);
+ //switch to dialing outgoing call form
+ ArrayList* pContact = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pContact->Construct(1);
+ pContact->Add(contactTxt);
+ //Check if dialing an emergency call
+ bool isEmergencyCall = pCallPresentor->IsEmergencyNumber(*contactTxt, true);
+ if (isEmergencyCall)
+ {
+ pSceneManager->GoForward( ForwardSceneTransition( IDSCN_SCENE_OUT_EMERGENCYCALL), pContact);
+ }
+ else
+ {
+ //Show error message Popup
+ if (__pErrorMsgPopup == null)
+ {
+ __pErrorMsgPopup = new (std::nothrow) ErrorMsgPopup(this);
+ }
+ __pErrorMsgPopup->ShowErrorMsgPopupN(ERROR_NOT_EMERGENCY_NUM);
+ }
+ }
+ else
+ {
+ //TODO: check what to do for SOS calls
+ //Show error message Popup
+ if (__pErrorMsgPopup == null)
+ {
+ __pErrorMsgPopup = new (std::nothrow) ErrorMsgPopup(this);
+ }
+ __pErrorMsgPopup->ShowErrorMsgPopupN(ERROR_CODE_SIM_INITIALIZATION_FAILED);
+ }
+ AppLogDebug("EXIT");
+ return;
+}
+
+void
+EmergencyDialForm::HandlePopupClosed(void)
+{
+ EditField* pEditField = static_cast<EditField*>(GetControl(IDC_EDITFIELD_NUMBER, true));
+ //clear text
+ pEditField->Clear();
+ Draw();
+ delete __pErrorMsgPopup;
+ __pErrorMsgPopup = null;
+ return;
+}
--- /dev/null
+//
+// 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 PhnEndCallForm.cpp
+ * @brief End Call form implementation
+ */
+#include <FApp.h>
+#include <FUi.h>
+#include <FMedia.h>
+#include "PhnPhoneApp.h"
+#include "PhnAppUtility.h"
+#include "PhnEndCallForm.h"
+#include "PhnCallButtonsPanel.h"
+#include "PhnCallPresentationModel.h"
+#include "PhnSceneRegister.h"
+#include "PhnTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Media;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+//constants
+const int IDI_APP_END_TIMER = 3000;
+const int W_PHOTO_LABEL = 720;
+const int H_PHOTO_LABEL = 720;
+const int X_PHOTO_LBL = 166;
+const int Y_PHOTO_LBL = 232;
+const int W_PHOTO_LBL = 388;
+const int H_PHOTO_LBL = 388;
+static const wchar_t* IDL_END_CALL_FORM = L"IDL_END_CALL_FORM";
+static const wchar_t* IDC_ADD_TO_CONTACT_BUTTON = L"IDC_ADD_TO_CONTACT_BUTTON";
+static const wchar_t* IDC_NUMBER1_LABEL = L"IDC_NUMBER1_LABEL";
+static const wchar_t* IDC_CALLER1_LABEL = L"IDC_CALLER1_LABEL";
+static const wchar_t* IDC_CALLER1_BIGPHOTO_LABEL = L"IDC_CALLER1_BIGPHOTO_LABEL";
+static const wchar_t* IDB_END_CALL_DEFAULT_ICON = L"C01-1_end call_default_caller ID_720x720.png";
+
+EndCallForm::EndCallForm(void)
+: BaseForm(FORMTYPE_ENDCALL)
+{
+ __pCallButtonsPanel = null;
+ __pContactNumber = null;
+ __pEndCallEventTimer = null;
+ __pSmallPhotoLabel = null;
+ __isMsgAppControlLaunched = false;
+ __isContactAppControlLaunched = false;
+}
+
+EndCallForm::~EndCallForm(void)
+{
+ if (__pEndCallEventTimer != null)
+ {
+ __pEndCallEventTimer->Cancel();
+ delete __pEndCallEventTimer;
+ __pEndCallEventTimer = null;
+ }
+ if (__pSmallPhotoLabel != null)
+ {
+ RemoveControl(*__pSmallPhotoLabel);
+ __pSmallPhotoLabel = null;
+ }
+}
+
+void
+EndCallForm::Initialize(void)
+{
+ Construct(IDL_END_CALL_FORM);
+ //initialize keypad and buttons
+ InitializeCallButtonsPanel();
+ //set initial show state to false. Correct state set on OnSceneActivatedN
+ SetContactButtonState(false);
+}
+
+result
+EndCallForm::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+
+ AddKeyPadActionListener(IDC_ADD_TO_CONTACT_BUTTON, IDA_ADD_TO_CONTACTS);
+
+ __pEndCallEventTimer = new (std::nothrow) Tizen::Base::Runtime::Timer();
+ r = __pEndCallEventTimer->Construct(*this);
+
+ __pCallPresentor = CallPresentationModel::GetInstance();
+ return r;
+}
+
+void
+EndCallForm::InitializeCallButtonsPanel(void)
+{
+ __pCallButtonsPanel = new (std::nothrow) CallButtonsPanel();
+ __pCallButtonsPanel->ConstructPanel(this, FORMTYPE_ENDCALL);
+ AddControl(*__pCallButtonsPanel);
+}
+
+void
+EndCallForm::AddKeyPadActionListener(const String& keyName, CommandIds cmdId)
+{
+ Button* pButton = static_cast<Button*>(GetControl(keyName));
+ if (pButton != null)
+ {
+ pButton->SetActionId(cmdId);
+ pButton->AddActionEventListener(*this);
+ }
+}
+
+result
+EndCallForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pCallPresentor)
+ {
+ __pCallPresentor = null;
+ }
+ return r;
+}
+
+void
+EndCallForm::OnActionPerformed(const Control& source, int actionId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager);
+
+ switch (actionId)
+ {
+ case IDA_VOICE_CALL:
+ {
+ //check if EndCallTimer is running, then cancel it
+ if(__pEndCallEventTimer != null)
+ {
+ __pEndCallEventTimer->Cancel();
+ }
+ //make an outgoing call with given number
+ String* contactTxt = new (std::nothrow) String(*__pContactNumber);
+ //switch to dialing outgoing call form
+ ArrayList* pContact = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pContact->Construct();
+ pContact->Add(contactTxt);
+
+ //Check if dialing a call is possible
+ bool isSimInitialized = __pCallPresentor->CheckSimInitializationIsCompleted();
+ if (isSimInitialized)
+ {
+ //Check if dialing an emergency call
+ bool isEmergencyCall = __pCallPresentor->IsEmergencyNumber(*contactTxt, true);
+ if (isEmergencyCall)
+ {
+ pSceneManager->GoForward( ForwardSceneTransition( IDSCN_SCENE_OUT_EMERGENCYCALL), pContact);
+ }
+ else
+ {
+ pSceneManager->GoForward( ForwardSceneTransition(IDSCN_SCENE_OUTCALL), pContact);
+ }
+ }
+ else
+ {
+ //Show error message Popup
+ HandleTelephonyError(ERROR_CODE_SIM_INITIALIZATION_FAILED);
+ }
+ }
+ break;
+
+ case IDA_VIDEO_CALL:
+ //Make Video Call
+ break;
+
+ case IDA_MESSAGE:
+ {
+ if (__isMsgAppControlLaunched == true)
+ {
+ //AppControl already launched.
+ return;
+ }
+ //launch message AppControl
+ __isMsgAppControlLaunched = true;
+ result r = E_SUCCESS;
+ HashMap extraData;
+ extraData.Construct();
+
+ extraData.Add(new (std::nothrow) String(MESSAGE_TYPE), new (std::nothrow) String(MESSAGE_SMS_TYPE));
+ extraData.Add(new (std::nothrow) String(MESSAGE_TO), new (std::nothrow) String(*__pContactNumber));
+
+ AppControl* pAc = AppManager::FindAppControlN(PROVIDER_ID_MESSAGE, OPERATION_ID_COMPOSE);
+ if (pAc != null)
+ {
+ r = pAc->Start(null, null, &extraData, this);
+ if(r != E_SUCCESS)
+ {
+ //AppControl request failed, reset flag.
+ __isMsgAppControlLaunched = false;
+ }
+ else if (r == E_SUCCESS && __pEndCallEventTimer != null)
+ {
+ //cancel EndCallTimer, if AppControl request was successful.
+ __pEndCallEventTimer->Cancel();
+ }
+ delete pAc;
+ }
+
+ extraData.RemoveAll(true);
+ }
+ break;
+
+ case IDA_ADD_TO_CONTACTS:
+ {
+ if(__isContactAppControlLaunched == true)
+ {
+ //AppControl already launched.
+ return;
+ }
+ //Launch Contact AppControl
+ __isContactAppControlLaunched = true;
+ result r = E_SUCCESS;
+ HashMap extraData;
+ extraData.Construct();
+
+ extraData.Add(new (std::nothrow) String(INPUT_TYPE_PHONE), new (std::nothrow) String(*__pContactNumber));
+ AppControl* pAc = AppManager::FindAppControlN(PROVIDER_ID_CONTACTS, OPERATION_ID_ADD);
+ if (pAc != null)
+ {
+ r = pAc->Start(null, null, &extraData, this);
+ if(r != E_SUCCESS)
+ {
+ //AppControl request failed, reset flag.
+ __isContactAppControlLaunched = false;
+ }
+ else if (r == E_SUCCESS && __pEndCallEventTimer != null)
+ {
+ //cancel EndCallTimer, if AppControl request was success.
+ __pEndCallEventTimer->Cancel();
+
+ //NOTE:- goto next scene if present and is either Call log or Dialer,
+ // Else forcefully goto Dialer scene.
+ //Because we do not get any Appcontrol Completed response from Contacts in this case.
+ SceneId nextScene = (static_cast<PhoneApp*>(UiApp::GetInstance()))->GetInitialScene();
+ if(nextScene != IDSCN_CALL_LOG)
+ {
+ nextScene = IDSCN_DIALER;
+ }
+ pSceneManager->GoForward( ForwardSceneTransition(nextScene,
+ SCENE_TRANSITION_ANIMATION_TYPE_NONE,
+ SCENE_HISTORY_OPTION_NO_HISTORY));
+ }
+ delete pAc;
+ }
+ extraData.RemoveAll(true);
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+void
+EndCallForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
+{
+ //set itself as listener
+ __pCallPresentor->SetTelEventListener(this);
+ //listen to Foreground events
+ PhoneApp* pPhoneApp = static_cast<PhoneApp*>(PhoneApp::GetInstance());
+ pPhoneApp->AddAppStateChangeListener(*this);
+ __isMsgAppControlLaunched = false;
+ __isContactAppControlLaunched = false;
+
+ switch (__formType)
+ {
+ case FORMTYPE_ENDCALL:
+ {
+ //fetch ended call details
+ CallInfo* pEndCall = static_cast<CallInfo*>(pArgs->GetAt(0));
+
+ //contact number
+ __pContactNumber = new (std::nothrow) String();
+ __pContactNumber->Append(pEndCall->GetContactNumber());
+
+ //Fetch & show contact person details
+ ShowPersonDetails(*__pContactNumber, IDC_CALLER1_LABEL, IDC_CALLER1_BIGPHOTO_LABEL,pEndCall);
+ //If call is hidden means no contact number is present,
+ //or if call is from known number, Then do NOT show "Add to Contact" button.
+ if (pEndCall->IsNumberPresent() == true || pEndCall->GetContactNumber().IsEmpty() == true)
+ {
+ SetContactButtonState(false);
+ }
+ else
+ {
+ SetContactButtonState(true);
+ }
+
+ //Check if call is Emergency call or Hidden call,
+ //then disable all button in Call button panel.
+ if (pEndCall->IsEmergency() == true || pEndCall->GetContactNumber().IsEmpty() == true)
+ {
+ __pCallButtonsPanel->SetEndCallPanelState(false);
+ }
+ else
+ {
+ __pCallButtonsPanel->SetEndCallPanelState(true);
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ if (__pEndCallEventTimer)
+ {
+ __pEndCallEventTimer->Start(IDI_APP_END_TIMER);
+ }
+
+ if (pArgs)
+ {
+ pArgs->RemoveAll();
+ delete pArgs;
+ pArgs = null;
+ }
+}
+
+void
+EndCallForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
+{
+ if (__pContactNumber)
+ {
+ delete __pContactNumber;
+ __pContactNumber = null;
+ }
+ if (__pSmallPhotoLabel != null)
+ {
+ __pSmallPhotoLabel->SetShowState(false);
+ }
+ //remove itself as listener
+ PhoneApp* pPhoneApp = static_cast<PhoneApp*>(PhoneApp::GetInstance());
+ pPhoneApp->RemoveAppStateChangeListener(*this);
+}
+
+result
+EndCallForm::OnDraw(void)
+{
+ return E_SUCCESS;
+}
+
+void
+EndCallForm::SetContactButtonState(bool showState)
+{
+ Button* pButton = static_cast<Button*>(GetControl(IDC_ADD_TO_CONTACT_BUTTON));
+ if (pButton != null)
+ {
+ pButton->SetShowState(showState);
+ }
+}
+
+void
+EndCallForm::ShowPhoneNumber(const String& phoneNumber, const String& lblName)
+{
+ String formattedNumber = phoneNumber;
+ Label* pContactLbl = static_cast<Label*>(GetControl(lblName));
+ pContactLbl->SetText(formattedNumber);
+}
+
+void
+EndCallForm::ShowPersonDetails(const String& phoneNumber, const String& nameLblName, const String& photoLblName, CallInfo* pCallInfo)
+{
+ //show phone number
+ ShowPhoneNumber(phoneNumber, IDC_NUMBER1_LABEL);
+
+ Label* pNameLbl = static_cast<Label*>(GetControl(nameLblName));
+ Label* pPhotoLbl = static_cast<Label*>(GetControl(photoLblName));
+
+ //fetch contact details based on phone number
+ String* pDisplayName = pCallInfo->FetchCallerNameN();
+ Bitmap* pPhotoBitmap = pCallInfo->FetchCallerPhotoN();
+
+ //passing an empty string to SetText fails in label,
+ //if previously valid text has been set
+ if (pDisplayName != null && pDisplayName->IsEmpty() == true && pNameLbl->GetText().IsEmpty() == false)
+ {
+ pDisplayName->Append(L" ");
+ }
+
+ // show display name on name Label
+ if (pDisplayName != null)
+ {
+ pNameLbl->SetText(*pDisplayName);
+ }
+
+ // If record not found or no photo id present for user,
+ //fetch default bitmap.
+ if (pPhotoBitmap != null)
+ {
+ // show Thumbnail bitmap on photo Label
+ pPhotoLbl->SetBackgroundBitmap(*pPhotoBitmap);
+ pPhotoLbl->Invalidate(true);
+ delete pPhotoBitmap;
+ }
+ else
+ {
+ //Set Default Photo
+ Bitmap* pDefaultPhoto = AppUtility::GetBitmapFromResourcesN(IDB_END_CALL_DEFAULT_ICON,W_PHOTO_LABEL,H_PHOTO_LABEL);
+ if (pDefaultPhoto != null)
+ {
+ pPhotoLbl->SetBackgroundBitmap(*pDefaultPhoto);
+ pPhotoLbl->Invalidate(true);
+ delete pDefaultPhoto;
+ }
+ }
+ RequestRedraw(true);
+ //free resources
+ if (pDisplayName)
+ {
+ delete pDisplayName;
+ pDisplayName = null;
+ }
+}
+
+void
+EndCallForm::ShowCallersPhotoThumbnail(const Bitmap& pPhotoId)
+{
+ if (__pSmallPhotoLabel != null)
+ {
+ RemoveControl(*__pSmallPhotoLabel);
+ __pSmallPhotoLabel = null;
+ }
+ //Draw Small Photo and show on small photo label
+ __pSmallPhotoLabel = new (std::nothrow) Label();//static_cast<Label*>(GetControl(IDC_SMALL_PHOTO_LABEL));
+ __pSmallPhotoLabel->Construct(Rectangle(X_PHOTO_LBL, Y_PHOTO_LBL, W_PHOTO_LBL, H_PHOTO_LBL), L"");
+ __pSmallPhotoLabel->SetBackgroundColor(Color(0,0,0));
+ __pSmallPhotoLabel->SetBackgroundBitmap(pPhotoId);
+ // Add a Label to the Form
+ AddControl(*__pSmallPhotoLabel);
+ __pSmallPhotoLabel->Invalidate(true);
+}
+
+void
+EndCallForm::OnTimerExpired(Tizen::Base::Runtime::Timer& timer)
+{
+ //goto initial scene or close application, since this was last active call.
+ HandleLastCallCompletion();
+}
+
+void
+EndCallForm::OnAppControlCompleteResponseReceived(const AppId& appId, const String& operationId, AppCtrlResult appControlResult, const IMap* pExtraData)
+{
+ if (__isMsgAppControlLaunched == true)
+ {
+ //Message AppControl request completed.
+ __isMsgAppControlLaunched = false;
+ }
+ //AppControl completed, goto initial scene if present
+ //else exit.
+ HandleLastCallCompletion();
+}
+
+void
+EndCallForm::HandleLastCallCompletion(void)
+{
+ //switch back to Dialer tab, based on starting state of call.
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ PhoneApp* pPhoneApp = (static_cast<PhoneApp*>(UiApp::GetInstance()));
+ SceneId nextSceneId = pPhoneApp->GetInitialScene();
+ if (pSceneManager->GetCurrentScene()->GetSceneId() == IDSCN_SCENE_ENDCALL)
+ {
+ if(nextSceneId == IDSCN_DIALER || nextSceneId == IDSCN_CALL_LOG)
+ {
+ pSceneManager->GoForward( ForwardSceneTransition(nextSceneId, SCENE_TRANSITION_ANIMATION_TYPE_NONE,
+ SCENE_HISTORY_OPTION_NO_HISTORY));
+ }
+ else
+ {
+ pPhoneApp->Terminate();
+ }
+ }
+}
+
+void
+EndCallForm::OnForeground(void)
+{
+ AppLogDebug("Enter");
+ //If Contact app control was launched
+ //as we do not know if it success or failed.
+ __isContactAppControlLaunched = false;
+}
+
+void
+EndCallForm::OnBackground(void)
+{
+ AppLogDebug("Enter");
+}
--- /dev/null
+//
+// 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 PhnErrorMsgPopup.cpp
+ * @brief Error message pop class
+ */
+#include <FGraphics.h>
+#include "PhnAppUtility.h"
+#include "PhnErrorMsgPopup.h"
+#include "PhnTypes.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Graphics;
+using namespace Tizen::Base::Utility;
+using namespace Tizen::Base::Runtime;
+
+const int IDI_VERTICAL_LINE_SPACING = 20;
+const int W_ERROR_MSG_POPUP = 720;
+const int IDI_VERTICAL_MARGIN = 39;
+static const wchar_t* IDL_ERROR_MSG_POPUP = L"IDL_ERROR_MSG_POPUP";
+static const wchar_t* IDC_MSG_TEXTBOX = L"IDC_MSG_TEXTBOX";
+static const wchar_t* IDS_DIAL_ERROR_MSG = L"IDS_DIAL_ERROR_MSG";
+static const wchar_t* IDS_JOIN_FAILED_ERROR_MSG = L"IDS_JOIN_FAILED_ERROR_MSG";
+static const wchar_t* IDS_REJECT_FAILED_ERROR_MSG = L"IDS_REJECT_FAILED_ERROR_MSG";
+static const wchar_t* IDS_CALL_SWAP_ERROR_MSG = L"IDS_CALL_SWAP_ERROR_MSG";
+static const wchar_t* IDS_END_PARTICIPANT_ERROR_MSG = L"IDS_END_PARTICIPANT_ERROR_MSG";
+static const wchar_t* IDS_SPLIT_PARTICIPANT_ERROR_MSG = L"IDS_SPLIT_PARTICIPANT_ERROR_MSG";
+static const wchar_t* IDS_SIM_INIT_ERROR_MSG = L"IDS_SIM_INIT_ERROR_MSG";
+static const wchar_t* IDS_EMERGENCY_CALLS_ONLY_ERROR_MSG = L"IDS_EMERGENCY_CALLS_ONLY_ERROR_MSG";
+static const wchar_t* IDS_INVALID_ARGS_ERROR_MSG = L"IDS_INVALID_ARGS_ERROR_MSG";
+static const wchar_t* IDS_TAPI_INIT_ERROR_MSG = L"IDS_TAPI_INIT_ERROR_MSG";
+static const wchar_t* IDS_GENERAL_TAPI_ERROR_MSG = L"IDS_GENERAL_TAPI_ERROR_MSG";
+static const wchar_t* IDS_LONG_BARRING_PWD_ERROR_MSG = L"IDS_LONG_BARRING_PWD_ERROR_MSG";
+static const wchar_t* IDS_INVALID_NUMBER_ERROR_MSG = L"IDS_INVALID_NUMBER_ERROR_MSG";
+static const wchar_t* IDS_GENERAL_ERROR_MSG = L"IDS_GENERAL_ERROR_MSG";
+
+ErrorMsgPopup::ErrorMsgPopup(IPopupClosedEventListener* pEventListener)
+: __pEventListener(pEventListener)
+{
+ __pTimer = null;
+}
+
+ErrorMsgPopup::~ErrorMsgPopup(void)
+{
+ if (__pTimer)
+ {
+ __pTimer->Cancel();
+ delete __pTimer;
+ __pTimer = null;
+ }
+}
+
+void
+ErrorMsgPopup::ConstructPopup(int errorCode)
+{
+ Construct(IDL_ERROR_MSG_POPUP);
+ //Fetch error message
+ String msg = FetchErrorMessage(errorCode);
+
+ //Set text to Message box
+ TextBox* pMsgTxtBox = static_cast<TextBox*>(GetControl(IDC_MSG_TEXTBOX));
+ pMsgTxtBox->SetLineSpacing(1,1);
+ pMsgTxtBox->SetText(msg);
+ pMsgTxtBox->SetEnabled(false);
+ pMsgTxtBox->SetTextAlignment(ALIGNMENT_CENTER);
+
+ Rectangle msgTxtBoxRect = pMsgTxtBox->GetBounds();
+ //get no. of lines to show message
+ int noOfLines = pMsgTxtBox->GetLineCount();
+ pMsgTxtBox->SetSize(msgTxtBoxRect.width,((noOfLines * msgTxtBoxRect.height) + IDI_VERTICAL_LINE_SPACING));
+
+ Dimension popUpDimen = pMsgTxtBox->GetSize();
+ popUpDimen.width = W_ERROR_MSG_POPUP;
+ popUpDimen.height += (2 * IDI_VERTICAL_MARGIN);
+ SetSize(popUpDimen);
+
+ SetControlAlwaysOnTop(*pMsgTxtBox,true);
+ RelativeLayout* relPopUpLayout = static_cast<RelativeLayout*>(GetLayoutN());
+ if(relPopUpLayout != null)
+ {
+ // Set Relations between msgtextbox and Popup
+ relPopUpLayout->SetCenterAligned(*pMsgTxtBox, CENTER_ALIGN_HORIZONTAL);
+ relPopUpLayout->SetCenterAligned(*pMsgTxtBox, CENTER_ALIGN_VERTICAL);
+ }
+ //construct timer
+ __pTimer = new (std::nothrow) Timer();
+ __pTimer->Construct(*this);
+}
+
+void
+ErrorMsgPopup::ShowErrorMsgPopupN(int errorCode)
+{
+ //Construct the message popup
+ ConstructPopup(errorCode);
+ //Show popup message
+ ShowPopup();
+}
+
+void
+ErrorMsgPopup::ShowPopup(void)
+{
+ __popupModalResult = 0;
+ //start timer to show popup
+ __pTimer->Start(2000);
+ SetShowState(true);
+ Show();
+}
+
+void
+ErrorMsgPopup::OnTimerExpired(Tizen::Base::Runtime::Timer& timer)
+{
+ //Call default implementation of "Object.Equals()"
+ //returns true, if they are pointing to same address.
+ if (__pTimer->Equals(timer))
+ {
+ SetShowState(false);
+ //notify the listener
+ __pEventListener->HandlePopupClosed();
+ }
+}
+
+String
+ErrorMsgPopup::FetchErrorMessage(int errorCode)
+{
+ String msg(L"");
+ switch (errorCode)
+ {
+ case ERROR_NONE:
+ break;
+
+ case ERROR_DIAL_FAILED:
+ {
+ msg.Append(AppUtility::GetResourceString(IDS_DIAL_ERROR_MSG));
+ }
+ break;
+
+ case ERROR_JOIN_FAILED:
+ {
+ msg.Append(AppUtility::GetResourceString(IDS_JOIN_FAILED_ERROR_MSG));
+ }
+ break;
+
+ case ERROR_REJECT_FAILED:
+ {
+ msg.Append(AppUtility::GetResourceString(IDS_REJECT_FAILED_ERROR_MSG));
+ }
+ break;
+
+ case ERROR_SWAP_FAILED:
+ {
+ msg.Append(AppUtility::GetResourceString(IDS_CALL_SWAP_ERROR_MSG));
+ }
+ break;
+
+ case ERROR_END_FROM_CONFERENCE_FAILED:
+ {
+ msg.Append(AppUtility::GetResourceString(IDS_END_PARTICIPANT_ERROR_MSG));
+ }
+ break;
+
+ case ERROR_SPLIT_FROM_CONFERENCE_FAILED:
+ {
+ msg.Append(AppUtility::GetResourceString(IDS_SPLIT_PARTICIPANT_ERROR_MSG));
+ }
+ break;
+
+ case ERROR_CODE_SIM_INITIALIZATION_FAILED:
+ {
+ msg.Append(AppUtility::GetResourceString(IDS_SIM_INIT_ERROR_MSG));
+ }
+ break;
+
+ case ERROR_NOT_EMERGENCY_NUM:
+ {
+ msg.Append(AppUtility::GetResourceString(IDS_EMERGENCY_CALLS_ONLY_ERROR_MSG));
+ }
+ break;
+
+ case ERROR_INVALID_INPUT:
+ {
+ msg.Append(AppUtility::GetResourceString(IDS_INVALID_ARGS_ERROR_MSG));
+ }
+ break;
+
+ case ERROR_TAPI_INIT_FAILED:
+ {
+ msg.Append(AppUtility::GetResourceString(IDS_TAPI_INIT_ERROR_MSG));
+ }
+ break;
+
+ case ERROR_TAPI_ERROR:
+ {
+ msg.Append(AppUtility::GetResourceString(IDS_GENERAL_TAPI_ERROR_MSG));
+ }
+ break;
+
+ case ERROR_BARRING_PWD_TOO_LONG:
+ {
+ msg.Append(AppUtility::GetResourceString(IDS_LONG_BARRING_PWD_ERROR_MSG));
+ }
+ break;
+
+ case ERROR_INVALID_NUMBER:
+ {
+ msg.Append(AppUtility::GetResourceString(IDS_INVALID_NUMBER_ERROR_MSG));
+ }
+ break;
+
+ case ERROR_GENERAL:
+ default:
+ {
+ msg.Append(AppUtility::GetResourceString(IDS_GENERAL_ERROR_MSG));
+ }
+ break;
+ }
+
+ return msg;
+}
+
+
--- /dev/null
+//
+// 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 PhnIncomingCallForm.cpp
+ * @brief Incoming Call form implementation
+ */
+#include <FBaseColIList.h>
+#include <FMessaging.h>
+#include "PhnIncomingCallForm.h"
+#include "PhnAppUtility.h"
+#include "PhnSettingsManager.h"
+#include "PhnCallPresentationModel.h"
+#include "PhnSceneRegister.h"
+#include "PhnTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Messaging;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Animations;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+//Constants
+const int W_DIAL_BITMAP = 102;
+const int H_DIAL_BITMAP = 102;
+const int W_CREATE_BITMAP = 56;
+const int H_CREATE_BITMAP = 56;
+const int X_CREATE_BITMAP = 8;
+const int Y_CREATE_BITMAP = 8;
+const int W_MESSAGE_BG_BITMAP = 720;
+const int H_MESSAGE_BG_BITMAP = 92;
+const int W_ARROW_BITMAP = 18;
+const int H_ARROW_BITMAP = 12;
+const int W_MESSAGE_BITMAP = 50;
+const int H_MESSAGE_BITMAP = 50;
+const int X_MESSAGE_BITMAP = 148;
+const int Y_MESSAGE_BITMAP = 28;
+const int MESSAGE_TEXT_X_MARGIN = 20;
+const int MESSAGE_TEXT_Y_MARGIN = 7;
+const int SEND_TEXT_X_MARGIN = 78;
+const int SEND_TEXT_Y_MARGIN = 20;
+const int SEND_BUTTON_ROUND_DIMENSION = 5;
+const int W_DIAL_LABEL = 158;
+const int H_DIAL_LABEL = 158;
+const int DIAL_ICON_X_OFFSET = 23;
+const int DIAL_ICON_Y_OFFSET = 23;
+const int REJECT_LABEL_X_OFFSET = 542;
+const int X_CALL_PANEL = 0;
+const int Y_CALL_PANEL = 190;
+const int H_CALL_PANEL = 158;
+const int Y_ARROW_LABEL = 79;
+const int W_ARROW_LABEL = 20;
+const int H_ARROW_LABEL = 32;
+const int VALID_TOUCH_X_OFFSET = 158;
+const int VALID_TOUCH_Y_OFFSET = 158;
+const int X_ARROW_LABEL_STARTPOS = 198;
+const int ARROW_LABEL_X_MARGIN = 48;
+const int ACCEPT_LABEL_RELATIVE_POS = -384; //relative pos of accept labels right to reject labels left
+const int MAX_LIST_HEIGHT = 678;
+const int H_REJECT_VIEW_FOOTER = 114;
+const int X_LIST_TEXT_ITEM = 16;
+const int W_LIST_TEXT_ITEM = 452;
+const int H_LIST_TEXT_ITEM = 111;
+const int X_SEND_TEXT_ITEM = 484;
+const int Y_SEND_TEXT_ITEM = 20;
+const int W_SEND_TEXT_ITEM = 220;
+const int H_SEND_TEXT_ITEM = 72;
+const int X_PHOTO_LBL = 166;
+const int Y_PHOTO_LBL = 232;
+const int W_PHOTO_LBL = 388;
+const int H_PHOTO_LBL = 388;
+const int W_PHOTO_LABEL = 720;
+const int H_PHOTO_LABEL = 720;
+
+const unsigned int COLOR_SEND_BUTTON_PRESSED = Color32<130, 142, 150>::Value;
+const unsigned int COLOR_SEND_BUTTON_NORMAL = Color32<64, 156, 211>::Value;
+const unsigned int COLOR_SWIPE_PANEL = Color32<0, 0, 0, 255>::Value;
+const unsigned int COLOR_LIST_TEXT_NORMAL = Color32<0, 0, 0>::Value;
+const unsigned int COLOR_LIST_TEXT_PRESSED = Color32<249, 249, 249>::Value;
+
+const int FONT_SIZE_MSG_TXT = 32;
+
+static const wchar_t* IDL_INCOMING_CALL_FORM = L"IDL_INCOMING_CALL_FORM";
+static const wchar_t* IDB_REJECT_MESSAGE_BG = L"C01-1_Reject_message_bg.png";
+static const wchar_t* IDB_REJECT_MESSAGE_UP_ARROW = L"C01-1_Reject_message_arrow_01.png";
+static const wchar_t* IDB_REJECT_MESSAGE_DOWN_ARROW = L"C01-1_Reject_message_arrow_02.png";
+static const wchar_t* IDB_REJECT_MESSAGE_ICON = L"C01-1_icon_Reject_with_Message.png";
+static const wchar_t* IDB_ACCEPT_CIRCLE_ICON = L"C01-1_accept_left.png";
+static const wchar_t* IDB_REJECT_CIRCLE_ICON = L"C01-1_reject_right.png";
+static const wchar_t* IDB_CALL_ACCEPT_ICON = L"C01-1_accept_left_dial_answer.png";
+static const wchar_t* IDB_CALL_REJECT_ICON = L"C01-1_reject_right_dial_decline.png";
+static const wchar_t* IDB_ACCEPT_ARROW_ICON = L"C01-1_arrow_g.png";
+static const wchar_t* IDB_REJECT_ARROW_ICON = L"C01-1_arrow_r.png";
+static const wchar_t* IDB_CALL_BG = L"C01-1_calling_BG_01.png";
+static const wchar_t* IDB_CREATE_BUTTON_ICON = L"C01-1_btn_create.png";
+static const wchar_t* IDB_BACK_BUTTON_ICON = L"C01-1_btn_back.png";
+static const wchar_t* IDC_REJECT_MESSAGE_BUTTON = L"IDC_REJECT_MESSAGE_BUTTON";
+static const wchar_t* IDC_REJECT_PANEL = L"IDC_REJECT_PANEL";
+static const wchar_t* IDC_BACK_BUTTON = L"IDC_BACK_BUTTON";
+static const wchar_t* IDC_CREATE_BUTTON = L"IDC_CREATE_BUTTON";
+static const wchar_t* IDC_REJECT_MESSAGE_CANCEL_BUTTON = L"IDC_REJECT_MESSAGE_CANCEL_BUTTON";
+static const wchar_t* IDC_LIST_SCROLLPANEL = L"IDC_LIST_SCROLLPANEL";
+static const wchar_t* IDC_MSG_TABLEVIEW = L"IDC_MSG_TABLEVIEW";
+static const wchar_t* IDC_CALLER_LABEL = L"IDC_CALLER_LABEL";
+static const wchar_t* IDC_NUMBER_LABEL = L"IDC_NUMBER_LABEL";
+static const wchar_t* IDC_BIG_PHOTO_LABEL = L"IDC_BIG_PHOTO_LABEL";
+const wchar_t* IDS_REJECT_MESSAGE_BTN = L"IDS_REJECT_MESSAGE_BTN";
+const wchar_t* IDS_LIST_SEND_BUTTON = L"IDS_LIST_SEND_BUTTON";
+const wchar_t* IDS_NO_MESSAGE_STR = L"IDS_NO_MESSAGE_STR";
+
+const int ID_MULTI_PARTY_CALL = 505;
+const int ID_SECOND_INCOMING_CALL = 503;
+
+const wchar_t* IDI_FORM_VISUAL_ELE_NAME = L"FormVisEle";
+const wchar_t* IDI_PANEL_VISUAL_ELE_NAME = L"PanelVisEle";
+const wchar_t* IDI_ACCEPT_VISUAL_ELE_NAME = L"AcceptVisEle";
+const wchar_t* IDI_REJECT_VISUAL_ELE_NAME = L"RejectVisEle";
+const wchar_t* IDI_ACCEPT_ARROW_VISUAL_ELE_NAME = L"AcceptArrowVisEle";
+const wchar_t* IDI_REJECT_ARROW_VISUAL_ELE_NAME = L"RejectArrowVisEle";
+const wchar_t* IDI_REJECT_FINAL_VISUAL_ELE_NAME = L"RejectFinalVisEle";
+const wchar_t* IDI_ACCEPT_FINAL_VISUAL_ELE_NAME = L"AcceptFinalVisEle";
+
+class SmsListener
+ : public Object
+ , public ISmsListener
+{
+public:
+ void OnSmsMessageSent(result r)
+ {
+ }
+};
+
+IncomingCallForm::IncomingCallForm(void)
+ : BaseForm(FORMTYPE_INCOMINGCALL)
+{
+ __pActiveContactNo = null;
+ __pRejectMessageList = null;
+ __incomingCallHandle = -1;
+ __isAnswerCallStarted = false;
+ __isRejectCallStarted = false;
+ __pAcceptArrowLabelsList = null;
+ __pRejectArrowLabelsList = null;
+ __pRejectCircle = null;
+ __pAcceptCircle = null;
+ __pAcceptDial = null;
+ __pRejectDial = null;
+ __pAcceptArrow = null;
+ __pRejectArrow = null;
+ __pAcceptLabel = null;
+ __pRejectLabel = null;
+ __pAcceptArrowLabel = null;
+ __pRejectArrowLabel = null;
+ __pCallHandlePanel = null;
+ __pAcceptVisElem = null;
+ __pRejectVisElem = null;
+ __pRejectFinalVisElem = null;
+ __pAcceptFinalVisElem = null;
+ __pAcceptArrowVisElem = null;
+ __pRejectArrowVisElem = null;
+ __pCallPresentor = null;
+ __pOptionPopup = null;
+ __pSmallPhotoLabel = null;
+}
+
+IncomingCallForm::~IncomingCallForm(void)
+{
+}
+
+void
+IncomingCallForm::Initialize(void)
+{
+ Construct(IDL_INCOMING_CALL_FORM);
+}
+
+result
+IncomingCallForm::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+ Canvas* pCanvas = null;
+
+ VisualElement* pFormVisElem = new (std::nothrow) VisualElement();
+ r = pFormVisElem->Construct();
+ pFormVisElem->SetBounds(FloatRectangle(GetClientAreaBounds().x, GetClientAreaBounds().y, GetClientAreaBounds().width, GetClientAreaBounds().height));
+ pFormVisElem->SetShowState(true);
+ pFormVisElem->SetOpacity(1.0f);
+ pFormVisElem->SetName(IDI_FORM_VISUAL_ELE_NAME);
+ GetVisualElement()->AttachChild(*pFormVisElem);
+ pCanvas = pFormVisElem->GetCanvasN();
+ if(pCanvas != null)
+ {
+ pCanvas->Clear();
+ pCanvas->SetBackgroundColor(COLOR_SWIPE_PANEL);
+ pCanvas->SetForegroundColor(COLOR_SWIPE_PANEL);
+ pCanvas->FillRectangle(COLOR_SWIPE_PANEL, Rectangle(GetClientAreaBounds().x, GetClientAreaBounds().y, GetClientAreaBounds().width, GetClientAreaBounds().height));
+ delete pCanvas;
+ pCanvas = null;
+ }
+ HideRejectPanel();
+
+ Button* pButtonRejectMessage = static_cast<Button*>(GetControl(IDC_REJECT_MESSAGE_BUTTON));
+ if (pButtonRejectMessage)
+ {
+ SetBitmapToRejectMessageButton(IDS_REJECT_MESSAGE_BTN,IDB_REJECT_MESSAGE_BG,
+ IDB_REJECT_MESSAGE_UP_ARROW, IDB_REJECT_MESSAGE_ICON, false, false);
+ SetBitmapToRejectMessageButton(IDS_REJECT_MESSAGE_BTN,IDB_REJECT_MESSAGE_BG,
+ IDB_REJECT_MESSAGE_UP_ARROW, IDB_REJECT_MESSAGE_ICON, false, true);
+ pButtonRejectMessage->SetActionId(IDA_SHOW_REJECT_CALL_MESSAGE_PANEL);
+ pButtonRejectMessage->AddActionEventListener(*this);
+ }
+
+ //Get Reject list from Settings Manager
+ IMapT<int,String>* pMsgMap = SettingsManager::GetInstance()->GetRejectMessageListN();
+ if(pMsgMap != null)
+ {
+ __pRejectMessageList = pMsgMap->GetValuesN();
+ delete pMsgMap;
+ pMsgMap = null;
+ }
+ InitializeTableView();
+
+ __pAcceptCircle = AppUtility::GetBitmapFromResourcesN(IDB_ACCEPT_CIRCLE_ICON, W_DIAL_LABEL, H_DIAL_LABEL);
+ __pRejectCircle = AppUtility::GetBitmapFromResourcesN(IDB_REJECT_CIRCLE_ICON, W_DIAL_LABEL, H_DIAL_LABEL);
+ __pAcceptDial = AppUtility::GetBitmapFromResourcesN(IDB_CALL_ACCEPT_ICON, W_DIAL_BITMAP, H_DIAL_BITMAP);
+ __pRejectDial = AppUtility::GetBitmapFromResourcesN(IDB_CALL_REJECT_ICON, W_DIAL_BITMAP, H_DIAL_BITMAP);
+ __pAcceptArrow = AppUtility::GetBitmapFromResourcesN(IDB_ACCEPT_ARROW_ICON, W_ARROW_LABEL, H_ARROW_LABEL);
+ __pRejectArrow = AppUtility::GetBitmapFromResourcesN(IDB_REJECT_ARROW_ICON, W_ARROW_LABEL, H_ARROW_LABEL);
+
+
+ //Panel for showing accept and reject call buttons.
+ Label* pPhotoLbl = static_cast<Label*>(GetControl(IDC_BIG_PHOTO_LABEL, true));
+ int yPos = pPhotoLbl->GetX()+pPhotoLbl->GetHeight()+ Y_CALL_PANEL;
+
+ __pCallHandlePanel = new (std::nothrow) Panel();
+ r = __pCallHandlePanel->Construct(Rectangle(X_CALL_PANEL, yPos, GetClientAreaBounds().width, H_CALL_PANEL), GROUP_STYLE_NONE);
+ __pCallHandlePanel->AddTouchEventListener(*this);
+ AddControl(*__pCallHandlePanel);
+ __pCallHandlePanel->SetBackgroundColor(COLOR_SWIPE_PANEL);
+ VisualElement* pCallPanelVisElem = new (std::nothrow) VisualElement();
+ r = pCallPanelVisElem->Construct();
+ pCallPanelVisElem->SetBounds(FloatRectangle(X_CALL_PANEL, yPos, GetClientAreaBounds().width, H_CALL_PANEL));
+ pCallPanelVisElem->SetShowState(true);
+ pCallPanelVisElem->SetOpacity(1.0f);
+ pCallPanelVisElem->SetName(IDI_PANEL_VISUAL_ELE_NAME);
+ __pCallHandlePanel->GetVisualElement()->AttachChild(*pCallPanelVisElem);
+ pCanvas = pCallPanelVisElem->GetCanvasN();
+ if(pCanvas != null)
+ {
+ pCanvas->Clear();
+ pCanvas->SetBackgroundColor(COLOR_SWIPE_PANEL);
+ pCanvas->SetForegroundColor(COLOR_SWIPE_PANEL);
+ pCanvas->FillRectangle(COLOR_SWIPE_PANEL, Rectangle(X_CALL_PANEL, yPos, GetClientAreaBounds().width, H_CALL_PANEL));
+ delete pCanvas;
+ pCanvas = null;
+ }
+ //Lock Label for animation
+ __pAcceptLabel = new (std::nothrow) Label();
+ r = __pAcceptLabel->Construct(Rectangle(0, 0, W_DIAL_LABEL, H_DIAL_LABEL), L"");
+ __pAcceptLabel->SetBackgroundColor(COLOR_SWIPE_PANEL);
+ __pAcceptLabel->AddTouchEventListener(*this);
+ __pCallHandlePanel->AddControl(*__pAcceptLabel);
+ //left dial icon
+ __pAcceptVisElem = new (std::nothrow) VisualElement();
+ r = __pAcceptVisElem->Construct();
+ __pAcceptVisElem->SetBounds(FloatRectangle(0, 0, W_DIAL_LABEL, H_DIAL_LABEL));
+ __pAcceptVisElem->SetShowState(true);
+ __pAcceptVisElem->SetOpacity(1.0f);
+ __pAcceptVisElem->SetName(IDI_ACCEPT_VISUAL_ELE_NAME);
+ __pAcceptLabel->GetVisualElement()->AttachChild(*__pAcceptVisElem);
+ pCanvas = __pAcceptVisElem->GetCanvasN();
+ if(pCanvas != null)
+ {
+ pCanvas->Clear();
+ pCanvas->SetBackgroundColor(COLOR_SWIPE_PANEL);
+ pCanvas->SetForegroundColor(COLOR_SWIPE_PANEL);
+ pCanvas->FillRectangle(COLOR_SWIPE_PANEL, Rectangle(0, 0, W_DIAL_LABEL, H_DIAL_LABEL));
+ pCanvas->DrawBitmap(Rectangle(0, 0, W_DIAL_LABEL, H_DIAL_LABEL), *__pAcceptCircle);
+ pCanvas->DrawBitmap(Rectangle(DIAL_ICON_X_OFFSET, DIAL_ICON_Y_OFFSET, W_DIAL_BITMAP, H_DIAL_BITMAP), *__pAcceptDial);
+ delete pCanvas;
+ pCanvas = null;
+ }
+ //UnLock Label for animation
+ __pRejectLabel = new (std::nothrow) Label();
+ r = __pRejectLabel->Construct(Rectangle(REJECT_LABEL_X_OFFSET, 0, W_DIAL_LABEL, H_DIAL_LABEL), L"");
+ __pRejectLabel->AddTouchEventListener(*this);
+ __pCallHandlePanel->AddControl(*__pRejectLabel);
+ __pRejectLabel->SetBackgroundColor(COLOR_SWIPE_PANEL);
+ SetControlAlwaysAtBottom(*__pCallHandlePanel, true);
+
+ //Right reject icon
+ __pRejectVisElem = new (std::nothrow) VisualElement();
+ r = __pRejectVisElem->Construct();
+ __pRejectVisElem->SetBounds(FloatRectangle(0, 0, W_DIAL_LABEL, H_DIAL_LABEL));
+ __pRejectVisElem->SetShowState(true);
+ __pRejectVisElem->SetOpacity(1.00f);
+ __pRejectVisElem->SetName(IDI_REJECT_VISUAL_ELE_NAME);
+ __pRejectLabel->GetVisualElement()->AttachChild(*__pRejectVisElem);
+ pCanvas = __pRejectVisElem->GetCanvasN();
+ if(pCanvas != null)
+ {
+ pCanvas->Clear();
+ pCanvas->SetBackgroundColor(COLOR_SWIPE_PANEL);
+ pCanvas->SetForegroundColor(COLOR_SWIPE_PANEL);
+ pCanvas->FillRectangle(COLOR_SWIPE_PANEL, Rectangle(0, 0, W_DIAL_LABEL, H_DIAL_LABEL));
+ pCanvas->DrawBitmap(Rectangle(DIAL_ICON_X_OFFSET, DIAL_ICON_Y_OFFSET, W_DIAL_BITMAP, H_DIAL_BITMAP), *__pRejectDial);
+ pCanvas->DrawBitmap(Rectangle(0, 0, W_DIAL_LABEL, H_DIAL_LABEL), *__pRejectCircle);
+ delete pCanvas;
+ pCanvas = null;
+ }
+
+ //! Constructs an array list to store the unlock labels
+ __pAcceptArrowLabelsList = new (std::nothrow) ArrayList();
+ r = __pAcceptArrowLabelsList->Construct();
+
+ //! Constructs the Unlock Labels with the bitmap as background, adds the touch event Listener and adds them to the panel.
+ int x = X_ARROW_LABEL_STARTPOS;
+ for (int index = 0; index < 7; index++)
+ {
+ __pAcceptArrowLabel = new (std::nothrow) Label();
+ r = __pAcceptArrowLabel->Construct(Rectangle(x, Y_ARROW_LABEL, W_ARROW_LABEL, H_ARROW_LABEL), L"");
+ __pAcceptArrowLabel->AddTouchEventListener(*this);
+ __pCallHandlePanel->AddControl(*__pAcceptArrowLabel);
+ __pAcceptArrowLabelsList->Add(*__pAcceptArrowLabel);
+ __pAcceptArrowVisElem = new (std::nothrow) VisualElement();
+ r = __pAcceptArrowVisElem->Construct();
+ __pAcceptArrowVisElem->SetBounds(FloatRectangle(0, 0, W_ARROW_LABEL, H_ARROW_LABEL));
+ __pAcceptArrowVisElem->SetShowState(true);
+ __pAcceptArrowVisElem->SetOpacity(0.0f);
+ String VisualEleName(IDI_ACCEPT_ARROW_VISUAL_ELE_NAME);
+ VisualEleName.Append(index);
+ __pAcceptArrowVisElem->SetName(VisualEleName);
+ __pAcceptArrowLabel->GetVisualElement()->AttachChild(*__pAcceptArrowVisElem);
+ pCanvas = __pAcceptArrowVisElem->GetCanvasN();
+ if(pCanvas != null)
+ {
+ pCanvas->Clear();
+ pCanvas->SetForegroundColor(COLOR_SWIPE_PANEL);
+ pCanvas->SetForegroundColor(COLOR_SWIPE_PANEL);
+ pCanvas->DrawRectangle(Rectangle(0, 0, W_ARROW_LABEL, H_ARROW_LABEL));
+ pCanvas->FillRectangle(COLOR_SWIPE_PANEL, Rectangle(0, 0, W_ARROW_LABEL, H_ARROW_LABEL));
+ pCanvas->DrawBitmap(Rectangle(0, 0, W_ARROW_LABEL, H_ARROW_LABEL), *__pAcceptArrow);
+ delete pCanvas;
+ pCanvas = null;
+ }
+ x += ARROW_LABEL_X_MARGIN;
+ }
+ //! Constructs an array list to store the unlock labels
+ __pRejectArrowLabelsList = new (std::nothrow) ArrayList();
+ r = __pRejectArrowLabelsList->Construct();
+
+ x = X_ARROW_LABEL_STARTPOS;
+ for (int index = 0; index < 7; index++)
+ {
+ __pRejectArrowLabel = new (std::nothrow) Label();
+ r = __pRejectArrowLabel->Construct(Rectangle(x, Y_ARROW_LABEL, W_ARROW_LABEL, H_ARROW_LABEL), L"");
+ __pRejectArrowLabel->AddTouchEventListener(*this);
+ __pCallHandlePanel->AddControl(*__pRejectArrowLabel);
+ __pRejectArrowLabelsList->Add(*__pRejectArrowLabel);
+ __pRejectArrowVisElem = new (std::nothrow) VisualElement();
+ r = __pRejectArrowVisElem->Construct();
+ __pRejectArrowVisElem->SetBounds(FloatRectangle(0, 0, W_ARROW_LABEL, H_ARROW_LABEL));
+ __pRejectArrowVisElem->SetShowState(true);
+ __pRejectArrowVisElem->SetOpacity(0.0f);
+ String VisualEleName(IDI_REJECT_ARROW_VISUAL_ELE_NAME);
+ VisualEleName.Append(index);
+ __pRejectArrowVisElem->SetName(VisualEleName);
+ __pRejectArrowLabel->GetVisualElement()->AttachChild(*__pRejectArrowVisElem);
+ pCanvas = __pRejectArrowVisElem->GetCanvasN();
+ if(pCanvas != null)
+ {
+ pCanvas->Clear();
+ pCanvas->SetBackgroundColor(COLOR_SWIPE_PANEL);
+ pCanvas->SetForegroundColor(COLOR_SWIPE_PANEL);
+ pCanvas->FillRectangle(COLOR_SWIPE_PANEL, Rectangle(0, 0, W_ARROW_LABEL, H_ARROW_LABEL));
+ pCanvas->DrawBitmap(Rectangle(0, 0, W_ARROW_LABEL, H_ARROW_LABEL), *__pRejectArrow);
+ delete pCanvas;
+ pCanvas = null;
+ }
+ x += ARROW_LABEL_X_MARGIN;
+ }
+
+ return r;
+}
+
+result
+IncomingCallForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pRejectMessageList != null)
+ {
+ delete __pRejectMessageList;
+ __pRejectMessageList = null;
+ }
+ if (__pActiveContactNo != null)
+ {
+ delete __pActiveContactNo;
+ __pActiveContactNo = null;
+ }
+ __incomingCallHandle = -1;
+ __pCallPresentor = null;
+
+ /* Deleting fails in A4RC* SDK. Remove if not necessary
+ if (__pAcceptVisElem != null)
+ {
+ __pAcceptVisElem->Destroy();
+ __pAcceptVisElem = null;
+ }
+
+ if (__pRejectVisElem != null)
+ {
+ __pRejectVisElem->Destroy();
+ __pRejectVisElem = null;
+ }
+
+ if (__pRejectFinalVisElem != null)
+ {
+ __pRejectFinalVisElem->Destroy();
+ __pRejectFinalVisElem = null;
+ }
+
+ if (__pAcceptFinalVisElem != null)
+ {
+ __pAcceptFinalVisElem->Destroy();
+ __pAcceptFinalVisElem = null;
+ }
+
+ for (int i = 0; i < 7; i++)
+ {
+ __pRejectArrowLabel = static_cast<Label*>(__pRejectArrowLabelsList->GetAt(i));
+ __pRejectArrowVisElem = __pRejectArrowLabel->GetVisualElement();
+ if (__pRejectArrowVisElem != null)
+ {
+ __pRejectArrowVisElem->Destroy();
+ __pRejectArrowVisElem = null;
+ }
+
+ __pAcceptArrowLabel = static_cast<Label*>(__pAcceptArrowLabelsList->GetAt(i));
+ __pAcceptArrowVisElem = __pAcceptArrowLabel->GetVisualElement();
+ if (__pAcceptArrowVisElem != null)
+ {
+ __pAcceptArrowVisElem->Destroy();
+ __pAcceptArrowVisElem = null;
+ }
+ }
+
+ if (__pAcceptArrowVisElem != null)
+ {
+ __pAcceptArrowVisElem = null;
+ }
+
+ if (__pRejectArrowVisElem != null)
+ {
+ __pRejectArrowVisElem = null;
+ }
+*/
+ if (__pAcceptArrowLabelsList != null)
+ {
+ __pAcceptArrowLabelsList->RemoveAll(false);
+ delete __pAcceptArrowLabelsList;
+ __pAcceptArrowLabelsList = null;
+ }
+
+ if (__pRejectArrowLabelsList != null)
+ {
+ __pRejectArrowLabelsList->RemoveAll(false);
+ delete __pRejectArrowLabelsList;
+ __pRejectArrowLabelsList = null;
+ }
+
+ if (__pRejectCircle != null)
+ {
+ delete __pRejectCircle;
+ __pRejectCircle = null;
+ }
+
+ if (__pAcceptCircle != null)
+ {
+ delete __pAcceptCircle;
+ __pAcceptCircle = null;
+ }
+
+ if (__pAcceptDial != null)
+ {
+ delete __pAcceptDial;
+ __pAcceptDial = null;
+ }
+
+ if (__pRejectDial != null)
+ {
+ delete __pRejectDial;
+ __pRejectDial = null;
+ }
+
+ if (__pAcceptArrow != null)
+ {
+ delete __pAcceptArrow;
+ __pAcceptArrow = null;
+ }
+
+ if (__pRejectArrow != null)
+ {
+ delete __pRejectArrow;
+ __pRejectArrow = null;
+ }
+ __pCallHandlePanel->RemoveTouchEventListener(*this);
+ __pAcceptLabel->RemoveTouchEventListener(*this);
+ __pRejectLabel->RemoveTouchEventListener(*this);
+ __pAcceptArrowLabel->RemoveTouchEventListener(*this);
+ __pRejectArrowLabel->RemoveTouchEventListener(*this);
+ __pAcceptLabel = null;
+ __pRejectLabel = null;
+ __pAcceptArrowLabel = null;
+ __pRejectArrowLabel = null;
+ __pCallHandlePanel = null;
+ return r;
+}
+
+void
+IncomingCallForm::OnActionPerformed(const Control& source, int actionId)
+{
+ switch (actionId)
+ {
+ case IDA_SHOW_REJECT_CALL_MESSAGE_PANEL: // applicable in all form states
+ {
+ Panel* pKeysPanel = static_cast<Panel*>(GetControl(IDC_REJECT_PANEL));
+ if (pKeysPanel)
+ {
+ pKeysPanel->SetShowState(true);
+ ScrollPanel* pScrollPanel = static_cast<ScrollPanel*>(pKeysPanel->GetControl(IDC_LIST_SCROLLPANEL));
+ TableView* pMessageList = static_cast<TableView*>(pScrollPanel->GetControl(IDC_MSG_TABLEVIEW));
+ Rectangle tmpRect = pMessageList->GetBounds();
+ SetControlAlwaysOnTop(*pKeysPanel,true);
+
+ //Set Height to Reject Message Panel
+ int listHeight = H_LIST_NORMAL_MENU_ITEM; //If no messages
+ if(__pRejectMessageList != null && __pRejectMessageList->GetCount() > 0)
+ {
+ listHeight = H_LIST_NORMAL_MENU_ITEM * (__pRejectMessageList->GetCount()); //multiply by number of items
+ }
+ if (listHeight > MAX_LIST_HEIGHT)
+ {
+ listHeight = MAX_LIST_HEIGHT;
+ }
+
+ pMessageList->SetBounds(tmpRect.x, tmpRect.y, tmpRect.width, listHeight);
+ tmpRect = pScrollPanel->GetBounds();
+ pScrollPanel->SetBounds(tmpRect.x, tmpRect.y, tmpRect.width, listHeight);
+ tmpRect = pKeysPanel->GetBounds();
+ pKeysPanel->SetBounds(tmpRect.x, tmpRect.y, tmpRect.width, H_MESSAGE_BG_BITMAP + H_REJECT_VIEW_FOOTER + listHeight);
+
+ Button* pButtonReject = static_cast<Button*>(pKeysPanel->GetControl(IDC_REJECT_MESSAGE_CANCEL_BUTTON));
+ pButtonReject->SetActionId(IDA_CANCEL_REJECT_CALL_MESSAGE_PANEL);
+ pButtonReject->AddActionEventListener(*this);
+ pButtonReject->SetEnabled(true);
+ pButtonReject->SetFocus();
+
+ pButtonReject = static_cast<Button*>(pKeysPanel->GetControl(IDC_BACK_BUTTON));
+ pButtonReject->SetActionId(IDA_CANCEL_REJECT_CALL_MESSAGE_PANEL);
+ pButtonReject->AddActionEventListener(*this);
+ pButtonReject->SetEnabled(true);
+ pButtonReject->SetFocus();
+
+ Button* pButtonCreate = static_cast<Button*>(pKeysPanel->GetControl(IDC_CREATE_BUTTON));
+ pButtonCreate->SetActionId(IDA_CREATE_REJECT_CALL_MESSAGE);
+ pButtonCreate->AddActionEventListener(*this);
+ pButtonCreate->SetEnabled(true);
+ pButtonCreate->SetFocus();
+
+ pKeysPanel->SetFocus();
+ pKeysPanel->Draw();
+ }
+ Button* pButtonRejectMessage = static_cast<Button*>(GetControl(IDC_REJECT_MESSAGE_BUTTON));
+ if (pButtonRejectMessage)
+ {
+ pButtonRejectMessage->SetShowState(false);
+ pButtonRejectMessage->Invalidate(true);
+ pButtonRejectMessage->Draw();
+ }
+ }
+ break;
+
+ case IDA_CREATE_REJECT_CALL_MESSAGE:
+ {
+ __pCallPresentor->RejectCall(__incomingCallHandle, true,*__pActiveContactNo);
+ ArrayListT<CallInfo>* pCallList = static_cast<ArrayListT<CallInfo>*>(__pCallPresentor->GetCallListN());
+ if(pCallList != null && pCallList->GetCount() > 0)
+ {
+ __pCallPresentor->HandleCallConnected(*pCallList);
+ }
+ pCallList = null;
+ }
+ break;
+
+ case IDA_CANCEL_REJECT_CALL_MESSAGE_PANEL:
+ {
+ HideRejectPanel();
+ SetFocus();
+ Button* pButtonRejectMessage = static_cast<Button*>(GetControl(IDC_REJECT_MESSAGE_BUTTON));
+ if (pButtonRejectMessage)
+ {
+ pButtonRejectMessage->SetShowState(true);
+ pButtonRejectMessage->Invalidate(true);
+ pButtonRejectMessage->Draw();
+ }
+ RequestRedraw(true);
+ }
+ break;
+
+ case IDA_SEND_REJECT_MSG1:
+ case IDA_SEND_REJECT_MSG2:
+ case IDA_SEND_REJECT_MSG3:
+ case IDA_SEND_REJECT_MSG4:
+ case IDA_SEND_REJECT_MSG5:
+ case IDA_SEND_REJECT_MSG6:
+ {
+ __pCallPresentor->RejectCall(__incomingCallHandle, false,*__pActiveContactNo);
+ SmsListener* pSmsListener = new (std::nothrow) SmsListener();
+ SmsManager* pSmsManager = new (std::nothrow) SmsManager();
+ result r = pSmsManager->Construct(*pSmsListener);
+ if (IsFailed(r) == false)
+ {
+ RecipientList recipient;
+ recipient.Add(RECIPIENT_TYPE_TO,*__pActiveContactNo);
+ SmsMessage smsMessage;
+ String textToBeSent;
+ //calculate msgIndex
+ int msgIndex = IDA_SEND_REJECT_MSG1;
+ msgIndex = actionId - msgIndex;
+ __pRejectMessageList->GetAt(msgIndex, textToBeSent);
+ r = smsMessage.SetText(textToBeSent);
+ if (IsFailed(r) == false)
+ {
+ r = pSmsManager->Send(smsMessage,recipient,true);
+ if (IsFailed(r) == true)
+ {
+ //todo: error message
+ }
+ }
+ else
+ {
+ //todo: error message
+ }
+ }
+ else
+ {
+ //todo: error message
+ }
+ delete pSmsListener;
+ delete pSmsManager;
+ /*ArrayListT<CallInfo>* pCallList = static_cast<ArrayListT<CallInfo>*>(__pCallPresentor->GetCallListN());
+ __pCallPresentor->HandleCallConnected(*pCallList);
+ pCallList = null;*/
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+void
+IncomingCallForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
+{
+ if(__pCallPresentor == null)
+ {
+ __pCallPresentor = CallPresentationModel::GetInstance();
+ }
+ __pCallPresentor->SetTelEventListener(this);
+ HideRejectPanel();
+
+ if (__pRejectFinalVisElem != null)
+ {
+ __pRejectFinalVisElem->Destroy();
+ __pRejectFinalVisElem = null;
+ }
+
+ if (__pAcceptFinalVisElem != null)
+ {
+ __pAcceptFinalVisElem->Destroy();
+ __pAcceptFinalVisElem = null;
+ }
+ if(__pAcceptLabel->GetVisualElement()->GetChild(IDI_ACCEPT_VISUAL_ELE_NAME,true) == null)
+ {
+ __pAcceptLabel->GetVisualElement()->AttachChild(*__pAcceptVisElem);
+ }
+ if(__pRejectLabel->GetVisualElement()->GetChild(IDI_REJECT_VISUAL_ELE_NAME,true) == null)
+ {
+ __pRejectLabel->GetVisualElement()->AttachChild(*__pRejectVisElem);
+ }
+
+ __pAcceptVisElem->SetOpacity(1.0f);
+ __pRejectVisElem->SetOpacity(1.00f);
+ for (int i = 0; i < 7; i++)
+ {
+ __pRejectArrowLabel = static_cast<Label*>(__pRejectArrowLabelsList->GetAt(i));
+ String RejectVisualEleName(IDI_REJECT_ARROW_VISUAL_ELE_NAME);
+ RejectVisualEleName.Append(i);
+ __pRejectArrowVisElem = __pRejectArrowLabel->GetVisualElement()->GetChild(RejectVisualEleName,true);
+ __pRejectArrowVisElem->SetOpacity(0.0f);
+ __pAcceptArrowLabel = static_cast<Label*>(__pAcceptArrowLabelsList->GetAt(i));
+ String AcceptVisualEleName(IDI_ACCEPT_ARROW_VISUAL_ELE_NAME);
+ AcceptVisualEleName.Append(i);
+ __pAcceptArrowVisElem = __pAcceptArrowLabel->GetVisualElement()->GetChild(AcceptVisualEleName,true);
+ __pAcceptArrowVisElem->SetOpacity(0.0f);
+ }
+
+
+ if (pArgs != null)
+ {
+ //get Call Info
+ CallInfo* pIncomingCall = static_cast<CallInfo*>(pArgs->GetAt(0));
+ if (pIncomingCall != null)
+ {
+ //start alert with contact's custom ringtone
+ __pCallPresentor->StartAlert(*pIncomingCall);
+ //show contact number
+ String contactNo;
+ contactNo.Append(pIncomingCall->GetContactNumber());
+ if (__pActiveContactNo)
+ {
+ delete __pActiveContactNo;
+ __pActiveContactNo = null;
+ }
+ __incomingCallHandle = pIncomingCall->GetCallHandle()->ToLong();
+ __pActiveContactNo = new (std::nothrow) String();
+ __pActiveContactNo->Append(contactNo);
+ //Show person details
+ ShowPersonDetails(*__pActiveContactNo, IDC_NUMBER_LABEL, IDC_CALLER_LABEL, pIncomingCall);
+ //Check if incoming call is hidden call, then do not show "Reject with Message" button
+ Button* pButtonRejectMessage = static_cast<Button*>(GetControl(IDC_REJECT_MESSAGE_BUTTON));
+ if (pButtonRejectMessage)
+ {
+ //for hidden call, contact number is not present
+ bool showRejectMsgButton = (pIncomingCall->GetContactNumber().IsEmpty() == false);
+ pButtonRejectMessage->SetShowState(showRejectMsgButton);
+ pButtonRejectMessage->Invalidate(true);
+ }
+ }
+ pArgs->RemoveAll();
+ delete pArgs;
+ pArgs = null;
+ }
+}
+
+void
+IncomingCallForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
+{
+ if (__pSmallPhotoLabel != null)
+ {
+ RemoveControl(*__pSmallPhotoLabel);
+ __pSmallPhotoLabel = null;
+ }
+ for (int i = 0; i < 7; i++)
+ {
+ __pRejectArrowLabel = static_cast<Label*>(__pRejectArrowLabelsList->GetAt(i));
+ String RejectVisualEleName(IDI_REJECT_ARROW_VISUAL_ELE_NAME);
+ RejectVisualEleName.Append(i);
+ __pRejectArrowVisElem = __pRejectArrowLabel->GetVisualElement()->GetChild(RejectVisualEleName,true);
+ __pRejectArrowVisElem->SetOpacity(0.0f);
+ __pAcceptArrowLabel = static_cast<Label*>(__pAcceptArrowLabelsList->GetAt(i));
+ String AcceptVisualEleName(IDI_ACCEPT_ARROW_VISUAL_ELE_NAME);
+ AcceptVisualEleName.Append(i);
+ __pAcceptArrowVisElem = __pAcceptArrowLabel->GetVisualElement()->GetChild(AcceptVisualEleName,true);
+ __pAcceptArrowVisElem->SetOpacity(0.0f);
+ }
+}
+
+result
+IncomingCallForm::OnDraw(void)
+{
+ Bitmap* pBackgroundWp = null;
+ // get a Canvas instance
+ Canvas* pCanvas = GetCanvasN();
+
+ pBackgroundWp = AppResource::GetInstance()->GetBitmapN(IDB_CALL_BG);
+
+ if (pCanvas)
+ {
+
+ if (pBackgroundWp)
+ {
+ pCanvas->DrawBitmap(pCanvas->GetBounds(), *pBackgroundWp);
+ }
+ }
+
+ delete pBackgroundWp;
+ pBackgroundWp = null;
+
+ delete pCanvas;
+ pCanvas = null;
+
+ return E_SUCCESS;
+}
+
+void
+IncomingCallForm::HideRejectPanel(void)
+{
+ Bitmap* pRejectMessageBitmap = null;
+ AppResource* pAppResource = AppResource::GetInstance();
+ Panel* pKeysPanel = static_cast<Panel*>(GetControl(IDC_REJECT_PANEL));
+ if (pKeysPanel)
+ {
+ pKeysPanel->SetShowState(false);
+ Button* pButtonReject = static_cast<Button*>(pKeysPanel->GetControl(IDC_REJECT_MESSAGE_CANCEL_BUTTON));
+ pButtonReject->SetActionId(IDA_CANCEL_REJECT_CALL_MESSAGE_PANEL);
+ pButtonReject->AddActionEventListener(*this);
+ SetBitmapToRejectMessageButton(IDS_REJECT_MESSAGE_BTN,IDB_REJECT_MESSAGE_BG,
+ IDB_REJECT_MESSAGE_DOWN_ARROW, IDB_REJECT_MESSAGE_ICON, true, false);
+ SetBitmapToRejectMessageButton(IDS_REJECT_MESSAGE_BTN,IDB_REJECT_MESSAGE_BG,
+ IDB_REJECT_MESSAGE_DOWN_ARROW, IDB_REJECT_MESSAGE_ICON, true, true);
+
+ pButtonReject = static_cast<Button*>(pKeysPanel->GetControl(IDC_CREATE_BUTTON));
+ pRejectMessageBitmap = pAppResource->GetBitmapN(IDB_CREATE_BUTTON_ICON);
+ pRejectMessageBitmap->Scale(Dimension(W_CREATE_BITMAP, H_CREATE_BITMAP));
+ pButtonReject->SetNormalBitmap(Point(X_CREATE_BITMAP, Y_CREATE_BITMAP), *pRejectMessageBitmap);
+ delete pRejectMessageBitmap;
+ pRejectMessageBitmap = null;
+
+ pButtonReject = static_cast<Button*>(pKeysPanel->GetControl(IDC_BACK_BUTTON));
+ pRejectMessageBitmap = pAppResource->GetBitmapN(IDB_BACK_BUTTON_ICON);
+ pRejectMessageBitmap->Scale(Dimension(W_CREATE_BITMAP, H_CREATE_BITMAP));
+ pButtonReject->SetNormalBitmap(Point(X_CREATE_BITMAP, Y_CREATE_BITMAP), *pRejectMessageBitmap);
+ pButtonReject->SetActionId(IDA_CANCEL_REJECT_CALL_MESSAGE_PANEL);
+ pButtonReject->AddActionEventListener(*this);
+ delete pRejectMessageBitmap;
+ pRejectMessageBitmap = null;
+
+ Button* pButtonCreate = static_cast<Button*>(pKeysPanel->GetControl(IDC_CREATE_BUTTON));
+ pButtonCreate->SetActionId(IDA_CREATE_REJECT_CALL_MESSAGE);
+ pButtonCreate->AddActionEventListener(*this);
+
+ pKeysPanel->Invalidate(true);
+ }
+}
+
+void
+IncomingCallForm::InitializeTableView(void)
+{
+ Panel* pKeysPanel = static_cast<Panel*>(GetControl(IDC_REJECT_PANEL));
+ ScrollPanel* pScrollPanel = static_cast<ScrollPanel*>(pKeysPanel->GetControl(IDC_LIST_SCROLLPANEL));
+
+ TableView* pMessageList = static_cast<TableView*>(pScrollPanel->GetControl(IDC_MSG_TABLEVIEW));
+ pMessageList->SetItemProvider(this);
+ pMessageList->AddTableViewItemEventListener(*this);
+ pScrollPanel->AddControl(*pMessageList);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+///// Table View Functionality supporting functions /////
+//////////////////////////////////////////////////////////////////////////////
+int
+IncomingCallForm::GetItemCount(void)
+{
+ if(__pRejectMessageList != null && __pRejectMessageList->GetCount() > 0)
+ {
+ return (__pRejectMessageList->GetCount());
+ }
+ return 1;
+}
+
+TableViewItem*
+IncomingCallForm::CreateItem(int itemIndex, int itemWidth)
+{
+ //create a new item
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ pItem->SetBackgroundColor(COLOR_SECONDDEPTH_ITEM_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+
+ //Message text item rectangle
+ Rectangle itemRect(X_LIST_TEXT_ITEM, 0, W_LIST_TEXT_ITEM, H_LIST_NORMAL_MENU_ITEM);
+
+ //Message
+ String itemName(L"");
+ bool isShowSendButton = true;
+ if(__pRejectMessageList != null && __pRejectMessageList->GetCount() > 0)
+ {
+ __pRejectMessageList->GetAt(itemIndex, itemName);
+ }
+ else
+ {
+ itemName.Append(AppUtility::GetResourceString(IDS_NO_MESSAGE_STR));
+ isShowSendButton = false;
+ }
+
+ Label* pMsgLbl = new (std::nothrow) Label();
+ pMsgLbl->Construct(itemRect, itemName);
+ pMsgLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pMsgLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pMsgLbl->SetTextConfig(FONT_SIZE_MSG_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pMsgLbl->SetTextColor(COLOR_LIST_TEXT_NORMAL);//COLOR_LIST_TEXT_PRESSED
+ pItem->AddControl(*pMsgLbl);
+
+ //Send Button
+ if(isShowSendButton == true)
+ {
+ String sendText = AppUtility::GetResourceString(IDS_LIST_SEND_BUTTON);
+ Button* pSendButton = new (std::nothrow) Button();
+ pSendButton->Construct(Rectangle(X_SEND_TEXT_ITEM, Y_SEND_TEXT_ITEM, W_SEND_TEXT_ITEM, H_SEND_TEXT_ITEM), sendText);
+ pSendButton->SetColor(BUTTON_STATUS_PRESSED, COLOR_SEND_BUTTON_PRESSED);
+ pSendButton->SetColor(BUTTON_STATUS_NORMAL, COLOR_SEND_BUTTON_NORMAL);
+ //set action id and listener
+ int actionId = IDA_SEND_REJECT_MSG1;
+ switch(itemIndex)
+ {
+ case 0:
+ actionId = IDA_SEND_REJECT_MSG1;
+ break;
+ case 1:
+ actionId = IDA_SEND_REJECT_MSG2;
+ break;
+ case 2:
+ actionId = IDA_SEND_REJECT_MSG3;
+ break;
+ case 3:
+ actionId = IDA_SEND_REJECT_MSG4;
+ break;
+ case 4:
+ actionId = IDA_SEND_REJECT_MSG5;
+ break;
+ case 5:
+ actionId = IDA_SEND_REJECT_MSG6;
+ break;
+ }
+ pSendButton->SetActionId(actionId);
+ pSendButton->AddActionEventListener(*this);
+ pItem->AddControl(*pSendButton);
+ pItem->SetIndividualSelectionEnabled(pSendButton, true);
+ }
+
+ return pItem;
+}
+
+bool
+IncomingCallForm::DeleteItem(int itemIndex, TableViewItem* pItem)
+{
+ delete pItem;
+ pItem = null;
+ return true;
+}
+
+int
+IncomingCallForm::GetDefaultItemHeight(void)
+{
+ return H_LIST_NORMAL_MENU_ITEM;
+}
+
+void
+IncomingCallForm::ShowPersonDetails(const String& phoneNumber, const String& contactLblName, const String& nameLblName, CallInfo* pCallInfo)
+{
+ //call individual methods to show contact number, caller name & photo
+ SetTextToLabel(phoneNumber, contactLblName);
+
+ //fetch contact details based on phone number
+ String* pDisplayName = pCallInfo->FetchCallerNameN();
+ Bitmap* pPhotoBitmap = pCallInfo->FetchCallerPhotoN();
+ ShowCallerPhoto(pPhotoBitmap);
+
+ //free resources
+ if (pDisplayName)
+ {
+ SetTextToLabel(*pDisplayName, nameLblName);
+ delete pDisplayName;
+ pDisplayName = null;
+ }
+
+ if (pPhotoBitmap)
+ {
+ delete pPhotoBitmap;
+ pPhotoBitmap = null;
+ }
+}
+
+void
+IncomingCallForm::SetTextToLabel(const String& textToBeSet, const String& lblName)
+{
+ Label* pContactLbl = static_cast<Label*>(GetControl(lblName));
+ //passing an empty string to SetText fails in label,
+ //if previously valid text has been set
+ if (textToBeSet.IsEmpty() == true && pContactLbl->GetText().IsEmpty() == false)
+ {
+ String stringToBeSet(L" ");
+ pContactLbl->SetText(stringToBeSet);
+ }
+
+ else
+ {
+ pContactLbl->SetText(textToBeSet);
+ }
+}
+
+void
+IncomingCallForm::ShowCallerPhoto(const Bitmap* pPhotoId)
+{
+ //show photo - for Big Photo Id, Animated Call Image
+ if (pPhotoId == null)
+ {
+ pPhotoId = AppUtility::GetBitmapFromResourcesN(IDB_ACTIVE_CALL_DEFAULT_ICON,W_CONFERENCE_PHOTO,W_CONFERENCE_PHOTO);
+ }
+
+ Label* pPhotoLbl = static_cast<Label*>(GetControl(IDC_BIG_PHOTO_LABEL));
+ if (pPhotoLbl != null && pPhotoId != null)
+ {
+ pPhotoLbl->SetBackgroundBitmap(*pPhotoId);
+ pPhotoLbl->Invalidate(true);
+ }
+}
+
+void
+IncomingCallForm::ShowCallersPhotoThumbnail(const Bitmap& pPhotoId)
+{
+ //Draw Small Photo and show on small photo label
+ __pSmallPhotoLabel = new (std::nothrow) Label();//static_cast<Label*>(GetControl(IDC_SMALL_PHOTO_LABEL));
+ __pSmallPhotoLabel->Construct(Rectangle(X_PHOTO_LBL, Y_PHOTO_LBL, W_PHOTO_LBL, H_PHOTO_LBL), L"");
+ __pSmallPhotoLabel->SetBackgroundColor(Color(0,0,0));
+ __pSmallPhotoLabel->SetBackgroundBitmap(pPhotoId);
+ // Add a Label to the Form
+ AddControl(*__pSmallPhotoLabel);
+ __pSmallPhotoLabel->Invalidate(true);
+}
+
+void
+IncomingCallForm::ShowTimerInfo(const String& timerLblName, const String& textToBeDisplayed)
+{
+ Label* pTimerLbl = static_cast<Label*>(GetControl(timerLblName));
+ if (pTimerLbl != null)
+ {
+ pTimerLbl->SetText(textToBeDisplayed);
+ }
+}
+
+void
+IncomingCallForm::SetBitmapToRejectMessageButton(const String& btnName, const String& bgBitmap
+ , const String& arrowBitmap, const String& messageIconBitmap, bool isButtonInPanel, bool setButtonPressBitmap)
+{
+
+ Button* pButton = null;
+ if (isButtonInPanel == false)
+ {
+ pButton = static_cast<Button*>(GetControl(IDC_REJECT_MESSAGE_BUTTON));
+ }
+ else
+ {
+ Panel* pKeysPanel = static_cast<Panel*>(GetControl(IDC_REJECT_PANEL));
+ pButton = static_cast<Button*>(pKeysPanel->GetControl(IDC_REJECT_MESSAGE_CANCEL_BUTTON));
+ }
+ Bitmap* pHoldBmp = null;
+ Canvas* pCanvas = null;
+ pCanvas = new (std::nothrow) Canvas();
+ pCanvas->Construct(Rectangle(0,0,pButton->GetBounds().width,pButton->GetBounds().height));
+ //set bitmap to button
+ pHoldBmp = AppUtility::GetBitmapFromResourcesN(bgBitmap);
+ if (pHoldBmp)
+ {
+ //scale bitmap to predefined size
+ pHoldBmp->SetScalingQuality(BITMAP_SCALING_QUALITY_MID);
+ pHoldBmp->Scale(Dimension(W_MESSAGE_BG_BITMAP, H_MESSAGE_BG_BITMAP));
+ pCanvas->DrawBitmap(Rectangle(Point(0, 0), Dimension(pHoldBmp->GetWidth(), pHoldBmp->GetHeight())), *pHoldBmp);
+ }
+ delete pHoldBmp;
+ pHoldBmp = null;
+ pHoldBmp = AppUtility::GetBitmapFromResourcesN(arrowBitmap);
+ if (pHoldBmp)
+ {
+ //scale bitmap to predefined size
+ pHoldBmp->SetScalingQuality(BITMAP_SCALING_QUALITY_MID);
+ pHoldBmp->Scale(Dimension(W_ARROW_BITMAP, H_ARROW_BITMAP));
+ pCanvas->DrawBitmap(Rectangle(Point((pButton->GetBounds().width / 2 - 6), 12), Dimension(pHoldBmp->GetWidth(), pHoldBmp->GetHeight())), *pHoldBmp);
+ }
+ delete pHoldBmp;
+ pHoldBmp = null;
+ pHoldBmp = AppUtility::GetBitmapFromResourcesN(messageIconBitmap);
+ if (pHoldBmp)
+ {
+ //scale bitmap to predefined size
+ pHoldBmp->SetScalingQuality(BITMAP_SCALING_QUALITY_MID);
+ pHoldBmp->Scale(Dimension(W_MESSAGE_BITMAP, H_MESSAGE_BITMAP));
+ pCanvas->DrawBitmap(Rectangle(Point(X_MESSAGE_BITMAP, Y_MESSAGE_BITMAP), Dimension(pHoldBmp->GetWidth(), pHoldBmp->GetHeight())), *pHoldBmp);
+ }
+
+ //set button name
+ String holdBtnName = AppUtility::GetResourceString(btnName);
+ if (!holdBtnName.IsEmpty())
+ {
+ Font font;
+ font.Construct(FONT_STYLE_PLAIN, pButton->GetTextSize());
+ Dimension textDimension;
+ font.GetTextExtent(holdBtnName, holdBtnName.GetLength(), textDimension);
+ textDimension.height = textDimension.height + font.GetDescender();
+ TextElement* pTextElement = new (std::nothrow) TextElement();
+ pTextElement->Construct(holdBtnName);
+ Color textColor(249, 249, 249);
+ if (setButtonPressBitmap)
+ {
+ textColor.SetAlpha(255);
+ }
+ else
+ {
+ textColor.SetAlpha(127);
+ }
+
+ pTextElement->SetTextColor(textColor);
+ pTextElement->SetFont(font);
+
+ EnrichedText* pEnrichedText = new (std::nothrow) EnrichedText();
+ pEnrichedText->Construct(textDimension);
+ pEnrichedText->Add(*pTextElement);
+
+ if (pHoldBmp)
+ {
+ Point textPos((X_MESSAGE_BITMAP + pHoldBmp->GetWidth() + MESSAGE_TEXT_X_MARGIN), Y_MESSAGE_BITMAP + MESSAGE_TEXT_Y_MARGIN);
+ pCanvas->DrawText(textPos, *pEnrichedText);
+ }
+
+ // Cleans up
+ pEnrichedText->RemoveAll(true);
+ delete pEnrichedText;
+ }
+
+ //set background bitmpa to button
+ Bitmap* pActualBgBmp = new (std::nothrow) Bitmap();
+ pActualBgBmp->Construct(*pCanvas, pCanvas->GetBounds());
+ if (setButtonPressBitmap)
+ {
+ pButton->SetPressedBackgroundBitmap(*pActualBgBmp);
+ }
+ else
+ {
+ pButton->SetNormalBackgroundBitmap(*pActualBgBmp);
+ }
+ delete pActualBgBmp;
+ delete pHoldBmp;
+ delete pCanvas;
+}
+
+/*!In OnTouchPressed, It creates the three visual elements and starts the animation of opacity and rotation variation
+ */
+void
+IncomingCallForm::OnTouchPressed(const Control& source, const Point& currentPosition, const TouchEventInfo& touchInfo)
+{
+ __pCallPresentor->StopAlert();
+ if (currentPosition.x < VALID_TOUCH_X_OFFSET && currentPosition.y < VALID_TOUCH_Y_OFFSET)
+ {
+ Rectangle rect = source.GetBounds();
+ if (source.Equals(*__pAcceptLabel))
+ {
+ __isAnswerCallStarted = true;
+ __isRejectCallStarted = false;
+ }
+ else if (source.Equals(*__pRejectLabel))
+ {
+ __isAnswerCallStarted = false;
+ __isRejectCallStarted = true;
+ }
+ else
+ {
+ // touch event between the 2 labels. So Do nothing
+ return;
+ }
+
+ if (__isAnswerCallStarted)
+ {
+ for (int index = 0; index < 7; index++)
+ {
+ __pAcceptArrowLabel = static_cast<Label*>(__pAcceptArrowLabelsList->GetAt(index));
+ String VisualEleName(IDI_ACCEPT_ARROW_VISUAL_ELE_NAME);
+ VisualEleName.Append(index);
+ __pAcceptArrowVisElem = __pAcceptArrowLabel->GetVisualElement()->GetChild(VisualEleName,true);
+ switch (index)
+ {
+ case 0:
+ case 1:
+ {
+ __pAcceptArrowVisElem->SetOpacity(1.0f);
+ }
+ break;
+
+ case 2:
+ case 3:
+ {
+ __pAcceptArrowVisElem->SetOpacity(0.8f);
+ }
+ break;
+
+ case 4:
+ case 5:
+ case 6:
+ {
+ __pAcceptArrowVisElem->SetOpacity(0.6f);
+ }
+ break;
+ }
+
+ }
+ }
+ else
+ {
+ for (int index = 0; index < 7; index++)
+ {
+ __pRejectArrowLabel = static_cast<Label*>(__pRejectArrowLabelsList->GetAt(index));
+ String VisualEleName(IDI_REJECT_ARROW_VISUAL_ELE_NAME);
+ VisualEleName.Append(index);
+ __pRejectArrowVisElem = __pRejectArrowLabel->GetVisualElement()->GetChild(VisualEleName,true);
+ switch (index)
+ {
+ case 0:
+ case 1:
+ {
+ __pRejectArrowVisElem->SetOpacity(0.6f);
+ }
+ break;
+
+ case 2:
+ case 3:
+ {
+ __pRejectArrowVisElem->SetOpacity(0.8f);
+ }
+ break;
+
+ case 4:
+ case 5:
+ case 6:
+ {
+ __pRejectArrowVisElem->SetOpacity(1.0f);
+ }
+ break;
+ }
+
+ }
+ }
+ }
+}
+
+// On Touch released, the animation and the visual elements disappear
+void
+IncomingCallForm::OnTouchReleased(const Control& source, const Point& currentPosition, const TouchEventInfo& touchInfo)
+{
+ if (__isAnswerCallStarted == true)
+ {
+ if (currentPosition.x > REJECT_LABEL_X_OFFSET)
+ {
+ //Right reject icon
+ __pRejectFinalVisElem = new (std::nothrow) VisualElement();
+ __pRejectFinalVisElem->Construct();
+ __pRejectFinalVisElem->SetBounds(FloatRectangle(0, 0, W_DIAL_LABEL, H_DIAL_LABEL));
+ __pRejectFinalVisElem->SetShowState(true);
+ __pRejectFinalVisElem->SetOpacity(1.00f);
+ __pRejectFinalVisElem->SetName(IDI_REJECT_FINAL_VISUAL_ELE_NAME);
+ __pRejectLabel->GetVisualElement()->AttachChild(*__pRejectFinalVisElem);
+ Canvas* pCanvas = __pRejectFinalVisElem->GetCanvasN();
+ if(pCanvas != null)
+ {
+ pCanvas->SetBackgroundColor(COLOR_SWIPE_PANEL);
+ pCanvas->FillRectangle(COLOR_SWIPE_PANEL, Rectangle(0, 0, W_DIAL_LABEL, H_DIAL_LABEL));
+ pCanvas->DrawBitmap(Rectangle(0, 0, W_DIAL_LABEL, W_DIAL_LABEL), *__pAcceptCircle);
+ pCanvas->DrawBitmap(Rectangle(DIAL_ICON_X_OFFSET, DIAL_ICON_Y_OFFSET, W_DIAL_BITMAP, H_DIAL_BITMAP), *__pAcceptDial);
+ delete pCanvas;
+ }
+
+ __pAcceptVisElem->SetOpacity(0.0f);
+ //fetch already active call list
+ ArrayListT<CallInfo>* pCallList = static_cast<ArrayListT<CallInfo>*>(__pCallPresentor->GetCallListN());
+ if (pCallList != null && pCallList->GetCount() > 0)
+ {
+ //then atleast 1 active call exist.
+ CallInfo phnCallInfo;
+ pCallList->GetAt(0,phnCallInfo);
+ //Check if only 1 call exist and it is on Hold
+ if(pCallList->GetCount() == 1 && phnCallInfo.IsOnHold())
+ {
+ //directly accept call
+ __pCallPresentor->AcceptIncomingCall(CALL_ANSWER_CALL,__incomingCallHandle);
+ }
+ else
+ {
+ //Either 1 call exist and not "on Hold".
+ //Or 2 calls exist.
+ if(__pOptionPopup != null)
+ {
+ delete __pOptionPopup;
+ __pOptionPopup = null;
+ }
+ __pOptionPopup = new (std::nothrow) CallOptionPopup(*this,*(__pCallPresentor));
+ __pOptionPopup->Initialize();
+ __pOptionPopup->SetShowState(true);
+ __pOptionPopup->Draw();
+ __pOptionPopup->Show();
+ }
+ pCallList->RemoveAll();
+ }
+ else
+ {
+ //no active call - Accept the incoming call
+ __pCallPresentor->AcceptIncomingCall(CALL_ANSWER_CALL,__incomingCallHandle);
+ }
+ delete pCallList;
+ pCallList = null;
+ }
+ else
+ {
+ __pAcceptVisElem->SetOpacity(1.0f);
+ __pRejectVisElem->SetOpacity(1.00f);
+ for (int i = 0; i < 7; i++)
+ {
+ __pAcceptArrowLabel = static_cast<Label*>(__pAcceptArrowLabelsList->GetAt(i));
+ String VisualEleName(IDI_ACCEPT_ARROW_VISUAL_ELE_NAME);
+ VisualEleName.Append(i);
+ __pAcceptArrowVisElem = __pAcceptArrowLabel->GetVisualElement()->GetChild(VisualEleName,true);
+ __pAcceptArrowVisElem->SetOpacity(0.0f);
+
+ }
+ }
+ }
+ else if (__isRejectCallStarted == true)
+ {
+ if (currentPosition.x < ACCEPT_LABEL_RELATIVE_POS)
+ {
+ //left dial icon
+ __pAcceptFinalVisElem = new (std::nothrow) VisualElement();
+ __pAcceptFinalVisElem->Construct();
+ __pAcceptFinalVisElem->SetBounds(FloatRectangle(0, 0, W_DIAL_LABEL, H_DIAL_LABEL));
+ __pAcceptFinalVisElem->SetShowState(true);
+ __pAcceptFinalVisElem->SetOpacity(1.0f);
+ __pAcceptFinalVisElem->SetName(IDI_ACCEPT_FINAL_VISUAL_ELE_NAME);
+ __pAcceptLabel->GetVisualElement()->AttachChild(*__pAcceptFinalVisElem);
+ Canvas* pCanvas = __pAcceptFinalVisElem->GetCanvasN();
+ if(pCanvas != null)
+ {
+ pCanvas->SetBackgroundColor(COLOR_SWIPE_PANEL);
+ pCanvas->FillRectangle(COLOR_SWIPE_PANEL, Rectangle(0, 0, W_DIAL_LABEL, H_DIAL_LABEL));
+ pCanvas->DrawBitmap(Rectangle(DIAL_ICON_X_OFFSET, DIAL_ICON_Y_OFFSET, W_DIAL_BITMAP, H_DIAL_BITMAP), *__pRejectDial);
+ pCanvas->DrawBitmap(Rectangle(0, 0, W_DIAL_LABEL, H_DIAL_LABEL), *__pRejectCircle);
+ delete pCanvas;
+ }
+ __pRejectVisElem->SetOpacity(0.0f);
+ //Reject the call
+ __pCallPresentor->RejectCall(__incomingCallHandle, false,*__pActiveContactNo);
+ }
+ else
+ {
+ __pAcceptVisElem->SetOpacity(1.0f);
+ __pRejectVisElem->SetOpacity(1.00f);
+ for (int i = 0; i < 7; i++)
+ {
+ __pRejectArrowLabel = static_cast<Label*>(__pRejectArrowLabelsList->GetAt(i));
+ String VisualEleName(IDI_REJECT_ARROW_VISUAL_ELE_NAME);
+ VisualEleName.Append(i);
+ __pRejectArrowVisElem = __pRejectArrowLabel->GetVisualElement()->GetChild(VisualEleName,true);
+ __pRejectArrowVisElem->SetOpacity(0.0f);
+
+ }
+ }
+ }
+ __isAnswerCallStarted = false;
+ __isRejectCallStarted = false;
+}
+
+void
+IncomingCallForm::OnTouchMoved(const Control& source, const Point& currentPosition, const TouchEventInfo& touchInfo)
+{
+ if (__isAnswerCallStarted == true)
+ {
+ if (currentPosition.x > 170 && currentPosition.x < 578)
+ {
+ if (currentPosition.x > REJECT_LABEL_X_OFFSET)
+ {
+ __pRejectVisElem->SetOpacity(0.60f);
+ __pAcceptVisElem->SetOpacity(0.60f);
+ }
+ else
+ {
+ __pRejectVisElem->SetOpacity(1.0f);
+ __pAcceptVisElem->SetOpacity(1.0f);
+ }
+ for (int index = 0; index < 7; index++)
+ {
+ __pAcceptArrowLabel = static_cast<Label*>(__pAcceptArrowLabelsList->GetAt(index));
+ String VisualEleName(IDI_ACCEPT_ARROW_VISUAL_ELE_NAME);
+ VisualEleName.Append(index);
+ __pAcceptArrowVisElem = __pAcceptArrowLabel->GetVisualElement()->GetChild(VisualEleName,true);
+ switch (index)
+ {
+ case 0:
+ case 1:
+ {
+ if (currentPosition.x > 360)
+ {
+ __pAcceptArrowVisElem->SetOpacity(0.6f);
+ }
+ else
+ {
+ __pAcceptArrowVisElem->SetOpacity(1.0f);
+ }
+ }
+ break;
+
+ case 2:
+ case 3:
+ {
+ __pAcceptArrowVisElem->SetOpacity(0.8f);
+ }
+ break;
+
+ case 4:
+ case 5:
+ case 6:
+ {
+ if (currentPosition.x < 360)
+ {
+ __pAcceptArrowVisElem->SetOpacity(0.6f);
+ }
+ else
+ {
+ __pAcceptArrowVisElem->SetOpacity(1.0f);
+ }
+ }
+ break;
+ }
+ }
+ }
+ }
+ if (__isRejectCallStarted == true)
+ {
+ if (currentPosition.x < 0 && currentPosition.x > -522)
+ {
+ if (currentPosition.x < ACCEPT_LABEL_RELATIVE_POS)
+ {
+ __pRejectVisElem->SetOpacity(0.60f);
+ __pAcceptVisElem->SetOpacity(0.60f);
+ }
+ else
+ {
+ __pRejectVisElem->SetOpacity(1.0f);
+ __pAcceptVisElem->SetOpacity(1.0f);
+ }
+ for (int index = 0; index < 7; index++)
+ {
+ __pRejectArrowLabel = static_cast<Label*>(__pRejectArrowLabelsList->GetAt(index));
+ String VisualEleName(IDI_REJECT_ARROW_VISUAL_ELE_NAME);
+ VisualEleName.Append(index);
+ __pRejectArrowVisElem = __pRejectArrowLabel->GetVisualElement()->GetChild(VisualEleName,true);
+ switch (index)
+ {
+ case 0:
+ case 1:
+ {
+ if (currentPosition.x > -180)
+ {
+ __pRejectArrowVisElem->SetOpacity(0.6f);
+ }
+ else
+ {
+ __pRejectArrowVisElem->SetOpacity(1.0f);
+ }
+ }
+ break;
+
+ case 2:
+ case 3:
+ {
+ __pRejectArrowVisElem->SetOpacity(0.8f);
+ }
+ break;
+
+ case 4:
+ case 5:
+ case 6:
+ {
+ if (currentPosition.x < -180)
+ {
+ __pRejectArrowVisElem->SetOpacity(0.6f);
+ }
+ else
+ {
+ __pRejectArrowVisElem->SetOpacity(1.0f);
+ }
+ }
+ break;
+ }
+ }
+ }
+ }
+}
+
+void
+IncomingCallForm::OnItemSelected(int itemIndex)
+{
+ ArrayList* pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pArgs->Construct();
+
+ //display name, mobile number
+ Integer* argIndex = new (std::nothrow) Integer(itemIndex);
+ pArgs->Add(argIndex);
+ SendUserEvent(REQUEST_ITEM_SELECTED,pArgs);
+}
+
+void
+IncomingCallForm::HandleMultipleCallSelection(int itemIndex)
+{
+
+ if(__pAcceptLabel->GetVisualElement()->GetChild(IDI_ACCEPT_VISUAL_ELE_NAME,true) == null)
+ {
+ __pAcceptLabel->GetVisualElement()->AttachChild(*__pAcceptVisElem);
+ }
+ if(__pRejectLabel->GetVisualElement()->GetChild(IDI_REJECT_VISUAL_ELE_NAME,true) == null)
+ {
+ __pRejectLabel->GetVisualElement()->AttachChild(*__pRejectVisElem);
+ }
+
+ __pAcceptVisElem->SetOpacity(1.0f);
+ __pRejectVisElem->SetOpacity(1.00f);
+
+ for (int i = 0; i < 7; i++)
+ {
+ __pRejectArrowLabel = static_cast<Label*>(__pRejectArrowLabelsList->GetAt(i));
+ String RejectVisualEleName(IDI_REJECT_ARROW_VISUAL_ELE_NAME);
+ RejectVisualEleName.Append(i);
+ __pRejectArrowVisElem = __pRejectArrowLabel->GetVisualElement()->GetChild(RejectVisualEleName,true);
+ __pRejectArrowVisElem->SetOpacity(0.0f);
+ __pAcceptArrowLabel = static_cast<Label*>(__pAcceptArrowLabelsList->GetAt(i));
+ String AcceptVisualEleName(IDI_ACCEPT_ARROW_VISUAL_ELE_NAME);
+ AcceptVisualEleName.Append(i);
+ __pAcceptArrowVisElem = __pAcceptArrowLabel->GetVisualElement()->GetChild(AcceptVisualEleName,true);
+ __pAcceptArrowVisElem->SetOpacity(0.0f);
+ }
+ if (__pRejectFinalVisElem != null)
+ {
+ __pRejectFinalVisElem->Destroy();
+ __pRejectFinalVisElem = null;
+ }
+
+ if (__pAcceptFinalVisElem != null)
+ {
+ __pAcceptFinalVisElem->Destroy();
+ __pAcceptFinalVisElem = null;
+ }
+ if (__pOptionPopup)
+ {
+ delete __pOptionPopup;
+ __pOptionPopup = null;
+ }
+ switch (itemIndex)
+ {
+ case ID_SECOND_INCOMING_CALL:
+ {
+ //Accept call After putting on hold
+ __pCallPresentor->AcceptIncomingCall(CALL_ANSWER_HOLD_ACCEPT,__incomingCallHandle);
+ }
+ break;
+ case ID_SECOND_INCOMING_CALL + 1:
+ {
+ //Accept call After ending active call
+ __pCallPresentor->AcceptIncomingCall(CALL_ANSWER_END_ACTIVE_ACCEPT,__incomingCallHandle);
+ }
+ break;
+ case ID_MULTI_PARTY_CALL:
+ {
+ //Accept call After ending active call
+ __pCallPresentor->AcceptIncomingCall(CALL_ANSWER_END_ACTIVE_ACCEPT,__incomingCallHandle);
+ }
+ break;
+ case ID_MULTI_PARTY_CALL + 1:
+ {
+ //Accept call After ending held call
+ __pCallPresentor->AcceptIncomingCall(CALL_ANSWER_END_HELD_ACCEPT,__incomingCallHandle);
+ }
+ break;
+ case ID_MULTI_PARTY_CALL + 2:
+ {
+ //Accept call After ending all calls
+ __pCallPresentor->AcceptIncomingCall(CALL_ANSWER_END_ALL_ACCEPT,__incomingCallHandle);
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+IncomingCallForm::OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs)
+{
+ switch(requestId)
+ {
+ case REQUEST_ITEM_SELECTED:
+ {
+ if(pArgs != null)
+ {
+ Integer *index = static_cast<Integer*>(pArgs->GetAt(0));
+ if(index != null)
+ {
+ HandleMultipleCallSelection(index->ToInt());
+ }
+ }
+
+ }
+ break;
+ }
+
+}
--- /dev/null
+//
+// 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 PhnLogsDetailForm.cpp
+ * @brief Call log details form
+ */
+#include <FApp.h>
+#include <FGraphics.h>
+#include <FMedia.h>
+#include <FSocial.h>
+#include "PhnPhoneApp.h"
+#include "PhnAppUtility.h"
+#include "PhnLogsDetailForm.h"
+#include "PhnSceneRegister.h"
+#include "PhnCalllogManager.h"
+#include "PhnCallPresentationModel.h"
+#include "PhnSettingsPresentationModel.h"
+#include "PhnTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Media;
+using namespace Tizen::Social;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+//resources
+const wchar_t* IDL_CALL_LOG_DETAIL_FORM = L"IDL_CALL_LOG_DETAIL_FORM";
+const wchar_t* IDC_BUTTON_CONTACT_IMAGE = L"IDC_BUTTON_CONTACT_IMAGE";
+const wchar_t* IDC_LABEL_NAME = L"IDC_LABEL_NAME";
+const wchar_t* IDC_LABEL_NUMBER = L"IDC_LABEL_NUMBER";
+const wchar_t* IDC_LABEL_NUMBER_UNSAVED = L"IDC_LABEL_NUMBER_UNSAVED";
+const wchar_t* IDC_LABEL_BLOCKED = L"IDC_LABEL_BLOCKED";
+const wchar_t* IDC_BUTTON_MESSAGE = L"IDC_BUTTON_MESSAGE";
+const wchar_t* IDC_SELECTALL = L"IDC_SELECTALL";
+const wchar_t* IDC_BUTTON_CALL = L"IDC_BUTTON_CALL";
+const wchar_t* IDC_LABEL_DETAIL_SELECTED = L"IDC_LABEL_DETAIL_SELECTED";
+
+const int IDA_CALL_LOG_CALL = 201;
+const int IDA_CALL_LOG_MESSAGE = 202;
+const int IDA_FOOTER_BUTTON_LEFT = 203;
+const int IDA_FOOTER_BUTTON_RIGHT = 204;
+const int IDA_SELECT_ALL_CHECKED = 205;
+const int IDA_SELECT_ALL_UNCHECKED = 206;
+const int W_BUTTON = 48;
+const int H_BUTTON = 48;
+const int W_BLOCKED_ICON = 56;
+const int H_BLOCKED_ICON = 56;
+
+const wchar_t* FORMAT_STR = L"%ls (%d)";
+
+static const unsigned int COLOR_DELAIL_LABEL_SELECTED = Color32<215, 225, 232, 255>::Value;
+
+
+DlLogsDetailForm::DlLogsDetailForm(void)
+{
+ __pDataProvider = new DlLogsDetailItemDataProvider();
+
+ __listHeight = 0;
+ __pButtonCall = null;
+ __pButtonMessage = null;
+ __pButtonContactImage = null;
+ __pLabelName = null;
+ __pLabelNumber = null;
+ __pFormFooter = null;
+ __pList = null;
+ __isEditMode = false;
+ __isSelectAll = false;
+ __isPresentInContacts = false;
+ __listItemCount = 0;
+ __selectedItemCount = 0;
+ __calllogListByNum = null;
+ __pCallMgr = null;
+ __calllogCount = 0;
+ __isMsgAppControlLaunched = false;
+}
+
+DlLogsDetailForm::~DlLogsDetailForm(void)
+{
+ if (__pDataProvider != null)
+ {
+ delete __pDataProvider;
+ __pDataProvider = null;
+ }
+}
+
+bool
+DlLogsDetailForm::Initialize()
+{
+ result r = Construct(IDL_CALL_LOG_DETAIL_FORM);
+ TryCatch(r == E_SUCCESS, , "DlLogsDetailForm::Initialize Fail to initialize Call log detail form");
+ return true;
+CATCH:
+ return false;
+
+}
+
+result
+DlLogsDetailForm::OnInitializing(void)
+{
+ AppLog(" OnInitializing SceneManager::AddSceneEventListener()");
+ result r = E_SUCCESS;
+ Bitmap* pBitmap = null;
+ AppResource* pAppResource = App::GetInstance()->GetAppResource();
+
+ __pFormFooter = GetFooter();
+ if (__pFormFooter != null)
+ {
+ __pFormFooter->SetStyle(FOOTER_STYLE_BUTTON_TEXT);
+ __pFormFooter->SetBackButton();
+ __pFormFooter->AddActionEventListener(*this);
+ SetFormBackEventListener(this);
+
+ __pFooterItemDelete.Construct(IDA_FOOTER_BUTTON_LEFT);
+ __pFooterItemDelete.SetText(AppUtility::GetResourceString(IDS_CALLLOG_DELETE_FOOTER));
+ __pFormFooter->AddItem(__pFooterItemDelete);
+
+ __pFooterItemCancel.Construct(IDA_FOOTER_BUTTON_RIGHT);
+ __pFooterItemCancel.SetText(AppUtility::GetResourceString(IDS_CALLLOG_CANCEL_FOOTER));
+ }
+
+ __pButtonContactImage = static_cast<Button*>(GetControl(IDC_BUTTON_CONTACT_IMAGE));
+ if (__pButtonContactImage != null)
+ {
+ //todo: set image & show if present in contacts
+ __pButtonContactImage->SetShowState(false);
+ }
+
+ __pLabelName = static_cast<Label*>(GetControl(IDC_LABEL_NAME));
+ if (__pLabelName != null)
+ {
+ __pLabelName->SetTextColor(Color::GetColor(COLOR_ID_BLACK));
+ __pLabelName->SetTextConfig(50, LABEL_TEXT_STYLE_BOLD);
+ }
+
+ __pLabelNumber = static_cast<Label*>(GetControl(IDC_LABEL_NUMBER));
+ if (__pLabelNumber != null)
+ {
+ __pLabelNumber->SetTextColor(Color::GetColor(COLOR_ID_BLACK));
+ __pLabelNumber->SetTextConfig(32, LABEL_TEXT_STYLE_BOLD);
+ __pLabelNumber->SetTextColor(Color::GetColor(COLOR_ID_GREY));
+ }
+
+ __pLabelNumberUnsaved = static_cast<Label*>(GetControl(IDC_LABEL_NUMBER_UNSAVED));
+ if (__pLabelNumberUnsaved != null)
+ {
+ __pLabelNumberUnsaved->SetTextColor(Color::GetColor(COLOR_ID_BLACK));
+ __pLabelNumberUnsaved->SetTextConfig(50, LABEL_TEXT_STYLE_BOLD);
+ }
+
+ __pLabelBlocked = static_cast<Label*>(GetControl(IDC_LABEL_BLOCKED));
+ if (__pLabelBlocked != null)
+ {
+ __pLabelBlocked->SetShowState(false);
+ }
+
+ pBitmap = pAppResource->GetBitmapN(IDB_LOG_DETAIL_CALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
+ pBitmap->Scale(Dimension(W_BUTTON, H_BUTTON));
+ __pButtonCall = static_cast<Button*>(GetControl(IDC_BUTTON_CALL));
+ if (__pButtonCall != null)
+ {
+ __pButtonCall->SetActionId(IDA_CALL_LOG_CALL);
+ __pButtonCall->SetNormalBitmap(Point(__pButtonCall->GetBounds().width / 2 - W_BUTTON / 2, __pButtonCall->GetBounds().height / 2 - H_BUTTON / 2), *pBitmap); //not working
+ __pButtonCall->SetPressedBitmap(Point(__pButtonCall->GetBounds().width / 2 - W_BUTTON / 2, __pButtonCall->GetBounds().height / 2 - H_BUTTON / 2), *pBitmap); //not working
+ __pButtonCall->AddActionEventListener(*this);
+ delete pBitmap;
+ pBitmap = null;
+ }
+
+ pBitmap = pAppResource->GetBitmapN(IDB_LOG_DETAIL_MSG_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
+ pBitmap->Scale(Dimension(W_BUTTON, H_BUTTON));
+
+ __pButtonMessage = static_cast<Button*>(GetControl(IDC_BUTTON_MESSAGE));
+ if (__pButtonMessage != null)
+ {
+ __pButtonMessage->SetActionId(IDA_CALL_LOG_MESSAGE);
+ __pButtonMessage->SetNormalBitmap(Point(__pButtonMessage->GetBounds().width / 2 - W_BUTTON / 2, __pButtonMessage->GetBounds().height / 2 - H_BUTTON / 2), *pBitmap); //not working
+ __pButtonMessage->SetPressedBitmap(Point(__pButtonMessage->GetBounds().width / 2 - W_BUTTON / 2, __pButtonMessage->GetBounds().height / 2 - H_BUTTON / 2), *pBitmap); //not working
+ __pButtonMessage->AddActionEventListener(*this);
+
+ delete pBitmap;
+ pBitmap = null;
+ }
+
+ __pSelectAll = static_cast<CheckButton*>(GetControl(IDC_SELECTALL));
+ if(__pSelectAll != null)
+ {
+ __pSelectAll->SetActionId(IDA_SELECT_ALL_CHECKED, IDA_SELECT_ALL_UNCHECKED);
+ __pSelectAll->SetSize(GetClientAreaBounds().width, 112);
+ __pSelectAll->SetShowState(false);
+ __pSelectAll->AddActionEventListener(*this);
+ }
+
+ __pList = new (std::nothrow) ListView();
+ if (__pList != null)
+ {
+ __listHeight = GetClientAreaBounds().height - __pButtonContactImage->GetBounds().height - __pButtonMessage->GetBounds().height - 40;
+ int listY = __pButtonContactImage->GetBounds().height + __pButtonMessage->GetBounds().height + 40;
+ __pList->Construct(Rectangle(0, listY, GetClientAreaBounds().width, __listHeight), true, SCROLL_STYLE_FADE_OUT);
+
+ r = AddControl(*__pList);
+ TryCatch(r == E_SUCCESS, , "call log detail list control not added");
+ }
+
+ __pSelectedLabel = static_cast<Label*>(GetControl(IDC_LABEL_DETAIL_SELECTED));
+ if(__pSelectedLabel != null)
+ {
+ SetControlAlwaysOnTop(*__pSelectedLabel,true);
+ __pSelectedLabel->SetBackgroundColor(COLOR_DELAIL_LABEL_SELECTED);
+ __pSelectedLabel->SetShowState(false);
+ }
+ return r;
+CATCH:
+ return r;
+}
+
+result
+DlLogsDetailForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ return r;
+}
+
+bool
+DlLogsDetailForm::DeleteSelectedCalllog(void)
+{
+ int checkedItemCount = 0;
+ CallLogDetails pCalllogInfo;
+ Tizen::Base::Collection::IListT<CallLogDetails>* pCalllogByNumberList;
+ //pCalllogByNumberList = __calllogListByNum->GetValuesN();
+ pCalllogByNumberList = __calllogListByNum->GetItemsN(0, __calllogListByNum->GetCount()); //to be verified
+ __calllogCount = pCalllogByNumberList->GetCount();
+ for(int index = 0; index < __calllogCount; index++)
+ {
+ pCalllogByNumberList->GetAt(index,pCalllogInfo);
+ AppLog(" info from Map list %d %d %s", pCalllogInfo.GetCalllogType(), pCalllogInfo.GetDuration(), pCalllogInfo.GetPhoneNumber());
+ if(__pList->IsItemChecked(index) == true )
+ {
+ checkedItemCount++;
+ __pCallMgr->DeleteCalllogByDbId(pCalllogInfo.GetCalllogDbId());
+ }
+ }
+ delete pCalllogByNumberList;
+ // return to call logs list if all items deleted
+ if (checkedItemCount == __calllogCount)
+ {
+ return true;
+ }
+ return false;
+}
+
+
+void
+DlLogsDetailForm::OnActionPerformed(const Control& source, int actionId)
+{
+ switch (actionId)
+ {
+
+ case IDA_CALL_LOG_CALL:
+ {
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ CallPresentationModel* pCallPresentor = CallPresentationModel::GetInstance();
+ //make an outgoing call with given number
+ String* contactTxt = new (std::nothrow) String(__number);
+ //switch to dialing outgoing call form
+ IList* pContact = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pContact->Add(contactTxt);
+ //Check if dialing an emergency call
+ bool isEmergencyCall = pCallPresentor->IsEmergencyNumber(*contactTxt, true);
+ if (isEmergencyCall)
+ {
+ pSceneManager->GoForward( ForwardSceneTransition( IDSCN_SCENE_OUT_EMERGENCYCALL), pContact);
+ }
+ else
+ {
+ pSceneManager->GoForward( ForwardSceneTransition(IDSCN_SCENE_OUTCALL), pContact);
+ }
+ }
+ break;
+
+ case IDA_CALL_LOG_MESSAGE:
+ {
+ if(__isMsgAppControlLaunched == true)
+ {
+ //Message AppControl is already launched
+ return;
+ }
+
+ //launch message
+ __isMsgAppControlLaunched = true;
+ result r = E_SUCCESS;
+ HashMap extraData;
+ extraData.Construct();
+
+ extraData.Add(new (std::nothrow) String(MESSAGE_TYPE), new (std::nothrow) String(MESSAGE_SMS_TYPE));
+ extraData.Add(new (std::nothrow) String(MESSAGE_TO), new (std::nothrow) String(__number));
+
+ AppControl* pAc = AppManager::FindAppControlN(PROVIDER_ID_MESSAGE, OPERATION_ID_COMPOSE);
+ if (pAc != null)
+ {
+ r = pAc->Start(null, null, &extraData, this);
+ if(r != E_SUCCESS)
+ {
+ //AppControl failed.
+ __isMsgAppControlLaunched = false;
+ }
+ delete pAc;
+ }
+ extraData.RemoveAll(true);
+ }
+ break;
+
+ case IDA_FOOTER_BUTTON_LEFT:
+ {
+ const wchar_t* pContact = __number.GetPointer();
+ int len = __number.GetLength() + 1;
+ char* pNumber = new (std::nothrow) char[len];
+ wcstombs(pNumber, pContact, len);
+ if (__isEditMode == false)
+ {
+ SetFormMode(true);
+ __calllogListByNum = __pCallMgr->GetCallogListByNumberFromDatabaseN(pNumber);
+ __pList->UpdateList();
+ __pList->Invalidate(false);
+ }
+ else
+ {
+ bool switchtoCallLogView = DeleteSelectedCalllog();
+ if (switchtoCallLogView == false)
+ {
+ __calllogListByNum = __pCallMgr->GetCallogListByNumberFromDatabaseN(pNumber);
+ UpdateForm();
+ SetFormMode(false);
+ }
+ else
+ {
+ SetFormMode(false);
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CALL_LOG, SCENE_TRANSITION_ANIMATION_TYPE_NONE,
+ SCENE_HISTORY_OPTION_NO_HISTORY));
+ }
+ }
+ delete[] pNumber;
+ pNumber = null;
+ }
+ break;
+
+ case IDA_FOOTER_BUTTON_RIGHT:
+ {
+ SetFormMode(false);
+ }
+ break;
+
+ case IDA_SELECT_ALL_UNCHECKED:
+ {
+ SetAllListItems(false);
+ __selectedItemCount = 0;
+ String selStr = AppUtility::GetResourceString(IDS_SELECT_CALL_LOG);
+ __pSelectedLabel->SetText(selStr);
+ __pSelectedLabel->Invalidate(false);
+ }
+ break;
+ case IDA_SELECT_ALL_CHECKED:
+ {
+ SetAllListItems(true);
+ __selectedItemCount = __listItemCount;
+ String text;
+ String selItemStr = L"";
+ if(__selectedItemCount > 1)
+ {
+ selItemStr = AppUtility::GetResourceString(IDS_SELECTED_ITEMS_STRING);
+ }
+ else
+ {
+ selItemStr = AppUtility::GetResourceString(IDS_SELECTED_ITEM_STRING);
+ }
+ text.Format(100, selItemStr.GetPointer(), __listItemCount);
+ __pSelectedLabel->SetText(text);
+ __pSelectedLabel->Invalidate(false);
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+DlLogsDetailForm::GetUpdatedListFromDatabase(char* number)
+{
+ if(__calllogListByNum != null)
+ {
+ AppLog(" list already present, UPDATE");
+ __calllogListByNum->RemoveAll();
+ delete __calllogListByNum;
+ }
+
+ __calllogListByNum = __pCallMgr->GetCallogListByNumberFromDatabaseN(number);
+ __calllogCount = __pCallMgr->GetCalllogCountByNumber();
+}
+
+void
+DlLogsDetailForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
+{
+ AppLog(" activated");
+ __pCallMgr = CallLogManager::GetInstance();
+ __isPresentInContacts = false;
+ __selectedItemCount =0;
+ __isMsgAppControlLaunched = false;
+ if(pArgs != null)
+ {
+ __number.Clear();
+ String* pNumberStr = static_cast<String*> (pArgs->GetAt(0));
+ __number.Append(*pNumberStr);
+ UpdateForm();
+ pArgs->RemoveAll();
+ delete pArgs;
+ pArgs = null;
+ }
+ __pList->SetItemProvider(*__pDataProvider);
+ __pList->UpdateList();
+ SetFormMode(false);
+}
+
+void
+DlLogsDetailForm::UpdateForm(void)
+{
+ SettingsPresentationModel* pSettingsPresentationModel = SettingsPresentationModel::GetInstance();
+ bool isCallToBeRejected = pSettingsPresentationModel->IsCallToBeRejected(__number);
+
+ const wchar_t* pContact = __number.GetPointer();
+ int len = __number.GetLength() + 1;
+ char* pNumber = new (std::nothrow) char[len];
+ wcstombs(pNumber, pContact, len);
+
+ GetUpdatedListFromDatabase(pNumber);
+ delete[] pNumber;
+
+ String contactName;
+ Bitmap* pBitmap = null;
+ Addressbook* pAddressBook = AddressbookManager::GetInstance()->GetAddressbookN();
+ if (pAddressBook != null)
+ {
+ IList* pNumberContactsList = pAddressBook->SearchContactsByPhoneNumberN(__number);
+ if(pNumberContactsList != null)
+ {
+ Contact* pContact = static_cast<Contact*>(pNumberContactsList->GetAt(0));
+ if(pContact != null)
+ {
+ IList* pPhoneNumberList = pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
+ if (pPhoneNumberList != null)
+ {
+ IEnumerator* pEnum = pPhoneNumberList->GetEnumeratorN();
+ while (E_SUCCESS == pEnum->MoveNext())
+ {
+ PhoneNumber* pPhoneNumber = (PhoneNumber*) pEnum->GetCurrent();
+ if(pPhoneNumber->GetPhoneNumber().Equals(__number) == true)
+ {
+ __isPresentInContacts = true;
+ break;
+ }
+ }
+ delete pEnum;
+ pPhoneNumberList->RemoveAll(true);
+ delete pPhoneNumberList;
+ }
+
+ if(__isPresentInContacts == true)
+ {
+ __pLabelNumberUnsaved->SetShowState(false);
+ //fetch contact name
+ contactName.Clear();
+ pContact->GetValue(CONTACT_PROPERTY_ID_DISPLAY_NAME, contactName);
+ //fetch person's photo
+ pBitmap = pContact->GetThumbnailN();
+
+ String contactNameStr;
+ contactNameStr.Format(100, FORMAT_STR,contactName.GetPointer(), __calllogCount);
+ __pLabelName->SetText(contactNameStr);
+ __pLabelName->Invalidate(false);
+ __pLabelNumber->SetText(__number);
+ __pLabelNumber->Invalidate(false);
+ __pLabelNumberUnsaved->SetShowState(false);
+ __pLabelBlocked->SetShowState(false);
+ __pLabelName->SetShowState(true);
+ __pLabelNumber->SetShowState(true);
+ //todo: set the contact button image
+ Canvas* pCanvas = null;
+ pCanvas = new (std::nothrow) Canvas();
+ pCanvas->Construct(Rectangle(0,0,__pButtonContactImage->GetBounds().width,__pButtonContactImage->GetBounds().height));
+ //set bitmap to button
+ if (pBitmap == null)
+ {
+ pBitmap = AppUtility::GetBitmapFromResourcesN(L"C01-1_icon_contacts.png", W_CONTACT_BITMAP_ITEM, H_CONTACT_BITMAP_ITEM);
+ }
+ else
+ {
+ //scale bitmap to predefined size
+ pBitmap->SetScalingQuality(BITMAP_SCALING_QUALITY_MID);
+ pBitmap->Scale(Dimension(W_CONTACT_BITMAP_ITEM, H_CONTACT_BITMAP_ITEM));
+ }
+
+ pCanvas->DrawBitmap(Rectangle(Point(0, 0), Dimension(pBitmap->GetWidth(), pBitmap->GetHeight())), *pBitmap);
+ delete pBitmap;
+ pBitmap = null;
+ //TODO: chk whether the number is blocked and add icon in top right
+ if (isCallToBeRejected == true)
+ {
+ pBitmap = AppUtility::GetBitmapFromResourcesN(L"C01-4_icon_Blocked.png", W_BLOCKED_ICON, H_BLOCKED_ICON);
+ pCanvas->DrawBitmap(Rectangle(Point(86, 0), Dimension(pBitmap->GetWidth(), pBitmap->GetHeight())), *pBitmap);
+ delete pBitmap;
+ pBitmap = null;
+ }
+ Bitmap* pActualBgBmp = new Bitmap();
+ pActualBgBmp->Construct(*pCanvas, pCanvas->GetBounds());
+ __pButtonContactImage->SetNormalBackgroundBitmap(*pActualBgBmp);
+ __pButtonContactImage->SetShowState(true);
+ __pButtonContactImage->Invalidate(false);
+ delete pCanvas;
+ delete pActualBgBmp;
+ }
+ }
+ pNumberContactsList->RemoveAll(true);
+ delete pNumberContactsList;
+ delete pAddressBook;
+ pAddressBook = null;
+ }
+ }
+
+ if (__isPresentInContacts == false)
+ {
+ __isPresentInContacts = false;
+ //not in contacts rearrage the icons
+ String contactNameStr;
+ contactNameStr.Format(100, FORMAT_STR,__number.GetPointer(), __calllogCount);
+ __pLabelNumberUnsaved->SetText(contactNameStr);
+ __pLabelNumberUnsaved->Invalidate(false);
+ __pLabelNumberUnsaved->SetShowState(true);
+ __pLabelName->SetShowState(false);
+ __pLabelNumber->SetShowState(false);
+ __pButtonContactImage->SetShowState(false);
+ //todo set bitmap
+ if (isCallToBeRejected == true)
+ {
+ pBitmap = AppUtility::GetBitmapFromResourcesN(L"C01-4_icon_Blocked.png", W_BLOCKED_ICON, H_BLOCKED_ICON);
+ __pLabelBlocked->SetBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ pBitmap = null;
+ }
+ else
+ {
+ Canvas* pCanvas = null;
+ pCanvas = new (std::nothrow) Canvas();
+ pCanvas->Construct(Rectangle(0,0,__pLabelBlocked->GetBounds().width,__pButtonContactImage->GetBounds().height));
+ Bitmap* pActualBgBmp = new Bitmap();
+ pActualBgBmp->Construct(*pCanvas, pCanvas->GetBounds());
+ __pLabelBlocked->SetBackgroundBitmap(*pActualBgBmp);
+ delete pCanvas;
+ delete pActualBgBmp;
+ }
+ __pLabelBlocked->Invalidate(false);
+ __pLabelBlocked->SetShowState(true);
+ }
+ if (__pDataProvider != null)
+ {
+ __pDataProvider->ResetDetailsList();
+ }
+ __pList->UpdateList();
+ __pList->Invalidate(false);
+}
+
+void
+DlLogsDetailForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
+{
+ if (__pDataProvider != null)
+ {
+ __pDataProvider->ResetDetailsList();
+ }
+ if (__pCallMgr != null)
+ {
+ __pCallMgr = null;
+ }
+}
+
+
+void
+DlLogsDetailForm::SetFormMode(bool editMode)
+{
+
+ if (editMode == false)
+ {
+ __isEditMode = false;
+ __pSelectAll->SetShowState(false);
+ __pDataProvider->SetViewMode(false);
+ __pFormFooter->RemoveItemAt(1);
+ __pFormFooter->SetBackButton();
+ __pList->UpdateList();
+ if (__isPresentInContacts == false)
+ {
+ __pLabelBlocked->SetShowState(true);
+ __pLabelNumberUnsaved->SetShowState(true);
+ __pLabelName->SetShowState(false);
+ __pLabelNumber->SetShowState(false);
+ __pButtonContactImage->SetShowState(false);
+ }
+ else
+ {
+ __pLabelNumberUnsaved->SetShowState(false);
+ __pLabelBlocked->SetShowState(false);
+ __pLabelName->SetShowState(true);
+ __pLabelNumber->SetShowState(true);
+ __pButtonContactImage->SetShowState(true);
+ }
+ __pButtonCall->SetShowState(true);
+ __pButtonMessage->SetShowState(true);
+ int listY = __pButtonContactImage->GetBounds().height + __pButtonMessage->GetBounds().height + 40;
+ __pList->SetBounds(Rectangle(0, listY, GetClientAreaBounds().width, __listHeight));
+ __listItemCount = __pList->GetItemCount();
+ __pFormFooter->SetItemEnabled(0, true);
+ __pList->RemoveListViewItemEventListener(*this);
+ __pSelectAll->SetSelected(false);
+ __pSelectAll->Invalidate(false);
+ __pSelectedLabel->SetShowState(false);
+ __pSelectedLabel->Invalidate(false);
+ }
+ else
+ {
+ __isEditMode = true;
+ __pSelectAll->SetShowState(true);
+ __pDataProvider->SetViewMode(true);
+ __pFormFooter->AddItem(__pFooterItemCancel);
+ __pFormFooter->RemoveBackButton();
+ __pList->AddListViewItemEventListener(*this);
+ __pList->UpdateList();
+ UnCheckAllItems();
+ if (__isPresentInContacts == false)
+ {
+ __pLabelBlocked->SetShowState(false);
+ __pLabelNumberUnsaved->SetShowState(false);
+ __pLabelName->SetShowState(false);
+ __pLabelNumber->SetShowState(false);
+ __pButtonContactImage->SetShowState(false);
+ }
+ else
+ {
+ __pLabelNumberUnsaved->SetShowState(false);
+ __pLabelBlocked->SetShowState(false);
+ __pLabelName->SetShowState(false);
+ __pLabelNumber->SetShowState(false);
+ __pButtonContactImage->SetShowState(false);
+ }
+ __pButtonCall->SetShowState(false);
+ __pButtonMessage->SetShowState(false);
+ __pList->SetBounds(GetClientAreaBounds().x, __pSelectAll->GetHeight(), GetClientAreaBounds().width, GetClientAreaBounds().height - (__pSelectAll->GetHeight()+__pSelectedLabel->GetHeight()));
+ __listItemCount = __pList->GetItemCount();
+ __pFormFooter->SetItemEnabled(0, false);
+ __selectedItemCount = 0;
+ String selStr = AppUtility::GetResourceString(IDS_SELECT_CALL_LOG);
+ __pSelectedLabel->SetText(selStr);
+ __pSelectedLabel->SetShowState(true);
+ __pSelectedLabel->Invalidate(false);
+ }
+ __pSelectAll->Invalidate(true);
+ Draw();
+}
+
+void
+DlLogsDetailForm::UnCheckAllItems(void)
+{
+ int i = 0;
+ for (; i <= __pList->GetItemCount(); i++)
+ {
+ __pList->SetItemChecked(i, 0);
+ }
+ __selectedItemCount = 0;
+}
+void
+DlLogsDetailForm::SetAllListItems(bool checked)
+{
+ int i = 0;
+ __isSelectAll = checked;
+ for (; i <= __pList->GetItemCount(); i++)
+ {
+ __pList->SetItemChecked(i, checked);
+ }
+ __pList->UpdateList();
+ __pFormFooter->SetItemEnabled(0, checked);
+ __pFormFooter->Invalidate(false);
+ __pFormFooter->Draw();
+}
+void
+DlLogsDetailForm::OnFormBackRequested(Form& source)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CALL_LOG, SCENE_TRANSITION_ANIMATION_TYPE_NONE,
+ SCENE_HISTORY_OPTION_NO_HISTORY));
+}
+
+
+void
+DlLogsDetailForm::OnListViewContextItemStateChanged(ListView& listView, int index, int elementId, ListContextItemStatus status)
+{
+
+}
+
+void
+DlLogsDetailForm::OnListViewItemLongPressed(ListView& listView, int index, int elementId, bool& invokeListViewItemCallback)
+{
+
+}
+
+void
+DlLogsDetailForm::OnListViewItemStateChanged(ListView& listView, int index, int elementId, ListItemStatus status)
+{
+ String text;
+ if (status == LIST_ITEM_STATUS_CHECKED)
+ {
+ __selectedItemCount++;
+ }
+ else if (status == LIST_ITEM_STATUS_UNCHECKED)
+ {
+ __selectedItemCount--;
+ }
+
+ if (__selectedItemCount == __listItemCount)
+ {
+ __pSelectAll->SetSelected(true);
+ }
+ else
+ {
+ __pSelectAll->SetSelected(false);
+ }
+ __pSelectAll->Invalidate(false);
+ if (__selectedItemCount == 0)
+ {
+ __pFormFooter->SetItemEnabled(0, false);
+ String selStr = AppUtility::GetResourceString(IDS_SELECT_CALL_LOG);
+ __pSelectedLabel->SetText(selStr);
+ }
+ else
+ {
+ __pFormFooter->SetItemEnabled(0, true);
+ String selItemStr = L"";
+ if(__selectedItemCount > 1)
+ {
+ selItemStr = AppUtility::GetResourceString(IDS_SELECTED_ITEMS_STRING);
+ }
+ else
+ {
+ selItemStr = AppUtility::GetResourceString(IDS_SELECTED_ITEM_STRING);
+ }
+ text.Format(100, selItemStr.GetPointer(), __selectedItemCount);
+ __pSelectedLabel->SetText(text);
+ }
+ __pFormFooter->Draw();
+ __pSelectedLabel->Invalidate(false);
+}
+
+void
+DlLogsDetailForm::OnListViewItemSwept(ListView& listView, int index, SweepDirection direction)
+{
+
+}
+
+void
+DlLogsDetailForm::OnAppControlCompleteResponseReceived(const AppId& appId, const String& operationId, AppCtrlResult appControlResult, const IMap* pExtraData)
+{
+ if (__isMsgAppControlLaunched == true)
+ {
+ //Message AppControl request completed.
+ __isMsgAppControlLaunched = false;
+ }
+}
--- /dev/null
+//
+// 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 PhnLogsDetailItemProvider.cpp
+ * @brief Calllog detail item provider class
+ */
+#include <FGraphics.h>
+#include <FUi.h>
+#include <FUiControl.h>
+#include <FBase.h>
+#include <FMedia.h>
+#include <FApp.h>
+#include "PhnAppUtility.h"
+#include "PhnLogsDetailItemProvider.h"
+#include "PhnCalllogManager.h"
+
+using namespace Tizen::Graphics;
+using namespace Tizen::Base;
+using namespace Tizen::Media;
+using namespace Tizen::App;
+const int DlLogsDetailItemDataProvider::ID_NAME_STRING = 100;
+const int DlLogsDetailItemDataProvider::ID_NUMBER_STRING = 101;
+const int DlLogsDetailItemDataProvider::ID_TIME_STRING = 102;
+const int DlLogsDetailItemDataProvider::ID_CALLTYPE_BITMAP = 104;
+
+const int DlLogsDetailItemDataProvider::X_TEXT_LINE1_ITEM = 16;
+const int DlLogsDetailItemDataProvider::Y_TEXT_LINE1_ITEM = 10;
+const int DlLogsDetailItemDataProvider::H_TEXT_LINE1_ITEM = 60;
+const int DlLogsDetailItemDataProvider::W_TEXT_LINE1_ITEM = 560;
+
+const int DlLogsDetailItemDataProvider::X_TEXT_LINE2_ITEM = 64;
+const int DlLogsDetailItemDataProvider::Y_TEXT_LINE2_ITEM = 70;
+const int DlLogsDetailItemDataProvider::H_TEXT_LINE2_ITEM = 48;
+const int DlLogsDetailItemDataProvider::W_TEXT_LINE2_ITEM = 456;
+
+const int DlLogsDetailItemDataProvider::X_TEXT_TIME_ITEM = 536;
+const int DlLogsDetailItemDataProvider::Y_TEXT_TIME_ITEM = 70;
+const int DlLogsDetailItemDataProvider::H_TEXT_TIME_ITEM = 48;
+const int DlLogsDetailItemDataProvider::W_TEXT_TIME_ITEM = 168;
+
+
+const int DlLogsDetailItemDataProvider::X_CALLTYPE_BITMAP_ITEM = 16;
+const int DlLogsDetailItemDataProvider::Y_CALLTYPE_BITMAP_ITEM = 70 + 8;
+const int DlLogsDetailItemDataProvider::H_CALLTYPE_BITMAP_ITEM = 32;
+const int DlLogsDetailItemDataProvider::W_CALLTYPE_BITMAP_ITEM = 32;
+
+static const int H_CALLLOGDETAIL_ITEM = 128;
+
+DlLogsDetailItemDataProvider::DlLogsDetailItemDataProvider(void)
+{
+ __isEditMode = false;
+ __pCalllogListByNumber = null;
+ __pCallMgr = CallLogManager::GetInstance();
+}
+
+DlLogsDetailItemDataProvider::~DlLogsDetailItemDataProvider(void)
+{
+ //empty implementation
+ if(__pCalllogListByNumber != null)
+ {
+ __pCalllogListByNumber->RemoveAll();
+ delete __pCalllogListByNumber;
+ }
+
+}
+
+ListItemBase*
+DlLogsDetailItemDataProvider::CreateItem(int index, int itemWidth)
+{
+ CallLogDetails calllogInfo;
+ DateTime t;
+ int duration = 0;
+ time_t tm;
+ struct tm* time = null;
+ char timeText[25];
+ CallLogType type;
+ String durationText;
+ String typeText;
+ Bitmap* pBitmap = null;
+ AppResource* pAppResource = App::GetInstance()->GetAppResource();
+ int hr, min, sec;
+ hr = min = sec = 0;
+
+ if(__pCalllogListByNumber == null)
+ {
+ __pCalllogListByNumber=__pCallMgr->GetCalllogListByNumValues();
+ }
+
+ __pCalllogListByNumber->GetAt(index,calllogInfo);
+ //AppLog(" info from Map list from Mgr %d %d %d %s %d %d", key, pCalllogInfo.GetCalllogType(), pCalllogInfo.GetDuration(), pCalllogInfo.GetPhoneNumber(), pCalllogInfo.GetDuration(), pCalllogInfo.GetStartTime());
+ duration = calllogInfo.GetDuration();
+ type = calllogInfo.GetCalllogType();
+
+
+ switch(type)
+ {
+ case CALL_LOG_TYPE_VOICE_INCOMING:
+ {
+ typeText.Append(AppUtility::GetResourceString(IDS_CALLLOG_RECEIVED));
+ pBitmap = pAppResource->GetBitmapN(IDB_LOG_RECEIVEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
+ }
+ break;
+ case CALL_LOG_TYPE_VOICE_OUTGOING:
+ {
+ typeText.Append(AppUtility::GetResourceString(IDS_CALLLOG_OUTGOING));
+ pBitmap = pAppResource->GetBitmapN(IDB_LOG_DIALEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
+ }
+ break;
+ case CALL_LOG_TYPE_VOICE_REJECTED:
+ case CALL_LOG_TYPE_VOICE_MISSED:
+ {
+ typeText.Append(AppUtility::GetResourceString(IDS_CALLLOG_MISSED));
+ pBitmap = pAppResource->GetBitmapN(IDB_LOG_MISSEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
+ }
+ break;
+ case CALL_LOG_TYPE_SMS_INCOMING:
+ {
+ typeText.Append(AppUtility::GetResourceString(IDS_CALLLOG_RECEIVED_MSG));
+ }
+ break;
+ case CALL_LOG_TYPE_SMS_OUTGOING:
+ {
+ typeText.Append(AppUtility::GetResourceString(IDS_CALLLOG_SENT_MSG));
+ }
+ break;
+ case CALL_LOG_TYPE_VOICE_BLOCKED:
+ {
+ typeText.Append(AppUtility::GetResourceString(IDS_CALLLOG_REJECTED));
+ pBitmap = pAppResource->GetBitmapN(IDB_LOG_BLOCKEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
+ }
+ break;
+ default:
+ {
+ typeText.Append(L" ");
+ }
+ break;
+ }
+
+ tm = calllogInfo.GetStartTime();
+ time = localtime(&tm);
+ if(time != null)
+ {
+ strftime(timeText,25,"%d %b %Y, %I:%M%p", time);
+ }
+ //AppLog(" dateTime %s", timeText);
+ ListAnnexStyle style = LIST_ANNEX_STYLE_NORMAL;
+ EnrichedText* text = new (std::nothrow) EnrichedText();
+ TextElement* textElement = new (std::nothrow) TextElement();
+ Font font;
+ String appPath = (Application::GetInstance())->GetAppRootPath();
+ CustomItem* pItem = new (std::nothrow) CustomItem();
+ if (__isEditMode == true)
+ {
+ style = LIST_ANNEX_STYLE_MARK;
+ }
+ pItem->Construct(Dimension(itemWidth, H_CALLLOGDETAIL_ITEM), style);
+
+ /*if (__isEditMode == true && index == 0)
+ {
+ pItem->AddElement(Rectangle(16, 0, itemWidth - 76, 128), ID_NAME_STRING, L"Select All", false);
+ pItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_NORMAL, Color(215, 225, 232));
+ pItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_PRESSED, Color(215, 225, 232));
+ pItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_HIGHLIGHTED, Color(215, 225, 232));
+ return pItem;
+ }*/
+ pItem->AddElement(Rectangle(X_TEXT_LINE1_ITEM, Y_TEXT_LINE1_ITEM, W_TEXT_LINE1_ITEM, H_TEXT_LINE1_ITEM), ID_NAME_STRING, timeText, false);
+ pItem->AddElement(Rectangle(X_TEXT_LINE2_ITEM, Y_TEXT_LINE2_ITEM, W_TEXT_LINE2_ITEM, H_TEXT_LINE2_ITEM), ID_NUMBER_STRING, typeText.GetPointer(), 32, Color::GetColor(COLOR_ID_GREY), Color::GetColor(COLOR_ID_GREY), Color::GetColor(COLOR_ID_GREY), false);
+
+ if (__isEditMode == true)
+ {
+ pItem->AddElement(Rectangle(X_TEXT_LINE1_ITEM, Y_TEXT_LINE1_ITEM, W_TEXT_LINE1_ITEM - 76, H_TEXT_LINE1_ITEM), ID_NAME_STRING, timeText, false);
+ pItem->AddElement(Rectangle(X_TEXT_LINE2_ITEM, Y_TEXT_LINE2_ITEM, W_TEXT_LINE2_ITEM - 76, H_TEXT_LINE2_ITEM), ID_NUMBER_STRING, typeText.GetPointer(), 32, Color::GetColor(COLOR_ID_GREY), Color::GetColor(COLOR_ID_GREY), Color::GetColor(COLOR_ID_GREY), false);
+ }
+ text->Construct(Dimension(W_TEXT_TIME_ITEM, H_TEXT_TIME_ITEM));
+ text->SetHorizontalAlignment(TEXT_ALIGNMENT_RIGHT);
+ text->SetVerticalAlignment(TEXT_ALIGNMENT_MIDDLE);
+ hr = duration/3600;
+ sec = duration%3600;
+ min = duration/60;
+ sec = sec%60;
+ //AppLog(" time %02d:%02d:%02d", hr, min, sec);
+ durationText.Format(10,L"%02d:%02d:%02d", hr, min, sec);
+ textElement->Construct(durationText);
+
+ font.Construct(FONT_STYLE_PLAIN, 32);
+ textElement->SetFont(font);
+ textElement->SetTextColor(Color::GetColor(COLOR_ID_GREY));
+ text->Add(*textElement);
+ pItem->AddElement(Rectangle(X_TEXT_TIME_ITEM - 76, Y_TEXT_TIME_ITEM, W_TEXT_TIME_ITEM, H_TEXT_TIME_ITEM), ID_TIME_STRING, *text);
+
+ Image* pImage = new (std::nothrow) Image();
+ pImage->Construct();
+ if (pBitmap != null)
+ {
+ pItem->AddElement(Rectangle(X_CALLTYPE_BITMAP_ITEM, Y_CALLTYPE_BITMAP_ITEM, W_CALLTYPE_BITMAP_ITEM, H_CALLTYPE_BITMAP_ITEM), ID_CALLTYPE_BITMAP, *pBitmap);
+ delete pBitmap;
+ pBitmap = null;
+ }
+
+ //Background image for List items. Not woring in A3RC2 SDk.Henc ecommented
+ /*path.Clear();
+ path = appPath + L"res/screen-density-xhigh/00_reorder_group_list_bg.png";
+ pBitmap = pImage->DecodeN(path, BITMAP_PIXEL_FORMAT_RGB565);
+ pItem->SetBackgroundBitmap(LIST_ITEM_DRAWING_STATUS_NORMAL, pBitmap);
+ pItem->SetBackgroundBitmap(LIST_ITEM_DRAWING_STATUS_PRESSED, pBitmap);
+ pItem->SetBackgroundBitmap(LIST_ITEM_DRAWING_STATUS_HIGHLIGHTED, pBitmap);*/
+ return pItem;
+}
+
+bool
+DlLogsDetailItemDataProvider::DeleteItem(int index, ListItemBase* pItem, int itemWidth)
+{
+ if (pItem != null)
+ {
+ delete pItem;
+ pItem = null;
+ }
+ return true;
+}
+
+int
+DlLogsDetailItemDataProvider::GetItemCount(void)
+{
+ int itemCount = CallLogManager::GetInstance()->GetCalllogCountByNumber();
+ return itemCount;
+}
+
+void
+DlLogsDetailItemDataProvider::SetViewMode(bool mode)
+{
+ __isEditMode = mode;
+}
+
+void
+DlLogsDetailItemDataProvider::ResetDetailsList(void)
+{
+ delete __pCalllogListByNumber;
+ __pCalllogListByNumber = null;
+
+}
--- /dev/null
+//
+// 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 PhnPanelFactory.cpp
+ * @brief The Panel factory for Dial application
+ */
+
+#include "PhnPanelFactory.h"
+#include "PhnTabDialer.h"
+#include "PhnTabContacts.h"
+#include "PhnTabLogs.h"
+#include "PhnTabFavorites.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+
+
+PanelFactory::PanelFactory(void)
+{
+}
+
+PanelFactory::~PanelFactory(void)
+{
+}
+
+Panel*
+PanelFactory::CreatePanelN(const String& panelId, const SceneId& sceneId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager);
+ Panel* pNewPanel = null;
+
+ if (panelId == PANEL_DIALER)
+ {
+ DialTabDialer* pPanel = new DialTabDialer();
+ pPanel->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pPanel);
+ pNewPanel = pPanel;
+ }
+ else if (panelId == PANEL_LOGS)
+ {
+ DialTabLogs* pPanel = new DialTabLogs();
+ pPanel->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pPanel);
+ pNewPanel = pPanel;
+ }
+ return pNewPanel;
+}
--- /dev/null
+//
+// 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 PhnPhoneApp.cpp
+ * @brief Phone Application UiApp file
+ */
+#include <FUi.h>
+#include "PhnCallInfo.h"
+#include "PhnCallPresentationModel.h"
+#include "PhnPhoneAppFrame.h"
+#include "PhnPhoneApp.h"
+#include "PhnSceneRegister.h"
+#include "PhnSettingsPresentationModel.h"
+#include "PhnTypes.h"
+#include "PhnIAppStateChangeListner.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Utility;
+using namespace Tizen::System;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+PhoneApp::PhoneApp(void) : __isOpenAsAppControl(false), __pLaunchArgs(null)
+ , __initialSceneId(L"")
+{
+ __listenerList.Construct();
+}
+
+PhoneApp::~PhoneApp(void)
+{
+}
+
+UiApp*
+PhoneApp::CreateInstance(void)
+{
+ return new (std::nothrow) PhoneApp();
+}
+
+bool
+PhoneApp::OnAppInitializing(AppRegistry& appRegistry)
+{
+ AppControlProviderManager* pProviderMgr = AppControlProviderManager::GetInstance();
+ pProviderMgr->SetAppControlProviderEventListener(this);
+ return true;
+}
+
+bool
+PhoneApp::OnAppInitialized(void)
+{
+ AppLog("ENTER");
+ result r = E_FAILURE;
+ //Check if PhoneApp is opened as AppControl
+ if(__isOpenAsAppControl == false)
+ {
+ //by default, initial scene is DIALER view
+ __initialSceneId = IDSCN_DIALER;
+ __pLaunchArgs = null;
+ }
+
+ // Initialize Frame and App specific data.
+ PhoneAppFrame* pPhoneAppFrame = new (std::nothrow) PhoneAppFrame();
+ pPhoneAppFrame->Construct();
+ pPhoneAppFrame->SetName(L"Phone");
+ r = AddFrame(*pPhoneAppFrame);
+ AppLog("EXIT");
+ return (!IsFailed(r));
+}
+
+bool
+PhoneApp::OnAppWillTerminate(void)
+{
+ return true;
+}
+
+bool
+PhoneApp::OnAppTerminating(AppRegistry& appRegistry, bool forcedTermination)
+{
+ return true;
+}
+
+void
+PhoneApp::OnForeground(void)
+{
+ IEnumerator* pEnum = __listenerList.GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ IAppStateChangeListener* pInterface = static_cast<IAppStateChangeListener*>(pEnum->GetCurrent());
+ if (pInterface == null)
+ {
+ delete pEnum;
+
+ return;
+ }
+ pInterface->OnForeground();
+ }
+ delete pEnum;
+}
+
+void
+PhoneApp::OnBackground(void)
+{
+ IEnumerator* pEnum = __listenerList.GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ IAppStateChangeListener* pInterface = static_cast<IAppStateChangeListener*>(pEnum->GetCurrent());
+ if (pInterface == null)
+ {
+ delete pEnum;
+
+ return;
+ }
+ pInterface->OnBackground();
+ }
+ delete pEnum;
+}
+
+void
+PhoneApp::OnLowMemory(void)
+{
+}
+
+void
+PhoneApp::OnBatteryLevelChanged(BatteryLevel batteryLevel)
+{
+}
+
+void
+PhoneApp::OnScreenOn(void)
+{
+}
+
+void
+PhoneApp::OnScreenOff(void)
+{
+}
+
+bool
+PhoneApp::IsOpenAsAppControl(void)
+{
+ return __isOpenAsAppControl;
+}
+
+SceneId
+PhoneApp::GetInitialScene(void)
+{
+ return __initialSceneId;
+}
+
+void
+PhoneApp::SetInitialScene(SceneId initialSceneId)
+{
+ __initialSceneId = initialSceneId;
+}
+
+IList*
+PhoneApp::GetAppLaunchArguments(void)
+{
+ return __pLaunchArgs;
+}
+
+void
+PhoneApp::OnAppControlRequestReceived(RequestId reqId, const String& operationId, const String* pUriData,
+ const String* pMimeType, const IMap* pExtraData)
+{
+ AppLogDebug("ENTER");
+ //process AppControl parameters
+ ProcessAppControlRequest(reqId, operationId, pExtraData);
+ AppLogDebug("EXIT");
+}
+
+void
+PhoneApp::ProcessAppControlRequest(RequestId reqId, const String& operationId,const IMap* pArgsMap)
+{
+ __pLaunchArgs = null;
+ if(operationId.Equals(OPERATION_ID_CALL,true))
+ {
+ __isOpenAsAppControl = true;
+ if(pArgsMap != null)
+ {
+ bool isIncomingCallRequest = false;
+ String* pKey = new (std::nothrow) String(LAUNCHTYPE);
+ if (pArgsMap->ContainsKey(*pKey) == true)
+ {
+ const String* pValue = static_cast<const String*>(pArgsMap->GetValue(*pKey));
+ if ((pValue != null) && (pValue->Equals(PARAM_ORIGIN_MT, true) == true))
+ {
+ isIncomingCallRequest = true;
+ }
+ }
+ //Check if incoming call request or outgoing call request
+ if(isIncomingCallRequest == true)
+ {
+ HandleIncomingCallAppControlRequest(reqId, pArgsMap);
+ }
+ else
+ {
+ HandleDialCallAppControlRequest(reqId, pArgsMap);
+ }
+ }
+ }
+ else if(operationId.Equals(OPERATION_ID_DIAL,true))
+ {
+ __isOpenAsAppControl = true;
+ HandleDialerAppControlRequest(reqId, pArgsMap);
+ }
+ else if (operationId.Equals(OPERATION_ID_CONFIGURE, true))
+ {
+ __isOpenAsAppControl = true;
+ HandleSettingsAppControlRequest(reqId, pArgsMap);
+ }
+}
+
+void
+PhoneApp::HandleIncomingCallAppControlRequest(RequestId reqId,const IMap* pArgsMap)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ //response message
+ AppCtrlResult appControlResult = APP_CTRL_RESULT_FAILED;
+
+ //call handle
+ String callHandle(L"");
+ String* pKey = new (std::nothrow) String(CALL_HANDLE);
+ if (pArgsMap->ContainsKey(*pKey) == true)
+ {
+ const String* pValue = static_cast<const String*>(pArgsMap->GetValue(*pKey));
+ if (pValue != null)
+ {
+ callHandle.Append(*pValue);
+ }
+ }
+ delete pKey;
+ //contact number
+ String contactNumber(L"");
+ pKey = new (std::nothrow) String(CONTACT_NUMBER);
+ if (pArgsMap->ContainsKey(*pKey) == true)
+ {
+ const String* pContactValue = static_cast<const String*>(pArgsMap->GetValue(*pKey));
+ if (pContactValue != null)
+ {
+ contactNumber.Append(*pContactValue);
+ }
+ }
+ delete pKey;
+ pKey = null;
+
+ //Fetch incoming call details
+ CallPresentationModel* pCallPresentor = CallPresentationModel::GetInstance();
+ CallInfo* pIncomingCall = pCallPresentor->FetchIncomingCallDetailsN(callHandle, contactNumber);
+ if(pIncomingCall != null)
+ {
+ bool isCallRejected = pCallPresentor->CheckIncomingCallToBeRejected(pIncomingCall);
+ if(isCallRejected == false)
+ {
+ //save app launch argument list
+ __pLaunchArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ __pLaunchArgs->Construct(1);
+ __pLaunchArgs->Add(pIncomingCall);
+ if(__initialSceneId.IsEmpty() == true)
+ {
+ __initialSceneId = IDSCN_SCENE_INCOMINGCALL;
+ }
+ else
+ {
+ //App already initialized, goto incoming call form
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_INCOMINGCALL), __pLaunchArgs);
+ __pLaunchArgs = null;
+ }
+ }
+ else
+ {
+ //Show messageBox showing automatic call rejection
+ MessageBox callRejectedInoMsgBox;
+ String msg(L"Call From ");
+ msg.Append(contactNumber);
+ msg.Append(L" Rejected.");
+ callRejectedInoMsgBox.Construct(L"Call Rejected", msg, MSGBOX_STYLE_NONE,1000);
+ int modalResult = 0;
+ // Calls ShowAndWait() : Draws and Shows itself and processes events
+ callRejectedInoMsgBox.ShowAndWait(modalResult);
+
+ //go back to previous scene if App was already running, else exit application.
+ if(__initialSceneId.IsEmpty() == true)
+ {
+ //KEEP "__initialSceneId" as empty and return false from "OnAppInitialized()"
+ AppLog("Terminate Phone Application");
+ }
+ else if (pCallPresentor->GetCurrentCallCount() == 0)
+ {
+ // NOTE: Let the user remain on whatever screen he/she is,
+ // but the framework will bring PhoneApp to foreground.
+ /*pSceneManager->GoForward(ForwardSceneTransition(__initialSceneId), null);*/
+ }
+ }
+ //set success message
+ appControlResult = APP_CTRL_RESULT_SUCCEEDED;
+ }
+ else
+ {
+ __isOpenAsAppControl = false;
+ appControlResult = APP_CTRL_RESULT_FAILED;
+ }
+ AppControlProviderManager::GetInstance()->SendAppControlResult(reqId, appControlResult, null);
+}
+
+void
+PhoneApp::HandleDialerAppControlRequest(RequestId reqId,const IMap* pArgsMap)
+{
+ //start Dial Form
+ if (pArgsMap != null)
+ {
+ String* pKey = new (std::nothrow) String(PARAM_PHONE_NUMBER);
+ if (pArgsMap->ContainsKey(*pKey) == true)
+ {
+ const String* pPhoneValue = static_cast<const String*>(pArgsMap->GetValue(*pKey));
+ if (pPhoneValue != null)
+ {
+ String* tmpStr = new (std::nothrow) String(*pPhoneValue);
+ __pLaunchArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ __pLaunchArgs->Construct();
+ __pLaunchArgs->Add(tmpStr);
+ }
+ }
+ delete pKey;
+ }
+
+ //Check if app is already launched
+ if(__initialSceneId.IsEmpty() == true)
+ {
+ __initialSceneId = IDSCN_DIALER;
+ }
+ else
+ {
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ pSceneManager->GoForward( ForwardSceneTransition(IDSCN_DIALER, SCENE_TRANSITION_ANIMATION_TYPE_NONE,
+ SCENE_HISTORY_OPTION_NO_HISTORY),__pLaunchArgs);
+ __pLaunchArgs = null;
+ }
+ //response message
+ AppControlProviderManager::GetInstance()->SendAppControlResult(reqId, APP_CTRL_RESULT_SUCCEEDED, null);
+}
+
+void
+PhoneApp::HandleDialCallAppControlRequest(RequestId reqId,const IMap* pArgsMap)
+{
+ //response message
+ AppCtrlResult appControlResult = APP_CTRL_RESULT_FAILED;
+
+ if (pArgsMap != null)
+ {
+ String callType(L"");
+ String phoneNumber(L"");
+ //phone number
+ String* pKey = new (std::nothrow) String(PARAM_PHONE_NUMBER);
+ if(pArgsMap->ContainsKey(*pKey) == true)
+ {
+ const String* pPhoneValue = static_cast<const String*>(pArgsMap->GetValue(*pKey));
+ if(pPhoneValue != null)
+ {
+ phoneNumber.Append(*pPhoneValue);
+ }
+ }
+ delete pKey;
+ //call type
+ pKey = new (std::nothrow) String(PARAM_CALL_TYPE);
+ if(pArgsMap->ContainsKey(*pKey) == true)
+ {
+ const String* pCallTypeValue = static_cast<const String*>(pArgsMap->GetValue(*pKey));
+ if(pCallTypeValue != null)
+ {
+ callType.Append(*pCallTypeValue);
+ }
+ }
+ delete pKey;
+ pKey = null;
+
+ //Fetch currently active call count
+ if (callType.IsEmpty() == false
+ && callType.Equals(PARAM_CALL_VALUE_VOICE, false) == true
+ && phoneNumber.IsEmpty() == false)
+ {
+ CallPresentationModel* pCallPresentor = CallPresentationModel::GetInstance();
+ int currentActiveCallCount = pCallPresentor->GetCurrentCallCount();
+ if(currentActiveCallCount <= 1)
+ {
+ //make an outgoing call with given number
+ String* contactTxt = new (std::nothrow) String(phoneNumber);
+ __pLaunchArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ __pLaunchArgs->Construct();
+ __pLaunchArgs->Add(contactTxt);
+ bool isEmergencyCall = pCallPresentor->IsEmergencyNumber(*contactTxt, true);
+
+ SceneId nextScene = IDSCN_SCENE_OUTCALL;
+ if (isEmergencyCall)
+ {
+ nextScene = IDSCN_SCENE_OUT_EMERGENCYCALL;
+ }
+
+ //Check if app was already running
+ if(__initialSceneId.IsEmpty() == true)
+ {
+ //phone App is not already launched
+ __initialSceneId = nextScene;
+ }
+ else
+ {
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ pSceneManager->GoForward( ForwardSceneTransition( nextScene), __pLaunchArgs);
+ }
+ appControlResult = APP_CTRL_RESULT_SUCCEEDED;
+ }
+ else
+ {
+ //already 2 active calls, 3rd call not allowed
+ appControlResult = APP_CTRL_RESULT_CANCELED;
+ }
+ }
+ else
+ {
+ appControlResult = APP_CTRL_RESULT_FAILED;
+ }
+ }
+ //send response message
+ AppControlProviderManager::GetInstance()->SendAppControlResult(reqId, appControlResult, null);
+}
+
+void
+PhoneApp::HandleSettingsAppControlRequest(RequestId reqId,const IMap* pArgsMap)
+{
+ if(__initialSceneId.IsEmpty() == true)
+ {
+ __initialSceneId = IDSCN_SCENE_MAIN_SETTING_MENU;
+ }
+ else
+ {
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MAIN_SETTING_MENU), null);
+ }
+ //send response message
+ AppControlProviderManager::GetInstance()->SendAppControlResult(reqId, APP_CTRL_RESULT_SUCCEEDED, null);
+}
+
+void
+PhoneApp::AddAppStateChangeListener(const IAppStateChangeListener& listener)
+{
+ __listenerList.Add(listener);
+
+}
+void
+PhoneApp::RemoveAppStateChangeListener(const IAppStateChangeListener& listener)
+{
+ __listenerList.Remove(listener);
+}
+
+
--- /dev/null
+//
+// 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 PhnPhoneAppEntry.cpp
+ * @brief Phone Application Entry file
+ */
+#include "PhnPhoneApp.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif // __cplusplus
+
+//
+// The entry function of Tizen application called by the operating system.
+//
+_EXPORT_ int
+OspMain(int argc, char* pArgv[])
+{
+ AppLog("Application started.");
+ ArrayList args(SingleObjectDeleter);
+ args.Construct();
+ for (int i = 0; i < argc; i++)
+ {
+ args.Add(new (std::nothrow) String(pArgv[i]));
+ }
+
+ result r = Tizen::App::UiApp::Execute(PhoneApp::CreateInstance, &args);
+ TryLog(r == E_SUCCESS, "[%s] Application execution failed", GetErrorMessage(r));
+ AppLog("Application finished.");
+
+ return static_cast<int>(r);
+}
+#ifdef __cplusplus
+}
+#endif // __cplusplus
--- /dev/null
+//
+// 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 PhoneAppFrame.cpp
+ * @brief Phone Application Frame
+ */
+#include "PhnPhoneApp.h"
+#include "PhnPhoneAppFrame.h"
+#include "PhnSceneRegister.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Ui::Scenes;
+
+PhoneAppFrame::PhoneAppFrame(void)
+{
+}
+
+PhoneAppFrame::~PhoneAppFrame(void)
+{
+}
+
+result
+PhoneAppFrame::OnInitializing(void)
+{
+ result r = E_FAILURE;
+ PhoneApp* pPhoneApp = static_cast<PhoneApp*>(UiApp::GetInstance());
+ if(pPhoneApp != null && pPhoneApp->GetInitialScene().IsEmpty() == false)
+ {
+ //Initialize factory methods and register all scenes.
+ r = SceneRegister::RegisterAllScenes();
+ TryReturn(r == E_SUCCESS, r , "Scene registration failed");
+
+ //start initial Form
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ r = pSceneManager->GoForward( ForwardSceneTransition(pPhoneApp->GetInitialScene(), SCENE_TRANSITION_ANIMATION_TYPE_NONE,
+ SCENE_HISTORY_OPTION_NO_HISTORY), pPhoneApp->GetAppLaunchArguments());
+ }
+ return r;
+}
+
+result
+PhoneAppFrame::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+ return r;
+}
--- /dev/null
+//
+// 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 FormFactory.cpp
+ * @brief Form factory class
+ */
+#include "PhnPhoneFormFactory.h"
+#include "PhnSceneRegister.h"
+//Call forms
+#include "PhnIncomingCallForm.h"
+#include "PhnActiveCallForm.h"
+#include "PhnConfCallerListForm.h"
+#include "PhnEndCallForm.h"
+//Settings Forms
+#include "PhnSettingsMainMenuForm.h"
+#include "PhnSettingsRejectListForm.h"
+#include "PhnSettingsRejectMsgsForm.h"
+#include "PhnSettingsSpeedDialForm.h"
+#include "PhnSettingsMoreOptionsForm.h"
+#include "PhnSettingsCallStatusTonesForm.h"
+#include "PhnSettingsCallForwardWaitBarrForm.h"
+#include "PhnSettingsAddNumberForm.h"
+#include "PhnSettingsEditRejectMsgForm.h"
+#include "PhnSettingsForwardToNumberForm.h"
+#include "PhnSettingsBarringPwdForm.h"
+#include "PhnSettingsDeleteListForm.h"
+//Dial Forms
+#include "PhnDialAppForm.h"
+#include "PhnLogsDetailForm.h"
+#include "PhnEmergencyDialForm.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+
+
+FormFactory::FormFactory(void)
+{
+}
+
+FormFactory::~FormFactory(void)
+{
+}
+
+Form*
+FormFactory::CreateFormN(const String& formId, const SceneId& sceneId)
+{
+ Form* pNewForm = null;
+
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager != null);
+
+ if (formId == IDL_FORM_DIAL_APP) {
+ DialAppForm* pForm = new (std::nothrow) DialAppForm();
+ pForm->Initialize();
+ //pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ } else if (formId == IDL_FORM_CALL_LOG_DETAIL) {
+ DlLogsDetailForm* pForm = new (std::nothrow) DlLogsDetailForm();
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ } else if(formId == IDL_FORM_EMERGENCY_DIAL)
+ {
+ EmergencyDialForm* pForm = new (std::nothrow) EmergencyDialForm();
+ pForm->Initialize();
+ //pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId.StartsWith(IDL_FORM_SETTINGS_PREFIX,0) == true)
+ {
+ pNewForm = CreateCallSettingsForm(formId, sceneId);
+ }
+ else
+ {
+ pNewForm = CreateVoiceCallForm(formId, sceneId);
+ }
+
+ return pNewForm;
+}
+
+Form*
+FormFactory::CreateVoiceCallForm(const String& formId, const SceneId& sceneId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager != null);
+
+ BaseForm* pNewForm = null;
+
+ if (formId == IDL_FORM_OUTCALL)
+ {
+ ActiveCallForm* pForm = new (std::nothrow) ActiveCallForm(FORMTYPE_OUTGOINGCALL);
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_OUT_EMERGENCYCALL)
+ {
+ ActiveCallForm* pForm = new (std::nothrow) ActiveCallForm(FORMTYPE_EMERGENCYOUTGOINGCALL);
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_ACTIVECALL)
+ {
+ ActiveCallForm* pForm = new (std::nothrow) ActiveCallForm(FORMTYPE_ACTIVECALL);
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_ACTIVE_EMERGENCYCALL)
+ {
+ ActiveCallForm* pForm = new (std::nothrow) ActiveCallForm(FORMTYPE_EMERGENCYACTIVECALL);
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_INCOMINGCALL)
+ {
+ IncomingCallForm* pForm = new (std::nothrow) IncomingCallForm();
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_ENDCALL)
+ {
+ EndCallForm* pForm = new (std::nothrow) EndCallForm();
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_CONFCALLLIST)
+ {
+ ConfCallerListForm* pForm = new (std::nothrow) ConfCallerListForm();
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_MULTIPLEACTIVECALL)
+ {
+ ActiveCallForm* pForm = new (std::nothrow) ActiveCallForm(FORMTYPE_MULTIPLECALLS);
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_CONFCALL)
+ {
+ ActiveCallForm* pForm = new (std::nothrow) ActiveCallForm(FORMTYPE_ACTIVECONFCALL);
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+
+ return pNewForm;
+}
+
+Form*
+FormFactory::CreateCallSettingsForm(const String& formId, const SceneId& sceneId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager != null);
+
+ Form* pNewForm = null;
+
+ if (formId == IDL_FORM_MAIN_SETTING_MENU)
+ {
+ SettingsMainMenuForm* pForm = new (std::nothrow) SettingsMainMenuForm();
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_CALL_REJECTLIST_MENU)
+ {
+ SettingsRejectListForm* pForm = new (std::nothrow) SettingsRejectListForm();
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_CALL_REJECTMSGS_MENU)
+ {
+ SettingsRejectMsgsForm* pForm = new (std::nothrow) SettingsRejectMsgsForm();
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_SPEED_DIAL)
+ {
+ SettingsSpeedDialForm* pForm = new (std::nothrow) SettingsSpeedDialForm();
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_MORE_OPTIONS)
+ {
+ SettingsMoreOptionsForm* pForm = new (std::nothrow) SettingsMoreOptionsForm();
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_CALL_STATUSTONES)
+ {
+ SettingsCallStatusTonesForm* pForm = new (std::nothrow) SettingsCallStatusTonesForm();
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_CALLTYPE_FORWARD)
+ {
+ SettingsCallForwardWaitBarrForm* pForm = new (std::nothrow) SettingsCallForwardWaitBarrForm(
+ SettingsCallForwardWaitBarrForm::FORMTYPE_CALLFORWARDING_TYPE);
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_CALL_FORWARD_OPTIONS)
+ {
+ SettingsCallForwardWaitBarrForm* pForm = new (std::nothrow) SettingsCallForwardWaitBarrForm(
+ SettingsCallForwardWaitBarrForm::FORMTYPE_VOICE_CALLFORWARDING);
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_CALLTYPE_BARRING)
+ {
+ SettingsCallForwardWaitBarrForm* pForm = new (std::nothrow) SettingsCallForwardWaitBarrForm(
+ SettingsCallForwardWaitBarrForm::FORMTYPE_CALLBARRING_TYPE);
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_CALL_BARRING_OPTIONS)
+ {
+ SettingsCallForwardWaitBarrForm* pForm = new (std::nothrow) SettingsCallForwardWaitBarrForm(
+ SettingsCallForwardWaitBarrForm::FORMTYPE_VOICE_CALLBARRING);
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_CALL_WAITING_OPTIONS)
+ {
+ SettingsCallForwardWaitBarrForm* pForm = new (std::nothrow) SettingsCallForwardWaitBarrForm(
+ SettingsCallForwardWaitBarrForm::FORMTYPE_CALL_WAITING);
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_ADD_REJECT_NUMBER)
+ {
+ SettingsAddNumberForm* pForm = new (std::nothrow) SettingsAddNumberForm(SettingsAddNumberForm::FORMTYPE_NUMBER_TO_REJECT);
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_AUTO_AREA_CODE)
+ {
+ SettingsAddNumberForm* pForm = new (std::nothrow) SettingsAddNumberForm(SettingsAddNumberForm::FORMTYPE_AUTO_AREA_CODE);
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_ADD_REJECT_MSG)
+ {
+ SettingsEditRejectMsgForm* pForm = new (std::nothrow) SettingsEditRejectMsgForm(SettingsEditRejectMsgForm::FORMMODE_NEW_MESSAGE);
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_EDIT_REJECT_MSG)
+ {
+ SettingsEditRejectMsgForm* pForm = new (std::nothrow) SettingsEditRejectMsgForm(SettingsEditRejectMsgForm::FORMMODE_EDIT_MESSAGE);
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_FORWARD_TO_NUMBER)
+ {
+ SettingsForwardToNumberForm* pForm = new (std::nothrow) SettingsForwardToNumberForm(SettingsForwardToNumberForm::FORWARDCONDITION);
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_NOREPLY_FORWARD_TO_NUMBER)
+ {
+ SettingsForwardToNumberForm* pForm = new (std::nothrow) SettingsForwardToNumberForm(SettingsForwardToNumberForm::FORWARDCONDITION_NOREPLY);
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_SCENE_SET_BARRING_PWD)
+ {
+ SettingsBarringPwdForm* pForm = new (std::nothrow) SettingsBarringPwdForm();
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_DEL_NUMBER)
+ {
+ SettingsDeleteListForm* pForm = new (std::nothrow) SettingsDeleteListForm(SettingsDeleteListForm::LISTOF_NUMBERS);
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+ else if (formId == IDL_FORM_DEL_MESSAGE)
+ {
+ SettingsDeleteListForm* pForm = new (std::nothrow) SettingsDeleteListForm(SettingsDeleteListForm::LISTOF_MESSAGES);
+ pForm->Initialize();
+ pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ pNewForm = pForm;
+ }
+
+ return pNewForm;
+}
--- /dev/null
+//
+// 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 PhnRetrieveSuggestionsTasks.cpp
+ * @brief RetrieveContactsListTask class
+ */
+#include "PhnAppUtility.h"
+#include "PhnCalllogManager.h"
+#include "PhnCommonUtils.h"
+#include "PhnDialContactInfo.h"
+#include "PhnRetrieveSuggestionsTasks.h"
+#include "PhnSettingsManager.h"
+#include "PhnTypes.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Social;
+
+
+RetrieveContactsListTask::RetrieveContactsListTask(ISuggestionsRetrievedEventListener& pEventListener)
+ : __pEventListener(pEventListener), __pContactsList(null), __pNumberStr(null)
+{
+}
+
+RetrieveContactsListTask::~RetrieveContactsListTask()
+{
+ if(__pNumberStr)
+ {
+ delete __pNumberStr;
+ }
+ if (__pAddressBook != null)
+ {
+ delete __pAddressBook;
+ }
+}
+
+result
+RetrieveContactsListTask::Construct(String& searchString,const IList* oldSearchResults)
+{
+ result r = E_SUCCESS;
+
+ __pAddressBook = new (std::nothrow) Addressbook();
+ r = __pAddressBook->Construct();
+ TryCatch (r == E_SUCCESS,, "AddressBook.Contruct() failed");
+ //new search string and result list
+ __pNumberStr = new (std::nothrow) String(searchString);
+ __pContactsList = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ r = __pContactsList->Construct();
+ TryCatch (r == E_SUCCESS,,"ArrayList.Contruct() failed");
+
+ //Copy old search result, if available
+ if(oldSearchResults != null)
+ {
+ IEnumerator* pOldResultsEnum = oldSearchResults->GetEnumeratorN();
+ while(pOldResultsEnum->MoveNext() == E_SUCCESS)
+ {
+ DialContactInfo* pContactInfo = (static_cast<DialContactInfo*>(pOldResultsEnum->GetCurrent()))->CloneN();
+ if(pContactInfo != null)
+ {
+ __pContactsList->Add(pContactInfo);
+ }
+ }
+ delete pOldResultsEnum;
+ }
+
+ return r;
+
+CATCH:
+ delete __pAddressBook;
+ delete __pNumberStr;
+ delete __pContactsList;
+ return r;
+}
+
+Object*
+RetrieveContactsListTask::Run(void)
+{
+ //check if this is a new search
+ if(__pContactsList != null && __pContactsList->GetCount() > 0)
+ {
+ //filter out suggestion list
+ UpdateSuggestionList();
+ }
+ else
+ {
+ //search for Speed dial number -> 1st Priority in Result List.
+ SearchSpeedDialForNumberN();
+
+ if(__pNumberStr->GetLength() > 0)
+ {
+ //searches contacts by name -> 2nd Priority in result list
+ SearchContactsForName();
+ //Searches contacts by number -> 3rd Priority in result list
+ SearchContactsForNumber();
+ }
+ //TODO: Search logs by number - Last Priority in the list
+ //Only Unknown Numbers are added, since known numbers will be added from above searches
+ /*SearchCallLogsForNumber();*/
+ }
+
+ //Inform listener about search completion.
+ __pEventListener.HandleContactsRetrievalCompleted(__pContactsList);
+ __pContactsList = null;
+ return null;
+}
+
+void
+RetrieveContactsListTask::UpdateSuggestionList(void)
+{
+ //search through each list to filter out suggestions not matching new search string.
+ for (int index = 0; index < __pContactsList->GetCount(); index++)
+ {
+ DialContactInfo* pContact = static_cast<DialContactInfo*>(__pContactsList->GetAt(index));
+ if(pContact == null)
+ {//goto next record
+ continue;
+ }
+ //Fetch search key list
+ IList* pKeyList = pContact->GetSearchKeyList();
+ int nextKey = 0;
+ while(nextKey < pKeyList->GetCount())
+ {
+ bool isRemoveKey = false;
+ //search for Speed dial
+ String* keyWord = static_cast<String*>(pKeyList->GetAt(nextKey));
+ if(keyWord->Equals(String(IDS_SPEED_DIAL_SEARCH_KEY)) == true && __pNumberStr->GetLength() > 1)
+ {
+ isRemoveKey = true;
+ }
+ else if((__pNumberStr->GetLength() > 0) && (DialUtil::IsNumericString(*keyWord) == true))
+ {
+ //search for number - update list
+ if (pContact->GetPhoneNumber().Contains(*__pNumberStr) == false)
+ {
+ isRemoveKey = true;
+ }
+ else
+ {
+ //update search keys.
+ pContact->ReplaceSearchKey(nextKey, *__pNumberStr);
+ }
+ }
+ else
+ {
+ //search For name
+ //substring of contact name to match
+ String subName;
+ //numeric keys typed, equivalent to above 'subName'.
+ String numericKey;
+ String contactName = pContact->GetDisplayName();
+ contactName.SubString(0,__pNumberStr->GetLength(),subName);
+ DialUtil::ConvertNameToNumericKeys(subName,numericKey);
+ if(numericKey.Equals(*__pNumberStr) == true)
+ {
+ //update search keys.
+ pContact->ReplaceSearchKey(nextKey, subName);
+ }
+ else
+ {
+ isRemoveKey = true;
+ }
+ }
+
+ //remove previous search key, as updated key did'nt match.
+ if(isRemoveKey == true)
+ {
+ pContact->RemoveSearchKey(nextKey);
+ }
+ else
+ {
+ nextKey++;
+ }
+ }
+
+ //Add to contacts list to be removed
+ if(pKeyList->GetCount() <= 0)
+ {
+ __pContactsList->RemoveAt(index);
+ index--;
+ }
+ }
+
+ //Need to sort arraylist according to latest search keys.
+ if(__pContactsList->GetCount() > 0)
+ {
+ SuggestionListComparer* pComparer = new (std::nothrow) SuggestionListComparer();
+ __pContactsList->Sort(*pComparer);
+ delete pComparer;
+ }
+ else
+ {
+ //remove old search key
+ delete __pNumberStr;
+ __pNumberStr = null;
+ }
+}
+
+void
+RetrieveContactsListTask::SearchContactsForNumber(void)
+{
+ //Searches contacts by (part of)phone number.
+ IList* pResultList = __pAddressBook->SearchContactsByPhoneNumberN(*__pNumberStr);
+ if(pResultList != null && pResultList->GetCount() > 0)
+ {
+ SaveContactsToListByNumber(*pResultList, *__pNumberStr);
+ pResultList->RemoveAll(true);
+ }
+ delete pResultList;
+}
+
+void
+RetrieveContactsListTask::SearchContactsForName(void)
+{
+ // If phoneNumber: "23" -> Possible string matches -> 9.
+ // It is much better to do first 3(2=A,B,C) search in 1000 fields(in database), and
+ // subsequent 9 searches in locally stored array of fewer records.
+ // then to 9 search searches in 1000 fields(in database).
+
+ //Fetch matching names for mapping char for first digit, e.g. 2->ABC, 3->DEF.
+ int digit = 0;
+ String strDigit;
+ __pNumberStr->SubString(0,1,strDigit);
+ Integer::Parse(strDigit,digit);
+ IList* pNamesList = DialUtil::FetchPossibleNamesListN(L"",digit);
+ if (pNamesList != null)
+ {
+ int totalMatches = pNamesList->GetCount();
+ for (int index = 0; index < totalMatches; index++)
+ {
+ //Search All names that start with single character
+ String* searchKey = static_cast<String*>(pNamesList->GetAt(index));
+ SearchContactsWithInitialChar(*searchKey);
+ }
+ pNamesList->RemoveAll();
+ delete pNamesList;
+ }
+}
+
+void
+RetrieveContactsListTask::SearchContactsWithInitialChar(String& searchStr)
+{
+ //search for contacts which contains 'searchStr' anywhere in displayName.
+ IList* pResultList = __pAddressBook->SearchContactsByNameN(searchStr);
+ //Check if empty list.
+ if(pResultList == null || pResultList->GetCount() <= 0)
+ {
+ delete pResultList;
+ return;
+ }
+
+ //further filter out result list - save contacts starting with 'searchStr'.
+ ArrayList* pDialInfoList = new (std::nothrow) ArrayList();
+ pDialInfoList->Construct();
+
+ for(int index = 0; index < pResultList->GetCount(); index++)
+ {
+ Contact* pContact = static_cast<Contact*>(pResultList->GetAt(index));
+ //Check if display name starts with search string
+ String contactName;
+ result r = pContact->GetValue(CONTACT_PROPERTY_ID_DISPLAY_NAME, contactName);
+ if ((r == E_SUCCESS) && (contactName.StartsWith(searchStr, 0) == true))
+ {
+ //substring of contact name to match
+ String subName;
+ //numeric keys typed, equivalent to above 'subName'.
+ String numericKey;
+ contactName.SubString(0,__pNumberStr->GetLength(),subName);
+ DialUtil::ConvertNameToNumericKeys(subName,numericKey);
+ if(numericKey.Equals(*__pNumberStr) == true)
+ {
+ DialContactInfo* pDialInfo = ConvertToDialContactN(*pContact,subName);
+ if(pDialInfo != null)
+ {
+ pDialInfoList->Add(*pDialInfo);
+ }
+ }
+ }
+ }
+ pResultList->RemoveAll(true);
+ delete pResultList;
+
+ //save list
+ if(pDialInfoList->GetCount() > 0 && __pContactsList != null)
+ {
+ //remove duplicate items
+ pDialInfoList->RemoveItems(*__pContactsList,true);
+ //Add all distinct item to list
+ __pContactsList->AddItems(*pDialInfoList);
+ //remove ownership for all items.
+ pDialInfoList->RemoveAll();
+ }
+ delete pDialInfoList;
+}
+
+void
+RetrieveContactsListTask::SearchSpeedDialForNumberN(void)
+{
+ //Check if only 1 digit number
+ if(__pNumberStr->GetLength() != 1)
+ {
+ return;
+ }
+ //convert to speed dial rowId
+ int rowId;
+ Integer::Parse(*__pNumberStr, rowId);
+ if (rowId < 2 || rowId > 9)
+ {
+ return;
+ }
+
+ //Fetch matched speed dial contact number
+ SettingsManager* pSettingsManager = SettingsManager::GetInstance();
+ String* contactNo = pSettingsManager->GetMappedSpeedDialNumberN(rowId);
+ if (contactNo == null)
+ {
+ return;
+ }
+
+ //Fetch Contact for phoneNumber
+ IList* pContactList = __pAddressBook->SearchContactsByPhoneNumberN(*contactNo);
+ if (pContactList != null)
+ {
+ IEnumerator* pContactsEnum = pContactList->GetEnumeratorN();
+ while (pContactsEnum->MoveNext() == E_SUCCESS)
+ {
+ Contact* pContact = static_cast<Contact*>(pContactsEnum->GetCurrent());
+ if(pContact != null)
+ {
+ //save to HashMap - ownership transferred of key-value pair.
+ DialContactInfo* pDialContact = ConvertToDialContactN(*pContact,*contactNo);
+ if(pDialContact != null)
+ {
+ IList* keyList = pDialContact->GetSearchKeyList();
+ keyList->SetAt(*(new String(IDS_SPEED_DIAL_SEARCH_KEY)),(keyList->GetCount()-1), true);
+ __pContactsList->Add(pDialContact);
+ }
+ }
+ }
+
+ //free resources
+ delete pContactsEnum;
+ pContactList->RemoveAll(true);
+ delete pContactList;
+ }
+ delete contactNo;
+}
+
+/*void
+RetrieveContactsListTask::SearchCallLogsForNumber(void)
+{
+ //conversion "contactNumber" to char*
+ const wchar_t* pContact = __pNumberStr->GetPointer();
+ int len = __pNumberStr->GetLength()+1;
+ char* pNumber = new (std::nothrow) char[len];
+ wcstombs(pNumber, pContact, len);
+
+ //fetch Unknown numbers from Call logs Manager containing search string.
+ HashMapT<int, CallLogDetails>* pLogsByNumber = CallLogManager::GetInstance()->GetCallogListByUnknownNumberFromDatabaseN(pNumber);
+ if(pLogsByNumber != null)
+ {
+ IListT<CallLogDetails>* logDetailsList = pLogsByNumber->GetValuesN();
+ if(logDetailsList != null)
+ {
+ //Convert to DialContacts
+ for(int index=0;index<logDetailsList->GetCount();index++)
+ {
+ CallLogDetails logDetails;
+ result r = logDetailsList->GetAt(index,logDetails);
+ if(r == E_SUCCESS)
+ {
+ DialContactInfo* pDialContact = ConvertLogDetailsToDialContactN(logDetails);
+ if(pDialContact != null)
+ {
+ if((__pContactsList->GetCount() <= 0) || (__pContactsList->Contains(*pDialContact) == false))
+ {
+ //Add only 'unknown' number to Map
+ __pContactsList->Add(pDialContact);
+ }
+ else
+ {
+ delete pDialContact;
+ pDialContact = null;
+ }
+ }
+ }
+ }
+ delete logDetailsList;
+ }
+ delete pLogsByNumber;
+ }
+}*/
+
+void
+RetrieveContactsListTask::SaveContactsToListByNumber(IList& saveList, String& matchedString)
+{
+ if(__pContactsList != null)
+ {
+ //List of contacts to be saved
+ for (int index = 0; index < saveList.GetCount(); index++)
+ {
+ Contact* pContact = static_cast<Contact*>(saveList.GetAt(index));
+ DialContactInfo* pDialContact = ConvertToDialContactN(*pContact, matchedString);
+ if (pDialContact != null)
+ {
+ //check if already present
+ int foundItemIndex;
+ if (__pContactsList->IndexOf(*pDialContact, foundItemIndex) != E_SUCCESS)
+ {
+ //save new mapping
+ __pContactsList->Add(pDialContact);
+ }
+ else
+ {
+ //Add search key to existing list
+ DialContactInfo* pExistingInfo = static_cast<DialContactInfo*>(__pContactsList->GetAt( foundItemIndex));
+ if (pExistingInfo != null)
+ {
+ pExistingInfo->AddSearchKey(*(pDialContact->GetSearchKey()));
+ }
+ delete pDialContact;
+ }
+ }
+ }
+ }
+}
+
+DialContactInfo*
+RetrieveContactsListTask::ConvertToDialContactN(Contact& contact, String& matchedString)
+{
+ result r = E_FAILURE;
+
+ //display name
+ String displayName;
+ r = contact.GetValue(CONTACT_PROPERTY_ID_DISPLAY_NAME, displayName);
+ TryReturn(r == E_SUCCESS,null,"Display name not available");
+
+ //phone number
+ String phoneNumber(L"");
+ IList* pNumberList = contact.GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
+ if(pNumberList == null || pNumberList->GetCount() <= 0)
+ {
+ delete pNumberList;
+ return null;
+ }
+
+ if(DialUtil::IsNumericString(matchedString) == true)
+ {
+ //this contact searched by phone number
+ IEnumerator* pPhoneEnum = pNumberList->GetEnumeratorN();
+ while (E_SUCCESS == pPhoneEnum->MoveNext())
+ {
+ PhoneNumber* pPhoneNumber = (PhoneNumber*) pPhoneEnum->GetCurrent();
+ //Check if this is the correct contact
+ if (pPhoneNumber->GetPhoneNumber().Contains(matchedString) == true)
+ {
+ phoneNumber.Append(pPhoneNumber->GetPhoneNumber());
+ break;
+ }
+ }
+ delete pPhoneEnum;
+ }
+ else
+ {
+ //this contact searched by name
+ PhoneNumber* pContactNo = static_cast<PhoneNumber*>(pNumberList->GetAt(0));
+ phoneNumber.Append(pContactNo->GetPhoneNumber());
+ }
+ pNumberList->RemoveAll(true);
+ delete pNumberList;
+ pNumberList = null;
+ TryReturn((phoneNumber.IsEmpty() == false), null, "No matching phone number found");
+
+ DialContactInfo* pDialContact = new (std::nothrow) DialContactInfo();
+ pDialContact->AddSearchKey(matchedString);
+ pDialContact->SetPhoneNumber(phoneNumber);
+ pDialContact->SetDisplayName(displayName);
+
+ //Check if Thumbnail is present
+ Bitmap* pThumbnail = contact.GetThumbnailN();
+ if(pThumbnail != null)
+ {
+ pDialContact->SetThumbnail(pThumbnail);
+ }
+ return pDialContact;
+}
+
+/*DialContactInfo*
+RetrieveContactsListTask::ConvertLogDetailsToDialContactN(CallLogDetails& logDetails)
+{
+ DialContactInfo* pDialContact = new (std::nothrow) DialContactInfo();
+ String emptyDisplayName(L"");
+ pDialContact->SetDisplayName(emptyDisplayName);
+ //call log db id
+ pDialContact->SetCallLogDbId(logDetails.GetCalllogDbId());
+
+ String phoneNumber(logDetails.GetPhoneNumber());
+ pDialContact->SetPhoneNumber(phoneNumber);
+ pDialContact->AddSearchKey(*__pNumberStr);
+ return pDialContact;
+}*/
+
+///////////////////////////////////////////////
+// SuggestionListComparer Implementation //////
+///////////////////////////////////////////////
+result
+SuggestionListComparer::Compare(const Object& objRef1, const Object& objRef2, int& cmpResult) const
+{
+ result r = E_INVALID_ARG;
+
+ //Check if both object are of type 'DialContactInfo'
+ DialContactInfo* pDialInfo1 = dynamic_cast<DialContactInfo*>(const_cast<Object*>(&objRef1));
+ DialContactInfo* pDialInfo2 = dynamic_cast<DialContactInfo*>(const_cast<Object*>(&objRef2));
+ if((pDialInfo1 == null) || (pDialInfo2 == null))
+ {
+ return r;
+ }
+ r = E_SUCCESS;
+
+ //Rules for comparison:-
+ //Priority 1 - show contacts for Speed dial.
+ //Priority 2 - show contacts searched by Name from Contacts.
+ //Priority 3 - show contacts searched by Number from Contacts.
+ //Priority 4 - show contacts searched by Number from Logs.
+
+ //Fetch initial search keys for both objects
+ String displayName1 = pDialInfo1->GetDisplayName();
+ String* searchKey1 = pDialInfo1->GetSearchKey();
+ bool isNumericKey1 = DialUtil::IsNumericString(*searchKey1);
+
+ String displayName2 = pDialInfo2->GetDisplayName();
+ String* searchKey2 = pDialInfo2->GetSearchKey();
+ bool isNumericKey2 = DialUtil::IsNumericString(*searchKey2);
+
+ //via Speed Dial
+ if(searchKey1->Equals(String(IDS_SPEED_DIAL_SEARCH_KEY)))
+ {
+ cmpResult = 1;//objRef1 is searched via Speed Dial
+ return r;
+ }
+ else if (searchKey2->Equals(String(IDS_SPEED_DIAL_SEARCH_KEY)))
+ {
+ cmpResult = -1;//objRef2 via Speed Dial
+ return r;
+ }
+
+ //via Logs
+ if((displayName1.IsEmpty() == false) && (displayName2.IsEmpty() == true))
+ {
+ cmpResult = -1;//objRef1 NOT via Logs, objRef2 via Logs
+ return r;
+ }
+ else if((displayName1.IsEmpty() == true) && (displayName2.IsEmpty() == false))
+ {
+ cmpResult = 1;//objRef2 NOT via Logs, objRef1 via Logs
+ return r;
+ }
+ else if((displayName1.IsEmpty() == true) && (displayName2.IsEmpty() == true))
+ {
+ //Both via Logs - keep the same ordering as shown in logs.
+ cmpResult = (pDialInfo2->GetCallLogDbId() - pDialInfo1->GetCallLogDbId());
+ return r;
+ }
+
+ //If control comes here, it means both Objects are fetched from Contacts.
+ //Here, priority is first Names than Numbers
+ if((isNumericKey1 == false) && (isNumericKey2 == true))
+ {
+ cmpResult = -1;//objRef1 via name and objRef2 via number
+ return r;
+ }
+ else if((isNumericKey2 == false) && (isNumericKey1 == true))
+ {
+ cmpResult = 1;//objRef2 via name and objRef1 via number
+ return r;
+ }
+ else if((isNumericKey1 == false) && (isNumericKey2 == false))
+ {
+ //Both searched via name - sort by alphabetic ordering of search key.
+ cmpResult = searchKey1->CompareTo(*searchKey2);
+ return r;
+ }
+ else
+ {
+ //Both searched via number - keep current ordering as fetched from contacts.
+ cmpResult = pDialInfo1->GetPhoneNumber().CompareTo(pDialInfo2->GetPhoneNumber());
+ return r;
+ }
+
+ return E_SUCCESS;
+}
--- /dev/null
+//
+// 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 PhnSceneRegister.cpp
+ * @brief Scene register file
+ */
+#include <FUi.h>
+#include "PhnSceneRegister.h"
+#include "PhnPhoneFormFactory.h"
+#include "PhnPanelFactory.h"
+#include "PhnTypes.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+
+SceneRegister::SceneRegister(void)
+{
+}
+
+SceneRegister::~SceneRegister(void)
+{
+}
+
+result
+SceneRegister::RegisterAllScenes(void)
+{
+ result r = E_SUCCESS;
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager != null);
+
+ //Register factory methods for form & panel creation
+ static FormFactory formFactory;
+ static PanelFactory panelFactory;
+ r |= pSceneManager->RegisterFormFactory(formFactory);
+ r |= pSceneManager->RegisterPanelFactory(panelFactory);
+
+ //register all scenes
+ r |= pSceneManager->RegisterScene(IDSCN_DIALER, IDL_FORM_DIAL_APP, PANEL_DIALER);
+ r |= pSceneManager->RegisterScene(IDSCN_CALL_LOG, IDL_FORM_DIAL_APP, PANEL_LOGS);
+ r |= pSceneManager->RegisterScene(IDSCN_CALL_LOG_DETAILS, IDL_FORM_CALL_LOG_DETAIL, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_EMERGENCY_DIAL, IDL_FORM_EMERGENCY_DIAL, L"");
+
+ //Voice Call Scenes
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_OUTCALL, IDL_FORM_OUTCALL, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_OUT_EMERGENCYCALL, IDL_FORM_OUT_EMERGENCYCALL, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_ACTIVECALL, IDL_FORM_ACTIVECALL, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_ACTIVE_EMERGENCYCALL, IDL_FORM_ACTIVE_EMERGENCYCALL, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_MULTIPLEACTIVECALL, IDL_FORM_MULTIPLEACTIVECALL, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_INCOMINGCALL, IDL_FORM_INCOMINGCALL, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_CONFCALL, IDL_FORM_CONFCALL, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_CONFCALLLIST, IDL_FORM_CONFCALLLIST, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_ENDCALL, IDL_FORM_ENDCALL, L"");
+ //Call Settings Scenes
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_MAIN_SETTING_MENU, IDL_FORM_MAIN_SETTING_MENU, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_CALL_REJECTLIST_MENU, IDL_FORM_CALL_REJECTLIST_MENU, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_CALL_REJECTMSGS_MENU, IDL_FORM_CALL_REJECTMSGS_MENU, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_SPEED_DIAL, IDL_FORM_SPEED_DIAL, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_MORE_OPTIONS, IDL_FORM_MORE_OPTIONS, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_CALL_STATUSTONES, IDL_FORM_CALL_STATUSTONES, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_CALLTYPE_FORWARD, IDL_FORM_CALLTYPE_FORWARD, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_CALL_FORWARD_OPTIONS, IDL_FORM_CALL_FORWARD_OPTIONS, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_CALLTYPE_BARRING, IDL_FORM_CALLTYPE_BARRING, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_CALL_BARRING_OPTIONS, IDL_FORM_CALL_BARRING_OPTIONS, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_CALL_WAITING_OPTIONS, IDL_FORM_CALL_WAITING_OPTIONS, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_ADD_REJECT_NUMBER, IDL_FORM_ADD_REJECT_NUMBER, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_AUTO_AREA_CODE, IDL_FORM_AUTO_AREA_CODE, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_ADD_REJECT_MSG, IDL_FORM_ADD_REJECT_MSG, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_EDIT_REJECT_MSG, IDL_FORM_EDIT_REJECT_MSG, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_FORWARD_TO_NUMBER, IDL_FORM_FORWARD_TO_NUMBER, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_NOREPLY_FORWARD_TO_NUMBER, IDL_FORM_NOREPLY_FORWARD_TO_NUMBER, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_SET_BARRING_PWD, IDL_FORM_SCENE_SET_BARRING_PWD, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_DEL_NUMBER, IDL_FORM_DEL_NUMBER, L"");
+ r |= pSceneManager->RegisterScene(IDSCN_SCENE_DEL_MESSAGE, IDL_FORM_DEL_MESSAGE, L"");
+
+ return r;
+}
--- /dev/null
+//
+// 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 PhnSettingsAddNumberForm.cpp
+ * @brief Add Number form
+ */
+#include <FApp.h>
+#include "PhnAppUtility.h"
+#include "PhnTypes.h"
+#include "PhnSettingsAddNumberForm.h"
+#include "PhnSettingsConstants.h"
+#include "PhnSettingsPresentationModel.h"
+#include "PhnSceneRegister.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Social;
+
+static const wchar_t* IDL_SETTINGS_ADD_NUMBER_FORM = L"IDL_SETTINGS_ADD_NUMBER_FORM";
+static const wchar_t* IDL_SETTINGS_AUTO_AREA_CODE_FORM = L"IDL_SETTINGS_AUTO_AREA_CODE_FORM";
+static const wchar_t* IDS_ALREADY_USED_MSG = L"IDS_ALREADY_USED_MSG";
+
+SettingsAddNumberForm::SettingsAddNumberForm(FormType formType)
+ : __formType(formType)
+ , __selectedCriteria(CRITERIAOPTIONS_EXACT)
+ , __isCriteriaOptionsMenuExpanded(false)
+ , __activePrefixDialingNumber(L"")
+ , __isContactAppControlLaunched(false)
+{
+}
+
+SettingsAddNumberForm::~SettingsAddNumberForm(void)
+{
+}
+
+void
+SettingsAddNumberForm::Initialize(void)
+{
+ switch (__formType)
+ {
+ case FORMTYPE_NUMBER_TO_REJECT:
+ {
+ Construct(IDL_SETTINGS_ADD_NUMBER_FORM);
+ }
+ break;
+
+ case FORMTYPE_AUTO_AREA_CODE:
+ {
+ Construct(IDL_SETTINGS_AUTO_AREA_CODE_FORM);
+ }
+ break;
+ }
+}
+
+result
+SettingsAddNumberForm::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+ //Initialize Header
+ InitializeHeader();
+ //Initialize table view
+ r = InitializeGroupedTableView();
+ TryReturn(r == E_SUCCESS,r,"GroupedTableView initialization failed");
+ //Initialize numeric edit field
+ InitializeNumberEditField();
+ return r;
+}
+
+void
+SettingsAddNumberForm::InitializeHeader(void)
+{
+ Header* pHeader = GetHeader();
+ if (pHeader != null)
+ {
+ //'Save' item
+ String saveItemName;
+ saveItemName.Append(AppUtility::GetResourceString(IDS_SETTING_SAVE_HEADER_ITEM));
+ ButtonItem saveHeaderItem;
+ saveHeaderItem.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_SAVE_HEADER_ITEMID);
+ saveHeaderItem.SetText(saveItemName);
+ pHeader->SetButton(BUTTON_POSITION_LEFT, saveHeaderItem);
+ pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, false);
+
+ //'Cancel' item
+ ButtonItem cancelHeaderItem;
+ cancelHeaderItem.Construct(BUTTON_ITEM_STYLE_ICON, IDA_CANCEL_HEADER_ITEMID);
+ Bitmap* pNormalBmp = AppUtility::GetBitmapFromResourcesN(IDB_BACK_HEADER_ITEM);
+ Bitmap* pPressBmp = AppUtility::GetBitmapFromResourcesN(IDB_BACK_HEADER_ITEM_PRESSED);
+ cancelHeaderItem.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pNormalBmp);
+ cancelHeaderItem.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pPressBmp);
+ pHeader->SetButton(BUTTON_POSITION_RIGHT, cancelHeaderItem);
+ delete pNormalBmp;
+ delete pPressBmp;
+
+ pHeader->AddActionEventListener(*this);
+ }
+}
+
+result
+SettingsAddNumberForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+ return r;
+}
+
+void
+SettingsAddNumberForm::OnActionPerformed(const Control& source, int actionId)
+{
+ switch (actionId)
+ {
+ case IDA_CANCEL_HEADER_ITEMID:
+ {
+ GoBackToPreviousForm();
+ }
+ break;
+
+ case IDA_SAVE_HEADER_ITEMID:
+ {
+ SettingsPresentationModel* pSettingsPresentor = SettingsPresentationModel::GetInstance();
+ String editFieldNumber;
+ EditField* pEditFieldNumber = static_cast<EditField*>(GetControl(IDC_NUMBER_EDITFIELD));
+ if ((pEditFieldNumber != null) && (pEditFieldNumber->GetTextLength() != 0))
+ {
+ editFieldNumber.Append(pEditFieldNumber->GetText());
+ }
+ //handle save
+ switch (__formType)
+ {
+ case FORMTYPE_NUMBER_TO_REJECT:
+ {
+ if(editFieldNumber.IsEmpty() == false)
+ {
+ CallRejectMatchCondition matchCondition = (CallRejectMatchCondition)(__selectedCriteria + 1);
+ //todo: call update if in edit mode
+ result r = pSettingsPresentor->AddToCallRejectList(editFieldNumber, matchCondition);
+ if(r == E_OBJ_ALREADY_EXIST)
+ {
+ //Show error message box and go back to previous screen
+ String msg(L"");
+ msg.Append(editFieldNumber);
+ msg.Append(L" (");
+ msg.Append(FetchTextForCriteria(__selectedCriteria));
+ msg.Append(L") ");
+ msg.Append(AppUtility::GetResourceString(IDS_ALREADY_USED_MSG));
+ ShowDuplicateErrorMessageBox(msg);
+ }
+ GoBackToPreviousForm();
+ }
+ }
+ break;
+
+ case FORMTYPE_AUTO_AREA_CODE:
+ {
+ if(editFieldNumber.IsEmpty() == false)
+ {
+ result r = pSettingsPresentor->SetPrefixDialNumber(0, editFieldNumber);
+ if (r == E_SUCCESS)
+ {
+ pSettingsPresentor->SetActivePrefixDialingValue(0);
+ pSettingsPresentor->SetPrefixDialingStatus(true);
+ }
+ }
+ else
+ {
+ pSettingsPresentor->SetPrefixDialingStatus(false);
+ }
+ GoBackToPreviousForm();
+ }
+ break;
+ }
+ }
+ break;
+
+ case IDA_SELECT_CONTACT:
+ {
+ LaunchContactsAppControl();
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+void
+SettingsAddNumberForm::ShowDuplicateErrorMessageBox(String& message)
+{
+ // Creates an instance of MessageBox
+ MessageBox duplicateMsgBox;
+ duplicateMsgBox.Construct(L"", message, MSGBOX_STYLE_NONE, 2000);
+
+ int modalResult = 0;
+ // Calls ShowAndWait() : Draws and Shows itself and processes events
+ duplicateMsgBox.ShowAndWait(modalResult);
+}
+
+void
+SettingsAddNumberForm::LaunchContactsAppControl(void)
+{
+ if (__isContactAppControlLaunched == true)
+ {
+ //app control already launched.
+ return;
+ }
+ //launch app control
+ __isContactAppControlLaunched = true;
+ result r = E_SUCCESS;
+ HashMap extraData;
+ extraData.Construct();
+
+ extraData.Add(new (std::nothrow) String(SELECTION_MODE), new (std::nothrow) String(SELECTION_MODE_SINGLE));
+ extraData.Add(new (std::nothrow) String(RETURN_TYPE), new (std::nothrow) String(RETURN_TYPE_PHONE));
+
+ AppControl* pAc = AppManager::FindAppControlN(PROVIDER_ID_CONTACTS, OPERATION_ID_PICK);
+ if (pAc != null)
+ {
+ r = pAc->Start(null, null, &extraData, this);
+ if(r != E_SUCCESS)
+ {
+ //app control request failed.
+ __isContactAppControlLaunched = false;
+ }
+ delete pAc;
+ }
+ extraData.RemoveAll(true);
+}
+
+void
+SettingsAddNumberForm::OnAppControlCompleteResponseReceived(const AppId& appId, const String& operationId, AppCtrlResult appControlResult, const IMap* pExtraData)
+{
+ if (appId.Equals(String(PROVIDER_ID_CONTACTS)) && operationId.Equals(String(OPERATION_ID_PICK)))
+ {
+ //app control request completed.
+ __isContactAppControlLaunched = false;
+ //check if request was successful.
+ if (appControlResult == APP_CTRL_RESULT_SUCCEEDED)
+ {
+ const String* rettype = static_cast<const String *>(pExtraData->GetValue( String(RETURN_TYPE)));
+ if (rettype->Equals(String(RETURN_TYPE_PHONE),false))
+ {
+ const String* pPickResult = static_cast<const String *>(pExtraData->GetValue( String(RETURN_KEY_VALUE)));
+ if (pPickResult != null && pPickResult->IsEmpty() == false)
+ {
+ EditField* pEditFieldNumber = static_cast<EditField*>(GetControl(IDC_NUMBER_EDITFIELD));
+ Header* pHeader = GetHeader();
+ if (pEditFieldNumber != null && pHeader != null)
+ {
+ pEditFieldNumber->SetText(*pPickResult);
+ pEditFieldNumber->Invalidate(true);
+ //enable "save" button
+ pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, true);
+ pHeader->Invalidate(true);
+ }
+ }
+ }
+ }
+ }
+}
+
+void
+SettingsAddNumberForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
+{
+ EditField* pEditFieldNumber = static_cast<EditField*>(GetControl(IDC_NUMBER_EDITFIELD));
+ if (pEditFieldNumber != null)
+ {
+ //clear edit field
+ pEditFieldNumber->Clear();
+ pEditFieldNumber->SetFocus();
+ }
+ __isContactAppControlLaunched = false;
+
+ //disable "save" button
+ Header* pHeader = GetHeader();
+ if (pHeader != null)
+ {
+ pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, false);
+ }
+
+ switch (__formType)
+ {
+ case FORMTYPE_NUMBER_TO_REJECT:
+ {
+ __selectedCriteria = CRITERIAOPTIONS_EXACT;
+ //set default item as checked
+ GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ if (pMainMenuTableView != null)
+ {
+ //by default, "exact match" option is selected
+ pMainMenuTableView->SetItemChecked(GROUP_CRITERIA_OPTIONS, __selectedCriteria, true);
+ //un-check all other items
+ pMainMenuTableView->SetItemChecked(GROUP_CRITERIA_OPTIONS, CRITERIAOPTIONS_STARTSWITH, false);
+ pMainMenuTableView->SetItemChecked(GROUP_CRITERIA_OPTIONS, CRITERIAOPTIONS_ENDSWITH, false);
+ pMainMenuTableView->SetItemChecked(GROUP_CRITERIA_OPTIONS, CRITERIAOPTIONS_INCLUDE, false);
+
+ pMainMenuTableView->RefreshItem(GROUP_SELECT_CRITERIA, SELECTCRITERIA_MATCH_CRITERIA, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ pMainMenuTableView->Invalidate(true);
+ }
+ }
+ break;
+
+ case FORMTYPE_AUTO_AREA_CODE:
+ {
+ __activePrefixDialingNumber.Clear();
+ //Fetch active prefix
+ SettingsPresentationModel* pSettingsPresentor = SettingsPresentationModel::GetInstance();
+ if(pSettingsPresentor != null)
+ {
+ result r = pSettingsPresentor->GetActivePrefixDialNumber(__activePrefixDialingNumber);
+ if(r == E_SUCCESS && __activePrefixDialingNumber.IsEmpty() == false && pEditFieldNumber != null)
+ {
+ pEditFieldNumber->SetText(__activePrefixDialingNumber);
+ }
+ }
+ }
+ break;
+ }
+}
+
+void
+SettingsAddNumberForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
+{
+ EditField* pEditFieldNumber = static_cast<EditField*>(GetControl(IDC_NUMBER_EDITFIELD));
+ if (pEditFieldNumber != null)
+ {
+ pEditFieldNumber->HideKeypad();
+ }
+ GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ if (pMainMenuTableView != null && pMainMenuTableView->IsGroupExpanded(GROUP_CRITERIA_OPTIONS) == true)
+ {
+ pMainMenuTableView->CollapseGroup(GROUP_CRITERIA_OPTIONS);
+ __isCriteriaOptionsMenuExpanded = false;
+ }
+}
+
+void
+SettingsAddNumberForm::InitializeNumberEditField(void)
+{
+ EditField* pEditFieldNumber = static_cast<EditField*>(GetControl(IDC_NUMBER_EDITFIELD));
+ if (pEditFieldNumber != null)
+ {
+ pEditFieldNumber->AddKeypadEventListener(*this);
+ pEditFieldNumber->AddTextEventListener(*this);
+ pEditFieldNumber->SetOverlayKeypadCommandButtonVisible(false);
+ }
+
+ Button* pContactBtn = static_cast<Button*>(GetControl(IDC_SELECT_CONTACT_BUTTON));
+ if (pContactBtn != null)
+ {
+ pContactBtn->SetActionId(IDA_SELECT_CONTACT);
+ pContactBtn->AddActionEventListener(*this);
+ }
+}
+
+void
+SettingsAddNumberForm::GoBackToPreviousForm(void)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager != null);
+
+ switch (__formType)
+ {
+ case FORMTYPE_NUMBER_TO_REJECT:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_REJECTLIST_MENU), null);
+ }
+ break;
+
+ case FORMTYPE_AUTO_AREA_CODE:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MORE_OPTIONS), null);
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+result
+SettingsAddNumberForm::InitializeGroupedTableView(void)
+{
+ result r = E_SUCCESS;
+ GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ if (pMainMenuTableView != null)
+ {
+ pMainMenuTableView->SetGroupedLookEnabled(true);
+ pMainMenuTableView->SetItemProvider(this);
+ r = pMainMenuTableView->AddGroupedTableViewItemEventListener(*this);
+ pMainMenuTableView->UpdateTableView();
+ CollapseSelectiveGroups(pMainMenuTableView);
+ }
+ return r;
+}
+
+void
+SettingsAddNumberForm::CollapseSelectiveGroups(GroupedTableView* pMainMenuTableView)
+{
+ //This function should be called only from "InitializeGroupedTableView()".
+ //since collapsing individual groups while GroupTableView construction causes flicker.
+ pMainMenuTableView->CollapseAllGroup();
+ //Expand other groups
+ pMainMenuTableView->ExpandGroup(GROUP_SELECT_CRITERIA);
+ pMainMenuTableView->UpdateTableView();
+}
+
+
+void
+SettingsAddNumberForm::OnGroupedTableViewItemStateChanged(GroupedTableView& tableView, int groupIndex, int itemIndex, TableViewItem* pItem, TableViewItemStatus status)
+{
+ switch (groupIndex)
+ {
+ case GROUP_SELECT_CRITERIA:
+ {
+ ToggleGroupExpansion(tableView, groupIndex, itemIndex);
+ }
+ break;
+
+ case GROUP_CRITERIA_OPTIONS:
+ {
+ HandleMatchingCriteriaSelected(tableView, itemIndex, status);
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+int
+SettingsAddNumberForm::GetGroupCount(void)
+{
+ return GROUP_TOTALCOUNT;
+}
+
+int
+SettingsAddNumberForm::GetItemCount(int groupIndex)
+{
+ int itemCount = 0;
+ switch (groupIndex)
+ {
+ case GROUP_SELECT_CRITERIA:
+ {
+ itemCount = SELECTCRITERIA_TOTALCOUNT;
+ }
+ break;
+
+ case GROUP_CRITERIA_OPTIONS:
+ {
+ itemCount = CRITERIAOPTIONS_TOTALCOUNT;
+ }
+ break;
+
+ default:
+ break;
+ }
+ return itemCount;
+}
+
+TableViewGroupItem*
+SettingsAddNumberForm::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ TableViewGroupItem* pItem = new (std::nothrow) TableViewGroupItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_HIDDENGROUP_ITEM));
+ pItem->SetBackgroundColor(COLOR_GROUP_ITEM_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ return pItem;
+}
+
+bool
+SettingsAddNumberForm::DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem)
+{
+ delete pItem;
+ pItem = null;
+ return true;
+}
+
+void
+SettingsAddNumberForm::UpdateGroupItem(int groupIndex, TableViewGroupItem* pItem)
+{
+ return;
+}
+
+TableViewItem*
+SettingsAddNumberForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ TableViewItem* pItem = null;
+
+ switch (groupIndex)
+ {
+ case GROUP_SELECT_CRITERIA:
+ {
+ pItem = CreateExpandableCriteriaItem(itemWidth);
+ }
+ break;
+
+ case GROUP_CRITERIA_OPTIONS:
+ {
+ pItem = CreateCriteriaOptionsMenuItem(itemIndex, itemWidth);
+ }
+ break;
+
+ default:
+ break;
+ }
+ return pItem;
+}
+
+bool
+SettingsAddNumberForm::DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem)
+{
+ delete pItem;
+ pItem = null;
+ return true;
+}
+
+void
+SettingsAddNumberForm::UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ if(groupIndex == GROUP_SELECT_CRITERIA && itemIndex == SELECTCRITERIA_MATCH_CRITERIA)
+ {
+ String subText = FetchTextForCriteria(__selectedCriteria);
+ //sub text item
+ Label* pSubTxtLbl = static_cast<Label*>(pItem->GetControl(IDC_SELECTEDOPTION_SUBTEXT_LABEL, true));
+ if(pSubTxtLbl != null)
+ {
+ pSubTxtLbl->SetText(subText);
+ }
+ //set Drop-down icon to item
+ SetExpandIconToItem(pItem, __isCriteriaOptionsMenuExpanded);
+ }
+}
+
+int
+SettingsAddNumberForm::GetDefaultGroupItemHeight(void)
+{
+ return H_LIST_HIDDENGROUP_ITEM;
+}
+
+int
+SettingsAddNumberForm::GetDefaultItemHeight(void)
+{
+ return H_LIST_NORMAL_MENU_ITEM;
+}
+
+TableViewItem*
+SettingsAddNumberForm::CreateExpandableCriteriaItem(int itemWidth)
+{
+ //main text
+ Rectangle mainItemRect(X_LIST_MENU_TEXT_ITEM, Y_LIST_MENU_TEXT_ITEM, (itemWidth - (2 * X_LIST_MENU_TEXT_ITEM) - W_EXPAND_ICON),
+ H_LIST_DROPDOWN_TXT_ITEM);
+ String mainText = AppUtility::GetResourceString(IDS_SETTINGS_MATCHCRITERIA_STRING);
+ //sub text
+ Rectangle subItemRect(X_LIST_MENU_TEXT_ITEM, (Y_LIST_MENU_TEXT_ITEM + H_LIST_DROPDOWN_TXT_ITEM),
+ (itemWidth - (2 * X_LIST_MENU_TEXT_ITEM) - W_EXPAND_ICON), H_LIST_DROPDOWN_TXT_ITEM);
+ String subText = FetchTextForCriteria(__selectedCriteria);
+
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_DROPDOWN_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ //main text item
+ Label* pMainTxtLbl = new (std::nothrow) Label();
+ pMainTxtLbl->Construct(mainItemRect, mainText);
+ pMainTxtLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pMainTxtLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pMainTxtLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pMainTxtLbl->SetTextColor(COLOR_NORMAL_MAIN_TXT);
+ pItem->AddControl(*pMainTxtLbl);
+ //sub text item
+ Label* pSubTxtLbl = new (std::nothrow) Label();
+ pSubTxtLbl->Construct(subItemRect, subText);
+ pSubTxtLbl->SetName(IDC_SELECTEDOPTION_SUBTEXT_LABEL);
+ pSubTxtLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pSubTxtLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pSubTxtLbl->SetTextConfig(FONT_SIZE_SUB_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pSubTxtLbl->SetTextColor(COLOR_NORMAL_SUB_TXT);
+ pItem->AddControl(*pSubTxtLbl);
+
+ pItem->SetBackgroundColor(COLOR_LIST_MENU_ITEM, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ //set Drop-down icon to item
+ SetExpandIconToItem(pItem, __isCriteriaOptionsMenuExpanded);
+ return pItem;
+}
+
+String
+SettingsAddNumberForm::FetchTextForCriteria(int itemIndex)
+{
+ //default text
+ String subText = AppUtility::GetResourceString(IDS_MATCHCRITERIA_EXACT);
+ switch(itemIndex)
+ {
+ case CRITERIAOPTIONS_EXACT:
+ subText = AppUtility::GetResourceString(IDS_MATCHCRITERIA_EXACT);
+ break;
+
+ case CRITERIAOPTIONS_STARTSWITH:
+ subText = AppUtility::GetResourceString(IDS_MATCHCRITERIA_START);
+ break;
+
+ case CRITERIAOPTIONS_ENDSWITH:
+ subText = AppUtility::GetResourceString(IDS_MATCHCRITERIA_END);
+ break;
+
+ case CRITERIAOPTIONS_INCLUDE:
+ subText = AppUtility::GetResourceString(IDS_MATCHCRITERIA_INCLUDE);
+ break;
+
+ default:
+ break;
+ }
+
+ return subText;
+}
+
+void
+SettingsAddNumberForm::SetExpandIconToItem(TableViewItem* pItem, bool isExpanded)
+{
+ Bitmap* pNormalIcon = null;
+ Bitmap* pPressIcon = null;
+
+ if (!isExpanded)
+ {
+ pNormalIcon = AppUtility::GetBitmapFromResourcesN(IDB_LIST_EXPAND, W_EXPAND_ICON, H_EXPAND_ICON);
+ pPressIcon = AppUtility::GetBitmapFromResourcesN(IDB_LIST_EXPAND_PRESSED, W_EXPAND_ICON, H_EXPAND_ICON);
+ }
+ else
+ {
+ pNormalIcon = AppUtility::GetBitmapFromResourcesN(IDB_LIST_OPENED, W_EXPAND_ICON, H_EXPAND_ICON);
+ pPressIcon = AppUtility::GetBitmapFromResourcesN(IDB_LIST_OPENED_PRESSED, W_EXPAND_ICON, H_EXPAND_ICON);
+ }
+
+ int itemWidth = pItem->GetWidth();
+
+ Rectangle iconRect((itemWidth - W_EXPAND_ICON - X_LIST_MENU_TEXT_ITEM),
+ ((H_LIST_DROPDOWN_MENU_ITEM - H_EXPAND_ICON) / 2), W_EXPAND_ICON, H_EXPAND_ICON);
+
+ //for drawing blue bg header rectangle on left side.
+ Rectangle blueHeaderRect(0,0,W_LEFT_HEADER_EXPAND_ITEMS,pItem->GetHeight());
+ //normal canvas
+ Canvas* pBgCanvas = new (std::nothrow) Canvas();
+ pBgCanvas->Construct(Rectangle(0,0, pItem->GetBounds().width, pItem->GetBounds().height));
+ pBgCanvas->DrawBitmap(iconRect, *pNormalIcon);
+ pBgCanvas->FillRectangle(COLOR_LEFT_HEADER_EXPAND_ITEMS, blueHeaderRect);
+ Bitmap* pActualBgBmp = new (std::nothrow) Bitmap();
+ pActualBgBmp->Construct(*pBgCanvas,pBgCanvas->GetBounds());
+ pItem->SetBackgroundBitmap(pActualBgBmp, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ delete pBgCanvas;
+ delete pActualBgBmp;
+
+ //pressed canvas
+ pBgCanvas = new (std::nothrow) Canvas();
+ pBgCanvas->Construct(Rectangle(0,0, pItem->GetBounds().width, pItem->GetBounds().height));
+ pBgCanvas->DrawBitmap(iconRect, *pPressIcon);
+ pBgCanvas->FillRectangle(COLOR_LEFT_HEADER_EXPAND_ITEMS, blueHeaderRect);
+ pActualBgBmp = new (std::nothrow) Bitmap();
+ pActualBgBmp->Construct(*pBgCanvas,pBgCanvas->GetBounds());
+ pItem->SetBackgroundBitmap(pActualBgBmp, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+ delete pBgCanvas;
+ delete pActualBgBmp;
+
+ delete pNormalIcon;
+ pNormalIcon = null;
+ delete pPressIcon;
+ pPressIcon = null;
+}
+
+void
+SettingsAddNumberForm::ToggleGroupExpansion(GroupedTableView& tableView, int groupIndex, int itemIndex)
+{
+ switch (itemIndex)
+ {
+ case SELECTCRITERIA_MATCH_CRITERIA:
+ {
+ if (tableView.IsGroupExpanded(GROUP_CRITERIA_OPTIONS) == true)
+ {
+ tableView.CollapseGroup(GROUP_CRITERIA_OPTIONS);
+ __isCriteriaOptionsMenuExpanded = false;
+ }
+ else
+ {
+ tableView.ExpandGroup(GROUP_CRITERIA_OPTIONS);
+ __isCriteriaOptionsMenuExpanded = true;
+ }
+ //Change icon
+ tableView.RefreshItem(GROUP_SELECT_CRITERIA, SELECTCRITERIA_MATCH_CRITERIA, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ //close overlay keypad
+ EditField* pEditFieldNumber = static_cast<EditField*>(GetControl(IDC_NUMBER_EDITFIELD));
+ if (pEditFieldNumber != null && pEditFieldNumber->HasFocus() == true)
+ {
+ pEditFieldNumber->HideKeypad();
+ }
+}
+
+TableViewItem*
+SettingsAddNumberForm::CreateCriteriaOptionsMenuItem(int itemIndex, int itemWidth)
+{
+ //create a new item
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_RADIO);
+ pItem->SetBackgroundColor(COLOR_SECONDDEPTH_ITEM_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+
+ //text item rectangle
+ Rectangle itemRect(X_LIST_MENU_TEXT_ITEM, 0, (itemWidth - X_LIST_MENU_TEXT_ITEM), H_LIST_NORMAL_MENU_ITEM);
+ //Option item name
+ String itemName(L"");
+ itemName.Append(FetchTextForCriteria(itemIndex));
+
+ Label* pItemLbl = new (std::nothrow) Label();
+ pItemLbl->Construct(itemRect, itemName);
+ pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pItemLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pItemLbl->SetTextColor(COLOR_NORMAL_MAIN_TXT);//COLOR_PRESS_MAIN_TXT
+ pItem->AddControl(*pItemLbl);
+
+ return pItem;
+}
+
+void
+SettingsAddNumberForm::HandleMatchingCriteriaSelected(GroupedTableView& tableView, int itemIndex, TableViewItemStatus status)
+{
+ //check if already checked item is selected
+ if (status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)
+ {
+ tableView.SetItemChecked(GROUP_CRITERIA_OPTIONS, itemIndex, true);
+ __selectedCriteria = (GroupCriteriaOptionsItems) itemIndex;
+ return;
+ }
+ //un-check previous selected options
+ if(__selectedCriteria != (GroupCriteriaOptionsItems(itemIndex)))
+ {
+ tableView.SetItemChecked(GROUP_CRITERIA_OPTIONS, __selectedCriteria, false);
+ tableView.RefreshItem(GROUP_CRITERIA_OPTIONS, __selectedCriteria, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+ //update selected criteria to latest checked itemIndex
+ __selectedCriteria = (GroupCriteriaOptionsItems) itemIndex;
+ //change sub text for criteria options menu
+ tableView.RefreshItem(GROUP_SELECT_CRITERIA, SELECTCRITERIA_MATCH_CRITERIA, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ tableView.Invalidate(true);
+}
+
+void
+SettingsAddNumberForm::OnKeypadWillOpen(Tizen::Ui::Control& source)
+{
+ GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ if (pMainMenuTableView != null && __isCriteriaOptionsMenuExpanded == true)
+ {
+ pMainMenuTableView->CollapseGroup(GROUP_CRITERIA_OPTIONS);
+ __isCriteriaOptionsMenuExpanded = false;
+ //Change icon
+ pMainMenuTableView->RefreshItem(GROUP_SELECT_CRITERIA, SELECTCRITERIA_MATCH_CRITERIA, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+}
+
+void
+SettingsAddNumberForm::OnTextValueChanged(const Control& source)
+{
+ //enable or disable save button
+ const EditField* pEditFieldNumber = static_cast<const EditField*>(&source);
+ Header* pHeader = GetHeader();
+ if (pEditFieldNumber != null && pHeader != null)
+ {
+ bool activateSave = false;
+ switch (__formType)
+ {
+ case FORMTYPE_AUTO_AREA_CODE:
+ {
+ if (__activePrefixDialingNumber.Equals(pEditFieldNumber->GetText()) == false)
+ {
+ activateSave = true;
+ }
+ }
+ break;
+
+ case FORMTYPE_NUMBER_TO_REJECT:
+ {
+ if(pEditFieldNumber->GetText().IsEmpty() == false)
+ {
+ activateSave = true;
+ }
+ }
+ break;
+ }
+ pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, activateSave);
+ pHeader->Invalidate(true);
+ }
+}
+
+void
+SettingsAddNumberForm::OnTextValueChangeCanceled(const Control& source)
+{
+ //text change canceled, disable save button
+ const EditField* pEditFieldNumber = static_cast<const EditField*>(&source);
+ Header* pHeader = GetHeader();
+ if (pEditFieldNumber != null && pHeader != null)
+ {
+ pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, false);
+ pHeader->Invalidate(true);
+ }
+}
--- /dev/null
+//
+// 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 PhnSettingsBarringPwdForm.cpp
+ * @brief Call Baring Password form
+ */
+#include <FApp.h>
+#include "PhnAppUtility.h"
+#include "PhnSettingsBarringPwdForm.h"
+#include "PhnSettingsConstants.h"
+#include "PhnSettingsPresentationModel.h"
+#include "PhnSceneRegister.h"
+#include "PhnTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+static const wchar_t* IDL_SETTINGS_SET_BARRING_PWD__FORM = L"IDL_SETTINGS_SET_BARRING_PWD__FORM";
+
+SettingsBarringPwdForm::SettingsBarringPwdForm(void)
+ : __pErrorMsgPopup(null)
+{
+}
+
+SettingsBarringPwdForm::~SettingsBarringPwdForm(void)
+{
+}
+
+void
+SettingsBarringPwdForm::Initialize(void)
+{
+ Construct(IDL_SETTINGS_SET_BARRING_PWD__FORM);
+}
+
+result
+SettingsBarringPwdForm::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+
+ //Initialize Header
+ InitializeHeader();
+ //Initialize reject message editArea
+ EditField* pSetPwd = static_cast<EditField*>(GetControl(IDC_EDITFIELD));
+ if (pSetPwd != null)
+ {
+ pSetPwd->AddTextEventListener(*this);
+ pSetPwd->SetFocus();
+ pSetPwd->SetOverlayKeypadCommandButtonVisible(false);
+ pSetPwd->ShowKeypad();
+ }
+ return r;
+}
+
+void
+SettingsBarringPwdForm::InitializeHeader(void)
+{
+ Header* pHeader = GetHeader();
+ if (pHeader != null)
+ {
+ //TODO: get correct icons.
+ //'Save' item
+ String saveItemName;
+ saveItemName.Append(AppUtility::GetResourceString(IDS_SETTING_SAVE_HEADER_ITEM));
+ ButtonItem saveHeaderItem;
+ saveHeaderItem.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_SAVE_HEADER_ITEMID);
+ saveHeaderItem.SetText(saveItemName);
+ pHeader->SetButton(BUTTON_POSITION_LEFT, saveHeaderItem);
+ pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, false);
+
+ //'Cancel' item
+ Bitmap* pNormalBmp = AppUtility::GetBitmapFromResourcesN(IDB_CANCEL_FOOTER_ITEM, W_HDR_FTR_ICON, H_HDR_FTR_ICON);
+ ButtonItem cancelHeaderItem;
+ cancelHeaderItem.Construct(BUTTON_ITEM_STYLE_ICON, IDA_CANCEL_HEADER_ITEMID);
+ cancelHeaderItem.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pNormalBmp);
+ cancelHeaderItem.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pNormalBmp);
+ pHeader->SetButton(BUTTON_POSITION_RIGHT, cancelHeaderItem);
+ delete pNormalBmp;
+
+ pHeader->AddActionEventListener(*this);
+ }
+}
+
+result
+SettingsBarringPwdForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+ return r;
+}
+
+void
+SettingsBarringPwdForm::OnActionPerformed(const Control& source, int actionId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager != null);
+
+ switch (actionId)
+ {
+ case IDA_CANCEL_HEADER_ITEMID:
+ {
+ }
+ break;
+
+ case IDA_SAVE_HEADER_ITEMID:
+ {
+ //save call barring settings
+ EditField* pSetPwd = static_cast<EditField*>(GetControl(IDC_EDITFIELD));
+ if (pSetPwd != null)
+ {
+ SettingsPresentationModel* pPresentor = SettingsPresentationModel::GetInstance();
+ String password = pSetPwd->GetText();
+ //set call barring status
+ int errorCode = pPresentor->SetCallBarringStatus(password, __callBarringCondition, __conditionState);
+ if(errorCode != ERROR_NONE)
+ {
+ ShowErrorMessage(errorCode);
+ return;
+ }
+ else
+ {
+ if(__conditionState == false)
+ {
+ if(__callBarringCondition == CALL_BARRING_ALL_OUTGOING)
+ {
+ pPresentor->SetCallBarringStatus(password, CALL_BARRING_INTERNATIONAL_OUTGOING, false);
+ pPresentor->SetCallBarringStatus(password, CALL_BARRING_INTERNATIONAL_EXCEPT_HOME, false);
+ }
+ if(__callBarringCondition == CALL_BARRING_ALL_INCOMING)
+ {
+ pPresentor->SetCallBarringStatus(password, CALL_BARRING_INCOMING_ROAMING, false);
+
+ }
+ }
+ }
+
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+ //switch back to previous form
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_BARRING_OPTIONS), null);
+}
+
+void
+SettingsBarringPwdForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
+{
+ if (pArgs != null)
+ {
+ Integer* pIndexInt = static_cast<Integer*>(pArgs->GetAt(0));
+ switch (pIndexInt->ToInt())
+ {
+ case 0:
+ {
+ __callBarringCondition = CALL_BARRING_ALL_OUTGOING;
+ }
+ break;
+
+ case 1:
+ {
+ __callBarringCondition = CALL_BARRING_INTERNATIONAL_OUTGOING;
+ }
+ break;
+
+ case 2:
+ {
+ __callBarringCondition = CALL_BARRING_INTERNATIONAL_EXCEPT_HOME;
+ }
+ break;
+
+ case 3:
+ {
+ __callBarringCondition = CALL_BARRING_ALL_INCOMING;
+ }
+ break;
+
+ case 4:
+ {
+ __callBarringCondition = CALL_BARRING_INCOMING_ROAMING;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ Integer* pItemState = static_cast<Integer*>(pArgs->GetAt(1));
+ if (pItemState->ToInt() == LIST_ITEM_STATUS_CHECKED)
+ {
+ __conditionState = true;
+ }
+ else
+ {
+ __conditionState = false;
+ }
+
+ //Clear edit field and disable "save"
+ EditField* pSetPwd = static_cast<EditField*>(GetControl(IDC_EDITFIELD));
+ if (pSetPwd != null)
+ {
+ pSetPwd->Clear();
+ pSetPwd->SetFocus();
+ pSetPwd->Invalidate(true);
+ }
+ Header* pHeader = GetHeader();
+ if (pHeader != null)
+ {
+ pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, false);
+ pHeader->Invalidate(true);
+ }
+
+ pArgs->RemoveAll();
+ delete pArgs;
+ pArgs = null;
+ }
+}
+
+void
+SettingsBarringPwdForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
+{
+ EditField* pSetPwd = static_cast<EditField*>(GetControl(IDC_EDITFIELD));
+ if (pSetPwd != null)
+ {
+ pSetPwd->HideKeypad();
+ }
+}
+
+void
+SettingsBarringPwdForm::OnTextValueChanged(const Control& source)
+{
+ int textLen = -1;
+ EditField* pSetPwd = static_cast<EditField*>(GetControl(IDC_EDITFIELD));
+ Header* pHeader = GetHeader();
+ if (pSetPwd != null && pHeader != null)
+ {
+ textLen = pSetPwd->GetTextLength();
+ if (textLen > 0)
+ {
+ //Enable save button
+ pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, true);
+ }
+ else
+ {
+ //disable
+ pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, false);
+ }
+ pHeader->Invalidate(true);
+ }
+}
+
+void
+SettingsBarringPwdForm::OnTextValueChangeCanceled(const Control& source)
+{
+ Header* pHeader = GetHeader();
+ if (pHeader != null)
+ {
+ pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, false);
+ pHeader->Invalidate(true);
+ }
+}
+
+void
+SettingsBarringPwdForm::ShowErrorMessage(int errorCode)
+{
+ //show error msg Popup
+ if (__pErrorMsgPopup == null)
+ {
+ __pErrorMsgPopup = new (std::nothrow) ErrorMsgPopup(this);
+ }
+ __pErrorMsgPopup->ShowErrorMsgPopupN(errorCode);
+}
+
+void
+SettingsBarringPwdForm::HandlePopupClosed(void)
+{
+ Draw();
+ delete __pErrorMsgPopup;
+ __pErrorMsgPopup = null;
+ return;
+}
--- /dev/null
+//
+// 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 PhnSettingsCallForwardWaitBarrForm.cpp
+ * @brief Call forwarding form
+ */
+#include <FApp.h>
+#include "PhnAppUtility.h"
+#include "PhnSettingsCallForwardWaitBarrForm.h"
+#include "PhnSettingsConstants.h"
+#include "PhnSettingsPresentationModel.h"
+#include "PhnSceneRegister.h"
+#include "PhnTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Runtime;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+//constants
+const int IDI_GROUP_TOTALCOUNT = 1;
+static const wchar_t* IDL_SETTINGS_CALL_FORWARD_WAIT_BARRING_FORM = L"IDL_SETTINGS_CALL_FORWARD_WAIT_BARRING_FORM";
+static const wchar_t* IDC_SLIDER_CHECHBUTTON = L"IDC_SLIDER_CHECHBUTTON";
+
+SettingsCallForwardWaitBarrForm::SettingsCallForwardWaitBarrForm(FormType formType)
+ : __formType(formType)
+ , __pSettingsPresentor(null)
+ , __pErrorMsgPopup(null)
+ , __isCallForwardAlwaysActivated(false)
+ , __pAnimationFrameList(null)
+ , __isCallWaitingStatusAvailable(false)
+ , __isCallWaitingEnabled(false)
+{
+}
+
+SettingsCallForwardWaitBarrForm::~SettingsCallForwardWaitBarrForm(void)
+{
+}
+
+void
+SettingsCallForwardWaitBarrForm::Initialize(void)
+{
+ Construct(IDL_SETTINGS_CALL_FORWARD_WAIT_BARRING_FORM);
+}
+
+result
+SettingsCallForwardWaitBarrForm::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+
+ __pSettingsPresentor = SettingsPresentationModel::GetInstance();
+ //set Title
+ Header* pHeader = GetHeader();
+ if (pHeader != null)
+ {
+ String title(L"");
+ switch (__formType)
+ {
+ case FORMTYPE_CALLFORWARDING_TYPE:
+ {
+ title.Append(AppUtility::GetResourceString(IDS_SETTING_FORWARD_CALLTYPE_TITLE));
+ }
+ break;
+
+ case FORMTYPE_CALLBARRING_TYPE:
+ {
+ title.Append(AppUtility::GetResourceString(IDS_SETTING_BARRING_CALLTYPE_TITLE));
+ }
+ break;
+
+ case FORMTYPE_VOICE_CALLFORWARDING:
+ {
+ title.Append(AppUtility::GetResourceString(IDS_SETTING_VOICEFORWARD_OPTIONS_TITLE));
+ }
+ break;
+
+ case FORMTYPE_VOICE_CALLBARRING:
+ {
+ title.Append(AppUtility::GetResourceString(IDS_SETTING_VOICEBARRING_OPTIONS_TITLE));
+ }
+ break;
+
+ case FORMTYPE_CALL_WAITING:
+ {
+ title.Append(AppUtility::GetResourceString(IDS_SETTING_WAITING_OPTIONS_TITLE));
+ }
+ break;
+
+ default:
+ break;
+ }
+ pHeader->SetTitleText(title);
+ }
+
+ // Setup back event listener
+ SetFormBackEventListener(this);
+ //Footer
+ Footer* pFooter = GetFooter();
+ if (pFooter)
+ {
+ pFooter->SetButtonColor(BUTTON_ITEM_STATUS_NORMAL, pFooter->GetColor());
+ }
+
+ ConstructAnimationList();
+ //initialize table view
+ r = InitializeGroupedTableView();
+
+ return r;
+}
+
+result
+SettingsCallForwardWaitBarrForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+ __pSettingsPresentor = null;
+
+ if(__pAnimationFrameList != null)
+ {
+ __pAnimationFrameList->RemoveAll();
+ delete __pAnimationFrameList;
+ __pAnimationFrameList = null;
+ }
+ return r;
+}
+
+void
+SettingsCallForwardWaitBarrForm::ConstructAnimationList(void)
+{
+ //Check if already created
+ if(__pAnimationFrameList != null)
+ {
+ return;
+ }
+ // Create AnimationList
+ __pAnimationFrameList = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ __pAnimationFrameList->Construct();
+
+ // Create Bitmap
+ AppResource *pAppResource = Application::GetInstance()->GetAppResource();
+ if (pAppResource != null)
+ {
+ for (int iconIndex = 1; iconIndex <= 30; iconIndex++)
+ {
+ //construct bitmap path
+ String bitmapPath(IDB_PROCESSING_ICONS);
+ String number(L"");
+ if(iconIndex < 10)
+ {
+ bitmapPath.Append(0);
+ }
+ bitmapPath.Append(iconIndex);
+ bitmapPath.Append(L".png");
+ //Create Animation icons - fetch bitmap
+ Bitmap *pBitmap = pAppResource->GetBitmapN(bitmapPath);
+ if(pBitmap != null)
+ {
+ // Create AnimationFrames
+ AnimationFrame *pAnimFrame = new (std::nothrow) AnimationFrame( *pBitmap,
+ (IDI_ANIM_DURATION / IDI_ANIM_PROGRESS_COUNT));
+ __pAnimationFrameList->Add(pAnimFrame);
+ delete pBitmap;
+ pBitmap = null;
+ }
+ }
+ }
+}
+
+void
+SettingsCallForwardWaitBarrForm::OnActionPerformed(const Control& source, int actionId)
+{
+ switch (actionId)
+ {
+ default:
+ break;
+ }
+}
+
+void
+SettingsCallForwardWaitBarrForm::OnFormBackRequested(Form& source)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager != null);
+
+ switch (__formType)
+ {
+ case FORMTYPE_CALLFORWARDING_TYPE:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MAIN_SETTING_MENU), null);
+ }
+ break;
+
+ case FORMTYPE_CALLBARRING_TYPE:
+ case FORMTYPE_CALL_WAITING:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MORE_OPTIONS), null);
+ }
+ break;
+
+ case FORMTYPE_VOICE_CALLFORWARDING:
+ {
+ //switch to form
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALLTYPE_FORWARD), null);
+ }
+ break;
+
+ case FORMTYPE_VOICE_CALLBARRING:
+ {
+ //switch to form
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALLTYPE_BARRING), null);
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+void
+SettingsCallForwardWaitBarrForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
+{
+ // Add your scene activate code here
+ __pSettingsPresentor->AddSettingEventListener(this);
+ int errorCode = ERROR_NONE;
+ switch (__formType)
+ {
+ case FORMTYPE_VOICE_CALLFORWARDING:
+ {
+ //fetch status
+ __isCallForwardAlwaysActivated = false;
+ errorCode = __pSettingsPresentor->GetCallForwardStatus(CALL_FORWARD_ALL);
+ TryCatch(errorCode == ERROR_NONE,,"TAPI error occurred");
+ errorCode = __pSettingsPresentor->GetCallForwardStatus(CALL_FORWARD_BUSY);
+ TryCatch(errorCode == ERROR_NONE,,"TAPI error occurred");
+ errorCode = __pSettingsPresentor->GetCallForwardStatus(CALL_FORWARD_NO_REPLY);
+ TryCatch(errorCode == ERROR_NONE,,"TAPI error occurred");
+ errorCode = __pSettingsPresentor->GetCallForwardStatus(CALL_FORWARD_NOT_REACHABLE);
+ TryCatch(errorCode == ERROR_NONE,,"TAPI error occurred");
+ }
+ break;
+
+ case FORMTYPE_VOICE_CALLBARRING:
+ {
+ //fetch status
+ errorCode = __pSettingsPresentor->GetCallBarringStatus(CALL_BARRING_ALL_OUTGOING);
+ TryCatch(errorCode == ERROR_NONE,,"TAPI error occurred");
+ errorCode = __pSettingsPresentor->GetCallBarringStatus(CALL_BARRING_INTERNATIONAL_OUTGOING);
+ TryCatch(errorCode == ERROR_NONE,,"TAPI error occurred");
+ errorCode = __pSettingsPresentor->GetCallBarringStatus(CALL_BARRING_INTERNATIONAL_EXCEPT_HOME);
+ TryCatch(errorCode == ERROR_NONE,,"TAPI error occurred");
+ errorCode = __pSettingsPresentor->GetCallBarringStatus(CALL_BARRING_ALL_INCOMING);
+ TryCatch(errorCode == ERROR_NONE,,"TAPI error occurred");
+ errorCode = __pSettingsPresentor->GetCallBarringStatus(CALL_BARRING_INCOMING_ROAMING);
+ TryCatch(errorCode == ERROR_NONE,,"TAPI error occurred");
+ }
+ break;
+
+ case FORMTYPE_CALL_WAITING:
+ {
+ //fetch status
+ errorCode = __pSettingsPresentor->GetCallWaitingStatus();
+ TryCatch(errorCode == ERROR_NONE,,"TAPI error occurred");
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return;
+
+CATCH:
+ //Show error message popup
+ ShowErrorMessage(errorCode);
+ //in case of TAPI error, un-check all items
+ UncheckAllOptions();
+ return;
+}
+
+void
+SettingsCallForwardWaitBarrForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
+{
+ // Add your scene de-activate code here
+ __pSettingsPresentor->RemoveSettingEventListener();
+}
+
+/////////////////////////////////////////////////////////////////////
+////////////////// List View related functionality //////////////////
+/////////////////////////////////////////////////////////////////////
+result
+SettingsCallForwardWaitBarrForm::InitializeGroupedTableView(void)
+{
+ result r = E_FAILURE;
+ GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ if (pMainMenuTableView != null)
+ {
+ pMainMenuTableView->SetGroupedLookEnabled(true);
+ pMainMenuTableView->SetItemProvider(this);
+ r = pMainMenuTableView->AddGroupedTableViewItemEventListener(*this);
+ if( r == E_SUCCESS)
+ {
+ pMainMenuTableView->UpdateTableView();
+ //play processing animation
+ if(__formType == FORMTYPE_CALL_WAITING)
+ {
+ pMainMenuTableView->RefreshItem(0, CALLWAITING_ITEM, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+ }
+ }
+ return r;
+}
+
+void
+SettingsCallForwardWaitBarrForm::OnGroupedTableViewItemStateChanged(GroupedTableView& tableView, int groupIndex, int itemIndex, TableViewItem* pItem, TableViewItemStatus status)
+{
+ switch (__formType)
+ {
+ case FORMTYPE_CALLFORWARDING_TYPE: //decide voice/video type for forwarding / barring
+ case FORMTYPE_CALLBARRING_TYPE:
+ {
+ HandleCallTypeSelected(itemIndex);
+ }
+ break;
+
+ case FORMTYPE_VOICE_CALLFORWARDING:
+ {
+ HandleCallForwardingOptionSelected(itemIndex, status);
+ }
+ break;
+
+ case FORMTYPE_VOICE_CALLBARRING:
+ {
+ HandleCallBarringOptionSelected(itemIndex, status);
+ }
+ break;
+
+ case FORMTYPE_CALL_WAITING:
+ {
+ HandleCallWaitingOptionSelected(pItem, itemIndex, status);
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+int
+SettingsCallForwardWaitBarrForm::GetGroupCount(void)
+{
+ return IDI_GROUP_TOTALCOUNT;
+}
+
+int
+SettingsCallForwardWaitBarrForm::GetItemCount(int groupIndex)
+{
+ int itemCount = 0;
+ switch (__formType)
+ {
+ case FORMTYPE_CALLFORWARDING_TYPE: //decide voice/video type for forwarding
+ case FORMTYPE_CALLBARRING_TYPE: //decide voice/video type for barring
+ {
+ itemCount = CALLTYPE_TOTALCOUNT;
+ }
+ break;
+
+ case FORMTYPE_VOICE_CALLFORWARDING: //actual options for call forwarding
+ {
+ itemCount = CALLFORWARD_TOTALITEMCOUNT;
+ }
+ break;
+
+ case FORMTYPE_VOICE_CALLBARRING: //actual options for call barring
+ {
+ itemCount = CALLBARRING_TOTALCOUNT;
+ }
+ break;
+
+ case FORMTYPE_CALL_WAITING:
+ {
+ itemCount = CALLWAITING_TOTALCOUNT;
+ }
+ break;
+
+ default:
+ break;
+ }
+ return itemCount;
+}
+
+TableViewGroupItem*
+SettingsCallForwardWaitBarrForm::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ TableViewGroupItem* pItem = new (std::nothrow) TableViewGroupItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_HIDDENGROUP_ITEM));
+ pItem->SetBackgroundColor(COLOR_GROUP_ITEM_BG);
+ return pItem;
+}
+
+bool
+SettingsCallForwardWaitBarrForm::DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem)
+{
+ delete pItem;
+ pItem = null;
+ return true;
+}
+
+void
+SettingsCallForwardWaitBarrForm::UpdateGroupItem(int groupIndex, TableViewGroupItem* pItem)
+{
+ return;
+}
+
+TableViewItem*
+SettingsCallForwardWaitBarrForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ TableViewItem* pItem = null;
+ switch (__formType)
+ {
+ case FORMTYPE_CALLFORWARDING_TYPE:
+ case FORMTYPE_CALLBARRING_TYPE:
+ {
+ pItem = CreateSettingCallTypeMenuItem(itemIndex, itemWidth);
+ }
+ break;
+
+ case FORMTYPE_VOICE_CALLFORWARDING:
+ {
+ pItem = CreateCallForwardingOptions(itemIndex, itemWidth);
+ }
+ break;
+
+ case FORMTYPE_VOICE_CALLBARRING:
+ {
+ pItem = CreateCallBarringOptions(itemIndex, itemWidth);
+ }
+ break;
+
+ case FORMTYPE_CALL_WAITING:
+ {
+ pItem = CreateCallWaitingOptions(itemIndex, itemWidth);
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return pItem;
+}
+
+bool
+SettingsCallForwardWaitBarrForm::DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem)
+{
+ delete pItem;
+ pItem = null;
+ return true;
+}
+
+void
+SettingsCallForwardWaitBarrForm::UpdateItem(int groupIndex, int itemIndex, TableViewItem* pItem)
+{
+ if(__formType == FORMTYPE_CALL_WAITING)
+ {
+ Animation* pAnimation = static_cast<Animation*>(pItem->GetControl(IDC_ANIMATION_CONTROL, true));
+ if(__isCallWaitingStatusAvailable == false)
+ {
+ //let the animation play
+ if(pAnimation != null)
+ {
+ pAnimation->Play();
+ }
+ }
+ else
+ {
+ //remove animation
+ if(pAnimation != null)
+ {
+ pAnimation->Stop();
+ pItem->RemoveControl(*pAnimation);
+ }
+ //show CheckButton with on-off slider style
+ CheckButton* pSliderButton = static_cast<CheckButton*>(pItem->GetControl(IDC_SLIDER_CHECHBUTTON,true));
+ if(pSliderButton == null)
+ {
+ //construct new "CheckButton", if not present
+ int itemWidth = pItem->GetWidth();
+ Rectangle animRect((itemWidth - W_SLIDER_ICON), ((H_LIST_NORMAL_MENU_ITEM - H_SLIDER_ICON) /2), W_SLIDER_ICON, H_SLIDER_ICON);
+ pSliderButton = new (std::nothrow) CheckButton();
+ pSliderButton->Construct(animRect, CHECK_BUTTON_STYLE_ONOFF_SLIDING, BACKGROUND_STYLE_NONE);
+ pSliderButton->SetName(IDC_SLIDER_CHECHBUTTON);
+ pSliderButton->SetActionId(IDA_CALL_WAITING_OPTION_CHECKED, IDA_CALL_WAITING_OPTION_UNCHECKED);
+ pSliderButton->AddActionEventListener(*this);
+ // Add a CheckButton to the Form
+ pItem->AddControl(*pSliderButton);
+ pItem->SetIndividualSelectionEnabled(pSliderButton, false);
+ }
+ //update status
+ pSliderButton->SetSelected(__isCallWaitingEnabled);
+ }
+ }
+ return;
+}
+
+int
+SettingsCallForwardWaitBarrForm::GetDefaultGroupItemHeight(void)
+{
+ return H_LIST_HIDDENGROUP_ITEM;
+}
+
+int
+SettingsCallForwardWaitBarrForm::GetDefaultItemHeight(void)
+{
+ return H_LIST_NORMAL_MENU_ITEM;
+}
+
+TableViewItem*
+SettingsCallForwardWaitBarrForm::CreateSettingCallTypeMenuItem(int itemIndex, int itemWidth)
+{
+ //text item rectangle
+ Rectangle itemNameRect(X_LIST_MENU_TEXT_ITEM, 0, (itemWidth - X_LIST_MENU_TEXT_ITEM), H_LIST_NORMAL_MENU_ITEM);
+ String itemName(L"");
+ switch (itemIndex)
+ {
+ case CALLTYPE_VOICE_CALL:
+ {
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_CALLTYPE_VOICE_STRING));
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ //Item Name
+ Label* pItemLbl = new (std::nothrow) Label();
+ pItemLbl->Construct(itemNameRect, itemName);
+ pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pItemLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pItemLbl->SetTextColor(COLOR_NORMAL_MAIN_TXT);//COLOR_PRESS_MAIN_TXT
+ pItem->AddControl(*pItemLbl);
+ pItem->SetBackgroundColor(COLOR_LIST_MENU_ITEM, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+
+ return pItem;
+}
+
+void
+SettingsCallForwardWaitBarrForm::HandleCallTypeSelected(int itemIndex)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager != null);
+
+ switch (itemIndex)
+ {
+ case CALLTYPE_VOICE_CALL:
+ {
+ if (__formType == FORMTYPE_CALLFORWARDING_TYPE)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_FORWARD_OPTIONS), null);
+ }
+ else
+ {
+ //for FORMTYPE_CALLBARRING_TYPE
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_BARRING_OPTIONS), null);
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+TableViewItem*
+SettingsCallForwardWaitBarrForm::CreateCallForwardingOptions(int itemIndex, int itemWidth)
+{
+ //sub text rectangle
+ Rectangle subItemRect(X_LIST_MENU_TEXT_ITEM, H_LIST_NORMAL_TXT_ITEM,
+ (itemWidth - X_LIST_MENU_TEXT_ITEM), H_LIST_SUB_TXT_ITEM);
+ String subText = AppUtility::GetResourceString(IDS_SETTING_DEACTIVATE_STATUS);
+
+ //main text rectangle
+ Rectangle itemNameRect(X_LIST_MENU_TEXT_ITEM, 0,
+ (itemWidth - X_LIST_MENU_TEXT_ITEM), H_LIST_NORMAL_TXT_ITEM);
+ String itemName;
+ switch (itemIndex)
+ {
+ case CALLFORWARD_ALWAYS:
+ {
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_VOICEFORWARD_ALWAYS));
+ }
+ break;
+
+ case CALLFORWARD_IF_BUSY:
+ {
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_VOICEFORWARD_IFBUSY));
+ }
+ break;
+
+ case CALLFORWARD_IF_NO_REPLY:
+ {
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_VOICEFORWARD_NOREPLY));
+ }
+ break;
+
+ case CALLFORWARD_IF_OUT_OF_REACH:
+ {
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_VOICEFORWARD_OUTOFREACH));
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING);
+
+ //main text item
+ Label* pItemLbl = new (std::nothrow) Label();
+ pItemLbl->Construct(itemNameRect, itemName);
+ pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pItemLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pItemLbl->SetTextColor(COLOR_MAIN_TXT);
+ pItem->AddControl(*pItemLbl);
+ //sub text item
+ Label* pSubTxtLbl = new (std::nothrow) Label();
+ pSubTxtLbl->Construct(subItemRect, subText);
+ pSubTxtLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pSubTxtLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pSubTxtLbl->SetTextConfig(FONT_SIZE_SUB_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pSubTxtLbl->SetTextColor(COLOR_NORMAL_SUB_TXT);
+ pItem->AddControl(*pSubTxtLbl);
+
+ pItem->SetBackgroundColor(COLOR_LIST_MENU_ITEM, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ return pItem;
+}
+
+void
+SettingsCallForwardWaitBarrForm::HandleCallForwardingOptionSelected(int itemIndex, TableViewItemStatus status)
+{
+ if(status == TABLE_VIEW_ITEM_STATUS_CHECKED || status == TABLE_VIEW_ITEM_STATUS_SELECTED)
+ {
+ //Do not activate any other call forwarding option, if 'CALLFORWARD_ALWAYS' is selected.
+ if((itemIndex != CALLFORWARD_ALWAYS) && (__isCallForwardAlwaysActivated == true))
+ {
+ GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ pMainMenuTableView->SetItemChecked(CALLFORWARDING_GROUP, itemIndex, false);
+ pMainMenuTableView->Invalidate(true);
+ return;
+ }
+
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager != null);
+
+ ArrayList* pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pArgs->Construct(1);
+ Integer* indexInt = new (std::nothrow) Integer(itemIndex);
+ pArgs->Add(indexInt);
+
+ switch (itemIndex)
+ {
+ case CALLFORWARD_IF_NO_REPLY:
+ {
+ //switch to "NOREPLY_ForwardToNumber" form
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_NOREPLY_FORWARD_TO_NUMBER), pArgs);
+ }
+ break;
+
+ default:
+ {
+ //switch to "ForwardToNumber" form
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_FORWARD_TO_NUMBER), pArgs);
+ }
+ break;
+ }
+ }
+ else
+ {
+ __pSettingsPresentor->SetCallForwardStatus(String(L""),CallForwardCondition(itemIndex), false, 0);
+ }
+}
+
+TableViewItem*
+SettingsCallForwardWaitBarrForm::CreateCallBarringOptions(int itemIndex, int itemWidth)
+{
+ //text item rectangle
+ Rectangle itemNameRect(X_LIST_MENU_TEXT_ITEM, 0, (itemWidth - X_LIST_MENU_TEXT_ITEM), H_LIST_NORMAL_MENU_ITEM);
+
+ String itemName(L"");
+ switch (itemIndex)
+ {
+ case CALLBARRING_ALL_OUTGOING_CALL:
+ {
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_VOICEBARRING_OUTGOING));
+ }
+ break;
+
+ case CALLBARRING_INTERNATIONAL_CALL:
+ {
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_VOICEBARRING_INTERNATIONAL));
+ }
+ break;
+
+ case CALLBARRING_INTERNATIONAL_EXCEPT_HOME:
+ {
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_VOICEBARRING_EXCEPTHOME));
+ }
+ break;
+
+ case CALLBARRING_ALL_INCOMING_CALL:
+ {
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_VOICEBARRING_INCOMING));
+ }
+ break;
+
+ case CALLBARRING_INCOMING_WHILE_ROAMING:
+ {
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_VOICEBARRING_WHENROAMING));
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING);
+ //Item Name
+ Label* pItemLbl = new (std::nothrow) Label();
+ pItemLbl->Construct(itemNameRect, itemName);
+ pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pItemLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pItemLbl->SetTextColor(COLOR_MAIN_TXT);
+ pItem->AddControl(*pItemLbl);
+
+ pItem->SetBackgroundColor(COLOR_LIST_MENU_ITEM, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ return pItem;
+}
+
+void
+SettingsCallForwardWaitBarrForm::HandleCallBarringOptionSelected(int itemIndex, TableViewItemStatus status)
+{
+ //Don't change the item status and goto next form.
+ GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ if(status == TABLE_VIEW_ITEM_STATUS_CHECKED)
+ {
+ pMainMenuTableView->SetItemChecked(0,itemIndex,false);
+ }
+ else if(status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)
+ {
+ pMainMenuTableView->SetItemChecked(0,itemIndex,true);
+ }
+
+ //Whether status is checked or unchecked, always goto BarringPwdForm form
+ //to take password from user. Activation / De-activation of barring happens from BarringPwdForm.
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager != null);
+
+ ArrayList* pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pArgs->Construct(2);
+ Integer* indexInt = new (std::nothrow) Integer(itemIndex);
+ pArgs->Add(indexInt);
+ Integer* itemState = new (std::nothrow) Integer(status);
+ pArgs->Add(itemState);
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_SET_BARRING_PWD), pArgs);
+}
+
+TableViewItem*
+SettingsCallForwardWaitBarrForm::CreateCallWaitingOptions(int itemIndex, int itemWidth)
+{
+ //text item rectangle
+ Rectangle itemNameRect(X_LIST_MENU_TEXT_ITEM, 0,
+ (itemWidth - X_LIST_MENU_TEXT_ITEM - X_LIST_MENU_TEXT_ITEM - W_EXPAND_ICON), H_LIST_NORMAL_MENU_ITEM);
+ String itemName(L"");
+ switch (itemIndex)
+ {
+ case CALLWAITING_ITEM:
+ {
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_CALL_WAITING_OPTIONS));
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+
+ //Item Name
+ Label* pItemLbl = new (std::nothrow) Label();
+ pItemLbl->Construct(itemNameRect, itemName);
+ pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pItemLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pItemLbl->SetTextColor(COLOR_MAIN_TXT);
+ pItem->AddControl(*pItemLbl);
+
+ //animation icon
+ if(__pAnimationFrameList != null && __pAnimationFrameList->GetCount() > 0)
+ {
+ Rectangle animRect((itemNameRect.x + itemNameRect.width), ((H_LIST_NORMAL_MENU_ITEM - H_EXPAND_ICON) /2), W_EXPAND_ICON, H_EXPAND_ICON);
+ Animation* pAnimation = new (std::nothrow) Animation();
+ pAnimation->Construct(animRect, *__pAnimationFrameList);
+ pAnimation->SetName(IDC_ANIMATION_CONTROL);
+ pAnimation->SetRepeatCount(IDI_ANIM_DURATION * IDI_ANIM_PROGRESS_COUNT * IDI_ANIM_PROGRESS_COUNT);
+ pItem->AddControl(*pAnimation);
+ }
+
+ //set background
+ pItem->SetBackgroundColor(COLOR_LIST_MENU_ITEM, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ return pItem;
+}
+
+void
+SettingsCallForwardWaitBarrForm::HandleCallWaitingOptionSelected(TableViewItem* pItem, int itemIndex, TableViewItemStatus status)
+{
+ switch (itemIndex)
+ {
+ case CALLWAITING_ITEM:
+ {
+ //set the state based on response
+ CheckButton* pSliderButton = static_cast<CheckButton*>(pItem->GetControl(IDC_SLIDER_CHECHBUTTON,true));
+ if(pSliderButton != null)
+ {
+ bool activateWaiting = !(pSliderButton->IsSelected());
+ int errorCode = __pSettingsPresentor->SetCallWaitingStatus(activateWaiting);
+ if(errorCode != ERROR_NONE)
+ {
+ ShowErrorMessage(errorCode);
+ }
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+//
+void
+SettingsCallForwardWaitBarrForm::HandleGetCallWaitingResponse(bool isCallSuccessful, bool callWaitingActivated)
+{
+ if (__formType == FORMTYPE_CALL_WAITING)
+ {
+ __isCallWaitingStatusAvailable = true;
+ GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ //Hide animation and add on/Off checkbox by modifying item
+ __isCallWaitingEnabled = callWaitingActivated;
+ pMainMenuTableView->RefreshItem(0, CALLWAITING_ITEM, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+}
+
+void
+SettingsCallForwardWaitBarrForm::HandleSetCallWaitingResponse(bool isCallSuccessful, bool isCallWaitingEnabled)
+{
+ if (__formType == FORMTYPE_CALL_WAITING)
+ {
+ __isCallWaitingStatusAvailable = true;
+ //Update status of "On/Off" slider button
+ GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ __isCallWaitingEnabled = isCallWaitingEnabled;
+ pMainMenuTableView->RefreshItem(0, CALLWAITING_ITEM, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+}
+
+void
+SettingsCallForwardWaitBarrForm::HandleGetCallForwardResponse(bool isCallSuccessful, CallForwardCondition callFwdCondition, const String& callFwdNumber, bool callForwardActivated, int noReplyWaitTime)
+{
+ if (__formType == FORMTYPE_VOICE_CALLFORWARDING)
+ {
+ //todo: grey out the item if call is unsuccessful
+ GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+
+ //todo: set subtext for the item
+ switch (callFwdCondition)
+ {
+ case CALL_FORWARD_ALL:
+ {
+ pMainMenuTableView->SetItemChecked(0, CALLFORWARD_ALWAYS, callForwardActivated);
+ __isCallForwardAlwaysActivated = callForwardActivated;
+ }
+ break;
+
+ case CALL_FORWARD_BUSY:
+ {
+ pMainMenuTableView->SetItemChecked(0, CALLFORWARD_IF_BUSY, callForwardActivated);
+ }
+ break;
+
+ case CALL_FORWARD_NO_REPLY:
+ {
+ pMainMenuTableView->SetItemChecked(0, CALLFORWARD_IF_NO_REPLY, callForwardActivated);
+ }
+ break;
+
+ case CALL_FORWARD_NOT_REACHABLE:
+ {
+ pMainMenuTableView->SetItemChecked(0, CALLFORWARD_IF_OUT_OF_REACH, callForwardActivated);
+ }
+ break;
+
+ default:
+ break;
+ }
+ pMainMenuTableView->Invalidate(true);
+ }
+}
+
+void
+SettingsCallForwardWaitBarrForm::HandleSetCallForwardResponse(bool isCallSuccessful, CallForwardCondition callFwdCondition, const String& callFwdNumber, bool isCallForwardActivated, int noReplyWaitTime)
+{
+ if (__formType == FORMTYPE_VOICE_CALLFORWARDING)
+ {
+ //todo: grey out the item if call is unsuccessful
+ GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ //todo: set the number as the subtext for the item
+ switch (callFwdCondition)
+ {
+ case CALL_FORWARD_ALL:
+ {
+ pMainMenuTableView->SetItemChecked(0, CALLFORWARD_ALWAYS, isCallForwardActivated);
+ __isCallForwardAlwaysActivated = isCallForwardActivated;
+ }
+ break;
+
+ case CALL_FORWARD_BUSY:
+ {
+ pMainMenuTableView->SetItemChecked(0, CALLFORWARD_IF_BUSY, isCallForwardActivated);
+ }
+ break;
+
+ case CALL_FORWARD_NO_REPLY:
+ {
+ pMainMenuTableView->SetItemChecked(0, CALLFORWARD_IF_NO_REPLY, isCallForwardActivated);
+ }
+ break;
+
+ case CALL_FORWARD_NOT_REACHABLE:
+ {
+ pMainMenuTableView->SetItemChecked(0, CALLFORWARD_IF_OUT_OF_REACH, isCallForwardActivated);
+ }
+ break;
+
+ default:
+ break;
+ }
+ pMainMenuTableView->Invalidate(true);
+ }
+}
+
+void
+SettingsCallForwardWaitBarrForm::HandleSetCallBarringResponse(bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated)
+{
+ if (__formType == FORMTYPE_VOICE_CALLBARRING)
+ {
+ //todo: grey out the item if call is unsuccessful
+ GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ switch (callBarringType)
+ {
+ case CALL_BARRING_ALL_OUTGOING:
+ {
+ pMainMenuTableView->SetItemChecked(0, CALLBARRING_ALL_OUTGOING_CALL, isBarringActivated);
+ }
+ break;
+
+ case CALL_BARRING_INTERNATIONAL_OUTGOING:
+ {
+ pMainMenuTableView->SetItemChecked(0, CALLBARRING_INTERNATIONAL_CALL, isBarringActivated);
+ }
+ break;
+
+ case CALL_BARRING_INTERNATIONAL_EXCEPT_HOME:
+ {
+ pMainMenuTableView->SetItemChecked(0, CALLBARRING_INTERNATIONAL_EXCEPT_HOME, isBarringActivated);
+ }
+ break;
+
+ case CALL_BARRING_ALL_INCOMING:
+ {
+ pMainMenuTableView->SetItemChecked(0, CALLBARRING_ALL_INCOMING_CALL, isBarringActivated);
+ }
+ break;
+
+ case CALL_BARRING_INCOMING_ROAMING:
+ {
+ pMainMenuTableView->SetItemChecked(0, CALLBARRING_INCOMING_WHILE_ROAMING, isBarringActivated);
+ }
+ break;
+
+ default:
+ break;
+ }
+ pMainMenuTableView->Invalidate(true);
+ }
+}
+void
+SettingsCallForwardWaitBarrForm::HandleGetCallBarringResponse(bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated)
+{
+ if (__formType == FORMTYPE_VOICE_CALLBARRING)
+ {
+ //todo: grey out the item if call is unsuccessful
+ GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ switch (callBarringType)
+ {
+ case CALL_BARRING_ALL_OUTGOING:
+ {
+ pMainMenuTableView->SetItemChecked(0, CALLBARRING_ALL_OUTGOING_CALL, isBarringActivated);
+ }
+ break;
+
+ case CALL_BARRING_INTERNATIONAL_OUTGOING:
+ {
+ pMainMenuTableView->SetItemChecked(0, CALLBARRING_INTERNATIONAL_CALL, isBarringActivated);
+ }
+ break;
+
+ case CALL_BARRING_INTERNATIONAL_EXCEPT_HOME:
+ {
+ pMainMenuTableView->SetItemChecked(0, CALLBARRING_INTERNATIONAL_EXCEPT_HOME, isBarringActivated);
+ }
+ break;
+
+ case CALL_BARRING_ALL_INCOMING:
+ {
+ pMainMenuTableView->SetItemChecked(0, CALLBARRING_ALL_INCOMING_CALL, isBarringActivated);
+ }
+ break;
+
+ case CALL_BARRING_INCOMING_ROAMING:
+ {
+ pMainMenuTableView->SetItemChecked(0, CALLBARRING_INCOMING_WHILE_ROAMING, isBarringActivated);
+ }
+ break;
+
+ default:
+ break;
+ }
+ pMainMenuTableView->Invalidate(true);
+ }
+}
+
+void
+SettingsCallForwardWaitBarrForm::UncheckAllOptions(void)
+{
+ //un-check all items
+ GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ if(pMainMenuTableView != null)
+ {
+ switch(__formType)
+ {
+ case FORMTYPE_VOICE_CALLFORWARDING:
+ {
+ for (int itemIndex = CALLFORWARD_ALWAYS; itemIndex < CALLFORWARD_TOTALITEMCOUNT; itemIndex++)
+ {
+ pMainMenuTableView->SetItemChecked(0, itemIndex, false);
+ }
+ }
+ break;
+
+ case FORMTYPE_VOICE_CALLBARRING:
+ {
+ for (int itemIndex = CALLBARRING_ALL_OUTGOING_CALL; itemIndex < CALLBARRING_TOTALCOUNT; itemIndex++)
+ {
+ pMainMenuTableView->SetItemChecked(0, itemIndex, false);
+ }
+ }
+ break;
+
+ case FORMTYPE_CALL_WAITING:
+ {
+ __isCallWaitingStatusAvailable = true;
+ __isCallWaitingEnabled = false;
+ pMainMenuTableView->RefreshItem(0, CALLWAITING_ITEM, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+ break;
+
+ default:
+ break;
+ }
+ pMainMenuTableView->Invalidate(true);
+ }
+}
+
+void
+SettingsCallForwardWaitBarrForm::ShowErrorMessage(int errorCode)
+{
+ //show error msg Popup
+ if (__pErrorMsgPopup == null)
+ {
+ __pErrorMsgPopup = new (std::nothrow) ErrorMsgPopup(this);
+ }
+ __pErrorMsgPopup->ShowErrorMsgPopupN(errorCode);
+}
+
+void
+SettingsCallForwardWaitBarrForm::HandlePopupClosed(void)
+{
+ Draw();
+ delete __pErrorMsgPopup;
+ __pErrorMsgPopup = null;
+ return;
+}
--- /dev/null
+//
+// 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 PhnSettingsCallForwardWaitBarrForm.cpp
+ * @brief Call setting tone form
+ */
+#include <FApp.h>
+#include "PhnAppUtility.h"
+#include "PhnSettingsCallStatusTonesForm.h"
+#include "PhnSettingsConstants.h"
+#include "PhnSettingsPresentationModel.h"
+#include "PhnSceneRegister.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+static const wchar_t* IDL_SETTINGS_STATUS_TONES_FORM = L"IDL_SETTINGS_STATUS_TONES_FORM";
+
+SettingsCallStatusTonesForm::SettingsCallStatusTonesForm(void)
+{
+}
+
+SettingsCallStatusTonesForm::~SettingsCallStatusTonesForm(void)
+{
+}
+
+void
+SettingsCallStatusTonesForm::Initialize(void)
+{
+ Construct(IDL_SETTINGS_STATUS_TONES_FORM);
+}
+
+result
+SettingsCallStatusTonesForm::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+
+ __pSettingsPresentor = SettingsPresentationModel::GetInstance();
+
+ // Setup back event listener
+ SetFormBackEventListener(this);
+ //Footer
+ Footer* pFooter = GetFooter();
+ if (pFooter)
+ {
+ pFooter->SetButtonColor(BUTTON_ITEM_STATUS_NORMAL, pFooter->GetColor());
+ pFooter->AddActionEventListener(*this);
+ }
+
+ //initialize table view
+ r = InitializeGroupedTableView();
+
+ return r;
+}
+
+result
+SettingsCallStatusTonesForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+ __pSettingsPresentor = null;
+ return r;
+}
+
+void
+SettingsCallStatusTonesForm::OnActionPerformed(const Control& source, int actionId)
+{
+ switch (actionId)
+ {
+ default:
+ break;
+ }
+}
+
+void
+SettingsCallStatusTonesForm::OnFormBackRequested(Controls::Form& source)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager != null);
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MORE_OPTIONS), null);
+}
+
+void
+SettingsCallStatusTonesForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
+{
+}
+
+void
+SettingsCallStatusTonesForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
+{
+}
+
+result
+SettingsCallStatusTonesForm::InitializeGroupedTableView(void)
+{
+ result r = E_FAILURE;
+ GroupedTableView* pStatusTonesTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ if (pStatusTonesTableView != null)
+ {
+ pStatusTonesTableView->SetGroupedLookEnabled(true);
+ pStatusTonesTableView->SetItemProvider(this);
+ r = pStatusTonesTableView->AddGroupedTableViewItemEventListener(*this);
+ }
+ return r;
+}
+
+void
+SettingsCallStatusTonesForm::OnGroupedTableViewItemStateChanged(GroupedTableView& tableView, int groupIndex, int itemIndex, TableViewItem* pItem, TableViewItemStatus status)
+{
+ bool activateState = false;
+ if (status == TABLE_VIEW_ITEM_STATUS_CHECKED)
+ {
+ activateState = true;
+ }
+ switch (groupIndex)
+ {
+ case GROUP_CALL_CONNECT:// for "CALLCONNECT_CONNECT_TONE" item
+ {
+ if (status == TABLE_VIEW_ITEM_STATUS_SELECTED)
+ {
+ if (__pSettingsPresentor->GetCallConnectToneStatus() == true)
+ {
+ activateState = false;
+ }
+ else
+ {
+ activateState = true;
+ }
+ }
+ tableView.SetItemChecked(GROUP_CALL_CONNECT,CALLCONNECT_CONNECT_TONE,activateState);
+ __pSettingsPresentor->SetCallConnectToneStatus(activateState);
+ }
+ break;
+
+ case GROUP_CALL_REMINDER:// for "CALLREMINDER_MINUTE_REMINDERS" item
+ {
+ if (status == TABLE_VIEW_ITEM_STATUS_SELECTED)
+ {
+ if (__pSettingsPresentor->GetMinuteMinderToneStatus() == true)
+ {
+ activateState = false;
+ }
+ else
+ {
+ activateState = true;
+ }
+ }
+ tableView.SetItemChecked(GROUP_CALL_REMINDER,CALLREMINDER_MINUTE_REMINDERS,activateState);
+ __pSettingsPresentor->SetMinuteMinderToneStatus(activateState);
+ }
+ break;
+
+ case GROUP_CALL_END:// for "CALLEND_END_TONE" item
+ {
+ if (status == TABLE_VIEW_ITEM_STATUS_SELECTED)
+ {
+ if (__pSettingsPresentor->GetCallEndToneStatus() == true)
+ {
+ activateState = false;
+ }
+ else
+ {
+ activateState = true;
+ }
+ }
+ tableView.SetItemChecked(GROUP_CALL_END,CALLEND_END_TONE,activateState);
+ __pSettingsPresentor->SetCallEndToneStatus(activateState);
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+int
+SettingsCallStatusTonesForm::GetGroupCount(void)
+{
+ return GROUP_TOTALCOUNT;
+}
+
+int
+SettingsCallStatusTonesForm::GetItemCount(int groupIndex)
+{
+ int itemCount = 0;
+ switch (groupIndex)
+ {
+ case GROUP_CALL_CONNECT:
+ {
+ itemCount = CALLCONNECT_TOTALCOUNT;
+ }
+ break;
+
+ case GROUP_CALL_REMINDER:
+ {
+ itemCount = CALLREMINDER_TOTALCOUNT;
+ }
+ break;
+
+ case GROUP_CALL_END:
+ {
+ itemCount = CALLEND_TOTALCOUNT;
+ }
+ break;
+
+ case GROUP_CALL_CONNECT_HLPTXT:
+ case GROUP_CALL_REMINDER_HLPTXT:
+ case GROUP_CALL_END_HLPTXT:
+ {
+ itemCount = 0;
+ }
+ break;
+
+ default:
+ break;
+ }
+ return itemCount;
+}
+
+TableViewGroupItem*
+SettingsCallStatusTonesForm::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ String helpText(L"");
+ int groupHeight = H_LIST_HIDDENGROUP_ITEM;
+ switch (groupIndex)
+ {
+ case GROUP_CALL_CONNECT_HLPTXT:
+ {
+ helpText.Append(AppUtility::GetResourceString(IDS_SETTING_CONNECTTONE_HLP_STRING));
+ groupHeight = H_LIST_MENU_TWOLINE_HLPTXT_ITEM;
+ }
+ break;
+
+ case GROUP_CALL_REMINDER_HLPTXT:
+ {
+ helpText.Append(AppUtility::GetResourceString(IDS_SETTING_REMINDERS_HLP_STRING));
+ groupHeight = H_LIST_MENU_SINGLELINE_HLPTXT_ITEM;
+ }
+ break;
+
+ case GROUP_CALL_END_HLPTXT:
+ {
+ helpText.Append(AppUtility::GetResourceString(IDS_SETTING_ENDTONE_HLP_STRING));
+ groupHeight = H_LIST_MENU_TWOLINE_HLPTXT_ITEM;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ TableViewGroupItem* pItem = new (std::nothrow) TableViewGroupItem();
+ if (helpText.IsEmpty() == true)
+ {
+ pItem->Construct(Dimension(itemWidth, groupHeight));
+ pItem->SetBackgroundColor(COLOR_GROUP_ITEM_BG);
+ }
+ else
+ {
+ //help text item rectangle
+ Rectangle helpItemRect(X_LIST_MENU_HLPTXT_ITEM, 0, (itemWidth - X_LIST_MENU_HLPTXT_ITEM), groupHeight);
+ pItem->Construct(Dimension(itemWidth, groupHeight));
+ Label* pItemLbl = new (std::nothrow) Label();
+ pItemLbl->Construct(helpItemRect, helpText);
+ pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pItemLbl->SetTextConfig(FONT_SIZE_HELP_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pItemLbl->SetTextColor(COLOR_HELP_TXT);
+ pItem->AddControl(*pItemLbl);
+ pItem->SetEnabled(false);
+ pItem->SetBackgroundColor(COLOR_HELP_ITEM_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ pItem->SetBackgroundColor(COLOR_HELP_ITEM_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+ }
+ return pItem;
+}
+
+bool
+SettingsCallStatusTonesForm::DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem)
+{
+ delete pItem;
+ pItem = null;
+ return true;
+}
+
+void
+SettingsCallStatusTonesForm::UpdateGroupItem(int groupIndex, TableViewGroupItem* pItem)
+{
+ return;
+}
+
+TableViewItem*
+SettingsCallStatusTonesForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ GroupedTableView* pStatusTonesTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ //text item rectangle
+ Rectangle itemRect(X_LIST_MENU_TEXT_ITEM, 0, (itemWidth - X_LIST_MENU_TEXT_ITEM), H_LIST_NORMAL_MENU_ITEM);
+
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING);
+
+ //Set the item name and status for all menu items
+ String itemName(L"");
+ bool activateState = false;
+ switch (groupIndex)
+ {
+ case GROUP_CALL_CONNECT:// for "CALLCONNECT_CONNECT_TONE" item
+ {
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_CONNECTTONE_STRING));
+ activateState = __pSettingsPresentor->GetCallConnectToneStatus();
+ }
+ break;
+
+ case GROUP_CALL_REMINDER:// for "CALLREMINDER_MINUTE_REMINDERS" item
+ {
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_REMINDERS_STRING));
+ activateState = __pSettingsPresentor->GetMinuteMinderToneStatus();
+ }
+ break;
+
+ case GROUP_CALL_END:// for "CALLEND_END_TONE" item
+ {
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_ENDTONE_STRING));
+ activateState = __pSettingsPresentor->GetCallEndToneStatus();
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ //Item Name
+ Label* pItemLbl = new (std::nothrow) Label();
+ pItemLbl->Construct(itemRect, itemName);
+ pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pItemLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pItemLbl->SetTextColor(COLOR_NORMAL_MAIN_TXT);//COLOR_PRESS_MAIN_TXT
+ pItem->AddControl(*pItemLbl);
+ pItem->SetBackgroundColor(COLOR_LIST_MENU_ITEM, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+
+ //set status
+ pStatusTonesTableView->SetItemChecked(groupIndex, itemIndex, activateState);
+ return pItem;
+}
+
+bool
+SettingsCallStatusTonesForm::DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem)
+{
+ delete pItem;
+ pItem = null;
+ return true;
+}
+
+void
+SettingsCallStatusTonesForm::UpdateItem(int groupIndex, int itemIndex, TableViewItem* pItem)
+{
+ return;
+}
+
+int
+SettingsCallStatusTonesForm::GetDefaultGroupItemHeight(void)
+{
+ return H_LIST_HIDDENGROUP_ITEM;
+}
+
+int
+SettingsCallStatusTonesForm::GetDefaultItemHeight(void)
+{
+ return H_LIST_NORMAL_MENU_ITEM;
+}
--- /dev/null
+//
+// 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 PhnSettingsConstants.cpp
+ * @brief Call setting tone form
+ */
+#include "PhnSettingsConstants.h"
+
+using namespace Tizen::Graphics;
+
+// String Constants - Bitmap File
+const wchar_t* IDB_CONTROLBAR_SAVE_ICON = L"C01-4_controlbar_icon_save.png";
+const wchar_t* IDB_CONTROLBAR_ICON_DELETE = L"C01-4_controlbar_icon_delete.png";
+const wchar_t* IDB_CANCEL_BTN_NORMAL = L"00_button_cancel_normal.png";
+const wchar_t* IDB_VOICECALL_ICON = L"C01-5_icon_voicecall.png";
+const wchar_t* IDB_LIST_EXPAND = L"00_list_expand_closed.png";
+const wchar_t* IDB_LIST_EXPAND_PRESSED = L"00_list_expand_closed_press.png";
+const wchar_t* IDB_LIST_OPENED = L"00_list_expand_opened.png";
+const wchar_t* IDB_LIST_OPENED_PRESSED = L"00_list_expand_opened_press.png";
+const wchar_t* IDB_BACK_HEADER_ITEM = L"00_icon_Back.png";
+const wchar_t* IDB_BACK_HEADER_ITEM_PRESSED = L"00_icon_Back_press.png";
+const wchar_t* IDB_CANCEL_FOOTER_ITEM = L"C01-5_icon_cancel.png";
+const wchar_t* IDB_PROCESSING_ICONS = L"00_list_process_";
+
+//control name
+const wchar_t* IDC_GROUPEDTABLEVIEW = L"IDC_GROUPEDTABLEVIEW";
+const wchar_t* IDC_LISTVIEW = L"IDC_LISTVIEW";
+const wchar_t* IDC_NUMBER_EDITFIELD = L"IDC_NUMBER_EDITFIELD";
+const wchar_t* IDC_SELECT_CONTACT_BUTTON = L"IDC_SELECT_CONTACT_BUTTON";
+const wchar_t* IDC_FOWARDING_NUMBER_EDITFIELD = L"IDC_FOWARDING_NUMBER_EDITFIELD";
+const wchar_t* IDC_VOICEMAIL_BUTTON = L"IDC_VOICEMAIL_BUTTON";
+const wchar_t* IDC_REJECTMSG_EXPANDABLEEDITAREA = L"IDC_REJECTMSG_EXPANDABLEEDITAREA";
+const wchar_t* IDC_EDITFIELD = L"IDC_EDITFIELD";
+const wchar_t* IDC_SELECTEDOPTION_SUBTEXT_LABEL = L"IDC_SELECTEDOPTION_SUBTEXT_LABEL";
+const wchar_t* IDC_ANIMATION_CONTROL = L"IDC_ANIMATION_CONTROL";
+
+//resource string contants
+const wchar_t* IDS_ADD_BTN_STRING = L"IDS_ADD_BTN_STRING";
+const wchar_t* IDS_DELETE_BTN_STRING = L"IDS_DELETE_BTN_STRING";
+const wchar_t* IDS_CANCEL_BTN_STRING = L"IDS_CANCEL_BTN_STRING";
+const wchar_t* IDS_REMOVE_CONTACT = L"IDS_REMOVE_CONTACT";
+const wchar_t* IDS_DELETE_NUMBER_TITLE = L"IDS_SETTINGS_DELETE_NUMBER_TITLE_STRING";
+const wchar_t* IDS_DELETE_MSGS_TITLE = L"IDS_SETTINGS_DELETE_MSGS_TITLE_STRING";
+const wchar_t* IDS_SELECT_ALL_LIST_ITEM_STRING = L"IDS_SELECT_ALL_LIST_ITEM_STRING";
+const wchar_t* IDS_DEFAULT_REJECT_ITEM_STRING = L"IDS_DEFAULT_REJECT_ITEM_STRING";
+const wchar_t* IDS_SETTINGS_MATCHCRITERIA_STRING = L"IDS_SETTINGS_MATCHCRITERIA_STRING";
+const wchar_t* IDS_CALLERID_BYNETWORK_STRING = L"IDS_CALLERID_BYNETWORK_STRING";
+const wchar_t* IDS_CALLERID_SHOW_STRING = L"IDS_CALLERID_SHOW_STRING";
+const wchar_t* IDS_CALLERID_HIDE_STRING = L"IDS_CALLERID_HIDE_STRING";
+const wchar_t* IDS_SETTING_CALLALERT_OFF_STRING = L"IDS_SETTING_CALLALERT_OFF_STRING";
+const wchar_t* IDS_SETTING_CALLALERT_SOUND_STRING = L"IDS_SETTING_CALLALERT_SOUND_STRING";
+const wchar_t* IDS_SETTING_CALLALERT_VIBRATE_STRING = L"IDS_SETTING_CALLALERT_VIBRATE_STRING";
+const wchar_t* IDS_SETTING_BARRING_STRING = L"IDS_SETTING_BARRING_STRING";
+const wchar_t* IDS_SETTING_WAITING_STRING = L"IDS_SETTING_WAITING_STRING";
+const wchar_t* IDS_SETTING_WAITING_HLP_STRING = L"IDS_SETTING_WAITING_HLP_STRING";
+const wchar_t* IDS_SETTING_STATUS_TONES_STRING = L"IDS_SETTING_STATUS_TONES_STRING";
+const wchar_t* IDS_SETTING_STATUS_TONES_HLP_STRING = L"IDS_SETTING_STATUS_TONES_HLP_STRING";
+const wchar_t* IDS_SETTING_AUTO_AREACODE_STRING = L"IDS_SETTING_AUTO_AREACODE_STRING";
+const wchar_t* IDS_SETTING_AUTO_AREACODE_HLP_STRING = L"IDS_SETTING_AUTO_AREACODE_HLP_STRING";
+const wchar_t* IDS_SETTING_REJECT_STRING = L"IDS_SETTING_REJECT_STRING";
+const wchar_t* IDS_SETTING_REJECT_HLP_STRING = L"IDS_SETTING_REJECT_HLP_STRING";
+const wchar_t* IDS_SETTING_REJECT_MSG_STRING = L"IDS_SETTING_REJECT_MSG_STRING";
+const wchar_t* IDS_SETTING_REJECT_MSG_HLP_STRING = L"IDS_SETTING_REJECT_MSG_HLP_STRING";
+const wchar_t* IDS_SETTING_SPEEDDIAL_STRING = L"IDS_SETTING_SPEEDDIAL_STRING";
+const wchar_t* IDS_SETTING_FORWARDING_STRING = L"IDS_SETTING_FORWARDING_STRING";
+const wchar_t* IDS_SETTING_MORE_MAIN_STRING = L"IDS_SETTING_MORE_MAIN_STRING";
+const wchar_t* IDS_SETTING_MORE_SUB_STRING = L"IDS_SETTING_MORE_SUB_STRING";
+const wchar_t* IDS_SETTING_WAITING_TIME_STRING = L"IDS_SETTING_WAITING_TIME_STRING";
+const wchar_t* IDS_SETTING_WAIT_INTERVAL_STRING = L"IDS_SETTING_WAIT_INTERVAL_STRING";
+const wchar_t* IDS_SETTING_CONNECTTONE_STRING = L"IDS_SETTING_CONNECTTONE_STRING";
+const wchar_t* IDS_SETTING_CONNECTTONE_HLP_STRING = L"IDS_SETTING_CONNECTTONE_HLP_STRING";
+const wchar_t* IDS_SETTING_REMINDERS_STRING = L"IDS_SETTING_REMINDERS_STRING";
+const wchar_t* IDS_SETTING_REMINDERS_HLP_STRING = L"IDS_SETTING_REMINDERS_HLP_STRING";
+const wchar_t* IDS_SETTING_ENDTONE_STRING = L"IDS_SETTING_ENDTONE_STRING";
+const wchar_t* IDS_SETTING_ENDTONE_HLP_STRING = L"IDS_SETTING_ENDTONE_HLP_STRING";
+const wchar_t* IDS_SETTING_FORWARD_CALLTYPE_TITLE = L"IDS_SETTING_FORWARD_CALLTYPE_TITLE_STRING";
+const wchar_t* IDS_SETTING_BARRING_CALLTYPE_TITLE = L"IDS_SETTING_BARRING_CALLTYPE_TITLE_STRING";
+const wchar_t* IDS_SETTING_VOICEFORWARD_OPTIONS_TITLE = L"IDS_SETTING_VOICEFORWARD_OPTIONS_TITLE_STRING";
+const wchar_t* IDS_SETTING_VOICEBARRING_OPTIONS_TITLE = L"IDS_SETTING_VOICEBARRING_OPTIONS_TITLE_STRING";
+const wchar_t* IDS_SETTING_WAITING_OPTIONS_TITLE = L"IDS_SETTING_WAITING_OPTIONS_TITLE_STRING";
+const wchar_t* IDS_SETTING_CALLTYPE_VOICE_STRING = L"IDS_SETTING_CALLTYPE_VOICE_STRING";
+const wchar_t* IDS_SETTING_VOICEFORWARD_ALWAYS = L"IDS_SETTING_VOICEFORWARD_ALWAYS_STRING";
+const wchar_t* IDS_SETTING_VOICEFORWARD_IFBUSY = L"IDS_SETTING_VOICEFORWARD_IFBUSY_STRING";
+const wchar_t* IDS_SETTING_VOICEFORWARD_NOREPLY = L"IDS_SETTING_VOICEFORWARD_NOREPLY_STRING";
+const wchar_t* IDS_SETTING_VOICEFORWARD_OUTOFREACH = L"IDS_SETTING_VOICEFORWARD_OUTOFREACH_STRING";
+const wchar_t* IDS_SETTING_DEACTIVATE_STATUS = L"IDS_SETTING_DEACTIVATE_STATUS_STRING";
+const wchar_t* IDS_SETTING_VOICEBARRING_OUTGOING = L"IDS_SETTING_VOICEBARRING_OUTGOING_STRING";
+const wchar_t* IDS_SETTING_VOICEBARRING_INTERNATIONAL = L"IDS_SETTING_VOICEBARRING_INTERNATIONAL_STRING";
+const wchar_t* IDS_SETTING_VOICEBARRING_EXCEPTHOME = L"IDS_SETTING_VOICEBARRING_EXCEPTHOME_STRING";
+const wchar_t* IDS_SETTING_VOICEBARRING_INCOMING = L"IDS_SETTING_VOICEBARRING_INCOMING_STRING";
+const wchar_t* IDS_SETTING_VOICEBARRING_WHENROAMING = L"IDS_SETTING_VOICEBARRING_WHENROAMING_STRING";
+const wchar_t* IDS_SETTING_CALL_WAITING_OPTIONS = L"IDS_SETTING_CALL_WAITING_OPTIONS_STRING";
+const wchar_t* IDS_MATCHCRITERIA_EXACT = L"IDS_MATCHCRITERIA_EXACT_STRING";
+const wchar_t* IDS_MATCHCRITERIA_START = L"IDS_MATCHCRITERIA_START_STRING";
+const wchar_t* IDS_MATCHCRITERIA_END = L"IDS_MATCHCRITERIA_END_STRING";
+const wchar_t* IDS_MATCHCRITERIA_INCLUDE = L"IDS_MATCHCRITERIA_INCLUDE_STRING";
+const wchar_t* IDS_SETTING_CALLERID_MAIN_STR = L"IDS_SETTING_CALLERID_MAIN_STRING";
+const wchar_t* IDS_SETTING_CALLERID_SUB_STR = L"IDS_SETTING_CALLERID_SUB_STRING";
+const wchar_t* IDS_SETTING_CALL_ALERT_MAIN_STR = L"IDS_SETTING_CALL_ALERT_MAIN_STRING";
+const wchar_t* IDS_SETTING_CALL_ALERT_SUB_STR = L"IDS_SETTING_CALL_ALERT_SUB_STRING";
+const wchar_t* IDS_SETTING_SAVE_HEADER_ITEM = L"IDS_SETTING_SAVE_HEADER_ITEM";
+const wchar_t* IDS_SETTING_DONE_HEADER_ITEM = L"IDS_SETTING_DONE_HEADER_ITEM";
+const wchar_t* IDS_NOT_ASSIGNED_STR = L"IDS_NOT_ASSIGNED_STR";
+
+// Dimensions used in List views //
+// menu item height
+const int H_LIST_HIDDENGROUP_ITEM = 1;
+const int H_LIST_NORMAL_MENU_ITEM = 112;
+const int H_LIST_DROPDOWN_MENU_ITEM = 128;
+const int H_LIST_MENU_SINGLELINE_HLPTXT_ITEM = 102;
+const int H_LIST_MENU_TWOLINE_HLPTXT_ITEM = 140;
+//text item height
+const int H_LIST_NORMAL_TXT_ITEM = 54;
+const int H_LIST_SUB_TXT_ITEM = 38;
+//Two line text for Drop down menu item
+const int H_LIST_DROPDOWN_TXT_ITEM = 52;
+//single line text
+const int X_LIST_MENU_TEXT_ITEM = 26;
+const int Y_LIST_MENU_TEXT_ITEM = 8;
+//Help text
+const int X_LIST_MENU_HLPTXT_ITEM = 26;
+const int Y_LIST_MENU_HLPTXT_ITEM = 8;
+//custom Item for Bg line
+const int Y_CUSTOM_BG_ELEMENT = 0;
+//Position for delete list item
+const int X_DEL_LIST_ELEMENT = 16;
+const int Y_DEL_LIST_ELEMENT = 0;
+
+// Dimensions for icons //
+//Expand icon for DropDown Menu Items
+const int W_EXPAND_ICON = 64;
+const int H_EXPAND_ICON = 64;
+const int W_SLIDER_ICON = 150;
+const int H_SLIDER_ICON = 64;
+//contact icon for Add Rejected Number view
+const int W_CONTACT_ICON = 128;
+const int H_CONTACT_ICON = 128;
+//Dimensions for custom bg line
+const int W_CUSTOM_BG_ELEMENT = 1;
+//Item Width for delete list
+const int W_DELETE_LIST_ITEM = 628;
+const int W_LEFT_HEADER_EXPAND_ITEMS = 8;
+
+const int FONT_SIZE_MAIN_TXT = 44;
+const int FONT_SIZE_SUB_TXT = 32;
+//Help text
+const int FONT_SIZE_HELP_TXT = 32;
+//Header, Footer icon
+const int W_HDR_FTR_ICON = 60;
+const int H_HDR_FTR_ICON = 60;
+//Processing Animation constants
+const int IDI_ANIM_DURATION = 500;
+const int IDI_ANIM_PROGRESS_COUNT = 30;
+
+//Settings UI contants
+// Colors used in List views //
+const unsigned int COLOR_GROUP_ITEM_BG = Color32<249, 249, 249>::Value;
+const unsigned int COLOR_LIST_MENU_ITEM = Color32<236, 240, 242>::Value;
+const unsigned int COLOR_SECONDDEPTH_ITEM_BG = Color32<215, 225, 232>::Value;
+const unsigned int COLOR_HELP_ITEM_BG = Color32<255, 255, 255, 0>::Value;
+const unsigned int COLOR_NORMAL_MAIN_TXT = Color32<102, 102, 102>::Value;
+const unsigned int COLOR_NORMAL_SUB_TXT = Color32<124, 124, 124>::Value;
+const unsigned int COLOR_PRESS_SUB_TXT = Color32<42, 137, 194>::Value;
+const unsigned int COLOR_PRESS_MAIN_TXT = Color32<249, 249, 249>::Value;
+const unsigned int COLOR_HELP_TXT = Color32<124, 124, 124>::Value;
+const unsigned int COLOR_LEFT_HEADER_EXPAND_ITEMS = Color32<108, 168, 199>::Value;
+//Main List Option text
+const unsigned int COLOR_MAIN_TXT = Color32<0, 0, 0>::Value;
+const unsigned int COLOR_NORMAL_ITEM_BG = Color32<249, 249, 249>::Value;
+const unsigned int COLOR_PRESS_ITEM_BG = Color32<42, 137, 194>::Value;
+const unsigned int COLOR_SELECTALL_ITEM_BG = Color32<215, 225, 232>::Value;
--- /dev/null
+//
+// 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 PhnSettingsDeleteListForm.cpp
+ * @brief Settings Delete list form
+ */
+#include <FApp.h>
+#include "PhnAppUtility.h"
+#include "PhnCustomItemBgElement.h"
+#include "PhnSettingsConstants.h"
+#include "PhnSettingsDeleteListForm.h"
+#include "PhnSettingsPresentationModel.h"
+#include "PhnSceneRegister.h"
+#include "PhnTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+//constants
+const int IDI_SELECT_ALL_ITEM_ELEMENT_ID = 20010;
+//by default, list has 1 item
+const int IDI_DEFAULT_LIST_COUNT = 1;
+//Element Id for main text used in List view item
+const int IDI_LIST_MAIN_TXT_ITEMID = 1000;
+static const wchar_t* IDL_SETTINGS_DELETE_LIST_FORM = L"IDL_SETTINGS_DELETE_LIST_FORM";
+static const wchar_t* IDC_LABEL_DELETE_SELECTED = L"IDC_LABEL_DELETE_SELECTED";
+
+static const unsigned int COLOR_DELETE_LABEL_SELECTED = Color32<215, 225, 232, 255>::Value;
+
+SettingsDeleteListForm::SettingsDeleteListForm(ListOfType listOfType)
+ : __listOfType(listOfType)
+ , __pNumbersList(null)
+ , __pMsgsMap(null)
+ , __pSettingsPresentor(null)
+ , __checkedItemCount(0)
+ , __pSelectedLabel(null)
+{
+}
+
+SettingsDeleteListForm::~SettingsDeleteListForm(void)
+{
+}
+
+void
+SettingsDeleteListForm::Initialize(void)
+{
+ Construct(IDL_SETTINGS_DELETE_LIST_FORM);
+}
+
+result
+SettingsDeleteListForm::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+
+ __pSettingsPresentor = SettingsPresentationModel::GetInstance();
+
+ String title(L"");
+ switch (__listOfType)
+ {
+ case LISTOF_NUMBERS:
+ {
+ title.Append(AppUtility::GetResourceString(IDS_DELETE_NUMBER_TITLE));
+ }
+ break;
+
+ case LISTOF_MESSAGES:
+ {
+ title.Append(AppUtility::GetResourceString(IDS_DELETE_MSGS_TITLE));
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ //set Title
+ Header* pHeader = GetHeader();
+ if (pHeader != null)
+ {
+ pHeader->SetTitleText(title);
+ }
+ //Initialize Footer
+ InitializeFooter();
+
+ //initialize list view
+ r = InitializeListView();
+ return r;
+}
+
+void
+SettingsDeleteListForm::InitializeSelectLabel()
+{
+ __pSelectedLabel = static_cast<Label*>(GetControl(IDC_LABEL_DELETE_SELECTED));
+ if(__pSelectedLabel != null)
+ {
+ if(__listOfType == LISTOF_NUMBERS)
+ {
+ __pSelectedLabel->SetText(AppUtility::GetResourceString(IDS_SELECT_NUMBER));
+ }
+ else if(__listOfType == LISTOF_MESSAGES)
+ {
+ __pSelectedLabel->SetText(AppUtility::GetResourceString(IDS_SELECT_MESSAGE));
+ }
+
+ SetControlAlwaysOnTop(*__pSelectedLabel,true);
+ __pSelectedLabel->SetBackgroundColor(COLOR_DELETE_LABEL_SELECTED);
+ __pSelectedLabel->SetShowState(true);
+ }
+}
+void
+SettingsDeleteListForm::InitializeFooter(void)
+{
+ Footer* pFooter = GetFooter();
+ if (pFooter != null)
+ {
+ pFooter->SetStyle(FOOTER_STYLE_BUTTON_ICON_TEXT);
+
+ String footerItemName(L"");
+ //Delete footer item
+ footerItemName.Append(AppUtility::GetResourceString(IDS_DELETE_BTN_STRING));
+ FooterItem delFooterItem;
+ delFooterItem.Construct(IDA_DELETE_FOOTER_ITEMID);
+ delFooterItem.SetText(footerItemName);
+ pFooter->InsertItemAt(0, delFooterItem);
+ pFooter->SetItemEnabled(0, false);
+
+ //Cancel button
+ Bitmap* pNormalBmp = AppUtility::GetBitmapFromResourcesN(IDB_CANCEL_FOOTER_ITEM, W_HDR_FTR_ICON, H_HDR_FTR_ICON);
+ ButtonItem cancelButtonItem;
+ cancelButtonItem.Construct(BUTTON_ITEM_STYLE_ICON, IDA_CANCEL_FOOTER_ITEMID);
+ cancelButtonItem.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pNormalBmp);
+ cancelButtonItem.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pNormalBmp);
+ pFooter->SetButton(BUTTON_POSITION_RIGHT, cancelButtonItem);
+ delete pNormalBmp;
+ pNormalBmp = null;
+
+ pFooter->AddActionEventListener(*this);
+ }
+}
+
+result
+SettingsDeleteListForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pNumbersList)
+ {
+ delete __pNumbersList;
+ __pNumbersList = null;
+ }
+
+ if (__pMsgsMap)
+ {
+ delete __pMsgsMap;
+ __pMsgsMap = null;
+ }
+ __pSettingsPresentor = null;
+ return r;
+}
+
+void
+SettingsDeleteListForm::OnActionPerformed(const Control& source, int actionId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager != null);
+
+ switch (actionId)
+ {
+ case IDA_CANCEL_FOOTER_ITEMID:
+ {
+ if (__listOfType == LISTOF_NUMBERS)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_REJECTLIST_MENU), null);
+ }
+ else
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_REJECTMSGS_MENU), null);
+ }
+ }
+ break;
+ case IDA_DELETE_FOOTER_ITEMID:
+ {
+ if (__listOfType == LISTOF_NUMBERS)
+ {
+ DeleteRejectNumbersList();
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_REJECTLIST_MENU), null);
+ }
+ else
+ {
+ DeleteRejectMsgsList();
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_REJECTMSGS_MENU), null);
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+void
+SettingsDeleteListForm::DeleteRejectNumbersList(void)
+{
+ ListView* pDelListView = static_cast<ListView*>(GetControl(IDC_LISTVIEW));
+ if (pDelListView != null)
+ {
+ for (int index = 1; index < pDelListView->GetItemCount(); index++)
+ {
+ if (pDelListView->IsItemChecked(index) == true)
+ {
+ CallRejectInfo rejectInfo;
+ __pNumbersList->GetAt(index-1, rejectInfo);
+ __pSettingsPresentor->RemoveCallRejectRow(rejectInfo.rowId);
+ }
+ }
+ }
+}
+
+void
+SettingsDeleteListForm::DeleteRejectMsgsList(void)
+{
+ IListT<int> *pMsgKeyList = __pMsgsMap->GetKeysN();
+ //list of deleted keys
+ ArrayListT<int> *pDelKeyList = new (std::nothrow) ArrayListT<int>();
+ pDelKeyList->Construct();
+ //fetch checked messages to be deleted
+ ListView* pDelListView = static_cast<ListView*>(GetControl(IDC_LISTVIEW));
+ if (pDelListView != null)
+ {
+ for (int index = 1; index < pDelListView->GetItemCount(); index++)
+ {
+ if (pDelListView->IsItemChecked(index) == true)
+ {
+ int key;
+ if(pMsgKeyList->GetAt(index-1, key) == E_SUCCESS)
+ {
+ pDelKeyList->Add(key);
+ }
+ }
+ }
+ }
+ delete pMsgKeyList;
+ //delete messages
+ if(pDelKeyList->GetCount() > 0)
+ {
+ __pSettingsPresentor->RemoveRejectMessage(*pDelKeyList);
+ }
+ delete pDelKeyList;
+}
+
+void
+SettingsDeleteListForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
+{
+ // Add your scene activate code here
+ switch (__listOfType)
+ {
+ case LISTOF_NUMBERS:
+ {
+ //fetch "reject numbers" or "reject msg" list
+ FetchNumbersRejectList();
+ }
+ break;
+
+ case LISTOF_MESSAGES:
+ {
+ //fetch "reject msgs" list
+ FetchRejectMsgsList();
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ ListView* pDelListView = static_cast<ListView*>(GetControl(IDC_LISTVIEW));
+ if (pDelListView != null)
+ {
+ pDelListView->UpdateList();
+ int itemCount = pDelListView->GetItemCount();
+ for(int itemIndex = itemCount-1; itemIndex >=0 ; itemIndex--)
+ {
+ bool isSelected = pDelListView->IsItemChecked(itemIndex);
+ if(isSelected == true)
+ {
+ pDelListView->SetItemChecked(itemIndex,false);
+ }
+ }
+ }
+ __checkedItemCount = 0;
+ Footer* pFooter = GetFooter();
+ if(pFooter != null)
+ {
+ pFooter->SetItemEnabled(0, false);
+ pFooter->Invalidate(true);
+ }
+ //to show selected msg or numbers
+ InitializeSelectLabel();
+}
+
+void
+SettingsDeleteListForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
+{
+}
+
+void
+SettingsDeleteListForm::FetchNumbersRejectList(void)
+{
+ if (__pNumbersList != null)
+ {
+ delete __pNumbersList;
+ __pNumbersList = null;
+ }
+ __pNumbersList = static_cast<ArrayListT<CallRejectInfo>*>(__pSettingsPresentor->GetCallRejectList());
+}
+
+void
+SettingsDeleteListForm::FetchRejectMsgsList(void)
+{
+ if (__pMsgsMap != null)
+ {
+ delete __pMsgsMap;
+ __pMsgsMap = null;
+ }
+ //item to be fetched from Db
+ __pMsgsMap = __pSettingsPresentor->GetRejectMessageListN();
+}
+
+result
+SettingsDeleteListForm::InitializeListView(void)
+{
+ result r = E_FAILURE;
+ ListView* pDelListView = static_cast<ListView*>(GetControl(IDC_LISTVIEW));
+ if (pDelListView != null)
+ {
+ pDelListView->SetBackgroundColor(this->GetBackgroundColor());
+ pDelListView->AddListViewItemEventListener(*this);
+ r = pDelListView->SetItemProvider(*this);
+ }
+ return r;
+}
+
+void
+SettingsDeleteListForm::OnListViewItemStateChanged(ListView& listView, int index, int elementId, ListItemStatus status)
+{
+ String text;
+ String selStr;
+ switch (index)
+ {
+ case 0://"Select All"
+ {
+ bool isSelect = (status == LIST_ITEM_STATUS_CHECKED);
+ SelectAllItems(isSelect);
+ }
+ break;
+
+ default:
+ {
+ ListView* pDelListView = static_cast<ListView*>(GetControl(IDC_LISTVIEW));
+ bool isItemUnchecked = (status == LIST_ITEM_STATUS_UNCHECKED);
+ if(isItemUnchecked == true)
+ {
+ __checkedItemCount--;
+ //un-check "Select All", if it was checked earlier and any other item is unchecked.
+ if(pDelListView->IsItemChecked(0) == true)
+ {
+ pDelListView->SetItemChecked(0,false);
+ }
+ }
+ else
+ {
+ __checkedItemCount++;
+ if(pDelListView->GetItemCount() == (__checkedItemCount+1))
+ {
+ pDelListView->SetItemChecked(0,true);
+ }
+ }
+ if (__checkedItemCount == 0)
+ {
+
+ if(__listOfType == LISTOF_NUMBERS)
+ {
+ selStr = AppUtility::GetResourceString(IDS_SELECT_NUMBER);
+ }
+ else if(__listOfType == LISTOF_MESSAGES)
+ {
+ selStr = AppUtility::GetResourceString(IDS_SELECT_MESSAGE);
+ }
+ __pSelectedLabel->SetText(selStr);
+ }
+ else
+ {
+ if(__listOfType == LISTOF_NUMBERS)
+ {
+ //selStr = AppUtility::GetResourceString(IDS_NUMBER_SELECTED);
+ if(__checkedItemCount > 1)
+ {
+ selStr = AppUtility::GetResourceString(IDS_NUMBERS_SELECTED);
+ }
+ else
+ {
+ selStr = AppUtility::GetResourceString(IDS_NUMBER_SELECTED);
+ }
+ }
+ else if(__listOfType == LISTOF_MESSAGES)
+ {
+ if(__checkedItemCount > 1)
+ {
+ selStr = AppUtility::GetResourceString(IDS_MESSAGES_SELECTED);
+ }
+ else
+ {
+ selStr = AppUtility::GetResourceString(IDS_MESSAGE_SELECTED);
+ }
+
+ }
+ text.Format(100, selStr.GetPointer(), __checkedItemCount);
+ __pSelectedLabel->SetText(text);
+ }
+ pDelListView->Invalidate(true);
+ __pSelectedLabel->Invalidate(false);
+ }
+ break;
+ }
+
+ Footer* pFooter = GetFooter();
+ if(pFooter != null)
+ {
+ if(__checkedItemCount > 0)
+ {
+ pFooter->SetItemEnabled(0, true);
+ }
+ else
+ {
+ pFooter->SetItemEnabled(0, false);
+ }
+ pFooter->Invalidate(true);
+ }
+}
+
+void
+SettingsDeleteListForm::OnListViewItemSwept(ListView& listView, int index, SweepDirection direction)
+{
+}
+void
+SettingsDeleteListForm::OnListViewContextItemStateChanged(ListView& listView, int index, int elementId, ListContextItemStatus state)
+{
+}
+
+void
+SettingsDeleteListForm::OnListViewItemLongPressed(ListView& listView, int index, int elementId, bool& invokeListViewItemCallback)
+{
+}
+
+void
+SettingsDeleteListForm::SelectAllItems(bool isSelect)
+{
+ String text;
+ String selStr;
+ ListView* pDelListView = static_cast<ListView*>(GetControl(IDC_LISTVIEW));
+ int itemCount = pDelListView->GetItemCount();
+ for (int index = 1; index < itemCount; index++)
+ {
+ pDelListView->SetItemChecked(index,isSelect);
+ }
+ pDelListView->RequestRedraw();
+ if(isSelect)
+ {
+ __checkedItemCount = pDelListView->GetItemCount()-1;
+ if(__listOfType == LISTOF_NUMBERS)
+ {
+ if(__checkedItemCount > 1)
+ {
+ selStr = AppUtility::GetResourceString(IDS_NUMBERS_SELECTED);
+ }
+ else
+ {
+ selStr = AppUtility::GetResourceString(IDS_NUMBER_SELECTED);
+ }
+
+ }
+ else if(__listOfType == LISTOF_MESSAGES)
+ {
+ if(__checkedItemCount > 1)
+ {
+ selStr = AppUtility::GetResourceString(IDS_MESSAGES_SELECTED);
+ }
+ else
+ {
+ selStr = AppUtility::GetResourceString(IDS_MESSAGE_SELECTED);
+ }
+ }
+ text.Format(100, selStr.GetPointer(), __checkedItemCount);
+ __pSelectedLabel->SetText(text);
+ }
+ else
+ {
+ __checkedItemCount = 0;
+ if(__listOfType == LISTOF_NUMBERS)
+ {
+ selStr = AppUtility::GetResourceString(IDS_SELECT_NUMBER);
+ }
+ else if(__listOfType == LISTOF_MESSAGES)
+ {
+ selStr = AppUtility::GetResourceString(IDS_SELECT_MESSAGE);
+ }
+ __pSelectedLabel->SetText(selStr);
+
+ }
+
+ __pSelectedLabel->Invalidate(false);
+ Draw();
+}
+
+int
+SettingsDeleteListForm::GetItemCount(void)
+{
+ int itemCount = IDI_DEFAULT_LIST_COUNT;
+
+ switch (__listOfType)
+ {
+ case LISTOF_NUMBERS:
+ {
+ if (__pNumbersList != null)
+ {
+ itemCount += __pNumbersList->GetCount();
+ }
+ }
+ break;
+
+ case LISTOF_MESSAGES:
+ {
+ if (__pMsgsMap != null)
+ {
+ itemCount += __pMsgsMap->GetCount();
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+ return itemCount;
+}
+
+ListItemBase*
+SettingsDeleteListForm::CreateItem(int index, int itemWidth)
+{
+ CustomItem* pItem = null;
+
+ if (index == 0)
+ {
+ //Default Item - "SELECT ALL"
+ pItem = new (std::nothrow) CustomItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), LIST_ANNEX_STYLE_MARK);
+
+ String itemName = AppUtility::GetResourceString(IDS_SELECT_ALL_LIST_ITEM_STRING);
+ pItem->AddElement(Rectangle(X_DEL_LIST_ELEMENT, Y_DEL_LIST_ELEMENT, W_DELETE_LIST_ITEM, H_LIST_NORMAL_MENU_ITEM), IDI_SELECT_ALL_ITEM_ELEMENT_ID, itemName, false);
+ pItem->SetElementTextHorizontalAlignment(IDI_LIST_MAIN_TXT_ITEMID, ALIGNMENT_LEFT);
+ pItem->SetElementTextVerticalAlignment(IDI_LIST_MAIN_TXT_ITEMID, ALIGNMENT_MIDDLE);
+ pItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_NORMAL, COLOR_SELECTALL_ITEM_BG);
+ }
+ else
+ {
+ switch (__listOfType)
+ {
+ case LISTOF_NUMBERS:
+ pItem = CreateListItemForNumbers(index, itemWidth);
+ break;
+
+ case LISTOF_MESSAGES:
+ pItem = CreateListItemForMsgs(index, itemWidth);
+ break;
+
+ default:
+ break;
+
+ }
+ }
+
+ return pItem;
+}
+
+CustomItem*
+SettingsDeleteListForm::CreateListItemForNumbers(int index, int itemWidth)
+{
+ CustomItem* pItem = null;
+ int listIndex = index - 1;
+
+ if (__pNumbersList != null && listIndex < __pNumbersList->GetCount())
+ {
+ //fetch number
+ String number;
+ CallRejectInfo rejectInfo;
+ __pNumbersList->GetAt(listIndex, rejectInfo);
+ number.Append(rejectInfo.phoneNumber);
+ //create list item
+ pItem = new (std::nothrow) CustomItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), LIST_ANNEX_STYLE_MARK);
+
+ pItem->AddElement(Rectangle(X_DEL_LIST_ELEMENT, Y_DEL_LIST_ELEMENT, W_DELETE_LIST_ITEM, H_LIST_NORMAL_MENU_ITEM), listIndex, number,
+ FONT_SIZE_MAIN_TXT, COLOR_NORMAL_SUB_TXT, COLOR_PRESS_MAIN_TXT, COLOR_PRESS_MAIN_TXT, false);
+ pItem->SetElementTextHorizontalAlignment(listIndex, ALIGNMENT_LEFT);
+ pItem->SetElementTextVerticalAlignment(listIndex, ALIGNMENT_MIDDLE);
+ pItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_NORMAL, COLOR_NORMAL_ITEM_BG);
+ pItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_PRESSED, COLOR_PRESS_ITEM_BG);
+ }
+ return pItem;
+}
+
+CustomItem*
+SettingsDeleteListForm::CreateListItemForMsgs(int index, int itemWidth)
+{
+ CustomItem* pItem = null;
+ int listIndex = index - 1;
+
+ if (__pMsgsMap != null && listIndex < __pMsgsMap->GetCount())
+ {
+ IListT<String> *pMsgList = __pMsgsMap->GetValuesN();
+ if(pMsgList != null)
+ {
+ //fetch number
+ String message;
+ pMsgList->GetAt(listIndex, message);
+
+ //create list item
+ pItem = new (std::nothrow) CustomItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), LIST_ANNEX_STYLE_MARK);
+
+ pItem->AddElement(Rectangle(X_DEL_LIST_ELEMENT, Y_DEL_LIST_ELEMENT, W_DELETE_LIST_ITEM, H_LIST_NORMAL_MENU_ITEM), listIndex, message,
+ FONT_SIZE_MAIN_TXT, COLOR_NORMAL_SUB_TXT, COLOR_PRESS_MAIN_TXT, COLOR_PRESS_MAIN_TXT, false);
+ pItem->SetElementTextHorizontalAlignment(listIndex, ALIGNMENT_LEFT);
+ pItem->SetElementTextVerticalAlignment(listIndex, ALIGNMENT_MIDDLE);
+ pItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_NORMAL, COLOR_NORMAL_ITEM_BG);
+ pItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_PRESSED, COLOR_PRESS_ITEM_BG);
+ delete pMsgList;
+ }
+ }
+ return pItem;
+}
+
+bool
+SettingsDeleteListForm::DeleteItem(int index, ListItemBase* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+ return true;
+}
--- /dev/null
+//
+// 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 PhnSettingsEditRejectMsgForm.cpp
+ * @brief Settings Edit reject message form
+ */
+#include <FApp.h>
+#include "PhnAppUtility.h"
+#include "PhnSettingsConstants.h"
+#include "PhnSettingsPresentationModel.h"
+#include "PhnSettingsEditRejectMsgForm.h"
+#include "PhnSceneRegister.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Graphics;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+
+static const wchar_t* IDL_SETTINGS_ADD_EDIT_REJECT_MSGS_FORM = L"IDL_SETTINGS_ADD_EDIT_REJECT_MSGS_FORM";
+
+SettingsEditRejectMsgForm::SettingsEditRejectMsgForm(FormMode formMode)
+ : __formMode(formMode),__pSettingsPresentor(null)
+{
+}
+
+SettingsEditRejectMsgForm::~SettingsEditRejectMsgForm(void)
+{
+}
+
+bool
+SettingsEditRejectMsgForm::Initialize(void)
+{
+ Construct(IDL_SETTINGS_ADD_EDIT_REJECT_MSGS_FORM);
+ return true;
+}
+
+result
+SettingsEditRejectMsgForm::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+
+ //Initialize Header
+ InitializeHeader();
+ //Initialize reject message editArea
+ ExpandableEditArea* pEditMsgs = static_cast<ExpandableEditArea*>(GetControl(IDC_REJECTMSG_EXPANDABLEEDITAREA));
+ if (pEditMsgs != null)
+ {
+ pEditMsgs->AddTextEventListener(*this);
+ pEditMsgs->SetFocus();
+ pEditMsgs->ShowKeypad();
+ }
+
+ return r;
+}
+
+void
+SettingsEditRejectMsgForm::InitializeHeader(void)
+{
+ Header* pHeader = GetHeader();
+ if (pHeader != null)
+ {
+ pHeader->SetStyle(HEADER_STYLE_BUTTON);
+
+ //'Save' item
+ String saveItemName;
+ saveItemName.Append(AppUtility::GetResourceString(IDS_SETTING_SAVE_HEADER_ITEM));
+ HeaderItem saveHeaderItem;
+ saveHeaderItem.Construct(IDA_SAVE_HEADER_ITEMID);
+ saveHeaderItem.SetText(saveItemName);
+ pHeader->AddItem(saveHeaderItem);
+ pHeader->SetItemEnabled(0,false);
+
+ //'Cancel' item
+ ButtonItem cancelHeaderItem;
+ cancelHeaderItem.Construct(BUTTON_ITEM_STYLE_ICON, IDA_CANCEL_HEADER_ITEMID);
+ Bitmap* pNormalBmp = AppUtility::GetBitmapFromResourcesN(IDB_BACK_HEADER_ITEM, W_HDR_FTR_ICON, H_HDR_FTR_ICON);
+ Bitmap* pPressBmp = AppUtility::GetBitmapFromResourcesN(IDB_BACK_HEADER_ITEM_PRESSED, W_HDR_FTR_ICON, H_HDR_FTR_ICON);
+ cancelHeaderItem.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pNormalBmp);
+ cancelHeaderItem.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pPressBmp);
+ pHeader->SetButton(BUTTON_POSITION_RIGHT, cancelHeaderItem);
+ delete pNormalBmp;
+ pNormalBmp = null;
+ delete pPressBmp;
+ pPressBmp = null;
+
+ pHeader->AddActionEventListener(*this);
+ }
+}
+
+result
+SettingsEditRejectMsgForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+ return r;
+}
+
+void
+SettingsEditRejectMsgForm::OnActionPerformed(const Control& source, int actionId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager != null);
+
+ switch (actionId)
+ {
+ case IDA_CANCEL_HEADER_ITEMID:
+ {
+ }
+ break;
+
+ case IDA_SAVE_HEADER_ITEMID:
+ {
+ if (__itemIndex != -1)
+ {
+ String msgString;
+ ExpandableEditArea* pEditMsgs = static_cast<ExpandableEditArea*>(GetControl(IDC_REJECTMSG_EXPANDABLEEDITAREA));
+ if (pEditMsgs != null)
+ {
+ if (pEditMsgs->GetTextLength() == 0)
+ {
+ //switch back to previous form
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_REJECTMSGS_MENU), null);
+ return;
+ }
+ msgString.Append(pEditMsgs->GetText());
+ }
+ __pSettingsPresentor->SetRejectMessage(__itemIndex, msgString);
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ //switch back to previous form
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_REJECTMSGS_MENU), null);
+}
+
+void
+SettingsEditRejectMsgForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
+{
+ __itemIndex = -1;
+
+ __pSettingsPresentor = SettingsPresentationModel::GetInstance();
+ ExpandableEditArea* pEditMsgs = static_cast<ExpandableEditArea*>(GetControl(IDC_REJECTMSG_EXPANDABLEEDITAREA));
+ if (__formMode == FORMMODE_EDIT_MESSAGE && pArgs != null)
+ {
+ __itemIndex = (static_cast<Integer*>(pArgs->GetAt(0)))->ToInt();
+ String* pRejectMsg = static_cast<String*>(pArgs->GetAt(1));
+ if (pEditMsgs != null)
+ {
+ pEditMsgs->SetText(*pRejectMsg);
+ pEditMsgs->SetFocus();
+ }
+ }
+ else if (__formMode == FORMMODE_NEW_MESSAGE && pArgs != null)
+ {
+ __itemIndex = (static_cast<Integer*>(pArgs->GetAt(0)))->ToInt();
+ if (pEditMsgs != null)
+ {
+ pEditMsgs->Clear();
+ pEditMsgs->SetFocus();
+ }
+ }
+
+ //Enable or disable save button
+ Header* pHeader = GetHeader();
+ bool enableSaveHeaderItem = (__formMode == FORMMODE_EDIT_MESSAGE);
+ if (pHeader)
+ {
+ pHeader->SetItemEnabled(0, enableSaveHeaderItem);
+ pHeader->Invalidate(true);
+ }
+
+ if (pArgs)
+ {
+ pArgs->RemoveAll();
+ delete pArgs;
+ pArgs = null;
+ }
+}
+
+void
+SettingsEditRejectMsgForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
+{
+ // Add your scene deactivate code here
+ __pSettingsPresentor = null;
+ ExpandableEditArea* pEditMsgs = static_cast<ExpandableEditArea*>(GetControl(IDC_REJECTMSG_EXPANDABLEEDITAREA));
+ if (pEditMsgs != null)
+ {
+ pEditMsgs->HideKeypad();
+ }
+}
+
+void
+SettingsEditRejectMsgForm::OnTextValueChanged(const Control& source)
+{
+ int textLen = -1;
+ ExpandableEditArea* pEditMsgs = static_cast<ExpandableEditArea*>(GetControl(IDC_REJECTMSG_EXPANDABLEEDITAREA));
+ if (pEditMsgs)
+ {
+ textLen = pEditMsgs->GetTextLength();
+ Header* pHeader = GetHeader();
+ if (textLen > 0)
+ {
+ //Enable save button
+ pHeader->SetItemEnabled(0, true);
+ }
+ else
+ {
+ //disable
+ pHeader->SetItemEnabled(0, false);
+ }
+ pHeader->Invalidate(true);
+ }
+}
+
+void
+SettingsEditRejectMsgForm::OnTextValueChangeCanceled(const Control& source)
+{
+}
--- /dev/null
+//
+// 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 PhnSettingsForwardToNumberForm.cpp
+ * @brief Setting Forward to number form
+ */
+#include <FApp.h>
+#include <FBase.h>
+#include "PhnAppUtility.h"
+#include "PhnCallPresentationModel.h"
+#include "PhnSettingsConstants.h"
+#include "PhnSettingsPresentationModel.h"
+#include "PhnSettingsForwardToNumberForm.h"
+#include "PhnSceneRegister.h"
+#include "PhnTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+static const wchar_t* IDL_SETTINGS_NOREPLY_FORWARDTO_NUMBER_FORM = L"IDL_SETTINGS_NOREPLY_FORWARDTO_NUMBER_FORM";
+static const wchar_t* IDL_SETTINGS_FORWARDTO_NUMBER_FORM = L"IDL_SETTINGS_FORWARDTO_NUMBER_FORM";
+const int IDI_WAITTIMEOPTIONS_TOTALCOUNT = 6;
+
+SettingsForwardToNumberForm::SettingsForwardToNumberForm(ForwardCondition forwardCondition)
+ : __forwardCondition(forwardCondition)
+ , __pSettingsPresentor(null)
+ , __selectedWaitTime(WAITTIMEOPTIONS_THIRTY_SEC)
+ , __isWaitTimeOptionsMenuExpanded(false)
+ , __pErrorMsgPopup(null)
+{
+}
+
+SettingsForwardToNumberForm::~SettingsForwardToNumberForm(void)
+{
+}
+
+bool
+SettingsForwardToNumberForm::Initialize(void)
+{
+ switch (__forwardCondition)
+ {
+ case FORWARDCONDITION_NOREPLY:
+ {
+ Construct(IDL_SETTINGS_NOREPLY_FORWARDTO_NUMBER_FORM);
+ }
+ break;
+
+ default:
+ {
+ Construct(IDL_SETTINGS_FORWARDTO_NUMBER_FORM);
+ }
+ break;
+ }
+
+ return true;
+}
+
+result
+SettingsForwardToNumberForm::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+ //Initialize Header
+ InitializeHeader();
+ //Initialize list view
+ r = InitializeGroupedTableView();
+ TryReturn(r == E_SUCCESS,r,"GroupedTableView initialization failed");
+ //Initialize numeric edit field
+ InitializeNumberEditField();
+ return r;
+}
+
+void
+SettingsForwardToNumberForm::InitializeHeader(void)
+{
+ Header* pHeader = GetHeader();
+ if (pHeader != null)
+ {
+ pHeader->SetStyle(HEADER_STYLE_BUTTON);
+ //'Done' item
+ String doneItemName;
+ doneItemName.Append(AppUtility::GetResourceString(IDS_SETTING_DONE_HEADER_ITEM));
+ HeaderItem doneHeaderItem;
+ doneHeaderItem.Construct(IDA_SAVE_HEADER_ITEMID);
+ doneHeaderItem.SetText(doneItemName);
+ pHeader->AddItem(doneHeaderItem);
+ pHeader->SetItemEnabled(0, false);
+
+ //'Cancel' item
+ ButtonItem cancelHeaderItem;
+ cancelHeaderItem.Construct(BUTTON_ITEM_STYLE_ICON, IDA_CANCEL_HEADER_ITEMID);
+ Bitmap* pNormalBmp = AppUtility::GetBitmapFromResourcesN(IDB_CANCEL_FOOTER_ITEM, W_HDR_FTR_ICON, H_HDR_FTR_ICON);
+ cancelHeaderItem.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pNormalBmp);
+ cancelHeaderItem.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pNormalBmp);
+ pHeader->SetButton(BUTTON_POSITION_RIGHT, cancelHeaderItem);
+ delete pNormalBmp;
+ pNormalBmp = null;
+
+ pHeader->AddActionEventListener(*this);
+ }
+}
+
+result
+SettingsForwardToNumberForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+ return r;
+}
+
+void
+SettingsForwardToNumberForm::OnActionPerformed(const Control& source, int actionId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager != null);
+
+ switch (actionId)
+ {
+ case IDA_CANCEL_HEADER_ITEMID:
+ {
+ //go back to previous form
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_FORWARD_OPTIONS), null);
+ }
+ break;
+
+ case IDA_SAVE_HEADER_ITEMID:
+ {
+ EditField* pEditFieldNumber = static_cast<EditField*>(GetControl(IDC_FOWARDING_NUMBER_EDITFIELD));
+ if (pEditFieldNumber != null)
+ {
+ //disable all other forwarding conditions, if 'CALL_FORWARD_ALL' is activated
+ /*if(__callForwardCondition == CALL_FORWARD_ALL)
+ {
+ __pSettingsPresentor->SetCallForwardStatus(L"", CALL_FORWARD_BUSY, false, 0);
+ __pSettingsPresentor->SetCallForwardStatus(L"", CALL_FORWARD_NO_REPLY, false, 0);
+ __pSettingsPresentor->SetCallForwardStatus(L"", CALL_FORWARD_NOT_REACHABLE, false, 0);
+ }*/
+
+ //enable status
+ String phoneNumber = pEditFieldNumber->GetText();
+ int errorCode = __pSettingsPresentor->SetCallForwardStatus(phoneNumber, __callForwardCondition, true, __selectedWaitTime);
+ if(errorCode != ERROR_NONE)
+ {
+ ShowErrorMessage(errorCode);
+ return;
+ }
+ }
+ //go back to previous form
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_FORWARD_OPTIONS), null);
+ }
+ break;
+
+ case IDA_VOICEMAIL:
+ {
+ }
+ break;
+
+ case IDA_SELECT_CONTACT:
+ {
+ LaunchContactsAppControl();
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+void
+SettingsForwardToNumberForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
+{
+ __pSettingsPresentor = SettingsPresentationModel::GetInstance();
+ __pSettingsPresentor->AddSettingEventListener(this);
+
+ if (pArgs != null)
+ {
+ int errorCode = ERROR_NONE;
+ Integer* indexInt = static_cast<Integer*>(pArgs->GetAt(0));
+ switch (indexInt->ToInt())
+ {
+ case 0:
+ {
+ __callForwardCondition = CALL_FORWARD_ALL;
+ }
+ break;
+
+ case 1:
+ {
+ __callForwardCondition = CALL_FORWARD_BUSY;
+ }
+ break;
+
+ case 2:
+ {
+ __callForwardCondition = CALL_FORWARD_NO_REPLY;
+ }
+ break;
+
+ case 3:
+ {
+ __callForwardCondition = CALL_FORWARD_NO_REPLY;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ if(pMainMenuTableView != null)
+ {
+ __selectedWaitTime = WAITTIMEOPTIONS_THIRTY_SEC;
+ int selectIndex = (__selectedWaitTime / 5) - 1;
+ //by default, "30 seconds" option is selected
+ pMainMenuTableView->SetItemChecked(GROUP_WAIT_TIME_OPTIONS, selectIndex, true);
+ //uncheck all other items
+ for (int deselectIndex = 0; deselectIndex < selectIndex; deselectIndex++)
+ {
+ pMainMenuTableView->SetItemChecked(GROUP_WAIT_TIME_OPTIONS, deselectIndex, false);
+ }
+ pMainMenuTableView->RefreshItem(GROUP_SELECT_WAIT_TIME, SELECTWAITTIME_WAIT_TIME, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ pMainMenuTableView->Invalidate(true);
+ }
+
+ //fetch forwarding status
+ errorCode = __pSettingsPresentor->GetCallForwardStatus(__callForwardCondition);
+ if(errorCode != ERROR_NONE)
+ {
+ //Show error message popup
+ ShowErrorMessage(errorCode);
+ }
+
+ //clear text field and disable "Done" button
+ EditField* pEditFieldNumber = static_cast<EditField*>(GetControl(IDC_FOWARDING_NUMBER_EDITFIELD));
+ if(pEditFieldNumber != null)
+ {
+ pEditFieldNumber->Clear();
+ pEditFieldNumber->SetFocus();
+ }
+ Header* pHeader = GetHeader();
+ if (pHeader != null)
+ {
+ pHeader->SetItemEnabled(0, false);
+ }
+
+ pArgs->RemoveAll();
+ delete pArgs;
+ pArgs = null;
+ }
+}
+
+void
+SettingsForwardToNumberForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
+{
+ __pSettingsPresentor->RemoveSettingEventListener();
+ EditField* pEditFieldNumber = static_cast<EditField*>(GetControl(IDC_FOWARDING_NUMBER_EDITFIELD));
+ if (pEditFieldNumber != null)
+ {
+ pEditFieldNumber->HideKeypad();
+ }
+}
+
+void
+SettingsForwardToNumberForm::InitializeNumberEditField(void)
+{
+ EditField* pEditFieldNumber = static_cast<EditField*>(GetControl(IDC_FOWARDING_NUMBER_EDITFIELD));
+ if (pEditFieldNumber != null)
+ {
+ pEditFieldNumber->AddKeypadEventListener(*this);
+ pEditFieldNumber->AddTextEventListener(*this);
+ pEditFieldNumber->SetOverlayKeypadCommandButtonVisible(false);
+ }
+
+ Button* pContactBtn = static_cast<Button*>(GetControl(IDC_SELECT_CONTACT_BUTTON));
+ if (pContactBtn != null)
+ {
+ pContactBtn->SetActionId(IDA_SELECT_CONTACT);
+ pContactBtn->AddActionEventListener(*this);
+ }
+
+ Button* pVoiceMailBtn = static_cast<Button*>(GetControl(IDC_VOICEMAIL_BUTTON));
+ if (pVoiceMailBtn != null)
+ {
+ pVoiceMailBtn->SetActionId(IDA_VOICEMAIL);
+ pVoiceMailBtn->AddActionEventListener(*this);
+ }
+}
+
+result
+SettingsForwardToNumberForm::InitializeGroupedTableView(void)
+{
+ result r = E_SUCCESS;
+ GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ if (pMainMenuTableView != null)
+ {
+ pMainMenuTableView->SetGroupedLookEnabled(true);
+ pMainMenuTableView->SetItemProvider(this);
+ r = pMainMenuTableView->AddGroupedTableViewItemEventListener(*this);
+ pMainMenuTableView->UpdateTableView();
+ CollapseSelectiveGroups(pMainMenuTableView);
+ }
+ return r;
+}
+
+void
+SettingsForwardToNumberForm::CollapseSelectiveGroups(GroupedTableView* pMainMenuTableView)
+{
+ //This function should be called only from "InitializeGroupedTableView()".
+ //since collapsing individual groups while GroupTableView construction causes flicker.
+ pMainMenuTableView->CollapseAllGroup();
+ //Expand other groups
+ pMainMenuTableView->ExpandGroup(GROUP_SELECT_WAIT_TIME);
+ pMainMenuTableView->UpdateTableView();
+}
+
+void
+SettingsForwardToNumberForm::OnGroupedTableViewItemStateChanged(GroupedTableView& tableView, int groupIndex, int itemIndex, TableViewItem* pItem, TableViewItemStatus status)
+{
+ switch (groupIndex)
+ {
+ case GROUP_SELECT_WAIT_TIME:
+ {
+ //close overlay keypad
+ EditField* pEditFieldNumber = static_cast<EditField*>(GetControl(IDC_FOWARDING_NUMBER_EDITFIELD));
+ if (pEditFieldNumber != null && pEditFieldNumber->HasFocus() == true)
+ {
+ //If Keyapd is open, then "CloseGroup" in OnKeypadClose() callback
+ pEditFieldNumber->HideKeypad();
+ }
+ else
+ {
+ //keypad is closed, directly expand group
+ ToggleGroupExpansion(tableView, itemIndex);
+ }
+ }
+ break;
+
+ case GROUP_WAIT_TIME_OPTIONS:
+ {
+ HandleSelectedWaitingTime(tableView, itemIndex, status);
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+int
+SettingsForwardToNumberForm::GetGroupCount(void)
+{
+ return GROUP_TOTALCOUNT;
+}
+
+int
+SettingsForwardToNumberForm::GetItemCount(int groupIndex)
+{
+ int itemCount = 0;
+ switch (groupIndex)
+ {
+ case GROUP_SELECT_WAIT_TIME:
+ {
+ itemCount = SELECTWAITTIME_TOTALCOUNT;
+ }
+ break;
+
+ case GROUP_WAIT_TIME_OPTIONS:
+ {
+ itemCount = IDI_WAITTIMEOPTIONS_TOTALCOUNT;
+ }
+ break;
+
+ default:
+ break;
+ }
+ return itemCount;
+}
+
+TableViewGroupItem*
+SettingsForwardToNumberForm::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ TableViewGroupItem* pItem = new (std::nothrow) TableViewGroupItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_HIDDENGROUP_ITEM));
+ pItem->SetBackgroundColor(COLOR_GROUP_ITEM_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ return pItem;
+}
+
+bool
+SettingsForwardToNumberForm::DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem)
+{
+ delete pItem;
+ pItem = null;
+ return true;
+}
+
+void
+SettingsForwardToNumberForm::UpdateGroupItem(int groupIndex, TableViewGroupItem* pItem)
+{
+ return;
+}
+
+TableViewItem*
+SettingsForwardToNumberForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ TableViewItem* pItem = null;
+
+ switch (groupIndex)
+ {
+ case GROUP_SELECT_WAIT_TIME:
+ {
+ pItem = CreateExpandableWaitingItem(itemWidth);
+ }
+ break;
+
+ case GROUP_WAIT_TIME_OPTIONS:
+ {
+ pItem = CreateWaitingTimeOptionsMenuItems(itemIndex, itemWidth);
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return pItem;
+}
+
+bool
+SettingsForwardToNumberForm::DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem)
+{
+ delete pItem;
+ pItem = null;
+ return true;
+}
+
+void
+SettingsForwardToNumberForm::UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ if(groupIndex == GROUP_SELECT_WAIT_TIME && itemIndex == SELECTWAITTIME_WAIT_TIME)
+ {
+ String subText = FetchTextForSelectedOption(__selectedWaitTime);
+ //sub text item
+ Label* pSubTxtLbl = static_cast<Label*>(pItem->GetControl(IDC_SELECTEDOPTION_SUBTEXT_LABEL, true));
+ if(pSubTxtLbl != null)
+ {
+ pSubTxtLbl->SetText(subText);
+ pSubTxtLbl->Invalidate(true);
+ }
+ //set Drop-down icon to item
+ SetExpandIconToItem(pItem, __isWaitTimeOptionsMenuExpanded);
+ }
+}
+
+int
+SettingsForwardToNumberForm::GetDefaultGroupItemHeight(void)
+{
+ return H_LIST_HIDDENGROUP_ITEM;
+}
+
+int
+SettingsForwardToNumberForm::GetDefaultItemHeight(void)
+{
+ return H_LIST_NORMAL_MENU_ITEM;
+}
+
+TableViewItem*
+SettingsForwardToNumberForm::CreateExpandableWaitingItem(int itemWidth)
+{
+ //main text
+ Rectangle mainItemRect(X_LIST_MENU_TEXT_ITEM, Y_LIST_MENU_TEXT_ITEM, (itemWidth - (2 * X_LIST_MENU_TEXT_ITEM) - W_EXPAND_ICON),
+ H_LIST_DROPDOWN_TXT_ITEM);
+ String mainText = AppUtility::GetResourceString(IDS_SETTING_WAITING_TIME_STRING);
+ //sub text
+ Rectangle subItemRect(X_LIST_MENU_TEXT_ITEM, (Y_LIST_MENU_TEXT_ITEM + H_LIST_DROPDOWN_TXT_ITEM),
+ (itemWidth - (2 * X_LIST_MENU_TEXT_ITEM) - W_EXPAND_ICON), H_LIST_DROPDOWN_TXT_ITEM);
+ String subText = FetchTextForSelectedOption(__selectedWaitTime);
+
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_DROPDOWN_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+
+ //main text item
+ Label* pMainTxtLbl = new (std::nothrow) Label();
+ pMainTxtLbl->Construct(mainItemRect, mainText);
+ pMainTxtLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pMainTxtLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pMainTxtLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pMainTxtLbl->SetTextColor(COLOR_NORMAL_MAIN_TXT);
+ pItem->AddControl(*pMainTxtLbl);
+ //sub text item
+ Label* pSubTxtLbl = new (std::nothrow) Label();
+ pSubTxtLbl->Construct(subItemRect, subText);
+ pSubTxtLbl->SetName(IDC_SELECTEDOPTION_SUBTEXT_LABEL);
+ pSubTxtLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pSubTxtLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pSubTxtLbl->SetTextConfig(FONT_SIZE_SUB_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pSubTxtLbl->SetTextColor(COLOR_NORMAL_SUB_TXT);
+ pItem->AddControl(*pSubTxtLbl);
+
+ pItem->SetBackgroundColor(COLOR_LIST_MENU_ITEM, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ //set Drop-down icon to item
+ SetExpandIconToItem(pItem, __isWaitTimeOptionsMenuExpanded);
+ return pItem;
+}
+
+String
+SettingsForwardToNumberForm::FetchTextForSelectedOption(int selectedWaitTimeOption)
+{
+ //default text
+ String subText(L"");
+ switch(selectedWaitTimeOption)
+ {
+ case WAITTIMEOPTIONS_FIVE_SEC:
+ subText.Append(L"5 ");
+ break;
+
+ case WAITTIMEOPTIONS_TEN_SEC:
+ subText.Append(L"10 ");
+ break;
+
+ case WAITTIMEOPTIONS_FIFTEEN_SEC:
+ subText.Append(L"15 ");
+ break;
+
+ case WAITTIMEOPTIONS_TWENTY_SEC:
+ subText.Append(L"20 ");
+ break;
+
+ case WAITTIMEOPTIONS_TWENTYFIVE_SEC:
+ subText.Append(L"25 ");
+ break;
+
+ case WAITTIMEOPTIONS_THIRTY_SEC:
+ default:
+ subText.Append(L"30 ");
+ break;
+ }
+ subText.Append(AppUtility::GetResourceString(IDS_SETTING_WAIT_INTERVAL_STRING));
+ return subText;
+}
+
+void
+SettingsForwardToNumberForm::SetExpandIconToItem(TableViewItem* pItem, bool isExpanded)
+{
+ Bitmap* pNormalIcon = null;
+ Bitmap* pPressIcon = null;
+
+ if (!isExpanded)
+ {
+ pNormalIcon = AppUtility::GetBitmapFromResourcesN(IDB_LIST_EXPAND, W_EXPAND_ICON, H_EXPAND_ICON);
+ pPressIcon = AppUtility::GetBitmapFromResourcesN(IDB_LIST_EXPAND_PRESSED, W_EXPAND_ICON, H_EXPAND_ICON);
+ }
+ else
+ {
+ pNormalIcon = AppUtility::GetBitmapFromResourcesN(IDB_LIST_OPENED, W_EXPAND_ICON, H_EXPAND_ICON);
+ pPressIcon = AppUtility::GetBitmapFromResourcesN(IDB_LIST_OPENED_PRESSED, W_EXPAND_ICON, H_EXPAND_ICON);
+ }
+
+ int itemWidth = pItem->GetWidth();
+ Rectangle iconRect((itemWidth - W_EXPAND_ICON - X_LIST_MENU_TEXT_ITEM),
+ ((H_LIST_DROPDOWN_MENU_ITEM - H_EXPAND_ICON) / 2), W_EXPAND_ICON, H_EXPAND_ICON);
+ //for drawing blue bg header rectangle on left side.
+ Rectangle blueHeaderRect(0,0,W_LEFT_HEADER_EXPAND_ITEMS,pItem->GetHeight());
+ //normal canvas
+ Canvas* pBgCanvas = new (std::nothrow) Canvas();
+ pBgCanvas->Construct(Rectangle(0,0, pItem->GetBounds().width, pItem->GetBounds().height));
+ pBgCanvas->DrawBitmap(iconRect, *pNormalIcon);
+ pBgCanvas->FillRectangle(COLOR_LEFT_HEADER_EXPAND_ITEMS, blueHeaderRect);
+ Bitmap* pActualBgBmp = new (std::nothrow) Bitmap();
+ pActualBgBmp->Construct(*pBgCanvas,pBgCanvas->GetBounds());
+ pItem->SetBackgroundBitmap(pActualBgBmp, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ delete pBgCanvas;
+ delete pActualBgBmp;
+ //pressed canvas
+ pBgCanvas = new (std::nothrow) Canvas();
+ pBgCanvas->Construct(Rectangle(0,0, pItem->GetBounds().width, pItem->GetBounds().height));
+ pBgCanvas->DrawBitmap(iconRect, *pPressIcon);
+ pBgCanvas->FillRectangle(COLOR_LEFT_HEADER_EXPAND_ITEMS, blueHeaderRect);
+ pActualBgBmp = new (std::nothrow) Bitmap();
+ pActualBgBmp->Construct(*pBgCanvas,pBgCanvas->GetBounds());
+ pItem->SetBackgroundBitmap(pActualBgBmp, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+ delete pBgCanvas;
+ delete pActualBgBmp;
+
+ delete pNormalIcon;
+ pNormalIcon = null;
+ delete pPressIcon;
+ pPressIcon = null;
+}
+
+void
+SettingsForwardToNumberForm::ToggleGroupExpansion(GroupedTableView& tableView, int itemIndex)
+{
+ switch (itemIndex)
+ {
+ case SELECTWAITTIME_WAIT_TIME:
+ {
+ if (tableView.IsGroupExpanded(GROUP_WAIT_TIME_OPTIONS))
+ {
+ tableView.CollapseGroup(GROUP_WAIT_TIME_OPTIONS);
+ __isWaitTimeOptionsMenuExpanded = false;
+ }
+ else
+ {
+ tableView.ExpandGroup(GROUP_WAIT_TIME_OPTIONS);
+ __isWaitTimeOptionsMenuExpanded = true;
+ }
+ //Change icon
+ tableView.RefreshItem(GROUP_SELECT_WAIT_TIME, SELECTWAITTIME_WAIT_TIME, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+ break;
+
+ default:
+ break;
+ }
+
+}
+
+TableViewItem*
+SettingsForwardToNumberForm::CreateWaitingTimeOptionsMenuItems(int itemIndex, int itemWidth)
+{
+ //create a new item
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_RADIO);
+ pItem->SetBackgroundColor(COLOR_SECONDDEPTH_ITEM_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+
+ //text item rectangle
+ Rectangle itemRect(X_LIST_MENU_TEXT_ITEM, 0, (itemWidth - X_LIST_MENU_TEXT_ITEM), H_LIST_DROPDOWN_MENU_ITEM);
+ //Option item name
+ String itemName(L"");
+ GroupSelectWaitTimeItems selectedOption = (GroupSelectWaitTimeItems)((itemIndex + 1) * 5);
+ itemName.Append(FetchTextForSelectedOption(selectedOption));
+
+ Label* pItemLbl = new (std::nothrow) Label();
+ pItemLbl->Construct(itemRect, itemName);
+ pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pItemLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pItemLbl->SetTextColor(COLOR_NORMAL_MAIN_TXT);//COLOR_PRESS_MAIN_TXT
+ pItem->AddControl(*pItemLbl);
+ return pItem;
+}
+
+void
+SettingsForwardToNumberForm::HandleSelectedWaitingTime(GroupedTableView& tableView, int itemIndex, TableViewItemStatus status)
+{
+ GroupWaitTimeOptionsItems currentWaitTime = (GroupWaitTimeOptionsItems) ((itemIndex + 1) * 5);
+
+ //check if already checked item is selected
+ if (status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)
+ {
+ tableView.SetItemChecked(GROUP_WAIT_TIME_OPTIONS, itemIndex, true);
+ __selectedWaitTime = currentWaitTime;
+ return;
+ }
+ //uncheck previously selected option
+ if(__selectedWaitTime != currentWaitTime)
+ {
+ int deselectIndex = ((__selectedWaitTime / 5) - 1);
+ tableView.SetItemChecked(GROUP_WAIT_TIME_OPTIONS, deselectIndex, false);
+ tableView.RefreshItem(GROUP_WAIT_TIME_OPTIONS, deselectIndex, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+ //update selected wait time for selected itemIndex
+ __selectedWaitTime = currentWaitTime;
+ //Change icon and sub text for wait time options menu
+ tableView.RefreshItem(GROUP_SELECT_WAIT_TIME, SELECTWAITTIME_WAIT_TIME, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ tableView.Invalidate(true);
+}
+
+void
+SettingsForwardToNumberForm::OnKeypadWillOpen(Tizen::Ui::Control& source)
+{
+ GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ if(pMainMenuTableView != null && __isWaitTimeOptionsMenuExpanded == true)
+ {
+ pMainMenuTableView->CollapseGroup(GROUP_WAIT_TIME_OPTIONS);
+ __isWaitTimeOptionsMenuExpanded = false;
+ //Change icon
+ pMainMenuTableView->RefreshItem(GROUP_SELECT_WAIT_TIME, SELECTWAITTIME_WAIT_TIME, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+}
+
+void
+SettingsForwardToNumberForm::OnKeypadClosed(Tizen::Ui::Control& source)
+{
+ GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ if(pMainMenuTableView != null && __isWaitTimeOptionsMenuExpanded == false)
+ {
+ ToggleGroupExpansion(*pMainMenuTableView, SELECTWAITTIME_WAIT_TIME);
+ }
+}
+
+void
+SettingsForwardToNumberForm::ShowErrorMessage(int errorCode)
+{
+ //show error msg Popup
+ if (__pErrorMsgPopup == null)
+ {
+ __pErrorMsgPopup = new (std::nothrow) ErrorMsgPopup(this);
+ }
+ __pErrorMsgPopup->ShowErrorMsgPopupN(errorCode);
+}
+
+void
+SettingsForwardToNumberForm::HandlePopupClosed(void)
+{
+ Draw();
+ delete __pErrorMsgPopup;
+ __pErrorMsgPopup = null;
+ return;
+}
+
+void
+SettingsForwardToNumberForm::HandleGetCallForwardResponse(bool isCallSuccessful, CallForwardCondition callFwdCondition, const String& callFwdNumber, bool callForwardActivated, int noReplyWaitTime)
+{
+ if (callForwardActivated == true)
+ {
+ //update forward number in text field
+ if(callFwdNumber.IsEmpty() == false)
+ {
+ EditField* pEditFieldNumber = static_cast<EditField*>(GetControl(IDC_FOWARDING_NUMBER_EDITFIELD));
+ if (pEditFieldNumber != null)
+ {
+ pEditFieldNumber->SetText(callFwdNumber);
+ pEditFieldNumber->Invalidate(true);
+ }
+ }
+ //update No Reply Wait time status
+ GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ if (pMainMenuTableView != null)
+ {
+ //un-check all waiting time options
+ int index = 0;
+ while(index < IDI_WAITTIMEOPTIONS_TOTALCOUNT)
+ {
+ pMainMenuTableView->SetItemChecked(GROUP_WAIT_TIME_OPTIONS, index, false);
+ index++;
+ }
+ //enable selected wait time option
+ if(noReplyWaitTime >= WAITTIMEOPTIONS_FIVE_SEC)
+ {
+ int selectedIndex = (noReplyWaitTime / WAITTIMEOPTIONS_FIVE_SEC) - 1;
+ pMainMenuTableView->SetItemChecked(GROUP_WAIT_TIME_OPTIONS, selectedIndex, true);
+ }
+ pMainMenuTableView->Invalidate(true);
+ }
+ }
+}
+
+void
+SettingsForwardToNumberForm::LaunchContactsAppControl(void)
+{
+ result r = E_SUCCESS;
+ HashMap extraData;
+ extraData.Construct();
+
+ extraData.Add(new (std::nothrow) String(SELECTION_MODE), new (std::nothrow) String(SELECTION_MODE_SINGLE));
+ extraData.Add(new (std::nothrow) String(RETURN_TYPE), new (std::nothrow) String(RETURN_TYPE_PHONE));
+
+ AppControl* pAc = AppManager::FindAppControlN(PROVIDER_ID_CONTACTS, OPERATION_ID_PICK);
+ if (pAc != null)
+ {
+ r = pAc->Start(null, null, &extraData, this);
+ delete pAc;
+ }
+ extraData.RemoveAll(true);
+}
+
+void
+SettingsForwardToNumberForm::OnAppControlCompleteResponseReceived(const AppId& appId, const String& operationId, AppCtrlResult appControlResult, const IMap* pExtraData)
+{
+ if (appId.Equals(String(PROVIDER_ID_CONTACTS)) && operationId.Equals(String(OPERATION_ID_PICK))
+ && (appControlResult == APP_CTRL_RESULT_SUCCEEDED))
+ {
+ const String* rettype = static_cast<const String *>(pExtraData->GetValue( String(RETURN_TYPE)));
+ if (rettype->Equals(String(RETURN_TYPE_PHONE)))
+ {
+ const String* pPickResult = static_cast<const String *>(pExtraData->GetValue( String(RETURN_KEY_VALUE)));
+ if (pPickResult != null && pPickResult->IsEmpty() == false)
+ {
+ EditField* pEditFieldNumber = static_cast<EditField*>(GetControl(IDC_FOWARDING_NUMBER_EDITFIELD));
+ Header* pHeader = GetHeader();
+ if (pEditFieldNumber != null && pHeader != null)
+ {
+ pEditFieldNumber->SetText(*pPickResult);
+ pEditFieldNumber->Invalidate(true);
+ //enable "Done" button
+ pHeader->SetItemEnabled(0, true);
+ pHeader->Invalidate(true);
+ }
+ }
+ }
+ }
+
+}
+
+void
+SettingsForwardToNumberForm::OnTextValueChanged(const Control& source)
+{
+ //enable or disable "Done" button
+ EditField* pEditFieldNumber = static_cast<EditField*>(GetControl(IDC_FOWARDING_NUMBER_EDITFIELD));
+ Header* pHeader = GetHeader();
+ if (pEditFieldNumber != null && pHeader != null)
+ {
+ bool activate = false;
+ if(pEditFieldNumber->GetTextLength() > 0)
+ {
+ activate = true;
+ }
+ pHeader->SetItemEnabled(0, activate);
+ pHeader->Invalidate(true);
+ }
+}
+
+void
+SettingsForwardToNumberForm::OnTextValueChangeCanceled(const Control& source)
+{
+ //text change canceled, disable save button
+ const EditField* pEditFieldNumber = static_cast<const EditField*>(&source);
+ Header* pHeader = GetHeader();
+ if (pEditFieldNumber != null && pHeader != null)
+ {
+ pHeader->SetItemEnabled(0, false);
+ pHeader->Invalidate(true);
+ }
+}
+
--- /dev/null
+//
+// 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 PhnSettingsMainMenuForm.cpp
+ * @brief Setting Main menu form
+ */
+#include <FApp.h>
+#include "PhnAppUtility.h"
+#include "PhnSceneRegister.h"
+#include "PhnSettingsConstants.h"
+#include "PhnSettingsMainMenuForm.h"
+#include "PhnSettingsPresentationModel.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::App;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Graphics;
+
+static const wchar_t* IDL_SETTINGS_MAINMENU_FORM = L"IDL_SETTINGS_MAINMENU_FORM";
+
+SettingsMainMenuForm::SettingsMainMenuForm(void)
+{
+}
+
+SettingsMainMenuForm::~SettingsMainMenuForm(void)
+{
+}
+
+bool
+SettingsMainMenuForm::Initialize(void)
+{
+ Construct(IDL_SETTINGS_MAINMENU_FORM);
+ return true;
+}
+
+result
+SettingsMainMenuForm::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+ //Footer
+ Footer* pFooter = GetFooter();
+ if (pFooter)
+ {
+ pFooter->SetBackButton();
+ pFooter->SetButtonColor(BUTTON_ITEM_STATUS_NORMAL, pFooter->GetColor());
+ // Setup back event listener
+ SetFormBackEventListener(this);
+ pFooter->AddActionEventListener(*this);
+ }
+
+ //initialize table view
+ r = InitializeGroupedTableView();
+
+ return r;
+}
+
+result
+SettingsMainMenuForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+ return r;
+}
+
+void
+SettingsMainMenuForm::OnActionPerformed(const Control& source, int actionId)
+{
+ switch (actionId)
+ {
+ default:
+ break;
+ }
+}
+
+void
+SettingsMainMenuForm::OnFormBackRequested(Form& source)
+{
+ UiApp* pApp = UiApp::GetInstance();
+ AppAssert(pApp);
+ pApp->Terminate();
+}
+
+void
+SettingsMainMenuForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
+{
+}
+
+void
+SettingsMainMenuForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
+{
+}
+
+result
+SettingsMainMenuForm::InitializeGroupedTableView(void)
+{
+ result r = E_FAILURE;
+ GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ if (pMainMenuTableView != null)
+ {
+ pMainMenuTableView->SetGroupedLookEnabled(true);
+ pMainMenuTableView->SetItemProvider(this);
+ r = pMainMenuTableView->AddGroupedTableViewItemEventListener(*this);
+ pMainMenuTableView->UpdateTableView();
+ //disabling "call forwarding" option on emulator
+ pMainMenuTableView->SetItemEnabled(GROUP_MAIN_CALL_SETTINGS, MAINCALLSETTINGS_CALLFORWARDING, false);
+ }
+ return r;
+}
+
+void
+SettingsMainMenuForm::OnGroupedTableViewItemStateChanged(GroupedTableView& tableView, int groupIndex, int itemIndex, TableViewItem* pItem, TableViewItemStatus status)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager != null);
+
+ if(groupIndex == GROUP_CALL_REJECTION)
+ {
+ //switch to call reject list form
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_REJECTLIST_MENU), null);
+ }
+ else if(groupIndex == GROUP_REJECT_MSG)
+ {
+ //switch to reject msg list form
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_REJECTMSGS_MENU), null);
+ }
+ else if(groupIndex == GROUP_MAIN_CALL_SETTINGS)
+ {
+ switch (itemIndex)
+ {
+ case MAINCALLSETTINGS_SPEEDDIAL:
+ {
+ //switch to speed dial form
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_SPEED_DIAL), null);
+ }
+ break;
+
+ case MAINCALLSETTINGS_CALLFORWARDING:
+ {
+ //switch to form
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALLTYPE_FORWARD), null);
+ }
+ break;
+
+ case MAINCALLSETTINGS_MORECALLSETTINGS:
+ {
+ //switch to speed dial form
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MORE_OPTIONS), null);
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+}
+
+int
+SettingsMainMenuForm::GetGroupCount(void)
+{
+ return GROUP_TOTALCOUNT;
+}
+
+int
+SettingsMainMenuForm::GetItemCount(int groupIndex)
+{
+ int itemCount = 0;
+ switch (groupIndex)
+ {
+ case GROUP_CALL_REJECTION:
+ itemCount = CALLREJECTION_TOTALCOUNT;
+ break;
+
+ case GROUP_REJECT_MSG:
+ itemCount = REJECTMSG_TOTALCOUNT;
+ break;
+
+ case GROUP_MAIN_CALL_SETTINGS:
+ itemCount = MAINCALLSETTINGS_TOTALCOUNT;
+ break;
+
+ case GROUP_CALL_REJECTION_HLPTXT:
+ case GROUP_REJECT_MSG_HLPTXT:
+ itemCount = 0;
+ break;
+
+ default:
+ break;
+ }
+ return itemCount;
+}
+
+TableViewGroupItem*
+SettingsMainMenuForm::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ String helpText(L"");
+ switch (groupIndex)
+ {
+ case GROUP_CALL_REJECTION_HLPTXT:
+ {
+ helpText.Append(AppUtility::GetResourceString(IDS_SETTING_REJECT_HLP_STRING));
+ }
+ break;
+
+ case GROUP_REJECT_MSG_HLPTXT:
+ {
+ helpText.Append(AppUtility::GetResourceString(IDS_SETTING_REJECT_MSG_HLP_STRING));
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ TableViewGroupItem* pItem = new (std::nothrow) TableViewGroupItem();
+ if (helpText.IsEmpty() == true)
+ {
+ pItem->Construct(Dimension(itemWidth, H_LIST_HIDDENGROUP_ITEM));
+ pItem->SetBackgroundColor(COLOR_GROUP_ITEM_BG);
+ }
+ else
+ {
+ //help text item rectangle
+ Rectangle helpItemRect(X_LIST_MENU_HLPTXT_ITEM, Y_LIST_MENU_HLPTXT_ITEM, (itemWidth - X_LIST_MENU_HLPTXT_ITEM),
+ (H_LIST_MENU_SINGLELINE_HLPTXT_ITEM - Y_LIST_MENU_HLPTXT_ITEM));
+ pItem->Construct(Dimension(itemWidth, H_LIST_MENU_SINGLELINE_HLPTXT_ITEM));
+ Label* pItemLbl = new (std::nothrow) Label();
+ pItemLbl->Construct(helpItemRect, helpText);
+ pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pItemLbl->SetTextConfig(FONT_SIZE_HELP_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pItemLbl->SetTextColor(COLOR_HELP_TXT);
+ pItem->AddControl(*pItemLbl);
+ pItem->SetEnabled(false);
+ pItem->SetBackgroundColor(COLOR_HELP_ITEM_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ pItem->SetBackgroundColor(COLOR_HELP_ITEM_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+ }
+ return pItem;
+}
+
+bool
+SettingsMainMenuForm::DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem)
+{
+ delete pItem;
+ pItem = null;
+ return true;
+}
+
+void
+SettingsMainMenuForm::UpdateGroupItem(int groupIndex, TableViewGroupItem* pItem)
+{
+ return;
+}
+
+TableViewItem*
+SettingsMainMenuForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+
+ //text item rectangle
+ Rectangle itemNameRect(X_LIST_MENU_TEXT_ITEM, 0, (itemWidth - X_LIST_MENU_TEXT_ITEM), H_LIST_NORMAL_MENU_ITEM);
+ //description text rectangle
+ Rectangle descriptionTxtRect(X_LIST_MENU_TEXT_ITEM, H_LIST_NORMAL_TXT_ITEM,
+ (itemWidth - X_LIST_MENU_TEXT_ITEM), H_LIST_SUB_TXT_ITEM);
+ String itemName(L"");
+ String descriptionText(L"");
+ if(groupIndex == GROUP_CALL_REJECTION)
+ {
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_REJECT_STRING));
+ }
+ else if(groupIndex == GROUP_REJECT_MSG)
+ {
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_REJECT_MSG_STRING));
+ }
+ else if(groupIndex == GROUP_MAIN_CALL_SETTINGS)
+ {
+ switch (itemIndex)
+ {
+ case MAINCALLSETTINGS_SPEEDDIAL:
+ {
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_SPEEDDIAL_STRING));
+ }
+ break;
+
+ case MAINCALLSETTINGS_CALLFORWARDING:
+ {
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_FORWARDING_STRING));
+ }
+ break;
+
+ case MAINCALLSETTINGS_MORECALLSETTINGS:
+ {
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_MORE_MAIN_STRING));
+ descriptionText.Append(AppUtility::GetResourceString(IDS_SETTING_MORE_SUB_STRING));
+ //update item Name rectangle
+ itemNameRect.y = Y_LIST_MENU_TEXT_ITEM;
+ itemNameRect.height = H_LIST_NORMAL_TXT_ITEM;
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ //Item Name
+ Label* pItemLbl = new (std::nothrow) Label();
+ pItemLbl->Construct(itemNameRect, itemName);
+ pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pItemLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pItemLbl->SetTextColor(COLOR_NORMAL_MAIN_TXT);//COLOR_PRESS_MAIN_TXT
+ pItem->AddControl(*pItemLbl);
+ //description text
+ if(descriptionText.IsEmpty() == false)
+ {
+ Label* pDescriptionLbl = new (std::nothrow) Label();
+ pDescriptionLbl->Construct(descriptionTxtRect, descriptionText);
+ pDescriptionLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pDescriptionLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pDescriptionLbl->SetTextConfig(FONT_SIZE_SUB_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pDescriptionLbl->SetTextColor(COLOR_NORMAL_SUB_TXT);
+ pItem->AddControl(*pDescriptionLbl);
+ }
+ pItem->SetBackgroundColor(COLOR_LIST_MENU_ITEM, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ return pItem;
+}
+
+bool
+SettingsMainMenuForm::DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem)
+{
+ delete pItem;
+ pItem = null;
+ return true;
+}
+
+void
+SettingsMainMenuForm::UpdateItem(int groupIndex, int itemIndex, TableViewItem* pItem)
+{
+ return;
+}
+
+int
+SettingsMainMenuForm::GetDefaultGroupItemHeight(void)
+{
+ return H_LIST_HIDDENGROUP_ITEM;
+}
+
+int
+SettingsMainMenuForm::GetDefaultItemHeight(void)
+{
+ return H_LIST_NORMAL_MENU_ITEM;
+}
--- /dev/null
+//
+// 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 PhnSettingsManager.cpp
+ * @brief Setting Manager class
+ */
+#include <libintl.h>
+#include <FApp.h>
+#include <FSocial.h>
+#include <FBaseColIList.h>
+#include "vconf.h"
+#include "vconf-internal-ciss-keys.h"
+#include "PhnSettingsManager.h"
+#include "PhnTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Io;
+using namespace Tizen::Social;
+
+SettingsManager* SettingsManager::__pInstance = null;
+
+SettingsManager::SettingsManager(void)
+ : __pTapiHandle(null)
+ , __pSettingsEventListener(null)
+ , __pCallSettingDataService(null)
+{
+
+}
+
+SettingsManager::~SettingsManager(void)
+{
+ //De-initialize the TAPI Library
+ if(__pTapiHandle != null)
+ {
+ tel_deinit(__pTapiHandle);
+ }
+ if (__pCallSettingDataService)
+ {
+ __pCallSettingDataService->CloseDatabase();
+ delete __pCallSettingDataService;
+ }
+ if (__pSettingsEventListener != null)
+ {
+ delete __pSettingsEventListener;
+ }
+}
+
+void SettingsManager::CreateInstance(void)
+{
+ __pInstance = new (std::nothrow) SettingsManager();
+ result r = __pInstance->Construct();
+ if(IsFailed(r))
+ {
+ delete __pInstance;
+ __pInstance = null;
+ return;
+ }
+ std::atexit(&(SettingsManager::DestroyInstance));
+}
+
+void SettingsManager::DestroyInstance(void)
+{
+ delete __pInstance;
+}
+
+result
+SettingsManager::Construct(void)
+{
+ __pCallSettingDataService = CallSettingDataService::CreateInstance();
+ result r = __pCallSettingDataService->OpenDatabase();
+ if(IsFailed(r))
+ {
+ return E_FAILURE;
+ }
+ //initialize telephony
+ __pTapiHandle = tel_init(null);
+ SetCallState(CALL_STATE__CALL_OFF);
+ return E_SUCCESS;
+}
+
+SettingsManager*
+SettingsManager::GetInstance(void)
+{
+ if (__pInstance == null)
+ {
+ CreateInstance();
+ }
+ return __pInstance;
+}
+
+void
+SettingsManager::AddSettingEventListener(ISettingsEventListener* pSettingsEventListener)
+{
+ if (__pSettingsEventListener == null)
+ {
+ __pSettingsEventListener = new (std::nothrow) ArrayListT<ISettingsEventListener*>();
+ }
+
+ //Add to listeners, if not already in list.
+ if ( (pSettingsEventListener != null)
+ && !(__pSettingsEventListener->Contains(pSettingsEventListener)) )
+ {
+ __pSettingsEventListener->Add(pSettingsEventListener);
+ }
+}
+
+void
+SettingsManager::RemoveSettingEventListener(ISettingsEventListener* pSettingsEventListener)
+{
+ if ((__pSettingsEventListener != null) && (pSettingsEventListener != null)
+ && __pSettingsEventListener->Contains(pSettingsEventListener))
+ {
+ __pSettingsEventListener->Remove(pSettingsEventListener);
+ }
+}
+
+void
+SettingsManager::NotifyForwardingEventListeners(ForwardResponseType responseType, bool isCallSuccessful, CallForwardCondition callFwdCondition, const Tizen::Base::String& callFwdNumber, bool isCallForwardActivated, int noReplyWaitTime)
+{
+ IEnumeratorT<ISettingsEventListener*>* pListenerEnum = null;
+ result r = E_FAILURE;
+ if (__pSettingsEventListener != null)
+ {
+ pListenerEnum = __pSettingsEventListener->GetEnumeratorN();
+ //TryReturn(pListenerEnum != null, GetLastResult(), "[%s] Propagated.", GetErrorMessage(GetLastResult()));
+
+ while ((r = pListenerEnum->MoveNext()) != E_OUT_OF_RANGE)
+ {
+ ISettingsEventListener* pListener;
+ r = pListenerEnum->GetCurrent(pListener);
+ //TryCatch(r == E_SUCCESS, , "[%s] Propagated.", GetErrorMessage(r));
+ if (responseType == SET_CALLFORWARD_RESPONSE)
+ {
+ pListener->HandleSetCallForwardResponse(isCallSuccessful, callFwdCondition, callFwdNumber, isCallForwardActivated, noReplyWaitTime);
+ }
+ else
+ {
+ pListener->HandleGetCallForwardResponse(isCallSuccessful, callFwdCondition, callFwdNumber, isCallForwardActivated, noReplyWaitTime);
+ }
+ }
+ }
+}
+
+void
+SettingsManager::NotifyBarringEventListeners(BarringResponseType responseType, bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated)
+{
+ IEnumeratorT<ISettingsEventListener*>* pListenerEnum = null;
+ result r = E_FAILURE;
+ if (__pSettingsEventListener != null)
+ {
+ pListenerEnum = __pSettingsEventListener->GetEnumeratorN();
+ //TryReturn(pListenerEnum != null, GetLastResult(), "[%s] Propagated.", GetErrorMessage(GetLastResult()));
+
+ while ((r = pListenerEnum->MoveNext()) != E_OUT_OF_RANGE)
+ {
+ ISettingsEventListener* pListener;
+ r = pListenerEnum->GetCurrent(pListener);
+ //TryCatch(r == E_SUCCESS, , "[%s] Propagated.", GetErrorMessage(r));
+ if (responseType == SET_CALLBARRING_RESPONSE)
+ {
+ pListener->HandleSetCallBarringResponse(isCallSuccessful, callBarringType, isBarringActivated);
+ }
+ else
+ {
+ pListener->HandleGetCallBarringResponse(isCallSuccessful, callBarringType, isBarringActivated);
+ }
+ }
+ }
+}
+
+void
+SettingsManager::NotifyWaitingEventListeners(WaitingResponseType responseType, bool isCallSuccessful, bool isCallWaitingActivated)
+{
+ IEnumeratorT<ISettingsEventListener*>* pListenerEnum = null;
+ result r = E_FAILURE;
+ if (__pSettingsEventListener != null)
+ {
+ pListenerEnum = __pSettingsEventListener->GetEnumeratorN();
+ //TryReturn(pListenerEnum != null, GetLastResult(), "[%s] Propagated.", GetErrorMessage(GetLastResult()));
+
+ while ((r = pListenerEnum->MoveNext()) != E_OUT_OF_RANGE)
+ {
+ ISettingsEventListener* pListener;
+ r = pListenerEnum->GetCurrent(pListener);
+ //TryCatch(r == E_SUCCESS, , "[%s] Propagated.", GetErrorMessage(r));
+ if (responseType == SET_CALLWAITING_RESPONSE)
+ {
+ pListener->HandleSetCallWaitingResponse(isCallSuccessful, isCallWaitingActivated);
+ }
+ else
+ {
+ pListener->HandleGetCallWaitingResponse(isCallSuccessful, isCallWaitingActivated);
+ }
+ }
+ delete pListenerEnum;
+ }
+}
+
+int
+SettingsManager::SetCallForwardStatus(const String& phoneNumber, CallForwardCondition callFwdCondition, bool activateFwding, int noReplyTime)
+{
+ int errorCode = ERROR_NONE;
+ TryReturn(__pTapiHandle != null, ERROR_TAPI_INIT_FAILED, "Telephony initialization failed");
+
+ TelSsForwardInfo_t forwardInfo;
+ memset(&forwardInfo, 0, sizeof(TelSsForwardInfo_t));
+ forwardInfo.Class = TAPI_SS_CLASS_VOICE;
+ if (activateFwding == true)
+ {
+ forwardInfo.Mode = TAPI_SS_CF_MODE_REGISTRATION_EV;
+ }
+ else
+ {
+ forwardInfo.Mode = TAPI_SS_CF_MODE_ERASURE_EV;
+ }
+ const wchar_t* pContact = phoneNumber.GetPointer();
+ int len = phoneNumber.GetLength()+1;
+ char* pNumber = new (std::nothrow) char[len];
+ wcstombs(pNumber, pContact, len);
+ strncpy(forwardInfo.szPhoneNumber, pNumber, len);
+ delete []pNumber;
+ pNumber = null;
+ switch (callFwdCondition)
+ {
+ case CALL_FORWARD_ALL:
+ {
+ forwardInfo.Condition = TAPI_SS_CF_WHEN_CFU;
+ }
+ break;
+
+ case CALL_FORWARD_BUSY:
+ {
+ forwardInfo.Condition = TAPI_SS_CF_WHEN_CFB;
+ }
+ break;
+
+ case CALL_FORWARD_NO_REPLY:
+ {
+ forwardInfo.Condition = TAPI_SS_CF_WHEN_CFNRy;
+ forwardInfo.NoReplyConditionTimer = TelSsNoReplyTime_t(noReplyTime);
+ }
+ break;
+
+ case CALL_FORWARD_NOT_REACHABLE:
+ {
+ forwardInfo.Condition = TAPI_SS_CF_WHEN_CFNRc;
+ }
+ break;
+
+ default:
+ {
+ return ERROR_INVALID_INPUT;
+ }
+ break;
+ }
+
+ int retStatus = tel_set_ss_forward(__pTapiHandle, &forwardInfo, &HandleSetForwardResponse, this);
+ if (retStatus != TAPI_API_SUCCESS)
+ {
+ errorCode = ERROR_TAPI_ERROR;
+ }
+ return errorCode;
+}
+
+void
+SettingsManager::HandleSetForwardResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData)
+{
+ TelSsForwardResp_t* pResponse = (TelSsForwardResp_t*) pData;
+ SettingsManager* pSettingsManager = (SettingsManager*) pUserData;
+ if (pResponse != null)
+ {
+ int count = pResponse->record_num;
+ for (int index = 0; index < count; index++)
+ {
+ CallForwardCondition callFwdCondition = CALL_FORWARD_ALL;
+ bool isActivated = false;
+ int noReplyWaitTime = 0;
+ //Check if status is "Active or Quiescent" and forwarding number is available
+ if ((pResponse->record[index].Status == TAPI_SS_STATUS_ACTIVE
+ || pResponse->record[index].Status == TAPI_SS_STATUS_QUIESCENT
+ || pResponse->record[index].Status == TAPI_SS_STATUS_REGISTERED)
+ && (pResponse->record[index].bCallForwardingNumberPresent != 0))
+ {
+ isActivated = true;
+ }
+ switch (pResponse->record[index].ForwardCondition)
+ {
+ case TAPI_SS_CF_WHEN_CFU:
+ {
+ callFwdCondition = CALL_FORWARD_ALL;
+ }
+ break;
+
+ case TAPI_SS_CF_WHEN_CFB:
+ {
+ callFwdCondition = CALL_FORWARD_BUSY;
+ }
+ break;
+
+ case TAPI_SS_CF_WHEN_CFNRy:
+ {
+ callFwdCondition = CALL_FORWARD_NO_REPLY;
+ //fetch WaitTime
+ noReplyWaitTime = (pResponse->record[index].NoReplyWaitTime);
+ }
+ break;
+
+ case TAPI_SS_CF_WHEN_CFNRc:
+ {
+ callFwdCondition = CALL_FORWARD_NOT_REACHABLE;
+ }
+ break;
+
+ default:
+ break;
+ }
+ //fetch forwarding number
+ char* pTmpNumberPtr = new (std::nothrow) char[TAPI_CALL_DIALDIGIT_LEN_MAX];
+ strncpy(pTmpNumberPtr, (char*) (pResponse->record[index].szCallForwardingNumber), TAPI_CALL_DIALDIGIT_LEN_MAX);
+ String callFwdNumber(pTmpNumberPtr);
+ delete []pTmpNumberPtr;
+ pTmpNumberPtr = null;
+
+ //notify event listeners
+ pSettingsManager->NotifyForwardingEventListeners(SET_CALLFORWARD_RESPONSE,(result == TAPI_SS_SUCCESS),callFwdCondition, callFwdNumber, isActivated, noReplyWaitTime);
+ }
+ }
+}
+
+int
+SettingsManager::GetCallForwardStatus(CallForwardCondition callFwdCondition)
+{
+ int errorCode = ERROR_NONE;
+ TryReturn(__pTapiHandle != null,ERROR_TAPI_INIT_FAILED,"Telephony initialization failed");
+
+ TelSsForwardWhen_t condition;
+ switch (callFwdCondition)
+ {
+ case CALL_FORWARD_ALL:
+ {
+ condition = TAPI_SS_CF_WHEN_CFU;
+ }
+ break;
+
+ case CALL_FORWARD_BUSY:
+ {
+ condition = TAPI_SS_CF_WHEN_CFB;
+ }
+ break;
+
+ case CALL_FORWARD_NO_REPLY:
+ {
+ condition = TAPI_SS_CF_WHEN_CFNRy;
+ }
+ break;
+
+ case CALL_FORWARD_NOT_REACHABLE:
+ {
+ condition = TAPI_SS_CF_WHEN_CFNRc;
+ }
+ break;
+
+ default:
+ {
+ return ERROR_INVALID_INPUT;
+ }
+ break;
+ }
+ int retStatus = tel_get_ss_forward_status(__pTapiHandle, TAPI_SS_CLASS_VOICE, condition, &HandleGetForwardResponse, this);
+ if (retStatus != TAPI_API_SUCCESS)
+ {
+ errorCode = ERROR_TAPI_ERROR;
+ }
+
+ return errorCode;
+}
+
+void
+SettingsManager::HandleGetForwardResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData)
+{
+ TelSsForwardResp_t* pResponse = (TelSsForwardResp_t*) pData;
+ SettingsManager* pSettingsManager = (SettingsManager*) pUserData;
+ if (pResponse != null)
+ {
+ int count = pResponse->record_num;
+ for (int index = 0; index < count; index++)
+ {
+ CallForwardCondition callFwdCondition = CALL_FORWARD_ALL;
+ bool isActivated = false;
+ int noReplyWaitTime = 0;
+ //Check if status is "ACTIVE or QUIESCENT or REGISTERED" and forwarding number is available
+ if ((pResponse->record[index].Status == TAPI_SS_STATUS_ACTIVE
+ || pResponse->record[index].Status == TAPI_SS_STATUS_QUIESCENT
+ || pResponse->record[index].Status == TAPI_SS_STATUS_REGISTERED)
+ && (pResponse->record[index].bCallForwardingNumberPresent != 0))
+ {
+ isActivated = true;
+ }
+ switch (pResponse->record[index].ForwardCondition)
+ {
+ case TAPI_SS_CF_WHEN_CFU:
+ {
+ callFwdCondition = CALL_FORWARD_ALL;
+ }
+ break;
+
+ case TAPI_SS_CF_WHEN_CFB:
+ {
+ callFwdCondition = CALL_FORWARD_BUSY;
+ }
+ break;
+
+ case TAPI_SS_CF_WHEN_CFNRy:
+ {
+ callFwdCondition = CALL_FORWARD_NO_REPLY;
+ noReplyWaitTime = (pResponse->record[index].NoReplyWaitTime);
+ }
+ break;
+
+ case TAPI_SS_CF_WHEN_CFNRc:
+ {
+ callFwdCondition = CALL_FORWARD_NOT_REACHABLE;
+ }
+ break;
+
+ default:
+ break;
+ }
+ char* pTmpNumberPtr = new (std::nothrow) char[TAPI_CALL_DIALDIGIT_LEN_MAX];
+ strncpy(pTmpNumberPtr, (char*) (pResponse->record[index].szCallForwardingNumber), TAPI_CALL_DIALDIGIT_LEN_MAX);
+ String callFwdNumber(pTmpNumberPtr);
+ //notify event listeners
+ pSettingsManager->NotifyForwardingEventListeners(GET_CALLFORWARD_RESPONSE, (result == TAPI_SS_SUCCESS), callFwdCondition, callFwdNumber, isActivated, noReplyWaitTime);
+ delete []pTmpNumberPtr;
+ pTmpNumberPtr = null;
+ }
+ }
+}
+
+int
+SettingsManager::SetCallBarringStatus(const String& password, CallBarringType callBarringType, bool activateBarring)
+{
+ int errorCode = ERROR_NONE;
+ TryReturn(__pTapiHandle != null, ERROR_TAPI_INIT_FAILED, "Telephony initialization failed");
+
+ TelSsBarringInfo_t barringInfo;
+ memset(&barringInfo, 0, sizeof(TelSsBarringInfo_t));
+ barringInfo.Class = TAPI_SS_CLASS_VOICE;
+ if (activateBarring == true)
+ {
+ barringInfo.Mode = TAPI_SS_CB_MODE_ACTIVATE;
+ }
+ else
+ {
+ barringInfo.Mode = TAPI_SS_CB_MODE_DEACTIVATE;
+ }
+ const wchar_t* pContact = password.GetPointer();
+ int len = password.GetLength();
+ if (len > 4)
+ {
+ return ERROR_BARRING_PWD_TOO_LONG;
+ }
+ char* pNumber = new (std::nothrow) char[len];
+ wcstombs(pNumber, pContact, len);
+ strncpy(barringInfo.szPassword, pNumber, len);
+ delete []pNumber;
+ pNumber = null;
+ switch (callBarringType)
+ {
+ case CALL_BARRING_ALL_OUTGOING:
+ {
+ barringInfo.Type = TAPI_SS_CB_TYPE_BAOC;
+ }
+ break;
+
+ case CALL_BARRING_INTERNATIONAL_OUTGOING:
+ {
+ barringInfo.Type = TAPI_SS_CB_TYPE_BOIC;
+ }
+ break;
+
+ case CALL_BARRING_INTERNATIONAL_EXCEPT_HOME:
+ {
+ barringInfo.Type = TAPI_SS_CB_TYPE_BOIC_NOT_HC;
+ }
+ break;
+
+ case CALL_BARRING_ALL_INCOMING:
+ {
+ barringInfo.Type = TAPI_SS_CB_TYPE_BAIC;
+ }
+ break;
+
+ case CALL_BARRING_INCOMING_ROAMING:
+ {
+ barringInfo.Type = TAPI_SS_CB_TYPE_BIC_ROAM;
+ }
+ break;
+
+ default:
+ {
+ return ERROR_INVALID_INPUT;
+ }
+ break;
+ }
+ int retStatus = tel_set_ss_barring(__pTapiHandle, &barringInfo, &HandleSetBarringResponse, this);
+ if (retStatus != TAPI_API_SUCCESS)
+ {
+ errorCode = ERROR_TAPI_ERROR;
+ }
+
+ return errorCode;
+}
+
+void
+SettingsManager::HandleSetBarringResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData)
+{
+ TelSsBarringResp_t* pResponse = (TelSsBarringResp_t*) pData;
+ SettingsManager* pSettingsManager = (SettingsManager*) pUserData;
+ if (pResponse != null)
+ {
+ CallBarringType callBarringType = CALL_BARRING_ALL_OUTGOING;
+ bool isActivated = false;
+ int count = pResponse->record_num;
+ for (int index = 0; index < count; index++)
+ {
+ if (pResponse->record[index].Status == TAPI_SS_STATUS_ACTIVE)
+ {
+ isActivated = true;
+ }
+ switch (pResponse->record[index].Flavour)
+ {
+ case TAPI_SS_CB_TYPE_BAOC:
+ {
+ callBarringType = CALL_BARRING_ALL_OUTGOING;
+ }
+ break;
+
+ case TAPI_SS_CB_TYPE_BOIC:
+ {
+ callBarringType = CALL_BARRING_INTERNATIONAL_OUTGOING;
+ }
+ break;
+
+ case TAPI_SS_CB_TYPE_BOIC_NOT_HC:
+ {
+ callBarringType = CALL_BARRING_INTERNATIONAL_EXCEPT_HOME;
+ }
+ break;
+
+ case TAPI_SS_CB_TYPE_BAIC:
+ {
+ callBarringType = CALL_BARRING_ALL_INCOMING;
+ }
+ break;
+
+ case TAPI_SS_CB_TYPE_BIC_ROAM:
+ {
+ callBarringType = CALL_BARRING_INCOMING_ROAMING;
+ }
+ break;
+
+ default:
+ break;
+ }
+ //notify event listeners
+ pSettingsManager->NotifyBarringEventListeners(SET_CALLBARRING_RESPONSE,(result == TAPI_SS_SUCCESS), callBarringType, isActivated);
+ }
+ }
+}
+
+int
+SettingsManager::GetCallBarringStatus(CallBarringType callBarringType)
+{
+ int errorCode = ERROR_NONE;
+ TryReturn(__pTapiHandle != null, ERROR_TAPI_INIT_FAILED, "Telephony initialization failed");
+
+ TelSsBarringType_t barringType;
+ switch (callBarringType)
+ {
+ case CALL_BARRING_ALL_OUTGOING:
+ {
+ barringType = TAPI_SS_CB_TYPE_BAOC;
+ }
+ break;
+
+ case CALL_BARRING_INTERNATIONAL_OUTGOING:
+ {
+ barringType = TAPI_SS_CB_TYPE_BOIC;
+ }
+ break;
+
+ case CALL_BARRING_INTERNATIONAL_EXCEPT_HOME:
+ {
+ barringType = TAPI_SS_CB_TYPE_BOIC_NOT_HC;
+ }
+ break;
+
+ case CALL_BARRING_ALL_INCOMING:
+ {
+ barringType = TAPI_SS_CB_TYPE_BAIC;
+ }
+ break;
+
+ case CALL_BARRING_INCOMING_ROAMING:
+ {
+ barringType = TAPI_SS_CB_TYPE_BIC_ROAM;
+ }
+ break;
+
+ default:
+ {
+ return ERROR_INVALID_INPUT;
+ }
+ break;
+ }
+ int retStatus = tel_get_ss_barring_status(__pTapiHandle, TAPI_SS_CLASS_VOICE, barringType, &HandleGetBarringResponse, this);
+ if (retStatus != TAPI_API_SUCCESS)
+ {
+ errorCode = ERROR_TAPI_ERROR;
+ }
+
+ return errorCode;
+}
+
+void
+SettingsManager::HandleGetBarringResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData)
+{
+ TelSsBarringResp_t* pResponse = (TelSsBarringResp_t*) pData;
+ SettingsManager* pSettingsManager = (SettingsManager*) pUserData;
+ if (pResponse != null)
+ {
+ CallBarringType callBarringType = CALL_BARRING_ALL_OUTGOING;
+ bool isActivated = false;
+ int count = pResponse->record_num;
+ for (int index = 0; index < count; index++)
+ {
+ if (pResponse->record[index].Status == TAPI_SS_STATUS_ACTIVE)
+ {
+ isActivated = true;
+ }
+ switch (pResponse->record[index].Flavour)
+ {
+ case TAPI_SS_CB_TYPE_BAOC:
+ {
+ callBarringType = CALL_BARRING_ALL_OUTGOING;
+ }
+ break;
+
+ case TAPI_SS_CB_TYPE_BOIC:
+ {
+ callBarringType = CALL_BARRING_INTERNATIONAL_OUTGOING;
+ }
+ break;
+
+ case TAPI_SS_CB_TYPE_BOIC_NOT_HC:
+ {
+ callBarringType = CALL_BARRING_INTERNATIONAL_EXCEPT_HOME;
+ }
+ break;
+
+ case TAPI_SS_CB_TYPE_BAIC:
+ {
+ callBarringType = CALL_BARRING_ALL_INCOMING;
+ }
+ break;
+
+ case TAPI_SS_CB_TYPE_BIC_ROAM:
+ {
+ callBarringType = CALL_BARRING_INCOMING_ROAMING;
+ }
+ break;
+
+ default:
+ break;
+ }
+ //notify event listeners
+ pSettingsManager->NotifyBarringEventListeners(GET_CALLBARRING_RESPONSE,(result == TAPI_SS_SUCCESS), callBarringType, isActivated);
+ }
+ }
+}
+
+int
+SettingsManager::SetCallWaitingStatus(bool activateWaiting)
+{
+ int errorCode = ERROR_NONE;
+ TryReturn(__pTapiHandle != null, ERROR_TAPI_INIT_FAILED,"Telephony initialization failed");
+
+ TelSsWaitingInfo_t waitingInfo;
+ memset(&waitingInfo, 0, sizeof(TelSsWaitingInfo_t));
+ waitingInfo.Class = TAPI_SS_CLASS_VOICE;
+ if (activateWaiting == true)
+ {
+ waitingInfo.Mode = TAPI_SS_CW_MODE_ACTIVATE;
+ }
+ else
+ {
+ waitingInfo.Mode = TAPI_SS_CW_MODE_DEACTIVATE;
+ }
+ int retStatus = tel_set_ss_waiting(__pTapiHandle, &waitingInfo, &HandleSetWaitingResponse, this);
+ if (retStatus != TAPI_API_SUCCESS)
+ {
+ errorCode = ERROR_TAPI_ERROR;
+ }
+
+ return errorCode;
+}
+
+void
+SettingsManager::HandleSetWaitingResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData)
+{
+ TelSsWaitingResp_t* pResponse = (TelSsWaitingResp_t*) pData;
+ SettingsManager* pSettingsManager = (SettingsManager*) pUserData;
+ bool isCallSuccessful = false;
+ if (result == TAPI_SS_SUCCESS)
+ {
+ isCallSuccessful = true;
+ }
+ if (pResponse != null)
+ {
+
+ int count = pResponse->record_num;
+ if (pSettingsManager->__pSettingsEventListener != null)
+ {
+ for (int index = 0; index < count; index++)
+ {
+ //notify event listeners
+ bool isCallWaitingEnabled = (pResponse->record[index].Status == TAPI_SS_STATUS_ACTIVE);
+ pSettingsManager->NotifyWaitingEventListeners(SET_CALLWAITING_RESPONSE, isCallSuccessful, isCallWaitingEnabled);
+ }
+ }
+ }
+}
+
+int
+SettingsManager::GetCallWaitingStatus(void)
+{
+ int errorCode = ERROR_NONE;
+ TryReturn(__pTapiHandle != null, ERROR_TAPI_INIT_FAILED,"Telephony initialization failed");
+
+ int retStatus = tel_get_ss_waiting_status(__pTapiHandle, TAPI_SS_CLASS_VOICE, &HandleGetWaitingResponse, this);
+ if (retStatus != TAPI_API_SUCCESS)
+ {
+ errorCode = ERROR_TAPI_ERROR;
+ }
+
+ return errorCode;
+}
+
+void
+SettingsManager::HandleGetWaitingResponse(TapiHandle* pHandle, int result, void* pData, void* pUserData)
+{
+ TelSsWaitingResp_t* pResponse = (TelSsWaitingResp_t*) pData;
+ SettingsManager* pSettingsManager = (SettingsManager*) pUserData;
+ if (pResponse != null)
+ {
+ bool isCallSuccessful = false;
+ if (result == TAPI_SS_SUCCESS)
+ {
+ isCallSuccessful = true;
+ }
+ int count = pResponse->record_num;
+ if (pSettingsManager->__pSettingsEventListener != null)
+ {
+ for (int index = 0; index < count; index++)
+ {
+ //notify event listeners
+ bool isCallWaitingEnabled = (pResponse->record[index].Status == TAPI_SS_STATUS_ACTIVE);
+ pSettingsManager->NotifyWaitingEventListeners(GET_CALLWAITING_RESPONSE, isCallSuccessful, isCallWaitingEnabled);
+ }
+ }
+ }
+}
+
+IMapT<int,String>*
+SettingsManager::GetRejectMessageListN(void)
+{
+ int messagesCount;
+ char* pMessage = null;
+ HashMapT<int,String> *pMessageMap = null;
+
+ int retval = vconf_get_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, &messagesCount);
+ if (retval == 0 && messagesCount > 0)
+ {
+ pMessageMap = new (std::nothrow) HashMapT<int,String>();
+ pMessageMap->Construct(messagesCount);
+ for (int index = 0; index < messagesCount; index++)
+ {
+ int keyForMsg = index;
+ String *pMessageStr = new (std::nothrow) String();
+ switch (index)
+ {
+ case 0:
+ {
+ pMessage = vconf_get_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG1_STR);
+ }
+ break;
+
+ case 1:
+ {
+ pMessage = vconf_get_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG2_STR);
+ }
+ break;
+
+ case 2:
+ {
+ pMessage = vconf_get_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG3_STR);
+ }
+ break;
+
+ case 3:
+ {
+ pMessage = vconf_get_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG4_STR);
+ }
+ break;
+
+ case 4:
+ {
+ pMessage = vconf_get_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG5_STR);
+ }
+ break;
+
+ case 5:
+ {
+ pMessage = vconf_get_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG6_STR);
+ }
+ break;
+
+ default:
+ {
+ delete pMessageMap;
+ pMessageMap = null;
+ return null;
+ }
+ break;
+ }
+ //todo:Chk if this is allowed outside the call settings library
+ bindtextdomain("ug-setting-call-efl", "/usr/ug/res/locale");
+ pMessageStr->Append(dgettext("ug-setting-call-efl", pMessage));
+ pMessageMap->Add(keyForMsg, *pMessageStr);
+ }
+ }
+ return pMessageMap;
+}
+
+result
+SettingsManager::SetRejectMessage(int messageIndex, const String& rejectMessage)
+{
+ result r = E_FAILURE;
+ int messagesCount = 0;
+ vconf_get_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, &messagesCount);
+ //convert to char*
+ const wchar_t* pRejectMessage = rejectMessage.GetPointer();
+ int len = (rejectMessage.GetLength()*sizeof(wchar_t));
+ char* pMessageToBeSet = new (std::nothrow) char[len + 1];
+ memset(pMessageToBeSet, 0, (len + 1) * sizeof(char));
+ wcstombs(pMessageToBeSet, pRejectMessage, len);
+ //save to vconf
+ int retval = -1;
+
+ switch (messageIndex)
+ {
+ case 0:
+ {
+ retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG1_STR, pMessageToBeSet);
+ }
+ break;
+
+ case 1:
+ {
+ retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG2_STR, pMessageToBeSet);
+ }
+ break;
+
+ case 2:
+ {
+ retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG3_STR, pMessageToBeSet);
+ }
+ break;
+
+ case 3:
+ {
+ retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG4_STR, pMessageToBeSet);
+ }
+ break;
+
+ case 4:
+ {
+ retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG5_STR, pMessageToBeSet);
+ }
+ break;
+
+ case 5:
+ {
+ retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG6_STR, pMessageToBeSet);
+ }
+ break;
+
+ default:
+ {
+ delete []pMessageToBeSet;
+ pMessageToBeSet = null;
+ return r;
+ }
+ break;
+ }
+
+ delete []pMessageToBeSet;
+ pMessageToBeSet = null;
+ if (retval == 0)
+ {
+ //increment the count only in case of new addition
+ if (messagesCount < 6 && messageIndex >= messagesCount)
+ {
+ messagesCount++;
+ }
+ vconf_set_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, messagesCount);
+ r = E_SUCCESS;
+ }
+
+ return r;
+}
+
+result
+SettingsManager::RemoveRejectMessage(const IListT<int>& deleteKeyList)
+{
+ result r = E_FAILURE;
+ int retval = -1;
+ int newMsgCount = 0;
+ //Fetch old message count
+ int oldMsgCount = 0;
+ vconf_get_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, &oldMsgCount);
+ //fetch old messages
+ IMapT<int,String> *pRejectMsgMap = GetRejectMessageListN();
+ if(pRejectMsgMap != null)
+ {
+ //First,remove all messages from vconf
+ for (int index = 0; index < oldMsgCount; index++)
+ {
+ switch (index)
+ {
+ case 0:
+ retval = vconf_unset(VCONFKEY_CISSAPPL_USER_CREATE_MSG1_STR);
+ break;
+
+ case 1:
+ retval = vconf_unset(VCONFKEY_CISSAPPL_USER_CREATE_MSG2_STR);
+ break;
+
+ case 2:
+ retval = vconf_unset(VCONFKEY_CISSAPPL_USER_CREATE_MSG3_STR);
+ break;
+
+ case 3:
+ retval = vconf_unset(VCONFKEY_CISSAPPL_USER_CREATE_MSG4_STR);
+ break;
+
+ case 4:
+ retval = vconf_unset(VCONFKEY_CISSAPPL_USER_CREATE_MSG5_STR);
+ break;
+
+ case 5:
+ retval = vconf_unset(VCONFKEY_CISSAPPL_USER_CREATE_MSG6_STR);
+ break;
+ }
+ }
+
+ //Check if all messages are deleted
+ if(oldMsgCount == deleteKeyList.GetCount())
+ {
+ vconf_set_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, 0);
+ delete pRejectMsgMap;
+ return E_SUCCESS;
+ }
+
+ //Second, delete messages to be deleted from fetched old Message map
+ for (int index = 0; index < deleteKeyList.GetCount(); index++)
+ {
+ int keyForMsg = -1;
+ if (deleteKeyList.GetAt(index, keyForMsg) == E_SUCCESS)
+ {
+ pRejectMsgMap->Remove(keyForMsg);
+ }
+ }
+
+ //Third, reset remaining message in vconf with ordered keys
+ IListT<String> *pRejectMsgList = pRejectMsgMap->GetValuesN();
+ newMsgCount = pRejectMsgList->GetCount();
+ for (int index = 0; index < newMsgCount; index++)
+ {
+ String msg;
+ pRejectMsgList->GetAt(index,msg);
+ //convert to char*
+ const wchar_t* pMsgPtr = msg.GetPointer();
+ int len = msg.GetLength()*sizeof(wchar_t);
+ char* pMessageToBeSet = new (std::nothrow) char[len + 1];
+ memset(pMessageToBeSet, 0, (len + 1) * sizeof(char));
+ wcstombs(pMessageToBeSet, pMsgPtr, len);
+ switch (index)
+ {
+ case 0:
+ {
+ retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG1_STR, pMessageToBeSet);
+ }
+ break;
+
+ case 1:
+ {
+ retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG2_STR, pMessageToBeSet);
+ }
+ break;
+
+ case 2:
+ {
+ retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG3_STR, pMessageToBeSet);
+ }
+ break;
+
+ case 3:
+ {
+ retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG4_STR, pMessageToBeSet);
+ }
+ break;
+
+ case 4:
+ {
+ retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG5_STR, pMessageToBeSet);
+ }
+ break;
+
+ case 5:
+ {
+ retval = vconf_set_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG6_STR, pMessageToBeSet);
+ }
+ break;
+
+ default:
+ break;
+ }
+ delete []pMessageToBeSet;
+ pMessageToBeSet = null;
+ }
+ delete pRejectMsgMap;
+ pRejectMsgMap = null;
+ }
+
+ //todo: retVal from vconf_unset is always -1. to be checked
+// if (retval == 0)
+ {
+ //Update message count in vconf
+ vconf_set_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, newMsgCount);
+ r = E_SUCCESS;
+ }
+
+ return r;
+}
+
+IList*
+SettingsManager::GetPrefixDialListN(void)
+{
+ int phoneNumberCount;
+ char* pPhoneNumber = null;
+ ArrayList* pPhoneNumberList = null;
+
+ int retval = vconf_get_int(VCONFKEY_CISSAPPL_PREFIX_DIAL_INT, &phoneNumberCount);
+ if (retval == 0)
+ {
+ pPhoneNumberList = new (std::nothrow) ArrayList();
+ for (int index = 0; index < phoneNumberCount; index++)
+ {
+ String* phoneNumberStr = new (std::nothrow) String();
+ switch (index)
+ {
+ case 0:
+ {
+ pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM1_STR);
+ }
+ break;
+
+ case 1:
+ {
+ pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM2_STR);
+ }
+ break;
+
+ case 2:
+ {
+ pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM3_STR);
+ }
+ break;
+
+ case 3:
+ {
+ pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM4_STR);
+ }
+ break;
+
+ case 4:
+ {
+ pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM5_STR);
+ }
+ break;
+
+ default:
+ {
+ delete pPhoneNumberList;
+ pPhoneNumberList = null;
+ return null;
+ }
+ break;
+ }
+ phoneNumberStr->Append(pPhoneNumber);
+ pPhoneNumberList->Add(*phoneNumberStr);
+ }
+ }
+ else
+ {
+ return null;
+ }
+ return pPhoneNumberList;
+}
+
+result
+SettingsManager::SetPrefixDialNumber(int phoneNumberIndex, const String& phoneNumber)
+{
+ result r = E_FAILURE;
+ int phoneNumberCount = 0;
+
+ int retval = -1;
+ const wchar_t* pRejectMessage = phoneNumber.GetPointer();
+ int len = phoneNumber.GetLength();
+ char* pTmpPhonePtr = new (std::nothrow) char[len + 1];
+ memset(pTmpPhonePtr, 0, (len + 1) * sizeof(char));
+ wcstombs(pTmpPhonePtr, pRejectMessage, len);
+ char* pNumberToBeSet = new (std::nothrow) char[len + 1];
+ memset(pNumberToBeSet, 0, (len + 1) * sizeof(char));
+ strncpy(pNumberToBeSet, pTmpPhonePtr, len);
+ delete []pTmpPhonePtr;
+ pTmpPhonePtr = null;
+ vconf_get_int(VCONFKEY_CISSAPPL_PREFIX_DIAL_INT, &phoneNumberCount);
+ switch (phoneNumberIndex)
+ {
+ case 0:
+ {
+ retval = vconf_set_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM1_STR, pNumberToBeSet);
+ }
+ break;
+
+ case 1:
+ {
+ retval = vconf_set_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM2_STR, pNumberToBeSet);
+ }
+ break;
+
+ case 2:
+ {
+ retval = vconf_set_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM3_STR, pNumberToBeSet);
+ }
+ break;
+
+ case 3:
+ {
+ retval = vconf_set_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM4_STR, pNumberToBeSet);
+ }
+ break;
+
+ case 4:
+ {
+ retval = vconf_set_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM5_STR, pNumberToBeSet);
+ }
+ break;
+
+ default:
+ {
+ delete []pNumberToBeSet;
+ pNumberToBeSet = null;
+ return r;
+ }
+ break;
+ }
+
+ delete []pNumberToBeSet;
+ pNumberToBeSet = null;
+
+ if (retval == 0)
+ {
+ if (phoneNumberCount < 5)
+ {
+ phoneNumberCount++;
+ }
+ vconf_set_int(VCONFKEY_CISSAPPL_PREFIX_DIAL_INT, phoneNumberCount);
+ //todo: change to adding single area code if its prefix number list is supported
+
+ r = E_SUCCESS;
+ }
+
+ return r;
+}
+
+result
+SettingsManager::GetPrefixDialNumberAtIndex(int phoneNumberIndex, String& phoneNumber)
+{
+ result r = E_FAILURE;
+
+ int phoneNumberCount = 0;
+ vconf_get_int(VCONFKEY_CISSAPPL_PREFIX_DIAL_INT, &phoneNumberCount);
+
+ //check valid index
+ if(phoneNumberCount > 0 && phoneNumberIndex < phoneNumberCount)
+ {
+ char* pPhoneNumber = null;
+ switch (phoneNumberIndex)
+ {
+ case 0:
+ {
+ pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM1_STR);
+ }
+ break;
+
+ case 1:
+ {
+ pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM2_STR);
+ }
+ break;
+
+ case 2:
+ {
+ pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM3_STR);
+ }
+ break;
+
+ case 3:
+ {
+ pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM4_STR);
+ }
+ break;
+
+ case 4:
+ {
+ pPhoneNumber = vconf_get_str(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM5_STR);
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ if(pPhoneNumber != null)
+ {
+ r = phoneNumber.Append(pPhoneNumber);
+ }
+ }
+ return r;
+}
+
+result
+SettingsManager::RemovePrefixDialNumber(int phoneNumberIndex)
+{
+ result r = E_FAILURE;
+ int phoneNumberCount = 0;
+
+ int retval = -1;
+ vconf_get_int(VCONFKEY_CISSAPPL_PREFIX_DIAL_INT, &phoneNumberCount);
+ switch (phoneNumberIndex)
+ {
+ case 0:
+ {
+ retval = vconf_unset(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM1_STR);
+ }
+ break;
+
+ case 1:
+ {
+ retval = vconf_unset(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM2_STR);
+ }
+ break;
+
+ case 2:
+ {
+ retval = vconf_unset(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM3_STR);
+ }
+ break;
+
+ case 3:
+ {
+ retval = vconf_unset(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM4_STR);
+ }
+ break;
+
+ case 4:
+ {
+ retval = vconf_unset(VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM5_STR);
+ }
+ break;
+
+ default:
+ {
+ return r;
+ }
+ break;
+ }
+
+ //todo: retVal from vconf_unset is always -1. to be checked
+// if (retval == 0)
+ {
+ if (phoneNumberCount > 0)
+ {
+ phoneNumberCount--;
+ }
+ vconf_set_int(VCONFKEY_CISSAPPL_PREFIX_DIAL_INT, phoneNumberCount);
+ r = E_SUCCESS;
+ }
+
+ return r;
+}
+
+result
+SettingsManager::SetPrefixDialingStatus(bool enablePrefixDialing)
+{
+ result r = E_FAILURE;
+ int retVal = vconf_set_bool(VCONFKEY_CISSAPPL_PREFIX_DIAL_BOOL, enablePrefixDialing);
+ if (retVal == 0)
+ {
+ r = E_SUCCESS;
+ }
+ return r;
+}
+
+result
+SettingsManager::SetActivePrefixDialingValue(int prefixDialIndex)
+{
+ result r = E_FAILURE;
+ int retVal = vconf_set_int(VCONFKEY_CISSAPPL_PREFIX_DIAL_VALUE_INT, prefixDialIndex);
+ if (retVal == 0)
+ {
+ r = E_SUCCESS;
+ }
+ return r;
+}
+
+result
+SettingsManager::GetActivePrefixDialingValue(int& prefixDialIndex)
+{
+ result r = E_FAILURE;
+ int indexPos = -1;
+ int retVal = vconf_get_int(VCONFKEY_CISSAPPL_PREFIX_DIAL_VALUE_INT, &indexPos);
+ if (retVal == 0)
+ {
+ prefixDialIndex = indexPos;
+ r = E_SUCCESS;
+ }
+ return r;
+}
+
+bool
+SettingsManager::GetPrefixDialingStatus(void)
+{
+ int isPrefixDialingEnabled = -1;
+
+ vconf_get_bool(VCONFKEY_CISSAPPL_PREFIX_DIAL_BOOL, &isPrefixDialingEnabled);
+
+ bool retVal = isPrefixDialingEnabled;
+ return retVal;
+}
+
+result
+SettingsManager::SetVideoCallImagePath(const String& imagePath)
+{
+ result r = E_FAILURE;
+ const wchar_t* pRejectMessage = imagePath.GetPointer();
+ int len = imagePath.GetLength();
+ char* pTmpPath = new (std::nothrow) char[len + 1];
+ memset(pTmpPath, 0, (len + 1) * sizeof(char));
+ wcstombs(pTmpPath, pRejectMessage, len);
+ char* pPathToBeSet = new (std::nothrow) char[len + 1];
+ memset(pPathToBeSet, 0, (len + 1) * sizeof(char));
+ strncpy(pPathToBeSet, pTmpPath, len);
+ int retVal = vconf_set_str(VCONFKEY_CISSAPPL_VIDEO_IMAGE_PATH_STR, pPathToBeSet);
+ if (retVal == 0)
+ {
+ r = E_SUCCESS;
+ }
+ delete []pTmpPath;
+ pTmpPath = null;
+ delete []pPathToBeSet;
+ pPathToBeSet = null;
+ return r;
+}
+
+result
+SettingsManager::GetVideoCallImagePath(String& imagePath)
+{
+ result r = E_FAILURE;
+ char* pVideoImagePath = null;
+ pVideoImagePath = vconf_get_str(VCONFKEY_CISSAPPL_VIDEO_IMAGE_PATH_STR);
+ if (pVideoImagePath != null)
+ {
+ imagePath.Clear();
+ imagePath.Append(pVideoImagePath);
+ r = E_SUCCESS;
+ }
+ return r;
+}
+
+result
+SettingsManager::SetCallLineIdentity(CallLineIdentity identity)
+{
+ result r = E_FAILURE;
+ int retVal = vconf_set_int(VCONFKEY_CISSAPPL_SHOW_MY_NUMBER_INT, identity);
+ if (retVal == 0)
+ {
+ r = E_SUCCESS;
+ }
+ return r;
+}
+
+result
+SettingsManager::GetCallLineIdentity(CallLineIdentity& identity)
+{
+ result r = E_FAILURE;
+ int lineIdentity = -1;
+ int retVal = vconf_get_int(VCONFKEY_CISSAPPL_SHOW_MY_NUMBER_INT, &lineIdentity);
+ if (retVal == 0)
+ {
+ identity = (CallLineIdentity) lineIdentity;
+ r = E_SUCCESS;
+ }
+ return r;
+}
+
+result
+SettingsManager::AddToCallRejectList(const String& phoneNumber, CallRejectMatchCondition rejectCondition)
+{
+ //construct CallRejectInfo.
+ CallRejectInfo rejInfo;
+ rejInfo.phoneNumber = phoneNumber;
+ rejInfo.rejectCondition = rejectCondition;
+ rejInfo.isActivated = false;
+
+ //Fetch call reject list
+ IListT<CallRejectInfo>* pRejNumbersList = GetCallRejectList();
+ //Check if this is not already present in database.
+ bool isDuplicate = false;
+ if (pRejNumbersList != null)
+ {
+ IEnumeratorT<CallRejectInfo>* pRejectEnum = pRejNumbersList->GetEnumeratorN();
+ if (pRejectEnum != null)
+ {
+ while (pRejectEnum->MoveNext() == E_SUCCESS)
+ {
+ CallRejectInfo fetchedInfo;
+ if (( pRejectEnum->GetCurrent(fetchedInfo) == E_SUCCESS) && (fetchedInfo == rejInfo))
+ {
+ isDuplicate = true;
+ }
+ }
+ delete pRejectEnum;
+ }
+ delete pRejNumbersList;
+ }
+
+ result r = E_OBJ_ALREADY_EXIST;
+ if (isDuplicate == false)
+ {
+ r = __pCallSettingDataService->AddCallRejectInfoToDatabase(&rejInfo);
+ }
+ return r;
+}
+
+IListT<CallRejectInfo>*
+SettingsManager::GetCallRejectList(void)
+{
+ int rejectCount = 0;
+ __pCallSettingDataService->GetCallRejectCount(rejectCount);
+
+ if (rejectCount > 0)
+ {
+ ArrayListT<CallRejectInfo>* pCallRejectList = new (std::nothrow) ArrayListT<CallRejectInfo>();
+ pCallRejectList->Construct(rejectCount);
+ __pCallSettingDataService->GetAllCallRejectInfoFromDatabaseN(*pCallRejectList);
+ return pCallRejectList;
+ }
+ return null;
+}
+
+result
+SettingsManager::UpdateCallRejectRow(int rowId, const String& phoneNumber, bool activate, CallRejectMatchCondition rejectCondition)
+{
+ result r = E_FAILURE;
+ CallRejectInfo* rejInfo = new (std::nothrow) CallRejectInfo();
+ rejInfo->rowId = rowId;
+ rejInfo->phoneNumber.Append(phoneNumber);
+ rejInfo->rejectCondition = rejectCondition;
+ rejInfo->isActivated = activate;
+ r = __pCallSettingDataService->UpdateCallRejectInfoDatabase(rowId,rejInfo);
+ delete rejInfo;
+ return r;
+}
+
+result
+SettingsManager::RemoveCallRejectRow(int rowId)
+{
+ return __pCallSettingDataService->DeleteCallRejectInfoFromDatabase(rowId);
+}
+
+result
+SettingsManager::SetUnknownRejectStatus(bool activate)
+{
+ result r = E_FAILURE;
+ int retVal = vconf_set_bool(VCONFKEY_CISSAPPL_AUTO_REJECT_UNKNOWN_BOOL, activate);
+ if (retVal == 0)
+ {
+ r = E_SUCCESS;
+ }
+ return r;
+}
+
+bool
+SettingsManager::IsCallToBeRejected(String& phoneNumber)
+{
+ return __pCallSettingDataService->IsCallToBeRejected(phoneNumber);
+}
+
+bool
+SettingsManager::GetUnknownRejectStatus(void)
+{
+ int unknownRejectStatus = -1;
+
+ vconf_get_bool(VCONFKEY_CISSAPPL_AUTO_REJECT_UNKNOWN_BOOL, &unknownRejectStatus);
+
+ bool retVal = unknownRejectStatus;
+ return retVal;
+}
+
+result
+SettingsManager::SetCallAlertStatus(CallAlertStatus callAlertStatus)
+{
+ result r = E_FAILURE;
+ int retVal = vconf_set_int(VCONFKEY_CISSAPPL_ALERT_ON_CALL_INT, callAlertStatus);
+ if (retVal == 0)
+ {
+ r = E_SUCCESS;
+ }
+ return r;
+}
+
+result
+SettingsManager::GetCallAlertStatus(CallAlertStatus& callAlertStatus)
+{
+ result r = E_FAILURE;
+ int alertStatus = -1;
+ int retVal = vconf_get_int(VCONFKEY_CISSAPPL_ALERT_ON_CALL_INT, &alertStatus);
+ if (retVal == 0)
+ {
+ callAlertStatus = (CallAlertStatus) alertStatus;
+ r = E_SUCCESS;
+ }
+ return r;
+}
+
+result
+SettingsManager::SetCallConnectToneStatus(bool activate)
+{
+ result r = E_FAILURE;
+ int retVal = vconf_set_bool(VCONFKEY_CISSAPPL_CALL_CONNECT_TONE_BOOL, activate);
+ if (retVal == 0)
+ {
+ r = E_SUCCESS;
+ }
+ return r;
+}
+
+bool
+SettingsManager::GetCallConnectToneStatus(void)
+{
+ int unknownRejectStatus = -1;
+
+ vconf_get_bool(VCONFKEY_CISSAPPL_CALL_CONNECT_TONE_BOOL, &unknownRejectStatus);
+
+ bool retVal = unknownRejectStatus;
+ return retVal;
+}
+
+result
+SettingsManager::SetMinuteMinderToneStatus(bool activate)
+{
+ result r = E_FAILURE;
+ int retVal = vconf_set_bool(VCONFKEY_CISSAPPL_MINUTE_MINDER_BOOL, activate);
+ if (retVal == 0)
+ {
+ r = E_SUCCESS;
+ }
+ return r;
+}
+
+bool
+SettingsManager::GetMinuteMinderToneStatus(void)
+{
+ int unknownRejectStatus = -1;
+
+ vconf_get_bool(VCONFKEY_CISSAPPL_MINUTE_MINDER_BOOL, &unknownRejectStatus);
+
+ bool retVal = unknownRejectStatus;
+ return retVal;
+}
+
+result
+SettingsManager::SetCallEndToneStatus(bool activate)
+{
+ result r = E_FAILURE;
+ int retVal = vconf_set_bool(VCONFKEY_CISSAPPL_CALL_END_TONE_BOOL, activate);
+ if (retVal == 0)
+ {
+ r = E_SUCCESS;
+ }
+ return r;
+}
+
+bool
+SettingsManager::GetCallEndToneStatus(void)
+{
+ int unknownRejectStatus = -1;
+
+ vconf_get_bool(VCONFKEY_CISSAPPL_CALL_END_TONE_BOOL, &unknownRejectStatus);
+
+ bool retVal = unknownRejectStatus;
+ return retVal;
+}
+
+result
+SettingsManager::SetSpeedDialMapping(const String& contactId, int numberToMap)
+{
+ result r = E_FAILURE;
+ SpeedDialInfo mappingInfo;;
+ mappingInfo.keyMapping = numberToMap;
+ mappingInfo.contactId = contactId;
+ r = __pCallSettingDataService->AddSpeedDialInfoToDatabase(&mappingInfo);
+ return r;
+}
+
+IMapT<int,SpeedDialInfo>*
+SettingsManager::GetSpeedDialMappingN(void)
+{
+ return (__pCallSettingDataService->GetAllSpeedDialInfoMapFromDatabaseN());
+}
+
+result
+SettingsManager::RemoveSpeedDialMapping(int rowId)
+{
+ return __pCallSettingDataService->DeleteSpeedDialInfoFromDatabase(rowId);
+}
+
+result
+SettingsManager::UpdateSpeedDialMapping(int rowId, const String& contactId, int numberToMap)
+{
+ result r = E_FAILURE;
+ SpeedDialInfo* mappingInfo = new (std::nothrow) SpeedDialInfo();
+ mappingInfo->rowId = rowId;
+ mappingInfo->contactId.Append(contactId);
+ mappingInfo->keyMapping = numberToMap;
+ r = __pCallSettingDataService->UpdateSpeedDialInfoDatabase(rowId,mappingInfo);
+ delete mappingInfo;
+ return r;
+}
+
+String*
+SettingsManager::GetMappedSpeedDialNumberN(int aIndex)
+{
+ String* contactNumber = null;
+
+ //Fetch contactId for mapped speed dial
+ String* contactId = __pCallSettingDataService->GetSpeedDialContactN(aIndex);
+ if(contactId != null && contactId->IsEmpty() == false)
+ {
+ RecordId recordId = INVALID_RECORD_ID;
+ Integer::Parse(*contactId, recordId);
+ //check if recordId is correct
+ if (recordId != Tizen::Social::INVALID_RECORD_ID)
+ {
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+ Addressbook* pAddressbook = pAddressbookManager->GetAddressbookN(DEFAULT_ADDRESSBOOK_ID);
+ if (pAddressbook != null)
+ {
+ Contact* pMappedContact = pAddressbook->GetContactN(recordId);
+ if (pMappedContact != null)
+ {
+ IList* pPhoneNumberList = pMappedContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
+ if (pPhoneNumberList != null)
+ {
+ PhoneNumber* pPhoneNumber = static_cast<PhoneNumber*>(pPhoneNumberList->GetAt(0));
+ if(pPhoneNumber != null)
+ {
+ contactNumber = new (std::nothrow) String(pPhoneNumber->GetPhoneNumber());
+ }
+ pPhoneNumberList->RemoveAll(true);
+ delete pPhoneNumberList;
+ }
+ delete pMappedContact;
+ }
+ delete pAddressbook;
+ }
+ }
+ }
+ delete contactId;
+ contactId = null;
+ return contactNumber;
+}
+
+Contact*
+SettingsManager::FetchContactDetailsN(const String& contactId)
+{
+ Contact* pFetchedContact = null;
+
+ RecordId recordId = INVALID_RECORD_ID;
+ Integer::Parse(contactId, recordId);
+ //check if recordId is correct
+ if (recordId != Tizen::Social::INVALID_RECORD_ID)
+ {
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+ Addressbook* pAddressbook = pAddressbookManager->GetAddressbookN(DEFAULT_ADDRESSBOOK_ID);
+ if (pAddressbook != null)
+ {
+ pFetchedContact = pAddressbook->GetContactN(recordId);
+ delete pAddressbook;
+ }
+ }
+ return pFetchedContact;
+}
+
+result
+SettingsManager::SetCallState(CallState callState)
+{
+ AppLogDebug("Enter %d",callState);
+ result r = E_FAILURE;
+ int retVal = vconf_set_int(VCONFKEY_CALL_STATE, callState);
+ if (retVal == 0)
+ {
+ r = E_SUCCESS;
+ }
+ return r;
+}
+
--- /dev/null
+//
+// 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 PhnSettingsMoreOptionsForm.cpp
+ * @brief Setting More option form
+ */
+#include <FApp.h>
+#include "PhnSettingsMoreOptionsForm.h"
+#include "PhnSettingsConstants.h"
+#include "PhnAppUtility.h"
+#include "PhnSettingsPresentationModel.h"
+#include "PhnSceneRegister.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Graphics;
+
+static const wchar_t* IDL_SETTINGS_MOREOPTIONS_FORM = L"IDL_SETTINGS_MOREOPTIONS_FORM";
+
+SettingsMoreOptionsForm::SettingsMoreOptionsForm(void)
+ : __pSettingsPresentor(null)
+ , __isCallerIdExpanded(false)
+ , __isCallAlertExpanded(false)
+ , __autoAreaCode(L"")
+{
+}
+
+SettingsMoreOptionsForm::~SettingsMoreOptionsForm(void)
+{
+}
+
+bool
+SettingsMoreOptionsForm::Initialize(void)
+{
+ Construct(IDL_SETTINGS_MOREOPTIONS_FORM);
+ return true;
+}
+
+result
+SettingsMoreOptionsForm::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+ __pSettingsPresentor = SettingsPresentationModel::GetInstance();
+ // Setup back event listener
+ SetFormBackEventListener(this);
+ //Footer
+ Footer* pFooter = GetFooter();
+ if (pFooter)
+ {
+ pFooter->SetButtonColor(BUTTON_ITEM_STATUS_NORMAL, pFooter->GetColor());
+ pFooter->AddActionEventListener(*this);
+ }
+ //Initialize list view
+ r = InitializeGroupedTableView();
+ return r;
+}
+
+result
+SettingsMoreOptionsForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+ __pSettingsPresentor = null;
+ return r;
+}
+
+void
+SettingsMoreOptionsForm::OnActionPerformed(const Control& source, int actionId)
+{
+ switch (actionId)
+ {
+ default:
+ break;
+ }
+}
+
+void
+SettingsMoreOptionsForm::OnFormBackRequested(Form& source)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager != null);
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MAIN_SETTING_MENU), null);
+}
+
+void
+SettingsMoreOptionsForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
+{
+ __autoAreaCode.Clear();
+ GroupedTableView* pMoreOptionsTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ if(__pSettingsPresentor != null && pMoreOptionsTableView != null)
+ {
+ //set status for 'GROUP_CALLERID_OPTIONS'
+ CallLineIdentity lineIdentity;
+ __pSettingsPresentor->GetCallLineIdentity(lineIdentity);
+ pMoreOptionsTableView->SetItemChecked(GROUP_CALLERID_OPTIONS, (GroupCallerIdOptionsItems) lineIdentity, true);
+ pMoreOptionsTableView->RefreshItem(GROUP_CALLERID, CALLERID_CALLER_SETTING, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+
+ //set status for 'GROUP_CALL_ALERT_OPTIONS'
+ CallAlertStatus alertStatus;
+ __pSettingsPresentor->GetCallAlertStatus(alertStatus);
+ pMoreOptionsTableView->SetItemChecked(GROUP_CALL_ALERT_OPTIONS, (GroupCallAlertOptionsItems) alertStatus, true);
+ pMoreOptionsTableView->RefreshItem(GROUP_CALL_ALERT, CALLALERT_SETTING, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+
+ //update auto area code status
+ result r = __pSettingsPresentor->GetActivePrefixDialNumber(__autoAreaCode);
+ pMoreOptionsTableView->RefreshItem(GROUP_AREACODE, AREACODE_AUTO_AREA_CODE, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ if(r == E_SUCCESS && __autoAreaCode.IsEmpty() == false)
+ {
+ pMoreOptionsTableView->SetItemChecked(GROUP_AREACODE, AREACODE_AUTO_AREA_CODE, true);
+ }
+ else
+ {
+ pMoreOptionsTableView->SetItemChecked(GROUP_AREACODE, AREACODE_AUTO_AREA_CODE, false);
+ }
+ }
+}
+
+void
+SettingsMoreOptionsForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
+{
+}
+
+result
+SettingsMoreOptionsForm::InitializeGroupedTableView(void)
+{
+ result r = E_FAILURE;
+ GroupedTableView* pMoreOptionsTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ if (pMoreOptionsTableView != null)
+ {
+ pMoreOptionsTableView->SetGroupedLookEnabled(true);
+ pMoreOptionsTableView->SetItemProvider(this);
+ r = pMoreOptionsTableView->AddGroupedTableViewItemEventListener(*this);
+ pMoreOptionsTableView->UpdateTableView();
+ CollapseSelectiveGroups(pMoreOptionsTableView);
+ }
+ return r;
+}
+
+void
+SettingsMoreOptionsForm::CollapseSelectiveGroups(GroupedTableView* pMoreOptionsTableView)
+{
+ //This function should be called only from "InitializeGroupedTableView()".
+ //since collapsing individual groups while GroupTableView construction causes flicker.
+ pMoreOptionsTableView->CollapseAllGroup();
+ //Expand other groups
+ pMoreOptionsTableView->ExpandGroup(GROUP_CALLERID);
+ pMoreOptionsTableView->ExpandGroup(GROUP_CALL_SETTINGS);
+ pMoreOptionsTableView->ExpandGroup(GROUP_CALL_SETTINGS_HLPTXT);
+ pMoreOptionsTableView->ExpandGroup(GROUP_CALL_REMINDER);
+ pMoreOptionsTableView->ExpandGroup(GROUP_CALL_REMINDER_HLPTXT);
+ pMoreOptionsTableView->ExpandGroup(GROUP_CALL_ALERT);
+ pMoreOptionsTableView->ExpandGroup(GROUP_AREACODE);
+ pMoreOptionsTableView->ExpandGroup(GROUP_AREACODE_HLPTXT);
+ pMoreOptionsTableView->UpdateTableView();
+}
+
+void
+SettingsMoreOptionsForm::OnGroupedTableViewItemStateChanged(GroupedTableView& tableView, int groupIndex, int itemIndex, TableViewItem* pItem, TableViewItemStatus status)
+{
+ switch (groupIndex)
+ {
+ case GROUP_CALLERID:
+ {
+ if (tableView.IsGroupExpanded(GROUP_CALLERID_OPTIONS))
+ {
+ tableView.CollapseGroup(GROUP_CALLERID_OPTIONS);
+ __isCallerIdExpanded = false;
+ }
+ else
+ {
+ tableView.ExpandGroup(GROUP_CALLERID_OPTIONS);
+ __isCallerIdExpanded = true;
+ }
+ //Change icon
+ tableView.RefreshItem(GROUP_CALLERID, CALLERID_CALLER_SETTING, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+ break;
+
+ case GROUP_CALLERID_OPTIONS:
+ {
+ HandleSelectedCallerIdOptions(tableView, itemIndex, status);
+ }
+ break;
+
+ case GROUP_CALL_ALERT:
+ {
+ if (tableView.IsGroupExpanded(GROUP_CALL_ALERT_OPTIONS))
+ {
+ tableView.CollapseGroup(GROUP_CALL_ALERT_OPTIONS);
+ __isCallAlertExpanded = false;
+ }
+ else
+ {
+ tableView.ExpandGroup(GROUP_CALL_ALERT_OPTIONS);
+ __isCallAlertExpanded = true;
+ }
+ //Change icon
+ tableView.RefreshItem(GROUP_CALL_ALERT, CALLALERT_SETTING, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+ break;
+
+ case GROUP_CALL_ALERT_OPTIONS:
+ {
+ HandleSelectedCallAlertOptions(tableView, itemIndex, status);
+ }
+ break;
+
+ case GROUP_CALL_SETTINGS:
+ case GROUP_CALL_REMINDER:
+ case GROUP_AREACODE:
+ {
+ HandleSelectedSettings(groupIndex, itemIndex);
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+int
+SettingsMoreOptionsForm::GetGroupCount(void)
+{
+ return GROUP_TOTALCOUNT;
+}
+
+int
+SettingsMoreOptionsForm::GetItemCount(int groupIndex)
+{
+ int itemCount = 0;
+ switch (groupIndex)
+ {
+ case GROUP_CALLERID:
+ {
+ itemCount = CALLERID_TOTALCOUNT;
+ }
+ break;
+
+ case GROUP_CALLERID_OPTIONS:
+ {
+ itemCount = CALLEROPTIONS_TOTALCOUNT;
+ }
+ break;
+
+ case GROUP_CALL_SETTINGS:
+ {
+ itemCount = CALLSETTINGS_TOTALCOUNT;
+ }
+ break;
+
+ case GROUP_CALL_REMINDER:
+ {
+ itemCount = CALLREMINDER_TOTALCOUNT;
+ }
+ break;
+
+ case GROUP_CALL_ALERT:
+ {
+ itemCount = CALLALERT_TOTALCOUNT;
+ }
+ break;
+
+ case GROUP_CALL_ALERT_OPTIONS:
+ {
+ itemCount = CALLALERT_OPTIONS_TOTALCOUNT;
+ }
+ break;
+
+ case GROUP_AREACODE:
+ {
+ itemCount = AREACODE_TOTALCOUNT;
+ }
+ break;
+
+ case GROUP_CALL_SETTINGS_HLPTXT:
+ case GROUP_CALL_REMINDER_HLPTXT:
+ case GROUP_AREACODE_HLPTXT:
+ {
+ itemCount = 0;
+ }
+ break;
+
+ default:
+ break;
+ }
+ return itemCount;
+}
+
+TableViewGroupItem*
+SettingsMoreOptionsForm::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ String helpText(L"");
+ switch (groupIndex)
+ {
+ case GROUP_CALL_SETTINGS_HLPTXT:
+ {
+ helpText.Append(AppUtility::GetResourceString(IDS_SETTING_WAITING_HLP_STRING));
+ }
+ break;
+
+ case GROUP_CALL_REMINDER_HLPTXT:
+ {
+ helpText.Append(AppUtility::GetResourceString(IDS_SETTING_STATUS_TONES_HLP_STRING));
+ }
+ break;
+
+ case GROUP_AREACODE_HLPTXT:
+ {
+ helpText.Append(AppUtility::GetResourceString(IDS_SETTING_AUTO_AREACODE_HLP_STRING));
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ TableViewGroupItem* pItem = new (std::nothrow) TableViewGroupItem();
+ if (helpText.IsEmpty() == true)
+ {
+ pItem->Construct(Dimension(itemWidth, H_LIST_HIDDENGROUP_ITEM));
+ pItem->SetBackgroundColor(COLOR_GROUP_ITEM_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ }
+ else
+ {
+ pItem->Construct(Dimension(itemWidth, H_LIST_MENU_SINGLELINE_HLPTXT_ITEM));
+ //help text item rectangle
+ Rectangle helpItemRect(X_LIST_MENU_HLPTXT_ITEM, Y_LIST_MENU_HLPTXT_ITEM,
+ (itemWidth - X_LIST_MENU_HLPTXT_ITEM), (H_LIST_MENU_SINGLELINE_HLPTXT_ITEM - Y_LIST_MENU_HLPTXT_ITEM));
+ Label* pItemLbl = new (std::nothrow) Label();
+ pItemLbl->Construct(helpItemRect, helpText);
+ pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pItemLbl->SetTextConfig(FONT_SIZE_HELP_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pItemLbl->SetTextColor(COLOR_HELP_TXT);
+ pItem->AddControl(*pItemLbl);
+ pItem->SetEnabled(false);
+ pItem->SetBackgroundColor(COLOR_HELP_ITEM_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ pItem->SetBackgroundColor(COLOR_HELP_ITEM_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+ }
+
+ return pItem;
+}
+
+bool
+SettingsMoreOptionsForm::DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem)
+{
+ delete pItem;
+ pItem = null;
+ return true;
+}
+
+void
+SettingsMoreOptionsForm::UpdateGroupItem(int groupIndex, TableViewGroupItem* pItem)
+{
+ return;
+}
+
+TableViewItem*
+SettingsMoreOptionsForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ TableViewItem* pItem = null;
+
+ switch (groupIndex)
+ {
+ case GROUP_CALLERID:
+ case GROUP_CALL_ALERT:
+ {
+ pItem = CreateExpandableItem(groupIndex, itemIndex, itemWidth);
+ }
+ break;
+
+ case GROUP_CALLERID_OPTIONS:
+ {
+ pItem = CreateCallerIdOptionsItem(itemIndex, itemWidth);
+ }
+ break;
+
+ case GROUP_CALL_ALERT_OPTIONS:
+ {
+ pItem = CreateCallerAlertOptionsItem(itemIndex, itemWidth);
+
+ }
+ break;
+
+ case GROUP_CALL_SETTINGS:
+ case GROUP_CALL_REMINDER:
+ case GROUP_AREACODE:
+ {
+ pItem = CreateSettingMenuItem(groupIndex, itemIndex, itemWidth);
+ }
+ break;
+
+ default:
+ break;
+ }
+ return pItem;
+}
+
+bool
+SettingsMoreOptionsForm::DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem)
+{
+ delete pItem;
+ pItem = null;
+ return true;
+}
+
+void
+SettingsMoreOptionsForm::UpdateItem(int groupIndex, int itemIndex, TableViewItem* pItem)
+{
+ if(groupIndex == GROUP_CALLERID || groupIndex == GROUP_CALL_ALERT)
+ {
+ String subText(L"");
+ bool isExpanded = false;
+ switch (groupIndex)
+ {
+ case GROUP_CALLERID:
+ {
+ subText.Append(FetchSubTextForSelectedCallerId());
+ isExpanded = __isCallerIdExpanded;
+ }
+ break;
+
+ case GROUP_CALL_ALERT:
+ {
+ subText.Append(FetchSubTextForSelectedCallerAlert());
+ isExpanded = __isCallAlertExpanded;
+ }
+ break;
+ }
+ //sub text item
+ Label* pSubTxtLbl = static_cast<Label*>(pItem->GetControl(IDC_SELECTEDOPTION_SUBTEXT_LABEL, true));
+ pSubTxtLbl->SetText(subText);
+ pSubTxtLbl->Invalidate(true);
+ //set Drop-down icon to item
+ SetExpandIconToItem(pItem, isExpanded);
+ pItem->Invalidate(true);
+ }
+ else if(groupIndex == GROUP_AREACODE)
+ {
+ if(__autoAreaCode.IsEmpty() == true)
+ {
+ __autoAreaCode.Append(AppUtility::GetResourceString(IDS_NOT_ASSIGNED_STR));
+ }
+ //sub text item
+ Label* pSubTxtLbl = static_cast<Label*>(pItem->GetControl(IDC_SELECTEDOPTION_SUBTEXT_LABEL, true));
+ pSubTxtLbl->SetText(__autoAreaCode);
+ pSubTxtLbl->Invalidate(true);
+ pItem->Invalidate(true);
+ }
+}
+
+int
+SettingsMoreOptionsForm::GetDefaultGroupItemHeight(void)
+{
+ return H_LIST_HIDDENGROUP_ITEM;
+}
+
+int
+SettingsMoreOptionsForm::GetDefaultItemHeight(void)
+{
+ return H_LIST_NORMAL_MENU_ITEM;
+}
+
+TableViewItem*
+SettingsMoreOptionsForm::CreateExpandableItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ String mainText(L"");
+ String subText(L"");
+
+ switch (groupIndex)
+ {
+ case GROUP_CALLERID:
+ {
+ mainText.Append(AppUtility::GetResourceString(IDS_SETTING_CALLERID_MAIN_STR));
+ subText.Append(FetchSubTextForSelectedCallerId());
+ }
+ break;
+
+ case GROUP_CALL_ALERT:
+ {
+ mainText.Append(AppUtility::GetResourceString(IDS_SETTING_CALL_ALERT_MAIN_STR));
+ subText.Append(FetchSubTextForSelectedCallerAlert());
+ }
+ break;
+ }
+
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_DROPDOWN_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+
+ //main text item
+ Rectangle mainItemRect(X_LIST_MENU_TEXT_ITEM, Y_LIST_MENU_TEXT_ITEM, (itemWidth - (2 * X_LIST_MENU_TEXT_ITEM) - W_EXPAND_ICON),
+ H_LIST_DROPDOWN_TXT_ITEM);
+ Label* pMainTxtLbl = new (std::nothrow) Label();
+ pMainTxtLbl->Construct(mainItemRect, mainText);
+ pMainTxtLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pMainTxtLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pMainTxtLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pMainTxtLbl->SetTextColor(COLOR_NORMAL_MAIN_TXT);
+ pItem->AddControl(*pMainTxtLbl);
+
+ //sub text item
+ Rectangle subItemRect(X_LIST_MENU_TEXT_ITEM, (Y_LIST_MENU_TEXT_ITEM + H_LIST_DROPDOWN_TXT_ITEM),
+ (itemWidth - (2 * X_LIST_MENU_TEXT_ITEM) - W_EXPAND_ICON), H_LIST_DROPDOWN_TXT_ITEM);
+ Label* pSubTxtLbl = new (std::nothrow) Label();
+ pSubTxtLbl->Construct(subItemRect, subText);
+ pSubTxtLbl->SetName(IDC_SELECTEDOPTION_SUBTEXT_LABEL);
+ pSubTxtLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pSubTxtLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pSubTxtLbl->SetTextConfig(FONT_SIZE_SUB_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pSubTxtLbl->SetTextColor(COLOR_NORMAL_SUB_TXT);
+ pItem->AddControl(*pSubTxtLbl);
+
+ pItem->SetBackgroundColor(COLOR_LIST_MENU_ITEM, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ //set Drop-down icon to item
+ SetExpandIconToItem(pItem, true);
+ return pItem;
+}
+
+String
+SettingsMoreOptionsForm::FetchSubTextForSelectedCallerId()
+{
+ //default text
+ String subText(L"");
+ CallLineIdentity lineIdentity;
+ __pSettingsPresentor->GetCallLineIdentity(lineIdentity);
+ //Fetch text for selected item
+ GroupCallerIdOptionsItems selectedIndex = (GroupCallerIdOptionsItems)lineIdentity;
+ switch(selectedIndex)
+ {
+ case CALLEROPTIONS_BY_NETWORK:
+ subText.Append(AppUtility::GetResourceString(IDS_CALLERID_BYNETWORK_STRING));
+ break;
+
+ case CALLEROPTIONS_SHOW:
+ subText.Append(AppUtility::GetResourceString(IDS_CALLERID_SHOW_STRING));
+ break;
+
+ case CALLEROPTIONS_HIDE:
+ subText.Append(AppUtility::GetResourceString(IDS_CALLERID_HIDE_STRING));
+ break;
+
+ default:
+ break;
+ }
+ return subText;
+}
+
+String
+SettingsMoreOptionsForm::FetchSubTextForSelectedCallerAlert()
+{
+ //default text
+ String subText(L"");
+ CallAlertStatus alertStatus;
+ __pSettingsPresentor->GetCallAlertStatus(alertStatus);
+ //Fetch text for selected item
+ GroupCallAlertOptionsItems selectedIndex = (GroupCallAlertOptionsItems) alertStatus;
+ switch(selectedIndex)
+ {
+ case CALLALERT_OPTIONS_OFF:
+ subText.Append(AppUtility::GetResourceString(IDS_SETTING_CALLALERT_OFF_STRING));
+ break;
+
+ case CALLALERT_OPTIONS_SOUND:
+ subText.Append(AppUtility::GetResourceString(IDS_SETTING_CALLALERT_SOUND_STRING));
+ break;
+
+ case CALLALERT_OPTIONS_VIBRATION:
+ subText.Append(AppUtility::GetResourceString(IDS_SETTING_CALLALERT_VIBRATE_STRING));
+ break;
+
+ default:
+ break;
+ }
+ return subText;
+}
+
+
+
+void
+SettingsMoreOptionsForm::SetExpandIconToItem(TableViewItem* pItem, bool isExpanded)
+{
+ Bitmap* pNormalIcon = null;
+ Bitmap* pPressIcon = null;
+
+ if (!isExpanded)
+ {
+ pNormalIcon = AppUtility::GetBitmapFromResourcesN(IDB_LIST_EXPAND, W_EXPAND_ICON, H_EXPAND_ICON);
+ pPressIcon = AppUtility::GetBitmapFromResourcesN(IDB_LIST_EXPAND_PRESSED, W_EXPAND_ICON, H_EXPAND_ICON);
+ }
+ else
+ {
+ pNormalIcon = AppUtility::GetBitmapFromResourcesN(IDB_LIST_OPENED, W_EXPAND_ICON, H_EXPAND_ICON);
+ pPressIcon = AppUtility::GetBitmapFromResourcesN(IDB_LIST_OPENED_PRESSED, W_EXPAND_ICON, H_EXPAND_ICON);
+ }
+
+ int itemWidth = pItem->GetWidth();
+ Rectangle iconRect((itemWidth - W_EXPAND_ICON - X_LIST_MENU_TEXT_ITEM),
+ ((H_LIST_DROPDOWN_MENU_ITEM - H_EXPAND_ICON) / 2), W_EXPAND_ICON, H_EXPAND_ICON);
+ //for drawing blue bg header rectangle on left side.
+ Rectangle blueHeaderRect(0,0,W_LEFT_HEADER_EXPAND_ITEMS,pItem->GetHeight());
+ //normal canvas
+ Canvas* pBgCanvas = new (std::nothrow) Canvas();
+ pBgCanvas->Construct(Rectangle(0,0, pItem->GetBounds().width, pItem->GetBounds().height));
+ pBgCanvas->DrawBitmap(iconRect, *pNormalIcon);
+ pBgCanvas->FillRectangle(COLOR_LEFT_HEADER_EXPAND_ITEMS, blueHeaderRect);
+ Bitmap* pActualBgBmp = new (std::nothrow) Bitmap();
+ pActualBgBmp->Construct(*pBgCanvas,pBgCanvas->GetBounds());
+ pItem->SetBackgroundBitmap(pActualBgBmp, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ delete pBgCanvas;
+ delete pActualBgBmp;
+
+ //pressed canvas
+ pBgCanvas = new (std::nothrow) Canvas();
+ pBgCanvas->Construct(Rectangle(0,0, pItem->GetBounds().width, pItem->GetBounds().height));
+ pBgCanvas->DrawBitmap(iconRect, *pPressIcon);
+ pBgCanvas->FillRectangle(COLOR_LEFT_HEADER_EXPAND_ITEMS, blueHeaderRect);
+ pActualBgBmp = new (std::nothrow) Bitmap();
+ pActualBgBmp->Construct(*pBgCanvas,pBgCanvas->GetBounds());
+ pItem->SetBackgroundBitmap(pActualBgBmp, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+ delete pBgCanvas;
+ delete pActualBgBmp;
+
+ delete pNormalIcon;
+ pNormalIcon = null;
+ delete pPressIcon;
+ pPressIcon = null;
+}
+
+TableViewItem*
+SettingsMoreOptionsForm::CreateCallerIdOptionsItem(int itemIndex, int itemWidth)
+{
+ //create a new item
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_RADIO);
+ pItem->SetBackgroundColor(COLOR_SECONDDEPTH_ITEM_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+
+ //text item rectangle
+ Rectangle itemRect(X_LIST_MENU_TEXT_ITEM, 0, (itemWidth - X_LIST_MENU_TEXT_ITEM), H_LIST_NORMAL_MENU_ITEM);
+ //Option item name
+ String itemName(L"");
+ switch (itemIndex)
+ {
+ case CALLEROPTIONS_BY_NETWORK:
+ itemName.Append(AppUtility::GetResourceString(IDS_CALLERID_BYNETWORK_STRING));
+ break;
+
+ case CALLEROPTIONS_SHOW:
+ itemName.Append(AppUtility::GetResourceString(IDS_CALLERID_SHOW_STRING));
+ break;
+
+ case CALLEROPTIONS_HIDE:
+ itemName.Append(AppUtility::GetResourceString(IDS_CALLERID_HIDE_STRING));
+ break;
+ }
+
+ Label* pItemLbl = new (std::nothrow) Label();
+ pItemLbl->Construct(itemRect, itemName);
+ pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pItemLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pItemLbl->SetTextColor(COLOR_NORMAL_MAIN_TXT);//COLOR_PRESS_MAIN_TXT
+ pItem->AddControl(*pItemLbl);
+
+ return pItem;
+}
+
+TableViewItem*
+SettingsMoreOptionsForm::CreateCallerAlertOptionsItem(int itemIndex, int itemWidth)
+{
+ //create a new item
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_RADIO);
+ pItem->SetBackgroundColor(COLOR_SECONDDEPTH_ITEM_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+
+ //text item rectangle
+ Rectangle itemRect(X_LIST_MENU_TEXT_ITEM, 0, (itemWidth - X_LIST_MENU_TEXT_ITEM), H_LIST_NORMAL_MENU_ITEM);
+ //Option item name
+ String itemName(L"");
+ switch (itemIndex)
+ {
+ case CALLALERT_OPTIONS_OFF:
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_CALLALERT_OFF_STRING));
+ break;
+
+ case CALLALERT_OPTIONS_SOUND:
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_CALLALERT_SOUND_STRING));
+ break;
+
+ case CALLALERT_OPTIONS_VIBRATION:
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_CALLALERT_VIBRATE_STRING));
+ break;
+ }
+
+ Label* pItemLbl = new (std::nothrow) Label();
+ pItemLbl->Construct(itemRect, itemName);
+ pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pItemLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pItemLbl->SetTextColor(COLOR_NORMAL_MAIN_TXT);//COLOR_PRESS_MAIN_TXT
+ pItem->AddControl(*pItemLbl);
+ return pItem;
+}
+
+TableViewItem*
+SettingsMoreOptionsForm::CreateSettingMenuItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ //text item rectangle
+ Rectangle itemNameRect(X_LIST_MENU_TEXT_ITEM, 0, (itemWidth - X_LIST_MENU_TEXT_ITEM), H_LIST_NORMAL_MENU_ITEM);
+
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+ TableViewAnnexStyle style = TABLE_VIEW_ANNEX_STYLE_NORMAL;
+
+ String itemName(L"");
+ String subText(L"");
+ if(groupIndex == GROUP_CALL_SETTINGS)
+ {
+ switch (itemIndex)
+ {
+ case CALLSETTINGS_CALL_BARRING:
+ {
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_BARRING_STRING));
+ }
+ break;
+
+ case CALLSETTINGS_CALL_WAITING:
+ {
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_WAITING_STRING));
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+ else if(groupIndex == GROUP_CALL_REMINDER)
+ {
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_STATUS_TONES_STRING));
+ }
+ else if(groupIndex == GROUP_AREACODE)
+ {
+ style = TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING;
+ itemName.Append(AppUtility::GetResourceString(IDS_SETTING_AUTO_AREACODE_STRING));
+ if(__autoAreaCode.IsEmpty() == true)
+ {
+ subText.Append(AppUtility::GetResourceString(IDS_NOT_ASSIGNED_STR));
+ }
+ else
+ {
+ subText.Append(__autoAreaCode);
+ }
+ //update itemName rectangle
+ itemNameRect.y = Y_LIST_MENU_TEXT_ITEM;
+ itemNameRect.height = H_LIST_NORMAL_TXT_ITEM;
+ itemNameRect.width = (itemWidth - X_LIST_MENU_TEXT_ITEM - W_SLIDER_ICON);
+ }
+
+ pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), style);
+
+ Label* pItemLbl = new (std::nothrow) Label();
+ pItemLbl->Construct(itemNameRect, itemName);
+ pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pItemLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pItemLbl->SetTextColor(COLOR_NORMAL_MAIN_TXT);//COLOR_PRESS_MAIN_TXT
+ pItem->AddControl(*pItemLbl);
+ pItem->SetBackgroundColor(COLOR_LIST_MENU_ITEM, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+
+ if(subText.IsEmpty() == false)
+ {
+ //sub text item
+ Rectangle subItemRect(X_LIST_MENU_TEXT_ITEM, (Y_LIST_MENU_TEXT_ITEM + H_LIST_NORMAL_TXT_ITEM),
+ (itemWidth - X_LIST_MENU_TEXT_ITEM - W_SLIDER_ICON), H_LIST_SUB_TXT_ITEM);
+ Label* pSubTxtLbl = new (std::nothrow) Label();
+ pSubTxtLbl->Construct(subItemRect, subText);
+ pSubTxtLbl->SetName(IDC_SELECTEDOPTION_SUBTEXT_LABEL);
+ pSubTxtLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pSubTxtLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pSubTxtLbl->SetTextConfig(FONT_SIZE_SUB_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pSubTxtLbl->SetTextColor(COLOR_NORMAL_SUB_TXT);
+ pItem->AddControl(*pSubTxtLbl);
+ }
+
+ return pItem;
+}
+
+void
+SettingsMoreOptionsForm::HandleSelectedCallerIdOptions(GroupedTableView& tableView, int itemIndex, TableViewItemStatus state)
+{
+ //check if already checked item is selected
+ if(state == TABLE_VIEW_ITEM_STATUS_UNCHECKED)
+ {
+ tableView.SetItemChecked(GROUP_CALLERID_OPTIONS, itemIndex, true);
+ return;
+ }
+ //uncheck previous selection
+ CallLineIdentity oldLineIdentity;
+ __pSettingsPresentor->GetCallLineIdentity(oldLineIdentity);
+ tableView.SetItemChecked(GROUP_CALLERID_OPTIONS, oldLineIdentity, false);
+ tableView.RefreshItem(GROUP_CALLERID_OPTIONS, oldLineIdentity, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+
+ //send information to network / save data for checked item index.
+ CallLineIdentity updateLineIndentity = (CallLineIdentity)itemIndex;
+ __pSettingsPresentor->SetCallLineIdentity(updateLineIndentity);
+ //update status for group
+ tableView.RefreshItem(GROUP_CALLERID, CALLERID_CALLER_SETTING, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+}
+
+void
+SettingsMoreOptionsForm::HandleSelectedCallAlertOptions(GroupedTableView& tableView, int itemIndex, TableViewItemStatus state)
+{
+ //check if already checked item is selected
+ if(state == TABLE_VIEW_ITEM_STATUS_UNCHECKED)
+ {
+ tableView.SetItemChecked(GROUP_CALL_ALERT_OPTIONS, itemIndex, true);
+ return;
+ }
+ //uncheck previous selection
+ CallAlertStatus oldAlertStatus;
+ __pSettingsPresentor->GetCallAlertStatus(oldAlertStatus);
+ tableView.SetItemChecked(GROUP_CALL_ALERT_OPTIONS, oldAlertStatus, false);
+ tableView.RefreshItem(GROUP_CALL_ALERT_OPTIONS, oldAlertStatus, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+
+ //send information to network / save data for checked item index.
+ CallAlertStatus updateAlertStatus = (CallAlertStatus)itemIndex;
+ __pSettingsPresentor->SetCallAlertStatus(updateAlertStatus);
+ //update status for group
+ tableView.RefreshItem(GROUP_CALL_ALERT, CALLALERT_SETTING, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+}
+
+void
+SettingsMoreOptionsForm::HandleSelectedSettings(int groupIndex, int itemIndex)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager != null);
+
+ switch (groupIndex)
+ {
+ case GROUP_CALL_SETTINGS:
+ {
+ if(itemIndex == CALLSETTINGS_CALL_BARRING)
+ {
+ //switch to form - CALLSETTINGS_CALL_BARRING
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALLTYPE_BARRING), null);
+ }
+ else
+ {
+ //switch to form - CALLSETTINGS_CALL_WAITING
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_WAITING_OPTIONS), null);
+ }
+ }
+ break;
+
+ case GROUP_CALL_REMINDER:
+ {
+ //switch to form - CALLREMINDER_STATUS_TONES
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_STATUSTONES), null);
+ }
+ break;
+
+ case GROUP_AREACODE:
+ {
+ //switch to form - AREACODE_AUTO_AREA_CODE
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_AUTO_AREA_CODE), null);
+ }
+ break;
+
+ default:
+ break;
+ }
+}
--- /dev/null
+//
+// 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 PhnSettingsPresentationModel.cpp
+ * @brief Setting Presentation model
+ */
+#include "PhnSettingsConstants.h"
+#include "PhnSettingsManager.h"
+#include "PhnSettingsPresentationModel.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Social;
+
+SettingsPresentationModel* SettingsPresentationModel::__pInstance = null;
+
+SettingsPresentationModel::SettingsPresentationModel()
+{
+ __pSettingsMgr = null;
+ __pSettingsEventListener = null;
+}
+
+SettingsPresentationModel::~SettingsPresentationModel()
+{
+}
+
+void
+SettingsPresentationModel::CreateInstance(void)
+{
+ __pInstance = new (std::nothrow) SettingsPresentationModel();
+ result r = __pInstance->Construct();
+ if(IsFailed(r))
+ {
+ delete __pInstance;
+ __pInstance = null;
+ return;
+ }
+ atexit(&(SettingsPresentationModel::DestroyInstance));
+}
+
+SettingsPresentationModel*
+SettingsPresentationModel::GetInstance(void)
+{
+ if (__pInstance == null)
+ {
+ CreateInstance();
+ }
+ return __pInstance;
+}
+
+void
+SettingsPresentationModel::DestroyInstance(void)
+{
+ if (__pInstance->__pSettingsMgr != null)
+ {
+ __pInstance->__pSettingsMgr->RemoveSettingEventListener(__pInstance);
+ __pInstance->__pSettingsMgr = null;
+ }
+ delete __pInstance;
+}
+
+result
+SettingsPresentationModel::Construct(void)
+{
+ //Construct Settings Manager
+ __pSettingsMgr = SettingsManager::GetInstance();
+ __pSettingsMgr->AddSettingEventListener(this);
+ return E_SUCCESS;
+}
+
+result
+SettingsPresentationModel::AddSettingEventListener(ISettingsEventListener* pSettingsEventListener)
+{
+ result r = E_FAILURE;
+ if (__pSettingsEventListener == null && pSettingsEventListener != null)
+ {
+ __pSettingsEventListener = pSettingsEventListener;
+ r = E_SUCCESS;
+ }
+ return r;
+}
+
+void
+SettingsPresentationModel::RemoveSettingEventListener(void)
+{
+ __pSettingsEventListener = null;
+}
+
+IMapT<int,String>*
+SettingsPresentationModel::GetRejectMessageListN(void)
+{
+ return __pSettingsMgr->GetRejectMessageListN();
+}
+
+result
+SettingsPresentationModel::AddToCallRejectList(const String& phoneNumber, CallRejectMatchCondition rejectCondition)
+{
+ return __pSettingsMgr->AddToCallRejectList(phoneNumber, rejectCondition);
+}
+
+IListT<CallRejectInfo>*
+SettingsPresentationModel::GetCallRejectList(void)
+{
+ return __pSettingsMgr->GetCallRejectList();
+}
+
+result
+SettingsPresentationModel::SetPrefixDialNumber(int phoneNumberIndex, const String& phoneNumber)
+{
+ return __pSettingsMgr->SetPrefixDialNumber(phoneNumberIndex, phoneNumber);
+}
+
+result
+SettingsPresentationModel::SetActivePrefixDialingValue(int prefixDialIndex)
+{
+ return __pSettingsMgr->SetActivePrefixDialingValue(prefixDialIndex);
+}
+
+result
+SettingsPresentationModel::SetPrefixDialingStatus(bool enablePrefixDialing)
+{
+ return __pSettingsMgr->SetPrefixDialingStatus(enablePrefixDialing);
+}
+
+result
+SettingsPresentationModel::GetActivePrefixDialNumber(Tizen::Base::String& phoneNumber)
+{
+ result r = E_FAILURE;
+ if(__pSettingsMgr->GetPrefixDialingStatus() == true)
+ {
+ int activePrefixIndex = -1;
+ //fetch active prefix index
+ r = __pSettingsMgr->GetActivePrefixDialingValue(activePrefixIndex);
+ TryReturn(r == E_SUCCESS, r, "Error while fetching Active Prefix Dialing Index");
+
+ //fetch phone number mapped to fetched index
+ r = __pSettingsMgr->GetPrefixDialNumberAtIndex(activePrefixIndex, phoneNumber);
+ }
+ return r;
+}
+
+int
+SettingsPresentationModel::SetCallBarringStatus(const String& password, CallBarringType callBarringType, bool activateBarring)
+{
+ return __pSettingsMgr->SetCallBarringStatus(password, callBarringType, activateBarring);
+}
+
+int
+SettingsPresentationModel::GetCallForwardStatus(CallForwardCondition callFwdCondition)
+{
+ return __pSettingsMgr->GetCallForwardStatus(callFwdCondition);
+}
+
+int
+SettingsPresentationModel::SetCallForwardStatus(const String& phoneNumber, CallForwardCondition callFwdCondition, bool activateFwding, int noReplyTime)
+{
+ return __pSettingsMgr->SetCallForwardStatus(phoneNumber, callFwdCondition, activateFwding, noReplyTime);
+}
+
+int
+SettingsPresentationModel::GetCallBarringStatus(CallBarringType callBarringType)
+{
+ return __pSettingsMgr->GetCallBarringStatus(callBarringType);
+}
+
+int
+SettingsPresentationModel::SetCallWaitingStatus(bool activateWaiting)
+{
+ return __pSettingsMgr->SetCallWaitingStatus(activateWaiting);
+}
+
+int
+SettingsPresentationModel::GetCallWaitingStatus(void)
+{
+ return __pSettingsMgr->GetCallWaitingStatus();
+}
+
+result
+SettingsPresentationModel::SetCallConnectToneStatus(bool activate)
+{
+ return __pSettingsMgr->SetCallConnectToneStatus(activate);
+}
+bool
+SettingsPresentationModel::GetCallConnectToneStatus(void)
+{
+ return __pSettingsMgr->GetCallConnectToneStatus();
+}
+
+result
+SettingsPresentationModel::SetMinuteMinderToneStatus(bool activate)
+{
+ return __pSettingsMgr->SetMinuteMinderToneStatus(activate);
+}
+
+bool
+SettingsPresentationModel::GetMinuteMinderToneStatus(void)
+{
+ return __pSettingsMgr->GetMinuteMinderToneStatus();
+}
+
+result
+SettingsPresentationModel::SetCallEndToneStatus(bool activate)
+{
+ return __pSettingsMgr->SetCallEndToneStatus(activate);
+}
+
+bool
+SettingsPresentationModel::GetCallEndToneStatus(void)
+{
+ return __pSettingsMgr->GetCallEndToneStatus();
+}
+
+result
+SettingsPresentationModel::UpdateCallRejectRow(int rowId, const String& phoneNumber, bool activate, CallRejectMatchCondition rejectCondition)
+{
+ return __pSettingsMgr->UpdateCallRejectRow(rowId, phoneNumber, activate, rejectCondition);
+}
+
+result
+SettingsPresentationModel::RemoveCallRejectRow(int rowId)
+{
+ return __pSettingsMgr->RemoveCallRejectRow(rowId);
+}
+
+result
+SettingsPresentationModel::SetRejectMessage(int messageIndex, const String& rejectMessage)
+{
+ return __pSettingsMgr->SetRejectMessage(messageIndex, rejectMessage);
+}
+
+result
+SettingsPresentationModel::RemoveRejectMessage(const Tizen::Base::Collection::IListT<int>& deleteKeyList)
+{
+ return __pSettingsMgr->RemoveRejectMessage(deleteKeyList);
+}
+
+result
+SettingsPresentationModel::SetSpeedDialMapping(const String& contactId, int numberToMap)
+{
+ return __pSettingsMgr->SetSpeedDialMapping(contactId,numberToMap);
+}
+
+IMapT<int,SpeedDialInfo>*
+SettingsPresentationModel::GetSpeedDialMappingN(void)
+{
+ return __pSettingsMgr->GetSpeedDialMappingN();
+}
+
+bool
+SettingsPresentationModel::IsCallToBeRejected(Tizen::Base::String& phoneNumber)
+{
+ return __pSettingsMgr->IsCallToBeRejected(phoneNumber);
+}
+
+result
+SettingsPresentationModel::RemoveSpeedDialMapping(int rowId)
+{
+ return __pSettingsMgr->RemoveSpeedDialMapping(rowId);
+}
+
+result
+SettingsPresentationModel::UpdateSpeedDialMapping(int rowId, const String& contactId, int numberToMap)
+{
+ return __pSettingsMgr->UpdateSpeedDialMapping(rowId, contactId, numberToMap);
+}
+
+result
+SettingsPresentationModel::SetCallLineIdentity(CallLineIdentity identity)
+{
+ return __pSettingsMgr->SetCallLineIdentity(identity);
+}
+
+result
+SettingsPresentationModel::GetCallLineIdentity(CallLineIdentity& identity)
+{
+ return __pSettingsMgr->GetCallLineIdentity(identity);
+}
+
+result
+SettingsPresentationModel::SetCallAlertStatus(CallAlertStatus callAlertStatus)
+{
+ return __pSettingsMgr->SetCallAlertStatus(callAlertStatus);
+}
+
+result
+SettingsPresentationModel::GetCallAlertStatus(CallAlertStatus& callAlertStatus)
+{
+ return __pSettingsMgr->GetCallAlertStatus(callAlertStatus);
+}
+
+result
+SettingsPresentationModel::SetUnknownRejectStatus(bool activate)
+{
+ return __pSettingsMgr->SetUnknownRejectStatus(activate);
+}
+
+bool
+SettingsPresentationModel::GetUnknownRejectStatus(void)
+{
+ return __pSettingsMgr->GetUnknownRejectStatus();
+}
+
+Contact*
+SettingsPresentationModel::FetchContactDetailsN(const String& contactId)
+{
+ return __pSettingsMgr->FetchContactDetailsN(contactId);
+}
+
+//////////////////////////////////////////////////
+// Settings Event Listener Methods //
+//////////////////////////////////////////////////
+
+void
+SettingsPresentationModel::HandleGetCallWaitingResponse(bool isCallSuccessful, bool callWaitingActivated)
+{
+ if (__pSettingsEventListener != null)
+ {
+ __pSettingsEventListener->HandleGetCallWaitingResponse(isCallSuccessful, callWaitingActivated);
+ }
+}
+
+void
+SettingsPresentationModel::HandleSetCallWaitingResponse(bool isCallSuccessful, bool isCallWaitingEnabled)
+{
+ if (__pSettingsEventListener != null)
+ {
+ __pSettingsEventListener->HandleSetCallWaitingResponse(isCallSuccessful, isCallWaitingEnabled);
+ }
+}
+
+void
+SettingsPresentationModel::HandleGetCallForwardResponse(bool isCallSuccessful, CallForwardCondition callFwdCondition, const String& callFwdNumber, bool callForwardActivated, int noReplyWaitTime)
+{
+ if (__pSettingsEventListener != null)
+ {
+ __pSettingsEventListener->HandleGetCallForwardResponse(isCallSuccessful, callFwdCondition, callFwdNumber, callForwardActivated, noReplyWaitTime);
+ }
+}
+
+void
+SettingsPresentationModel::HandleSetCallForwardResponse(bool isCallSuccessful, CallForwardCondition callFwdCondition, const String& callFwdNumber, bool isCallForwardActivated, int noReplyWaitTime)
+{
+ if (__pSettingsEventListener != null)
+ {
+ __pSettingsEventListener->HandleSetCallForwardResponse(isCallSuccessful, callFwdCondition, callFwdNumber, isCallForwardActivated, noReplyWaitTime);
+ }
+}
+
+void
+SettingsPresentationModel::HandleGetCallBarringResponse(bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated)
+{
+ if (__pSettingsEventListener != null)
+ {
+ __pSettingsEventListener->HandleGetCallBarringResponse(isCallSuccessful, callBarringType, isBarringActivated);
+ }
+}
+
+void
+SettingsPresentationModel::HandleSetCallBarringResponse(bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated)
+{
+ if (__pSettingsEventListener != null)
+ {
+ __pSettingsEventListener->HandleSetCallBarringResponse(isCallSuccessful, callBarringType, isBarringActivated);
+ }
+}
+
+result
+SettingsPresentationModel::SetCallState(CallState callState)
+{
+ return __pSettingsMgr->SetCallState(callState);
+}
--- /dev/null
+//
+// 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 PhnSettingsRejectListForm.cpp
+ * @brief Setting Reject list form
+ */
+#include <FApp.h>
+#include "PhnAppUtility.h"
+#include "PhnSettingsConstants.h"
+#include "PhnSettingsPresentationModel.h"
+#include "PhnSettingsRejectListForm.h"
+#include "PhnSceneRegister.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+//constants
+const int IDI_TOTAL_GROUP_COUNT = 1;
+const int IDI_DEFAULT_LIST_ITEMID = 500;
+//by default, list has 1 item
+const int IDI_DEFAULT_LIST_COUNT = 1;
+const int IDI_ADD_FOOTER_INDEX = 0;
+const int IDI_DEL_FOOTER_INDEX = 1;
+static const wchar_t* IDL_SETTINGS_REJECTLIST_FORM = L"IDL_SETTINGS_REJECTLIST_FORM";
+
+SettingsRejectListForm::SettingsRejectListForm(void)
+ : __pNumbersList(null)
+ , __pSettingsPresentor(null)
+{
+}
+
+SettingsRejectListForm::~SettingsRejectListForm(void)
+{
+}
+
+bool
+SettingsRejectListForm::Initialize(void)
+{
+ Construct(IDL_SETTINGS_REJECTLIST_FORM);
+ return true;
+}
+
+result
+SettingsRejectListForm::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+ __pSettingsPresentor = SettingsPresentationModel::GetInstance();
+
+ // Setup back event listener
+ SetFormBackEventListener(this);
+ //Initialize Footer
+ InitializeFooter();
+ //initialize list view
+ r = InitializeGroupedTableView();
+ return r;
+}
+
+void
+SettingsRejectListForm::InitializeFooter(void)
+{
+ Footer* pFooter = GetFooter();
+ if (pFooter != null)
+ {
+ pFooter->SetStyle(FOOTER_STYLE_BUTTON_ICON_TEXT);
+
+ //Add footer item
+ String footerItemName(L"");
+ footerItemName.Append(AppUtility::GetResourceString(IDS_ADD_BTN_STRING));
+ FooterItem addFooterItem;
+ addFooterItem.Construct(IDA_ADD_FOOTER_ITEMID);
+ addFooterItem.SetText(footerItemName);
+ pFooter->InsertItemAt(IDI_ADD_FOOTER_INDEX,addFooterItem);
+
+ //Delete footer item
+ footerItemName.Clear();
+ footerItemName.Append(AppUtility::GetResourceString(IDS_DELETE_BTN_STRING));
+ FooterItem delFooterItem;
+ delFooterItem.Construct(IDA_DELETE_FOOTER_ITEMID);
+ delFooterItem.SetText(footerItemName);
+ pFooter->InsertItemAt(IDI_DEL_FOOTER_INDEX,delFooterItem);
+ //back button
+ pFooter->SetBackButton();
+
+ pFooter->AddActionEventListener(*this);
+ }
+}
+
+result
+SettingsRejectListForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pNumbersList)
+ {
+ delete __pNumbersList;
+ __pNumbersList = null;
+ }
+ __pSettingsPresentor = null;
+ return r;
+}
+
+void
+SettingsRejectListForm::OnActionPerformed(const Control& source, int actionId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager != null);
+
+ switch (actionId)
+ {
+ case IDA_ADD_FOOTER_ITEMID:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_ADD_REJECT_NUMBER), null);
+ }
+ break;
+
+ case IDA_DELETE_FOOTER_ITEMID:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_DEL_NUMBER), null);
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+void
+SettingsRejectListForm::OnFormBackRequested(Form& source)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager != null);
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MAIN_SETTING_MENU), null);
+}
+
+void
+SettingsRejectListForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
+{
+ // Add your scene activate code here
+ FetchNumbersRejectList();
+ GroupedTableView* pMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ if (pMenuTableView != null)
+ {
+ //fetch latest added numbers
+ pMenuTableView->UpdateTableView();
+
+ //set item's check status
+ for (int itemIndex = 0; itemIndex < GetItemCount(0); itemIndex++)
+ {
+ bool isItemActivated = false;
+ if(itemIndex == 0)
+ {
+ isItemActivated = __pSettingsPresentor->GetUnknownRejectStatus();
+ }
+ else
+ {
+ int listIndex = itemIndex - 1;
+ if (__pNumbersList != null && listIndex < __pNumbersList->GetCount())
+ {
+ //numbers from fetched list
+ CallRejectInfo rejectInfo;
+ __pNumbersList->GetAt(listIndex, rejectInfo);
+ isItemActivated = rejectInfo.isActivated;
+ }
+ }
+ pMenuTableView->SetItemChecked(0, itemIndex, isItemActivated);
+ }
+ pMenuTableView->Invalidate(true);
+ }
+
+ //Enable or Disable delete footer button
+ bool enableItem = true;
+ if (__pNumbersList == null || __pNumbersList->GetCount() <= 0)
+ {
+ enableItem = false;
+ }
+ Footer* pFooter = GetFooter();
+ if (pFooter != null)
+ {
+ pFooter->SetItemEnabled(IDI_DEL_FOOTER_INDEX, enableItem);
+ }
+
+}
+
+void
+SettingsRejectListForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
+{
+}
+
+void
+SettingsRejectListForm::FetchNumbersRejectList(void)
+{
+ if (__pNumbersList != null)
+ {
+ delete __pNumbersList;
+ __pNumbersList = null;
+ }
+ __pNumbersList = static_cast<ArrayListT<CallRejectInfo>*>(__pSettingsPresentor->GetCallRejectList());
+}
+
+result
+SettingsRejectListForm::InitializeGroupedTableView(void)
+{
+ result r = E_FAILURE;
+ GroupedTableView* pMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ if (pMenuTableView != null)
+ {
+ pMenuTableView->SetGroupedLookEnabled(true);
+ pMenuTableView->SetItemProvider(this);
+ r = pMenuTableView->AddGroupedTableViewItemEventListener(*this);
+ pMenuTableView->UpdateTableView();
+ }
+ return r;
+}
+
+void
+SettingsRejectListForm::OnGroupedTableViewItemStateChanged(GroupedTableView& tableView, int groupIndex, int itemIndex, TableViewItem* pItem, TableViewItemStatus status)
+{
+ if(status == TABLE_VIEW_ITEM_STATUS_SELECTED)
+ {
+ if(itemIndex == 0)
+ {
+ if(tableView.IsItemChecked(groupIndex,itemIndex) == true)
+ {
+ tableView.SetItemChecked(groupIndex,itemIndex,false);
+ __pSettingsPresentor->SetUnknownRejectStatus(false);
+ }
+ else
+ {
+ tableView.SetItemChecked(groupIndex,itemIndex,true);
+ __pSettingsPresentor->SetUnknownRejectStatus(true);
+ }
+ }
+ else
+ {
+ CallRejectInfo rejectInfo;
+ __pNumbersList->GetAt((itemIndex -1), rejectInfo);
+ // "unknown number" element status changed
+ if (tableView.IsItemChecked(groupIndex,itemIndex) == true)
+ {
+ tableView.SetItemChecked(groupIndex,itemIndex,false);
+ __pSettingsPresentor->UpdateCallRejectRow(rejectInfo.rowId,rejectInfo.phoneNumber,false,rejectInfo.rejectCondition);
+ }
+ else
+ {
+ tableView.SetItemChecked(groupIndex,itemIndex,true);
+ __pSettingsPresentor->UpdateCallRejectRow(rejectInfo.rowId,rejectInfo.phoneNumber,true,rejectInfo.rejectCondition);
+ }
+
+ }
+
+ }
+ if (itemIndex == 0)
+ {
+ // "unknown number" element status changed
+ if (status == TABLE_VIEW_ITEM_STATUS_CHECKED)
+ {
+ __pSettingsPresentor->SetUnknownRejectStatus(true);
+ }
+ else if(status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)
+ {
+ __pSettingsPresentor->SetUnknownRejectStatus(false);
+ }
+ }
+ else
+ {
+ CallRejectInfo rejectInfo;
+ __pNumbersList->GetAt((itemIndex -1), rejectInfo);
+ // "unknown number" element status changed
+ if (status == TABLE_VIEW_ITEM_STATUS_CHECKED)
+ {
+ __pSettingsPresentor->UpdateCallRejectRow(rejectInfo.rowId,rejectInfo.phoneNumber,true,rejectInfo.rejectCondition);
+ }
+ else if(status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)
+ {
+ __pSettingsPresentor->UpdateCallRejectRow(rejectInfo.rowId,rejectInfo.phoneNumber,false,rejectInfo.rejectCondition);
+ }
+ }
+}
+
+int
+SettingsRejectListForm::GetGroupCount(void)
+{
+ return IDI_TOTAL_GROUP_COUNT;
+}
+
+int
+SettingsRejectListForm::GetItemCount(int groupIndex)
+{
+ int itemCount = IDI_DEFAULT_LIST_COUNT;
+ if (__pNumbersList != null)
+ {
+ itemCount += __pNumbersList->GetCount();
+ }
+ return itemCount;
+}
+
+TableViewGroupItem*
+SettingsRejectListForm::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ TableViewGroupItem* pItem = new (std::nothrow) TableViewGroupItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_HIDDENGROUP_ITEM));
+ pItem->SetBackgroundColor(COLOR_GROUP_ITEM_BG);
+ return pItem;
+}
+
+bool
+SettingsRejectListForm::DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem)
+{
+ delete pItem;
+ pItem = null;
+ return true;
+}
+
+void
+SettingsRejectListForm::UpdateGroupItem(int groupIndex, TableViewGroupItem* pItem)
+{
+ return;
+}
+
+TableViewItem*
+SettingsRejectListForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ //sub text rectangle
+ Rectangle criteriaRect(X_LIST_MENU_TEXT_ITEM, H_LIST_NORMAL_TXT_ITEM,
+ (itemWidth - X_LIST_MENU_TEXT_ITEM), H_LIST_SUB_TXT_ITEM);
+ String criteria(L"");
+ //text item rectangle
+ Rectangle itemNameRect(X_LIST_MENU_TEXT_ITEM, 0, (itemWidth - X_LIST_MENU_TEXT_ITEM - W_SLIDER_ICON), H_LIST_NORMAL_MENU_ITEM);
+ String itemName(L"");
+
+ switch (itemIndex)
+ {
+ case 0:
+ {
+ //default "unknown" item
+ itemName.Append(AppUtility::GetResourceString(IDS_DEFAULT_REJECT_ITEM_STRING));
+ }
+ break;
+
+ default:
+ {
+ int listIndex = itemIndex - 1;
+ if (__pNumbersList != null && listIndex < __pNumbersList->GetCount())
+ {
+ //numbers from fetched list
+ CallRejectInfo rejectInfo;
+ __pNumbersList->GetAt(listIndex, rejectInfo);
+ itemName.Append(rejectInfo.phoneNumber);
+ //update item name rectangle
+ itemNameRect.y = Y_LIST_MENU_TEXT_ITEM;
+ itemNameRect.height = H_LIST_NORMAL_TXT_ITEM;
+ //criteria string
+ switch (rejectInfo.rejectCondition)
+ {
+ case CALL_REJECT_MATCH_EXACTLY:
+ {
+ criteria.Append(AppUtility::GetResourceString(IDS_MATCHCRITERIA_EXACT));
+ }
+ break;
+
+ case CALL_REJECT_MATCH_START:
+ {
+ criteria.Append(AppUtility::GetResourceString(IDS_MATCHCRITERIA_START));
+ }
+ break;
+
+ case CALL_REJECT_MATCH_END:
+ {
+ criteria.Append(AppUtility::GetResourceString(IDS_MATCHCRITERIA_END));
+ }
+ break;
+
+ case CALL_REJECT_MATCH_INCLUDE:
+ {
+ criteria.Append(AppUtility::GetResourceString(IDS_MATCHCRITERIA_INCLUDE));
+ }
+ break;
+ }
+ }
+ }
+ break;
+ }
+
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING);
+ //item name
+ Label* pItemLbl = new (std::nothrow) Label();
+ pItemLbl->Construct(itemNameRect, itemName);
+ pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pItemLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pItemLbl->SetTextColor(COLOR_MAIN_TXT);
+ pItem->AddControl(*pItemLbl);
+ //criteria
+ if(criteria.IsEmpty() == false)
+ {
+ Label* pCriteriaLbl = new (std::nothrow) Label();
+ pCriteriaLbl->Construct(criteriaRect, criteria);
+ pCriteriaLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pCriteriaLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pCriteriaLbl->SetTextConfig(FONT_SIZE_SUB_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pCriteriaLbl->SetTextColor(COLOR_NORMAL_SUB_TXT);
+ pItem->AddControl(*pCriteriaLbl);
+ }
+ pItem->SetBackgroundColor(COLOR_LIST_MENU_ITEM, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ return pItem;
+}
+
+bool
+SettingsRejectListForm::DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem)
+{
+ delete pItem;
+ pItem = null;
+ return true;
+}
+
+void
+SettingsRejectListForm::UpdateItem(int groupIndex, int itemIndex, TableViewItem* pItem)
+{
+ return;
+}
+
+int
+SettingsRejectListForm::GetDefaultGroupItemHeight(void)
+{
+ return H_LIST_HIDDENGROUP_ITEM;
+}
+
+int
+SettingsRejectListForm::GetDefaultItemHeight(void)
+{
+ return H_LIST_NORMAL_MENU_ITEM;
+}
--- /dev/null
+//
+// 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 PhnSettingsRejectMsgsForm.cpp
+ * @brief Setting Reject message form
+ */
+#include <FApp.h>
+#include "PhnAppUtility.h"
+#include "PhnSettingsConstants.h"
+#include "PhnSettingsPresentationModel.h"
+#include "PhnSettingsRejectMsgsForm.h"
+#include "PhnSceneRegister.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Graphics;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+
+//contants
+const int IDI_TOTAL_GROUP_COUNT = 1;
+const int IDI_ADD_FOOTER_INDEX = 0;
+const int IDI_DEL_FOOTER_INDEX = 1;
+static const wchar_t* IDL_SETTINGS_REJECTMSGS_FORM = L"IDL_SETTINGS_REJECTMSGS_FORM";
+
+SettingsRejectMsgsForm::SettingsRejectMsgsForm(void)
+ : __pMsgsMap(null)
+ , __pSettingsPresentor(null)
+{
+}
+
+SettingsRejectMsgsForm::~SettingsRejectMsgsForm(void)
+{
+}
+
+bool
+SettingsRejectMsgsForm::Initialize(void)
+{
+ Construct(IDL_SETTINGS_REJECTMSGS_FORM);
+ return true;
+}
+
+result
+SettingsRejectMsgsForm::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+ __pSettingsPresentor = SettingsPresentationModel::GetInstance();
+ // Setup back event listener
+ SetFormBackEventListener(this);
+ //Initialize Footer
+ InitializeFooter();
+ //initialize list view
+ r = InitializeGroupedTableView();
+ return r;
+}
+
+void
+SettingsRejectMsgsForm::InitializeFooter(void)
+{
+ Footer* pFooter = GetFooter();
+ if (pFooter != null)
+ {
+ pFooter->SetStyle(FOOTER_STYLE_BUTTON_ICON_TEXT);
+
+ //Add footer item
+ String footerItemName(L"");
+ footerItemName.Append(AppUtility::GetResourceString(IDS_ADD_BTN_STRING));
+ FooterItem addFooterItem;
+ addFooterItem.Construct(IDA_ADD_FOOTER_ITEMID);
+ addFooterItem.SetText(footerItemName);
+ pFooter->InsertItemAt(IDI_ADD_FOOTER_INDEX, addFooterItem);
+
+ //Delete footer item
+ footerItemName.Clear();
+ footerItemName.Append(AppUtility::GetResourceString(IDS_DELETE_BTN_STRING));
+ FooterItem delFooterItem;
+ delFooterItem.Construct(IDA_DELETE_FOOTER_ITEMID);
+ delFooterItem.SetText(footerItemName);
+ pFooter->InsertItemAt(IDI_DEL_FOOTER_INDEX, delFooterItem);
+
+ //back button
+ pFooter->SetBackButton();
+
+ pFooter->SetItemColor(FOOTER_ITEM_STATUS_DISABLED, pFooter->GetColor());
+ pFooter->SetButtonColor(BUTTON_ITEM_STATUS_NORMAL, pFooter->GetColor());
+ pFooter->AddActionEventListener(*this);
+ }
+}
+
+result
+SettingsRejectMsgsForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pMsgsMap)
+ {
+ delete __pMsgsMap;
+ __pMsgsMap = null;
+ }
+ __pSettingsPresentor = null;
+ return r;
+}
+
+void
+SettingsRejectMsgsForm::OnActionPerformed(const Control& source, int actionId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager != null);
+
+ switch (actionId)
+ {
+ case IDA_ADD_FOOTER_ITEMID:
+ {
+ //switch to Add New Reject Msg form
+ int msgCount = 0;
+ if (__pMsgsMap != null)
+ {
+ msgCount = __pMsgsMap->GetCount();
+ }
+
+ if(msgCount < 6)
+ {
+ IList* pArgList = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pArgList->Add((new (std::nothrow) Integer(msgCount)));
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_ADD_REJECT_MSG), pArgList);
+ }
+ }
+ break;
+
+ case IDA_DELETE_FOOTER_ITEMID:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_DEL_MESSAGE), null);
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+void
+SettingsRejectMsgsForm::OnFormBackRequested(Form& source)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager != null);
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MAIN_SETTING_MENU), null);
+}
+
+void
+SettingsRejectMsgsForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
+{
+ //Fetch the latest message list
+ FetchRejectMsgs();
+ GroupedTableView* pMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ if (pMenuTableView != null)
+ {
+ pMenuTableView->UpdateTableView();
+ }
+ //Enable or Disable delete footer button
+ bool enableDelItem = true;
+ bool enableAddItem = true;
+ if (__pMsgsMap == null || __pMsgsMap->GetCount() <= 0)
+ {
+ enableDelItem = false;
+ }
+ if(__pMsgsMap != null && __pMsgsMap->GetCount() >= 6)
+ {
+ enableAddItem = false;
+ }
+ Footer* pFooter = GetFooter();
+ if (pFooter != null)
+ {
+ pFooter->SetItemEnabled(IDI_DEL_FOOTER_INDEX, enableDelItem);
+ pFooter->SetItemEnabled(IDI_ADD_FOOTER_INDEX, enableAddItem);
+ }
+}
+
+void
+SettingsRejectMsgsForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
+{
+}
+
+void
+SettingsRejectMsgsForm::FetchRejectMsgs(void)
+{
+ if (__pMsgsMap != null)
+ {
+ __pMsgsMap->RemoveAll();
+ delete __pMsgsMap;
+ }
+ //item to be fetched from Db
+ __pMsgsMap = __pSettingsPresentor->GetRejectMessageListN();
+}
+
+result
+SettingsRejectMsgsForm::InitializeGroupedTableView(void)
+{
+ result r = E_FAILURE;
+ GroupedTableView* pMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
+ if (pMenuTableView != null)
+ {
+ pMenuTableView->SetGroupedLookEnabled(true);
+ pMenuTableView->SetItemProvider(this);
+ r = pMenuTableView->AddGroupedTableViewItemEventListener(*this);
+ }
+ return r;
+}
+
+void
+SettingsRejectMsgsForm::OnGroupedTableViewItemStateChanged(GroupedTableView& tableView, int groupIndex, int itemIndex, TableViewItem* pItem, TableViewItemStatus status)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager != null);
+
+ if(__pMsgsMap != null)
+ {
+ int listIndex = itemIndex;
+ IListT<String> *pRejectMsgList = __pMsgsMap->GetValuesN();
+ if (pRejectMsgList != null && listIndex < pRejectMsgList->GetCount())
+ {
+ //switch to edit message form
+ String msgToBeEdited;
+ pRejectMsgList->GetAt(listIndex, msgToBeEdited);
+ //Ownership - transferred to next form
+ IList* pArgList = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pArgList->Add((new Integer(listIndex)));
+ pArgList->Add(new String(msgToBeEdited));
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_EDIT_REJECT_MSG), pArgList);
+ }
+ }
+}
+
+int
+SettingsRejectMsgsForm::GetGroupCount(void)
+{
+ return IDI_TOTAL_GROUP_COUNT;
+}
+
+int
+SettingsRejectMsgsForm::GetItemCount(int groupIndex)
+{
+ int itemCount = 0;
+ if (__pMsgsMap != null)
+ {
+ itemCount += __pMsgsMap->GetCount();
+ }
+ return itemCount;
+}
+
+TableViewGroupItem*
+SettingsRejectMsgsForm::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ TableViewGroupItem* pItem = new (std::nothrow) TableViewGroupItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_HIDDENGROUP_ITEM));
+ pItem->SetBackgroundColor(COLOR_GROUP_ITEM_BG);
+ return pItem;
+}
+
+bool
+SettingsRejectMsgsForm::DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem)
+{
+ delete pItem;
+ pItem = null;
+ return true;
+}
+
+void
+SettingsRejectMsgsForm::UpdateGroupItem(int groupIndex, TableViewGroupItem* pItem)
+{
+ return;
+}
+
+TableViewItem*
+SettingsRejectMsgsForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ int listIndex = itemIndex;
+ //main text item rectangle
+ Rectangle mainItemRect(X_LIST_MENU_TEXT_ITEM, 0, (itemWidth - X_LIST_MENU_TEXT_ITEM), H_LIST_NORMAL_MENU_ITEM);
+
+ TableViewItem* pItem = null;
+ if (__pMsgsMap != null && listIndex < __pMsgsMap->GetCount())
+ {
+ //messages are from fetched list
+ String itemName;
+ __pMsgsMap->GetValue(listIndex, itemName);
+
+ pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ //main text
+ Label* pItemLbl = new (std::nothrow) Label();
+ pItemLbl->Construct(mainItemRect, itemName);
+ pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pItemLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
+ pItemLbl->SetTextColor(COLOR_MAIN_TXT);
+ pItem->AddControl(*pItemLbl);
+ pItem->SetBackgroundColor(COLOR_LIST_MENU_ITEM, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ }
+ return pItem;
+}
+
+bool
+SettingsRejectMsgsForm::DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem)
+{
+ delete pItem;
+ pItem = null;
+ return true;
+}
+
+void
+SettingsRejectMsgsForm::UpdateItem(int groupIndex, int itemIndex, TableViewItem* pItem)
+{
+ return;
+}
+
+int
+SettingsRejectMsgsForm::GetDefaultGroupItemHeight(void)
+{
+ return H_LIST_HIDDENGROUP_ITEM;
+}
+
+int
+SettingsRejectMsgsForm::GetDefaultItemHeight(void)
+{
+ return H_LIST_NORMAL_MENU_ITEM;
+}
--- /dev/null
+//
+// 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 PhnSettingsSpeedDialForm.cpp
+ * @brief Setting Speed dial form
+ */
+#include <FApp.h>
+#include <FSocial.h>
+#include "PhnAppUtility.h"
+#include "PhnSettingsConstants.h"
+#include "PhnSettingsSpeedDialForm.h"
+#include "PhnSceneRegister.h"
+#include "PhnSpeedDialInfo.h"
+#include "PhnSettingsPresentationModel.h"
+#include "PhnTypes.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::App;
+using namespace Tizen::Graphics;
+using namespace Tizen::Social;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+//constants
+const int H_DELETE_ICON_BMP = 56;
+const int W_DELETE_ICON_BMP = 56;
+const int W_VOICEMAIL_ICON_BG = 213;
+const int H_VOICEMAIL_ICON_BG = 213;
+const int W_VOICEMAIL_ICON = 100;
+const int H_VOICEMAIL_ICON = 100;
+const int W_SPEED_DIAL_CHECK_ICON = 64;
+const int H_SPEED_DIAL_CHECK_ICON = 64;
+const unsigned int COLOR_EMPTY_PHOTO = Color32<103, 103, 103>::Value;
+//String contants for control name
+static const wchar_t* IDL_SETTINGS_SPEEDDIAL_FORM = L"IDL_SETTINGS_SPEEDDIAL_FORM";
+static const wchar_t* IDC_PHOTO_BTN2 = L"IDC_PHOTO_BUTTON2";
+static const wchar_t* IDC_PHOTO_BTN3 = L"IDC_PHOTO_BUTTON3";
+static const wchar_t* IDC_PHOTO_BTN4 = L"IDC_PHOTO_BUTTON4";
+static const wchar_t* IDC_PHOTO_BTN5 = L"IDC_PHOTO_BUTTON5";
+static const wchar_t* IDC_PHOTO_BTN6 = L"IDC_PHOTO_BUTTON6";
+static const wchar_t* IDC_PHOTO_BTN7 = L"IDC_PHOTO_BUTTON7";
+static const wchar_t* IDC_PHOTO_BTN8 = L"IDC_PHOTO_BUTTON8";
+static const wchar_t* IDC_PHOTO_BTN9 = L"IDC_PHOTO_BUTTON9";
+
+static const wchar_t* IDC_NAME_LABEL2 = L"IDC_NAME_LABEL2";
+static const wchar_t* IDC_NAME_LABEL3 = L"IDC_NAME_LABEL3";
+static const wchar_t* IDC_NAME_LABEL4 = L"IDC_NAME_LABEL4";
+static const wchar_t* IDC_NAME_LABEL5 = L"IDC_NAME_LABEL5";
+static const wchar_t* IDC_NAME_LABEL6 = L"IDC_NAME_LABEL6";
+static const wchar_t* IDC_NAME_LABEL7 = L"IDC_NAME_LABEL7";
+static const wchar_t* IDC_NAME_LABEL8 = L"IDC_NAME_LABEL8";
+static const wchar_t* IDC_NAME_LABEL9 = L"IDC_NAME_LABEL9";
+
+static const wchar_t* IDB_SPEED_DIAL_CHECK = L"C01-5_icon_speeddial_check.png";
+
+SettingsSpeedDialForm::SettingsSpeedDialForm(void)
+{
+ __pSpeedDialMappingList = null;
+ __pSettingsPresentor = null;
+ __keyToMap = 0;
+ __isUpdate = false;
+ __isDeleteMode = false;
+ __pAddressbook = null;
+ __pSpeedDialPopup = null;
+ __pDeleteList = null;
+ __pPreviousSceneId = null;
+ __isContactAppControlLaunched = false;
+}
+
+SettingsSpeedDialForm::~SettingsSpeedDialForm(void)
+{
+// SettingsPresentationModel::DeleteInstance();
+ if(__pPreviousSceneId != null)
+ {
+ delete __pPreviousSceneId;
+ }
+}
+
+bool
+SettingsSpeedDialForm::Initialize(void)
+{
+ Construct(IDL_SETTINGS_SPEEDDIAL_FORM);
+ //Initialise voice mail
+ InitializeVoiceMail();
+ return true;
+}
+
+result
+SettingsSpeedDialForm::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+
+ // Setup back event listener
+ SetFormBackEventListener(this);
+ __pSettingsPresentor = SettingsPresentationModel::GetInstance();
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+ __pAddressbook = pAddressbookManager->GetAddressbookN(DEFAULT_ADDRESSBOOK_ID);
+ if (__pAddressbook == null)
+ {
+ r = E_FAILURE;
+ }
+ return r;
+}
+
+void
+SettingsSpeedDialForm::InitializeFooter(void)
+{
+ Footer* pFooter = GetFooter();
+ if (pFooter != null)
+ {
+ pFooter->RemoveAllButtons();
+ pFooter->RemoveAllItems();
+ pFooter->RemoveBackButton();
+
+ pFooter->SetStyle(FOOTER_STYLE_BUTTON_ICON_TEXT);
+
+ //Delete footer item
+ String footerItemName(L"");
+ footerItemName.Append(AppUtility::GetResourceString(IDS_REMOVE_CONTACT));
+ FooterItem delFooterItem;
+ delFooterItem.Construct(IDA_DELETE_FOOTER_ITEMID);
+ delFooterItem.SetText(footerItemName);
+ pFooter->AddItem(delFooterItem);
+ if(__isDeleteMode == false)
+ {
+ if(__pSpeedDialMappingList != null)
+ {
+ if(__pSpeedDialMappingList->GetCount() == 0)
+ {
+ pFooter->SetItemEnabled(0,false);
+ }
+ else
+ {
+ pFooter->SetItemEnabled(0,true);
+ }
+ }
+ else
+ {
+ pFooter->SetItemEnabled(0,false);
+ }
+
+
+ //back button
+ pFooter->SetBackButton();
+ pFooter->SetButtonColor(BUTTON_ITEM_STATUS_NORMAL, pFooter->GetColor());
+ pFooter->AddActionEventListener(*this);
+ pFooter->RequestRedraw(true);
+ }
+ else
+ {
+
+ if(__pDeleteList != null)
+ {
+ if(__pDeleteList->GetCount() == 0)
+ {
+ pFooter->SetItemEnabled(0,false);
+ }
+ else
+ {
+ pFooter->SetItemEnabled(0,true);
+ }
+ }
+ else
+ {
+ pFooter->SetItemEnabled(0,false);
+ }
+
+ FooterItem cancelFooterItem;
+ cancelFooterItem.Construct(IDA_CANCEL_FOOTER_ITEMID);
+ String cancelString = AppUtility::GetResourceString(L"IDS_CANCEL");
+ cancelFooterItem.SetText(cancelString);
+ pFooter->AddItem(cancelFooterItem);
+ pFooter->RequestRedraw(true);
+ }
+ }
+}
+
+void
+SettingsSpeedDialForm::InitializeVoiceMail(void)
+{
+ Button* pVoiceMailBtn = static_cast<Button*>(GetControl(IDC_VOICEMAIL_BUTTON));
+ if (pVoiceMailBtn != null)
+ {
+ Bitmap* pIcon = AppUtility::GetBitmapFromResourcesN(IDB_VOICECALL_ICON, W_VOICEMAIL_ICON, H_VOICEMAIL_ICON);
+ Point iconPos(((pVoiceMailBtn->GetBounds().width - W_VOICEMAIL_ICON) / 2), ((pVoiceMailBtn->GetBounds().height - H_VOICEMAIL_ICON) / 2));
+ pVoiceMailBtn->SetNormalBitmap(iconPos, *pIcon);
+ pVoiceMailBtn->SetPressedBitmap(iconPos, *pIcon);
+ pVoiceMailBtn->SetColor(BUTTON_STATUS_NORMAL, COLOR_EMPTY_PHOTO);
+ pVoiceMailBtn->SetActionId(IDA_VOICEMAIL);
+ pVoiceMailBtn->AddActionEventListener(*this);
+ delete pIcon;
+ pIcon = null;
+ }
+}
+
+void
+SettingsSpeedDialForm::InitializePhotoButtons(const String& btnName, const String& lblName, ActionId actionId)
+{
+ Button* pButton = static_cast<Button*>(GetControl(btnName));
+ Label* pNameLabel = static_cast<Label*>(GetControl(lblName));
+ if (pButton != null && pNameLabel != null)
+ {
+ String contactId;
+ RecordId recordId = INVALID_RECORD_ID;
+ SpeedDialInfo speedDialInfo;
+
+ if (__pSpeedDialMappingList != null)
+ {
+ __pSpeedDialMappingList->GetValue(actionId,speedDialInfo);
+ if (speedDialInfo.keyMapping == actionId && speedDialInfo.contactId.IsEmpty() == false)
+ {
+ // Convert String value to long long type value
+ Integer::Parse(speedDialInfo.contactId, recordId);
+ }
+ }
+
+ //Fetch contacts Photo and name
+ Bitmap* pContactPhoto = null;
+ String contactName(L"");
+ Contact* pMappedContact = null;
+ if (recordId != Tizen::Social::INVALID_RECORD_ID)
+ {
+ pMappedContact = __pAddressbook->GetContactN(recordId);
+ if(pMappedContact != null)
+ {
+ pContactPhoto = pMappedContact->GetThumbnailN();
+ if (pContactPhoto != null)
+ {
+ Canvas* pCanvas = new (std::nothrow) Canvas;
+ Rectangle canvasRect(Rectangle(0, 0, pButton->GetBounds().width, pButton->GetBounds().height));
+ pCanvas->Construct(canvasRect);
+ //draw the contact bitmap
+ pCanvas->DrawBitmap(canvasRect,*pContactPhoto);
+ delete pContactPhoto;
+ pContactPhoto = new Bitmap();
+ pContactPhoto->Construct(*pCanvas, pCanvas->GetBounds());
+ delete pCanvas;
+
+ }
+
+ }
+ }
+
+ if (recordId != Tizen::Social::INVALID_RECORD_ID)
+ {
+
+ if (pMappedContact != null)
+ {
+
+ if (pContactPhoto != null)
+ {
+ if ((__isDeleteMode == true) && (__pDeleteList != null))
+ {
+ if(actionId == __keyToMap)
+ {
+ if(__pDeleteList->Contains(__keyToMap) == true)
+ {
+ __pDeleteList->Remove(__keyToMap);
+ }
+ else
+ {
+ //update photo bitmap with check icon
+ Canvas* pCanvas = new (std::nothrow) Canvas;
+ Rectangle canvasRect(Rectangle(0, 0, pButton->GetBounds().width, pButton->GetBounds().height));
+ pCanvas->Construct(canvasRect);
+ //draw the contact bitmap
+ pCanvas->DrawBitmap(canvasRect,*pContactPhoto);
+ //apply color
+ pCanvas->DrawRectangle(canvasRect);
+ pCanvas->FillRectangle(Color(103,103,103,127),canvasRect);
+ //draw check icon
+ Bitmap* pBitmap = AppUtility::GetBitmapFromResourcesN(IDB_SPEED_DIAL_CHECK,W_SPEED_DIAL_CHECK_ICON,H_SPEED_DIAL_CHECK_ICON);
+ pCanvas->DrawBitmap(Point((((canvasRect.width)/2) - (W_SPEED_DIAL_CHECK_ICON/2)),(((canvasRect.height)/2)- (H_SPEED_DIAL_CHECK_ICON/2))),*pBitmap);
+
+ //construct the final Bitmap to Button
+ delete pContactPhoto;
+ pContactPhoto = new Bitmap();
+ pContactPhoto->Construct(*pCanvas, pCanvas->GetBounds());
+ delete pCanvas;
+ delete pBitmap;
+ __pDeleteList->Add(__keyToMap);
+ }
+ }
+ }
+ }
+ else
+ {
+ if (__isDeleteMode == false)
+ {
+ //Create a new canvas
+ Canvas* pCanvas = new (std::nothrow) Canvas;
+ Rectangle canvasRect(Rectangle(0, 0, pButton->GetBounds().width, pButton->GetBounds().height));
+ pCanvas->Construct(canvasRect);
+ pCanvas->DrawRectangle(canvasRect);
+ pCanvas->FillRectangle(COLOR_EMPTY_PHOTO,canvasRect);
+ //create the final Bitmap
+ pContactPhoto = new Bitmap();
+ pContactPhoto->Construct(*pCanvas, pCanvas->GetBounds());
+ delete pCanvas;
+ }
+ else
+ {
+ if ((__pDeleteList != null))
+ {
+ if(__pDeleteList->Contains(__keyToMap) == true)
+ {
+ //Create a new canvas
+ Canvas* pCanvas = new (std::nothrow) Canvas;
+ Rectangle canvasRect(Rectangle(0, 0, pButton->GetBounds().width, pButton->GetBounds().height));
+ pCanvas->Construct(canvasRect);
+ pCanvas->DrawRectangle(canvasRect);
+ pCanvas->FillRectangle(COLOR_EMPTY_PHOTO,canvasRect);
+ //Set the final Bitmap to Button
+ pContactPhoto = new Bitmap();
+ pContactPhoto->Construct(*pCanvas, pCanvas->GetBounds());
+ delete pCanvas;
+ __pDeleteList->Remove(__keyToMap);
+ }
+ else
+ {
+ Canvas* pCanvas = new (std::nothrow) Canvas;
+ Rectangle canvasRect(Rectangle(0, 0, pButton->GetBounds().width, pButton->GetBounds().height));
+ pCanvas->Construct(canvasRect);
+ //apply color
+ pCanvas->DrawRectangle(canvasRect);
+ pCanvas->FillRectangle(Color(103,103,103,127),canvasRect);
+ //draw check icon
+ Bitmap* pBitmap = AppUtility::GetBitmapFromResourcesN(IDB_SPEED_DIAL_CHECK,W_SPEED_DIAL_CHECK_ICON,H_SPEED_DIAL_CHECK_ICON);
+ pCanvas->DrawBitmap(Point((((canvasRect.width)/2) - (W_SPEED_DIAL_CHECK_ICON/2)),(((canvasRect.height)/2)- (H_SPEED_DIAL_CHECK_ICON/2))),*pBitmap);
+ //Set the final Bitmap to Button
+ pContactPhoto = new Bitmap();
+ pContactPhoto->Construct(*pCanvas, pCanvas->GetBounds());
+ delete pCanvas;
+ delete pBitmap;
+ __pDeleteList->Add(__keyToMap);
+ }
+ }
+ }
+ }
+
+ //fetch Display name for selected contact
+ pMappedContact->GetValue(CONTACT_PROPERTY_ID_DISPLAY_NAME,contactName);
+ if (contactName.IsEmpty() == true)
+ {
+ String firstName;
+ pMappedContact->GetValue(CONTACT_PROPERTY_ID_FIRST_NAME,firstName);
+ String lastName;
+ pMappedContact->GetValue(CONTACT_PROPERTY_ID_LAST_NAME,lastName);
+ contactName.Append(firstName + L" " + lastName);
+ }
+ delete pMappedContact;
+ }
+ }
+ else
+ {
+ //Create a new canvas - invalid record
+ Canvas* pCanvas = new (std::nothrow) Canvas;
+ Rectangle canvasRect(Rectangle(0, 0, pButton->GetBounds().width, pButton->GetBounds().height));
+ pCanvas->Construct(canvasRect);
+ pCanvas->DrawRectangle(canvasRect);
+ pCanvas->FillRectangle(COLOR_EMPTY_PHOTO,canvasRect);
+ //create the final Bitmap
+ pContactPhoto = new Bitmap();
+ pContactPhoto->Construct(*pCanvas, pCanvas->GetBounds());
+ delete pCanvas;
+
+ //reset display name - invalid record
+ contactName.Append(actionId);
+ contactName.Append(AppUtility::GetResourceString(L"IDS_DEFAULT_SPEED_DIAL_TEXT"));
+ }
+
+ pButton->SetColor(BUTTON_STATUS_NORMAL, COLOR_EMPTY_PHOTO);
+ //set contact photo to button
+ if(pContactPhoto != null)
+ {
+// pButton->SetNormalBackgroundBitmap(*pContactPhoto);
+ pButton->SetNormalBitmap(Point(0,0),*pContactPhoto);
+ pButton->Invalidate(true);
+ delete pContactPhoto;
+ }
+ //update contacts name
+ if (pNameLabel != null)
+ {
+ pNameLabel->SetText(contactName);
+ pNameLabel->Invalidate(true);
+ }
+
+ if(pButton->GetActionId() != actionId)
+ {
+ pButton->SetActionId(actionId);
+ pButton->AddActionEventListener(*this);
+ }
+ }
+}
+
+
+result
+SettingsSpeedDialForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pSpeedDialMappingList)
+ {
+ delete __pSpeedDialMappingList;
+ __pSpeedDialMappingList = null;
+ }
+
+ __pSettingsPresentor = null;
+ if (__pAddressbook)
+ {
+ delete __pAddressbook;
+ }
+
+ if (__pDeleteList != null)
+ {
+ delete __pDeleteList;
+ }
+ return r;
+}
+
+void
+SettingsSpeedDialForm::OnActionPerformed(const Control& source, int actionId)
+{
+ switch (actionId)
+ {
+ case IDA_CANCEL_FOOTER_ITEMID:
+ {
+ String titleString = AppUtility::GetResourceString(L"IDS_SPEED_DIAL_TITLE");
+ Header* pHeader = GetHeader();
+ pHeader->SetTitleText(titleString);
+ pHeader->RequestRedraw(true);
+ if (__pDeleteList != null)
+ {
+ __pDeleteList->RemoveAll();
+
+ }
+ __isDeleteMode = false;
+ UpdateAllButtons();
+
+ }
+ break;
+ case IDA_DELETE_FOOTER_ITEMID:
+ {
+ Header* pHeader = GetHeader();
+ if (__isDeleteMode == false)
+ {
+ __isDeleteMode = true;
+ String titleString = AppUtility::GetResourceString(L"IDS_SPEED_DIAL_DELETE_TITLE");
+ pHeader->SetTitleText(titleString);
+ pHeader->RequestRedraw(true);
+ InitializeFooter();
+/* Footer* pFooter = GetFooter();
+ if (pFooter != null)
+ {
+ pFooter->RemoveAllButtons();
+ pFooter->RemoveAllItems();
+ pFooter->RemoveBackButton();
+ pFooter->SetStyle(FOOTER_STYLE_BUTTON_ICON_TEXT);
+
+ //Delete footer item
+ String footerItemName(L"");
+ footerItemName.Append(AppUtility::GetResourceString(IDS_REMOVE_CONTACT));
+ FooterItem delFooterItem;
+ delFooterItem.Construct(IDA_DELETE_FOOTER_ITEMID);
+ delFooterItem.SetText(footerItemName);
+ pFooter->AddItem(delFooterItem);
+
+ FooterItem cancelFooterItem;
+ cancelFooterItem.Construct(IDA_CANCEL_FOOTER_ITEMID);
+ String cancelString = AppUtility::GetResourceString(L"IDS_CANCEL");
+ cancelFooterItem.SetText(cancelString);
+ pFooter->AddItem(cancelFooterItem);
+ pFooter->RequestRedraw(true);
+ }*/
+ }
+ else
+ {
+ String titleString = AppUtility::GetResourceString(L"IDS_SPEED_DIAL_TITLE");
+ pHeader->SetTitleText(titleString);
+ pHeader->RequestRedraw(true);
+ if (__pDeleteList != null)
+ {
+ for (int index = 0; index < __pDeleteList->GetCount(); index++)
+ {
+ int keyToDelete;
+ __pDeleteList->GetAt(index,keyToDelete);
+ SpeedDialInfo speedDialInfo;
+ __pSpeedDialMappingList->GetValue(keyToDelete,speedDialInfo);
+ __pSettingsPresentor->RemoveSpeedDialMapping(speedDialInfo.rowId);
+ }
+ }
+ if (__pSpeedDialMappingList)
+ {
+ delete __pSpeedDialMappingList;
+ __pSpeedDialMappingList = null;
+ }
+ __pSpeedDialMappingList = static_cast<HashMapT<int,SpeedDialInfo>*>(__pSettingsPresentor->GetSpeedDialMappingN());
+ if (__pDeleteList != null)
+ {
+ __pDeleteList->RemoveAll();
+ }
+ __isDeleteMode = false;
+ UpdateAllButtons();
+
+ }
+ }
+ break;
+ default:
+ if (actionId > IDA_VOICEMAIL && actionId < IDA_SELECT_CONTACT)
+ {
+ __keyToMap = actionId;
+ if (__isDeleteMode == false)
+ {
+ __isUpdate = false;
+ if (__pSpeedDialMappingList != null)
+ {
+ SpeedDialInfo speedDialInfo;
+ result r = __pSpeedDialMappingList->GetValue(actionId,speedDialInfo);
+ if (!IsFailed(r))
+ {
+ __isUpdate = true;
+ }
+ }
+ if (__isUpdate == true)
+ {
+ if (__pSpeedDialPopup)
+ {
+ delete __pSpeedDialPopup;
+ __pSpeedDialPopup = null;
+ }
+ __pSpeedDialPopup = new (std::nothrow) SpeedDialPopup(*this);
+ __pSpeedDialPopup->Initialize();
+ __pSpeedDialPopup->SetShowState(true);
+ __pSpeedDialPopup->Draw();
+ __pSpeedDialPopup->Show();
+
+ }
+ else
+ {
+ LaunchAppControl();
+ }
+ }
+ else
+ {
+ UpdateButton();
+ __keyToMap = 0;
+ }
+ }
+ break;
+ }
+}
+
+void
+SettingsSpeedDialForm::LaunchAppControl(void)
+{
+ if(__isContactAppControlLaunched == true)
+ {
+ //app control already launched.
+ return;
+ }
+ __isContactAppControlLaunched = true;
+ result r = E_SUCCESS;
+ HashMap extraData;
+ extraData.Construct();
+
+ extraData.Add(new (std::nothrow) String(SELECTION_MODE), new (std::nothrow) String(SELECTION_MODE_SINGLE));
+ extraData.Add(new (std::nothrow) String(RETURN_TYPE), new (std::nothrow) String(RETURN_TYPE_CONTACT_ID));
+
+ AppControl* pAc = AppManager::FindAppControlN(PROVIDER_ID_CONTACTS, OPERATION_ID_PICK);
+ if (pAc != null)
+ {
+ r = pAc->Start(null, null, &extraData, this);
+ if(r != E_SUCCESS)
+ {
+ //app control request failed
+ __isContactAppControlLaunched = false;
+ }
+ delete pAc;
+ }
+ extraData.RemoveAll(true);
+}
+
+void
+SettingsSpeedDialForm::OnAppControlCompleteResponseReceived(const AppId& appId, const String& operationId, AppCtrlResult appControlResult, const IMap* pExtraData)
+{
+
+ if (appId.Equals(String(PROVIDER_ID_CONTACTS)) && operationId.Equals(String(OPERATION_ID_PICK)))
+ {
+ //app control request completed
+ __isContactAppControlLaunched = false;
+ //check if results are available.
+ if (appControlResult == APP_CTRL_RESULT_SUCCEEDED)
+ {
+ const String* rettype = static_cast<const String *>(pExtraData->GetValue(String(RETURN_TYPE)));
+ if (rettype->Equals(String(RETURN_TYPE_CONTACT_ID),false))
+ {
+ const String* pPickResult = static_cast<const String *>(pExtraData->GetValue(String(RETURN_KEY_VALUE)));
+ if (pPickResult != null && pPickResult->IsEmpty() == false)
+ {
+ if (__isUpdate == true)
+ {
+ SpeedDialInfo speedDialInfo;
+ __pSpeedDialMappingList->GetValue(__keyToMap,speedDialInfo);
+ __pSettingsPresentor->UpdateSpeedDialMapping(speedDialInfo.rowId,*pPickResult,__keyToMap);
+ __isUpdate = false;
+ }
+ else
+ {
+ __pSettingsPresentor->SetSpeedDialMapping(*pPickResult,__keyToMap);
+ }
+ UpdateButton();
+ }
+ }
+ }
+ __keyToMap = 0;
+ }
+}
+
+void
+SettingsSpeedDialForm::UpdateAllButtons(void)
+{
+ //Initialise photos
+ InitializePhotoButtons(IDC_PHOTO_BTN2, IDC_NAME_LABEL2, IDA_SELECT_PHOTO2);
+ InitializePhotoButtons(IDC_PHOTO_BTN3, IDC_NAME_LABEL3, IDA_SELECT_PHOTO3);
+ InitializePhotoButtons(IDC_PHOTO_BTN4, IDC_NAME_LABEL4, IDA_SELECT_PHOTO4);
+ InitializePhotoButtons(IDC_PHOTO_BTN5, IDC_NAME_LABEL5, IDA_SELECT_PHOTO5);
+ InitializePhotoButtons(IDC_PHOTO_BTN6, IDC_NAME_LABEL6, IDA_SELECT_PHOTO6);
+ InitializePhotoButtons(IDC_PHOTO_BTN7, IDC_NAME_LABEL7, IDA_SELECT_PHOTO7);
+ InitializePhotoButtons(IDC_PHOTO_BTN8, IDC_NAME_LABEL8, IDA_SELECT_PHOTO8);
+ InitializePhotoButtons(IDC_PHOTO_BTN9, IDC_NAME_LABEL9, IDA_SELECT_PHOTO9);
+ InitializeFooter();
+}
+void
+SettingsSpeedDialForm::UpdateButton(void)
+{
+ if (__pSpeedDialMappingList)
+ {
+ delete __pSpeedDialMappingList;
+ __pSpeedDialMappingList = null;
+ }
+ __pSpeedDialMappingList = static_cast<HashMapT<int,SpeedDialInfo>*>(__pSettingsPresentor->GetSpeedDialMappingN());
+ switch (__keyToMap)
+ {
+ case IDA_SELECT_PHOTO2:
+ {
+ InitializePhotoButtons(IDC_PHOTO_BTN2, IDC_NAME_LABEL2, IDA_SELECT_PHOTO2);
+ }
+ break;
+ case IDA_SELECT_PHOTO3:
+ {
+ InitializePhotoButtons(IDC_PHOTO_BTN3, IDC_NAME_LABEL3, IDA_SELECT_PHOTO3);
+ }
+ break;
+ case IDA_SELECT_PHOTO4:
+ {
+ InitializePhotoButtons(IDC_PHOTO_BTN4, IDC_NAME_LABEL4, IDA_SELECT_PHOTO4);
+ }
+ break;
+ case IDA_SELECT_PHOTO5:
+ {
+ InitializePhotoButtons(IDC_PHOTO_BTN5, IDC_NAME_LABEL5, IDA_SELECT_PHOTO5);
+ }
+ break;
+ case IDA_SELECT_PHOTO6:
+ {
+ InitializePhotoButtons(IDC_PHOTO_BTN6, IDC_NAME_LABEL6, IDA_SELECT_PHOTO6);
+ }
+ break;
+ case IDA_SELECT_PHOTO7:
+ {
+ InitializePhotoButtons(IDC_PHOTO_BTN7, IDC_NAME_LABEL7, IDA_SELECT_PHOTO7);
+ }
+ break;
+ case IDA_SELECT_PHOTO8:
+ {
+ InitializePhotoButtons(IDC_PHOTO_BTN8, IDC_NAME_LABEL8, IDA_SELECT_PHOTO8);
+ }
+ break;
+ case IDA_SELECT_PHOTO9:
+ {
+ InitializePhotoButtons(IDC_PHOTO_BTN9, IDC_NAME_LABEL9, IDA_SELECT_PHOTO9);
+ }
+ break;
+ default:
+ break;
+ }
+ InitializeFooter();
+}
+void
+SettingsSpeedDialForm::OnFormBackRequested(Form& source)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager != null);
+ pSceneManager->GoForward(ForwardSceneTransition(*__pPreviousSceneId), null);
+}
+
+void
+SettingsSpeedDialForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
+{
+ __isDeleteMode = false;
+ __isContactAppControlLaunched = false;
+ //save previous scene id
+ __pPreviousSceneId = new (std::nothrow) SceneId(previousSceneId);
+
+ if (__pSpeedDialMappingList != null)
+ {
+ delete __pSpeedDialMappingList;
+ __pSpeedDialMappingList = null;
+ }
+
+ if (__pDeleteList != null)
+ {
+ delete __pDeleteList;
+ __pDeleteList = null;
+ }
+
+ __pSpeedDialMappingList = static_cast<HashMapT<int,SpeedDialInfo>*>(__pSettingsPresentor->GetSpeedDialMappingN());
+ //Initialise photos
+ UpdateAllButtons();
+ __pDeleteList = new (std::nothrow) ArrayListT<int>();
+ if(__pAddressbook != null)
+ {
+ __pAddressbook->SetEventListener(this);
+ }
+}
+
+void
+SettingsSpeedDialForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
+{
+ if(__pPreviousSceneId != null)
+ {
+ delete __pPreviousSceneId;
+ __pPreviousSceneId = null;
+ }
+ if(__pAddressbook != null)
+ {
+ __pAddressbook->SetEventListener(null);
+ }
+}
+
+void
+SettingsSpeedDialForm::OnItemSelected(int itemIndex)
+{
+ switch (itemIndex)
+ {
+ case IDA_UPDATE_SPEED_DIAL:
+ {
+ __isUpdate = true;
+ LaunchAppControl();
+ }
+ break;
+
+ case IDA_REMOVE_SPEED_DIAL:
+ {
+ SpeedDialInfo speedDialInfo;
+ __pSpeedDialMappingList->GetValue(__keyToMap,speedDialInfo);
+ __pSettingsPresentor->RemoveSpeedDialMapping(speedDialInfo.rowId);
+ UpdateButton();
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+SettingsSpeedDialForm::OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList)
+{
+ IEnumerator* pEnum = contactChangeInfoList.GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ ContactChangeInfo* pInfo = (ContactChangeInfo*) pEnum->GetCurrent();
+ switch(pInfo->GetChangeType())
+ {
+ case RECORD_CHANGE_TYPE_REMOVED:
+ {
+ if(__pSpeedDialMappingList == null || __pSpeedDialMappingList->GetCount() == 0)
+ {
+ break;
+ }
+ IListT<SpeedDialInfo>* pSpeedDialList = __pSpeedDialMappingList->GetValuesN();
+ IEnumeratorT<SpeedDialInfo> *pSpeedDialListEnum = pSpeedDialList->GetEnumeratorN();
+ bool bFound = false;
+ while(pSpeedDialListEnum->MoveNext() == E_SUCCESS)
+ {
+ SpeedDialInfo speeDialInfo;
+ RecordId recordId = INVALID_RECORD_ID;
+ pSpeedDialListEnum->GetCurrent(speeDialInfo);
+ Integer::Parse(speeDialInfo.contactId, recordId);
+ if(recordId == pInfo->GetContactId())
+ {
+ __pSettingsPresentor->RemoveSpeedDialMapping(speeDialInfo.rowId);
+ bFound = true;
+
+ }
+ }
+ delete pSpeedDialListEnum;
+ delete pSpeedDialList;
+ if(bFound == true)
+ {
+ if (__pSpeedDialMappingList)
+ {
+ delete __pSpeedDialMappingList;
+ __pSpeedDialMappingList = null;
+ }
+ __pSpeedDialMappingList = static_cast<HashMapT<int,SpeedDialInfo>*>(__pSettingsPresentor->GetSpeedDialMappingN());
+ UpdateAllButtons();
+ }
+
+ }
+ break;
+ case RECORD_CHANGE_TYPE_UPDATED:
+ {
+ if(__pSpeedDialMappingList == null || __pSpeedDialMappingList->GetCount() == 0)
+ {
+ break;
+ }
+ IListT<SpeedDialInfo>* pSpeedDialList = __pSpeedDialMappingList->GetValuesN();
+ IEnumeratorT<SpeedDialInfo> *pSpeedDialListEnum = pSpeedDialList->GetEnumeratorN();
+ bool bFound = false;
+ while(pSpeedDialListEnum->MoveNext() == E_SUCCESS)
+ {
+ SpeedDialInfo speeDialInfo;
+ RecordId recordId = INVALID_RECORD_ID;
+ pSpeedDialListEnum->GetCurrent(speeDialInfo);
+ Integer::Parse(speeDialInfo.contactId, recordId);
+ if(recordId == pInfo->GetContactId())
+ {
+ bFound = true;
+
+ }
+ }
+ delete pSpeedDialListEnum;
+ delete pSpeedDialList;
+ if(bFound == true)
+ {
+ UpdateAllButtons();
+ }
+
+ }
+ break;
+ case RECORD_CHANGE_TYPE_ADDED:
+ break;
+ default:
+ break;
+ }
+ AppLog("Contact changed: type(%d), id(%d), version(%d)", pInfo->GetChangeType(), pInfo->GetContactId(), pInfo->GetVersion());
+ }
+ delete pEnum;
+}
--- /dev/null
+//
+// 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 PhnSettingsMoreOptionsForm.cpp
+ * @brief Sound manager class
+ */
+#include "PhnSoundManager.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Graphics;
+using namespace Tizen::Io;
+using namespace Tizen::Media;
+using namespace Tizen::Social;
+using namespace Tizen::System;
+using namespace Tizen::Base::Collection;
+
+static const wchar_t* RINGTONE_PATH = L"/opt/usr/apps/zktdpemtmw/shared/data/ringtone_sdk.mp3";
+
+SoundManager::SoundManager(void)
+ : __pSoundCallSession(null)
+ , __pVibrator(null)
+ , __pPlayer(null)
+{
+ __isSoundStatusOn = false;
+ __isVibrateStatusOn = false;
+}
+
+SoundManager::~SoundManager(void)
+{
+ if(__pSoundCallSession != null)
+ {
+ sound_manager_call_session_destroy(__pSoundCallSession);
+ }
+ if (__pVibrator != null)
+ {
+ delete __pVibrator;
+ }
+ if (__pPlayer != null)
+ {
+ delete __pPlayer;
+ }
+}
+
+result
+SoundManager::StopSession(void)
+{
+ AppLogDebug("Enter");
+ if(__pSoundCallSession != null)
+ {
+ AppLogDebug("sound_manager_call_session_destroy");
+ sound_manager_call_session_destroy(__pSoundCallSession);
+ __pSoundCallSession = null;
+ }
+
+ return E_SUCCESS;
+}
+
+result
+SoundManager::StartSession(void)
+{
+ AppLogDebug("Enter");
+ if (__pSoundCallSession != null)
+ {
+ sound_manager_call_session_set_mode(__pSoundCallSession,(sound_call_session_mode_e)SOUND_CALL_SESSION_MODE_VOICE);
+ sound_manager_set_active_route((sound_route_e)SOUND_ROUTE_IN_MIC_OUT_RECEIVER);
+ sound_manager_set_volume((sound_type_e)SOUND_TYPE_CALL,5);
+ return E_SUCCESS;
+ }
+ int res = sound_manager_call_session_create((sound_call_session_type_e)SOUND_SESSION_TYPE_CALL, &__pSoundCallSession);
+ if (res != SOUND_MANAGER_ERROR_NONE)
+ {
+ AppLogDebug("Sound manager creation failed");
+ return E_FAILURE;
+ }
+ res = sound_manager_call_session_set_mode(__pSoundCallSession,(sound_call_session_mode_e)SOUND_CALL_SESSION_MODE_VOICE);
+ sound_manager_set_active_route((sound_route_e)SOUND_ROUTE_IN_MIC_OUT_RECEIVER);
+ //todo start listening for volume key and set the volume
+ sound_manager_set_volume((sound_type_e)SOUND_TYPE_CALL,5);
+ return E_SUCCESS;
+}
+
+result
+SoundManager::SetSpeakerStatus(bool setSpeaker)
+{
+ result r = E_FAILURE;
+ int res = -1;
+ bool isEarJackPresent = IsEarJackConnected();
+ sound_route_e soundRoute;
+ if (setSpeaker == true)
+ {
+ soundRoute = SOUND_ROUTE_IN_MIC_OUT_SPEAKER;
+ }
+ else
+ {
+ if (isEarJackPresent == true)
+ {
+ soundRoute = SOUND_ROUTE_IN_MIC_OUT_HEADPHONE;
+ }
+ else
+ {
+ soundRoute = SOUND_ROUTE_IN_MIC_OUT_RECEIVER;
+ }
+ }
+ res = sound_manager_set_active_route(soundRoute);
+ if (res == SOUND_MANAGER_ERROR_NONE)
+ {
+ r = E_SUCCESS;
+ }
+ else
+ {
+ r = E_FAILURE;
+ }
+ return r;
+}
+
+result
+SoundManager::SetSoundMode(SoundMode soundMode)
+{
+ if (__pSoundCallSession == null)
+ {
+ return E_FAILURE;
+ }
+ sound_call_session_mode_e sessionMode;
+ switch (soundMode)
+ {
+ case SOUND_MODE_RINGTONE:
+ {
+ sessionMode = SOUND_CALL_SESSION_MODE_RINGTONE;
+ break;
+ }
+ case SOUND_MODE_MEDIA:
+ {
+ sessionMode = SOUND_CALL_SESSION_MODE_MEDIA;
+ break;
+ }
+ case SOUND_MODE_VOICE:
+ {
+ sessionMode = SOUND_CALL_SESSION_MODE_VOICE;
+ }
+ break;
+ default:
+ {
+ sessionMode = SOUND_CALL_SESSION_MODE_RINGTONE;
+ break;
+ }
+ }
+ int res = sound_manager_call_session_set_mode(__pSoundCallSession,sessionMode);
+ if (res != SOUND_MANAGER_ERROR_NONE)
+ {
+ return E_FAILURE;
+ }
+ return E_SUCCESS;
+}
+
+void
+SoundManager::StartAlert(String& contactRingTone)
+{
+ AppLogDebug("Enter");
+ if(__pSoundCallSession != null)
+ {
+ AppLogDebug("No Alert already in call");
+ return;
+ }
+ else
+ {
+ StartSession();
+ }
+ result r = E_FAILURE;
+ if(__pVibrator == null)
+ {
+ __pVibrator = new (std::nothrow) Vibrator();
+ r = __pVibrator->Construct();
+ }
+ if(__pPlayer == null)
+ {
+ __pPlayer = new (std::nothrow) Player();
+ r = __pPlayer->Construct(*this);
+ }
+ int retVal = -1;
+ vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &retVal);
+ __isSoundStatusOn = retVal;
+ vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &retVal);
+ __isVibrateStatusOn = retVal;
+ //todo: do only if call alert mode is set
+ if (__isSoundStatusOn == true)
+ {
+ String ringTonePath;
+ //Check if contact has any custom ringtone, else play defautl ringtone.
+ if(contactRingTone.IsEmpty() == true)
+ {
+ char* pRingTonePtr = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
+ ringTonePath.Append(pRingTonePtr);
+ }
+ else
+ {
+ ringTonePath.Append(contactRingTone);
+ }
+
+ //Check if file is present
+ File file;
+ result res = file.Construct(ringTonePath, "r");
+ if(res != E_SUCCESS )
+ {
+ ringTonePath.Clear();
+ ringTonePath.Append(RINGTONE_PATH);
+ }
+ r = __pPlayer->OpenFile(ringTonePath,false);
+ r = __pPlayer->SetLooping(true);
+ r = __pPlayer->SetVolume(80);
+ r = SetSoundMode(SOUND_MODE_VOICE);
+ r = __pPlayer->Play();
+ }
+ if (__isVibrateStatusOn == true)
+ {
+ //todo: Get the level from settings
+ r = __pVibrator->Start(3000,1000,1000);
+ }
+ AppLogDebug("Exit");
+ return;
+}
+
+void
+SoundManager::StopAlert(void)
+{
+ AppLogDebug("Enter");
+ if (__isSoundStatusOn == true)
+ {
+ //todo: stop player
+ AppLogDebug("Stopping ring tone");
+ __pPlayer->Stop();
+ __pPlayer->Close();
+ SetSoundMode(SOUND_MODE_VOICE);
+ __isSoundStatusOn = false;
+ StopSession();
+ }
+ if (__isVibrateStatusOn == true)
+ {
+ __pVibrator->Stop();
+ __isVibrateStatusOn = false;
+ }
+ AppLogDebug("Exit");
+}
+
+void
+SoundManager::OnPlayerOpened(result r)
+{
+}
+
+void
+SoundManager::OnPlayerEndOfClip(void)
+{
+}
+
+void
+SoundManager::OnPlayerSeekCompleted(result r)
+{
+}
+
+void
+SoundManager::OnPlayerBuffering(int percent)
+{
+}
+
+void
+SoundManager::OnPlayerErrorOccurred(Tizen::Media::PlayerErrorReason r)
+{
+}
+
+void
+SoundManager::OnPlayerInterrupted(void)
+{
+}
+
+void
+SoundManager::OnPlayerReleased(void)
+{
+}
+
+bool
+SoundManager::IsEarJackConnected(void)
+{
+ int earJackStatus = -1;
+ if (vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &earJackStatus) == 0)
+ {
+ if (earJackStatus == VCONFKEY_SYSMAN_EARJACK_REMOVED)
+ {
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+ }
+ else
+ {
+ return false;
+ }
+}
--- /dev/null
+//
+// 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 PhnSpeedDialInfo.cpp
+ * @brief Speed dial Info class
+ */
+
+#include "PhnSpeedDialInfo.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+
+SpeedDialInfo::SpeedDialInfo(void)
+{
+}
+
+SpeedDialInfo::~SpeedDialInfo(void)
+{
+}
+
+bool
+SpeedDialInfo::operator ==(const SpeedDialInfo& rhs) const
+{
+ return (this->rowId == rhs.rowId);
+}
+
+bool
+SpeedDialInfo::operator !=(const SpeedDialInfo& rhs) const
+{
+ return (!(this->rowId == rhs.rowId));
+}
+
+SpeedDialInfo&
+SpeedDialInfo::operator =(const SpeedDialInfo& rhs)
+{
+ if (this != null)
+ {
+ this->rowId = rhs.rowId;
+ this->contactId.Append(rhs.contactId);
+ this->keyMapping = rhs.keyMapping;
+ }
+ return *this;
+}
--- /dev/null
+//
+// 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 PhnSpeedDialPopup.cpp
+ * @brief Speed dial popup class
+ */
+#include <FApp.h>
+#include <FSocial.h>
+#include <FSystem.h>
+#include <FUi.h>
+#include <FGraphics.h>
+#include <FMedia.h>
+
+#include "PhnSpeedDialPopup.h"
+#include "PhnSettingsConstants.h"
+#include "PhnAppUtility.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Utility;
+using namespace Tizen::App;
+using namespace Tizen::Graphics;
+using namespace Tizen::Social;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+const int W_POPUP = 620;
+const int H_POPUP = 712;
+const int W_CANCEL_BUTTON = 400;
+const int H_CANCEL_BUTTON = 72;
+const int CANCEL_BUTTON_PADDING = 40;
+const int H_LIST_ITEM = 112;
+const int W_LIST_ITEM = 112;
+const int HORIZONTAL_PADDING = 16;
+const int VERTICAL_PADDING = 110;
+static const wchar_t* IDL_SPEED_DIAL_POPUP = L"IDL_SPEED_DIAL_POPUP";
+
+SpeedDialPopup::SpeedDialPopup(IPopupItemSelectListener& listener)
+ : __pCancelButton(null)
+ , __popupListener(listener)
+ , __pListItemArray(null)
+{
+
+}
+
+SpeedDialPopup::~SpeedDialPopup(void)
+{
+ if (__pListItemArray != null)
+ {
+ delete __pListItemArray;
+ }
+}
+
+int
+SpeedDialPopup::Initialize(void)
+{
+ result r = E_SUCCESS;
+ Construct(IDL_SPEED_DIAL_POPUP);
+ ConstructListData();
+ String strText;
+ __pCancelButton = static_cast<Button*> (GetControl(L"IDC_CLOSE_BUTTON"));
+ __pCancelButton->SetActionId(IDA_BUTTON_CLOSE_SPEED_DIAL_POPUP);
+ __pCancelButton->AddActionEventListener(*this);
+
+ ListView* __pList = static_cast<ListView*> (GetControl(L"IDC_LISTVIEW"));
+ __pList->AddListViewItemEventListener(*this);
+ __pList->SetItemProvider(*this);
+ AddControl(*__pList);
+
+ return r;
+
+}
+
+void
+SpeedDialPopup::ConstructListData(void)
+{
+ __pListItemArray = new (std::nothrow) ArrayList();
+ __pListItemArray->Construct(2);
+ String optionStr = AppUtility::GetResourceString(L"IDS_CHANGE_CONTACT");
+ String* listItem1 = new (std::nothrow) String(optionStr);
+ __pListItemArray->Add(*listItem1);
+ optionStr.Clear();
+ optionStr = AppUtility::GetResourceString(L"IDS_REMOVE_CONTACT");
+ String* listItem2 = new (std::nothrow) String(optionStr);
+ __pListItemArray->Add(*listItem2);
+}
+
+void
+SpeedDialPopup::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId,
+ Tizen::Ui::Controls::ListItemStatus status)
+{
+ Popup::SetShowState(false);
+ __popupListener.OnItemSelected(elementId);
+ return;
+}
+
+void
+SpeedDialPopup::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index,
+ Tizen::Ui::Controls::SweepDirection direction)
+{
+ return;
+}
+
+void
+SpeedDialPopup::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId,
+ Tizen::Ui::Controls::ListContextItemStatus state)
+{
+
+ return;
+}
+
+void
+SpeedDialPopup::OnListViewItemLongPressed(Tizen::Ui::Controls::ListView& listView, int index, int elementId,
+ bool& invokeListViewItemCallback)
+{
+ return;
+}
+
+int
+SpeedDialPopup::GetItemCount(void)
+{
+ if (__pListItemArray != null)
+ {
+ return __pListItemArray->GetCount();
+ }
+ return 0;
+}
+
+Tizen::Ui::Controls::ListItemBase*
+SpeedDialPopup::CreateItem(int index, int itemWidth)
+{
+ int elementId = 0;
+ String* strText = static_cast<String*>(__pListItemArray->GetAt(index));
+ ListAnnexStyle style = LIST_ANNEX_STYLE_NORMAL;
+ CustomItem* pItem = new (std::nothrow) CustomItem();
+ pItem->Construct(Dimension(itemWidth, W_LIST_ITEM), style);
+ if (index == 0)
+ {
+ elementId = IDA_UPDATE_SPEED_DIAL;
+ }
+ else
+ {
+ elementId = IDA_REMOVE_SPEED_DIAL;
+ }
+ pItem->AddElement(Rectangle(HORIZONTAL_PADDING, 0, W_POPUP - HORIZONTAL_PADDING, H_LIST_ITEM), elementId, *strText);
+ return pItem;
+}
+
+bool
+SpeedDialPopup::DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+ return true;
+}
+
+
+void
+SpeedDialPopup::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ switch (actionId)
+ {
+ case IDA_BUTTON_CLOSE_SPEED_DIAL_POPUP:
+ {
+ Popup::SetShowState(false);
+ __popupListener.OnItemSelected(IDA_BUTTON_CLOSE_SPEED_DIAL_POPUP);
+ break;
+ }
+ }
+}
--- /dev/null
+//
+// 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 PhnSuggestionItemProvider.cpp
+ * @brief Suggestion list item provider class
+ */
+#include <FApp.h>
+#include <FSystem.h>
+#include <FMedia.h>
+#include <FSocial.h>
+#include "PhnAppUtility.h"
+#include "PhnCommonUtils.h"
+#include "PhnDialContactInfo.h"
+#include "PhnDialPresentationModel.h"
+#include "PhnSuggestionItemProvider.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Graphics;
+using namespace Tizen::Media;
+using namespace Tizen::System;
+using namespace Tizen::Social;
+using namespace Tizen::Base::Collection;
+
+SuggestionItemProvider::SuggestionItemProvider(
+ DialPresentationModel& pDialPresentationModel) :
+ __dialPresentationModel(pDialPresentationModel)
+{
+}
+
+SuggestionItemProvider::~SuggestionItemProvider(void)
+{
+}
+
+ListItemBase*
+SuggestionItemProvider::CreateItem(int index, int itemWidth)
+{
+ CustomItem* pItem = null;
+ //Check if any suggestion exist at 'index+1'.
+ DialContactInfo* pDialInfo = __dialPresentationModel.GetSuggestionAtIndex(index+1);
+ if(pDialInfo == null)
+ {
+ return pItem;
+ }
+ //Construct List view item
+ pItem = new (std::nothrow) CustomItem();
+ ListAnnexStyle style = LIST_ANNEX_STYLE_NORMAL;
+ pItem->Construct(Dimension(itemWidth, 128), style);
+
+ //create enriched text - Display name with Keyword
+ String* keyWord = pDialInfo->GetSearchKey();
+ EnrichedText* pEnrichedName = ConstructEnrichedTextN(pDialInfo->GetDisplayName(), *keyWord , FONT_SUGGESTION_NAME, BUTTON_STATUS_NORMAL);
+ pItem->AddElement(Rectangle(16, 10, 445, 60), 202, *pEnrichedName);
+ delete pEnrichedName;
+ pEnrichedName = null;
+
+ //create text element - Phone number with Keyword
+ String phoneNumber(L"Mobile ");
+ phoneNumber.Append(pDialInfo->GetPhoneNumber());
+ EnrichedText* pEnrichedMobile = ConstructEnrichedTextN(phoneNumber, *keyWord, FONT_SUGGESTION_MOBILE, BUTTON_STATUS_NORMAL);
+ pItem->AddElement(Rectangle(16, 70, 445, 48), 204, *pEnrichedMobile);
+ delete pEnrichedMobile;
+ pEnrichedMobile =null;
+
+ //Fetch contact's thumbnail
+ Bitmap* pContactBitmap = pDialInfo->GetThumbnailN();
+ //show default TN
+ if(pContactBitmap == null)
+ {
+ pContactBitmap = AppUtility::GetBitmapFromResourcesN(L"C01-1_icon_contacts.png");
+ }
+ pItem->AddElement(Rectangle(445, 16, 96, 96), 206, *pContactBitmap);
+ delete pContactBitmap;
+
+ return pItem;
+}
+
+EnrichedText*
+SuggestionItemProvider::ConstructEnrichedTextN(String& text, String& keyword, int textFontStyle, int buttonStatus)
+{
+ //get text font
+ Font* fontName = DialUtil::GetTextFontN(textFontStyle);
+ //get text color
+ Color* textColor = DialUtil::GetTextColorN(textFontStyle, buttonStatus);
+ //highlighted text Color
+ Color* highlightedTxtColor = DialUtil::GetTextColorN(FONT_HIGHLIGHT_SEARCH_KEYWORD,buttonStatus);
+
+ EnrichedText* pEnrichedName = new (std::nothrow) EnrichedText();
+ pEnrichedName->Construct(Dimension(400, 60));
+
+ //Text is divided in 3 parts - pre-text, highlighted keyword, post-text.
+ String preTxt(L"");
+ String highlightTxt(L"");
+ String postTxt(L"");
+ if(keyword.IsEmpty() == false)
+ {
+ int searchIndex;
+ result r = text.IndexOf(keyword,0,searchIndex);
+ if(r == E_SUCCESS)
+ {
+ if(searchIndex > 0)
+ {
+ text.SubString(0,searchIndex,preTxt);
+ }
+ text.SubString(searchIndex,keyword.GetLength(),highlightTxt);
+ text.SubString((searchIndex+keyword.GetLength()),postTxt);
+ }
+ else
+ {
+ preTxt = text;
+ }
+ }
+
+ TextElement* pTextName = null;
+ if(preTxt.IsEmpty() == false)
+ {
+ //create text element
+ pTextName = new (std::nothrow) TextElement();
+ pTextName->Construct(preTxt);
+ pTextName->SetFont(*fontName);
+ pTextName->SetTextColor(*textColor);
+ //ownership of 'pTextName' transferred to 'pEnrichedName'
+ pEnrichedName->Add(*pTextName);
+ }
+
+ if(highlightTxt.IsEmpty() == false)
+ {
+ //create text element
+ pTextName = new (std::nothrow) TextElement();
+ pTextName->Construct(highlightTxt);
+ pTextName->SetFont(*fontName);
+ // Highlighted search text
+ pTextName->SetTextColor(*highlightedTxtColor);
+ pEnrichedName->Add(*pTextName);
+ }
+
+ if(postTxt.IsEmpty() == false)
+ {
+ //create text element
+ pTextName = new (std::nothrow) TextElement();
+ pTextName->Construct(postTxt);
+ pTextName->SetFont(*fontName);
+ pTextName->SetTextColor(*textColor);
+ pEnrichedName->Add(*pTextName);
+ }
+
+ delete fontName;
+ delete textColor;
+ delete highlightedTxtColor;
+
+ return pEnrichedName;
+}
+
+bool
+SuggestionItemProvider::DeleteItem(int index, ListItemBase* pItem, int itemWidth)
+{
+ if (pItem != null)
+ {
+ delete pItem;
+ pItem = null;
+ }
+ return true;
+}
+
+int
+SuggestionItemProvider::GetItemCount(void)
+{
+ return __dialPresentationModel.GetNumberOfSuggestions() - 1;
+}
--- /dev/null
+//
+// 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 PhnTabContacts.cpp
+ * @brief The contacts Tab
+ */
+
+#include "PhnTabContacts.h"
+
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+static const wchar_t* IDL_PANEL_CONTACTS = L"IDL_PANEL_CONTACTS";
+
+DialTabContacts::DialTabContacts(void)
+{
+}
+
+DialTabContacts::~DialTabContacts(void)
+{
+}
+
+bool
+DialTabContacts::Initialize(void)
+{
+ result r = Construct(IDL_PANEL_CONTACTS);
+ if (IsFailed(r))
+ return false;
+
+ return true;
+}
+
+result
+DialTabContacts::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+
+ // Layout setting
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ if (pForm != null)
+ {
+ RelativeLayout* pRelativeLayout = dynamic_cast<RelativeLayout*>(pForm->GetLandscapeLayoutN());
+ if (pRelativeLayout != null)
+ {
+ pRelativeLayout->SetHorizontalFitPolicy(*this, FIT_POLICY_PARENT);
+ pRelativeLayout->SetVerticalFitPolicy(*this, FIT_POLICY_PARENT);
+ delete pRelativeLayout;
+ }
+ pRelativeLayout = dynamic_cast<RelativeLayout*>(pForm->GetPortraitLayoutN());
+ if (pRelativeLayout != null)
+ {
+ pRelativeLayout->SetHorizontalFitPolicy(*this, FIT_POLICY_PARENT);
+ pRelativeLayout->SetVerticalFitPolicy(*this, FIT_POLICY_PARENT);
+ delete pRelativeLayout;
+ }
+ }
+ return r;
+}
+
+result
+DialTabContacts::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+ return r;
+}
+
+void
+DialTabContacts::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
+{
+}
+
+void
+DialTabContacts::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
+{
+}
--- /dev/null
+//
+// 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 PhnTabDialer.cpp
+ * @brief The dialer Tab
+ */
+#include <FApp.h>
+#include <FMedia.h>
+#include <FSystem.h>
+#include "PhnAppUtility.h"
+#include "PhnPhoneApp.h"
+#include "PhnCalllogManager.h"
+#include "PhnCallPresentationModel.h"
+#include "PhnCommonUtils.h"
+#include "PhnDialAppForm.h"
+#include "PhnDialContactInfo.h"
+#include "PhnDialerKeypad.h"
+#include "PhnTabDialer.h"
+#include "PhnSceneRegister.h"
+#include "PhnSettingsPresentationModel.h"
+#include "PhnTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Media;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Social;
+using namespace Tizen::System;
+
+//Constants
+const int H_SPEEDDIAL_POPUP = 300;
+const int H_POPUP_MSG_LABEL = 100;
+const int H_POPUP_BTN = 90;
+const int H_SEARCHLIST_ITEM = 129;
+const int IDI_PADDING = 15;
+const int IDI_MAX_LIMIT_LENGTH = 18;
+const int IDI_MAX_TXT_FONT = 94;
+const int IDI_MIN_TXT_FONT = 67;
+const int IDI_DELTA_FONT_SIZE = 5;
+const wchar_t* IDI_ADD_TO_CONTACTS_STR = L"Add To Contacts";
+const int MAX_SEARCH_LIST_ITEMS = 5;
+const int MIN_CONTEXT_MENU_ITEMS = 4;
+const int X_CONTEXT_MENU_ANCHOR = 614;
+const int Y_CONTEXT_MENU_ANCHOR = 504;
+const int MAX_NUMBER_WITH_SEPERATOR = 11;
+const int MIN_NUMBER_WITH_ONE_SEPERATOR = 3;
+const int MIN_NUMBER_WITH_TWO_SEPERATOR = 7;
+const int MAX_TXT_LENGTH_WITH_SEPERATOR = 12;
+const int MAX_VISIBLE_TXT_WITH_MIN_FONT = 18;
+const int W_MORE_BUTTON = 65;
+const int H_MORE_BUTTON = 65;
+const int W_SUGGESTION_POPUP_BUBBLE_ICON = 45;
+const int H_SUGGESTION_POPUP_BUBBLE_ICON = 30;
+
+//resources
+const wchar_t* IDL_PANEL_DIALER = L"IDL_PANEL_DIALER";
+const wchar_t* IDC_NUMERIC_EDITFIELD = L"IDC_EDITFIELD";
+const wchar_t* IDC_PANEL_SEARCH_BOX = L"IDC_PANEL_SEARCH_BOX";
+const wchar_t* IDC_BUTTON_ADD_CONTACTS = L"IDC_BUTTON_ADD_CONTACTS";
+const wchar_t* IDC_BUTTON_USE_CONTACT = L"IDC_BUTTON_USE_CONTACT";
+const wchar_t* IDC_BUTTON_DROP_DOWN = L"IDC_BUTTON_DROP_DOWN";
+const wchar_t* IDC_PANEL_SEARCH_LIST = L"IDC_PANEL_SEARCH_LIST";
+static const wchar_t* IDC_PANEL_DISPLAY_DATA = L"IDC_PANEL_DISPLAY_DATA";
+const wchar_t* IDC_PANEL_MENU = L"IDC_PANEL_MENU";
+const wchar_t* IDC_BUTTON_MENU = L"IDC_BUTTON_MENU";
+const wchar_t* IDC_LISTVIEW_SEARCH = L"IDC_LISTVIEW_SEARCH";
+
+//Button Dimensions
+const int DialTabDialer::IDI_BGBITMAP_WIDTH = 75;
+const int DialTabDialer::IDI_BGBITMAP_HEIGHT = 75;
+const int DialTabDialer::IDI_BGBITMAP_POS_X = 56;
+const int DialTabDialer::IDI_BGBITMAP_POS_Y = 56;
+const int DialTabDialer::IDI_TEXT1_SIZE = 116;
+const int DialTabDialer::IDI_TEXT2_SIZE = 40;
+
+//color
+const unsigned int COLOR_SEARCHLIST_BG = Color32<43, 107, 144>::Value;
+
+DialTabDialer::DialTabDialer(void)
+{
+ AppLogDebug("ENTER");
+ __pDialPresentationModel = null;
+ __pSuggestionListProvider = null;
+ __pSearchListView = null;
+ __isSearchListOpened = false;
+ __pErrorMsgPopup = null;
+ __pCallPresentor = null;
+ __pContextMenu = null;
+ __pPreviousSceneId = null;
+ __pDialKeypad = null;
+ __pConfirmationPopup = null;
+ __isAppForeground = true;
+ __pAddressBook = null;
+ __isAppControlLaunched = false;
+ AppLogDebug("EXIT");
+}
+
+DialTabDialer::~DialTabDialer(void)
+{
+ AppLogDebug("ENTER");
+
+ if(__pDialKeypad != null)
+ {
+ //RemoveControl() also deletes the child control.
+ RemoveControl(*__pDialKeypad);
+ __pDialKeypad = null;
+ }
+ if(__pConfirmationPopup != null)
+ {
+ delete __pConfirmationPopup;
+ __pConfirmationPopup = null;
+ }
+ if (__pAddressBook != null)
+ {
+ delete __pAddressBook;
+ __pAddressBook = null;
+ }
+ delete __pContextMenu;
+ AppLogDebug("EXIT");
+}
+
+bool
+DialTabDialer::Initialize(void)
+{
+ AppLogDebug("ENTER");
+ Construct(IDL_PANEL_DIALER);
+ AppLogDebug("EXIT");
+ return true;
+}
+
+result
+DialTabDialer::OnInitializing(void)
+{
+ AppLogDebug("ENTER");
+ result r = E_SUCCESS;
+
+ // Layout setting
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ if(pForm == null)
+ {
+ return E_FAILURE;
+ }
+
+ __pDialPresentationModel = new DialPresentationModel(*this);
+ __pSuggestionListProvider = new SuggestionItemProvider(*__pDialPresentationModel);
+ __pAddressBook = AddressbookManager::GetInstance()->GetAddressbookN();
+
+ RelativeLayout* pRelativeLayout = dynamic_cast<RelativeLayout*>(pForm->GetLandscapeLayoutN());
+ if (pRelativeLayout != null)
+ {
+ pRelativeLayout->SetHorizontalFitPolicy(*this, FIT_POLICY_PARENT);
+ pRelativeLayout->SetVerticalFitPolicy(*this, FIT_POLICY_PARENT);
+ delete pRelativeLayout;
+ }
+ pRelativeLayout = dynamic_cast<RelativeLayout*>(pForm->GetPortraitLayoutN());
+ if (pRelativeLayout != null)
+ {
+ pRelativeLayout->SetHorizontalFitPolicy(*this, FIT_POLICY_PARENT);
+ pRelativeLayout->SetVerticalFitPolicy(*this, FIT_POLICY_PARENT);
+ delete pRelativeLayout;
+ }
+
+ //hide footer
+ pForm->GetFooter()->SetShowState(false);
+ pForm->AddOrientationEventListener(*this);
+
+ //Construct menu
+ ConstructMenu();
+ //Initialize text box
+ InitializeContactsTextBox();
+ //Create and hide Search data display panel
+ InitializeSearchBox();
+ //initialize search list view and hide it.
+ InitializeSearchListView();
+ HideSearchListView();
+ AppLogDebug("EXIT");
+ return r;
+}
+
+result
+DialTabDialer::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+ if (__pDialPresentationModel != null)
+ {
+ delete __pDialPresentationModel;
+ __pDialPresentationModel = null;
+ }
+ if (__pSuggestionListProvider != null)
+ {
+ delete __pSuggestionListProvider;
+ __pSuggestionListProvider = null;
+ }
+ // Add your termination code here
+ return r;
+}
+
+void
+DialTabDialer::InitializeContactsTextBox(void)
+{
+ AppLogDebug("ENTER");
+ EditField* pEditField = static_cast<EditField*>(GetControl(IDC_NUMERIC_EDITFIELD, true));
+ if (pEditField != null)
+ {
+ //clear text
+ pEditField->Clear();
+ }
+
+ AppLogDebug("EXIT");
+ return;
+}
+
+void
+DialTabDialer::ShowFormattedText(EditField* pEditField, int actionId)
+{
+ AppLogDebug("ENTER");
+ String contactNumber = pEditField->GetText();
+ contactNumber.Replace(L"-",L"");
+ if(actionId == CLEAR_KEY)
+ {
+ contactNumber.Remove(contactNumber.GetLength() - 1, 1);
+ }
+ else
+ {
+ contactNumber.Append(DialUtil::ConvertDialedNumberToString(actionId));
+ }
+
+ int textLength = contactNumber.GetLength();
+ if(textLength == 0)
+ {
+ pEditField->Clear();
+ pEditField->SetCursorPosition(0);
+ pEditField->SetFocus();
+ pEditField->Invalidate(true);
+ AppLogDebug("EXIT");
+ return;
+ }
+
+ //Insert separator if required
+ if(textLength < MAX_NUMBER_WITH_SEPERATOR)
+ {
+ if(textLength > MIN_NUMBER_WITH_TWO_SEPERATOR)
+ {
+ contactNumber.Insert(L"-",MIN_NUMBER_WITH_TWO_SEPERATOR);
+ }
+ if(textLength > MIN_NUMBER_WITH_ONE_SEPERATOR)
+ {
+ contactNumber.Insert(L"-",MIN_NUMBER_WITH_ONE_SEPERATOR);
+ }
+ }
+ //update text length
+ textLength = contactNumber.GetLength();
+
+ //need to change font to fit inside text box
+ //With size 94 -> 12 chars, 67 -> 18 chars
+ int fontSize = pEditField->GetTextSize();
+ if((actionId == CLEAR_KEY) && (textLength < MAX_VISIBLE_TXT_WITH_MIN_FONT))
+ {
+ //clearing
+ fontSize += IDI_DELTA_FONT_SIZE;
+ }
+ else if(textLength > MAX_TXT_LENGTH_WITH_SEPERATOR)
+ {
+ //appending
+ fontSize -= IDI_DELTA_FONT_SIZE;
+ }
+
+ if(fontSize > IDI_MAX_TXT_FONT)
+ {
+ fontSize = IDI_MAX_TXT_FONT;
+ }
+ if(fontSize < IDI_MIN_TXT_FONT)
+ {
+ fontSize = IDI_MIN_TXT_FONT;
+ }
+ pEditField->SetTextSize(fontSize);
+ //set text to edit field
+ pEditField->SetText(contactNumber);
+ pEditField->SetCursorPosition(contactNumber.GetLength());
+ pEditField->SetFocus();
+ AppLogDebug("EXIT");
+ return;
+}
+
+//search box
+void
+DialTabDialer::InitializeSearchBox(void)
+{
+ AppLogDebug("ENTER");
+
+ //search panel
+ Panel* pSearchPanel = static_cast<Panel*>(GetControl(IDC_PANEL_SEARCH_BOX, true));
+ pSearchPanel->SetShowState(false);
+ pSearchPanel->Invalidate(true);
+
+ //"Add to contacts" button
+ Button* pButtonAddContacts = static_cast<Button*>(GetControl(IDC_BUTTON_ADD_CONTACTS, true));
+ pButtonAddContacts->SetActionId(IDA_BTN_ADD_TO_CONTACTS);
+ pButtonAddContacts->AddActionEventListener(*this);
+ Canvas pCanvasNormalAdd;
+ pCanvasNormalAdd.Construct(pButtonAddContacts->GetBounds());
+ Canvas pCanvasPressedAdd;
+ pCanvasPressedAdd.Construct(pButtonAddContacts->GetBounds());
+ DialUtil::Draw9PatchToCanvas(pCanvasNormalAdd, IDB_BTN_OPTION_BG_ICON);
+ DialUtil::Draw9PatchToCanvas(pCanvasPressedAdd, IDB_BTN_OPTION_PRESS_BG_ICON);
+ DialUtil::DrawTextToCanvas(IDI_ADD_TO_CONTACTS_STR, FONT_SUGGESTION_NAME, pCanvasNormalAdd, POSITION_CENTER, BUTTON_STATUS_NORMAL);
+ DialUtil::DrawTextToCanvas(IDI_ADD_TO_CONTACTS_STR, FONT_SUGGESTION_NAME, pCanvasPressedAdd, POSITION_CENTER, BUTTON_STATUS_NORMAL);
+ DialUtil::DrawCanvasToButton(&pCanvasNormalAdd, &pCanvasPressedAdd, pButtonAddContacts);
+ pButtonAddContacts->SetShowState(false);
+
+ //"Use Contacts" button
+ Button* pButtonContacts = static_cast<Button*>(GetControl(IDC_BUTTON_USE_CONTACT, true));
+ pButtonContacts->SetActionId(IDA_BTN_USE_CONTACT_DATA);
+ pButtonContacts->AddActionEventListener(*this);
+ //"Drop-Down" Button
+ Button* pButtonDropDown = static_cast<Button*>(GetControl(IDC_BUTTON_DROP_DOWN, true));
+ pButtonDropDown->SetActionId(IDA_BTN_DISPLAY_CONTACTS);
+ pButtonDropDown->AddActionEventListener(*this);
+
+ AppLogDebug("EXIT");
+ return;
+}
+
+void
+DialTabDialer::UpdateSearchResults(void)
+{
+ AppLogDebug("ENTER");
+
+ EditField* pEditField = static_cast<EditField*>(GetControl(IDC_NUMERIC_EDITFIELD, true));
+ //send request to search for suggestion list
+ String searchStr = pEditField->GetText();
+ searchStr.Replace(L"-",L"");
+ if(searchStr.IsEmpty() == false)
+ {
+ __pDialPresentationModel->FetchSuggestionList(searchStr);
+ }
+
+ AppLogDebug("EXIT");
+ return;
+}
+
+void
+DialTabDialer::HideSearchBox(void)
+{
+ Button* pButtonAddContacts = static_cast<Button*>(GetControl(IDC_BUTTON_ADD_CONTACTS, true));
+ pButtonAddContacts->SetShowState(false);
+ Button* pButtonContacts = static_cast<Button*>(GetControl(IDC_BUTTON_USE_CONTACT, true));
+ Button* pButtonDropDown = static_cast<Button*>(GetControl(IDC_BUTTON_DROP_DOWN, true));
+ pButtonContacts->SetShowState(true);
+ pButtonDropDown->SetShowState(true);
+
+ Panel* pSearchPanel = static_cast<Panel*>(GetControl(IDC_PANEL_SEARCH_BOX, true));
+ pSearchPanel->SetShowState(false);
+ pSearchPanel->Invalidate(true);
+ return;
+}
+
+void
+DialTabDialer::InitializeSearchListView(void)
+{
+ //update new bounds
+ __pSearchListView = static_cast<ListView*>(GetControl(IDC_LISTVIEW_SEARCH,true));
+ if(__pSearchListView != null)
+ {
+ __pSearchListView->SetSweepEnabled(true);
+ __pSearchListView->SetItemProvider(*__pSuggestionListProvider);
+ __pSearchListView->AddListViewItemEventListener(*this);
+ __pSearchListView->SetBackgroundColor(Color(COLOR_SEARCHLIST_BG));
+ Panel* pSearchListPanel = static_cast<Panel*>(GetControl(IDC_PANEL_SEARCH_LIST, true));
+ if(pSearchListPanel != null)
+ {
+ SetControlAlwaysOnTop(*pSearchListPanel, true);
+ }
+ }
+}
+
+void
+DialTabDialer::ShowSearchListView(void)
+{
+ AppLogDebug("ENTER");
+
+ //find the no. of search rows to be shown - Maximum 5 can be shown.
+ int noOfItems = MAX_SEARCH_LIST_ITEMS;
+ if(__pDialPresentationModel->GetNumberOfSuggestions() < (noOfItems+1))
+ {
+ noOfItems = __pDialPresentationModel->GetNumberOfSuggestions() - 1;
+ }
+ if(noOfItems <= 0)
+ {
+ return;
+ }
+
+
+ if (__pSearchListView != null)
+ {
+ //update new bounds
+ Rectangle searchListbounds = __pSearchListView->GetBounds();
+ searchListbounds.height = H_SEARCHLIST_ITEM * noOfItems;
+ __pSearchListView->SetBounds(searchListbounds);
+ __pSearchListView->SetItemProvider(*__pSuggestionListProvider);
+ }
+
+ Panel* pSearchListPanel = static_cast<Panel*>(GetControl(IDC_PANEL_SEARCH_LIST, true));
+ if(pSearchListPanel != null)
+ {
+ pSearchListPanel->SetShowState(true);
+ pSearchListPanel->Invalidate(true);
+ }
+
+ __isSearchListOpened = true;
+ AppLogDebug("EXIT");
+ return;
+}
+
+void
+DialTabDialer::HideSearchListView(void)
+{
+ Panel* pSearchListPanel = static_cast<Panel*>(GetControl(IDC_PANEL_SEARCH_LIST, true));
+ pSearchListPanel->SetShowState(false);
+ pSearchListPanel->Invalidate(true);
+ __isSearchListOpened = false;
+ return;
+}
+
+void
+DialTabDialer::ConstructMenu(void)
+{
+ AppLogDebug("ENTER");
+
+ //Construct button for menu open and close
+ Panel* pDisplayPanel = static_cast<Panel*>(GetControl(IDC_PANEL_DISPLAY_DATA, true));
+ Button* pButton = static_cast<Button*>(GetControl(IDC_BUTTON_MENU, true));
+ pButton->SetActionId(IDA_BTN_SHOW_CONTEXTMENU);
+ pButton->AddActionEventListener(*this);
+
+ Canvas pCanvasNormal;
+ pCanvasNormal.Construct(pButton->GetBounds());
+ Canvas pCanvasPressed;
+ pCanvasPressed.Construct(pButton->GetBounds());
+
+ DialUtil::Draw9PatchToCanvas(pCanvasNormal, IDB_BTN_OPTION_BG_ICON);
+ DialUtil::DrawImageToCanvas(IDB_BTN_MORE_ICON, Dimension(W_MORE_BUTTON, H_MORE_BUTTON), pCanvasNormal, POSITION_CENTER);
+ DialUtil::Draw9PatchToCanvas(pCanvasPressed, IDB_BTN_OPTION_PRESS_BG_ICON);
+ DialUtil::DrawImageToCanvas(IDB_BTN_MORE_PRESS_ICON, Dimension(W_MORE_BUTTON, H_MORE_BUTTON), pCanvasPressed, POSITION_CENTER);
+ DialUtil::DrawCanvasToButton(&pCanvasNormal, &pCanvasPressed, pButton);
+ pDisplayPanel->Invalidate(true);
+
+ AppLogDebug("EXIT");
+ return;
+}
+
+void
+DialTabDialer::ConstructKeypad(int dialerState)
+{
+ AppLogDebug("ENTER");
+ if(__pDialKeypad != null)
+ {
+ //RemoveControl() also deletes the child control.
+ RemoveControl(*__pDialKeypad);
+ __pDialKeypad = null;
+ }
+ //Construct Alpha numeric Keypad
+ if(__pDialKeypad == null)
+ {
+ __pDialKeypad = new (std::nothrow) DialerKeypad(DialerKeypad::DialerState(dialerState));
+ __pDialKeypad->ConstructPanel(this, this);
+ //add keypad to dial panel
+ AddControl(*__pDialKeypad);
+ }
+ AppLogDebug("EXIT");
+ return;
+}
+
+void
+DialTabDialer::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
+{
+ AppLogDebug("ENTER");
+ PhoneApp* pPhoneApp = static_cast<PhoneApp*>(PhoneApp::GetInstance());
+ EditField* pEditField = static_cast<EditField*>(GetControl(IDC_NUMERIC_EDITFIELD, true));
+ String editText(L"");
+
+ if(__pCallPresentor == null)
+ {
+ __pCallPresentor = CallPresentationModel::GetInstance();
+ }
+ //While coming from Logs scene, disable footer
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ if(pForm != null)
+ {
+ pForm->GetFooter()->SetShowState(false);
+ }
+ //If previous scene is present & it is either Single Active Call
+ //or Conf. Call with 'Add Call' scenario.
+ DialerKeypad::DialerState dialerState = DialerKeypad::DIALER_STATE_FIRST_SCENE;
+ if (__pCallPresentor->GetCurrentCallCount() > 0)
+ {
+ __pPreviousSceneId = new (std::nothrow) SceneId(previousSceneId);
+ dialerState = DialerKeypad::DIALER_STATE_ADD_CALL;
+ if(pArgs != null)
+ {
+ pArgs->RemoveAll();
+ delete pArgs;
+ }
+ pArgs = null;
+ }
+ else
+ {
+ if (pArgs != null)
+ {
+ //From AppControl request for normal call
+ dialerState = DialerKeypad::DIALER_STATE_NORMAL_APPCONTROL;
+ String* tmpStr = static_cast<String*>(pArgs->GetAt(0));
+ if(tmpStr != null)
+ {
+ editText.Append(*tmpStr);
+ }
+ delete pArgs;
+ pArgs = null;
+ }
+ }
+
+ if(editText.IsEmpty() == true)
+ {
+ //Fetch auto area code setting, if present
+ int retvalue = 0;
+ result res;
+ SettingsPresentationModel::GetInstance()->GetActivePrefixDialNumber(editText);
+ res = Integer::Parse(editText,retvalue);
+ if(res != E_SUCCESS)
+ {
+ editText.Clear();
+ }
+ }
+
+ if(pEditField != null)
+ {
+ pEditField->SetText(editText);
+ pEditField->SetCursorPosition(editText.GetLength());
+ pEditField->SetFocus();
+ pEditField->Invalidate(true);
+ //show search results
+ if (editText.GetLength() == 0)
+ {
+ HideSearchBox();
+ }
+ else
+ {
+ UpdateSearchResults();
+ }
+ }
+
+ //Construct keypad
+ ConstructKeypad(dialerState);
+
+ //hide footer
+ Form* form = static_cast<Form*>(GetParent());
+ form->GetFooter()->SetShowState(false);
+ pPhoneApp->AddAppStateChangeListener(*this);
+ //Add addressbook listener to listen to contacts changed events
+ if(__pAddressBook != null)
+ {
+ __pAddressBook->SetEventListener(this);
+ }
+
+ AppLogDebug("EXIT");
+ return;
+}
+
+void
+DialTabDialer::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
+{
+ AppLogDebug("ENTER");
+ PhoneApp* pPhoneApp = static_cast<PhoneApp*>(PhoneApp::GetInstance());
+ //hide search result list, if shown.
+ if (__isSearchListOpened == true)
+ {
+ HideSearchListView();
+ }
+ if(__pPreviousSceneId != null)
+ {
+ delete __pPreviousSceneId;
+ __pPreviousSceneId = null;
+ }
+ if(__pConfirmationPopup != null)
+ {
+ delete __pConfirmationPopup;
+ __pConfirmationPopup = null;
+ }
+ pPhoneApp->RemoveAppStateChangeListener(*this);
+ //remove contact change event listener
+ if(__pAddressBook != null)
+ {
+ __pAddressBook->SetEventListener(null);
+ }
+ AppLogDebug("EXIT");
+ return;
+}
+
+void
+DialTabDialer::OnActionPerformed(const Control& source, int actionId)
+{
+ AppLogDebug("ENTER");
+
+ EditField* pEditField = static_cast<EditField*>(GetControl(IDC_NUMERIC_EDITFIELD, true));
+ if (pEditField == null || GetAppControlLaunched() == true)
+ {
+ AppLogDebug("GetAppControlLaunched() == true");
+ return;
+ }
+
+ switch (actionId)
+ {
+ case NUM_KEY1:
+ case NUM_KEY2:
+ case NUM_KEY3:
+ case NUM_KEY4:
+ case NUM_KEY5:
+ case NUM_KEY6:
+ case NUM_KEY7:
+ case NUM_KEY8:
+ case NUM_KEY9:
+ case NUM_KEY0:
+ case CLEAR_KEY:
+ {
+ //append / clear last character to contact
+ ShowFormattedText(pEditField, actionId);
+ if (pEditField->GetTextLength() == 0)
+ {
+ __pDialPresentationModel->ClearSearchResults();
+ HideSearchBox();
+ }
+ else
+ {
+ UpdateSearchResults();
+ }
+ }
+ break;
+
+ case CALL_KEY:
+ {
+ if (pEditField->GetTextLength() > 0)
+ {
+ String contactNo = pEditField->GetText();
+ contactNo.Replace(L"-",L"");
+ SwitchToOutgoingCallScreen(contactNo);
+ return;
+ }
+ else
+ {
+ //show latest dialed or incoming number from Logs
+ String* number = __pDialPresentationModel->FetchLatestNumberFromLogsN();
+ if(number != null)
+ {
+ pEditField->SetText(*number);
+ UpdateSearchResults();
+ delete number;
+ }
+ }
+ }
+ break;
+
+ case PAUSE_KEY:
+ {
+ pEditField->AppendText(L"*");
+ if (pEditField->GetTextLength() == 0)
+ {
+ HideSearchBox();
+ }
+ else
+ {
+ UpdateSearchResults();
+ }
+ }
+ break;
+
+ case HASH_KEY:
+ {
+ pEditField->AppendText(L"#");
+ if (pEditField->GetTextLength() == 0)
+ {
+ HideSearchBox();
+ }
+ else
+ {
+ UpdateSearchResults();
+ }
+ }
+ break;
+
+ case VIDEOCALL_KEY:
+ {
+ //Not yet Supported
+ }
+ break;
+
+ case CANCEL_KEY:
+ {
+ PhoneApp* pApp = static_cast<PhoneApp*>(UiApp::GetInstance());
+ bool isAppControl = pApp->IsOpenAsAppControl();
+ if(isAppControl == true && __pPreviousSceneId == null)
+ {
+ pApp->Terminate();
+ }
+ else if(__pCallPresentor->GetCurrentCallCount() > 0)
+ {
+ //Switch back to previous screen
+ SwitchToPreviousActiveCallScreen();
+ return;
+ }
+ }
+ break;
+
+ case IDA_BTN_SHOW_CONTEXTMENU:
+ {
+ // Show the ContextMenu
+ String contactNo = pEditField->GetText();
+ contactNo.Replace(L"-",L"");
+ ShowContextMenu(contactNo);
+ if (__isSearchListOpened == true)
+ {
+ HideSearchListView();
+ }
+ }
+ break;
+
+ case IDA_MENU_SEND_MESSAGE:
+ {
+ String contactNo = pEditField->GetText();
+ contactNo.Replace(L"-",L"");
+ __pDialPresentationModel->OpenMessagingAppControl(contactNo);
+ return;
+ }
+ break;
+
+ case IDA_BTN_ADD_TO_CONTACTS:
+ case IDA_MENU_ADD_CONTACT:
+ {
+ if(pEditField->GetTextLength() > 0)
+ {
+ String contactNo = pEditField->GetText();
+ contactNo.Replace(L"-",L"");
+ __pDialPresentationModel->AddContactsToAddressBook(contactNo);
+ SetAppControlLaunched(true);
+ return;
+ }
+ }
+ break;
+
+ case IDA_SPEEDDIAL_POPUP_YES:
+ {
+ __pConfirmationPopup->SetShowState(false);
+ SwitchToSpeedDialForm();
+ }
+ break;
+
+ case IDA_SPEEDDIAL_POPUP_NO:
+ {
+ __pConfirmationPopup->SetShowState(false);
+ Invalidate(true);
+ }
+ break;
+
+ case IDA_MENU_SPEED_DIAL:
+ {
+ SwitchToSpeedDialForm();
+ return;
+ }
+ break;
+
+ case IDA_MENU_ADD_PAUSE:
+ {
+ AddPause();
+ }
+ break;
+
+ case IDA_MENU_ADD_WAIT:
+ {
+ AddWait();
+ }
+ break;
+
+ case IDA_MENU_EXIT:
+ {
+ if(__pCallPresentor->GetCurrentCallCount() > 0)
+ {
+ //Switch back to previous screen
+ SwitchToPreviousActiveCallScreen();
+ return;
+ }
+ else
+ {
+ //Close Phone App
+ UiApp::GetInstance()->Terminate();
+ }
+ }
+ break;
+
+ case IDA_BTN_USE_CONTACT_DATA:
+ {
+ DialContactInfo* pDialInfo = __pDialPresentationModel->GetSuggestionAtIndex(0);
+ if(pDialInfo != null)
+ {
+ //fetch contact number
+ String phNumber = pDialInfo->GetPhoneNumber();
+ if(phNumber.Equals(pEditField->GetText()) == false)
+ {
+ pEditField->Clear();
+ pEditField->SetText(phNumber);
+ pEditField->Invalidate(true);
+ if (__isSearchListOpened == true)
+ {
+ HideSearchListView();
+ }
+ __pDialPresentationModel->ClearSearchResults();
+ UpdateSearchResults();
+ }
+ }
+ }
+ break;
+
+ case IDA_BTN_DISPLAY_CONTACTS:
+ {
+ if (__isSearchListOpened == true)
+ {
+ HideSearchListView();
+ }
+ else
+ {
+ ShowSearchListView();
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+ pEditField->Invalidate(true);
+
+ AppLogDebug("EXIT");
+ return;
+}
+
+void
+DialTabDialer::OnLongPressGestureDetected(TouchLongPressGestureDetector& gestureDetector)
+{
+ AppLogDebug("ENTER");
+
+ if (gestureDetector.GetControl() != null)
+ {
+ Button* pButton = static_cast<Button*>(gestureDetector.GetControl());
+ int actionId = pButton->GetActionId();
+ switch(actionId)
+ {
+ case NUM_KEY2:
+ case NUM_KEY3:
+ case NUM_KEY4:
+ case NUM_KEY5:
+ case NUM_KEY6:
+ case NUM_KEY7:
+ case NUM_KEY8:
+ case NUM_KEY9:
+ {
+ //Check if Speed Dial setting exist for pressed key
+ String* contactNumber = __pDialPresentationModel->FetchSpeedDialNumberN(actionId);
+ if(contactNumber != null)
+ {
+ ArrayList* pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pArgs->Construct();
+ //pass ownership to arraylist
+ pArgs->Add(contactNumber);
+ SendUserEvent(REQUEST_CALL_SPEED_DIAL_NUM,pArgs);
+ }
+ else
+ {
+ //show speed Dial Confirmation Popup msg
+ SendUserEvent(REQUEST_SHOW_SPEED_DIAL_POPUP,null);
+ }
+
+ }
+ break;
+
+ case PAUSE_KEY:
+ {
+ AddPause();
+ }
+ break;
+
+ case HASH_KEY:
+ {
+ //Handle Mute / UnMute
+ EditField* pEditField = static_cast<EditField*>(GetControl(IDC_NUMERIC_EDITFIELD, true));
+ if(pEditField->GetTextLength() == 0)
+ {
+ bool enabled = false;
+ String title = L"http://tizen.org/setting/sound.silent_mode";
+ SettingInfo::GetValue(title, enabled);
+ //enable or disable the phone silent mode.
+ result r = E_FAILURE;
+ r = SettingInfo::SetValue(title, !enabled);
+ if(r == E_OBJ_NOT_FOUND)
+ {
+ AppLog("Object not found");
+ }
+ }
+ }
+ break;
+
+ case CLEAR_KEY:
+ {
+ EditField* pEditField = static_cast<EditField*>(GetControl(IDC_NUMERIC_EDITFIELD, true));
+ if (pEditField != null && pEditField->GetTextLength() > 0)
+ {
+ pEditField->Clear();
+ pEditField->SetTextSize(IDI_MAX_TXT_FONT);
+ pEditField->SetCursorPosition(0);
+ pEditField->SetFocus();
+ pEditField->Invalidate(true);
+ HideSearchBox();
+ }
+ }
+ break;
+ case NUM_KEY0:
+ {
+ AddPlus();
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ AppLogDebug("EXIT");
+ return;
+}
+
+void
+DialTabDialer::ShowContextMenu(String& contactNumber)
+{
+ AppLogDebug("ENTER");
+
+ if(__pContextMenu != null)
+ {
+ delete __pContextMenu;
+ __pContextMenu = null;
+ }
+ __pContextMenu = new (std::nothrow) ContextMenu();
+ __pContextMenu->Construct(Point(0, 0), CONTEXT_MENU_STYLE_LIST);
+
+ //minimum available option count
+ int visibleItems = MIN_CONTEXT_MENU_ITEMS;
+
+ //Show SendMsg Option only if NOT opened from Outgoing Call
+ if(__pPreviousSceneId == null)
+ {
+ __pContextMenu->AddItem(AppUtility::GetResourceString(IDS_DIALER_MENU_ITEM_SEND_MSG), IDA_MENU_SEND_MESSAGE);
+ visibleItems++;
+ }
+ //Don't show 'AddContact' if empty text field
+ //or contact number is already saved.
+ if(contactNumber.IsEmpty() != true)
+ {
+ Contact* pContact = __pCallPresentor->GetContactN(contactNumber);
+ if(pContact == null)
+ {
+ __pContextMenu->AddItem(AppUtility::GetResourceString(IDS_DIALER_MENU_ITEM_ADD_CONTACT), IDA_MENU_ADD_CONTACT);
+ visibleItems++;
+ }
+ else
+ {
+ delete pContact;
+ }
+ }
+ __pContextMenu->AddItem(AppUtility::GetResourceString(IDS_DIALER_MENU_ITEM_SPEED_DIAL), IDA_MENU_SPEED_DIAL);
+ __pContextMenu->AddItem(AppUtility::GetResourceString(IDS_DIALER_MENU_ITEM_ADD_PAUSE), IDA_MENU_ADD_PAUSE);
+ __pContextMenu->AddItem(AppUtility::GetResourceString(IDS_DIALER_MENU_ITEM_ADD_WAIT), IDA_MENU_ADD_WAIT);
+ __pContextMenu->AddItem(AppUtility::GetResourceString(IDS_DIALER_MENU_ITEM_EXIT), IDA_MENU_EXIT);
+ __pContextMenu->AddActionEventListener(*this);
+
+ __pContextMenu->SetMaxVisibleItemsCount(visibleItems);
+ // Set the anchor position of the ContextMenu
+ __pContextMenu->SetAnchorPosition(Point(X_CONTEXT_MENU_ANCHOR, Y_CONTEXT_MENU_ANCHOR));
+ // Show the ContextMenu
+ __pContextMenu->Show();
+
+ AppLogDebug("EXIT");
+ return;
+}
+
+void
+DialTabDialer::AddPause(void)
+{
+ EditField* pEditField = static_cast<EditField*>(GetControl(IDC_NUMERIC_EDITFIELD, true));
+ if (pEditField != null)
+ {
+ pEditField->AppendText(L";");
+ if (pEditField->GetTextLength() == 0)
+ {
+ HideSearchBox();
+ }
+ else
+ {
+ __pDialPresentationModel->ClearSearchResults();
+ UpdateSearchResults();
+ }
+ pEditField->Invalidate(true);
+ }
+ return;
+}
+
+void
+DialTabDialer::AddWait(void)
+{
+ EditField* pEditField = static_cast<EditField*>(GetControl(IDC_NUMERIC_EDITFIELD, true));
+ if (pEditField != null)
+ {
+ pEditField->AppendText(L",");
+ if (pEditField->GetTextLength() == 0)
+ {
+ HideSearchBox();
+ }
+ else
+ {
+ __pDialPresentationModel->ClearSearchResults();
+ UpdateSearchResults();
+ }
+ pEditField->Invalidate(true);
+ }
+ return;
+}
+
+void
+DialTabDialer::AddPlus(void)
+{
+ EditField* pEditField = static_cast<EditField*>(GetControl(IDC_NUMERIC_EDITFIELD, true));
+ if (pEditField != null)
+ {
+ pEditField->AppendText(L"+");
+ if (pEditField->GetTextLength() == 0)
+ {
+ HideSearchBox();
+ }
+ else
+ {
+ __pDialPresentationModel->ClearSearchResults();
+ UpdateSearchResults();
+ }
+ pEditField->Invalidate(true);
+ }
+ return;
+}
+
+void
+DialTabDialer::SwitchToPreviousActiveCallScreen(void)
+{
+ AppLogDebug("ENTER");
+
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager);
+ if(__pCallPresentor == null)
+ {
+ __pCallPresentor = CallPresentationModel::GetInstance();
+ }
+ //Fetch call info list
+ IListT<CallInfo>* pCallList = __pCallPresentor->GetCallListN();
+ IEnumeratorT<CallInfo>* pCallEnum = pCallList->GetEnumeratorN();
+ if(pCallEnum != null)
+ {
+ ArrayList* pCallArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pCallArgs->Construct();
+ while(pCallEnum->MoveNext() == E_SUCCESS)
+ {
+ CallInfo callInfo;
+ if(pCallEnum->GetCurrent(callInfo) == E_SUCCESS)
+ {
+ CallInfo* pActiveCall = new (std::nothrow) CallInfo();
+ *pActiveCall = callInfo;
+ pCallArgs->Add(pActiveCall);
+ }
+ }
+
+ if(pCallArgs->GetCount() == 1 && (static_cast<CallInfo*>(pCallArgs->GetAt(0)))->IsConferenceCall() == true)
+ {
+ //move back to previous conf. call screen - ownership of 'pCallArgs' transferred
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALL), pCallArgs);
+ }
+ else
+ {
+ //move back to previous screen - ownership of 'pCallArgs' transferred
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_ACTIVECALL), pCallArgs);
+ }
+
+ delete pCallEnum;
+ pCallEnum = null;
+ }
+ delete pCallList;
+ pCallList = null;
+ AppLogDebug("EXIT");
+}
+
+void
+DialTabDialer::SwitchToOutgoingCallScreen(const String& contactNumber)
+{
+ AppLogDebug("ENTER");
+
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager);
+
+ //Check if dialing a call is possible
+ if(__pCallPresentor == null)
+ {
+ __pCallPresentor = CallPresentationModel::GetInstance();
+ }
+ bool isSimInitialized = __pCallPresentor->CheckSimInitializationIsCompleted();
+ if (isSimInitialized == true)
+ {
+ //make an outgoing call with given number
+ String* contactTxt = new (std::nothrow) String(contactNumber);
+ //switch to dialing outgoing call form
+ ArrayList* pContact = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pContact->Construct(1);
+ pContact->Add(contactTxt);
+ //Check if dialing an emergency call
+ bool isEmergencyCall = __pCallPresentor->IsEmergencyNumber(*contactTxt, true);
+ if (isEmergencyCall)
+ {
+ pSceneManager->GoForward( ForwardSceneTransition( IDSCN_SCENE_OUT_EMERGENCYCALL), pContact);
+ }
+ else
+ {
+ pSceneManager->GoForward( ForwardSceneTransition(IDSCN_SCENE_OUTCALL), pContact);
+ }
+ }
+ else
+ {
+ //TODO: check what to do for SOS calls
+ //Show error message Popup
+ if (__pErrorMsgPopup == null)
+ {
+ __pErrorMsgPopup = new (std::nothrow) ErrorMsgPopup(this);
+ }
+ __pErrorMsgPopup->ShowErrorMsgPopupN(ERROR_CODE_SIM_INITIALIZATION_FAILED);
+ }
+ AppLogDebug("EXIT");
+ return;
+}
+
+void
+DialTabDialer::SwitchToSpeedDialForm(void)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ AppAssert(pSceneManager);
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_SPEED_DIAL), null);
+ return;
+}
+
+void
+DialTabDialer::ShowSpeedDialConfirmationPopup(void)
+{
+ if(__pConfirmationPopup == null)
+ {
+ Rectangle rect = GetBounds();
+ __pConfirmationPopup = new (std::nothrow) Popup();
+ __pConfirmationPopup->Construct(false, Dimension(rect.width, H_SPEEDDIAL_POPUP));
+
+ rect = __pConfirmationPopup->GetBounds();
+ Label* pMsgLabel = new (std::nothrow) Label();
+ String popupMsg = AppUtility::GetResourceString(IDS_DIALER_SPEEDDIAL_POPUP_MSG);
+ pMsgLabel->Construct(Rectangle(0, IDI_PADDING, rect.width, H_POPUP_MSG_LABEL), popupMsg);
+ pMsgLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pMsgLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ __pConfirmationPopup->AddControl(*pMsgLabel);
+
+ rect = pMsgLabel->GetBounds();
+ Button *pButtonYes = new (std::nothrow) Button();
+ String btnName = AppUtility::GetResourceString(IDS_SPEEDDIAL_POP_YES_BTN_STRING);
+ pButtonYes->Construct(Rectangle(rect.x, (rect.y + rect.height + IDI_PADDING), ((rect.width - (6 * IDI_PADDING)) / 2), H_POPUP_BTN), btnName);
+ pButtonYes->SetActionId(IDA_SPEEDDIAL_POPUP_YES);
+ pButtonYes->AddActionEventListener(*this);
+ __pConfirmationPopup->AddControl(*pButtonYes);
+
+ rect = pButtonYes->GetBounds();
+ Button *pButtonNo = new (std::nothrow) Button();
+ btnName = AppUtility::GetResourceString(IDS_SPEEDDIAL_POP_NO_BTN_STRING);
+ pButtonNo->Construct(Rectangle((rect.x + rect.width + IDI_PADDING), rect.y, rect.width, rect.height), btnName);
+ pButtonNo->SetActionId(IDA_SPEEDDIAL_POPUP_NO);
+ pButtonNo->AddActionEventListener(*this);
+ __pConfirmationPopup->AddControl(*pButtonNo);
+ }
+ //Show Popup message
+ __pConfirmationPopup->SetShowState(true);
+ __pConfirmationPopup->Show();
+}
+
+void
+DialTabDialer::ShowAddToContactsButton(void)
+{
+ Panel* pSearchPanel = static_cast<Panel*>(GetControl(IDC_PANEL_SEARCH_BOX, true));
+ Button* pButtonContacts = static_cast<Button*>(GetControl(IDC_BUTTON_USE_CONTACT, true));
+ Button* pButtonDropDown = static_cast<Button*>(GetControl(IDC_BUTTON_DROP_DOWN, true));
+ Button* pButtonAddContacts = static_cast<Button*>(GetControl(IDC_BUTTON_ADD_CONTACTS, true));
+ pButtonContacts->SetShowState(false);
+ pButtonDropDown->SetShowState(false);
+ pButtonAddContacts->SetShowState(true);
+ pSearchPanel->SetShowState(true);
+ pSearchPanel->Invalidate(true);
+ return;
+}
+
+void
+DialTabDialer::OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs)
+{
+ switch(requestId)
+ {
+ case REQUEST_SHOW_SUGGESTION:
+ {
+ String *displayname = static_cast<String*> (pArgs->GetAt(0));
+ String *mobileNo = static_cast<String*> (pArgs->GetAt(1));
+ String *resultCount = static_cast<String*> (pArgs->GetAt(2));
+ if(displayname != null && mobileNo != null && resultCount != null)
+ {
+ ShowSuggestionBox(*displayname, *mobileNo, *resultCount);
+ }
+ delete pArgs;
+ }
+ break;
+
+ case REQUEST_SHOW_ADD_TO_CONTACTS:
+ {
+ ShowAddToContactsButton();
+ }
+ break;
+
+ case REQUEST_CALL_SPEED_DIAL_NUM:
+ {
+ if(pArgs != null)
+ {
+ String *number = static_cast<String*> (pArgs->GetAt(0));
+ //dial a call.
+ if(number != null)
+ {
+ SwitchToOutgoingCallScreen(*number);
+ }
+ delete pArgs;
+ }
+ }
+ break;
+
+ case REQUEST_SHOW_SPEED_DIAL_POPUP:
+ {
+ //show speed Dial Confirmation Popup msg
+ ShowSpeedDialConfirmationPopup();
+ }
+ break;
+ }
+
+}
+void
+DialTabDialer::ShowSuggestionBox(String& name, String& mobileNo, String& resultCount)
+{
+ AppLogDebug("ENTER");
+
+ //"UseContact" Button
+ Button* pButtonContacts = static_cast<Button*>(GetControl(IDC_BUTTON_USE_CONTACT, true));
+ Canvas pCanvasNormalContacts;
+ pCanvasNormalContacts.Construct(pButtonContacts->GetBounds());
+ Canvas pCanvasPressedContacts;
+ pCanvasPressedContacts.Construct(pButtonContacts->GetBounds());
+ String mobileStr = AppUtility::GetResourceString(IDS_DIALER_MOBILE_STR);
+ //Add text, Bg to normal state
+ DialUtil::Draw9PatchToCanvas(pCanvasNormalContacts, IDB_BTN_OPTION_BG_ICON);
+ DialUtil::DrawTextToCanvas(name, FONT_SUGGESTION_NAME, pCanvasNormalContacts, POSITION_TOP_LEFT, BUTTON_STATUS_NORMAL);
+ DialUtil::DrawTextToCanvas(mobileStr, FONT_SUGGESTION_MOBILE, pCanvasNormalContacts, POSITION_BOTTOM_LEFT, BUTTON_STATUS_NORMAL);
+ DialUtil::DrawTextToCanvas(mobileNo, FONT_SUGGESTION_NUMBER, pCanvasNormalContacts, POSITION_BOTTOM_CENTER, BUTTON_STATUS_NORMAL);
+ //Add text, Bg to pressed state
+ DialUtil::Draw9PatchToCanvas(pCanvasPressedContacts, IDB_BTN_OPTION_PRESS_BG_ICON);
+ DialUtil::DrawTextToCanvas(name, FONT_SUGGESTION_NAME, pCanvasPressedContacts, POSITION_TOP_LEFT, BUTTON_STATUS_NORMAL);
+ DialUtil::DrawTextToCanvas(mobileStr, FONT_SUGGESTION_MOBILE, pCanvasPressedContacts, POSITION_BOTTOM_LEFT, BUTTON_STATUS_NORMAL);
+ DialUtil::DrawTextToCanvas(mobileNo, FONT_SUGGESTION_NUMBER, pCanvasPressedContacts, POSITION_BOTTOM_CENTER, BUTTON_STATUS_NORMAL);
+ //add normal, pressed bg bitmap to button
+ DialUtil::DrawCanvasToButton(&pCanvasNormalContacts, &pCanvasPressedContacts, pButtonContacts);
+
+ //"DropDown" Button
+ Button* pButtonDropDown = static_cast<Button*>(GetControl(IDC_BUTTON_DROP_DOWN, true));
+ Canvas pCanvasNormalDropDown;
+ pCanvasNormalDropDown.Construct(pButtonDropDown->GetBounds());
+ Canvas pCanvasPressedDropDown;
+ pCanvasPressedDropDown.Construct(pButtonDropDown->GetBounds());
+ //Add text, Bg to normal state
+ DialUtil::Draw9PatchToCanvas(pCanvasNormalDropDown, IDB_BTN_OPTION_BG_ICON);
+ DialUtil::DrawTextToCanvas(resultCount, FONT_SUGGESTION_LIST_NUMBER, pCanvasNormalDropDown, POSITION_TOP_CENTER, BUTTON_STATUS_NORMAL);
+ DialUtil::DrawImageToCanvas(IDB_POPUP_BUBBLE_ICON, Dimension(W_SUGGESTION_POPUP_BUBBLE_ICON, H_SUGGESTION_POPUP_BUBBLE_ICON), pCanvasNormalDropDown, POSITION_BOTTOM_CENTER);
+ //Add text, Bg to pressed state
+ DialUtil::Draw9PatchToCanvas(pCanvasPressedDropDown, IDB_BTN_OPTION_PRESS_BG_ICON);
+ DialUtil::DrawTextToCanvas(resultCount, FONT_SUGGESTION_LIST_NUMBER, pCanvasPressedDropDown, POSITION_TOP_CENTER, BUTTON_STATUS_NORMAL);
+ DialUtil::DrawImageToCanvas(IDB_POPUP_BUBBLE_ICON, Dimension(W_SUGGESTION_POPUP_BUBBLE_ICON, H_SUGGESTION_POPUP_BUBBLE_ICON), pCanvasPressedDropDown, POSITION_BOTTOM_CENTER);
+ //add background to button
+ DialUtil::DrawCanvasToButton(&pCanvasNormalDropDown, &pCanvasPressedDropDown, pButtonDropDown);
+
+ Button* pButtonAddContacts = static_cast<Button*>(GetControl(IDC_BUTTON_ADD_CONTACTS, true));
+ pButtonContacts->SetShowState(true);
+ pButtonDropDown->SetShowState(true);
+ pButtonDropDown->Invalidate(true);
+ pButtonAddContacts->SetShowState(false);
+
+ Panel* pSearchPanel = static_cast<Panel*>(GetControl(IDC_PANEL_SEARCH_BOX, true));
+ pSearchPanel->SetShowState(true);
+ pSearchPanel->Invalidate(true);
+
+ AppLogDebug("EXIT");
+ return;
+}
+
+void
+DialTabDialer::OnListViewItemStateChanged(ListView& listView, int index, int elementId, ListItemStatus status)
+{
+ DialContactInfo* pDialInfo = __pDialPresentationModel->GetSuggestionAtIndex(index+1);
+ if(pDialInfo != null)
+ {
+ String phNumber = pDialInfo->GetPhoneNumber();
+ EditField* pTextBox = static_cast<EditField*>(GetControl(IDC_NUMERIC_EDITFIELD, true));
+ if(pTextBox != null)
+ {
+ pTextBox->Clear();
+ pTextBox->SetText(phNumber);
+ pTextBox->Invalidate(true);
+ }
+ HideSearchListView();
+ __pDialPresentationModel->ClearSearchResults();
+ UpdateSearchResults();
+ }
+ return;
+}
+
+void
+DialTabDialer::OnOrientationChanged(const Control& source, OrientationStatus orientationStatus)
+{
+ Form* pForm = static_cast<Form*>(GetParent());
+ pForm->SetOrientation(ORIENTATION_PORTRAIT);
+ pForm->Invalidate(true);
+ return;
+}
+
+void
+DialTabDialer::HandlePopupClosed(void)
+{
+ Draw();
+ delete __pErrorMsgPopup;
+ __pErrorMsgPopup = null;
+ return;
+}
+
+bool
+DialTabDialer::IsOpenedFromOtherView(void)
+{
+ if(__pPreviousSceneId != null)
+ {
+ return true;
+ }
+ return false;
+}
+
+void
+DialTabDialer::OnForeground(void)
+{
+ AppLogDebug("Enter");
+ __isAppForeground = true;
+ //If app control was launched
+ //as we do not know if it success or failed
+ // we need to UpdateSearchResults
+ //Returned from app control if app control does not
+ //send any response we need to do this
+ SetAppControlLaunched(false);
+}
+
+void
+DialTabDialer::OnBackground(void)
+{
+ AppLogDebug("Enter");
+ __isAppForeground = false;
+}
+
+bool
+DialTabDialer::IsForeground()
+{
+ AppLogDebug("Enter %d",__isAppForeground);
+ return __isAppForeground;
+}
+
+void
+DialTabDialer::OnContactsChanged(const IList& contactChangeInfoList)
+{
+ if(contactChangeInfoList.GetCount() > 0)
+ {
+ //clear old search results
+ __pDialPresentationModel->ClearSearchResults();
+ UpdateSearchResults();
+ }
+}
+
+void
+DialTabDialer::SetAppControlLaunched(bool launched)
+{
+ AppLogDebug("%d",__isAppControlLaunched);
+ __isAppControlLaunched = launched;
+}
+
+bool
+DialTabDialer::GetAppControlLaunched(void)
+{
+ AppLogDebug("%d",__isAppControlLaunched);
+ return __isAppControlLaunched;
+}
+
+
--- /dev/null
+//
+// 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 PhnTabFavorites.cpp
+ * @brief The Favorites Tab
+ */
+
+#include "PhnTabFavorites.h"
+
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+DialTabFavorites::DialTabFavorites(void)
+{
+
+}
+
+DialTabFavorites::~DialTabFavorites(void)
+{
+
+}
+
+bool
+DialTabFavorites::Initialize(void)
+{
+ result r = Construct(L"IDL_PANEL_FAVORITES");
+ if (IsFailed(r))
+ return false;
+
+ return true;
+}
+
+result
+DialTabFavorites::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+
+ // Layout setting
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ if (pForm != null)
+ {
+ RelativeLayout* pRelativeLayout = dynamic_cast<RelativeLayout*>(pForm->GetLandscapeLayoutN());
+ if (pRelativeLayout != null)
+ {
+ pRelativeLayout->SetHorizontalFitPolicy(*this, FIT_POLICY_PARENT);
+ pRelativeLayout->SetVerticalFitPolicy(*this, FIT_POLICY_PARENT);
+ delete pRelativeLayout;
+ }
+ pRelativeLayout = dynamic_cast<RelativeLayout*>(pForm->GetPortraitLayoutN());
+ if (pRelativeLayout != null)
+ {
+ pRelativeLayout->SetHorizontalFitPolicy(*this, FIT_POLICY_PARENT);
+ pRelativeLayout->SetVerticalFitPolicy(*this, FIT_POLICY_PARENT);
+ delete pRelativeLayout;
+ }
+ }
+ return r;
+}
+
+result
+DialTabFavorites::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+ return r;
+}
+
+void
+DialTabFavorites::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
+{
+}
+
+void
+DialTabFavorites::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
+{
+}
--- /dev/null
+//
+// 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 PhnTabLogs.cpp
+ * @brief The Logs Tab
+ */
+
+#include <FApp.h>
+#include <FMedia.h>
+#include <FGraphics.h>
+#include "PhnPhoneApp.h"
+#include "PhnAppUtility.h"
+#include "PhnSettingsConstants.h"
+#include "PhnCommonUtils.h"
+#include "PhnTabLogs.h"
+#include "PhnSceneRegister.h"
+#include "PhnCalllogManager.h"
+#include "PhnCallPresentationModel.h"
+#include "PhnTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Graphics;
+using namespace Tizen::Media;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Scenes;
+
+const int W_NOCONTENTS_IMAGE = 280;
+const int H_NOCONTENTS_IMAGE = 280;
+//List view height
+const int H_TOAST_MSG = 48;
+const int H_SELECTALL_CHK_BOX = 112;
+
+const wchar_t* IDL_PANEL_LOGS = L"IDL_PANEL_LOGS";
+const wchar_t* IDC_LABEL_SELECTED_POPUP = L"IDC_LABEL_SELECTED_POPUP";
+const unsigned int COLOR_LABEL_SELECTED = Color32<215, 225, 232, 255>::Value;
+
+DialTabLogs::DialTabLogs(void)
+{
+ __pDataProvider = new CustomDataProvider();
+ __pFormFooter = null;
+ __plogsListView = null;
+ __isEditMode = false;
+ __pButtonSelectAll = null;
+ __groupCount = 0;
+ __itemCount = 0;
+ __isSelectAll = false;
+ __selectedItemCount = 0;
+ __pCallMgr = null;
+ __pArgs = null;
+}
+
+DialTabLogs::~DialTabLogs(void)
+{
+ if (__pDataProvider != null)
+ {
+ delete __pDataProvider;
+ __pDataProvider = null;
+ }
+ if (__pCallMgr != null)
+ {
+ __pCallMgr = null;
+ }
+}
+
+bool
+DialTabLogs::Initialize(void)
+{
+ result r = Construct(IDL_PANEL_LOGS);
+ TryCatch(r == E_SUCCESS, , "DialTabLogs::Initialise() - Fail to initialise Call log panel");
+ return true;
+
+ CATCH:
+ return false;
+}
+
+result
+DialTabLogs::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+
+ // Layout setting
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ if(pForm == null)
+ {
+ return E_FAILURE;
+ }
+
+ RelativeLayout* pRelativeLayout = dynamic_cast<RelativeLayout*>(pForm->GetLandscapeLayoutN());
+ if (pRelativeLayout != null)
+ {
+ pRelativeLayout->SetHorizontalFitPolicy(*this, FIT_POLICY_PARENT);
+ pRelativeLayout->SetVerticalFitPolicy(*this, FIT_POLICY_PARENT);
+ delete pRelativeLayout;
+ }
+
+ pRelativeLayout = dynamic_cast<RelativeLayout*>(pForm->GetPortraitLayoutN());
+ if (pRelativeLayout != null)
+ {
+ pRelativeLayout->SetHorizontalFitPolicy(*this, FIT_POLICY_PARENT);
+ pRelativeLayout->SetVerticalFitPolicy(*this, FIT_POLICY_PARENT);
+ delete pRelativeLayout;
+ }
+
+ __pFormFooter = pForm->GetFooter();
+ if (__pFormFooter != null)
+ {
+ __pFormFooter->SetShowState(true);
+ __pFormFooter->SetStyle(FOOTER_STYLE_BUTTON_TEXT);
+ __pFormFooter->AddActionEventListener(*this);
+
+ __footerItemDelete.Construct(IDA_FOOTER_LOG_DELETE);
+ String delStr = AppUtility::GetResourceString(IDS_DELETE_BTN_STRING);
+ __footerItemDelete.SetText(delStr);
+ __pFormFooter->AddItem(__footerItemDelete);
+ String cancelStr = AppUtility::GetResourceString(IDS_CANCEL_BTN_STRING);
+ __footerItemCancel.Construct(IDA_FOOTER_LOG_CANCEL);
+ __footerItemCancel.SetText(cancelStr);
+ }
+
+ __pButtonSelectAll = static_cast<CheckButton*>(GetControl("IDC_CHECKBUTTON_SELECTALL"));
+ if (__pButtonSelectAll != null)
+ {
+ __pButtonSelectAll->SetShowState(false);
+ __pButtonSelectAll->SetActionId(IDA_CHECKBUTTON_SELECT_ALL, IDA_CHECKBUTTON_UNSELECT_ALL);
+ __pButtonSelectAll->AddActionEventListener(*this);
+ __pButtonSelectAll->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ }
+
+ //create a list view
+ __plogsListView = new (std::nothrow) GroupedListView();
+ if (__plogsListView != null)
+ {
+ __plogsListView->Construct(Rectangle(pForm->GetX(), pForm->GetY(), pForm->GetWidth(), pForm->GetClientAreaBounds().height), GROUPED_LIST_VIEW_STYLE_INDEXED, true, SCROLL_STYLE_FADE_OUT);
+ __plogsListView->AddGroupedListViewItemEventListener(*this);
+ Bitmap* pNoContentBitmap = AppUtility::GetBitmapFromResourcesN(IDB_LOG_NO_CONTENT,W_NOCONTENTS_IMAGE,H_NOCONTENTS_IMAGE);
+ if(pNoContentBitmap != null)
+ {
+ __plogsListView->SetBitmapOfEmptyList(pNoContentBitmap);
+ }
+ __plogsListView->SetTextOfEmptyList(AppUtility::GetResourceString(IDS_NO_LOGS));
+ __plogsListView->SetTextColorOfEmptyList(Color(128,128,128));
+ r = AddControl(*__plogsListView);
+ TryCatch(r == E_SUCCESS, , "Calllog list control not added");
+ }
+
+ __pSelectedLabel = static_cast<Label*>(GetControl(IDC_LABEL_SELECTED_POPUP));
+ if(__pSelectedLabel != null)
+ {
+ SetControlAlwaysOnTop(*__pSelectedLabel,true);
+ __pSelectedLabel->SetBackgroundColor(COLOR_LABEL_SELECTED);
+ __pSelectedLabel->SetShowState(false);
+ }
+
+ CATCH:
+ return r;
+}
+
+result
+DialTabLogs::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+ return r;
+}
+
+void
+DialTabLogs::DeleteSelectedCalllog(void)
+{
+ CallLogDetails* pCalllogInfo = null;
+ int itemCount = 0;
+
+ if(__selectedItemCount == __pCallMgr->GetAllCalllogCount())
+ {
+ __pCallMgr->DeleteAllCalllog();
+ __pDataProvider->DeleteAllItems();
+ }
+ else
+ {
+ for(int groupIndex = 0; groupIndex < __groupCount; groupIndex++)
+ {
+ itemCount = __plogsListView->GetItemCountAt(groupIndex);
+ for(int itemIndex = itemCount-1; itemIndex >=0 ; itemIndex--)
+ {
+ bool isSelected = __plogsListView->IsItemChecked(groupIndex, itemIndex);
+ if(isSelected == true)
+ {
+ __pDataProvider->GetItemAtGroupIndex(groupIndex, itemIndex, &pCalllogInfo);
+ if(pCalllogInfo != null)
+ {
+ __pCallMgr->DeleteCalllogByDbId(pCalllogInfo->GetCalllogDbId());
+ __pDataProvider->DeleteItemAtGroupIndex(groupIndex, itemIndex);
+ }
+ }
+ }
+ }
+ }
+}
+
+void
+DialTabLogs::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
+{
+ __pCallMgr = CallLogManager::GetInstance();
+ __pCallMgr->AddCalllogChangeListener(*this);
+
+ __plogsListView->SetItemProvider(*__pDataProvider);
+ //Reset the delete status
+ //SetCallLogDisplayMode(false);
+
+ //Check if opened in edit mode
+ if(__isEditMode == true)
+ {
+ //Check if "select all" is already selected
+ if (__pButtonSelectAll->IsSelected() == true)
+ {
+ HandleAllItemSelection();
+ }
+ //If there is no items selected the reset the display mode
+ else if(__selectedItemCount == 0)
+ {
+ SetCallLogDisplayMode(false);
+ }
+ }
+
+ if (__pFormFooter != null)
+ {
+ __pFormFooter->SetShowState(true);
+ __pFormFooter->SetBackButton();
+ if(__pCallMgr->GetAllCalllogCount() > 0)
+ {
+ __pFormFooter->SetItemEnabled(0, true);
+ }
+ else
+ {
+ __pFormFooter->SetItemEnabled(0, false);
+ }
+ }
+}
+
+void
+DialTabLogs::HandleAllItemSelection(void)
+{
+ SetListItemSelectStatus(true);
+ __itemCount = __pCallMgr->GetAllCalllogCount();
+ __selectedItemCount = __itemCount;
+ String text;
+ String selItemStr = L"";
+ if(__selectedItemCount > 1)
+ {
+ selItemStr = AppUtility::GetResourceString(IDS_SELECTED_ITEMS_STRING);
+ }
+ else
+ {
+ selItemStr = AppUtility::GetResourceString(IDS_SELECTED_ITEM_STRING);
+ }
+ text.Format(100, selItemStr.GetPointer(), __itemCount);
+ __pSelectedLabel->SetText(text);
+ __pSelectedLabel->Invalidate(false);
+}
+
+void
+DialTabLogs::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
+{
+ if (__pCallMgr != null)
+ {
+ __pCallMgr->RemoveCalllogChangeListner(*this);
+ __pCallMgr = null;
+ }
+ __pFormFooter->RemoveBackButton();
+}
+
+void
+DialTabLogs::OnGroupedListViewItemStateChanged(GroupedListView& listView, int groupIndex, int itemIndex, int elementId, ListItemStatus state)
+{
+ if (__isEditMode == false)
+ {
+ __pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ __pArgs->Construct();
+ CallLogDetails* pCalllogInfo = null;
+ __pDataProvider->GetItemAtGroupIndex(groupIndex, itemIndex, &pCalllogInfo);
+ if(pCalllogInfo != null && pCalllogInfo->GetPhoneNumber() == null)
+ {
+ //handling hidden call
+ return;
+ }
+ if(pCalllogInfo != null)
+ {
+ __pArgs->Add((new String(pCalllogInfo->GetPhoneNumber())));
+ }
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ pSceneManager->GoForward( ForwardSceneTransition(IDSCN_CALL_LOG_DETAILS, SCENE_TRANSITION_ANIMATION_TYPE_NONE,
+ SCENE_HISTORY_OPTION_NO_HISTORY), __pArgs);
+ __pArgs = null;
+ }
+ else
+ {
+ String text;
+ if (state == LIST_ITEM_STATUS_CHECKED)
+ {
+ __selectedItemCount++;
+ }
+ else if (state == LIST_ITEM_STATUS_UNCHECKED)
+ {
+ __selectedItemCount--;
+ }
+ if (__selectedItemCount == __itemCount)
+ {
+ __pButtonSelectAll->SetSelected(true);
+ }
+ else
+ {
+ __pButtonSelectAll->SetSelected(false);
+ }
+ if (__selectedItemCount == 0)
+ {
+ __pFormFooter->SetItemEnabled(0, false);
+ String selStr = AppUtility::GetResourceString(IDS_SELECT_CALL_LOG);
+ __pSelectedLabel->SetText(selStr);
+ }
+ else
+ {
+ __pFormFooter->SetItemEnabled(0, true);
+ String selItemStr = L"";
+ if(__selectedItemCount > 1)
+ {
+ selItemStr = AppUtility::GetResourceString(IDS_SELECTED_ITEMS_STRING);
+ }
+ else
+ {
+ selItemStr = AppUtility::GetResourceString(IDS_SELECTED_ITEM_STRING);
+ }
+ text.Format(100, selItemStr.GetPointer(), __selectedItemCount);
+ __pSelectedLabel->SetText(text);
+ }
+ __pFormFooter->Invalidate(true);
+ __pButtonSelectAll->Invalidate(false);
+ __pSelectedLabel->Invalidate(false);
+ }
+}
+
+void
+DialTabLogs::OnGroupedListViewContextItemStateChanged(GroupedListView& listView, int groupIndex, int itemIndex, int elementId, ListContextItemStatus state)
+{
+ //Empty implementation
+ CallLogDetails* pCalllogInfo = null;
+ __pDataProvider->GetItemAtGroupIndex(groupIndex, itemIndex, &pCalllogInfo);
+ if(pCalllogInfo != null)
+ {
+
+ switch (elementId)
+ {
+ case IDA_LIST_ELEMENT_DELETE:
+ {
+ if(pCalllogInfo != null)
+ {
+ __pCallMgr->DeleteCalllogByDbId(pCalllogInfo->GetCalllogDbId());
+ __pDataProvider->DeleteItemAtGroupIndex(groupIndex, itemIndex);
+ if(__pCallMgr->GetAllCalllogCount() > 0)
+ {
+ __pFormFooter->SetItemEnabled(0, true);
+ }
+ else
+ {
+ __pFormFooter->SetItemEnabled(0, false);
+ }
+ __pFormFooter->Invalidate(true);
+ }
+ }
+ break;
+ case IDA_LIST_ELEMENT_CALL:
+ {
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ CallPresentationModel* pCallPresentor = CallPresentationModel::GetInstance();
+ char* pPhoneNumber = pCalllogInfo->GetPhoneNumber();
+ if(pPhoneNumber == null)
+ {
+ break;
+ }
+ String phoneNumber=L"";
+ phoneNumber.Append(pPhoneNumber);
+ //make an outgoing call with given number
+ String* contactTxt = new (std::nothrow) String(phoneNumber);
+ //switch to dialing outgoing call form
+ IList* pContact = new (std::nothrow) ArrayList(SingleObjectDeleter);
+ pContact->Add(contactTxt);
+ //Check if dialing an emergency call
+ bool isEmergencyCall = pCallPresentor->IsEmergencyNumber(*contactTxt, true);
+ if (isEmergencyCall)
+ {
+ pSceneManager->GoForward( ForwardSceneTransition( IDSCN_SCENE_OUT_EMERGENCYCALL), pContact);
+ }
+ else
+ {
+ pSceneManager->GoForward( ForwardSceneTransition(IDSCN_SCENE_OUTCALL), pContact);
+ }
+
+ }
+ break;
+ case IDA_LIST_ELEMENT_MESSAGE:
+ {
+ result r = E_SUCCESS;
+ char* pPhoneNumber = pCalllogInfo->GetPhoneNumber();
+ if(pPhoneNumber == null)
+ {
+ break;
+ }
+ String phoneNumber=L"";
+ phoneNumber.Append(pPhoneNumber);
+
+ HashMap extraData;
+ extraData.Construct();
+
+ extraData.Add(new (std::nothrow) String(MESSAGE_TYPE), new (std::nothrow) String(MESSAGE_SMS_TYPE));
+ extraData.Add(new (std::nothrow) String(MESSAGE_TO), new (std::nothrow) String(phoneNumber));
+
+ AppControl* pAc = AppManager::FindAppControlN(PROVIDER_ID_MESSAGE, OPERATION_ID_COMPOSE);
+ if (pAc != null)
+ {
+ r = pAc->Start(null, null, &extraData, null);
+
+ delete pAc;
+ }
+
+ extraData.RemoveAll(true);
+
+ }
+ break;
+ case IDA_LIST_ELEMENT_VIDEO_CALL:
+ {
+ //todo: call once video call implemented
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ listView.UpdateList();
+}
+
+void
+DialTabLogs::OnGroupedListViewItemSwept(GroupedListView& listView, int groupIndex, int itemIndex, SweepDirection direction)
+{
+ //Empty implementation
+}
+
+void
+DialTabLogs::OnActionPerformed(const Control& source, int actionId)
+{
+ switch (actionId)
+ {
+ case IDA_FOOTER_LOG_DELETE:
+ {
+ if (__isEditMode == false)
+ {
+ SetCallLogDisplayMode(true);
+ }
+ else
+ {
+ //Delete selected items
+ DeleteSelectedCalllog();
+ SetCallLogDisplayMode(false);
+ }
+ }
+ break;
+
+ case IDA_FOOTER_LOG_CANCEL:
+ {
+ SetCallLogDisplayMode(false);
+ }
+ break;
+
+ case IDA_CHECKBUTTON_SELECT_ALL:
+ {
+ HandleAllItemSelection();
+ }
+ break;
+
+ case IDA_CHECKBUTTON_UNSELECT_ALL:
+ {
+ SetListItemSelectStatus(false);
+ __selectedItemCount = 0;
+ String selStr = AppUtility::GetResourceString(IDS_SELECT_CALL_LOG);
+ __pSelectedLabel->SetText(selStr);
+ __pSelectedLabel->Invalidate(false);
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+void
+DialTabLogs::SetListItemSelectStatus(bool status)
+{
+ int groupIndex = 0;
+ int itemIndex = 0;
+ int itemCount = 0;
+
+ __isSelectAll = status;
+ for (; groupIndex < __groupCount; groupIndex++)
+ {
+ itemCount = __plogsListView->GetItemCountAt(groupIndex);
+ for (itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ __plogsListView->SetItemChecked(groupIndex, itemIndex, status);
+ }
+ }
+ __pFormFooter->SetItemEnabled(0, status);
+ __pFormFooter->Invalidate(true);
+ __plogsListView->Invalidate(true);
+}
+
+void
+DialTabLogs::SetCallLogDisplayMode(bool isEdit)
+{
+ int groupIndex = 0;
+ int itemCount = 0;
+
+ if(isEdit == __isEditMode)
+ {
+ return;
+ }
+
+ for (; groupIndex < __groupCount; groupIndex++)
+ {
+ itemCount += __plogsListView->GetItemCountAt(groupIndex);
+ }
+ __itemCount = __pCallMgr->GetAllCalllogCount();//itemCount;
+ __groupCount = __plogsListView->GetGroupCount();
+ __pButtonSelectAll->SetSelected(false);
+ if (isEdit == false)
+ {
+ __isEditMode = false;
+ __pDataProvider->SetListItemStyle(false);
+ __plogsListView->SetSweepEnabled(true);
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ if(pForm == null)
+ {
+ return;
+ }
+ __plogsListView->SetBounds(pForm->GetX(), pForm->GetY(), pForm->GetWidth(), pForm->GetClientAreaBounds().height);
+ __plogsListView->UpdateList();
+ __pFormFooter->RemoveItemAt(1);
+ __pFormFooter->SetBackButton();
+ if(__pCallMgr->GetAllCalllogCount() > 0)
+ {
+ __pFormFooter->SetItemEnabled(0, true);
+ }
+ else
+ {
+ __pFormFooter->SetItemEnabled(0, false);
+ }
+
+ __pButtonSelectAll->SetShowState(false);
+ __pSelectedLabel->SetShowState(false);
+ __pSelectedLabel->Invalidate(false);
+ }
+ else
+ {
+ __isEditMode = true;
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ if(pForm == null)
+ {
+ return;
+ }
+ __pDataProvider->SetListItemStyle(isEdit);
+ __plogsListView->SetSweepEnabled(false);
+
+ //reset size to allow "SELECT ALL" & "TOAST MSG"
+ Rectangle newRect(pForm->GetX(), H_SELECTALL_CHK_BOX, pForm->GetWidth(), (pForm->GetClientAreaBounds().height - H_SELECTALL_CHK_BOX - H_TOAST_MSG));
+ __plogsListView->SetBounds(newRect);
+ UnCheckAllItems();
+ __plogsListView->UpdateList();
+ __pFormFooter->AddItem(__footerItemCancel);
+ __pFormFooter->RemoveBackButton();
+ __pButtonSelectAll->SetShowState(true);
+ __pFormFooter->SetItemEnabled(0, false);
+ __pFormFooter->Invalidate(false);
+ __selectedItemCount = 0;
+ String selStr = AppUtility::GetResourceString(IDS_SELECT_CALL_LOG);
+ __pSelectedLabel->SetText(selStr);
+ __pSelectedLabel->SetShowState(true);
+ __pSelectedLabel->Invalidate(false);
+ }
+ Draw();
+}
+
+void
+DialTabLogs::UnCheckAllItems(void)
+{
+ int itemCount = 0;
+ for(int groupIndex = 0; groupIndex < __groupCount; groupIndex++)
+ {
+ itemCount = __plogsListView->GetItemCountAt(groupIndex);
+ for(int itemIndex = itemCount-1; itemIndex >=0 ; itemIndex--)
+ {
+ bool isSelected = __plogsListView->IsItemChecked(groupIndex, itemIndex);
+ if(isSelected == true)
+ {
+ __plogsListView->SetItemChecked(groupIndex,itemIndex,false);
+ }
+ }
+ }
+ __selectedItemCount = 0;
+}
+
+void DialTabLogs::OnCalllogChanged(void)
+{
+ // If select all was selected before and some new calls are added (Auto rejeted call)
+ //Then we will not update the call log list.
+ if(__isEditMode == false)
+ {
+ if(__pCallMgr->GetAllCalllogCount() > 0)
+ {
+ __pFormFooter->SetShowState(true);
+ __pFormFooter->SetItemEnabled(0,true);
+ __pFormFooter->Invalidate(true);
+ }
+ __plogsListView->UpdateList();
+ __plogsListView->Invalidate(false);
+ }
+}
--- /dev/null
+//
+// 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 PhnTabLogsItemProvider.cpp
+ * @brief Call log item provider
+ */
+
+#include <FGraphics.h>
+#include <FUi.h>
+#include <FUiControl.h>
+#include <FBase.h>
+#include <FMedia.h>
+#include <FApp.h>
+#include <FLocales.h>
+#include <FSystem.h>
+#include "PhnAppUtility.h"
+#include "PhnCommonUtils.h"
+#include "PhnSettingsConstants.h"
+#include "PhnTabLogsItemProvider.h"
+#include "PhnTypes.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::App;
+using namespace Tizen::Graphics;
+using namespace Tizen::Locales;
+using namespace Tizen::Media;
+using namespace Tizen::Social;
+using namespace Tizen::System;
+
+const int MAX_TWELVEHOUR_FORMAT = 12;
+const int MAX_TWELVEHOUR_FORMAT_LENGTH = 8;
+const int H_LOG_ITEM = 128;
+const int H_LOG_ITEM_TEXT = 50;
+const int W_LOG_ITEM_TEXT = 50;
+const int LOG_ITEM_FONT_SIZE = 32;
+
+const wchar_t* IDS_MSG_CONTEXT_ITEM = L"IDS_MSG_BTN_NAME";
+const wchar_t* IDS_VIDEO_CALL_CONTEXT_ITEM = L"IDS_VIDEO_CALL_BTN_NAME";
+const wchar_t* IDS_VOICE_CALL_CONTEXT_ITEM = L"IDS_VOICE_CALL_BTN_NAME";
+
+CustomDataProvider::CustomDataProvider(void)
+{
+ __isEditStyle = false;
+ __pGroupData = null;
+ __pAddressBook = new (std::nothrow) Addressbook();
+ __pAddressBook->Construct();
+ __pItemContext = new ListContextItem();
+ __pItemContext->Construct();
+ String voiceCallStr = AppUtility::GetResourceString(IDS_VOICE_CALL_CONTEXT_ITEM);
+ __pItemContext->AddElement(IDA_LIST_ELEMENT_CALL, voiceCallStr);
+ String messageStr = AppUtility::GetResourceString(IDS_MSG_CONTEXT_ITEM);
+ __pItemContext->AddElement(IDA_LIST_ELEMENT_MESSAGE, messageStr);
+ String videoCallStr = AppUtility::GetResourceString(IDS_VIDEO_CALL_CONTEXT_ITEM);
+ __pItemContext->AddElement(IDA_LIST_ELEMENT_VIDEO_CALL, videoCallStr);
+ String delStr = AppUtility::GetResourceString(IDS_DELETE_BTN_STRING);
+ __pItemContext->AddElement(IDA_LIST_ELEMENT_DELETE, delStr);
+ return;
+}
+
+CustomDataProvider::~CustomDataProvider(void)
+{
+ ArrayList* pCalllogList = null;
+ GroupItemClass* pGroupInfo = null;
+
+ if(__pGroupData != null)
+ {
+ for(int index = 0; index < __pGroupData->GetCount(); index++)
+ {
+ pGroupInfo = static_cast<GroupItemClass*>(__pGroupData->GetAt(index));
+
+ if(pGroupInfo != null)
+ {
+ pCalllogList = pGroupInfo->GetLogData();
+ if(pCalllogList != null)
+ {
+ AppLog(" data cnt = %d", pCalllogList->GetCount());
+ pCalllogList->RemoveAll(true);
+
+ delete pCalllogList;
+ pCalllogList = null;
+ }
+ delete pGroupInfo;
+ pGroupInfo = null;
+ }
+ }
+ __pGroupData->RemoveAll(false);
+ delete __pGroupData;
+ }
+
+ if(__pAddressBook != null)
+ {
+ delete __pAddressBook;
+ }
+ if (__pItemContext != null)
+ {
+ delete __pItemContext;
+ __pItemContext = null;
+ }
+}
+
+GroupItemClass::GroupItemClass()
+{
+ __pData = null;
+}
+
+GroupItemClass::~GroupItemClass()
+{
+ /*if(__pData)
+ {
+ delete __pData;
+ }*/
+}
+
+void
+GroupItemClass::SetTitleText(String titleText)
+{
+ __titleText = titleText;
+}
+
+void
+GroupItemClass::SetLogData(ArrayList* pData)
+{
+ __pData = pData;
+}
+
+String
+GroupItemClass::GetTitleText(void)
+{
+ return __titleText;
+}
+
+ArrayList*
+GroupItemClass::GetLogData(void)
+{
+ return __pData;
+}
+
+
+void
+CustomDataProvider::GetItemAtGroupIndex(int groupIndex, int itemIndex, CallLogDetails** pCalllogDetails)
+{
+ if(__pGroupData != null)
+ {
+ GroupItemClass* pGroupInfo = null;
+ ArrayList* list = null;
+ pGroupInfo = static_cast<GroupItemClass*>(__pGroupData->GetAt(groupIndex));
+ if(pGroupInfo != null)
+ {
+ list = pGroupInfo->GetLogData();
+ *pCalllogDetails = static_cast<CallLogDetails*>(list->GetAt(itemIndex));
+ }
+ }
+}
+
+void
+CustomDataProvider::DeleteItemAtGroupIndex(int groupIndex, int itemIndex)
+{
+ if(__pGroupData != null)
+ {
+ GroupItemClass* pGroupInfo = null;
+ ArrayList* list = null;
+ pGroupInfo = static_cast<GroupItemClass*>(__pGroupData->GetAt(groupIndex));
+ if(pGroupInfo != null)
+ {
+ list = pGroupInfo->GetLogData();
+ list->RemoveAt(itemIndex,true);
+ }
+ }
+}
+
+void
+CustomDataProvider::DeleteAllItems(void)
+{
+ ArrayList* pCalllogList = null;
+ GroupItemClass* pGroupInfo = null;
+ if(__pGroupData != null)
+ {
+ for(int index = 0; index < __pGroupData->GetCount(); index++)
+ {
+ pGroupInfo = static_cast<GroupItemClass*>(__pGroupData->GetAt(index));
+
+ if(pGroupInfo != null)
+ {
+ pCalllogList = pGroupInfo->GetLogData();
+ if(pCalllogList != null)
+ {
+ AppLog(" data cnt = %d", pCalllogList->GetCount());
+ pCalllogList->RemoveAll(true);
+
+ delete pCalllogList;
+ pCalllogList = null;
+ }
+ delete pGroupInfo;
+ pGroupInfo = null;
+ }
+ }
+ __pGroupData->RemoveAll(false);
+ delete __pGroupData;
+ __pGroupData = null;
+ }
+}
+
+bool
+CustomDataProvider::GetCurrentDateTime(DateTime& dt)
+{
+ DateTime dtNow;
+ LocaleManager localManager;
+ result r = E_FAILURE;
+ TimeZone tz;
+
+ r = SystemTime::GetCurrentTime(UTC_TIME, dtNow);
+ if (IsFailed(r))
+ {
+ return false;
+ }
+ localManager.Construct();
+ tz = localManager.GetSystemTimeZone();
+ dt = tz.UtcTimeToWallTime(dtNow);
+
+ return true;
+}
+
+bool
+CustomDataProvider::IsGroupPresent(GroupItemClass* group)
+{
+ if(group == null)
+ {
+ return false;
+ }
+ GroupItemClass* pGroupInfo = null;
+ for(int index = 0; index < __pGroupData->GetCount(); index++)
+ {
+ pGroupInfo = static_cast<GroupItemClass*>(__pGroupData->GetAt(index));
+ if(pGroupInfo == null)
+ {
+ return false;
+ }
+ String title1;
+ String title2;
+ title1 = group->GetTitleText();
+ title2 = pGroupInfo->GetTitleText();
+ if( title1.CompareTo(title2) == 0)
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
+GroupItemClass*
+CustomDataProvider::GetGroupWithTitle(String title)
+{
+ GroupItemClass* pGroupInfo = null;
+ for(int index = 0; index < __pGroupData->GetCount(); index++)
+ {
+ pGroupInfo = static_cast<GroupItemClass*>(__pGroupData->GetAt(index));
+ if(pGroupInfo == null)
+ {
+ return null;
+ }
+ String title1 = pGroupInfo->GetTitleText();
+ if( title.CompareTo(title1) == 0)
+ {
+ return pGroupInfo;
+ }
+ }
+ return null;
+}
+
+int
+CustomDataProvider::GetDaysDifferenceBetweenDates(DateTime date1, DateTime date2)
+{
+ if(date1.GetYear() == date2.GetYear())
+ {
+ if(date1.GetMonth() == date2.GetMonth())
+ {
+ int days = date2.GetDay() - date1.GetDay();
+ /* if(days < 0)
+ {
+ days = days * -1;
+ }*/
+ return days;
+ }
+ else
+ {
+ int mIndex = 1;
+ int days1 = 0;
+ int days2 = 0;
+ int daysInMonth = 0;
+ int daysDifference = 0;
+ for(;mIndex < date1.GetMonth(); mIndex++)
+ {
+ DateTime::GetDaysInMonth(date1.GetYear(), mIndex, daysInMonth);
+ days1 += daysInMonth;
+ }
+ days1 += date1.GetDay();
+ mIndex = 1;
+ daysInMonth = 0;
+ for(;mIndex < date2.GetMonth(); mIndex++)
+ {
+ DateTime::GetDaysInMonth(date2.GetYear(), mIndex, daysInMonth);
+ days2 += daysInMonth;
+ }
+ days2 += date2.GetDay();
+ daysDifference = days2 - days1;
+ AppLog(" days %d %d %d", days1, days2, daysDifference);
+ return daysDifference;
+ }
+ }
+ TimeSpan t1 = date1.GetTimeOfDay();
+ TimeSpan t2 = date2.GetTimeOfDay();
+ return 0;
+}
+
+void
+CustomDataProvider::CreateGroupItems(void)
+{
+ result r = E_FAILURE;
+ DateTime currentTime;
+ DateTime todaysDate;
+ GroupItemClass* pGroupItemClass = null;
+ CallLogManager* pManager = CallLogManager::GetInstance();
+ CallLogDetails* pCalllogInfo = null;
+ ArrayList* data = null;
+ int key = 0;
+
+ if(__pGroupData != null)
+ {
+ ArrayList* pCalllogList = null;
+ GroupItemClass* pGroupInfo = null;
+ for(int index = 0; index < __pGroupData->GetCount(); index++)
+ {
+ pGroupInfo = static_cast<GroupItemClass*>(__pGroupData->GetAt(index));
+
+ if(pGroupInfo != null)
+ {
+ pCalllogList = pGroupInfo->GetLogData();
+ if(pCalllogList != null)
+ {
+ pCalllogList->RemoveAll();
+ delete pCalllogList;
+ pCalllogList = null;
+ }
+ delete pGroupInfo;
+ pGroupInfo = null;
+ }
+ }
+ __pGroupData->RemoveAll();
+ delete __pGroupData;
+ __pGroupData = null;
+ }
+ __pGroupData = new(std::nothrow) ArrayList();
+ if(__pGroupData == null)
+ {
+ return;
+ }
+ r = __pGroupData->Construct();
+ if(IsFailed(r))
+ {
+ delete __pGroupData;
+ __pGroupData = null;
+ return;
+ }
+
+
+ int logCount = pManager->GetAllCalllogCount();
+ int cmp = 0;
+ GetCurrentDateTime(todaysDate);
+ //todaysDate.SetValue(currentTime.GetYear(),currentTime.GetMonth(), currentTime.GetDay());
+ String title;
+ DateTime calllogDate = todaysDate;
+
+ for(int index = 0; index < logCount; index++)
+ {
+ data = null;
+ title.Clear();
+ key = 0;
+ cmp = 0;
+ pCalllogInfo = new (std::nothrow) CallLogDetails();
+ pManager->GetCallLogItemAtIndex(index ,*pCalllogInfo);
+ pCalllogInfo->ConvertTimetoDateTime();
+ calllogDate = pCalllogInfo->GetDateTime();
+ AppLog(" info %d %d %d %s %d:%d:%d", key, pCalllogInfo->GetCalllogType(), pCalllogInfo->GetDuration(), pCalllogInfo->GetPhoneNumber(), calllogDate.GetYear(), calllogDate.GetMonth(), calllogDate.GetDay());
+
+ //Create a new group
+ pGroupItemClass = new(std::nothrow) GroupItemClass();
+ if(pGroupItemClass == null)
+ {
+ return;
+ }
+
+ int days = GetDaysDifferenceBetweenDates(calllogDate , todaysDate);
+ if(days == 0)
+ {
+ title.Append(L"Today");
+ }
+ else if(days == 1)
+ {
+ title.Append(L"Yesterday");
+ }
+ else
+ {
+ title.Format(30,L"%d/%d/%d",calllogDate.GetDay(), calllogDate.GetMonth(), calllogDate.GetYear());
+ }
+ pGroupItemClass->SetTitleText(title);
+
+ //Group already present
+ if(IsGroupPresent(pGroupItemClass) == true)
+ {
+ //Delete the created temp group class. Use the already existing group class variable from __pGroupData.
+ if(pGroupItemClass != null)
+ {
+ delete pGroupItemClass;
+ pGroupItemClass = null;
+ }
+ GroupItemClass* pGroup = GetGroupWithTitle(title);
+ data = pGroup->GetLogData();
+ if(data == null)
+ {
+ data = new ArrayList();
+ data->Construct();
+ }
+ data->Add(*pCalllogInfo);
+ pGroup->SetLogData(data);
+ }
+ else
+ {
+ //Group not present in __pGroupData. So add this group
+ __pGroupData->Add(*pGroupItemClass);
+ data = pGroupItemClass->GetLogData();
+ if(data == null)
+ {
+ data = new ArrayList();
+ data->Construct();
+ }
+ data->Add(*pCalllogInfo);
+ pGroupItemClass->SetLogData(data);
+ }
+ }
+}
+
+int
+CustomDataProvider::GetGroupCount(void)
+{
+ CreateGroupItems();
+ if(__pGroupData != null)
+ {
+ return __pGroupData->GetCount();
+ }
+ return 0;
+}
+
+int
+CustomDataProvider::GetItemCount(int groupIndex)
+{
+ GroupItemClass* group = null;
+ if(__pGroupData != null)
+ {
+ group = static_cast<GroupItemClass*>(__pGroupData->GetAt(groupIndex));
+ if(group)
+ {
+ return (group->GetLogData())->GetCount();
+ }
+ }
+ return 0;
+}
+
+GroupItem*
+CustomDataProvider::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ AppResource* pAppResource = App::GetInstance()->GetAppResource();
+ GroupItem* pItem = new GroupItem();
+ pItem->Construct(Dimension(itemWidth, 48));
+
+ String appPath = (Application::GetInstance())->GetAppRootPath();
+ Bitmap* pBitmap = null;
+ pBitmap = pAppResource->GetBitmapN(IDB_CALLOG_LIST_BG,BITMAP_PIXEL_FORMAT_ARGB8888);
+
+ GroupItemClass* group = null;
+ if(__pGroupData != null)
+ {
+ group = static_cast<GroupItemClass*>(__pGroupData->GetAt(groupIndex));
+ if(group)
+ {
+ pItem->SetElement(group->GetTitleText(), pBitmap);
+ }
+ else
+ {
+ return null;
+ }
+ }
+ return pItem;
+}
+
+ListItemBase*
+CustomDataProvider::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ GroupItemClass* pGroup = null;
+ ArrayList* pCalllogList = null;
+ CallLogDetails* pCalllogData = null;
+ String phoneNumber(AppUtility::GetResourceString(IDS_CALLLOG_NO_NUMBER));
+ String contactName(AppUtility::GetResourceString(IDS_CALLLOG_NO_NAME));
+ DateTime calllogDate;
+ String dateText(L"");
+ String key(L"24HourFormatSelected");
+ String amPm;
+ bool dateFormat24 = true;
+ Bitmap* pBitmap = null;
+ AppResource* pAppResource = App::GetInstance()->GetAppResource();
+
+ if(__pGroupData != null)
+ {
+ pGroup = static_cast<GroupItemClass*>(__pGroupData->GetAt(groupIndex));
+ if(pGroup != null)
+ {
+ pCalllogList = pGroup->GetLogData();
+ if(pCalllogList != null)
+ {
+ AppLog(" data cnt = %d", pCalllogList->GetCount());
+ pCalllogData = static_cast<CallLogDetails*>(pCalllogList->GetAt(itemIndex));
+ }
+ }
+ }
+
+ if(pCalllogData == null)
+ {
+ return null;
+ }
+ else
+ {
+ if(pCalllogData->GetPhoneNumber() != null)
+ {
+ phoneNumber = pCalllogData->GetPhoneNumber();
+ }
+
+ CallLogManager* pManager = CallLogManager::GetInstance();
+ pManager->GetCalllogContactName(phoneNumber,contactName);
+ pCalllogData->ConvertTimetoDateTime();
+ calllogDate = pCalllogData->GetDateTime();
+ int hour = calllogDate.GetHour();
+ SettingInfo::GetValue(key, dateFormat24);
+
+ if (dateFormat24 == false)
+ {
+ if (hour > MAX_TWELVEHOUR_FORMAT)
+ {
+ hour -= MAX_TWELVEHOUR_FORMAT;
+ amPm.Append(AppUtility::GetResourceString(IDS_PM_TIME));
+ }
+ else if (hour < MAX_TWELVEHOUR_FORMAT)
+ {
+ amPm.Append(AppUtility::GetResourceString(IDS_AM_TIME));
+ }
+ else if (hour == MAX_TWELVEHOUR_FORMAT)
+ {
+ amPm.Append(AppUtility::GetResourceString(IDS_PM_TIME));
+ }
+ dateText.Format(MAX_TWELVEHOUR_FORMAT_LENGTH,L"%02d:%02d%ls", hour, calllogDate.GetMinute(), amPm.GetPointer());
+ }
+ else
+ {
+ dateText.Format(MAX_TWELVEHOUR_FORMAT_LENGTH,L"%02d:02%d", calllogDate.GetHour(), calllogDate.GetMinute());
+ }
+
+ }
+ ListAnnexStyle style = LIST_ANNEX_STYLE_NORMAL;
+ EnrichedText* text = new (std::nothrow) EnrichedText();
+ TextElement* textElement = new (std::nothrow) TextElement();
+ Font font;
+ String appPath = (Application::GetInstance())->GetAppRootPath();
+
+ CustomItem* pItem = new (std::nothrow) CustomItem();
+
+ if (__isEditStyle == true)
+ {
+ style = LIST_ANNEX_STYLE_MARK;
+ }
+
+ pItem->Construct(Dimension(itemWidth, H_LOG_ITEM), style);
+ pItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_NORMAL, Color::GetColor(COLOR_ID_WHITE));
+ pItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_PRESSED, Color::GetColor(COLOR_ID_WHITE));
+ pItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_HIGHLIGHTED, Color::GetColor(COLOR_ID_WHITE));
+
+ if (__isEditStyle == false)
+ {
+ pItem->AddElement(Rectangle(X_TEXT_LINE1_ITEM, Y_TEXT_LINE1_ITEM, W_TEXT_LINE1_ITEM, H_TEXT_LINE1_ITEM), ID_NAME_STRING, contactName,44, Color::GetColor(COLOR_ID_BLACK), Color::GetColor(COLOR_ID_BLACK), Color::GetColor(COLOR_ID_BLACK), true);
+ pItem->AddElement(Rectangle(X_TEXT_LINE2_ITEM, Y_TEXT_LINE2_ITEM, W_TEXT_LINE2_ITEM, H_TEXT_LINE2_ITEM), ID_NUMBER_STRING, phoneNumber, 32, Color::GetColor(COLOR_ID_GREY), Color::GetColor(COLOR_ID_GREY), Color::GetColor(COLOR_ID_GREY), true);
+ }
+ else
+ {
+ pItem->AddElement(Rectangle(X_TEXT_LINE1_ITEM, Y_TEXT_LINE1_ITEM, W_TEXT_LINE1_ITEM - 76, H_TEXT_LINE1_ITEM), ID_NAME_STRING, contactName, 44, Color::GetColor(COLOR_ID_BLACK), Color::GetColor(COLOR_ID_BLACK), Color::GetColor(COLOR_ID_BLACK), true);
+ pItem->AddElement(Rectangle(X_TEXT_LINE2_ITEM, Y_TEXT_LINE2_ITEM, W_TEXT_LINE2_ITEM - 76, H_TEXT_LINE2_ITEM), ID_NUMBER_STRING, phoneNumber, 32, Color::GetColor(COLOR_ID_GREY), Color::GetColor(COLOR_ID_GREY), Color::GetColor(COLOR_ID_GREY), true);
+ }
+
+ text->Construct(Dimension(W_LOG_ITEM_TEXT, H_LOG_ITEM_TEXT));
+ text->SetHorizontalAlignment(TEXT_ALIGNMENT_RIGHT);
+ text->SetVerticalAlignment(TEXT_ALIGNMENT_BOTTOM);
+ font.Construct(FONT_STYLE_PLAIN, LOG_ITEM_FONT_SIZE);
+ textElement->Construct(dateText);
+ textElement->SetFont(font);
+ textElement->SetTextColor(Color::GetColor(COLOR_ID_GREY));
+ text->Add(*textElement);
+ if (__isEditStyle == false)
+ {
+ pItem->AddElement(Rectangle(X_TEXT_TIME_ITEM, Y_TEXT_TIME_ITEM, W_TEXT_TIME_ITEM, H_TEXT_TIME_ITEM), ID_TIME_STRING, *text);
+ }
+ else
+ {
+ pItem->AddElement(Rectangle(X_TEXT_TIME_ITEM - 76, Y_TEXT_TIME_ITEM, W_TEXT_TIME_ITEM, H_TEXT_TIME_ITEM), ID_TIME_STRING, *text);
+ }
+
+ if (pBitmap != null)
+ {
+ if (__isEditStyle == false)
+ {
+ pItem->AddElement(Rectangle(X_CONTACT_BITMAP_ITEM, Y_CONTACT_BITMAP_ITEM, W_CONTACT_BITMAP_ITEM, H_CONTACT_BITMAP_ITEM), ID_CONTACT_BITMAP, *pBitmap);
+ }
+ else
+ {
+ pItem->AddElement(Rectangle(X_CONTACT_BITMAP_ITEM - 76, Y_CONTACT_BITMAP_ITEM, W_CONTACT_BITMAP_ITEM, H_CONTACT_BITMAP_ITEM), ID_CONTACT_BITMAP, *pBitmap);
+ }
+ delete pBitmap;
+ pBitmap = null;
+ }
+
+ switch(pCalllogData->GetCalllogType())
+ {
+ case CALL_LOG_TYPE_VOICE_INCOMING:
+ {
+ pBitmap = pAppResource->GetBitmapN(IDB_LOG_RECEIVEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
+
+ }
+ break;
+ case CALL_LOG_TYPE_VOICE_OUTGOING:
+ {
+ pBitmap = pAppResource->GetBitmapN(IDB_LOG_DIALEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
+ }
+ break;
+ case CALL_LOG_TYPE_VOICE_REJECTED:
+ case CALL_LOG_TYPE_VOICE_MISSED:
+ {
+ pBitmap = pAppResource->GetBitmapN(IDB_LOG_MISSEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
+ }
+ break;
+ case CALL_LOG_TYPE_VOICE_BLOCKED:
+ {
+ pBitmap = pAppResource->GetBitmapN(IDB_LOG_BLOCKEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
+ }
+ break;
+ default:
+ {
+ pBitmap = pAppResource->GetBitmapN(IDB_LOG_MISSEDCALL_ICON ,BITMAP_PIXEL_FORMAT_ARGB8888);
+ }
+ break;
+ }
+
+ if (pBitmap != null)
+ {
+ pItem->AddElement(Rectangle(X_CALLTYPE_BITMAP_ITEM, Y_CALLTYPE_BITMAP_ITEM, W_CALLTYPE_BITMAP_ITEM, H_CALLTYPE_BITMAP_ITEM), ID_CALLTYPE_BITMAP, *pBitmap);
+ delete pBitmap;
+ }
+
+ if (__isEditStyle == false)
+ {
+ pItem->SetContextItem(__pItemContext);
+ }
+ delete text;
+ return pItem;
+ return null;
+}
+
+bool
+CustomDataProvider::DeleteItem(int groupIndex, int itemIndex, ListItemBase* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+ return true;
+}
+
+bool
+CustomDataProvider::DeleteGroupItem(int groupIndex, GroupItem* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+ return true;
+}
+
+void
+CustomDataProvider::SetListItemStyle(bool mode)
+{
+ __isEditStyle = mode;
+}
+
+
--- /dev/null
+//
+// 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 PhnTelephonyManager.cpp
+ * @brief Call log item provider
+ */
+#include <stdio.h>
+#include <FBaseSys.h>
+#include <FSystem.h>
+#include "ITapiModem.h"
+#include "ITapiSim.h"
+#include "PhnCallInfo.h"
+#include "PhnTelephonyManager.h"
+#include "PhnSettingsManager.h"
+#include "PhnTypes.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Graphics;
+using namespace Tizen::Social;
+using namespace Tizen::System;
+using namespace Tizen::Base::Collection;
+
+const char* callEventList[] = {
+ TAPI_NOTI_VOICE_CALL_STATUS_IDLE,
+ TAPI_NOTI_VOICE_CALL_STATUS_ACTIVE,
+ TAPI_NOTI_VOICE_CALL_STATUS_HELD,
+ TAPI_NOTI_VOICE_CALL_STATUS_DIALING,
+ TAPI_NOTI_VOICE_CALL_STATUS_ALERT,
+ /*TAPI_NOTI_VOICE_CALL_STATUS_INCOMING,*/
+ TAPI_NOTI_VOICE_CALL_STATUS_WAITING,
+ TAPI_NOTI_CALL_INFO_CALL_CONNECTED_LINE,
+ TAPI_NOTI_CALL_INFO_WAITING,
+ TAPI_NOTI_CALL_INFO_CUG,
+ TAPI_NOTI_CALL_INFO_FORWARDED,
+ TAPI_NOTI_CALL_INFO_BARRED_INCOMING,
+ TAPI_NOTI_CALL_INFO_BARRED_OUTGOING,
+ TAPI_NOTI_CALL_INFO_DEFLECTED,
+ TAPI_NOTI_CALL_INFO_CLIR_SUPPRESSION_REJECT,
+ TAPI_NOTI_CALL_INFO_FORWARD_UNCONDITIONAL,
+ TAPI_NOTI_CALL_INFO_FORWARD_CONDITIONAL,
+ TAPI_NOTI_CALL_INFO_CALL_LINE_IDENTITY,
+ TAPI_NOTI_CALL_INFO_CALL_NAME_INFORMATION,
+ TAPI_NOTI_CALL_INFO_FORWARDED_CALL,
+ TAPI_NOTI_CALL_INFO_CUG_CALL,
+ TAPI_NOTI_CALL_INFO_DEFLECTED_CALL,
+ TAPI_NOTI_CALL_INFO_TRANSFERED_CALL,
+ TAPI_NOTI_CALL_INFO_HELD,
+ TAPI_NOTI_CALL_INFO_ACTIVE,
+ TAPI_NOTI_CALL_INFO_JOINED,
+ TAPI_NOTI_CALL_INFO_RELEASED_ON_HOLD,
+ TAPI_NOTI_CALL_INFO_TRANSFER_ALERT,
+ TAPI_NOTI_CALL_INFO_TRANSFERED,
+ TAPI_NOTI_CALL_INFO_CF_CHECK_MESSAGE,
+};
+
+TelephonyManager* TelephonyManager::__pManager = null;
+
+TelephonyManager::TelephonyManager(ITelephonyEventListener* pEventListener)
+: __pEventListener(pEventListener)
+{
+ __pDialedCall = null;
+ __pIncomingCall = null;
+ __pActiveCallList = null;
+ __pSettingsManager = null;
+ __pTapiHandle = null;
+ __isIncomingCallPresent = false;
+ __pAddressBook = null;
+ __pCachedContact = null;
+ __isMuted = false;
+ __isSpeakerOn = false;
+ __pSoundManager = null;
+ __pCalllogMgr = null;
+}
+
+TelephonyManager::~TelephonyManager(void)
+{
+ if (__pActiveCallList != null)
+ {
+ delete __pActiveCallList;
+ }
+
+ if (__pDialedCall != null)
+ {
+ delete __pDialedCall;
+ __pDialedCall = null;
+ }
+
+ if (__pIncomingCall != null)
+ {
+ delete __pIncomingCall;
+ __pIncomingCall = null;
+ }
+
+ if (__pAddressBook != null)
+ {
+ delete __pAddressBook;
+ __pAddressBook = null;
+ }
+ if (__pCachedContact != null)
+ {
+ delete __pCachedContact;
+ __pCachedContact = null;
+ }
+
+ //unregister for events from TAPI Lib.
+ UnregisterEvents();
+
+ //De-initialize the TAPI Library
+ if(__pTapiHandle != null)
+ {
+ tel_deinit(__pTapiHandle);
+ }
+
+ if (__pSoundManager != null)
+ {
+ delete __pSoundManager;
+ }
+
+ if (__pCalllogMgr)
+ {
+ __pCalllogMgr = null;
+ }
+}
+
+TelephonyManager*
+TelephonyManager::GetInstance(ITelephonyEventListener* pEventListener)
+{
+ if (__pManager == null)
+ {
+ CreateInstance(pEventListener);
+ }
+ return __pManager;
+}
+
+void
+TelephonyManager::CreateInstance(ITelephonyEventListener* pEventListener)
+{
+ __pManager = new (std::nothrow) TelephonyManager(pEventListener);
+ result r = __pManager->Initialize();
+ if (IsFailed(r))
+ {
+ delete __pManager;
+ __pManager = null;
+ }
+ atexit(&(TelephonyManager::DestroyInstance));
+}
+
+void
+TelephonyManager::DestroyInstance(void)
+{
+ if (__pManager != null)
+ {
+ __pManager->EndAllCalls();
+ delete __pManager;
+ __pManager = null;
+ }
+}
+
+result
+TelephonyManager::Initialize(void)
+{
+ //Initialize telephony library
+ result r = InitializeTelephonyLibrary();
+ if (IsFailed(r))
+ {
+ return r;
+ }
+ __pActiveCallList = new (std::nothrow) HashMapT<long, CallInfo>();
+ __pActiveCallList->Construct(IDI_MAX_ACTIVE_CALLS);
+
+ //Initialize the Settings Manager to fetch call settings
+ __pSettingsManager = SettingsManager::GetInstance();
+
+ //initialize address book to fetch contacts information
+ __pAddressBook = new (std::nothrow) Addressbook();
+ r = __pAddressBook->Construct();
+ if (IsFailed(r))
+ {
+ //TODO: handle the issue: Out of memory, etx.
+ return r;
+ }
+ __pSoundManager = new (std::nothrow) SoundManager();
+ __pCalllogMgr = CallLogManager::GetInstance();
+ return r;
+}
+
+result
+TelephonyManager::InitializeTelephonyLibrary(void)
+{
+ result r = E_FAILURE;
+
+ __pTapiHandle = tel_init(null);
+ if (__pTapiHandle != null)
+ {
+ //register telephony events
+ int errorCode = RegisterEvents();
+ if (errorCode == TAPI_CAUSE_SUCCESS)
+ {
+ r = E_SUCCESS;
+ }
+ }
+
+ //TAPI Library is initialized and events registered successfully
+ return r;
+}
+
+int
+TelephonyManager::RegisterEvents(void)
+{
+ int errCode = -1;
+ int eventCount = sizeof(callEventList) / sizeof(char *);
+ for (int index = 0; index < eventCount; index++)
+ {
+ errCode = tel_register_noti_event(__pTapiHandle, callEventList[index], &HandleCallback, this);
+ if (errCode != TAPI_API_SUCCESS)
+ {
+ return errCode;
+ }
+ }
+ return errCode;
+}
+
+void
+TelephonyManager::UnregisterEvents(void)
+{
+ int eventCount = sizeof(callEventList) / sizeof(char *);
+ for (int index = 0; index < eventCount; index++)
+ {
+ tel_deregister_noti_event(__pTapiHandle, callEventList[index]);
+ }
+}
+
+ErrorCodes
+TelephonyManager::SetupMoCall(String& contactNumber, bool isEmergency)
+{
+ ErrorCodes r = ERROR_TAPI_ERROR;
+ result res = E_SUCCESS;
+
+ res = CheckValidTelePhoneNumber(contactNumber);
+ if (IsFailed(res))
+ {
+ return ERROR_INVALID_NUMBER;
+ }
+
+ //if dialing an emeregency call and active calls exist
+ //then end all active calls.
+ if (isEmergency && __pActiveCallList->GetCount() > 0)
+ {
+ //Get first call handle
+ CallInfo endCallInfo;
+ IListT<CallInfo>* pCallList = __pActiveCallList->GetValuesN();
+ pCallList->GetAt(0, endCallInfo);
+ int callHandle = endCallInfo.GetCallHandle()->ToLong();
+ delete pCallList;
+ pCallList = null;
+
+ //release all active or held calls
+ int tapires = tel_end_call(__pTapiHandle, callHandle, TAPI_CALL_END_ALL, &HandleCallbackResponse, this);
+ if (tapires == TAPI_CAUSE_SUCCESS)
+ {
+ __pActiveCallList->RemoveAll();
+ r = ERROR_NONE;
+ res = E_SUCCESS;
+ }
+ else
+ {
+ r = ERROR_TAPI_ERROR;
+ return r;
+ }
+ }
+ else if (__pActiveCallList->GetCount() == 1)
+ {
+ //Check if there is already an active call,
+ //Put the already active call on hold.
+ CallInfo holdCallInfo;
+ IListT<CallInfo>* pCallList = __pActiveCallList->GetValuesN();
+
+ pCallList->GetAt(0, holdCallInfo);
+ //Check if call is active, then put on hold
+ if (holdCallInfo.IsOnHold() == false)
+ {
+ res = HoldActiveCall(&holdCallInfo, true);
+ }
+ delete pCallList;
+ pCallList = null;
+ }
+
+ //make the next call, only if any existing active call
+ //is successfully put on hold or is already on hold.
+ //make the next call, only if any existing active call
+ //is successfully put on hold or is already on hold.
+ if (res == E_SUCCESS)
+ {
+ res = DialOutgoingCall(contactNumber, isEmergency);
+ }
+ if(res == E_SUCCESS)
+ {
+ return ERROR_NONE;
+ }
+ {
+ return ERROR_TAPI_ERROR;
+ }
+}
+
+void
+TelephonyManager::EndAllCalls(void)
+{
+ if(__pDialedCall != null)
+ {
+ if(__pDialedCall->GetCallHandle() != null)
+ {
+ tel_end_call(__pTapiHandle, __pDialedCall->GetCallHandle()->ToLong(), TAPI_CALL_END, &HandleCallbackResponse, this);
+ }
+ }
+ tel_end_call(__pTapiHandle, -1, TAPI_CALL_END_HOLD_ALL, &HandleCallbackResponse, this);
+ //end all active calls before terminating application
+ tel_end_call(__pTapiHandle, -1, TAPI_CALL_END_ALL, &HandleCallbackResponse, this);
+}
+
+result
+TelephonyManager::EndCall(Long callHandle)
+{
+ result r = E_SUCCESS;
+ CallInfo endCall;
+ bool endDialedCall = false;
+
+ //fetch ended callInfo
+ IListT<CallInfo>* pCallList = __pActiveCallList->GetValuesN();
+ int callCount = pCallList->GetCount();
+ for (int index = 0; index < callCount; index++)
+ {
+ pCallList->GetAt(index, endCall);
+ if(endCall.GetCallHandle()->Equals(callHandle))
+ {
+ //Found the call to be ended.
+ r = E_SUCCESS;
+ break;
+ }
+
+ }
+ delete pCallList;
+ pCallList = null;
+
+ if (r == E_SUCCESS && __pDialedCall != null)
+ {
+ if (__pDialedCall->GetCallHandle()->Equals(callHandle) )
+ {
+ r = E_SUCCESS;
+ endCall = *__pDialedCall;
+ endDialedCall = true;
+ }
+
+ }
+
+ if (r == E_SUCCESS)
+ {
+ unsigned int callHandle = -1;
+ if (endCall.GetCallHandle() != null)
+ {
+ callHandle = endCall.GetCallHandle()->ToLong();
+ TelCallEndType_t endType = TAPI_CALL_END;
+ int res = -1;
+ res = tel_end_call(__pTapiHandle, callHandle, endType, &HandleEndDialedCallResponse, this);
+
+ if (res == TAPI_CAUSE_SUCCESS)
+ {
+ if (endDialedCall == true)
+ {
+ String endCause(L"Call Rejected");
+ __pDialedCall->SetEndCallCause(endCause);
+ }
+ r = E_SUCCESS;
+ }
+ else
+ {
+ r = E_FAILURE;
+ }
+ }
+ else
+ {
+ r = E_FAILURE;
+ }
+ }
+ return r;
+}
+
+result
+TelephonyManager::EndCall(String& contactNumber)
+{
+ result r = E_SUCCESS;
+ CallInfo endCall;
+ bool endDialedCall = false;
+ if (contactNumber.IsEmpty())
+ {
+ return E_FAILURE;
+ }
+
+ //fetch ended callInfo
+ IListT<CallInfo>* pCallList = __pActiveCallList->GetValuesN();
+ int callCount = pCallList->GetCount();
+ for (int index = 0; index < callCount; index++)
+ {
+ pCallList->GetAt(index, endCall);
+ if (endCall.GetContactNumber().Equals(contactNumber))
+ {
+ //Found the call to be ended.
+ r = E_SUCCESS;
+ break;
+ }
+ }
+ delete pCallList;
+ pCallList = null;
+
+ if (r == E_SUCCESS && __pDialedCall != null)
+ {
+ if (__pDialedCall->GetContactNumber().Equals(contactNumber))
+ {
+ r = E_SUCCESS;
+ endCall = *__pDialedCall;
+ endDialedCall = true;
+ }
+ }
+
+ if (r == E_SUCCESS)
+ {
+ unsigned int callHandle = -1;
+ if (endCall.GetCallHandle() != null)
+ {
+ callHandle = endCall.GetCallHandle()->ToLong();
+ TelCallEndType_t endType = TAPI_CALL_END;
+ int res = -1;
+ res = tel_end_call(__pTapiHandle, callHandle, endType, &HandleEndDialedCallResponse, this);
+
+ if (res == TAPI_CAUSE_SUCCESS)
+ {
+ if (endDialedCall == true)
+ {
+ String endCause(L"Call Rejected");
+ __pDialedCall->SetEndCallCause(endCause);
+ }
+ r = E_SUCCESS;
+ }
+ else
+ {
+ r = E_FAILURE;
+ }
+ }
+ else
+ {
+ r = E_FAILURE;
+ }
+ }
+ return r;
+}
+
+result
+TelephonyManager::AnswerCall(int callHandle, bool acceptCall)
+{
+ result r = E_FAILURE;
+ __pSoundManager->StopAlert();
+ TelCallAnswerType_t answerType = TAPI_CALL_ANSWER_ACCEPT;
+ int res = -1;
+ if (acceptCall == true)
+ {
+ answerType = TAPI_CALL_ANSWER_ACCEPT;
+ // redirect to dummy call back handler as the flow already handled in registered event callback
+ res = tel_answer_call(__pTapiHandle, callHandle, answerType, &HandleCallbackResponse, this);
+ }
+ else
+ {
+ answerType = TAPI_CALL_ANSWER_REJECT;
+ // redirect to reject call back handler as the flow has to be handled
+ res = tel_answer_call(__pTapiHandle, callHandle, answerType, &HandleRejectCallbackResponse, this);
+ }
+
+ if (res == TAPI_CAUSE_SUCCESS)
+ {
+ r = E_SUCCESS;
+ }
+ else
+ {
+ r = E_FAILURE;
+ }
+ return r;
+}
+
+result
+TelephonyManager::AcceptCall(CallAnswerOptions answerOptions,int callHandle)
+{
+ result r = E_FAILURE;
+ __pSoundManager->StopAlert();
+ __pSoundManager->SetSoundMode(SOUND_MODE_VOICE);
+
+ if (__pActiveCallList->GetCount())
+ {
+ if (__pActiveCallList->GetCount() == 1)
+ {
+ r = AcceptSecondCall(answerOptions,callHandle);
+ }
+ else
+ {
+ r = AcceptMultipleCall(answerOptions,callHandle);
+ if (__pIncomingCall != null)
+ {
+ delete __pIncomingCall;
+ __pIncomingCall = null;
+ }
+ }
+
+ return r;
+ }
+ else
+ {
+ return r;
+ }
+}
+
+result
+TelephonyManager::AcceptSecondCall(CallAnswerOptions answerOptions,int callHandle)
+{
+ result r = E_FAILURE;
+ IListT<CallInfo>* pCallList = __pActiveCallList->GetValuesN();
+ int res = -1;
+ CallInfo* pFirstCallInfo = new (std::nothrow) CallInfo();
+ pCallList->GetAt(0,*pFirstCallInfo);
+ delete pCallList;
+ pCallList = null;
+ switch (answerOptions)
+ {
+ case CALL_ANSWER_HOLD_ACCEPT:
+ {
+ //todo: try answering call with option as TAPI_CALL_ANSWER_HOLD_AND_ACCEPT
+ if (pFirstCallInfo->IsConferenceCall() == false)
+ {
+ r = HoldActiveCall(pFirstCallInfo,true);
+ }
+ else
+ {
+ r = HoldConferenceCall(true);
+ }
+
+ if (callHandle == (unsigned int)__pIncomingCall->GetCallHandle()->ToLong())
+ {
+ //handle call connected - save info
+ String contactNo;
+ contactNo.Append(__pIncomingCall->GetContactNumber());
+ result r = FetchContactInfoForNumber(contactNo);
+ if (!IsFailed(r))
+ {
+ __pIncomingCall->SetContactInfo(*__pCachedContact);
+ }
+ }
+ else
+ {
+ delete __pIncomingCall;
+ TelCallStatus_t callStatus;
+ tel_get_call_status(__pTapiHandle, callHandle, &callStatus);
+ __pIncomingCall = new (std::nothrow) CallInfo();
+ __pIncomingCall->SetCallHandle(callHandle);
+ __pIncomingCall->SetCalllogType(CALL_LOG_TYPE_VOICE_INCOMING);
+ String contactNumber(callStatus.pNumber);
+ __pIncomingCall->SetContactNumber(contactNumber);
+ result r = FetchContactInfoForNumber(contactNumber);
+ if (!IsFailed(r))
+ {
+ __pIncomingCall->SetContactInfo(*__pCachedContact);
+ }
+ //set emergency state
+ if(callStatus.CallType == TAPI_CALL_TYPE_E911)
+ {
+ __pIncomingCall->SetEmergency(true);
+ }
+ else
+ {
+ __pIncomingCall->SetEmergency(false);
+ }
+ //set start time, when call is connected
+ long long startTime = 0;
+ SystemTime::GetTicks(startTime);
+ __pIncomingCall->SetCallNotificationTime(startTime);
+ }
+ //set start time, when call is connected
+ long long startTime = 0;
+ SystemTime::GetTicks(startTime);
+ __pIncomingCall->SetCallConnectTime(startTime);
+ r = E_SUCCESS;
+ break;
+ }
+ case CALL_ANSWER_END_ACTIVE_ACCEPT:
+ {
+ //todo: try answering call with option as TAPI_CALL_ANSWER_REPLACE
+ __pActiveCallList->RemoveAll();
+ if (pFirstCallInfo->IsConferenceCall() == false)
+ {
+ r = HoldActiveCall(pFirstCallInfo,true);
+ }
+ else
+ {
+ res = tel_hold_call(__pTapiHandle, pFirstCallInfo->GetCallHandle()->ToLong(), &HandleCallbackResponse, this);
+ }
+ // call should be active now. end the active call now
+ if (pFirstCallInfo->IsConferenceCall() == false)
+ {
+ TelCallEndType_t endType = TAPI_CALL_END;
+ unsigned int callHandleToBeEnded = pFirstCallInfo->GetCallHandle()->ToLong();
+ tel_end_call(__pTapiHandle, callHandleToBeEnded, endType, &HandleCallbackResponse, this);
+ //Add call ended to call log database
+ __pCalllogMgr->AddCallogInfoToDatabase(pFirstCallInfo);
+ }
+ else
+ {
+ int confCallCount = pFirstCallInfo->GetCallerListCount();
+ IListT<CallInfo>* pCallList = pFirstCallInfo->GetCallerList();
+ for (int index = 0; index < confCallCount; index++)
+ {
+ CallInfo callInfo;
+ pCallList->GetAt(index, callInfo);
+ //Add call ended to call log database
+ __pCalllogMgr->AddCallogInfoToDatabase(&callInfo);
+ }
+ unsigned int callHandleToBeEnded = pFirstCallInfo->GetCallHandle()->ToLong();
+ TelCallEndType_t endType = TAPI_CALL_END_HOLD_ALL;
+ tel_end_call(__pTapiHandle, callHandleToBeEnded, endType, &HandleCallbackResponse, this);
+ }
+ r = E_SUCCESS;
+
+ if (callHandle == (unsigned int)__pIncomingCall->GetCallHandle()->ToLong())
+ {
+ //handle call connected - save info
+ String contactNo;
+ contactNo.Append(__pIncomingCall->GetContactNumber());
+ result r = FetchContactInfoForNumber(contactNo);
+ if (!IsFailed(r))
+ {
+ __pIncomingCall->SetContactInfo(*__pCachedContact);
+ }
+ }
+ else
+ {
+ delete __pIncomingCall;
+ TelCallStatus_t callStatus;
+ tel_get_call_status(__pTapiHandle, callHandle, &callStatus);
+ __pIncomingCall = new (std::nothrow) CallInfo();
+ __pIncomingCall->SetCallHandle(callHandle);
+ __pIncomingCall->SetCalllogType(CALL_LOG_TYPE_VOICE_INCOMING);
+ String contactNumber(callStatus.pNumber);
+ __pIncomingCall->SetContactNumber(contactNumber);
+ result r = FetchContactInfoForNumber(contactNumber);
+ if (!IsFailed(r))
+ {
+ __pIncomingCall->SetContactInfo(*__pCachedContact);
+ }
+ //set emergency state
+ if(callStatus.CallType == TAPI_CALL_TYPE_E911)
+ {
+ __pIncomingCall->SetEmergency(true);
+ }
+ else
+ {
+ __pIncomingCall->SetEmergency(false);
+ }
+ //set start time, when call is connected
+ long long startTime = 0;
+ SystemTime::GetTicks(startTime);
+ __pIncomingCall->SetCallNotificationTime(startTime);
+ }
+ //set start time, when call is connected
+ long long startTime = 0;
+ SystemTime::GetTicks(startTime);
+ __pIncomingCall->SetCallConnectTime(startTime);
+ break;
+ }
+ default:
+ break;
+ }
+ delete pFirstCallInfo;
+ return r;
+}
+
+result
+TelephonyManager::AcceptMultipleCall(CallAnswerOptions answerOptions,int callHandle)
+{
+ result r = E_FAILURE;
+ IListT<CallInfo>* pCallList = __pActiveCallList->GetValuesN();
+ IListT<long>* pKeyList = __pActiveCallList->GetKeysN();
+ long firstKey;
+ long secondKey;
+ long activeCallKey;
+ long heldCallKey;
+ CallInfo* pFirstCallInfo = new (std::nothrow) CallInfo();
+ pCallList->GetAt(0,*pFirstCallInfo);
+ pKeyList->GetAt(0,firstKey);
+ CallInfo* pSecondCallInfo = new (std::nothrow) CallInfo();
+ pCallList->GetAt(1,*pSecondCallInfo);
+ pKeyList->GetAt(1,secondKey);
+ delete pCallList;
+ delete pKeyList;
+ CallInfo heldCall;
+ CallInfo activeCall;
+ if (pFirstCallInfo->IsOnHold() == false)
+ {
+ activeCall = *pFirstCallInfo;
+ activeCallKey = firstKey;
+ heldCall = *pSecondCallInfo;
+ heldCallKey = secondKey;
+ }
+ else
+ {
+ activeCall = *pSecondCallInfo;
+ activeCallKey = secondKey;
+ heldCall = *pFirstCallInfo;
+ heldCallKey = firstKey;
+ }
+ delete pFirstCallInfo;
+ delete pSecondCallInfo;
+
+ switch (answerOptions)
+ {
+ case CALL_ANSWER_END_ACTIVE_ACCEPT:
+ {
+ //todo: try answering call with option as TAPI_CALL_ANSWER_REPLACE
+ __pActiveCallList->Remove(activeCallKey);
+ TelCallStatus_t callStatus;
+ int res = tel_get_call_status(__pTapiHandle, callHandle, &callStatus);
+ if (res == TAPI_CAUSE_SUCCESS)
+ {
+ CallInfo* pCallInfo = new (std::nothrow) CallInfo();
+ pCallInfo->SetCallHandle(callHandle);
+
+ String contactNumber(callStatus.pNumber);
+ pCallInfo->SetContactNumber(contactNumber);
+ result r = FetchContactInfoForNumber(contactNumber);
+ if (!IsFailed(r))
+ {
+ pCallInfo->SetContactInfo(*__pCachedContact);
+ }
+ //set emergency state
+ if(callStatus.CallType == TAPI_CALL_TYPE_E911)
+ {
+ pCallInfo->SetEmergency(true);
+ }
+ else
+ {
+ pCallInfo->SetEmergency(false);
+ }
+ //set start time, when call is connected
+ long long startTime = 0;
+ SystemTime::GetTicks(startTime);
+ pCallInfo->SetCallConnectTime(startTime);
+ pCallInfo->SetCallNotificationTime(startTime);
+
+ //transfer ownership to Active calls list
+ __pActiveCallList->Add(callHandle, *(pCallInfo));
+ pCallInfo = null;
+ }
+
+ TelCallEndType_t endType = TAPI_CALL_END;
+ if (activeCall.IsConferenceCall() == false)
+ {
+ unsigned int callHandleToBeEnded = activeCall.GetCallHandle()->ToLong();
+ tel_end_call(__pTapiHandle, callHandleToBeEnded, endType, &HandleCallbackResponse, this);
+ //Add call ended to call log database
+ __pCalllogMgr->AddCallogInfoToDatabase(&activeCall);
+ }
+ else
+ {
+ int confCallCount = activeCall.GetCallerListCount();
+ IListT<CallInfo>* pCallList = activeCall.GetCallerList();
+ for (int index = 0; index < confCallCount; index++)
+ {
+ CallInfo callInfo;
+ pCallList->GetAt(index, callInfo);
+ unsigned int calloBeEnded = callInfo.GetCallHandle()->ToLong();
+ //Add call ended to call log database
+ __pCalllogMgr->AddCallogInfoToDatabase(&callInfo);
+ tel_end_call(__pTapiHandle, calloBeEnded, endType, &HandleCallbackResponse, this);
+ }
+ }
+ if (callStatus.CallState == TAPI_CALL_STATE_WAITING || callStatus.CallState == TAPI_CALL_STATE_INCOMING)
+ {
+ res = tel_active_call(__pTapiHandle, callHandle, &HandleCallbackResponse, this);
+ if (res == TAPI_CAUSE_SUCCESS)
+ {
+ r = E_SUCCESS;
+ }
+ else
+ {
+ r = E_FAILURE;
+ }
+ }
+ break;
+ }
+ case CALL_ANSWER_END_HELD_ACCEPT:
+ {
+ unsigned int callHandleToBeEnded = heldCall.GetCallHandle()->ToLong();
+ __pActiveCallList->Remove(heldCallKey);
+ TelCallStatus_t callStatus;
+ int res = tel_get_call_status(__pTapiHandle, callHandle, &callStatus);
+ if (res == TAPI_CAUSE_SUCCESS)
+ {
+ CallInfo* pCallInfo = new (std::nothrow) CallInfo();
+ pCallInfo->SetCallHandle(callHandle);
+
+ String contactNumber(callStatus.pNumber);
+ pCallInfo->SetContactNumber(contactNumber);
+ result r = FetchContactInfoForNumber(contactNumber);
+ if (!IsFailed(r))
+ {
+ pCallInfo->SetContactInfo(*__pCachedContact);
+ }
+ //set emergency state
+ if(callStatus.CallType == TAPI_CALL_TYPE_E911)
+ {
+ pCallInfo->SetEmergency(true);
+ }
+ else
+ {
+ pCallInfo->SetEmergency(false);
+ }
+ //set start time, when call is connected
+ long long startTime = 0;
+ SystemTime::GetTicks(startTime);
+ pCallInfo->SetCallConnectTime(startTime);
+ pCallInfo->SetCallNotificationTime(__pIncomingCall->GetCallNotificationTime());
+
+ //transfer ownership to Active calls list
+ __pActiveCallList->Add(callHandle, *(pCallInfo));
+ pCallInfo = null;
+ }
+ TelCallEndType_t endType = TAPI_CALL_END;
+ if (heldCall.IsConferenceCall() == false)
+ {
+ tel_end_call(__pTapiHandle, callHandleToBeEnded, endType, &HandleCallbackResponse, this);
+ //Add call ended to call log database
+ __pCalllogMgr->AddCallogInfoToDatabase(&heldCall);
+ }
+ else
+ {
+ int confCallCount = heldCall.GetCallerListCount();
+ IListT<CallInfo>* pCallList = heldCall.GetCallerList();
+ for (int index = 0; index < confCallCount; index++)
+ {
+ CallInfo callInfo;
+ pCallList->GetAt(index, callInfo);
+ //Add call ended to call log database
+ __pCalllogMgr->AddCallogInfoToDatabase(&callInfo);
+ unsigned int calloBeEnded = callInfo.GetCallHandle()->ToLong();
+ tel_end_call(__pTapiHandle, calloBeEnded, endType, &HandleCallbackResponse, this);
+ }
+ }
+ //Set held flag on active call
+ CallInfo* pHeldCallInfo = new (std::nothrow) CallInfo();
+ //copy state into new callinfo object
+ *pHeldCallInfo = activeCall;
+ //set call to hold state
+ pHeldCallInfo->SetOnHold(true);
+ //replace old object with new
+ __pActiveCallList->SetValue(activeCallKey, *pHeldCallInfo);
+ if (callStatus.CallState == TAPI_CALL_STATE_WAITING || callStatus.CallState == TAPI_CALL_STATE_INCOMING)
+ {
+ res = tel_active_call(__pTapiHandle, callHandle, &HandleCallbackResponse, this);
+ if (res == TAPI_CAUSE_SUCCESS)
+ {
+ r = E_SUCCESS;
+ }
+ else
+ {
+ r = E_FAILURE;
+ }
+ }
+ break;
+ }
+ case CALL_ANSWER_END_ALL_ACCEPT:
+ {
+ unsigned int callHandleToBeEnded = activeCall.GetCallHandle()->ToLong();
+ __pActiveCallList->RemoveAll();
+ TelCallEndType_t endType = TAPI_CALL_END;
+ if (activeCall.IsConferenceCall() == false)
+ {
+ tel_end_call(__pTapiHandle, callHandleToBeEnded, endType, &HandleCallbackResponse, this);
+ //Add call ended to call log database
+ __pCalllogMgr->AddCallogInfoToDatabase(&activeCall);
+ }
+ else
+ {
+ int confCallCount = activeCall.GetCallerListCount();
+ IListT<CallInfo>* pCallList = activeCall.GetCallerList();
+ for (int index = 0; index < confCallCount; index++)
+ {
+ CallInfo callInfo;
+ pCallList->GetAt(index, callInfo);
+ //Add call ended to call log database
+ __pCalllogMgr->AddCallogInfoToDatabase(&callInfo);
+ unsigned int calloBeEnded = callInfo.GetCallHandle()->ToLong();
+ tel_end_call(__pTapiHandle, calloBeEnded, endType, &HandleCallbackResponse, this);
+ }
+ }
+ callHandleToBeEnded = heldCall.GetCallHandle()->ToLong();
+ if (heldCall.IsConferenceCall() == false)
+ {
+ tel_end_call(__pTapiHandle, callHandleToBeEnded, endType, &HandleCallbackResponse, this);
+ //Add call ended to call log database
+ __pCalllogMgr->AddCallogInfoToDatabase(&heldCall);
+ }
+ else
+ {
+ int confCallCount = heldCall.GetCallerListCount();
+ IListT<CallInfo>* pCallList = heldCall.GetCallerList();
+ for (int index = 0; index < confCallCount; index++)
+ {
+ CallInfo callInfo;
+ pCallList->GetAt(index, callInfo);
+ //Add call ended to call log database
+ __pCalllogMgr->AddCallogInfoToDatabase(&callInfo);
+ unsigned int calloBeEnded = callInfo.GetCallHandle()->ToLong();
+ tel_end_call(__pTapiHandle, calloBeEnded, endType, &HandleCallbackResponse, this);
+ }
+ }
+ TelCallStatus_t callStatus;
+ int res = tel_get_call_status(__pTapiHandle, callHandle, &callStatus);
+ if (callStatus.CallState == TAPI_CALL_STATE_WAITING || callStatus.CallState == TAPI_CALL_STATE_INCOMING)
+ {
+ res = tel_active_call(__pTapiHandle, callHandle, &HandleCallbackResponse, this);
+ if (res == TAPI_CAUSE_SUCCESS)
+ {
+ r = E_SUCCESS;
+ CallInfo* pCallInfo = null;
+ if (callHandle == (unsigned int)__pIncomingCall->GetCallHandle()->ToLong())
+ {
+ //handle call connected - save info
+ pCallInfo = new (std::nothrow) CallInfo();
+ *pCallInfo = *(__pIncomingCall);
+ String contactNo;
+ contactNo.Append(pCallInfo->GetContactNumber());
+ result r = FetchContactInfoForNumber(contactNo);
+ if (!IsFailed(r))
+ {
+ pCallInfo->SetContactInfo(*__pCachedContact);
+ }
+ }
+ else
+ {
+ TelCallStatus_t callStatus;
+ tel_get_call_status(__pTapiHandle, callHandle, &callStatus);
+ pCallInfo = new (std::nothrow) CallInfo();
+ pCallInfo->SetCallHandle(callHandle);
+ pCallInfo->SetCalllogType(CALL_LOG_TYPE_VOICE_INCOMING);
+ String contactNumber(callStatus.pNumber);
+ pCallInfo->SetContactNumber(contactNumber);
+ result r = FetchContactInfoForNumber(contactNumber);
+ if (!IsFailed(r))
+ {
+ pCallInfo->SetContactInfo(*__pCachedContact);
+ }
+ //set emergency state
+ if(callStatus.CallType == TAPI_CALL_TYPE_E911)
+ {
+ pCallInfo->SetEmergency(true);
+ }
+ else
+ {
+ pCallInfo->SetEmergency(false);
+ }
+ //set start time, when call is connected
+ long long startTime = 0;
+ SystemTime::GetTicks(startTime);
+ pCallInfo->SetCallNotificationTime(startTime);
+ }
+ //set start time, when call is connected
+ long long startTime = 0;
+ SystemTime::GetTicks(startTime);
+ pCallInfo->SetCallConnectTime(startTime);
+
+ //transfer ownership to Active calls list
+ __pActiveCallList->Add(callHandle, *(pCallInfo));
+ pCallInfo = null;
+ }
+ else
+ {
+ r = E_FAILURE;
+ }
+ }
+ break;
+ }
+ default:
+ break;
+ }
+ return r;
+}
+
+result
+TelephonyManager::HoldCall(Tizen::Base::Long callHandle, bool holdCall)
+{
+ result r = E_SUCCESS;
+ //Check if there are any existing active calls
+ if (__pActiveCallList->GetCount())
+ {
+ IListT<CallInfo>* pCallList = __pActiveCallList->GetValuesN();
+ int callCount = pCallList->GetCount();
+ for (int index = 0; index < callCount; index++)
+ {
+ CallInfo holdCallInfo;
+
+ r = pCallList->GetAt(index, holdCallInfo);
+ //check if an active call is found with matching contact no.
+ if ((r == E_SUCCESS) && (holdCallInfo.GetCallHandle()->Equals(callHandle)))
+ {
+ r = HoldActiveCall(&holdCallInfo, holdCall);
+ break;
+ }
+ }
+ delete pCallList;
+ pCallList = null;
+ }
+
+ return r;
+}
+
+result
+TelephonyManager::EndConferenceCall(void)
+{
+ result r = E_FAILURE;
+ //fetch ended callInfo
+ CallInfo endConfCall;
+ int res = -1;
+ bool isConferenceCallFound = false;
+
+ IListT<CallInfo>* pCallList = __pActiveCallList->GetValuesN();
+ int callCount = pCallList->GetCount();
+ for (int index = 0; index < callCount; index++)
+ {
+ pCallList->GetAt(index, endConfCall);
+ if (endConfCall.IsConferenceCall() == true)
+ {
+ isConferenceCallFound = true;
+ break;
+ }
+ }
+ if (isConferenceCallFound == false)
+ {
+ delete pCallList;
+ pCallList = null;
+ return r;
+ }
+ unsigned int callHandle = endConfCall.GetCallHandle()->ToLong();
+ if (callCount == 1)
+ {
+ if (endConfCall.IsOnHold() == false)
+ {
+ TelCallEndType_t endType = TAPI_CALL_END_ACTIVE_ALL;
+ res = tel_end_call(__pTapiHandle, callHandle, endType, &HandleEndDialedCallResponse, this);
+ }
+ else
+ {
+ TelCallEndType_t endType = TAPI_CALL_END_HOLD_ALL;
+ res = tel_end_call(__pTapiHandle, callHandle, endType, &HandleEndDialedCallResponse, this);
+ }
+ }
+ else
+ {
+ //End each call in conference as using the end_all/Hold_all
+ //automatically activates the held call
+ TelCallEndType_t endType = TAPI_CALL_END;
+ int confCallCount = endConfCall.GetCallerListCount();
+ IListT<CallInfo>* pConfCallList = endConfCall.GetCallerList();
+ for (int index = 0; index < confCallCount; index++)
+ {
+ CallInfo callInfo;
+ pConfCallList->GetAt(index, callInfo);
+ unsigned int calloBeEnded = callInfo.GetCallHandle()->ToLong();
+ res = tel_end_call(__pTapiHandle, calloBeEnded, endType, &HandleEndDialedCallResponse, this);
+ }
+ }
+
+ if (res == TAPI_CAUSE_SUCCESS)
+ {
+ r = E_SUCCESS;
+ CallInfo* pConfCallInfo = new (std::nothrow) CallInfo();
+ *pConfCallInfo = endConfCall;
+ __pActiveCallList->Remove(callHandle);
+ __pActiveCallList->Add(callHandle, *pConfCallInfo);
+ }
+ else
+ {
+ r = E_FAILURE;
+ }
+
+ delete pCallList;
+ pCallList = null;
+ return r;
+}
+
+result
+TelephonyManager::HoldConferenceCall(bool holdCall)
+{
+ result r = E_FAILURE;
+ int confCallIndex = -1;
+ CallInfo endConfCall;
+ bool isConferenceCallFound = false;
+
+ IListT<CallInfo>* pCallList = __pActiveCallList->GetValuesN();
+ int confCallCount = pCallList->GetCount();
+
+ for (int index = 0; index < confCallCount; index++)
+ {
+ pCallList->GetAt(index, endConfCall);
+ if (endConfCall.IsConferenceCall() == true)
+ {
+ isConferenceCallFound = true;
+ confCallIndex = index;
+ //Found the Conference call to be ended.
+ break;
+ }
+ }
+
+ if (isConferenceCallFound == false)
+ {
+ delete pCallList;
+ pCallList = null;
+ return r;
+ }
+
+ unsigned int callHandle = endConfCall.GetCallHandle()->ToLong();
+ int res = TAPI_API_INVALID_INPUT;
+ if (holdCall == true)
+ {
+ res = tel_hold_call(__pTapiHandle, callHandle, &HandleCallbackResponse, this);
+ }
+ else
+ {
+ res = tel_active_call(__pTapiHandle, callHandle, &HandleCallbackResponse, this);
+ }
+ if (res == TAPI_API_SUCCESS)
+ {
+ r = E_SUCCESS;
+ if (holdCall == true)
+ {
+ endConfCall.SetOnHold(true);
+ }
+ else
+ {
+ endConfCall.SetOnHold(false);
+ }
+ CallInfo* pConfCallInfo = new (std::nothrow) CallInfo();
+ *pConfCallInfo = endConfCall;
+ __pActiveCallList->Remove(callHandle);
+ __pActiveCallList->Add(callHandle, *pConfCallInfo);
+ }
+ else
+ {
+ r = E_FAILURE;
+ }
+
+ delete pCallList;
+ pCallList = null;
+ return r;
+}
+
+result
+TelephonyManager::JoinCall(void)
+{
+ result r = E_FAILURE;
+ int res = -1;
+ CallInfo activeCall;
+ CallInfo heldCall;
+ // Use enumerator to access elements in the map
+ IListT<CallInfo>* pCallList = __pActiveCallList->GetValuesN();
+ r = pCallList->GetAt(0, activeCall);
+
+ if (r == E_SUCCESS)
+ {
+ r = pCallList->GetAt(1, heldCall);
+ if (r == E_SUCCESS)
+ {
+ unsigned int activeCallHandle = activeCall.GetCallHandle()->ToLong();
+ unsigned int heldCallHandle = heldCall.GetCallHandle()->ToLong();
+
+ //Check if participants in conference call are under limit.
+ if ((heldCall.IsConferenceCall() == true) && (heldCall.GetCallerListCount() < IDI_MAX_CONF_CALL_PARTICIPANTS))
+ {
+ res = tel_join_call(__pTapiHandle, heldCallHandle, activeCallHandle, &HandleJoinCallbackResponse, this);
+ }
+ else if (activeCall.GetCallerListCount() < IDI_MAX_CONF_CALL_PARTICIPANTS)
+ {
+ res = tel_join_call(__pTapiHandle, activeCallHandle, heldCallHandle, &HandleJoinCallbackResponse, this);
+ }
+ }
+ }
+ delete pCallList;
+ pCallList = null;
+ if (res == TAPI_API_SUCCESS)
+ {
+ r = E_SUCCESS;
+ }
+ else
+ {
+ r = E_FAILURE;
+ }
+ return r;
+}
+
+result
+TelephonyManager::HoldActiveCall(CallInfo* pActiveCallInfo, bool holdCall)
+{
+ unsigned int callHandle = pActiveCallInfo->GetCallHandle()->ToLong();
+ int retStatus = -1;
+ if (holdCall == true)
+ {
+ retStatus = tel_hold_call(__pTapiHandle, callHandle, &HandleCallbackResponse, this);
+ }
+ else
+ {
+ retStatus = tel_active_call(__pTapiHandle, callHandle, &HandleCallbackResponse, this);
+ }
+
+ if (retStatus == TAPI_CAUSE_SUCCESS)
+ {
+ CallInfo* pHeldCallInfo = new (std::nothrow) CallInfo();
+ //copy state into new callinfo object
+ *pHeldCallInfo = *pActiveCallInfo;
+
+ //set call to hold state
+ pHeldCallInfo->SetOnHold(holdCall);
+
+ __pActiveCallList->Remove(callHandle);
+ //replace old object with new
+ __pActiveCallList->Add(callHandle, *pHeldCallInfo);
+ return E_SUCCESS;
+ }
+ else
+ {
+ return E_FAILURE;
+ }
+}
+
+result
+TelephonyManager::DialOutgoingCall(String& contactNumber, bool isEmergency)
+{
+ TelCallDial_t structDialCall;
+
+ //conversion "contactNumber" to char*
+ const wchar_t* pContact = contactNumber.GetPointer();
+ int len = contactNumber.GetLength()+1;
+ char* pNumber = new (std::nothrow) char[len];
+ wcstombs(pNumber, pContact, len);
+
+ //initialize request parameter
+ memset(&structDialCall, '\0', sizeof(TelCallDial_t));
+ memcpy(structDialCall.szNumber, pNumber, strlen(pNumber));
+
+ if(isEmergency == true)
+ {
+ structDialCall.CallType = TAPI_CALL_TYPE_E911;
+ }
+ else
+ {
+ structDialCall.CallType = TAPI_CALL_TYPE_VOICE;
+ }
+
+ int res = tel_dial_call(__pTapiHandle, &structDialCall, &HandleDialCallbackResponse, this);
+ if (__pSoundManager == null)
+ {
+ __pSoundManager = new (std::nothrow) SoundManager();
+ }
+ __pSoundManager->StartSession();
+ delete[] pNumber;
+ pNumber = null;
+
+ if (res == TAPI_CAUSE_SUCCESS)
+ {
+ if (__pDialedCall != null)
+ {
+ delete __pDialedCall;
+ __pDialedCall = null;
+ }
+ __pDialedCall = new (std::nothrow) CallInfo();
+ __pDialedCall->SetContactNumber(contactNumber);
+ __pDialedCall->SetEmergency(isEmergency);
+ result r = FetchContactInfoForNumber(contactNumber);
+ if (!IsFailed(r))
+ {
+ __pDialedCall->SetContactInfo(*__pCachedContact);
+ }
+ return E_SUCCESS;
+ }
+ else
+ {
+ return E_FAILURE;
+ }
+}
+
+result
+TelephonyManager::SwapCalls(void)
+{
+ result r = E_FAILURE;
+
+ //check if there are atleast 2 active calls
+ if (__pActiveCallList->GetCount() == IDI_MAX_ACTIVE_CALLS)
+ {
+ int retStatus = 0;
+
+ //fetch call handles
+ IListT<long>* pCallHandleList = __pActiveCallList->GetKeysN();
+ long callHandle1 = 0;
+ pCallHandleList->GetAt(0, callHandle1);
+ long callHandle2 = 0;
+ pCallHandleList->GetAt(1, callHandle2);
+
+ retStatus = tel_swap_call(__pTapiHandle, callHandle1, callHandle2, &HandleSwapCallbackResponse, this);
+
+ if (retStatus == TAPI_CAUSE_SUCCESS)
+ {
+ r = E_SUCCESS;
+ }
+ delete pCallHandleList;
+ pCallHandleList = null;
+ }
+
+ return r;
+}
+
+result
+TelephonyManager::SendCallDTMF(String& textToBeSent)
+{
+ result r = E_FAILURE;
+ //check if there is an active Call
+ if (__pActiveCallList->GetCount() > 0)
+ {
+ //conversion "textToBeSent" to char*
+ const wchar_t* pTextToBeSent = textToBeSent.GetPointer();
+ int len = textToBeSent.GetLength() + 1;
+ char* pNumber = new (std::nothrow) char[len];
+ wcstombs(pNumber, pTextToBeSent, len);
+ int retStatus = tel_call_dtmf(__pTapiHandle, pNumber, &HandleCallbackResponse, this);
+ delete []pNumber;
+ pNumber = null;
+ if (retStatus == TAPI_CAUSE_SUCCESS)
+ {
+ r = E_SUCCESS;
+ }
+ }
+ return r;
+}
+
+result
+TelephonyManager::EndFromConference(int callHandle)
+{
+ result r = E_FAILURE;
+ int confCallIndex = -1;
+ CallInfo endConfCall;
+ bool isConferenceCallFound = false;
+
+ IListT<CallInfo>* pCallList = __pActiveCallList->GetValuesN();
+ int callCount = pCallList->GetCount();
+ for (int index = 0; index < callCount; index++)
+ {
+ pCallList->GetAt(index, endConfCall);
+ if (endConfCall.IsConferenceCall() == true)
+ {
+ isConferenceCallFound = true;
+ confCallIndex = index;
+ //Found the Conference call to be ended.
+ break;
+ }
+ }
+
+ if (isConferenceCallFound == false)
+ {
+ delete pCallList;
+ pCallList = null;
+ return r;
+ }
+ delete pCallList;
+ pCallList = null;
+ //Identify the call to be ended and remove from list on API success
+ CallInfo callToBeEnded;
+ pCallList = endConfCall.GetCallerList();
+ callCount = pCallList->GetCount();
+ for (int index = 0; index < callCount; index++)
+ {
+ pCallList->GetAt(index, callToBeEnded);
+ if (callToBeEnded.GetCallHandle()->ToLong() == callHandle)
+ {
+ //Identify the call to be ended and remove from list on API success
+ TelCallEndType_t endType = TAPI_CALL_END;
+
+ int res = tel_end_call(__pTapiHandle, callHandle, endType, &HandleEndFromConferenceCallbackResponse, this);
+ if (res == TAPI_CAUSE_SUCCESS)
+ {
+ r = E_SUCCESS;
+ }
+ else
+ {
+ r = E_FAILURE;
+ }
+ break;
+ }
+ }
+
+ return r;
+}
+
+result
+TelephonyManager::SplitFromConference(int callHandle)
+{
+ result r = E_FAILURE;
+ int confCallIndex = -1;
+ CallInfo endConfCall;
+ bool isConferenceCallFound = false;
+
+ IListT<CallInfo>* pCallList = __pActiveCallList->GetValuesN();
+ int callCount = pCallList->GetCount();
+ for (int index = 0; index < callCount; index++)
+ {
+ pCallList->GetAt(index, endConfCall);
+ if (endConfCall.IsConferenceCall() == true)
+ {
+ isConferenceCallFound = true;
+ confCallIndex = index;
+ //Found the Conference call to be ended.
+ break;
+ }
+ }
+
+ if (isConferenceCallFound == false)
+ {
+ delete pCallList;
+ pCallList = null;
+ return r;
+ }
+ pCallList = null;
+ //Identify the call to be ended and remove from list on API success
+ CallInfo callToBeEnded;
+ pCallList = endConfCall.GetCallerList();
+ callCount = pCallList->GetCount();
+ for (int index = 0; index < callCount; index++)
+ {
+ pCallList->GetAt(index, callToBeEnded);
+ if (callToBeEnded.GetCallHandle()->ToLong() == callHandle)
+ {
+ int res = tel_split_call(__pTapiHandle, callHandle, &HandleSplitFromConferenceCallbackResponse, this);
+ if (res == TAPI_CAUSE_SUCCESS)
+ {
+ r = E_SUCCESS;
+ }
+ else
+ {
+ r = E_FAILURE;
+ }
+ break;
+ }
+ }
+
+ return r;
+}
+
+result
+TelephonyManager::SetMuteStatus(bool setMute)
+{
+ TelSoundMuteStatus_t muteStatus;
+ result r = E_FAILURE;
+ if (setMute == true)
+ {
+ muteStatus = TAPI_SOUND_MUTE_STATUS_ON;
+ }
+ else
+ {
+ muteStatus = TAPI_SOUND_MUTE_STATUS_OFF;
+ }
+ int res = tel_set_call_mute_status(__pTapiHandle, muteStatus, &HandleCallbackResponse, this);
+ if (res == TAPI_CAUSE_SUCCESS)
+ {
+ __isMuted = setMute;
+ r = E_SUCCESS;
+ }
+ else
+ {
+ r = E_FAILURE;
+ }
+ return r;
+}
+
+bool
+TelephonyManager::IsCallMuted(void)
+{
+ return __isMuted;
+}
+
+result
+TelephonyManager::SetSpeakerStatus(bool setSpeaker)
+{
+ result r = E_FAILURE;
+ TelCallSoundPathInfo_t callSoundPathInfo;
+ __pSoundManager->SetSpeakerStatus(setSpeaker);
+ if (setSpeaker == true)
+ {
+ callSoundPathInfo.path = TAPI_SOUND_PATH_SPK_PHONE;
+ }
+ else
+ {
+ callSoundPathInfo.path = TAPI_SOUND_PATH_HANDSET;
+ }
+ callSoundPathInfo.ex_volume = TelCallSoundPathInfo_t::TAPI_SOUND_EX_VOLUME_ON;
+
+ int res = tel_set_call_sound_path(__pTapiHandle, &callSoundPathInfo, &HandleCallbackResponse, this);
+
+ if (res == TAPI_CAUSE_SUCCESS)
+ {
+ __isSpeakerOn = setSpeaker;
+ r = E_SUCCESS;
+ }
+ else
+ {
+ r = E_FAILURE;
+ }
+ return r;
+}
+
+bool
+TelephonyManager::IsSpeakerOn(void)
+{
+ return __isSpeakerOn;
+}
+
+bool
+TelephonyManager::IsSplitAllowed(void)
+{
+ // Split functionality is allowed only if a one call is present.
+ // The call can be a single call or a conference call
+ if (__pActiveCallList->GetCount() == 1)
+ {
+ return true;
+ }
+ return false;
+}
+//Currently does nothing
+void
+TelephonyManager::HandleCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData)
+{
+}
+
+void
+TelephonyManager::HandleEndDialedCallResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData)
+{
+ TelCallEndCnf_t callEndInfo;
+ TelephonyManager* pTelManager = (TelephonyManager*) pUserData;
+ //Handle ending of dialed call
+ if (pTelManager->__pDialedCall != null)
+ {
+ unsigned int dialedCallHandle = (unsigned int)pTelManager->__pDialedCall->GetCallHandle()->ToLong();
+ memset(&callEndInfo, 0,sizeof(TelCallEndCnf_t));
+ memcpy(&callEndInfo, pData,sizeof(TelCallEndCnf_t));
+ if (callEndInfo.id == dialedCallHandle)
+ {
+ //Get current status of the call. idle callback received if call has been ended
+ TelCallStatus_t callStatus;
+ tel_get_call_status(pTelManager->__pTapiHandle,callEndInfo.id,&callStatus);
+ if (callStatus.CallState == TAPI_CALL_STATE_IDLE)
+ {
+ //check if the ended call was the last call
+ bool isLastCall = (pTelManager->__pActiveCallList->GetCount() == 0);
+ ArrayListT<CallInfo>* pCallList = null;
+ if (isLastCall)
+ {
+ pCallList = new (std::nothrow) ArrayListT<CallInfo>();
+ }
+ else
+ {
+ pCallList = static_cast<ArrayListT<CallInfo>*>(pTelManager->__pActiveCallList->GetValuesN());
+ }
+ //notify listener that call is connected.
+ pTelManager->__pEventListener->HandleCallDisconnected(isLastCall, *pCallList);
+ delete pCallList;
+ pCallList = null;
+ delete pTelManager->__pDialedCall;
+ pTelManager->__pDialedCall = null;
+ pTelManager->__pSoundManager->SetSoundMode(SOUND_MODE_VOICE);
+ }
+ }
+ }
+}
+
+void
+TelephonyManager::HandleDialCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData)
+{
+ TelephonyManager* pTelManager = (TelephonyManager*) pUserData;
+ if (callBackResult != TAPI_CAUSE_SUCCESS)
+ {
+ if (pTelManager->__pDialedCall != null)
+ {
+ delete pTelManager->__pDialedCall;
+ pTelManager->__pDialedCall = null;
+ }
+ pTelManager->__pEventListener->HandleTelephonyError(ERROR_DIAL_FAILED);
+ }
+}
+
+void
+TelephonyManager::HandleRejectCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData)
+{
+ // This callback comes only if user has either rejected an incoming call from IncomingCallForm.
+ // or the incoming call was automatically rejected.
+ TelephonyManager* pTelManager = (TelephonyManager*) pUserData;
+ if (pData != null && callBackResult == TAPI_API_SUCCESS)
+ {
+ unsigned int tempHandle = 0;
+ TelCallStatus_t callStatus;
+ memcpy(&tempHandle, pData, sizeof(TS_UINT));
+ int res = tel_get_call_status(pTelManager->__pTapiHandle, tempHandle, &callStatus);
+ if (res == TAPI_CAUSE_SUCCESS)
+ {
+ String contactNumber(callStatus.pNumber);
+ //Fetch contact details from address book.
+ Contact* pContactDetails = pTelManager->GetContactN(contactNumber);
+
+ //Check if number was automatically rejected using settings, then don't give any notification to user.
+ bool showIncomingCallRejectedNotification = true;
+ if (((pTelManager->__pSettingsManager->GetUnknownRejectStatus() == true) && (pContactDetails == null))
+ || (pTelManager->__pSettingsManager->IsCallToBeRejected(contactNumber) == true))
+ {
+ showIncomingCallRejectedNotification = false;
+ }
+
+ if (showIncomingCallRejectedNotification == true)
+ {
+ long long phNumber = 0;
+ LongLong::Parse(contactNumber, phNumber);
+ //handle call connected - save info
+ if (pTelManager->__pIncomingCall != null)
+ {
+ CallInfo* pIncomingCall = new (std::nothrow) CallInfo();
+ *pIncomingCall = *(pTelManager->__pIncomingCall);
+ pIncomingCall->SetCalllogType(CALL_LOG_TYPE_VOICE_REJECTED);
+ result r = pTelManager->FetchContactInfoForNumber(contactNumber);
+ if (!IsFailed(r))
+ {
+ pIncomingCall->SetContactInfo(*(pTelManager->__pCachedContact));
+ }
+ //check if the ended call was the last call
+ bool isLastCall = (pTelManager->__pActiveCallList->GetCount() == 0);
+ ArrayListT<CallInfo>* pCallList = null;
+ if (isLastCall)
+ {
+ pCallList = new (std::nothrow) ArrayListT<CallInfo>();
+ pCallList->Construct(1);
+
+ //save end call details
+ String endCause(L"Call Rejected");
+ pIncomingCall->SetEndCallCause(endCause);
+
+ //save to list
+ pCallList->Add(*pIncomingCall);
+ }
+ else
+ {
+ pCallList = static_cast<ArrayListT<CallInfo>*>(pTelManager->__pActiveCallList->GetValuesN());
+ }
+
+ //Add to call log
+ pTelManager->__pCalllogMgr->AddCallogInfoToDatabase(pIncomingCall);
+
+ delete pTelManager->__pIncomingCall;
+ pTelManager->__pIncomingCall = null;
+
+ if (pTelManager->__isIncomingCallPresent == true)
+ {
+ if(pTelManager->__pSoundManager != null)
+ {
+ pTelManager->__pSoundManager->StopAlert();
+ //Do not call stop session if there is already a call going on
+ if(pTelManager->__pActiveCallList->GetCount() == 0)
+ {
+ pTelManager->__pSoundManager->StopSession();
+ }
+ }
+ pTelManager->__pEventListener->HandleCallDisconnected(isLastCall, *pCallList);
+ delete pCallList;
+ pCallList = null;
+ }
+ pTelManager->__isIncomingCallPresent = false;
+ delete pIncomingCall;
+ pIncomingCall = null;
+ }
+ }
+ }
+ }
+ else
+ {
+ pTelManager->__pEventListener->HandleTelephonyError(ERROR_REJECT_FAILED);
+ }
+}
+
+void
+TelephonyManager::HandleJoinCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData)
+{
+ TelephonyManager* pTelManager = (TelephonyManager*) pUserData;
+ if (callBackResult == TAPI_API_SUCCESS && pData != null)
+ {
+ unsigned int tempHandle = 0;
+ TelCallInfoJoinedNoti_t joinedInfoNotification;
+ CallInfo confCallInfo;
+
+ memcpy(&tempHandle, pData, sizeof(TS_UINT));
+ joinedInfoNotification.id = tempHandle;
+ CallInfo activeCall;
+ CallInfo heldCall;
+ // Use enumerator to access elements in the map
+ IListT<CallInfo>* pCallList = pTelManager->__pActiveCallList->GetValuesN();
+ result r = pCallList->GetAt(0, activeCall);
+
+ if (r == E_SUCCESS)
+ {
+ r = pCallList->GetAt(1, heldCall);
+ if (r == E_SUCCESS)
+ {
+ CallInfo* pConfCallInfo = new (std::nothrow) CallInfo();
+ unsigned int activeCallHandle = activeCall.GetCallHandle()->ToLong();
+ unsigned int heldCallHandle = heldCall.GetCallHandle()->ToLong();
+ if (activeCall.IsConferenceCall() == true)
+ {
+ r = E_SUCCESS;
+ //When joined both become active
+ activeCall.SetOnHold(false);
+ heldCall.SetOnHold(false);
+ *pConfCallInfo = activeCall;
+ pConfCallInfo->AddCallToCallerList(heldCall);
+ pConfCallInfo->SetCallHandle(activeCallHandle);
+ //Set call start time
+ if (pConfCallInfo->GetCallConnectTime() > heldCall.GetCallConnectTime())
+ {
+ pConfCallInfo->SetCallConnectTime(heldCall.GetCallConnectTime());
+ pConfCallInfo->SetCallNotificationTime(heldCall.GetCallNotificationTime());
+ }
+ }
+ else if (heldCall.IsConferenceCall() == true)
+ {
+ r = E_SUCCESS;
+ heldCall.SetOnHold(false);
+ activeCall.SetOnHold(false);
+ *pConfCallInfo = heldCall;
+ pConfCallInfo->AddCallToCallerList(activeCall);
+ pConfCallInfo->SetCallHandle(heldCallHandle);
+ //Set call start time
+ if (pConfCallInfo->GetCallConnectTime() > activeCall.GetCallConnectTime())
+ {
+ pConfCallInfo->SetCallConnectTime(activeCall.GetCallConnectTime());
+ pConfCallInfo->SetCallNotificationTime(activeCall.GetCallNotificationTime());
+ }
+ }
+ else
+ {
+ r = E_SUCCESS;
+ pConfCallInfo->SetConference(true);
+ heldCall.SetOnHold(false);
+ activeCall.SetOnHold(false);
+ pConfCallInfo->AddCallToCallerList(activeCall);
+ pConfCallInfo->AddCallToCallerList(heldCall);
+ pConfCallInfo->SetCallHandle(activeCallHandle);
+ //Set call start time
+ if (activeCall.GetCallConnectTime() > heldCall.GetCallConnectTime())
+ {
+ pConfCallInfo->SetCallConnectTime(heldCall.GetCallConnectTime());
+ pConfCallInfo->SetCallNotificationTime(heldCall.GetCallNotificationTime());
+ }
+ else
+ {
+ pConfCallInfo->SetCallConnectTime(activeCall.GetCallConnectTime());
+ pConfCallInfo->SetCallNotificationTime(activeCall.GetCallNotificationTime());
+ }
+ }
+ pConfCallInfo->SetCallHandle(joinedInfoNotification.id);
+ pTelManager->__pActiveCallList->RemoveAll();
+ //only one call in the list
+ pTelManager->__pActiveCallList->Add(joinedInfoNotification.id, *pConfCallInfo);
+ //notify listener that call is connected.
+ pTelManager->__pEventListener->HandleConferenceCall(*pConfCallInfo);
+ delete pCallList;
+ pCallList = null;
+ }
+ }
+ }
+ else
+ {
+ pTelManager->__pEventListener->HandleTelephonyError(ERROR_JOIN_FAILED);
+ }
+}
+
+void
+TelephonyManager::HandleSwapCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData)
+{
+ TelephonyManager* pTelManager = (TelephonyManager*) pUserData;
+ if (callBackResult == TAPI_CAUSE_SUCCESS)
+ {
+ IListT<CallInfo>* pCallList = pTelManager->__pActiveCallList->GetValuesN();
+ IListT<long>* pKeyList = pTelManager->__pActiveCallList->GetKeysN();
+ int callCount = pTelManager->__pActiveCallList->GetCount();
+ for (int index = 0; index < callCount; index++)
+ {
+ CallInfo* pTempCallInfo = new (std::nothrow) CallInfo();
+ pCallList->GetAt(index, *pTempCallInfo);
+ (pTempCallInfo->IsOnHold() == false) ? pTempCallInfo->SetOnHold(true) : pTempCallInfo->SetOnHold(false);
+ long callHandle;
+ pKeyList->GetAt(index, callHandle);
+ pTelManager->__pActiveCallList->SetValue(callHandle, *pTempCallInfo);
+ }
+ delete pCallList;
+ pCallList = null;
+ delete pKeyList;
+ pKeyList = null;
+ pCallList = pTelManager->__pActiveCallList->GetValuesN();
+ pTelManager->__pEventListener->HandleCallSwapOccured(*pCallList);
+ }
+ else
+ {
+ pTelManager->__pEventListener->HandleTelephonyError(ERROR_SWAP_FAILED);
+ }
+}
+
+void
+TelephonyManager::HandleEndFromConferenceCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData)
+{
+ TelephonyManager* pTelManager = (TelephonyManager*) pUserData;
+ if (callBackResult == TAPI_CAUSE_SUCCESS && pData != null)
+ {
+ TelCallEndCnf_t callEndNotification;
+ memcpy(&callEndNotification, pData, sizeof(TelCallEndCnf_t));
+ int confCallIndex = -1;
+ CallInfo endConfCall;
+ bool isConferenceCallFound = false;
+
+ IListT<CallInfo>* pCallList = pTelManager->__pActiveCallList->GetValuesN();
+ int callCount = pCallList->GetCount();
+ for (int index = 0; index < callCount; index++)
+ {
+ pCallList->GetAt(index, endConfCall);
+ if (endConfCall.IsConferenceCall() == true)
+ {
+ isConferenceCallFound = true;
+ confCallIndex = index;
+ //Found the Conference call to be ended.
+ break;
+ }
+ }
+
+ if (isConferenceCallFound == false)
+ {
+ delete pCallList;
+ pCallList = null;
+ return;
+ }
+ delete pCallList;
+ pCallList = null;
+ //Identify the call to be ended and remove from list on API success
+ CallInfo callToBeEnded;
+ pCallList = endConfCall.GetCallerList();
+ callCount = pCallList->GetCount();
+ for (int index = 0; index < callCount; index++)
+ {
+ pCallList->GetAt(index, callToBeEnded);
+ if ((unsigned int)callToBeEnded.GetCallHandle()->ToLong() == callEndNotification.id)
+ {
+ //Identified the call to be ended and remove from conference list
+ endConfCall.RemoveCallFromCallerList(index);
+ pTelManager->__pCalllogMgr->AddCallogInfoToDatabase(&callToBeEnded);
+ break;
+ }
+ }
+ unsigned int confCallHandle = (unsigned int)endConfCall.GetCallHandle()->ToLong();
+ //Chk if last participant removed. if so switch to single active view
+ if (endConfCall.GetCallerListCount() == 1)
+ {
+ CallInfo callFromList;
+ pCallList = endConfCall.GetCallerList();
+ pCallList->GetAt(0, callFromList);
+ CallInfo* pActiveCall = new (std::nothrow) CallInfo();
+ *pActiveCall = callFromList;
+ pActiveCall->SetConference(false);
+ pTelManager->__pActiveCallList->Remove(confCallHandle);
+ pTelManager->__pActiveCallList->Add(pActiveCall->GetCallHandle()->ToLong(), *pActiveCall);
+ pActiveCall = null;
+ //using the callConnected to switch to single active screen
+ pCallList = pTelManager->__pActiveCallList->GetValuesN();
+ pTelManager->__pEventListener->HandleCallConnected(*pCallList);
+ pCallList = null;
+ }
+ else
+ {
+ CallInfo callFromList;
+ pCallList = endConfCall.GetCallerList();
+ pCallList->GetAt(0, callFromList);
+
+ CallInfo* pConfCallInfo = new (std::nothrow) CallInfo();
+ *pConfCallInfo = endConfCall;
+ if (confCallHandle == callEndNotification.id)
+ {
+ //Call Handle is same as conf call handle.
+ //Change conf call handle
+ pTelManager->__pActiveCallList->Remove(confCallHandle);
+ int tmpCallHandle = callFromList.GetCallHandle()->ToLong();
+ pConfCallInfo->SetCallHandle(tmpCallHandle);
+ pTelManager->__pActiveCallList->Add(tmpCallHandle, *pConfCallInfo);
+ }
+ else
+ {
+ pTelManager->__pActiveCallList->SetValue(confCallHandle, *pConfCallInfo );
+ }
+ pTelManager->__pEventListener->HandleConferenceChange();
+ }
+ }
+ else
+ {
+ pTelManager->__pEventListener->HandleTelephonyError(ERROR_END_FROM_CONFERENCE_FAILED);
+ }
+}
+
+void
+TelephonyManager::HandleSplitFromConferenceCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData)
+{
+ TelephonyManager* pTelManager = (TelephonyManager*) pUserData;
+ if (callBackResult == TAPI_CAUSE_SUCCESS && pData != null)
+ {
+ TelCallSplitCnf_t callSplitNotification;
+ memcpy(&callSplitNotification, pData, sizeof(TelCallSplitCnf_t));
+ int confCallIndex = -1;
+ CallInfo endConfCall;
+ bool isConferenceCallFound = false;
+
+ IListT<CallInfo>* pCallList = pTelManager->__pActiveCallList->GetValuesN();
+ int callCount = pCallList->GetCount();
+ for (int index = 0; index < callCount; index++)
+ {
+ pCallList->GetAt(index, endConfCall);
+ if (endConfCall.IsConferenceCall() == true)
+ {
+ isConferenceCallFound = true;
+ confCallIndex = index;
+ //Found the Conference call to be ended.
+ break;
+ }
+ }
+
+ if (isConferenceCallFound == false)
+ {
+ delete pCallList;
+ pCallList = null;
+ return;
+ }
+ delete pCallList;
+ pCallList = null;
+ //Identify the call to be ended and remove from list on API success
+ CallInfo callToBeEnded;
+ pCallList = endConfCall.GetCallerList();
+ callCount = pCallList->GetCount();
+ for (int index = 0; index < callCount; index++)
+ {
+ pCallList->GetAt(index, callToBeEnded);
+ if ((unsigned int)callToBeEnded.GetCallHandle()->ToLong() == callSplitNotification.id)
+ {
+ //Identified the call to be ended and remove from conference list
+ //Add this to the active call list
+ endConfCall.RemoveCallFromCallerList(index);
+ break;
+ }
+ }
+ unsigned int confCallHandle = (unsigned int)endConfCall.GetCallHandle()->ToLong();
+ //Set the hold flags correctly and make the changes to the active call list
+ if (endConfCall.GetCallerListCount() == 1)
+ {
+ //Set hold for the other single call
+ // and add to the list
+ CallInfo callFromList;
+ pCallList = endConfCall.GetCallerList();
+ pCallList->GetAt(0, callFromList);
+ CallInfo* pHeldCall = new (std::nothrow) CallInfo();
+ *pHeldCall = callFromList;
+ pHeldCall->SetConference(false);
+ pHeldCall->SetOnHold(true);
+ pTelManager->__pActiveCallList->Remove(confCallHandle);
+ pTelManager->__pActiveCallList->Add(pHeldCall->GetCallHandle()->ToLong(), *pHeldCall);
+ pHeldCall = null;
+ }
+ else
+ {
+ //Set hold flag for conference call
+ endConfCall.SetOnHold(true);
+ CallInfo callFromList;
+ pCallList = endConfCall.GetCallerList();
+ pCallList->GetAt(0, callFromList);
+
+ CallInfo* pConfCallInfo = new (std::nothrow) CallInfo();
+ *pConfCallInfo = endConfCall;
+ if (confCallHandle == callSplitNotification.id)
+ {
+ //Call Handle is same as conf call handle.
+ //Change conf call handle
+ pTelManager->__pActiveCallList->Remove(confCallHandle);
+ int tmpCallHandle = callFromList.GetCallHandle()->ToLong();
+ pConfCallInfo->SetCallHandle(tmpCallHandle);
+ pTelManager->__pActiveCallList->Add(callFromList.GetCallHandle()->ToLong(), *pConfCallInfo);
+ }
+ else
+ {
+ pTelManager->__pActiveCallList->Remove(confCallHandle);
+ pTelManager->__pActiveCallList->Add(confCallHandle, *pConfCallInfo);
+ }
+ }
+ //Add the new active call to active call list
+ CallInfo* pActiveCall = new (std::nothrow) CallInfo();
+ *pActiveCall = callToBeEnded;
+ pActiveCall->SetConference(false);
+ pActiveCall->SetOnHold(false);
+ pTelManager->__pActiveCallList->Remove(pActiveCall->GetCallHandle()->ToLong());
+ pTelManager->__pActiveCallList->Add(pActiveCall->GetCallHandle()->ToLong(), *pActiveCall);
+ pActiveCall = null;
+ //using the callConnected to switch to Multiple active screen
+ pCallList = pTelManager->__pActiveCallList->GetValuesN();
+ pTelManager->__pEventListener->HandleCallConnected(*pCallList);
+ pCallList = null;
+ }
+ else
+ {
+ pTelManager->__pEventListener->HandleTelephonyError(ERROR_SPLIT_FROM_CONFERENCE_FAILED);
+ }
+}
+
+void
+TelephonyManager::HandleIdleCallBack(void* pData, TelephonyManager* pTelManager)
+{
+ TelCallStatusIdleNoti_t idleNotification;
+ memcpy(&idleNotification, pData, sizeof(TelCallStatusIdleNoti_t));
+ //handle end call event, show next screen
+ unsigned int endCallHandle = idleNotification.id;
+
+ //fetch ended call details
+ CallInfo endCallInfo;
+ result r = pTelManager->__pActiveCallList->GetValue(endCallHandle, endCallInfo);
+
+ if (r == E_SUCCESS)
+ {
+ // if (endCallInfo.IsConferenceCall() == true && endCallInfo.GetCallerListCount() > 0 )
+ // {
+ // pTelManager->__pSoundManager->SetSoundMode(SOUND_MODE_VOICE);
+ // return;
+ // }
+
+ //remove the call handle from active call list
+ pTelManager->__pActiveCallList->Remove(endCallHandle);
+
+ //check if the ended call was the last call
+ bool isLastCall = (pTelManager->__pActiveCallList->GetCount() == 0);
+
+ ArrayListT<CallInfo>* pCallList = null;
+ if (isLastCall)
+ {
+ pCallList = new (std::nothrow) ArrayListT<CallInfo>();
+ pCallList->Construct(1);
+
+ //save end call details
+ //TODO: map error cause "idleNotification.cause" to error string.
+ String endCause(L"Call Ended Successfully");
+ endCallInfo.SetEndCallCause(endCause);
+
+ // long callDuration = abs(endInfo.CallEndTime - endInfo.CallStartTime);
+ // endCallInfo.SetEndCallDuration(callDuration);
+ //save to list
+ pCallList->Add(endCallInfo);
+ }
+ else
+ {
+ pCallList = static_cast<ArrayListT<CallInfo>*>(pTelManager->__pActiveCallList->GetValuesN());
+ }
+
+ if (pTelManager->__isIncomingCallPresent == true)
+ {
+ pTelManager->__pSoundManager->StopAlert();
+ pTelManager->__isIncomingCallPresent = false;
+ }
+ // call should be active now. end the active call now
+ if (endCallInfo.IsConferenceCall() == false)
+ {
+ //Add call ended to call log database
+ pTelManager->__pCalllogMgr->AddCallogInfoToDatabase(&endCallInfo);
+ if(pTelManager->__pIncomingCall != null && ((unsigned int)pTelManager->__pIncomingCall->GetCallHandle()->ToLong() == endCallHandle))
+ {
+ delete pTelManager->__pIncomingCall;
+ pTelManager->__pIncomingCall = null;
+ }
+ }
+ else
+ {
+ int confCallCount = endCallInfo.GetCallerListCount();
+ IListT<CallInfo>* pCallList = endCallInfo.GetCallerList();
+ for (int index = 0; index < confCallCount; index++)
+ {
+ CallInfo callInfo;
+ pCallList->GetAt(index, callInfo);
+ //Add call ended to call log database
+ pTelManager->__pCalllogMgr->AddCallogInfoToDatabase(&callInfo);
+ }
+ //Once conference calls are added delete the incoming call info
+ if(pTelManager->__pIncomingCall != null )
+ {
+ delete pTelManager->__pIncomingCall;
+ pTelManager->__pIncomingCall = null;
+ }
+ }
+ if(pTelManager->__pActiveCallList->GetCount() == 0)
+ {
+ pTelManager->__pSoundManager->StopSession();
+ }
+ //notify listener that call is connected.
+ pTelManager->__pEventListener->HandleCallDisconnected(isLastCall, *pCallList);
+ delete pCallList;
+ pCallList = null;
+ }
+ else
+ {
+ //check if the ended call was the dialed call
+ bool isLastCall = (pTelManager->__pActiveCallList->GetCount() == 0);
+ ArrayListT<CallInfo>* pCallList = null;
+ if (((pTelManager->__pDialedCall != null) && (((unsigned int)pTelManager->__pDialedCall->GetCallHandle()->ToLong()) == idleNotification.id)))
+ {
+ //Call Ended is the dialed call
+ endCallInfo = *(pTelManager->__pDialedCall);
+ delete pTelManager->__pDialedCall;
+ pTelManager->__pDialedCall = null;
+ pTelManager->__pCalllogMgr->AddCallogInfoToDatabase(&endCallInfo);
+ }
+ else
+ {
+ //Could be incoming call. So notify if incoming call is present
+ if (isLastCall)
+ {
+ pCallList = new (std::nothrow) ArrayListT<CallInfo>();
+ }
+ else
+ {
+ pCallList = static_cast<ArrayListT<CallInfo>*>(pTelManager->__pActiveCallList->GetValuesN());
+ }
+ if(pTelManager->__pIncomingCall != null && ((unsigned int)pTelManager->__pIncomingCall->GetCallHandle()->ToLong() == endCallHandle))
+ {
+ if((pTelManager->__pSettingsManager->IsCallToBeRejected(pTelManager->__pIncomingCall->GetContactNumber()) == false)
+ && (pTelManager->__pSettingsManager->GetUnknownRejectStatus() == false))
+ {
+ //Missed Call
+ pTelManager->__pIncomingCall->SetCalllogType(CALL_LOG_TYPE_VOICE_MISSED);
+ pTelManager->__pCalllogMgr->AddCallogInfoToDatabase(pTelManager->__pIncomingCall);
+ }
+
+ delete pTelManager->__pIncomingCall;
+ pTelManager->__pIncomingCall = null;
+ }
+ if (pTelManager->__isIncomingCallPresent == true)
+ {
+ pTelManager->__pSoundManager->StopAlert();
+ pTelManager->__isIncomingCallPresent = false;
+ if(pTelManager->__pActiveCallList->GetCount() == 0)
+ {
+ pTelManager->__pSoundManager->StopSession();
+ }
+ pTelManager->__pEventListener->HandleCallDisconnected(isLastCall, *pCallList);
+ }
+ delete pCallList;
+ pCallList = null;
+ pTelManager->__pSoundManager->SetSoundMode(SOUND_MODE_VOICE);
+ return;
+ }
+
+ if (isLastCall)
+ {
+ pCallList = new (std::nothrow) ArrayListT<CallInfo>();
+ pCallList->Construct(1);
+
+ //save end call details
+ //TODO: map error cause "idleNotification.cause" to error string.
+ String endCause(L"Call Ended Successfully");
+ endCallInfo.SetEndCallCause(endCause);
+
+ // long callDuration = abs(endInfo.CallEndTime - endInfo.CallStartTime);
+ // endCallInfo.SetEndCallDuration(callDuration);
+ //save to list
+ pCallList->Add(endCallInfo);
+ }
+ else
+ {
+ pCallList = static_cast<ArrayListT<CallInfo>*>(pTelManager->__pActiveCallList->GetValuesN());
+ }
+ if(pTelManager->__pActiveCallList->GetCount() == 0)
+ {
+ //notify listener that call is disconnected.
+ pTelManager->__pSoundManager->StopSession();
+ }
+ pTelManager->__pEventListener->HandleCallDisconnected(isLastCall, *pCallList);
+ delete pCallList;
+ pCallList = null;
+ }
+ pTelManager->__pSoundManager->SetSoundMode(SOUND_MODE_VOICE);
+}
+
+void
+TelephonyManager::HandleDialingCallBack(void* pData, TelephonyManager* pTelManager)
+{
+ unsigned int tempHandle = 0;
+ TelCallStatusDialingNoti_t dialingNotification;
+ memcpy(&tempHandle, pData, sizeof(TS_UINT));
+ dialingNotification.id = tempHandle;
+ if (pTelManager->__pDialedCall)
+ {
+ pTelManager->__pDialedCall->SetCallHandle(dialingNotification.id);
+ //set start time, when call is connected
+ long long startTime = 0;
+ SystemTime::GetTicks(startTime);
+ pTelManager->__pDialedCall->SetCallNotificationTime(startTime);
+ pTelManager->__pDialedCall->SetCalllogType(CALL_LOG_TYPE_VOICE_OUTGOING);
+ }
+ else
+ {
+ delete pTelManager->__pDialedCall;
+ pTelManager->__pDialedCall = new (std::nothrow) CallInfo();
+ pTelManager->__pDialedCall->SetCallHandle(dialingNotification.id);
+ TelCallStatus_t callStatus;
+ int res = tel_get_call_status(pTelManager->__pTapiHandle, dialingNotification.id, &callStatus);
+ if (res == TAPI_CAUSE_SUCCESS)
+ {
+ String contactNumber(callStatus.pNumber);
+ pTelManager->__pDialedCall->SetContactNumber(contactNumber);
+ result r = pTelManager->FetchContactInfoForNumber(contactNumber);
+ if (!IsFailed(r))
+ {
+ pTelManager->__pDialedCall->SetContactInfo(*(pTelManager->__pCachedContact));
+ }
+ //set start time, when call is connected
+ long long startTime = 0;
+ SystemTime::GetTicks(startTime);
+ pTelManager->__pDialedCall->SetCallNotificationTime(startTime);
+ pTelManager->__pDialedCall->SetCalllogType(CALL_LOG_TYPE_VOICE_OUTGOING);
+ //set emergency state
+ if(callStatus.CallType == TAPI_CALL_TYPE_E911)
+ {
+ pTelManager->__pDialedCall->SetEmergency(true);
+ }
+ else
+ {
+ pTelManager->__pDialedCall->SetEmergency(false);
+ }
+ }
+ }
+}
+
+void
+TelephonyManager::HandleActiveCallBack(void* pData, TelephonyManager* pTelManager)
+{
+ unsigned int tempHandle = 0;
+ TelCallStatusActiveNoti_t activeNotification;
+ memcpy(&tempHandle, pData, sizeof(TS_UINT));
+ activeNotification.id = tempHandle;
+ IListT<CallInfo>* pCallList = pTelManager->__pActiveCallList->GetValuesN();
+
+ //Check if the activated call is already present in already activated calls.
+ bool toHandleEvent = true;
+ for (int callIndex = 0; (callIndex < pCallList->GetCount() && toHandleEvent == true); callIndex++ )
+ {
+ CallInfo tempCallInfo;
+ pCallList->GetAt(callIndex, tempCallInfo);
+ unsigned int tempCallHandle = tempCallInfo.GetCallHandle()->ToLong();
+ //Check if active callback came for "HandleJoinCallbackResponse"
+ //or for "UnHold Conf Call or normal call".
+ if(tempCallInfo.IsConferenceCall() == true)
+ {
+ if (tempCallHandle == activeNotification.id)
+ {
+ toHandleEvent = false;
+ }
+ else
+ {
+ //check individual participants of conf call
+ IListT<CallInfo>* pConfCallList = tempCallInfo.GetCallerList();
+ int confCallCount = pConfCallList->GetCount();
+ for (int callIndex = 0; (callIndex < confCallCount && toHandleEvent == true); callIndex++)
+ {
+ CallInfo confCallerInfo;
+ pConfCallList->GetAt(callIndex, confCallerInfo);
+ unsigned int confCallerHandle = confCallerInfo.GetCallHandle()->ToLong();
+ if (confCallerHandle == activeNotification.id)
+ {
+ toHandleEvent = false;
+ }
+ }
+ }
+ }
+ else if(tempCallHandle == activeNotification.id)
+ {
+ //If normal call is UnHold
+ toHandleEvent = false;
+ }
+ }
+ //If duplicate call handle, then to ignore the duplicate event.
+ if(toHandleEvent == false)
+ {
+ delete pCallList;
+ pCallList = null;
+ return;
+ }
+
+ IListT<long>* pKeyList = pTelManager->__pActiveCallList->GetKeysN();
+ if( pKeyList->Contains(activeNotification.id) == false)
+ {
+ //handle call connected - save info
+ if (pTelManager->__pDialedCall != null)
+ {
+ pTelManager->__pDialedCall->SetCallHandle(activeNotification.id);
+ //set start time, when call is connected
+ long long startTime = 0;
+ SystemTime::GetTicks(startTime);
+ pTelManager->__pDialedCall->SetCallConnectTime(startTime);
+
+ if (pTelManager->__pIncomingCall != null && activeNotification.id == (unsigned int)pTelManager->__pIncomingCall->GetCallHandle()->ToLong())
+ {
+ pTelManager->__pDialedCall->SetCalllogType(CALL_LOG_TYPE_VOICE_INCOMING);
+ delete pTelManager->__pIncomingCall;
+ pTelManager->__pIncomingCall = null;
+ }
+ //transfer ownership to Active calls list
+ pTelManager->__pActiveCallList->Add(activeNotification.id, *(pTelManager->__pDialedCall));
+ }
+ else
+ {
+ //Construct a new CallInfo object for call
+ //This case will normally come here with incoming call
+ pTelManager->__pDialedCall = new (std::nothrow) CallInfo();
+ //__pDialedCall->SetRequestId(requestId);
+ pTelManager->__pDialedCall->SetCallHandle(activeNotification.id);
+ TelCallStatus_t callStatus;
+ memcpy(&tempHandle, pData, sizeof(TS_UINT));
+ int res = tel_get_call_status(pTelManager->__pTapiHandle, activeNotification.id, &callStatus);
+ if (res == TAPI_CAUSE_SUCCESS)
+ {
+ String contactNumber(callStatus.pNumber);
+ pTelManager->__pDialedCall->SetContactNumber(contactNumber);
+ result r = pTelManager->FetchContactInfoForNumber(contactNumber);
+ if (!IsFailed(r))
+ {
+ pTelManager->__pDialedCall->SetContactInfo(*(pTelManager->__pCachedContact));
+ }
+ //set emergency state
+ if(callStatus.CallType == TAPI_CALL_TYPE_E911)
+ {
+ pTelManager->__pDialedCall->SetEmergency(true);
+ }
+ else
+ {
+ pTelManager->__pDialedCall->SetEmergency(false);
+ }
+ //set start time, when call is connected
+ long long startTime = 0;
+ SystemTime::GetTicks(startTime);
+ pTelManager->__pDialedCall->SetCallConnectTime(startTime);
+ if (pTelManager->__pIncomingCall != null && (activeNotification.id == (unsigned int)pTelManager->__pIncomingCall->GetCallHandle()->ToLong()))
+ {
+ pTelManager->__pDialedCall->SetCalllogType(CALL_LOG_TYPE_VOICE_INCOMING);
+ pTelManager->__pDialedCall->SetCallNotificationTime(pTelManager->__pIncomingCall->GetCallNotificationTime());
+ }
+ //transfer ownership to Active calls list
+ pTelManager->__pActiveCallList->Add(activeNotification.id, *(pTelManager->__pDialedCall));
+ }
+ }
+ }
+ delete pKeyList;
+ pKeyList = null;
+ pTelManager->__pDialedCall = null;
+
+ //notify listener that call is connected.
+ pCallList = pTelManager->__pActiveCallList->GetValuesN();
+ pTelManager->__pSoundManager->SetSoundMode(SOUND_MODE_VOICE);
+ pTelManager->__pEventListener->HandleCallConnected(*pCallList);
+ if (pTelManager->__isIncomingCallPresent == true)
+ {
+ pTelManager->__pSoundManager->StopAlert();
+ pTelManager->__isIncomingCallPresent = false;
+ }
+ delete pCallList;
+ pCallList = null;
+}
+
+void
+TelephonyManager::HandleIncomingCallBack(void* pData, TelephonyManager* pTelManager)
+{
+ unsigned int tempHandle = 0;
+ TelCallStatus_t callStatus;
+ memcpy(&tempHandle, pData, sizeof(TS_UINT));
+ int res = tel_get_call_status(pTelManager->__pTapiHandle, tempHandle, &callStatus);
+ if (res == TAPI_CAUSE_SUCCESS)
+ {
+ //This case will normally come here with incoming call
+ delete pTelManager->__pIncomingCall;
+ pTelManager->__pIncomingCall = new (std::nothrow) CallInfo();
+ pTelManager->__pIncomingCall->SetCallHandle(tempHandle);
+ String contactNumber(callStatus.pNumber);
+ pTelManager->__pIncomingCall->SetContactNumber(contactNumber);
+ //set emergency state
+ if(callStatus.CallType == TAPI_CALL_TYPE_E911)
+ {
+ pTelManager->__pIncomingCall->SetEmergency(true);
+ }
+ else
+ {
+ pTelManager->__pIncomingCall->SetEmergency(false);
+ }
+ //set start time, when call is connected
+ long long startTime = 0;
+ SystemTime::GetTicks(startTime);
+ pTelManager->__pIncomingCall->SetCallNotificationTime(startTime);
+ pTelManager->__pIncomingCall->SetCalllogType(CALL_LOG_TYPE_VOICE_INCOMING);
+ //Check whether to reject incoming call or show incoming call screen to user.
+ bool isRejected = pTelManager->CheckIncomingCallToBeRejected(pTelManager->__pIncomingCall);
+ if(isRejected == false)
+ {
+ //show incoming call notification
+ CallInfo* pIncomingCall = new (std::nothrow) CallInfo();
+ *pIncomingCall = *(pTelManager->__pIncomingCall);
+ pTelManager->__pEventListener->HandleIncomingCall(*pIncomingCall);
+ delete pIncomingCall;
+ }
+ }
+}
+
+bool
+TelephonyManager::CheckIncomingCallToBeRejected(CallInfo* pIncomingCallInfo)
+{
+ int callHandle = pIncomingCallInfo->GetCallHandle()->ToLong();
+ String contactNumber(L"");
+ contactNumber.Append(pIncomingCallInfo->GetContactNumber());
+ //Fetch contact details from address book.
+ Contact* pContactDetails = GetContactN(contactNumber);
+ //Check if "reject unknown calls" is set and contact number is not present in AddressBook
+ //or if contact number is blacklisted
+ __isIncomingCallPresent = true;
+ if (((__pSettingsManager->GetUnknownRejectStatus() == true) && (pContactDetails == null))
+ || (__pSettingsManager->IsCallToBeRejected(contactNumber) == true))
+ {
+ AnswerCall(callHandle,false);
+ //save call rejected info
+ CallInfo* pRejectedCall = new (std::nothrow) CallInfo();
+ *pRejectedCall = *pIncomingCallInfo;
+ pRejectedCall->SetCalllogType(CALL_LOG_TYPE_VOICE_BLOCKED);
+ __pCalllogMgr->AddCallogInfoToDatabase(pRejectedCall);
+ delete pRejectedCall;
+ delete pContactDetails;
+ return true;
+ }
+ else
+ {
+ //update contact person info
+ if (pContactDetails != null)
+ {
+ pIncomingCallInfo->SetContactInfo(*pContactDetails);
+ delete pContactDetails;
+ }
+ return false;
+ }
+}
+
+void
+TelephonyManager::HandleCallback(TapiHandle* pHandle, const char* pNotiId, void* pData, void* pUserData)
+{
+ unsigned int tempHandle = 0;
+ TelephonyManager* pTelManager = (TelephonyManager*) pUserData;
+ if (pTelManager->__pSoundManager == null)
+ {
+ AppLog("Creating Sound Manager");
+ pTelManager->__pSoundManager = new (std::nothrow) SoundManager();
+ }
+
+
+ if (strcmp(pNotiId, TAPI_NOTI_VOICE_CALL_STATUS_IDLE) == 0)
+ {
+ HandleIdleCallBack(pData, pTelManager);
+ }
+ else if (strcmp(pNotiId, TAPI_NOTI_VOICE_CALL_STATUS_ACTIVE) == 0)
+ {
+ pTelManager->__pSoundManager->StartSession();
+ HandleActiveCallBack(pData, pTelManager);
+ }
+ else if (strcmp(pNotiId, TAPI_NOTI_VOICE_CALL_STATUS_DIALING) == 0)
+ {
+ HandleDialingCallBack(pData, pTelManager);
+ }
+ /*else if (strcmp(pNotiId, TAPI_NOTI_VOICE_CALL_STATUS_INCOMING) == 0)
+ {
+ HandleIncomingCallBack(pData, pTelManager);
+ }*/
+ else if (strcmp(pNotiId, TAPI_NOTI_VOICE_CALL_STATUS_HELD) == 0)
+ {
+ //TelCallStatusHeldNoti_t heldNotification;
+ memcpy(&tempHandle, pData, sizeof(TS_UINT));
+ }
+ else if (strcmp(pNotiId, TAPI_NOTI_CALL_INFO_WAITING) == 0)
+ {
+ //TelCallInfoWaitingNoti_t waitingInfoNotification;
+ memcpy(&tempHandle, pData, sizeof(TS_UINT));
+ }
+ else if (strcmp(pNotiId, TAPI_NOTI_CALL_INFO_HELD) == 0)
+ {
+ //TelCallInfoHeldNoti_t heldInfoNotification;
+ memcpy(&tempHandle, pData, sizeof(TS_UINT));
+ }
+ else if (strcmp(pNotiId, TAPI_NOTI_VOICE_CALL_STATUS_ALERT) == 0)
+ {
+ //TelCallStatusAlertNoti_t alertNotification;
+ memcpy(&tempHandle, pData, sizeof(TS_UINT));
+ }
+ else if (strcmp(pNotiId, TAPI_NOTI_VOICE_CALL_STATUS_WAITING) == 0)
+ {
+ //TelCallStatusWaitingNoti_t waitingNotification;
+ memcpy(&tempHandle, pData, sizeof(TS_UINT));
+ }
+ else if (strcmp(pNotiId, TAPI_NOTI_CALL_INFO_CALL_CONNECTED_LINE) == 0)
+ {
+ //TelCallConnectedNumberInfo_t connectedNumberInfo;
+ memcpy(&tempHandle, pData, sizeof(TS_UINT));
+ }
+ else if (strcmp(pNotiId, TAPI_NOTI_CALL_INFO_ACTIVE) == 0)
+ {
+ //TelCallInfoActiveNoti_t activeInfoNotification;
+ memcpy(&tempHandle, pData, sizeof(TS_UINT));
+ }
+ else if (strcmp(pNotiId, TAPI_NOTI_CALL_INFO_JOINED) == 0)
+ {
+ //TelCallInfoJoinedNoti_t joinedInfoNotification;
+ memcpy(&tempHandle, pData, sizeof(TS_UINT));
+ }
+ else if (strcmp(pNotiId, TAPI_NOTI_CALL_INFO_RELEASED_ON_HOLD) == 0)
+ {
+ memcpy(&tempHandle, pData, sizeof(TS_UINT));
+ }
+ else
+ {
+ memcpy(&tempHandle, pData, sizeof(TS_UINT));
+ }
+}
+
+CallInfo*
+TelephonyManager::GetConferenceCallInfoN(void)
+{
+ CallInfo* pConfCallInfo = null;
+
+ IListT<CallInfo>* pCallList = __pActiveCallList->GetValuesN();
+ int callCount = pCallList->GetCount();
+ for (int index = 0; index < callCount; index++)
+ {
+ CallInfo callInfo;
+ pCallList->GetAt(index, callInfo);
+ if (callInfo.IsConferenceCall() == true)
+ {
+ pConfCallInfo = new (std::nothrow) CallInfo();
+ *pConfCallInfo = callInfo;
+ //Found the Conference call to be ended.
+ break;
+ }
+ }
+ delete pCallList;
+ pCallList = null;
+
+ return pConfCallInfo;
+}
+
+IListT<CallInfo>*
+TelephonyManager::GetCallListN(void)
+{
+ ArrayListT<CallInfo>* pCallList = null;
+ if (__pActiveCallList != null)
+ {
+ pCallList = static_cast<ArrayListT<CallInfo>*>(__pActiveCallList->GetValuesN());
+ }
+ return pCallList;
+}
+
+int
+TelephonyManager::GetCurrentCallCount(void)
+{
+ if (__pActiveCallList != null)
+ {
+ return __pActiveCallList->GetCount();
+ }
+ return 0;
+}
+
+void
+TelephonyManager::StartAlert(CallInfo& incomingCallInfo)
+{
+ __isIncomingCallPresent = true;
+ String contactRingTone(L"");
+ String contactNumber = incomingCallInfo.GetContactNumber();
+ //check if not hidden call
+ if(contactNumber.IsEmpty() == false)
+ {
+ //fetch contact info from Db
+ Contact* foundContact = GetContactN(contactNumber);
+ if(foundContact != null)
+ {
+ //fetch custom ringtone for contact
+ result r = foundContact->GetValue(CONTACT_PROPERTY_ID_RINGTONE, contactRingTone);
+ AppLog("ringtone fetched - r = %d", r);
+ delete foundContact;
+ foundContact = null;
+ }
+ }
+ __pSoundManager->StartAlert(contactRingTone);
+}
+
+void
+TelephonyManager::StopAlert(void)
+{
+ __pSoundManager->StopAlert();
+}
+
+result
+TelephonyManager::CheckValidTelePhoneNumber(const String& contactNumber)
+{
+ result r = E_SUCCESS;
+ if (contactNumber.GetLength() > TAPI_CALL_DIALDIGIT_LEN_MAX)
+ {
+ r = E_FAILURE;
+ }
+ //TODO: check if valid phonenumber else return error message
+ return r;
+}
+
+result
+TelephonyManager::CheckIfMOCallIsPossible()
+{
+ result r = E_SUCCESS;
+
+ //Check modem power status
+ int modemStatus = 0;
+ int errorCode = tel_check_modem_power_status(__pTapiHandle, &modemStatus);
+ if (errorCode != TAPI_API_SUCCESS || modemStatus == TAPI_PHONE_POWER_STATUS_OFF
+ || modemStatus == TAPI_PHONE_POWER_STATUS_ERROR)
+ {
+ r = E_FAILURE;
+ }
+ else
+ {
+ TelSimCardStatus_t simStatus;
+ int simChangedStatus;
+ //fetch sim initialization status
+ int errorCode = tel_get_sim_init_info(__pTapiHandle, &simStatus, &simChangedStatus);
+ if (errorCode != TAPI_API_SUCCESS)
+ {
+ r = E_FAILURE;
+ }
+ else
+ {
+ switch (simStatus)
+ {
+ case TAPI_SIM_STATUS_SIM_INIT_COMPLETED: // Sim Initialization ok
+ r = E_SUCCESS;
+ break;
+
+ case TAPI_SIM_STATUS_UNKNOWN: //initial state
+ case TAPI_SIM_STATUS_CARD_NOT_PRESENT: //Card not present
+ case TAPI_SIM_STATUS_CARD_REMOVED: //Card removed
+ case TAPI_SIM_STATUS_CARD_ERROR: // Bad card / On the fly, SIM gone bad
+ //TODO: might want to set different error code, to give proper message to user
+ r = E_FAILURE;
+ break;
+ default:
+ r = E_FAILURE;
+ break;
+ }
+ }
+ }
+ return r;
+}
+
+bool
+TelephonyManager::CheckIfMOCallIsEmergency(const String& contactNumber, bool isSimInitialized)
+{
+ //TODO: extract actual telephone number from contactNumber
+ //by deleting prefix,'P','W', etx.
+
+ bool isEmergency = false;
+ //conversion "contactNumber" to char*
+ const wchar_t* pContact = contactNumber.GetPointer();
+ int len = contactNumber.GetLength() + 1;
+ char* pNumber = new (std::nothrow) char[len];
+ wcstombs(pNumber, pContact, len);
+
+ if(isSimInitialized)
+ {
+ //used to get Ecc information for 2G and 3G.
+ TelSimEccList_t simEccList;
+ memset(&simEccList, 0x00, sizeof(TelSimEccList_t));
+ //Check if given number matches the sim card's emergency numbers
+ int errorCode = tel_get_sim_ecc(__pTapiHandle, &simEccList);
+ if (errorCode == TAPI_API_SUCCESS && simEccList.ecc_count > 0)
+ {
+ for (int index = 0; index < simEccList.ecc_count; index++)
+ {
+ if ((strcmp(pNumber, simEccList.list[index].number) == 0))
+ {
+ isEmergency = true;
+ }
+ }
+ }
+ }
+ else
+ {
+ //TODO: check if we need to also check SOS call numbers, if sim not present.
+ }
+
+ delete[] pNumber;
+ pNumber = null;
+ return isEmergency;
+}
+
+result
+TelephonyManager::FetchContactInfoForNumber(const String& phoneNumberStr)
+{
+ result r = E_FAILURE;
+
+ //delete previously cached data
+ if (__pCachedContact != null)
+ {
+ delete __pCachedContact;
+ __pCachedContact = null;
+ }
+
+ //Searches contacts by phone number.
+ IList* pContactList = __pAddressBook->SearchContactsByPhoneNumberN(phoneNumberStr);
+ if (pContactList == null || IsFailed(GetLastResult()))
+ {
+ return r;
+ }
+
+ //Fetch the contact's info to be displayed
+ IEnumerator* pContactEnum = pContactList->GetEnumeratorN();
+ while ((E_SUCCESS == pContactEnum->MoveNext()) && (__pCachedContact == null))
+ {
+ Contact* pContact = static_cast<Contact*>(pContactEnum->GetCurrent());
+
+ IList* pPhoneNumberList = pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
+ if (pPhoneNumberList != null)
+ {
+ IEnumerator* pPhoneEnum = pPhoneNumberList->GetEnumeratorN();
+ while (E_SUCCESS == pPhoneEnum->MoveNext())
+ {
+ PhoneNumber* pPhoneNumber = (PhoneNumber*) pPhoneEnum->GetCurrent();
+ //Check if this is the correct contact
+ if (pPhoneNumber->GetPhoneNumber().Equals(phoneNumberStr))
+ {
+ //save newly fetched contact info.
+ __pCachedContact = new (std::nothrow) Contact(*pContact);
+ r = E_SUCCESS;
+ break;
+ }
+ }
+ delete pPhoneEnum;
+ pPhoneNumberList->RemoveAll(true);
+ delete pPhoneNumberList;
+ }
+ }
+ delete pContactEnum;
+ pContactList->RemoveAll(true);
+ delete pContactList;
+
+ return r;
+}
+
+Contact*
+TelephonyManager::GetContactN(const String& phoneNumber)
+{
+ result r = FetchContactInfoForNumber(phoneNumber);
+ if (!IsFailed(r))
+ {
+ return new (std::nothrow) Contact(*__pCachedContact);
+ }
+ return null;
+}
+
+CallInfo*
+TelephonyManager::FetchIncomingCallHandleN(const String& callHandle, const String& contactNumber)
+{
+ if(__pIncomingCall != null)
+ {
+ delete __pIncomingCall;
+ __pIncomingCall = null;
+ }
+
+ if(callHandle.IsEmpty() == false)
+ {
+ int incomingHandle;
+ Integer::Parse(callHandle,incomingHandle);
+ //This API call is synchronous
+ TelCallStatus_t callStatus;
+ int errCode = tel_get_call_status(__pTapiHandle, incomingHandle, &callStatus);
+ if (errCode != TAPI_API_SUCCESS)
+ {
+ AppLogDebug("tel_get_call_status_all failed");
+ return null;
+ }
+ //construct incoming call info object
+ __pIncomingCall = new (std::nothrow) CallInfo();
+ __pIncomingCall->SetCallHandle(incomingHandle);
+
+ //contact number
+ String phoneNumber(contactNumber);
+ if(phoneNumber.IsEmpty() == true)
+ {
+ phoneNumber.Append(callStatus.pNumber);
+ }
+ __pIncomingCall->SetContactNumber(phoneNumber);
+ //set emergency state
+ if(callStatus.CallType == TAPI_CALL_TYPE_E911)
+ {
+ __pIncomingCall->SetEmergency(true);
+ }
+ else
+ {
+ __pIncomingCall->SetEmergency(false);
+ }
+ //set start time, when call is connected
+ long long startTime = 0;
+ SystemTime::GetTicks(startTime);
+ __pIncomingCall->SetCallNotificationTime(startTime);
+ __pIncomingCall->SetCalllogType(CALL_LOG_TYPE_VOICE_INCOMING);
+ }
+ else
+ {
+ //TODO: This 'else' block can be removed once AppControl request API is stabilized.
+ //This API call is synchronous and 'HandleIncomingCallStatusCallBack' is called for each active call.
+ int errCode = tel_get_call_status_all(__pTapiHandle, &HandleIncomingCallStatusCallBack, this);
+ if (errCode != TAPI_API_SUCCESS)
+ {
+ return null;
+ }
+ }
+
+ //construct a new callinfo object to pass its ownership to caller.
+ if(__pIncomingCall != null)
+ {
+ CallInfo* pNewIncomingCall = new (std::nothrow) CallInfo();
+ *pNewIncomingCall = *__pIncomingCall;
+ return pNewIncomingCall;
+ }
+ //return null, if no incoming call found
+ return null;
+}
+
+void
+TelephonyManager::HandleIncomingCallStatusCallBack(TelCallStatus_t* pCallStatus, void* pUserData)
+{
+ TelephonyManager* pTelManager = (TelephonyManager*) pUserData;
+ if (pCallStatus != null && pCallStatus->bMoCall == false
+ && ((pCallStatus->CallState == TAPI_CALL_STATE_INCOMING)
+ || (pCallStatus->CallState == TAPI_CALL_STATE_WAITING)))
+ {
+ //construct incoming call details
+ pTelManager->__pIncomingCall = new (std::nothrow) CallInfo();
+ pTelManager->__pIncomingCall->SetCallHandle(pCallStatus->CallHandle);
+ //contact number
+ String contactNumber(pCallStatus->pNumber);
+ pTelManager->__pIncomingCall->SetContactNumber(contactNumber);
+ //set emergency state
+ if(pCallStatus->CallType == TAPI_CALL_TYPE_E911)
+ {
+ pTelManager->__pIncomingCall->SetEmergency(true);
+ }
+ else
+ {
+ pTelManager->__pIncomingCall->SetEmergency(false);
+ }
+ //set start time, when call is connected
+ long long startTime = 0;
+ SystemTime::GetTicks(startTime);
+ pTelManager->__pIncomingCall->SetCallNotificationTime(startTime);
+ pTelManager->__pIncomingCall->SetCalllogType(CALL_LOG_TYPE_VOICE_INCOMING);
+ }
+}
--- /dev/null
+//
+// 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 PhnTypes.cpp
+ * @brief Common constants used in Phone application
+ */
+#include "PhnTypes.h"
+
+//bitmap
+const wchar_t* IDB_BTN_OPTION_BG_ICON = L"C01-3_dialer_btn_option_bg.9.png";
+const wchar_t* IDB_BTN_OPTION_PRESS_BG_ICON = L"C01-3_dialer_btn_option_press.9.png";
+const wchar_t* IDB_BTN_MORE_ICON = L"more.png";
+const wchar_t* IDB_BTN_MORE_PRESS_ICON = L"more_press.png";
+const wchar_t* IDB_POPUP_BUBBLE_ICON = L"00_popup_bubble_tail_bottom.png";
+const wchar_t* IDB_DIALER_BTN_LINE_ICON = L"C01-3_dialer_btn_1line_bg.9.png";
+const wchar_t* IDB_DIALER_BTN_PRESS_ICON = L"C01-3_dialer_btn_press.9.png";
+const wchar_t* IDB_VOICEMAIL_BTN_ICON = L"C01-3_dialer_icon_01.png";
+const wchar_t* IDB_VOICEMAIL_BTN_PRESS_ICON = L"C01-3_dialer_icon_01_press.png";
+const wchar_t* IDB_DIALER_BTN_LINE2_ICON = L"C01-3_dialer_btn_2line_bg.9.png";
+const wchar_t* IDB_DIALER_BTN_LINE3_ICON = L"C01-3_dialer_btn_3line_bg.9.png";
+const wchar_t* IDB_DIALER_BTN_LINE4_ICON = L"C01-3_dialer_btn_4line_bg.9.png";
+const wchar_t* IDB_DIALER_BTN_LINE5_ICON = L"C01-3_dialer_btn_5line_bg.9.png";
+const wchar_t* IDB_DIALER_STAR_ICON = L"C01-3_dialer_icon_star.png";
+const wchar_t* IDB_DIALER_MUTE_ICON = L"00_volume_icon_Mute.png";
+const wchar_t* IDB_DIALER_VIDEOCALL_ICON = L"C01-3_icon_voicecall.png";
+const wchar_t* IDB_DIALER_CALL_ICON = L"C01-3_icon_call.png";
+const wchar_t* IDB_DIALER_CLEAR_ICON = L"C01-3_icon_clear.png";
+const wchar_t* IDB_DIALER_CALL_BG_ICON = L"C01-3_dialer_btn_call_bg.9.png";
+const wchar_t* IDB_HIDE_KEYPAD_ICON = L"C01-1_icon_Hide.png";
+const wchar_t* IDB_HIDE_KEYPAD_PRESS_ICON = L"C01-1_icon_Hide_press_wh.png";
+const wchar_t* IDB_HIDE_KEYPAD_DIM_ICON = L"C01-1_icon_Hide_dim.png";
+const wchar_t* IDB_CLOSE_KEYPAD_ICON = L"C01-1_icon_keypad.png";
+const wchar_t* IDB_CLOSE_KEYPAD_PRESS_ICON = L"C01-1_icon_keypad_press_wh.png";
+const wchar_t* IDB_CLOSE_KEYPAD_DIM_ICON = L"C01-1_icon_keypad_dim.png";
+const wchar_t* IDB_SPEAKER_ON_ICON = L"C01-1_icon_speaker_on.png";
+const wchar_t* IDB_SPEAKER_ON_PRESS_ICON = L"C01-1_icon_speaker_on_press.png";
+const wchar_t* IDB_SPEAKER_ON_DIM_ICON = L"C01-1_icon_speaker_on_dim.png";
+const wchar_t* IDB_SPEAKER_OFF_ICON = L"C01-1_icon_speaker.png";
+const wchar_t* IDB_SPEAKER_OFF_PRESS_ICON = L"C01-1_icon_speaker_press_wh.png";
+const wchar_t* IDB_SPEAKER_OFF_DIM_ICON = L"C01-1_icon_speaker_dim.png";
+const wchar_t* IDB_MUTE_ON_ICON = L"C01-1_icon_mute_on.png";
+const wchar_t* IDB_MUTE_ON_PRESS_ICON = L"C01-1_icon_mute_on_press.png";
+const wchar_t* IDB_MUTE_ON_DIM_ICON = L"C01-1_icon_mute_on_dim.png";
+const wchar_t* IDB_MUTE_OFF_ICON = L"C01-1_icon_mute.png";
+const wchar_t* IDB_MUTE_OFF_PRESS_ICON = L"C01-1_icon_mute_press_wh.png";
+const wchar_t* IDB_MUTE_OFF_DIM_ICON = L"C01-1_icon_mute_dim.png";
+const wchar_t* IDB_BACKGROUND_BITMAP = L"C01-1_call_bg.png";
+const wchar_t* IDB_VOICE_CALL_ICON = L"C01-1_icon_voice call.png";
+const wchar_t* IDB_VOICE_CALL_PRESS_ICON = L"C01-1_icon_voice call_press.png";
+const wchar_t* IDB_VOICE_CALL_DIM_ICON = L"C01-1_icon_voice call_dim.png";
+const wchar_t* IDB_VIDEO_CALL_ICON = L"C01-1_icon_video call.png";
+const wchar_t* IDB_VIDEO_CALL_PRESS_ICON = L"C01-1_icon_video call_press.png";
+const wchar_t* IDB_VIDEO_CALL_DIM_ICON = L"C01-1_icon_video call_dim.png";
+const wchar_t* IDB_MESSAGE_ICON = L"C01-1_icon_message.png";
+const wchar_t* IDB_MESSAGE_PRESS_ICON = L"C01-1_icon_message_press.png";
+const wchar_t* IDB_MESSAGE_DIM_ICON = L"C01-1_icon_message_dim.png";
+const wchar_t* IDB_END_CALL_ICON = L"C01-1_icon_end call.png";
+const wchar_t* IDB_END_CALL_PRESS_ICON = L"C01-1_icon_end call_press.png";
+const wchar_t* IDB_END_CALL_DIM_ICON = L"C01-1_icon_end call_dim.png";
+const wchar_t* IDB_ADD_CALL_ICON = L"C01-1_icon_add.png";
+const wchar_t* IDB_ADD_CALL_PRESS_ICON = L"C01-1_icon_add_press_wh.png";
+const wchar_t* IDB_ADD_CALL_DIM_ICON = L"C01-1_icon_add_dim.png";
+const wchar_t* IDB_JOIN_CALL_ICON = L"C01-1_icon_join.png";
+const wchar_t* IDB_JOIN_CALL_PRESS_ICON = L"C01-1_icon_join_press_wh.png";
+const wchar_t* IDB_JOIN_CALL_DIM_ICON = L"C01-1_icon_join_dim.png";
+const wchar_t* IDB_CONTACT_ICON = L"C01-1_icon_contacts.png";
+const wchar_t* IDB_CONTACT_PRESS_ICON = L"C01-1_icon_contacts_press_wh.png";
+const wchar_t* IDB_CONTACT_DIM_ICON = L"C01-1_icon_contacts_dim.png";
+const wchar_t* IDB_SWAP_ICON_NORMAL = L"C01-1_icon_swap.png";
+const wchar_t* IDB_SWAP_ICON_PRESS = L"C01-1_icon_swap_press.png";
+const wchar_t* IDB_UNHOLD_NORMAL_BUTTON_ICON = L"C01-1_icon_unhold_78x78.png";
+const wchar_t* IDB_UNHOLD_PRESS_BUTTON_ICON = L"C01-1_icon_unhold_78x78_press.png";
+const wchar_t* IDB_HOLD_NORMAL_BUTTON_ICON = L"C01-1_icon_hold_78x78.png";
+const wchar_t* IDB_HOLD_PRESS_BUTTON_ICON = L"C01-1_icon_hold_78x78_press.png";
+const wchar_t* IDB_POPUP_ARROW_ICON = L"C01-1_popup_arrow.png";
+const wchar_t* IDB_POPUP_BG_ICON = L"C01-1_popup_bg.png";
+const wchar_t* IDB_MORE_MANAGE_CONFERENCE_ICON = L"C01-1_icon_more_Manage conference call.png";
+const wchar_t* IDB_CONFERENCE_BG_ICON = L"C01-1_multil_default_caller ID_720x370.png";
+const wchar_t* IDB_CONFERENCE_BIG_BG_ICON = L"C01-1_multil_default_caller ID_720x720.png";
+const wchar_t* IDB_ACTIVE_CALL_DEFAULT_ICON = L"C01-1_end call_default_caller ID_720x720.png";
+const wchar_t* IDB_MULTIPLE_CALL_DEFAULT_ICON = L"C01-1_end call_default_caller ID_720x370.png";
+const wchar_t* IDB_KEYPAD_BUTTON_NORMAL = L"C01-1_keypad_btn_normal.png";
+const wchar_t* IDB_KEYPAD_BUTTON_PRESS = L"C01-1_keypad_btn_press.png";
+const wchar_t* IDB_KEYPAD_NUM1_ICON = L"C01-1_keypad_btn_icon.png";
+const wchar_t* IDB_CALLOG_LIST_BG = L"00_index list_bg.png";
+const wchar_t* IDB_LOG_RECEIVEDCALL_ICON = L"C01-4_icon_dialed.png";
+const wchar_t* IDB_LOG_DIALEDCALL_ICON = L"C01-4_icon_received.png";
+const wchar_t* IDB_LOG_MISSEDCALL_ICON = L"C01-4_icon_missed-call.png";
+const wchar_t* IDB_LOG_BLOCKEDCALL_ICON = L"C01-4_icon_Blocked(Auto-rejected).png";
+const wchar_t* IDB_LOG_DETAIL_CALL_ICON = L"C01-4_btn_icon_call.png";
+const wchar_t* IDB_LOG_DETAIL_MSG_ICON = L"C01-1_icon_Reject_with_Message.png";
+const wchar_t* IDB_LOG_NO_CONTENT = L"00_Nocontents_text.png";
+
+
+//String messages
+const wchar_t* IDS_DIALER_MOBILE_STR = L"IDS_DIALER_MOBILE_STR";
+const wchar_t* IDS_DIALER_SPEEDDIAL_POPUP_MSG = L"IDS_DIALER_SPEEDDIAL_POPUP_MSG";
+const wchar_t* IDS_SPEEDDIAL_POP_YES_BTN_STRING = L"IDS_SPEEDDIAL_POP_YES_BTN_STRING";
+const wchar_t* IDS_SPEEDDIAL_POP_NO_BTN_STRING = L"IDS_SPEEDDIAL_POP_NO_BTN_STRING";
+const wchar_t* IDS_DIALER_MENU_ITEM_SEND_MSG = L"IDS_DIALER_MENU_ITEM_SEND_MSG";
+const wchar_t* IDS_DIALER_MENU_ITEM_ADD_CONTACT = L"IDS_DIALER_MENU_ITEM_ADD_CONTACT";
+const wchar_t* IDS_DIALER_MENU_ITEM_SPEED_DIAL = L"IDS_DIALER_MENU_ITEM_SPEED_DIAL";
+const wchar_t* IDS_DIALER_MENU_ITEM_ADD_PAUSE = L"IDS_DIALER_MENU_ITEM_ADD_PAUSE";
+const wchar_t* IDS_DIALER_MENU_ITEM_ADD_WAIT = L"IDS_DIALER_MENU_ITEM_ADD_WAIT";
+const wchar_t* IDS_DIALER_MENU_ITEM_EXIT = L"IDS_DIALER_MENU_ITEM_EXIT";
+const wchar_t* IDS_SPEED_DIAL_SEARCH_KEY = L"SPEED_DIAL";
+const wchar_t* IDS_KEYPAD_BTN_NAME = L"IDS_KEYPAD_BTN_NAME";
+const wchar_t* IDS_SPEAKER_BTN_NAME = L"IDS_SPEAKER_BTN_NAME";
+const wchar_t* IDS_MUTE_BTN_NAME = L"IDS_MUTE_BTN_NAME";
+const wchar_t* IDS_VOICE_CALL_BTN_NAME = L"IDS_VOICE_CALL_BTN_NAME";
+const wchar_t* IDS_VIDEO_CALL_BTN_NAME = L"IDS_VIDEO_CALL_BTN_NAME";
+const wchar_t* IDS_MSG_BTN_NAME = L"IDS_MSG_BTN_NAME";
+const wchar_t* IDS_ENDCALL_BTN_NAME = L"IDS_ENDCALL_BTN_NAME";
+const wchar_t* IDS_ADDCALL_BTN_NAME = L"IDS_ADDCALL_BTN_NAME";
+const wchar_t* IDS_JOINCALL_BTN_NAME = L"IDS_JOINCALL_BTN_NAME";
+const wchar_t* IDS_CONTACT_BTN_NAME = L"IDS_CONTACT_BTN_NAME";
+const wchar_t* IDS_HOLD_BTN_NAME = L"IDS_HOLD_BTN_NAME";
+const wchar_t* IDS_UNHOLD_BTN_NAME = L"IDS_UNHOLD_BTN_NAME";
+const wchar_t* IDS_PEOPLE_STR = L"IDS_PEOPLE_STR";
+const wchar_t* IDS_MGR_CONF_CALL_LIST_STR = L"IDS_MGR_CONF_CALL_LIST_STR";
+const wchar_t* IDS_LOG_CONTEXT_CALL = L"IDS_LOG_CONTEXT_CALL";
+const wchar_t* IDS_LOG_CONTEXT_MESSAGE = L"IDS_LOG_CONTEXT_MESSAGE";
+const wchar_t* IDS_LOG_CONTEXT_VIDEOCALL = L"IDS_LOG_CONTEXT_VIDEOCALL";
+const wchar_t* IDS_LOG_CONTEXT_DELETE = L"IDS_LOG_CONTEXT_DELETE";
+const wchar_t* IDS_AM_TIME = L"IDS_AM_TIME" ;
+const wchar_t* IDS_PM_TIME = L"IDS_PM_TIME";
+const wchar_t* IDS_CALLLOG_NO_NUMBER = L"IDS_CALLLOG_NO_NUMBER";
+const wchar_t* IDS_CALLLOG_NO_NAME = L"IDS_CALLLOG_NO_NAME";
+const wchar_t* IDS_CALLLOG_RECEIVED = L"IDS_CALLLOG_RECEIVED";
+const wchar_t* IDS_CALLLOG_MISSED = L"IDS_CALLLOG_MISSED";
+const wchar_t* IDS_CALLLOG_OUTGOING = L"IDS_CALLLOG_OUTGOING";
+const wchar_t* IDS_CALLLOG_RECEIVED_MSG = L"IDS_CALLLOG_RECEIVED_MSG";
+const wchar_t* IDS_CALLLOG_SENT_MSG = L"IDS_CALLLOG_SENT_MSG";
+const wchar_t* IDS_CALLLOG_REJECTED = L"IDS_CALLLOG_REJECTED";
+const wchar_t* IDS_CALLLOG_DELETE_FOOTER = L"IDS_CALLLOG_DELETE_FOOTER";
+const wchar_t* IDS_CALLLOG_CANCEL_FOOTER = L"IDS_CALLLOG_CANCEL_FOOTER";
+const wchar_t* IDS_EMERGENCY_CALL = L"IDS_EMERGENCY_CALL";
+const wchar_t* IDS_SELECT_CALL_LOG = L"IDS_SELECT_CALL_LOG";
+const wchar_t* IDS_SELECTED_ITEMS_STRING = L"IDS_SELECTED_ITEMS_STRING";
+const wchar_t* IDS_SELECTED_ITEM_STRING = L"IDS_SELECTED_ITEM_STRING";
+const wchar_t* IDS_SELECT_NUMBER = L"IDS_SELECT_NUMBER";
+const wchar_t* IDS_NUMBER_SELECTED = L"IDS_NUMBER_SELECTED";
+const wchar_t* IDS_NUMBERS_SELECTED = L"IDS_NUMBERS_SELECTED";
+const wchar_t* IDS_SELECT_MESSAGE = L"IDS_SELECT_MESSAGE";
+const wchar_t* IDS_MESSAGE_SELECTED = L"IDS_MESSAGE_SELECTED";
+const wchar_t* IDS_MESSAGES_SELECTED = L"IDS_MESSAGES_SELECTED";
+const wchar_t* IDS_NO_LOGS = L"IDS_NO_LOGS";
+
+//Panel
+const wchar_t* PANEL_DIALER = L"PanelDialer";
+const wchar_t* PANEL_LOGS = L"PanelLogs";
+
+//Corresponding Call form name
+const wchar_t* IDL_FORM_OUTCALL = L"OutgoingCallForm";
+const wchar_t* IDL_FORM_OUT_EMERGENCYCALL = L"OutgoingEmergencyCallForm";
+const wchar_t* IDL_FORM_INCOMINGCALL = L"IncomingCallForm";
+const wchar_t* IDL_FORM_ACTIVECALL = L"ActiveCallForm";
+const wchar_t* IDL_FORM_ACTIVE_EMERGENCYCALL = L"ActiveEmergencyCallForm";
+const wchar_t* IDL_FORM_CONFCALL = L"ActiveConfCallForm";
+const wchar_t* IDL_FORM_CONFCALLLIST = L"ConfCallListForm ";
+const wchar_t* IDL_FORM_ENDCALL = L"EndCallForm";
+const wchar_t* IDL_FORM_MULTIPLEACTIVECALL = L"MultipleActiveCallForm";
+//Corresponding Settings form name
+const wchar_t* IDL_FORM_SETTINGS_PREFIX = L"SettingsForm";
+const wchar_t* IDL_FORM_MAIN_SETTING_MENU = L"SettingsFormMainMenu";
+const wchar_t* IDL_FORM_CALL_REJECTLIST_MENU = L"SettingsFormCallRejectList";
+const wchar_t* IDL_FORM_CALL_REJECTMSGS_MENU = L"SettingsFormCallRejectMsgs";
+const wchar_t* IDL_FORM_SPEED_DIAL = L"SettingsFormSpeedDial";
+const wchar_t* IDL_FORM_MORE_OPTIONS = L"SettingsFormMoreOptions";
+const wchar_t* IDL_FORM_CALL_STATUSTONES = L"SettingsFormCallStatusTones";
+const wchar_t* IDL_FORM_CALLTYPE_FORWARD = L"SettingsFormCallTypeForward";
+const wchar_t* IDL_FORM_CALL_FORWARD_OPTIONS = L"SettingsFormCallForwardMenu";
+const wchar_t* IDL_FORM_CALLTYPE_BARRING = L"SettingsFormCallTypeBarring";
+const wchar_t* IDL_FORM_CALL_BARRING_OPTIONS = L"SettingsFormCallBarringMenu";
+const wchar_t* IDL_FORM_CALL_WAITING_OPTIONS = L"SettingsFormCallWaitingMenu";
+const wchar_t* IDL_FORM_ADD_REJECT_NUMBER = L"SettingsFormAddRejectNumber";
+const wchar_t* IDL_FORM_AUTO_AREA_CODE = L"SettingsFormAutoAreaCode";
+const wchar_t* IDL_FORM_ADD_REJECT_MSG = L"SettingsFormAddRejectMsg";
+const wchar_t* IDL_FORM_EDIT_REJECT_MSG = L"SettingsFormEditRejectMsg";
+const wchar_t* IDL_FORM_FORWARD_TO_NUMBER = L"SettingsFormForwardToNumber";
+const wchar_t* IDL_FORM_NOREPLY_FORWARD_TO_NUMBER = L"SettingsFormNoReplyForwardToNumber";
+const wchar_t* IDL_FORM_SCENE_SET_BARRING_PWD = L"SettingsFormSetBarringPwd";
+const wchar_t* IDL_FORM_DEL_NUMBER = L"SettingsFormDeleteNumbers";
+const wchar_t* IDL_FORM_DEL_MESSAGE = L"SettingsFormDeleteMessages";
+//Dialer & Call Log Form names
+const wchar_t* IDL_FORM_DIAL_APP = L"DialAppForm";
+const wchar_t* IDL_FORM_CALL_LOG_DETAIL = L"CallLogDetailForm";
+const wchar_t* IDL_CALL_PANEL = L"IDL_KEYS_PANEL";
+const wchar_t* IDL_END_CALL_PANEL = L"IDL_ENDCALLKEYS_PANEL";
+const wchar_t* IDL_OUTCALL_FORM = L"IDL_OUTCALL_FORM";
+const wchar_t* IDL_OUT_EMERGENCYCALL_FORM = L"IDL_OUT_EMERGENCYCALL_FORM";
+const wchar_t* IDL_CALL_FORM = L"IDL_CALL_FORM";
+const wchar_t* IDL_EMERGENCY_CALL_FORM = L"IDL_EMERGENCY_CALL_FORM";
+const wchar_t* IDL_MULTIPLE_CALL_FORM = L"IDL_MULTIPLE_CALL_FORM";
+const wchar_t* IDL_CONFCALL_FORM = L"IDL_CONFCALL_FORM";
+const wchar_t* IDL_DTMF_PANEL = L"IDL_DTMF_KEYPAD_PANEL";
+const wchar_t* IDL_DIALER_KEYPAD_PANEL = L"IDL_DIALER_KEYPAD_PANEL";
+const wchar_t* IDL_FORM_EMERGENCY_DIAL = L"IDL_FORM_EMERGENCY_DIAL";
+
+//Constants - Call Scene name
+const wchar_t* IDSCN_SCENE_OUTCALL = L"OutgoingCallScene";
+const wchar_t* IDSCN_SCENE_OUT_EMERGENCYCALL = L"OutgoingEmergencyCallScene";
+const wchar_t* IDSCN_SCENE_INCOMINGCALL = L"IncomingCallScene";
+const wchar_t* IDSCN_SCENE_ACTIVECALL = L"ActiveCallScene";
+const wchar_t* IDSCN_SCENE_ACTIVE_EMERGENCYCALL = L"ActiveEmergencyCallScene";
+const wchar_t* IDSCN_SCENE_CONFCALL = L"ActiveConfCallScene";
+const wchar_t* IDSCN_SCENE_CONFCALLLIST = L"ConfCallListScene";
+const wchar_t* IDSCN_SCENE_ENDCALL = L"EndCallScene";
+const wchar_t* IDSCN_SCENE_MULTIPLEACTIVECALL = L"MultipleActiveCallScene";
+//Constants - Settings Scene name
+const wchar_t* IDSCN_SCENE_MAIN_SETTING_MENU = L"CallMainSettingScene";
+const wchar_t* IDSCN_SCENE_CALL_REJECTLIST_MENU = L"CallRejectListScene";
+const wchar_t* IDSCN_SCENE_CALL_REJECTMSGS_MENU = L"CallRejectMsgsScene";
+const wchar_t* IDSCN_SCENE_SPEED_DIAL = L"SpeedDialScene";
+const wchar_t* IDSCN_SCENE_MORE_OPTIONS = L"MoreOptionsScene";
+const wchar_t* IDSCN_SCENE_CALL_STATUSTONES = L"CallStatusTonesScene";
+const wchar_t* IDSCN_SCENE_CALLTYPE_FORWARD = L"CallTypeForwardScene";
+const wchar_t* IDSCN_SCENE_CALL_FORWARD_OPTIONS = L"CallForwardMenuScene";
+const wchar_t* IDSCN_SCENE_CALLTYPE_BARRING = L"CallTypeBarringScene";
+const wchar_t* IDSCN_SCENE_CALL_BARRING_OPTIONS = L"CallBarringMenuScene";
+const wchar_t* IDSCN_SCENE_CALL_WAITING_OPTIONS = L"CallWaitingMenuScene";
+const wchar_t* IDSCN_SCENE_ADD_REJECT_NUMBER = L"AddRejectNumberScene";
+const wchar_t* IDSCN_SCENE_AUTO_AREA_CODE = L"AutoAreaCodeScene";
+const wchar_t* IDSCN_SCENE_ADD_REJECT_MSG = L"AddRejectMsgScene";
+const wchar_t* IDSCN_SCENE_EDIT_REJECT_MSG = L"EditRejectMsgScene";
+const wchar_t* IDSCN_SCENE_FORWARD_TO_NUMBER = L"ForwardToNumberScene";
+const wchar_t* IDSCN_SCENE_NOREPLY_FORWARD_TO_NUMBER = L"NoReplyForwardToNumberScene";
+const wchar_t* IDSCN_SCENE_SET_BARRING_PWD = L"SetBarringPwdScene";
+const wchar_t* IDSCN_SCENE_DEL_NUMBER = L"DeleteNumbersScene";
+const wchar_t* IDSCN_SCENE_DEL_MESSAGE = L"DeleteMessagesScene";
+//Dialer & Call Log Scene names
+const wchar_t* IDSCN_DIALER = L"SceneDialer";
+const wchar_t* IDSCN_CALL_LOG = L"SceneCallLog";
+const wchar_t* IDSCN_CALL_LOG_DETAILS = L"SceneCallLogDetails";
+const wchar_t* IDSCN_EMERGENCY_DIAL = L"SceneEmergencyDial";
+
+const wchar_t* TYPE_VIDEO = L"type:video";
+const wchar_t* TYPE_VOICE = L"type:voice";
+const wchar_t* TYPE_SMS = L"type:SMS";
+const wchar_t* TEL = L"tel:";
+const wchar_t* TO = L"to:";
+
+const wchar_t* OPERATION_ID_PICK = L"http://tizen.org/appcontrol/operation/pick";
+const wchar_t* OPERATION_ID_VIEW = L"http://tizen.org/appcontrol/operation/view";
+const wchar_t* OPERATION_ID_ADD = L"http://tizen.org/appcontrol/operation/add";
+const wchar_t* OPERATION_ID_EDIT = L"http://tizen.org/appcontrol/operation/edit";
+const wchar_t* OPERATION_ID_CONFIGURE = L"http://tizen.org/appcontrol/operation/configure";
+const wchar_t* OPERATION_ID_CAPTURE = L"http://tizen.org/appcontrol/operation/capture";
+const wchar_t* OPERATION_ID_CALL = L"http://tizen.org/appcontrol/operation/call";
+const wchar_t* OPERATION_ID_COMPOSE = L"http://tizen.org/appcontrol/operation/compose";
+const wchar_t* OPERATION_ID_DIAL = L"http://tizen.org/appcontrol/operation/dial";
+
+const wchar_t* PROVIDER_ID_CAMERA = L"http://tizen.org/appcontrol/provider/camera";
+const wchar_t* PROVIDER_ID_GALLERY = L"http://tizen.org/appcontrol/provider/gallery";
+const wchar_t* PROVIDER_ID_CALL = L"http://tizen.org/appcontrol/provider/call";
+const wchar_t* PROVIDER_ID_MESSAGE = L"http://tizen.org/appcontrol/provider/message";
+const wchar_t* PROVIDER_ID_EMAIL = L"http://tizen.org/appcontrol/provider/email";
+const wchar_t* PROVIDER_ID_MEDIA = L"http://tizen.org/appcontrol/provider/media";
+const wchar_t* PROVIDER_ID_CONTACTS = L"f9uev8hsyo.Contacts";
+
+const wchar_t* RETURN_TYPE_PHONE = L"phone";
+const wchar_t* RETURN_TYPE_EMAIL = L"Email";
+const wchar_t* RETURN_TYPE_CONTACT_ID = L"contactId";
+
+//Constants used in AppControl requests
+const wchar_t* DELIMITER = L":";
+const wchar_t* LAUNCHTYPE = L"launch-type";
+const wchar_t* PARAM_ORIGIN_MT = L"MT";
+const wchar_t* CALL_HANDLE = L"handle";
+const wchar_t* CONTACT_NUMBER = L"number";
+const wchar_t* PARAM_CALL_VALUE_VOICE = L"voice";
+const wchar_t* PARAM_CALL_TYPE = L"type";
+const wchar_t* PARAM_PHONE_NUMBER = L"tel";
+const wchar_t* INPUT_TYPE_PHONE = L"phone";
+const wchar_t* MESSAGE_TYPE = L"type";
+const wchar_t* MESSAGE_SMS_TYPE = L"SMS";
+const wchar_t* MESSAGE_TEXT = L"text";
+const wchar_t* MESSAGE_TO = L"to";
+
+const wchar_t* SELECTION_MODE = L"selectionMode";
+const wchar_t* RETURN_TYPE = L"returnType";
+const wchar_t* SELECTION_MODE_SINGLE = L"single";
+const wchar_t* RETURN_KEY_VALUE = L"value";
+
+//Dimensions for Small photo of caller/callee.
+const int W_SMALL_PHOTO = 366;
+const int H_SMALL_PHOTO = 366;
+const int W_CONFERENCE_PHOTO = 720;
+const int H_CONFERENCE_PHOTO = 370;
+//Maximum number of calls
+const int IDI_MAX_ACTIVE_CALLS = 2;
+const int IDI_MAX_CONF_CALL_PARTICIPANTS = 5;
+//Constants used for custom list item in message panel in Incoming call screen
+const int IDA_FORMAT_SENDTEXT = 500;
+//Constants
+const wchar_t* IDI_KEY2_TXT = L"ABC";
+const wchar_t* IDI_KEY3_TXT = L"DEF";
+const wchar_t* IDI_KEY4_TXT = L"GHI";
+const wchar_t* IDI_KEY5_TXT = L"JKL";
+const wchar_t* IDI_KEY6_TXT = L"MNO";
+const wchar_t* IDI_KEY7_TXT = L"PQRS";
+const wchar_t* IDI_KEY8_TXT = L"TUV";
+const wchar_t* IDI_KEY9_TXT = L"WXYZ";