--- /dev/null
+# Target name and AppID
+## TODO : set application name and PKG_ID
+SET(this_target Contacts)
+SET(PKG_ID f9uev8hsyo)
+
+# include directory
+INCLUDE_DIRECTORIES(
+ /usr/include/osp
+ 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-media osp-content osp-image osp-social pthread)
+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/${PKG_ID}/bin)
+
+# Copy resource
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/manifest.xml DESTINATION ../usr/apps/${PKG_ID}/info)
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res DESTINATION ../usr/apps/${PKG_ID})
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/shared DESTINATION ../usr/apps/${PKG_ID})
--- /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 CtAccountListItemProvider.h
+ * @brief This is the header file for the AccountListItemProvider class.
+ */
+
+#ifndef _CT_ACCOUNT_LIST_ITEM_PROVIDER_H_
+#define _CT_ACCOUNT_LIST_ITEM_PROVIDER_H_
+
+#include <FBase.h>
+#include <FUi.h>
+
+class ContactListPresentationModel;
+
+class AccountListItemProvider
+ : public Tizen::Ui::Controls::IListViewItemProvider
+{
+public:
+ AccountListItemProvider(Tizen::Ui::Controls::ListView* pAccountListView, ContactListPresentationModel* pContactListPresentationModel);
+ virtual ~AccountListItemProvider(void);
+
+ 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:
+ Tizen::Ui::Controls::ListView* __pAccountListView;
+ ContactListPresentationModel* __pContactListPresentationModel;
+};
+
+
+#endif /* _CT_ACCOUNT_LIST_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 CtContactDetailsForm.h
+ * @brief This is the header file for the ContactDetailsForm class.
+ */
+
+#ifndef _CT_CONTACT_DETAILS_FORM_H_
+#define _CT_CONTACT_DETAILS_FORM_H_
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FUi.h>
+#include "CtIContactEventListener.h"
+
+class ContactPresentationModel;
+
+class ContactDetailsForm
+ : public Tizen::Ui::Controls::Form
+ , public Tizen::App::IAppControlResponseListener
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::ITouchEventListener
+ , public Tizen::Ui::Controls::IFormBackEventListener
+ , public Tizen::Ui::Controls::IListViewItemEventListener
+ , public Tizen::Ui::Controls::IScrollEventListener
+ , public Tizen::Ui::Controls::ITableViewItemEventListener
+ , public Tizen::Ui::Controls::ITableViewItemProvider
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public IContactEventListener
+{
+public:
+ ContactDetailsForm(void);
+ virtual ~ContactDetailsForm(void);
+ void Initialize(void);
+
+ 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);
+ 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 int GetItemCount(void);
+ virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int itemIndex, int itemWidth);
+ virtual bool DeleteItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ virtual void UpdateItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ virtual int GetDefaultItemHeight(void);
+
+ virtual void OnTableViewItemStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
+ virtual void OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated);
+ virtual void OnTableViewItemReordered(Tizen::Ui::Controls::TableView& tableView, int itemIndexFrom, int itemIndexTo);
+
+ 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 OnContactsChanged(void);
+ virtual void OnCategoriesChanged(void);
+
+ virtual void OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData);
+
+ virtual void OnScrollEndReached (Tizen::Ui::Control &source, Tizen::Ui::Controls::ScrollEndEvent type);
+ virtual void OnScrollPositionChanged (Tizen::Ui::Control &source, int scrollPos);
+ virtual void OnScrollStopped (Tizen::Ui::Control &source);
+
+ 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 OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus status);
+
+private:
+ void InitializeDetailItemList(void);
+ result InitializeAppControl(Tizen::Base::Collection::IList* pArgs);
+
+ void AddMainInfo(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem);
+ void AddProperty(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, int detailProperty, int itemSubIndex);
+ void AddImAddress(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, int itemSubIndex);
+ void AddGroup(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem);
+ void AddRingTone(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem);
+ void AddShareButtons(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem);
+
+ void CreateValueTypeItem(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, const Tizen::Base::String& value, const Tizen::Base::String& type);
+ void CreateTitleValueTypeItem(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, const Tizen::Base::String& title, const Tizen::Base::String& value, const Tizen::Base::String& type = L"");
+
+ result LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, const Tizen::Base::String& launchType = L"", const Tizen::Base::String& value = L"");
+ result ParseAppControlArgument(const Tizen::Base::String& argument, Tizen::Base::String& type, Tizen::Base::String& content);
+
+ void AddGroupStylePanel(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::GroupStyle groupStyle);
+
+ void ShowDefaultSelectorPopup(void);
+ void HideDefaultSelectorPopup(void);
+
+private:
+ Tizen::Ui::Controls::TableView* __pTableView;
+ Tizen::Ui::Controls::ContextMenu* __pContextMenuCall;
+ Tizen::Ui::Controls::ContextMenu* __pContextMenuShare;
+ Tizen::Ui::Controls::ContextMenu* __pContextMenuMore;
+ Tizen::Ui::Controls::Popup* __pDefaultSelectorPopup;
+ Tizen::Base::Collection::ArrayListT<int>* __pItemList;
+ Tizen::Base::String __appControlViewType;
+ ContactPresentationModel* __pPresentationModel;
+ int __scrolledDistance;
+};
+
+
+#endif /* _CT_CONTACT_DETAILS_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 CtContactEditorForm.h
+ * @brief This is the header file for the ContactEditorForm class.
+ */
+
+#ifndef _CT_CONTACT_EDITOR_FORM_H_
+#define _CT_CONTACT_EDITOR_FORM_H_
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FUi.h>
+#include "CtTypes.h"
+
+class ContactPresentationModel;
+
+class ContactEditorForm
+ : public Tizen::Ui::Controls::Form
+ , public Tizen::App::IAppControlResponseListener
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::IDateChangeEventListener
+ , public Tizen::Ui::IFocusEventListener
+ , public Tizen::Ui::IKeypadEventListener
+ , public Tizen::Ui::ITextEventListener
+ , public Tizen::Ui::ITouchEventListener
+ , public Tizen::Ui::Controls::IExpandableEditAreaEventListener
+ , public Tizen::Ui::Controls::IGroupedTableViewItemEventListener
+ , public Tizen::Ui::Controls::IGroupedTableViewItemProvider
+ , public Tizen::Ui::Controls::IScrollEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+{
+public:
+ ContactEditorForm(void);
+ virtual ~ContactEditorForm(void);
+ void Initialize(void);
+
+ 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);
+
+ virtual void OnDateChanged(const Tizen::Ui::Control& source, int year, int month, int day);
+ virtual void OnDateChangeCanceled(const Tizen::Ui::Control& source);
+
+ virtual void OnExpandableEditAreaLineAdded (Tizen::Ui::Controls::ExpandableEditArea &source, int newLineCount);
+ virtual void OnExpandableEditAreaLineRemoved (Tizen::Ui::Controls::ExpandableEditArea &source, int newLineCount);
+
+ virtual void OnFocusGained(const Tizen::Ui::Control& source);
+ virtual void OnFocusLost(const Tizen::Ui::Control& source);
+
+ 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);
+
+ virtual void OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData);
+
+ virtual Tizen::Ui::Controls::TableViewGroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ virtual int GetDefaultGroupItemHeight(void);
+ virtual int GetDefaultItemHeight(void);
+ virtual int GetGroupCount(void);
+ virtual int GetItemCount(int groupIndex);
+ virtual void UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem *pItem);
+ virtual void UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem *pItem);
+
+ virtual void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem *pContextItem, bool activated);
+ virtual void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem *pItem, Tizen::Ui::Controls::TableViewItemStatus status);
+ virtual void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem *pItem, Tizen::Ui::Controls::TableViewItemStatus status);
+
+ virtual void OnTextValueChanged(const Tizen::Ui::Control& source);
+ virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source);
+
+ 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 OnScrollEndReached (Tizen::Ui::Control &source, Tizen::Ui::Controls::ScrollEndEvent type);
+ virtual void OnScrollPositionChanged (Tizen::Ui::Control &source, int scrollPos);
+ virtual void OnScrollStopped (Tizen::Ui::Control &source);
+
+private:
+ Tizen::Ui::Controls::TableViewItem* GetThumbnailField(int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetNameFields(int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetPhoneNumberFields(int itemIndex, int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetEmailFields(int itemIndex, int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetAddressFields(int itemIndex, int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetImAddressFields(int itemIndex, int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetUrlFields(int itemIndex, int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetGroupsField(int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetBirthdayField(int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetNoteField(int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetRingtoneField(int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetMoreInformationField(int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetDefaultPhoneNumberItem(int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetInputFieldN(int groupIndex, int itemIndex, int itemWidth, Tizen::Ui::Controls::EditFieldStyle style, const Tizen::Base::String& titleText, const Tizen::Base::String& guideText, const Tizen::Base::String& text = L"", bool isDeleteButton = false);
+ result DeleteInputField(int groupIndex, int itemIndex);
+ void AddThumbnailControls(Tizen::Ui::Controls::TableViewItem& item);
+
+ void AddHorizontalDivider(Tizen::Ui::Controls::TableViewItem* pItem, int positionY, int width);
+ void AddVerticalDivider(Tizen::Ui::Controls::TableViewItem* pItem, int positionX, int positionY);
+
+ result SetAsDefaultPhoneNumber(int index);
+ result ChangeNameFieldStatus(void);
+ result SaveNameFields(void);
+ result SaveContactData(bool isSaved = true);
+ bool IsSaveContactValid(void);
+ void SetSaveButtonEnabled(bool enable);
+ bool IsMoreInformationButtonVisible(void);
+
+ void HideKeypad(void);
+ void ShowKeypad(void);
+
+ void ShowDefaultPhoneNumberContextMenu(const Tizen::Graphics::Point& position);
+ void ShowMoreInformationContextMenu(const Tizen::Graphics::Point& position);
+ void ShowTypeContextMenu(DetailPhoneNumberType currentType, const Tizen::Graphics::Point& position, int itemTag);
+ void ShowTypeContextMenu(DetailEmailType currentType, const Tizen::Graphics::Point& position, int itemTag);
+ void ShowTypeContextMenu(DetailAddressType currentType, const Tizen::Graphics::Point& position, int itemTag);
+ void ShowTypeContextMenu(DetailUrlType currentType, const Tizen::Graphics::Point& position, int itemTag);
+ void ShowTypeContextMenu(DetailImAddressType currentType, const Tizen::Graphics::Point& position, int itemTag);
+
+ result ParseAppControlArgument(const Tizen::Base::String& argument, Tizen::Base::String& type, Tizen::Base::String& content);
+ result LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId);
+
+private:
+ bool __isExpandable;
+ bool __isAppControl;
+ bool __isJobTitleEnabled;
+ bool __isDepartmentEnabled;
+ bool __isDefaultPhoneNumberButtonEnabled;
+ int __scrolledDistance;
+ Tizen::Base::Collection::ArrayList* __pPhoneNumberFieldItem;
+ Tizen::Base::Collection::ArrayList* __pEmailFieldItem;
+ Tizen::Base::Collection::ArrayList* __pAddressFieldItem;
+ Tizen::Base::Collection::ArrayList* __pImAddressFieldItem;
+ Tizen::Base::Collection::ArrayList* __pUrlFieldItem;
+ Tizen::Ui::Control* __pCurrentFocusedItem;
+ Tizen::Ui::Control* __pMoreInformationItem;
+ Tizen::Ui::Controls::ContextMenu* __pDefaultPhoneNumberContextMenu;
+ Tizen::Ui::Controls::ContextMenu* __pMoreInformationContextMenu;
+ Tizen::Ui::Controls::ContextMenu* __pThumbnailContextMenu;
+ Tizen::Ui::Controls::ContextMenu* __pTypeContextMenu;
+ Tizen::Ui::Controls::GroupedTableView* __pTableView;
+ Tizen::Ui::Controls::TableViewItem* __pDefaultPhoneNumberItem;
+ Tizen::Ui::Controls::TableViewItem* __pNameFieldItem;
+ Tizen::Ui::Controls::TableViewItem* __pNoteFieldItem;
+ ContactPresentationModel* __pPresentationModel;
+};
+
+#endif /* _CONTACT_EDITOR_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 CtContactListEditorPanel.h
+ * @brief This is the header file for the ContactListEditorPanel class.
+ */
+
+#ifndef _CT_CONTACT_LIST_EDITOR_PANEL_H_
+#define _CT_CONTACT_LIST_EDITOR_PANEL_H_
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FUi.h>
+#include "CtContactValueListItemProvider.h"
+#include "CtIContactEventListener.h"
+
+class ContactListPresentationModel;
+class ContactValueListItemProvider;
+class SearchListEventListener;
+
+class ContactListEditorPanel
+ : public Tizen::Ui::Controls::Panel
+ , public Tizen::Base::Runtime::ITimerEventListener
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::IKeypadEventListener
+ , public Tizen::Ui::ITextEventListener
+ , public Tizen::Ui::ITouchEventListener
+ , public Tizen::Ui::IWindowEventListener
+ , public Tizen::Ui::Controls::IFastScrollListener
+ , public Tizen::Ui::Controls::IGroupedListViewItemEventListener
+ , public Tizen::Ui::Controls::IGroupedListViewItemProvider
+ , public Tizen::Ui::Controls::IListViewItemEventListener
+ , public Tizen::Ui::Controls::ISearchBarEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public IContactEventListener
+{
+public:
+ ContactListEditorPanel(void);
+ virtual ~ContactListEditorPanel(void);
+ void Initialize(void);
+
+ result RemoveContactList(void);
+
+ 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 int GetGroupCount(void);
+ virtual int GetItemCount(int groupIndex);
+ virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ virtual Tizen::Ui::Controls::GroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth);
+
+ virtual void OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, Tizen::Ui::Controls::SearchBarMode mode);
+
+ virtual void OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);
+ virtual void OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus state);
+ virtual void OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction);
+
+ 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 OnFastScrollIndexSelected(Tizen::Ui::Control& source, Tizen::Base::String& index);
+
+ virtual void OnTextValueChanged(const Tizen::Ui::Control& source);
+ virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source);
+
+ virtual void OnContactsChanged(void);
+ virtual void OnCategoriesChanged(void);
+
+ 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 OnWindowActivated(const Tizen::Ui::Window &source);
+ virtual void OnWindowDeactivated(const Tizen::Ui::Window &source);
+
+ virtual void OnTimerExpired(Tizen::Base::Runtime::Timer &timer);
+
+ 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);
+
+private:
+ result UpdateBottomLabel(void);
+ void ShowContactValuePopup(int groupIndex, int itemIndex);
+ void HideContactValuePopup(void);
+ void ShowDeletePopup(void);
+ void HideDeletePopup(void);
+ int GetCheckedContactCounts(void);
+ void ReturnValues(RequestId requestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue);
+ void ReturnMultipleValues(void);
+ void ReturnResultFailed(void);
+
+private:
+ Tizen::Base::Collection::HashMap* __pTempContactValueHashMap;
+ Tizen::Base::Runtime::Timer __deleteContactTimer;
+ Tizen::Ui::Controls::CheckButton* __pSelectAll;
+ Tizen::Ui::Controls::GroupedListView* __pListView;
+ Tizen::Ui::Controls::GroupedListView* __pSearchListView;
+ Tizen::Ui::Controls::SearchBar* __pSearchBar;
+ Tizen::Ui::Controls::Label* __pEmptyImageLabel;
+ Tizen::Ui::Controls::Label* __pEmptyCommentLabel;
+ Tizen::Ui::Controls::Label* __pBottomLabel;
+ Tizen::Ui::Controls::Popup* __pMultipleContactValuePopup;
+ Tizen::Ui::Controls::Popup* __pDeletePopup;
+ ContactValueListItemProvider* __pContactValueListEvent;
+ ContactListPresentationModel* __pPresentationModel;
+ SearchListEventListener* __pSearchListEvent;
+ bool __isContactRemoved;
+ int __selectedIndex;
+ int __selectedSearchIndex;
+ int __deleteGroupIndex;
+ int __deleteItemIndex;
+};
+
+#endif /* _CT_CONTACT_LIST_EDITOR_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 CtContactListItem.h
+ * @brief This is the header file for the ContactListItem class.
+ */
+
+#ifndef _CT_CONTACT_LIST_ITEM_H_
+#define _CT_CONTACT_LIST_ITEM_H_
+
+#include <FBase.h>
+#include <FGraphics.h>
+#include <FUi.h>
+
+
+class ContactListItem
+ : public Tizen::Ui::Controls::ICustomElement
+{
+public:
+ ContactListItem(const Tizen::Base::String name, Tizen::Graphics::Bitmap* pThumbnail);
+ virtual ~ContactListItem(void);
+
+ virtual bool OnDraw(Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& rect, Tizen::Ui::Controls::ListItemDrawingStatus itemStatus);
+
+private:
+ Tizen::Base::String __name;
+ Tizen::Graphics::Bitmap* __pThumbnail;
+};
+
+#endif /* _CT_CONTACT_LIST_ITEM_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 CtContactListPanel.h
+ * @brief This is the header file for the ContactListPanel class.
+ */
+
+#ifndef _CT_CONTACT_LIST_PANEL_H_
+#define _CT_CONTACT_LIST_PANEL_H_
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FUi.h>
+#include "CtContactValueListItemProvider.h"
+#include "CtIContactsAppStateChangeEventListener.h"
+#include "CtIContactEventListener.h"
+
+class AccountListItemProvider;
+class ContactListPresentationModel;
+class SearchListEventListener;
+
+class ContactListPanel
+ : public Tizen::Ui::Controls::Panel
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::IKeypadEventListener
+ , public Tizen::Ui::ITextEventListener
+ , public Tizen::Ui::ITouchEventListener
+ , public Tizen::Ui::Controls::IFastScrollListener
+ , public Tizen::Ui::Controls::IGroupedListViewItemEventListener
+ , public Tizen::Ui::Controls::IGroupedListViewItemProvider
+ , public Tizen::Ui::Controls::IListViewItemEventListener
+ , public Tizen::Ui::Controls::ISearchBarEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public IContactsAppStateChangeEventListener
+ , public IContactEventListener
+{
+public:
+ ContactListPanel(void);
+ virtual ~ContactListPanel(void);
+ void Initialize(void);
+
+ 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 int GetGroupCount(void);
+ virtual int GetItemCount(int groupIndex);
+ virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ virtual Tizen::Ui::Controls::GroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth);
+
+ virtual void OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, Tizen::Ui::Controls::SearchBarMode mode);
+
+ virtual void OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);
+ virtual void OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus state);
+ virtual void OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction);
+
+ 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 OnFastScrollIndexSelected (Tizen::Ui::Control& source, Tizen::Base::String& index);
+
+ virtual void OnTextValueChanged(const Tizen::Ui::Control& source);
+ virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source);
+
+ virtual void OnContactsChanged(void);
+ virtual void OnCategoriesChanged(void);
+
+ 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 OnForeground(void);
+ virtual void OnBackground(void);
+
+ 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);
+
+private:
+ void ShowDeletePopup(void);
+ void HideDeletePopup(void);
+ void ShowAccountPopup(void);
+ void HideAccountPopup(void);
+ void ShowContactValuePopup(int groupIndex, int itemIndex);
+ void HideContactValuePopup(void);
+ void ReturnValues(RequestId requestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue);
+ void AddContactValueOnList(const Tizen::Base::Collection::IList* pList, int index, Tizen::Base::Collection::HashMap* pReturnValue);
+ result LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, const Tizen::Base::String& argument, const Tizen::Base::String& type = L"");
+
+private:
+ Tizen::Base::Collection::ArrayList* __pArgList;
+ Tizen::Ui::Controls::GroupedListView* __pListView;
+ Tizen::Ui::Controls::GroupedListView* __pSearchListView;
+ Tizen::Ui::Controls::Popup *__pAccountPopup;
+ Tizen::Ui::Controls::Popup* __pDeletePopup;
+ Tizen::Ui::Controls::Popup* __pMultipleContactValuePopup;
+ Tizen::Ui::Controls::SearchBar* __pSearchBar;
+ Tizen::Ui::Controls::Label* __pEmptyImageLabel;
+ Tizen::Ui::Controls::Label* __pEmptyCommentLabel;
+ Tizen::Ui::Controls::ContextMenu* __pContextMenuMore;
+
+ AccountListItemProvider* __pAccountListEvent;
+ ContactListPresentationModel* __pPresentationModel;
+ ContactValueListItemProvider* __pContactValueListEvent;
+ SearchListEventListener* __pSearchListEvent;
+
+ int __sweptItemIndex;
+ int __selectedIndex;
+};
+
+#endif /* _CT_CONTACT_LIST_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 CtContactListPresentationModel.h
+ * @brief This is the header file for the ContactListPresentationModel class.
+ */
+
+#ifndef _CT_CONTACT_LIST_PRESENTATION_MODEL_H_
+#define _CT_CONTACT_LIST_PRESENTATION_MODEL_H_
+
+#include <FBase.h>
+#include <FGraphics.h>
+#include <FSocial.h>
+#include "CtTypes.h"
+
+class IContactEventListener;
+
+class ContactListPresentationModel
+ : public Tizen::Social::IAddressbookEventListener
+{
+public:
+ result InitializeContactList(Tizen::Base::Collection::IList* pContactIdList = null);
+
+ Tizen::Base::String GetKey(int groupIndex);
+ Tizen::Base::String GetAllKeys(void);
+ int GetKeyCount(void);
+ int GetKeyIndex(const Tizen::Base::String& key);
+ result GetContactItemInfoN(int groupIndex, int itemIndex, Tizen::Base::String& name, Tizen::Graphics::Bitmap*& pThumbnail);
+ int GetContactCount(void);
+ int GetContactCount(int groupIndex);
+ result RemoveContact(int groupIndex, int itemIndex, bool isUpdated = true);
+
+ Tizen::Social::RecordId GetContactId(int groupIndex, int itemIndex);
+ virtual Tizen::Base::String GetName(int groupIndex, int itemIndex);
+ virtual Tizen::Base::Collection::IList* GetAllPhoneNumbersN(int groupIndex, int itemIndex);
+ virtual Tizen::Base::Collection::IList* GetAllEmailsN(int groupIndex, int itemIndex);
+ Tizen::Base::String GetDefaultPhoneNumber(int groupIndex, int itemIndex);
+ Tizen::Base::String GetDefaultEmail(int groupIndex, int itemIndex);
+
+ result SetSearchText(const Tizen::Base::String& searchText, SearchType searchType);
+ Tizen::Base::String GetSearchText(void);
+ result GetSearchedContactItemInfo(int index, Tizen::Base::String& name, Tizen::Graphics::Bitmap*& pThumbnail);
+ int GetSearchedContactCount(void);
+ result GetItemMainIndex(int searchedItemIndex, int& groupIndex, int& itemIndex);
+ void ResetSearchedContactList(void);
+
+ int GetAddressbookCount(void);
+ Tizen::Base::String GetAddressbookName(int index);
+ Tizen::Base::String GetCurrentAddressbook(void);
+
+ bool IsContactInCategory(int groupIndex, int itemIndex, Tizen::Social::RecordId categoryId);
+ bool IsContactInCategory(int groupIndex, Tizen::Social::RecordId categoryId);
+ bool IsSearchedContactInCategory(int index, Tizen::Social::RecordId categoryId);
+
+ Tizen::Base::String ExportToVcard(int groupIndex, int itemIndex);
+ Tizen::Base::String ExportToVcard(const Tizen::Base::Collection::IList& contactList);
+
+ void AddContactChangeListener(const IContactEventListener& listener);
+ void RemoveContactChangeListener(const IContactEventListener& listener);
+
+ virtual void OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList);
+ virtual void OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList);
+
+ static ContactListPresentationModel* GetInstance(void);
+
+protected:
+ ContactListPresentationModel(void);
+ virtual ~ContactListPresentationModel(void);
+
+ virtual Tizen::Social::Person* GetPersonAt(int groupIndex, int itemIndex);
+ virtual result Construct(void);
+ virtual result CreateContactList(void);
+ virtual Tizen::Base::Collection::IList* GetSearchedContactListN(const Tizen::Base::String& searchText, SearchType searchType);
+ virtual result TrimListForAppControl(Tizen::Base::Collection::IList*& pContactList);
+
+private:
+ static void CreateInstance(void);
+ static void DestroyInstance(void);
+
+protected:
+ Tizen::Base::Collection::MultiHashMap* _pContactList;
+ Tizen::Base::Collection::ArrayList* _pContactChangeListenerList;
+ Tizen::Base::Collection::ArrayList* _pGroupIndexList;
+ Tizen::Social::Addressbook* _pAddressbook;
+ bool _isSearchingPhoneNumber;
+
+private:
+ Tizen::Base::Collection::IList* __pSearchedContactList;
+ Tizen::Base::Collection::IList* __pExcludedContactIdList;
+ Tizen::Base::String __searchedText;
+ bool __isContactChanged;
+
+ static ContactListPresentationModel* __pInstance;
+};
+
+#endif /* CONTACTS_APP_CONTACTLIST_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 CtContactPresentationModel.h
+ * @brief This is the header file for the ContactPresentationModel class.
+ */
+
+#ifndef _CT_CONTACT_PRESENTATION_MODEL_H_
+#define _CT_CONTACT_PRESENTATION_MODEL_H_
+
+#include <FBase.h>
+#include <FSocial.h>
+#include "CtTypes.h"
+
+class IContactEventListener;
+
+class ContactPresentationModel
+ : public Tizen::Social::IAddressbookEventListener
+{
+public:
+ ContactPresentationModel(void);
+ virtual ~ContactPresentationModel(void);
+
+ result Construct(void);
+ result PrepareNewContact(void);
+ result SetContactId(const Tizen::Social::RecordId contactId, bool isEditing = false);
+ result SetVcfPath(const Tizen::Base::String& filePath, bool isNewContact = false);
+ Tizen::Base::String GetVcfPath(void);
+ Tizen::Social::RecordId GetContactId(void);
+ Tizen::Base::String GetValue(DetailProperty id, int index = -1);
+ result GetBirthday(Tizen::Base::DateTime& value);
+ Tizen::Base::String GetType(DetailProperty id, int index = -1);
+ Tizen::Graphics::Bitmap* GetThumbnailN(void);
+ Tizen::Graphics::Bitmap* GetAccountIconN(const Tizen::Base::String& account);
+ result SetValue(DetailProperty id, const Tizen::Base::String& value, int index = 0);
+ result SetCustomType(DetailProperty id, const Tizen::Base::String& value, int index);
+ Tizen::Base::String GetCustomType(DetailProperty id, int index);
+ result SetBirthday(const Tizen::Base::DateTime& value);
+ result SetPhoneNumber(DetailPhoneNumberType type, const Tizen::Base::String& value, int index = 0);
+ result SetEmail(DetailEmailType type, const Tizen::Base::String& value, int index = 0);
+ result SetAddress(DetailAddressType type, const Tizen::Base::String& value, int index = 0);
+ result SetUrl(DetailUrlType type, const Tizen::Base::String& value, int index = 0);
+ result SetImAddress(DetailImAddressType type, const Tizen::Base::String& value, int index = 0);
+ result SetThumbnail(const Tizen::Base::String& filePath);
+ result SetOrganization(DetailProperty id, const Tizen::Base::String& value);
+ result AddAddressBook(void);
+ int GetMultiValuesCount(DetailProperty id);
+ int GetCategoryCount(void);
+ int GetDefaultNumberIndex(void);
+ Tizen::Base::Collection::IList* GetAssignedCategoryIdListN(void);
+ result AddContactToCategory(const Tizen::Social::RecordId categoryId);
+ result RemoveContactFromAllCategories(void);
+ result AddContact(void);
+ result UpdateContact(void);
+ result RemoveContact(void);
+ bool IsContactRemoved(void);
+ void AddContactChangeListener(const IContactEventListener& listener);
+ void RemoveContactChangeListener(const IContactEventListener& listener);
+
+ Tizen::Base::String GetPhoneNumberTypeString(DetailPhoneNumberType type);
+ Tizen::Base::String GetEmailTypeString(DetailEmailType type);
+ Tizen::Base::String GetAddressTypeString(DetailAddressType type);
+ Tizen::Base::String GetUrlTypeString(DetailUrlType type);
+ Tizen::Base::String GetImAddressTypeString(DetailImAddressType type);
+
+ DetailPhoneNumberType GetPhoneNumberType(int index);
+ DetailEmailType GetEmailType(int index);
+ DetailAddressType GetAddressType(DetailProperty id, int index);
+ DetailUrlType GetUrlType(int index);
+ DetailImAddressType GetImAddressType(int index);
+
+ void SetAsFavorite(bool isFavorite);
+ bool IsFavorite(void);
+
+ virtual void OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList);
+ virtual void OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList);
+
+private:
+ Tizen::Base::String GetCategory(void);
+ Tizen::Base::String GetRingtone(void);
+ Tizen::Base::String GetDefaultNumber(DetailPhoneNumberType& type);
+ Tizen::Base::String GetPhoneNumber(int index, DetailPhoneNumberType& type);
+ Tizen::Base::String GetEmail(int index, DetailEmailType& type);
+ Tizen::Base::String GetImAddress(int index, DetailImAddressType& typeIndex);
+ Tizen::Base::String GetAddress(DetailProperty id, int index, DetailAddressType& typeIndex);
+ Tizen::Base::String GetUrl(int index, DetailUrlType& typeIndex);
+ Tizen::Base::String GetDateTime(DetailProperty id);
+ result SetAddress(DetailProperty id, const Tizen::Base::String& value);
+ result GetDefaultCategoryName(Tizen::Base::String& categoryName);
+
+private:
+ Tizen::Base::Collection::ArrayList* __pAssignedCategoryList;
+ Tizen::Base::Collection::ArrayList* __pContactListenerList;
+ Tizen::Base::String __vcfPath;
+ Tizen::Social::Contact* __pContact;
+ Tizen::Social::Addressbook* __pAddressbook;
+ Tizen::Social::Address __address;
+ int __defaultNumberIndex;
+ bool __newMode;
+ bool __isEditing;
+};
+
+
+#endif /* _CT_CONTACT_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 CtContactSelectorForm.h
+ * @brief This is the header file for the ContactSelectorForm class.
+ */
+
+#ifndef _CT_CONTACT_SELETOR_FORM_H_
+#define _CT_CONTACT_SELETOR_FORM_H_
+
+#include <FBase.h>
+#include <FSocial.h>
+#include <FUi.h>
+#include "CtIContactEventListener.h"
+
+class ContactListPresentationModel;
+class SearchListEventListener;
+
+class ContactSelectorForm
+ : public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::IKeypadEventListener
+ , public Tizen::Ui::ITextEventListener
+ , public Tizen::Ui::ITouchEventListener
+ , public Tizen::Ui::Controls::IFastScrollListener
+ , public Tizen::Ui::Controls::IGroupedListViewItemEventListener
+ , public Tizen::Ui::Controls::IGroupedListViewItemProvider
+ , public Tizen::Ui::Controls::ISearchBarEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public IContactEventListener
+{
+public:
+ ContactSelectorForm(void);
+ virtual ~ContactSelectorForm(void);
+
+ void Initialize(void);
+
+ 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 OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, Tizen::Ui::Controls::SearchBarMode mode);
+
+ virtual void OnTextValueChanged(const Tizen::Ui::Control& source);
+ virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source);
+
+ virtual int GetGroupCount(void);
+ virtual int GetItemCount(int groupIndex);
+ virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ virtual Tizen::Ui::Controls::GroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth);
+
+ virtual void OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);
+ virtual void OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus state);
+ virtual void OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction);
+
+ virtual void OnFastScrollIndexSelected (Tizen::Ui::Control& source, Tizen::Base::String& index);
+
+ virtual void OnContactsChanged(void);
+ virtual void OnCategoriesChanged(void);
+
+ 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 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);
+
+private:
+ result CreateFooterButton(void);
+ void UpdateBottomLabel(void);
+
+private:
+ ContactListPresentationModel* __pPresentationModel;
+ Tizen::Ui::Controls::CheckButton* __pSelectAll;
+ Tizen::Ui::Controls::GroupedListView* __pListView;
+ Tizen::Ui::Controls::GroupedListView* __pSearchListView;
+ Tizen::Ui::Controls::Label* __pBottomLabel;
+ Tizen::Ui::Controls::SearchBar* __pSearchBar;
+ SearchListEventListener* __pSearchListEvent;
+};
+
+#endif /* _CT_CONTACT_SELETOR_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 CtContactValueListItemProvider.h
+ * @brief This is the header file for the ContactValueListItemProvider class.
+ */
+
+#ifndef _CT_CONTACT_VALUE_LIST_ITEM_PROVIDER_H_
+#define _CT_CONTACT_VALUE_LIST_ITEM_PROVIDER_H_
+
+#include <FBase.h>
+#include <FUi.h>
+
+class ContactValueListItemProvider
+ : public Tizen::Ui::Controls::IListViewItemProvider
+{
+public:
+ ContactValueListItemProvider(Tizen::Base::Collection::IList* pContactValueList);
+ virtual ~ContactValueListItemProvider(void);
+
+ 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:
+ Tizen::Base::Collection::IList* __pContactValueList;
+};
+
+
+#endif /* _CT_CONTACT_VALUE_LIST_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 CtContactsApp.h
+ * @brief This is the header file for the ContactsApp class.
+ */
+
+#ifndef _CT_CONTACTS_APP_H_
+#define _CT_CONTACTS_APP_H_
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FSystem.h>
+#include <FUi.h>
+#include "CtTypes.h"
+
+#define __SUPPORT_VIDEO_CALL 0
+
+class IContactsAppStateChangeEventListener;
+
+class ContactsApp
+ : public Tizen::App::UiApp
+ , public Tizen::App::IAppCheckpointEventListener
+ , public Tizen::App::IAppControlProviderEventListener
+ , public Tizen::System::IScreenEventListener
+ , public Tizen::System::ISettingEventListener
+{
+public:
+ ContactsApp(void);
+ virtual ~ContactsApp(void);
+
+ static Tizen::App::UiApp* CreateInstance(void);
+
+ Tizen::Base::String GetOperationId(void);
+ AppControlSelectionMode GetSelectionMode(void);
+ AppControlReturnType GetReturnType(void);
+ RequestId GetRequestId(void);
+ Tizen::Ui::Scenes::SceneId GetInitialSceneId(void);
+ Tizen::Base::Collection::IList* GetArguments(void);
+
+ void AddContactsAppChangeEventListener(const IContactsAppStateChangeEventListener& listener);
+ void RemoveContactsAppChangeEventListener(const IContactsAppStateChangeEventListener& listener);
+
+ 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);
+ void OnAppCheckpointing(Tizen::App::AppRegistry& appRegistry);
+
+ 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);
+ virtual void OnSettingChanged(Tizen::Base::String& key);
+
+private:
+ result InitializeAppControl(Tizen::Base::Collection::IList* pArg);
+ result ParseAppControlArgument(const Tizen::Base::String& argument, Tizen::Base::String& type, Tizen::Base::String& content);
+
+private:
+ Tizen::Ui::Scenes::SceneId __initialSceneId;
+ Tizen::Base::Collection::ArrayList __listenerList;
+ Tizen::Base::Collection::IList* __pArgs;
+ Tizen::Base::String __operationId;
+ AppControlSelectionMode __selectionMode;
+ AppControlReturnType __returnType;
+ RequestId __requestId;
+};
+
+#endif //_CT_CONTACTS_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 CtFavoriteListEditorPanel.h
+ * @brief This is the header file for the FavoriteListEditorPanel class.
+ */
+
+#ifndef _CT_FAVORITE_LIST_EDITOR_PANEL_H_
+#define _CT_FAVORITE_LIST_EDITOR_PANEL_H_
+
+#include <FUi.h>
+#include "CtContactValueListItemProvider.h"
+
+class FavoriteListPresentationModel;
+
+class FavoriteListEditorPanel
+ : public Tizen::Ui::Controls::Panel
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::Controls::IIconListViewItemEventListener
+ , public Tizen::Ui::Controls::IIconListViewItemProvider
+ , public Tizen::Ui::Controls::IListViewItemEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+{
+public:
+ FavoriteListEditorPanel(void);
+ virtual ~FavoriteListEditorPanel(void);
+ void Initialize(void);
+
+ void RemoveFavorites(void);
+
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+
+ virtual void OnIconListViewItemReordered(Tizen::Ui::Controls::IconListView &iconListView, int indexFrom, int indexTo);
+ virtual void OnIconListViewItemStateChanged(Tizen::Ui::Controls::IconListView &iconListView, int index, Tizen::Ui::Controls::IconListViewItemStatus status);
+ 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 Tizen::Ui::Controls::IconListViewItem* CreateItem(int index);
+ virtual bool DeleteItem(int index, Tizen::Ui::Controls::IconListViewItem *pItem);
+ virtual int GetItemCount(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);
+
+private:
+ void ReturnValues(RequestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue);
+ void ReturnMultipleValues(void);
+ void ShowContactValuePopup(int index);
+ void HideContactValuePopup(void);
+ void UpdateBottomLabel(void);
+
+private:
+ Tizen::Ui::Controls::IconListView* __pFavoriteListView;
+ Tizen::Ui::Controls::Popup* __pMultipleContactValuePopup;
+ Tizen::Ui::Controls::Label* __pEmptyImageLabel;
+ Tizen::Ui::Controls::Label* __pEmptyCommentLabel;
+ Tizen::Ui::Controls::Label* __pBottomLabel;
+ Tizen::Base::Collection::HashMap* __pTempContactValueHashMap;
+
+ FavoriteListPresentationModel* __pPresentationModel;
+ ContactValueListItemProvider* __pContactValueListProvider;
+};
+
+#endif /* _CT_FAVORITE_LIST_EDITOR_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 CtFavoriteListPanel.h
+ * @brief This is the header file for the FavoriteListPanel class.
+ */
+
+#ifndef _CT_FAVORITE_LIST_PANEL_H_
+#define _CT_FAVORITE_LIST_PANEL_H_
+
+#include <FApp.h>
+#include <FUi.h>
+
+class ContactValueListItemProvider;
+class FavoriteListPresentationModel;
+
+class FavoriteListPanel
+ : public Tizen::Ui::Controls::Panel
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::Controls::IIconListViewItemEventListener
+ , public Tizen::Ui::Controls::IIconListViewItemProvider
+ , public Tizen::Ui::Controls::IListViewItemEventListener
+ , public Tizen::Ui::Controls::IScrollEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+{
+public:
+ FavoriteListPanel(void);
+ virtual ~FavoriteListPanel(void);
+ void Initialize(void);
+
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+
+ virtual void OnIconListViewItemReordered(Tizen::Ui::Controls::IconListView &iconListView, int indexFrom, int indexTo);
+ virtual void OnIconListViewItemStateChanged(Tizen::Ui::Controls::IconListView &iconListView, int index, Tizen::Ui::Controls::IconListViewItemStatus status);
+ virtual void OnIconListViewOverlayBitmapSelected(Tizen::Ui::Controls::IconListView& iconListView, int index, int overlayBitmapId);
+
+ 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 Tizen::Ui::Controls::IconListViewItem* CreateItem(int index);
+ virtual bool DeleteItem(int index, Tizen::Ui::Controls::IconListViewItem *pItem);
+ virtual int GetItemCount(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 OnScrollEndReached (Tizen::Ui::Control &source, Tizen::Ui::Controls::ScrollEndEvent type);
+ virtual void OnScrollPositionChanged (Tizen::Ui::Control &source, int scrollPos);
+ virtual void OnScrollStopped (Tizen::Ui::Control &source);
+
+private:
+ void ReturnValues(RequestId requestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue);
+ void ShowContactValuePopup(int index);
+ void HideContactValuePopup(void);
+ result LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, const Tizen::Base::String& argument, const Tizen::Base::String& type = L"");
+
+private:
+ int __scrolledDistance;
+ int __selectedItemIndex;
+ Tizen::Ui::Controls::ContextMenu* __pContextMenuAction;
+ Tizen::Ui::Controls::ContextMenu* __pContextMenuMore;
+ Tizen::Ui::Controls::IconListView* __pFavoriteListView;
+ Tizen::Ui::Controls::Popup* __pMultipleContactValuePopup;
+ Tizen::Ui::Controls::Label* __pEmptyImageLabel;
+ Tizen::Ui::Controls::Label* __pEmptyCommentLabel;
+ FavoriteListPresentationModel* __pPresentationModel;
+ ContactValueListItemProvider* __pContactValueListProvider;
+};
+
+#endif /* _CT_FAVORITE_LIST_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 CtFavoriteListPresentationModel.h
+ * @brief This is the header file for the FavoriteListPresentationModel class.
+ */
+
+#ifndef _CT_FAVORITE_LIST_PRESENTATION_MODEL_H_
+#define _CT_FAVORITE_LIST_PRESENTATION_MODEL_H_
+
+#include <FBase.h>
+#include <FSocial.h>
+#include "CtTypes.h"
+
+class FavoriteListPresentationModel
+{
+public:
+ FavoriteListPresentationModel(void);
+ virtual ~FavoriteListPresentationModel(void);
+
+ result Construct(void);
+ result InitializeFavoriteList(AppControlReturnType returnType = APP_CONTROL_RETURN_TYPE_NONE);
+ int GetFavoriteCount(void);
+ int GetContactCount(void);
+ result GetFavoriteItemInfo(int index, Tizen::Base::String& name, Tizen::Graphics::Bitmap*& pThumbnail);
+ Tizen::Base::Collection::IList* GetMultiValuesN(AppControlReturnType returnType, int index);
+ Tizen::Social::RecordId GetContactId(int index);
+ result SetAsFavorite(Tizen::Social::RecordId contactId, bool isFavorite);
+ Tizen::Base::String GetDefaultPhoneNumber(int index);
+ Tizen::Base::String ExportToVcard(int index);
+ Tizen::Base::String ExportToVcard(const Tizen::Base::Collection::IList& contactList);
+
+ static FavoriteListPresentationModel* GetInstance(void);
+
+private:
+ static void CreateInstance(void);
+ static void DestroyInstance(void);
+
+private:
+ Tizen::Base::Collection::IList* __pFavoriteList;
+
+ static FavoriteListPresentationModel* __pInstance;
+};
+
+
+#endif /* _CT_FAVORITE_LIST_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 CtFormFactory.h
+ * @brief This is the header file for the FormFactory class.
+ */
+
+#ifndef _CT_FORM_FACTORY_H_
+#define _CT_FORM_FACTORY_H_
+
+class FormFactory
+ : public Tizen::Ui::Scenes::IFormFactory
+{
+public:
+ FormFactory(void);
+ virtual ~FormFactory(void);
+
+ virtual Tizen::Ui::Controls::Form* CreateFormN(const Tizen::Base::String& formId, const Tizen::Ui::Scenes::SceneId& sceneId);
+};
+
+#endif //_CT_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 CtGroupContactListEditorForm.h
+ * @brief This is the header file for the GroupContactListEditorForm class.
+ */
+
+#ifndef _CT_GROUP_CONTACT_LIST_EDITOR_FORM_H_
+#define _CT_GROUP_CONTACT_LIST_EDITOR_FORM_H_
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FSocial.h>
+#include <FUi.h>
+#include "CtContactValueListItemProvider.h"
+#include "CtIContactsAppStateChangeEventListener.h"
+#include "CtIContactEventListener.h"
+
+class ContactValueListItemProvider;
+class GroupContactListPresentationModel;
+class SearchListEventListener;
+
+class GroupContactListEditorForm
+ : public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::IKeypadEventListener
+ , public Tizen::Ui::ITextEventListener
+ , public Tizen::Ui::ITouchEventListener
+ , public Tizen::Ui::Controls::IFastScrollListener
+ , public Tizen::Ui::Controls::IFormBackEventListener
+ , public Tizen::Ui::Controls::IGroupedListViewItemEventListener
+ , public Tizen::Ui::Controls::IGroupedListViewItemProvider
+ , public Tizen::Ui::Controls::IListViewItemEventListener
+ , public Tizen::Ui::Controls::ISearchBarEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public IContactsAppStateChangeEventListener
+ , public IContactEventListener
+{
+public:
+ GroupContactListEditorForm(void);
+ virtual ~GroupContactListEditorForm(void);
+
+ void Initialize(void);
+
+ 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);
+ 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 OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, Tizen::Ui::Controls::SearchBarMode mode);
+ virtual void OnTextValueChanged(const Tizen::Ui::Control& source);
+ virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source);
+ virtual int GetGroupCount(void);
+ virtual int GetItemCount(int groupIndex);
+ virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ virtual Tizen::Ui::Controls::GroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth);
+ virtual void OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);
+ virtual void OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus state);
+ virtual void OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction);
+ 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 OnFastScrollIndexSelected (Tizen::Ui::Control& source, Tizen::Base::String& index);
+ virtual void OnContactsChanged(void);
+ virtual void OnCategoriesChanged(void);
+
+ 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 OnForeground(void);
+ virtual void OnBackground(void);
+
+ 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);
+
+private:
+ result RemoveSelectedContacts(void);
+ result UpdateBottomLabel(void);
+ void ShowContactValuePopup(int groupIndex, int itemIndex);
+ void HideContactValuePopup(void);
+ void ReturnValues(RequestId requestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue);
+ void ReturnMultipleValues(void);
+ void ReturnResultFailed(void);
+ result LaunchAppControl(void);
+
+private:
+ ContactValueListItemProvider* __pContactValueListEvent;
+ GroupContactListPresentationModel* __pPresentationModel;
+ SearchListEventListener* __pSearchListEvent;
+ Tizen::Base::Collection::HashMap* __pTempContactValueHashMap;
+ Tizen::Ui::Controls::SearchBar* __pSearchBar;
+ Tizen::Ui::Controls::CheckButton* __pSelectAllButton;
+ Tizen::Ui::Controls::GroupedListView* __pListView;
+ Tizen::Ui::Controls::GroupedListView* __pSearchListView;
+ Tizen::Ui::Controls::Label* __pBottomLabel;
+ Tizen::Ui::Controls::Label* __pEmptyImageLabel;
+ Tizen::Ui::Controls::Label* __pEmptyCommentLabel;
+ Tizen::Ui::Controls::Popup* __pMultipleContactValuePopup;
+ long long __launchType;
+ int __selectedIndex;
+ int __selectedSearchIndex;
+};
+
+#endif /* _CT_GROUP_CONTACT_LIST_EDITOR_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 CtGroupContactListForm.h
+ * @brief This is the header file for the GroupContactListForm class.
+ */
+
+#ifndef _CT_GROUP_CONTACT_LIST_FORM_H_
+#define _CT_GROUP_CONTACT_LIST_FORM_H_
+
+#include <FApp.h>
+#include <FUi.h>
+#include <FSocial.h>
+#include "CtContactValueListItemProvider.h"
+#include "CtIContactsAppStateChangeEventListener.h"
+#include "CtIContactEventListener.h"
+
+class ContactValueListItemProvider;
+class GroupContactListPresentationModel;
+class SearchListEventListener;
+
+class GroupContactListForm
+ : public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::IKeypadEventListener
+ , public Tizen::Ui::ITextEventListener
+ , public Tizen::Ui::ITouchEventListener
+ , public Tizen::Ui::Controls::IFastScrollListener
+ , public Tizen::Ui::Controls::IFormBackEventListener
+ , public Tizen::Ui::Controls::IGroupedListViewItemEventListener
+ , public Tizen::Ui::Controls::IGroupedListViewItemProvider
+ , public Tizen::Ui::Controls::IListViewItemEventListener
+ , public Tizen::Ui::Controls::ISearchBarEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public IContactsAppStateChangeEventListener
+ , public IContactEventListener
+{
+public:
+ GroupContactListForm(void);
+ virtual ~GroupContactListForm(void);
+
+ void Initialize(void);
+
+ 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);
+ 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 int GetGroupCount(void);
+ virtual int GetItemCount(int groupIndex);
+ virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ virtual Tizen::Ui::Controls::GroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth);
+
+ virtual void OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, Tizen::Ui::Controls::SearchBarMode mode);
+
+ virtual void OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);
+ virtual void OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus state);
+ virtual void OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction);
+
+ 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 OnTextValueChanged(const Tizen::Ui::Control& source);
+ virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source);
+
+ virtual void OnFastScrollIndexSelected (Tizen::Ui::Control& source, Tizen::Base::String& index);
+
+ virtual void OnContactsChanged(void);
+ virtual void OnCategoriesChanged(void);
+
+ 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 OnForeground(void);
+ virtual void OnBackground(void);
+
+ 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);
+
+private:
+ void ShowDeletePopup(void);
+ void HideDeletePopup(void);
+ void ShowContactValuePopup(int groupIndex, int itemIndex);
+ void HideContactValuePopup(void);
+ result AddSelectedContactToCategory(Tizen::Base::Collection::IList* pArgs);
+ result ParseAppControlArgument(const Tizen::Base::String& argument, Tizen::Base::String& type, Tizen::Base::String& content);
+ void ReturnValues(RequestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue);
+ result LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, const Tizen::Base::String& argument, const Tizen::Base::String& type = L"");
+
+private:
+ Tizen::Ui::Controls::GroupedListView* __pListView;
+ Tizen::Ui::Controls::GroupedListView* __pSearchListView;
+ Tizen::Ui::Controls::SearchBar* __pSearchBar;
+ Tizen::Ui::Controls::Popup* __pDeletePopup;
+ Tizen::Ui::Controls::Popup* __pMultipleContactValuePopup;
+ Tizen::Ui::Controls::Label* __pEmptyImageLabel;
+ Tizen::Ui::Controls::Label* __pEmptyCommentLabel;
+ Tizen::Ui::Controls::ContextMenu* __pContextMenuMore;
+ Tizen::Social::RecordId __categoryId;
+
+ ContactValueListItemProvider* __pContactValueListEvent;
+ GroupContactListPresentationModel* __pPresentationModel;
+ SearchListEventListener* __pSearchListEvent;
+
+ int __sweptItemIndex;
+ int __selectedIndex;
+};
+
+
+#endif /* _CT_GROUP_CONTACT_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 CtGroupContactListPresentationModel.h
+ * @brief This is the header file for the GroupContactListPresentationModel class.
+ */
+
+#ifndef _CT_GROUP_CONTACT_LIST_PRESENTATION_MODEL_H_
+#define _CT_GROUP_CONTACT_LIST_PRESENTATION_MODEL_H_
+
+#include <FBase.h>
+#include <FSocial.h>
+#include "CtContactListPresentationModel.h"
+#include "CtTypes.h"
+
+class IContactEventListener;
+
+class GroupContactListPresentationModel
+ : public ContactListPresentationModel
+{
+public:
+ virtual ~GroupContactListPresentationModel(void);
+ result InitializeGroupContactList(Tizen::Social::RecordId categoryId, GroupContactLaunchType launchType = GROUP_CONTACT_LAUNCH_TYPE_NONE);
+
+ Tizen::Base::String GetName(int groupIndex, int itemIndex);
+ Tizen::Base::Collection::IList* GetAllPhoneNumbersN(int groupIndex, int itemIndex);
+ Tizen::Base::Collection::IList* GetAllEmailsN(int groupIndex, int itemIndex);
+
+ Tizen::Base::String GetCategoryName(void);
+ int GetAllContactsCount(void);
+
+ bool IsCategoryValid(void);
+
+ result AddContactToCategory(Tizen::Social::RecordId contactId);
+ result RemoveContactFromCategory(int groupIndex, int itemIndex);
+
+ virtual void OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList);
+ virtual void OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList);
+
+ virtual Tizen::Base::Collection::IList* GetSearchedContactListN(const Tizen::Base::String& searchText, SearchType searchType);
+
+ static GroupContactListPresentationModel* GetInstance(void);
+
+private:
+ GroupContactListPresentationModel(void);
+ virtual Tizen::Social::Person* GetPersonAt(int groupIndex, int itemIndex);
+ virtual result Construct(void);
+ virtual result CreateContactList(void);
+ virtual result TrimListForAppControl(Tizen::Base::Collection::IList*& pContactList);
+ result TrimListForLaunch(Tizen::Base::Collection::IList*& pContactList);
+
+ static void CreateInstance(void);
+ static void DestroyInstance(void);
+
+private:
+ Tizen::Social::RecordId __categoryId;
+ GroupContactLaunchType __groupContactLaunchType;
+
+ static GroupContactListPresentationModel* __pInstance;
+};
+
+#endif /* _CT_GROUP_CONTACT_LIST_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 CtGroupEditorForm.h
+ * @brief This is the header file for the GroupEditorForm class.
+ */
+
+#ifndef _CT_GROUP_EDITOR_FORM_H_
+#define _CT_GROUP_EDITOR_FORM_H_
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FSocial.h>
+#include <FUi.h>
+
+class GroupPresentationModel;
+
+class GroupEditorForm
+ : public Tizen::Ui::Controls::Form
+ , public Tizen::App::IAppControlResponseListener
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::IKeypadEventListener
+ , public Tizen::Ui::ITextEventListener
+ , public Tizen::Ui::Controls::ITableViewItemEventListener
+ , public Tizen::Ui::Controls::ITableViewItemProvider
+ , public Tizen::Ui::Scenes::ISceneEventListener
+{
+public :
+ GroupEditorForm(void);
+ virtual ~GroupEditorForm(void);
+ void Initialize(void);
+
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+
+ virtual int GetItemCount(void);
+ virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int itemIndex, int itemWidth);
+ virtual bool DeleteItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ virtual void UpdateItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ virtual int GetDefaultItemHeight(void);
+
+ virtual void OnTableViewItemStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
+ virtual void OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated);
+ virtual void OnTableViewItemReordered(Tizen::Ui::Controls::TableView& tableView, int itemIndexFrom, int itemIndexTo);
+
+ 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 OnTextValueChanged(const Tizen::Ui::Control& source);
+ virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source);
+
+ 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);
+
+ virtual void OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData);
+
+private:
+ result LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId);
+
+private:
+ GroupPresentationModel* __pPresentationModel;
+ Tizen::Ui::Controls::TableView* __pTableView;
+ Tizen::Ui::Controls::TableViewItem* __pItemGroupName;
+ Tizen::Social::RecordId __categoryId;
+ Tizen::Base::String __tempName;
+ Tizen::Base::String __tempThumbnailPath;
+ Tizen::Base::String __ringtonePath;
+ bool __isEditMode;
+};
+
+#endif /* _CT_GROUP_EDITOR_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 CtGroupListEditorPanel.h
+ * @brief This is the header file for the GroupListEditorPanel class.
+ */
+
+#ifndef _CT_GROUP_LIST_EDITOR_H_
+#define _CT_GROUP_LIST_EDITOR_H_
+
+#include <FUi.h>
+#include "CtIContactEventListener.h"
+
+class GroupListPresentationModel;
+
+class GroupListEditorPanel
+ : public Tizen::Ui::Controls::Panel
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::ITouchEventListener
+ , public Tizen::Ui::Controls::IScrollEventListener
+ , public Tizen::Ui::Controls::ITableViewItemProvider
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public IContactEventListener
+{
+public:
+ GroupListEditorPanel(void);
+ virtual ~GroupListEditorPanel(void);
+
+ void Initialize(void);
+
+ 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 OnContactsChanged(void);
+ virtual void OnCategoriesChanged(void);
+ 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 int GetItemCount(void);
+ virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int itemIndex, int itemWidth);
+ virtual bool DeleteItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ virtual void UpdateItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ virtual int GetDefaultItemHeight(void);
+
+ virtual void OnScrollEndReached(Tizen::Ui::Control& source, Tizen::Ui::Controls::ScrollEndEvent type);
+ virtual void OnScrollPositionChanged(Tizen::Ui::Control& source, int scrollPos);
+
+private:
+ result ComposeGroupItem(Tizen::Ui::Controls::TableViewItem& item, int groupBoxIndex, const Tizen::Graphics::Point& itemPosition, bool isChecked);
+ result ArrangeThumbnails(Tizen::Graphics::Canvas& canvas, int groupBoxIndex, int contactCount);
+ result PlaceThumbnail(Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& bounds, int groupBoxIndex, int contactIndex);
+
+ result UpdateBottomLabel(void);
+ result CreateCheckLabel(Tizen::Ui::Controls::TableViewItem& item, const Tizen::Graphics::Rectangle& bounds, int groupBoxIndex);
+ void UpdateGroupList(void);
+
+private:
+ Tizen::Base::Collection::ArrayListT<bool>* __pGroupCheckList;
+ Tizen::Ui::Controls::TableView* __pTableView;
+ Tizen::Ui::Controls::Label* __pBottomLabel;
+ Tizen::Graphics::Bitmap* __pDefaultThumbnail;
+ GroupListPresentationModel* __pPresentationModel;
+ bool __isToggleOpened;
+ bool __isTouchMoved;
+};
+
+#endif /* _CT_GROUP_LIST_EDITOR_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 CtGroupListPanel.h
+ * @brief This is the header file for the GroupListPanel class.
+ */
+
+#ifndef _CT_GROUP_LIST_PANEL_H_
+#define _CT_GROUP_LIST_PANEL_H_
+
+#include <FUi.h>
+#include "CtIContactEventListener.h"
+
+class GroupListPresentationModel;
+
+class GroupListPanel
+ : public Tizen::Ui::Controls::Panel
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::ITouchEventListener
+ , public Tizen::Ui::Controls::IScrollEventListener
+ , public Tizen::Ui::Controls::ITableViewItemProvider
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public IContactEventListener
+{
+public:
+ GroupListPanel(void);
+ virtual ~GroupListPanel(void);
+ void Initialize(void);
+
+ 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 OnContactsChanged(void);
+ virtual void OnCategoriesChanged(void);
+
+ 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 OnScrollEndReached(Tizen::Ui::Control& source, Tizen::Ui::Controls::ScrollEndEvent type);
+ virtual void OnScrollPositionChanged(Tizen::Ui::Control& source, int scrollPos);
+
+ virtual int GetItemCount(void);
+ virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int itemIndex, int itemWidth);
+ virtual bool DeleteItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ virtual void UpdateItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ virtual int GetDefaultItemHeight(void);
+
+private:
+ result ComposeGroupItem(Tizen::Ui::Controls::TableViewItem& item, int groupBoxIndex, const Tizen::Graphics::Point& itemPosition, int contactCount, bool isNotAssigned);
+ result ArrangeThumbnails(Tizen::Graphics::Canvas& canvas, int groupBoxIndex, int contactCount);
+ result PlaceThumbnail(Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& bounds, int groupBoxIndex, int contactIndex);
+
+private:
+ Tizen::Ui::Controls::TableView* __pTableView;
+ Tizen::Ui::Controls::ContextMenu* __pContextMenuQuickMenu;
+ Tizen::Ui::Controls::ContextMenu* __pContextMenuMore;
+ Tizen::Graphics::Bitmap* __pDefaultThumbnail;
+ GroupListPresentationModel* __pPresentationModel;
+ bool __isToggleOpened;
+ bool __isTouchMoved;
+ int __scrolledDistance;
+};
+
+#endif /* _CT_GROUP_LIST_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 CtGroupListPresentationModel.h
+ * @brief This is the header file for the GroupListPresentationModel class.
+ */
+
+#ifndef _CT_GROUP_LIST_PRESENTATION_MODEL_H_
+#define _CT_GROUP_LIST_PRESENTATION_MODEL_H_
+
+#include <FBase.h>
+#include <FSocial.h>
+#include "CtTypes.h"
+
+class IContactEventListener;
+
+class GroupListPresentationModel
+ : public Tizen::Social::IAddressbookEventListener
+{
+public:
+ virtual ~GroupListPresentationModel(void);
+ result Construct(void);
+ result RemoveCategory(int index);
+ Tizen::Base::String GetCategoryName(int index);
+ bool IsContactInCategory(const Tizen::Base::Collection::IList& categoryIdList, int categoryIndex);
+ bool IsDefaultCategory(int index);
+ Tizen::Social::RecordId GetCategoryId(int index);
+ int GetContactCountInCategory(int index, AppControlReturnType returnType = APP_CONTROL_RETURN_TYPE_NONE);
+ int GetContactCountInNotAssignedCategory(AppControlReturnType returnType = APP_CONTROL_RETURN_TYPE_NONE);
+ int GetCategoryCount(void);
+ Tizen::Graphics::Bitmap* GetThumbnailN(const Tizen::Graphics::Dimension& dimension, int categoryIndex, int contactIndex);
+ result UpdatePersonList(int categoryIndex);
+ void AddGroupChangeListener(const IContactEventListener& listener);
+ void RemoveGroupChangeListener(const IContactEventListener& listener);
+
+ virtual void OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList);
+ virtual void OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList);
+
+ static GroupListPresentationModel* GetInstance(void);
+
+private:
+ GroupListPresentationModel(void);
+ result UpdateCategoryList(void);
+
+ static void CreateInstance(void);
+ static void DestroyInstance(void);
+
+private:
+ Tizen::Social::Addressbook* __pAddressbook;
+ Tizen::Base::Collection::IList* __pCategoryList;
+ Tizen::Base::Collection::IList* __pPersonList;
+ Tizen::Base::Collection::ArrayList* __pCategoryChangeListener;
+
+ static GroupListPresentationModel* __pInstance;
+};
+
+#endif /* _CT_GROUP_LIST_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 CtGroupPresentationModel.h
+ * @brief This is the header file for the GroupPresentationModel class.
+ */
+
+#ifndef _CT_GROUP_PRESENTATION_MODEL_H_
+#define _CT_GROUP_PRESENTATION_MODEL_H_
+
+#include <FBase.h>
+#include <FSocial.h>
+
+class GroupPresentationModel
+{
+public:
+ GroupPresentationModel(void);
+ virtual ~GroupPresentationModel(void);
+
+ result Construct(Tizen::Social::RecordId categoryId);
+
+ bool IsDuplicatedCategory(const Tizen::Base::String& groupName);
+ bool IsDefaultCategory(void);
+ result SetCategoryName(const Tizen::Base::String& groupName);
+ result SetRingtone(const Tizen::Base::String& groupName, const Tizen::Base::String& ringtonePath);
+ result AddCategory(const Tizen::Base::String& groupName);
+ result SetThumbnailPath(const Tizen::Base::String& groupName, const Tizen::Base::String& filePath);
+ Tizen::Base::String GetThumbnailPath(void);
+ Tizen::Base::String GetCategoryName(void);
+ Tizen::Base::String GetRingtone(void);
+
+private:
+ Tizen::Social::Addressbook* __pAddressbook;
+ Tizen::Social::RecordId __categoryId;
+};
+
+#endif /* _CT_GROUP_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 CtGroupSelectorForm.h
+ * @brief This is the header file for the GroupSelectorForm class.
+ */
+
+#ifndef _CT_GROUP_SELECTOR_FORM_H_
+#define _CT_GROUP_SELECTOR_FORM_H_
+
+#include <FApp.h>
+#include <FSocial.h>
+#include <FUi.h>
+#include "CtIContactEventListener.h"
+
+class GroupListPresentationModel;
+
+class GroupSelectorForm
+ : public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::Controls::IListViewItemEventListener
+ , public Tizen::Ui::Controls::IListViewItemProvider
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public IContactEventListener
+{
+public:
+ GroupSelectorForm(void);
+ virtual ~GroupSelectorForm(void);
+
+ void Initialize(void);
+
+ 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 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);
+ 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 OnContactsChanged(void);
+ virtual void OnCategoriesChanged(void);
+
+private:
+ result UpdateBottomLabel(void);
+
+private:
+ GroupListPresentationModel* __pGroupListPresentationModel;
+ Tizen::Ui::Controls::ListView* __pListView;
+ Tizen::Ui::Controls::Label* __pBottomLabel;
+ Tizen::Ui::Controls::ContextMenu* __pContextMenuMore;
+ Tizen::Base::Collection::HashMapT<int, bool>* __pGroupIndexMap;
+ Tizen::Base::Collection::IList* __pGroupIdList;
+};
+
+#endif /* _CT_GROUP_SELECTOR_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 CtIContactEventListener.h
+ * @brief This is the header file for the IContactEventListener class.
+ */
+
+#ifndef _CT_ICONTACT_EVENT_LISTENER_H_
+#define _CT_ICONTACT_EVENT_LISTENER_H_
+
+#include <FBase.h>
+
+class IContactEventListener
+ : public Tizen::Base::Object
+{
+public:
+ virtual ~IContactEventListener(void) {}
+
+ virtual void OnContactsChanged(void) = 0;
+ virtual void OnCategoriesChanged(void) = 0;
+};
+
+#endif /* _CT_ICONTACT_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 CtIContactsAppStateChangeEventListener.h
+ * @brief This is the header file for the IContactsAppStateChangeEventListener class.
+ */
+
+#ifndef _CT_ICONTACTS_APP_STATE_CHANGE_EVENT_LISTENER_H_
+#define _CT_ICONTACTS_APP_STATE_CHANGE_EVENT_LISTENER_H_
+
+#include <FBase.h>
+
+class IContactsAppStateChangeEventListener
+ : public Tizen::Base::Object
+{
+public:
+ virtual ~IContactsAppStateChangeEventListener(void) {}
+
+ virtual void OnForeground(void) = 0;
+ virtual void OnBackground(void) = 0;
+};
+
+#endif /* _CT_ICONTACTS_APP_STATE_CHANGE_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 CtMainForm.h
+ * @brief This is the header file for the MainForm class.
+ */
+
+#ifndef _CT_MAIN_FORM_H_
+#define _CT_MAIN_FORM_H_
+
+#include <FUi.h>
+
+class MainForm
+ : public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::Controls::IFormBackEventListener
+{
+public:
+ MainForm(void);
+ virtual ~MainForm(void);
+
+ void Initialize(void);
+
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+
+ virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
+};
+
+#endif /* _CT_MAIN_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 CtMainFrame.h
+ * @brief This is the header file for the MainFrame class.
+ */
+
+#ifndef _CT_MAIN_FRAME_H_
+#define _CT_MAIN_FRAME_H_
+
+class MainFrame
+ : public Tizen::Ui::Controls::Frame
+{
+public:
+ MainFrame(void);
+ virtual ~MainFrame(void);
+
+public:
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+};
+
+#endif //_CT_MAIN_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 CtPanelFactory.h
+ * @brief This is the header file for the PanelFactory class.
+ */
+
+#ifndef _CT_PANEL_FACTORY_H_
+#define _CT_PANEL_FACTORY_H_
+
+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 //_CT_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 CtResourceManager.h
+ * @brief This is the header file for the ResourceManager class.
+ */
+
+#ifndef _CT_RESOURCE_MANAGER_H_
+#define _CT_RESOURCE_MANAGER_H_
+
+#include <FBase.h>
+#include <FGraphics.h>
+
+class ResourceManager
+{
+public:
+ static Tizen::Graphics::Bitmap* GetBitmapN(const Tizen::Base::String& id);
+ static Tizen::Base::String GetString(const Tizen::Base::String& id);
+
+private:
+ ResourceManager(void);
+ virtual ~ResourceManager(void);
+};
+
+#endif /* _CT_RESOURCE_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 CtSceneRegister.h
+ * @brief This is the header file for the SceneRegister class.
+ */
+
+#ifndef _CT_SCENE_REGISTER_H_
+#define _CT_SCENE_REGISTER_H_
+
+class SceneRegister
+{
+public:
+ static result RegisterAllScenes(void);
+
+private:
+ SceneRegister();
+ ~SceneRegister();
+};
+
+#endif /* _CT_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 CtSearchListEventListener.h
+ * @brief This is the header file for the SearchListEventListener class.
+ */
+
+#ifndef _CT_SEARCH_LIST_EVENT_LISTENER_H_
+#define _CT_SEARCH_LIST_EVENT_LISTENER_H_
+
+#include <FBase.h>
+#include <FUi.h>
+
+class ContactListPresentationModel;
+
+class SearchListEventListener
+ : public Tizen::Ui::Controls::IGroupedListViewItemProvider
+{
+public:
+ SearchListEventListener(Tizen::Ui::Controls::ListAnnexStyle itemAnnexStyle, ContactListPresentationModel* pContactListPresentationModel);
+ virtual ~SearchListEventListener(void);
+
+ virtual int GetGroupCount(void);
+ virtual int GetItemCount(int groupIndex);
+ virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ virtual Tizen::Ui::Controls::GroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth);
+
+private:
+ ContactListPresentationModel* __pContactListPresentationModel;
+ Tizen::Ui::Controls::ListAnnexStyle __itemAnnexStyle;
+};
+
+
+#endif /* _CT_SEARCH_LIST_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 CtSearchListItem.h
+ * @brief This is the header file for the SearchListItem class.
+ */
+
+#ifndef _CT_SEARCH_LIST_ITEM_H_
+#define _CT_SEARCH_LIST_ITEM_H_
+
+#include <FBase.h>
+#include <FGraphics.h>
+#include <FUi.h>
+
+class SearchListItem
+ : public Tizen::Ui::Controls::ICustomElement
+{
+public:
+ SearchListItem(const Tizen::Base::String& name, Tizen::Graphics::Bitmap* pThumbnail, const Tizen::Base::String& searchedText);
+ virtual ~SearchListItem(void);
+
+ Tizen::Graphics::EnrichedText* GetDisplayEnrichedTextN(const Tizen::Graphics::Rectangle& rect, const Tizen::Base::String& text, Tizen::Ui::Controls::ListItemDrawingStatus itemStatus, bool isSearchingTextVisible = true);
+
+ virtual bool OnDraw(Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& rect, Tizen::Ui::Controls::ListItemDrawingStatus itemStatus);
+
+private:
+ Tizen::Base::String __name;
+ Tizen::Base::String __searchedText;
+ Tizen::Graphics::Bitmap* __pThumbnail;
+};
+
+#endif /* _CT_SEARCH_LIST_ITEM_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 CtSettingsForm.h
+ * @brief This is the header file for the SettingsForm class.
+ */
+
+#ifndef _CT_SETTINGS_FORM_H_
+#define _CT_SETTINGS_FORM_H_
+
+#include <FBase.h>
+#include <FUi.h>
+
+class SettingsForm
+ : public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::Controls::IFormBackEventListener
+ , public Tizen::Ui::Controls::IListViewItemEventListener
+ , public Tizen::Ui::Controls::IListViewItemProvider
+{
+public:
+ SettingsForm(void);
+ virtual ~SettingsForm(void);
+ void Initialize(void);
+
+ 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 int GetItemCount(void);
+ virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int index, int itemWidth);
+ virtual bool DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);
+
+ 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 OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus status);
+
+private:
+ Tizen::Ui::Controls::ListView* __pListView;
+ bool __isExpanded;
+ bool __isFirstNameFirst;
+};
+
+
+#endif /* _CT_SETTINGS_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 CtTypes.h
+ * @brief This is the header file for the Contacts application types.
+ */
+
+#ifndef _CT_TYPES_H_
+#define _CT_TYPES_H_
+
+enum DetailProperty
+{
+ DETAIL_PROPERTY_PHONE_NUMBER = 0x1000,
+ DETAIL_PROPERTY_EMAIL = 0x2000,
+ DETAIL_PROPERTY_IM_ADDRESS = 0x3000,
+ DETAIL_PROPERTY_MAIN_INFO = 0x4000,
+ DETAIL_PROPERTY_ADDRESS = 0x5000,
+ DETAIL_PROPERTY_URL = 0x6000,
+ DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER = 0x7000,
+ DETAIL_PROPERTY_ADDRESS_POSTAL_CODE,
+ DETAIL_PROPERTY_ADDRESS_COUNTRY,
+ DETAIL_PROPERTY_ADDRESS_PROVINCE,
+ DETAIL_PROPERTY_ADDRESS_CITY,
+ DETAIL_PROPERTY_ADDRESS_STREET,
+ DETAIL_PROPERTY_GROUP,
+ DETAIL_PROPERTY_RINGTONE,
+ DETAIL_PROPERTY_BIRTHDAY,
+ DETAIL_PROPERTY_NOTE,
+ DETAIL_PROPERTY_SHARE_BUTTONS,
+ DETAIL_PROPERTY_THUMBNAIL,
+ DETAIL_PROPERTY_DISPLAY_NAME,
+ DETAIL_PROPERTY_FIRST_NAME,
+ DETAIL_PROPERTY_LAST_NAME,
+ DETAIL_PROPERTY_MIDDLE_NAME,
+ DETAIL_PROPERTY_NAME_SUFFIX,
+ DETAIL_PROPERTY_NICK_NAME,
+ DETAIL_PROPERTY_JOB_TITLE,
+ DETAIL_PROPERTY_DEPARTMENT,
+ DETAIL_PROPERTY_COMPANY,
+ DETAIL_PROPERTY_EMPTY,
+ DETAIL_PROPERTY_MAX
+};
+
+enum DetailPhoneNumberType
+{
+ DETAIL_PHONENUMBER_TYPE_HOME,
+ DETAIL_PHONENUMBER_TYPE_WORK,
+ DETAIL_PHONENUMBER_TYPE_MOBILE,
+ DETAIL_PHONENUMBER_TYPE_HOME_FAX,
+ DETAIL_PHONENUMBER_TYPE_WORK_FAX,
+ DETAIL_PHONENUMBER_TYPE_PAGER,
+ DETAIL_PHONENUMBER_TYPE_OTHER
+};
+
+enum DetailEmailType
+{
+ DETAIL_EMAIL_TYPE_HOME,
+ DETAIL_EMAIL_TYPE_WORK,
+ DETAIL_EMAIL_TYPE_OTHER
+};
+
+enum DetailAddressType
+{
+ DETAIL_ADDRESS_TYPE_HOME,
+ DETAIL_ADDRESS_TYPE_WORK,
+ DETAIL_ADDRESS_TYPE_OTHER
+};
+
+enum DetailImAddressType
+{
+ DETAIL_IM_ADDRESS_TYPE_AIM,
+ DETAIL_IM_ADDRESS_TYPE_MSN,
+ DETAIL_IM_ADDRESS_TYPE_YAHOO,
+ DETAIL_IM_ADDRESS_TYPE_SKYPE,
+ DETAIL_IM_ADDRESS_TYPE_QQ,
+ DETAIL_IM_ADDRESS_TYPE_GOOGLE_TALK,
+ DETAIL_IM_ADDRESS_TYPE_ICQ,
+ DETAIL_IM_ADDRESS_TYPE_JABBER,
+ DETAIL_IM_ADDRESS_TYPE_OTHER
+};
+
+enum DetailUrlType
+{
+ DETAIL_URL_TYPE_HOME,
+ DETAIL_URL_TYPE_WORK,
+ DETAIL_URL_TYPE_OTHER
+};
+
+enum GroupContactLaunchType
+{
+ GROUP_CONTACT_LAUNCH_TYPE_NONE,
+ GROUP_CONTACT_LAUNCH_TYPE_EMAIL,
+ GROUP_CONTACT_LAUNCH_TYPE_MESSAGE
+};
+
+enum AppControlSelectionMode
+{
+ APP_CONTROL_SELECTION_MODE_NONE,
+ APP_CONTROL_SELECTION_MODE_SINGLE,
+ APP_CONTROL_SELECTION_MODE_MULTI
+};
+
+enum AppControlReturnType
+{
+ APP_CONTROL_RETURN_TYPE_NONE,
+ APP_CONTROL_RETURN_TYPE_PHONE,
+ APP_CONTROL_RETURN_TYPE_EMAIL,
+ APP_CONTROL_RETURN_TYPE_CONTACT_ID,
+ APP_CONTROL_RETURN_TYPE_VCARD
+};
+
+enum SearchType
+{
+ SEARCH_TYPE_NORMAL,
+ SEARCH_TYPE_HAS_PHONE_ONLY,
+ SEARCH_TYPE_HAS_EMAIL_ONLY
+};
+
+// form, panel ids
+extern const wchar_t* IDC_FORM_CONTACT_DETAILS;
+extern const wchar_t* IDC_FORM_CONTACT_EDITOR;
+extern const wchar_t* IDC_FORM_CONTACT_SELECTOR;
+extern const wchar_t* IDC_FORM_GROUP_SELECTOR;
+extern const wchar_t* IDC_FORM_GROUP_EDITOR;
+extern const wchar_t* IDC_FORM_GROUP_CONTACT_LIST;
+extern const wchar_t* IDC_FORM_GROUP_CONTACT_LIST_EDITOR;
+extern const wchar_t* IDC_FORM_SETTINGS;
+extern const wchar_t* IDC_FORM_MAIN;
+
+extern const wchar_t* IDC_PANEL_CONTACT_LIST;
+extern const wchar_t* IDC_PANEL_CONTACT_LIST_EDITOR;
+extern const wchar_t* IDC_PANEL_GROUP_LIST;
+extern const wchar_t* IDC_PANEL_GROUP_LIST_EDITOR;
+extern const wchar_t* IDC_PANEL_FAVORITE_LIST;
+extern const wchar_t* IDC_PANEL_FAVORITE_LIST_EDITOR;
+
+// scene ids
+extern const wchar_t* IDSCN_CONTACT_LIST;
+extern const wchar_t* IDSCN_CONTACT_LIST_EDITOR;
+extern const wchar_t* IDSCN_CONTACT_DETAILS;
+extern const wchar_t* IDSCN_CONTACT_EDITOR;
+extern const wchar_t* IDSCN_CONTACT_SELECTOR;
+extern const wchar_t* IDSCN_GROUP_LIST;
+extern const wchar_t* IDSCN_GROUP_LIST_EDITOR;
+extern const wchar_t* IDSCN_GROUP_SELECTOR;
+extern const wchar_t* IDSCN_GROUP_EDITOR;
+extern const wchar_t* IDSCN_GROUP_CONTACT_LIST;
+extern const wchar_t* IDSCN_GROUP_CONTACT_LIST_EDITOR;
+extern const wchar_t* IDSCN_FAVORITE_LIST;
+extern const wchar_t* IDSCN_FAVORITE_LIST_EDITOR;
+extern const wchar_t* IDSCN_SETTINGS;
+
+extern const wchar_t* OPERATION_ID_MAIN;
+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_CREATE_CONTENT;
+extern const wchar_t* OPERATION_ID_CALL;
+extern const wchar_t* OPERATION_ID_COMPOSE;
+
+extern const wchar_t* RETURN_KEY_TYPE;
+extern const wchar_t* RETURN_KEY_VALUE;
+extern const wchar_t* RETURN_TYPE_PHONE;
+extern const wchar_t* RETURN_TYPE_EMAIL;
+extern const wchar_t* RETURN_TYPE_VCARD;
+extern const wchar_t* RETURN_TYPE_CONTACT_ID;
+
+extern const wchar_t* PROVIDER_ID_CAMERA;
+extern const wchar_t* PROVIDER_ID_GALLERY;
+extern const wchar_t* PROVIDER_ID_PHONE;
+extern const wchar_t* PROVIDER_ID_MESSAGE;
+extern const wchar_t* PROVIDER_ID_EMAIL;
+extern const wchar_t* PROVIDER_ID_FILEMANAGER;
+
+extern const wchar_t* SETTING_KEY_LANGUAGE;
+extern const wchar_t* SETTING_KEY_COUNTRY;
+
+extern const wchar_t* CHARACTER_SPACE;
+extern const wchar_t* DELIMITER;
+extern const wchar_t* DELIMITER_SEMICOLON;
+extern const wchar_t* INITIAL_SELECTED_COUNT;
+extern const wchar_t* DEFAULT_GROUP_FAMILY;
+extern const wchar_t* DEFAULT_GROUP_FRIENDS;
+extern const wchar_t* DEFAULT_GROUP_COWORKERS;
+
+extern const int ID_GROUP_CONTACT_NOT_ASSIGNED;
+extern const int ID_GROUP_CONTACT_SELECT_MESSAGE;
+extern const int ID_GROUP_CONTACT_SELECT_EMAIL;
+
+#endif /* _CT_TYPES_H_ */
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Manifest xmlns="http://schemas.tizen.org/2012/12/manifest">
+ <Id>f9uev8hsyo</Id>
+ <Version>1.0.0</Version>
+ <Type>C++App</Type>
+ <Author/>
+ <Descriptions>
+ <Description Locale="ara-AE"/>
+ <Description Locale="aze-AZ"/>
+ <Description Locale="bul-BG"/>
+ <Description Locale="cat-ES"/>
+ <Description Locale="ces-CZ"/>
+ <Description Locale="dan-DK"/>
+ <Description Locale="deu-DE"/>
+ <Description Locale="ell-GR"/>
+ <Description Locale="eng-GB"/>
+ <Description Locale="eng-PH"/>
+ <Description Locale="eng-US"/>
+ <Description Locale="est-EE"/>
+ <Description Locale="eus-ES"/>
+ <Description Locale="fin-FI"/>
+ <Description Locale="fra-CA"/>
+ <Description Locale="fra-FR"/>
+ <Description Locale="gle-IE"/>
+ <Description Locale="glg-ES"/>
+ <Description Locale="hin-IN"/>
+ <Description Locale="hrv-HR"/>
+ <Description Locale="hun-HU"/>
+ <Description Locale="hye-AM"/>
+ <Description Locale="isl-IS"/>
+ <Description Locale="ita-IT"/>
+ <Description Locale="jpn-JP"/>
+ <Description Locale="kat-GE"/>
+ <Description Locale="kaz-KZ"/>
+ <Description Locale="kor-KR"/>
+ <Description Locale="lav-LV"/>
+ <Description Locale="lit-LT"/>
+ <Description Locale="mkd-MK"/>
+ <Description Locale="nld-NL"/>
+ <Description Locale="nob-NO"/>
+ <Description Locale="pol-PL"/>
+ <Description Locale="por-BR"/>
+ <Description Locale="por-PT"/>
+ <Description Locale="ron-RO"/>
+ <Description Locale="rus-RU"/>
+ <Description Locale="slk-SK"/>
+ <Description Locale="slv-SI"/>
+ <Description Locale="spa-ES"/>
+ <Description Locale="spa-MX"/>
+ <Description Locale="srp-RS"/>
+ <Description Locale="swe-SE"/>
+ <Description Locale="tur-TR"/>
+ <Description Locale="ukr-UA"/>
+ <Description Locale="uzb-UZ"/>
+ <Description Locale="zho-CN"/>
+ <Description Locale="zho-HK"/>
+ <Description Locale="zho-SG"/>
+ <Description Locale="zho-TW"/>
+ </Descriptions>
+ <Requirements>
+ <Feature Name="http://tizen.org/feature/platform.core.cpu.arch">x86</Feature>
+ <Feature Name="http://tizen.org/feature/platform.core.fpu.arch">vfpv3</Feature>
+ </Requirements>
+ <Apps>
+ <ApiVersion>2.0</ApiVersion>
+ <Privileges>
+ <Privilege>http://tizen.org/privilege/contact.write</Privilege>
+ <Privilege>http://tizen.org/privilege/setting</Privilege>
+ <Privilege>http://tizen.org/privilege/contact.read</Privilege>
+ <Privilege>http://tizen.org/privilege/application.launch</Privilege>
+ </Privileges>
+ <UiApp Main="True" MenuIconVisible="True" Name="Contacts" SubMode="True">
+ <UiScalability BaseScreenSize="Normal" CoordinateSystem="Logical" LogicalCoordinate="720"/>
+ <UiTheme SystemTheme="White"/>
+ <DisplayNames>
+ <DisplayName Locale="ara-AE">الأسماء-Ref</DisplayName>
+ <DisplayName Locale="aze-AZ">Adlar-Ref</DisplayName>
+ <DisplayName Locale="bul-BG">Телефонен указател-Ref</DisplayName>
+ <DisplayName Locale="cat-ES">Contactes-Ref</DisplayName>
+ <DisplayName Locale="ces-CZ">Kontakty-Ref</DisplayName>
+ <DisplayName Locale="dan-DK">Kontakter-Ref</DisplayName>
+ <DisplayName Locale="deu-DE">Kontakte-Ref</DisplayName>
+ <DisplayName Locale="ell-GR">Επαφές-Ref</DisplayName>
+ <DisplayName Locale="eng-GB">Contacts-Ref</DisplayName>
+ <DisplayName Locale="eng-PH">Contacts-Ref</DisplayName>
+ <DisplayName Locale="eng-US">Contacts-Ref</DisplayName>
+ <DisplayName Locale="est-EE">Kontaktid-Ref</DisplayName>
+ <DisplayName Locale="eus-ES">Kontaktuak-Ref</DisplayName>
+ <DisplayName Locale="fin-FI">Yhteystiedot-Ref</DisplayName>
+ <DisplayName Locale="fra-CA">Contacts-Ref</DisplayName>
+ <DisplayName Locale="fra-FR">Contacts-Ref</DisplayName>
+ <DisplayName Locale="gle-IE">Teagmhálaithe-Ref</DisplayName>
+ <DisplayName Locale="glg-ES">Contactos-Ref</DisplayName>
+ <DisplayName Locale="hin-IN">संपर्क-Ref</DisplayName>
+ <DisplayName Locale="hrv-HR">Imenik-Ref</DisplayName>
+ <DisplayName Locale="hun-HU">Névjegyek-Ref</DisplayName>
+ <DisplayName Locale="hye-AM">Կոնտակտներ-Ref</DisplayName>
+ <DisplayName Locale="isl-IS">Tengiliðir-Ref</DisplayName>
+ <DisplayName Locale="ita-IT">Rubrica-Ref</DisplayName>
+ <DisplayName Locale="jpn-JP">電話帳-Ref</DisplayName>
+ <DisplayName Locale="kat-GE">კონტაქტები-Ref</DisplayName>
+ <DisplayName Locale="kaz-KZ">Контактілер-Ref</DisplayName>
+ <DisplayName Locale="kor-KR">연락처-Ref</DisplayName>
+ <DisplayName Locale="lav-LV">Kontakti-Ref</DisplayName>
+ <DisplayName Locale="lit-LT">Adresatai-Ref</DisplayName>
+ <DisplayName Locale="mkd-MK">Именик-Ref</DisplayName>
+ <DisplayName Locale="nld-NL">Contacten-Ref</DisplayName>
+ <DisplayName Locale="nob-NO">Kontakter-Ref</DisplayName>
+ <DisplayName Locale="pol-PL">Kontakty-Ref</DisplayName>
+ <DisplayName Locale="por-BR">Contatos-Ref</DisplayName>
+ <DisplayName Locale="por-PT">Contactos-Ref</DisplayName>
+ <DisplayName Locale="ron-RO">Contacte-Ref</DisplayName>
+ <DisplayName Locale="rus-RU">Контакты-Ref</DisplayName>
+ <DisplayName Locale="slk-SK">Kontakty-Ref</DisplayName>
+ <DisplayName Locale="slv-SI">Imenik-Ref</DisplayName>
+ <DisplayName Locale="spa-ES">Contactos-Ref</DisplayName>
+ <DisplayName Locale="spa-MX">Contactos-Ref</DisplayName>
+ <DisplayName Locale="srp-RS">Kontakti-Ref</DisplayName>
+ <DisplayName Locale="swe-SE">Kontakter-Ref</DisplayName>
+ <DisplayName Locale="tur-TR">Rehber-Ref</DisplayName>
+ <DisplayName Locale="ukr-UA">Контакти-Ref</DisplayName>
+ <DisplayName Locale="uzb-UZ">Kontaktlar-Ref</DisplayName>
+ <DisplayName Locale="zho-CN">联系人-Ref</DisplayName>
+ <DisplayName Locale="zho-HK">聯絡人-Ref</DisplayName>
+ <DisplayName Locale="zho-SG">联系人-Ref</DisplayName>
+ <DisplayName Locale="zho-TW">聯絡人-Ref</DisplayName>
+ </DisplayNames>
+ <Icons>
+ <Icon Section="MainMenu" Type="Xhigh">mainmenu.png</Icon>
+ </Icons>
+ <AppControls>
+ <AppControl>
+ <Operation>http://tizen.org/appcontrol/operation/add</Operation>
+ <Operation>http://tizen.org/appcontrol/operation/configure</Operation>
+ <Operation>http://tizen.org/appcontrol/operation/edit</Operation>
+ <Operation>http://tizen.org/appcontrol/operation/pick</Operation>
+ <Operation>http://tizen.org/appcontrol/operation/view</Operation>
+ </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.Contacts
+Summary: Contacts application
+Version: 1.0.0.0
+Release: 1
+Group: TO_BE/FILLED_IN
+License: TO BE FILLED IN
+Source0: %{name}-%{version}.tar.gz
+BuildRequires: cmake
+BuildRequires: pkgconfig(osp-content)
+BuildRequires: pkgconfig(osp-appfw)
+BuildRequires: pkgconfig(osp-uifw)
+BuildRequires: pkgconfig(osp-media)
+BuildRequires: pkgconfig(osp-image)
+BuildRequires: pkgconfig(osp-image-core)
+BuildRequires: pkgconfig(osp-social)
+
+%description
+Verification application: Contacts
+
+%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=f9uev8hsyo
+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/Contacts
+
+%postun
+/sbin/ldconfig
+PKG_ID=f9uev8hsyo
+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/*
\ No newline at end of file
--- /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.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">الموقع</text>
+ <text id="IDS_PB_BODY_GROUPS">مجموعات</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">الاسم الأول</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">ذكرى سنوية</text>
+ <text id="IDS_PB_BODY_COMPANY">الشركة</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">الوظيفة</text>
+ <text id="IDS_COM_POP_CLOSE">إغلاق</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">اختيار الكل</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">إضافة إلى المفضلة</text>
+ <text id="IDS_PB_BODY_PHONE">الهاتف</text>
+ <text id="IDS_COM_BODY_MESSAGE">رسالة</text>
+ <text id="IDS_PB_BODY_LAST_NAME">اسم العائلة</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">حفظ الاسم في</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">هاتف محمول (العمل)</text>
+ <text id="IDS_COM_SK_NEW">جديدة</text>
+ <text id="IDS_PB_SK_CANCEL">إلغاء</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">الاسم الأوسط</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">تحديد كبريد إلكتروني افتراضي</text>
+ <text id="IDS_PB_BODY_OTHER">آخر</text>
+ <text id="IDS_COM_POP_REMOVED">تم الحذف</text>
+ <text id="IDS_COM_POP_SUCCESS">نجاح</text>
+ <text id="IDS_PB_BODY_COUNTRY">الدولة</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">عيد ميلاد</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">كل الأسماء</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">غير محددة</text>
+ <text id="IDS_COM_SK_DONE">تمت</text>
+ <text id="IDS_PB_BODY_MOBILE">الجوال</text>
+ <text id="IDS_COM_BODY_EMAIL">بريد إلكتروني</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">تحديد مجموعة</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">إضافة عضو</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">لايوجد أسماء</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">إزالة صورة</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">اسم العائلة أولا</text>
+ <text id="IDS_PB_OPT_VIEW">عرض</text>
+ <text id="IDS_PB_BODY_WORK">العمل</text>
+ <text id="IDS_COM_SK_EDIT">تعديل</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">لا توجد مجموعة</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">عنوان البريد الإلكتروني غير صالح</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">إضافة إلى الأسماء</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">تحديد كرقم افتراضي</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">معلومات أخرى</text>
+ <text id="IDS_COM_POP_SELECTED">تم التحديد</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">خالي</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">التقاط صورة</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">مجموعة جديدة</text>
+ <text id="IDS_COM_SK_DELETE">مسح</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">فاكس (العمل)</text>
+ <text id="IDS_PB_BODY_RINGTONE">نغمة الرنين</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">الأصدقاء</text>
+ <text id="IDS_COM_BODY_COPY">نسخ</text>
+ <text id="IDS_PB_BODY_ADDRESS">العنوان</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">لا توجد مفضلة</text>
+ <text id="IDS_COM_BODY_CONTACTS">الأسماء</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">تحديد جهات الاتصال</text>
+ <text id="IDS_PB_BODY_PAGER">جهاز المناداة</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">المرسل الفوري</text>
+ <text id="IDS_COM_BODY_GALLERY">استوديو</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">الجوال (المنزل)</text>
+ <text id="IDS_COM_BODY_SEARCH">بحث</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">اسم المجموعة مستخدم مسبقا</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">العائلة</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">الاسم</text>
+ <text id="IDS_PB_BODY_CITY">المدينة</text>
+ <text id="IDS_COM_BODY_CREATE">إنشاء</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">القسم</text>
+ <text id="IDS_PB_BODY_NICKNAME">اللقب</text>
+ <text id="IDS_COM_BODY_CALL">اتصال</text>
+ <text id="IDS_PB_BODY_SUFFIX">اللاحقة</text>
+ <text id="IDS_COM_POP_UNKNOWN">غير معروف</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">المفضلة</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">تحرير مجموعات</text>
+ <text id="IDS_COM_SK_SAVE">حفظ</text>
+ <text id="IDS_PB_BODY_PROVINCE">إقليم</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">إرسال بطاقة اسم</text>
+ <text id="IDS_COM_POP_ADDED">تمت الإضافة</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">مكالمة فيديو</text>
+ <text id="IDS_PB_BODY_HOME">منزل</text>
+ <text id="IDS_PB_BODY_NOTE">ملاحظة</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">ضبط الأسماء</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">ترتيب عرض الاسم</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">جار حذف جهات الاتصال...</text>
+ <text id="IDS_PB_BODY_STREET">الشارع</text>
+ <text id="IDS_PB_BODY_NUMBER">الرقم</text>
+ <text id="IDS_PB_HEADER_DETAILS">التفاصيل</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">العمل</text>
+ <text id="IDS_COM_BODY_REMOVE">حذف</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">الرمز البريدي</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">الفاكس (المنزل)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">الاسم الأول أولا</text>
+ <text id="IDS_PB_BODY_DEFAULT">إفتراضي</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">اسم المجموعة</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Qruplar</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Ad</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">İldönümü</text>
+ <text id="IDS_PB_BODY_COMPANY">Şirkət</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Məşğuliyyət adı</text>
+ <text id="IDS_COM_POP_CLOSE">Bağla</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Hamısını seç</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Sevimlilərə əlavə edin</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Mesaj</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Yekun ad</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Kontaktı ...da saxla</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobil (İş)</text>
+ <text id="IDS_COM_SK_NEW">Yeni</text>
+ <text id="IDS_PB_SK_CANCEL">Ləğv et</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">İkinci ad</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Susmaya görə e-poçt kimi qeyd et</text>
+ <text id="IDS_PB_BODY_OTHER">Başqa</text>
+ <text id="IDS_COM_POP_REMOVED">Silindi</text>
+ <text id="IDS_COM_POP_SUCCESS">Uğur</text>
+ <text id="IDS_PB_BODY_COUNTRY">Ölkə</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Doğum günü</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Bütün adlar</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Təyin olunmamışdır</text>
+ <text id="IDS_COM_SK_DONE">Bitdi</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobil</text>
+ <text id="IDS_COM_BODY_EMAIL">Elektron poçtlar</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Qrup seç</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Üzv əlavə et</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Kontakt yoxdur</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Şəkli sil</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Əvvəlcə soyad</text>
+ <text id="IDS_PB_OPT_VIEW">Bax</text>
+ <text id="IDS_PB_BODY_WORK">İş</text>
+ <text id="IDS_COM_SK_EDIT">Redaktə et</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Qrup yoxdur</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Yanlış E-poçt ünvanı</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Kontaktlara əlavə et</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">İlkin təyin edilmiş nömrə kimi işarələ</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Daha çox məlumat</text>
+ <text id="IDS_COM_POP_SELECTED">Seçildi</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Boşdur</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Foto şəkil çək</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Yeni qrup</text>
+ <text id="IDS_COM_SK_DELETE">Sil</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faks (İş)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Zəng tonu</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Dostlar</text>
+ <text id="IDS_COM_BODY_COPY">Köçür</text>
+ <text id="IDS_PB_BODY_ADDRESS">Ünvan</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Sevimli yoxdur</text>
+ <text id="IDS_COM_BODY_CONTACTS">Adlar</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Kontaktları seç</text>
+ <text id="IDS_PB_BODY_PAGER">Peycer</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Ani mesencer</text>
+ <text id="IDS_COM_BODY_GALLERY">Qalereya</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobil (Ev)</text>
+ <text id="IDS_COM_BODY_SEARCH">Axtarış</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Qrup adı hazırda istifadə edilir</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Ailə</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Ad</text>
+ <text id="IDS_PB_BODY_CITY">Şəhər</text>
+ <text id="IDS_COM_BODY_CREATE">Yarat</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Departament</text>
+ <text id="IDS_PB_BODY_NICKNAME">Təxəllüs</text>
+ <text id="IDS_COM_BODY_CALL">Zəng</text>
+ <text id="IDS_PB_BODY_SUFFIX">Suffiks</text>
+ <text id="IDS_COM_POP_UNKNOWN">Naməlum</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Sevimlilər</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Qrupları redaktə et</text>
+ <text id="IDS_COM_SK_SAVE">Yaddaşa yaz</text>
+ <text id="IDS_PB_BODY_PROVINCE">Rayon</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Vizit kartı göndər</text>
+ <text id="IDS_COM_POP_ADDED">Əlavə edildi</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Video zəng</text>
+ <text id="IDS_PB_BODY_HOME">Ev</text>
+ <text id="IDS_PB_BODY_NOTE">Qeyd</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Kontakt parametrləri</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Displey adı sırası</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Kontaktlar silinir...</text>
+ <text id="IDS_PB_BODY_STREET">Küçə</text>
+ <text id="IDS_PB_BODY_NUMBER">Nömrə</text>
+ <text id="IDS_PB_HEADER_DETAILS">Təfsilatlar</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">İş</text>
+ <text id="IDS_COM_BODY_REMOVE">Sil</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Poçt kodu</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faks (Ev)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Əvvəlcə ad</text>
+ <text id="IDS_PB_BODY_DEFAULT">İlkin təyin olunan</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Qrup adı</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Групи</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Малко име</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Годишнина</text>
+ <text id="IDS_PB_BODY_COMPANY">Фирма</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Длъжност</text>
+ <text id="IDS_COM_POP_CLOSE">Затваряне</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Избери всички</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Добавяне в Предпочитани</text>
+ <text id="IDS_PB_BODY_PHONE">Телефон</text>
+ <text id="IDS_COM_BODY_MESSAGE">Съобщение</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Фамилно име</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Запиши данните в</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Мобилен (служебен)</text>
+ <text id="IDS_COM_SK_NEW">Ново</text>
+ <text id="IDS_PB_SK_CANCEL">Отмени</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Бащино име</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Маркирай като email по подразбиране</text>
+ <text id="IDS_PB_BODY_OTHER">Друго</text>
+ <text id="IDS_COM_POP_REMOVED">Премахнат</text>
+ <text id="IDS_COM_POP_SUCCESS">Успешно</text>
+ <text id="IDS_PB_BODY_COUNTRY">Страна</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Рожден ден</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Всички записи</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Незададен</text>
+ <text id="IDS_COM_SK_DONE">Готово</text>
+ <text id="IDS_PB_BODY_MOBILE">Мобилен</text>
+ <text id="IDS_COM_BODY_EMAIL">Email</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Изберете група</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Доб. член</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Няма записи</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Махни снимката</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Първо фамилното име</text>
+ <text id="IDS_PB_OPT_VIEW">Преглед</text>
+ <text id="IDS_PB_BODY_WORK">Служебен</text>
+ <text id="IDS_COM_SK_EDIT">Редактиране</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Няма група</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Невалиден имейл адрес</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Добави към Тел. Указ.</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Маркиране като номер по подразбиране</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Още информация</text>
+ <text id="IDS_COM_POP_SELECTED">Избран</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Празен</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Направи снимка</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Нова група</text>
+ <text id="IDS_COM_SK_DELETE">Изтрий</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Факс (служебен)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Тон позвъняване</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Приятели</text>
+ <text id="IDS_COM_BODY_COPY">Копиране</text>
+ <text id="IDS_PB_BODY_ADDRESS">Адрес</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Няма предпочитани</text>
+ <text id="IDS_COM_BODY_CONTACTS">Телефонен указател</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Избор на записи</text>
+ <text id="IDS_PB_BODY_PAGER">Пейджър</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Програма за чат</text>
+ <text id="IDS_COM_BODY_GALLERY">Галерия</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Мобилен (домашен)</text>
+ <text id="IDS_COM_BODY_SEARCH">Търси</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Името на групата вече се използва</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Семейство</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Име</text>
+ <text id="IDS_PB_BODY_CITY">Град</text>
+ <text id="IDS_COM_BODY_CREATE">Създай</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Отдел</text>
+ <text id="IDS_PB_BODY_NICKNAME">Псевдоним</text>
+ <text id="IDS_COM_BODY_CALL">Повикване</text>
+ <text id="IDS_PB_BODY_SUFFIX">Обръщение</text>
+ <text id="IDS_COM_POP_UNKNOWN">Няма информация</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Предпочитани</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Редактиране\nна групи</text>
+ <text id="IDS_COM_SK_SAVE">Запази</text>
+ <text id="IDS_PB_BODY_PROVINCE">Област</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Изпращане на визитка</text>
+ <text id="IDS_COM_POP_ADDED">Добавен</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Видео разговор</text>
+ <text id="IDS_PB_BODY_HOME">Дом</text>
+ <text id="IDS_PB_BODY_NOTE">Бележка</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Настройки за тел. указател</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Ред за показване на имената</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Изтриване на записи...</text>
+ <text id="IDS_PB_BODY_STREET">Улица</text>
+ <text id="IDS_PB_BODY_NUMBER">Номер</text>
+ <text id="IDS_PB_HEADER_DETAILS">Детайли</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Служебен</text>
+ <text id="IDS_COM_BODY_REMOVE">Премаxване</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Пощенски код</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Факс (домашен)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Първо собственото име</text>
+ <text id="IDS_PB_BODY_DEFAULT">По подразбиране</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Име на група</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grups</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Nom</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Aniversari</text>
+ <text id="IDS_PB_BODY_COMPANY">Empresa</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Càrrec</text>
+ <text id="IDS_COM_POP_CLOSE">Tancar</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Seleccioni-ho tot</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Afegir als preferits</text>
+ <text id="IDS_PB_BODY_PHONE">Telèfon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Missatge</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Cognoms</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Desar contacte a</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Telèfon (Feina)</text>
+ <text id="IDS_COM_SK_NEW">Nou</text>
+ <text id="IDS_PB_SK_CANCEL">Cancel·lar</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Segon nom</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Marcar com a correu electrònic predeterminat</text>
+ <text id="IDS_PB_BODY_OTHER">Altres</text>
+ <text id="IDS_COM_POP_REMOVED">Eliminat</text>
+ <text id="IDS_COM_POP_SUCCESS">Correcte</text>
+ <text id="IDS_PB_BODY_COUNTRY">País</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Natalici</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Tots els contactes</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">No assignat</text>
+ <text id="IDS_COM_SK_DONE">Finalit.</text>
+ <text id="IDS_PB_BODY_MOBILE">Mòbil</text>
+ <text id="IDS_COM_BODY_EMAIL">Correu electrònic</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Seleccionar grup</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Af membre</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">No hi ha contactes</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Eliminar foto</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Abans el cognom</text>
+ <text id="IDS_PB_OPT_VIEW">Veure</text>
+ <text id="IDS_PB_BODY_WORK">Feina</text>
+ <text id="IDS_COM_SK_EDIT">Editar</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Sense Grup</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Adreça correu electrònic no vàlida</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Afegir a contactes</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Marcar com a número predeterminat</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Més informació</text>
+ <text id="IDS_COM_POP_SELECTED">Seleccionat</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Buit</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Fer una foto</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nou grup</text>
+ <text id="IDS_COM_SK_DELETE">Esborrar</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (Feina)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Melodia</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Amics</text>
+ <text id="IDS_COM_BODY_COPY">Copiar</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adreça</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Sense preferits</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contactes</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Seleccionar contactes</text>
+ <text id="IDS_PB_BODY_PAGER">Cercapersones</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Missatgeria instantània</text>
+ <text id="IDS_COM_BODY_GALLERY">Galeria</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mòbil (Casa)</text>
+ <text id="IDS_COM_BODY_SEARCH">Cercar</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Ja s'està utilitzant aquest nom de grup</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Família</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nom</text>
+ <text id="IDS_PB_BODY_CITY">Ciutat</text>
+ <text id="IDS_COM_BODY_CREATE">Crear</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Departament</text>
+ <text id="IDS_PB_BODY_NICKNAME">Sobrenom</text>
+ <text id="IDS_COM_BODY_CALL">Trucar</text>
+ <text id="IDS_PB_BODY_SUFFIX">Sufix</text>
+ <text id="IDS_COM_POP_UNKNOWN">Desconegut</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Preferit</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Editar grups</text>
+ <text id="IDS_COM_SK_SAVE">Desar</text>
+ <text id="IDS_PB_BODY_PROVINCE">Província</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Enviar targeta de visita</text>
+ <text id="IDS_COM_POP_ADDED">Afegit</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videotrucada</text>
+ <text id="IDS_PB_BODY_HOME">Pers.</text>
+ <text id="IDS_PB_BODY_NOTE">Nota</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Ajustaments de contactes</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Ordre de nom que apareixerà a la pantalla</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">S'estan esborrant els contactes...</text>
+ <text id="IDS_PB_BODY_STREET">Carrer</text>
+ <text id="IDS_PB_BODY_NUMBER">Número</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detalls</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Feina</text>
+ <text id="IDS_COM_BODY_REMOVE">Eliminar</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Codi postal</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (Casa)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Primer el nom</text>
+ <text id="IDS_PB_BODY_DEFAULT">Predeterminat</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Nom de grup</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Skupiny</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Jméno</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Výročí</text>
+ <text id="IDS_PB_BODY_COMPANY">Společnost</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Pracovní zařazení</text>
+ <text id="IDS_COM_POP_CLOSE">Zavřít</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Vybrat vše</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Přidat do oblíbených položek</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Zpráva</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Příjmení</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Uložit kontakt do</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobil (práce)</text>
+ <text id="IDS_COM_SK_NEW">Nový</text>
+ <text id="IDS_PB_SK_CANCEL">Zrušit</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Druhé jméno</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Označit jako výchozí e-mail</text>
+ <text id="IDS_PB_BODY_OTHER">Další</text>
+ <text id="IDS_COM_POP_REMOVED">Odstraněno</text>
+ <text id="IDS_COM_POP_SUCCESS">Dokončeno</text>
+ <text id="IDS_PB_BODY_COUNTRY">Země</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Narozeniny</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Všechny kontakty</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Nepřiřazeno</text>
+ <text id="IDS_COM_SK_DONE">Hotovo</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobil</text>
+ <text id="IDS_COM_BODY_EMAIL">E-mail</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Vyberte skupinu</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Př. člena</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Žádné kontakty</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Odstranit fotografii</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Napřed příjmení</text>
+ <text id="IDS_PB_OPT_VIEW">Zobrazit</text>
+ <text id="IDS_PB_BODY_WORK">Práce</text>
+ <text id="IDS_COM_SK_EDIT">Upravit</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Žádná skupina</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Neplatná e-mailová adresa</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Přidat do Kontaktů</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Označit jako výchozí číslo</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Další informace</text>
+ <text id="IDS_COM_POP_SELECTED">Vybráno</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Prázdné</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Fotografovat</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nová skupina</text>
+ <text id="IDS_COM_SK_DELETE">Odstranit</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (práce)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Zvonění</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Přátelé</text>
+ <text id="IDS_COM_BODY_COPY">Kopírovat</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adresa</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Žádné oblíbené</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontakty</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Vybrat kontakty</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Rychlé zasílání zpráv</text>
+ <text id="IDS_COM_BODY_GALLERY">Galerie</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobil (domů)</text>
+ <text id="IDS_COM_BODY_SEARCH">Hledat</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Název skupiny již existuje</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Rodina</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Jméno</text>
+ <text id="IDS_PB_BODY_CITY">Město</text>
+ <text id="IDS_COM_BODY_CREATE">Vytvořit</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Oddělení</text>
+ <text id="IDS_PB_BODY_NICKNAME">Přezdívka</text>
+ <text id="IDS_COM_BODY_CALL">Volat</text>
+ <text id="IDS_PB_BODY_SUFFIX">Titul za jménem</text>
+ <text id="IDS_COM_POP_UNKNOWN">Neznámé</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Oblíbené</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Upravit skupiny</text>
+ <text id="IDS_COM_SK_SAVE">Uložit</text>
+ <text id="IDS_PB_BODY_PROVINCE">Kraj</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Odeslat vizitku</text>
+ <text id="IDS_COM_POP_ADDED">Přidáno</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videohovor</text>
+ <text id="IDS_PB_BODY_HOME">Domů</text>
+ <text id="IDS_PB_BODY_NOTE">Poznámka</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Nastavení kontaktů</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Pořadí zobrazení jména</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Odstraňování kontaktů...</text>
+ <text id="IDS_PB_BODY_STREET">Ulice</text>
+ <text id="IDS_PB_BODY_NUMBER">Číslo</text>
+ <text id="IDS_PB_HEADER_DETAILS">Podrobnosti</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Práce</text>
+ <text id="IDS_COM_BODY_REMOVE">Odstranit</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">PSČ</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (domů)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Napřed křestní jméno</text>
+ <text id="IDS_PB_BODY_DEFAULT">Výchozí</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Název skupiny</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupper</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Fornavn</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Mærkedag</text>
+ <text id="IDS_PB_BODY_COMPANY">Firma</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Jobtitel</text>
+ <text id="IDS_COM_POP_CLOSE">Luk</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Vælg alle</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Føj til favoritter</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Meddelelse</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Efternavn</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Gem kontakt på</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobil (arbejde)</text>
+ <text id="IDS_COM_SK_NEW">Ny</text>
+ <text id="IDS_PB_SK_CANCEL">Annullér</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Mellemnavn</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Markér som standard-e-mail</text>
+ <text id="IDS_PB_BODY_OTHER">Anden</text>
+ <text id="IDS_COM_POP_REMOVED">Fjernet</text>
+ <text id="IDS_COM_POP_SUCCESS">Fuldført</text>
+ <text id="IDS_PB_BODY_COUNTRY">Land</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Fødselsdag</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Alle kontakter</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Ikke tildelt</text>
+ <text id="IDS_COM_SK_DONE">Udført</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobil</text>
+ <text id="IDS_COM_BODY_EMAIL">E-mail</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Vælg gruppe</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Tilf medl</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Ingen kontakter</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Fjern billede</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Først efternavn</text>
+ <text id="IDS_PB_OPT_VIEW">Vis</text>
+ <text id="IDS_PB_BODY_WORK">Arbejde</text>
+ <text id="IDS_COM_SK_EDIT">Redigér</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Ingen gruppe</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Ugyldig e-mailadresse</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Føj til kontakter</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Markér som standardnummer</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Flere oplysninger</text>
+ <text id="IDS_COM_POP_SELECTED">Valgte</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Tom</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Tag et billede</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Ny gruppe</text>
+ <text id="IDS_COM_SK_DELETE">Slet</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (arbejde)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Ringetone</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Venner</text>
+ <text id="IDS_COM_BODY_COPY">Kopiér</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adresse</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Ingen favoritter</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontakter</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Vælg kontakter</text>
+ <text id="IDS_PB_BODY_PAGER">Personsøger</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Chat</text>
+ <text id="IDS_COM_BODY_GALLERY">Galleri</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobil (privat)</text>
+ <text id="IDS_COM_BODY_SEARCH">Søg</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Gruppenavnet bruges allerede</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Familie</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Navn</text>
+ <text id="IDS_PB_BODY_CITY">By</text>
+ <text id="IDS_COM_BODY_CREATE">Opret</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Afdeling</text>
+ <text id="IDS_PB_BODY_NICKNAME">Kaldenavn</text>
+ <text id="IDS_COM_BODY_CALL">Opkald</text>
+ <text id="IDS_PB_BODY_SUFFIX">Titel</text>
+ <text id="IDS_COM_POP_UNKNOWN">Ukendt</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favoritter</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Redigér grupper</text>
+ <text id="IDS_COM_SK_SAVE">Gem</text>
+ <text id="IDS_PB_BODY_PROVINCE">Region</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Send visitkort</text>
+ <text id="IDS_COM_POP_ADDED">Tilføjet</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videoopkald</text>
+ <text id="IDS_PB_BODY_HOME">Hjem</text>
+ <text id="IDS_PB_BODY_NOTE">Bemærkning</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Kontaktindstillinger</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Rækkefølge for visningsnavn</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Sletter kontakter...</text>
+ <text id="IDS_PB_BODY_STREET">Vej</text>
+ <text id="IDS_PB_BODY_NUMBER">Nummer</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detaljer</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Arbejde</text>
+ <text id="IDS_COM_BODY_REMOVE">Fjern</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Postnummer</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (privat)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Først fornavn</text>
+ <text id="IDS_PB_BODY_DEFAULT">Standard</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Gruppenavn</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Gruppen</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Vorname</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Jahrestag</text>
+ <text id="IDS_PB_BODY_COMPANY">Firma</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Beruf</text>
+ <text id="IDS_COM_POP_CLOSE">Schließen</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Alle auswählen</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Zu Favoriten hinzufügen</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Nachricht</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Nachname</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Kontakt speichern in</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobil (Arbeit)</text>
+ <text id="IDS_COM_SK_NEW">Neu</text>
+ <text id="IDS_PB_SK_CANCEL">Abbrechen</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Zweiter Vorname</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Als Standard-E-Mail markieren</text>
+ <text id="IDS_PB_BODY_OTHER">Andere</text>
+ <text id="IDS_COM_POP_REMOVED">Entfernt</text>
+ <text id="IDS_COM_POP_SUCCESS">Abgeschlossen</text>
+ <text id="IDS_PB_BODY_COUNTRY">Land</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Geburtstag</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Alle Kontakte</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Nicht zugewiesen</text>
+ <text id="IDS_COM_SK_DONE">OK</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobil</text>
+ <text id="IDS_COM_BODY_EMAIL">E-Mail</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Gruppe auswählen</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Mitglied hzfg.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Keine Kontakte</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Foto entfernen</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Nachname zuerst</text>
+ <text id="IDS_PB_OPT_VIEW">Anzeigen</text>
+ <text id="IDS_PB_BODY_WORK">Arbeit</text>
+ <text id="IDS_COM_SK_EDIT">Bearbeiten</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Keine Gruppe</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Ungültige E-Mail-Adresse</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Zu Kontakten hinzufügen</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Als Standardnummer markieren</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Weitere Informationen</text>
+ <text id="IDS_COM_POP_SELECTED">Ausgewählt</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Leer</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Foto aufnehmen</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Neue Gruppe</text>
+ <text id="IDS_COM_SK_DELETE">Löschen</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (Arbeit)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Klingelton</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Freunde</text>
+ <text id="IDS_COM_BODY_COPY">Kopieren</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adresse</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Keine Favoriten</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontakte</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Kontakte auswählen</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Instant Messenger</text>
+ <text id="IDS_COM_BODY_GALLERY">Galerie</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobil (Privat)</text>
+ <text id="IDS_COM_BODY_SEARCH">Suche</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Gruppenname wird bereits verwendet</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Familie</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Name</text>
+ <text id="IDS_PB_BODY_CITY">Stadt</text>
+ <text id="IDS_COM_BODY_CREATE">Erstellen</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Abteilung</text>
+ <text id="IDS_PB_BODY_NICKNAME">Spitzname</text>
+ <text id="IDS_COM_BODY_CALL">Anruf</text>
+ <text id="IDS_PB_BODY_SUFFIX">Namenszusatz</text>
+ <text id="IDS_COM_POP_UNKNOWN">Unbekannt</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favoriten</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Gruppen\nbearbeiten</text>
+ <text id="IDS_COM_SK_SAVE">Speichern</text>
+ <text id="IDS_PB_BODY_PROVINCE">Region</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Visitenkarte senden</text>
+ <text id="IDS_COM_POP_ADDED">Hinzugefügt</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videoanruf</text>
+ <text id="IDS_PB_BODY_HOME">Privat</text>
+ <text id="IDS_PB_BODY_NOTE">Memo</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Kontakteinstellungen</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Reihenfolge des Anzeigenamens</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Kontakte werden gelöscht...</text>
+ <text id="IDS_PB_BODY_STREET">Straße</text>
+ <text id="IDS_PB_BODY_NUMBER">Nummer</text>
+ <text id="IDS_PB_HEADER_DETAILS">Details</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Büro</text>
+ <text id="IDS_COM_BODY_REMOVE">Entfernen</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Postleitzahl</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (Privat)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Vorname zuerst</text>
+ <text id="IDS_PB_BODY_DEFAULT">Standard</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Gruppenname</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Ομάδες</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Όνομα</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Επέτειος</text>
+ <text id="IDS_PB_BODY_COMPANY">Εταιρεία</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Τίτλος εργασίας</text>
+ <text id="IDS_COM_POP_CLOSE">Κλείσιμο</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Επιλογή όλων</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Προσθήκη στα αγαπημένα</text>
+ <text id="IDS_PB_BODY_PHONE">Τηλέφωνο</text>
+ <text id="IDS_COM_BODY_MESSAGE">Μήνυμα</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Επώνυμο</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Αποθήκευση επαφής σε</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Κινητό (Εργασία)</text>
+ <text id="IDS_COM_SK_NEW">Νέο</text>
+ <text id="IDS_PB_SK_CANCEL">Άκυρο</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Πατρώνυμο</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Σήμανση ως προεπιλεγμένης διεύθυνσης ηλεκτρονικού ταχυδρομείου</text>
+ <text id="IDS_PB_BODY_OTHER">Άλλο</text>
+ <text id="IDS_COM_POP_REMOVED">Αφαιρέθηκε</text>
+ <text id="IDS_COM_POP_SUCCESS">Ολοκληρώθηκε</text>
+ <text id="IDS_PB_BODY_COUNTRY">Χώρα</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Γενέθλια</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Όλες οι επαφές</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Δεν έχει αντιστοιχηθεί</text>
+ <text id="IDS_COM_SK_DONE">Ok</text>
+ <text id="IDS_PB_BODY_MOBILE">Κινητό</text>
+ <text id="IDS_COM_BODY_EMAIL">Email</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Επιλογή ομάδας</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Πρ.μέλους</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Καμία επαφή</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Κατάργηση φωτογραφίας</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Πρώτα το επίθετο</text>
+ <text id="IDS_PB_OPT_VIEW">Προβολή</text>
+ <text id="IDS_PB_BODY_WORK">Εργασία</text>
+ <text id="IDS_COM_SK_EDIT">Επεξεργ.</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Καμία ομάδα</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Μη έγκυρη διεύθυνση email</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Προσθήκη στις Επαφές</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Ορισμός ως προεπιλεγμένου αριθμού</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Περισσότερες πληροφορίες</text>
+ <text id="IDS_COM_POP_SELECTED">Επιλεγμένο</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Κενό</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Λήψη φωτογραφίας</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Νέα ομάδα</text>
+ <text id="IDS_COM_SK_DELETE">Διαγραφή</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Φαξ (Εργασία)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Ήχος κλήσης</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Φίλοι</text>
+ <text id="IDS_COM_BODY_COPY">Αντιγραφή</text>
+ <text id="IDS_PB_BODY_ADDRESS">Διεύθυνση</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Δεν υπάρχουν αγαπημένα</text>
+ <text id="IDS_COM_BODY_CONTACTS">Επαφές</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Επιλογή επαφών</text>
+ <text id="IDS_PB_BODY_PAGER">Συσκευή τηλεειδοποίησης</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Άμεσα μηνύματα</text>
+ <text id="IDS_COM_BODY_GALLERY">Συλλογή</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Προσωπικό κινητό</text>
+ <text id="IDS_COM_BODY_SEARCH">Αναζήτηση</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Το όνομα ομάδας υπάρχει ήδη</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Οικογένεια</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Όνομα</text>
+ <text id="IDS_PB_BODY_CITY">Πόλη</text>
+ <text id="IDS_COM_BODY_CREATE">Δημ/ργία</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Τμήμα</text>
+ <text id="IDS_PB_BODY_NICKNAME">Υποκοριστικό</text>
+ <text id="IDS_COM_BODY_CALL">Κλήση</text>
+ <text id="IDS_PB_BODY_SUFFIX">Επίθημα</text>
+ <text id="IDS_COM_POP_UNKNOWN">Άγνωστο</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Αγαπημένα</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Επεξεργασία\n ομάδων</text>
+ <text id="IDS_COM_SK_SAVE">Αποθ/ση</text>
+ <text id="IDS_PB_BODY_PROVINCE">Επαρχία</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Αποστολή επαγγελματικής κάρτας</text>
+ <text id="IDS_COM_POP_ADDED">Προστέθηκε</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Κλήση βίντεο</text>
+ <text id="IDS_PB_BODY_HOME">Σπίτι</text>
+ <text id="IDS_PB_BODY_NOTE">Σημείωση</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Ρυθμίσεις επαφών</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Σειρά εμφανιζόμενου ονόματος</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Διαγραφή επαφών...</text>
+ <text id="IDS_PB_BODY_STREET">Οδός</text>
+ <text id="IDS_PB_BODY_NUMBER">Αριθμός</text>
+ <text id="IDS_PB_HEADER_DETAILS">Λεπτομέρειες</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Εργασία</text>
+ <text id="IDS_COM_BODY_REMOVE">Κατάργηση</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Ταχυδρομικός κώδικας</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Φαξ (Οικίας)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Πρώτα το όνομα</text>
+ <text id="IDS_PB_BODY_DEFAULT">Προεπιλογή</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Όνομα ομάδας</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Groups</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">First name</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Anniversary</text>
+ <text id="IDS_PB_BODY_COMPANY">Company</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Job title</text>
+ <text id="IDS_COM_POP_CLOSE">Close</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Select all</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Add to favourites</text>
+ <text id="IDS_PB_BODY_PHONE">Phone</text>
+ <text id="IDS_COM_BODY_MESSAGE">Message</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Last name</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Save contact to</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobile (work)</text>
+ <text id="IDS_COM_SK_NEW">New</text>
+ <text id="IDS_PB_SK_CANCEL">Cancel</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Middle name</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Mark as default email</text>
+ <text id="IDS_PB_BODY_OTHER">Other</text>
+ <text id="IDS_COM_POP_REMOVED">Removed</text>
+ <text id="IDS_COM_POP_SUCCESS">Success</text>
+ <text id="IDS_PB_BODY_COUNTRY">Country</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Birthday</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">All contacts</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Not assigned</text>
+ <text id="IDS_COM_SK_DONE">Done</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobile</text>
+ <text id="IDS_COM_BODY_EMAIL">Email</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Select group</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Add member</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">No contacts</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Remove photo</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Last name first</text>
+ <text id="IDS_PB_OPT_VIEW">View</text>
+ <text id="IDS_PB_BODY_WORK">Work</text>
+ <text id="IDS_COM_SK_EDIT">Edit</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">No group</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Invalid email address</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Add to Contacts</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Mark as default number</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">More information</text>
+ <text id="IDS_COM_POP_SELECTED">Selected</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Empty</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Take a photo</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">New group</text>
+ <text id="IDS_COM_SK_DELETE">Delete</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (work)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Ringtone</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Friends</text>
+ <text id="IDS_COM_BODY_COPY">Copy</text>
+ <text id="IDS_PB_BODY_ADDRESS">Address</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">No favourites</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contacts</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Select contacts</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Instant messenger</text>
+ <text id="IDS_COM_BODY_GALLERY">Gallery</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobile (home)</text>
+ <text id="IDS_COM_BODY_SEARCH">Search</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Group name already in use</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Family</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Name</text>
+ <text id="IDS_PB_BODY_CITY">City</text>
+ <text id="IDS_COM_BODY_CREATE">Create</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Department</text>
+ <text id="IDS_PB_BODY_NICKNAME">Nickname</text>
+ <text id="IDS_COM_BODY_CALL">Call</text>
+ <text id="IDS_PB_BODY_SUFFIX">Suffix</text>
+ <text id="IDS_COM_POP_UNKNOWN">Unknown</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favourites</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Edit groups</text>
+ <text id="IDS_COM_SK_SAVE">Save</text>
+ <text id="IDS_PB_BODY_PROVINCE">Province</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Send namecard</text>
+ <text id="IDS_COM_POP_ADDED">Added</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Video call</text>
+ <text id="IDS_PB_BODY_HOME">Home</text>
+ <text id="IDS_PB_BODY_NOTE">Note</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Contact settings</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Order of display name</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Deleting contacts...</text>
+ <text id="IDS_PB_BODY_STREET">Street</text>
+ <text id="IDS_PB_BODY_NUMBER">Number</text>
+ <text id="IDS_PB_HEADER_DETAILS">Details</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Work</text>
+ <text id="IDS_COM_BODY_REMOVE">Remove</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Postal code</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (home)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">First name first</text>
+ <text id="IDS_PB_BODY_DEFAULT">Default</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Group name</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Groups</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">First name</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Anniversary</text>
+ <text id="IDS_PB_BODY_COMPANY">Company</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Job title</text>
+ <text id="IDS_COM_POP_CLOSE">Close</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Select all</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Add to Favorites</text>
+ <text id="IDS_PB_BODY_PHONE">Phone</text>
+ <text id="IDS_COM_BODY_MESSAGE">Message</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Last name</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Save contact to</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobile (Work)</text>
+ <text id="IDS_COM_SK_NEW">New</text>
+ <text id="IDS_PB_SK_CANCEL">Cancel</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Middle name</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Mark as default email</text>
+ <text id="IDS_PB_BODY_OTHER">Other</text>
+ <text id="IDS_COM_POP_REMOVED">Removed</text>
+ <text id="IDS_COM_POP_SUCCESS">Success</text>
+ <text id="IDS_PB_BODY_COUNTRY">Country</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Birthday</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">All contacts</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Not assigned</text>
+ <text id="IDS_COM_SK_DONE">Done</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobile</text>
+ <text id="IDS_COM_BODY_EMAIL">Email</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Select group</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Add member</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">No contacts</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Remove photo</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Last name first</text>
+ <text id="IDS_PB_OPT_VIEW">View</text>
+ <text id="IDS_PB_BODY_WORK">Work</text>
+ <text id="IDS_COM_SK_EDIT">Edit</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">No Group</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Invalid Email address</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Add to Contacts</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Mark as default number</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">More information</text>
+ <text id="IDS_COM_POP_SELECTED">Selected</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Empty</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Take a photo</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">New group</text>
+ <text id="IDS_COM_SK_DELETE">Delete</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (Work)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Ringtone</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Friends</text>
+ <text id="IDS_COM_BODY_COPY">Copy</text>
+ <text id="IDS_PB_BODY_ADDRESS">Address</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">No favorites</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contacts</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Select contacts</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Instant messenger</text>
+ <text id="IDS_COM_BODY_GALLERY">Gallery</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobile (Home)</text>
+ <text id="IDS_COM_BODY_SEARCH">Search</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Group name already in use</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Family</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Name</text>
+ <text id="IDS_PB_BODY_CITY">City</text>
+ <text id="IDS_COM_BODY_CREATE">Create</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Department</text>
+ <text id="IDS_PB_BODY_NICKNAME">Nickname</text>
+ <text id="IDS_COM_BODY_CALL">Call</text>
+ <text id="IDS_PB_BODY_SUFFIX">Suffix</text>
+ <text id="IDS_COM_POP_UNKNOWN">Unknown</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favorites</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Edit groups</text>
+ <text id="IDS_COM_SK_SAVE">Save</text>
+ <text id="IDS_PB_BODY_PROVINCE">Province</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Send namecard</text>
+ <text id="IDS_COM_POP_ADDED">Added</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Video call</text>
+ <text id="IDS_PB_BODY_HOME">Home</text>
+ <text id="IDS_PB_BODY_NOTE">Note</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Contact settings</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Order of display name</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Deleting contacts...</text>
+ <text id="IDS_PB_BODY_STREET">Street</text>
+ <text id="IDS_PB_BODY_NUMBER">Number</text>
+ <text id="IDS_PB_HEADER_DETAILS">Details</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Work</text>
+ <text id="IDS_COM_BODY_REMOVE">Remove</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Postal code</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (Home)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">First name first</text>
+ <text id="IDS_PB_BODY_DEFAULT">Default</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Group name</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Groups</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">First name</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Anniversary</text>
+ <text id="IDS_PB_BODY_COMPANY">Company</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Job title</text>
+ <text id="IDS_COM_POP_CLOSE">Close</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Select all</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Add to Favorites</text>
+ <text id="IDS_PB_BODY_PHONE">Phone</text>
+ <text id="IDS_COM_BODY_MESSAGE">Message</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Last name</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Save contact to</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobile (Work)</text>
+ <text id="IDS_COM_SK_NEW">New</text>
+ <text id="IDS_PB_SK_CANCEL">Cancel</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Middle name</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Mark as default email</text>
+ <text id="IDS_PB_BODY_OTHER">Other</text>
+ <text id="IDS_COM_POP_REMOVED">Remove</text>
+ <text id="IDS_COM_POP_SUCCESS">Success</text>
+ <text id="IDS_PB_BODY_COUNTRY">Country</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Birthday</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">All contacts</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Not assigned</text>
+ <text id="IDS_COM_SK_DONE">Done</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobile</text>
+ <text id="IDS_COM_BODY_EMAIL">Email</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Select group</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Add member</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">No contacts</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Delete photo</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Last name first</text>
+ <text id="IDS_PB_OPT_VIEW">View</text>
+ <text id="IDS_PB_BODY_WORK">Work</text>
+ <text id="IDS_COM_SK_EDIT">Edit</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">No Group</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Invalid email address</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Add to Contacts</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Mark as default number</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">More information</text>
+ <text id="IDS_COM_POP_SELECTED">Selected</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Empty</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Take a photo</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">New group</text>
+ <text id="IDS_COM_SK_DELETE">Delete</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (Work)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Ringtone</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Friends</text>
+ <text id="IDS_COM_BODY_COPY">Copy</text>
+ <text id="IDS_PB_BODY_ADDRESS">Address</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">No favorites</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contacts</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Select contacts</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Instant messenger</text>
+ <text id="IDS_COM_BODY_GALLERY">Gallery</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobile (Home)</text>
+ <text id="IDS_COM_BODY_SEARCH">Search</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Group name already in use</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Family</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Name</text>
+ <text id="IDS_PB_BODY_CITY">City</text>
+ <text id="IDS_COM_BODY_CREATE">Create</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Department</text>
+ <text id="IDS_PB_BODY_NICKNAME">Nickname</text>
+ <text id="IDS_COM_BODY_CALL">Call</text>
+ <text id="IDS_PB_BODY_SUFFIX">Suffix</text>
+ <text id="IDS_COM_POP_UNKNOWN">Unknown</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favorites</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Edit groups</text>
+ <text id="IDS_COM_SK_SAVE">Save</text>
+ <text id="IDS_PB_BODY_PROVINCE">Province</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Send namecard</text>
+ <text id="IDS_COM_POP_ADDED">Added</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Video call</text>
+ <text id="IDS_PB_BODY_HOME">Home</text>
+ <text id="IDS_PB_BODY_NOTE">Note</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Contact settings</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Order of display name</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Deleting contacts...</text>
+ <text id="IDS_PB_BODY_STREET">Street</text>
+ <text id="IDS_PB_BODY_NUMBER">Number</text>
+ <text id="IDS_PB_HEADER_DETAILS">Details</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Work</text>
+ <text id="IDS_COM_BODY_REMOVE">Delete</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Postal code</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (Home)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">First name first</text>
+ <text id="IDS_PB_BODY_DEFAULT">Default</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Group name</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Rühmad</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Eesnimi</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Tähtpäev</text>
+ <text id="IDS_PB_BODY_COMPANY">Ettevõte</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Ametinimetus</text>
+ <text id="IDS_COM_POP_CLOSE">Sulge</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Vali kõik</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Lisa lemmikutesse</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Sõnum</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Perekonnanimi</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Kontakti salvestuskoht:</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobiil (töö)</text>
+ <text id="IDS_COM_SK_NEW">Uus</text>
+ <text id="IDS_PB_SK_CANCEL">Tühista</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Keskmine nimi</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Märgi vaikimisi e-postiks</text>
+ <text id="IDS_PB_BODY_OTHER">Muu</text>
+ <text id="IDS_COM_POP_REMOVED">Eemaldatud</text>
+ <text id="IDS_COM_POP_SUCCESS">Õnnestus</text>
+ <text id="IDS_PB_BODY_COUNTRY">Riik</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Sünnipäev</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Kõik kontaktid</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Pole määratud</text>
+ <text id="IDS_COM_SK_DONE">Valmis</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobiil</text>
+ <text id="IDS_COM_BODY_EMAIL">E-post</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Vali rühm</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Lisa lii.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Kontaktid puuduvad</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Eemalda foto</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Perekonnanimi ees</text>
+ <text id="IDS_PB_OPT_VIEW">Kuva</text>
+ <text id="IDS_PB_BODY_WORK">Töö</text>
+ <text id="IDS_COM_SK_EDIT">Muuda</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Rühm puudub</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Vale e-posti aadress</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Lisa kontaktidesse</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Märgi vaikimisi numbriks</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Lisateave</text>
+ <text id="IDS_COM_POP_SELECTED">Valitud</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Tühi</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Pildista</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Uus rühm</text>
+ <text id="IDS_COM_SK_DELETE">Kustuta</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faks (töö)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Helin</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Sõbrad</text>
+ <text id="IDS_COM_BODY_COPY">Kopeeri</text>
+ <text id="IDS_PB_BODY_ADDRESS">Aadress</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Lemmikuid ei ole</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontaktid</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Vali kontaktid</text>
+ <text id="IDS_PB_BODY_PAGER">Piipar</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Vahetu sõnumside</text>
+ <text id="IDS_COM_BODY_GALLERY">Galerii</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobiil (kodu)</text>
+ <text id="IDS_COM_BODY_SEARCH">Otsi</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Rühma nimi on juba kasutusel</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Perekond</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nimi</text>
+ <text id="IDS_PB_BODY_CITY">Linn</text>
+ <text id="IDS_COM_BODY_CREATE">Loo</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Osakond</text>
+ <text id="IDS_PB_BODY_NICKNAME">Hüüdnimi</text>
+ <text id="IDS_COM_BODY_CALL">Helista</text>
+ <text id="IDS_PB_BODY_SUFFIX">Järelliide</text>
+ <text id="IDS_COM_POP_UNKNOWN">Tundmatu</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Lemmikud</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Muuda rühmasid</text>
+ <text id="IDS_COM_SK_SAVE">Salvesta</text>
+ <text id="IDS_PB_BODY_PROVINCE">Maakond</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Saada nimekaart</text>
+ <text id="IDS_COM_POP_ADDED">Lisatud</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videokõne</text>
+ <text id="IDS_PB_BODY_HOME">Kodu</text>
+ <text id="IDS_PB_BODY_NOTE">Märkus</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Kontakti seaded</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Kuvanime järjekord</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Kontaktide kustutamine...</text>
+ <text id="IDS_PB_BODY_STREET">Tänav</text>
+ <text id="IDS_PB_BODY_NUMBER">Number</text>
+ <text id="IDS_PB_HEADER_DETAILS">Üksikasjad</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Töö</text>
+ <text id="IDS_COM_BODY_REMOVE">Eemalda</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Postiindeks</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faks (kodu)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Eesnimi esimesena</text>
+ <text id="IDS_PB_BODY_DEFAULT">Vaikimisi</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Rühma nimi</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URLa</text>
+ <text id="IDS_PB_BODY_GROUPS">Taldeak</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Izena</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Urteurrena</text>
+ <text id="IDS_PB_BODY_COMPANY">Enpresa</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Kargua</text>
+ <text id="IDS_COM_POP_CLOSE">Itxi</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Denak aukeratu</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Gehitu gogokoetara</text>
+ <text id="IDS_PB_BODY_PHONE">Telefonoa</text>
+ <text id="IDS_COM_BODY_MESSAGE">Mezua</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Abizena</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Kontaktua hemen gorde</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mugikorra (lanekoa)</text>
+ <text id="IDS_COM_SK_NEW">Berria</text>
+ <text id="IDS_PB_SK_CANCEL">Ezeztatu</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Bigarren izena</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Markatu lehenetsitako helbide elektroniko gisa</text>
+ <text id="IDS_PB_BODY_OTHER">Besterik</text>
+ <text id="IDS_COM_POP_REMOVED">Kenduta</text>
+ <text id="IDS_COM_POP_SUCCESS">Behar bezala</text>
+ <text id="IDS_PB_BODY_COUNTRY">Herrialdea</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Urtebetetzea</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Kontaktu guztiak</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Esleitu gabe</text>
+ <text id="IDS_COM_SK_DONE">Amaituta</text>
+ <text id="IDS_PB_BODY_MOBILE">Mugikorra</text>
+ <text id="IDS_COM_BODY_EMAIL">Posta elektroniko mezuak</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Taldea aukeratu</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Kide geh.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Ez dago kontakturik</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Kendu argazkia</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Abizena aurrena</text>
+ <text id="IDS_PB_OPT_VIEW">Ikusi</text>
+ <text id="IDS_PB_BODY_WORK">Lana</text>
+ <text id="IDS_COM_SK_EDIT">Editatu</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Talderik ez</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Helbide elektroniko baliogabea</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Kontaktuetara gehitu</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Lehenetsitako zenbakia moduan markatu</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Informazio gehiago</text>
+ <text id="IDS_COM_POP_SELECTED">Aukeratutakoa(k)</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Hutsik</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Argazkia atera</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Talde berria</text>
+ <text id="IDS_COM_SK_DELETE">Ezabatu</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faxa (lanekoa)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Dei doinua</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Lagunak</text>
+ <text id="IDS_COM_BODY_COPY">Kopiatu</text>
+ <text id="IDS_PB_BODY_ADDRESS">Helbidea</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Gogokorik ez</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontaktuak</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Hautatu kontaktuak</text>
+ <text id="IDS_PB_BODY_PAGER">Bilagailua</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Instanteko mezularitza</text>
+ <text id="IDS_COM_BODY_GALLERY">Galeria</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mugikorra (etxekoa)</text>
+ <text id="IDS_COM_BODY_SEARCH">Bilatu</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Taldearen izena dagoenek erabileran</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Familia</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Izena</text>
+ <text id="IDS_PB_BODY_CITY">Hiria</text>
+ <text id="IDS_COM_BODY_CREATE">Sortu</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Saila</text>
+ <text id="IDS_PB_BODY_NICKNAME">Ezizena</text>
+ <text id="IDS_COM_BODY_CALL">Deitu</text>
+ <text id="IDS_PB_BODY_SUFFIX">Atzizkia</text>
+ <text id="IDS_COM_POP_UNKNOWN">Ezezaguna</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Gogokoak</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Editatu taldeak</text>
+ <text id="IDS_COM_SK_SAVE">Gorde</text>
+ <text id="IDS_PB_BODY_PROVINCE">Probintzia</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Izen txartela bidali</text>
+ <text id="IDS_COM_POP_ADDED">Gehituta</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Bideo-deia</text>
+ <text id="IDS_PB_BODY_HOME">Etxea</text>
+ <text id="IDS_PB_BODY_NOTE">Oharra</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Kontaktuen konfigurazioa</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Ezizenen antolaketa</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Kontaktuak ezabatzen...</text>
+ <text id="IDS_PB_BODY_STREET">Kalea</text>
+ <text id="IDS_PB_BODY_NUMBER">Zenbakia</text>
+ <text id="IDS_PB_HEADER_DETAILS">Xehetasunak</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Lana</text>
+ <text id="IDS_COM_BODY_REMOVE">Kendu</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Posta kodea</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faxa (etxekoa)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Izena lehenago</text>
+ <text id="IDS_PB_BODY_DEFAULT">Lehenetsia</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Talde izena</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL-osoite</text>
+ <text id="IDS_PB_BODY_GROUPS">Ryhmät</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Etunimi</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Vuosipäivä</text>
+ <text id="IDS_PB_BODY_COMPANY">Yritys</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Työtehtävä</text>
+ <text id="IDS_COM_POP_CLOSE">Sulje</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Valitse kaikki</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Lisää suosikkeihin</text>
+ <text id="IDS_PB_BODY_PHONE">Puhelin</text>
+ <text id="IDS_COM_BODY_MESSAGE">Viesti</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Sukunimi</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Tallenna yhteystieto kohteeseen</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Matkapuhelin (työ)</text>
+ <text id="IDS_COM_SK_NEW">Uusi</text>
+ <text id="IDS_PB_SK_CANCEL">Peruuta</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Toinen nimi</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Merkitse oletussähköpostiksi</text>
+ <text id="IDS_PB_BODY_OTHER">Muu</text>
+ <text id="IDS_COM_POP_REMOVED">Poistettu</text>
+ <text id="IDS_COM_POP_SUCCESS">Valmis</text>
+ <text id="IDS_PB_BODY_COUNTRY">Maa</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Syntymäpäivä</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Kaikki yhteystiedot</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Ei määritelty</text>
+ <text id="IDS_COM_SK_DONE">Valmis</text>
+ <text id="IDS_PB_BODY_MOBILE">Matkapuhelin</text>
+ <text id="IDS_COM_BODY_EMAIL">Sähköposti</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Valitse ryhmä</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">L. jäsen</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Ei yhteystietoja</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Poista valokuva</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Sukunimi ensin</text>
+ <text id="IDS_PB_OPT_VIEW">Näytä</text>
+ <text id="IDS_PB_BODY_WORK">Työ</text>
+ <text id="IDS_COM_SK_EDIT">Muokkaa</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Ei ryhmää</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Virheellinen sähköpostiosoite</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Lisää yhteystietoihin</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Merkitse oletusnumeroksi</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Lisätietoja</text>
+ <text id="IDS_COM_POP_SELECTED">Valittu</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Tyhjä</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Ota valokuva</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Uusi ryhmä</text>
+ <text id="IDS_COM_SK_DELETE">Poista</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faksi (työ)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Soittoääni</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Ystävät</text>
+ <text id="IDS_COM_BODY_COPY">Kopioi</text>
+ <text id="IDS_PB_BODY_ADDRESS">Osoite</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Ei suosikkeja</text>
+ <text id="IDS_COM_BODY_CONTACTS">Yhteystiedot</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Valitse yhteystiedot</text>
+ <text id="IDS_PB_BODY_PAGER">Hakulaite</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Pikaviestin</text>
+ <text id="IDS_COM_BODY_GALLERY">Galleria</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Matkapuhelin (koti)</text>
+ <text id="IDS_COM_BODY_SEARCH">Etsi</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Ryhmän nimi on jo käytössä</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Perhe</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nimi</text>
+ <text id="IDS_PB_BODY_CITY">Kaupunki</text>
+ <text id="IDS_COM_BODY_CREATE">Luo</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Osasto</text>
+ <text id="IDS_PB_BODY_NICKNAME">Lempinimi</text>
+ <text id="IDS_COM_BODY_CALL">Puhelu</text>
+ <text id="IDS_PB_BODY_SUFFIX">Pääte</text>
+ <text id="IDS_COM_POP_UNKNOWN">Tuntematon</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Suosikit</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Muokkaa\nryhmiä</text>
+ <text id="IDS_COM_SK_SAVE">Tallenna</text>
+ <text id="IDS_PB_BODY_PROVINCE">Maakunta</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Lähetä käyntikortti</text>
+ <text id="IDS_COM_POP_ADDED">Lisätty</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videopuhelu</text>
+ <text id="IDS_PB_BODY_HOME">Koti</text>
+ <text id="IDS_PB_BODY_NOTE">Huomautus</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Yhteystietoasetukset</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Nimen näyttöjärjestys</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Poistetaan yhteystietoja...</text>
+ <text id="IDS_PB_BODY_STREET">Katu</text>
+ <text id="IDS_PB_BODY_NUMBER">Numero</text>
+ <text id="IDS_PB_HEADER_DETAILS">Yksityiskohdat</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Työ</text>
+ <text id="IDS_COM_BODY_REMOVE">Poista</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Postinumero</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faksi (koti)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Etunimi ensin</text>
+ <text id="IDS_PB_BODY_DEFAULT">Oletus</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Ryhmän nimi</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Groupes</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Prénom</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Occasion</text>
+ <text id="IDS_PB_BODY_COMPANY">Société</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Profession</text>
+ <text id="IDS_COM_POP_CLOSE">Fermer</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Sélectionner tout</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Ajouter aux favoris</text>
+ <text id="IDS_PB_BODY_PHONE">Téléphone</text>
+ <text id="IDS_COM_BODY_MESSAGE">Message</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Nom de famille</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Enregistrer le contact dans</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobile (Professionnel)</text>
+ <text id="IDS_COM_SK_NEW">Nouveau</text>
+ <text id="IDS_PB_SK_CANCEL">Annuler</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Deuxième prénom</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Marquer comme courriel par défaut</text>
+ <text id="IDS_PB_BODY_OTHER">Autre</text>
+ <text id="IDS_COM_POP_REMOVED">Retiré</text>
+ <text id="IDS_COM_POP_SUCCESS">Terminé</text>
+ <text id="IDS_PB_BODY_COUNTRY">Pays</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Anniversaire</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Tous les contacts</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Non affecté</text>
+ <text id="IDS_COM_SK_DONE">OK</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobile</text>
+ <text id="IDS_COM_BODY_EMAIL">Courriel</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Sélectionner groupe</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Aj. membre</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Aucun contact</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Supprimer la photo</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Nom en premier</text>
+ <text id="IDS_PB_OPT_VIEW">Afficher</text>
+ <text id="IDS_PB_BODY_WORK">Professionnel</text>
+ <text id="IDS_COM_SK_EDIT">Modifier</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Aucun groupe</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Adresse courriel incorrecte</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Ajouter aux contacts</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Définir comme numéro par défaut</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Plus d'informations</text>
+ <text id="IDS_COM_POP_SELECTED">Sélectionné</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Vide</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Photographier</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nouveau groupe</text>
+ <text id="IDS_COM_SK_DELETE">Supprimer</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (Professionnel)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Sonnerie</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Amis</text>
+ <text id="IDS_COM_BODY_COPY">Copier</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adresse</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Aucun favori</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contacts</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Sélectionner les contacts</text>
+ <text id="IDS_PB_BODY_PAGER">Téléav.</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Messagerie instantanée</text>
+ <text id="IDS_COM_BODY_GALLERY">Galerie</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobile - perso</text>
+ <text id="IDS_COM_BODY_SEARCH">Recherche</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Nom de groupe déjà utilisé</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Famille</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nom</text>
+ <text id="IDS_PB_BODY_CITY">Ville</text>
+ <text id="IDS_COM_BODY_CREATE">Créer</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Service</text>
+ <text id="IDS_PB_BODY_NICKNAME">Surnom</text>
+ <text id="IDS_COM_BODY_CALL">Appeler</text>
+ <text id="IDS_PB_BODY_SUFFIX">Suffixe</text>
+ <text id="IDS_COM_POP_UNKNOWN">Inconnu</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favoris</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Modifier les groupes</text>
+ <text id="IDS_COM_SK_SAVE">Sauv.</text>
+ <text id="IDS_PB_BODY_PROVINCE">Province</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Envoyer la carte de visite</text>
+ <text id="IDS_COM_POP_ADDED">Ajouté</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Appel vidéo</text>
+ <text id="IDS_PB_BODY_HOME">Domicile</text>
+ <text id="IDS_PB_BODY_NOTE">Note</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Paramètres des contacts</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Ordre d'affichage des noms</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Suppression des contacts...</text>
+ <text id="IDS_PB_BODY_STREET">Rue</text>
+ <text id="IDS_PB_BODY_NUMBER">Numéro</text>
+ <text id="IDS_PB_HEADER_DETAILS">Détails</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Professionnel</text>
+ <text id="IDS_COM_BODY_REMOVE">Supprimer</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Code postal</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax - perso</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Prénom d'abord</text>
+ <text id="IDS_PB_BODY_DEFAULT">Par défaut</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Nom de groupe</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Groupes</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Prénom</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Occasion</text>
+ <text id="IDS_PB_BODY_COMPANY">Société</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Profession</text>
+ <text id="IDS_COM_POP_CLOSE">Fermer</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Sélect. tout</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Ajouter aux favoris</text>
+ <text id="IDS_PB_BODY_PHONE">Téléphone</text>
+ <text id="IDS_COM_BODY_MESSAGE">Message</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Nom</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Enregistrer n° dans</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobile (Pro)</text>
+ <text id="IDS_COM_SK_NEW">Nouveau</text>
+ <text id="IDS_PB_SK_CANCEL">Annuler</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Deuxième prénom</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Marquer comme e-mail par défaut</text>
+ <text id="IDS_PB_BODY_OTHER">Autre</text>
+ <text id="IDS_COM_POP_REMOVED">Supprimé</text>
+ <text id="IDS_COM_POP_SUCCESS">Terminé</text>
+ <text id="IDS_PB_BODY_COUNTRY">Pays</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Anniversaire</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Tous les contacts</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Non affecté</text>
+ <text id="IDS_COM_SK_DONE">Effectué</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobile</text>
+ <text id="IDS_COM_BODY_EMAIL">Email</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Sélectionner groupe</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Aj. membre</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Aucun contact</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Supprimer la photo</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Nom en premier</text>
+ <text id="IDS_PB_OPT_VIEW">Afficher</text>
+ <text id="IDS_PB_BODY_WORK">Pro.</text>
+ <text id="IDS_COM_SK_EDIT">Modifier</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Aucun groupe</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">E-mail incorrect</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Ajouter aux contacts</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Définir comme n° par défaut</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Plus d'informations</text>
+ <text id="IDS_COM_POP_SELECTED">Sélectionné</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Vide</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Prendre une photo</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nouveau groupe</text>
+ <text id="IDS_COM_SK_DELETE">Supprimer</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax - Pro</text>
+ <text id="IDS_PB_BODY_RINGTONE">Sonnerie</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Amis</text>
+ <text id="IDS_COM_BODY_COPY">Copier</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adresse</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Aucun favori</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contacts</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Sélectionner les contacts</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Messagerie instantanée</text>
+ <text id="IDS_COM_BODY_GALLERY">Galerie</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobile - perso</text>
+ <text id="IDS_COM_BODY_SEARCH">Rechercher</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Nom de groupe déjà utilisé</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Famille</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nom</text>
+ <text id="IDS_PB_BODY_CITY">Ville</text>
+ <text id="IDS_COM_BODY_CREATE">Créer</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Service</text>
+ <text id="IDS_PB_BODY_NICKNAME">Surnom</text>
+ <text id="IDS_COM_BODY_CALL">Appel</text>
+ <text id="IDS_PB_BODY_SUFFIX">Suffixe</text>
+ <text id="IDS_COM_POP_UNKNOWN">Inconnu</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favoris</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Modifier groupes</text>
+ <text id="IDS_COM_SK_SAVE">Sauveg.</text>
+ <text id="IDS_PB_BODY_PROVINCE">Province</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Envoyer carte de visite</text>
+ <text id="IDS_COM_POP_ADDED">Ajouté</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Appel visio</text>
+ <text id="IDS_PB_BODY_HOME">Domicile</text>
+ <text id="IDS_PB_BODY_NOTE">Note</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Contacts</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Ordre d'affichage des noms et prénoms</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Suppression des contacts...</text>
+ <text id="IDS_PB_BODY_STREET">Rue</text>
+ <text id="IDS_PB_BODY_NUMBER">Numéro</text>
+ <text id="IDS_PB_HEADER_DETAILS">Détails</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Professionnel</text>
+ <text id="IDS_COM_BODY_REMOVE">Supprimer</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Code postal</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax - perso</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Prénom d'abord</text>
+ <text id="IDS_PB_BODY_DEFAULT">Par défaut</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Nom de groupe</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grúpaí</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Céadainm</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Lá cinn bliana</text>
+ <text id="IDS_PB_BODY_COMPANY">Cuideachta</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Teideal poist</text>
+ <text id="IDS_COM_POP_CLOSE">Dún</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Roghnaigh gach</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Cuir le ceanáin</text>
+ <text id="IDS_PB_BODY_PHONE">Fón</text>
+ <text id="IDS_COM_BODY_MESSAGE">Teachtaireacht</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Sloinne</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Sábháil teagmhálaí chuig</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Fón póca (Obair)</text>
+ <text id="IDS_COM_SK_NEW">Nua</text>
+ <text id="IDS_PB_SK_CANCEL">Cuir ar ceal</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Dara ainm</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Marcáil mar r-phost réamhshocraithe</text>
+ <text id="IDS_PB_BODY_OTHER">Eile</text>
+ <text id="IDS_COM_POP_REMOVED">Bainte</text>
+ <text id="IDS_COM_POP_SUCCESS">D’éirigh leis</text>
+ <text id="IDS_PB_BODY_COUNTRY">Tír</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Breithlá</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Gach teagmhálaí</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Neamhsannta</text>
+ <text id="IDS_COM_SK_DONE">Déanta</text>
+ <text id="IDS_PB_BODY_MOBILE">Fón Póca</text>
+ <text id="IDS_COM_BODY_EMAIL">R-phost</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Roghnaigh grúpa</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Cuir ball</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Níl teagmhálaithe ann</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Bain grianghraf</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Sloinne ar dtús</text>
+ <text id="IDS_PB_OPT_VIEW">Amharc air</text>
+ <text id="IDS_PB_BODY_WORK">Obair</text>
+ <text id="IDS_COM_SK_EDIT">Eagraigh</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Níl grúpa ann</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Seoladh r-phoist neamhbhailí</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Cuir le Teagmhálaithe</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Marcáil mar uimhir réamhshocraithe</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Tuilleadh eolais</text>
+ <text id="IDS_COM_POP_SELECTED">Roghnaithe</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Folamh</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Glac grianghraf</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Grúpa nua</text>
+ <text id="IDS_COM_SK_DELETE">Scrios</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Facs (Obair)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Clingthon</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Cairde</text>
+ <text id="IDS_COM_BODY_COPY">Cóipeáil</text>
+ <text id="IDS_PB_BODY_ADDRESS">Seoladh</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Níl ceanáin ann</text>
+ <text id="IDS_COM_BODY_CONTACTS">Teagmhálaithe</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Roghnaigh teagmhálaithe</text>
+ <text id="IDS_PB_BODY_PAGER">Glaoire</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Teachtaire meandrach</text>
+ <text id="IDS_COM_BODY_GALLERY">Gailearaí</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Fón póca (Baile)</text>
+ <text id="IDS_COM_BODY_SEARCH">Cuardaigh</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Ainm an ghrúpa in úsáid cheana</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Teaghlach</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Ainm</text>
+ <text id="IDS_PB_BODY_CITY">Cathair</text>
+ <text id="IDS_COM_BODY_CREATE">Cruthaigh</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Roinn</text>
+ <text id="IDS_PB_BODY_NICKNAME">Leasainm</text>
+ <text id="IDS_COM_BODY_CALL">Glaoigh</text>
+ <text id="IDS_PB_BODY_SUFFIX">Iarmhír</text>
+ <text id="IDS_COM_POP_UNKNOWN">Anaithnid</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Ceanáin</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Cuir grúpaí in eagar</text>
+ <text id="IDS_COM_SK_SAVE">Sábháil</text>
+ <text id="IDS_PB_BODY_PROVINCE">Cúige</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Seol ainmchárta</text>
+ <text id="IDS_COM_POP_ADDED">Curtha leis</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Glao físe</text>
+ <text id="IDS_PB_BODY_HOME">Baile</text>
+ <text id="IDS_PB_BODY_NOTE">Nóta</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Socruithe teagmhálaithe</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Ord an ainm taispeána</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Teagmhálaithe á scriosadh...</text>
+ <text id="IDS_PB_BODY_STREET">Sráid</text>
+ <text id="IDS_PB_BODY_NUMBER">Uimhir</text>
+ <text id="IDS_PB_HEADER_DETAILS">Sonraí</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Obair</text>
+ <text id="IDS_COM_BODY_REMOVE">Bain</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Cód poist</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Facs (Baile)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Céadainm ar dtús</text>
+ <text id="IDS_PB_BODY_DEFAULT">Réamhshocrú</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Ainm an ghrúpa</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupos</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Nome</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Aniversario</text>
+ <text id="IDS_PB_BODY_COMPANY">Empresa</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Cargo</text>
+ <text id="IDS_COM_POP_CLOSE">Pechar</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Seleccionar todo</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Engadir a favoritos</text>
+ <text id="IDS_PB_BODY_PHONE">Teléfono</text>
+ <text id="IDS_COM_BODY_MESSAGE">Mensaxe</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Apelido</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Gardar contacto en</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Móbil (Traballo)</text>
+ <text id="IDS_COM_SK_NEW">Novo</text>
+ <text id="IDS_PB_SK_CANCEL">Cancelar</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Segundo nome</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Marcar como correo electrónico predeterminado</text>
+ <text id="IDS_PB_BODY_OTHER">Outro</text>
+ <text id="IDS_COM_POP_REMOVED">Eliminado</text>
+ <text id="IDS_COM_POP_SUCCESS">Éxito</text>
+ <text id="IDS_PB_BODY_COUNTRY">País</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Aniversario</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Todos os contactos</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Non asignado</text>
+ <text id="IDS_COM_SK_DONE">Finalizado</text>
+ <text id="IDS_PB_BODY_MOBILE">Móbil</text>
+ <text id="IDS_COM_BODY_EMAIL">Correo electrónico</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Seleccionar grupo</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Eng. mem</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Sen contactos</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Eliminar foto</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Apelido en primeiro lugar</text>
+ <text id="IDS_PB_OPT_VIEW">Ver</text>
+ <text id="IDS_PB_BODY_WORK">Traballo</text>
+ <text id="IDS_COM_SK_EDIT">Editar</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Sen grupo</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Enderezo de correo electrónico non válido</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Engadir a Contactos</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Marcar como número predeterminado</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Máis información</text>
+ <text id="IDS_COM_POP_SELECTED">Seleccionado</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Baleira</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Capturar unha foto</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Novo grupo</text>
+ <text id="IDS_COM_SK_DELETE">Eliminar</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (Traballo)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Melodía</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Amigos</text>
+ <text id="IDS_COM_BODY_COPY">Copiar</text>
+ <text id="IDS_PB_BODY_ADDRESS">Enderezo</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Non hai favoritos</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contactos</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Seleccionar contactos</text>
+ <text id="IDS_PB_BODY_PAGER">Busca</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Mensaxería instantánea</text>
+ <text id="IDS_COM_BODY_GALLERY">Galería</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Móbil (particular)</text>
+ <text id="IDS_COM_BODY_SEARCH">Buscar</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Nome de grupo xa en uso</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Familia</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nome</text>
+ <text id="IDS_PB_BODY_CITY">Cidade</text>
+ <text id="IDS_COM_BODY_CREATE">Crear</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Departamento</text>
+ <text id="IDS_PB_BODY_NICKNAME">Alcume</text>
+ <text id="IDS_COM_BODY_CALL">Chamar</text>
+ <text id="IDS_PB_BODY_SUFFIX">Sufixo</text>
+ <text id="IDS_COM_POP_UNKNOWN">Descoñecido</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favoritos</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Editar grupos</text>
+ <text id="IDS_COM_SK_SAVE">Gardar</text>
+ <text id="IDS_PB_BODY_PROVINCE">Provincia</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Enviar tarxeta de visita</text>
+ <text id="IDS_COM_POP_ADDED">Engadido</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videochamada</text>
+ <text id="IDS_PB_BODY_HOME">Particular</text>
+ <text id="IDS_PB_BODY_NOTE">Nota</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Axustes de contactos</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Orde de nome de pantalla</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Eliminando contactos...</text>
+ <text id="IDS_PB_BODY_STREET">Rúa</text>
+ <text id="IDS_PB_BODY_NUMBER">Número</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detalles</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Traballo</text>
+ <text id="IDS_COM_BODY_REMOVE">Eliminar</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Código postal</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (particular)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Primeiro o nome</text>
+ <text id="IDS_PB_BODY_DEFAULT">Predeterminada</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Nome do grupo</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">समूह</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">पहला नाम</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">वर्षगाँठ</text>
+ <text id="IDS_PB_BODY_COMPANY">कम्पनी</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">कार्य शीर्षक</text>
+ <text id="IDS_COM_POP_CLOSE">बंद करें</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">सभी चुनें</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">पसंद में जोड़ें</text>
+ <text id="IDS_PB_BODY_PHONE">फोन</text>
+ <text id="IDS_COM_BODY_MESSAGE">सन्देश</text>
+ <text id="IDS_PB_BODY_LAST_NAME">अंतिम नाम</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">इसमें संपर्क सेव करें</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">मोबाइल (कार्यस्थल)</text>
+ <text id="IDS_COM_SK_NEW">नया</text>
+ <text id="IDS_PB_SK_CANCEL">रद्द</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">मध्य नाम</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">डिफ़ॉल्ट ईमेल के रूप में चिन्हित करें</text>
+ <text id="IDS_PB_BODY_OTHER">अन्य</text>
+ <text id="IDS_COM_POP_REMOVED">हटाया</text>
+ <text id="IDS_COM_POP_SUCCESS">सफलता</text>
+ <text id="IDS_PB_BODY_COUNTRY">देश</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">जन्मदिन</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">सभी संपर्क</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">सौंपा नहीं गया</text>
+ <text id="IDS_COM_SK_DONE">हुआ</text>
+ <text id="IDS_PB_BODY_MOBILE">मोबाइल</text>
+ <text id="IDS_COM_BODY_EMAIL">ईमेल</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">समूह चुनें</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">सदस्य जोड़ें</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">कोई संपर्क नहीं</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">फ़ोटो निकालें</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">पहले अंतिम नाम</text>
+ <text id="IDS_PB_OPT_VIEW">देखें</text>
+ <text id="IDS_PB_BODY_WORK">काम</text>
+ <text id="IDS_COM_SK_EDIT">संपादन</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">कोई समूह नहीं है</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">अमान्य ईमेल पता</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">संपर्को में जोड़ें</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">डिफॉल्ट नंबर के रूप में चिन्हित करें</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">अधिक सूचना</text>
+ <text id="IDS_COM_POP_SELECTED">चयनित</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">खाली</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">एक फोटो लें</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">नया समूह</text>
+ <text id="IDS_COM_SK_DELETE">हटाएँ</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">फ़ैक्स (कार्यस्थल)</text>
+ <text id="IDS_PB_BODY_RINGTONE">रिंगटोन</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">मित्र</text>
+ <text id="IDS_COM_BODY_COPY">कॉपी करें</text>
+ <text id="IDS_PB_BODY_ADDRESS">पता</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">पसंदीदा नहीं</text>
+ <text id="IDS_COM_BODY_CONTACTS">संपर्क</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">संपर्क चुनें</text>
+ <text id="IDS_PB_BODY_PAGER">पेजर</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">इन्सटेंट मैसेंजर</text>
+ <text id="IDS_COM_BODY_GALLERY">गैलरी</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">मोबाइल (घर)</text>
+ <text id="IDS_COM_BODY_SEARCH">खोजें</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">समूह नाम पहले से उपयोग में</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">परिवार</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">नाम</text>
+ <text id="IDS_PB_BODY_CITY">शहर</text>
+ <text id="IDS_COM_BODY_CREATE">बनाएँ</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">विभाग</text>
+ <text id="IDS_PB_BODY_NICKNAME">उपनाम</text>
+ <text id="IDS_COM_BODY_CALL">कॉल</text>
+ <text id="IDS_PB_BODY_SUFFIX">प्रत्यय</text>
+ <text id="IDS_COM_POP_UNKNOWN">अज्ञात</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">पसंदीदा</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">समूह संपादित करें</text>
+ <text id="IDS_COM_SK_SAVE">सेव</text>
+ <text id="IDS_PB_BODY_PROVINCE">प्रांत</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">नेमकार्ड भेजें</text>
+ <text id="IDS_COM_POP_ADDED">जोड़ा गया</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">विडियो कॉल</text>
+ <text id="IDS_PB_BODY_HOME">घर</text>
+ <text id="IDS_PB_BODY_NOTE">टिप्पणी</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">कांटेक्ट Settings</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">प्रदर्शित नाम का क्रम</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">संपर्क हटाए जा रहे हैं...</text>
+ <text id="IDS_PB_BODY_STREET">गली</text>
+ <text id="IDS_PB_BODY_NUMBER">नंबर</text>
+ <text id="IDS_PB_HEADER_DETAILS">विवरण</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">काम</text>
+ <text id="IDS_COM_BODY_REMOVE">हटाएँ</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">डाक का कोड</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">फैक्स (घर)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">प्रथम नाम पहले</text>
+ <text id="IDS_PB_BODY_DEFAULT">डिफॉल्ट</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">समूह का नाम</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">Adresa</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupe</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Ime</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Godišnjica</text>
+ <text id="IDS_PB_BODY_COMPANY">Tvrtka</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Radno mjesto</text>
+ <text id="IDS_COM_POP_CLOSE">Prekid</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Odaberi sve</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Dodaj u Favorite</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Poruka</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Prezime</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Spremiti kontakt u?</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobitel (posao)</text>
+ <text id="IDS_COM_SK_NEW">Nova</text>
+ <text id="IDS_PB_SK_CANCEL">Prekid</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Srednje ime</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Označi kao zadani email</text>
+ <text id="IDS_PB_BODY_OTHER">Ostalo</text>
+ <text id="IDS_COM_POP_REMOVED">Uklonjeno</text>
+ <text id="IDS_COM_POP_SUCCESS">Uspješno</text>
+ <text id="IDS_PB_BODY_COUNTRY">Država</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Rođendan</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Svi kontakti</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Nedodijeljeno</text>
+ <text id="IDS_COM_SK_DONE">OK</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobitel</text>
+ <text id="IDS_COM_BODY_EMAIL">Email</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Odaberite grupu</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Dod. čl.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Nema kontakata</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Obriši fotografiju</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Prvo prezime</text>
+ <text id="IDS_PB_OPT_VIEW">Prikaz</text>
+ <text id="IDS_PB_BODY_WORK">Posao</text>
+ <text id="IDS_COM_SK_EDIT">Uredi</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Nema grupe</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Neispravna email adresa</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Dodaj u Imenik</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Označi kao postavljeni</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Detalji</text>
+ <text id="IDS_COM_POP_SELECTED">Odabrano</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Prazno</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Fotografiranje</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nova grupa</text>
+ <text id="IDS_COM_SK_DELETE">Obriši</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faks (posao)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Ton zvona</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Prijatelji</text>
+ <text id="IDS_COM_BODY_COPY">Kopiraj</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adresa</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Nema favorita</text>
+ <text id="IDS_COM_BODY_CONTACTS">Imenik</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Odaberite kontakte</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Instant messenger</text>
+ <text id="IDS_COM_BODY_GALLERY">Album</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobitel - kućni</text>
+ <text id="IDS_COM_BODY_SEARCH">Traži</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Naziv grupe se već koristi</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Obitelj</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Naziv</text>
+ <text id="IDS_PB_BODY_CITY">Grad</text>
+ <text id="IDS_COM_BODY_CREATE">Novi</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Odjel</text>
+ <text id="IDS_PB_BODY_NICKNAME">Nadimak</text>
+ <text id="IDS_COM_BODY_CALL">Poziv</text>
+ <text id="IDS_PB_BODY_SUFFIX">Sufiks</text>
+ <text id="IDS_COM_POP_UNKNOWN">Nepoznato</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favoriti</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Uredi grupe</text>
+ <text id="IDS_COM_SK_SAVE">Spremi</text>
+ <text id="IDS_PB_BODY_PROVINCE">Županija</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Pošalji posjetnicu</text>
+ <text id="IDS_COM_POP_ADDED">Dodano</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Video poziv</text>
+ <text id="IDS_PB_BODY_HOME">Kuća</text>
+ <text id="IDS_PB_BODY_NOTE">Bilješka</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Postavke kontakta</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Prikaz unosa</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Brisanje kontakata...</text>
+ <text id="IDS_PB_BODY_STREET">Ulica</text>
+ <text id="IDS_PB_BODY_NUMBER">Broj</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detalji</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Posao</text>
+ <text id="IDS_COM_BODY_REMOVE">Ukloni</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Poštanski broj</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faks - kućni</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Prvo ime</text>
+ <text id="IDS_PB_BODY_DEFAULT">Zadano</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Naziv grupe</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Csoportok</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Keresztnév</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Évforduló</text>
+ <text id="IDS_PB_BODY_COMPANY">Cég</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Beosztás</text>
+ <text id="IDS_COM_POP_CLOSE">Bezárás</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Összes kijelölése</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Kedvencekhez adás</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Üzenet</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Vezetéknév</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Név mentése ide</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobil (munkahelyi)</text>
+ <text id="IDS_COM_SK_NEW">Új</text>
+ <text id="IDS_PB_SK_CANCEL">Mégse</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Középső név</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Megjelölés alapértelmezett e-mail címként</text>
+ <text id="IDS_PB_BODY_OTHER">Egyéb</text>
+ <text id="IDS_COM_POP_REMOVED">Törölve</text>
+ <text id="IDS_COM_POP_SUCCESS">Sikeres</text>
+ <text id="IDS_PB_BODY_COUNTRY">Ország</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Születésnap</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Összes névjegy</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Nincs hozzárendelve</text>
+ <text id="IDS_COM_SK_DONE">Kész</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobil</text>
+ <text id="IDS_COM_BODY_EMAIL">E-mail</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Válasszon csoportot</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Tagfelv.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Nincs névjegy</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Fénykép eltávolítása</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Vezetéknév áll elöl</text>
+ <text id="IDS_PB_OPT_VIEW">Megnéz</text>
+ <text id="IDS_PB_BODY_WORK">Munkahelyi</text>
+ <text id="IDS_COM_SK_EDIT">Szerkeszt</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Nincs csoport</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Érvénytelen e-mail cím</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Kapcsolatokhoz ad</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Megjelölés alapértelmezett számként</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">További információ</text>
+ <text id="IDS_COM_POP_SELECTED">Kiválasztva</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Kiürítés</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Fénykép készítése</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Új csoport</text>
+ <text id="IDS_COM_SK_DELETE">Töröl</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (munkahelyi)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Csengőhang</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Barátok</text>
+ <text id="IDS_COM_BODY_COPY">Másol</text>
+ <text id="IDS_PB_BODY_ADDRESS">Cím</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Nincsenek kedvencek</text>
+ <text id="IDS_COM_BODY_CONTACTS">Névjegyek</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Névjegyet hozzáad</text>
+ <text id="IDS_PB_BODY_PAGER">Személyhívó</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Instant Messenger</text>
+ <text id="IDS_COM_BODY_GALLERY">Galéria</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobil (otthoni)</text>
+ <text id="IDS_COM_BODY_SEARCH">Keresés</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">A csoportnév már létezik</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Család</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Név</text>
+ <text id="IDS_PB_BODY_CITY">Város</text>
+ <text id="IDS_COM_BODY_CREATE">Létrehoz</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Osztály</text>
+ <text id="IDS_PB_BODY_NICKNAME">Becenév</text>
+ <text id="IDS_COM_BODY_CALL">Hívás</text>
+ <text id="IDS_PB_BODY_SUFFIX">Titulus</text>
+ <text id="IDS_COM_POP_UNKNOWN">Ismeretlen</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Kedven-cek</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Csoportok\nszerkesztése</text>
+ <text id="IDS_COM_SK_SAVE">Ment</text>
+ <text id="IDS_PB_BODY_PROVINCE">Tartomány</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">hanghívás</text>
+ <text id="IDS_COM_POP_ADDED">Hozzáadva</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videohívás</text>
+ <text id="IDS_PB_BODY_HOME">Otthoni</text>
+ <text id="IDS_PB_BODY_NOTE">Jegyzet</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Névbeállítások</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Név megjelenési sorrendje</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Névjegyek törlése...</text>
+ <text id="IDS_PB_BODY_STREET">Utca</text>
+ <text id="IDS_PB_BODY_NUMBER">Szám</text>
+ <text id="IDS_PB_HEADER_DETAILS">Részletek</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Munkahelyi</text>
+ <text id="IDS_COM_BODY_REMOVE">Eltávolít</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Irányítószám</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (otthoni)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Utónév áll elöl</text>
+ <text id="IDS_PB_BODY_DEFAULT">Alapértelmezett</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Csoport neve</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Խմբեր</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Անուն</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Տարեդարձ</text>
+ <text id="IDS_PB_BODY_COMPANY">Ընկերություն</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Աշխատանքի վերնագիր</text>
+ <text id="IDS_COM_POP_CLOSE">Փակել</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Ընտրել բոլորը</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Հավելել Ընտրյալներին</text>
+ <text id="IDS_PB_BODY_PHONE">Հեռախոս</text>
+ <text id="IDS_COM_BODY_MESSAGE">Հաղորդագրություն</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Ազգանուն</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Պահել կոնտակտը</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Շարժական (աշխատանքային)</text>
+ <text id="IDS_COM_SK_NEW">Նոր</text>
+ <text id="IDS_PB_SK_CANCEL">Չեղարկել</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Հայրանունը</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Նշել որպես կանխադրված էլփոստ</text>
+ <text id="IDS_PB_BODY_OTHER">Այլ</text>
+ <text id="IDS_COM_POP_REMOVED">Հեռացված է</text>
+ <text id="IDS_COM_POP_SUCCESS">Հաջողված է</text>
+ <text id="IDS_PB_BODY_COUNTRY">Երկիր</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Ծննդյան օր</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Բոլոր կոնտակտները</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Նշանակված չէ</text>
+ <text id="IDS_COM_SK_DONE">Պատրաստ</text>
+ <text id="IDS_PB_BODY_MOBILE">Բջջային</text>
+ <text id="IDS_COM_BODY_EMAIL">Էլ.փոստ</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Ընտրեք խումբը</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Ավց անդամ</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Կոնտակտներ չկան</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Հեռացնել լուսանկարը</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Նախ ազգանունը</text>
+ <text id="IDS_PB_OPT_VIEW">Դիտել</text>
+ <text id="IDS_PB_BODY_WORK">Աշխատանք</text>
+ <text id="IDS_COM_SK_EDIT">Խմբագրել</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Խումբ չկա</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Անվավեր էլ. փոստի հասցե</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Ավելացնել Կոնտակտներում</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Նշել որպես լռելյայն համար</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Այլ տեղեկություններ</text>
+ <text id="IDS_COM_POP_SELECTED">Ընտրված</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Դատարկ է</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Լուսանկարել</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Նոր խումբ</text>
+ <text id="IDS_COM_SK_DELETE">Ջնջել</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Ֆաքս (աշխատանքային)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Մեղեդի</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Ընկերներ</text>
+ <text id="IDS_COM_BODY_COPY">Պատճենել</text>
+ <text id="IDS_PB_BODY_ADDRESS">Հասցե</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Սիրվածներ չկան</text>
+ <text id="IDS_COM_BODY_CONTACTS">Կոնտակտներ</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Ընտրել կոնտակտներ</text>
+ <text id="IDS_PB_BODY_PAGER">Հեռատող</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Ակնթարթային հաղորդագրող</text>
+ <text id="IDS_COM_BODY_GALLERY">Պատկերասրահ</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Բջջայինը (Տան)</text>
+ <text id="IDS_COM_BODY_SEARCH">Որոնել</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Խմբի անունն արդեն օգտագործված է</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Ընտանիք</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Անուն</text>
+ <text id="IDS_PB_BODY_CITY">Քաղաք</text>
+ <text id="IDS_COM_BODY_CREATE">Ստեղծել</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Բաժին</text>
+ <text id="IDS_PB_BODY_NICKNAME">Մականուն</text>
+ <text id="IDS_COM_BODY_CALL">Զանգ</text>
+ <text id="IDS_PB_BODY_SUFFIX">Ածանց</text>
+ <text id="IDS_COM_POP_UNKNOWN">Անհայտ</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Սիրվածներ</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Խմբագրել խմբեր</text>
+ <text id="IDS_COM_SK_SAVE">Պահել</text>
+ <text id="IDS_PB_BODY_PROVINCE">Գավառ</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Ուղարկել անվանաքարտը</text>
+ <text id="IDS_COM_POP_ADDED">Ավելացված է</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Վիդեո կանչ</text>
+ <text id="IDS_PB_BODY_HOME">Տուն</text>
+ <text id="IDS_PB_BODY_NOTE">Նշում</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Կոնտակտի կայանքներ</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Անվան ցուցադրման հերթականությունը</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Վերացվում են կոնտակտներ...</text>
+ <text id="IDS_PB_BODY_STREET">Փողոց</text>
+ <text id="IDS_PB_BODY_NUMBER">Համար</text>
+ <text id="IDS_PB_HEADER_DETAILS">Մանրամասներ</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Աշխատանք</text>
+ <text id="IDS_COM_BODY_REMOVE">Հեռացնել</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Փոստային ինդեքս</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Հեռապատճենը (Տան)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Նախ անունը</text>
+ <text id="IDS_PB_BODY_DEFAULT">Լռելյայն</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Խմբի անվանումը</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">Vefslóð</text>
+ <text id="IDS_PB_BODY_GROUPS">Hópar</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Fornafn</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Afmæli</text>
+ <text id="IDS_PB_BODY_COMPANY">Fyrirtæki</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Starfsheiti</text>
+ <text id="IDS_COM_POP_CLOSE">Loka</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Velja allt</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Bæta við uppáhald</text>
+ <text id="IDS_PB_BODY_PHONE">Sími</text>
+ <text id="IDS_COM_BODY_MESSAGE">Skilaboð</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Eftirnafn</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Vista tengilið í</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Farsími (Vinna)</text>
+ <text id="IDS_COM_SK_NEW">Nýr</text>
+ <text id="IDS_PB_SK_CANCEL">Hætta við</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Millinafn</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Merkja sem sjálfgefinn póst</text>
+ <text id="IDS_PB_BODY_OTHER">Annað</text>
+ <text id="IDS_COM_POP_REMOVED">Fjarlægt</text>
+ <text id="IDS_COM_POP_SUCCESS">Árangur</text>
+ <text id="IDS_PB_BODY_COUNTRY">Land</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Afmælisdagur</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Allir tengiliðir</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Óúthlutað</text>
+ <text id="IDS_COM_SK_DONE">Lokið</text>
+ <text id="IDS_PB_BODY_MOBILE">Farsími</text>
+ <text id="IDS_COM_BODY_EMAIL">Tölvupóstur</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Velja hóp</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Bæta við meðlim</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Engir tengiliðir</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Fjarlægja mynd</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Fyrst eftirnafn</text>
+ <text id="IDS_PB_OPT_VIEW">Skoða</text>
+ <text id="IDS_PB_BODY_WORK">Vinna</text>
+ <text id="IDS_COM_SK_EDIT">Breyta</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Enginn hópur</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Ógilt netfang</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Bæta við tengiliði</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Merkja sem sjálfgefið númer</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Frekari upplýsingar</text>
+ <text id="IDS_COM_POP_SELECTED">Valið</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Tómt</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Taka ljósmynd</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nýr hópur</text>
+ <text id="IDS_COM_SK_DELETE">Eyða</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (vinna)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Hringitónn</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Vinir</text>
+ <text id="IDS_COM_BODY_COPY">Afrita</text>
+ <text id="IDS_PB_BODY_ADDRESS">Heimilisfang</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Ekkert uppáhalds</text>
+ <text id="IDS_COM_BODY_CONTACTS">Tengiliðir</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Velja tengiliði</text>
+ <text id="IDS_PB_BODY_PAGER">Símboði</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Spjallforrit</text>
+ <text id="IDS_COM_BODY_GALLERY">Gallerí</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Farsími (heima)</text>
+ <text id="IDS_COM_BODY_SEARCH">Leit</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Heitið er þegar í notkun</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Fjölskylda</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Heiti</text>
+ <text id="IDS_PB_BODY_CITY">Borg</text>
+ <text id="IDS_COM_BODY_CREATE">Búa til</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Deild</text>
+ <text id="IDS_PB_BODY_NICKNAME">Gælunafn</text>
+ <text id="IDS_COM_BODY_CALL">Símtal</text>
+ <text id="IDS_PB_BODY_SUFFIX">Viðskeyti</text>
+ <text id="IDS_COM_POP_UNKNOWN">Óþekkt</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Uppáhalds</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Breyta hópum</text>
+ <text id="IDS_COM_SK_SAVE">Vista</text>
+ <text id="IDS_PB_BODY_PROVINCE">Hérað</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Senda nafnspjald</text>
+ <text id="IDS_COM_POP_ADDED">Bætt við</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Vídeósímtal</text>
+ <text id="IDS_PB_BODY_HOME">Heima</text>
+ <text id="IDS_PB_BODY_NOTE">Athugasemd</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Tengiliðastillingar</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Röð birtra nafna</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Eyði tengiliðum...</text>
+ <text id="IDS_PB_BODY_STREET">Gata</text>
+ <text id="IDS_PB_BODY_NUMBER">Númer</text>
+ <text id="IDS_PB_HEADER_DETAILS">Upplýsingar</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Vinna</text>
+ <text id="IDS_COM_BODY_REMOVE">Fjarlægja</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Póstnúmer</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (heima)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Fornafn fyrst</text>
+ <text id="IDS_PB_BODY_DEFAULT">Sjálfgefið</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Heiti hóps</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Gruppi</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Nome</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Anniversario</text>
+ <text id="IDS_PB_BODY_COMPANY">Azienda</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Mansione</text>
+ <text id="IDS_COM_POP_CLOSE">Chiudi</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Seleziona tutto</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Aggiungi a preferiti</text>
+ <text id="IDS_PB_BODY_PHONE">Telefono</text>
+ <text id="IDS_COM_BODY_MESSAGE">Messaggio</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Cognome</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Salva contatto in</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Cellulare (Ufficio)</text>
+ <text id="IDS_COM_SK_NEW">Nuovo</text>
+ <text id="IDS_PB_SK_CANCEL">Annulla</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Secondo nome</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Segna come e-mail predefinita</text>
+ <text id="IDS_PB_BODY_OTHER">Altri</text>
+ <text id="IDS_COM_POP_REMOVED">Rimosso</text>
+ <text id="IDS_COM_POP_SUCCESS">Operazione eseguita</text>
+ <text id="IDS_PB_BODY_COUNTRY">Paese</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Compleanno</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Tutti i contatti</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Non assegnato</text>
+ <text id="IDS_COM_SK_DONE">Fatto</text>
+ <text id="IDS_PB_BODY_MOBILE">Cellulare</text>
+ <text id="IDS_COM_BODY_EMAIL">E-mail</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Seleziona gruppo</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Agg.membro</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Nessun contatto</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Rimuovi foto</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Prima cognome</text>
+ <text id="IDS_PB_OPT_VIEW">Visualizza</text>
+ <text id="IDS_PB_BODY_WORK">Ufficio</text>
+ <text id="IDS_COM_SK_EDIT">Modifica</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Nessun gruppo</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Indirizzo e-mail non valido</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Aggiungi a Rubrica</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Segna come numero predefinito</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Altre informazioni</text>
+ <text id="IDS_COM_POP_SELECTED">Selezionato</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Vuoto</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Scatta foto</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nuovo gruppo</text>
+ <text id="IDS_COM_SK_DELETE">Elimina</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (Ufficio)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Suoneria</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Amici</text>
+ <text id="IDS_COM_BODY_COPY">Copia</text>
+ <text id="IDS_PB_BODY_ADDRESS">Indirizzo</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Nessun preferito</text>
+ <text id="IDS_COM_BODY_CONTACTS">Rubrica</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Seleziona contatti</text>
+ <text id="IDS_PB_BODY_PAGER">Cercapersone</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Instant Messenger</text>
+ <text id="IDS_COM_BODY_GALLERY">Galleria</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Cellulare (Casa)</text>
+ <text id="IDS_COM_BODY_SEARCH">Cerca</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Nome gruppo già in uso</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Famiglia</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nome</text>
+ <text id="IDS_PB_BODY_CITY">Città</text>
+ <text id="IDS_COM_BODY_CREATE">Crea</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Reparto</text>
+ <text id="IDS_PB_BODY_NICKNAME">Soprannome</text>
+ <text id="IDS_COM_BODY_CALL">Chiama</text>
+ <text id="IDS_PB_BODY_SUFFIX">Suffisso</text>
+ <text id="IDS_COM_POP_UNKNOWN">Sconosciuto</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Preferiti</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Modifica gruppi</text>
+ <text id="IDS_COM_SK_SAVE">Salva</text>
+ <text id="IDS_PB_BODY_PROVINCE">Provincia</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Invia biglietto da visita</text>
+ <text id="IDS_COM_POP_ADDED">Aggiunto</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videochiamata</text>
+ <text id="IDS_PB_BODY_HOME">Casa</text>
+ <text id="IDS_PB_BODY_NOTE">Nota</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Impostazioni rubrica</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Ordine visualizzazione nome</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Eliminazione contatti in corso...</text>
+ <text id="IDS_PB_BODY_STREET">Indirizzo</text>
+ <text id="IDS_PB_BODY_NUMBER">Numero</text>
+ <text id="IDS_PB_HEADER_DETAILS">Dettagli</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Ufficio</text>
+ <text id="IDS_COM_BODY_REMOVE">Rimuovi</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">CAP</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (Casa)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Prima nome</text>
+ <text id="IDS_PB_BODY_DEFAULT">Predefinito</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Nome gruppo</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">グループ</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">名</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">記念日</text>
+ <text id="IDS_PB_BODY_COMPANY">会社</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">役職</text>
+ <text id="IDS_COM_POP_CLOSE">閉じる</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">全て選択</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">お気に入りに追加</text>
+ <text id="IDS_PB_BODY_PHONE">本体</text>
+ <text id="IDS_COM_BODY_MESSAGE">メッセージ</text>
+ <text id="IDS_PB_BODY_LAST_NAME">姓</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">連絡先の保存先</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">携帯(仕事)</text>
+ <text id="IDS_COM_SK_NEW">新規</text>
+ <text id="IDS_PB_SK_CANCEL">キャンセル</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">ミドルネーム</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">基本Eメールとして指定</text>
+ <text id="IDS_PB_BODY_OTHER">その他</text>
+ <text id="IDS_COM_POP_REMOVED">削除しました。</text>
+ <text id="IDS_COM_POP_SUCCESS">正常に完了しました。</text>
+ <text id="IDS_PB_BODY_COUNTRY">国</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">誕生日</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">全ての連絡先</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">グループなし</text>
+ <text id="IDS_COM_SK_DONE">完了</text>
+ <text id="IDS_PB_BODY_MOBILE">モバイル</text>
+ <text id="IDS_COM_BODY_EMAIL">Eメール</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">グループを選択</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">メンバーを追加</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">連絡先がありません。</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">画像を削除</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">姓を先に表示</text>
+ <text id="IDS_PB_OPT_VIEW">表示</text>
+ <text id="IDS_PB_BODY_WORK">勤務先</text>
+ <text id="IDS_COM_SK_EDIT">編集</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">グループなし</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Eメールアドレスが正しくありません。</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">連絡先に追加</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">メインの番号に設定</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">その他の情報</text>
+ <text id="IDS_COM_POP_SELECTED">選択しました。</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">未入力</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">カメラを起動</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">新規グループ</text>
+ <text id="IDS_COM_SK_DELETE">削除</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">FAX(仕事)</text>
+ <text id="IDS_PB_BODY_RINGTONE">着信音</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">友だち</text>
+ <text id="IDS_COM_BODY_COPY">コピー</text>
+ <text id="IDS_PB_BODY_ADDRESS">住所</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">お気に入りがありません。</text>
+ <text id="IDS_COM_BODY_CONTACTS">電話帳</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">連絡先を選択</text>
+ <text id="IDS_PB_BODY_PAGER">ポケベル</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">インスタントメッセンジャー</text>
+ <text id="IDS_COM_BODY_GALLERY">ギャラリー</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">携帯(自宅)</text>
+ <text id="IDS_COM_BODY_SEARCH">検索</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">グループ名は既に使用されています。</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">家族</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">名前</text>
+ <text id="IDS_PB_BODY_CITY">市区町村</text>
+ <text id="IDS_COM_BODY_CREATE">作成</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">部門</text>
+ <text id="IDS_PB_BODY_NICKNAME">ニックネーム</text>
+ <text id="IDS_COM_BODY_CALL">発信</text>
+ <text id="IDS_PB_BODY_SUFFIX">敬称</text>
+ <text id="IDS_COM_POP_UNKNOWN">不明</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">お気に入り</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">グループを編集</text>
+ <text id="IDS_COM_SK_SAVE">保存</text>
+ <text id="IDS_PB_BODY_PROVINCE">都道府県</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">名刺を送信</text>
+ <text id="IDS_COM_POP_ADDED">追加しました。</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">テレビ電話</text>
+ <text id="IDS_PB_BODY_HOME">自宅</text>
+ <text id="IDS_PB_BODY_NOTE">ノート</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">電話帳設定</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">表示名順</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">連絡先を削除中...</text>
+ <text id="IDS_PB_BODY_STREET">番地</text>
+ <text id="IDS_PB_BODY_NUMBER">番号</text>
+ <text id="IDS_PB_HEADER_DETAILS">詳細</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">勤務先</text>
+ <text id="IDS_COM_BODY_REMOVE">削除</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">郵便番号</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">FAX(自宅)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">名前を先に表示</text>
+ <text id="IDS_PB_BODY_DEFAULT">標準</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">グループ名</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">ჯგუფები</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">სახელი</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">იუბილე</text>
+ <text id="IDS_PB_BODY_COMPANY">კომპანია</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">დავალების სათაური</text>
+ <text id="IDS_COM_POP_CLOSE">დახურვა</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">ყველას არჩევა</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">ფავორიტებში დამატება</text>
+ <text id="IDS_PB_BODY_PHONE">ტელეფონი</text>
+ <text id="IDS_COM_BODY_MESSAGE">შეტყობინება</text>
+ <text id="IDS_PB_BODY_LAST_NAME">გვარი</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">კონტაქტის შენახვა ადგილზე:</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">მობილური (სამსახურის)</text>
+ <text id="IDS_COM_SK_NEW">ახალი</text>
+ <text id="IDS_PB_SK_CANCEL">გაუქმება</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">მამის სახელი</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">აღნიშვნა ნაგულისხმევ ელ.ფოსტად</text>
+ <text id="IDS_PB_BODY_OTHER">სხვა</text>
+ <text id="IDS_COM_POP_REMOVED">წაშლილია</text>
+ <text id="IDS_COM_POP_SUCCESS">წარმატება</text>
+ <text id="IDS_PB_BODY_COUNTRY">ქვეყანა</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">დაბადების დღე</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">ყველა კონტაქტი</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">არ არის მინიჭებული</text>
+ <text id="IDS_COM_SK_DONE">შესრულდა</text>
+ <text id="IDS_PB_BODY_MOBILE">მობილური</text>
+ <text id="IDS_COM_BODY_EMAIL">ელ-ფოსტა</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">ჯგუფის შერჩევა</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">წევრ.დამ.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">კონტაქტი ვერ მოიძებნა</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">ფოტოს მოცილება</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">ჯერ გვარი</text>
+ <text id="IDS_PB_OPT_VIEW">ნახვა</text>
+ <text id="IDS_PB_BODY_WORK">სამსახური</text>
+ <text id="IDS_COM_SK_EDIT">რედაქტ.</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">ჯგუფი არ არის</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">ელ.ფოსტა არასწორია</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">კონტაქტებში დამატება</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">ნაგულისხმევ ნომრად აღნიშვნა</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">დამატებითი ინფორმაცია</text>
+ <text id="IDS_COM_POP_SELECTED">შერჩეულია</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">ცარიელია</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">ფოტოს გადაღება</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">ახალი ჯგუფი</text>
+ <text id="IDS_COM_SK_DELETE">წაშლა</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">ფაქსი (სამსახურის)</text>
+ <text id="IDS_PB_BODY_RINGTONE">ზარის მელოდია</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">მეგობრები</text>
+ <text id="IDS_COM_BODY_COPY">ასლი</text>
+ <text id="IDS_PB_BODY_ADDRESS">მისამართი</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">ფავორიტები არ არის</text>
+ <text id="IDS_COM_BODY_CONTACTS">კონტაქტები</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">აირჩიეთ კონტაქტები</text>
+ <text id="IDS_PB_BODY_PAGER">პეიჯერი</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">მესინჯერი</text>
+ <text id="IDS_COM_BODY_GALLERY">გალერეა</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">მობილური (სახლის)</text>
+ <text id="IDS_COM_BODY_SEARCH">ძიება</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">ჯგუფის სახელი უკვე გამოყენებულია</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">ოჯახი</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">სახელი</text>
+ <text id="IDS_PB_BODY_CITY">ქალაქი</text>
+ <text id="IDS_COM_BODY_CREATE">შექმნა</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">განყოფილება</text>
+ <text id="IDS_PB_BODY_NICKNAME">მეტსახელი</text>
+ <text id="IDS_COM_BODY_CALL">დარეკვა</text>
+ <text id="IDS_PB_BODY_SUFFIX">სუფიქსი</text>
+ <text id="IDS_COM_POP_UNKNOWN">უცნობი</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">ფავორიტები</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">ჯგუფების შესწორება</text>
+ <text id="IDS_COM_SK_SAVE">შენახვა</text>
+ <text id="IDS_PB_BODY_PROVINCE">პროვინცია</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">სავიზიტო ბარათის გაგზავნა</text>
+ <text id="IDS_COM_POP_ADDED">დამატებულია</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">ვიდეოზარი</text>
+ <text id="IDS_PB_BODY_HOME">საწყისი გვერდი</text>
+ <text id="IDS_PB_BODY_NOTE">შენიშვნა</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">კონტაქტის პარამეტრები</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">ეკრანზე საჩვენებლად სახელის შერჩევა</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">სრულდება კონტაქტების წაშლა...</text>
+ <text id="IDS_PB_BODY_STREET">ქუჩა</text>
+ <text id="IDS_PB_BODY_NUMBER">რიცხვი</text>
+ <text id="IDS_PB_HEADER_DETAILS">დეტალები</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">სამსახური</text>
+ <text id="IDS_COM_BODY_REMOVE">წაშლა</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">საფოსტო კოდი</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">ფაქსი (სახლის)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">ჯერ სახელი</text>
+ <text id="IDS_PB_BODY_DEFAULT">ნაგულისხმევი</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">ჯგუფის სახელი</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Топтар</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Есімі</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Жылдық</text>
+ <text id="IDS_PB_BODY_COMPANY">Компания</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Лауазым</text>
+ <text id="IDS_COM_POP_CLOSE">Жабу</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Бәрін бөлектеу</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Сүйіктілер қатарына қосу</text>
+ <text id="IDS_PB_BODY_PHONE">Телефон</text>
+ <text id="IDS_COM_BODY_MESSAGE">Хабарлама</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Тегі</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Кітапшаға сақтау</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Ұялы (жұмыс)</text>
+ <text id="IDS_COM_SK_NEW">Жаңа</text>
+ <text id="IDS_PB_SK_CANCEL">Тоқтату</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Әкесінің аты</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Әдепкі электрондық пошта деп белгілеу</text>
+ <text id="IDS_PB_BODY_OTHER">Басқа</text>
+ <text id="IDS_COM_POP_REMOVED">Жойылған</text>
+ <text id="IDS_COM_POP_SUCCESS">Жетістік</text>
+ <text id="IDS_PB_BODY_COUNTRY">Ел</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Туған күн</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Барлық контактілер</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Қойылған жоқ</text>
+ <text id="IDS_COM_SK_DONE">Дайын</text>
+ <text id="IDS_PB_BODY_MOBILE">Ұялы телефон</text>
+ <text id="IDS_COM_BODY_EMAIL">Эл. пошта</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Топты таңдау</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Мүше қосу</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Контакттар жоқ</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Фотоны жою</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Алдымен тегі</text>
+ <text id="IDS_PB_OPT_VIEW">Көрініс</text>
+ <text id="IDS_PB_BODY_WORK">Жұмыс</text>
+ <text id="IDS_COM_SK_EDIT">Өзгер.</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Топ жоқ</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Электрондық пошта мекен-жайы жарамсыз</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Кітапшаға қосыңыз</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Өздігінен нөмірдің белгіленуі</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Көбірек ақпарат</text>
+ <text id="IDS_COM_POP_SELECTED">Таңдалған</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Бос</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Суретке алыңыз</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Жаңа топ</text>
+ <text id="IDS_COM_SK_DELETE">Жою</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Факс (жұмыс)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Әуен</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Достар</text>
+ <text id="IDS_COM_BODY_COPY">Көшіру</text>
+ <text id="IDS_PB_BODY_ADDRESS">Мекен-жай</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Сүйіктілер жоқ</text>
+ <text id="IDS_COM_BODY_CONTACTS">Контактілер</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Контактілерді таңдау</text>
+ <text id="IDS_PB_BODY_PAGER">Пейджер</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Жедел хабаршы</text>
+ <text id="IDS_COM_BODY_GALLERY">Галерея</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Ұялы (үй)</text>
+ <text id="IDS_COM_BODY_SEARCH">Іздеу</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Мұндай топ аты қолданыста бар</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Отбасы</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Аты</text>
+ <text id="IDS_PB_BODY_CITY">Қала</text>
+ <text id="IDS_COM_BODY_CREATE">Құру</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Бөлім</text>
+ <text id="IDS_PB_BODY_NICKNAME">Жасырын ат</text>
+ <text id="IDS_COM_BODY_CALL">Қоңырау</text>
+ <text id="IDS_PB_BODY_SUFFIX">Лауазым</text>
+ <text id="IDS_COM_POP_UNKNOWN">Белгісіз</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Таңдаулылар</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Топтарды өзгерту</text>
+ <text id="IDS_COM_SK_SAVE">Сақтау</text>
+ <text id="IDS_PB_BODY_PROVINCE">Облыс</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Атау картасын жіберу</text>
+ <text id="IDS_COM_POP_ADDED">Қосылды</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Бейне қоңырау</text>
+ <text id="IDS_PB_BODY_HOME">Үй парағы</text>
+ <text id="IDS_PB_BODY_NOTE">Ескерту</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Контакт қондырғылары</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Дисплей есімі жасату</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Контактілер жойылуда...</text>
+ <text id="IDS_PB_BODY_STREET">Көше</text>
+ <text id="IDS_PB_BODY_NUMBER">Нөмір</text>
+ <text id="IDS_PB_HEADER_DETAILS">Өзгешеліктері</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Жұмыс</text>
+ <text id="IDS_COM_BODY_REMOVE">Жоғалту</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Пошта индексі</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Факс (үй)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Алдымен аты</text>
+ <text id="IDS_PB_BODY_DEFAULT">Өздігінен</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Топ атауы</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">그룹</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">이름</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">기념일</text>
+ <text id="IDS_PB_BODY_COMPANY">회사</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">직위</text>
+ <text id="IDS_COM_POP_CLOSE">닫기</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">모두 선택</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">즐겨찾기에 추가</text>
+ <text id="IDS_PB_BODY_PHONE">휴대폰</text>
+ <text id="IDS_COM_BODY_MESSAGE">메시지</text>
+ <text id="IDS_PB_BODY_LAST_NAME">성</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">연락처 저장</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">휴대폰(회사)</text>
+ <text id="IDS_COM_SK_NEW">추가</text>
+ <text id="IDS_PB_SK_CANCEL">취소</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">중간 이름</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">대표 이메일로 지정</text>
+ <text id="IDS_PB_BODY_OTHER">기타</text>
+ <text id="IDS_COM_POP_REMOVED">제거되었습니다</text>
+ <text id="IDS_COM_POP_SUCCESS">완료되었습니다</text>
+ <text id="IDS_PB_BODY_COUNTRY">국가</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">생일</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">모든 연락처</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">미지정</text>
+ <text id="IDS_COM_SK_DONE">완료</text>
+ <text id="IDS_PB_BODY_MOBILE">휴대폰</text>
+ <text id="IDS_COM_BODY_EMAIL">이메일</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">그룹 선택</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">구성원 추가</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">연락처가 없습니다</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">사진 삭제</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">성 먼저</text>
+ <text id="IDS_PB_OPT_VIEW">보기</text>
+ <text id="IDS_PB_BODY_WORK">회사</text>
+ <text id="IDS_COM_SK_EDIT">편집</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">그룹이 없습니다</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">이메일 주소가 바르지 않습니다</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">연락처에 추가</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">대표 번호로 지정</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">추가 정보</text>
+ <text id="IDS_COM_POP_SELECTED">선택되었습니다</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">비어 있음</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">사진 촬영</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">새 그룹</text>
+ <text id="IDS_COM_SK_DELETE">삭제</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">팩스(회사)</text>
+ <text id="IDS_PB_BODY_RINGTONE">벨소리</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">친구</text>
+ <text id="IDS_COM_BODY_COPY">복사</text>
+ <text id="IDS_PB_BODY_ADDRESS">주소</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">자주 사용하는 연락처 목록이 없습니다</text>
+ <text id="IDS_COM_BODY_CONTACTS">연락처</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">연락처 선택</text>
+ <text id="IDS_PB_BODY_PAGER">호출기</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">메신저</text>
+ <text id="IDS_COM_BODY_GALLERY">갤러리</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">휴대폰(집)</text>
+ <text id="IDS_COM_BODY_SEARCH">검색</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">사용 중인 이름입니다</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">가족</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">이름</text>
+ <text id="IDS_PB_BODY_CITY">도시</text>
+ <text id="IDS_COM_BODY_CREATE">추가</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">부서</text>
+ <text id="IDS_PB_BODY_NICKNAME">별명</text>
+ <text id="IDS_COM_BODY_CALL">통화</text>
+ <text id="IDS_PB_BODY_SUFFIX">호칭</text>
+ <text id="IDS_COM_POP_UNKNOWN">알 수 없음</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">즐겨찾기</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">그룹 편집</text>
+ <text id="IDS_COM_SK_SAVE">저장</text>
+ <text id="IDS_PB_BODY_PROVINCE">지역</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">명함 전송</text>
+ <text id="IDS_COM_POP_ADDED">추가되었습니다</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">영상통화</text>
+ <text id="IDS_PB_BODY_HOME">집</text>
+ <text id="IDS_PB_BODY_NOTE">노트</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">연락처 설정</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">이름 표기 순서</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">연락처 삭제 중...</text>
+ <text id="IDS_PB_BODY_STREET">거리</text>
+ <text id="IDS_PB_BODY_NUMBER">번호</text>
+ <text id="IDS_PB_HEADER_DETAILS">상세 정보</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">직장</text>
+ <text id="IDS_COM_BODY_REMOVE">제거</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">우편번호</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">팩스(집)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">이름 먼저</text>
+ <text id="IDS_PB_BODY_DEFAULT">기본</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">그룹 이름</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupas</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Vārds</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Jubileja</text>
+ <text id="IDS_PB_BODY_COMPANY">Uzņēmums</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Amata nosaukums</text>
+ <text id="IDS_COM_POP_CLOSE">Aizvērt</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Izv. visu</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Pievienot izlasēm</text>
+ <text id="IDS_PB_BODY_PHONE">Tālrunis</text>
+ <text id="IDS_COM_BODY_MESSAGE">Ziņa</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Uzvārds</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Saglabāt kontaktu</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobilā tālruņa numurs (darba)</text>
+ <text id="IDS_COM_SK_NEW">Jauns</text>
+ <text id="IDS_PB_SK_CANCEL">Atcelt</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Otrs vārds</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Atzīmēt kā noklusējuma e-pastu</text>
+ <text id="IDS_PB_BODY_OTHER">Cits</text>
+ <text id="IDS_COM_POP_REMOVED">Noņemts</text>
+ <text id="IDS_COM_POP_SUCCESS">Veiksmīgi</text>
+ <text id="IDS_PB_BODY_COUNTRY">Valsts</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Dzimšanas diena</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Visi kontakti</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Nav piešķirts</text>
+ <text id="IDS_COM_SK_DONE">Gatavs</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobilais</text>
+ <text id="IDS_COM_BODY_EMAIL">E-pasts</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Atlasīt grupu</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Piev.dal.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Kontaktu nav</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Noņemt fotoattēlu</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Vispirms uzvārds</text>
+ <text id="IDS_PB_OPT_VIEW">Skatīt</text>
+ <text id="IDS_PB_BODY_WORK">Darbā</text>
+ <text id="IDS_COM_SK_EDIT">Rediģēt</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Nav grupas</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Nederīga e-pasta adrese</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Pievienot kontaktiem</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Atzīmēt kā noklusējuma numuru</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Papildinformācija</text>
+ <text id="IDS_COM_POP_SELECTED">Izvēlēts</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Tukšs</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Fotografēt</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Jauna grupa</text>
+ <text id="IDS_COM_SK_DELETE">Dzēst</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faksa numurs (darba)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Zvana signāls</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Draugi</text>
+ <text id="IDS_COM_BODY_COPY">Kopēt</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adrese</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Nav izlašu</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontakti</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Kontaktu izvēle</text>
+ <text id="IDS_PB_BODY_PAGER">Peidžera numurs</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Tūlītējā ziņapmaiņa</text>
+ <text id="IDS_COM_BODY_GALLERY">Galerija</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobilā tālruņa numurs (mājas)</text>
+ <text id="IDS_COM_BODY_SEARCH">Meklēt</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Grupas nosaukums jau tiek lietots</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Ģimene</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nosaukums</text>
+ <text id="IDS_PB_BODY_CITY">Pilsēta</text>
+ <text id="IDS_COM_BODY_CREATE">Izveidot</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Nodaļa</text>
+ <text id="IDS_PB_BODY_NICKNAME">Segvārds</text>
+ <text id="IDS_COM_BODY_CALL">Zvans</text>
+ <text id="IDS_PB_BODY_SUFFIX">Piedēklis</text>
+ <text id="IDS_COM_POP_UNKNOWN">Nezināms</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Izlase</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Rediģēt grupas</text>
+ <text id="IDS_COM_SK_SAVE">Saglabāt</text>
+ <text id="IDS_PB_BODY_PROVINCE">Province</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Sūtīt vizītkarti</text>
+ <text id="IDS_COM_POP_ADDED">Pievienots</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videozvans</text>
+ <text id="IDS_PB_BODY_HOME">Mājas</text>
+ <text id="IDS_PB_BODY_NOTE">Piezīme</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Kontakta iestatījumi</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Parādāmā vārda secība</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Dzēš kontaktus...</text>
+ <text id="IDS_PB_BODY_STREET">Iela</text>
+ <text id="IDS_PB_BODY_NUMBER">Numurs</text>
+ <text id="IDS_PB_HEADER_DETAILS">Dati</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Darbs</text>
+ <text id="IDS_COM_BODY_REMOVE">Noņemt</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Pasta indekss</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faksa numurs (mājas)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Vispirms vārds</text>
+ <text id="IDS_PB_BODY_DEFAULT">Noklusējums</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Grupas nosaukums</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupės</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Vardas</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Sukaktis</text>
+ <text id="IDS_PB_BODY_COMPANY">Įmonė</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Pareigos</text>
+ <text id="IDS_COM_POP_CLOSE">Uždaryti</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Pasirinkti viską</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Įtraukti į parankinius</text>
+ <text id="IDS_PB_BODY_PHONE">Telefonas</text>
+ <text id="IDS_COM_BODY_MESSAGE">Žinutė</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Pavardė</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Išsaugoti adresatą</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobilusis (darbo)</text>
+ <text id="IDS_COM_SK_NEW">Naujas</text>
+ <text id="IDS_PB_SK_CANCEL">Atšaukti</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Antras vardas</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Pažymėti kaip numatytąjį el. paštą</text>
+ <text id="IDS_PB_BODY_OTHER">Kiti</text>
+ <text id="IDS_COM_POP_REMOVED">Pašalinta</text>
+ <text id="IDS_COM_POP_SUCCESS">Pavyko</text>
+ <text id="IDS_PB_BODY_COUNTRY">Šalis</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Gimtadienis</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Visi adresatai</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Nepriskirta</text>
+ <text id="IDS_COM_SK_DONE">Atlikta</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobilusis</text>
+ <text id="IDS_COM_BODY_EMAIL">El. paštas</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Pasirinkti grupę</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Prid.narį</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Nėra adresatų</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Šalinti nuotrauką</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Pirmiausia pavardė</text>
+ <text id="IDS_PB_OPT_VIEW">Rodyti</text>
+ <text id="IDS_PB_BODY_WORK">Darbas</text>
+ <text id="IDS_COM_SK_EDIT">Redaguoti</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Nėra grupės</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Neteisingas el. pašto adresas</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Įtraukti į adresatus</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Pažymėti kaip numatytąjį skaičių</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Daugiau informacijos</text>
+ <text id="IDS_COM_POP_SELECTED">Pasirinkta</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Tuščia</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Fotografuoti</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nauja grupė</text>
+ <text id="IDS_COM_SK_DELETE">Trinti</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faksas (darbo)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Skambėjimo tonas</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Draugai</text>
+ <text id="IDS_COM_BODY_COPY">Kopijuoti</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adresas</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Nėra parankinių</text>
+ <text id="IDS_COM_BODY_CONTACTS">Adresatai</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Pasirinkite adresatus</text>
+ <text id="IDS_PB_BODY_PAGER">Pranešimų gaviklis</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Tiesioginis pranešiklis</text>
+ <text id="IDS_COM_BODY_GALLERY">Galerija</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobilusis telefonas (namų)</text>
+ <text id="IDS_COM_BODY_SEARCH">Ieškoti</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Grupės pavadinimas jau naudojamas</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Šeima</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Pavadinimas</text>
+ <text id="IDS_PB_BODY_CITY">Miestas</text>
+ <text id="IDS_COM_BODY_CREATE">Kurti</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Skyrius</text>
+ <text id="IDS_PB_BODY_NICKNAME">Slapyvardis</text>
+ <text id="IDS_COM_BODY_CALL">Skambutis</text>
+ <text id="IDS_PB_BODY_SUFFIX">Priesaga</text>
+ <text id="IDS_COM_POP_UNKNOWN">Nežinomas</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Parankiniai</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Redaguoti grupes</text>
+ <text id="IDS_COM_SK_SAVE">Išsaugoti</text>
+ <text id="IDS_PB_BODY_PROVINCE">Provincija</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Siųsti vardo kortelę</text>
+ <text id="IDS_COM_POP_ADDED">Pridėta</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Vaizdo skambutis</text>
+ <text id="IDS_PB_BODY_HOME">Namų</text>
+ <text id="IDS_PB_BODY_NOTE">Pastaba</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Adresatų nustatymai</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Vardų rodymo tvarka</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Trinami adresatai...</text>
+ <text id="IDS_PB_BODY_STREET">Gatvė</text>
+ <text id="IDS_PB_BODY_NUMBER">Numeris</text>
+ <text id="IDS_PB_HEADER_DETAILS">Išsami informacija</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Darbas</text>
+ <text id="IDS_COM_BODY_REMOVE">Šalinti</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Pašto kodas</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faksas (namų)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Pirmiausia vardas</text>
+ <text id="IDS_PB_BODY_DEFAULT">Numatytoji</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Grupės pavadinimas</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Групи</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Име</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Годишнина</text>
+ <text id="IDS_PB_BODY_COMPANY">Фирма</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Работно место</text>
+ <text id="IDS_COM_POP_CLOSE">Затвори</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Избери ги сите</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Додај во омилени</text>
+ <text id="IDS_PB_BODY_PHONE">Телефон</text>
+ <text id="IDS_COM_BODY_MESSAGE">Порака</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Презиме</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Сочувај запис во</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Мобилен (Работа)</text>
+ <text id="IDS_COM_SK_NEW">Нова</text>
+ <text id="IDS_PB_SK_CANCEL">Откажи</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Татково име</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Означи како основен email</text>
+ <text id="IDS_PB_BODY_OTHER">Друго</text>
+ <text id="IDS_COM_POP_REMOVED">Отстрането</text>
+ <text id="IDS_COM_POP_SUCCESS">Успешно</text>
+ <text id="IDS_PB_BODY_COUNTRY">Држава</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Роденден</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Сите записи</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Не е назначено</text>
+ <text id="IDS_COM_SK_DONE">Готово</text>
+ <text id="IDS_PB_BODY_MOBILE">Мобилен</text>
+ <text id="IDS_COM_BODY_EMAIL">E-mail</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Избери група</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Дод. член</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Нема записи</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Избриши фотографија</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Прво презимето</text>
+ <text id="IDS_PB_OPT_VIEW">Прикажи</text>
+ <text id="IDS_PB_BODY_WORK">Работа</text>
+ <text id="IDS_COM_SK_EDIT">Измени</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Без група</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Погрешна email адреса</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Додај во Контакти</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Означи како основен број</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Повеќе информации</text>
+ <text id="IDS_COM_POP_SELECTED">Избрано</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Празно</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Фотографирај</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Нова група</text>
+ <text id="IDS_COM_SK_DELETE">Избриши</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Факс (Работа)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Тон на ѕвонење</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Пријатели</text>
+ <text id="IDS_COM_BODY_COPY">Копирај</text>
+ <text id="IDS_PB_BODY_ADDRESS">Адреса</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Нема омилени</text>
+ <text id="IDS_COM_BODY_CONTACTS">Именик</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Избери контакти</text>
+ <text id="IDS_PB_BODY_PAGER">Пејџер</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Инстант пораки</text>
+ <text id="IDS_COM_BODY_GALLERY">Галерија</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Мобилен телефон (домашен)</text>
+ <text id="IDS_COM_BODY_SEARCH">Пребарување</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Името на групата веќе се користи</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Семејство</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Име</text>
+ <text id="IDS_PB_BODY_CITY">Град</text>
+ <text id="IDS_COM_BODY_CREATE">Ново</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Оддел</text>
+ <text id="IDS_PB_BODY_NICKNAME">Прекар</text>
+ <text id="IDS_COM_BODY_CALL">Повик</text>
+ <text id="IDS_PB_BODY_SUFFIX">Наставка</text>
+ <text id="IDS_COM_POP_UNKNOWN">Непознато</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Омилени</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Измени групи</text>
+ <text id="IDS_COM_SK_SAVE">Сочувај</text>
+ <text id="IDS_PB_BODY_PROVINCE">Подрачје</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Прати картичка со име</text>
+ <text id="IDS_COM_POP_ADDED">Додадено</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Видео повик</text>
+ <text id="IDS_PB_BODY_HOME">Дома</text>
+ <text id="IDS_PB_BODY_NOTE">Забелешка</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Параметри за контактот</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Редослед за прикажување на имињата</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Се бришат контакти...</text>
+ <text id="IDS_PB_BODY_STREET">Улица</text>
+ <text id="IDS_PB_BODY_NUMBER">Број</text>
+ <text id="IDS_PB_HEADER_DETAILS">Детали</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Работа</text>
+ <text id="IDS_COM_BODY_REMOVE">Отстрани</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Поштенски број</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Факс (домашен)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Првo името</text>
+ <text id="IDS_PB_BODY_DEFAULT">Основно</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Име на група</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Groepen</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Voornaam</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Verjaardag</text>
+ <text id="IDS_PB_BODY_COMPANY">Bedrijf</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Functie</text>
+ <text id="IDS_COM_POP_CLOSE">Sluiten</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Alles selecteren</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Toevoegen aan favorieten</text>
+ <text id="IDS_PB_BODY_PHONE">Telefoon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Bericht</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Achternaam</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Contact opslaan in</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobiel (werk)</text>
+ <text id="IDS_COM_SK_NEW">Nieuw</text>
+ <text id="IDS_PB_SK_CANCEL">Annuleren</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Tweede naam</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Markeren als standaard e-mailadres</text>
+ <text id="IDS_PB_BODY_OTHER">Overige</text>
+ <text id="IDS_COM_POP_REMOVED">Verwijderd</text>
+ <text id="IDS_COM_POP_SUCCESS">Voltooid</text>
+ <text id="IDS_PB_BODY_COUNTRY">Land</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Verjaardag</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Alle contacten</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Niet toegewezen</text>
+ <text id="IDS_COM_SK_DONE">Gereed</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobiel</text>
+ <text id="IDS_COM_BODY_EMAIL">E-mail</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Groep selecteren</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Nw lid</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Geen contactpersonen</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Foto verwijderen</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Achternaam eerst</text>
+ <text id="IDS_PB_OPT_VIEW">Weergeven</text>
+ <text id="IDS_PB_BODY_WORK">Zakelijk</text>
+ <text id="IDS_COM_SK_EDIT">Bewerken</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Geen groep</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Ongeldig e-mailadres</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Voeg toe aan contacten</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Markeren als standaardnummer</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Meer informatie</text>
+ <text id="IDS_COM_POP_SELECTED">Geselecteerd</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Leeg</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Foto maken</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nieuwe groep</text>
+ <text id="IDS_COM_SK_DELETE">Wissen</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (werk)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Beltoon</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Vrienden</text>
+ <text id="IDS_COM_BODY_COPY">Kopiëren</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adres</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Geen favorieten</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contacten</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Contacten selecteren</text>
+ <text id="IDS_PB_BODY_PAGER">Pieper</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Instant Messenger</text>
+ <text id="IDS_COM_BODY_GALLERY">Galerij</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobiel (privé)</text>
+ <text id="IDS_COM_BODY_SEARCH">Zoeken</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Groepsnaam bestaat al</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Familie</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Naam</text>
+ <text id="IDS_PB_BODY_CITY">Plaats</text>
+ <text id="IDS_COM_BODY_CREATE">Nieuw</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Afdeling</text>
+ <text id="IDS_PB_BODY_NICKNAME">Bijnaam</text>
+ <text id="IDS_COM_BODY_CALL">Oproep</text>
+ <text id="IDS_PB_BODY_SUFFIX">Suffix</text>
+ <text id="IDS_COM_POP_UNKNOWN">Onbekend</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favo- rieten</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Groepen bewerken</text>
+ <text id="IDS_COM_SK_SAVE">Opslaan</text>
+ <text id="IDS_PB_BODY_PROVINCE">Provincie</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Visitekaartje verzenden</text>
+ <text id="IDS_COM_POP_ADDED">Toegevoegd</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Video-oproep</text>
+ <text id="IDS_PB_BODY_HOME">Privé</text>
+ <text id="IDS_PB_BODY_NOTE">Notitie</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Instellingen contacten</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Weergavevolgorde</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Contacten verwijderen...</text>
+ <text id="IDS_PB_BODY_STREET">Straat</text>
+ <text id="IDS_PB_BODY_NUMBER">Nummer</text>
+ <text id="IDS_PB_HEADER_DETAILS">Gegevens</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Zakelijk</text>
+ <text id="IDS_COM_BODY_REMOVE">Verwijderen</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Postcode</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (privé)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Voornaam eerst</text>
+ <text id="IDS_PB_BODY_DEFAULT">Standaard</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Groepsnaam</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupper</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Fornavn</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Årsdag</text>
+ <text id="IDS_PB_BODY_COMPANY">Selskap</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Jobbtittel</text>
+ <text id="IDS_COM_POP_CLOSE">Lukk</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Merk alt</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Legg til i favoritter</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Melding</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Etternavn</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Lagre kontakt i</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobil (arbeid)</text>
+ <text id="IDS_COM_SK_NEW">Ny</text>
+ <text id="IDS_PB_SK_CANCEL">Avbryt</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Mellomnavn</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Merk som standard e-post</text>
+ <text id="IDS_PB_BODY_OTHER">Annet</text>
+ <text id="IDS_COM_POP_REMOVED">Fjernet</text>
+ <text id="IDS_COM_POP_SUCCESS">Fullført</text>
+ <text id="IDS_PB_BODY_COUNTRY">Land</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Fødselsdag</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Alle kontakter</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Ikke tilordnet</text>
+ <text id="IDS_COM_SK_DONE">Utført</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobil</text>
+ <text id="IDS_COM_BODY_EMAIL">E-post</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Velg gruppe</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Tilf. medl.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Ingen kontakter</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Fjern bilde</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Etternavn først</text>
+ <text id="IDS_PB_OPT_VIEW">Vis</text>
+ <text id="IDS_PB_BODY_WORK">Arbeid</text>
+ <text id="IDS_COM_SK_EDIT">Rediger</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Ingen grupper</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Ugyldig e-postadresse</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Legg til i Kontakter</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Merk som standardnummer</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Mer informasjon</text>
+ <text id="IDS_COM_POP_SELECTED">Valgt</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Tom</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Ta et bilde</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Ny gruppe</text>
+ <text id="IDS_COM_SK_DELETE">Slett</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faks (arbeid)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Ringetone</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Venner</text>
+ <text id="IDS_COM_BODY_COPY">Kopier</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adresse</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Ingen favoritter</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontakter</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Velg kontakter</text>
+ <text id="IDS_PB_BODY_PAGER">Personsøker</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Direktemeldinger</text>
+ <text id="IDS_COM_BODY_GALLERY">Galleri</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobil (hjem)</text>
+ <text id="IDS_COM_BODY_SEARCH">Søk</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Gruppenavn allerede i bruk</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Familie</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Navn</text>
+ <text id="IDS_PB_BODY_CITY">Sted</text>
+ <text id="IDS_COM_BODY_CREATE">Opprett</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Avdeling</text>
+ <text id="IDS_PB_BODY_NICKNAME">Kallenavn</text>
+ <text id="IDS_COM_BODY_CALL">Ring</text>
+ <text id="IDS_PB_BODY_SUFFIX">Suffiks</text>
+ <text id="IDS_COM_POP_UNKNOWN">Ukjent</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favor.</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Rediger grupper</text>
+ <text id="IDS_COM_SK_SAVE">Lagre</text>
+ <text id="IDS_PB_BODY_PROVINCE">Region</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Send visittkort</text>
+ <text id="IDS_COM_POP_ADDED">Lagt til</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videoanrop</text>
+ <text id="IDS_PB_BODY_HOME">Hjem</text>
+ <text id="IDS_PB_BODY_NOTE">Merknad</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Kontaktinnstillinger</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Rekkefølge på visningsnavn</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Sletter kontakter ...</text>
+ <text id="IDS_PB_BODY_STREET">Gate</text>
+ <text id="IDS_PB_BODY_NUMBER">Nummer</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detaljer</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Arbeid</text>
+ <text id="IDS_COM_BODY_REMOVE">Fjern</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Postnummer</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faks (hjem)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Fornavn først</text>
+ <text id="IDS_PB_BODY_DEFAULT">Standard</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Gruppenavn</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">Adres URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupy</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Imię</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Rocznica</text>
+ <text id="IDS_PB_BODY_COMPANY">Firma</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Stanowisko</text>
+ <text id="IDS_COM_POP_CLOSE">Zamknij</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Zaznacz wszystko</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Dodaj do Ulubionych</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Wiadomość</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Nazwisko</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Zapisz kontakt w</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Telefon komórkowy (praca)</text>
+ <text id="IDS_COM_SK_NEW">Nowy</text>
+ <text id="IDS_PB_SK_CANCEL">Anuluj</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Drugie imię</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Zaznacz jako domyślny adres e-mail</text>
+ <text id="IDS_PB_BODY_OTHER">Inne</text>
+ <text id="IDS_COM_POP_REMOVED">Usunięto</text>
+ <text id="IDS_COM_POP_SUCCESS">Zakończono</text>
+ <text id="IDS_PB_BODY_COUNTRY">Kraj</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Urodziny</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Wszystkie kontakty</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Nieprzypisane</text>
+ <text id="IDS_COM_SK_DONE">Gotowe</text>
+ <text id="IDS_PB_BODY_MOBILE">Komórkowy</text>
+ <text id="IDS_COM_BODY_EMAIL">E-mail</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Wybierz grupę</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Dod. czł.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Brak kontaktów</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Usuń zdjęcie</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Najpierw nazwisko</text>
+ <text id="IDS_PB_OPT_VIEW">Podgląd</text>
+ <text id="IDS_PB_BODY_WORK">Praca</text>
+ <text id="IDS_COM_SK_EDIT">Edytuj</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Brak grupy</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Nieprawidłowy adres e-mail</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Dodaj do kontaktów</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Zaznacz jako numer domyślny</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Więcej informacji</text>
+ <text id="IDS_COM_POP_SELECTED">Wybrane</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Pusta</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Zrób zdjęcie</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nowa grupa</text>
+ <text id="IDS_COM_SK_DELETE">Usuń</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faks (praca)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Dzwonek</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Przyjaciele</text>
+ <text id="IDS_COM_BODY_COPY">Kopiuj</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adres</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Brak ulubionych</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontakty</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Wybierz kontakty</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Komunikator błyskawiczny</text>
+ <text id="IDS_COM_BODY_GALLERY">Galeria</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Komórkowy (prywatny)</text>
+ <text id="IDS_COM_BODY_SEARCH">Szukaj</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Nazwa grupy już istnieje</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Rodzina</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nazwa</text>
+ <text id="IDS_PB_BODY_CITY">Miasto</text>
+ <text id="IDS_COM_BODY_CREATE">Utwórz</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Dział</text>
+ <text id="IDS_PB_BODY_NICKNAME">Pseudonim</text>
+ <text id="IDS_COM_BODY_CALL">Połączenie</text>
+ <text id="IDS_PB_BODY_SUFFIX">Nick</text>
+ <text id="IDS_COM_POP_UNKNOWN">Nieznana</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Ulubione</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Edytuj grupy</text>
+ <text id="IDS_COM_SK_SAVE">Zapisz</text>
+ <text id="IDS_PB_BODY_PROVINCE">Okręg</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Wyślij wizytówkę</text>
+ <text id="IDS_COM_POP_ADDED">Dodano</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Połączenie wideo</text>
+ <text id="IDS_PB_BODY_HOME">Domowy</text>
+ <text id="IDS_PB_BODY_NOTE">Notatka</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Ustawienia kontaktów</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Kolejność wyświetlania nazw</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Usuwanie kontaktów...</text>
+ <text id="IDS_PB_BODY_STREET">Ulica</text>
+ <text id="IDS_PB_BODY_NUMBER">Numer</text>
+ <text id="IDS_PB_HEADER_DETAILS">Szczegóły</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Praca</text>
+ <text id="IDS_COM_BODY_REMOVE">Usuń</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Kod pocztowy</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faks (prywatny)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Najpierw imię</text>
+ <text id="IDS_PB_BODY_DEFAULT">Domyślnie</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Nazwa grupy</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupos</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Primeiro nome</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Data comemorativa</text>
+ <text id="IDS_PB_BODY_COMPANY">Empresa</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Título do trabalho</text>
+ <text id="IDS_COM_POP_CLOSE">Fechar</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Selecionar tudo</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Adicionar aos favoritos</text>
+ <text id="IDS_PB_BODY_PHONE">Telefone</text>
+ <text id="IDS_COM_BODY_MESSAGE">Mensagem</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Sobrenome</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Salvar contatos no</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Celular (Trabalho)</text>
+ <text id="IDS_COM_SK_NEW">Novo</text>
+ <text id="IDS_PB_SK_CANCEL">Cancelar</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Segundo nome</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Marcar como e-mail padrão</text>
+ <text id="IDS_PB_BODY_OTHER">Outros</text>
+ <text id="IDS_COM_POP_REMOVED">Removido</text>
+ <text id="IDS_COM_POP_SUCCESS">Sucesso</text>
+ <text id="IDS_PB_BODY_COUNTRY">País</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Aniversário</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Todos os contatos</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Não atribuído</text>
+ <text id="IDS_COM_SK_DONE">Concluído</text>
+ <text id="IDS_PB_BODY_MOBILE">Celular</text>
+ <text id="IDS_COM_BODY_EMAIL">E-mail</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Selecionar grupo</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Adic. membro</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Sem contatos</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Remover foto</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Sobrenome primeiro</text>
+ <text id="IDS_PB_OPT_VIEW">Ver</text>
+ <text id="IDS_PB_BODY_WORK">Trabalho</text>
+ <text id="IDS_COM_SK_EDIT">Editar</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Nenhum grupo</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Endereço de e-mail inválido</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Adicionar aos Contatos</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Marcar como número padrão</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Mais informações</text>
+ <text id="IDS_COM_POP_SELECTED">Selecionado</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Vazio</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Tirar uma foto</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Novo grupo</text>
+ <text id="IDS_COM_SK_DELETE">Apagar</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (Trabalho)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Toque</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Amigos</text>
+ <text id="IDS_COM_BODY_COPY">Copiar</text>
+ <text id="IDS_PB_BODY_ADDRESS">Endereço</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Nenhum favorito</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contatos</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Selecionar contatos</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Mensagens instantâneas</text>
+ <text id="IDS_COM_BODY_GALLERY">Galeria</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Celular (casa)</text>
+ <text id="IDS_COM_BODY_SEARCH">Pesquisar</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Nome de grupo já utilizado</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Família</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nome</text>
+ <text id="IDS_PB_BODY_CITY">Cidade</text>
+ <text id="IDS_COM_BODY_CREATE">Criar</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Departamento</text>
+ <text id="IDS_PB_BODY_NICKNAME">Apelido</text>
+ <text id="IDS_COM_BODY_CALL">Chamada</text>
+ <text id="IDS_PB_BODY_SUFFIX">Sufixo</text>
+ <text id="IDS_COM_POP_UNKNOWN">Desconhecido</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favoritos</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Editar grupos</text>
+ <text id="IDS_COM_SK_SAVE">Salvar</text>
+ <text id="IDS_PB_BODY_PROVINCE">Província</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Enviar cartão de visita</text>
+ <text id="IDS_COM_POP_ADDED">Adicionado</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videochamada</text>
+ <text id="IDS_PB_BODY_HOME">Casa</text>
+ <text id="IDS_PB_BODY_NOTE">Nota</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Contatos</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Ordem de exibição</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Apagando contatos...</text>
+ <text id="IDS_PB_BODY_STREET">Rua</text>
+ <text id="IDS_PB_BODY_NUMBER">Número</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detalhes</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Trabalho</text>
+ <text id="IDS_COM_BODY_REMOVE">Remover</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Código postal</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (casa)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Nome próprio primeiro</text>
+ <text id="IDS_PB_BODY_DEFAULT">Padrão</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Nome do grupo</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupos</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Nome próprio</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Aniversário</text>
+ <text id="IDS_PB_BODY_COMPANY">Empresa</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Título</text>
+ <text id="IDS_COM_POP_CLOSE">Fechar</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Selec. tudo</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Adicionar aos favoritos</text>
+ <text id="IDS_PB_BODY_PHONE">Telefone</text>
+ <text id="IDS_COM_BODY_MESSAGE">Mensagem</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Apelido</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Guardar contacto em</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Telemóvel (Trabalho)</text>
+ <text id="IDS_COM_SK_NEW">Nova</text>
+ <text id="IDS_PB_SK_CANCEL">Cancelar</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Segundo nome</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Marcar como e-mail padrão</text>
+ <text id="IDS_PB_BODY_OTHER">Outro</text>
+ <text id="IDS_COM_POP_REMOVED">Removido</text>
+ <text id="IDS_COM_POP_SUCCESS">Concluído</text>
+ <text id="IDS_PB_BODY_COUNTRY">País</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Data de nascimento</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Todos os contactos</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Não atribuído</text>
+ <text id="IDS_COM_SK_DONE">Concluído</text>
+ <text id="IDS_PB_BODY_MOBILE">Telemóvel</text>
+ <text id="IDS_COM_BODY_EMAIL">E-mail</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Seleccionar grupo</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Ad membro</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Sem contactos</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Remover foto</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Apelido primeiro</text>
+ <text id="IDS_PB_OPT_VIEW">Ver</text>
+ <text id="IDS_PB_BODY_WORK">Empresa</text>
+ <text id="IDS_COM_SK_EDIT">Editar</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Nenhum grupo</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Endereço de e-mail inválido</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Adicionar aos contactos</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Marcar como número padrão</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Mais informações</text>
+ <text id="IDS_COM_POP_SELECTED">Seleccionado</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Vazio</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Tirar uma fotografia</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Novo grupo</text>
+ <text id="IDS_COM_SK_DELETE">Eliminar</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (Trabalho)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Tom de toque</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Amigos</text>
+ <text id="IDS_COM_BODY_COPY">Copiar</text>
+ <text id="IDS_PB_BODY_ADDRESS">Endereço</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Nenhuns favoritos</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contactos</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Seleccionar contactos</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Mensagens instantâneas</text>
+ <text id="IDS_COM_BODY_GALLERY">Galeria</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Telemóvel (casa)</text>
+ <text id="IDS_COM_BODY_SEARCH">Procurar</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Nome do grupo já existente</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Família</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nome</text>
+ <text id="IDS_PB_BODY_CITY">Cidade</text>
+ <text id="IDS_COM_BODY_CREATE">Criar</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Departamento</text>
+ <text id="IDS_PB_BODY_NICKNAME">Pseudónimo</text>
+ <text id="IDS_COM_BODY_CALL">Ligar</text>
+ <text id="IDS_PB_BODY_SUFFIX">Sufixo</text>
+ <text id="IDS_COM_POP_UNKNOWN">Desconhecido</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favorit.</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Editar\ngrupos</text>
+ <text id="IDS_COM_SK_SAVE">Guardar</text>
+ <text id="IDS_PB_BODY_PROVINCE">Província</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Enviar cartão de visita</text>
+ <text id="IDS_COM_POP_ADDED">Adicionado</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Vídeochamada</text>
+ <text id="IDS_PB_BODY_HOME">Pessoal</text>
+ <text id="IDS_PB_BODY_NOTE">Nota</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Definições dos contactos</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Ordem do nome de apresentação</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">A eliminar contactos...</text>
+ <text id="IDS_PB_BODY_STREET">Rua</text>
+ <text id="IDS_PB_BODY_NUMBER">Número</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detalhes</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Empresa</text>
+ <text id="IDS_COM_BODY_REMOVE">Remover</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Código postal</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (casa)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Nome próprio primeiro</text>
+ <text id="IDS_PB_BODY_DEFAULT">Padrão</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Nome do grupo</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupuri</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Nume</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Aniversare</text>
+ <text id="IDS_PB_BODY_COMPANY">Firmă</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Funcţie</text>
+ <text id="IDS_COM_POP_CLOSE">Închidere</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Selectare toate</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Adăugare la favorite</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Mesaj</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Prenume</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Salvare contact în</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobil (Serviciu)</text>
+ <text id="IDS_COM_SK_NEW">Nou</text>
+ <text id="IDS_PB_SK_CANCEL">Anulare</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Al doilea nume</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Marcare ca e-mail implicit</text>
+ <text id="IDS_PB_BODY_OTHER">Alte</text>
+ <text id="IDS_COM_POP_REMOVED">Eliminat</text>
+ <text id="IDS_COM_POP_SUCCESS">Succes</text>
+ <text id="IDS_PB_BODY_COUNTRY">Ţară</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Zi de naştere</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Toate contactele</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Neatribuit</text>
+ <text id="IDS_COM_SK_DONE">Gata</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobil</text>
+ <text id="IDS_COM_BODY_EMAIL">Email</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Selectare grup</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Ad. memb.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Niciun contact</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Eliminare foto</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Mai întâi numele</text>
+ <text id="IDS_PB_OPT_VIEW">Vizualizare</text>
+ <text id="IDS_PB_BODY_WORK">Serviciu</text>
+ <text id="IDS_COM_SK_EDIT">Editare</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Niciun grup</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Adresă e-mail invalidă</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Adăugare la Contacte</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Marcare ca număr implicit</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Mai multe informaţii</text>
+ <text id="IDS_COM_POP_SELECTED">Selectat</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Liber</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Fotografiere</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Grup nou</text>
+ <text id="IDS_COM_SK_DELETE">Ştergere</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (Serviciu)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Ton sonerie</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Prieteni</text>
+ <text id="IDS_COM_BODY_COPY">Copiere</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adresă</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Niciun element favorit</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contacte</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Selectare contacte</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Instant Messenger</text>
+ <text id="IDS_COM_BODY_GALLERY">Galerie</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobil (Domiciliu)</text>
+ <text id="IDS_COM_BODY_SEARCH">Căutare</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Numele grupului deja în uz</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Familie</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nume</text>
+ <text id="IDS_PB_BODY_CITY">Oraş</text>
+ <text id="IDS_COM_BODY_CREATE">Creare</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Departament</text>
+ <text id="IDS_PB_BODY_NICKNAME">Pseudonim</text>
+ <text id="IDS_COM_BODY_CALL">Apel</text>
+ <text id="IDS_PB_BODY_SUFFIX">Sufix</text>
+ <text id="IDS_COM_POP_UNKNOWN">Necunoscut</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favorite</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Editare grupuri</text>
+ <text id="IDS_COM_SK_SAVE">Salvare</text>
+ <text id="IDS_PB_BODY_PROVINCE">Provincie</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Trimitere carte de vizită</text>
+ <text id="IDS_COM_POP_ADDED">Adăugat</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Apel video</text>
+ <text id="IDS_PB_BODY_HOME">Acasă</text>
+ <text id="IDS_PB_BODY_NOTE">Notă</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Setări contact</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Ordine afişare nume</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Se şterg contactele...</text>
+ <text id="IDS_PB_BODY_STREET">Stradă</text>
+ <text id="IDS_PB_BODY_NUMBER">Număr</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detalii</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Serviciu</text>
+ <text id="IDS_COM_BODY_REMOVE">Eliminare</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Cod poştal</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (Domiciliu)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Mai întâi prenumele</text>
+ <text id="IDS_PB_BODY_DEFAULT">Implicit</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Nume grup</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Группы</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Имя</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Годовщина</text>
+ <text id="IDS_PB_BODY_COMPANY">Компания</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Должность</text>
+ <text id="IDS_COM_POP_CLOSE">Закрыть</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Выбрать все</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Добавить в избранное</text>
+ <text id="IDS_PB_BODY_PHONE">Телефон</text>
+ <text id="IDS_COM_BODY_MESSAGE">Сообщение</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Фамилия</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Сохранить контакт</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Мобильный (рабочий)</text>
+ <text id="IDS_COM_SK_NEW">Создать</text>
+ <text id="IDS_PB_SK_CANCEL">Отмена</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Отчество</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Отметить как адрес по умолчанию</text>
+ <text id="IDS_PB_BODY_OTHER">Другой</text>
+ <text id="IDS_COM_POP_REMOVED">Удалено</text>
+ <text id="IDS_COM_POP_SUCCESS">Успешно</text>
+ <text id="IDS_PB_BODY_COUNTRY">Страна</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">День рождения</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Все контакты</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Не назначено</text>
+ <text id="IDS_COM_SK_DONE">Готово</text>
+ <text id="IDS_PB_BODY_MOBILE">Мобильный</text>
+ <text id="IDS_COM_BODY_EMAIL">E-mail</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Выберите группу</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Доб.конт.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Нет контактов</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Удалить фото</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Сначала фамилия</text>
+ <text id="IDS_PB_OPT_VIEW">Просмотреть</text>
+ <text id="IDS_PB_BODY_WORK">Рабочий</text>
+ <text id="IDS_COM_SK_EDIT">Изменить</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Группа отсутствует</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Неправильный адрес эл. почты</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Добавить в Контакты</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Сделать номером по умолчанию</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Подробнее</text>
+ <text id="IDS_COM_POP_SELECTED">Выбрано</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Пусто</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Сделать фото</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Новая группа</text>
+ <text id="IDS_COM_SK_DELETE">Удалить</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Факс (рабочий)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Мелодия звонка</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Друзья</text>
+ <text id="IDS_COM_BODY_COPY">Копировать</text>
+ <text id="IDS_PB_BODY_ADDRESS">Адрес</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Нет избранных</text>
+ <text id="IDS_COM_BODY_CONTACTS">Контакты</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Выберите контакты</text>
+ <text id="IDS_PB_BODY_PAGER">Пейджер</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Служба IM</text>
+ <text id="IDS_COM_BODY_GALLERY">Галерея</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Мобильный (домашний)</text>
+ <text id="IDS_COM_BODY_SEARCH">Поиск</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Имя группы уже используется</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Семья</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Имя</text>
+ <text id="IDS_PB_BODY_CITY">Город</text>
+ <text id="IDS_COM_BODY_CREATE">Создать</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Отдел</text>
+ <text id="IDS_PB_BODY_NICKNAME">Псевдоним</text>
+ <text id="IDS_COM_BODY_CALL">Вызов</text>
+ <text id="IDS_PB_BODY_SUFFIX">Суффикс</text>
+ <text id="IDS_COM_POP_UNKNOWN">Неизвестно</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Избранное</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Изменить группы</text>
+ <text id="IDS_COM_SK_SAVE">Соxранить</text>
+ <text id="IDS_PB_BODY_PROVINCE">Область</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Отправить визитку</text>
+ <text id="IDS_COM_POP_ADDED">Добавлено</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Видеовызов</text>
+ <text id="IDS_PB_BODY_HOME">Домашний</text>
+ <text id="IDS_PB_BODY_NOTE">Заметка</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Настройки контактов</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Сортировка контактов</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Удаление контактов...</text>
+ <text id="IDS_PB_BODY_STREET">Улица</text>
+ <text id="IDS_PB_BODY_NUMBER">Номер</text>
+ <text id="IDS_PB_HEADER_DETAILS">Свойства</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Работа</text>
+ <text id="IDS_COM_BODY_REMOVE">Удалить</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Почтовый индекс</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Факс (домашний)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Сначала имя</text>
+ <text id="IDS_PB_BODY_DEFAULT">По умолчанию</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Имя группы</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.201209071526" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_CONTACT_DETAILS_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="NONE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_FOOTER" type="NONE"/>
+ </Form>
+ <Footer>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" footerStyle="FOOTER_STYLE_BUTTON_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="true"/>
+ <itemSet>
+ <footerItem actionId="10" disabledIconPath="" highlightedIconPath="" normalIconPath="" pressedIconPath="" selectedIconPath="" text="::IDS_COM_SK_EDIT"/>
+ <footerItem actionId="11" disabledIconPath="" highlightedIconPath="" normalIconPath="" pressedIconPath="" selectedIconPath="" text="::IDS_COM_SK_DELETE"/>
+ </itemSet>
+ </Footer>
+</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.201212051713" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_GROUP_EDITOR_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="NONE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER" type="NONE"/>
+ </Form>
+ <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>
+ <buttonItem actionId="0" disabledBGBitmapPath="" disabledIconPath="" highlightedBGBitmapPath="" highlightedIconPath="" normalBGBitmapPath="" normalIconPath="" position="BUTTON_POSITION_LEFT" pressedBGBitmapPath="" pressedIconPath="" style="BUTTON_ITEM_STYLE_TEXT" text="::IDS_COM_SK_SAVE" type="left"/>
+ <buttonItem actionId="1" disabledBGBitmapPath="" disabledIconPath="" highlightedBGBitmapPath="" highlightedIconPath="" normalBGBitmapPath="" normalIconPath="" position="BUTTON_POSITION_RIGHT" pressedBGBitmapPath="" pressedIconPath="" style="BUTTON_ITEM_STYLE_TEXT" text="::IDS_PB_SK_CANCEL" type="right"/>
+ </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 Scene SYSTEM "UIForm.dtd">
+
+<Scene Bversion="3.0.0.201212051713" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_GROUP_SELECTOR_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_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>
+ <footerItem actionId="11" disabledIconPath="" highlightedIconPath="" normalIconPath="" pressedIconPath="" selectedIconPath="" text="::IDS_COM_SK_DONE"/>
+ <footerItem actionId="12" disabledIconPath="" highlightedIconPath="" normalIconPath="" pressedIconPath="" selectedIconPath="" text="::IDS_PB_SK_CANCEL"/>
+ <buttonItem actionId="10" disabledBGBitmapPath="" disabledIconPath="" highlightedBGBitmapPath="" highlightedIconPath="" normalBGBitmapPath="00_icon_more.png" normalIconPath="" position="BUTTON_POSITION_LEFT" pressedBGBitmapPath="00_icon_more_press.png" pressedIconPath="" style="BUTTON_ITEM_STYLE_ICON" text="" type="left"/>
+ </itemSet>
+ </Footer>
+ <Header>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" headerStyle="HEADER_STYLE_TITLE" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" titleIconPath="" titleText="::IDS_PB_HEADER_SELECT_GROUP" titleTextColor=""/>
+ <itemSet/>
+ </Header>
+ <Label id="IDC_LABEL" parent="IDL_GROUP_SELECTOR_FORM">
+ <property backgroundBitmapPath="" backgroundColor="#D7E1E8" backgroundColorOpacity="100" horizontalAlign="ALIGN_CENTER" text="::IDS_COM_POP_SELECTED" textColor="#4C5158" textSize="32" textStyle="LABEL_TEXT_STYLE_BOLD" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDL_GROUP_SELECTOR_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="48" horizontalFitPolicy="FIT_POLICY_PARENT" leftRelation="IDL_GROUP_SELECTOR_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_GROUP_SELECTOR_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="720" x="0" y="974"/>
+ <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="411"/>
+ </Label>
+ <ListView id="IDC_LISTVIEW" parent="IDL_GROUP_SELECTOR_FORM">
+ <property backgroundColor="" backgroundColorOpacity="0" bitmapPathOfEmptyList="" colorOfEmptyListText="" fastScroll="false" itemDivider="true" itemDividerColor="" sweepEnabled="false" textOfEmptyList="::IDS_PB_HEADER_NO_GROUP"/>
+ <layout bottomRelation="IDC_LABEL" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_TOP" centerHorizontal="false" centerVertical="false" height="974" horizontalFitPolicy="FIT_POLICY_PARENT" leftRelation="IDL_GROUP_SELECTOR_FORM" leftRelationType="RECT_EDGE_RELATION_LEFT_TO_LEFT" marginBottom="0" marginLeft="0" marginRight="0" marginTop="0" mode="Portrait" rightRelation="IDL_GROUP_SELECTOR_FORM" rightRelationType="RECT_EDGE_RELATION_RIGHT_TO_RIGHT" topRelation="IDL_GROUP_SELECTOR_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="218" y="205"/>
+ </ListView>
+</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Skupiny</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Meno</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Výročie</text>
+ <text id="IDS_PB_BODY_COMPANY">Spoločnosť</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Pracovná funkcia</text>
+ <text id="IDS_COM_POP_CLOSE">Zavrieť</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Vybrať všetky</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Pridať do obľúbených položiek</text>
+ <text id="IDS_PB_BODY_PHONE">Telefón</text>
+ <text id="IDS_COM_BODY_MESSAGE">Správa</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Priezvisko</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Uložiť kontakt do</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobil (práca)</text>
+ <text id="IDS_COM_SK_NEW">Nové</text>
+ <text id="IDS_PB_SK_CANCEL">Zrušiť</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Druhé krstné meno</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Označiť ako predvolený e-mail</text>
+ <text id="IDS_PB_BODY_OTHER">Ďalšie</text>
+ <text id="IDS_COM_POP_REMOVED">Odstránené</text>
+ <text id="IDS_COM_POP_SUCCESS">Dokončené</text>
+ <text id="IDS_PB_BODY_COUNTRY">Krajina</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Narodeniny</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Všetky kontakty</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Nepriradené</text>
+ <text id="IDS_COM_SK_DONE">Hotovo</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobilné</text>
+ <text id="IDS_COM_BODY_EMAIL">E-mail</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Vyberte skupinu</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Pr. člena</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Žiadne kontakty</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Odstrániť fotografiu</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Najprv priezvisko</text>
+ <text id="IDS_PB_OPT_VIEW">Zobraziť</text>
+ <text id="IDS_PB_BODY_WORK">Práca</text>
+ <text id="IDS_COM_SK_EDIT">Upraviť</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Žiadna skupina</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Neplatná e-mailová adresa</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Pridať do kontaktov</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Označiť ako predvolené číslo</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Ďalšie informácie</text>
+ <text id="IDS_COM_POP_SELECTED">Vybrané</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Prázdne</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Fotografovať</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nová skupina</text>
+ <text id="IDS_COM_SK_DELETE">Odstrániť</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (práca)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Zvonenie</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Priatelia</text>
+ <text id="IDS_COM_BODY_COPY">Kopírovať</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adresa</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Žiadne obľúbené položky</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontakty</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Vybrať kontakty</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Odosielanie okamž. správ</text>
+ <text id="IDS_COM_BODY_GALLERY">Galéria</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobil (domov)</text>
+ <text id="IDS_COM_BODY_SEARCH">Hľadať</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Názov skupiny už existuje</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Rodina</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Meno</text>
+ <text id="IDS_PB_BODY_CITY">Mesto</text>
+ <text id="IDS_COM_BODY_CREATE">Vytvoriť</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Oddelenie</text>
+ <text id="IDS_PB_BODY_NICKNAME">Prezývka</text>
+ <text id="IDS_COM_BODY_CALL">Hovor</text>
+ <text id="IDS_PB_BODY_SUFFIX">Titul za menom</text>
+ <text id="IDS_COM_POP_UNKNOWN">Neznáme</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Obľúbené</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Upraviť skupiny</text>
+ <text id="IDS_COM_SK_SAVE">Uložiť</text>
+ <text id="IDS_PB_BODY_PROVINCE">Kraj</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Odoslať vizitku</text>
+ <text id="IDS_COM_POP_ADDED">Pridané</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videohovor</text>
+ <text id="IDS_PB_BODY_HOME">Domov</text>
+ <text id="IDS_PB_BODY_NOTE">Poznámka</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Nastavenia kontaktov</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Poradie zobrazovania mien</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Odstraňujú sa kontakty...</text>
+ <text id="IDS_PB_BODY_STREET">Ulica</text>
+ <text id="IDS_PB_BODY_NUMBER">Číslo</text>
+ <text id="IDS_PB_HEADER_DETAILS">Podrobnosti</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Práca</text>
+ <text id="IDS_COM_BODY_REMOVE">Odstrániť</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">PSČ</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (domov)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Najprv krstné meno</text>
+ <text id="IDS_PB_BODY_DEFAULT">Predvolený</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Názov skupiny</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Skupine</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Ime</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Obletnica</text>
+ <text id="IDS_PB_BODY_COMPANY">Podjetje</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Službeni naziv</text>
+ <text id="IDS_COM_POP_CLOSE">Zapri</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Izberi vse</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Dodaj med priljubljene</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Sporočilo</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Priimek</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Stik shrani v</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobilni telefon (služba)</text>
+ <text id="IDS_COM_SK_NEW">Novo</text>
+ <text id="IDS_PB_SK_CANCEL">Prekliči</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Srednje ime</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Označi kot privzeto e-pošto</text>
+ <text id="IDS_PB_BODY_OTHER">Drugo</text>
+ <text id="IDS_COM_POP_REMOVED">Odstranjeno</text>
+ <text id="IDS_COM_POP_SUCCESS">Uspeh</text>
+ <text id="IDS_PB_BODY_COUNTRY">Država</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Rojstni dan</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Vse vizitke</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Ni dodeljeno</text>
+ <text id="IDS_COM_SK_DONE">Končano</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobilni</text>
+ <text id="IDS_COM_BODY_EMAIL">E-pošta</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Izberite skupino</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Dod.člana</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Ni stikov</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Odstrani fotografijo</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Najprej priimek</text>
+ <text id="IDS_PB_OPT_VIEW">Prikaži</text>
+ <text id="IDS_PB_BODY_WORK">Službeni</text>
+ <text id="IDS_COM_SK_EDIT">Uredi</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Ni skupine</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Neveljaven e-poštni naslov</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Dodaj nov stik</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Označi kot privzeto številko</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Več informacij</text>
+ <text id="IDS_COM_POP_SELECTED">Izbrano</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Izprazni</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Naredi fotografijo</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nova skupina</text>
+ <text id="IDS_COM_SK_DELETE">Izbriši</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faks (služba)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Melodija zvonjenja</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Prijatelji</text>
+ <text id="IDS_COM_BODY_COPY">Kopiraj</text>
+ <text id="IDS_PB_BODY_ADDRESS">Naslov</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Ni priljubljenih</text>
+ <text id="IDS_COM_BODY_CONTACTS">Imenik</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Izberi stike</text>
+ <text id="IDS_PB_BODY_PAGER">Pozivnik</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Neposredno sporočanje</text>
+ <text id="IDS_COM_BODY_GALLERY">Galerija</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobilni telefon (doma)</text>
+ <text id="IDS_COM_BODY_SEARCH">Iskanje</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Ime skupine že obstaja</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Družina</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Ime</text>
+ <text id="IDS_PB_BODY_CITY">Mesto</text>
+ <text id="IDS_COM_BODY_CREATE">Ustvari</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Oddelek</text>
+ <text id="IDS_PB_BODY_NICKNAME">Vzdevek</text>
+ <text id="IDS_COM_BODY_CALL">Klic</text>
+ <text id="IDS_PB_BODY_SUFFIX">Pripona</text>
+ <text id="IDS_COM_POP_UNKNOWN">Neznano</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Priljub.</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Uredi skupine</text>
+ <text id="IDS_COM_SK_SAVE">Shrani</text>
+ <text id="IDS_PB_BODY_PROVINCE">Provinca</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Pošlji vizitko</text>
+ <text id="IDS_COM_POP_ADDED">Dodano</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Video klic</text>
+ <text id="IDS_PB_BODY_HOME">Domači</text>
+ <text id="IDS_PB_BODY_NOTE">Beležka</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Nastavitve stika</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Zaporedje prikazanega imena</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Brisanje stikov ...</text>
+ <text id="IDS_PB_BODY_STREET">Ulica</text>
+ <text id="IDS_PB_BODY_NUMBER">Številka</text>
+ <text id="IDS_PB_HEADER_DETAILS">Podrobnosti</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Služba</text>
+ <text id="IDS_COM_BODY_REMOVE">Odstrani</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Poštna številka</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faks (doma)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Najprej ime</text>
+ <text id="IDS_PB_BODY_DEFAULT">Privzeto</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Ime skupine</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupos</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Nombre</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Aniversario</text>
+ <text id="IDS_PB_BODY_COMPANY">Empresa</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Cargo</text>
+ <text id="IDS_COM_POP_CLOSE">Cerrar</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Seleccionar todo</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Añadir a favoritos</text>
+ <text id="IDS_PB_BODY_PHONE">Teléfono</text>
+ <text id="IDS_COM_BODY_MESSAGE">Mensajes</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Apellidos</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Guardar contacto en</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Móvil (trabajo)</text>
+ <text id="IDS_COM_SK_NEW">Nuevo</text>
+ <text id="IDS_PB_SK_CANCEL">Cancelar</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Segundo nombre</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Marcar como correo electrónico predeterminado</text>
+ <text id="IDS_PB_BODY_OTHER">Otro</text>
+ <text id="IDS_COM_POP_REMOVED">Elimininado</text>
+ <text id="IDS_COM_POP_SUCCESS">Finalizado</text>
+ <text id="IDS_PB_BODY_COUNTRY">País</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Cumpleaños</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Todos los contactos</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">No asignado</text>
+ <text id="IDS_COM_SK_DONE">Hecho</text>
+ <text id="IDS_PB_BODY_MOBILE">Móvil</text>
+ <text id="IDS_COM_BODY_EMAIL">Correo electrónico</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Seleccionar grupo</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Añ miembr</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Ningún contacto</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Eliminar foto</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Apellido en primer lugar</text>
+ <text id="IDS_PB_OPT_VIEW">Ver</text>
+ <text id="IDS_PB_BODY_WORK">Profesional</text>
+ <text id="IDS_COM_SK_EDIT">Editar</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Ningún grupo</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Dirección de correo electrónico no válida</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Agregar a Contactos</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Marcar como número predeterminado</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Más información</text>
+ <text id="IDS_COM_POP_SELECTED">Seleccionado</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Vacío</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Hacer foto</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Grupo nuevo</text>
+ <text id="IDS_COM_SK_DELETE">Eliminar</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (trabajo)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Melodía</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Amigos</text>
+ <text id="IDS_COM_BODY_COPY">Copiar</text>
+ <text id="IDS_PB_BODY_ADDRESS">Dirección</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Ningún favorito</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contactos</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Seleccionar contactos</text>
+ <text id="IDS_PB_BODY_PAGER">Buscapersonas</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Mensajería instantánea</text>
+ <text id="IDS_COM_BODY_GALLERY">Galería</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Móvil (casa)</text>
+ <text id="IDS_COM_BODY_SEARCH">Buscar</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">El nombre del grupo ya existe</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Familia</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nombre</text>
+ <text id="IDS_PB_BODY_CITY">Ciudad</text>
+ <text id="IDS_COM_BODY_CREATE">Crear</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Departamento</text>
+ <text id="IDS_PB_BODY_NICKNAME">Alias</text>
+ <text id="IDS_COM_BODY_CALL">Llamar</text>
+ <text id="IDS_PB_BODY_SUFFIX">Sufijo</text>
+ <text id="IDS_COM_POP_UNKNOWN">Desconocido</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favoritos</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Editar grupos</text>
+ <text id="IDS_COM_SK_SAVE">Guardar</text>
+ <text id="IDS_PB_BODY_PROVINCE">Provincia</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Enviar tarjeta de presentación</text>
+ <text id="IDS_COM_POP_ADDED">Añadido</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videollamada</text>
+ <text id="IDS_PB_BODY_HOME">Casa</text>
+ <text id="IDS_PB_BODY_NOTE">Nota</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Ajustes de contactos</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Orden de mostrar nombre</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Eliminando contactos...</text>
+ <text id="IDS_PB_BODY_STREET">Calle</text>
+ <text id="IDS_PB_BODY_NUMBER">Número</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detalles</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Trabajo</text>
+ <text id="IDS_COM_BODY_REMOVE">Eliminar</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Código postal</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (casa)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Nombre en primer lugar</text>
+ <text id="IDS_PB_BODY_DEFAULT">Predeterminado</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Nombre de grupo</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupos</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Nombre</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Aniversario</text>
+ <text id="IDS_PB_BODY_COMPANY">Empresa</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Puesto</text>
+ <text id="IDS_COM_POP_CLOSE">Cerrar</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Seleccionar todo</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Añadir a favoritos</text>
+ <text id="IDS_PB_BODY_PHONE">Teléfono</text>
+ <text id="IDS_COM_BODY_MESSAGE">Mensaje</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Apellido</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Guardar contacto en</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Móvil - Trabajo</text>
+ <text id="IDS_COM_SK_NEW">Nuevo</text>
+ <text id="IDS_PB_SK_CANCEL">Cancelar</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Segundo nombre</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Marcar como correo predeterminado</text>
+ <text id="IDS_PB_BODY_OTHER">Otro</text>
+ <text id="IDS_COM_POP_REMOVED">Eliminado</text>
+ <text id="IDS_COM_POP_SUCCESS">Exitoso</text>
+ <text id="IDS_PB_BODY_COUNTRY">País</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Cumpleaños</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Todos los contactos</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">No asignado</text>
+ <text id="IDS_COM_SK_DONE">Realizado</text>
+ <text id="IDS_PB_BODY_MOBILE">Móvil</text>
+ <text id="IDS_COM_BODY_EMAIL">Correo</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Seleccionar grupo</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Añ miembr</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Ningún contacto</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Eliminar foto</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Apellido primero</text>
+ <text id="IDS_PB_OPT_VIEW">Ver</text>
+ <text id="IDS_PB_BODY_WORK">Trabajo</text>
+ <text id="IDS_COM_SK_EDIT">Editar</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Ningún grupo</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Dirección de correo no válida</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Añadir a Contactos</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Marcar como número predeterminado</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Más información</text>
+ <text id="IDS_COM_POP_SELECTED">Seleccionado</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Vacío</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Tomar foto</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Añadir grupo</text>
+ <text id="IDS_COM_SK_DELETE">Eliminar</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax - Trabajo</text>
+ <text id="IDS_PB_BODY_RINGTONE">Tono de llamada</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Amigos</text>
+ <text id="IDS_COM_BODY_COPY">Copiar</text>
+ <text id="IDS_PB_BODY_ADDRESS">Dirección</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Ningún favorito</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contactos</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Seleccionar contactos</text>
+ <text id="IDS_PB_BODY_PAGER">Localizador</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Mensaje instantáneo</text>
+ <text id="IDS_COM_BODY_GALLERY">Galería</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Móvil - Privado</text>
+ <text id="IDS_COM_BODY_SEARCH">Buscar</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Ya existe ese nombre de grupo</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Familia</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nombre</text>
+ <text id="IDS_PB_BODY_CITY">Ciudad</text>
+ <text id="IDS_COM_BODY_CREATE">Crear</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Departamento</text>
+ <text id="IDS_PB_BODY_NICKNAME">Alias</text>
+ <text id="IDS_COM_BODY_CALL">Llamar</text>
+ <text id="IDS_PB_BODY_SUFFIX">Sufijo</text>
+ <text id="IDS_COM_POP_UNKNOWN">Desconocido</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favoritos</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Editar grupos</text>
+ <text id="IDS_COM_SK_SAVE">Guardar</text>
+ <text id="IDS_PB_BODY_PROVINCE">Provincia</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Enviar tarjeta de presentación</text>
+ <text id="IDS_COM_POP_ADDED">Añadido</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videollamada</text>
+ <text id="IDS_PB_BODY_HOME">Privado</text>
+ <text id="IDS_PB_BODY_NOTE">Nota</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Contactos</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Mostrar por</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Eliminando contactos...</text>
+ <text id="IDS_PB_BODY_STREET">Calle</text>
+ <text id="IDS_PB_BODY_NUMBER">Número</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detalles</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Trabajo</text>
+ <text id="IDS_COM_BODY_REMOVE">Eliminar</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Código postal</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax - Privado</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Nombre primero</text>
+ <text id="IDS_PB_BODY_DEFAULT">Predeterminado</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Nombre de grupo</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupe</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Ime</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Godišnjica</text>
+ <text id="IDS_PB_BODY_COMPANY">Kompanija</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Radno mesto</text>
+ <text id="IDS_COM_POP_CLOSE">Zatvori</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Izaberi sve</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Dodaj u Omiljene</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Poruka</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Prezime</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Sačuvaj kontakt u</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobilni (poslovni)</text>
+ <text id="IDS_COM_SK_NEW">Nova</text>
+ <text id="IDS_PB_SK_CANCEL">Poništi</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Srednje ime</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Označi kao podrazumevanu e-poruku</text>
+ <text id="IDS_PB_BODY_OTHER">Ostalo</text>
+ <text id="IDS_COM_POP_REMOVED">Uklonjeno</text>
+ <text id="IDS_COM_POP_SUCCESS">Uspeh</text>
+ <text id="IDS_PB_BODY_COUNTRY">Zemlja</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Rođendan</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Svi kontakti</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Nedodeljeno</text>
+ <text id="IDS_COM_SK_DONE">Gotovo</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobilni</text>
+ <text id="IDS_COM_BODY_EMAIL">E-pošta</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Izaberi grupu</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Dodaj čl.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Nema kontakata</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Ukloni fotografiju</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Prvo ide prezime</text>
+ <text id="IDS_PB_OPT_VIEW">Prikaži</text>
+ <text id="IDS_PB_BODY_WORK">Posao</text>
+ <text id="IDS_COM_SK_EDIT">Izmeni</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Nema grupe</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Neispravna adresa e-pošte</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Dodaj u kontakte</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Označi kao podrazumevani broj</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Više informacija</text>
+ <text id="IDS_COM_POP_SELECTED">Izabrano</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Prazno</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Snimi fotografiju</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nova grupa</text>
+ <text id="IDS_COM_SK_DELETE">Obriši</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faks (poslovni)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Ton zvona</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Prijatelji</text>
+ <text id="IDS_COM_BODY_COPY">Kopiraj</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adresa</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Nema omiljenih</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontakti</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Izaberi kontakte</text>
+ <text id="IDS_PB_BODY_PAGER">Pejdžer</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Trenutne poruke</text>
+ <text id="IDS_COM_BODY_GALLERY">Galerija</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobilni telefon (privatni)</text>
+ <text id="IDS_COM_BODY_SEARCH">Pretraži</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Ime grupe se već koristi</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Porodica</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Ime</text>
+ <text id="IDS_PB_BODY_CITY">Grad</text>
+ <text id="IDS_COM_BODY_CREATE">Kreiraj</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Odeljenje</text>
+ <text id="IDS_PB_BODY_NICKNAME">Nadimak</text>
+ <text id="IDS_COM_BODY_CALL">Poziv</text>
+ <text id="IDS_PB_BODY_SUFFIX">Sufiks</text>
+ <text id="IDS_COM_POP_UNKNOWN">Nepoznato</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Omiljeni</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Izmeni grupe</text>
+ <text id="IDS_COM_SK_SAVE">Sačuvaj</text>
+ <text id="IDS_PB_BODY_PROVINCE">Regija</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Pošalji vizitkartu</text>
+ <text id="IDS_COM_POP_ADDED">Dodato</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Video poziv</text>
+ <text id="IDS_PB_BODY_HOME">Kuća</text>
+ <text id="IDS_PB_BODY_NOTE">Beleška</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Podešavanja kontakata</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Redosled prikaza imena</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Brisanje kontakata...</text>
+ <text id="IDS_PB_BODY_STREET">Ulica</text>
+ <text id="IDS_PB_BODY_NUMBER">Broj</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detalji</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Posao</text>
+ <text id="IDS_COM_BODY_REMOVE">Ukloni</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Poštanski broj</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faks (privatni)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Prvo ide ime</text>
+ <text id="IDS_PB_BODY_DEFAULT">Podrazumevano</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Naziv grupe</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupper</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Förnamn</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Årsdag</text>
+ <text id="IDS_PB_BODY_COMPANY">Företag</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Befattning</text>
+ <text id="IDS_COM_POP_CLOSE">Stäng</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Välj alla</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Lägg till i favoriter</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Meddelande</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Efternamn</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Spara kontakt i</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobil (arbetet)</text>
+ <text id="IDS_COM_SK_NEW">Nytt</text>
+ <text id="IDS_PB_SK_CANCEL">Avbryt</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Mellannamn</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Markera som standard-e-post</text>
+ <text id="IDS_PB_BODY_OTHER">Annat</text>
+ <text id="IDS_COM_POP_REMOVED">Borttagen</text>
+ <text id="IDS_COM_POP_SUCCESS">Slutfört</text>
+ <text id="IDS_PB_BODY_COUNTRY">Land</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Födelsedag</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Alla kontakter</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Inte tilldelad</text>
+ <text id="IDS_COM_SK_DONE">Klar</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobil</text>
+ <text id="IDS_COM_BODY_EMAIL">E-post</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Välj grupp</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Ny medlem</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Inga kontakter</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Ta bort foto</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Efternamn först</text>
+ <text id="IDS_PB_OPT_VIEW">Visa</text>
+ <text id="IDS_PB_BODY_WORK">Arbete</text>
+ <text id="IDS_COM_SK_EDIT">Redigera</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Ingen grupp</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Ogiltig e-postadress</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Lägg till i Kontakter</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Markera som huvudnummer</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Mer information</text>
+ <text id="IDS_COM_POP_SELECTED">Vald</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Tom</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Ta ett foto</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Ny grupp</text>
+ <text id="IDS_COM_SK_DELETE">Radera</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (arbetet)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Ringsignal</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Vänner</text>
+ <text id="IDS_COM_BODY_COPY">Kopiera</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adress</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Inga favoriter</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontakter</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Välj kontakter</text>
+ <text id="IDS_PB_BODY_PAGER">Personsökare</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Snabbmeddelande</text>
+ <text id="IDS_COM_BODY_GALLERY">Galleri</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobil (hem)</text>
+ <text id="IDS_COM_BODY_SEARCH">Sök</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Gruppnamnet används redan</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Familj</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Namn</text>
+ <text id="IDS_PB_BODY_CITY">Ort</text>
+ <text id="IDS_COM_BODY_CREATE">Skapa</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Avdelning</text>
+ <text id="IDS_PB_BODY_NICKNAME">Smeknamn</text>
+ <text id="IDS_COM_BODY_CALL">Samtal</text>
+ <text id="IDS_PB_BODY_SUFFIX">Suffix</text>
+ <text id="IDS_COM_POP_UNKNOWN">Okänd</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favorit.</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Redigera grupper</text>
+ <text id="IDS_COM_SK_SAVE">Spara</text>
+ <text id="IDS_PB_BODY_PROVINCE">Region</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Skicka visitkort</text>
+ <text id="IDS_COM_POP_ADDED">Tillagd</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videosamtal</text>
+ <text id="IDS_PB_BODY_HOME">Hem</text>
+ <text id="IDS_PB_BODY_NOTE">Notering</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Kontaktinställningar</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Namnordning</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Raderar kontakter...</text>
+ <text id="IDS_PB_BODY_STREET">Gata</text>
+ <text id="IDS_PB_BODY_NUMBER">Nummer</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detaljer</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Arbete</text>
+ <text id="IDS_COM_BODY_REMOVE">Ta bort</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Postnr</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (hem)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Förnamn först</text>
+ <text id="IDS_PB_BODY_DEFAULT">Standard</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Gruppnamn</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Gruplar</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Ad</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Yıl dönümü</text>
+ <text id="IDS_PB_BODY_COMPANY">Şirket</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">İş ünvanı</text>
+ <text id="IDS_COM_POP_CLOSE">Kapat</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Hepsini seç</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Favorilere ekle</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Mesaj</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Soyad</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Kişinin kaydedileceği yer</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Cep telefonu (İş)</text>
+ <text id="IDS_COM_SK_NEW">Yeni</text>
+ <text id="IDS_PB_SK_CANCEL">İptal</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">İkinci ad</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Varsayılan e-posta olarak işaretle</text>
+ <text id="IDS_PB_BODY_OTHER">Diğer</text>
+ <text id="IDS_COM_POP_REMOVED">Kaldırıldı</text>
+ <text id="IDS_COM_POP_SUCCESS">Başarılı</text>
+ <text id="IDS_PB_BODY_COUNTRY">Ülke</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Doğum günü</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Tüm kişiler</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Atanmadı</text>
+ <text id="IDS_COM_SK_DONE">Kaydet</text>
+ <text id="IDS_PB_BODY_MOBILE">Cep Telefonu</text>
+ <text id="IDS_COM_BODY_EMAIL">E-posta</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Grup seç</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Üye ekle</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Kişi yok</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Fotoyu kaldır</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Önce soyadı</text>
+ <text id="IDS_PB_OPT_VIEW">Göster</text>
+ <text id="IDS_PB_BODY_WORK">İş</text>
+ <text id="IDS_COM_SK_EDIT">Düzenle</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Grup yok</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Geçersiz e-posta adresi</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Rehbere ekle</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Varsayılan numara olarak işaretle</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Daha fazla bilgi</text>
+ <text id="IDS_COM_POP_SELECTED">Seçili</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Boş</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Fotoğraf çek</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Yeni grup</text>
+ <text id="IDS_COM_SK_DELETE">Sil</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faks (İş)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Zil sesi</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Arkadaşlar</text>
+ <text id="IDS_COM_BODY_COPY">Kopyala</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adres</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Favori yok</text>
+ <text id="IDS_COM_BODY_CONTACTS">Rehber</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Kişileri seç</text>
+ <text id="IDS_PB_BODY_PAGER">Çağrı cihazı</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Anlık mesajlaşma</text>
+ <text id="IDS_COM_BODY_GALLERY">Galeri</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Cep telefonu (Ev)</text>
+ <text id="IDS_COM_BODY_SEARCH">Buluyor</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Grup ismi zaten var</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Aile</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">İsim</text>
+ <text id="IDS_PB_BODY_CITY">Şehir</text>
+ <text id="IDS_COM_BODY_CREATE">Oluştur</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Departman</text>
+ <text id="IDS_PB_BODY_NICKNAME">Takma ad</text>
+ <text id="IDS_COM_BODY_CALL">Arama</text>
+ <text id="IDS_PB_BODY_SUFFIX">Son ek</text>
+ <text id="IDS_COM_POP_UNKNOWN">Bilinmeyen</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favoriler</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Grupları düzenle</text>
+ <text id="IDS_COM_SK_SAVE">Kaydet</text>
+ <text id="IDS_PB_BODY_PROVINCE">Bölge</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Kartvizit gönder</text>
+ <text id="IDS_COM_POP_ADDED">Eklendi</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Video arama</text>
+ <text id="IDS_PB_BODY_HOME">Ev</text>
+ <text id="IDS_PB_BODY_NOTE">Not</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Kişi ayarları</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">İsim görünümü</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Kişiler siliniyor...</text>
+ <text id="IDS_PB_BODY_STREET">Cadde</text>
+ <text id="IDS_PB_BODY_NUMBER">Numara</text>
+ <text id="IDS_PB_HEADER_DETAILS">Ayrıntılar</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">İş</text>
+ <text id="IDS_COM_BODY_REMOVE">Kaldır</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Posta kodu</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faks (Ev)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Önce ilk adı</text>
+ <text id="IDS_PB_BODY_DEFAULT">Varsayılan</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Grup ismi</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Групи</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Ім'я</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Річниця</text>
+ <text id="IDS_PB_BODY_COMPANY">Організація</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Посада</text>
+ <text id="IDS_COM_POP_CLOSE">Закрити</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Вибрати всі</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Додати до обраного</text>
+ <text id="IDS_PB_BODY_PHONE">Телефон</text>
+ <text id="IDS_COM_BODY_MESSAGE">Повідомлення</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Прізвище</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Зберегти контакт до</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Мобільний (робочий)</text>
+ <text id="IDS_COM_SK_NEW">Нове</text>
+ <text id="IDS_PB_SK_CANCEL">Скасувати</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Друге ім’я</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Позначити як стандартну адресу Email</text>
+ <text id="IDS_PB_BODY_OTHER">Інші</text>
+ <text id="IDS_COM_POP_REMOVED">Видалено</text>
+ <text id="IDS_COM_POP_SUCCESS">Успішно</text>
+ <text id="IDS_PB_BODY_COUNTRY">Країна</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">День народження</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Всі контакти</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Не призначено</text>
+ <text id="IDS_COM_SK_DONE">Готово</text>
+ <text id="IDS_PB_BODY_MOBILE">Мобільний</text>
+ <text id="IDS_COM_BODY_EMAIL">Email</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Вибрати групу</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Дод.учас.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Немає контактів</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Видалити фотографію</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Спочатку прізвище</text>
+ <text id="IDS_PB_OPT_VIEW">Переглянути</text>
+ <text id="IDS_PB_BODY_WORK">Робота</text>
+ <text id="IDS_COM_SK_EDIT">Редагув.</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Немає групи</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Хибна адреса Email</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Додати в контакти</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Позначити як стандартний номер</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Подробиці</text>
+ <text id="IDS_COM_POP_SELECTED">Вибрано</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Пусто</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Зробити фото</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Нова група</text>
+ <text id="IDS_COM_SK_DELETE">Видалити</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Факс (робочий)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Звук дзвінка</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Друзі</text>
+ <text id="IDS_COM_BODY_COPY">Копіювати</text>
+ <text id="IDS_PB_BODY_ADDRESS">Адреса</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Немає об’єктів обраного</text>
+ <text id="IDS_COM_BODY_CONTACTS">Контакти</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Вибір контактів</text>
+ <text id="IDS_PB_BODY_PAGER">Пейджер</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Обмін повідомленнями</text>
+ <text id="IDS_COM_BODY_GALLERY">Галерея</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Мобільний (домашній)</text>
+ <text id="IDS_COM_BODY_SEARCH">Пошук</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Назва групи вже використовується</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Сім'я</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Назва</text>
+ <text id="IDS_PB_BODY_CITY">Місто</text>
+ <text id="IDS_COM_BODY_CREATE">Створити</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Відділ</text>
+ <text id="IDS_PB_BODY_NICKNAME">Псевдонім</text>
+ <text id="IDS_COM_BODY_CALL">Виклик</text>
+ <text id="IDS_PB_BODY_SUFFIX">Суфікс</text>
+ <text id="IDS_COM_POP_UNKNOWN">Невідомо</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Обране</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Редагувати групи</text>
+ <text id="IDS_COM_SK_SAVE">Зберегти</text>
+ <text id="IDS_PB_BODY_PROVINCE">Провінція</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Надіслати візитівку</text>
+ <text id="IDS_COM_POP_ADDED">Додано</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Відеовиклик</text>
+ <text id="IDS_PB_BODY_HOME">Домашній</text>
+ <text id="IDS_PB_BODY_NOTE">Нотатка</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Установки контакту</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Порядок відображення імен</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Видалення контактів...</text>
+ <text id="IDS_PB_BODY_STREET">Вулиця</text>
+ <text id="IDS_PB_BODY_NUMBER">Цифри</text>
+ <text id="IDS_PB_HEADER_DETAILS">Деталі</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Робота</text>
+ <text id="IDS_COM_BODY_REMOVE">Видалити</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Поштовий індекс</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Факс (домашній)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Спочатку ім’я</text>
+ <text id="IDS_PB_BODY_DEFAULT">За замовчуванням</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Ім’я групи</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL-manzil</text>
+ <text id="IDS_PB_BODY_GROUPS">Guruhlar</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Ismi</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Yubiley</text>
+ <text id="IDS_PB_BODY_COMPANY">Kompaniya</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Lavozim nomi</text>
+ <text id="IDS_COM_POP_CLOSE">Yopish</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Barchasini tanlash</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Tanlanganlarga qo‘shish</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Xabar</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Familiya</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Kontaktni saqla</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobil telefon (ish)</text>
+ <text id="IDS_COM_SK_NEW">Yangi</text>
+ <text id="IDS_PB_SK_CANCEL">Bekor q.</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Otasining ismi</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Asosiy e-pochta sifatida belgilash</text>
+ <text id="IDS_PB_BODY_OTHER">Boshqa</text>
+ <text id="IDS_COM_POP_REMOVED">Olib tashlandi</text>
+ <text id="IDS_COM_POP_SUCCESS">Muvaffaqiyat</text>
+ <text id="IDS_PB_BODY_COUNTRY">Mamlakat</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Tug‘ilgan kun</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Barcha kontaktlar</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Tayinlanmagan</text>
+ <text id="IDS_COM_SK_DONE">Bajarildi</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobil</text>
+ <text id="IDS_COM_BODY_EMAIL">E-pochta</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Guruh tanlang</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">A’zo qo‘sh</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Kontaktlar yo‘q</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Rasmni olib tashlash</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Avval familiya</text>
+ <text id="IDS_PB_OPT_VIEW">Ko‘rib chiqish</text>
+ <text id="IDS_PB_BODY_WORK">Ish</text>
+ <text id="IDS_COM_SK_EDIT">Tahrirl.</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Guruh mavjud emas</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Noto‘g‘ri e-pochta manzili</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Kontaktlarga qo‘shish</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Birlam. o'rn. raqam sifatida belgilash</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Boshqa ma’lumotlar</text>
+ <text id="IDS_COM_POP_SELECTED">Tanlangan</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Bo‘sh</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Suratga olish</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Yangi guruh</text>
+ <text id="IDS_COM_SK_DELETE">O'chirish</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faks (ish)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Rington</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Do‘stlar</text>
+ <text id="IDS_COM_BODY_COPY">Nusxa olish</text>
+ <text id="IDS_PB_BODY_ADDRESS">Manzil</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Tanlanganlar yo‘q</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontaktlar</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Kontaktlar tanlang</text>
+ <text id="IDS_PB_BODY_PAGER">Peyjer</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Oniy xabar mesenjeri (IM)</text>
+ <text id="IDS_COM_BODY_GALLERY">Galereya</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobil telefon (uy)</text>
+ <text id="IDS_COM_BODY_SEARCH">Qidirish</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Guruh nomi avvaldan ishlatilmoqda</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Oila</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nom</text>
+ <text id="IDS_PB_BODY_CITY">Shahar</text>
+ <text id="IDS_COM_BODY_CREATE">Yaratish</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Bo'lim</text>
+ <text id="IDS_PB_BODY_NICKNAME">Laqab</text>
+ <text id="IDS_COM_BODY_CALL">Qo‘ng‘iroq qilish</text>
+ <text id="IDS_PB_BODY_SUFFIX">Suffiks</text>
+ <text id="IDS_COM_POP_UNKNOWN">Noma’lum</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Tanlanganlar</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Guruhlarni tahrirlash</text>
+ <text id="IDS_COM_SK_SAVE">Saqlash</text>
+ <text id="IDS_PB_BODY_PROVINCE">Viloyat</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Tashrif kartasi yuborish</text>
+ <text id="IDS_COM_POP_ADDED">Qo‘shilgan</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Video qo‘ng‘iroq</text>
+ <text id="IDS_PB_BODY_HOME">Asosiy</text>
+ <text id="IDS_PB_BODY_NOTE">Eslatma</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Kontakt parametrlari</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Displey nomlari tartibi</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Kontaktlar o‘chirilmoqda...</text>
+ <text id="IDS_PB_BODY_STREET">Ko‘cha</text>
+ <text id="IDS_PB_BODY_NUMBER">Raqam</text>
+ <text id="IDS_PB_HEADER_DETAILS">Tafsilotlar</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">Ish</text>
+ <text id="IDS_COM_BODY_REMOVE">Olib tashlash</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Pochta indeksi</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faks (uy)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Avval ism</text>
+ <text id="IDS_PB_BODY_DEFAULT">Birlamchi</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Guruh nomi</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">网址</text>
+ <text id="IDS_PB_BODY_GROUPS">分组</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">名字</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">纪念日</text>
+ <text id="IDS_PB_BODY_COMPANY">公司</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">职位</text>
+ <text id="IDS_COM_POP_CLOSE">关闭</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">全选</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">添加至收藏</text>
+ <text id="IDS_PB_BODY_PHONE">手机</text>
+ <text id="IDS_COM_BODY_MESSAGE">信息</text>
+ <text id="IDS_PB_BODY_LAST_NAME">姓氏</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">储存联系人到</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">手机(工作)</text>
+ <text id="IDS_COM_SK_NEW">新建</text>
+ <text id="IDS_PB_SK_CANCEL">取消</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">中间名</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">标记为默认电子邮件</text>
+ <text id="IDS_PB_BODY_OTHER">其他</text>
+ <text id="IDS_COM_POP_REMOVED">已移除</text>
+ <text id="IDS_COM_POP_SUCCESS">成功</text>
+ <text id="IDS_PB_BODY_COUNTRY">国家</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">生日</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">全部联系人</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">未分配</text>
+ <text id="IDS_COM_SK_DONE">完成</text>
+ <text id="IDS_PB_BODY_MOBILE">手机</text>
+ <text id="IDS_COM_BODY_EMAIL">电子邮件</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">选择群组</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">添加成员</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">没有联系人</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">移除照片</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">姓</text>
+ <text id="IDS_PB_OPT_VIEW">查看</text>
+ <text id="IDS_PB_BODY_WORK">工作</text>
+ <text id="IDS_COM_SK_EDIT">编辑</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">无群组</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">电子邮件地址无效</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">添加到联系人</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">标记为默认号码</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">更多信息</text>
+ <text id="IDS_COM_POP_SELECTED">已选择</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">空</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">拍照</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">新分组</text>
+ <text id="IDS_COM_SK_DELETE">删除</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">传真(工作)</text>
+ <text id="IDS_PB_BODY_RINGTONE">铃声</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">好友</text>
+ <text id="IDS_COM_BODY_COPY">复制</text>
+ <text id="IDS_PB_BODY_ADDRESS">地址</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">没有收藏</text>
+ <text id="IDS_COM_BODY_CONTACTS">联系人</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">选择联系人</text>
+ <text id="IDS_PB_BODY_PAGER">寻呼机</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">IM</text>
+ <text id="IDS_COM_BODY_GALLERY">图库</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">手机(家庭)</text>
+ <text id="IDS_COM_BODY_SEARCH">搜索</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">群组名称已使用</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">家人</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">名称</text>
+ <text id="IDS_PB_BODY_CITY">城市</text>
+ <text id="IDS_COM_BODY_CREATE">新建</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">部门</text>
+ <text id="IDS_PB_BODY_NICKNAME">昵称</text>
+ <text id="IDS_COM_BODY_CALL">通话</text>
+ <text id="IDS_PB_BODY_SUFFIX">后缀</text>
+ <text id="IDS_COM_POP_UNKNOWN">未知</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">收藏</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">编辑分组</text>
+ <text id="IDS_COM_SK_SAVE">保存</text>
+ <text id="IDS_PB_BODY_PROVINCE">省</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">发送名片</text>
+ <text id="IDS_COM_POP_ADDED">已添加</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">视频通话</text>
+ <text id="IDS_PB_BODY_HOME">家庭</text>
+ <text id="IDS_PB_BODY_NOTE">注释</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">联系人设置</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">姓名显示顺序</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">正在删除联系人…</text>
+ <text id="IDS_PB_BODY_STREET">街道</text>
+ <text id="IDS_PB_BODY_NUMBER">号码</text>
+ <text id="IDS_PB_HEADER_DETAILS">详情</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">工作</text>
+ <text id="IDS_COM_BODY_REMOVE">移除</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">邮编</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">传真(家庭)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">首先是名字</text>
+ <text id="IDS_PB_BODY_DEFAULT">默认</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">群组名称</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">網址</text>
+ <text id="IDS_PB_BODY_GROUPS">群組</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">名字</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">週年</text>
+ <text id="IDS_PB_BODY_COMPANY">公司</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">職稱</text>
+ <text id="IDS_COM_POP_CLOSE">關閉</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">選擇全部</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">加到我的最愛</text>
+ <text id="IDS_PB_BODY_PHONE">電話</text>
+ <text id="IDS_COM_BODY_MESSAGE">訊息</text>
+ <text id="IDS_PB_BODY_LAST_NAME">姓氏</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">儲存聯絡人到</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">手機(工作)</text>
+ <text id="IDS_COM_SK_NEW">新增</text>
+ <text id="IDS_PB_SK_CANCEL">取消</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">中間名</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">標記為預設電子郵件</text>
+ <text id="IDS_PB_BODY_OTHER">其他</text>
+ <text id="IDS_COM_POP_REMOVED">已移除</text>
+ <text id="IDS_COM_POP_SUCCESS">成功</text>
+ <text id="IDS_PB_BODY_COUNTRY">國家</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">生日</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">全部聯絡人</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">無指定</text>
+ <text id="IDS_COM_SK_DONE">完成</text>
+ <text id="IDS_PB_BODY_MOBILE">手機</text>
+ <text id="IDS_COM_BODY_EMAIL">電子郵件</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">選擇群組</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">加入成員</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">無聯絡人</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">移除相片</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">姓氏在前</text>
+ <text id="IDS_PB_OPT_VIEW">檢視</text>
+ <text id="IDS_PB_BODY_WORK">工作</text>
+ <text id="IDS_COM_SK_EDIT">編輯</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">無群組</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">無效電子郵件地址</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">加到聯絡人</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">標記為預設號碼</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">更多資料</text>
+ <text id="IDS_COM_POP_SELECTED">已選擇</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">空白</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">拍照</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">新增群組</text>
+ <text id="IDS_COM_SK_DELETE">刪除</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">傳真(工作)</text>
+ <text id="IDS_PB_BODY_RINGTONE">鈴聲</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">朋友</text>
+ <text id="IDS_COM_BODY_COPY">複製</text>
+ <text id="IDS_PB_BODY_ADDRESS">地址</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">無我的最愛</text>
+ <text id="IDS_COM_BODY_CONTACTS">聯絡人</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">選擇聯絡人</text>
+ <text id="IDS_PB_BODY_PAGER">傳呼機</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">即時訊息</text>
+ <text id="IDS_COM_BODY_GALLERY">媒體瀏覽器</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">手機(住家)</text>
+ <text id="IDS_COM_BODY_SEARCH">搜尋</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">群組名稱已存在</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">家人</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">名稱</text>
+ <text id="IDS_PB_BODY_CITY">城市</text>
+ <text id="IDS_COM_BODY_CREATE">建立</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">部門</text>
+ <text id="IDS_PB_BODY_NICKNAME">暱稱</text>
+ <text id="IDS_COM_BODY_CALL">通話</text>
+ <text id="IDS_PB_BODY_SUFFIX">字尾</text>
+ <text id="IDS_COM_POP_UNKNOWN">未知</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">我的最愛</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">編輯群組</text>
+ <text id="IDS_COM_SK_SAVE">儲存</text>
+ <text id="IDS_PB_BODY_PROVINCE">省</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">發送名片</text>
+ <text id="IDS_COM_POP_ADDED">已加入</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">視像通話</text>
+ <text id="IDS_PB_BODY_HOME">住家</text>
+ <text id="IDS_PB_BODY_NOTE">記事本</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">聯絡人設定</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">顯示名稱次序</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">正在刪除聯絡人...</text>
+ <text id="IDS_PB_BODY_STREET">街道</text>
+ <text id="IDS_PB_BODY_NUMBER">號碼</text>
+ <text id="IDS_PB_HEADER_DETAILS">詳細資料</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">工作</text>
+ <text id="IDS_COM_BODY_REMOVE">移除</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">郵政編號</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">傳真(住家)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">先顯示名字</text>
+ <text id="IDS_PB_BODY_DEFAULT">預設</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">群組名稱</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">网址</text>
+ <text id="IDS_PB_BODY_GROUPS">群组</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">名字</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">纪念日</text>
+ <text id="IDS_PB_BODY_COMPANY">公司</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">职位</text>
+ <text id="IDS_COM_POP_CLOSE">关闭</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">全选</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">添加到收藏</text>
+ <text id="IDS_PB_BODY_PHONE">手机</text>
+ <text id="IDS_COM_BODY_MESSAGE">讯息</text>
+ <text id="IDS_PB_BODY_LAST_NAME">姓氏</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">储存联系人到</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">手机(工作)</text>
+ <text id="IDS_COM_SK_NEW">新建</text>
+ <text id="IDS_PB_SK_CANCEL">取消</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">中间名</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">标记为默认电子邮件</text>
+ <text id="IDS_PB_BODY_OTHER">其他</text>
+ <text id="IDS_COM_POP_REMOVED">已移除</text>
+ <text id="IDS_COM_POP_SUCCESS">成功</text>
+ <text id="IDS_PB_BODY_COUNTRY">国家</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">生日</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">全部联系人</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">未分配</text>
+ <text id="IDS_COM_SK_DONE">已完成</text>
+ <text id="IDS_PB_BODY_MOBILE">手机</text>
+ <text id="IDS_COM_BODY_EMAIL">电邮</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">选择组群</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">添加成员</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">无联系人</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">移除照片</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">姓</text>
+ <text id="IDS_PB_OPT_VIEW">查看</text>
+ <text id="IDS_PB_BODY_WORK">工作</text>
+ <text id="IDS_COM_SK_EDIT">编辑</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">无群组</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">无效电子邮件地址</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">添加到联系人</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">标记为默认号码</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">更多信息</text>
+ <text id="IDS_COM_POP_SELECTED">已选择</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">空白</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">拍照</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">新群组</text>
+ <text id="IDS_COM_SK_DELETE">删除</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">传真(工作)</text>
+ <text id="IDS_PB_BODY_RINGTONE">铃声</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">朋友</text>
+ <text id="IDS_COM_BODY_COPY">复制</text>
+ <text id="IDS_PB_BODY_ADDRESS">地址</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">没有收藏夹</text>
+ <text id="IDS_COM_BODY_CONTACTS">联系人</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">选择联系人</text>
+ <text id="IDS_PB_BODY_PAGER">寻呼机</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">即时通讯</text>
+ <text id="IDS_COM_BODY_GALLERY">画廊</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">手机(家庭)</text>
+ <text id="IDS_COM_BODY_SEARCH">搜寻</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">群组名称已使用</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">家人</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">名称</text>
+ <text id="IDS_PB_BODY_CITY">城市</text>
+ <text id="IDS_COM_BODY_CREATE">创建</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">部门</text>
+ <text id="IDS_PB_BODY_NICKNAME">绰号</text>
+ <text id="IDS_COM_BODY_CALL">通话</text>
+ <text id="IDS_PB_BODY_SUFFIX">后缀</text>
+ <text id="IDS_COM_POP_UNKNOWN">未知</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">收藏</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">编辑分组</text>
+ <text id="IDS_COM_SK_SAVE">储存</text>
+ <text id="IDS_PB_BODY_PROVINCE">省</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">发送名片</text>
+ <text id="IDS_COM_POP_ADDED">已添加</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">视像通话</text>
+ <text id="IDS_PB_BODY_HOME">首页</text>
+ <text id="IDS_PB_BODY_NOTE">附注</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">联系人设置</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">显示名称顺序</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">正在删除联系人…</text>
+ <text id="IDS_PB_BODY_STREET">街道</text>
+ <text id="IDS_PB_BODY_NUMBER">号码</text>
+ <text id="IDS_PB_HEADER_DETAILS">详细内容</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">工作</text>
+ <text id="IDS_COM_BODY_REMOVE">移除</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">邮编</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">传真(家庭)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">首先是名字</text>
+ <text id="IDS_PB_BODY_DEFAULT">默认</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">群组名称</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.
+-->
+<string_table Bversion="3.0.0.201301221116" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">群組</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">名字</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">週年紀念日</text>
+ <text id="IDS_PB_BODY_COMPANY">公司</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">職稱</text>
+ <text id="IDS_COM_POP_CLOSE">關閉</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">全選</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">加到我的最愛</text>
+ <text id="IDS_PB_BODY_PHONE">電話</text>
+ <text id="IDS_COM_BODY_MESSAGE">訊息</text>
+ <text id="IDS_PB_BODY_LAST_NAME">姓氏</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">儲存聯絡人到</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">手機(工作)</text>
+ <text id="IDS_COM_SK_NEW">新增</text>
+ <text id="IDS_PB_SK_CANCEL">取消</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">中間名</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">標記為預設的電子郵件</text>
+ <text id="IDS_PB_BODY_OTHER">其他</text>
+ <text id="IDS_COM_POP_REMOVED">已移除</text>
+ <text id="IDS_COM_POP_SUCCESS">成功</text>
+ <text id="IDS_PB_BODY_COUNTRY">國家</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">生日</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">全部聯絡人</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">未指定</text>
+ <text id="IDS_COM_SK_DONE">完成</text>
+ <text id="IDS_PB_BODY_MOBILE">行動裝置</text>
+ <text id="IDS_COM_BODY_EMAIL">電子郵件</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">選擇群組</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">新增成員</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">無聯絡人</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">刪除照片</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">姓氏在前</text>
+ <text id="IDS_PB_OPT_VIEW">檢視</text>
+ <text id="IDS_PB_BODY_WORK">公司</text>
+ <text id="IDS_COM_SK_EDIT">編輯</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">無群組</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">電子郵件地址無效</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">新增至聯絡人</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">標記為預設號碼</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">更多資訊</text>
+ <text id="IDS_COM_POP_SELECTED">已選擇</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">空白</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">拍照</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">新增群組</text>
+ <text id="IDS_COM_SK_DELETE">刪除</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">傳真(工作)</text>
+ <text id="IDS_PB_BODY_RINGTONE">鈴聲</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">朋友</text>
+ <text id="IDS_COM_BODY_COPY">複製</text>
+ <text id="IDS_PB_BODY_ADDRESS">地址</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">無我的最愛</text>
+ <text id="IDS_COM_BODY_CONTACTS">聯絡人</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">選擇聯絡人</text>
+ <text id="IDS_PB_BODY_PAGER">呼叫器</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">即時通訊</text>
+ <text id="IDS_COM_BODY_GALLERY">媒體瀏覽器</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">手機(住家)</text>
+ <text id="IDS_COM_BODY_SEARCH">搜尋</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">群組名稱已在使用中</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">家庭</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">名稱</text>
+ <text id="IDS_PB_BODY_CITY">城市</text>
+ <text id="IDS_COM_BODY_CREATE">建立</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">部門</text>
+ <text id="IDS_PB_BODY_NICKNAME">暱稱</text>
+ <text id="IDS_COM_BODY_CALL">通話</text>
+ <text id="IDS_PB_BODY_SUFFIX">稱謂</text>
+ <text id="IDS_COM_POP_UNKNOWN">未知</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">我的最愛</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">編輯群組</text>
+ <text id="IDS_COM_SK_SAVE">儲存</text>
+ <text id="IDS_PB_BODY_PROVINCE">省</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">傳送名片</text>
+ <text id="IDS_COM_POP_ADDED">已新增</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">視訊通話</text>
+ <text id="IDS_PB_BODY_HOME">住家</text>
+ <text id="IDS_PB_BODY_NOTE">備註</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">聯絡人設定</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">顯示名稱順序</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">正在刪除聯絡人...</text>
+ <text id="IDS_PB_BODY_STREET">街道</text>
+ <text id="IDS_PB_BODY_NUMBER">號碼</text>
+ <text id="IDS_PB_HEADER_DETAILS">詳細資料</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_WORK">工作</text>
+ <text id="IDS_COM_BODY_REMOVE">移除</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">郵政編碼</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">傳真(住家)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">先顯示名字</text>
+ <text id="IDS_PB_BODY_DEFAULT">預設</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">群組名稱</text>
+</string_table>
--- /dev/null
+dummy
\ No newline at end of file
--- /dev/null
+dummy
\ 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 CtAccountListItemProvider.cpp
+ * @brief This is the implementation file for the AccountListItemProvider class.
+ */
+
+#include "CtAccountListItemProvider.h"
+#include "CtContactListPresentationModel.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui::Controls;
+
+static const int H_ITEM = 112;
+
+AccountListItemProvider::AccountListItemProvider(Tizen::Ui::Controls::ListView* pAccountListView, ContactListPresentationModel* pContactListPresentationModel)
+: __pAccountListView(pAccountListView)
+, __pContactListPresentationModel(pContactListPresentationModel)
+{
+}
+
+AccountListItemProvider::~AccountListItemProvider(void)
+{
+}
+
+Tizen::Ui::Controls::ListItemBase*
+AccountListItemProvider::CreateItem(int index, int itemWidth)
+{
+ SimpleItem* pItem = null;
+ String addressbookName(__pContactListPresentationModel->GetAddressbookName(index));
+
+ pItem = new (std::nothrow) SimpleItem();
+ pItem->Construct(Dimension(itemWidth, H_ITEM), LIST_ANNEX_STYLE_RADIO);
+ pItem->SetElement(addressbookName);
+
+ if (addressbookName.Equals(__pContactListPresentationModel->GetCurrentAddressbook()))
+ {
+ __pAccountListView->SetItemChecked(index, true);
+ }
+
+ return pItem;
+}
+
+bool
+AccountListItemProvider::DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+int
+AccountListItemProvider::GetItemCount(void)
+{
+ return __pContactListPresentationModel->GetAddressbookCount();
+}
--- /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 CtContactDetailsForm.cpp
+ * @brief This is the implementation file for the ContactDetailsForm class.
+ */
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FMedia.h>
+#include <FSocial.h>
+#include "CtContactDetailsForm.h"
+#include "CtContactPresentationModel.h"
+#include "CtContactValueListItemProvider.h"
+#include "CtContactsApp.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtTypes.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::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Social;
+
+static const int IDA_FOOTER_EDIT = 10;
+static const int IDA_FOOTER_DELETE = 11;
+static const int IDA_FOOTER_MORE = 12;
+static const int IDA_FOOTER_ADD = 13;
+static const int IDA_VOICE_CALL = 20;
+static const int IDA_MESSAGE = 21;
+static const int IDA_VIDEO_CALL = 22;
+static const int IDA_CONTEXTMENU_SHARE_EMAIL = 30;
+static const int IDA_CONTEXTMENU_SHARE_MESSAGE = 31;
+static const int IDA_BUTTON_RINGTONE_CLEAR = 40;
+static const int IDA_BUTTON_SHARE_NAME_CARD = 50;
+static const int IDA_POPUP_CLOSE = 60;
+static const int IDA_MORE_DEFAULT_NUMBER = 70;
+
+static const wchar_t* IDB_DETAILS_FAVORITE_ON = L"C02_icon_favorite_on.png";
+static const wchar_t* IDB_DETAILS_FAVORITE_OFF = L"C02_icon_favorite.png";
+static const wchar_t* IDB_DETAILS_RESET_NORMAL = L"00_button_refresh.png";
+static const wchar_t* IDB_DETAILS_RESET_PRESSED = L"00_button_refresh_press.png";
+static const wchar_t* IDB_CIRCLE_BUTTON_NORMAL = L"C02_circle_button.png";
+static const wchar_t* IDB_CIRCLE_BUTTON_PRESSED = L"C02_circle_button_press.png";
+static const wchar_t* IDB_CALL_NORMAL = L"C02_circle_icon_call.png";
+static const wchar_t* IDB_CALL_PRESSED = L"C02_circle_icon_call_press.png";
+static const wchar_t* IDB_SMS_NORMAL = L"C02_circle_icon_sms.png";
+static const wchar_t* IDB_SMS_PRESSED = L"C02_circle_icon_sms_press.png";
+static const wchar_t* IDB_VIDEO_CALL_NORMAL = L"C02_circle_icon_vt-call.png";
+static const wchar_t* IDB_VIDEO_CALL_PRESSED = L"C02_circle_icon_vt-call_press.png";
+static const wchar_t* IDB_MORE_NORMAL = L"00_icon_more.png";
+static const wchar_t* IDB_MORE_PRESSED = L"00_icon_more_press.png";
+
+static const wchar_t* FAVORITE_LABEL = L"FavoriteLabel";
+
+static const int Y_THUMBNAIL = 50;
+static const int H_THUMBNAIL = 360;
+static const int X_MAIN_INFO = 26;
+static const int H_NAME = 60;
+static const int H_NAME_DIVIDER = 10;
+static const int H_SUB_INFO = 40;
+static const int H_SUB_INFO_DIVIDER = 6;
+static const int H_DEFAULT_NUMBER = 50;
+static const int H_QUICK_BUTTON_DIVIDER = 42;
+#if __SUPPORT_VIDEO_CALL
+static const int W_QUICK_BUTTON_GAP = 115;
+static const int X_QUICK_BUTTON = 38;
+#else
+static const int W_QUICK_BUTTON_GAP = 148;
+static const int X_QUICK_BUTTON = 148;
+#endif
+static const int H_QUICK_BUTTON = 138;
+static const int H_FAVORITE = 38;
+static const int W_FAVORITE_GAP = 16;
+
+static const int H_IM_TITLE = 46;
+static const int W_GROUP_STYLE_MARGIN = 16;
+
+static const int W_TEXT_MARGIN = 26;
+static const int W_TYPE = 160;
+static const int H_ITEM = 112;
+static const int H_ITEM_DOUBLE_LINE = 140;
+static const int Y_ITEM_TITLE = 22;
+static const int H_ITEM_TITLE = 42;
+static const int H_ITEM_VALUE = 54;
+static const int H_ICON = 74;
+static const int Y_BUTTON = 20;
+static const int H_BUTTON = 72;
+static const int H_BUTTON_CONTAINER = 132;
+static const int W_BUTTON_GAP = 18;
+
+static const int W_POPUP = 720;
+static const int H_POPUP = 700;
+static const int H_POPUP_LIST_VIEW = 506;
+static const int Y_POPUP_BUTTON = 526;
+static const int H_POPUP_BUTTON = 74;
+static const int W_POPUP_BUTTON = 394;
+static const int X_MORE = 55;
+
+static const int SUB_INDEX_MASK = 0xF000;
+
+static const unsigned int COLOR_TABLE_BG = Color32<248, 246, 239>::Value;
+static const unsigned int COLOR_ITEM_TITLE = Color32<128, 128, 128>::Value;
+static const unsigned int COLOR_ITEM_VALUE = Color32<0, 0, 0>::Value;
+static const unsigned int COLOR_ITEM_TYPE = Color32<59, 115, 182>::Value;
+static const unsigned int COLOR_OTHER_NUMBER = Color32<87, 85, 80>::Value;
+static const unsigned int COLOR_NAME = Color32<59, 115, 182>::Value;
+static const unsigned int COLOR_GROUP_STYLE = Color32<240, 237, 232>::Value;
+
+static const int FONT_SIZE_NAME = 53;
+static const int FONT_SIZE_SUB_INFO = 32;
+static const int FONT_SIZE_MAIN_TEXT = 44;
+static const int FONT_SIZE_SUB_TEXT = 32;
+
+static const wchar_t* INPUT_KEY_TYPE = L"type";
+static const wchar_t* INPUT_KEY_TEL = L"tel";
+static const wchar_t* INPUT_KEY_TO = L"to";
+static const wchar_t* INPUT_KEY_SELECTION_TYPE = L"selectionType";
+static const wchar_t* INPUT_TYPE_VIDEO = L"video";
+static const wchar_t* INPUT_TYPE_VOICE = L"voice";
+static const wchar_t* INPUT_TYPE_SMS = L"SMS";
+static const wchar_t* INPUT_TYPE_MMS = L"MMS";
+static const wchar_t* INPUT_TYPE_AUDIO = L"audio";
+static const wchar_t* RESULT_KEY_PATH = L"path";
+static const wchar_t* SELECTION_TYPE_SINGLE = L"single";
+static const wchar_t* KEY_VIEW_TYPE = L"viewType";
+static const wchar_t* KEY_VIEW_TYPE_VCF = L"path";
+static const wchar_t* KEY_VIEW_TYPE_CONTACT_ID = L"contactId";
+static const wchar_t* VALUE_VIEW_TYPE_VCF = L"vcf";
+static const wchar_t* VALUE_VIEW_TYPE_CONTACT = L"contact";
+
+ContactDetailsForm::ContactDetailsForm(void)
+: __pTableView(null)
+, __pContextMenuCall(null)
+, __pContextMenuShare(null)
+, __pContextMenuMore(null)
+, __pDefaultSelectorPopup(null)
+, __pItemList(null)
+, __pPresentationModel(null)
+, __scrolledDistance(0)
+{
+}
+
+ContactDetailsForm::~ContactDetailsForm(void)
+{
+}
+
+void
+ContactDetailsForm::Initialize(void)
+{
+ Construct(L"IDL_CONTACT_DETAILS_FORM");
+}
+
+result
+ContactDetailsForm::OnInitializing(void)
+{
+ Footer* pFooter = GetFooter();
+ pFooter->AddActionEventListener(*this);
+ SetFormBackEventListener(this);
+
+ __pTableView = new (std::nothrow) TableView();
+ __pTableView->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height), true, TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT);
+ __pTableView->SetItemProvider(this);
+ __pTableView->AddTableViewItemEventListener(*this);
+ __pTableView->SetBackgroundColor(COLOR_TABLE_BG);
+ __pTableView->AddTouchEventListener(*this);
+ __pTableView->AddScrollEventListener(*this);
+ AddControl(*__pTableView);
+
+ __pContextMenuCall = new (std::nothrow) ContextMenu();
+ __pContextMenuCall->Construct(Point(0, 0), CONTEXT_MENU_STYLE_LIST);
+ __pContextMenuCall->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_CALL"), IDA_VOICE_CALL);
+ __pContextMenuCall->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_MESSAGE"), IDA_MESSAGE);
+#if __SUPPORT_VIDEO_CALL
+ __pContextMenuCall->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_VIDEO_CALL"), IDA_VIDEO_CALL);
+#endif
+ __pContextMenuCall->AddActionEventListener(*this);
+
+ __pContextMenuShare = new (std::nothrow) ContextMenu();
+ __pContextMenuShare->Construct(Point(0, 0), CONTEXT_MENU_STYLE_LIST);
+ __pContextMenuShare->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_EMAIL"), IDA_CONTEXTMENU_SHARE_EMAIL);
+ __pContextMenuShare->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_MESSAGE"), IDA_CONTEXTMENU_SHARE_MESSAGE);
+ __pContextMenuShare->AddActionEventListener(*this);
+
+ __pContextMenuMore = new (std::nothrow) ContextMenu();
+ __pContextMenuMore->Construct(Point(X_MORE, GetClientAreaBounds().y + GetClientAreaBounds().height), CONTEXT_MENU_STYLE_LIST);
+ __pContextMenuMore->AddItem(ResourceManager::GetString(L"IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"), IDA_MORE_DEFAULT_NUMBER);
+ __pContextMenuMore->AddActionEventListener(*this);
+
+ __pItemList = new (std::nothrow) ArrayListT<int>();
+ __pItemList->Construct();
+
+ __pPresentationModel = new (std::nothrow) ContactPresentationModel();
+ __pPresentationModel->Construct();
+ __pPresentationModel->AddContactChangeListener(*this);
+
+ return E_SUCCESS;
+}
+
+result
+ContactDetailsForm::OnTerminating(void)
+{
+ delete __pContextMenuCall;
+ delete __pContextMenuShare;
+ delete __pContextMenuMore;
+
+ if (__pItemList != null)
+ {
+ __pItemList->RemoveAll();
+ delete __pItemList;
+ }
+
+ if (__pPresentationModel != null)
+ {
+ __pPresentationModel->RemoveContactChangeListener(*this);
+ delete __pPresentationModel;
+ }
+
+ delete __pDefaultSelectorPopup;
+
+ return E_SUCCESS;
+}
+
+void
+ContactDetailsForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ result r = E_SUCCESS;
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ switch (actionId)
+ {
+ case IDA_FOOTER_EDIT:
+ {
+ ArrayList* pList = new (std::nothrow) ArrayList();
+ pList->Construct();
+ pList->Add(*(new (std::nothrow) Integer(__pPresentationModel->GetContactId())));
+ r = pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pList);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go forward", GetErrorMessage(r));
+ }
+ break;
+ case IDA_FOOTER_DELETE:
+ {
+ int modalResult = 0;
+ MessageBox deleteMessageBox;
+ deleteMessageBox.Construct(L"", ResourceManager::GetString(L"IDS_COM_SK_DELETE") + L"?", MSGBOX_STYLE_YESNO);
+ deleteMessageBox.ShowAndWait(modalResult);
+
+ if (modalResult == MSGBOX_RESULT_YES)
+ {
+
+ r = __pPresentationModel->RemoveContact();
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to remove contact", GetErrorMessage(r));
+
+ if (__appControlViewType.IsEmpty() == true)
+ {
+ r = pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_CONTACT_LIST, SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go backward", GetErrorMessage(r));
+ }
+ else
+ {
+ UiApp::GetInstance()->Terminate();
+ }
+ }
+ }
+ break;
+ case IDA_FOOTER_MORE:
+ {
+ __pContextMenuMore->SetShowState(true);
+ __pContextMenuMore->Show();
+ }
+ break;
+ case IDA_FOOTER_ADD:
+ {
+ ArrayList* pList = new (std::nothrow) ArrayList();
+ pList->Construct();
+ pList->Add(*(new (std::nothrow) Integer(INVALID_RECORD_ID)));
+ pList->Add(*(new (std::nothrow) String(__pPresentationModel->GetVcfPath())));
+ r = pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pList);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go forward", GetErrorMessage(r));
+ }
+ break;
+ case IDA_MORE_DEFAULT_NUMBER:
+ {
+ ShowDefaultSelectorPopup();
+ }
+ break;
+ case IDA_BUTTON_RINGTONE_CLEAR:
+ {
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_RINGTONE, String());
+ __pPresentationModel->UpdateContact();
+ __pTableView->UpdateTableView();
+ }
+ break;
+ case IDA_VOICE_CALL:
+ {
+ r = LaunchAppControl(PROVIDER_ID_PHONE, OPERATION_ID_CALL, INPUT_TYPE_VOICE, source.GetName());
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to launch appcontrol", GetErrorMessage(r));
+ }
+ break;
+ case IDA_MESSAGE:
+ {
+ r = LaunchAppControl(PROVIDER_ID_MESSAGE, OPERATION_ID_COMPOSE, INPUT_TYPE_SMS, source.GetName());
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to launch appcontrol", GetErrorMessage(r));
+ }
+ break;
+ case IDA_VIDEO_CALL:
+ {
+ r = LaunchAppControl(PROVIDER_ID_PHONE, OPERATION_ID_CALL, INPUT_TYPE_VIDEO, source.GetName());
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to launch appcontrol", GetErrorMessage(r));
+ }
+ break;
+ case IDA_CONTEXTMENU_SHARE_EMAIL:
+ {
+ r = LaunchAppControl(PROVIDER_ID_EMAIL, OPERATION_ID_COMPOSE);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to launch appcontrol", GetErrorMessage(r));
+ }
+ break;
+ case IDA_CONTEXTMENU_SHARE_MESSAGE:
+ {
+ r = LaunchAppControl(PROVIDER_ID_MESSAGE, OPERATION_ID_COMPOSE, INPUT_TYPE_MMS);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to launch appcontrol", GetErrorMessage(r));
+ }
+ break;
+ case IDA_BUTTON_SHARE_NAME_CARD:
+ {
+ Point itemPoint;
+ itemPoint.x = GetClientAreaBounds().width / 2;
+ itemPoint.y = 0;
+
+ TableViewItem* pParent = static_cast<TableViewItem*>(source.GetParent());
+ if (pParent != null)
+ {
+ itemPoint.y = GetClientAreaBounds().y + pParent->GetY() + source.GetY() - __scrolledDistance;
+ }
+
+ __pContextMenuShare->SetAnchorPosition(itemPoint);
+ __pContextMenuShare->SetShowState(true);
+ __pContextMenuShare->Show();
+ }
+ break;
+ case IDA_POPUP_CLOSE:
+ {
+ HideDefaultSelectorPopup();
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+ContactDetailsForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
+{
+ if (__appControlViewType.IsEmpty() == false)
+ {
+ UiApp* pApp = UiApp::GetInstance();
+ pApp->Terminate();
+ }
+ else
+ {
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ result r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go backward", GetErrorMessage(r));
+ }
+}
+
+void
+ContactDetailsForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, IList* pArgs)
+{
+ if (pArgs == null)
+ {
+ return;
+ }
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ TryReturnVoid(pContactsApp != null, "Unable to cast UiApp to ContactsApp");
+
+ if (previousSceneId == IDSCN_GROUP_SELECTOR)
+ {
+ Integer* pArgument = null;
+ __pPresentationModel->RemoveContactFromAllCategories();
+ IEnumerator* pEnum = pArgs->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pArgument = static_cast<Integer*>(pEnum->GetCurrent());
+ if (pArgument != null)
+ {
+ __pPresentationModel->AddContactToCategory(pArgument->ToInt());
+ }
+ }
+ delete pEnum;
+ }
+ else
+ {
+ if (pContactsApp->GetOperationId() == OPERATION_ID_VIEW)
+ {
+ result r = InitializeAppControl(pArgs);
+
+ if (IsFailed(r))
+ {
+ pArgs->RemoveAll(true);
+ delete pArgs;
+ AppLogDebug("Unable to initialize appcontrol");
+ UiApp::GetInstance()->Terminate();
+
+ return;
+ }
+
+ InitializeDetailItemList();
+ }
+ else
+ {
+ Integer* pContactId = static_cast<Integer*>(pArgs->GetAt(0));
+ if (pContactId != null)
+ {
+ __pPresentationModel->SetContactId(pContactId->ToInt());
+ InitializeDetailItemList();
+ }
+ }
+ }
+
+ pArgs->RemoveAll(true);
+ delete pArgs;
+}
+
+result
+ContactDetailsForm::InitializeAppControl(Tizen::Base::Collection::IList* pArgs)
+{
+ if (pArgs == null)
+ {
+ return E_FAILURE;
+ }
+
+ result r = E_SUCCESS;
+
+ String* pArgStringType = null;
+ String* pArgStringValue = null;
+ String keyViewType;
+ String keyValue;
+ String valueViewType;
+ String value;
+
+ pArgStringType = static_cast<String*>(pArgs->GetAt(0));
+ pArgStringValue = static_cast<String*>(pArgs->GetAt(1));
+
+ TryReturn(pArgStringType != null && pArgStringValue != null, E_FAILURE, "[E_FAILURE] Unable to initialize appcontrol");
+
+ ParseAppControlArgument(*pArgStringType, keyViewType, valueViewType);
+ ParseAppControlArgument(*pArgStringValue, keyValue, value);
+
+ if (keyViewType.Equals(KEY_VIEW_TYPE, false))
+ {
+ if (valueViewType.Equals(VALUE_VIEW_TYPE_CONTACT, false))
+ {
+ if (keyValue.Equals(KEY_VIEW_TYPE_CONTACT_ID, false))
+ {
+ RecordId contactId;
+ Integer::Parse(value, contactId);
+ r = __pPresentationModel->SetContactId(contactId);
+ __appControlViewType = valueViewType;
+
+ Footer* pFooter = GetFooter();
+ pFooter->RemoveAllItems();
+
+ FooterItem footerItemEdit;
+ footerItemEdit.Construct(IDA_FOOTER_EDIT);
+ footerItemEdit.SetText(ResourceManager::GetString(L"IDS_COM_SK_EDIT"));
+ pFooter->AddItem(footerItemEdit);
+
+ FooterItem footerItemDelete;
+ footerItemDelete.Construct(IDA_FOOTER_DELETE);
+ footerItemDelete.SetText(ResourceManager::GetString(L"IDS_COM_SK_DELETE"));
+ pFooter->AddItem(footerItemDelete);
+ }
+ else
+ {
+ AppLogDebug("Invalid KEY(contactId) of AppControl[VIEW]. [%ls] has been input", keyValue.GetPointer());
+ r = E_FAILURE;
+ }
+ }
+ else if (valueViewType.Equals(VALUE_VIEW_TYPE_VCF, false))
+ {
+ if (keyValue.Equals(KEY_VIEW_TYPE_VCF, false))
+ {
+ r = __pPresentationModel->SetVcfPath(value);
+
+ __appControlViewType = valueViewType;
+ Footer* pFooter = GetFooter();
+ pFooter->RemoveAllItems();
+ pFooter->RemoveButtonAt(BUTTON_POSITION_LEFT);
+
+ FooterItem footerItemAdd;
+ footerItemAdd.Construct(IDA_FOOTER_ADD);
+ footerItemAdd.SetText(ResourceManager::GetString(L"IDS_COM_OPT_ADD_TO_CONTACTS"));
+ pFooter->AddItem(footerItemAdd);
+ }
+ else
+ {
+ AppLogDebug("Invalid KEY(path) of AppControl[VIEW]. [%ls] has been input", keyValue.GetPointer());
+ r = E_FAILURE;
+ }
+ }
+ else
+ {
+ AppLogDebug("viewType of AppControl[VIEW] should be either vcf or contact. [%ls] has been inpue", keyValue.GetPointer());
+ r = E_FAILURE;
+ }
+ }
+ else
+ {
+ AppLogDebug("Invalid KEY(viewType) of AppControl[VIEW]. [%ls] has been input", keyViewType.GetPointer());
+ r = E_FAILURE;
+ }
+
+ return r;
+}
+
+void
+ContactDetailsForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+}
+
+void
+ContactDetailsForm::InitializeDetailItemList(void)
+{
+ if (__pItemList->GetCount() > 0)
+ {
+ __pItemList->RemoveAll();
+ }
+
+ // Default area
+ __pItemList->Add(DETAIL_PROPERTY_MAIN_INFO);
+
+ // Other Phone Numbers
+ Footer* pFooter = GetFooter();
+ pFooter->RemoveButtonAt(BUTTON_POSITION_LEFT);
+ int otherNumberCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER);
+ if (otherNumberCount > 1)
+ {
+ ButtonItem footerItemMore;
+ footerItemMore.Construct(BUTTON_ITEM_STYLE_ICON, IDA_FOOTER_MORE);
+ footerItemMore.SetBackgroundBitmap(BUTTON_ITEM_STATUS_NORMAL, ResourceManager::GetBitmapN(IDB_MORE_NORMAL));
+ footerItemMore.SetBackgroundBitmap(BUTTON_ITEM_STATUS_PRESSED, ResourceManager::GetBitmapN(IDB_MORE_PRESSED));
+
+ if (__appControlViewType.Equals(VALUE_VIEW_TYPE_VCF, false) == false)
+ {
+ pFooter->SetButton(BUTTON_POSITION_LEFT, footerItemMore);
+ }
+
+ String otherNumber;
+ String otherNumberType;
+ String defaultNumber = __pPresentationModel->GetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER);
+ String defaultNumberType = __pPresentationModel->GetType(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER);
+ for (int subIndex = 0; subIndex < otherNumberCount; subIndex++)
+ {
+ //omit default number
+ otherNumber = __pPresentationModel->GetValue(DETAIL_PROPERTY_PHONE_NUMBER, subIndex);
+ otherNumberType = __pPresentationModel->GetType(DETAIL_PROPERTY_PHONE_NUMBER, subIndex);
+
+ if (otherNumber.CompareTo(defaultNumber) == 0 && otherNumberType.CompareTo(defaultNumberType) == 0)
+ {
+ continue;
+ }
+
+ __pItemList->Add(DETAIL_PROPERTY_PHONE_NUMBER + subIndex);
+ }
+ }
+
+ // Email Addresses
+ int emailCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_EMAIL);
+ if (emailCount > 0)
+ {
+ for (int subIndex = 0; subIndex < emailCount; subIndex++)
+ {
+ __pItemList->Add(DETAIL_PROPERTY_EMAIL + subIndex);
+ }
+ }
+
+ // Addresses
+ int addressCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_ADDRESS);
+ if (addressCount > 0)
+ {
+ for (int subIndex = 0; subIndex < addressCount; subIndex++)
+ {
+ __pItemList->Add(DETAIL_PROPERTY_ADDRESS + subIndex);
+ }
+ }
+
+ // IM Addresses
+ int imAddressCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_IM_ADDRESS);
+ if (imAddressCount > 0)
+ {
+ for (int subIndex = 0; subIndex < imAddressCount; subIndex++)
+ {
+ __pItemList->Add(DETAIL_PROPERTY_IM_ADDRESS + subIndex);
+ }
+ }
+
+ // Url
+ int urlCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_URL);
+ if (urlCount > 0)
+ {
+ for (int subIndex = 0; subIndex < urlCount; subIndex++)
+ {
+ __pItemList->Add(DETAIL_PROPERTY_URL + subIndex);
+ }
+ }
+
+ // Birthday
+ if (__pPresentationModel->GetValue(DETAIL_PROPERTY_BIRTHDAY).IsEmpty() == false)
+ {
+ __pItemList->Add(DETAIL_PROPERTY_BIRTHDAY);
+ }
+
+ // Note
+ if (__pPresentationModel->GetValue(DETAIL_PROPERTY_NOTE).IsEmpty() == false)
+ {
+ __pItemList->Add(DETAIL_PROPERTY_NOTE);
+ }
+
+ __pItemList->Add(DETAIL_PROPERTY_GROUP);
+ __pItemList->Add(DETAIL_PROPERTY_RINGTONE);
+
+ // Share buttons
+ //__pGroupItemList->Add(DETAIL_PROPERTY_SHARE_BUTTONS);
+}
+
+int
+ContactDetailsForm::GetItemCount(void)
+{
+ return __pItemList->GetCount();
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactDetailsForm::CreateItem(int itemIndex, int itemWidth)
+{
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+
+ int contentItemIndex = -1;
+ int itemSubIndex = -1;
+ __pItemList->GetAt(itemIndex, contentItemIndex);
+
+ switch (contentItemIndex & SUB_INDEX_MASK)
+ {
+ case DETAIL_PROPERTY_PHONE_NUMBER:
+ {
+ itemSubIndex = contentItemIndex - DETAIL_PROPERTY_PHONE_NUMBER;
+ contentItemIndex = DETAIL_PROPERTY_PHONE_NUMBER;
+ }
+ break;
+ case DETAIL_PROPERTY_EMAIL:
+ {
+ itemSubIndex = contentItemIndex - DETAIL_PROPERTY_EMAIL;
+ contentItemIndex = DETAIL_PROPERTY_EMAIL;
+ }
+ break;
+ case DETAIL_PROPERTY_IM_ADDRESS:
+ {
+ itemSubIndex = contentItemIndex - DETAIL_PROPERTY_IM_ADDRESS;
+ contentItemIndex = DETAIL_PROPERTY_IM_ADDRESS;
+ }
+ break;
+ case DETAIL_PROPERTY_ADDRESS:
+ {
+ itemSubIndex = contentItemIndex - DETAIL_PROPERTY_ADDRESS;
+ contentItemIndex = DETAIL_PROPERTY_ADDRESS;
+ }
+ break;
+ case DETAIL_PROPERTY_URL:
+ {
+ itemSubIndex = contentItemIndex - DETAIL_PROPERTY_URL;
+ contentItemIndex = DETAIL_PROPERTY_URL;
+ }
+ break;
+ default:
+ break;
+ }
+
+ switch (contentItemIndex)
+ {
+ case DETAIL_PROPERTY_MAIN_INFO:
+ {
+ AddMainInfo(itemWidth, pItem);
+ }
+ break;
+ case DETAIL_PROPERTY_PHONE_NUMBER: // fall through
+ case DETAIL_PROPERTY_EMAIL: // fall through
+ case DETAIL_PROPERTY_ADDRESS: // fall through
+ case DETAIL_PROPERTY_URL: // fall through
+ case DETAIL_PROPERTY_BIRTHDAY: // fall through
+ case DETAIL_PROPERTY_NOTE:
+ {
+ AddProperty(itemWidth, pItem, contentItemIndex, itemSubIndex);
+ }
+ break;
+ case DETAIL_PROPERTY_IM_ADDRESS:
+ {
+ AddImAddress(itemWidth, pItem, itemSubIndex);
+ }
+ break;
+ case DETAIL_PROPERTY_GROUP:
+ {
+ AddGroup(itemWidth, pItem);
+ }
+ break;
+ case DETAIL_PROPERTY_RINGTONE:
+ {
+ AddRingTone(itemWidth, pItem);
+ }
+ break;
+ default:
+ {
+ delete pItem;
+ pItem = null;
+ }
+ break;
+ }
+
+ return pItem;
+}
+
+bool
+ContactDetailsForm::DeleteItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ delete pItem;
+ return true;
+}
+
+void
+ContactDetailsForm::UpdateItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+}
+
+int
+ContactDetailsForm::GetDefaultItemHeight(void)
+{
+ return H_ITEM;
+}
+
+void
+ContactDetailsForm::AddMainInfo(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ int itemHeight = Y_THUMBNAIL;
+
+ Label* pThumbnailLabel = null;
+
+ String thumbnailPath = __pPresentationModel->GetValue(DETAIL_PROPERTY_THUMBNAIL);
+ Bitmap* pThumbnail = null;
+ ImageBuffer thumbnailImageBuffer;
+ result r = thumbnailImageBuffer.Construct(thumbnailPath);
+ if (r == E_SUCCESS)
+ {
+ pThumbnail = thumbnailImageBuffer.GetBitmapN(BITMAP_PIXEL_FORMAT_ARGB8888, BUFFER_SCALING_NONE);
+ }
+ if (pThumbnail != null)
+ {
+ pThumbnail->SetScalingQuality(BITMAP_SCALING_QUALITY_HIGH);
+ pThumbnail->Scale(Dimension(H_THUMBNAIL, H_THUMBNAIL));
+ pThumbnailLabel = new (std::nothrow) Label();
+ pThumbnailLabel->Construct(Rectangle((itemWidth - H_THUMBNAIL) / 2, Y_THUMBNAIL, H_THUMBNAIL, H_THUMBNAIL), L"");
+ pThumbnailLabel->SetBackgroundBitmap(*pThumbnail);
+ delete pThumbnail;
+
+ itemHeight += (H_THUMBNAIL + Y_THUMBNAIL);
+ }
+
+ String firstName = __pPresentationModel->GetValue(DETAIL_PROPERTY_FIRST_NAME);
+ String middleName = __pPresentationModel->GetValue(DETAIL_PROPERTY_MIDDLE_NAME);
+ String lastName = __pPresentationModel->GetValue(DETAIL_PROPERTY_LAST_NAME);
+ String nickName = __pPresentationModel->GetValue(DETAIL_PROPERTY_NICK_NAME);
+ String suffix = __pPresentationModel->GetValue(DETAIL_PROPERTY_NAME_SUFFIX);
+ String jobTitle = __pPresentationModel->GetValue(DETAIL_PROPERTY_JOB_TITLE);
+ String company = __pPresentationModel->GetValue(DETAIL_PROPERTY_COMPANY);
+ String department = __pPresentationModel->GetValue(DETAIL_PROPERTY_DEPARTMENT);
+
+ String name;
+ if (firstName.IsEmpty() == false)
+ {
+ name = firstName + CHARACTER_SPACE;
+ }
+ if (middleName.IsEmpty() == false)
+ {
+ name += (middleName + CHARACTER_SPACE);
+ }
+ if (lastName.IsEmpty() == false)
+ {
+ name += lastName;
+ }
+
+ if (name.IsEmpty())
+ {
+ if (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER))
+ {
+ name.Append(__pPresentationModel->GetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER));
+ }
+ else
+ {
+ name.Append(__pPresentationModel->GetValue(DETAIL_PROPERTY_EMAIL, 0));
+ }
+ }
+
+ String suffixNickName;
+ if (suffix.IsEmpty() == false)
+ {
+ suffixNickName = suffix + CHARACTER_SPACE;
+ }
+ if (nickName.IsEmpty() == false)
+ {
+ suffixNickName += nickName;
+ }
+
+ String companyInfo;
+ if (jobTitle.IsEmpty() == false)
+ {
+ companyInfo = jobTitle + CHARACTER_SPACE;
+ }
+ if (company.IsEmpty() == false)
+ {
+ companyInfo += company + CHARACTER_SPACE;
+ }
+ if (department.IsEmpty() == false)
+ {
+ companyInfo += department;
+ }
+
+ Label* pNameLabel = null;
+ Label* pFavoriteLabel = null;
+ if (name.IsEmpty() == false)
+ {
+ pNameLabel = new (std::nothrow) Label();
+ pNameLabel->Construct(Rectangle(X_MAIN_INFO, itemHeight, itemWidth - (X_MAIN_INFO + H_FAVORITE + W_FAVORITE_GAP * 2), H_NAME), name);
+ pNameLabel->SetTextConfig(FONT_SIZE_NAME, LABEL_TEXT_STYLE_BOLD);
+ pNameLabel->SetTextColor(COLOR_NAME);
+ pNameLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pNameLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+
+ if (__appControlViewType.Equals(VALUE_VIEW_TYPE_VCF, false) == false)
+ {
+ pFavoriteLabel = new (std::nothrow) Label();
+ pFavoriteLabel->Construct(Rectangle(itemWidth - (H_FAVORITE + W_FAVORITE_GAP * 2), itemHeight + W_FAVORITE_GAP, H_FAVORITE, H_FAVORITE), L"");
+ pFavoriteLabel->SetName(FAVORITE_LABEL);
+ pFavoriteLabel->AddTouchEventListener(*this);
+
+ Bitmap* pBitmap = null;
+ if (__pPresentationModel->IsFavorite())
+ {
+ pBitmap = ResourceManager::GetBitmapN(IDB_DETAILS_FAVORITE_ON);
+ }
+ else
+ {
+ pBitmap = ResourceManager::GetBitmapN(IDB_DETAILS_FAVORITE_OFF);
+ }
+
+ if (pBitmap != null)
+ {
+ pFavoriteLabel->SetBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+ }
+
+ itemHeight += (H_NAME + H_NAME_DIVIDER);
+ }
+
+ Label* pSuffixNickNameLabel = null;
+ if (suffixNickName.IsEmpty() == false)
+ {
+ pSuffixNickNameLabel = new (std::nothrow) Label();
+ pSuffixNickNameLabel->Construct(Rectangle(X_MAIN_INFO, itemHeight, itemWidth - X_MAIN_INFO, H_SUB_INFO), suffixNickName);
+ pSuffixNickNameLabel->SetTextConfig(FONT_SIZE_SUB_INFO, LABEL_TEXT_STYLE_NORMAL);
+ pSuffixNickNameLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pSuffixNickNameLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ itemHeight += (H_SUB_INFO + H_SUB_INFO_DIVIDER);
+ }
+
+ Label* pCompanyInfoLabel = null;
+ if (companyInfo.IsEmpty() == false)
+ {
+ pCompanyInfoLabel = new (std::nothrow) Label();
+ pCompanyInfoLabel->Construct(Rectangle(X_MAIN_INFO, itemHeight, itemWidth - X_MAIN_INFO, H_SUB_INFO), companyInfo);
+ pCompanyInfoLabel->SetTextConfig(FONT_SIZE_SUB_INFO, LABEL_TEXT_STYLE_NORMAL);
+ pCompanyInfoLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pCompanyInfoLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ itemHeight += (H_SUB_INFO + H_SUB_INFO_DIVIDER);
+ }
+
+ Label* pDefaultNumberLabel = null;
+ Button* pCallButton = null;
+ Button* pMessageButton = null;
+#if __SUPPORT_VIDEO_CALL
+ Button* pVideoCallButton = null;
+#endif
+
+ String defaultPhoneNumber = __pPresentationModel->GetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER);
+ if (defaultPhoneNumber.IsEmpty() == false)
+ {
+ pDefaultNumberLabel = new (std::nothrow) Label();
+ pDefaultNumberLabel->Construct(Rectangle(X_MAIN_INFO, itemHeight, itemWidth - X_MAIN_INFO, H_DEFAULT_NUMBER), defaultPhoneNumber);
+ pDefaultNumberLabel->SetTextConfig(FONT_SIZE_MAIN_TEXT, LABEL_TEXT_STYLE_BOLD);
+ pDefaultNumberLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pDefaultNumberLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ itemHeight += (H_DEFAULT_NUMBER + H_QUICK_BUTTON_DIVIDER);
+
+ Bitmap* pBgNormal = ResourceManager::GetBitmapN(IDB_CIRCLE_BUTTON_NORMAL);
+ Bitmap* pBgPressed = ResourceManager::GetBitmapN(IDB_CIRCLE_BUTTON_PRESSED);
+ Bitmap* pCallNormal = ResourceManager::GetBitmapN(IDB_CALL_NORMAL);
+ Bitmap* pCallPressed = ResourceManager::GetBitmapN(IDB_CALL_PRESSED);
+ Bitmap* pMessageNormal = ResourceManager::GetBitmapN(IDB_SMS_NORMAL);
+ Bitmap* pMessagePressed = ResourceManager::GetBitmapN(IDB_SMS_PRESSED);
+ Bitmap* pVideoCallNormal = ResourceManager::GetBitmapN(IDB_VIDEO_CALL_NORMAL);
+ Bitmap* pVideoCallPressed = ResourceManager::GetBitmapN(IDB_VIDEO_CALL_PRESSED);
+
+ pCallButton = new (std::nothrow) Button();
+ pCallButton->Construct(Rectangle(X_QUICK_BUTTON, itemHeight, H_QUICK_BUTTON, H_QUICK_BUTTON));
+ pCallButton->SetActionId(IDA_VOICE_CALL);
+ pCallButton->AddActionEventListener(*this);
+ if (pBgNormal != null)
+ {
+ pCallButton->SetNormalBackgroundBitmap(*pBgNormal);
+ }
+ if (pBgPressed != null)
+ {
+ pCallButton->SetPressedBackgroundBitmap(*pBgPressed);
+ }
+ if (pCallNormal != null)
+ {
+ pCallButton->SetNormalBitmap(Point(0, 0), *pCallNormal);
+ }
+ if (pCallPressed != null)
+ {
+ pCallButton->SetPressedBitmap(Point(0, 0), *pCallPressed);
+ }
+
+ pMessageButton = new (std::nothrow) Button();
+ pMessageButton->Construct(Rectangle((X_QUICK_BUTTON + H_QUICK_BUTTON + W_QUICK_BUTTON_GAP), itemHeight, H_QUICK_BUTTON, H_QUICK_BUTTON));
+ pMessageButton->SetActionId(IDA_MESSAGE);
+ pMessageButton->AddActionEventListener(*this);
+ if (pBgNormal != null)
+ {
+ pMessageButton->SetNormalBackgroundBitmap(*pBgNormal);
+ }
+ if (pBgPressed != null)
+ {
+ pMessageButton->SetPressedBackgroundBitmap(*pBgPressed);
+ }
+ if (pMessageNormal != null)
+ {
+ pMessageButton->SetNormalBitmap(Point(0, 0), *pMessageNormal);
+ }
+ if (pMessagePressed != null)
+ {
+ pMessageButton->SetPressedBitmap(Point(0, 0), *pMessagePressed);
+ }
+#if __SUPPORT_VIDEO_CALL
+ pVideoCallButton = new (std::nothrow) Button();
+ pVideoCallButton->Construct(Rectangle((X_QUICK_BUTTON + (H_QUICK_BUTTON * 2) + (W_QUICK_BUTTON_GAP * 2)), itemHeight, H_QUICK_BUTTON, H_QUICK_BUTTON));
+ pVideoCallButton->SetActionId(IDA_VIDEO_CALL);
+ pVideoCallButton->AddActionEventListener(*this);
+ if (pBgNormal != null)
+ {
+ pVideoCallButton->SetNormalBackgroundBitmap(*pBgNormal);
+ }
+ if (pBgPressed != null)
+ {
+ pVideoCallButton->SetPressedBackgroundBitmap(*pBgPressed);
+ }
+ if (pVideoCallNormal != null)
+ {
+ pVideoCallButton->SetNormalBitmap(Point(0, 0), *pVideoCallNormal);
+ }
+ if (pVideoCallPressed != null)
+ {
+ pVideoCallButton->SetPressedBitmap(Point(0, 0), *pVideoCallPressed);
+ }
+#endif
+
+ delete pBgNormal;
+ delete pBgPressed;
+ delete pCallNormal;
+ delete pCallPressed;
+ delete pMessageNormal;
+ delete pMessagePressed;
+ delete pVideoCallNormal;
+ delete pVideoCallPressed;
+
+ itemHeight += (H_QUICK_BUTTON + H_QUICK_BUTTON_DIVIDER);
+ }
+ else
+ {
+ itemHeight += H_QUICK_BUTTON_DIVIDER;
+ }
+
+ pItem->Construct(Dimension(itemWidth, itemHeight));
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ if (pThumbnailLabel != null)
+ {
+ pItem->AddControl(*pThumbnailLabel);
+ }
+ if (pNameLabel != null)
+ {
+ pItem->AddControl(*pNameLabel);
+ }
+ if (pFavoriteLabel != null)
+ {
+ pItem->AddControl(*pFavoriteLabel);
+ }
+ if (pSuffixNickNameLabel != null)
+ {
+ pItem->AddControl(*pSuffixNickNameLabel);
+ }
+ if (pCompanyInfoLabel != null)
+ {
+ pItem->AddControl(*pCompanyInfoLabel);
+ }
+ if (pDefaultNumberLabel != null)
+ {
+ pItem->AddControl(*pDefaultNumberLabel);
+ }
+#if __SUPPORT_VIDEO_CALL
+ if (pCallButton != null && pMessageButton != null && pVideoCallButton != null)
+ {
+ pItem->AddControl(*pCallButton);
+ pItem->AddControl(*pMessageButton);
+ pItem->AddControl(*pVideoCallButton);
+ }
+#else
+ if (pCallButton != null && pMessageButton != null)
+ {
+ pItem->AddControl(*pCallButton);
+ pItem->AddControl(*pMessageButton);
+ }
+#endif
+}
+
+void
+ContactDetailsForm::AddProperty(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, int detailProperty, int itemSubIndex)
+{
+ String title;
+ String value;
+ String type;
+
+ switch (detailProperty)
+ {
+ case DETAIL_PROPERTY_PHONE_NUMBER:
+ {
+ type = __pPresentationModel->GetType(DETAIL_PROPERTY_PHONE_NUMBER, itemSubIndex);
+ value = __pPresentationModel->GetValue(DETAIL_PROPERTY_PHONE_NUMBER, itemSubIndex);
+
+ pItem->Construct(Dimension(itemWidth, H_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ pItem->SetName(value);
+
+ CreateValueTypeItem(itemWidth, pItem, value, type);
+
+ return;
+ }
+ break;
+ case DETAIL_PROPERTY_EMAIL:
+ {
+ title = ResourceManager::GetString(L"IDS_COM_BODY_EMAIL");
+ type = __pPresentationModel->GetType(static_cast<DetailProperty>(detailProperty), itemSubIndex);
+ value = __pPresentationModel->GetValue(static_cast<DetailProperty>(detailProperty), itemSubIndex);
+ }
+ break;
+ case DETAIL_PROPERTY_ADDRESS:
+ {
+ title = ResourceManager::GetString(L"IDS_PB_BODY_ADDRESS");
+ type = __pPresentationModel->GetType(static_cast<DetailProperty>(detailProperty), itemSubIndex);
+ value = __pPresentationModel->GetValue(static_cast<DetailProperty>(detailProperty), itemSubIndex);
+ }
+ break;
+ case DETAIL_PROPERTY_URL:
+ {
+ title = ResourceManager::GetString(L"IDS_PB_BODY_URL");
+ type = __pPresentationModel->GetType(static_cast<DetailProperty>(detailProperty), itemSubIndex);
+ value = __pPresentationModel->GetValue(static_cast<DetailProperty>(detailProperty), itemSubIndex);
+ }
+ break;
+ case DETAIL_PROPERTY_BIRTHDAY:
+ {
+ title = ResourceManager::GetString(L"IDS_PB_BODY_BIRTHDAY");
+ value = __pPresentationModel->GetValue(DETAIL_PROPERTY_BIRTHDAY);
+ }
+ break;
+ case DETAIL_PROPERTY_NOTE:
+ {
+ title = ResourceManager::GetString(L"IDS_PB_BODY_NOTE");
+ value = __pPresentationModel->GetValue(DETAIL_PROPERTY_NOTE);
+ }
+ break;
+ default:
+ break;
+ }
+
+ pItem->Construct(Dimension(itemWidth, H_ITEM_DOUBLE_LINE), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ CreateTitleValueTypeItem(itemWidth, pItem, title, value, type);
+}
+
+void
+ContactDetailsForm::AddImAddress(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, int itemSubIndex)
+{
+ if (itemSubIndex == 0)
+ {
+ pItem->Construct(Dimension(itemWidth, H_ITEM_DOUBLE_LINE + H_IM_TITLE), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ }
+ else
+ {
+ pItem->Construct(Dimension(itemWidth, H_ITEM_DOUBLE_LINE), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ }
+
+ String title = __pPresentationModel->GetType(DETAIL_PROPERTY_IM_ADDRESS, itemSubIndex);
+ String value = __pPresentationModel->GetValue(DETAIL_PROPERTY_IM_ADDRESS, itemSubIndex);
+
+ int totalCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_IM_ADDRESS);
+
+ if (itemSubIndex + 1 == totalCount)
+ {
+ if (totalCount == 1)
+ {
+ AddGroupStylePanel(itemWidth, pItem, GROUP_STYLE_SINGLE);
+ }
+ else
+ {
+ AddGroupStylePanel(itemWidth, pItem, GROUP_STYLE_BOTTOM);
+ }
+ }
+ else if (itemSubIndex + 1 < totalCount)
+ {
+ if (itemSubIndex != 0)
+ {
+ AddGroupStylePanel(itemWidth, pItem, GROUP_STYLE_MIDDLE);
+ }
+ else
+ {
+ AddGroupStylePanel(itemWidth, pItem, GROUP_STYLE_TOP);
+ }
+ }
+
+ CreateTitleValueTypeItem(itemWidth, pItem, title, value);
+
+ Label* pIconLabel = new (std::nothrow) Label();
+ pIconLabel->Construct(Rectangle(itemWidth - W_TEXT_MARGIN - H_ICON, (H_ITEM_DOUBLE_LINE - H_ICON) / 2, H_ICON, H_ICON), L"");
+ Bitmap* pIcon = __pPresentationModel->GetAccountIconN(title);
+ if (pIcon != null)
+ {
+ pIconLabel->SetBackgroundBitmap(*pIcon);
+ delete pIcon;
+ pItem->AddControl(*pIconLabel);
+ }
+ else
+ {
+ delete pIconLabel;
+ }
+
+ if (itemSubIndex == 0)
+ {
+ for (int index = 0; index < pItem->GetControlCount(); index++)
+ {
+ Control* pControl = pItem->GetControl(index);
+ if (pControl != null)
+ {
+ Rectangle rect = pControl->GetBounds();
+ rect.y += H_IM_TITLE;
+ pControl->SetBounds(rect);
+ }
+ }
+
+ Label* pTitle = new (std::nothrow) Label();
+ pTitle->Construct(Rectangle(W_GROUP_STYLE_MARGIN, 0, itemWidth, H_IM_TITLE), ResourceManager::GetString(L"IDS_PB_HEADER_INSTANT_MESSENGER_ABB"));
+ pTitle->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pTitle->SetTextColor(COLOR_ITEM_TYPE);
+
+ pItem->AddControl(*pTitle);
+ }
+}
+
+void
+ContactDetailsForm::AddGroup(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ pItem->Construct(Dimension(itemWidth, H_ITEM_DOUBLE_LINE), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ pItem->SetName(Integer::ToString(DETAIL_PROPERTY_GROUP));
+
+ String title = ResourceManager::GetString(L"IDS_PB_BODY_GROUPS");
+ String value = __pPresentationModel->GetValue(DETAIL_PROPERTY_GROUP);
+
+ if (value.IsEmpty())
+ {
+ value = ResourceManager::GetString(L"IDS_PB_BODY_NOT_ASSIGNED");
+ }
+
+ AddGroupStylePanel(itemWidth, pItem, GROUP_STYLE_TOP);
+
+ CreateTitleValueTypeItem(itemWidth, pItem, title, value);
+}
+
+void
+ContactDetailsForm::AddRingTone(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ pItem->Construct(Dimension(itemWidth, H_ITEM_DOUBLE_LINE), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ pItem->SetName(Integer::ToString(DETAIL_PROPERTY_RINGTONE));
+
+ String title = ResourceManager::GetString(L"IDS_PB_BODY_RINGTONE");
+ String value = __pPresentationModel->GetValue(DETAIL_PROPERTY_RINGTONE);
+
+ int index = 0;
+ String trimmedPath;
+ value.LastIndexOf(L"/", value.GetLength() - 1, index);
+
+ if (index != 0)
+ {
+ value.SubString(index + 1, trimmedPath);
+ }
+
+ AddGroupStylePanel(itemWidth, pItem, GROUP_STYLE_BOTTOM);
+
+ CreateTitleValueTypeItem(itemWidth, pItem, title, trimmedPath);
+
+ if (__appControlViewType.Equals(VALUE_VIEW_TYPE_VCF, false) == false)
+ {
+ Button* pClearButton = new (std::nothrow) Button();
+ pClearButton->Construct(Rectangle(itemWidth - H_ICON - W_TEXT_MARGIN, (H_ITEM_DOUBLE_LINE - H_ICON) / 2, H_ICON, H_ICON));
+ pClearButton->SetActionId(IDA_BUTTON_RINGTONE_CLEAR);
+ pClearButton->AddActionEventListener(*this);
+
+ Bitmap* pReset = ResourceManager::GetBitmapN(IDB_DETAILS_RESET_NORMAL);
+ if (pReset != null)
+ {
+ pClearButton->SetNormalBitmap(Point(0, 0), *pReset);
+ delete pReset;
+ }
+ pReset = ResourceManager::GetBitmapN(IDB_DETAILS_RESET_PRESSED);
+ if (pReset != null)
+ {
+ pClearButton->SetPressedBitmap(Point(0, 0), *pReset);
+ delete pReset;
+ }
+
+ pItem->AddControl(*pClearButton);
+ pItem->SetIndividualSelectionEnabled(pClearButton, true);
+ }
+}
+
+void
+ContactDetailsForm::AddShareButtons(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ pItem->Construct(Dimension(itemWidth, H_BUTTON_CONTAINER));
+
+ int buttonWidth = itemWidth - W_BUTTON_GAP * 2;
+
+ Button* pSendNameButton = new (std::nothrow) Button();
+ pSendNameButton->Construct(Rectangle(W_BUTTON_GAP, Y_BUTTON, buttonWidth, H_BUTTON), ResourceManager::GetString(L"IDS_PB_HEADER_SEND_NAMECARD"));
+ pSendNameButton->SetActionId(IDA_BUTTON_SHARE_NAME_CARD);
+ pSendNameButton->AddActionEventListener(*this);
+ pItem->AddControl(*pSendNameButton);
+}
+
+void
+ContactDetailsForm::CreateValueTypeItem(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, const Tizen::Base::String& value, const Tizen::Base::String& type)
+{
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ Label* pValueLabel = new (std::nothrow) Label();
+ pValueLabel->Construct(Rectangle(W_TEXT_MARGIN, 0, itemWidth - W_TEXT_MARGIN * 2 - W_TYPE, H_ITEM), value);
+ pValueLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pValueLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pValueLabel->SetTextConfig(FONT_SIZE_MAIN_TEXT, LABEL_TEXT_STYLE_BOLD);
+ pValueLabel->SetTextColor(COLOR_OTHER_NUMBER);
+ pItem->AddControl(*pValueLabel);
+
+ Label* pTypeLabel = new (std::nothrow) Label();
+ pTypeLabel->Construct(Rectangle((itemWidth - W_TEXT_MARGIN - W_TYPE), 0, W_TYPE, H_ITEM), type);
+ pTypeLabel->SetTextHorizontalAlignment(ALIGNMENT_RIGHT);
+ pTypeLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pTypeLabel->SetTextConfig(FONT_SIZE_SUB_TEXT, LABEL_TEXT_STYLE_BOLD);
+ pTypeLabel->SetTextColor(COLOR_ITEM_TYPE);
+ pItem->AddControl(*pTypeLabel);
+}
+
+void
+ContactDetailsForm::CreateTitleValueTypeItem(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, const Tizen::Base::String& title, const Tizen::Base::String& value, const Tizen::Base::String& type)
+{
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ unsigned int titleColor = COLOR_ITEM_TITLE;
+ unsigned int valueColor = COLOR_ITEM_VALUE;
+
+ if (pItem->GetName().Equals(Integer::ToString(DETAIL_PROPERTY_IM_ADDRESS), true) == true)
+ {
+ titleColor = COLOR_ITEM_TYPE;
+ }
+ else if (pItem->GetName().Equals(Integer::ToString(DETAIL_PROPERTY_GROUP), true) == true ||
+ pItem->GetName().Equals(Integer::ToString(DETAIL_PROPERTY_RINGTONE), true) == true)
+ {
+ valueColor = COLOR_ITEM_TYPE;
+ }
+
+ Label* pTitleLabel = new (std::nothrow) Label();
+ pTitleLabel->Construct(Rectangle(W_TEXT_MARGIN, Y_ITEM_TITLE, itemWidth - W_TEXT_MARGIN, H_ITEM_TITLE), title);
+ pTitleLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pTitleLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pTitleLabel->SetTextConfig(FONT_SIZE_SUB_TEXT, LABEL_TEXT_STYLE_BOLD);
+ pTitleLabel->SetTextColor(titleColor);
+ pItem->AddControl(*pTitleLabel);
+
+ int valueWidth = 0;
+ if (type.IsEmpty() == false)
+ {
+ Label* pTypeLabel = new (std::nothrow) Label();
+ pTypeLabel->Construct(Rectangle((itemWidth - W_TEXT_MARGIN - W_TYPE), Y_ITEM_TITLE + H_ITEM_TITLE, W_TYPE, H_ITEM_VALUE), type);
+ pTypeLabel->SetTextHorizontalAlignment(ALIGNMENT_RIGHT);
+ pTypeLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pTypeLabel->SetTextConfig(FONT_SIZE_SUB_TEXT, LABEL_TEXT_STYLE_BOLD);
+ pTypeLabel->SetTextColor(COLOR_ITEM_TYPE);
+ pItem->AddControl(*pTypeLabel);
+
+ valueWidth = itemWidth - (W_TEXT_MARGIN * 2) - W_TYPE;
+ }
+ else
+ {
+ valueWidth = itemWidth - (W_TEXT_MARGIN * 2) - H_ICON;
+ }
+
+ Label* pValueLabel = new (std::nothrow) Label();
+ pValueLabel->Construct(Rectangle(W_TEXT_MARGIN, Y_ITEM_TITLE + H_ITEM_TITLE, valueWidth, H_ITEM_VALUE), value);
+ pValueLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pValueLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pValueLabel->SetTextConfig(FONT_SIZE_MAIN_TEXT, LABEL_TEXT_STYLE_NORMAL);
+ pValueLabel->SetTextColor(valueColor);
+ pItem->AddControl(*pValueLabel);
+}
+
+void
+ContactDetailsForm::OnTableViewItemStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ if (status == TABLE_VIEW_ITEM_STATUS_SELECTED)
+ {
+ String itemName = pItem->GetName();
+
+ if (itemName.Equals(Integer::ToString(DETAIL_PROPERTY_GROUP), true) == true)
+ {
+ if (__appControlViewType.Equals(VALUE_VIEW_TYPE_VCF, false) == true)
+ {
+ return;
+ }
+
+ if (__pPresentationModel->GetCategoryCount() > 0)
+ {
+ IList* pCategoryList = __pPresentationModel->GetAssignedCategoryIdListN();
+
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_SELECTOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pCategoryList);
+ }
+ else
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT));
+ }
+ }
+ else if (itemName.Equals(Integer::ToString(DETAIL_PROPERTY_RINGTONE), true) == true)
+ {
+ if (__appControlViewType.Equals(VALUE_VIEW_TYPE_VCF, false) == true)
+ {
+ return;
+ }
+
+ result r = LaunchAppControl(PROVIDER_ID_FILEMANAGER, OPERATION_ID_PICK);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to launch appcontrol", GetErrorMessage(r));
+ }
+ else if (itemName.IsEmpty() == false)
+ {
+ Point itemPoint;
+ itemPoint.x = GetClientAreaBounds().width / 2;
+ itemPoint.y = GetClientAreaBounds().y + pItem->GetY() + (pItem->GetHeight() / 2) - __scrolledDistance;
+
+ __pContextMenuCall->SetName(itemName);
+ __pContextMenuCall->SetAnchorPosition(itemPoint);
+ __pContextMenuCall->SetShowState(true);
+ __pContextMenuCall->Show();
+ }
+ }
+}
+
+void
+ContactDetailsForm::OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated)
+{
+}
+
+void
+ContactDetailsForm::OnTableViewItemReordered(Tizen::Ui::Controls::TableView& tableView, int itemIndexFrom, int itemIndexTo)
+{
+}
+
+void
+ContactDetailsForm::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo & touchInfo)
+{
+}
+
+void
+ContactDetailsForm::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+ if (source.GetName().Equals(FAVORITE_LABEL, true))
+ {
+ Label* pLabel = static_cast<Label*>(&const_cast<Control&>(source));
+ if (pLabel == null)
+ {
+ return;
+ }
+
+ __pPresentationModel->SetAsFavorite(!__pPresentationModel->IsFavorite());
+
+ Bitmap* pBitmap = null;
+ if (__pPresentationModel->IsFavorite())
+ {
+ pBitmap = ResourceManager::GetBitmapN(IDB_DETAILS_FAVORITE_ON);
+ }
+ else
+ {
+ pBitmap = ResourceManager::GetBitmapN(IDB_DETAILS_FAVORITE_OFF);
+ }
+
+ if (pBitmap != null)
+ {
+ pLabel->SetBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+ pLabel->Invalidate(false);
+ }
+}
+
+void
+ContactDetailsForm::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactDetailsForm::OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactDetailsForm::OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactDetailsForm::OnTouchCanceled(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactDetailsForm::OnScrollEndReached (Tizen::Ui::Control &source, Tizen::Ui::Controls::ScrollEndEvent type)
+{
+}
+
+void
+ContactDetailsForm::OnScrollPositionChanged (Tizen::Ui::Control &source, int scrollPos)
+{
+ __scrolledDistance = scrollPos;
+}
+
+void
+ContactDetailsForm::OnScrollStopped (Tizen::Ui::Control &source)
+{
+}
+
+void
+ContactDetailsForm::OnContactsChanged(void)
+{
+ if (__pPresentationModel->IsContactRemoved())
+ {
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_CONTACT_LIST));
+ }
+ else
+ {
+ InitializeDetailItemList();
+ __pTableView->UpdateTableView();
+ }
+
+ delete __pDefaultSelectorPopup;
+ __pDefaultSelectorPopup = null;
+}
+
+void
+ContactDetailsForm::OnCategoriesChanged(void)
+{
+}
+
+result
+ContactDetailsForm::LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, const Tizen::Base::String& launchType, const Tizen::Base::String& value)
+{
+ result r = E_SUCCESS;
+ HashMap extraData;
+ extraData.Construct();
+ IAppControlResponseListener* pEvent = null;
+
+ if (appId.Equals(String(PROVIDER_ID_PHONE)) && operationId.Equals(String(OPERATION_ID_CALL)))
+ {
+ if (value.IsEmpty())
+ {
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TEL), new (std::nothrow) String(__pPresentationModel->GetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER)));
+ }
+ else
+ {
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TEL), new (std::nothrow) String(value));
+ }
+
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TYPE), new (std::nothrow) String(launchType));
+ }
+ else if (appId.Equals(String(PROVIDER_ID_MESSAGE)) && operationId.Equals(String(OPERATION_ID_COMPOSE)))
+ {
+ if (value.IsEmpty())
+ {
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TO), new (std::nothrow) String(__pPresentationModel->GetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER)));
+ }
+ else
+ {
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TO), new (std::nothrow) String(value));
+ }
+
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TYPE), new (std::nothrow) String(launchType));
+ }
+ else if (appId.Equals(String(PROVIDER_ID_FILEMANAGER)) && operationId.Equals(String(OPERATION_ID_PICK)))
+ {
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TYPE), new (std::nothrow) String(INPUT_TYPE_AUDIO));
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_SELECTION_TYPE), new (std::nothrow) String(SELECTION_TYPE_SINGLE));
+
+ pEvent = this;
+ SetEnabled(false);
+ }
+ else if (appId.Equals(String(PROVIDER_ID_EMAIL)) && operationId.Equals(String(OPERATION_ID_COMPOSE)))
+ {
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TO), new (std::nothrow) String(__pPresentationModel->GetValue(DETAIL_PROPERTY_EMAIL, 0)));
+ }
+
+ AppControl* pAc = AppManager::FindAppControlN(appId, operationId);
+ if (pAc != null)
+ {
+ r = pAc->Start(null, null, &extraData, pEvent);
+
+ delete pAc;
+ }
+
+ extraData.RemoveAll(true);
+
+ return r;
+}
+
+void
+ContactDetailsForm::OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData)
+{
+ SetEnabled(true);
+ Invalidate(true);
+
+ if (pExtraData == null)
+ {
+ return;
+ }
+
+ if (appId.Equals(String(PROVIDER_ID_FILEMANAGER)) && operationId.Equals(String(OPERATION_ID_PICK)))
+ {
+ if (appControlResult == APP_CTRL_RESULT_SUCCEEDED)
+ {
+ const String* pResultString = static_cast<const String *>(pExtraData->GetValue(String(RESULT_KEY_PATH)));
+
+ if (pResultString->IsEmpty() == false)
+ {
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_RINGTONE, *pResultString);
+ __pPresentationModel->UpdateContact();
+ }
+ }
+ }
+}
+
+void
+ContactDetailsForm::AddGroupStylePanel(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::GroupStyle groupStyle)
+{
+ Panel* pGroupStyle = new (std::nothrow) Panel();
+ pGroupStyle->Construct(Rectangle(W_GROUP_STYLE_MARGIN, 0, itemWidth - W_GROUP_STYLE_MARGIN * 2, H_ITEM_DOUBLE_LINE), groupStyle);
+ pGroupStyle->SetBackgroundColor(COLOR_GROUP_STYLE);
+ pItem->AddControl(*pGroupStyle);
+}
+
+result
+ContactDetailsForm::ParseAppControlArgument(const Tizen::Base::String& argument, Tizen::Base::String& type, Tizen::Base::String& content)
+{
+ result r = E_SUCCESS;
+
+ if (argument.IsEmpty() || argument.Contains(DELIMITER) == false)
+ {
+ return E_FAILURE;
+ }
+
+ StringTokenizer stringToken(argument, DELIMITER);
+
+ r = stringToken.GetNextToken(type);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to get type", GetErrorMessage(r));
+
+ r = stringToken.GetNextToken(content);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to get content", GetErrorMessage(r));
+
+ return r;
+}
+
+void
+ContactDetailsForm::ShowDefaultSelectorPopup(void)
+{
+ ArrayList* pList = new (std::nothrow) ArrayList();
+ pList->Construct();
+
+ String numberWithType;
+ int numberCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER);
+ for (int index = 0; index < numberCount; index++)
+ {
+ numberWithType = __pPresentationModel->GetType(DETAIL_PROPERTY_PHONE_NUMBER, index) + L" ";
+ numberWithType += __pPresentationModel->GetValue(DETAIL_PROPERTY_PHONE_NUMBER, index);
+
+ pList->Add(*(new (std::nothrow) String(numberWithType)));
+ }
+ ContactValueListItemProvider* pProvider = new (std::nothrow) ContactValueListItemProvider(pList);
+
+ delete __pDefaultSelectorPopup;
+ __pDefaultSelectorPopup = new (std::nothrow) Popup();
+ __pDefaultSelectorPopup->Construct(true, Dimension(W_POPUP, H_POPUP));
+ __pDefaultSelectorPopup->SetTitleText(ResourceManager::GetString(L"IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"));
+
+ Rectangle popupClientBounds = __pDefaultSelectorPopup->GetClientAreaBounds();
+
+ ListView* pOtherNumberList = new (std::nothrow) ListView();
+ pOtherNumberList->Construct(Rectangle(0, 0, popupClientBounds.width, H_POPUP_LIST_VIEW));
+ pOtherNumberList->AddListViewItemEventListener(*this);
+ pOtherNumberList->SetItemProvider(*pProvider);
+
+ __pDefaultSelectorPopup->AddControl(*pOtherNumberList);
+
+ Button* pCloseButton = new (std::nothrow) Button();
+ pCloseButton->Construct(Rectangle((popupClientBounds.width - W_POPUP_BUTTON) / 2, Y_POPUP_BUTTON,
+ W_POPUP_BUTTON, H_POPUP_BUTTON), ResourceManager::GetString(L"IDS_COM_POP_CLOSE"));
+ pCloseButton->SetActionId(IDA_POPUP_CLOSE);
+ pCloseButton->AddActionEventListener(*this);
+
+ __pDefaultSelectorPopup->AddControl(*pCloseButton);
+ __pDefaultSelectorPopup->SetShowState(true);
+ __pDefaultSelectorPopup->Show();
+}
+
+void
+ContactDetailsForm::HideDefaultSelectorPopup(void)
+{
+ __pDefaultSelectorPopup->SetShowState(false);
+
+ Invalidate(true);
+}
+
+void
+ContactDetailsForm::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status)
+{
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER, L"", index);
+ __pPresentationModel->AddAddressBook();
+ InitializeDetailItemList();
+ __pTableView->UpdateTableView();
+
+ HideDefaultSelectorPopup();
+}
+
+void
+ContactDetailsForm::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+void
+ContactDetailsForm::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus status)
+{
+}
--- /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 CtContactEditorForm.cpp
+ * @brief This is the implementation file for the ContactEditorForm class.
+ */
+
+#include <FApp.h>
+#include <FMedia.h>
+#include "CtContactEditorForm.h"
+#include "CtContactPresentationModel.h"
+#include "CtContactsApp.h"
+#include "CtContactValueListItemProvider.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtTypes.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::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Social;
+
+static const int IDA_ACTION_BAR_SAVE = 11;
+static const int IDA_ACTION_BAR_CANCEL = 12;
+static const int IDA_BUTTON_THUMBNAIL_ADD = 21;
+static const int IDA_BUTTON_THUMBNAIL_DELETE = 22;
+static const int IDA_BUTTON_CAMERA = 23;
+static const int IDA_BUTTON_EXPANDABLE = 24;
+static const int IDA_BUTTON_MORE_INFO = 25;
+static const int IDA_BUTTON_BIRTHDAY_CLEAR = 26;
+static const int IDA_BUTTON_DEFAULT_PHONE_NUMBER = 27;
+static const int IDA_CONTEXT_MENU_ITEM_JOB_TITLE = 31;
+static const int IDA_CONTEXT_MENU_ITEM_DEPARTMENT = 32;
+static const int IDA_CONTEXT_MENU_ITEM_INSTANT_MESSENGER = 33;
+static const int IDA_CONTEXT_MENU_ITEM_URL = 34;
+static const int IDA_CONTEXT_MENU_ITEM_BIRTHDAY = 35;
+static const int IDA_CONTEXT_MENU_ITEM_NOTE = 36;
+
+static const wchar_t* IDB_EXPAND_BUTTON_NORMAL = L"00_circle_button.png";
+static const wchar_t* IDB_EXPAND_BUTTON_PRESSED = L"00_circle_button_press.png";
+static const wchar_t* IDB_EXPAND_CLOSED = L"00_button_expand_closed.png";
+static const wchar_t* IDB_EXPAND_CLOSED_PRESSED = L"00_button_expand_closed_press.png";
+static const wchar_t* IDB_EXPAND_OPENED = L"00_button_expand_opened.png";
+static const wchar_t* IDB_EXPAND_OPENED_PRESSED = L"00_button_expand_opened_press.png";
+static const wchar_t* IDB_BUTTON_DELETE_NORMAL = L"00_circle_button_delete.png";
+static const wchar_t* IDB_BUTTON_DELETE_PRESSED = L"00_circle_button_delete_press.png";
+static const wchar_t* IDB_BUTTON_MINUS = L"00_button_expand_minus_press.png";
+static const wchar_t* IDB_BUTTON_MINUS_PRESSED = L"00_button_expand_minus_press.png";
+static const wchar_t* IDB_BUTTON_RESET_NORMAL = L"00_button_refresh.png";
+static const wchar_t* IDB_BUTTON_RESET_PRESSED = L"00_button_refresh_press.png";
+static const wchar_t* IDB_BUTTON_ADD= L"C02_caller_id_icon_add.png";
+static const wchar_t* IDB_BUTTON_ADD_PRESSED = L"C02_caller_id_icon_add_press.png";
+static const wchar_t* IDB_BUTTON_ADD_DISABLED = L"C02_caller_id_icon_add_dim.png";
+static const wchar_t* IDB_BUTTON_CAMERA = L"C02_caller_id_icon_camera.png";
+static const wchar_t* IDB_BUTTON_CAMERA_PRESSED = L"C02_caller_id_icon_camera_press.png";
+static const wchar_t* IDB_BUTTON_CAMERA_DISABLED = L"C02_caller_id_icon_camera_dim.png";
+
+static const wchar_t* INPUT_KEY_TYPE = L"type";
+static const wchar_t* INPUT_KEY_MEDIA_TYPE = L"mediaType";
+static const wchar_t* INPUT_KEY_SELECTION_MODE = L"selectionMode";
+static const wchar_t* INPUT_KEY_SELECTION_TYPE = L"selectionType";
+static const wchar_t* RESULT_KEY_PATH = L"path";
+static const wchar_t* INPUT_MEDIA_TYPE_IMAGE = L"image";
+static const wchar_t* INPUT_TYPE_AUDIO = L"audio";
+static const wchar_t* INPUT_TYPE_CAMERA = L"camera";
+static const wchar_t* INPUT_SELECTION_TYPE_SINGLE = L"single";
+static const wchar_t* CHARACTER_AT = L"@";
+static const wchar_t* CHARACTER_DOT = L".";
+
+static const int H_ITEM = 128;
+static const int H_DESCRIPTION_CONTAINER = 136;
+static const int H_DIVIDER = 1;
+static const int W_DIVIDER = 1;
+static const int H_EMPTY_SPACE = 40;
+static const int H_EXPANDED_NAME_FIELDS = 768;
+static const int H_BUTTON = 74;
+static const int W_THUMBNAIL = 360;
+static const int W_TITLE_LABEL = 160;
+static const int X_MORE_INFORMATION_BUTTON = 60;
+static const int Y_MORE_INFORMATION_BUTTON = 30;
+static const int W_ITEM_GAP = 16;
+static const int W_TYPE_BUTTON = 186;
+static const int H_THUMBNAIL_GAP = 57;
+static const int W_THUMBNAIL_DELETE_BUTTON_GAP = 34;
+static const int H_THUMBNAIL_DELETE_BUTTON_GAP = 31;
+static const int H_GROUP_RINGTONE_LABEL = 64;
+static const int Y_EDITDATE = 8;
+
+static const int GROUP_ITEM_COUNT = 11;
+static const int NAME_FIELD_ITEM_COUNT = 1;
+
+static const unsigned int COLOR_TABLE_VIEW_BG = Color32<248, 246, 239>::Value;
+static const unsigned int COLOR_DIVIDER = Color32<169, 169, 169>::Value;
+static const unsigned int COLOR_CONTENT_TEXT = Color32<34, 137, 194>::Value;
+static const unsigned int COLOR_THUMBNAIL_BACKGROUND = Color32<239, 237, 229>::Value;
+
+static const int TABLE_VIEW_DELETE_INPUT_FIELD_ID = 0xE0000000;
+static const int TABLE_VIEW_INPUT_FIELD_ACTION_MASK = 0xF0000000;
+static const int TABLE_VIEW_INPUT_FIELD_INDEX_MASK = 0x0F000000;
+static const int TABLE_VIEW_GROUP_INDEX_MASK = 0x00FF0000;
+static const int TABLE_VIEW_ITEM_INDEX_MASK = 0x0000FFFF;
+static const int TABLE_VIEW_GROUP_INDEX_SHIFT = 16;
+static const int TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT = 24;
+static const int TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT = 28;
+static const int TABLE_VIEW_THUMBNAIL_FIELD_INDEX = 0;
+static const int TABLE_VIEW_NAME_FIELD_INDEX = 1;
+static const int TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX = 2;
+static const int TABLE_VIEW_EMAIL_FIELD_INDEX = 3;
+static const int TABLE_VIEW_ADDRESS_FIELD_INDEX = 4;
+static const int TABLE_VIEW_IM_ADDRESS_FIELD_INDEX = 5;
+static const int TABLE_VIEW_URL_FIELD_INDEX = 6;
+static const int TABLE_VIEW_BIRTHDAY_FIELD_INDEX = 7;
+static const int TABLE_VIEW_NOTE_FIELD_INDEX = 8;
+static const int TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX = 9;
+static const int TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX = 10;
+
+static const wchar_t* INPUT_TYPE_PHONE = L"phone";
+static const wchar_t* INPUT_TYPE_EMAIL = L"email";
+static const wchar_t* INPUT_TYPE_URL = L"url";
+static const wchar_t* VIEW_TYPE = L"viewType";
+static const wchar_t* VIEW_TYPE_VALUE_CONTACT = L"contact";
+
+ContactEditorForm::ContactEditorForm(void)
+: __isExpandable(false)
+, __isAppControl(false)
+, __isJobTitleEnabled(false)
+, __isDepartmentEnabled(false)
+, __isDefaultPhoneNumberButtonEnabled(false)
+, __scrolledDistance(0)
+, __pPhoneNumberFieldItem(null)
+, __pEmailFieldItem(null)
+, __pAddressFieldItem(null)
+, __pImAddressFieldItem(null)
+, __pUrlFieldItem(null)
+, __pCurrentFocusedItem(null)
+, __pMoreInformationItem(null)
+, __pDefaultPhoneNumberContextMenu(null)
+, __pMoreInformationContextMenu(null)
+, __pThumbnailContextMenu(null)
+, __pTypeContextMenu(null)
+, __pTableView(null)
+, __pNameFieldItem(null)
+, __pNoteFieldItem(null)
+, __pPresentationModel(null)
+{
+}
+
+ContactEditorForm::~ContactEditorForm(void)
+{
+}
+
+void
+ContactEditorForm::Initialize(void)
+{
+ Construct(FORM_STYLE_NORMAL | FORM_STYLE_INDICATOR | FORM_STYLE_HEADER | FORM_STYLE_FOOTER);
+}
+
+result
+ContactEditorForm::OnInitializing(void)
+{
+ Header* pHeader = GetHeader();
+
+ pHeader->SetStyle(HEADER_STYLE_TITLE);
+ pHeader->AddActionEventListener(*this);
+
+ Footer* pFooter = GetFooter();
+
+ FooterItem footerItemSave;
+ footerItemSave.Construct(IDA_ACTION_BAR_SAVE);
+ footerItemSave.SetText(ResourceManager::GetString(L"IDS_COM_SK_SAVE"));
+
+ FooterItem footerItemCancel;
+ footerItemCancel.Construct(IDA_ACTION_BAR_CANCEL);
+ footerItemCancel.SetText(ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
+
+ pFooter->AddItem(footerItemSave);
+ pFooter->AddItem(footerItemCancel);
+ pFooter->AddActionEventListener(*this);
+
+ __pTableView = new (std::nothrow) GroupedTableView();
+ __pTableView->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height), false, TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT);
+ __pTableView->SetItemProvider(this);
+ __pTableView->AddScrollEventListener(*this);
+ __pTableView->AddGroupedTableViewItemEventListener(*this);
+ AddControl(*__pTableView);
+
+ __pPhoneNumberFieldItem = new (std::nothrow) ArrayList();
+ __pPhoneNumberFieldItem->Construct();
+
+ __pEmailFieldItem = new (std::nothrow) ArrayList();
+ __pEmailFieldItem->Construct();
+
+ __pAddressFieldItem = new (std::nothrow) ArrayList();
+ __pAddressFieldItem->Construct();
+
+ __pImAddressFieldItem = new (std::nothrow) ArrayList();
+ __pImAddressFieldItem->Construct();
+
+ __pUrlFieldItem = new (std::nothrow) ArrayList();
+ __pUrlFieldItem->Construct();
+
+ __pPresentationModel = new (std::nothrow) ContactPresentationModel();
+ __pPresentationModel->Construct();
+
+ return E_SUCCESS;
+}
+
+result
+ContactEditorForm::OnTerminating(void)
+{
+ AppLog("ContactEditorForm::OnTerminating()");
+
+ result r = E_SUCCESS;
+
+ __pTableView->SetItemProvider(null);
+
+ delete __pPresentationModel;
+
+ if (__pPhoneNumberFieldItem)
+ {
+ __pPhoneNumberFieldItem->RemoveAll(true);
+ delete __pPhoneNumberFieldItem;
+ }
+
+ if (__pEmailFieldItem)
+ {
+ __pEmailFieldItem->RemoveAll(true);
+ delete __pEmailFieldItem;
+ }
+
+ if (__pAddressFieldItem)
+ {
+ __pAddressFieldItem->RemoveAll(true);
+ delete __pAddressFieldItem;
+ }
+
+ if (__pUrlFieldItem)
+ {
+ __pUrlFieldItem->RemoveAll(true);
+ delete __pUrlFieldItem;
+ }
+
+ if (__pImAddressFieldItem)
+ {
+ __pImAddressFieldItem->RemoveAll(true);
+ delete __pImAddressFieldItem;
+ }
+
+ delete __pNameFieldItem;
+ delete __pNoteFieldItem;
+ delete __pDefaultPhoneNumberContextMenu;
+ delete __pMoreInformationContextMenu;
+ delete __pThumbnailContextMenu;
+ delete __pTypeContextMenu;
+
+ return r;
+}
+
+void
+ContactEditorForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ AppLog("ContactEditorForm::OnActionPerformed(), actionId %d", actionId);
+
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ if ((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) == TABLE_VIEW_DELETE_INPUT_FIELD_ID)
+ {
+ int groupIndex = (actionId & TABLE_VIEW_GROUP_INDEX_MASK) >> TABLE_VIEW_GROUP_INDEX_SHIFT;
+ int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
+
+ if (groupIndex > TABLE_VIEW_NAME_FIELD_INDEX)
+ {
+ DeleteInputField(groupIndex, itemIndex);
+ }
+
+ return;
+ }
+ else if (&source == __pDefaultPhoneNumberContextMenu)
+ {
+ SetAsDefaultPhoneNumber(actionId);
+
+ return;
+ }
+ else if (((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) >> TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT) == TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX)
+ {
+ int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
+ int selectedItemIndex = (actionId & TABLE_VIEW_INPUT_FIELD_INDEX_MASK) >> TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
+
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pPhoneNumberFieldItem->GetAt(itemIndex));
+ pItem->SetName(Integer::ToString(selectedItemIndex));
+
+ Button* pButtonType = static_cast<Button *>(pItem->GetControl(1));
+ if (pButtonType == null)
+ {
+ return;
+ }
+
+ pButtonType->SetText(__pPresentationModel->GetPhoneNumberTypeString((DetailPhoneNumberType)selectedItemIndex));
+ pButtonType->Invalidate(false);
+
+ return;
+ }
+ else if (((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) >> TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT) == TABLE_VIEW_EMAIL_FIELD_INDEX)
+ {
+ int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
+ int selectedItemIndex = (actionId & TABLE_VIEW_INPUT_FIELD_INDEX_MASK) >> TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
+
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pEmailFieldItem->GetAt(itemIndex));
+ pItem->SetName(Integer::ToString(selectedItemIndex));
+
+ Button* pButtonType = static_cast<Button *>(pItem->GetControl(1));
+ if (pButtonType == null)
+ {
+ return;
+ }
+
+ pButtonType->SetText(__pPresentationModel->GetEmailTypeString((DetailEmailType)selectedItemIndex));
+ pButtonType->Invalidate(false);
+
+ return;
+ }
+ else if (((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) >> TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT) == TABLE_VIEW_ADDRESS_FIELD_INDEX)
+ {
+ int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
+ int selectedItemIndex = (actionId & TABLE_VIEW_INPUT_FIELD_INDEX_MASK) >> TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
+
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pAddressFieldItem->GetAt(itemIndex));
+ pItem->SetName(Integer::ToString(selectedItemIndex));
+
+ Button* pButtonType = static_cast<Button *>(pItem->GetControl(1));
+ if (pButtonType == null)
+ {
+ return;
+ }
+
+ pButtonType->SetText(__pPresentationModel->GetAddressTypeString((DetailAddressType)selectedItemIndex));
+ pButtonType->Invalidate(false);
+
+ return;
+ }
+ else if (((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) >> TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT) == TABLE_VIEW_IM_ADDRESS_FIELD_INDEX)
+ {
+ int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
+ int selectedItemIndex = (actionId & TABLE_VIEW_INPUT_FIELD_INDEX_MASK) >> TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
+
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pImAddressFieldItem->GetAt(itemIndex));
+ pItem->SetName(Integer::ToString(selectedItemIndex));
+
+ Button* pButtonType = static_cast<Button *>(pItem->GetControl(1));
+ if (pButtonType == null)
+ {
+ return;
+ }
+
+ pButtonType->SetText(__pPresentationModel->GetImAddressTypeString((DetailImAddressType)selectedItemIndex));
+ pButtonType->Invalidate(false);
+
+ return;
+ }
+ else if (((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) >> TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT) == TABLE_VIEW_URL_FIELD_INDEX)
+ {
+ int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
+ int selectedItemIndex = (actionId & TABLE_VIEW_INPUT_FIELD_INDEX_MASK) >> TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
+
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pUrlFieldItem->GetAt(itemIndex));
+ pItem->SetName(Integer::ToString(selectedItemIndex));
+
+ Button* pButtonType = static_cast<Button *>(pItem->GetControl(1));
+ if (pButtonType == null)
+ {
+ return;
+ }
+
+ pButtonType->SetText(__pPresentationModel->GetUrlTypeString((DetailUrlType)selectedItemIndex));
+ pButtonType->Invalidate(false);
+
+ return;
+ }
+
+ switch (actionId)
+ {
+ case IDA_ACTION_BAR_CANCEL:
+ {
+ SetFocus();
+
+ if (__isAppControl == true)
+ {
+ UiApp* pApp = UiApp::GetInstance();
+ pApp->Terminate();
+ }
+ else
+ {
+ pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+ }
+ }
+ break;
+ case IDA_ACTION_BAR_SAVE:
+ {
+ result r = SaveContactData();
+
+ if (r != E_SUCCESS)
+ {
+ return;
+ }
+
+ SetFocus();
+
+ if (__isAppControl == true)
+ {
+ UiApp* pApp = UiApp::GetInstance();
+ pApp->Terminate();
+ }
+ else
+ {
+ ArrayList* pArg = null;
+
+ if (__pPresentationModel->GetVcfPath().IsEmpty() == false)
+ {
+ pArg = new (std::nothrow) ArrayList();
+ pArg->Construct();
+
+ String* pViewType = new (std::nothrow) String();
+ String* pValueType = new (std::nothrow) String();
+
+ pViewType->Append(VIEW_TYPE);
+ pViewType->Append(DELIMITER);
+ pViewType->Append(VIEW_TYPE_VALUE_CONTACT);
+
+ pValueType->Append(RETURN_TYPE_CONTACT_ID);
+ pValueType->Append(DELIMITER);
+ pValueType->Append(Integer::ToString(__pPresentationModel->GetContactId()));
+
+ pArg->Add(pViewType);
+ pArg->Add(pValueType);
+ }
+ pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT), pArg);
+ }
+ }
+ break;
+ case IDA_BUTTON_THUMBNAIL_ADD:
+ {
+ if (__pCurrentFocusedItem != null)
+ {
+ SetFocus();
+ }
+ LaunchAppControl(PROVIDER_ID_GALLERY, OPERATION_ID_PICK);
+ }
+ break;
+ case IDA_BUTTON_THUMBNAIL_DELETE:
+ {
+ __pPresentationModel->SetThumbnail(L"");
+ __pTableView->RefreshItem(TABLE_VIEW_THUMBNAIL_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+ break;
+ case IDA_BUTTON_CAMERA:
+ {
+ LaunchAppControl(PROVIDER_ID_CAMERA, OPERATION_ID_CREATE_CONTENT);
+ }
+ break;
+ case IDA_BUTTON_EXPANDABLE:
+ {
+ ChangeNameFieldStatus();
+
+ __pTableView->UpdateTableView();
+ }
+ break;
+ case IDA_BUTTON_MORE_INFO:
+ {
+ Control* pParentPanel = source.GetParent();
+ if (pParentPanel == null)
+ {
+ return;
+ }
+
+ Control* pParentTableViewItem = pParentPanel->GetParent();
+ if (pParentTableViewItem == null)
+ {
+ return;
+ }
+
+ if (__pCurrentFocusedItem != null)
+ {
+ __pMoreInformationItem = pParentTableViewItem;
+ SetFocus();
+ }
+ else
+ {
+ Point contextMenuPos;
+
+ contextMenuPos.x = pParentTableViewItem->GetWidth() / 2;
+ contextMenuPos.y = GetClientAreaBounds().y + pParentTableViewItem->GetY() + source.GetY() - __scrolledDistance;
+
+ ShowMoreInformationContextMenu(contextMenuPos);
+ }
+ }
+ break;
+ case IDA_BUTTON_BIRTHDAY_CLEAR:
+ {
+ DateTime currentDate;
+ Tizen::System::SystemTime::GetCurrentTime(currentDate);
+ __pPresentationModel->SetBirthday(currentDate);
+
+ __pTableView->RefreshItem(TABLE_VIEW_BIRTHDAY_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+ break;
+ case IDA_CONTEXT_MENU_ITEM_JOB_TITLE:
+ {
+ __isExpandable = false;
+ __isJobTitleEnabled = true;
+
+ ChangeNameFieldStatus();
+
+ __pTableView->UpdateTableView();
+ __pTableView->ScrollToItem(TABLE_VIEW_NAME_FIELD_INDEX, 0);
+ }
+ break;
+ case IDA_CONTEXT_MENU_ITEM_DEPARTMENT:
+ {
+ __isExpandable = false;
+ __isDepartmentEnabled = true;
+
+ ChangeNameFieldStatus();
+
+ __pTableView->UpdateTableView();
+ __pTableView->ScrollToItem(TABLE_VIEW_NAME_FIELD_INDEX, 0);
+ }
+ break;
+ case IDA_CONTEXT_MENU_ITEM_INSTANT_MESSENGER:
+ {
+ SaveContactData(false);
+
+ int index = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_IM_ADDRESS);
+
+ __pTableView->RefreshItem(TABLE_VIEW_IM_ADDRESS_FIELD_INDEX, index, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
+
+ if (IsMoreInformationButtonVisible() == false)
+ {
+ __pTableView->RefreshItem(TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
+ }
+ __pTableView->ScrollToItem(TABLE_VIEW_IM_ADDRESS_FIELD_INDEX, 0);
+ }
+ break;
+ case IDA_CONTEXT_MENU_ITEM_URL:
+ {
+ SaveContactData(false);
+
+ int index = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_URL);
+
+ __pTableView->RefreshItem(TABLE_VIEW_URL_FIELD_INDEX, index, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
+
+ if (IsMoreInformationButtonVisible() == false)
+ {
+ __pTableView->RefreshItem(TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
+ }
+ __pTableView->ScrollToItem(TABLE_VIEW_URL_FIELD_INDEX, 0);
+ }
+ break;
+ case IDA_CONTEXT_MENU_ITEM_BIRTHDAY:
+ {
+ DateTime currentDate;
+
+ Tizen::System::SystemTime::GetCurrentTime(currentDate);
+ __pPresentationModel->SetBirthday(currentDate);
+ __pTableView->RefreshItem(TABLE_VIEW_BIRTHDAY_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
+
+ if (IsMoreInformationButtonVisible() == false)
+ {
+ __pTableView->RefreshItem(TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
+ }
+ __pTableView->ScrollToItem(TABLE_VIEW_BIRTHDAY_FIELD_INDEX, 0);
+ }
+ break;
+ case IDA_CONTEXT_MENU_ITEM_NOTE:
+ {
+ __pTableView->RefreshItem(TABLE_VIEW_NOTE_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
+
+ if (IsMoreInformationButtonVisible() == false)
+ {
+ __pTableView->RefreshItem(TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
+ }
+ __pTableView->ScrollToItem(TABLE_VIEW_NOTE_FIELD_INDEX, 0);
+ }
+ break;
+ case IDA_BUTTON_DEFAULT_PHONE_NUMBER:
+ {
+ Control* pParent = source.GetParent();
+ Point contextMenuPos;
+
+ contextMenuPos.x = pParent->GetWidth() / 2;
+ contextMenuPos.y = GetClientAreaBounds().y + pParent->GetY() + source.GetY() + (source.GetHeight() / 2) - __scrolledDistance;
+
+ if (__pCurrentFocusedItem != null)
+ {
+ SetFocus();
+ HideKeypad();
+ }
+
+ SaveContactData(false);
+ ShowDefaultPhoneNumberContextMenu(contextMenuPos);
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+ContactEditorForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId,
+ Tizen::Base::Collection::IList* pArgs)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ TryReturnVoid(pContactsApp != null, "Unable to cast UiApp to ContactsApp");
+
+ Header* pHeader = GetHeader();
+ Footer* pFooter = GetFooter();
+
+ if (previousSceneId.Equals(IDSCN_GROUP_SELECTOR, true))
+ {
+ if (pArgs != null)
+ {
+ Integer* pCategoryId = null;
+ __pPresentationModel->RemoveContactFromAllCategories();
+
+ IEnumerator* pEnum = pArgs->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pCategoryId = static_cast<Integer*>(pEnum->GetCurrent());
+ if (pCategoryId != null)
+ {
+ __pPresentationModel->AddContactToCategory(pCategoryId->ToInt());
+ }
+ }
+ delete pEnum;
+
+ pArgs->RemoveAll(true);
+ delete pArgs;
+ }
+
+ __pTableView->RefreshItem(TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+
+ return;
+ }
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_ADD)
+ {
+ __isAppControl = true;
+ __pPresentationModel->PrepareNewContact();
+
+ pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_BODY_CREATE"));
+ pFooter->SetItemEnabled(0, false);
+ }
+ else if (pContactsApp->GetOperationId() == OPERATION_ID_EDIT)
+ {
+ __isAppControl = true;
+
+ if (pArgs != null)
+ {
+ String* pArgString = null;
+ String type;
+ String content;
+
+ IEnumerator* pEnum = pArgs->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pArgString = static_cast<String*>(pEnum->GetCurrent());
+ if (pArgString != null)
+ {
+ ParseAppControlArgument(*pArgString, type, content);
+
+ if (type.Equals(RETURN_TYPE_CONTACT_ID, false))
+ {
+ RecordId contactId;
+ Integer::Parse(content, contactId);
+ result r = __pPresentationModel->SetContactId(contactId, true);
+
+ if (IsFailed(r))
+ {
+ AppLogDebug("Invalid contactId has been input : %d", contactId);
+ UiApp::GetInstance()->Terminate();
+ }
+
+ if (__pPresentationModel->GetValue(DETAIL_PROPERTY_JOB_TITLE).IsEmpty() == false)
+ {
+ __isJobTitleEnabled = true;
+ }
+ if (__pPresentationModel->GetValue(DETAIL_PROPERTY_DEPARTMENT).IsEmpty() == false)
+ {
+ __isDepartmentEnabled = true;
+ }
+ break;
+ }
+ }
+ }
+ delete pEnum;
+
+ pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_SK_EDIT"));
+ }
+ }
+ else
+ {
+ if (pArgs != null)
+ {
+ Integer* pContactId = null;
+
+ pContactId = static_cast<Integer*>(pArgs->GetAt(0));
+ if (pContactId != null)
+ {
+ if (pContactId->ToInt() != INVALID_RECORD_ID)
+ {
+ pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_SK_EDIT"));
+ __pPresentationModel->SetContactId(pContactId->ToInt(), true);
+ }
+ else
+ {
+ pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_BODY_CREATE"));
+
+ String* pVcfPath = static_cast<String*>(pArgs->GetAt(1));
+ if (pVcfPath != null)
+ {
+ __pPresentationModel->SetVcfPath(*pVcfPath, true);
+ }
+ }
+ }
+
+ if (__pPresentationModel->GetValue(DETAIL_PROPERTY_JOB_TITLE).IsEmpty() == false)
+ {
+ __isJobTitleEnabled = true;
+ }
+ if (__pPresentationModel->GetValue(DETAIL_PROPERTY_DEPARTMENT).IsEmpty() == false)
+ {
+ __isDepartmentEnabled = true;
+ }
+ }
+ else
+ {
+ pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_BODY_CREATE"));
+ pFooter->SetItemEnabled(0, false);
+ __pPresentationModel->PrepareNewContact();
+ }
+ }
+
+ if (__isAppControl == true)
+ {
+ if (pArgs != null)
+ {
+ String* pArgString = null;
+ String type;
+ String content;
+
+ IEnumerator* pEnum = pArgs->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pArgString = static_cast<String*>(pEnum->GetCurrent());
+ if (pArgString != null)
+ {
+ result r = E_SUCCESS;
+ ParseAppControlArgument(*pArgString, type, content);
+
+ if (type.Equals(INPUT_TYPE_PHONE, false))
+ {
+ r = __pPresentationModel->SetValue(DETAIL_PROPERTY_PHONE_NUMBER, content, __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER));
+ }
+ else if (type.Equals(INPUT_TYPE_EMAIL, false))
+ {
+ r = __pPresentationModel->SetValue(DETAIL_PROPERTY_EMAIL, content, __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_EMAIL));
+ }
+ else if (type.Equals(INPUT_TYPE_URL, false))
+ {
+ r = __pPresentationModel->SetValue(DETAIL_PROPERTY_URL, content, __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_URL));
+ }
+
+ if (r == E_SUCCESS)
+ {
+ pFooter->SetItemEnabled(0, true);
+ }
+ }
+ }
+ delete pEnum;
+ }
+ }
+
+ if (pArgs != null)
+ {
+ pArgs->RemoveAll(true);
+ delete pArgs;
+ }
+}
+
+void
+ContactEditorForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+}
+
+void
+ContactEditorForm::OnKeypadWillOpen(Tizen::Ui::Control& source)
+{
+ ShowKeypad();
+}
+
+void
+ContactEditorForm::OnKeypadOpened(Tizen::Ui::Control& source)
+{
+ Rectangle clientBounds = GetClientAreaBounds();
+
+ __pTableView->SetSize(clientBounds.width, clientBounds.height);
+}
+
+void
+ContactEditorForm::OnKeypadClosed(Tizen::Ui::Control& source)
+{
+ HideKeypad();
+
+ if (__pMoreInformationItem != null)
+ {
+ Point contextMenuPos;
+
+ contextMenuPos.x = __pMoreInformationItem->GetWidth() / 2;
+ contextMenuPos.y = GetClientAreaBounds().y + __pMoreInformationItem->GetY() + source.GetY() - __scrolledDistance;
+
+ ShowMoreInformationContextMenu(contextMenuPos);
+
+ __pMoreInformationItem = null;
+ }
+}
+
+void
+ContactEditorForm::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction)
+{
+}
+
+void
+ContactEditorForm::OnKeypadBoundsChanged(Tizen::Ui::Control& source)
+{
+ Rectangle clientBounds = GetClientAreaBounds();
+
+ __pTableView->SetSize(clientBounds.width, clientBounds.height);
+}
+
+void
+ContactEditorForm::OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem *pItem, Tizen::Ui::Controls::TableViewItemStatus status)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ if (status == TABLE_VIEW_ITEM_STATUS_SELECTED && groupIndex == TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX)
+ {
+ if (__pCurrentFocusedItem != null)
+ {
+ SetFocus();
+ }
+
+ if (itemIndex == 0)
+ {
+ if (__pPresentationModel->GetCategoryCount() > 0)
+ {
+ IList* pCategoryList = __pPresentationModel->GetAssignedCategoryIdListN();
+
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_SELECTOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pCategoryList);
+ }
+ else
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT));
+ }
+
+ return;
+ }
+ else if (itemIndex == 1)
+ {
+ LaunchAppControl(PROVIDER_ID_FILEMANAGER, OPERATION_ID_PICK);
+ }
+ }
+}
+
+void
+ContactEditorForm::OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem *pContextItem, bool activated)
+{
+}
+
+void
+ContactEditorForm::OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem *pItem, Tizen::Ui::Controls::TableViewItemStatus status)
+{
+}
+
+int
+ContactEditorForm::GetGroupCount(void)
+{
+ return GROUP_ITEM_COUNT;
+}
+
+int
+ContactEditorForm::GetItemCount(int groupIndex)
+{
+ int itemCount = 0;
+
+ switch (groupIndex)
+ {
+ case TABLE_VIEW_THUMBNAIL_FIELD_INDEX:
+ {
+ itemCount = 1;
+ }
+ break;
+ case TABLE_VIEW_NAME_FIELD_INDEX:
+ {
+ itemCount = NAME_FIELD_ITEM_COUNT;
+ }
+ break;
+ case TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX:
+ {
+ itemCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER) + 1;
+
+ if (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER) > 1)
+ {
+ __isDefaultPhoneNumberButtonEnabled = true;
+ itemCount++;
+ }
+ else
+ {
+ __isDefaultPhoneNumberButtonEnabled = false;
+ }
+ }
+ break;
+ case TABLE_VIEW_EMAIL_FIELD_INDEX:
+ {
+ itemCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_EMAIL) + 1;
+ }
+ break;
+ case TABLE_VIEW_ADDRESS_FIELD_INDEX:
+ {
+ itemCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_ADDRESS) + 1;
+ }
+ break;
+ case TABLE_VIEW_IM_ADDRESS_FIELD_INDEX:
+ {
+ itemCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_IM_ADDRESS);
+
+ if ((itemCount == 0 && __pImAddressFieldItem->GetCount() > 0) || itemCount > 0)
+ {
+ itemCount++;
+ }
+ }
+ break;
+ case TABLE_VIEW_URL_FIELD_INDEX:
+ {
+ itemCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_URL);
+
+ if ((itemCount == 0 && __pUrlFieldItem->GetCount() > 0) || itemCount > 0)
+ {
+ itemCount++;
+ }
+ }
+ break;
+ case TABLE_VIEW_BIRTHDAY_FIELD_INDEX:
+ {
+ DateTime birthday;
+ if (__pPresentationModel->GetBirthday(birthday) != E_SUCCESS)
+ {
+ itemCount = 0;
+ }
+ else
+ {
+ itemCount = 1;
+ }
+ }
+ break;
+ case TABLE_VIEW_NOTE_FIELD_INDEX:
+ {
+ if (__pPresentationModel->GetValue(DETAIL_PROPERTY_NOTE).IsEmpty() == false || __pNoteFieldItem != null )
+ {
+ itemCount = 1;
+ }
+ else
+ {
+ itemCount = 0;
+ }
+ }
+ break;
+ case TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX:
+ {
+ itemCount = 2;
+ }
+ break;
+ case TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX:
+ {
+ if (IsMoreInformationButtonVisible())
+ {
+ itemCount = 1;
+ }
+ else
+ {
+ itemCount = 0;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ return itemCount;
+}
+
+int
+ContactEditorForm::GetDefaultGroupItemHeight(void)
+{
+ return H_EMPTY_SPACE;
+}
+
+int
+ContactEditorForm::GetDefaultItemHeight(void)
+{
+ return H_ITEM;
+}
+
+TableViewGroupItem*
+ContactEditorForm::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ int groupItemHeight = H_EMPTY_SPACE;
+
+ if (groupIndex == TABLE_VIEW_THUMBNAIL_FIELD_INDEX || (groupIndex > TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX && groupIndex < TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX) || groupIndex == TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX)
+ {
+ groupItemHeight = 0;
+ }
+
+ TableViewGroupItem* pGroupItem = new (std::nothrow) TableViewGroupItem();
+ pGroupItem->Construct(Dimension(itemWidth, groupItemHeight));
+ pGroupItem->SetBackgroundColor(Color(COLOR_TABLE_VIEW_BG), TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ pGroupItem->SetEnabled(false);
+
+ Panel* pPanel = new (std::nothrow) Panel();
+ pPanel->Construct(Rectangle(0, -(H_DIVIDER), itemWidth, groupItemHeight + H_DIVIDER));
+ pPanel->SetBackgroundColor(Color(COLOR_TABLE_VIEW_BG));
+
+ pGroupItem->AddControl(*pPanel);
+
+ return pGroupItem;
+}
+
+bool
+ContactEditorForm::DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+TableViewItem*
+ContactEditorForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ TableViewItem* pItem = null;
+
+ switch (groupIndex)
+ {
+ case TABLE_VIEW_THUMBNAIL_FIELD_INDEX:
+ {
+ pItem = GetThumbnailField(itemWidth);
+ }
+ break;
+ case TABLE_VIEW_NAME_FIELD_INDEX:
+ {
+ pItem = GetNameFields(itemWidth);
+ }
+ break;
+ case TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX:
+ {
+ if ((itemIndex == __pTableView->GetItemCountAt(groupIndex) - 1) && __isDefaultPhoneNumberButtonEnabled == true)
+ {
+ pItem = GetDefaultPhoneNumberItem(itemWidth);
+ break;
+ }
+
+ pItem = GetPhoneNumberFields(itemIndex, itemWidth);
+ }
+ break;
+ case TABLE_VIEW_EMAIL_FIELD_INDEX:
+ {
+ pItem = GetEmailFields(itemIndex, itemWidth);
+ }
+ break;
+ case TABLE_VIEW_ADDRESS_FIELD_INDEX:
+ {
+ pItem = GetAddressFields(itemIndex, itemWidth);
+ }
+ break;
+ case TABLE_VIEW_IM_ADDRESS_FIELD_INDEX:
+ {
+ pItem = GetImAddressFields(itemIndex, itemWidth);
+ }
+ break;
+ case TABLE_VIEW_URL_FIELD_INDEX:
+ {
+ pItem = GetUrlFields(itemIndex, itemWidth);
+ }
+ break;
+ case TABLE_VIEW_BIRTHDAY_FIELD_INDEX:
+ {
+ pItem = GetBirthdayField(itemWidth);
+ }
+ break;
+ case TABLE_VIEW_NOTE_FIELD_INDEX:
+ {
+ pItem = GetNoteField(itemWidth);
+ }
+ break;
+ case TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX:
+ {
+ switch (itemIndex)
+ {
+ case 0:
+ pItem = GetGroupsField(itemWidth);
+ break;
+ case 1:
+ pItem = GetRingtoneField(itemWidth);
+ break;
+ default:
+ break;
+ }
+ }
+ break;
+ case TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX:
+ {
+ if (IsMoreInformationButtonVisible())
+ {
+ pItem = GetMoreInformationField(itemWidth);
+ }
+ else
+ {
+ pItem = null;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ return pItem;
+}
+
+bool
+ContactEditorForm::DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ if (groupIndex == TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX)
+ {
+ if ((itemIndex == __pPhoneNumberFieldItem->GetCount()) && __isDefaultPhoneNumberButtonEnabled == true)
+ {
+ delete pItem;
+ }
+
+ return true;
+ }
+
+ if ((groupIndex > TABLE_VIEW_NAME_FIELD_INDEX && groupIndex < TABLE_VIEW_BIRTHDAY_FIELD_INDEX) || groupIndex == TABLE_VIEW_NOTE_FIELD_INDEX)
+ {
+ return true;
+ }
+ else if (groupIndex == TABLE_VIEW_NAME_FIELD_INDEX)
+ {
+ SaveNameFields();
+ __pNameFieldItem = null;
+ }
+
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+void
+ContactEditorForm::UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem *pItem)
+{
+}
+
+void
+ContactEditorForm::UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem *pItem)
+{
+ if (pItem == null)
+ {
+ return;
+ }
+
+ switch (groupIndex)
+ {
+ case TABLE_VIEW_THUMBNAIL_FIELD_INDEX:
+ {
+ pItem->RemoveAllControls();
+ AddThumbnailControls(*pItem);
+ pItem->Invalidate(true);
+ }
+ break;
+ case TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX:
+ {
+ String valueString;
+ Label* pLabel = static_cast<Label *>(pItem->GetControl(2));
+
+ if (pLabel == null)
+ {
+ return;
+ }
+
+ if (itemIndex == 0)
+ {
+ valueString = __pPresentationModel->GetValue(DETAIL_PROPERTY_GROUP);
+ if (valueString.IsEmpty() == true)
+ {
+ valueString = ResourceManager::GetString(L"IDS_PB_BODY_NOT_ASSIGNED");
+ }
+ }
+ else
+ {
+ String ringtoneName = __pPresentationModel->GetValue(DETAIL_PROPERTY_RINGTONE);
+ int index = 0;
+
+ ringtoneName.LastIndexOf(L"/", ringtoneName.GetLength() - 1, index);
+
+ if (index != 0)
+ {
+ ringtoneName.SubString(index + 1, valueString);
+ }
+ }
+
+ pLabel->SetText(valueString);
+ pLabel->Invalidate(false);
+ }
+ break;
+ case TABLE_VIEW_BIRTHDAY_FIELD_INDEX:
+ {
+ DateTime birthdayDate;
+ EditDate* pBirthday = static_cast<EditDate *>(pItem->GetControl(1));
+
+ if (pBirthday == null)
+ {
+ return;
+ }
+
+ __pPresentationModel->GetBirthday(birthdayDate);
+
+ pBirthday->SetDate(birthdayDate);
+ pBirthday->Invalidate(false);
+ }
+ break;
+ case TABLE_VIEW_NOTE_FIELD_INDEX:
+ {
+ Control* pNoteField = pItem->GetControl(0);
+
+ if (pNoteField == null)
+ {
+ return;
+ }
+
+ pItem->SetSize(pItem->GetWidth(), pNoteField->GetHeight());
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetThumbnailField(int itemWidth)
+{
+ TableViewItem* pThumbnailItem = new (std::nothrow) TableViewItem();
+ pThumbnailItem->Construct(Dimension(itemWidth, W_THUMBNAIL + H_THUMBNAIL_GAP));
+ pThumbnailItem->SetBackgroundColor(Color(0), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ AddThumbnailControls(*pThumbnailItem);
+
+ return pThumbnailItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetNameFields(int itemWidth)
+{
+ int itemHeight = H_ITEM;
+
+ if (__isExpandable == true)
+ {
+ itemHeight = H_EXPANDED_NAME_FIELDS;
+
+ if (__isJobTitleEnabled == true)
+ {
+ itemHeight += H_ITEM;
+ }
+
+ if (__isDepartmentEnabled)
+ {
+ itemHeight += H_ITEM;
+ }
+ }
+
+ __pNameFieldItem = new (std::nothrow) TableViewItem();
+ __pNameFieldItem->Construct(Dimension(itemWidth, itemHeight), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ __pNameFieldItem->SetBackgroundColor(Color(0), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ Rectangle itemBounds(W_ITEM_GAP, 0, itemWidth - (W_ITEM_GAP * 3) - H_BUTTON, H_ITEM);
+
+ if (__isExpandable == true)
+ {
+ EditField* pFirstName = new (std::nothrow) EditField();
+ pFirstName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
+ pFirstName->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_FIRST_NAME"));
+ pFirstName->AddFocusEventListener(*this);
+ pFirstName->AddKeypadEventListener(*this);
+ pFirstName->SetName(ResourceManager::GetString(L"IDS_PB_BODY_FIRST_NAME"));
+ pFirstName->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_FIRST_NAME));
+ pFirstName->AddTextEventListener(*this);
+
+ __pNameFieldItem->AddControl(*pFirstName);
+
+ itemBounds.y += pFirstName->GetHeight();
+ EditField* pMiddleName = new (std::nothrow) EditField();
+ pMiddleName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
+ pMiddleName->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_MIDDLE_NAME"));
+ pMiddleName->AddFocusEventListener(*this);
+ pMiddleName->AddKeypadEventListener(*this);
+ pMiddleName->SetName(ResourceManager::GetString(L"IDS_PB_BODY_MIDDLE_NAME"));
+ pMiddleName->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_MIDDLE_NAME));
+
+ __pNameFieldItem->AddControl(*pMiddleName);
+
+ itemBounds.y += pMiddleName->GetHeight();
+ EditField* pLastName = new (std::nothrow) EditField();
+ pLastName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
+ pLastName->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_LAST_NAME"));
+ pLastName->AddFocusEventListener(*this);
+ pLastName->AddKeypadEventListener(*this);
+ pLastName->SetName(ResourceManager::GetString(L"IDS_PB_BODY_LAST_NAME"));
+ pLastName->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_LAST_NAME));
+ pLastName->AddTextEventListener(*this);
+
+ __pNameFieldItem->AddControl(*pLastName);
+
+ itemBounds.y += pLastName->GetHeight();
+ EditField* pSuffix = new (std::nothrow) EditField();
+ pSuffix->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
+ pSuffix->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_SUFFIX"));
+ pSuffix->AddFocusEventListener(*this);
+ pSuffix->AddKeypadEventListener(*this);
+ pSuffix->SetName(ResourceManager::GetString(L"IDS_PB_BODY_SUFFIX"));
+ pSuffix->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_NAME_SUFFIX));
+
+ __pNameFieldItem->AddControl(*pSuffix);
+
+ itemBounds.y += pSuffix->GetHeight();
+ EditField* pNickName = new (std::nothrow) EditField();
+ pNickName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
+ pNickName->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_NICKNAME"));
+ pNickName->AddFocusEventListener(*this);
+ pNickName->AddKeypadEventListener(*this);
+ pNickName->SetName(ResourceManager::GetString(L"IDS_PB_BODY_NICKNAME"));
+ pNickName->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_NICK_NAME));
+
+ __pNameFieldItem->AddControl(*pNickName);
+
+ itemBounds.y += pNickName->GetHeight();
+ if (__isJobTitleEnabled == true)
+ {
+ EditField* pJobTitle = new (std::nothrow) EditField();
+ pJobTitle->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
+ pJobTitle->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_JOB_TITLE"));
+ pJobTitle->AddFocusEventListener(*this);
+ pJobTitle->AddKeypadEventListener(*this);
+ pJobTitle->SetName(ResourceManager::GetString(L"IDS_PB_BODY_JOB_TITLE"));
+ pJobTitle->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_JOB_TITLE));
+
+ __pNameFieldItem->AddControl(*pJobTitle);
+
+ itemBounds.y += pJobTitle->GetHeight();
+ }
+
+ if (__isDepartmentEnabled == true)
+ {
+ EditField* pDepartment = new (std::nothrow) EditField();
+ pDepartment->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
+ pDepartment->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_DEPARTMENT"));
+ pDepartment->AddFocusEventListener(*this);
+ pDepartment->AddKeypadEventListener(*this);
+ pDepartment->SetName(ResourceManager::GetString(L"IDS_PB_BODY_DEPARTMENT"));
+ pDepartment->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_DEPARTMENT));
+
+ __pNameFieldItem->AddControl(*pDepartment);
+
+ itemBounds.y += pDepartment->GetHeight();
+ }
+
+ EditField* pCompanyName = new (std::nothrow) EditField();
+ pCompanyName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
+ pCompanyName->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_COMPANY"));
+ pCompanyName->AddFocusEventListener(*this);
+ pCompanyName->AddKeypadEventListener(*this);
+ pCompanyName->SetName(ResourceManager::GetString(L"IDS_PB_BODY_COMPANY"));
+ pCompanyName->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_COMPANY));
+
+ __pNameFieldItem->AddControl(*pCompanyName);
+ }
+ else
+ {
+ EditField* pName = new (std::nothrow) EditField();
+ pName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
+ pName->SetGuideText(ResourceManager::GetString(L"IDS_COM_BODY_DETAILS_NAME"));
+ pName->AddFocusEventListener(*this);
+ pName->AddKeypadEventListener(*this);
+ pName->SetName(ResourceManager::GetString(L"IDS_COM_BODY_DETAILS_NAME"));
+ pName->AddTextEventListener(*this);
+
+ String firstName(__pPresentationModel->GetValue(DETAIL_PROPERTY_FIRST_NAME));
+ String lastName(__pPresentationModel->GetValue(DETAIL_PROPERTY_LAST_NAME));
+
+ if (firstName.IsEmpty() == false)
+ {
+ pName->SetText(firstName);
+ }
+
+ if (lastName.IsEmpty() == false)
+ {
+ pName->AppendText(CHARACTER_SPACE + lastName);
+ }
+
+ __pNameFieldItem->AddControl(*pName);
+ }
+
+ Button* pButtonExpand = new (std::nothrow) Button();
+ pButtonExpand->Construct(Rectangle(itemWidth - (H_BUTTON + W_ITEM_GAP), (H_ITEM - H_BUTTON) / 2, H_BUTTON, H_BUTTON));
+ pButtonExpand->SetActionId(IDA_BUTTON_EXPANDABLE);
+ pButtonExpand->AddActionEventListener(*this);
+
+ Bitmap* pBitmap = null;
+ Bitmap* pBitmapPressed = null;
+
+ if (__isExpandable == true)
+ {
+ pBitmap = ResourceManager::GetBitmapN(IDB_EXPAND_OPENED);
+ pBitmapPressed = ResourceManager::GetBitmapN(IDB_EXPAND_OPENED_PRESSED);
+ }
+ else
+ {
+ pBitmap = ResourceManager::GetBitmapN(IDB_EXPAND_CLOSED);
+ pBitmapPressed = ResourceManager::GetBitmapN(IDB_EXPAND_CLOSED_PRESSED);
+ }
+
+ if (pBitmap != null)
+ {
+ pButtonExpand->SetNormalBitmap(Point(0, 0), *pBitmap);
+ }
+
+ if (pBitmapPressed != null)
+ {
+ pButtonExpand->SetPressedBitmap(Point(0, 0), *pBitmapPressed);
+ }
+
+ delete pBitmap;
+ delete pBitmapPressed;
+
+ pBitmap = ResourceManager::GetBitmapN(IDB_EXPAND_BUTTON_NORMAL);
+ pBitmapPressed = ResourceManager::GetBitmapN(IDB_EXPAND_BUTTON_PRESSED);
+
+ if (pBitmap != null)
+ {
+ pButtonExpand->SetNormalBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+ if (pBitmapPressed != null)
+ {
+ pButtonExpand->SetPressedBackgroundBitmap(*pBitmapPressed);
+ delete pBitmapPressed;
+ }
+
+ __pNameFieldItem->AddControl(*pButtonExpand);
+
+ return __pNameFieldItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetInputFieldN(int groupIndex, int itemIndex, int itemWidth, Tizen::Ui::Controls::EditFieldStyle style, const Tizen::Base::String& titleText, const Tizen::Base::String& guideText, const Tizen::Base::String& text, bool isDeleteButton)
+{
+ TableViewItem* pTableViewItem = new (std::nothrow) TableViewItem();
+ pTableViewItem->Construct(Dimension(itemWidth, H_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ pTableViewItem->SetBackgroundColor(Color(0), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ EditField* pInputField = new (std::nothrow) EditField();
+ pInputField->Construct(Rectangle(W_ITEM_GAP, 0, itemWidth - (W_ITEM_GAP * 4) - H_BUTTON - W_TYPE_BUTTON, H_ITEM), style, INPUT_STYLE_OVERLAY);
+ pInputField->SetGuideText(guideText);
+ pInputField->SetText(text);
+ pInputField->AddKeypadEventListener(*this);
+ pInputField->AddFocusEventListener(*this);
+ pInputField->AddTextEventListener(*this);
+
+ int parsedItemIndex = 0;
+ parsedItemIndex |= (groupIndex << TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT);
+ parsedItemIndex |= (groupIndex << TABLE_VIEW_GROUP_INDEX_SHIFT);
+ parsedItemIndex |= itemIndex;
+
+ pInputField->SetName(Integer::ToString(parsedItemIndex));
+ pTableViewItem->AddControl(*pInputField);
+
+ Button *pButtonType = new (std::nothrow) Button();
+ pButtonType->Construct(Rectangle(pInputField->GetX() + pInputField->GetWidth() + W_ITEM_GAP, (H_ITEM - H_BUTTON) / 2, W_TYPE_BUTTON, H_BUTTON));
+ pButtonType->SetText(titleText);
+ pButtonType->AddTouchEventListener(*this);
+ pButtonType->SetName(Integer::ToString(parsedItemIndex));
+
+ pTableViewItem->AddControl(*pButtonType);
+
+ Button *pButtonDelete = new (std::nothrow) Button();
+ pButtonDelete->Construct(Rectangle(itemWidth - H_BUTTON - W_ITEM_GAP, (H_ITEM - H_BUTTON) / 2, H_BUTTON, H_BUTTON));
+ Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_MINUS);
+ Bitmap* pBitmapPressed = ResourceManager::GetBitmapN(IDB_BUTTON_MINUS_PRESSED);
+
+ if (pBitmap != null)
+ {
+ pButtonDelete->SetNormalBitmap(Point(0, 0), *pBitmap);
+ delete pBitmap;
+ }
+ if (pBitmapPressed != null)
+ {
+ pButtonDelete->SetPressedBitmap(Point(0, 0), *pBitmapPressed);
+ delete pBitmapPressed;
+ }
+
+ pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_DELETE_NORMAL);
+ pBitmapPressed = ResourceManager::GetBitmapN(IDB_BUTTON_DELETE_PRESSED);
+
+ if (pBitmap != null)
+ {
+ pButtonDelete->SetNormalBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+ if (pBitmapPressed != null)
+ {
+ pButtonDelete->SetPressedBackgroundBitmap(*pBitmapPressed);
+ delete pBitmapPressed;
+ }
+
+ int actionId = 0;
+ actionId |= TABLE_VIEW_DELETE_INPUT_FIELD_ID;
+ actionId |= (groupIndex << TABLE_VIEW_GROUP_INDEX_SHIFT);
+ actionId |= itemIndex;
+
+ pButtonDelete->SetActionId(actionId);
+ pButtonDelete->AddActionEventListener(*this);
+
+ pTableViewItem->AddControl(*pButtonDelete);
+
+ if (isDeleteButton == false)
+ {
+ pButtonDelete->SetShowState(false);
+ }
+
+ return pTableViewItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetPhoneNumberFields(int itemIndex, int itemWidth)
+{
+ if (__pPhoneNumberFieldItem->GetCount() == 0)
+ {
+ int phoneNumberCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER);
+ String guideText = ResourceManager::GetString(L"IDS_PB_BODY_NUMBER");
+ String defaultPhoneNumber = __pPresentationModel->GetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER);
+ int defaultNumberIndex = 0;
+
+ for (int i = 0; i < phoneNumberCount; i++)
+ {
+ String typeString = __pPresentationModel->GetType(DETAIL_PROPERTY_PHONE_NUMBER, i);
+ String phoneNumberString = __pPresentationModel->GetValue(DETAIL_PROPERTY_PHONE_NUMBER, i);
+
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX, i, itemWidth, EDIT_FIELD_STYLE_PHONE_NUMBER, typeString, guideText, phoneNumberString, true);
+ pItem->SetName(Integer::ToString(__pPresentationModel->GetPhoneNumberType(i)));
+
+ if (phoneNumberString.Equals(defaultPhoneNumber, true) == true)
+ {
+ defaultNumberIndex = i;
+ }
+ __pPhoneNumberFieldItem->Add(*pItem);
+ }
+
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX, phoneNumberCount, itemWidth, EDIT_FIELD_STYLE_PHONE_NUMBER, __pPresentationModel->GetPhoneNumberTypeString(DETAIL_PHONENUMBER_TYPE_MOBILE), guideText);
+ pItem->SetName(Integer::ToString(DETAIL_PHONENUMBER_TYPE_MOBILE));
+
+ __pPhoneNumberFieldItem->Add(*pItem);
+
+ SetAsDefaultPhoneNumber(defaultNumberIndex);
+ }
+
+ if (__pPhoneNumberFieldItem->GetCount() != (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER) + 1))
+ {
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX, __pPhoneNumberFieldItem->GetCount(), itemWidth, EDIT_FIELD_STYLE_PHONE_NUMBER, __pPresentationModel->GetPhoneNumberTypeString(DETAIL_PHONENUMBER_TYPE_MOBILE), ResourceManager::GetString(L"IDS_PB_BODY_NUMBER"));
+ pItem->SetName(Integer::ToString(DETAIL_PHONENUMBER_TYPE_MOBILE));
+
+ __pPhoneNumberFieldItem->Add(*pItem);
+ }
+
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pPhoneNumberFieldItem->GetAt(itemIndex));
+ if (pItem == null)
+ {
+ return null;
+ }
+
+ return pItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetEmailFields(int itemIndex, int itemWidth)
+{
+ if (__pEmailFieldItem->GetCount() == 0)
+ {
+ int emailCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_EMAIL);
+ String guideText = ResourceManager::GetString(L"IDS_COM_BODY_EMAIL");
+
+ for (int i = 0; i < emailCount; i++)
+ {
+ String typeString = __pPresentationModel->GetType(DETAIL_PROPERTY_EMAIL, i);
+ String emailString = __pPresentationModel->GetValue(DETAIL_PROPERTY_EMAIL, i);
+
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_EMAIL_FIELD_INDEX, i, itemWidth, EDIT_FIELD_STYLE_EMAIL, typeString, guideText, emailString, true);
+ pItem->SetName(Integer::ToString(__pPresentationModel->GetEmailType(i)));
+
+ __pEmailFieldItem->Add(*pItem);
+ }
+
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_EMAIL_FIELD_INDEX, emailCount, itemWidth, EDIT_FIELD_STYLE_EMAIL, __pPresentationModel->GetEmailTypeString(DETAIL_EMAIL_TYPE_HOME), guideText);
+ pItem->SetName(Integer::ToString(DETAIL_EMAIL_TYPE_HOME));
+
+ __pEmailFieldItem->Add(*pItem);
+ }
+
+ if (__pEmailFieldItem->GetCount() != (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_EMAIL) + 1))
+ {
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_EMAIL_FIELD_INDEX, __pEmailFieldItem->GetCount(), itemWidth, EDIT_FIELD_STYLE_EMAIL, __pPresentationModel->GetEmailTypeString(DETAIL_EMAIL_TYPE_HOME), ResourceManager::GetString(L"IDS_COM_BODY_EMAIL"));
+ pItem->SetName(Integer::ToString(DETAIL_EMAIL_TYPE_HOME));
+
+ __pEmailFieldItem->Add(*pItem);
+ }
+
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pEmailFieldItem->GetAt(itemIndex));
+ if (pItem == null)
+ {
+ return null;
+ }
+
+ return pItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetAddressFields(int itemIndex, int itemWidth)
+{
+ if (__pAddressFieldItem->GetCount() == 0)
+ {
+ int addressCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_ADDRESS);
+ String guideText = ResourceManager::GetString(L"IDS_PB_BODY_ADDRESS");
+
+ for (int i = 0; i < addressCount; i++)
+ {
+ String typeString = __pPresentationModel->GetType(DETAIL_PROPERTY_ADDRESS, i);
+ String addressString = __pPresentationModel->GetValue(DETAIL_PROPERTY_ADDRESS, i);
+
+ TableViewItem* pItem= GetInputFieldN(TABLE_VIEW_ADDRESS_FIELD_INDEX, i, itemWidth, EDIT_FIELD_STYLE_NORMAL, typeString, guideText, addressString, true);
+ pItem->SetName(Integer::ToString(__pPresentationModel->GetAddressType(DETAIL_PROPERTY_ADDRESS, i)));
+
+ __pAddressFieldItem->Add(*pItem);
+ }
+
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_ADDRESS_FIELD_INDEX, addressCount, itemWidth, EDIT_FIELD_STYLE_NORMAL, ResourceManager::GetString(L"IDS_PB_BODY_HOME"), guideText);
+ pItem->SetName(Integer::ToString(DETAIL_ADDRESS_TYPE_HOME));
+
+ __pAddressFieldItem->Add(*pItem);
+ }
+
+ if (__pAddressFieldItem->GetCount() != (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_ADDRESS) + 1))
+ {
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_ADDRESS_FIELD_INDEX, __pAddressFieldItem->GetCount(), itemWidth, EDIT_FIELD_STYLE_NORMAL, ResourceManager::GetString(L"IDS_PB_BODY_HOME"), ResourceManager::GetString(L"IDS_PB_BODY_ADDRESS"));
+ pItem->SetName(Integer::ToString(DETAIL_ADDRESS_TYPE_HOME));
+
+ __pAddressFieldItem->Add(*pItem);
+ }
+
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pAddressFieldItem->GetAt(itemIndex));
+ if (pItem == null)
+ {
+ return null;
+ }
+
+ return pItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetImAddressFields(int itemIndex, int itemWidth)
+{
+ if (__pImAddressFieldItem->GetCount() == 0)
+ {
+ int imCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_IM_ADDRESS);
+ String guideText = ResourceManager::GetString(L"IDS_PB_HEADER_INSTANT_MESSENGER_ABB");
+
+ for (int i = 0; i < imCount; i++)
+ {
+ String typeString = __pPresentationModel->GetType(DETAIL_PROPERTY_IM_ADDRESS, i);
+ String imString = __pPresentationModel->GetValue(DETAIL_PROPERTY_IM_ADDRESS, i);
+
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_IM_ADDRESS_FIELD_INDEX, i, itemWidth, EDIT_FIELD_STYLE_NORMAL, typeString, guideText, imString, true);
+ pItem->SetName(Integer::ToString(__pPresentationModel->GetImAddressType(i)));
+
+ __pImAddressFieldItem->Add(*pItem);
+ }
+
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_IM_ADDRESS_FIELD_INDEX, imCount, itemWidth, EDIT_FIELD_STYLE_NORMAL, IM_ADDRESS_YAHOO, guideText);
+ pItem->SetName(Integer::ToString(DETAIL_IM_ADDRESS_TYPE_YAHOO));
+
+ __pImAddressFieldItem->Add(*pItem);
+ }
+
+ if (__pImAddressFieldItem->GetCount() != (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_IM_ADDRESS) + 1))
+ {
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_IM_ADDRESS_FIELD_INDEX, __pImAddressFieldItem->GetCount(), itemWidth, EDIT_FIELD_STYLE_NORMAL, IM_ADDRESS_YAHOO, ResourceManager::GetString(L"IDS_PB_HEADER_INSTANT_MESSENGER_ABB"));
+ pItem->SetName(Integer::ToString(DETAIL_IM_ADDRESS_TYPE_YAHOO));
+
+ __pImAddressFieldItem->Add(*pItem);
+ }
+
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pImAddressFieldItem->GetAt(itemIndex));
+ if (pItem == null)
+ {
+ return null;
+ }
+
+ return pItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetUrlFields(int itemIndex, int itemWidth)
+{
+ if (__pUrlFieldItem->GetCount() == 0)
+ {
+ int urlCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_URL);
+ String guideText = ResourceManager::GetString(L"IDS_PB_BODY_URL");
+
+ for (int i = 0; i < urlCount; i++)
+ {
+ String typeString = __pPresentationModel->GetType(DETAIL_PROPERTY_URL, i);
+ String urlString = __pPresentationModel->GetValue(DETAIL_PROPERTY_URL, i);
+
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_URL_FIELD_INDEX, i, itemWidth, EDIT_FIELD_STYLE_URL, typeString, guideText, urlString, true);
+ pItem->SetName(Integer::ToString(__pPresentationModel->GetUrlType(i)));
+
+ __pUrlFieldItem->Add(*pItem);
+ }
+
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_URL_FIELD_INDEX, urlCount, itemWidth, EDIT_FIELD_STYLE_URL, __pPresentationModel->GetUrlTypeString(DETAIL_URL_TYPE_HOME), guideText);
+ pItem->SetName(Integer::ToString(DETAIL_URL_TYPE_HOME));
+
+ __pUrlFieldItem->Add(*pItem);
+ }
+
+ if (__pUrlFieldItem->GetCount() != (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_URL) + 1))
+ {
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_URL_FIELD_INDEX, __pUrlFieldItem->GetCount(), itemWidth, EDIT_FIELD_STYLE_URL, __pPresentationModel->GetUrlTypeString(DETAIL_URL_TYPE_HOME), ResourceManager::GetString(L"IDS_PB_BODY_URL"));
+ pItem->SetName(Integer::ToString(DETAIL_URL_TYPE_HOME));
+
+ __pUrlFieldItem->Add(*pItem);
+ }
+
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pUrlFieldItem->GetAt(itemIndex));
+ if (pItem == null)
+ {
+ return null;
+ }
+
+ return pItem;
+}
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetGroupsField(int itemWidth)
+{
+ TableViewItem* pGroupsItem = new (std::nothrow) TableViewItem();
+ pGroupsItem->Construct(Dimension(itemWidth, H_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+
+ Panel* pGroupStyle = new (std::nothrow) Panel();
+ pGroupStyle->Construct(Rectangle(0, 0, itemWidth, H_ITEM), GROUP_STYLE_TOP);
+ pGroupStyle->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND);
+ pGroupsItem->AddControl(*pGroupStyle);
+
+ Label* pLabelTitle = new (std::nothrow) Label();
+ pLabelTitle->Construct(Rectangle(0, 0, itemWidth, H_GROUP_RINGTONE_LABEL), ResourceManager::GetString(L"IDS_PB_BODY_GROUPS"));
+ pLabelTitle->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+
+ pGroupsItem->AddControl(*pLabelTitle);
+
+ String groupsName = __pPresentationModel->GetValue(DETAIL_PROPERTY_GROUP);
+ if (groupsName.IsEmpty() == true)
+ {
+ groupsName = ResourceManager::GetString(L"IDS_PB_BODY_NOT_ASSIGNED");
+ }
+
+ Label* pLabelGroupName = new (std::nothrow) Label();
+ pLabelGroupName->Construct(Rectangle(0, pLabelTitle->GetHeight(), itemWidth, H_GROUP_RINGTONE_LABEL), groupsName);
+ pLabelGroupName->SetTextColor(Color(COLOR_CONTENT_TEXT));
+ pLabelGroupName->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+
+ pGroupsItem->AddControl(*pLabelGroupName);
+
+ return pGroupsItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetBirthdayField(int itemWidth)
+{
+ DateTime birthdayDate;
+ EditDate* pBirthday = new (std::nothrow) EditDate();
+ pBirthday->Construct(Point(W_TITLE_LABEL, Y_EDITDATE));
+ pBirthday->AddDateChangeEventListener(*this);
+
+ __pPresentationModel->GetBirthday(birthdayDate);
+ pBirthday->SetDate(birthdayDate);
+
+ TableViewItem* pBirthdayItem = new (std::nothrow) TableViewItem();
+ pBirthdayItem->Construct(Dimension(itemWidth, H_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ pBirthdayItem->SetBackgroundColor(Color(0), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ Label* pLabelTitle = new (std::nothrow) Label();
+ pLabelTitle->Construct(Rectangle(0, 0, W_TITLE_LABEL, pBirthdayItem->GetHeight()), L"");
+ pLabelTitle->SetText(ResourceManager::GetString(L"IDS_PB_BODY_BIRTHDAY"));
+
+ pBirthdayItem->AddControl(*pLabelTitle);
+ pBirthdayItem->AddControl(*pBirthday);
+
+ Button* pClearButton = new (std::nothrow) Button();
+ pClearButton->Construct(Rectangle(itemWidth - (H_BUTTON * 2), (pBirthdayItem->GetHeight() - H_BUTTON) / 2, H_BUTTON, H_BUTTON));
+ pClearButton->SetActionId(IDA_BUTTON_BIRTHDAY_CLEAR);
+ pClearButton->AddActionEventListener(*this);
+
+ Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_RESET_NORMAL);
+ if (pBitmap != null)
+ {
+ pClearButton->SetNormalBitmap(Point(0, 0), *pBitmap);
+ delete pBitmap;
+ }
+ pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_RESET_PRESSED);
+ if (pBitmap != null)
+ {
+ pClearButton->SetPressedBitmap(Point(0, 0), *pBitmap);
+ delete pBitmap;
+ }
+
+ pBirthdayItem->AddControl(*pClearButton);
+
+ return pBirthdayItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetNoteField(int itemWidth)
+{
+ if (__pNoteFieldItem != null)
+ {
+ return __pNoteFieldItem;
+ }
+
+ __pNoteFieldItem = new (std::nothrow) TableViewItem();
+ __pNoteFieldItem->Construct(Dimension(itemWidth, H_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ __pNoteFieldItem->SetBackgroundColor(Color(0), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ ExpandableEditArea* pNoteEditArea = new (std::nothrow) ExpandableEditArea();
+ pNoteEditArea->Construct(Rectangle(0, 0, itemWidth, H_ITEM), EXPANDABLE_EDIT_AREA_STYLE_NORMAL, EXPANDABLE_EDIT_AREA_TITLE_STYLE_TOP);
+ pNoteEditArea->SetTitleText(ResourceManager::GetString(L"IDS_PB_BODY_NOTE"));
+ pNoteEditArea->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_NOTE));
+ pNoteEditArea->AddExpandableEditAreaEventListener(*this);
+ pNoteEditArea->AddKeypadEventListener(*this);
+ pNoteEditArea->AddFocusEventListener(*this);
+
+ __pNoteFieldItem->AddControl(*pNoteEditArea);
+
+ return __pNoteFieldItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetRingtoneField(int itemWidth)
+{
+ TableViewItem* pRingtoneItem = new (std::nothrow) TableViewItem();
+ pRingtoneItem->Construct(Dimension(itemWidth, H_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+
+ Panel* pGroupStyle = new (std::nothrow) Panel();
+ pGroupStyle->Construct(Rectangle(0, 0, itemWidth, H_ITEM), GROUP_STYLE_BOTTOM);
+ pGroupStyle->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND);
+ pRingtoneItem->AddControl(*pGroupStyle);
+
+ Label* pLabelTitle = new (std::nothrow) Label();
+ pLabelTitle->Construct(Rectangle(0, 0, itemWidth, H_GROUP_RINGTONE_LABEL), ResourceManager::GetString(L"IDS_PB_BODY_RINGTONE"));
+ pLabelTitle->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+
+ pRingtoneItem->AddControl(*pLabelTitle);
+
+ String ringtoneName = __pPresentationModel->GetValue(DETAIL_PROPERTY_RINGTONE);
+ String trimmedPath;
+ int index = 0;
+
+ ringtoneName.LastIndexOf(L"/", ringtoneName.GetLength() - 1, index);
+
+ if (index != 0)
+ {
+ ringtoneName.SubString(index + 1, trimmedPath);
+ }
+
+ Label* pLabelRingToneName = new (std::nothrow) Label();
+ pLabelRingToneName->Construct(Rectangle(0, pLabelTitle->GetHeight(), itemWidth, H_GROUP_RINGTONE_LABEL), trimmedPath);
+ pLabelRingToneName->SetTextColor(Color(COLOR_CONTENT_TEXT));
+ pLabelRingToneName->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+
+ pRingtoneItem->AddControl(*pLabelRingToneName);
+
+ return pRingtoneItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetMoreInformationField(int itemWidth)
+{
+ TableViewItem* pMoreInformationItem = new (std::nothrow) TableViewItem();
+ pMoreInformationItem->Construct(Dimension(itemWidth, H_DESCRIPTION_CONTAINER));
+ pMoreInformationItem->SetBackgroundColor(Color(COLOR_TABLE_VIEW_BG), TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ pMoreInformationItem->SetBackgroundColor(Color(COLOR_TABLE_VIEW_BG), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ Panel* pPanel = new (std::nothrow) Panel();
+ pPanel->Construct(Rectangle(0, -(H_DIVIDER), itemWidth, H_DESCRIPTION_CONTAINER + H_DIVIDER));
+ pPanel->SetBackgroundColor(Color(COLOR_TABLE_VIEW_BG));
+
+ pMoreInformationItem->AddControl(*pPanel);
+
+ Button* pButtonMoreInformation = new (std::nothrow) Button();
+ pButtonMoreInformation->Construct(Rectangle(X_MORE_INFORMATION_BUTTON, Y_MORE_INFORMATION_BUTTON, itemWidth - (X_MORE_INFORMATION_BUTTON * 2), H_BUTTON));
+ pButtonMoreInformation->SetText(ResourceManager::GetString(L"IDS_KA_BODY_MORE_INFORMATION"));
+ pButtonMoreInformation->SetActionId(IDA_BUTTON_MORE_INFO);
+ pButtonMoreInformation->AddActionEventListener(*this);
+
+ pPanel->AddControl(*pButtonMoreInformation);
+
+ return pMoreInformationItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetDefaultPhoneNumberItem(int itemWidth)
+{
+ TableViewItem* pDefaultPhoneNumberItem = new (std::nothrow) TableViewItem();
+ pDefaultPhoneNumberItem->Construct(Dimension(itemWidth, H_ITEM));
+ pDefaultPhoneNumberItem->SetBackgroundColor(Color(0), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ Button* pButtonDefaultNumber = new (std::nothrow) Button();
+ pButtonDefaultNumber->Construct(Rectangle(X_MORE_INFORMATION_BUTTON, Y_MORE_INFORMATION_BUTTON, itemWidth - (X_MORE_INFORMATION_BUTTON * 2), H_BUTTON));
+ pButtonDefaultNumber->SetText(ResourceManager::GetString(L"IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"));
+ pButtonDefaultNumber->SetActionId(IDA_BUTTON_DEFAULT_PHONE_NUMBER);
+ pButtonDefaultNumber->AddActionEventListener(*this);
+
+ pDefaultPhoneNumberItem->AddControl(*pButtonDefaultNumber);
+
+ return pDefaultPhoneNumberItem;
+}
+
+result
+ContactEditorForm::DeleteInputField(int groupIndex, int itemIndex)
+{
+ result r = E_SUCCESS;
+ ArrayList* pFieldList = null;
+
+ switch (groupIndex)
+ {
+ case TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX:
+ {
+ pFieldList = __pPhoneNumberFieldItem;
+ }
+ break;
+ case TABLE_VIEW_EMAIL_FIELD_INDEX:
+ {
+ pFieldList = __pEmailFieldItem;
+ }
+ break;
+ case TABLE_VIEW_ADDRESS_FIELD_INDEX:
+ {
+ pFieldList = __pAddressFieldItem;
+ }
+ break;
+ case TABLE_VIEW_IM_ADDRESS_FIELD_INDEX:
+ {
+ pFieldList = __pImAddressFieldItem;
+ }
+ break;
+ case TABLE_VIEW_URL_FIELD_INDEX:
+ {
+ pFieldList = __pUrlFieldItem;
+ }
+ break;
+ default:
+ break;
+ }
+
+ TryReturn(pFieldList != null, E_FAILURE, "[E_FAILURE] Unable to delete the item.")
+
+ if (pFieldList->GetAt(itemIndex) == __pCurrentFocusedItem)
+ {
+ SetFocus();
+ HideKeypad();
+ }
+
+ __pTableView->RefreshItem(groupIndex, itemIndex, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
+ r = pFieldList->RemoveAt(itemIndex, true);
+
+ for (int i = itemIndex; i < pFieldList->GetCount(); i++)
+ {
+ TableViewItem* pItem = static_cast<TableViewItem *>(pFieldList->GetAt(i));
+ if (pItem == null)
+ {
+ return E_FAILURE;
+ }
+
+ int parsedIndex;
+ Button* pTypeButton = static_cast<Button*>(pItem->GetControl(1));
+ if (pTypeButton == null)
+ {
+ return E_FAILURE;
+ }
+
+ result r = Integer::Decode(pTypeButton->GetName(), parsedIndex);
+ if (r == E_NUM_FORMAT)
+ {
+ return E_FAILURE;
+ }
+ pTypeButton->SetName(Integer::ToString(parsedIndex - 1));
+
+ Button* pDeleteButton = static_cast<Button *>(pItem->GetControl(2));
+ if (pDeleteButton == null)
+ {
+ return E_FAILURE;
+ }
+ pDeleteButton->SetActionId(pDeleteButton->GetActionId() - 1);
+ }
+
+ SaveContactData(false);
+ SetSaveButtonEnabled(IsSaveContactValid());
+
+ if (groupIndex == TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX)
+ {
+ if (itemIndex == __pPresentationModel->GetDefaultNumberIndex())
+ {
+ if (itemIndex > 0)
+ {
+ SetAsDefaultPhoneNumber(itemIndex - 1);
+ }
+ else
+ {
+ SetAsDefaultPhoneNumber(itemIndex);
+ }
+ }
+ else if (itemIndex < __pPresentationModel->GetDefaultNumberIndex())
+ {
+ SetAsDefaultPhoneNumber(__pPresentationModel->GetDefaultNumberIndex() - 1);
+ }
+ }
+
+ if (__isDefaultPhoneNumberButtonEnabled == true && __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER) < 2)
+ {
+ __pTableView->RefreshItem(TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX, __pTableView->GetItemCountAt(TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX) - 1, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
+
+ __isDefaultPhoneNumberButtonEnabled = false;
+ }
+
+ return r;
+}
+
+void
+ContactEditorForm::AddThumbnailControls(Tizen::Ui::Controls::TableViewItem& item)
+{
+ int itemWidth = GetBounds().width;
+
+ Label* pLabelThumbnail = new (std::nothrow) Label();
+ pLabelThumbnail->Construct(Rectangle((itemWidth - W_THUMBNAIL) / 2, H_THUMBNAIL_GAP, W_THUMBNAIL, W_THUMBNAIL), L"");
+
+ item.AddControl(*pLabelThumbnail);
+
+ Bitmap* pBitmapItem = null;
+ Bitmap* pBitmapItemPressed = null;
+ Bitmap* pBitmapItemDisabled = null;
+
+ Button* pButtonAdd = new (std::nothrow) Button();
+ pButtonAdd->Construct(Rectangle(pLabelThumbnail->GetX() + ((pLabelThumbnail->GetWidth() - H_BUTTON) / 2), pLabelThumbnail->GetY() + ((pLabelThumbnail->GetHeight() - H_BUTTON) / 2), H_BUTTON, H_BUTTON));
+ pButtonAdd->SetActionId(IDA_BUTTON_THUMBNAIL_ADD);
+ pButtonAdd->AddActionEventListener(*this);
+
+ pBitmapItem = ResourceManager::GetBitmapN(IDB_BUTTON_ADD);
+ pBitmapItemPressed = ResourceManager::GetBitmapN(IDB_BUTTON_ADD_PRESSED);
+ pBitmapItemDisabled = ResourceManager::GetBitmapN(IDB_BUTTON_ADD_DISABLED);
+
+ if (pBitmapItem != null)
+ {
+ pButtonAdd->SetNormalBackgroundBitmap(*pBitmapItem);
+ delete pBitmapItem;
+ }
+ if (pBitmapItemPressed != null)
+ {
+ pButtonAdd->SetPressedBackgroundBitmap(*pBitmapItemPressed);
+ delete pBitmapItemPressed;
+ }
+ if (pBitmapItemDisabled != null)
+ {
+ pButtonAdd->SetDisabledBitmap(Point(0, 0), *pBitmapItemDisabled);
+ delete pBitmapItemDisabled;
+ }
+ item.AddControl(*pButtonAdd);
+
+ Button* pButtonDelete = new (std::nothrow) Button();
+ pButtonDelete->Construct(Rectangle(pLabelThumbnail->GetX() - W_THUMBNAIL_DELETE_BUTTON_GAP, pLabelThumbnail->GetY() - H_THUMBNAIL_DELETE_BUTTON_GAP, H_BUTTON, H_BUTTON));
+ pButtonDelete->SetActionId(IDA_BUTTON_THUMBNAIL_DELETE);
+ pButtonDelete->AddActionEventListener(*this);
+
+ pBitmapItem = ResourceManager::GetBitmapN(IDB_BUTTON_MINUS);
+ pBitmapItemPressed = ResourceManager::GetBitmapN(IDB_BUTTON_MINUS_PRESSED);
+
+ if (pBitmapItem != null)
+ {
+ pButtonDelete->SetNormalBitmap(Point(0, 0), *pBitmapItem);
+ delete pBitmapItem;
+ }
+ if (pBitmapItemPressed != null)
+ {
+ pButtonDelete->SetPressedBitmap(Point(0, 0), *pBitmapItemPressed);
+ delete pBitmapItemPressed;
+ }
+
+ pBitmapItem = ResourceManager::GetBitmapN(IDB_BUTTON_DELETE_NORMAL);
+ pBitmapItemPressed = ResourceManager::GetBitmapN(IDB_BUTTON_DELETE_PRESSED);
+
+ if (pBitmapItem != null)
+ {
+ pButtonDelete->SetNormalBackgroundBitmap(*pBitmapItem);
+ delete pBitmapItem;
+ }
+ if (pBitmapItemPressed != null)
+ {
+ pButtonDelete->SetPressedBackgroundBitmap(*pBitmapItemPressed);
+ delete pBitmapItemPressed;
+ }
+ item.AddControl(*pButtonDelete);
+
+ Bitmap* pThumbnail = null;
+ String thumbnailPath = __pPresentationModel->GetValue(DETAIL_PROPERTY_THUMBNAIL);
+
+ if (thumbnailPath.IsEmpty() == false)
+ {
+ ImageBuffer thumbnailImageBuffer;
+ result r = thumbnailImageBuffer.Construct(thumbnailPath);
+ if (r == E_SUCCESS)
+ {
+ pThumbnail = thumbnailImageBuffer.GetBitmapN(BITMAP_PIXEL_FORMAT_ARGB8888, BUFFER_SCALING_NONE);
+ }
+ }
+
+ if (pThumbnail != null)
+ {
+ pThumbnail->SetScalingQuality(BITMAP_SCALING_QUALITY_HIGH);
+ pThumbnail->Scale(Dimension(W_THUMBNAIL, W_THUMBNAIL));
+ pLabelThumbnail->SetBackgroundBitmap(*pThumbnail);
+ pButtonAdd->SetShowState(false);
+ }
+ else
+ {
+ pLabelThumbnail->SetBackgroundColor(Color(COLOR_THUMBNAIL_BACKGROUND));
+ pButtonDelete->SetShowState(false);
+ }
+
+ delete pThumbnail;
+
+ Button* pButtonCamera = new (std::nothrow) Button();
+ pButtonCamera->Construct(Rectangle(pLabelThumbnail->GetX() + pLabelThumbnail->GetWidth(), pLabelThumbnail->GetY() + pLabelThumbnail->GetHeight() - H_BUTTON, H_BUTTON, H_BUTTON));
+ pButtonCamera->SetActionId(IDA_BUTTON_CAMERA);
+ pButtonCamera->AddActionEventListener(*this);
+
+ pBitmapItem = ResourceManager::GetBitmapN(IDB_BUTTON_CAMERA);
+ pBitmapItemPressed = ResourceManager::GetBitmapN(IDB_BUTTON_CAMERA_PRESSED);
+ pBitmapItemDisabled = ResourceManager::GetBitmapN(IDB_BUTTON_CAMERA_DISABLED);
+ if (pBitmapItem != null)
+ {
+ pButtonCamera->SetNormalBackgroundBitmap(*pBitmapItem);
+ delete pBitmapItem;
+ }
+ if (pBitmapItemPressed != null)
+ {
+ pButtonCamera->SetPressedBackgroundBitmap(*pBitmapItemPressed);
+ delete pBitmapItemPressed;
+ }
+ if (pBitmapItemDisabled != null)
+ {
+ pButtonCamera->SetDisabledBitmap(Point(0, 0), *pBitmapItemDisabled);
+ delete pBitmapItemDisabled;
+ }
+ item.AddControl(*pButtonCamera);
+}
+
+void
+ContactEditorForm::AddHorizontalDivider(Tizen::Ui::Controls::TableViewItem* pItem, int positionY, int width)
+{
+ Label* pDivider = new (std::nothrow) Label();
+ pDivider->Construct(Rectangle(0, positionY, width, H_DIVIDER), L"");
+ pDivider->SetBackgroundColor(Color(COLOR_DIVIDER));
+ pDivider->SetEnabled(false);
+
+ pItem->AddControl(*pDivider);
+}
+
+void
+ContactEditorForm::AddVerticalDivider(Tizen::Ui::Controls::TableViewItem* pItem, int positionX, int positionY)
+{
+ Label* pDivider = new (std::nothrow) Label();
+ pDivider->Construct(Rectangle(positionX, positionY, W_DIVIDER, H_ITEM), L"");
+ pDivider->SetBackgroundColor(Color(COLOR_DIVIDER));
+ pDivider->SetEnabled(false);
+
+ pItem->AddControl(*pDivider);
+}
+
+result
+ContactEditorForm::SetAsDefaultPhoneNumber(int index)
+{
+ result r = E_SUCCESS;
+
+ for (int i = 0; i < __pPhoneNumberFieldItem->GetCount(); i++)
+ {
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pPhoneNumberFieldItem->GetAt(i));
+ if (pItem == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ EditField* pEditField = static_cast<EditField *>(pItem->GetControl(0));
+ if (pEditField == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ if (i == index)
+ {
+ pEditField->SetTextColor(EDIT_TEXT_COLOR_NORMAL, Color(0xFFFF00FF));
+ pEditField->SetTextColor(EDIT_TEXT_COLOR_HIGHLIGHTED, Color(0xFFFF00FF));
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER, L"", index);
+ }
+ else
+ {
+ pEditField->SetTextColor(EDIT_TEXT_COLOR_NORMAL, Color(0xFF000000));
+ pEditField->SetTextColor(EDIT_TEXT_COLOR_HIGHLIGHTED, Color(0xFF000000));
+ }
+
+ pEditField->Invalidate(false);
+ }
+
+ return r;
+}
+
+result
+ContactEditorForm::ChangeNameFieldStatus(void)
+{
+ result r = E_SUCCESS;
+
+ r = SaveNameFields();
+
+ __isExpandable = (__isExpandable == true) ? false : true;
+
+ if (__pNameFieldItem == __pCurrentFocusedItem)
+ {
+ SetFocus();
+ HideKeypad();
+ }
+
+ return r;
+}
+
+result
+ContactEditorForm::SaveContactData(bool isSaved)
+{
+ result r = E_SUCCESS;
+
+ r = SaveNameFields();
+
+ for (int i = 0; i < __pPhoneNumberFieldItem->GetCount(); i++)
+ {
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pPhoneNumberFieldItem->GetAt(i));
+ if (pItem == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ EditField* pEditField = static_cast<EditField *>(pItem->GetControl(0));
+ if (pEditField == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ String phoneNumberString(pEditField->GetText());
+ String phoneNumberTypeString(pItem->GetName());
+ int phoneNumberType;
+
+ phoneNumberString.Trim();
+ Integer::Parse(phoneNumberTypeString, phoneNumberType);
+
+ __pPresentationModel->SetPhoneNumber((DetailPhoneNumberType)phoneNumberType, phoneNumberString, i);
+ }
+
+ for (int i = 0; i < __pEmailFieldItem->GetCount(); i++)
+ {
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pEmailFieldItem->GetAt(i));
+ if (pItem == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ EditField* pEditField = static_cast<EditField *>(pItem->GetControl(0));
+ if (pEditField == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ String emailString(pEditField->GetText());
+ String emailTypeString(pItem->GetName());
+ int emailType;
+
+ emailString.Trim();
+ Integer::Parse(emailTypeString, emailType);
+
+ r = __pPresentationModel->SetEmail((DetailEmailType)emailType, emailString, i);
+
+ if (isSaved == true && r == E_SUCCESS)
+ {
+ int existedAtIndex;
+ int existedDotIndex;
+
+ r = emailString.IndexOf(CHARACTER_AT, 0, existedAtIndex);
+ if (r == E_SUCCESS)
+ {
+ r = emailString.IndexOf(CHARACTER_DOT, existedAtIndex + 2, existedDotIndex);
+ }
+
+ if (r != E_SUCCESS || emailString.GetLength() == (existedDotIndex + 1))
+ {
+ int modalResult;
+ MessageBox invalidEmailMessage;
+ invalidEmailMessage.Construct(L"", ResourceManager::GetString(L"IDS_PB_POP_INVALID_EMAIL_ADDRESS"), MSGBOX_STYLE_OK);
+ invalidEmailMessage.ShowAndWait(modalResult);
+
+ pEditField->SetFocus();
+
+ return E_FAILURE;
+ }
+ }
+ }
+
+ for (int i = 0; i < __pAddressFieldItem->GetCount(); i++)
+ {
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pAddressFieldItem->GetAt(i));
+ if (pItem == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ EditField* pEditField = static_cast<EditField *>(pItem->GetControl(0));
+ if (pEditField == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ String addressString(pEditField->GetText());
+
+ addressString.Trim();
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_ADDRESS_STREET, addressString, i);
+ }
+
+ for (int i = 0; i < __pImAddressFieldItem->GetCount(); i++)
+ {
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pImAddressFieldItem->GetAt(i));
+ if (pItem == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ EditField* pEditField = static_cast<EditField *>(pItem->GetControl(0));
+ if (pEditField == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ String addressString(pEditField->GetText());
+ String addressTypeString(pItem->GetName());
+ int addressType;
+
+ addressString.Trim();
+ Integer::Parse(addressTypeString, addressType);
+
+ __pPresentationModel->SetImAddress((DetailImAddressType)addressType, addressString, i);
+ }
+
+ for (int i = 0; i < __pUrlFieldItem->GetCount(); i++)
+ {
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pUrlFieldItem->GetAt(i));
+ if (pItem == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ EditField* pEditField = static_cast<EditField *>(pItem->GetControl(0));
+ if (pEditField == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ String urlString(pEditField->GetText());
+ String urlTypeString(pItem->GetName());
+ int urlType;
+
+ urlString.Trim();
+ Integer::Parse(urlTypeString, urlType);
+
+ __pPresentationModel->SetUrl((DetailUrlType)urlType, urlString, i);
+ }
+
+ if (__pNoteFieldItem != null)
+ {
+ String noteString;
+ ExpandableEditArea* pNoteEditArea = static_cast<ExpandableEditArea *>(__pNoteFieldItem->GetControl(0));
+ if (pNoteEditArea != null)
+ {
+ noteString.Append(pNoteEditArea->GetText());
+ }
+
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_NOTE, noteString);
+ }
+
+ if (isSaved == true)
+ {
+ r = __pPresentationModel->AddAddressBook();
+ }
+
+ return r;
+}
+
+result
+ContactEditorForm::SaveNameFields(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pNameFieldItem == null)
+ {
+ return E_FAILURE;
+ }
+
+ if (__isExpandable == true)
+ {
+ EditField* pFirstName = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_FIRST_NAME"), false));
+ if (pFirstName == null)
+ {
+ return E_FAILURE;
+ }
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_FIRST_NAME, pFirstName->GetText());
+
+ EditField* pLastName = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_LAST_NAME"), false));
+ if (pLastName == null)
+ {
+ return E_FAILURE;
+ }
+
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_LAST_NAME, pLastName->GetText());
+
+ EditField* pMiddleName = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_MIDDLE_NAME"), false));
+ if (pMiddleName == null)
+ {
+ return E_FAILURE;
+ }
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_MIDDLE_NAME, pMiddleName->GetText());
+
+ EditField* pSuffix = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_SUFFIX"), false));
+ if (pSuffix == null)
+ {
+ return E_FAILURE;
+ }
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_NAME_SUFFIX, pSuffix->GetText());
+
+ EditField* pNickName = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_NICKNAME"), false));
+ if (pNickName == null)
+ {
+ return E_FAILURE;
+ }
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_NICK_NAME, pNickName->GetText());
+
+ EditField* pCompanyName = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_COMPANY"), false));
+ if (pCompanyName == null)
+ {
+ return E_FAILURE;
+ }
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_COMPANY, pCompanyName->GetText());
+
+ if (__isJobTitleEnabled == true)
+ {
+ EditField* pJobTitle = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_JOB_TITLE"), false));
+ if (pJobTitle == null)
+ {
+ return E_FAILURE;
+ }
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_JOB_TITLE, pJobTitle->GetText());
+ }
+
+ if (__isDepartmentEnabled == true)
+ {
+ EditField* pDepartment = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_DEPARTMENT"), false));
+ if (pDepartment == null)
+ {
+ return E_FAILURE;
+ }
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_DEPARTMENT, pDepartment->GetText());
+ }
+ }
+ else
+ {
+ EditField* pName = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_COM_BODY_DETAILS_NAME"), false));
+ if (pName == null)
+ {
+ return E_FAILURE;
+ }
+
+ String displayName(pName->GetText());
+ String firstName;
+ String lastName;
+ int delimeterIndex;
+
+ displayName.IndexOf(CHARACTER_SPACE, 0, delimeterIndex);
+
+ if (delimeterIndex < 0)
+ {
+ firstName.Append(displayName);
+ }
+ else
+ {
+ displayName.SubString(0, delimeterIndex++, firstName);
+ displayName.SubString(delimeterIndex, displayName.GetLength() - delimeterIndex, lastName);
+ }
+
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_FIRST_NAME, firstName);
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_LAST_NAME, lastName);
+ }
+
+ return r;
+}
+
+bool
+ContactEditorForm::IsSaveContactValid(void)
+{
+ if (__pPresentationModel->GetValue(DETAIL_PROPERTY_FIRST_NAME).IsEmpty() == false)
+ {
+ return true;
+ }
+
+ if (__pPresentationModel->GetValue(DETAIL_PROPERTY_LAST_NAME).IsEmpty() == false)
+ {
+ return true;
+ }
+
+ for (int i = 0; i < __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER); i++)
+ {
+ if (__pPresentationModel->GetValue(DETAIL_PROPERTY_PHONE_NUMBER, i).IsEmpty() == false)
+ {
+ return true;
+ }
+ }
+
+ for (int i = 0; i < __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_EMAIL); i++)
+ {
+ if (__pPresentationModel->GetValue(DETAIL_PROPERTY_EMAIL, i).IsEmpty() == false)
+ {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+void
+ContactEditorForm::SetSaveButtonEnabled(bool enable)
+{
+ Header* pHeader = GetHeader();
+ Footer* pFooter = GetFooter();
+
+ if (enable)
+ {
+ pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, true);
+ pFooter->SetItemEnabled(0, true);
+ }
+ else
+ {
+ pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, false);
+ pFooter->SetItemEnabled(0, false);
+ }
+
+ if (pFooter->GetShowState())
+ {
+ pFooter->Invalidate(true);
+ }
+ else
+ {
+ pHeader->Invalidate(true);
+ }
+}
+
+bool
+ContactEditorForm::IsMoreInformationButtonVisible(void)
+{
+ if (__isJobTitleEnabled == false)
+ {
+ return true;
+ }
+
+ if (__isDepartmentEnabled == false)
+ {
+ return true;
+ }
+
+ if (__pImAddressFieldItem->GetCount() == 0)
+ {
+ return true;
+ }
+
+ if (__pUrlFieldItem->GetCount() == 0)
+ {
+ return true;
+ }
+
+ DateTime birthday;
+ if (__pPresentationModel->GetBirthday(birthday) != E_SUCCESS)
+ {
+ return true;
+ }
+
+ if (__pNoteFieldItem == null)
+ {
+ return true;
+ }
+
+ return false;
+}
+
+void
+ContactEditorForm::HideKeypad(void)
+{
+ result r = E_SUCCESS;
+ ButtonItemStatus buttonsStatus;
+ Header* pHeader = GetHeader();
+
+ buttonsStatus = pHeader->GetButtonStatus(BUTTON_POSITION_LEFT);
+ r = pHeader->RemoveAllButtons();
+ if (r != E_SUCCESS)
+ {
+ return;
+ }
+
+ Footer* pFooter = GetFooter();
+
+ r = pFooter->RemoveAllItems();
+ if (r != E_SUCCESS)
+ {
+ return;
+ }
+
+ FooterItem footerItemSave;
+ footerItemSave.Construct(IDA_ACTION_BAR_SAVE);
+ footerItemSave.SetText(ResourceManager::GetString(L"IDS_COM_SK_SAVE"));
+
+ FooterItem footerItemCancel;
+ footerItemCancel.Construct(IDA_ACTION_BAR_CANCEL);
+ footerItemCancel.SetText(ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
+
+ pFooter->AddItem(footerItemSave);
+ pFooter->AddItem(footerItemCancel);
+
+ if (buttonsStatus == BUTTON_ITEM_STATUS_DISABLED)
+ {
+ pFooter->SetItemEnabled(0, false);
+ }
+
+ SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, true);
+ pHeader->Invalidate(false);
+
+ Rectangle clientBounds = GetClientAreaBounds();
+ __pTableView->SetSize(clientBounds.width, clientBounds.height);
+}
+
+void
+ContactEditorForm::ShowKeypad(void)
+{
+ result r = E_SUCCESS;
+
+ Footer* pFooter = GetFooter();
+ FooterItemStatus itemStatus;
+
+ if (pFooter->GetShowState() == false)
+ {
+ return;
+ }
+
+ pFooter->GetItemStatus(0, itemStatus);
+ r = pFooter->RemoveAllItems();
+ if (r != E_SUCCESS)
+ {
+ return;
+ }
+
+ Header* pHeader = GetHeader();
+
+ ButtonItem headerCancel;
+ headerCancel.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_ACTION_BAR_CANCEL);
+ headerCancel.SetText(ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
+
+ ButtonItem headerSave;
+ headerSave.Construct(BUTTON_ITEM_STYLE_TEXT, IDA_ACTION_BAR_SAVE);
+ headerSave.SetText(ResourceManager::GetString(L"IDS_COM_SK_SAVE"));
+
+ pHeader->SetButton(BUTTON_POSITION_LEFT, headerSave);
+ pHeader->SetButton(BUTTON_POSITION_RIGHT, headerCancel);
+
+ if (itemStatus == FOOTER_ITEM_STATUS_DISABLED)
+ {
+ pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, false);
+ }
+
+ SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, false);
+}
+
+void
+ContactEditorForm::OnTextValueChanged(const Tizen::Ui::Control& source)
+{
+ TableViewItem* pTableViewItem = static_cast<TableViewItem *>(source.GetParent());
+
+ if (pTableViewItem == null)
+ {
+ return;
+ }
+
+ SaveContactData(false);
+ SetSaveButtonEnabled(IsSaveContactValid());
+
+ if (__pNameFieldItem == pTableViewItem)
+ {
+ return;
+ }
+
+ EditField* pEditField = const_cast<EditField *>(static_cast<const EditField *>(&source));
+ if (pEditField == null)
+ {
+ return;
+ }
+
+ Control* pDeleteButton = pTableViewItem->GetControl(2);
+ if (pDeleteButton == null)
+ {
+ return;
+ }
+
+ String trimmedString = pEditField->GetText();
+ trimmedString.Trim();
+
+ if (trimmedString.IsEmpty())
+ {
+ pDeleteButton->SetShowState(false);
+
+ return;
+ }
+
+ if (pDeleteButton->GetShowState())
+ {
+ return;
+ }
+
+ pDeleteButton->SetShowState(true);
+
+ __pTableView->UpdateTableView();
+ pEditField->ShowKeypad();
+}
+
+void
+ContactEditorForm::OnTextValueChangeCanceled(const Tizen::Ui::Control& source)
+{
+}
+
+result
+ContactEditorForm::ParseAppControlArgument(const Tizen::Base::String& argument, Tizen::Base::String& type, Tizen::Base::String& content)
+{
+ result r = E_SUCCESS;
+
+ if (argument.IsEmpty() || argument.Contains(DELIMITER) == false)
+ {
+ return E_FAILURE;
+ }
+
+ int delimiterIndex;
+
+ argument.IndexOf(DELIMITER, 0, delimiterIndex);
+ argument.SubString(0, delimiterIndex++, type);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to get type", GetErrorMessage(r));
+ argument.SubString(delimiterIndex, argument.GetLength() - delimiterIndex, content);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to get type", GetErrorMessage(r));
+
+ return r;
+}
+
+void
+ContactEditorForm::OnFocusGained(const Tizen::Ui::Control& source)
+{
+ __pCurrentFocusedItem = source.GetParent();
+
+ if (__pCurrentFocusedItem == __pNameFieldItem)
+ {
+ return;
+ }
+
+ ArrayList* pFieldList = null;
+ int groupIndex;
+ int itemIndex;
+
+ const EditField* pEditField = static_cast<const EditField*>(&source);
+ if (pEditField != null)
+ {
+ int index;
+
+ Integer::Decode(pEditField->GetName(), index);
+ groupIndex = (index & TABLE_VIEW_GROUP_INDEX_MASK) >> TABLE_VIEW_GROUP_INDEX_SHIFT;
+ itemIndex = (index & TABLE_VIEW_ITEM_INDEX_MASK);
+ }
+
+ switch (groupIndex)
+ {
+ case TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX:
+ {
+ pFieldList = __pPhoneNumberFieldItem;
+ }
+ break;
+ case TABLE_VIEW_EMAIL_FIELD_INDEX:
+ {
+ pFieldList = __pEmailFieldItem;
+ }
+ break;
+ case TABLE_VIEW_ADDRESS_FIELD_INDEX:
+ {
+ pFieldList = __pAddressFieldItem;
+ }
+ break;
+ case TABLE_VIEW_IM_ADDRESS_FIELD_INDEX:
+ {
+ pFieldList = __pImAddressFieldItem;
+ }
+ break;
+ case TABLE_VIEW_URL_FIELD_INDEX:
+ {
+ pFieldList = __pUrlFieldItem;
+ }
+ break;
+ default:
+ break;
+ }
+
+ TryReturnVoid(pFieldList != null, "[E_FAILURE] Unable to get a input field.");
+
+ for (int i = pFieldList->GetCount() - 2; i >= 0; i--)
+ {
+ TableViewItem* pTableViewItem = static_cast<TableViewItem*>(pFieldList->GetAt(i));
+ if (pTableViewItem != null)
+ {
+ EditField* pInputField = static_cast<EditField*>(pTableViewItem->GetControl(0));
+ if (i != itemIndex && pInputField != null && pInputField->GetTextLength() == 0)
+ {
+ DeleteInputField(groupIndex, i);
+ }
+ }
+ }
+}
+
+void
+ContactEditorForm::OnFocusLost(const Tizen::Ui::Control& source)
+{
+ if (__pCurrentFocusedItem == __pNameFieldItem)
+ {
+ SaveNameFields();
+ }
+
+ __pCurrentFocusedItem = null;
+}
+
+void
+ContactEditorForm::ShowDefaultPhoneNumberContextMenu(const Tizen::Graphics::Point& position)
+{
+ if (__pDefaultPhoneNumberContextMenu != null)
+ {
+ delete __pDefaultPhoneNumberContextMenu;
+ __pDefaultPhoneNumberContextMenu = null;
+ }
+
+ __pDefaultPhoneNumberContextMenu = new (std::nothrow) ContextMenu();
+ __pDefaultPhoneNumberContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST);
+ __pDefaultPhoneNumberContextMenu->AddActionEventListener(*this);
+
+ String defaultPhoneNumber = __pPresentationModel->GetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER);
+ int count = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER);
+
+ for (int i = 0; i < count; i++)
+ {
+ String phoneNumber(__pPresentationModel->GetValue(DETAIL_PROPERTY_PHONE_NUMBER, i));
+
+ if (phoneNumber.Equals(defaultPhoneNumber, true) == false)
+ {
+ phoneNumber.Insert(__pPresentationModel->GetType(DETAIL_PROPERTY_PHONE_NUMBER, i) + CHARACTER_SPACE, 0);
+ __pDefaultPhoneNumberContextMenu->AddItem(phoneNumber, i);
+ }
+ }
+
+ __pDefaultPhoneNumberContextMenu->Show();
+}
+
+void
+ContactEditorForm::ShowMoreInformationContextMenu(const Tizen::Graphics::Point& position)
+{
+ if (__pMoreInformationContextMenu != null)
+ {
+ delete __pMoreInformationContextMenu;
+ __pMoreInformationContextMenu = null;
+ }
+
+ __pMoreInformationContextMenu = new (std::nothrow) ContextMenu();
+ __pMoreInformationContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST);
+
+ __pMoreInformationContextMenu->SetMaxVisibleItemsCount(6);
+ __pMoreInformationContextMenu->AddActionEventListener(*this);
+
+ if (__isJobTitleEnabled == false)
+ {
+ __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_BODY_JOB_TITLE"), IDA_CONTEXT_MENU_ITEM_JOB_TITLE);
+ }
+
+ if (__isDepartmentEnabled == false)
+ {
+ __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_BODY_DEPARTMENT"), IDA_CONTEXT_MENU_ITEM_DEPARTMENT);
+ }
+
+ if (__pImAddressFieldItem->GetCount() == 0)
+ {
+ __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_HEADER_INSTANT_MESSENGER_ABB"), IDA_CONTEXT_MENU_ITEM_INSTANT_MESSENGER);
+ }
+
+ if (__pUrlFieldItem->GetCount() == 0)
+ {
+ __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_BODY_URL"), IDA_CONTEXT_MENU_ITEM_URL);
+ }
+
+ DateTime birthday;
+ if (__pPresentationModel->GetBirthday(birthday) != E_SUCCESS)
+ {
+ __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_BODY_BIRTHDAY"), IDA_CONTEXT_MENU_ITEM_BIRTHDAY);
+ }
+
+ if (__pNoteFieldItem == null)
+ {
+ __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_BODY_NOTE"), IDA_CONTEXT_MENU_ITEM_NOTE);
+ }
+
+ if (__pMoreInformationContextMenu->GetItemCount() > 0)
+ {
+ __pMoreInformationContextMenu->Show();
+ }
+}
+
+void
+ContactEditorForm::ShowTypeContextMenu(DetailPhoneNumberType currentType, const Tizen::Graphics::Point& position, int itemTag)
+{
+ if (__pTypeContextMenu != null)
+ {
+ delete __pTypeContextMenu;
+ __pTypeContextMenu = null;
+ }
+
+ __pTypeContextMenu = new (std::nothrow) ContextMenu();
+ __pTypeContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST, CONTEXT_MENU_ANCHOR_DIRECTION_LEFTWARD);
+
+ __pTypeContextMenu->SetMaxVisibleItemsCount(DETAIL_PHONENUMBER_TYPE_OTHER + 1);
+ __pTypeContextMenu->AddActionEventListener(*this);
+
+ for (int i = 0; i <= DETAIL_PHONENUMBER_TYPE_OTHER; i++)
+ {
+ int index = i << TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
+ __pTypeContextMenu->AddItem(__pPresentationModel->GetPhoneNumberTypeString((DetailPhoneNumberType)i), itemTag | index);
+ }
+
+ __pTypeContextMenu->RemoveItemAt((int)currentType);
+
+ __pTypeContextMenu->Show();
+}
+
+void
+ContactEditorForm::ShowTypeContextMenu(DetailEmailType currentType, const Tizen::Graphics::Point& position, int itemTag)
+{
+ if (__pTypeContextMenu != null)
+ {
+ delete __pTypeContextMenu;
+ __pTypeContextMenu = null;
+ }
+
+ __pTypeContextMenu = new (std::nothrow) ContextMenu();
+ __pTypeContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST, CONTEXT_MENU_ANCHOR_DIRECTION_LEFTWARD);
+
+ __pTypeContextMenu->SetMaxVisibleItemsCount(DETAIL_EMAIL_TYPE_OTHER + 1);
+ __pTypeContextMenu->AddActionEventListener(*this);
+
+ for (int i = 0; i <= DETAIL_EMAIL_TYPE_OTHER; i++)
+ {
+ int index = i << TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
+ __pTypeContextMenu->AddItem(__pPresentationModel->GetAddressTypeString((DetailAddressType)i), itemTag | index);
+ }
+
+ __pTypeContextMenu->RemoveItemAt((int)currentType);
+
+ __pTypeContextMenu->Show();
+}
+
+void
+ContactEditorForm::ShowTypeContextMenu(DetailAddressType currentType, const Tizen::Graphics::Point& position, int itemTag)
+{
+ if (__pTypeContextMenu != null)
+ {
+ delete __pTypeContextMenu;
+ __pTypeContextMenu = null;
+ }
+
+ __pTypeContextMenu = new (std::nothrow) ContextMenu();
+ __pTypeContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST, CONTEXT_MENU_ANCHOR_DIRECTION_LEFTWARD);
+
+ __pTypeContextMenu->SetMaxVisibleItemsCount(DETAIL_ADDRESS_TYPE_OTHER + 1);
+ __pTypeContextMenu->AddActionEventListener(*this);
+
+ for (int i = 0; i <= DETAIL_ADDRESS_TYPE_OTHER; i++)
+ {
+ int index = i << TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
+ __pTypeContextMenu->AddItem(__pPresentationModel->GetAddressTypeString((DetailAddressType)i), itemTag | index);
+ }
+
+ __pTypeContextMenu->RemoveItemAt((int)currentType);
+
+ __pTypeContextMenu->Show();
+}
+
+void
+ContactEditorForm::ShowTypeContextMenu(DetailUrlType currentType, const Tizen::Graphics::Point& position, int itemTag)
+{
+ if (__pTypeContextMenu != null)
+ {
+ delete __pTypeContextMenu;
+ __pTypeContextMenu = null;
+ }
+
+ __pTypeContextMenu = new (std::nothrow) ContextMenu();
+ __pTypeContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST, CONTEXT_MENU_ANCHOR_DIRECTION_LEFTWARD);
+
+ __pTypeContextMenu->SetMaxVisibleItemsCount(DETAIL_URL_TYPE_OTHER + 1);
+ __pTypeContextMenu->AddActionEventListener(*this);
+
+ for (int i = 0; i <= DETAIL_URL_TYPE_OTHER; i++)
+ {
+ int index = i << TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
+ __pTypeContextMenu->AddItem(__pPresentationModel->GetUrlTypeString((DetailUrlType)i), itemTag | index);
+ }
+
+ __pTypeContextMenu->RemoveItemAt((int)currentType);
+
+ __pTypeContextMenu->Show();
+}
+
+void
+ContactEditorForm::ShowTypeContextMenu(DetailImAddressType currentType, const Tizen::Graphics::Point& position, int itemTag)
+{
+ if (__pTypeContextMenu != null)
+ {
+ delete __pTypeContextMenu;
+ __pTypeContextMenu = null;
+ }
+
+ __pTypeContextMenu = new (std::nothrow) ContextMenu();
+ __pTypeContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST, CONTEXT_MENU_ANCHOR_DIRECTION_LEFTWARD);
+
+ __pTypeContextMenu->SetMaxVisibleItemsCount(7); // Temporary the code due to limit max count(8) by UI framework.
+ __pTypeContextMenu->AddActionEventListener(*this);
+
+ for (int i = 0; i <= DETAIL_IM_ADDRESS_TYPE_OTHER; i++)
+ {
+ int index = i << TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
+ __pTypeContextMenu->AddItem(__pPresentationModel->GetImAddressTypeString((DetailImAddressType)i), itemTag | index);
+ }
+
+ __pTypeContextMenu->RemoveItemAt((int)currentType);
+
+ __pTypeContextMenu->Show();
+}
+
+void
+ContactEditorForm::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactEditorForm::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+ if (source.Contains(currentPosition) == false || touchInfo.IsFlicked() == true)
+ {
+ return;
+ }
+
+ Control* pParent = source.GetParent();
+ Point position = pParent->GetPosition();
+ Point itemPosition(position.x + source.GetX(), GetClientAreaBounds().y + position.y + source.GetY() + (source.GetHeight() / 2) - __scrolledDistance);
+ String typeString = pParent->GetName();
+ String itemIndexTag = source.GetName();
+ int type;
+ int itemIndex;
+
+ Integer::Parse(itemIndexTag, itemIndex);
+ Integer::Parse(typeString, type);
+
+ int groupIndex = (itemIndex & TABLE_VIEW_GROUP_INDEX_MASK) >> TABLE_VIEW_GROUP_INDEX_SHIFT;
+
+ switch (groupIndex)
+ {
+ case TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX:
+ {
+ ShowTypeContextMenu((DetailPhoneNumberType)type, itemPosition, itemIndex);
+ }
+ break;
+ case TABLE_VIEW_EMAIL_FIELD_INDEX:
+ {
+ ShowTypeContextMenu((DetailEmailType)type, itemPosition, itemIndex);
+ }
+ break;
+ case TABLE_VIEW_ADDRESS_FIELD_INDEX:
+ {
+ ShowTypeContextMenu((DetailAddressType)type, itemPosition, itemIndex);
+ }
+ break;
+ case TABLE_VIEW_IM_ADDRESS_FIELD_INDEX:
+ {
+ ShowTypeContextMenu((DetailImAddressType)type, itemPosition, itemIndex);
+ }
+ break;
+ case TABLE_VIEW_URL_FIELD_INDEX:
+ {
+ ShowTypeContextMenu((DetailUrlType)type, itemPosition, itemIndex);
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+ContactEditorForm::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactEditorForm::OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactEditorForm::OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactEditorForm::OnTouchCanceled(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactEditorForm::OnScrollEndReached (Tizen::Ui::Control &source, Tizen::Ui::Controls::ScrollEndEvent type)
+{
+}
+
+void
+ContactEditorForm::OnScrollPositionChanged (Tizen::Ui::Control &source, int scrollPos)
+{
+ __scrolledDistance = scrollPos;
+}
+
+void
+ContactEditorForm::OnScrollStopped (Tizen::Ui::Control &source)
+{
+}
+
+void
+ContactEditorForm::OnExpandableEditAreaLineAdded (Tizen::Ui::Controls::ExpandableEditArea &source, int newLineCount)
+{
+ __pTableView->RefreshItem(TABLE_VIEW_NOTE_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+}
+
+void
+ContactEditorForm::OnExpandableEditAreaLineRemoved (Tizen::Ui::Controls::ExpandableEditArea &source, int newLineCount)
+{
+ __pTableView->RefreshItem(TABLE_VIEW_NOTE_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+}
+
+void
+ContactEditorForm::OnDateChanged(const Tizen::Ui::Control& source, int year, int month, int day)
+{
+ DateTime changedDate;
+ changedDate.SetValue(year, month, day);
+
+ __pPresentationModel->SetBirthday(changedDate);
+}
+
+void
+ContactEditorForm::OnDateChangeCanceled(const Tizen::Ui::Control& source)
+{
+}
+
+void
+ContactEditorForm::OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData)
+{
+ AppLogDebug("ENTER");
+
+ SetEnabled(true);
+ Invalidate(true);
+
+ TryReturnVoid(appControlResult == APP_CTRL_RESULT_SUCCEEDED, "[E_FAILURE] The result of an appcontrol is not succeeded.");
+ TryReturnVoid(pExtraData != null, "[E_FAILURE] The extra data is null.");
+
+ const String* pResultString = null;
+
+ if (appId.Equals(String(PROVIDER_ID_CAMERA)) && operationId.Equals(String(OPERATION_ID_CREATE_CONTENT)))
+ {
+ pResultString = static_cast<const String *>(pExtraData->GetValue(String(RESULT_KEY_PATH)));
+ TryReturnVoid(pResultString != null, "[E_FAILURE] Unable to get file path.");
+
+ __pPresentationModel->SetThumbnail(*pResultString);
+ __pTableView->RefreshItem(TABLE_VIEW_THUMBNAIL_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+ else if (appId.Equals(String(PROVIDER_ID_GALLERY)) && operationId.Equals(String(OPERATION_ID_PICK)))
+ {
+ pResultString = static_cast<const String *>(pExtraData->GetValue(String(RESULT_KEY_PATH)));
+ TryReturnVoid(pResultString != null, "[E_FAILURE] Unable to get file path.");
+
+ __pPresentationModel->SetThumbnail(*pResultString);
+ __pTableView->RefreshItem(TABLE_VIEW_THUMBNAIL_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+ else if (appId.Equals(String(PROVIDER_ID_FILEMANAGER)) && operationId.Equals(String(OPERATION_ID_PICK)))
+ {
+ pResultString = static_cast<const String *>(pExtraData->GetValue(String(RESULT_KEY_PATH)));
+ TryReturnVoid(pResultString != null, "[E_FAILURE] Unable to get file path.");
+
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_RINGTONE, *pResultString);
+ __pTableView->RefreshItem(TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX, 1, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+
+ AppLogDebug("EXIT");
+}
+
+result
+ContactEditorForm::LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId)
+{
+ result r = E_SUCCESS;
+ HashMap extraData;
+ extraData.Construct();
+
+ if (appId.Equals(String(PROVIDER_ID_CAMERA)) && operationId.Equals(String(OPERATION_ID_CREATE_CONTENT)))
+ {
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TYPE), new (std::nothrow) String(INPUT_TYPE_CAMERA));
+ }
+ else if (appId.Equals(String(PROVIDER_ID_GALLERY)) && operationId.Equals(String(OPERATION_ID_PICK)))
+ {
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_MEDIA_TYPE), new (std::nothrow) String(INPUT_MEDIA_TYPE_IMAGE));
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_SELECTION_MODE), new (std::nothrow) String(INPUT_SELECTION_TYPE_SINGLE));
+ }
+ else if (appId.Equals(String(PROVIDER_ID_FILEMANAGER)) && operationId.Equals(String(OPERATION_ID_PICK)))
+ {
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_SELECTION_TYPE), new (std::nothrow) String(INPUT_SELECTION_TYPE_SINGLE));
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TYPE), new (std::nothrow) String(INPUT_TYPE_AUDIO));
+ }
+
+ AppControl* pAc = AppManager::FindAppControlN(appId, operationId);
+
+ if (pAc)
+ {
+ r = pAc->Start(null, null, &extraData, this);
+ if (r == E_SUCCESS)
+ {
+ SetEnabled(false);
+ }
+ delete pAc;
+ }
+
+ extraData.RemoveAll(true);
+
+ 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 CtContactEntry.cpp
+ * @brief This is the implementation file for the Contacts application entry.
+ */
+
+#include "CtContactsApp.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif // __cplusplus
+
+_EXPORT_ int OspMain(int argc, char *pArgv[]);
+#ifdef _PROFILE
+extern void start_profile (void);
+extern void end_profile (void);
+#else
+#define start_profile()
+#define end_profile()
+#endif
+
+
+/**
+ * The entry function of Tizen application called by the operating system.
+ */
+int
+OspMain(int argc, char *pArgv[])
+{
+ result r = E_SUCCESS;
+
+ AppLog("Contact Application started.");
+ ArrayList* pArgs = new ArrayList();
+ pArgs->Construct();
+ for (int i = 0; i < argc; i++)
+ pArgs->Add(*(new String(pArgv[i])));
+
+ start_profile();
+ r = Tizen::App::UiApp::Execute(ContactsApp::CreateInstance, pArgs);
+ if (IsFailed(r))
+ {
+ AppLogException("Contact Application execution failed-[%s].", GetErrorMessage(r));
+ r &= 0x0000FFFF;
+ }
+ end_profile();
+
+ pArgs->RemoveAll(true);
+ delete pArgs;
+ AppLog("Contact 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 CtContactListEditorPanel.cpp
+ * @brief This is the implementation file for the ContactListEditorPanel class.
+ */
+
+#include <FSocial.h>
+#include "CtContactListEditorPanel.h"
+#include "CtContactListItem.h"
+#include "CtContactListPresentationModel.h"
+#include "CtContactsApp.h"
+#include "CtMainForm.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtSearchListItem.h"
+#include "CtSearchListEventListener.h"
+#include "CtTypes.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 int IDA_HEADER_CONTACTS = 10;
+static const int IDA_HEADER_GROUPS = 11;
+static const int IDA_HEADER_FAVORITES = 12;
+static const int IDA_CHECK_SELECT_ALL_CHECKED = 20;
+static const int IDA_CHECK_SELECT_ALL_UNCHECKED = 21;
+static const int IDA_FOOTER_DELETE = 30;
+static const int IDA_FOOTER_CANCEL = 31;
+static const int IDA_FOOTER_DONE = 32;
+static const int IDA_POPUP_CONTACT_VALUE_CLOSE = 40;
+static const int IDA_POPUP_DELETE_CANCEL = 41;
+
+static const int H_ITEM = 112;
+static const int X_EMPTY_IMAGE = 220;
+static const int Y_EMPTY_IMAGE = 300;
+static const int W_EMPTY_IMAGE = 280;
+static const int H_EMPTY_IMAGE = 280;
+static const int Y_EMPTY_COMMENT = 618;
+static const int H_EMPTY_COMMENT = 38;
+static const int W_INITIAL_PANEL = 10;
+static const int H_INITIAL_PANEL = 10;
+static const int H_SELECT_ALL = 108;
+static const int H_SEARCHBAR = 108;
+static const int H_BOTTOM_LABEL = 48;
+static const int H_GROUP_ITEM = 76;
+static const int W_CONTACT_VALUE_POPUP = 720;
+static const int H_CONTACT_VALUE_POPUP = 700;
+static const int H_CONTACT_VALUE_POPUP_LIST_VIEW = 506;
+static const int H_CLOSE_BUTTON = 74;
+static const int Y_CLOSE_BUTTON = 526;
+static const int W_CLOSE_BUTTON = 394;
+static const int W_DELETE_POPUP = 720;
+static const int H_DELETE_POPUP = 308;
+static const int Y_DELETE_POPUP_TITLE = 20;
+static const int H_DELETE_POPUP_ELEMENT = 60;
+static const int H_DELETE_POPUP_PROGRESS = 34;
+static const int Y_DELETE_POPUP_CANCEL_BUTTON = 214;
+static const int H_DELETE_POPUP_CANCEL_BUTTON = 74;
+static const int W_DELETE_POPUP_CANCEL_BUTTON = 394;
+static const int X_LIST_ITEM_TEXT_MARGIN = 32;
+
+static const int FONT_SIZE_EMPTY_COMMENT = 32;
+static const int FONT_SIZE_BOTTOM_LABEL = 32;
+static const int FONT_SIZE_DELETE_POPUP_TEXT = 36;
+
+static const unsigned int COLOR_EMPTY_COMMENT = Color32<102, 102, 102>::Value;
+static const unsigned int COLOR_BOTTOM_LABEL_BG = Color32<215, 225, 232>::Value;
+static const unsigned int COLOR_BOTTOM_LABEL_FONT = Color32<76, 81, 88>::Value;
+static const unsigned int COLOR_DELETE_POPUP_TEXT = Color32<128, 128, 128>::Value;
+
+static const int LIST_VIEW_GROUP_INDEX_SHIFT = 16;
+static const int LIST_VIEW_MASK = 0xFFFF;
+
+static const wchar_t* IDB_NO_CONTENTS = L"00_Nocontents_text.png";
+
+ContactListEditorPanel::ContactListEditorPanel(void)
+: __pTempContactValueHashMap(null)
+, __pSelectAll(null)
+, __pListView(null)
+, __pSearchListView(null)
+, __pSearchBar(null)
+, __pEmptyImageLabel(null)
+, __pEmptyCommentLabel(null)
+, __pBottomLabel(null)
+, __pMultipleContactValuePopup(null)
+, __pDeletePopup(null)
+, __pContactValueListEvent(null)
+, __pPresentationModel(null)
+, __pSearchListEvent(null)
+, __isContactRemoved(false)
+, __selectedIndex(-1)
+, __selectedSearchIndex(-1)
+, __deleteGroupIndex(0)
+, __deleteItemIndex(0)
+{
+ __deleteContactTimer.Construct(*this);
+}
+
+ContactListEditorPanel::~ContactListEditorPanel(void)
+{
+}
+
+void
+ContactListEditorPanel::Initialize(void)
+{
+ Construct(Rectangle(0, 0, W_INITIAL_PANEL, H_INITIAL_PANEL));
+}
+
+result
+ContactListEditorPanel::OnInitializing(void)
+{
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Rectangle clientBounds = pForm->GetClientAreaBounds();
+ SetBounds(Rectangle(0, 0, clientBounds.width, clientBounds.height));
+
+ __pPresentationModel = ContactListPresentationModel::GetInstance();
+ __pPresentationModel->AddContactChangeListener(*this);
+
+ __pSelectAll = new (std::nothrow) CheckButton();
+ __pSelectAll->Construct(Rectangle(0, H_SEARCHBAR, clientBounds.width, H_SELECT_ALL), CHECK_BUTTON_STYLE_MARK, BACKGROUND_STYLE_DEFAULT);
+ __pSelectAll->SetText(ResourceManager::GetString(L"IDS_COM_BODY_SELECT_ALL"));
+ __pSelectAll->SetActionId(IDA_CHECK_SELECT_ALL_CHECKED, IDA_CHECK_SELECT_ALL_UNCHECKED);
+ __pSelectAll->AddActionEventListener(*this);
+
+ AddControl(*__pSelectAll);
+
+ __pListView = new (std::nothrow) GroupedListView();
+ __pListView->Construct(Rectangle(0, H_SEARCHBAR + H_SELECT_ALL, clientBounds.width, clientBounds.height - H_SEARCHBAR - H_SELECT_ALL - H_BOTTOM_LABEL), GROUPED_LIST_VIEW_STYLE_INDEXED, true, true);
+ __pListView->SetItemProvider(*this);
+ __pListView->SetTextOfEmptyList(ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pListView->AddFastScrollListener(*this);
+ __pListView->AddGroupedListViewItemEventListener(*this);
+ __pListView->AddTouchEventListener(*this);
+
+ AddControl(*__pListView);
+
+ __pSearchBar = new (std::nothrow) SearchBar();
+ __pSearchBar->Construct(Rectangle(0, 0, clientBounds.width, H_SEARCHBAR));
+ __pSearchBar->SetGuideText(ResourceManager::GetString(L"IDS_COM_BODY_SEARCH"));
+ __pSearchBar->AddSearchBarEventListener(*this);
+ __pSearchBar->AddTextEventListener(*this);
+ __pSearchBar->AddKeypadEventListener(*this);
+ __pSearchBar->SetContentAreaSize(Dimension(0, 0));
+
+ __pSearchListEvent = new (std::nothrow) SearchListEventListener(LIST_ANNEX_STYLE_MARK, __pPresentationModel);
+
+ AddControl(*__pSearchBar);
+
+ __pSearchListView = new (std::nothrow) GroupedListView();
+ __pSearchListView->Construct(Rectangle(0, H_SEARCHBAR, clientBounds.width, clientBounds.height - H_SEARCHBAR - H_BOTTOM_LABEL), GROUPED_LIST_VIEW_STYLE_INDEXED, true, false);
+ __pSearchListView->SetItemProvider(*__pSearchListEvent);
+ __pSearchListView->AddGroupedListViewItemEventListener(*this);
+ __pSearchListView->AddTouchEventListener(*this);
+ __pSearchListView->SetTextOfEmptyList(ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pSearchListView->SetShowState(false);
+
+ AddControl(*__pSearchListView);
+
+ __pEmptyImageLabel = new (std::nothrow) Label();
+ __pEmptyImageLabel->Construct(Rectangle(X_EMPTY_IMAGE, Y_EMPTY_IMAGE, W_EMPTY_IMAGE, H_EMPTY_IMAGE), L"");
+ Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_NO_CONTENTS);
+ if (pBitmap != null)
+ {
+ __pEmptyImageLabel->SetBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+ __pEmptyImageLabel->SetShowState(false);
+
+ AddControl(*__pEmptyImageLabel);
+
+ __pEmptyCommentLabel = new (std::nothrow) Label();
+ __pEmptyCommentLabel->Construct(Rectangle(0, Y_EMPTY_COMMENT, clientBounds.width, H_EMPTY_COMMENT),
+ ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pEmptyCommentLabel->SetTextConfig(FONT_SIZE_EMPTY_COMMENT, LABEL_TEXT_STYLE_NORMAL);
+ __pEmptyCommentLabel->SetTextColor(Color(COLOR_EMPTY_COMMENT));
+ __pEmptyCommentLabel->SetShowState(false);
+
+ AddControl(*__pEmptyCommentLabel);
+
+ __pBottomLabel = new (std::nothrow) Label();
+ __pBottomLabel->Construct(Rectangle(0, clientBounds.height - H_BOTTOM_LABEL, clientBounds.width, H_BOTTOM_LABEL),
+ ResourceManager::GetString(L"IDS_COM_POP_SELECTED") + INITIAL_SELECTED_COUNT);
+ __pBottomLabel->SetBackgroundColor(Color(COLOR_BOTTOM_LABEL_BG));
+ __pBottomLabel->SetTextColor(Color(COLOR_BOTTOM_LABEL_FONT));
+ __pBottomLabel->SetTextConfig(FONT_SIZE_BOTTOM_LABEL, LABEL_TEXT_STYLE_BOLD);
+ __pBottomLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ AddControl(*__pBottomLabel);
+
+ __pTempContactValueHashMap = new (std::nothrow) HashMap();
+ __pTempContactValueHashMap->Construct();
+
+ return E_SUCCESS;
+}
+
+result
+ContactListEditorPanel::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pPresentationModel != null)
+ {
+ __pPresentationModel->RemoveContactChangeListener(*this);
+ }
+
+ delete __pSearchListEvent;
+
+ __pTempContactValueHashMap->RemoveAll(true);
+ delete __pTempContactValueHashMap;
+
+ delete __pDeletePopup;
+ delete __pMultipleContactValuePopup;
+
+ return r;
+}
+
+void
+ContactListEditorPanel::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ switch (actionId)
+ {
+ case IDA_HEADER_CONTACTS:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST));
+ }
+ break;
+ case IDA_HEADER_GROUPS:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_LIST));
+ }
+ break;
+ case IDA_HEADER_FAVORITES:
+ {
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_SINGLE)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST));
+ }
+ else if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_MULTI)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST_EDITOR));
+ }
+ }
+ else
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST));
+ }
+ }
+ break;
+ case IDA_CHECK_SELECT_ALL_CHECKED:
+ {
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ __pListView->SetItemChecked(groupIndex, itemIndex, true);
+
+ int index = 0;
+ index |= groupIndex << LIST_VIEW_GROUP_INDEX_SHIFT;
+ index |= itemIndex;
+ Integer hashMapIndex(index);
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ if (__pTempContactValueHashMap->GetValue(hashMapIndex) == null)
+ {
+ String phoneNumber = __pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(index)), *(new (std::nothrow) String(phoneNumber)));
+ }
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ if (__pTempContactValueHashMap->GetValue(hashMapIndex) == null)
+ {
+ String email = __pPresentationModel->GetDefaultEmail(groupIndex, itemIndex);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(index)), *(new (std::nothrow) String(email)));
+ }
+ }
+ }
+ }
+ __pListView->SetFocus();
+ __pListView->Invalidate(true);
+ UpdateBottomLabel();
+ }
+ break;
+ case IDA_CHECK_SELECT_ALL_UNCHECKED:
+ {
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ __pListView->SetItemChecked(groupIndex, itemIndex, false);
+ }
+ }
+ __pTempContactValueHashMap->RemoveAll(true);
+ __pListView->SetFocus();
+ __pListView->Invalidate(true);
+ UpdateBottomLabel();
+ }
+ break;
+ case IDA_FOOTER_DELETE:
+ {
+ ShowDeletePopup();
+ }
+ break;
+ case IDA_FOOTER_CANCEL:
+ {
+ pSceneManager->GoBackward(BackwardSceneTransition());
+ }
+ break;
+ case IDA_FOOTER_DONE:
+ {
+ ReturnMultipleValues();
+ }
+ break;
+ case IDA_POPUP_CONTACT_VALUE_CLOSE:
+ {
+ HideContactValuePopup();
+ }
+ break;
+ case IDA_POPUP_DELETE_CANCEL:
+ {
+ __deleteContactTimer.Cancel();
+ HideDeletePopup();
+ pSceneManager->GoBackward(BackwardSceneTransition());
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+ContactListEditorPanel::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
+ const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Header* pHeader = pForm->GetHeader();
+ pHeader->AddActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->RemoveAllItems();
+ pFooter->RemoveButtonAt(BUTTON_POSITION_LEFT);
+
+ __pPresentationModel->InitializeContactList();
+ __pListView->SetFastScrollIndex(__pPresentationModel->GetAllKeys(), false);
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ pFooter->SetBackButton();
+
+ if (__pPresentationModel->GetContactCount() == 0)
+ {
+ __pSearchBar->SetShowState(false);
+ __pSelectAll->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ __pBottomLabel->SetShowState(false);
+ }
+ else
+ {
+ FooterItem footerItemDone;
+ footerItemDone.Construct(IDA_FOOTER_DONE);
+ footerItemDone.SetText(ResourceManager::GetString(L"IDS_COM_SK_DONE"));
+ pFooter->AddItem(footerItemDone);
+
+ bool isChecked = false;
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount() && isChecked == false; groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ isChecked = true;
+ break;
+ }
+ }
+ }
+
+ if (isChecked == false)
+ {
+ pFooter->SetItemEnabled(0, false);
+ }
+ }
+ }
+ else
+ {
+ __pSelectAll->SetSelected(false);
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ __pListView->SetItemChecked(groupIndex, itemIndex, false);
+ }
+ }
+
+ pFooter->RemoveBackButton();
+
+ FooterItem footerDelete;
+ footerDelete.Construct(IDA_FOOTER_DELETE);
+ footerDelete.SetText(ResourceManager::GetString(L"IDS_COM_SK_DELETE"));
+
+ FooterItem footerCancel;
+ footerCancel.Construct(IDA_FOOTER_CANCEL);
+ footerCancel.SetText(ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
+ pFooter->AddItem(footerDelete);
+ pFooter->AddItem(footerCancel);
+ pFooter->SetItemEnabled(0, false);
+ }
+
+ pFooter->AddActionEventListener(*this);
+
+ UpdateBottomLabel();
+
+ if (pArgs != null)
+ {
+ pArgs->RemoveAll(true);
+ delete pArgs;
+ }
+}
+
+void
+ContactListEditorPanel::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
+ const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Header* pHeader = pForm->GetHeader();
+ pHeader->RemoveActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->RemoveActionEventListener(*this);
+
+ if (__pSearchBar->GetMode() == SEARCH_BAR_MODE_INPUT)
+ {
+ __pSearchBar->SetMode(SEARCH_BAR_MODE_NORMAL);
+ }
+}
+
+result
+ContactListEditorPanel::RemoveContactList(void)
+{
+ result r = E_FAILURE;
+
+ for (int groupIndex = __deleteGroupIndex; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = __deleteItemIndex; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ r = __pPresentationModel->RemoveContact(groupIndex, itemIndex, false);
+
+ __deleteGroupIndex = groupIndex;
+ __deleteItemIndex = ++itemIndex;
+
+ return r;
+ }
+ }
+ __deleteItemIndex = 0;
+ }
+
+ __deleteGroupIndex = 0;
+ __deleteItemIndex = 0;
+
+ return r;
+}
+
+int
+ContactListEditorPanel::GetCheckedContactCounts(void)
+{
+ int contactCount = 0;
+
+ for (int groupIndex = __deleteGroupIndex; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = __deleteItemIndex; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ contactCount++;
+ }
+ }
+ }
+
+ return contactCount;
+}
+
+Tizen::Ui::Controls::ListItemBase*
+ContactListEditorPanel::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ String name;
+ Bitmap* pThumbnail = null;
+
+ CustomItem* pItem = new (std::nothrow) CustomItem();
+ pItem->Construct(Dimension(itemWidth, H_ITEM), LIST_ANNEX_STYLE_MARK);
+
+ __pPresentationModel->GetContactItemInfoN(groupIndex, itemIndex, name, pThumbnail);
+
+ ContactListItem* pCustomElement = new (std::nothrow) ContactListItem(name, pThumbnail);
+ pItem->AddElement(Rectangle(0, 0, itemWidth - (ListItemBase::GetAnnexWidth(LIST_ANNEX_STYLE_MARK) + X_LIST_ITEM_TEXT_MARGIN), H_ITEM), 0, *(static_cast<ICustomElement *>(pCustomElement)));
+
+ return pItem;
+}
+
+bool
+ContactListEditorPanel::DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+int
+ContactListEditorPanel::GetItemCount(int groupIndex)
+{
+ return __pPresentationModel->GetContactCount(groupIndex);
+}
+
+int
+ContactListEditorPanel::GetGroupCount(void)
+{
+ return __pPresentationModel->GetKeyCount();
+}
+
+Tizen::Ui::Controls::GroupItem*
+ContactListEditorPanel::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ GroupItem* pItem = new (std::nothrow) GroupItem();
+ pItem->Construct(Dimension(itemWidth, H_GROUP_ITEM));
+ pItem->SetElement(__pPresentationModel->GetKey(groupIndex), null);
+
+ return pItem;
+}
+
+bool
+ContactListEditorPanel::DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+void
+ContactListEditorPanel::OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, Tizen::Ui::Controls::SearchBarMode mode)
+{
+ if (mode == SEARCH_BAR_MODE_NORMAL)
+ {
+ int count = __pPresentationModel->GetSearchedContactCount();
+ bool isChecked = true;
+
+ for (int index = 0; index < count; index++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+
+ __pListView->SetItemChecked(groupIndex, itemIndex, __pSearchListView->IsItemChecked(0, index));
+ }
+
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount() && isChecked == true; groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ isChecked = false;
+ break;
+ }
+ }
+ }
+
+ __pListView->SetShowState(true);
+ __pListView->Invalidate(true);
+ __pSelectAll->SetShowState(true);
+ __pSelectAll->SetSelected(isChecked);
+ __pSearchListView->SetShowState(false);
+ __pPresentationModel->ResetSearchedContactList();
+ __pSearchListView->UpdateList();
+
+ UpdateBottomLabel();
+ }
+}
+
+void
+ContactListEditorPanel::OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+}
+
+void
+ContactListEditorPanel::OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus status)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ int mainGroupIndex = groupIndex;
+ int mainItemIndex = itemIndex;
+
+ if (listView.Equals(*__pSearchListView) == true)
+ {
+ __selectedSearchIndex = 0;
+ __selectedSearchIndex |= groupIndex << LIST_VIEW_GROUP_INDEX_SHIFT;
+ __selectedSearchIndex |= itemIndex;
+
+ __pPresentationModel->GetItemMainIndex(itemIndex, mainGroupIndex, mainItemIndex);
+ }
+
+ __selectedIndex = 0;
+ __selectedIndex |= mainGroupIndex << LIST_VIEW_GROUP_INDEX_SHIFT;
+ __selectedIndex |= mainItemIndex;
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ if (listView.IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ IList* pList = null;
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ pList = __pPresentationModel->GetAllPhoneNumbersN(mainGroupIndex, mainItemIndex);
+
+ if (pList == null)
+ {
+ ReturnResultFailed();
+ }
+ else
+ {
+ if (pList->GetCount() > 1)
+ {
+ listView.SetItemChecked(groupIndex, itemIndex, false);
+ __pContactValueListEvent = new (std::nothrow) ContactValueListItemProvider(pList);
+ ShowContactValuePopup(mainGroupIndex, mainItemIndex);
+ }
+ else if (pList->GetCount() == 1)
+ {
+ String* pContactValueInfo = static_cast<String *>(pList->GetAt(0));
+ int blankIndex = 0;
+ pContactValueInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pContactValueInfo->Remove(0, blankIndex + 1);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(__selectedIndex)), *(new (std::nothrow) String(*pContactValueInfo)));
+ delete pList;
+ }
+ }
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ pList = __pPresentationModel->GetAllEmailsN(mainGroupIndex, mainItemIndex);
+
+ if (pList == null)
+ {
+ ReturnResultFailed();
+ }
+ else
+ {
+ if (pList->GetCount() > 1)
+ {
+ listView.SetItemChecked(groupIndex, itemIndex, false);
+ __pContactValueListEvent = new (std::nothrow) ContactValueListItemProvider(pList);
+ ShowContactValuePopup(mainGroupIndex, mainItemIndex);
+ }
+ else if (pList->GetCount() == 1)
+ {
+ String* pContactValueInfo = static_cast<String *>(pList->GetAt(0));
+ int blankIndex = 0;
+ pContactValueInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pContactValueInfo->Remove(0, blankIndex + 1);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(__selectedIndex)), *(new (std::nothrow) String(*pContactValueInfo)));
+ delete pList;
+ }
+ }
+ }
+ }
+ else
+ {
+ Integer keyIndex(__selectedIndex);
+ __pTempContactValueHashMap->Remove(keyIndex, true);
+ }
+ }
+
+ if (listView.Equals(*__pListView) == true)
+ {
+ __pListView->SetFocus();
+
+ if (listView.IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ bool isChecked = true;
+ for (int groupIndex = 0; groupIndex < listView.GetGroupCount() && isChecked == true; groupIndex++)
+ {
+ int itemCount = listView.GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (listView.IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ isChecked = false;
+ break;
+ }
+ }
+ }
+ __pSelectAll->SetSelected(isChecked);
+ }
+ else if (listView.IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ __pSelectAll->SetSelected(false);
+ }
+ }
+ else if (listView.Equals(*__pSearchListView) == true)
+ {
+ __pSearchListView->SetFocus();
+
+ int count = __pPresentationModel->GetSearchedContactCount();
+
+ for (int index = 0; index < count; index++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+
+ __pListView->SetItemChecked(groupIndex, itemIndex, __pSearchListView->IsItemChecked(0, index));
+ }
+ }
+
+ UpdateBottomLabel();
+}
+
+void
+ContactListEditorPanel::OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+void
+ContactListEditorPanel::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+}
+
+void
+ContactListEditorPanel::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ int groupIndex = (__selectedIndex >> LIST_VIEW_GROUP_INDEX_SHIFT) & LIST_VIEW_MASK;
+ int itemIndex = __selectedIndex & LIST_VIEW_MASK;
+
+ IList* pList = null;
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ pList = __pPresentationModel->GetAllPhoneNumbersN(groupIndex, itemIndex);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ pList = __pPresentationModel->GetAllEmailsN(groupIndex, itemIndex);
+ }
+
+ if (pList == null)
+ {
+ ReturnResultFailed();
+ }
+ else
+ {
+ String* pContactValueInfo = static_cast<String *>(pList->GetAt(index));
+ int blankIndex = 0;
+ pContactValueInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pContactValueInfo->Remove(0, blankIndex + 1);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(__selectedIndex)), *(new (std::nothrow) String(*pContactValueInfo)));
+ }
+ delete pList;
+
+ HideContactValuePopup();
+
+ if (__pListView->GetShowState() == true)
+ {
+ __pListView->SetItemChecked(groupIndex, itemIndex, true);
+
+ bool isChecked = true;
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount() && isChecked == true; groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ isChecked = false;
+ break;
+ }
+ }
+ }
+
+ __pSelectAll->SetSelected(isChecked);
+ }
+ else
+ {
+ groupIndex = (__selectedSearchIndex >> LIST_VIEW_GROUP_INDEX_SHIFT) & LIST_VIEW_MASK;
+ itemIndex = __selectedSearchIndex & LIST_VIEW_MASK;
+ __pSearchListView->SetItemChecked(groupIndex, itemIndex, true);
+
+ int count = __pPresentationModel->GetSearchedContactCount();
+
+ for (int index = 0; index < count; index++)
+ {
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+
+ __pListView->SetItemChecked(groupIndex, itemIndex, __pSearchListView->IsItemChecked(0, index));
+ }
+ }
+
+ UpdateBottomLabel();
+}
+
+void
+ContactListEditorPanel::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+void
+ContactListEditorPanel::OnFastScrollIndexSelected(Tizen::Ui::Control& source, Tizen::Base::String& index)
+{
+ __pListView->ScrollToItem(__pPresentationModel->GetKeyIndex(index), -1);
+ __pListView->Invalidate(false);
+}
+
+void
+ContactListEditorPanel::OnTextValueChanged(const Tizen::Ui::Control& source)
+{
+ String searchText = __pSearchBar->GetText();
+ searchText.Trim();
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_HAS_PHONE_ONLY);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_HAS_EMAIL_ONLY);
+ }
+ else
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_NORMAL);
+ }
+
+ if (searchText.GetLength() != 0)
+ {
+ __pSelectAll->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pSearchListView->SetShowState(true);
+
+ __pSearchListView->UpdateList();
+
+ int count = __pPresentationModel->GetSearchedContactCount();
+
+ for (int index = 0; index < count; index++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+ __pSearchListView->SetItemChecked(0, index, __pListView->IsItemChecked(groupIndex, itemIndex));
+ }
+
+ __pSearchListView->Invalidate(true);
+ }
+ else
+ {
+ __pSelectAll->SetShowState(true);
+ __pListView->SetShowState(true);
+ __pSearchListView->SetShowState(false);
+
+ int count = __pPresentationModel->GetSearchedContactCount();
+ bool isChecked = true;
+
+ for (int index = 0; index < count; index++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+ __pListView->SetItemChecked(groupIndex, itemIndex, __pSearchListView->IsItemChecked(0, index));
+ }
+
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount() && isChecked == true; groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ isChecked = false;
+ break;
+ }
+ }
+ }
+
+ __pSelectAll->SetSelected(isChecked);
+ __pListView->Invalidate(true);
+ }
+}
+
+void
+ContactListEditorPanel::OnTextValueChangeCanceled(const Tizen::Ui::Control& source)
+{
+}
+
+void
+ContactListEditorPanel::OnContactsChanged(void)
+{
+ if (__isContactRemoved == false)
+ {
+ __pListView->UpdateList();
+ }
+}
+
+void
+ContactListEditorPanel::OnCategoriesChanged(void)
+{
+}
+
+result
+ContactListEditorPanel::UpdateBottomLabel(void)
+{
+ int selectedCount = 0;
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ selectedCount++;
+ }
+ }
+ }
+
+ String selected = ResourceManager::GetString(L"IDS_COM_POP_SELECTED");
+ selected.Append(L" (");
+ selected.Append(selectedCount);
+ selected.Append(L")");
+ __pBottomLabel->SetText(selected);
+ __pBottomLabel->Invalidate(false);
+
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Footer* pFooter = pForm->GetFooter();
+
+ if (selectedCount > 0)
+ {
+ pFooter->SetItemEnabled(0, true);
+ }
+ else
+ {
+ pFooter->SetItemEnabled(0, false);
+ }
+
+ pFooter->Invalidate(true);
+
+ return E_SUCCESS;
+}
+
+void
+ContactListEditorPanel::ShowContactValuePopup(int groupIndex, int itemIndex)
+{
+ delete __pMultipleContactValuePopup;
+ __pMultipleContactValuePopup = new (std::nothrow) Popup();
+ __pMultipleContactValuePopup->Construct(true, Dimension(W_CONTACT_VALUE_POPUP, H_CONTACT_VALUE_POPUP));
+ __pMultipleContactValuePopup->SetTitleText(__pPresentationModel->GetName(groupIndex, itemIndex));
+
+ Rectangle popupClientBounds = __pMultipleContactValuePopup->GetClientAreaBounds();
+
+ ListView* pListView = new (std::nothrow) ListView();
+ pListView->Construct(Rectangle(0, 0, popupClientBounds.width, H_CONTACT_VALUE_POPUP_LIST_VIEW));
+ pListView->SetItemProvider(*__pContactValueListEvent);
+ pListView->AddListViewItemEventListener(*this);
+
+ __pMultipleContactValuePopup->AddControl(*pListView);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle((popupClientBounds.width - W_CLOSE_BUTTON) / 2, Y_CLOSE_BUTTON, W_CLOSE_BUTTON, H_CLOSE_BUTTON), ResourceManager::GetString(L"IDS_COM_POP_CLOSE"));
+ pCancelButton->SetActionId(IDA_POPUP_CONTACT_VALUE_CLOSE);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pMultipleContactValuePopup->AddControl(*pCancelButton);
+ __pMultipleContactValuePopup->SetShowState(true);
+ __pMultipleContactValuePopup->Show();
+}
+
+void
+ContactListEditorPanel::HideContactValuePopup(void)
+{
+ __pMultipleContactValuePopup->SetShowState(false);
+
+ delete __pContactValueListEvent;
+ __pContactValueListEvent = null;
+
+ Invalidate(true);
+}
+
+void
+ContactListEditorPanel::ShowDeletePopup(void)
+{
+ if (__pDeletePopup != null)
+ {
+ delete __pDeletePopup;
+ }
+
+ __pDeletePopup = new (std::nothrow) Popup();
+ __pDeletePopup->Construct(false, Dimension(W_DELETE_POPUP, H_DELETE_POPUP));
+ __pDeletePopup->AddWindowEventListener(*this);
+
+ Rectangle clientBounds = __pDeletePopup->GetClientAreaBounds();
+
+ Label* pLabelTitle = new (std::nothrow) Label();
+ pLabelTitle->Construct(Rectangle(0, Y_DELETE_POPUP_TITLE, clientBounds.width, H_DELETE_POPUP_ELEMENT), ResourceManager::GetString(L"IDS_PB_POP_DELETING_CONTACTS_ING"));
+ pLabelTitle->SetTextColor(COLOR_DELETE_POPUP_TEXT);
+ pLabelTitle->SetTextConfig(FONT_SIZE_DELETE_POPUP_TEXT, LABEL_TEXT_STYLE_BOLD);
+ pLabelTitle->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+
+ __pDeletePopup->AddControl(*pLabelTitle);
+
+ Progress* pProgress = new (std::nothrow) Progress();
+ pProgress->Construct(Rectangle(0, Y_DELETE_POPUP_TITLE + H_DELETE_POPUP_ELEMENT, clientBounds.width, H_DELETE_POPUP_PROGRESS), 0, GetCheckedContactCounts());
+
+ __pDeletePopup->AddControl(*pProgress);
+
+ Label* pLabelPercentage = new (std::nothrow) Label();
+ pLabelPercentage->Construct(Rectangle(0, pProgress->GetY() + pProgress->GetHeight(), clientBounds.width / 2, H_DELETE_POPUP_ELEMENT), Integer::ToString(pProgress->GetPercentComplete()) + L"%");
+ pLabelPercentage->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pLabelPercentage->SetTextColor(COLOR_DELETE_POPUP_TEXT);
+ pLabelPercentage->SetTextConfig(FONT_SIZE_DELETE_POPUP_TEXT, LABEL_TEXT_STYLE_NORMAL);
+
+ __pDeletePopup->AddControl(*pLabelPercentage);
+
+ String currentOfTotal(Integer::ToString(pProgress->GetValue()) + L" / " + Integer::ToString(GetCheckedContactCounts()));
+ Label* pLabelTotal = new (std::nothrow) Label();
+ pLabelTotal->Construct(Rectangle(clientBounds.width / 2, pLabelPercentage->GetY(), clientBounds.width / 2, H_DELETE_POPUP_ELEMENT), currentOfTotal);
+ pLabelTotal->SetTextHorizontalAlignment(ALIGNMENT_RIGHT);
+ pLabelTotal->SetTextColor(COLOR_DELETE_POPUP_TEXT);
+ pLabelTotal->SetTextConfig(FONT_SIZE_DELETE_POPUP_TEXT, LABEL_TEXT_STYLE_NORMAL);
+
+ __pDeletePopup->AddControl(*pLabelTotal);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle((clientBounds.width - W_DELETE_POPUP_CANCEL_BUTTON) / 2, Y_DELETE_POPUP_CANCEL_BUTTON, W_DELETE_POPUP_CANCEL_BUTTON, H_DELETE_POPUP_CANCEL_BUTTON));
+ pCancelButton->SetText(ResourceManager::GetString("IDS_PB_SK_CANCEL"));
+ pCancelButton->SetActionId(IDA_POPUP_DELETE_CANCEL);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pDeletePopup->AddControl(*pCancelButton);
+ __pDeletePopup->Show();
+
+ __isContactRemoved = true;
+}
+
+void
+ContactListEditorPanel::HideDeletePopup(void)
+{
+ delete __pDeletePopup;
+ __pDeletePopup = null;
+
+ __isContactRemoved = false;
+
+ __pListView->UpdateList();
+ Invalidate(true);
+}
+
+void
+ContactListEditorPanel::ReturnValues(RequestId requestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue)
+{
+ AppControlProviderManager* pAppManager = AppControlProviderManager::GetInstance();
+ pAppManager->SendAppControlResult(requestId, appCtrlResult, pReturnValue);
+
+ UiApp* pApp = UiApp::GetInstance();
+ pApp->Terminate();
+}
+
+void
+ContactListEditorPanel::ReturnMultipleValues(void)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ String* pKeyType = new (std::nothrow) String(RETURN_KEY_TYPE);
+ String* pKeyValue = new (std::nothrow) String(RETURN_KEY_VALUE);
+ String* pMultiValue = new (std::nothrow) String();
+
+ HashMap* pReturnValue = new (std::nothrow) HashMap();
+ pReturnValue->Construct();
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ pReturnValue->Add(pKeyType, new (std::nothrow) String(RETURN_TYPE_PHONE));
+
+ IMapEnumerator* pMapEnum = __pTempContactValueHashMap->GetMapEnumeratorN();
+ while (pMapEnum->MoveNext() == E_SUCCESS)
+ {
+ String* pValue = static_cast<String*> (pMapEnum->GetValue());
+ pMultiValue->Append(*pValue + DELIMITER_SEMICOLON);
+ }
+ pMultiValue->Remove(pMultiValue->GetLength() - 1, 1);
+ pReturnValue->Add(pKeyValue, pMultiValue);
+
+ delete pMapEnum;
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ pReturnValue->Add(pKeyType, new (std::nothrow) String(RETURN_TYPE_EMAIL));
+
+ IMapEnumerator* pMapEnum = __pTempContactValueHashMap->GetMapEnumeratorN();
+ while (pMapEnum->MoveNext() == E_SUCCESS)
+ {
+ String* pValue = static_cast<String*> (pMapEnum->GetValue());
+ pMultiValue->Append(*pValue + DELIMITER_SEMICOLON);
+ }
+ pMultiValue->Remove(pMultiValue->GetLength() - 1, 1);
+ pReturnValue->Add(pKeyValue, pMultiValue);
+
+ delete pMapEnum;
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_CONTACT_ID)
+ {
+ pReturnValue->Add(pKeyType, new (std::nothrow) String(RETURN_TYPE_CONTACT_ID));
+
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ String pContactId(L"");
+ pContactId.Append(__pPresentationModel->GetContactId(groupIndex, itemIndex));
+ pMultiValue->Append(pContactId + DELIMITER_SEMICOLON);
+ }
+ }
+ }
+ pMultiValue->Remove(pMultiValue->GetLength() - 1, 1);
+ pReturnValue->Add(pKeyValue, pMultiValue);
+ }
+ else
+ {
+ delete pKeyType;
+ delete pKeyValue;
+ delete pMultiValue;
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, pReturnValue);
+
+ return;
+ }
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+ }
+}
+
+void
+ContactListEditorPanel::ReturnResultFailed(void)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, null);
+}
+
+void
+ContactListEditorPanel::OnKeypadWillOpen(Tizen::Ui::Control& source)
+{
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ pForm->SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, false);
+}
+
+void
+ContactListEditorPanel::OnKeypadOpened(Tizen::Ui::Control& source)
+{
+}
+
+void
+ContactListEditorPanel::OnKeypadClosed(Tizen::Ui::Control& source)
+{
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ pForm->SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, true);
+ UpdateBottomLabel();
+}
+
+void
+ContactListEditorPanel::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction)
+{
+}
+
+void
+ContactListEditorPanel::OnWindowActivated (const Tizen::Ui::Window &source)
+{
+ __deleteContactTimer.Start(1);
+}
+
+void
+ContactListEditorPanel::OnWindowDeactivated (const Tizen::Ui::Window &source)
+{
+}
+
+void
+ContactListEditorPanel::OnTimerExpired(Tizen::Base::Runtime::Timer &timer)
+{
+ Progress* pProgress = static_cast<Progress *>(__pDeletePopup->GetControl(1));
+
+ pProgress->SetValue(pProgress->GetValue() + 1);
+ pProgress->Invalidate(false);
+
+ Label* pLabelPercentage = static_cast<Label *>(__pDeletePopup->GetControl(2));
+
+ pLabelPercentage->SetText(Integer::ToString(pProgress->GetPercentComplete()) + L"%");
+ pLabelPercentage->Invalidate(false);
+
+ Label* pLabelTotal = static_cast<Label *>(__pDeletePopup->GetControl(3));
+
+ String currentOfTotal = pLabelTotal->GetText();
+ currentOfTotal.Remove(0, Integer::ToString(pProgress->GetValue() - 1).GetLength());
+ currentOfTotal.Insert(Integer::ToString(pProgress->GetValue()), 0);
+ pLabelTotal->SetText(currentOfTotal);
+ pLabelTotal->Invalidate(false);
+
+ if (RemoveContactList() == E_SUCCESS)
+ {
+ __deleteContactTimer.Start(1);
+ }
+ else
+ {
+ HideDeletePopup();
+
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ pSceneManager->GoBackward(BackwardSceneTransition());
+ }
+}
+
+void
+ContactListEditorPanel::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo & touchInfo)
+{
+ GroupedListView* pList = static_cast<GroupedListView*>(&const_cast<Control&>(source));
+ if (pList != null)
+ {
+ pList->SetFocus();
+ }
+}
+
+void
+ContactListEditorPanel::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactListEditorPanel::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactListEditorPanel::OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactListEditorPanel::OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
--- /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 CtContactListItem.cpp
+ * @brief This is the implementation file for the ContactListItem class.
+ */
+
+#include "CtContactListItem.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Graphics;
+using namespace Tizen::Social;
+using namespace Tizen::Ui::Controls;
+
+static const int W_FASTSCROLL_INDEX = 46;
+static const int W_THUMBNAIL_AREA = 112;
+static const int Y_THUMBNAIL = 8;
+static const int W_THUMBNAIL = 96;
+static const int H_THUMBNAIL = 96;
+static const int X_TEXT = 16;
+static const int Y_TEXT = 16;
+static const int H_TEXT = 80;
+
+static const int FONT_SIZE_NAME = 44;
+
+static const unsigned int COLOR_ITEM_NORMAL = Color32<0, 0, 0>::Value;
+static const unsigned int COLOR_ITEM_PRESSED = Color32<255, 255, 255>::Value;
+
+ContactListItem::ContactListItem(const Tizen::Base::String name, Tizen::Graphics::Bitmap* pThumbnail)
+: __name(name)
+, __pThumbnail(pThumbnail)
+{
+}
+
+ContactListItem::~ContactListItem(void)
+{
+ delete __pThumbnail;
+}
+
+bool
+ContactListItem::OnDraw(Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& rect, Tizen::Ui::Controls::ListItemDrawingStatus itemStatus)
+{
+ result r = E_SUCCESS;
+ bool ret = true;
+ TextElement* pNameElement = null;
+ EnrichedText* pEnrichedText = null;
+ Font font;
+
+ font.Construct(FONT_STYLE_PLAIN , FONT_SIZE_NAME);
+ canvas.SetFont(font);
+
+ if (__name.IsEmpty())
+ {
+ return false;
+ }
+
+ pNameElement = new (std::nothrow) TextElement();
+ pNameElement->Construct(__name);
+ pNameElement->SetFont(font);
+
+ if (itemStatus == LIST_ITEM_DRAWING_STATUS_NORMAL)
+ {
+ pNameElement->SetTextColor(COLOR_ITEM_NORMAL);
+ }
+ else if (itemStatus == LIST_ITEM_DRAWING_STATUS_PRESSED)
+ {
+ pNameElement->SetTextColor(COLOR_ITEM_PRESSED);
+ }
+
+ pEnrichedText = new (std::nothrow) EnrichedText();
+ pEnrichedText->Construct(Dimension(rect.width - (rect.x + X_TEXT + W_THUMBNAIL_AREA + W_FASTSCROLL_INDEX), H_TEXT));
+ pEnrichedText->SetVerticalAlignment(TEXT_ALIGNMENT_MIDDLE);
+ pEnrichedText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
+ pEnrichedText->SetTextAbbreviationEnabled(true);
+ pEnrichedText->Add(*pNameElement);
+
+ r = canvas.DrawText(Point(rect.x + X_TEXT, Y_TEXT), *pEnrichedText);
+ TryCatch(r == E_SUCCESS, ret = false, "Unable to draw text.");
+
+ if (__pThumbnail != null)
+ {
+ r = canvas.DrawBitmap(Rectangle(rect.width - (W_THUMBNAIL_AREA + W_FASTSCROLL_INDEX), Y_THUMBNAIL, W_THUMBNAIL, H_THUMBNAIL), *__pThumbnail);
+ TryCatch(r == E_SUCCESS, ret = false, "Unable to draw a thumbnail.");
+ }
+
+CATCH:
+
+ pEnrichedText->RemoveAllTextElements(true);
+ delete pEnrichedText;
+
+ return ret;
+}
--- /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 CtContactListPanel.cpp
+ * @brief This is the implementation file for the ContactListPanel class.
+ */
+
+#include <FApp.h>
+#include <FSocial.h>
+#include "CtAccountListItemProvider.h"
+#include "CtContactListItem.h"
+#include "CtContactListPanel.h"
+#include "CtContactListPresentationModel.h"
+#include "CtContactsApp.h"
+#include "CtMainForm.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtSearchListEventListener.h"
+#include "CtSearchListItem.h"
+#include "CtTypes.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 int IDA_FOOTER_MORE = 0;
+static const int IDA_FOOTER_CREATE = 1;
+static const int IDA_MORE_DELETE = 2;
+static const int IDA_HEADER_CONTACTS = 10;
+static const int IDA_HEADER_GROUPS = 11;
+static const int IDA_HEADER_FAVORITES = 12;
+static const int IDA_POPUP_DELETE_OK = 30;
+static const int IDA_POPUP_DELETE_CANCEL = 31;
+static const int IDA_POPUP_VIEW_OK = 32;
+static const int IDA_POPUP_VIEW_CANCEL = 33;
+static const int IDA_POPUP_CONTACT_VALUE_CLOSE = 34;
+static const int IDA_LIST_ELEMENT_DELETE = 40;
+static const int IDA_LIST_ELEMENT_CALL = 41;
+static const int IDA_LIST_ELEMENT_MESSAGE = 42;
+static const int IDA_LIST_ELEMENT_VIDEO_CALL = 43;
+
+static const int W_POPUP_ITEM_GAP = 20;
+static const int H_ITEM = 112;
+static const int X_EMPTY_IMAGE = 220;
+static const int Y_EMPTY_IMAGE = 300;
+static const int W_EMPTY_IMAGE = 280;
+static const int H_EMPTY_IMAGE = 280;
+static const int Y_EMPTY_COMMENT = 618;
+static const int H_EMPTY_COMMENT = 38;
+static const int H_GROUP_ITEM = 76;
+static const int W_INITIAL_PANEL = 10;
+static const int H_INITIAL_PANEL = 10;
+static const int H_SEARCHBAR = 108;
+static const int W_DELETE_POPUP = 720;
+static const int H_DELETE_POPUP = 208;
+static const int H_DELETE_LABEL = 94;
+static const int Y_DELETE_BUTTON = 114;
+static const int H_DELETE_BUTTON = 74;
+static const int W_DELETE_BUTTON = 314;
+static const int W_ACCOUNT_POPUP = 600;
+static const int H_ACCOUNT_POPUP = 700;
+static const int H_ACCOUNT_POPUP_BUTTON = 80;
+static const int W_CONTACT_VALUE_POPUP = 720;
+static const int H_CONTACT_VALUE_POPUP = 700;
+static const int H_CONTACT_VALUE_POPUP_LIST_VIEW = 506;
+static const int H_CLOSE_BUTTON = 74;
+static const int Y_CLOSE_BUTTON = 526;
+static const int W_CLOSE_BUTTON = 394;
+static const int X_MORE = 55;
+
+static const int FONT_SIZE_EMPTY_COMMENT = 32;
+static const int FONT_SIZE_DELETE_CONFIRM = 42;
+
+static const unsigned int COLOR_EMPTY_COMMENT = Color32<102, 102, 102>::Value;
+
+static const int LIST_VIEW_GROUP_INDEX_SHIFT = 16;
+static const int LIST_VIEW_MASK = 0xFFFF;
+
+static const wchar_t* IDB_NO_CONTENTS = L"00_Nocontents_text.png";
+static const wchar_t* IDB_MORE_NORMAL = L"00_icon_more.png";
+static const wchar_t* IDB_MORE_PRESSED = L"00_icon_more_press.png";
+
+static const wchar_t* INPUT_KEY_TYPE = L"type";
+static const wchar_t* INPUT_TYPE_VIDEO = L"video";
+static const wchar_t* INPUT_TYPE_VOICE = L"voice";
+static const wchar_t* INPUT_TYPE_SMS = L"SMS";
+static const wchar_t* INPUT_KEY_TEL = L"tel";
+static const wchar_t* INPUT_KEY_TO = L"to";
+static const wchar_t* INPUT_KEY_CONTACT_ID = L"contactId";
+
+ContactListPanel::ContactListPanel(void)
+: __pArgList(null)
+, __pListView(null)
+, __pSearchListView(null)
+, __pAccountPopup(null)
+, __pDeletePopup(null)
+, __pMultipleContactValuePopup(null)
+, __pSearchBar(null)
+, __pEmptyImageLabel(null)
+, __pEmptyCommentLabel(null)
+, __pContextMenuMore(null)
+, __pAccountListEvent(null)
+, __pPresentationModel(null)
+, __pContactValueListEvent(null)
+, __pSearchListEvent(null)
+, __sweptItemIndex(0)
+, __selectedIndex(-1)
+{
+}
+
+ContactListPanel::~ContactListPanel(void)
+{
+}
+
+void
+ContactListPanel::Initialize(void)
+{
+ Construct(Rectangle(0, 0, W_INITIAL_PANEL, H_INITIAL_PANEL));
+}
+
+result
+ContactListPanel::OnInitializing(void)
+{
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Rectangle clientBounds = pForm->GetClientAreaBounds();
+ SetBounds(Rectangle(0, 0, clientBounds.width, clientBounds.height));
+
+ __pPresentationModel = ContactListPresentationModel::GetInstance();
+ __pPresentationModel->InitializeContactList();
+ __pPresentationModel->AddContactChangeListener(*this);
+
+ __pListView = new (std::nothrow) GroupedListView();
+ __pListView->Construct(Rectangle(0, H_SEARCHBAR, clientBounds.width, clientBounds.height - H_SEARCHBAR), GROUPED_LIST_VIEW_STYLE_INDEXED, true, true);
+ __pListView->SetItemProvider(*this);
+ __pListView->SetTextOfEmptyList(ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pListView->AddFastScrollListener(*this);
+ __pListView->AddGroupedListViewItemEventListener(*this);
+ __pListView->AddTouchEventListener(*this);
+ __pListView->SetFastScrollIndex(__pPresentationModel->GetAllKeys(), false);
+
+ AddControl(*__pListView);
+
+ __pSearchBar = new (std::nothrow) SearchBar();
+ __pSearchBar->Construct(Rectangle(0, 0, clientBounds.width, H_SEARCHBAR));
+ __pSearchBar->SetGuideText(ResourceManager::GetString(L"IDS_COM_BODY_SEARCH"));
+ __pSearchBar->AddSearchBarEventListener(*this);
+ __pSearchBar->AddTextEventListener(*this);
+ __pSearchBar->AddKeypadEventListener(*this);
+ __pSearchBar->SetContentAreaSize(Dimension(0, 0));
+
+ __pSearchListEvent = new (std::nothrow) SearchListEventListener(LIST_ANNEX_STYLE_NORMAL, __pPresentationModel);
+
+ AddControl(*__pSearchBar);
+
+ __pSearchListView = new (std::nothrow) GroupedListView();
+ __pSearchListView->Construct(Rectangle(0, H_SEARCHBAR, clientBounds.width, clientBounds.height - H_SEARCHBAR), GROUPED_LIST_VIEW_STYLE_INDEXED, true, false);
+ __pSearchListView->SetItemProvider(*__pSearchListEvent);
+ __pSearchListView->AddGroupedListViewItemEventListener(*this);
+ __pSearchListView->AddTouchEventListener(*this);
+ __pSearchListView->SetTextOfEmptyList(ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pSearchListView->SetShowState(false);
+ AddControl(*__pSearchListView);
+
+ __pEmptyImageLabel = new (std::nothrow) Label();
+ __pEmptyImageLabel->Construct(Rectangle(X_EMPTY_IMAGE, Y_EMPTY_IMAGE, W_EMPTY_IMAGE, H_EMPTY_IMAGE), L"");
+ Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_NO_CONTENTS);
+ if (pBitmap != null)
+ {
+ __pEmptyImageLabel->SetBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+ __pEmptyImageLabel->SetShowState(false);
+
+ AddControl(*__pEmptyImageLabel);
+
+ __pEmptyCommentLabel = new (std::nothrow) Label();
+ __pEmptyCommentLabel->Construct(Rectangle(0, Y_EMPTY_COMMENT, clientBounds.width, H_EMPTY_COMMENT),
+ ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pEmptyCommentLabel->SetTextConfig(FONT_SIZE_EMPTY_COMMENT, LABEL_TEXT_STYLE_NORMAL);
+ __pEmptyCommentLabel->SetTextColor(Color(COLOR_EMPTY_COMMENT));
+ __pEmptyCommentLabel->SetShowState(false);
+
+ AddControl(*__pEmptyCommentLabel);
+
+ __pContextMenuMore = new (std::nothrow) ContextMenu();
+ __pContextMenuMore->Construct(Point(X_MORE, clientBounds.y + clientBounds.height), CONTEXT_MENU_STYLE_LIST);
+ __pContextMenuMore->AddItem(ResourceManager::GetString(L"IDS_COM_SK_DELETE"), IDA_MORE_DELETE);
+ __pContextMenuMore->AddActionEventListener(*this);
+
+ return E_SUCCESS;
+}
+
+result
+ContactListPanel::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pPresentationModel != null)
+ {
+ __pPresentationModel->RemoveContactChangeListener(*this);
+ }
+
+ if (__pArgList != null)
+ {
+ __pArgList->RemoveAll(true);
+ delete __pArgList;
+ }
+
+ delete __pDeletePopup;
+ delete __pAccountPopup;
+ delete __pSearchListEvent;
+ delete __pAccountListEvent;
+ delete __pContextMenuMore;
+ delete __pMultipleContactValuePopup;
+
+ return r;
+}
+
+void
+ContactListPanel::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ switch (actionId)
+ {
+ case IDA_HEADER_CONTACTS:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST));
+ }
+ break;
+ case IDA_HEADER_GROUPS:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_LIST));
+ }
+ break;
+ case IDA_HEADER_FAVORITES:
+ {
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_SINGLE)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST));
+ }
+ else if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_MULTI)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST_EDITOR));
+ }
+ }
+ else
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST));
+ }
+ }
+ break;
+ case IDA_FOOTER_CREATE:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT));
+ }
+ break;
+ case IDA_FOOTER_MORE:
+ {
+ __pContextMenuMore->SetShowState(true);
+ __pContextMenuMore->Show();
+ }
+ break;
+ case IDA_MORE_DELETE:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST_EDITOR));
+ }
+ break;
+ case IDA_POPUP_DELETE_OK:
+ {
+ int groupIndex = (__sweptItemIndex >> LIST_VIEW_GROUP_INDEX_SHIFT) & LIST_VIEW_MASK;
+ int itemIndex = __sweptItemIndex & LIST_VIEW_MASK;
+
+ __pPresentationModel->RemoveContact(groupIndex, itemIndex);
+ HideDeletePopup();
+ }
+ break;
+ case IDA_POPUP_DELETE_CANCEL:
+ {
+ HideDeletePopup();
+ }
+ break;
+ case IDA_POPUP_VIEW_OK:
+ {
+
+ }
+ break;
+ case IDA_POPUP_VIEW_CANCEL:
+ {
+ HideAccountPopup();
+ }
+ break;
+ case IDA_POPUP_CONTACT_VALUE_CLOSE:
+ {
+ HideContactValuePopup();
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+ContactListPanel::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
+ const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Header* pHeader = pForm->GetHeader();
+ pHeader->AddActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->RemoveAllItems();
+ pFooter->RemoveButtonAt(BUTTON_POSITION_LEFT);
+ pFooter->SetBackButton();
+ pFooter->AddActionEventListener(*this);
+
+ __pPresentationModel->InitializeContactList();
+
+ if (previousSceneId.Equals(IDSCN_CONTACT_LIST_EDITOR, true))
+ {
+ __pListView->SetFastScrollIndex(__pPresentationModel->GetAllKeys(), false);
+ __pListView->UpdateList();
+ }
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK || pContactsApp->GetOperationId() == OPERATION_ID_EDIT)
+ {
+ if (__pPresentationModel->GetContactCount() == 0)
+ {
+ __pSearchBar->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ }
+
+ if (pArgs != null)
+ {
+ __pArgList = new (std::nothrow) ArrayList();
+ __pArgList->Construct();
+
+ for (int i = 1; i < pArgs->GetCount(); i++)
+ {
+ __pArgList->Add(new (std::nothrow) String(*static_cast<String*>(pArgs->GetAt(i))));
+ }
+ }
+ }
+ else
+ {
+ FooterItem footerItemCreate;
+ footerItemCreate.Construct(IDA_FOOTER_CREATE);
+ footerItemCreate.SetText(ResourceManager::GetString(L"IDS_COM_BODY_CREATE"));
+ pFooter->AddItem(footerItemCreate);
+
+ if (__pPresentationModel->GetContactCount() > 0)
+ {
+ ButtonItem buttonItemMore;
+ buttonItemMore.Construct(BUTTON_ITEM_STYLE_ICON, IDA_FOOTER_MORE);
+ buttonItemMore.SetBackgroundBitmap(BUTTON_ITEM_STATUS_NORMAL, ResourceManager::GetBitmapN(IDB_MORE_NORMAL));
+ buttonItemMore.SetBackgroundBitmap(BUTTON_ITEM_STATUS_PRESSED, ResourceManager::GetBitmapN(IDB_MORE_PRESSED));
+ pFooter->SetButton(BUTTON_POSITION_LEFT, buttonItemMore);
+ }
+ else
+ {
+ __pSearchBar->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ }
+ pContactsApp->AddContactsAppChangeEventListener(*this);
+ }
+
+ if (pArgs != null)
+ {
+ pArgs->RemoveAll(true);
+ delete pArgs;
+ }
+}
+
+void
+ContactListPanel::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
+ const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Header* pHeader = pForm->GetHeader();
+ pHeader->RemoveActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->RemoveActionEventListener(*this);
+
+ if (__pSearchBar->GetMode() == SEARCH_BAR_MODE_INPUT)
+ {
+ __pSearchBar->SetMode(SEARCH_BAR_MODE_NORMAL);
+ }
+
+ pContactsApp->RemoveContactsAppChangeEventListener(*this);
+}
+
+int
+ContactListPanel::GetGroupCount(void)
+{
+ return __pPresentationModel->GetKeyCount();
+}
+
+int
+ContactListPanel::GetItemCount(int groupIndex)
+{
+ return __pPresentationModel->GetContactCount(groupIndex);
+}
+
+Tizen::Ui::Controls::ListItemBase*
+ContactListPanel::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ String name;
+ Bitmap* pThumbnail = null;
+
+ CustomItem* pItem = new (std::nothrow) CustomItem();
+ pItem->Construct(Dimension(itemWidth, H_ITEM), LIST_ANNEX_STYLE_NORMAL);
+
+ __pPresentationModel->GetContactItemInfoN(groupIndex, itemIndex, name, pThumbnail);
+
+ ContactListItem* pCustomElement = new (std::nothrow) ContactListItem(name, pThumbnail);
+ pItem->AddElement(Rectangle(0, 0, itemWidth, H_ITEM), 0, *(static_cast<ICustomElement *>(pCustomElement)));
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (pContactsApp->GetOperationId().IsEmpty() == false)
+ {
+ return pItem;
+ }
+
+ bool isEnabled = true;
+ if (__pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex).IsEmpty())
+ {
+ isEnabled = false;
+ }
+
+ ListContextItem* pItemContext = new (std::nothrow) ListContextItem();
+ pItemContext->Construct();
+ pItemContext->AddElement(IDA_LIST_ELEMENT_CALL, ResourceManager::GetString(L"IDS_COM_BODY_CALL"), isEnabled);
+ pItemContext->AddElement(IDA_LIST_ELEMENT_MESSAGE, ResourceManager::GetString(L"IDS_COM_BODY_MESSAGE"), isEnabled);
+#if __SUPPORT_VIDEO_CALL
+ pItemContext->AddElement(IDA_LIST_ELEMENT_VIDEO_CALL, ResourceManager::GetString(L"IDS_COM_BODY_VIDEO_CALL"), isEnabled);
+#endif
+ pItemContext->AddElement(IDA_LIST_ELEMENT_DELETE, ResourceManager::GetString(L"IDS_COM_SK_DELETE"));
+
+ pItem->SetContextItem(pItemContext);
+
+ return pItem;
+}
+
+Tizen::Ui::Controls::GroupItem*
+ContactListPanel::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ GroupItem* pItem = new (std::nothrow) GroupItem();
+ pItem->Construct(Dimension(itemWidth, H_GROUP_ITEM));
+ pItem->SetElement(__pPresentationModel->GetKey(groupIndex), null);
+
+ return pItem;
+}
+
+bool
+ContactListPanel::DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
+{
+ CustomItem* pCustomItem = static_cast<CustomItem *>(pItem);
+
+ pCustomItem->RemoveAllElements();
+
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+bool
+ContactListPanel::DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+void
+ContactListPanel::OnContactsChanged(void)
+{
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Footer* pFooter = pForm->GetFooter();
+
+ if (__pPresentationModel->GetContactCount() > 0)
+ {
+ int groupIndex;
+ int itemIndex;
+
+ if (pFooter->IsButtonSet(BUTTON_POSITION_LEFT) == false)
+ {
+ ButtonItem buttonItemMore;
+ buttonItemMore.Construct(BUTTON_ITEM_STYLE_ICON, IDA_FOOTER_MORE);
+ buttonItemMore.SetBackgroundBitmap(BUTTON_ITEM_STATUS_NORMAL, ResourceManager::GetBitmapN(IDB_MORE_NORMAL));
+ buttonItemMore.SetBackgroundBitmap(BUTTON_ITEM_STATUS_PRESSED, ResourceManager::GetBitmapN(IDB_MORE_PRESSED));
+ pFooter->SetButton(BUTTON_POSITION_LEFT, buttonItemMore);
+ }
+
+ __pSearchBar->SetShowState(true);
+ __pListView->SetShowState(true);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+
+ __pListView->GetTopDrawnItemIndex(groupIndex, itemIndex);
+ __pListView->UpdateList();
+ __pListView->SetFastScrollIndex(__pPresentationModel->GetAllKeys(), false);
+ __pListView->Invalidate(true);
+ __pListView->ScrollToItem(groupIndex, itemIndex);
+ }
+ else
+ {
+ pFooter->RemoveButtonAt(BUTTON_POSITION_LEFT);
+
+ __pSearchBar->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ }
+}
+
+void
+ContactListPanel::OnCategoriesChanged(void)
+{
+}
+
+void
+ContactListPanel::OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, Tizen::Ui::Controls::SearchBarMode mode)
+{
+ if (mode == SEARCH_BAR_MODE_NORMAL)
+ {
+ __pListView->SetShowState(true);
+ __pSearchListView->SetShowState(false);
+ __pPresentationModel->ResetSearchedContactList();
+ __pSearchListView->UpdateList();
+ }
+}
+
+void
+ContactListPanel::OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+ int index = 0;
+
+ index |= groupIndex << LIST_VIEW_GROUP_INDEX_SHIFT;
+ index |= itemIndex;
+
+ __sweptItemIndex = index;
+
+ switch (elementId)
+ {
+ case IDA_LIST_ELEMENT_DELETE:
+ {
+ ShowDeletePopup();
+ }
+ break;
+ case IDA_LIST_ELEMENT_CALL:
+ {
+ String phoneNumber = __pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex);
+ LaunchAppControl(PROVIDER_ID_PHONE, OPERATION_ID_CALL, phoneNumber, INPUT_TYPE_VOICE);
+ }
+ break;
+ case IDA_LIST_ELEMENT_MESSAGE:
+ {
+ String phoneNumber = __pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex);
+ LaunchAppControl(PROVIDER_ID_MESSAGE, OPERATION_ID_COMPOSE, phoneNumber);
+ }
+ break;
+ case IDA_LIST_ELEMENT_VIDEO_CALL:
+ {
+ String phoneNumber = __pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex);
+ LaunchAppControl(PROVIDER_ID_PHONE, OPERATION_ID_CALL, phoneNumber, INPUT_TYPE_VIDEO);
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+ContactListPanel::OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus state)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (listView.Equals(*__pSearchListView) == true)
+ {
+ __pPresentationModel->GetItemMainIndex(itemIndex, groupIndex, itemIndex);
+ }
+
+ __selectedIndex = 0;
+ __selectedIndex |= groupIndex << LIST_VIEW_GROUP_INDEX_SHIFT;
+ __selectedIndex |= itemIndex;
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ IList* pList = null;
+ HashMap* pReturnValue = new (std::nothrow) HashMap();
+ pReturnValue->Construct();
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ pList = __pPresentationModel->GetAllPhoneNumbersN(groupIndex, itemIndex);
+
+ if (pList == null)
+ {
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, pReturnValue);
+ }
+ else
+ {
+ if (pList->GetCount() > 1)
+ {
+ __pContactValueListEvent = new (std::nothrow) ContactValueListItemProvider(pList);
+ ShowContactValuePopup(groupIndex, itemIndex);
+ }
+ else if (pList->GetCount() == 1)
+ {
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_TYPE), new (std::nothrow) String(RETURN_TYPE_PHONE));
+ AddContactValueOnList(pList, 0, pReturnValue);
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+ delete pList;
+ }
+ }
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ pList = __pPresentationModel->GetAllEmailsN(groupIndex, itemIndex);
+
+ if (pList == null)
+ {
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, pReturnValue);
+ }
+ else
+ {
+ if (pList->GetCount() > 1)
+ {
+ __pContactValueListEvent = new (std::nothrow) ContactValueListItemProvider(pList);
+ ShowContactValuePopup(groupIndex, itemIndex);
+ }
+ else if (pList->GetCount() == 1)
+ {
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_TYPE), new (std::nothrow) String(RETURN_TYPE_EMAIL));
+ AddContactValueOnList(pList, 0, pReturnValue);
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+ delete pList;
+ }
+ }
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_CONTACT_ID)
+ {
+ AppCtrlResult appCtrlResult = APP_CTRL_RESULT_SUCCEEDED;
+ RecordId contactId = __pPresentationModel->GetContactId(groupIndex, itemIndex);
+ if (contactId == INVALID_RECORD_ID)
+ {
+ appCtrlResult = APP_CTRL_RESULT_FAILED;
+ }
+ else
+ {
+ String pContactId;
+
+ pContactId.Append(__pPresentationModel->GetContactId(groupIndex, itemIndex));
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_TYPE), new (std::nothrow) String(RETURN_TYPE_CONTACT_ID));
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_VALUE), new (std::nothrow) String(pContactId));
+ }
+
+ ReturnValues(pContactsApp->GetRequestId(), appCtrlResult, pReturnValue);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_VCARD)
+ {
+ AppCtrlResult appCtrlResult = APP_CTRL_RESULT_SUCCEEDED;
+ String vCardPath = __pPresentationModel->ExportToVcard(groupIndex, itemIndex);
+ if (vCardPath.IsEmpty())
+ {
+ appCtrlResult = APP_CTRL_RESULT_FAILED;
+ }
+ else
+ {
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_TYPE), new (std::nothrow) String(RETURN_TYPE_VCARD));
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_VALUE), new (std::nothrow) String(vCardPath));
+ }
+
+ ReturnValues(pContactsApp->GetRequestId(), appCtrlResult, pReturnValue);
+ }
+
+ delete pReturnValue;
+ }
+ else if (pContactsApp->GetOperationId() == OPERATION_ID_EDIT)
+ {
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ if (__pArgList != null)
+ {
+ String* pContactId = new (std::nothrow) String(INPUT_KEY_CONTACT_ID);
+ pContactId->Append(DELIMITER);
+ pContactId->Append(__pPresentationModel->GetContactId(groupIndex, itemIndex));
+ __pArgList->InsertAt(pContactId, 0);
+ }
+
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), __pArgList);
+ }
+ else
+ {
+ ArrayList* pContactId = new (std::nothrow) ArrayList();
+ pContactId->Construct();
+
+ pContactId->Add(*(new (std::nothrow) Integer(__pPresentationModel->GetContactId(groupIndex, itemIndex))));
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_DETAILS, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pContactId);
+ }
+}
+
+void
+ContactListPanel::OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+void
+ContactListPanel::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+
+}
+
+void
+ContactListPanel::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ IList* pList = null;
+ int groupIndex = (__selectedIndex >> LIST_VIEW_GROUP_INDEX_SHIFT) & LIST_VIEW_MASK;
+ int itemIndex = __selectedIndex & LIST_VIEW_MASK;
+ AppCtrlResult appCtrlResult = APP_CTRL_RESULT_SUCCEEDED;
+
+ HashMap* pReturnValue = new (std::nothrow) HashMap();
+ pReturnValue->Construct();
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ pList = __pPresentationModel->GetAllPhoneNumbersN(groupIndex, itemIndex);
+ if (pList == null)
+ {
+ appCtrlResult = APP_CTRL_RESULT_FAILED;
+ }
+ else
+ {
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_TYPE), new (std::nothrow) String(RETURN_TYPE_PHONE));
+ AddContactValueOnList(pList, index, pReturnValue);
+ }
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+
+ pList = __pPresentationModel->GetAllEmailsN(groupIndex, itemIndex);
+ if (pList == null)
+ {
+ appCtrlResult = APP_CTRL_RESULT_FAILED;
+ }
+ else
+ {
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_TYPE), new (std::nothrow) String(RETURN_TYPE_EMAIL));
+ AddContactValueOnList(pList, index, pReturnValue);
+ }
+ }
+ delete pList;
+
+ ReturnValues(pContactsApp->GetRequestId(), appCtrlResult, pReturnValue);
+}
+
+void
+ContactListPanel::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction)
+{
+
+}
+
+void
+ContactListPanel::OnTextValueChanged(const Tizen::Ui::Control& source)
+{
+ String searchText = __pSearchBar->GetText();
+ searchText.Trim();
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_HAS_PHONE_ONLY);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_HAS_EMAIL_ONLY);
+ }
+ else
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_NORMAL);
+ }
+
+ if (searchText.GetLength() != 0)
+ {
+ __pSearchListView->SetShowState(true);
+ __pListView->SetShowState(false);
+ }
+ else
+ {
+ __pSearchListView->SetShowState(false);
+ __pListView->SetShowState(true);
+ }
+
+ __pSearchListView->UpdateList();
+}
+
+void
+ContactListPanel::OnTextValueChangeCanceled(const Tizen::Ui::Control& source)
+{
+}
+
+void
+ContactListPanel::ShowDeletePopup(void)
+{
+ if (__pDeletePopup == null)
+ {
+ __pDeletePopup = new (std::nothrow) Popup();
+ __pDeletePopup->Construct(false, Dimension(W_DELETE_POPUP, H_DELETE_POPUP));
+
+ Rectangle popupClientBounds = __pDeletePopup->GetClientAreaBounds();
+
+ Label* pLabel = new (std::nothrow) Label();
+ pLabel->Construct(Rectangle(0, 0, popupClientBounds.width, H_DELETE_LABEL), ResourceManager::GetString(L"IDS_COM_SK_DELETE") + L"?");
+ pLabel->SetTextConfig(FONT_SIZE_DELETE_CONFIRM, LABEL_TEXT_STYLE_BOLD);
+ pLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+
+ Button* pDeleteButton = new (std::nothrow) Button();
+ pDeleteButton->Construct(Rectangle(0, Y_DELETE_BUTTON, W_DELETE_BUTTON, H_DELETE_BUTTON), ResourceManager::GetString(L"IDS_COM_SK_DELETE"));
+ pDeleteButton->SetActionId(IDA_POPUP_DELETE_OK);
+ pDeleteButton->AddActionEventListener(*this);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle(W_DELETE_BUTTON + W_POPUP_ITEM_GAP, Y_DELETE_BUTTON, W_DELETE_BUTTON, H_DELETE_BUTTON), ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
+ pCancelButton->SetActionId(IDA_POPUP_DELETE_CANCEL);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pDeletePopup->AddControl(*pLabel);
+ __pDeletePopup->AddControl(*pDeleteButton);
+ __pDeletePopup->AddControl(*pCancelButton);
+ }
+
+ __pDeletePopup->SetShowState(true);
+ __pDeletePopup->Show();
+}
+
+void
+ContactListPanel::HideDeletePopup(void)
+{
+ delete __pDeletePopup;
+ __pDeletePopup = null;
+
+ Invalidate(true);
+}
+
+void
+ContactListPanel::ShowAccountPopup(void)
+{
+ if (__pAccountListEvent != null)
+ {
+ delete __pAccountListEvent;
+ __pAccountListEvent = null;
+ }
+
+ if (__pAccountPopup != null)
+ {
+ delete __pAccountPopup;
+ __pAccountPopup = null;
+ }
+
+ if (__pAccountPopup == null)
+ {
+ __pAccountPopup = new (std::nothrow) Popup();
+ __pAccountPopup->Construct(true, Dimension(W_ACCOUNT_POPUP, H_ACCOUNT_POPUP));
+ __pAccountPopup->SetTitleText(ResourceManager::GetString(L"IDS_PB_OPT_VIEW"));
+
+ Rectangle popupClientBounds = __pAccountPopup->GetClientAreaBounds();
+
+ ListView* pAccountListView = new (std::nothrow) ListView();
+ pAccountListView->Construct(Rectangle(0, 0, popupClientBounds.width, popupClientBounds.height - H_ACCOUNT_POPUP_BUTTON));
+
+ __pAccountListEvent = new (std::nothrow) AccountListItemProvider(pAccountListView, __pPresentationModel);
+
+ pAccountListView->SetItemProvider(*__pAccountListEvent);
+
+ __pAccountPopup->AddControl(*pAccountListView);
+
+ Button* pViewButton = new (std::nothrow) Button();
+ pViewButton->Construct(Rectangle(0, popupClientBounds.height - H_ACCOUNT_POPUP_BUTTON, popupClientBounds.width / 2 - W_POPUP_ITEM_GAP, H_ACCOUNT_POPUP_BUTTON),
+ ResourceManager::GetString(L"IDS_PB_OPT_VIEW"));
+ pViewButton->SetActionId(IDA_POPUP_VIEW_OK);
+ pViewButton->AddActionEventListener(*this);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle(popupClientBounds.width / 2 + W_POPUP_ITEM_GAP, popupClientBounds.height - H_ACCOUNT_POPUP_BUTTON,
+ popupClientBounds.width / 2 - W_POPUP_ITEM_GAP, H_ACCOUNT_POPUP_BUTTON), ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
+ pCancelButton->SetActionId(IDA_POPUP_VIEW_CANCEL);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pAccountPopup->AddControl(*pViewButton);
+ __pAccountPopup->AddControl(*pCancelButton);
+ }
+
+ __pAccountPopup->SetShowState(true);
+ __pAccountPopup->Show();
+}
+
+void
+ContactListPanel::HideAccountPopup(void)
+{
+ delete __pAccountPopup;
+ __pAccountPopup = null;
+
+ Invalidate(true);
+}
+
+void
+ContactListPanel::OnFastScrollIndexSelected (Tizen::Ui::Control& source, Tizen::Base::String& index)
+{
+ __pListView->ScrollToItem(__pPresentationModel->GetKeyIndex(index), -1);
+ __pListView->Invalidate(false);
+}
+
+void
+ContactListPanel::ShowContactValuePopup(int groupIndex, int itemIndex)
+{
+ delete __pMultipleContactValuePopup;
+ __pMultipleContactValuePopup = new (std::nothrow) Popup();
+ __pMultipleContactValuePopup->Construct(true, Dimension(W_CONTACT_VALUE_POPUP, H_CONTACT_VALUE_POPUP));
+ __pMultipleContactValuePopup->SetTitleText(__pPresentationModel->GetName(groupIndex, itemIndex));
+
+ Rectangle popupClientBounds = __pMultipleContactValuePopup->GetClientAreaBounds();
+
+ ListView* pListView = new (std::nothrow) ListView();
+ pListView->Construct(Rectangle(0, 0, popupClientBounds.width, H_CONTACT_VALUE_POPUP_LIST_VIEW));
+ pListView->SetItemProvider(*__pContactValueListEvent);
+ pListView->AddListViewItemEventListener(*this);
+
+ __pMultipleContactValuePopup->AddControl(*pListView);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle((popupClientBounds.width - W_CLOSE_BUTTON) / 2, Y_CLOSE_BUTTON, W_CLOSE_BUTTON, H_CLOSE_BUTTON), ResourceManager::GetString(L"IDS_COM_POP_CLOSE"));
+ pCancelButton->SetActionId(IDA_POPUP_CONTACT_VALUE_CLOSE);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pMultipleContactValuePopup->AddControl(*pCancelButton);
+ __pMultipleContactValuePopup->SetShowState(true);
+ __pMultipleContactValuePopup->Show();
+}
+
+void
+ContactListPanel::HideContactValuePopup(void)
+{
+ __pMultipleContactValuePopup->SetShowState(false);
+
+ delete __pContactValueListEvent;
+ __pContactValueListEvent = null;
+
+ Invalidate(true);
+}
+
+void
+ContactListPanel::ReturnValues(RequestId requestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue)
+{
+ AppControlProviderManager* pAppManager = AppControlProviderManager::GetInstance();
+ pAppManager->SendAppControlResult(requestId, appCtrlResult, pReturnValue);
+
+ UiApp* pApp = UiApp::GetInstance();
+ pApp->Terminate();
+}
+
+void
+ContactListPanel::AddContactValueOnList(const Tizen::Base::Collection::IList* pList, int index, Tizen::Base::Collection::HashMap* pReturnValue)
+{
+ int blankIndex = 0;
+
+ String value(*(static_cast<const String *>(pList->GetAt(index))));
+ value.IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ value.Remove(0, blankIndex + 1);
+
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_VALUE), new (std::nothrow) String(value));
+}
+
+result
+ContactListPanel::LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, const Tizen::Base::String& argument, const Tizen::Base::String& type)
+{
+ result r = E_SUCCESS;
+ HashMap extraData;
+ extraData.Construct();
+
+ if (appId.Equals(String(PROVIDER_ID_PHONE)))
+ {
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TEL), new (std::nothrow) String(argument));
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TYPE), new (std::nothrow) String(type));
+ }
+ else if (appId.Equals(String(PROVIDER_ID_MESSAGE)))
+ {
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TO), new (std::nothrow) String(argument));
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TYPE), new (std::nothrow) String(INPUT_TYPE_SMS));
+ }
+
+ AppControl* pAc = AppManager::FindAppControlN(appId, operationId);
+ if (pAc != null)
+ {
+ r = pAc->Start(null, null, &extraData, null);
+
+ delete pAc;
+ }
+
+ extraData.RemoveAll(true);
+
+ return r;
+}
+
+void
+ContactListPanel::OnKeypadWillOpen(Tizen::Ui::Control& source)
+{
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ pForm->SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, false);
+}
+
+void
+ContactListPanel::OnKeypadOpened(Tizen::Ui::Control& source)
+{
+}
+
+void
+ContactListPanel::OnKeypadClosed(Tizen::Ui::Control& source)
+{
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ pForm->SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, true);
+}
+
+void
+ContactListPanel::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction)
+{
+}
+
+void
+ContactListPanel::OnForeground(void)
+{
+}
+
+void
+ContactListPanel::OnBackground(void)
+{
+ int groupIndex = (__sweptItemIndex >> LIST_VIEW_GROUP_INDEX_SHIFT) & LIST_VIEW_MASK;
+ int itemIndex = __sweptItemIndex & LIST_VIEW_MASK;
+
+ __pListView->RefreshList(groupIndex, itemIndex, LIST_REFRESH_TYPE_ITEM_MODIFY);
+}
+
+void
+ContactListPanel::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo & touchInfo)
+{
+ GroupedListView* pList = static_cast<GroupedListView*>(&const_cast<Control&>(source));
+ if (pList != null)
+ {
+ pList->SetFocus();
+ }
+}
+
+void
+ContactListPanel::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactListPanel::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactListPanel::OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactListPanel::OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
--- /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 CtContactListPresentationModel.cpp
+ * @brief This is the implementation file for the ContactListPresentationModel class.
+ */
+
+#include <FGraphics.h>
+#include <FMedia.h>
+#include <FSocial.h>
+#include "CtContactListPresentationModel.h"
+#include "CtContactsApp.h"
+#include "CtIContactEventListener.h"
+#include "CtResourceManager.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Media;
+using namespace Tizen::Social;
+using namespace Tizen::System;
+
+static const int VCARD_STRING_LENGTH = 26;
+
+static const wchar_t* VCARD_PATH_FORMAT = L"/tmp/Ct%04d%02d%02d%02d%02d%02d.vcf";
+static const wchar_t* KEY_SHARP = L"#";
+
+ContactListPresentationModel* ContactListPresentationModel::__pInstance = null;
+
+ContactListPresentationModel*
+ContactListPresentationModel::GetInstance(void)
+{
+ if (__pInstance == null)
+ {
+ CreateInstance();
+ }
+
+ return __pInstance;
+}
+
+void
+ContactListPresentationModel::CreateInstance(void)
+{
+ __pInstance = new (std::nothrow) ContactListPresentationModel();
+ result r = __pInstance->Construct();
+ TryCatch(r == E_SUCCESS, , "[%s] Construction failed", GetErrorMessage(r));
+
+ std::atexit(DestroyInstance);
+ return;
+
+CATCH:
+ delete __pInstance;
+ __pInstance = null;
+}
+
+void
+ContactListPresentationModel::DestroyInstance(void)
+{
+ delete __pInstance;
+}
+
+ContactListPresentationModel::ContactListPresentationModel(void)
+ : _pContactList(null)
+ , _pContactChangeListenerList(null)
+ , _pGroupIndexList(null)
+ , _pAddressbook(null)
+ , _isSearchingPhoneNumber(false)
+ , __pSearchedContactList(null)
+ , __pExcludedContactIdList(null)
+ , __searchedText()
+ , __isContactChanged(true)
+{
+}
+
+ContactListPresentationModel::~ContactListPresentationModel(void)
+{
+ if (_pContactList != null)
+ {
+ _pContactList->RemoveAll(true);
+ delete _pContactList;
+ }
+
+ if (__pSearchedContactList != null)
+ {
+ __pSearchedContactList->RemoveAll(true);
+ delete __pSearchedContactList;
+ }
+
+ if (__pExcludedContactIdList != null)
+ {
+ __pExcludedContactIdList->RemoveAll(true);
+ delete __pExcludedContactIdList;
+ }
+
+ if (_pContactChangeListenerList != null)
+ {
+ _pContactChangeListenerList->RemoveAll(false);
+ delete _pContactChangeListenerList;
+ }
+
+ delete _pAddressbook;
+ delete _pGroupIndexList;
+}
+
+result
+ContactListPresentationModel::Construct(void)
+{
+ if (_pAddressbook != null)
+ {
+ AppLogDebug("ContactListPresentationModel is already constructed.");
+ return E_SUCCESS;
+ }
+
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+
+ _pAddressbook = pAddressbookManager->GetAddressbookN(DEFAULT_ADDRESSBOOK_ID);
+ TryReturn(_pAddressbook != null, E_FAILURE, "No address book")
+
+ _pAddressbook->SetEventListener(this);
+
+ _pContactChangeListenerList = new (std::nothrow) ArrayList();
+ _pContactChangeListenerList->Construct();
+
+ return E_SUCCESS;
+}
+
+result
+ContactListPresentationModel::InitializeContactList(Tizen::Base::Collection::IList* pContactIdList)
+{
+ if (__pExcludedContactIdList != null)
+ {
+ delete __pExcludedContactIdList;
+ }
+ __pExcludedContactIdList = pContactIdList;
+
+ return CreateContactList();
+}
+
+result
+ContactListPresentationModel::CreateContactList(void)
+{
+ result r = E_SUCCESS;
+
+ if (_pContactList == null)
+ {
+ _pContactList = new (std::nothrow) MultiHashMap();
+ _pContactList->Construct();
+ }
+ else
+ {
+ _pContactList->RemoveAll(true);
+ }
+
+ if (_pGroupIndexList == null)
+ {
+ _pGroupIndexList = new (std::nothrow) ArrayList();
+ _pGroupIndexList->Construct();
+ }
+ else
+ {
+ _pGroupIndexList->RemoveAll(false);
+ }
+
+ IList* pContactList = AddressbookManager::GetInstance()->GetAllPersonsN();
+
+ if (__pExcludedContactIdList != null)
+ {
+ IBidirectionalEnumerator* pIdEnum = __pExcludedContactIdList->GetBidirectionalEnumeratorN();
+ pIdEnum->ResetLast();
+ while (pIdEnum->MovePrevious() == E_SUCCESS)
+ {
+ Integer* pPersonId = static_cast<Integer*>(pIdEnum->GetCurrent());
+
+ for (int index = pContactList->GetCount() - 1; index >= 0; index--)
+ {
+ Person* pPerson = static_cast<Person *>(pContactList->GetAt(index));
+ if (pPerson != null && pPersonId != null &&
+ pPerson->GetId() == pPersonId->ToInt())
+ {
+ pContactList->RemoveAt(index, true);
+ break;
+ }
+ }
+ }
+
+ delete pIdEnum;
+ }
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ TrimListForAppControl(pContactList);
+ }
+
+ IEnumerator* pEnum = pContactList->GetEnumeratorN();
+ TryReturn(pEnum, E_FAILURE, "No contact");
+
+ bool isNotUsedSharpKey = true;
+ String* pKey = null;
+ String* pSharpKey = new (std::nothrow) String(KEY_SHARP);
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ Person* pPerson = static_cast<Person*>(pEnum->GetCurrent());
+ if (pPerson == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ String displayName = pPerson->GetDisplayName();
+ String firstCharacter;
+
+ displayName.SubString(0, 1, firstCharacter);
+ firstCharacter.ToUpper();
+
+ if (pKey == null || firstCharacter.CompareTo(*pKey) != 0)
+ {
+ if (firstCharacter[0] >= L'A' && firstCharacter[0] <= L'Z')
+ {
+ pKey = new (std::nothrow) String(firstCharacter);
+ _pGroupIndexList->Add(*pKey);
+ }
+ else
+ {
+ isNotUsedSharpKey = false;
+ pKey = pSharpKey;
+
+ if (_pGroupIndexList->Contains(*pKey) == false)
+ {
+ _pGroupIndexList->Add(*pKey);
+ }
+ }
+ }
+ _pContactList->Add(*pKey, *pPerson);
+ }
+
+ _pGroupIndexList->Sort(StringComparer());
+
+ delete pEnum;
+ delete pContactList;
+
+ if (isNotUsedSharpKey)
+ {
+ delete pSharpKey;
+ }
+
+ return r;
+}
+
+result
+ContactListPresentationModel::TrimListForAppControl(Tizen::Base::Collection::IList*& pContactList)
+{
+ TryReturn(pContactList != null, E_INVALID_ARG, "Invalid argument");
+
+ IList* pSelectedList = null;
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+ AddressbookFilter mainFilter(AB_FI_TYPE_PERSON);
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_NONE, PERSON_FI_PR_HAS_PHONE, FI_CMP_OP_EQUAL, true);
+
+ pSelectedList = pAddressbookManager->SearchN(mainFilter);
+ TryReturn(pSelectedList != null, E_FAILURE, "Unable to get the list contained phone number");
+
+ pContactList->RemoveAll(true);
+ pContactList->AddItems(*pSelectedList);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_NONE, PERSON_FI_PR_HAS_EMAIL, FI_CMP_OP_EQUAL, true);
+
+ pSelectedList = pAddressbookManager->SearchN(mainFilter);
+ TryReturn(pSelectedList != null, E_FAILURE, "Unable to get the list contained email");
+
+ pContactList->RemoveAll(true);
+ pContactList->AddItems(*pSelectedList);
+ }
+
+ return E_SUCCESS;
+}
+
+Tizen::Base::String
+ContactListPresentationModel::GetKey(int groupIndex)
+{
+ String* key = static_cast<String *>(_pGroupIndexList->GetAt(groupIndex));
+
+ if (key == null)
+ {
+ return String();
+ }
+
+ return *key;
+}
+
+Tizen::Base::String
+ContactListPresentationModel::GetAllKeys(void)
+{
+ String allKeys;
+ IEnumerator* pEnum = _pGroupIndexList->GetEnumeratorN();
+
+ if (pEnum == null)
+ {
+ return String();
+ }
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ String* pKey = static_cast<String *>(pEnum->GetCurrent());
+
+ allKeys.Append(*pKey);
+ }
+
+ delete pEnum;
+
+ return allKeys;
+}
+
+int
+ContactListPresentationModel::GetKeyCount(void)
+{
+ return _pGroupIndexList->GetCount();
+}
+
+int
+ContactListPresentationModel::GetKeyIndex(const Tizen::Base::String& key)
+{
+ int index;
+
+ _pGroupIndexList->IndexOf(key, index);
+
+ return index;
+}
+
+Tizen::Social::Person*
+ContactListPresentationModel::GetPersonAt(int groupIndex, int itemIndex)
+{
+ int count = 0;
+ Person* pPerson = null;
+ IEnumerator* pEnum = _pContactList->GetValuesN(GetKey(groupIndex));
+
+ if (pEnum == null)
+ {
+ return null;
+ }
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ if (itemIndex == count++)
+ {
+ pPerson = static_cast<Person *>(pEnum->GetCurrent());
+ break;
+ }
+ }
+
+ delete pEnum;
+
+ return pPerson;
+}
+
+result
+ContactListPresentationModel::GetContactItemInfoN(int groupIndex, int itemIndex, Tizen::Base::String& name, Tizen::Graphics::Bitmap*& pThumbnail)
+{
+ Person* pPerson = GetPersonAt(groupIndex, itemIndex);
+
+ if (pPerson == null)
+ {
+ return E_FAILURE;
+ }
+
+ name = pPerson->GetDisplayName();
+ if (name.IsEmpty())
+ {
+ Email email = pPerson->GetPrimaryEmail();
+ name.Append(email.GetEmail());
+ }
+ String thumbnailPath = pPerson->GetThumbnailPath();
+
+ if (thumbnailPath.IsEmpty() == false)
+ {
+ ImageBuffer thumbnailImageBuffer;
+ result r = thumbnailImageBuffer.Construct(thumbnailPath);
+ if (r == E_SUCCESS)
+ {
+ pThumbnail = thumbnailImageBuffer.GetBitmapN(BITMAP_PIXEL_FORMAT_RGB565, BUFFER_SCALING_NONE);
+ }
+ }
+
+ return E_SUCCESS;
+}
+
+int
+ContactListPresentationModel::GetContactCount(void)
+{
+ return _pContactList->GetCount();
+}
+
+int
+ContactListPresentationModel::GetContactCount(int groupIndex)
+{
+ int count = 0;
+
+ _pContactList->GetCount(GetKey(groupIndex), count);
+
+ return count;
+}
+
+result
+ContactListPresentationModel::RemoveContact(int groupIndex, int itemIndex, bool isUpdated)
+{
+ __isContactChanged = isUpdated;
+
+ RecordId contactId = GetContactId(groupIndex, itemIndex);
+
+ return _pAddressbook->RemoveContact(contactId);
+}
+
+Tizen::Social::RecordId
+ContactListPresentationModel::GetContactId(int groupIndex, int itemIndex)
+{
+ Person* pPerson = GetPersonAt(groupIndex, itemIndex);
+
+ if (pPerson == null)
+ {
+ return INVALID_RECORD_ID;
+ }
+
+ IList* pContactList = AddressbookManager::GetInstance()->GetContactsByPersonN(pPerson->GetId());
+ if (pContactList == null)
+ {
+ return INVALID_RECORD_ID;
+ }
+
+ Contact* pContact = static_cast<Contact *>(pContactList->GetAt(0));
+ if (pContact == null)
+ {
+ return INVALID_RECORD_ID;
+ }
+
+ RecordId contactId = pContact->GetRecordId();
+
+ pContactList->RemoveAll(true);
+ delete pContactList;
+ pContactList = null;
+
+ return contactId;
+}
+
+Tizen::Base::String
+ContactListPresentationModel::GetName(int groupIndex, int itemIndex)
+{
+ Person* pPerson = GetPersonAt(groupIndex, itemIndex);
+
+ if (pPerson == null)
+ {
+ return null;
+ }
+
+ return pPerson->GetDisplayName();
+}
+
+Tizen::Base::String
+ContactListPresentationModel::GetDefaultPhoneNumber(int groupIndex, int itemIndex)
+{
+ Person* pPerson = GetPersonAt(groupIndex, itemIndex);
+ if (pPerson == null)
+ {
+ return String();
+ }
+
+ PhoneNumber phoneNumber = pPerson->GetPrimaryPhoneNumber();
+
+ return phoneNumber.GetPhoneNumber();
+}
+
+Tizen::Base::String
+ContactListPresentationModel::GetDefaultEmail(int groupIndex, int itemIndex)
+{
+ String emailString;
+
+ Contact* pContact = _pAddressbook->GetContactN(GetContactId(groupIndex, itemIndex));
+ if (pContact == null)
+ {
+ return emailString;
+ }
+
+ //[TODO] should change to default email or rename this function
+ IList* pEmailList = pContact->GetValuesN(CONTACT_MPROPERTY_ID_EMAILS);
+ if (pEmailList == null)
+ {
+ delete pContact;
+
+ return emailString;
+ }
+
+ Email* pEmail = static_cast<Email*>(pEmailList->GetAt(0));
+ if (pEmail == null)
+ {
+ pEmailList->RemoveAll(true);
+ delete pEmailList;
+ delete pContact;
+
+ return emailString;
+ }
+
+ emailString = pEmail->GetEmail();
+
+ pEmailList->RemoveAll(true);
+ delete pEmailList;
+ delete pContact;
+
+ return emailString;
+}
+
+Tizen::Base::Collection::IList*
+ContactListPresentationModel::GetAllPhoneNumbersN(int groupIndex, int itemIndex)
+{
+ Contact* pContact = _pAddressbook->GetContactN(GetContactId(groupIndex, itemIndex));
+ if (pContact == null)
+ {
+ return null;
+ }
+ IList* pPhoneNumberList = pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
+ if (pPhoneNumberList == null)
+ {
+ delete pContact;
+ return null;
+ }
+
+ ArrayList* pPhoneNumberInfoList = new (std::nothrow) ArrayList();
+ pPhoneNumberInfoList->Construct();
+ PhoneNumber* pPhoneNumber = null;
+
+ IEnumerator* pEnum = pPhoneNumberList->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pPhoneNumber = static_cast<PhoneNumber *>(pEnum->GetCurrent());
+ if (pPhoneNumber != null)
+ {
+ String phoneNumbersInfo(L"");
+
+ switch (pPhoneNumber->GetType())
+ {
+ case PHONENUMBER_TYPE_HOME:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_HOME"));
+ break;
+ case PHONENUMBER_TYPE_WORK:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_WORK"));
+ break;
+ case PHONENUMBER_TYPE_MOBILE:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_MOBILE"));
+ break;
+ case PHONENUMBER_TYPE_HOME_FAX:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_FAX_HHOME"));
+ break;
+ case PHONENUMBER_TYPE_WORK_FAX:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_FAX_HWORK"));
+ break;
+ case PHONENUMBER_TYPE_PAGER:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_PAGER"));
+ break;
+ case PHONENUMBER_TYPE_OTHER:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_OTHER"));
+ break;
+ default:
+ break;
+ }
+ phoneNumbersInfo.Append(CHARACTER_SPACE);
+ phoneNumbersInfo.Append(pPhoneNumber->GetPhoneNumber());
+
+ pPhoneNumberInfoList->Add(*(new (std::nothrow) String(phoneNumbersInfo)));
+ }
+ }
+
+ delete pEnum;
+ delete pContact;
+ pPhoneNumberList->RemoveAll(true);
+ delete pPhoneNumberList;
+
+ return pPhoneNumberInfoList;
+}
+
+Tizen::Base::Collection::IList*
+ContactListPresentationModel::GetAllEmailsN(int groupIndex, int itemIndex)
+{
+ Contact* pContact = _pAddressbook->GetContactN(GetContactId(groupIndex, itemIndex));
+ if (pContact == null)
+ {
+ return null;
+ }
+ IList* pEmailList = pContact->GetValuesN(CONTACT_MPROPERTY_ID_EMAILS);
+ if (pEmailList == null)
+ {
+ delete pContact;
+ return null;
+ }
+
+ ArrayList* pEmailInfoList = new (std::nothrow) ArrayList();
+ pEmailInfoList->Construct();
+ Email* pEmail = null;
+
+ IEnumerator* pEnum = pEmailList->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pEmail = static_cast<Email *>(pEnum->GetCurrent());
+ if (pEmail != null)
+ {
+ String EmailsInfo(L"");
+
+ switch (pEmail->GetType())
+ {
+ case EMAIL_TYPE_PERSONAL:
+ EmailsInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_HOME"));
+ break;
+ case EMAIL_TYPE_WORK:
+ EmailsInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_WORK"));
+ break;
+ case EMAIL_TYPE_OTHER:
+ EmailsInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_OTHER"));
+ break;
+ default:
+ break;
+ }
+ EmailsInfo.Append(CHARACTER_SPACE);
+ EmailsInfo.Append(pEmail->GetEmail());
+
+ pEmailInfoList->Add(*(new (std::nothrow) String(EmailsInfo)));
+ }
+ }
+
+ delete pEnum;
+ delete pContact;
+ pEmailList->RemoveAll(true);
+ delete pEmailList;
+
+ return pEmailInfoList;
+}
+
+result
+ContactListPresentationModel::SetSearchText(const Tizen::Base::String& searchText, SearchType searchType)
+{
+ result r = E_SUCCESS;
+
+ if (__pSearchedContactList != null)
+ {
+ __pSearchedContactList->RemoveAll(true);
+ delete __pSearchedContactList;
+ __pSearchedContactList = null;
+ }
+
+ __pSearchedContactList = GetSearchedContactListN(searchText, searchType);
+
+ if (__pSearchedContactList != null)
+ {
+ r = searchText.ToLowerCase(__searchedText);
+ }
+
+ return r;
+}
+
+result
+ContactListPresentationModel::GetSearchedContactItemInfo(int index, Tizen::Base::String& name, Tizen::Graphics::Bitmap*& pThumbnail)
+{
+ Person* pPerson = static_cast<Person *>(__pSearchedContactList->GetAt(index));
+ if (pPerson == null)
+ {
+ return E_FAILURE;
+ }
+
+ name = pPerson->GetDisplayName();
+ String thumbnailPath = pPerson->GetThumbnailPath();
+
+ if (thumbnailPath.IsEmpty() == false)
+ {
+ ImageBuffer thumbnailImageBuffer;
+ result r = thumbnailImageBuffer.Construct(pPerson->GetThumbnailPath());
+ if (r == E_SUCCESS)
+ {
+ pThumbnail = thumbnailImageBuffer.GetBitmapN(BITMAP_PIXEL_FORMAT_RGB565, BUFFER_SCALING_NONE);
+ }
+ }
+
+ return E_SUCCESS;
+}
+
+Tizen::Base::Collection::IList*
+ContactListPresentationModel::GetSearchedContactListN(const Tizen::Base::String& searchText, SearchType searchType)
+{
+ if (searchText.GetLength() == 0)
+ {
+ return null;
+ }
+
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+ int phoneNumber;
+ IList* pSearchedList = null;
+
+ if (Integer::Parse(searchText, phoneNumber) == E_SUCCESS)
+ {
+ _isSearchingPhoneNumber = true;
+
+ IList* pSearchingPhoneNumberList = null;
+ AddressbookFilter phoneNumberFilter(AB_FI_TYPE_PHONE_CONTACT);
+ phoneNumberFilter.AppendString(FI_CONJ_OP_NONE, PHONE_CONTACT_FI_PR_PHONE, FI_STR_OP_CONTAIN, searchText);
+
+ pSearchingPhoneNumberList = pAddressbookManager->SearchN(phoneNumberFilter);
+ if (pSearchingPhoneNumberList == null)
+ {
+ return null;
+ }
+
+ IEnumerator* pEnum = pSearchingPhoneNumberList->GetEnumeratorN();
+ if (pEnum == null)
+ {
+ pSearchingPhoneNumberList->RemoveAll(true);
+ delete pSearchingPhoneNumberList;
+
+ return null;
+ }
+
+ ArrayList* pSearchedPersonsList = new (std::nothrow) ArrayList();
+ pSearchedPersonsList->Construct();
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ PhoneNumberContact* pPhoneNumberContact = static_cast<PhoneNumberContact *>(pEnum->GetCurrent());
+ Person* pPerson = pAddressbookManager->GetPersonN(pPhoneNumberContact->GetPersonId());
+
+ if (pPerson != null && pSearchedPersonsList->Contains(*pPerson) == false)
+ {
+ pSearchedPersonsList->Add(*pPerson);
+ }
+ }
+
+ pSearchingPhoneNumberList->RemoveAll(true);
+ delete pSearchingPhoneNumberList;
+ delete pEnum;
+
+ pSearchedList = pSearchedPersonsList;
+ }
+ else
+ {
+ _isSearchingPhoneNumber = false;
+
+ AddressbookFilter mainFilter(AB_FI_TYPE_PERSON);
+ mainFilter.AppendString(FI_CONJ_OP_NONE, PERSON_FI_PR_DISPLAY_NAME, FI_STR_OP_CONTAIN, searchText);
+
+ if (searchType == SEARCH_TYPE_HAS_PHONE_ONLY)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_AND, PERSON_FI_PR_HAS_PHONE, FI_CMP_OP_EQUAL, true);
+ }
+ else if (searchType == SEARCH_TYPE_HAS_EMAIL_ONLY)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_AND, PERSON_FI_PR_HAS_EMAIL, FI_CMP_OP_EQUAL, true);
+ }
+
+ pSearchedList = pAddressbookManager->SearchN(mainFilter);
+ }
+
+ for (int index = pSearchedList->GetCount() - 1; index >= 0; index--)
+ {
+ Person* pPerson = static_cast<Person *>(pSearchedList->GetAt(index));
+ if (__pExcludedContactIdList != null && pPerson != null)
+ {
+ for (int idIndex = __pExcludedContactIdList->GetCount() - 1; idIndex >= 0; idIndex--)
+ {
+ Integer* pPersonId = static_cast<Integer*>(__pExcludedContactIdList->GetAt(idIndex));
+ if (pPersonId != null && pPersonId->ToInt() == pPerson->GetId())
+ {
+ pSearchedList->RemoveAt(index, true);
+ break;
+ }
+ }
+ }
+ }
+
+ return pSearchedList;
+}
+
+Tizen::Base::String
+ContactListPresentationModel::GetSearchText(void)
+{
+ return __searchedText;
+}
+
+void
+ContactListPresentationModel::ResetSearchedContactList(void)
+{
+ if (__pSearchedContactList != null)
+ {
+ __pSearchedContactList->RemoveAll(true);
+ delete __pSearchedContactList;
+ __pSearchedContactList = null;
+ }
+}
+
+int
+ContactListPresentationModel::GetSearchedContactCount(void)
+{
+ if (__pSearchedContactList != null)
+ {
+ return __pSearchedContactList->GetCount();
+ }
+
+ return 0;
+}
+
+result
+ContactListPresentationModel::GetItemMainIndex(int searchedItemIndex, int& groupIndex, int& itemIndex)
+{
+ Person* pSearchedPerson = static_cast<Person *>(__pSearchedContactList->GetAt(searchedItemIndex));
+
+ if (pSearchedPerson == null)
+ {
+ return E_FAILURE;
+ }
+
+ int count = 0;
+ String firstCharacter;
+ String displayName = pSearchedPerson->GetDisplayName();
+
+ if (displayName[0] >= L'A' && displayName[0] <= L'Z')
+ {
+ displayName.SubString(0, 1, firstCharacter);
+ firstCharacter.ToUpper();
+ }
+ else
+ {
+ firstCharacter.Append(KEY_SHARP);
+ }
+
+ IEnumerator* pEnum = _pContactList->GetValuesN(firstCharacter);
+ if (pEnum == null)
+ {
+ return E_FAILURE;
+ }
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ Person* pPerson = static_cast<Person *>(pEnum->GetCurrent());
+ if (pPerson == null)
+ {
+ return E_FAILURE;
+ }
+
+ if (pSearchedPerson->GetId() == pPerson->GetId())
+ {
+ _pGroupIndexList->IndexOf(firstCharacter, groupIndex);
+ itemIndex = count;
+ break;
+ }
+
+ count++;
+ }
+
+ delete pEnum;
+
+ return E_SUCCESS;
+}
+
+int
+ContactListPresentationModel::GetAddressbookCount(void)
+{
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+
+ IList* pAddressbookList = pAddressbookManager->GetAllAddressbooksN();
+ if (pAddressbookList == null)
+ {
+ return -1;
+ }
+
+ int count = pAddressbookList->GetCount();
+ pAddressbookList->RemoveAll(true);
+ delete pAddressbookList;
+
+ return count;
+}
+
+Tizen::Base::String
+ContactListPresentationModel::GetAddressbookName(int index)
+{
+ String returnString;
+
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+
+ IList* pAddressbookList = pAddressbookManager->GetAllAddressbooksN();
+ if (pAddressbookList == null)
+ {
+ return returnString;
+ }
+
+ Addressbook* pAddressbook = static_cast<Addressbook *>(pAddressbookList->GetAt(index));
+ TryCatch(pAddressbook != null, , "Unable to get addressbook form addressbook manager");
+
+ //Todo : Return AccountId temporarily.
+ if (pAddressbook->GetId() == DEFAULT_ADDRESSBOOK_ID)
+ {
+ returnString.Append(ResourceManager::GetString(L"IDS_PB_BODY_PHONE"));
+ }
+ else
+ {
+ returnString.Append(pAddressbook->GetId());
+ }
+
+CATCH:
+ pAddressbookList->RemoveAll(true);
+ delete pAddressbookList;
+
+ return returnString;
+}
+
+Tizen::Base::String
+ContactListPresentationModel::GetCurrentAddressbook(void)
+{
+ String addressbookName;
+
+ if (_pAddressbook->GetId() == DEFAULT_ADDRESSBOOK_ID)
+ {
+ addressbookName.Append(ResourceManager::GetString(L"IDS_PB_BODY_PHONE"));
+ }
+ else
+ {
+ addressbookName.Append(_pAddressbook->GetId());
+ }
+
+ return addressbookName;
+}
+
+bool
+ContactListPresentationModel::IsContactInCategory(int groupIndex, int itemIndex, Tizen::Social::RecordId categoryId)
+{
+ bool isContactInCategory = false;
+ Person* pPerson = GetPersonAt(groupIndex, itemIndex);
+
+ if (pPerson == null)
+ {
+ return false;
+ }
+
+ AddressbookFilter mainFilter(AB_FI_TYPE_PERSON);
+ mainFilter.AppendInt(FI_CONJ_OP_NONE, PERSON_FI_PR_PERSON_ID, FI_CMP_OP_EQUAL, pPerson->GetId());
+ mainFilter.AppendInt(FI_CONJ_OP_AND, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_EQUAL, categoryId);
+
+ IList* pList = AddressbookManager::GetInstance()->SearchN(mainFilter);
+
+ if (pList == null)
+ {
+ return false;
+ }
+
+ if (pList->GetCount() > 0)
+ {
+ isContactInCategory = true;
+ }
+ else
+ {
+ isContactInCategory = false;
+ }
+
+ pList->RemoveAll(true);
+ delete pList;
+
+ return isContactInCategory;
+}
+
+bool
+ContactListPresentationModel::IsContactInCategory(int groupIndex, Tizen::Social::RecordId categoryId)
+{
+ String key = GetKey(groupIndex);
+ int count;
+
+ _pContactList->GetCount(key, count);
+
+ for (int i = 0; i < count; i++)
+ {
+ if (IsContactInCategory(groupIndex, i, categoryId) == false)
+ {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+bool
+ContactListPresentationModel::IsSearchedContactInCategory(int index, Tizen::Social::RecordId categoryId)
+{
+ bool isContactInCategory = false;
+ Person* pPerson = static_cast<Person *>(__pSearchedContactList->GetAt(index));
+
+ if (pPerson == null)
+ {
+ return false;
+ }
+
+ AddressbookFilter mainFilter(AB_FI_TYPE_PERSON);
+ mainFilter.AppendInt(FI_CONJ_OP_NONE, PERSON_FI_PR_PERSON_ID, FI_CMP_OP_EQUAL, pPerson->GetId());
+ mainFilter.AppendInt(FI_CONJ_OP_AND, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_EQUAL, categoryId);
+
+ IList* pList = AddressbookManager::GetInstance()->SearchN(mainFilter);
+
+ if (pList == null)
+ {
+ return false;
+ }
+
+ if (pList->GetCount() > 0)
+ {
+ isContactInCategory = true;
+ }
+ else
+ {
+ isContactInCategory = false;
+ }
+
+ pList->RemoveAll(true);
+ delete pList;
+
+ return isContactInCategory;
+}
+
+Tizen::Base::String
+ContactListPresentationModel::ExportToVcard(int groupIndex, int itemIndex)
+{
+ String vCardPath;
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+ Contact* pContact = pAddressbookManager->GetContactN(GetContactId(groupIndex, itemIndex));
+ TryReturn(pContact != null, vCardPath, "[E_FAILURE] Unable to get the specific contact.");
+
+ DateTime currentDateTime;
+ SystemTime::GetCurrentTime(TIME_MODE_WALL, currentDateTime);
+
+ vCardPath.Format(VCARD_STRING_LENGTH, VCARD_PATH_FORMAT, currentDateTime.GetYear(), currentDateTime.GetMonth(), currentDateTime.GetDay(),
+ currentDateTime.GetHour(), currentDateTime.GetMinute(), currentDateTime.GetSecond());
+
+ result r = pAddressbookManager->ExportContactToVcard(*pContact, vCardPath);
+
+ if (r != E_SUCCESS)
+ {
+ vCardPath.Clear();
+ }
+
+ delete pContact;
+
+ return vCardPath;
+}
+
+void
+ContactListPresentationModel::AddContactChangeListener(const IContactEventListener& listener)
+{
+ _pContactChangeListenerList->Add(listener);
+}
+
+void
+ContactListPresentationModel::RemoveContactChangeListener(const IContactEventListener& listener)
+{
+ _pContactChangeListenerList->Remove(listener, false);
+}
+
+void
+ContactListPresentationModel::OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList)
+{
+ if (__isContactChanged == false)
+ {
+ __isContactChanged = true;
+
+ return;
+ }
+
+ result r = CreateContactList();
+ if (r != E_SUCCESS)
+ {
+ return;
+ }
+
+ IContactEventListener* pInterface = null;
+ IEnumerator* pEnum = _pContactChangeListenerList->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pInterface = static_cast<IContactEventListener *>(pEnum->GetCurrent());
+ if (pInterface == null)
+ {
+ delete pEnum;
+ return;
+ }
+ pInterface->OnContactsChanged();
+ }
+
+ delete pEnum;
+}
+
+void
+ContactListPresentationModel::OnCategoriesChanged(const Tizen::Base::Collection::IList& contactChangeInfoList)
+{
+}
--- /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 CtContactPresentationModel.cpp
+ * @brief This is the implementation file for the ContactPresentationModel class.
+ */
+
+#include <FGraphics.h>
+#include <FLocales.h>
+#include "CtContactPresentationModel.h"
+#include "CtIContactEventListener.h"
+#include "CtResourceManager.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Locales;
+using namespace Tizen::Social;
+
+static const wchar_t* IDB_ACCOUNT_ICON_ICQ = L"C02_Icon_ICQ.png";
+static const wchar_t* IDB_ACCOUNT_ICON_YAHOO = L"C02_Icon_yahoo.png";
+static const wchar_t* IDB_ACCOUNT_ICON_MSN = L"C02_Icon_windows_live.png";
+static const wchar_t* IDB_ACCOUNT_ICON_OTHERS = L"C02_Icon_others.png";
+
+ContactPresentationModel::ContactPresentationModel(void)
+: __pAssignedCategoryList(null)
+, __pContactListenerList(null)
+, __pContact(null)
+, __pAddressbook(null)
+, __defaultNumberIndex(0)
+, __newMode(false)
+, __isEditing(false)
+{
+}
+
+ContactPresentationModel::~ContactPresentationModel(void)
+{
+ delete __pAddressbook;
+ delete __pContact;
+
+ if (__pContactListenerList != null)
+ {
+ __pContactListenerList->RemoveAll(true);
+ delete __pContactListenerList;
+ }
+
+ if (__pAssignedCategoryList != null)
+ {
+ __pAssignedCategoryList->RemoveAll(true);
+ delete __pAssignedCategoryList;
+ }
+}
+
+result
+ContactPresentationModel::Construct(void)
+{
+ result r = E_SUCCESS;
+
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+
+ __pAddressbook = pAddressbookManager->GetAddressbookN(DEFAULT_ADDRESSBOOK_ID);
+ if (__pAddressbook == null)
+ {
+ return E_FAILURE;
+ }
+
+ r = __pAddressbook->SetEventListener(this);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to set event listener", GetErrorMessage(r));
+
+ __pContactListenerList = new (std::nothrow) ArrayList();
+ __pContactListenerList->Construct();
+
+ __pAssignedCategoryList = new (std::nothrow) ArrayList();
+ __pAssignedCategoryList->Construct();
+
+ return r;
+
+CATCH:
+ delete __pAddressbook;
+ __pAddressbook = null;
+
+ __pContactListenerList->RemoveAll();
+ delete __pContactListenerList;
+ __pContactListenerList = null;
+
+ __pAssignedCategoryList->RemoveAll();
+ delete __pAssignedCategoryList;
+ __pAssignedCategoryList = null;
+
+ return r;
+}
+
+result
+ContactPresentationModel::PrepareNewContact(void)
+{
+ __pContact = new (std::nothrow) Contact();
+
+ __newMode = true;
+
+ return E_SUCCESS;
+}
+
+result
+ContactPresentationModel::SetContactId(const Tizen::Social::RecordId contactId, bool isEditing)
+{
+ result r = E_SUCCESS;
+
+ delete __pContact;
+ __pContact = __pAddressbook->GetContactN(contactId);
+
+ r = GetLastResult();
+ TryReturn(__pContact != null && r == E_SUCCESS, r, "[%s] selected Contact is invalid", GetErrorMessage(r));
+
+ IList* pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
+ if (pList == null)
+ {
+ return r;
+ }
+
+ Person* pPerson = AddressbookManager::GetInstance()->GetPersonN(__pContact->GetPersonId());
+ if (pPerson == null)
+ {
+ pList->RemoveAll(true);
+ delete pList;
+
+ return r;
+ }
+
+ PhoneNumber defaultNumber = pPerson->GetPrimaryPhoneNumber();
+
+ for (int i = 0; i < pList->GetCount(); i++)
+ {
+ PhoneNumber* pPhoneNumber = static_cast<PhoneNumber*>(pList->GetAt(i));
+ if (pPhoneNumber != null && pPhoneNumber->Equals(defaultNumber))
+ {
+ __defaultNumberIndex = i;
+ break;
+ }
+ }
+
+ if (isEditing)
+ {
+ __isEditing = isEditing;
+
+ IList* pAssignedCategoriesList = __pAddressbook->GetCategoriesByContactN(__pContact->GetRecordId());
+ if (pAssignedCategoriesList == null)
+ {
+ return E_FAILURE;
+ }
+ IEnumerator* pEnum = pAssignedCategoriesList->GetEnumeratorN();
+ if (pEnum == null)
+ {
+ return E_FAILURE;
+ }
+
+ for (int index = 0; pEnum->MoveNext() == E_SUCCESS; index++)
+ {
+ Category* pCategory = static_cast<Category *>(pEnum->GetCurrent());
+
+ if (pCategory != null)
+ {
+ AddContactToCategory(pCategory->GetRecordId());
+ AppLog("!!!! %d", pCategory->GetRecordId());
+ }
+ }
+
+ pAssignedCategoriesList->RemoveAll(true);
+ delete pAssignedCategoriesList;
+ delete pEnum;
+ }
+
+ pList->RemoveAll(true);
+ delete pList;
+ delete pPerson;
+
+ return r;
+}
+
+result
+ContactPresentationModel::SetVcfPath(const Tizen::Base::String& filePath, bool isNewContact)
+{
+ __vcfPath = filePath;
+ __newMode = isNewContact;
+
+ IList* pPhoneNumberList = null;
+ IList* pList = AddressbookManager::GetInstance()->ParseContactsFromVcardN(filePath);
+ result r = GetLastResult();
+ TryCatch(r == E_SUCCESS && pList != null && pList->GetCount() > 0, r = E_FAILURE, "[%s] ParseContactsFromVcardN() failed", GetErrorMessage(r));
+
+ __pContact = static_cast<Contact*>(pList->GetAt(0));
+ TryCatch(__pContact != null, r = E_FAILURE, "[E_FAILURE] Unable to cast Contact");
+
+ pPhoneNumberList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
+
+ if (pPhoneNumberList != null)
+ {
+ PhoneNumber* pPhoneNumber = static_cast<PhoneNumber*>(pPhoneNumberList->GetAt(0));
+ if (pPhoneNumber != null)
+ {
+ Person* pPerson = AddressbookManager::GetInstance()->GetPersonN(__pContact->GetPersonId());
+ if (pPerson != null)
+ {
+ pPerson->SetAsPrimaryPhoneNumber(*pPhoneNumber);
+ }
+
+ delete pPerson;
+ }
+ delete pPhoneNumberList;
+ }
+
+CATCH:
+ delete pList;
+
+ return r;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetVcfPath(void)
+{
+ return __vcfPath;
+}
+
+RecordId
+ContactPresentationModel::GetContactId(void)
+{
+ return __pContact->GetRecordId();
+}
+
+result
+ContactPresentationModel::AddContactToCategory(Tizen::Social::RecordId categoryId)
+{
+ result r = E_SUCCESS;
+
+ if (__newMode || __isEditing)
+ {
+ String* pCategoryStringId = new (std::nothrow) String();
+
+ pCategoryStringId->Append(categoryId);
+
+ r = __pAssignedCategoryList->Add(*pCategoryStringId);
+ }
+ else
+ {
+ r = AddressbookManager::GetInstance()->AddMemberToCategory(categoryId, __pContact->GetRecordId());
+ }
+
+ return r;
+}
+
+result
+ContactPresentationModel::RemoveContactFromAllCategories(void)
+{
+ result r = E_SUCCESS;
+
+ if (__newMode || __isEditing)
+ {
+ if (__pAssignedCategoryList != null)
+ {
+ __pAssignedCategoryList->RemoveAll(true);
+ }
+ }
+ else
+ {
+ TryReturn(__pContact != null, E_FAILURE, "[E_FAILURE] The contact is invalid.");
+
+ IList* pCategoryList = __pAddressbook->GetCategoriesByContactN(__pContact->GetRecordId());
+ TryReturn(pCategoryList != null, E_FAILURE, "Unable to get category list");
+
+ IEnumerator* pEnum = pCategoryList->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ Category* pCategory = static_cast<Category*>(pEnum->GetCurrent());
+ if (pCategory != null)
+ {
+ AddressbookManager::GetInstance()->RemoveMemberFromCategory(pCategory->GetRecordId(), __pContact->GetRecordId());
+ }
+ }
+
+ delete pEnum;
+ pCategoryList->RemoveAll(true);
+ delete pCategoryList;
+ }
+
+ return r;
+}
+
+result
+ContactPresentationModel::RemoveContact(void)
+{
+ return __pAddressbook->RemoveContact(__pContact->GetRecordId());
+}
+
+bool
+ContactPresentationModel::IsContactRemoved(void)
+{
+ return (__pContact ? false : true);
+}
+
+result
+ContactPresentationModel::AddContact(void)
+{
+ return __pAddressbook->AddContact(*__pContact);
+}
+
+result
+ContactPresentationModel::UpdateContact(void)
+{
+ return __pAddressbook->UpdateContact(*__pContact);
+}
+
+String
+ContactPresentationModel::GetValue(DetailProperty id, int index)
+{
+ String returnString;
+ IList* pList = null;
+
+ TryReturn(__pContact != null, String(), "[E_FAILURE] The contact is invalid.");
+
+ switch (id)
+ {
+ case DETAIL_PROPERTY_GROUP:
+ returnString = GetCategory();
+ break;
+ case DETAIL_PROPERTY_RINGTONE:
+ returnString = GetRingtone();
+ break;
+ case DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER:
+ {
+ DetailPhoneNumberType type;
+ returnString = GetDefaultNumber(type);
+ }
+ break;
+ case DETAIL_PROPERTY_PHONE_NUMBER:
+ {
+ DetailPhoneNumberType type;
+ returnString = GetPhoneNumber(index, type);
+ }
+ break;
+ case DETAIL_PROPERTY_EMAIL:
+ {
+ DetailEmailType type;
+ returnString = GetEmail(index, type);
+ }
+ break;
+ case DETAIL_PROPERTY_IM_ADDRESS:
+ {
+ DetailImAddressType type;
+ returnString = GetImAddress(index, type);
+ }
+ break;
+ case DETAIL_PROPERTY_ADDRESS: //fall through
+ case DETAIL_PROPERTY_ADDRESS_POSTAL_CODE: //fall through
+ case DETAIL_PROPERTY_ADDRESS_COUNTRY: //fall through
+ case DETAIL_PROPERTY_ADDRESS_PROVINCE: //fall through
+ case DETAIL_PROPERTY_ADDRESS_CITY: //fall through
+ case DETAIL_PROPERTY_ADDRESS_STREET:
+ {
+ DetailAddressType type;
+ returnString = GetAddress(id, index, type);
+ }
+ break;
+ case DETAIL_PROPERTY_BIRTHDAY:
+ {
+ returnString = GetDateTime(id);
+ }
+ break;
+ case DETAIL_PROPERTY_URL:
+ {
+ DetailUrlType type;
+ returnString = GetUrl(index, type);
+ }
+ break;
+ case DETAIL_PROPERTY_NOTE:
+ {
+ IList* pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_NOTES);
+
+ if (pList == null)
+ {
+ break;
+ }
+
+ String* pNote = static_cast<String *>(pList->GetAt(0));
+ if (pNote == null)
+ {
+ break;
+ }
+
+ returnString = *pNote;
+ }
+ break;
+ case DETAIL_PROPERTY_DISPLAY_NAME:
+ {
+ __pContact->GetValue(CONTACT_PROPERTY_ID_DISPLAY_NAME, returnString);
+ }
+ break;
+ case DETAIL_PROPERTY_FIRST_NAME:
+ {
+ __pContact->GetValue(CONTACT_PROPERTY_ID_FIRST_NAME, returnString);
+ }
+ break;
+ case DETAIL_PROPERTY_LAST_NAME:
+ {
+ __pContact->GetValue(CONTACT_PROPERTY_ID_LAST_NAME, returnString);
+ }
+ break;
+ case DETAIL_PROPERTY_MIDDLE_NAME:
+ {
+ __pContact->GetValue(CONTACT_PROPERTY_ID_MIDDLE_NAME, returnString);
+ }
+ break;
+ case DETAIL_PROPERTY_NICK_NAME:
+ {
+ pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_NICKNAMES);
+
+ if (pList == null)
+ {
+ break;
+ }
+
+ String* pNickName = static_cast<String *>(pList->GetAt(0));
+ if (pNickName == null)
+ {
+ break;
+ }
+
+ returnString = *pNickName;
+ }
+ break;
+ case DETAIL_PROPERTY_NAME_SUFFIX:
+ {
+ __pContact->GetValue(CONTACT_PROPERTY_ID_NAME_SUFFIX, returnString);
+ }
+ break;
+ case DETAIL_PROPERTY_JOB_TITLE:
+ {
+ pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_ORGANIZATIONS);
+
+ if (pList == null)
+ {
+ break;
+ }
+
+ Organization* pOrganization = static_cast<Organization *>(pList->GetAt(0));
+ if (pOrganization == null)
+ {
+ break;
+ }
+
+ returnString = pOrganization->GetJobTitle();
+ }
+ break;
+ case DETAIL_PROPERTY_DEPARTMENT:
+ {
+ pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_ORGANIZATIONS);
+
+ if (pList == null)
+ {
+ break;
+ }
+
+ Organization* pOrganization = static_cast<Organization *>(pList->GetAt(0));
+ if (pOrganization == null)
+ {
+ break;
+ }
+
+ returnString = pOrganization->GetDepartment();
+ }
+ break;
+ case DETAIL_PROPERTY_COMPANY:
+ {
+ pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_ORGANIZATIONS);
+
+ if (pList == null)
+ {
+ break;
+ }
+
+ Organization* pOrganization = static_cast<Organization *>(pList->GetAt(0));
+ if (pOrganization == null)
+ {
+ break;
+ }
+
+ returnString = pOrganization->GetName();
+ }
+ break;
+ case DETAIL_PROPERTY_THUMBNAIL:
+ {
+ __pContact->GetValue(CONTACT_PROPERTY_ID_THUMBNAIL, returnString);
+ }
+ break;
+ default:
+ break;
+ }
+
+ if (pList != null)
+ {
+ pList->RemoveAll(true);
+ delete pList;
+ }
+
+ return returnString;
+}
+
+result
+ContactPresentationModel::GetBirthday(Tizen::Base::DateTime& value)
+{
+ result r = E_SUCCESS;
+
+ TryReturn(__pContact != null, E_FAILURE, "[E_FAILURE] The contact is invalid.");
+
+ IList* pEventList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_EVENTS);
+ if (pEventList == null)
+ {
+ return E_FAILURE;
+ }
+
+ ContactEvent* pBirthday = static_cast<ContactEvent *>(pEventList->GetAt(0));
+ if (pBirthday == null)
+ {
+ return E_FAILURE;
+ }
+
+ value = pBirthday->GetDate();
+
+ pEventList->RemoveAll(true);
+ delete pEventList;
+
+ return r;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetType(DetailProperty id, int index)
+{
+ String returnString;
+ String value;
+
+ switch (id)
+ {
+ case DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER:
+ {
+ DetailPhoneNumberType type;
+
+ value = GetDefaultNumber(type);
+ returnString = GetPhoneNumberTypeString(type);
+ }
+ break;
+ case DETAIL_PROPERTY_PHONE_NUMBER:
+ {
+ DetailPhoneNumberType type;
+
+ value = GetPhoneNumber(index, type);
+ returnString = GetPhoneNumberTypeString(type);
+ }
+ break;
+ case DETAIL_PROPERTY_EMAIL:
+ {
+ DetailEmailType type;
+
+ value = GetEmail(index, type);
+ returnString = GetEmailTypeString(type);
+ }
+ break;
+ case DETAIL_PROPERTY_IM_ADDRESS:
+ {
+ DetailImAddressType type;
+
+ value = GetImAddress(index, type);
+ returnString = GetImAddressTypeString(type);
+ }
+ break;
+ case DETAIL_PROPERTY_ADDRESS:
+ {
+ DetailAddressType type;
+
+ value = GetAddress(id, index, type);
+ returnString = GetAddressTypeString(type);
+ }
+ break;
+ case DETAIL_PROPERTY_URL:
+ {
+ DetailUrlType type;
+
+ value = GetUrl(index, type);
+ returnString = GetUrlTypeString(type);
+
+ }
+ break;
+ default:
+ break;
+ }
+ return returnString;
+}
+
+Tizen::Graphics::Bitmap*
+ContactPresentationModel::GetThumbnailN(void)
+{
+ TryReturn(__pContact != null, null, "[E_FAILURE] The contact is invalid.");
+
+ return __pContact->GetThumbnailN();
+}
+
+Tizen::Graphics::Bitmap*
+ContactPresentationModel::GetAccountIconN(const Tizen::Base::String& account)
+{
+ if (account.Equals(IM_ADDRESS_YAHOO, true))
+ {
+ return ResourceManager::GetBitmapN(IDB_ACCOUNT_ICON_YAHOO);
+ }
+ else if (account.Equals(IM_ADDRESS_MSN, true))
+ {
+ return ResourceManager::GetBitmapN(IDB_ACCOUNT_ICON_MSN);
+ }
+ else if (account.Equals(IM_ADDRESS_ICQ, true))
+ {
+ return ResourceManager::GetBitmapN(IDB_ACCOUNT_ICON_ICQ);
+ }
+// else if (account.Equals(IM_ADDRESS_AIM, true))
+// {
+// //[TODO]
+// }
+// else if (account.Equals(IM_ADDRESS_SKYPE, true))
+// {
+// //[TODO]
+// }
+// else if (account.Equals(IM_ADDRESS_QQ, true))
+// {
+// //[TODO]
+// }
+// else if (account.Equals(IM_ADDRESS_GOOGLE_TALK, true))
+// {
+// //[TODO]
+// }
+// else if (account.Equals(IM_ADDRESS_JABBER, true))
+// {
+// //[TODO]
+// }
+ else
+ {
+ return ResourceManager::GetBitmapN(IDB_ACCOUNT_ICON_OTHERS);
+ }
+
+ return null;
+}
+
+int
+ContactPresentationModel::GetMultiValuesCount(DetailProperty id)
+{
+ int returnValue = 0;
+ IList* pList = null;
+
+ TryReturn(__pContact != null, returnValue, "[E_FAILURE] The contact is invalid.");
+
+ switch (id)
+ {
+ case DETAIL_PROPERTY_PHONE_NUMBER:
+ {
+ pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
+ if (pList != null)
+ {
+ returnValue = pList->GetCount();
+ }
+ }
+ break;
+ case DETAIL_PROPERTY_EMAIL:
+ {
+ pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_EMAILS);
+ if (pList != null)
+ {
+ returnValue = pList->GetCount();
+ }
+ }
+ break;
+ case DETAIL_PROPERTY_IM_ADDRESS:
+ {
+ pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_IMADDRESSES);
+ if (pList != null)
+ {
+ returnValue = pList->GetCount();
+ }
+ }
+ break;
+ case DETAIL_PROPERTY_ADDRESS:
+ {
+ pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_ADDRESSES);
+ if (pList != null)
+ {
+ returnValue = pList->GetCount();
+ }
+ }
+ break;
+ case DETAIL_PROPERTY_URL:
+ {
+ pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_URLS);
+ if (pList != null)
+ {
+ returnValue = pList->GetCount();
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ if (pList != null)
+ {
+ pList->RemoveAll(true);
+ delete pList;
+ }
+
+ return returnValue;
+}
+
+int
+ContactPresentationModel::GetCategoryCount(void)
+{
+ return __pAddressbook->GetCategoryCount();
+}
+
+Tizen::Base::Collection::IList*
+ContactPresentationModel::GetAssignedCategoryIdListN(void)
+{
+ IEnumerator* pEnum = null;
+ ArrayList* pCategoryList = new (std::nothrow) ArrayList();
+ pCategoryList->Construct();
+
+ if (__newMode || __isEditing)
+ {
+ pEnum = __pAssignedCategoryList->GetEnumeratorN();
+
+ for (int index = 0; pEnum->MoveNext() == E_SUCCESS; index++)
+ {
+ String* pCategoryStringId = static_cast<String *>(pEnum->GetCurrent());
+
+ if (pCategoryStringId != null)
+ {
+ String* pRetrunCategoryStringId = new (std::nothrow) String(*pCategoryStringId);
+
+ pCategoryList->Add(*pRetrunCategoryStringId);
+ }
+ }
+
+ delete pEnum;
+
+ return pCategoryList;
+ }
+ else
+ {
+ IList* pList = __pAddressbook->GetCategoriesByContactN(__pContact->GetRecordId());
+
+ pEnum = pList->GetEnumeratorN();
+
+ for (int index = 0; pEnum->MoveNext() == E_SUCCESS; index++)
+ {
+ Category* pCategory = static_cast<Category *>(pEnum->GetCurrent());
+
+ if (pCategory != null)
+ {
+ String* pRetrunCategoryStringId = new (std::nothrow) String();
+
+ pRetrunCategoryStringId->Append(pCategory->GetRecordId());
+ pCategoryList->Add(*pRetrunCategoryStringId);
+ }
+ }
+
+ pList->RemoveAll(true);
+ delete pList;
+ delete pEnum;
+
+ return pCategoryList;
+ }
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetCategory(void)
+{
+ String returnString;
+
+ TryReturn(__pContact != null, String(), "[E_FAILURE] The contact is invalid.");
+
+ if (__newMode || __isEditing)
+ {
+ IEnumerator* pEnum = __pAssignedCategoryList->GetEnumeratorN();
+ Category* pCategory = null;
+ String* pCategoryStringId = null;
+ RecordId categoryId;
+
+ for (int index = 0; pEnum->MoveNext() == E_SUCCESS; index++)
+ {
+ pCategoryStringId = static_cast<String*>(pEnum->GetCurrent());
+
+ if (pCategoryStringId != null)
+ {
+ Integer::Parse(*pCategoryStringId, categoryId);
+ pCategory = __pAddressbook->GetCategoryN(categoryId);
+
+ String categoryName;
+ if (pCategory != null)
+ {
+ categoryName = pCategory->GetName();
+ if (pCategory->IsDefault())
+ {
+ GetDefaultCategoryName(categoryName);
+ }
+
+ if (index == 0)
+ {
+ returnString = categoryName;
+ }
+ else if (index > 0)
+ {
+ returnString += L", ";
+ returnString += categoryName;
+ }
+ }
+ delete pCategory;
+ }
+ }
+ delete pEnum;
+ }
+ else
+ {
+ Category* pCategory = null;
+ IList* pCategoryList = __pAddressbook->GetCategoriesByContactN(__pContact->GetRecordId());
+ if (pCategoryList == null)
+ {
+ return returnString;
+ }
+
+ IEnumerator* pEnum = pCategoryList->GetEnumeratorN();
+ for (int index = 0; pEnum->MoveNext() == E_SUCCESS; index++)
+ {
+ pCategory = static_cast<Category*>(pEnum->GetCurrent());
+
+ String categoryName;
+ if (pCategory != null)
+ {
+ categoryName = pCategory->GetName();
+ if (pCategory->IsDefault())
+ {
+ GetDefaultCategoryName(categoryName);
+ }
+
+ if (index == 0)
+ {
+ returnString = categoryName;
+ }
+ else if (index > 0)
+ {
+ returnString += L", ";
+ returnString += categoryName;
+ }
+ }
+ }
+
+ delete pEnum;
+ pCategoryList->RemoveAll(true);
+ delete pCategoryList;
+ }
+
+ return returnString;
+}
+
+result
+ContactPresentationModel::GetDefaultCategoryName(Tizen::Base::String& categoryName)
+{
+ if (categoryName.Equals(DEFAULT_GROUP_FAMILY, false))
+ {
+ categoryName.Clear();
+ categoryName = ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT_GROUP_FAMILY");
+ }
+ else if (categoryName.Equals(DEFAULT_GROUP_FRIENDS, false))
+ {
+ categoryName.Clear();
+ categoryName = ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT_GROUP_FRIENDS");
+ }
+ else if (categoryName.Equals(DEFAULT_GROUP_COWORKERS, false))
+ {
+ categoryName.Clear();
+ categoryName = ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT_GROUP_WORK");
+ }
+
+ return E_SUCCESS;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetRingtone(void)
+{
+ String returnString;
+
+ TryReturn(__pContact != null, String(), "[E_FAILURE] The contact is invalid.");
+
+ result r = __pContact->GetValue(CONTACT_PROPERTY_ID_RINGTONE, returnString);
+ TryReturn(r == E_SUCCESS, String(), "[E_FAILURE] Unable to get value");
+
+ if (returnString.IsEmpty())
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT");
+ }
+
+ return returnString;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetDefaultNumber(DetailPhoneNumberType& type)
+{
+ TryReturn(__pContact != null, String(), "[E_FAILURE] The contact is invalid.");
+
+ String returnString;
+
+ IList* pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
+ TryReturn(pList != null, String(), "[E_FAILURE] The contact doesn't have a phone number at least.");
+
+ PhoneNumber* pPhoneNumber = static_cast<PhoneNumber*>(pList->GetAt(__defaultNumberIndex));
+ if (pPhoneNumber != null)
+ {
+ returnString = pPhoneNumber->GetPhoneNumber();
+ type = (DetailPhoneNumberType)pPhoneNumber->GetType();
+ }
+
+ pList->RemoveAll(true);
+ delete pList;
+
+ return returnString;
+}
+
+int
+ContactPresentationModel::GetDefaultNumberIndex(void)
+{
+ return __defaultNumberIndex;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetPhoneNumber(int index, DetailPhoneNumberType& type)
+{
+ String returnString;
+
+ TryReturn(__pContact != null, String(), "[E_FAILURE] The contact is invalid.");
+
+ if (index == -1)
+ {
+ return returnString;
+ }
+
+ IList* pPhoneNumberList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
+ AppAssert(pPhoneNumberList);
+
+ PhoneNumber* pNumber = static_cast<PhoneNumber *>(pPhoneNumberList->GetAt(index));
+ if (pNumber != null)
+ {
+ returnString = pNumber->GetPhoneNumber();
+ type = (DetailPhoneNumberType)pNumber->GetType();
+ }
+
+ pPhoneNumberList->RemoveAll(true);
+ delete pPhoneNumberList;
+
+ return returnString;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetEmail(int index, DetailEmailType& type)
+{
+ String returnString;
+
+ TryReturn(__pContact != null, String(), "[E_FAILURE] The contact is invalid.");
+
+ if (index == -1)
+ {
+ return returnString;
+ }
+
+ IList* pEmailList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_EMAILS);
+ AppAssert(pEmailList);
+
+ Email* pEmail = static_cast<Email *>(pEmailList->GetAt(index));
+ if (pEmail != null)
+ {
+ returnString = pEmail->GetEmail();
+ type = (DetailEmailType)pEmail->GetType();
+ }
+
+ pEmailList->RemoveAll(true);
+ delete pEmailList;
+
+ return returnString;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetImAddress(int index, DetailImAddressType& type)
+{
+ String returnString;
+
+ TryReturn(__pContact != null, String(), "[E_FAILURE] The contact is invalid.");
+
+ if (index == -1)
+ {
+ return returnString;
+ }
+
+ IList* pImAddressList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_IMADDRESSES);
+ AppAssert(pImAddressList);
+
+ ImAddress* pImAddress = static_cast<ImAddress *>(pImAddressList->GetAt(index));
+ if (pImAddress != null)
+ {
+ returnString = pImAddress->GetImAddress();
+
+ String typeString = pImAddress->GetServiceProviderName();
+
+ if (typeString.Equals(IM_ADDRESS_AIM, true))
+ {
+ type = DETAIL_IM_ADDRESS_TYPE_AIM;
+ }
+ else if (typeString.Equals(IM_ADDRESS_MSN, true))
+ {
+ type = DETAIL_IM_ADDRESS_TYPE_MSN;
+ }
+ else if (typeString.Equals(IM_ADDRESS_YAHOO, true))
+ {
+ type = DETAIL_IM_ADDRESS_TYPE_YAHOO;
+ }
+ else if (typeString.Equals(IM_ADDRESS_SKYPE, true))
+ {
+ type = DETAIL_IM_ADDRESS_TYPE_SKYPE;
+ }
+ else if (typeString.Equals(IM_ADDRESS_QQ, true))
+ {
+ type = DETAIL_IM_ADDRESS_TYPE_QQ;
+ }
+ else if (typeString.Equals(IM_ADDRESS_GOOGLE_TALK, true))
+ {
+ type = DETAIL_IM_ADDRESS_TYPE_GOOGLE_TALK;
+ }
+ else if (typeString.Equals(IM_ADDRESS_ICQ, true))
+ {
+ type = DETAIL_IM_ADDRESS_TYPE_ICQ;
+ }
+ else if (typeString.Equals(IM_ADDRESS_JABBER, true))
+ {
+ type = DETAIL_IM_ADDRESS_TYPE_JABBER;
+ }
+ else
+ {
+ type = DETAIL_IM_ADDRESS_TYPE_OTHER;
+ }
+ }
+
+ pImAddressList->RemoveAll(true);
+ delete pImAddressList;
+
+ return returnString;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetAddress(DetailProperty id, int index, DetailAddressType& type)
+{
+ String returnString;
+
+ TryReturn(__pContact != null, String(), "[E_FAILURE] The contact is invalid.");
+
+ if (index == -1)
+ {
+ return returnString;
+ }
+
+ IList* pAddressList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_ADDRESSES);
+ AppAssert(pAddressList);
+
+ Address* pAddress = static_cast<Address *>(pAddressList->GetAt(index));
+ if (pAddress != null)
+ {
+ String street = pAddress->GetStreet();
+ String city = pAddress->GetCity();
+ String state = pAddress->GetState();
+ String country = pAddress->GetCountry();
+ String postalCode = pAddress->GetPostalCode();
+
+ switch (id)
+ {
+ case DETAIL_PROPERTY_ADDRESS_POSTAL_CODE:
+ returnString = postalCode;
+ break;
+ case DETAIL_PROPERTY_ADDRESS_COUNTRY:
+ returnString = country;
+ break;
+ case DETAIL_PROPERTY_ADDRESS_PROVINCE:
+ returnString = state;
+ break;
+ case DETAIL_PROPERTY_ADDRESS_CITY:
+ returnString = city;
+ break;
+ case DETAIL_PROPERTY_ADDRESS_STREET:
+ returnString = street;
+ break;
+ case DETAIL_PROPERTY_ADDRESS:
+ if (postalCode.IsEmpty() == false)
+ {
+ returnString.Append(postalCode);
+ returnString.Append(CHARACTER_SPACE);
+ }
+ if (country.IsEmpty() == false)
+ {
+ returnString.Append(country);
+ returnString.Append(CHARACTER_SPACE);
+ }
+ if (state.IsEmpty() == false)
+ {
+ returnString.Append(state);
+ returnString.Append(CHARACTER_SPACE);
+ }
+ if (city.IsEmpty() == false)
+ {
+ returnString.Append(city);
+ returnString.Append(CHARACTER_SPACE);
+ }
+ if (street.IsEmpty() == false)
+ {
+ returnString.Append(street);
+ }
+ break;
+ default:
+ break;
+ }
+
+ type = (DetailAddressType)pAddress->GetType();
+ }
+
+ pAddressList->RemoveAll(true);
+ delete pAddressList;
+
+ return returnString;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetDateTime(DetailProperty id)
+{
+ result r = E_SUCCESS;
+ String returnString;
+ int day = 0;
+ int year = 0;
+ String month;
+ DateTimeSymbols dateTimeSymbols;
+
+ r = dateTimeSymbols.Construct(CALENDAR_GREGORIAN);
+ TryReturn(r == E_SUCCESS, String(), "[E_FAILURE] Given locale is not supported.");
+ const IList* pMonthList = dateTimeSymbols.GetShortMonths();
+
+ TryReturn(__pContact != null, String(), "[E_FAILURE] The contact is invalid.");
+
+ DateTime* pDateTime = new (std::nothrow) DateTime();
+
+ if (id == DETAIL_PROPERTY_BIRTHDAY)
+ {
+ r = GetBirthday(*pDateTime);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to get value", GetErrorMessage(r));
+
+ day = pDateTime->GetDay();
+ year = pDateTime->GetYear();
+ month.Append(*static_cast<String*>(const_cast<Object*>(pMonthList->GetAt(pDateTime->GetMonth() - 1))));
+
+ returnString.Append(day);
+ returnString.Append(CHARACTER_SPACE);
+ returnString.Append(month);
+ returnString.Append(CHARACTER_SPACE);
+ returnString.Append(year);
+ }
+
+CATCH:
+ delete pDateTime;
+
+ return returnString;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetUrl(int index, DetailUrlType& type)
+{
+ String returnString;
+
+ TryReturn(__pContact != null, String(), "[E_FAILURE] The contact is invalid.");
+
+ IList* pUrlList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_URLS);
+ if (pUrlList == null)
+ {
+ return returnString;
+ }
+
+ Url* pUrl = static_cast<Url*>(pUrlList->GetAt(index));
+ if (pUrl != null)
+ {
+ returnString = pUrl->GetUrl();
+ type = (DetailUrlType)pUrl->GetType();
+ }
+
+ pUrlList->RemoveAll(true);
+ delete pUrlList;
+
+ return returnString;
+}
+
+void
+ContactPresentationModel::AddContactChangeListener(const IContactEventListener& listener)
+{
+ __pContactListenerList->Add(listener);
+}
+
+void
+ContactPresentationModel::RemoveContactChangeListener(const IContactEventListener& listener)
+{
+ __pContactListenerList->Remove(listener, false);
+}
+
+void
+ContactPresentationModel::OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList)
+{
+ if (__newMode == false)
+ {
+ SetContactId(__pContact->GetRecordId());
+ }
+
+ IContactEventListener* pInterface = null;
+ IEnumerator* pEnum = __pContactListenerList->GetEnumeratorN();
+ while(pEnum->MoveNext() == E_SUCCESS)
+ {
+ pInterface = static_cast<IContactEventListener*>(pEnum->GetCurrent());
+ if (pInterface == null)
+ {
+ delete pEnum;
+ return;
+ }
+ pInterface->OnContactsChanged();
+ }
+
+ delete pEnum;
+}
+
+void
+ContactPresentationModel::OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList)
+{
+ IContactEventListener* pInterface = null;
+ IEnumerator* pEnum = __pContactListenerList->GetEnumeratorN();
+ while(pEnum->MoveNext() == E_SUCCESS)
+ {
+ pInterface = static_cast<IContactEventListener*>(pEnum->GetCurrent());
+ if (pInterface == null)
+ {
+ delete pEnum;
+ return;
+ }
+ pInterface->OnCategoriesChanged();
+ }
+
+ delete pEnum;
+}
+
+result
+ContactPresentationModel::SetValue(DetailProperty id, const Tizen::Base::String& value, int index)
+{
+ result r = E_SUCCESS;
+
+ TryReturn(__pContact != null, E_FAILURE, "[E_FAILURE] The contact is invalid.");
+
+ String trimmedString(value);
+ trimmedString.Trim();
+
+ Email email = Email();
+ ImAddress imAddress = ImAddress();
+ Url url = Url();
+ PhoneNumber phoneNumber = PhoneNumber();
+
+ switch (id)
+ {
+ case DETAIL_PROPERTY_RINGTONE:
+ {
+ r = __pContact->SetValue(CONTACT_PROPERTY_ID_RINGTONE, trimmedString);
+ }
+ break;
+ case DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER:
+ {
+ __defaultNumberIndex = index;
+ }
+ break;
+ case DETAIL_PROPERTY_PHONE_NUMBER:
+ {
+ r = SetPhoneNumber(DETAIL_PHONENUMBER_TYPE_MOBILE, trimmedString, index);
+ }
+ break;
+ case DETAIL_PROPERTY_EMAIL:
+ {
+ r = SetEmail(DETAIL_EMAIL_TYPE_HOME, trimmedString, index);
+ }
+ break;
+ case DETAIL_PROPERTY_IM_ADDRESS:
+ {
+ r = SetImAddress(DETAIL_IM_ADDRESS_TYPE_MSN, trimmedString, index);
+ }
+ break;
+ case DETAIL_PROPERTY_ADDRESS: //fall through
+ case DETAIL_PROPERTY_ADDRESS_POSTAL_CODE: //fall through
+ case DETAIL_PROPERTY_ADDRESS_COUNTRY: //fall through
+ case DETAIL_PROPERTY_ADDRESS_PROVINCE: //fall through
+ case DETAIL_PROPERTY_ADDRESS_CITY: //fall through
+ case DETAIL_PROPERTY_ADDRESS_STREET:
+ {
+ SetAddress(id, trimmedString);
+ __pContact->RemoveAt(CONTACT_MPROPERTY_ID_ADDRESSES, index);
+ r = __pContact->SetAddressAt(index, __address);
+ if (r != E_SUCCESS)
+ {
+ r = __pContact->AddAddress(__address);
+ }
+ }
+ break;
+ case DETAIL_PROPERTY_URL:
+ {
+ SetUrl(DETAIL_URL_TYPE_HOME, trimmedString, index);
+ }
+ break;
+ case DETAIL_PROPERTY_NOTE:
+ {
+ r = __pContact->SetNoteAt(index, value);
+ if (r != E_SUCCESS)
+ {
+ r = __pContact->AddNote(value);
+ }
+ }
+ break;
+ case DETAIL_PROPERTY_DISPLAY_NAME:
+ {
+ r = __pContact->SetValue(CONTACT_PROPERTY_ID_DISPLAY_NAME, trimmedString);
+ }
+ break;
+ case DETAIL_PROPERTY_FIRST_NAME:
+ {
+ r = __pContact->SetValue(CONTACT_PROPERTY_ID_FIRST_NAME, trimmedString);
+ }
+ break;
+ case DETAIL_PROPERTY_LAST_NAME:
+ {
+ r = __pContact->SetValue(CONTACT_PROPERTY_ID_LAST_NAME, trimmedString);
+ }
+ break;
+ case DETAIL_PROPERTY_MIDDLE_NAME:
+ {
+ r = __pContact->SetValue(CONTACT_PROPERTY_ID_MIDDLE_NAME, trimmedString);
+ }
+ break;
+ case DETAIL_PROPERTY_NICK_NAME:
+ {
+ if (trimmedString.IsEmpty() == true)
+ {
+ r = __pContact->RemoveAt(CONTACT_MPROPERTY_ID_NICKNAMES, index);
+
+ return r;
+ }
+
+ r = __pContact->SetNicknameAt(index, trimmedString);
+ if (r != E_SUCCESS)
+ {
+ r = __pContact->AddNickname(trimmedString);
+ }
+ }
+ break;
+ case DETAIL_PROPERTY_NAME_SUFFIX:
+ {
+ r = __pContact->SetValue(CONTACT_PROPERTY_ID_NAME_SUFFIX, trimmedString);
+ }
+ break;
+ case DETAIL_PROPERTY_JOB_TITLE:
+ {
+ r = SetOrganization(DETAIL_PROPERTY_JOB_TITLE, trimmedString);
+ }
+ break;
+ case DETAIL_PROPERTY_DEPARTMENT:
+ {
+ r = SetOrganization(DETAIL_PROPERTY_DEPARTMENT, trimmedString);
+ }
+ break;
+ case DETAIL_PROPERTY_COMPANY:
+ {
+ r = SetOrganization(DETAIL_PROPERTY_COMPANY, trimmedString);
+ }
+ break;
+ default:
+ break;
+ }
+
+ return r;
+}
+
+result
+ContactPresentationModel::AddAddressBook(void)
+{
+ result r = E_SUCCESS;
+
+ if (__newMode == true)
+ {
+ r = AddContact();
+
+ RecordId newPersonId;
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+ IList* pList = pAddressbookManager->GetContactsByPersonN(__pContact->GetPersonId());
+
+ if (pList != null && pList->GetCount() > 1)
+ {
+ r = pAddressbookManager->UnlinkContact(__pContact->GetPersonId(), __pContact->GetRecordId(), newPersonId);
+ }
+
+ delete pList;
+ }
+ else
+ {
+ r = UpdateContact();
+ }
+
+ if (r == E_SUCCESS)
+ {
+ IList* pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
+ TryReturn(pList != null, r, "[E_FAILURE] The contact doesn't have a phone number at least.");
+
+ PhoneNumber* pPhoneNumber = static_cast<PhoneNumber*>(pList->GetAt(__defaultNumberIndex));
+ if (pPhoneNumber != null)
+ {
+ Person* pPerson = AddressbookManager::GetInstance()->GetPersonN(__pContact->GetPersonId());
+ if (pPerson != null)
+ {
+ pPerson->SetAsPrimaryPhoneNumber(*pPhoneNumber);
+ }
+ delete pPerson;
+ }
+ pList->RemoveAll(true);
+ delete pList;
+ }
+
+ if (__newMode || __isEditing)
+ {
+ if (__isEditing == true)
+ {
+ __isEditing = false;
+ RemoveContactFromAllCategories();
+ __isEditing = true;
+ }
+
+ IEnumerator* pEnum = __pAssignedCategoryList->GetEnumeratorN();
+ String* pCategoryStringId = null;
+ RecordId categoryId;
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pCategoryStringId = static_cast<String*>(pEnum->GetCurrent());
+
+ if (pCategoryStringId != null)
+ {
+ Integer::Parse(*pCategoryStringId, categoryId);
+ r = __pAddressbook->AddMemberToCategory(categoryId, __pContact->GetRecordId());
+ }
+ }
+ delete pEnum;
+ }
+
+ return r;
+}
+
+result
+ContactPresentationModel::SetAddress(DetailProperty id, const Tizen::Base::String& value)
+{
+ result r = E_SUCCESS;
+
+ switch (id)
+ {
+ case DETAIL_PROPERTY_ADDRESS_POSTAL_CODE:
+ r = __address.SetPostalCode(value);
+ break;
+ case DETAIL_PROPERTY_ADDRESS_COUNTRY:
+ r = __address.SetCountry(value);
+ break;
+ case DETAIL_PROPERTY_ADDRESS_PROVINCE:
+ r = __address.SetState(value);
+ break;
+ case DETAIL_PROPERTY_ADDRESS_CITY:
+ r = __address.SetCity(value);
+ break;
+ case DETAIL_PROPERTY_ADDRESS_STREET:
+ r = __address.SetStreet(value);
+ break;
+ default:
+ break;
+ }
+
+ return r;
+}
+
+result
+ContactPresentationModel::SetBirthday(const Tizen::Base::DateTime& value)
+{
+ result r = E_SUCCESS;
+
+ TryReturn(__pContact != null, E_FAILURE, "[E_FAILURE] The contact is invalid.");
+
+ ContactEvent birthday;
+ birthday.SetDate(value);
+
+ r = __pContact->SetEventAt(0, birthday);
+ if (r != E_SUCCESS)
+ {
+ r = __pContact->AddEvent(birthday);
+ }
+
+ return r;
+}
+
+result
+ContactPresentationModel::SetPhoneNumber(DetailPhoneNumberType type, const Tizen::Base::String& value, int index)
+{
+ result r = E_SUCCESS;
+
+ if (value.IsEmpty() == true)
+ {
+ r = __pContact->RemoveAt(CONTACT_MPROPERTY_ID_PHONE_NUMBERS, index);
+
+ return r;
+ }
+
+ PhoneNumber phoneNumber;
+ phoneNumber.SetPhoneNumber(value);
+ phoneNumber.SetType((PhoneNumberType)type);
+
+ r = __pContact->SetPhoneNumberAt(index, phoneNumber);
+ if (r != E_SUCCESS)
+ {
+ r = __pContact->AddPhoneNumber(phoneNumber);
+ }
+
+ return r;
+}
+
+result
+ContactPresentationModel::SetEmail(DetailEmailType type, const Tizen::Base::String& value, int index)
+{
+ result r = E_SUCCESS;
+
+ if (value.IsEmpty() == true)
+ {
+ r = __pContact->RemoveAt(CONTACT_MPROPERTY_ID_EMAILS, index);
+
+ return r;
+ }
+
+ Email email;
+ email.SetEmail(value);
+ email.SetType((EmailType)type);
+
+ r = __pContact->SetEmailAt(index, email);
+ if (r != E_SUCCESS)
+ {
+ r = __pContact->AddEmail(email);
+ }
+
+ return r;
+}
+
+result
+ContactPresentationModel::SetAddress(DetailAddressType type, const Tizen::Base::String& value, int index)
+{
+ result r = E_SUCCESS;
+
+ if (value.IsEmpty() == true)
+ {
+ r = __pContact->RemoveAt(CONTACT_MPROPERTY_ID_ADDRESSES, index);
+
+ return r;
+ }
+
+ Address address;
+ address.SetType((AddressType)type);
+
+ r = __pContact->SetAddressAt(index, address);
+ if (r != E_SUCCESS)
+ {
+ r = __pContact->AddAddress(__address);
+ }
+
+ return r;
+}
+
+result
+ContactPresentationModel::SetUrl(DetailUrlType type, const Tizen::Base::String& value, int index)
+{
+ result r = E_SUCCESS;
+
+ if (value.IsEmpty() == true)
+ {
+ r = __pContact->RemoveAt(CONTACT_MPROPERTY_ID_URLS, index);
+
+ return r;
+ }
+
+ Url url;
+ url.SetType(UrlType(type));
+ url.SetUrl(value);
+
+ r = __pContact->SetUrlAt(index, url);
+ if (r != E_SUCCESS)
+ {
+ r = __pContact->AddUrl(url);
+ }
+
+ return r;
+}
+
+result
+ContactPresentationModel::SetImAddress(DetailImAddressType type, const Tizen::Base::String& value, int index)
+{
+ result r = E_SUCCESS;
+
+ if (value.IsEmpty() == true)
+ {
+ r = __pContact->RemoveAt(CONTACT_MPROPERTY_ID_IMADDRESSES, index);
+
+ return r;
+ }
+
+ ImAddress imAddress;
+ imAddress.SetImAddress(value);
+ imAddress.SetServiceProviderName(GetImAddressTypeString(type));
+ r = __pContact->SetImAddressAt(index, imAddress);
+
+ if (r != E_SUCCESS)
+ {
+ r = __pContact->AddImAddress(imAddress);
+ }
+
+ return r;
+}
+
+result
+ContactPresentationModel::SetThumbnail(const Tizen::Base::String& filePath)
+{
+ result r = E_SUCCESS;
+
+ TryReturn(__pContact != null, E_FAILURE, "[E_FAILURE] The contact is invalid.");
+
+ r = __pContact->SetThumbnail(filePath);
+
+ return r;
+}
+
+result
+ContactPresentationModel::SetOrganization(DetailProperty id, const Tizen::Base::String& value)
+{
+ TryReturn((id >= DETAIL_PROPERTY_JOB_TITLE && id <= DETAIL_PROPERTY_COMPANY), E_FAILURE, "[E_FAILURE] Unable to set the specific id");
+
+ result r = E_SUCCESS;
+
+ IList* pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_ORGANIZATIONS);
+
+ if (pList == null)
+ {
+ return E_FAILURE;
+ }
+
+ if (pList->GetCount() == 0)
+ {
+ if (value.IsEmpty())
+ {
+ return E_SUCCESS;
+ }
+
+ Organization organization;
+
+ switch (id)
+ {
+ case DETAIL_PROPERTY_JOB_TITLE:
+ {
+ organization.SetJobTitle(value);
+ }
+ break;
+ case DETAIL_PROPERTY_DEPARTMENT:
+ {
+ organization.SetDepartment(value);
+ }
+ break;
+ case DETAIL_PROPERTY_COMPANY:
+ {
+ organization.SetName(value);
+ }
+ break;
+ default:
+ break;
+ }
+
+ r = __pContact->AddOrganization(organization);
+ }
+ else
+ {
+ Organization* pOrganization = static_cast<Organization *>(pList->GetAt(0));
+ if (pOrganization == null)
+ {
+ return E_FAILURE;
+ }
+
+ switch (id)
+ {
+ case DETAIL_PROPERTY_JOB_TITLE:
+ {
+ pOrganization->SetJobTitle(value);
+ }
+ break;
+ case DETAIL_PROPERTY_DEPARTMENT:
+ {
+ pOrganization->SetDepartment(value);
+ }
+ break;
+ case DETAIL_PROPERTY_COMPANY:
+ {
+ pOrganization->SetName(value);
+ }
+ break;
+ default:
+ break;
+ }
+
+ if (pOrganization->GetJobTitle().IsEmpty() && pOrganization->GetDepartment().IsEmpty() && pOrganization->GetName().IsEmpty())
+ {
+ r = __pContact->RemoveAt(CONTACT_MPROPERTY_ID_ORGANIZATIONS, 0);
+ }
+ else
+ {
+ if (value.IsEmpty())
+ {
+ r = __pContact->RemoveAt(CONTACT_MPROPERTY_ID_ORGANIZATIONS, 0);
+
+ if (r == E_SUCCESS)
+ {
+ r = __pContact->AddOrganization(*pOrganization);
+ }
+ }
+ else
+ {
+ r = __pContact->SetOrganizationAt(0, *pOrganization);
+ }
+ }
+ }
+
+ pList->RemoveAll(true);
+ delete pList;
+
+ return r;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetPhoneNumberTypeString(DetailPhoneNumberType type)
+{
+ String returnString;
+
+ switch (type)
+ {
+ case DETAIL_PHONENUMBER_TYPE_HOME:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_HOME");
+ }
+ break;
+ case DETAIL_PHONENUMBER_TYPE_WORK:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_WORK");
+ }
+ break;
+ case DETAIL_PHONENUMBER_TYPE_MOBILE:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_MOBILE");
+ }
+ break;
+ case DETAIL_PHONENUMBER_TYPE_HOME_FAX:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_FAX_HHOME");
+ }
+ break;
+ case DETAIL_PHONENUMBER_TYPE_WORK_FAX:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_FAX_HWORK");
+ }
+ break;
+ case DETAIL_PHONENUMBER_TYPE_PAGER:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_PAGER");
+ }
+ break;
+ case DETAIL_PHONENUMBER_TYPE_OTHER:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_OTHER");
+ }
+ break;
+ }
+
+ return returnString;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetEmailTypeString(DetailEmailType type)
+{
+ String returnString;
+
+ switch (type)
+ {
+ case DETAIL_EMAIL_TYPE_HOME:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_HOME");
+ }
+ break;
+ case DETAIL_EMAIL_TYPE_WORK:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_WORK");
+ }
+ break;
+ case DETAIL_EMAIL_TYPE_OTHER:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_OTHER");
+ }
+ break;
+ }
+
+ return returnString;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetAddressTypeString(DetailAddressType type)
+{
+ String returnString;
+
+ switch (type)
+ {
+ case DETAIL_ADDRESS_TYPE_HOME:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_HOME");
+ }
+ break;
+ case DETAIL_ADDRESS_TYPE_WORK:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_WORK");
+ }
+ break;
+ case DETAIL_ADDRESS_TYPE_OTHER:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_OTHER");
+ }
+ break;
+ }
+
+ return returnString;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetUrlTypeString(DetailUrlType type)
+{
+ String returnString;
+
+ switch (type)
+ {
+ case DETAIL_URL_TYPE_HOME:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_HOME");
+ }
+ break;
+ case DETAIL_URL_TYPE_WORK:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_WORK");
+ }
+ break;
+ case DETAIL_URL_TYPE_OTHER:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_OTHER");
+ }
+ break;
+ }
+
+ return returnString;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetImAddressTypeString(DetailImAddressType type)
+{
+ String returnString;
+
+ switch (type)
+ {
+ case DETAIL_IM_ADDRESS_TYPE_AIM:
+ {
+ returnString = IM_ADDRESS_AIM;
+ }
+ break;
+ case DETAIL_IM_ADDRESS_TYPE_MSN:
+ {
+ returnString = IM_ADDRESS_MSN;
+ }
+ break;
+ case DETAIL_IM_ADDRESS_TYPE_YAHOO:
+ {
+ returnString = IM_ADDRESS_YAHOO;
+ }
+ break;
+ case DETAIL_IM_ADDRESS_TYPE_SKYPE:
+ {
+ returnString = IM_ADDRESS_SKYPE;
+ }
+ break;
+ case DETAIL_IM_ADDRESS_TYPE_QQ:
+ {
+ returnString = IM_ADDRESS_QQ;
+ }
+ break;
+ case DETAIL_IM_ADDRESS_TYPE_GOOGLE_TALK:
+ {
+ returnString = IM_ADDRESS_GOOGLE_TALK;
+ }
+ break;
+ case DETAIL_IM_ADDRESS_TYPE_ICQ:
+ {
+ returnString = IM_ADDRESS_ICQ;
+ }
+ break;
+ case DETAIL_IM_ADDRESS_TYPE_JABBER:
+ {
+ returnString = IM_ADDRESS_JABBER;
+ }
+ break;
+ case DETAIL_IM_ADDRESS_TYPE_OTHER:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_OTHER");
+ }
+ break;
+ }
+
+ return returnString;
+}
+
+DetailPhoneNumberType
+ContactPresentationModel::GetPhoneNumberType(int index)
+{
+ DetailPhoneNumberType type;
+ String value;
+
+ value = GetPhoneNumber(index, type);
+
+ return type;
+}
+
+DetailEmailType
+ContactPresentationModel::GetEmailType(int index)
+{
+ DetailEmailType type;
+ String value;
+
+ value = GetEmail(index, type);
+
+ return type;
+}
+
+DetailAddressType
+ContactPresentationModel::GetAddressType(DetailProperty id, int index)
+{
+ DetailAddressType type;
+ String value;
+
+ value = GetAddress(id, index, type);
+
+ return type;
+}
+
+DetailUrlType
+ContactPresentationModel::GetUrlType(int index)
+{
+ DetailUrlType type;
+ String value;
+
+ value = GetUrl(index, type);
+
+ return type;
+}
+
+DetailImAddressType
+ContactPresentationModel::GetImAddressType(int index)
+{
+ DetailImAddressType type;
+ String value;
+
+ value = GetImAddress(index, type);
+
+ return type;
+}
+
+void
+ContactPresentationModel::SetAsFavorite(bool isFavorite)
+{
+ AddressbookManager::GetInstance()->SetPersonAsFavorite(__pContact->GetPersonId(), isFavorite);
+}
+
+bool
+ContactPresentationModel::IsFavorite(void)
+{
+ bool isFavorite = false;
+ PersonId personId = __pContact->GetPersonId();
+
+ Person* pPerson = AddressbookManager::GetInstance()->GetPersonN(personId);
+ if (pPerson == null)
+ {
+ return false;
+ }
+
+ isFavorite = pPerson->IsFavorite();
+
+ delete pPerson;
+
+ return isFavorite;
+}
--- /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 CtContactSelectorForm.cpp
+ * @brief This is the implementation file for the ContactSelectorForm class.
+ */
+
+#include <FApp.h>
+#include <FSocial.h>
+#include "CtContactSelectorForm.h"
+#include "CtContactListItem.h"
+#include "CtContactListPresentationModel.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtSearchListEventListener.h"
+#include "CtSearchListItem.h"
+#include "CtTypes.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 int IDA_FOOTER_DONE = 0;
+static const int IDA_FOOTER_CANCEL = 1;
+static const int IDA_CHECK_SELECT_ALL_CHECKED = 10;
+static const int IDA_CHECK_SELECT_ALL_UNCHECKED = 11;
+
+static const int H_SEARCHBAR = 108;
+static const int H_SELECT_ALL = 108;
+static const int H_ITEM = 112;
+static const int H_GROUP_ITEM = 76;
+static const int H_BOTTOM_LABEL = 48;
+static const int X_LIST_ITEM_TEXT_MARGIN = 32;
+
+static const int FONT_SIZE_BOTTOM_LABEL = 32;
+static const unsigned int COLOR_BOTTOM_LABEL_BG = Color32<215, 225, 232>::Value;
+static const unsigned int COLOR_BOTTOM_LABEL_FONT = Color32<76, 81, 88>::Value;
+
+ContactSelectorForm::ContactSelectorForm(void)
+: __pPresentationModel(null)
+, __pSelectAll(null)
+, __pListView(null)
+, __pSearchListView(null)
+, __pBottomLabel(null)
+, __pSearchBar(null)
+, __pSearchListEvent(null)
+{
+}
+
+ContactSelectorForm::~ContactSelectorForm(void)
+{
+}
+
+void
+ContactSelectorForm::Initialize(void)
+{
+ Construct(FORM_STYLE_NORMAL | FORM_STYLE_INDICATOR | FORM_STYLE_HEADER | FORM_STYLE_FOOTER);
+}
+
+result
+ContactSelectorForm::OnInitializing(void)
+{
+ Header* pHeader = GetHeader();
+ pHeader->SetTitleText(ResourceManager::GetString(L"IDS_PB_HEADER_SELECT_CONTACTS"));
+
+ CreateFooterButton();
+
+ __pPresentationModel = ContactListPresentationModel::GetInstance();
+ __pPresentationModel->AddContactChangeListener(*this);
+
+ __pSelectAll = new (std::nothrow) CheckButton();
+ __pSelectAll->Construct(Rectangle(0, H_SEARCHBAR, GetClientAreaBounds().width, H_SELECT_ALL), CHECK_BUTTON_STYLE_MARK, BACKGROUND_STYLE_DEFAULT);
+ __pSelectAll->SetText(ResourceManager::GetString(L"IDS_COM_BODY_SELECT_ALL"));
+ __pSelectAll->SetActionId(IDA_CHECK_SELECT_ALL_CHECKED, IDA_CHECK_SELECT_ALL_UNCHECKED);
+ __pSelectAll->AddActionEventListener(*this);
+ AddControl(*__pSelectAll);
+
+ __pListView = new (std::nothrow) GroupedListView();
+ __pListView->Construct(Rectangle(0, H_SELECT_ALL + H_SEARCHBAR, GetClientAreaBounds().width,
+ GetClientAreaBounds().height - (H_SEARCHBAR + H_SELECT_ALL + H_BOTTOM_LABEL)), GROUPED_LIST_VIEW_STYLE_INDEXED, true, true);
+ __pListView->SetItemProvider(*this);
+ __pListView->SetTextOfEmptyList(ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pListView->AddFastScrollListener(*this);
+ __pListView->AddGroupedListViewItemEventListener(*this);
+ __pListView->AddTouchEventListener(*this);
+ AddControl(*__pListView);
+
+ __pSearchBar = new (std::nothrow) SearchBar();
+ __pSearchBar->Construct(Rectangle(0, 0, GetClientAreaBounds().width, H_SEARCHBAR));
+ __pSearchBar->SetGuideText(ResourceManager::GetString(L"IDS_COM_BODY_SEARCH"));
+ __pSearchBar->AddSearchBarEventListener(*this);
+ __pSearchBar->AddTextEventListener(*this);
+ __pSearchBar->AddKeypadEventListener(*this);
+ __pSearchBar->SetContentAreaSize(Dimension(0, 0));
+
+ __pSearchListEvent = new (std::nothrow) SearchListEventListener(LIST_ANNEX_STYLE_MARK, __pPresentationModel);
+ AddControl(*__pSearchBar);
+
+ __pSearchListView = new (std::nothrow) GroupedListView();
+ __pSearchListView->Construct(Rectangle(0, H_SEARCHBAR, GetClientAreaBounds().width, GetClientAreaBounds().height - H_SEARCHBAR - H_BOTTOM_LABEL), GROUPED_LIST_VIEW_STYLE_INDEXED, true, false);
+ __pSearchListView->SetItemProvider(*__pSearchListEvent);
+ __pSearchListView->SetTextOfEmptyList(ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pSearchListView->AddGroupedListViewItemEventListener(*this);
+ __pSearchListView->AddTouchEventListener(*this);
+ __pSearchListView->SetShowState(false);
+ AddControl(*__pSearchListView);
+
+ __pBottomLabel = new (std::nothrow) Label();
+ __pBottomLabel->Construct(Rectangle(0, GetClientAreaBounds().height - H_BOTTOM_LABEL, GetClientAreaBounds().width, H_BOTTOM_LABEL),
+ ResourceManager::GetString(L"IDS_COM_POP_SELECTED") + INITIAL_SELECTED_COUNT);
+ __pBottomLabel->SetBackgroundColor(Color(COLOR_BOTTOM_LABEL_BG));
+ __pBottomLabel->SetTextColor(Color(COLOR_BOTTOM_LABEL_FONT));
+ __pBottomLabel->SetTextConfig(FONT_SIZE_BOTTOM_LABEL, LABEL_TEXT_STYLE_BOLD);
+ __pBottomLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ AddControl(*__pBottomLabel);
+
+ return E_SUCCESS;
+}
+
+result
+ContactSelectorForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pPresentationModel != null)
+ {
+ __pPresentationModel->RemoveContactChangeListener(*this);
+ }
+
+ return r;
+}
+
+void
+ContactSelectorForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ result r = E_SUCCESS;
+
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ switch (actionId)
+ {
+ case IDA_CHECK_SELECT_ALL_CHECKED:
+ {
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ for (int itemIndex = 0; itemIndex < __pListView->GetItemCountAt(groupIndex); itemIndex++)
+ {
+ __pListView->SetItemChecked(groupIndex, itemIndex, true);
+ }
+ }
+ __pListView->SetFocus();
+ __pListView->Invalidate(true);
+ UpdateBottomLabel();
+ }
+ break;
+ case IDA_CHECK_SELECT_ALL_UNCHECKED:
+ {
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ for (int itemIndex = 0; itemIndex < __pListView->GetItemCountAt(groupIndex); itemIndex++)
+ {
+ __pListView->SetItemChecked(groupIndex, itemIndex, false);
+ }
+ }
+ __pListView->SetFocus();
+ __pListView->Invalidate(true);
+ UpdateBottomLabel();
+ }
+ break;
+ case IDA_FOOTER_DONE:
+ {
+ ArrayList* contactIdList = new (std::nothrow) ArrayList();
+ contactIdList->Construct();
+
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ for (int itemIndex = 0; itemIndex < __pListView->GetItemCountAt(groupIndex); itemIndex++)
+ {
+ bool isChecked = false;
+ isChecked = __pListView->IsItemChecked(groupIndex, itemIndex);
+ if (isChecked == true)
+ {
+ RecordId contactId = __pPresentationModel->GetContactId(groupIndex, itemIndex);
+ contactIdList->Add(*(new (std::nothrow) Integer(contactId)));
+ }
+ }
+ }
+
+ pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT), contactIdList);
+ }
+ break;
+ case IDA_FOOTER_CANCEL:
+ {
+ r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go backward", GetErrorMessage(r));
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+ContactSelectorForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
+{
+ if (pArgs != null)
+ {
+ __pPresentationModel->InitializeContactList(pArgs);
+
+ String fastScrollIndex;
+ for (int i = 0; i < __pPresentationModel->GetContactCount(); i++)
+ {
+ fastScrollIndex.Append(__pPresentationModel->GetKey(i));
+ }
+
+ __pListView->SetFastScrollIndex(fastScrollIndex, false);
+
+ Footer* pFooter = GetFooter();
+ pFooter->SetItemEnabled(0, false);
+ }
+}
+
+void
+ContactSelectorForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+}
+
+void
+ContactSelectorForm::OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, Tizen::Ui::Controls::SearchBarMode mode)
+{
+ if (mode == SEARCH_BAR_MODE_NORMAL)
+ {
+ int count = __pPresentationModel->GetSearchedContactCount();
+ bool isChecked = true;
+
+ for (int i = 0; i < count; i++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(i, groupIndex, itemIndex);
+
+ __pListView->SetItemChecked(groupIndex, itemIndex, __pSearchListView->IsItemChecked(0, i));
+ }
+
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount() && isChecked == true; groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ isChecked = false;
+ break;
+ }
+ }
+ }
+
+ __pListView->SetShowState(true);
+ __pListView->Invalidate(true);
+ __pSelectAll->SetShowState(true);
+ __pSelectAll->SetSelected(isChecked);
+ __pSearchListView->SetShowState(false);
+ __pPresentationModel->ResetSearchedContactList();
+ __pSearchListView->UpdateList();
+
+ UpdateBottomLabel();
+ }
+}
+
+void
+ContactSelectorForm::OnTextValueChanged(const Tizen::Ui::Control& source)
+{
+ String searchText = __pSearchBar->GetText();
+ searchText.Trim();
+
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_NORMAL);
+
+ if (searchText.GetLength() != 0)
+ {
+ __pSelectAll->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pSearchListView->SetShowState(true);
+
+ __pSearchListView->UpdateList();
+
+ int count = __pPresentationModel->GetSearchedContactCount();
+
+ for (int index = 0; index < count; index++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+ __pSearchListView->SetItemChecked(0, index, __pListView->IsItemChecked(groupIndex, itemIndex));
+ }
+
+ __pSearchListView->Invalidate(true);
+ }
+ else
+ {
+ __pSelectAll->SetShowState(true);
+ __pListView->SetShowState(true);
+ __pSearchListView->SetShowState(false);
+
+ int count = __pPresentationModel->GetSearchedContactCount();
+ bool isChecked = true;
+
+ for (int index = 0; index < count; index++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+ __pListView->SetItemChecked(groupIndex, itemIndex, __pSearchListView->IsItemChecked(0, index));
+ }
+
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount() && isChecked == true; groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ isChecked = false;
+ break;
+ }
+ }
+ }
+
+ __pSelectAll->SetSelected(isChecked);
+ __pListView->Invalidate(true);
+ }
+}
+
+void
+ContactSelectorForm::OnTextValueChangeCanceled(const Tizen::Ui::Control& source)
+{
+}
+
+int
+ContactSelectorForm::GetGroupCount(void)
+{
+ return __pPresentationModel->GetKeyCount();
+}
+
+int
+ContactSelectorForm::GetItemCount(int groupIndex)
+{
+ int contactCount = __pPresentationModel->GetContactCount(groupIndex);
+ if (contactCount == 0)
+ {
+ contactCount = -1;
+ }
+
+ return contactCount;
+}
+
+Tizen::Ui::Controls::ListItemBase*
+ContactSelectorForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ String name;
+ Bitmap* pThumbnail = null;
+
+ CustomItem* pItem = new (std::nothrow) CustomItem();
+ pItem->Construct(Dimension(itemWidth, H_ITEM), LIST_ANNEX_STYLE_MARK);
+
+ __pPresentationModel->GetContactItemInfoN(groupIndex, itemIndex, name, pThumbnail);
+ ContactListItem* pCustomElement = new (std::nothrow) ContactListItem(name, pThumbnail);
+ pItem->AddElement(Rectangle(0, 0, itemWidth - (ListItemBase::GetAnnexWidth(LIST_ANNEX_STYLE_MARK) + X_LIST_ITEM_TEXT_MARGIN), H_ITEM), 0, *(static_cast<ICustomElement *>(pCustomElement)));
+
+ return pItem;
+}
+
+Tizen::Ui::Controls::GroupItem*
+ContactSelectorForm::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ GroupItem* pItem = new (std::nothrow) GroupItem();
+ pItem->Construct(Dimension(itemWidth, H_GROUP_ITEM));
+ pItem->SetElement(__pPresentationModel->GetKey(groupIndex), null);
+
+ return pItem;
+}
+
+bool
+ContactSelectorForm::DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+bool
+ContactSelectorForm::DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+void
+ContactSelectorForm::OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+}
+
+void
+ContactSelectorForm::OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus state)
+{
+ if (&listView == __pListView)
+ {
+ __pListView->SetFocus();
+
+ if (listView.IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ bool isChecked = true;
+ for (int groupIndex = 0; groupIndex < listView.GetGroupCount() && isChecked == true; groupIndex++)
+ {
+ for (int itemIndex = 0; itemIndex < listView.GetItemCountAt(groupIndex); itemIndex++)
+ {
+ if (listView.IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ isChecked = false;
+ break;
+ }
+ }
+ }
+
+ __pSelectAll->SetSelected(isChecked);
+ }
+ else
+ {
+ __pSelectAll->SetSelected(false);
+ }
+ }
+ else if (&listView == __pSearchListView)
+ {
+ __pSearchListView->SetFocus();
+
+ int count = __pPresentationModel->GetSearchedContactCount();
+
+ for (int i = 0; i < count; i++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(i, groupIndex, itemIndex);
+
+ __pListView->SetItemChecked(groupIndex, itemIndex, __pSearchListView->IsItemChecked(0, i));
+ }
+ }
+
+ UpdateBottomLabel();
+}
+
+void
+ContactSelectorForm::OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+void
+ContactSelectorForm::OnContactsChanged(void)
+{
+ __pListView->UpdateList();
+}
+
+void
+ContactSelectorForm::OnCategoriesChanged(void)
+{
+}
+
+result
+ContactSelectorForm::CreateFooterButton()
+{
+ result r = E_SUCCESS;
+
+ Footer* pFooter = GetFooter();
+ pFooter->RemoveAllItems();
+ pFooter->AddActionEventListener(*this);
+
+ FooterItem footerItemLeft;
+ FooterItem footerItemRight;
+
+ footerItemLeft.Construct(IDA_FOOTER_DONE);
+ footerItemRight.Construct(IDA_FOOTER_CANCEL);
+
+ footerItemLeft.SetText(ResourceManager::GetString(L"IDS_COM_SK_DONE"));
+ footerItemRight.SetText(ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
+
+ pFooter->AddItem(footerItemLeft);
+ pFooter->AddItem(footerItemRight);
+
+ return r;
+}
+
+void
+ContactSelectorForm::UpdateBottomLabel(void)
+{
+ int selectedCount = 0;
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ for (int itemIndex = 0; itemIndex < __pListView->GetItemCountAt(groupIndex); itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ selectedCount++;
+ }
+ }
+ }
+
+ String string = ResourceManager::GetString(L"IDS_COM_POP_SELECTED");
+ string.Append(L" (");
+ string.Append(selectedCount);
+ string.Append(L")");
+ __pBottomLabel->SetText(string);
+ __pBottomLabel->Invalidate(true);
+
+ Footer* pFooter = GetFooter();
+
+ if (selectedCount > 0)
+ {
+ pFooter->SetItemEnabled(0, true);
+ }
+ else
+ {
+ pFooter->SetItemEnabled(0, false);
+ }
+
+ pFooter->Invalidate(true);
+}
+
+void
+ContactSelectorForm::OnFastScrollIndexSelected(Tizen::Ui::Control& source, Tizen::Base::String& index)
+{
+ __pListView->ScrollToItem(__pPresentationModel->GetKeyIndex(index), -1);
+ __pListView->Invalidate(false);
+}
+
+void
+ContactSelectorForm::OnKeypadWillOpen(Tizen::Ui::Control& source)
+{
+ SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, false);
+}
+
+void
+ContactSelectorForm::OnKeypadOpened(Tizen::Ui::Control& source)
+{
+}
+
+void
+ContactSelectorForm::OnKeypadClosed(Tizen::Ui::Control& source)
+{
+ SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, true);
+ UpdateBottomLabel();
+}
+
+void
+ContactSelectorForm::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction)
+{
+}
+
+void
+ContactSelectorForm::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo & touchInfo)
+{
+ GroupedListView* pList = static_cast<GroupedListView*>(&const_cast<Control&>(source));
+ if (pList != null)
+ {
+ pList->SetFocus();
+ }
+}
+
+void
+ContactSelectorForm::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactSelectorForm::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactSelectorForm::OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactSelectorForm::OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
--- /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 CtContactValueListItemProvider.cpp
+ * @brief This is the implementation file for the ContactValueListItemProvider class.
+ */
+
+#include "CtContactValueListItemProvider.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui::Controls;
+
+static const int H_ITEM = 112;
+
+ContactValueListItemProvider::ContactValueListItemProvider(Tizen::Base::Collection::IList* pContactValueList)
+: __pContactValueList(pContactValueList)
+{
+}
+
+ContactValueListItemProvider::~ContactValueListItemProvider(void)
+{
+ if (__pContactValueList != null)
+ {
+ __pContactValueList->RemoveAll(true);
+ delete __pContactValueList;
+ }
+}
+
+Tizen::Ui::Controls::ListItemBase*
+ContactValueListItemProvider::CreateItem(int index, int itemWidth)
+{
+ SimpleItem* pItem = new (std::nothrow) SimpleItem();
+ pItem->Construct(Dimension(itemWidth, H_ITEM), LIST_ANNEX_STYLE_NORMAL);
+ pItem->SetElement(*static_cast<String *>(__pContactValueList->GetAt(index)));
+
+ return pItem;
+}
+
+bool
+ContactValueListItemProvider::DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
+{
+ delete pItem;
+
+ return true;
+}
+
+int
+ContactValueListItemProvider::GetItemCount(void)
+{
+ return __pContactValueList->GetCount();
+}
--- /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 CtContactsApp.cpp
+ * @brief This is the implementation file for the ContactsApp class.
+ */
+
+#include "CtContactsApp.h"
+#include "CtContactListPresentationModel.h"
+#include "CtGroupContactListPresentationModel.h"
+#include "CtGroupListPresentationModel.h"
+#include "CtIContactsAppStateChangeEventListener.h"
+#include "CtMainFrame.h"
+#include "CtResourceManager.h"
+#include "CtTypes.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;
+
+static const wchar_t* SELECTION_MODE = L"selectionMode";
+static const wchar_t* SELECTION_MODE_SINGLE = L"single";
+static const wchar_t* SELECTION_MODE_MULTIPLE = L"multiple";
+static const wchar_t* RETURN_TYPE = L"returnType";
+static const wchar_t* PHONE = L"phone";
+static const wchar_t* EMAIL = L"email";
+static const wchar_t* URL = L"url";
+static const wchar_t* VIEW_TYPE = L"viewType";
+static const wchar_t* CONTACT_ID = L"contactId";
+static const wchar_t* PATH = L"path";
+
+ContactsApp::ContactsApp(void)
+ : __initialSceneId(IDSCN_CONTACT_LIST)
+ , __pArgs(null)
+ , __operationId(L"")
+ , __selectionMode(APP_CONTROL_SELECTION_MODE_NONE)
+ , __returnType(APP_CONTROL_RETURN_TYPE_NONE)
+ , __requestId(0)
+{
+ __listenerList.Construct();
+}
+
+ContactsApp::~ContactsApp(void)
+{
+}
+
+UiApp*
+ContactsApp::CreateInstance(void)
+{
+ static ContactsApp* pContactsAppInstance = null;
+ if (pContactsAppInstance == null)
+ {
+ pContactsAppInstance = new (std::nothrow) ContactsApp();
+ }
+
+ return pContactsAppInstance;
+}
+
+bool
+ContactsApp::OnAppInitializing(Tizen::App::AppRegistry& appRegistry)
+{
+ AppControlProviderManager* pProviderManager = AppControlProviderManager::GetInstance();
+ result r = pProviderManager->SetAppControlProviderEventListener(this);
+ TryReturn(r == E_SUCCESS, false, "Failed to set AppControlProviderEventListener");
+
+ r = SettingInfo::SetSettingEventListener(this);
+ TryReturn(r == E_SUCCESS, false, "Failed to set SettingEventListener");
+
+ return true;
+}
+
+bool
+ContactsApp::OnAppInitialized(void)
+{
+ MainFrame* pContactFrame = new (std::nothrow) MainFrame();
+ pContactFrame->Construct();
+ pContactFrame->SetName(ResourceManager::GetString(L"IDS_COM_BODY_CONTACTS"));
+ AddFrame(*pContactFrame);
+
+ return true;
+}
+
+bool
+ContactsApp::OnAppWillTerminate(void)
+{
+ return true;
+}
+
+bool
+ContactsApp::OnAppTerminating(Tizen::App::AppRegistry& appRegistry, bool forcedTermination)
+{
+ return true;
+}
+
+void
+ContactsApp::OnForeground(void)
+{
+ IEnumerator* pEnum = __listenerList.GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ IContactsAppStateChangeEventListener* pInterface = static_cast<IContactsAppStateChangeEventListener*>(pEnum->GetCurrent());
+ if (pInterface == null)
+ {
+ delete pEnum;
+
+ return;
+ }
+ pInterface->OnForeground();
+ }
+ delete pEnum;
+}
+
+void
+ContactsApp::OnBackground(void)
+{
+ IEnumerator* pEnum = __listenerList.GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ IContactsAppStateChangeEventListener* pInterface = static_cast<IContactsAppStateChangeEventListener*>(pEnum->GetCurrent());
+ if (pInterface == null)
+ {
+ delete pEnum;
+
+ return;
+ }
+ pInterface->OnBackground();
+ }
+ delete pEnum;
+}
+
+void
+ContactsApp::OnLowMemory(void)
+{
+}
+
+void
+ContactsApp::OnBatteryLevelChanged(Tizen::System::BatteryLevel batteryLevel)
+{
+}
+
+void
+ContactsApp::OnScreenOn(void)
+{
+}
+
+void
+ContactsApp::OnScreenOff(void)
+{
+}
+
+void
+ContactsApp::OnAppCheckpointing(Tizen::App::AppRegistry& appRegistry)
+{
+}
+
+void
+ContactsApp::OnSettingChanged(Tizen::Base::String& key)
+{
+ if (key.Equals(SETTING_KEY_LANGUAGE, false) == true || key.Equals(SETTING_KEY_COUNTRY, false) == true)
+ {
+ if (__operationId.Equals(OPERATION_ID_PICK, true))
+ {
+ result r = AppControlProviderManager::GetInstance()->SendAppControlResult(__requestId, APP_CTRL_RESULT_TERMINATED, null);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to return result.", GetErrorMessage(r));
+ }
+ Terminate();
+ }
+}
+
+void
+ContactsApp::OnAppControlRequestReceived(RequestId reqId, const Tizen::Base::String& operationId, const Tizen::Base::String* pUriData,
+ const Tizen::Base::String* pMimeType, const Tizen::Base::Collection::IMap* pExtraData)
+{
+ result r = E_SUCCESS;
+
+ ArrayList* pArgs = new (std::nothrow) ArrayList();
+ pArgs->Construct();
+
+ if (operationId.Equals(OPERATION_ID_MAIN, true))
+ {
+ __operationId = L"";
+ }
+ else if (operationId.Equals(OPERATION_ID_PICK, true))
+ {
+ if (pExtraData == null)
+ {
+ AppLogDebug("To launch AppControl by the PICK operation, the (key,value) pairs should be input.");
+ AppControlProviderManager::GetInstance()->SendAppControlResult(reqId, APP_CTRL_RESULT_FAILED, null);
+ Terminate();
+
+ return;
+ }
+
+ String* pSelectionMode = new (std::nothrow) String(SELECTION_MODE);
+ pSelectionMode->Append(DELIMITER);
+ pSelectionMode->Append(*static_cast<const String*>(pExtraData->GetValue(String(SELECTION_MODE))));
+ pArgs->Add(pSelectionMode);
+
+ String* pReturnType = new (std::nothrow) String(RETURN_TYPE);
+ pReturnType->Append(DELIMITER);
+ pReturnType->Append(*static_cast<const String*>(pExtraData->GetValue(String(RETURN_TYPE))));
+ pArgs->Add(pReturnType);
+
+ r = InitializeAppControl(pArgs);
+ if (IsFailed(r))
+ {
+ AppLogDebug("[%s] initializing app control failed", GetErrorMessage(r));
+ AppControlProviderManager::GetInstance()->SendAppControlResult(reqId, APP_CTRL_RESULT_FAILED, null);
+ Terminate();
+
+ return;
+ }
+
+ if (__selectionMode == APP_CONTROL_SELECTION_MODE_SINGLE)
+ {
+ __initialSceneId = IDSCN_CONTACT_LIST;
+ }
+ else if (__selectionMode == APP_CONTROL_SELECTION_MODE_MULTI)
+ {
+ __initialSceneId = IDSCN_CONTACT_LIST_EDITOR;
+ }
+ __operationId = OPERATION_ID_PICK;
+ }
+ else if (operationId.Equals(OPERATION_ID_ADD, true))
+ {
+ if (pExtraData != null)
+ {
+ String* key = null;
+ const String* value = null;
+
+ value = static_cast<const String*>(pExtraData->GetValue(String(PHONE)));
+ if (value)
+ {
+ key = new (std::nothrow) String(PHONE);
+ key->Append(DELIMITER);
+ key->Append(*value);
+ pArgs->Add(key);
+ }
+
+ value = static_cast<const String*>(pExtraData->GetValue(String(EMAIL)));
+ if (value)
+ {
+ key = new (std::nothrow) String(EMAIL);
+ key->Append(DELIMITER);
+ key->Append(*value);
+ pArgs->Add(key);
+ }
+
+ value = static_cast<const String*>(pExtraData->GetValue(String(URL)));
+ if (value)
+ {
+ key = new (std::nothrow) String(URL);
+ key->Append(DELIMITER);
+ key->Append(*value);
+ pArgs->Add(key);
+ }
+ }
+ __initialSceneId = IDSCN_CONTACT_EDITOR;
+ __operationId = OPERATION_ID_ADD;
+ }
+ else if (operationId.Equals(OPERATION_ID_EDIT, true))
+ {
+ if (pExtraData == null)
+ {
+ AppLogDebug("To launch AppControl by the EDIT operation, the (key,value) pairs should be input.");
+ Terminate();
+
+ return;
+ }
+
+ const String* pInputContactId = static_cast<const String*>(pExtraData->GetValue(String(CONTACT_ID)));
+ String* pContactId = new (std::nothrow) String(CONTACT_ID);
+ pContactId->Append(DELIMITER);
+ pContactId->Append(*pInputContactId);
+ pArgs->Add(pContactId);
+
+ String* key = null;
+ const String* value = null;
+
+ value = static_cast<const String*>(pExtraData->GetValue(String(PHONE)));
+ if (value)
+ {
+ key = new (std::nothrow) String(PHONE);
+ key->Append(DELIMITER);
+ key->Append(*value);
+ pArgs->Add(key);
+ }
+
+ value = static_cast<const String*>(pExtraData->GetValue(String(EMAIL)));
+ if (value)
+ {
+ key = new (std::nothrow) String(EMAIL);
+ key->Append(DELIMITER);
+ key->Append(*value);
+ pArgs->Add(key);
+ }
+
+ value = static_cast<const String*>(pExtraData->GetValue(String(URL)));
+ if (value)
+ {
+ key = new (std::nothrow) String(URL);
+ key->Append(DELIMITER);
+ key->Append(*value);
+ pArgs->Add(key);
+ }
+
+ if (pInputContactId->IsEmpty())
+ {
+ __initialSceneId = IDSCN_CONTACT_LIST;
+ }
+ else
+ {
+ __initialSceneId = IDSCN_CONTACT_EDITOR;
+ }
+ __operationId = OPERATION_ID_EDIT;
+ }
+ else if (operationId.Equals(OPERATION_ID_VIEW, true))
+ {
+ if (pExtraData == null)
+ {
+ AppLogDebug("To launch AppControl by the VIEW operation, the (key,value) pairs should be input.");
+ Terminate();
+
+ return;
+ }
+
+ String* pViewType = new (std::nothrow) String(VIEW_TYPE);
+ pViewType->Append(DELIMITER);
+ pViewType->Append(*static_cast<const String*>(pExtraData->GetValue(String(VIEW_TYPE))));
+ pArgs->Add(pViewType);
+
+ String* key = null;
+ const String* value = null;
+
+ value = static_cast<const String*>(pExtraData->GetValue(String(PATH)));
+ if (value)
+ {
+ key = new (std::nothrow) String(PATH);
+ key->Append(DELIMITER);
+ key->Append(*value);
+ pArgs->Add(key);
+ }
+
+ value = static_cast<const String*>(pExtraData->GetValue(String(CONTACT_ID)));
+ if (value)
+ {
+ key = new (std::nothrow) String(CONTACT_ID);
+ key->Append(DELIMITER);
+ key->Append(*value);
+ pArgs->Add(key);
+ }
+
+ __initialSceneId = IDSCN_CONTACT_DETAILS;
+ __operationId = OPERATION_ID_VIEW;
+ }
+ else if (operationId.Equals(OPERATION_ID_CONFIGURE, true))
+ {
+ __initialSceneId = IDSCN_SETTINGS;
+ __operationId = OPERATION_ID_CONFIGURE;
+ }
+ else
+ {
+ AppLogDebug("Invalid OperationId");
+ __operationId = L"";
+ }
+
+ __pArgs = pArgs;
+ __requestId = reqId;
+}
+
+result
+ContactsApp::InitializeAppControl(Tizen::Base::Collection::IList* pArgs)
+{
+ TryReturn(pArgs != null, E_INVALID_ARG, "[E_INVALID_ARG] app control argument is invalid");
+
+ String key;
+ String value;
+ String* pArgString = static_cast<String*>(pArgs->GetAt(0));
+ TryReturn(pArgString, E_FAILURE, "[E_FAILURE] Unable to cast argument string");
+ result r = ParseAppControlArgument(*pArgString, key, value);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to parse the argument", GetErrorMessage(r));
+
+ if (key.Equals(SELECTION_MODE, false))
+ {
+ if (value.Equals(SELECTION_MODE_SINGLE, false))
+ {
+ __selectionMode = APP_CONTROL_SELECTION_MODE_SINGLE;
+ }
+ else if (value.Equals(SELECTION_MODE_MULTIPLE, false))
+ {
+ __selectionMode = APP_CONTROL_SELECTION_MODE_MULTI;
+ }
+ else
+ {
+ AppLogDebug("selectionMode of AppControl[PICK] should be either single or multiple. [%ls] has been input", value.GetPointer());
+ return E_FAILURE;
+ }
+ }
+
+ pArgString = static_cast<String*>(pArgs->GetAt(1));
+ TryReturn(pArgString, E_FAILURE, "[E_FAILURE] Unable to cast argument string");
+ r = ParseAppControlArgument(*pArgString, key, value);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to parse the argument", GetErrorMessage(r));
+
+ if (key.Equals(RETURN_TYPE, false))
+ {
+ if (value.Equals(RETURN_TYPE_PHONE, false))
+ {
+ __returnType = APP_CONTROL_RETURN_TYPE_PHONE;
+ }
+ else if (value.Equals(RETURN_TYPE_EMAIL, false))
+ {
+ __returnType = APP_CONTROL_RETURN_TYPE_EMAIL;
+ }
+ else if (value.Equals(RETURN_TYPE_CONTACT_ID, false))
+ {
+ __returnType = APP_CONTROL_RETURN_TYPE_CONTACT_ID;
+ }
+ else if (value.Equals(RETURN_TYPE_VCARD, false))
+ {
+ __returnType = APP_CONTROL_RETURN_TYPE_VCARD;
+ }
+ else
+ {
+ AppLogDebug("returnType of AppControl[PICK] should be one of {phone, email, contactId, and vcard}. [%ls] has been input", value.GetPointer());
+ return E_FAILURE;
+ }
+ }
+
+ if (__returnType == APP_CONTROL_RETURN_TYPE_VCARD && __selectionMode == APP_CONTROL_SELECTION_MODE_MULTI)
+ {
+ return E_FAILURE;
+ }
+
+ return E_SUCCESS;
+}
+
+result
+ContactsApp::ParseAppControlArgument(const Tizen::Base::String& argument, Tizen::Base::String& type, Tizen::Base::String& content)
+{
+ result r = E_SUCCESS;
+
+ if (argument.IsEmpty() || argument.Contains(DELIMITER) == false)
+ {
+ return E_FAILURE;
+ }
+
+ StringTokenizer stringToken(argument, DELIMITER);
+
+ r = stringToken.GetNextToken(type);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to get type", GetErrorMessage(r));
+
+ r = stringToken.GetNextToken(content);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to get content", GetErrorMessage(r));
+
+ return r;
+}
+
+Tizen::Base::String
+ContactsApp::GetOperationId(void)
+{
+ return __operationId;
+}
+
+AppControlSelectionMode
+ContactsApp::GetSelectionMode(void)
+{
+ return __selectionMode;
+}
+
+AppControlReturnType
+ContactsApp::GetReturnType(void)
+{
+ return __returnType;
+}
+
+RequestId
+ContactsApp::GetRequestId(void)
+{
+ return __requestId;
+}
+
+Tizen::Ui::Scenes::SceneId
+ContactsApp::GetInitialSceneId(void)
+{
+ return __initialSceneId;
+}
+
+Tizen::Base::Collection::IList*
+ContactsApp::GetArguments(void)
+{
+ return __pArgs;
+}
+
+void
+ContactsApp::AddContactsAppChangeEventListener(const IContactsAppStateChangeEventListener& listener)
+{
+ __listenerList.Add(listener);
+}
+
+void
+ContactsApp::RemoveContactsAppChangeEventListener(const IContactsAppStateChangeEventListener& 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 CtFavoriteListEditorPanel.cpp
+ * @brief This is the implementation file for the FavoriteListEditorPanel class.
+ */
+
+#include "CtContactsApp.h"
+#include "CtFavoriteListEditorPanel.h"
+#include "CtFavoriteListPresentationModel.h"
+#include "CtMainForm.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+static const int IDA_FOOTER_REMOVE_FAVORITE = 0;
+static const int IDA_FOOTER_CANCEL = 1;
+static const int IDA_FOOTER_DONE = 2;
+static const int IDA_HEADER_CONTACTS = 10;
+static const int IDA_HEADER_GROUPS = 11;
+static const int IDA_HEADER_FAVORITES = 12;
+static const int IDA_POPUP_CONTACT_VALUE_CLOSE = 20;
+
+static const int W_INITAIL_PANEL = 10;
+static const int H_INITIAL_PANEL = 10;
+static const int W_ICONLISTVIEW_LEFT_MARGIN = 14;
+static const int W_ICONLISTVIEW_RIGHT_MARGIN = 10;
+static const int W_ICONLISTVIEW_ITEM = 216;
+static const int H_ICONLISTVIEW_ITEM = 216;
+static const int H_TEXT_BACKGROUND = 64;
+static const int H_TEXT_SPACE = 96;
+static const int W_ITEM_SPACE = 24;
+static const int H_ITEM_SPACE = 24;
+static const int W_CONTACT_VALUE_POPUP = 720;
+static const int H_CONTACT_VALUE_POPUP = 700;
+static const int H_CONTACT_VALUE_POPUP_LIST_VIEW = 506;
+static const int Y_CLOSE_BUTTON = 526;
+static const int W_CLOSE_BUTTON = 394;
+static const int H_CLOSE_BUTTON = 74;
+static const int X_EMPTY_IMAGE = 220;
+static const int Y_EMPTY_IMAGE = 300;
+static const int W_EMPTY_IMAGE = 280;
+static const int H_EMPTY_IMAGE = 280;
+static const int Y_EMPTY_COMMENT = 618;
+static const int H_EMPTY_COMMENT = 38;
+static const int H_BOTTOM_LABEL = 48;
+
+static const int FONT_SIZE_WITH_THUMBNAIL = 24;
+static const int FONT_SIZE_EMPTY_COMMENT = 32;
+static const int FONT_SIZE = 40;
+static const int FONT_SIZE_BOTTOM_LABEL = 32;
+
+static const wchar_t* IDB_NO_FAVORITES = L"00_Nocontents_picture.png";
+
+static const unsigned int COLOR_ITEM_BACKGROUND = Color32<201, 201, 201>::Value;
+static const unsigned int COLOR_ITEM_TEXT_BACKGROUND = Color32<0, 0, 0, 89>::Value;
+static const unsigned int COLOR_TEXT_WITH_THUMBNAIL = Color32<249, 249, 249>::Value;
+static const unsigned int COLOR_TEXT = Color32<255, 255, 255>::Value;
+static const unsigned int COLOR_LINE = Color32<225, 225, 225, 26>::Value;
+static const unsigned int COLOR_EMPTY_COMMENT = Color32<102, 102, 102>::Value;
+static const unsigned int COLOR_BOTTOM_LABEL_BG = Color32<215, 225, 232>::Value;
+static const unsigned int COLOR_BOTTOM_LABEL_FONT = Color32<76, 81, 88>::Value;
+
+FavoriteListEditorPanel::FavoriteListEditorPanel(void)
+: __pFavoriteListView(null)
+, __pMultipleContactValuePopup(null)
+, __pEmptyImageLabel(null)
+, __pEmptyCommentLabel(null)
+, __pBottomLabel(null)
+, __pTempContactValueHashMap(null)
+, __pPresentationModel(null)
+, __pContactValueListProvider(null)
+{
+}
+
+FavoriteListEditorPanel::~FavoriteListEditorPanel(void)
+{
+}
+
+void
+FavoriteListEditorPanel::Initialize(void)
+{
+ Construct(Rectangle(0, 0, W_INITAIL_PANEL, H_INITIAL_PANEL));
+}
+
+result
+FavoriteListEditorPanel::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Rectangle clientBounds = pForm->GetClientAreaBounds();
+ SetBounds(Rectangle(0, 0, clientBounds.width, clientBounds.height));
+
+ __pPresentationModel = FavoriteListPresentationModel::GetInstance();
+
+ __pFavoriteListView = new (std::nothrow) IconListView();
+ __pFavoriteListView->Construct(Rectangle(0, 0, clientBounds.width, clientBounds.height - H_BOTTOM_LABEL), Dimension(W_ICONLISTVIEW_ITEM, H_ICONLISTVIEW_ITEM), ICON_LIST_VIEW_STYLE_MARK);
+ __pFavoriteListView->SetItemProvider(*this);
+ __pFavoriteListView->AddIconListViewItemEventListener(*this);
+ __pFavoriteListView->SetItemLayoutHorizontalAlignment(ALIGNMENT_LEFT);
+ __pFavoriteListView->SetItemLayoutVerticalAlignment(ALIGNMENT_TOP);
+ __pFavoriteListView->SetItemSpacing(W_ITEM_SPACE, H_ITEM_SPACE);
+ __pFavoriteListView->SetMargin(MARGIN_TYPE_LEFT, W_ICONLISTVIEW_LEFT_MARGIN);
+ __pFavoriteListView->SetMargin(MARGIN_TYPE_RIGHT, W_ICONLISTVIEW_RIGHT_MARGIN);
+ __pFavoriteListView->SetCheckBoxPosition(ICON_LIST_VIEW_CHECK_BOX_POSITION_TOP_LEFT);
+ __pFavoriteListView->SetTouchAnimationEnabled(false);
+
+ AddControl(*__pFavoriteListView);
+
+ __pEmptyImageLabel = new (std::nothrow) Label();
+ __pEmptyImageLabel->Construct(Rectangle(X_EMPTY_IMAGE, Y_EMPTY_IMAGE, W_EMPTY_IMAGE, H_EMPTY_IMAGE), L"");
+ Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_NO_FAVORITES);
+ if (pBitmap != null)
+ {
+ __pEmptyImageLabel->SetBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+ __pEmptyImageLabel->SetShowState(false);
+
+ AddControl(*__pEmptyImageLabel);
+
+ __pEmptyCommentLabel = new (std::nothrow) Label();
+ __pEmptyCommentLabel->Construct(Rectangle(0, Y_EMPTY_COMMENT, clientBounds.width, H_EMPTY_COMMENT),
+ ResourceManager::GetString(L"IDS_PB_BODY_NO_FAVOURITES"));
+ __pEmptyCommentLabel->SetTextConfig(FONT_SIZE_EMPTY_COMMENT, LABEL_TEXT_STYLE_NORMAL);
+ __pEmptyCommentLabel->SetTextColor(Color(COLOR_EMPTY_COMMENT));
+ __pEmptyCommentLabel->SetShowState(false);
+
+ AddControl(*__pEmptyCommentLabel);
+
+ __pBottomLabel = new (std::nothrow) Label();
+ __pBottomLabel->Construct(Rectangle(0, clientBounds.height - H_BOTTOM_LABEL, clientBounds.width, H_BOTTOM_LABEL),
+ ResourceManager::GetString(L"IDS_COM_POP_SELECTED") + INITIAL_SELECTED_COUNT);
+ __pBottomLabel->SetBackgroundColor(Color(COLOR_BOTTOM_LABEL_BG));
+ __pBottomLabel->SetTextColor(Color(COLOR_BOTTOM_LABEL_FONT));
+ __pBottomLabel->SetTextConfig(FONT_SIZE_BOTTOM_LABEL, LABEL_TEXT_STYLE_BOLD);
+ __pBottomLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ AddControl(*__pBottomLabel);
+
+ __pTempContactValueHashMap = new (std::nothrow) HashMap();
+ __pTempContactValueHashMap->Construct();
+
+ return r;
+}
+
+result
+FavoriteListEditorPanel::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pTempContactValueHashMap != null)
+ {
+ __pTempContactValueHashMap->RemoveAll(true);
+ delete __pTempContactValueHashMap;
+ }
+
+ delete __pMultipleContactValuePopup;
+
+ return r;
+}
+
+void
+FavoriteListEditorPanel::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ switch (actionId)
+ {
+ case IDA_HEADER_CONTACTS:
+ {
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_SINGLE)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST));
+ }
+ else if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_MULTI)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST_EDITOR));
+ }
+ }
+ else
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST));
+ }
+ }
+ break;
+ case IDA_HEADER_GROUPS:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_LIST));
+ }
+ break;
+ case IDA_HEADER_FAVORITES:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST));
+ }
+ break;
+ case IDA_FOOTER_REMOVE_FAVORITE:
+ {
+ RemoveFavorites();
+ pSceneManager->GoBackward(BackwardSceneTransition());
+ }
+ break;
+ case IDA_FOOTER_CANCEL:
+ {
+ pSceneManager->GoBackward(BackwardSceneTransition());
+ }
+ break;
+ case IDA_FOOTER_DONE:
+ {
+ ReturnMultipleValues();
+ }
+ break;
+ case IDA_POPUP_CONTACT_VALUE_CLOSE:
+ {
+ HideContactValuePopup();
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+FavoriteListEditorPanel::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Header* pHeader = pForm->GetHeader();
+ pHeader->AddActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->RemoveAllItems();
+ pFooter->RemoveAllButtons();
+ pFooter->AddActionEventListener(*this);
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ pFooter->SetBackButton();
+
+ __pPresentationModel->InitializeFavoriteList(pContactsApp->GetReturnType());
+
+ if (__pPresentationModel->GetFavoriteCount() > 0)
+ {
+ FooterItem footerItemDone;
+ footerItemDone.Construct(IDA_FOOTER_DONE);
+ footerItemDone.SetText(ResourceManager::GetString(L"IDS_COM_SK_DONE"));
+ pFooter->AddItem(footerItemDone);
+
+ bool isChecked = false;
+ int favoriteCount = __pPresentationModel->GetFavoriteCount();
+ for (int index = 0; index < favoriteCount; index++)
+ {
+ if (__pFavoriteListView->IsItemChecked(index))
+ {
+ isChecked = true;
+ break;
+ }
+ }
+
+ if (isChecked == false)
+ {
+ pFooter->SetItemEnabled(0, false);
+ }
+ }
+ else
+ {
+ __pFavoriteListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ __pBottomLabel->SetShowState(false);
+ }
+ }
+ else
+ {
+ for (int index = 0; index < __pPresentationModel->GetFavoriteCount(); index++)
+ {
+ __pFavoriteListView->SetItemChecked(index, false);
+ }
+
+ FooterItem footerItemRemove;
+ footerItemRemove.Construct(IDA_FOOTER_REMOVE_FAVORITE);
+ footerItemRemove.SetText(ResourceManager::GetString(L"IDS_COM_BODY_REMOVE"));
+ pFooter->AddItem(footerItemRemove);
+ pFooter->SetItemEnabled(0, false);
+
+ FooterItem footerItemCancel;
+ footerItemCancel.Construct(IDA_FOOTER_CANCEL);
+ footerItemCancel.SetText(ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
+ pFooter->AddItem(footerItemCancel);
+ }
+
+ UpdateBottomLabel();
+
+ delete pArgs;
+}
+
+void
+FavoriteListEditorPanel::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Header* pHeader = pForm->GetHeader();
+ pHeader->RemoveActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->RemoveActionEventListener(*this);
+}
+
+void
+FavoriteListEditorPanel::OnIconListViewItemReordered(Tizen::Ui::Controls::IconListView &iconListView, int indexFrom, int indexTo)
+{
+}
+
+void
+FavoriteListEditorPanel::OnIconListViewItemStateChanged(Tizen::Ui::Controls::IconListView &iconListView, int index, Tizen::Ui::Controls::IconListViewItemStatus status)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE ||
+ pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ IList* pList = __pPresentationModel->GetMultiValuesN(pContactsApp->GetReturnType(), index);
+ if (pList == null)
+ {
+ HashMap* pReturnValue = new (std::nothrow) HashMap();
+ pReturnValue->Construct();
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, pReturnValue);
+
+ return;
+ }
+
+ if (iconListView.IsItemChecked(index) == true)
+ {
+ if (pList->GetCount() > 1)
+ {
+ iconListView.SetItemChecked(index, false);
+ __pContactValueListProvider = new (std::nothrow) ContactValueListItemProvider(pList);
+ ShowContactValuePopup(index);
+ }
+ else if (pList->GetCount() == 1)
+ {
+ String* pReturnValue = static_cast<String*>(pList->GetAt(0));
+ int blankIndex = 0;
+ pReturnValue->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pReturnValue->Remove(0, blankIndex + 1);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(index)), *(new (std::nothrow) String(*pReturnValue)));
+ delete pList;
+ }
+
+ }
+ else
+ {
+ __pTempContactValueHashMap->Remove(Integer(index), true);
+ }
+ }
+ }
+
+ UpdateBottomLabel();
+}
+
+void
+FavoriteListEditorPanel::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+}
+
+void
+FavoriteListEditorPanel::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ int selectedIndex = -1;
+ Integer::Parse(listView.GetName(), selectedIndex);
+
+ IList* pList = __pPresentationModel->GetMultiValuesN(pContactsApp->GetReturnType(), selectedIndex);
+ if (pList == null)
+ {
+ HashMap* pReturnValue = new (std::nothrow) HashMap();
+ pReturnValue->Construct();
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, pReturnValue);
+
+ return;
+ }
+
+ String* pReturnValueInfo = static_cast<String*>(pList->GetAt(index));
+ int blankIndex = 0;
+ pReturnValueInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pReturnValueInfo->Remove(0, blankIndex + 1);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(selectedIndex)), *(new (std::nothrow) String(*pReturnValueInfo)));
+
+ delete pList;
+
+ __pFavoriteListView->SetItemChecked(selectedIndex, true);
+ HideContactValuePopup();
+ UpdateBottomLabel();
+}
+
+void
+FavoriteListEditorPanel::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+Tizen::Ui::Controls::IconListViewItem*
+FavoriteListEditorPanel::CreateItem(int index)
+{
+ Bitmap* pThumbnail = null;
+ String name;
+ Font textFont;
+ Color textColor;
+ int textHeight;
+ int textY;
+
+ if (__pPresentationModel->GetFavoriteItemInfo(index, name, pThumbnail) != E_SUCCESS)
+ {
+ return null;
+ }
+
+ Canvas* pCanvas = new (std::nothrow) Canvas();
+ pCanvas->Construct(Rectangle(0, 0, W_ICONLISTVIEW_ITEM, H_ICONLISTVIEW_ITEM));
+ pCanvas->Clear();
+
+ if (pThumbnail != null)
+ {
+ textFont.Construct(FONT_STYLE_BOLD , FONT_SIZE_WITH_THUMBNAIL);
+ textY = H_ICONLISTVIEW_ITEM - H_TEXT_BACKGROUND;
+ textHeight = H_TEXT_BACKGROUND;
+ textColor = Color(COLOR_TEXT_WITH_THUMBNAIL);
+
+ pCanvas->DrawBitmap(pCanvas->GetBounds(), *pThumbnail, Rectangle(0, 0, pThumbnail->GetWidth(), pThumbnail->GetHeight()));
+ pCanvas->SetForegroundColor(Color(COLOR_LINE));
+ pCanvas->DrawLine(Point(0, H_ICONLISTVIEW_ITEM - H_TEXT_BACKGROUND), Point(W_ICONLISTVIEW_ITEM, H_ICONLISTVIEW_ITEM - H_TEXT_BACKGROUND));
+ pCanvas->FillRectangle(Color(COLOR_ITEM_TEXT_BACKGROUND), Rectangle(0, H_ICONLISTVIEW_ITEM - H_TEXT_BACKGROUND, W_ICONLISTVIEW_ITEM, H_TEXT_BACKGROUND));
+ }
+ else
+ {
+ textFont.Construct(FONT_STYLE_BOLD , FONT_SIZE);
+ textY = (H_ICONLISTVIEW_ITEM / 2) - (H_TEXT_SPACE / 2);
+ textHeight = H_TEXT_SPACE;
+ textColor = Color(COLOR_TEXT);
+
+ pCanvas->FillRectangle(Color(COLOR_ITEM_BACKGROUND), pCanvas->GetBounds());
+ }
+
+ EnrichedText* pEnrichedTextName = new (std::nothrow) EnrichedText();
+ pEnrichedTextName->Construct(Dimension(W_ICONLISTVIEW_ITEM, textHeight));
+ pEnrichedTextName->SetVerticalAlignment(TEXT_ALIGNMENT_MIDDLE);
+ pEnrichedTextName->SetHorizontalAlignment(TEXT_ALIGNMENT_CENTER);
+ pEnrichedTextName->SetTextWrapStyle(TEXT_WRAP_WORD_WRAP);
+ pEnrichedTextName->SetTextAbbreviationEnabled(true);
+
+ TextElement* pTextElementName = new (std::nothrow) TextElement();
+ pTextElementName->Construct(name);
+ pTextElementName->SetFont(textFont);
+ pTextElementName->SetTextColor(textColor);
+
+ pEnrichedTextName->Add(*pTextElementName);
+
+ pCanvas->DrawText(Point(0, textY), *pEnrichedTextName);
+
+ Bitmap* pBitmapItem = new (std::nothrow) Bitmap();
+ pBitmapItem->Construct(*pCanvas, Rectangle(0, 0, W_ICONLISTVIEW_ITEM, H_ICONLISTVIEW_ITEM));
+
+ IconListViewItem* pFavoriteItem = new (std::nothrow) IconListViewItem();
+ pFavoriteItem->Construct(*pBitmapItem);
+
+ delete pThumbnail;
+ delete pCanvas;
+ delete pBitmapItem;
+ delete pEnrichedTextName;
+ delete pTextElementName;
+
+ return pFavoriteItem;
+}
+
+bool
+FavoriteListEditorPanel::DeleteItem(int index, Tizen::Ui::Controls::IconListViewItem *pItem)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+int
+FavoriteListEditorPanel::GetItemCount(void)
+{
+ return __pPresentationModel->GetFavoriteCount();
+}
+
+void
+FavoriteListEditorPanel::RemoveFavorites(void)
+{
+ for (int i = 0; i < __pPresentationModel->GetFavoriteCount(); i++)
+ {
+ if (__pFavoriteListView->IsItemChecked(i))
+ {
+ __pPresentationModel->SetAsFavorite(__pPresentationModel->GetContactId(i), false);
+ }
+ }
+}
+
+void
+FavoriteListEditorPanel::ReturnValues(RequestId requestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue)
+{
+ AppControlProviderManager* pAppManager = AppControlProviderManager::GetInstance();
+ pAppManager->SendAppControlResult(requestId, appCtrlResult, pReturnValue);
+
+ UiApp* pApp = UiApp::GetInstance();
+ pApp->Terminate();
+}
+
+void
+FavoriteListEditorPanel::ReturnMultipleValues(void)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ String* pKeyType = new (std::nothrow) String(RETURN_KEY_TYPE);
+ String* pKeyValue = new (std::nothrow) String(RETURN_KEY_VALUE);
+ String* pMultiValue = new (std::nothrow) String();
+
+ HashMap* pReturnValue = new (std::nothrow) HashMap();
+ pReturnValue->Construct();
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_CONTACT_ID)
+ {
+ pReturnValue->Add(pKeyType, new (std::nothrow) String(RETURN_TYPE_CONTACT_ID));
+
+ for (int index = 0; index < __pPresentationModel->GetFavoriteCount(); index++)
+ {
+ if (__pFavoriteListView->IsItemChecked(index))
+ {
+ int contactId = __pPresentationModel->GetContactId(index);
+ pMultiValue->Append(Integer::ToString(contactId) + DELIMITER_SEMICOLON);
+ }
+ }
+
+ pMultiValue->Remove(pMultiValue->GetLength() - 1, 1);
+ pReturnValue->Add(pKeyValue, pMultiValue);
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+
+ return;
+ }
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ pReturnValue->Add(pKeyType, new (std::nothrow) String(RETURN_TYPE_PHONE));
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ pReturnValue->Add(pKeyType, new (std::nothrow) String(RETURN_TYPE_EMAIL));
+ }
+ else
+ {
+ delete pKeyType;
+ delete pKeyValue;
+ delete pMultiValue;
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, pReturnValue);
+
+ return;
+ }
+
+ IMapEnumerator* pMapEnum = __pTempContactValueHashMap->GetMapEnumeratorN();
+ while (pMapEnum->MoveNext() == E_SUCCESS)
+ {
+ String* pValue = static_cast<String*> (pMapEnum->GetValue());
+
+ pMultiValue->Append(*pValue + DELIMITER_SEMICOLON);
+ }
+ delete pMapEnum;
+
+ pMultiValue->Remove(pMultiValue->GetLength() - 1, 1);
+ pReturnValue->Add(pKeyValue, pMultiValue);
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+ }
+}
+
+void
+FavoriteListEditorPanel::ShowContactValuePopup(int index)
+{
+ String name;
+ Bitmap* pEmpty = null;
+
+ delete __pMultipleContactValuePopup;
+ __pMultipleContactValuePopup = new (std::nothrow) Popup();
+ __pMultipleContactValuePopup->Construct(true, Dimension(W_CONTACT_VALUE_POPUP, H_CONTACT_VALUE_POPUP));
+ __pPresentationModel->GetFavoriteItemInfo(index, name, pEmpty);
+ __pMultipleContactValuePopup->SetTitleText(name);
+
+ Rectangle popupClientBounds = __pMultipleContactValuePopup->GetClientAreaBounds();
+
+ ListView* pListView = new (std::nothrow) ListView();
+ pListView->Construct(Rectangle(0, 0, popupClientBounds.width, H_CONTACT_VALUE_POPUP_LIST_VIEW));
+ pListView->SetItemProvider(*__pContactValueListProvider);
+ pListView->AddListViewItemEventListener(*this);
+ pListView->SetName(String(Integer::ToString(index)));
+
+ __pMultipleContactValuePopup->AddControl(*pListView);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle((popupClientBounds.width - W_CLOSE_BUTTON) / 2, Y_CLOSE_BUTTON, W_CLOSE_BUTTON, H_CLOSE_BUTTON), ResourceManager::GetString(L"IDS_COM_POP_CLOSE"));
+ pCancelButton->SetActionId(IDA_POPUP_CONTACT_VALUE_CLOSE);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pMultipleContactValuePopup->AddControl(*pCancelButton);
+ __pMultipleContactValuePopup->SetShowState(true);
+ __pMultipleContactValuePopup->Show();
+}
+
+void
+FavoriteListEditorPanel::HideContactValuePopup(void)
+{
+ __pMultipleContactValuePopup->SetShowState(false);
+
+ delete __pContactValueListProvider;
+ __pContactValueListProvider = null;
+
+ Invalidate(true);
+}
+
+void
+FavoriteListEditorPanel::UpdateBottomLabel(void)
+{
+ int selectedCount = 0;
+ int favoriteCount = __pPresentationModel->GetFavoriteCount();
+ for (int index = 0; index < favoriteCount; index++)
+ {
+ if (__pFavoriteListView->IsItemChecked(index))
+ {
+ selectedCount++;
+ }
+ }
+
+ String string = ResourceManager::GetString(L"IDS_COM_POP_SELECTED");
+ string.Append(L" (");
+ string.Append(selectedCount);
+ string.Append(L")");
+ __pBottomLabel->SetText(string);
+ __pBottomLabel->Invalidate(true);
+
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Footer* pFooter = pForm->GetFooter();
+
+ if (selectedCount > 0)
+ {
+ pFooter->SetItemEnabled(0, true);
+ }
+ else
+ {
+ pFooter->SetItemEnabled(0, false);
+ }
+
+ pFooter->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 CtFavoriteListPanel.cpp
+ * @brief This is the implementation file for the FavoriteListPanel class.
+ */
+
+#include <FApp.h>
+#include "CtContactsApp.h"
+#include "CtContactValueListItemProvider.h"
+#include "CtFavoriteListPanel.h"
+#include "CtFavoriteListPresentationModel.h"
+#include "CtMainForm.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+static const int IDA_FOOTER_MORE = 0;
+static const int IDA_FOOTER_ADD_FAVORITE = 1;
+static const int IDA_MORE_EDIT_FAVORITE = 2;
+static const int IDA_HEADER_CONTACTS = 10;
+static const int IDA_HEADER_GROUPS = 11;
+static const int IDA_HEADER_FAVORITES = 12;
+static const int IDA_POPUP_CONTACT_VALUE_CLOSE = 20;
+static const int IDA_FAVORITE_QUICK_MENU = 21;
+static const int IDA_CONTEXTMENU_CALL = 30;
+static const int IDA_CONTEXTMENU_MESSAGE = 31;
+static const int IDA_CONTEXTMENU_VIDEO_CALL = 32;
+static const int IDA_CONTEXTMENU_REMOVE = 33;
+
+static const wchar_t* IDB_NO_FAVORITES = L"00_Nocontents_picture.png";
+static const wchar_t* IDB_MORE_NORMAL = L"00_icon_more.png";
+static const wchar_t* IDB_MORE_PRESSED = L"00_icon_more_press.png";
+static const wchar_t* IDB_QUICK_MENU = L"00_button_expand_closed_press.png";
+
+static const int W_INITAIL_PANEL = 10;
+static const int H_INITIAL_PANEL = 10;
+static const int W_ICONLISTVIEW_ITEM = 240;
+static const int H_ICONLISTVIEW_ITEM = 240;
+static const int H_TEXT_BACKGROUND = 64;
+static const int H_TEXT_SPACE = 96;
+static const int X_MORE = 55;
+static const int W_CONTACT_VALUE_POPUP = 720;
+static const int H_CONTACT_VALUE_POPUP = 700;
+static const int H_CONTACT_VALUE_POPUP_LIST_VIEW = 506;
+static const int Y_CLOSE_BUTTON = 526;
+static const int W_CLOSE_BUTTON = 394;
+static const int H_CLOSE_BUTTON = 74;
+static const int W_QUICK_MENU_BUTTON = 74;
+static const int X_EMPTY_IMAGE = 220;
+static const int Y_EMPTY_IMAGE = 300;
+static const int W_EMPTY_IMAGE = 280;
+static const int H_EMPTY_IMAGE = 280;
+static const int Y_EMPTY_COMMENT = 618;
+static const int H_EMPTY_COMMENT = 38;
+
+static const int FONT_SIZE_WITH_THUMBNAIL = 24;
+static const int FONT_SIZE_EMPTY_COMMENT = 32;
+static const int FONT_SIZE = 40;
+
+static const unsigned int COLOR_ITEM_BACKGROUND = Color32<201, 201, 201>::Value;
+static const unsigned int COLOR_ITEM_TEXT_BACKGROUND = Color32<0, 0, 0, 89>::Value;
+static const unsigned int COLOR_TEXT_WITH_THUMBNAIL = Color32<249, 249, 249>::Value;
+static const unsigned int COLOR_TEXT = Color32<255, 255, 255>::Value;
+static const unsigned int COLOR_LINE = Color32<225, 225, 225, 26>::Value;
+static const unsigned int COLOR_EMPTY_COMMENT = Color32<102, 102, 102>::Value;
+
+static const wchar_t* INPUT_KEY_TYPE = L"type";
+static const wchar_t* INPUT_TYPE_VIDEO = L"video";
+static const wchar_t* INPUT_TYPE_VOICE = L"voice";
+static const wchar_t* INPUT_TYPE_SMS = L"SMS";
+static const wchar_t* INPUT_KEY_TEL = L"tel";
+static const wchar_t* INPUT_KEY_TO = L"to";
+
+FavoriteListPanel::FavoriteListPanel(void)
+: __scrolledDistance(0)
+, __selectedItemIndex(0)
+, __pContextMenuAction(null)
+, __pContextMenuMore(null)
+, __pFavoriteListView(null)
+, __pMultipleContactValuePopup(null)
+, __pEmptyImageLabel(null)
+, __pEmptyCommentLabel(null)
+, __pPresentationModel(null)
+, __pContactValueListProvider(null)
+{
+}
+
+FavoriteListPanel::~FavoriteListPanel(void)
+{
+}
+
+void
+FavoriteListPanel::Initialize(void)
+{
+ Construct(Rectangle(0, 0, W_INITAIL_PANEL, H_INITIAL_PANEL));
+}
+
+result
+FavoriteListPanel::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Rectangle clientBounds = pForm->GetClientAreaBounds();
+ SetBounds(Rectangle(0, 0, clientBounds.width, clientBounds.height));
+
+ __pPresentationModel = FavoriteListPresentationModel::GetInstance();
+
+ __pFavoriteListView = new (std::nothrow) IconListView();
+ __pFavoriteListView->Construct(Rectangle(0, 0, clientBounds.width, clientBounds.height), Dimension(W_ICONLISTVIEW_ITEM, H_ICONLISTVIEW_ITEM));
+ __pFavoriteListView->SetItemProvider(*this);
+ __pFavoriteListView->AddIconListViewItemEventListener(*this);
+ __pFavoriteListView->AddScrollEventListener(*this);
+ __pFavoriteListView->SetItemLayoutHorizontalAlignment(ALIGNMENT_LEFT);
+ __pFavoriteListView->SetItemLayoutVerticalAlignment(ALIGNMENT_TOP);
+ __pFavoriteListView->SetItemSpacing(0, 0);
+ __pFavoriteListView->SetMargin(MARGIN_TYPE_LEFT, 0);
+ __pFavoriteListView->SetMargin(MARGIN_TYPE_RIGHT, 0);
+ __pFavoriteListView->SetTouchAnimationEnabled(false);
+
+ AddControl(*__pFavoriteListView);
+
+ __pEmptyImageLabel = new (std::nothrow) Label();
+ __pEmptyImageLabel->Construct(Rectangle(X_EMPTY_IMAGE, Y_EMPTY_IMAGE, W_EMPTY_IMAGE, H_EMPTY_IMAGE), L"");
+ Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_NO_FAVORITES);
+ if (pBitmap != null)
+ {
+ __pEmptyImageLabel->SetBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+ __pEmptyImageLabel->SetShowState(false);
+
+ AddControl(*__pEmptyImageLabel);
+
+ __pEmptyCommentLabel = new (std::nothrow) Label();
+ __pEmptyCommentLabel->Construct(Rectangle(0, Y_EMPTY_COMMENT, clientBounds.width, H_EMPTY_COMMENT),
+ ResourceManager::GetString(L"IDS_PB_BODY_NO_FAVOURITES"));
+ __pEmptyCommentLabel->SetTextConfig(FONT_SIZE_EMPTY_COMMENT, LABEL_TEXT_STYLE_NORMAL);
+ __pEmptyCommentLabel->SetTextColor(Color(COLOR_EMPTY_COMMENT));
+ __pEmptyCommentLabel->SetShowState(false);
+
+ AddControl(*__pEmptyCommentLabel);
+
+ __pContextMenuMore = new (std::nothrow) ContextMenu();
+ __pContextMenuMore->Construct(Point(X_MORE, clientBounds.y + clientBounds.height), CONTEXT_MENU_STYLE_LIST);
+ __pContextMenuMore->AddItem(ResourceManager::GetString(L"IDS_COM_SK_EDIT"), IDA_MORE_EDIT_FAVORITE);
+ __pContextMenuMore->AddActionEventListener(*this);
+
+ return r;
+}
+
+result
+FavoriteListPanel::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ delete __pContextMenuAction;
+ delete __pContextMenuMore;
+ delete __pMultipleContactValuePopup;
+
+ return r;
+}
+
+void
+FavoriteListPanel::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ switch (actionId)
+ {
+ case IDA_HEADER_CONTACTS:
+ {
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_SINGLE)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST));
+ }
+ else if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_MULTI)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST_EDITOR));
+ }
+ }
+ else
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST));
+ }
+ }
+ break;
+ case IDA_HEADER_GROUPS:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_LIST));
+ }
+ break;
+ case IDA_HEADER_FAVORITES:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST));
+ }
+ break;
+ case IDA_FOOTER_ADD_FAVORITE:
+ {
+ ArrayList* pArgList = new (std::nothrow) ArrayList();
+ pArgList->Construct();
+
+ for (int i = 0; i < __pPresentationModel->GetFavoriteCount(); i++)
+ {
+ pArgList->Add(*(new (std::nothrow) Integer(__pPresentationModel->GetContactId(i))));
+ }
+
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_SELECTOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pArgList);
+ }
+ break;
+ case IDA_FOOTER_MORE:
+ {
+ __pContextMenuMore->SetShowState(true);
+ __pContextMenuMore->Show();
+ }
+ break;
+ case IDA_MORE_EDIT_FAVORITE:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST_EDITOR));
+ }
+ break;
+ case IDA_POPUP_CONTACT_VALUE_CLOSE:
+ {
+ HideContactValuePopup();
+ }
+ break;
+ case IDA_CONTEXTMENU_CALL:
+ {
+ String phoneNumber = __pPresentationModel->GetDefaultPhoneNumber(__selectedItemIndex);
+ LaunchAppControl(PROVIDER_ID_PHONE, OPERATION_ID_CALL, phoneNumber, INPUT_TYPE_VOICE);
+ }
+ break;
+ case IDA_CONTEXTMENU_MESSAGE:
+ {
+ String phoneNumber = __pPresentationModel->GetDefaultPhoneNumber(__selectedItemIndex);
+ LaunchAppControl(PROVIDER_ID_MESSAGE, OPERATION_ID_COMPOSE, phoneNumber);
+ }
+ break;
+ case IDA_CONTEXTMENU_VIDEO_CALL:
+ {
+ String phoneNumber = __pPresentationModel->GetDefaultPhoneNumber(__selectedItemIndex);
+ LaunchAppControl(PROVIDER_ID_PHONE, OPERATION_ID_CALL, phoneNumber, INPUT_TYPE_VIDEO);
+ }
+ break;
+ case IDA_CONTEXTMENU_REMOVE:
+ {
+ __pPresentationModel->SetAsFavorite(__pPresentationModel->GetContactId(__selectedItemIndex), false);
+ __pPresentationModel->InitializeFavoriteList();
+
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+ Footer* pFooter = pForm->GetFooter();
+ if (__pPresentationModel->GetContactCount() > __pPresentationModel->GetFavoriteCount() &&
+ pFooter->GetItemCount() == 0)
+ {
+ FooterItem footerItemAdd;
+ footerItemAdd.Construct(IDA_FOOTER_ADD_FAVORITE);
+ footerItemAdd.SetText(ResourceManager::GetString(L"IDS_PB_OPT_ADD_TO_FAVORITES"));
+ pFooter->AddItem(footerItemAdd);
+ }
+
+ if (__pPresentationModel->GetFavoriteCount() == 0)
+ {
+ __pFavoriteListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ pFooter->RemoveButtonAt(BUTTON_POSITION_LEFT);
+ }
+
+ __pFavoriteListView->UpdateList();
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+FavoriteListPanel::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (previousSceneId.Equals(IDSCN_CONTACT_SELECTOR, true) && pArgs != null)
+ {
+ Integer* pContactId = null;
+ IEnumerator* pEnum = pArgs->GetEnumeratorN();
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pContactId = static_cast<Integer*>(pEnum->GetCurrent());
+ if (pContactId != null)
+ {
+ __pPresentationModel->SetAsFavorite(pContactId->ToInt(), true);
+ }
+ }
+ delete pEnum;
+ delete pArgs;
+ }
+
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Header* pHeader = pForm->GetHeader();
+ pHeader->AddActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->RemoveAllItems();
+ pFooter->RemoveButtonAt(BUTTON_POSITION_LEFT);
+ pFooter->SetBackButton();
+ pFooter->AddActionEventListener(*this);
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ __pPresentationModel->InitializeFavoriteList(pContactsApp->GetReturnType());
+ }
+ else
+ {
+ __pPresentationModel->InitializeFavoriteList();
+
+ FooterItem footerItemAdd;
+ footerItemAdd.Construct(IDA_FOOTER_ADD_FAVORITE);
+ footerItemAdd.SetText(ResourceManager::GetString(L"IDS_PB_OPT_ADD_TO_FAVORITES"));
+ pFooter->AddItem(footerItemAdd);
+ if (__pPresentationModel->GetContactCount() <= __pPresentationModel->GetFavoriteCount())
+ {
+ pFooter->SetItemEnabled(0, false);
+ }
+
+ if (__pPresentationModel->GetFavoriteCount() > 0)
+ {
+ ButtonItem buttonItemMore;
+ buttonItemMore.Construct(BUTTON_ITEM_STYLE_ICON, IDA_FOOTER_MORE);
+ buttonItemMore.SetBackgroundBitmap(BUTTON_ITEM_STATUS_NORMAL, ResourceManager::GetBitmapN(IDB_MORE_NORMAL));
+ buttonItemMore.SetBackgroundBitmap(BUTTON_ITEM_STATUS_PRESSED, ResourceManager::GetBitmapN(IDB_MORE_PRESSED));
+ pFooter->SetButton(BUTTON_POSITION_LEFT, buttonItemMore);
+ }
+ }
+
+ if (__pPresentationModel->GetFavoriteCount() > 0)
+ {
+ __pFavoriteListView->SetShowState(true);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+
+ __pFavoriteListView->UpdateList();
+ }
+ else
+ {
+ __pFavoriteListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ }
+}
+
+void
+FavoriteListPanel::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Header* pHeader = pForm->GetHeader();
+ pHeader->RemoveActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->RemoveActionEventListener(*this);
+}
+
+void
+FavoriteListPanel::OnIconListViewItemReordered(Tizen::Ui::Controls::IconListView &iconListView, int indexFrom, int indexTo)
+{
+}
+
+void
+FavoriteListPanel::OnIconListViewItemStateChanged(Tizen::Ui::Controls::IconListView &iconListView, int index, Tizen::Ui::Controls::IconListViewItemStatus status)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ HashMap* pReturnValue = new (std::nothrow) HashMap();
+ pReturnValue->Construct();
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_CONTACT_ID)
+ {
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_TYPE), new (std::nothrow) String(RETURN_TYPE_CONTACT_ID));
+
+ String pContactId;
+ pContactId.Append(__pPresentationModel->GetContactId(index));
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_VALUE), new (std::nothrow) String(pContactId));
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+
+ return;
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_VCARD)
+ {
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_TYPE), new (std::nothrow) String(RETURN_TYPE_VCARD));
+
+ String vCardPath = __pPresentationModel->ExportToVcard(index);
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_VALUE), new (std::nothrow) String(vCardPath));
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+
+ return;
+ }
+
+ IList* pList = __pPresentationModel->GetMultiValuesN(pContactsApp->GetReturnType(), index);
+ if (pList == null)
+ {
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, pReturnValue);
+
+ return;
+ }
+
+ if (pList->GetCount() > 1)
+ {
+ __pContactValueListProvider = new (std::nothrow) ContactValueListItemProvider(pList);
+ ShowContactValuePopup(index);
+ }
+ else if (pList->GetCount() == 1)
+ {
+ String* pKeyType = new (std::nothrow) String(RETURN_KEY_TYPE);
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ pReturnValue->Add(pKeyType, new (std::nothrow) String(RETURN_TYPE_PHONE));
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ pReturnValue->Add(pKeyType, new (std::nothrow) String(RETURN_TYPE_EMAIL));
+ }
+ else
+ {
+ return;
+ }
+
+ String* pReturnInfo = static_cast<String*>(pList->GetAt(0));
+ int blankIndex = 0;
+ pReturnInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pReturnInfo->Remove(0, blankIndex + 1);
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_VALUE), new (std::nothrow) String(*pReturnInfo));
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+ delete pList;
+ }
+
+ delete pReturnValue;
+ }
+ else
+ {
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ ArrayList* pContactId = new (std::nothrow) ArrayList();
+ pContactId->Construct();
+
+ pContactId->Add(*(new (std::nothrow) Integer(__pPresentationModel->GetContactId(index))));
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_DETAILS, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pContactId);
+ }
+}
+
+void
+FavoriteListPanel::OnIconListViewOverlayBitmapSelected(Tizen::Ui::Controls::IconListView& iconListView, int index, int overlayBitmapId)
+{
+ if (__pContextMenuAction != null)
+ {
+ delete __pContextMenuAction;
+ }
+
+ if (overlayBitmapId == IDA_FAVORITE_QUICK_MENU)
+ {
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Point itemPosition(W_ICONLISTVIEW_ITEM * (index % iconListView.GetItemCountPerAxis() + 1) - (W_QUICK_MENU_BUTTON / 2), pForm->GetClientAreaBounds().y + H_ICONLISTVIEW_ITEM * (index / iconListView.GetItemCountPerAxis() + 1) - __scrolledDistance);
+
+ __pContextMenuAction = new (std::nothrow) ContextMenu();
+ __pContextMenuAction->Construct(itemPosition, CONTEXT_MENU_STYLE_GRID, CONTEXT_MENU_ANCHOR_DIRECTION_DOWNWARD);
+
+ if (__pPresentationModel->GetDefaultPhoneNumber(index).IsEmpty() == false)
+ {
+ __pContextMenuAction->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_CALL"), IDA_CONTEXTMENU_CALL);
+ __pContextMenuAction->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_MESSAGE"), IDA_CONTEXTMENU_MESSAGE);
+#if __SUPPORT_VIDEO_CALL
+ __pContextMenuAction->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_VIDEO_CALL"), IDA_CONTEXTMENU_VIDEO_CALL);
+#endif
+ }
+ __pContextMenuAction->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_REMOVE"), IDA_CONTEXTMENU_REMOVE);
+ __pContextMenuAction->AddActionEventListener(*this);
+ __pContextMenuAction->Show();
+ __selectedItemIndex = index;
+ }
+}
+
+Tizen::Ui::Controls::IconListViewItem*
+FavoriteListPanel::CreateItem(int index)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ Bitmap* pThumbnail = null;
+ Bitmap* pBitmapQuickMenu = null;
+ String name;
+ Font textFont;
+ Color textColor;
+ int textY;
+ int textHeight;
+ int textWidth = W_ICONLISTVIEW_ITEM;
+
+ if (__pPresentationModel->GetFavoriteItemInfo(index, name, pThumbnail) != E_SUCCESS)
+ {
+ return null;
+ }
+
+ Canvas* pCanvas = new (std::nothrow) Canvas();
+ pCanvas->Construct(Rectangle(0, 0, W_ICONLISTVIEW_ITEM, H_ICONLISTVIEW_ITEM));
+ pCanvas->Clear();
+
+ if (pThumbnail != null)
+ {
+ textFont.Construct(FONT_STYLE_BOLD , FONT_SIZE_WITH_THUMBNAIL);
+ textY = H_ICONLISTVIEW_ITEM - H_TEXT_BACKGROUND;
+ textHeight = H_TEXT_BACKGROUND;
+ textColor = Color(COLOR_TEXT_WITH_THUMBNAIL);
+
+ if (pContactsApp->GetOperationId() != OPERATION_ID_PICK)
+ {
+ textWidth = W_ICONLISTVIEW_ITEM - W_QUICK_MENU_BUTTON;
+ }
+
+ pCanvas->DrawBitmap(pCanvas->GetBounds(), *pThumbnail, Rectangle(0, 0, pThumbnail->GetWidth(), pThumbnail->GetHeight()));
+ pCanvas->SetForegroundColor(Color(COLOR_LINE));
+ pCanvas->DrawLine(Point(0, H_ICONLISTVIEW_ITEM - H_TEXT_BACKGROUND), Point(W_ICONLISTVIEW_ITEM, H_ICONLISTVIEW_ITEM - H_TEXT_BACKGROUND));
+ pCanvas->FillRectangle(Color(COLOR_ITEM_TEXT_BACKGROUND), Rectangle(0, H_ICONLISTVIEW_ITEM - H_TEXT_BACKGROUND, W_ICONLISTVIEW_ITEM, H_TEXT_BACKGROUND));
+ }
+ else
+ {
+ textFont.Construct(FONT_STYLE_BOLD , FONT_SIZE);
+ textY = (H_ICONLISTVIEW_ITEM / 2) - (H_TEXT_SPACE / 2);
+ textHeight = H_TEXT_SPACE;
+ textColor = Color(COLOR_TEXT);
+
+ pCanvas->FillRectangle(Color(COLOR_ITEM_BACKGROUND), pCanvas->GetBounds());
+ }
+
+ EnrichedText* pEnrichedTextName = new (std::nothrow) EnrichedText();
+ pEnrichedTextName->Construct(Dimension(textWidth, textHeight));
+ pEnrichedTextName->SetVerticalAlignment(TEXT_ALIGNMENT_MIDDLE);
+ pEnrichedTextName->SetHorizontalAlignment(TEXT_ALIGNMENT_CENTER);
+ pEnrichedTextName->SetTextWrapStyle(TEXT_WRAP_WORD_WRAP);
+ pEnrichedTextName->SetTextAbbreviationEnabled(true);
+
+ TextElement* pTextElementName = new (std::nothrow) TextElement();
+ pTextElementName->Construct(name);
+ pTextElementName->SetFont(textFont);
+ pTextElementName->SetTextColor(textColor);
+
+ pEnrichedTextName->Add(*pTextElementName);
+
+ pCanvas->DrawText(Point(0, textY), *pEnrichedTextName);
+
+ Bitmap* pBitmapItem = new (std::nothrow) Bitmap();
+ pBitmapItem->Construct(*pCanvas, Rectangle(0, 0, W_ICONLISTVIEW_ITEM, H_ICONLISTVIEW_ITEM));
+
+ IconListViewItem* pFavoriteItem = new (std::nothrow) IconListViewItem();
+ pFavoriteItem->Construct(*pBitmapItem);
+
+ if (pContactsApp->GetOperationId() != OPERATION_ID_PICK)
+ {
+ pBitmapQuickMenu = ResourceManager::GetBitmapN(IDB_QUICK_MENU);
+
+ if (pBitmapQuickMenu != null)
+ {
+ pFavoriteItem->SetOverlayBitmap(IDA_FAVORITE_QUICK_MENU, pBitmapQuickMenu, ALIGNMENT_RIGHT, ALIGNMENT_BOTTOM);
+ }
+ }
+
+ delete pThumbnail;
+ delete pBitmapQuickMenu;
+ delete pCanvas;
+ delete pBitmapItem;
+ delete pEnrichedTextName;
+ delete pTextElementName;
+
+ return pFavoriteItem;
+}
+
+bool
+FavoriteListPanel::DeleteItem(int index, Tizen::Ui::Controls::IconListViewItem *pItem)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+int
+FavoriteListPanel::GetItemCount(void)
+{
+ return __pPresentationModel->GetFavoriteCount();
+}
+
+void
+FavoriteListPanel::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+}
+
+void
+FavoriteListPanel::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ HashMap* pReturnValue = new (std::nothrow) HashMap();
+ pReturnValue->Construct();
+
+ String* pKeyType = new (std::nothrow) String(RETURN_KEY_TYPE);
+ int selectedIndex = -1;
+ Integer::Parse(listView.GetName(), selectedIndex);
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ pReturnValue->Add(pKeyType, new (std::nothrow) String(RETURN_TYPE_PHONE));
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ pReturnValue->Add(pKeyType, new (std::nothrow) String(RETURN_TYPE_EMAIL));
+ }
+ else
+ {
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, pReturnValue);
+
+ delete pKeyType;
+
+ return;
+ }
+
+ IList* pList = __pPresentationModel->GetMultiValuesN(pContactsApp->GetReturnType(), selectedIndex);
+ String* pReturnInfo = static_cast<String *>(pList->GetAt(index));
+ int blankIndex = 0;
+ pReturnInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pReturnInfo->Remove(0, blankIndex + 1);
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_VALUE), new (std::nothrow) Tizen::Base::String(*pReturnInfo));
+
+ delete pList;
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+}
+
+void
+FavoriteListPanel::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+void
+FavoriteListPanel::ReturnValues(RequestId requestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue)
+{
+ AppControlProviderManager* pAppManager = AppControlProviderManager::GetInstance();
+ pAppManager->SendAppControlResult(requestId, appCtrlResult, pReturnValue);
+
+ UiApp* pApp = UiApp::GetInstance();
+ pApp->Terminate();
+}
+
+void
+FavoriteListPanel::ShowContactValuePopup(int index)
+{
+ String name;
+ Bitmap* pEmpty = null;
+
+ delete __pMultipleContactValuePopup;
+ __pMultipleContactValuePopup = new (std::nothrow) Popup();
+ __pMultipleContactValuePopup->Construct(true, Dimension(W_CONTACT_VALUE_POPUP, H_CONTACT_VALUE_POPUP));
+ __pPresentationModel->GetFavoriteItemInfo(index, name, pEmpty);
+ __pMultipleContactValuePopup->SetTitleText(name);
+
+ Rectangle popupClientBounds = __pMultipleContactValuePopup->GetClientAreaBounds();
+
+ ListView* pListView = new (std::nothrow) ListView();
+ pListView->Construct(Rectangle(0, 0, popupClientBounds.width, H_CONTACT_VALUE_POPUP_LIST_VIEW));
+ pListView->SetItemProvider(*__pContactValueListProvider);
+ pListView->AddListViewItemEventListener(*this);
+ pListView->SetName(String(Integer::ToString(index)));
+
+ __pMultipleContactValuePopup->AddControl(*pListView);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle((popupClientBounds.width - W_CLOSE_BUTTON) / 2, Y_CLOSE_BUTTON, W_CLOSE_BUTTON, H_CLOSE_BUTTON), ResourceManager::GetString(L"IDS_COM_POP_CLOSE"));
+ pCancelButton->SetActionId(IDA_POPUP_CONTACT_VALUE_CLOSE);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pMultipleContactValuePopup->AddControl(*pCancelButton);
+ __pMultipleContactValuePopup->SetShowState(true);
+ __pMultipleContactValuePopup->Show();
+}
+
+void
+FavoriteListPanel::HideContactValuePopup(void)
+{
+ __pMultipleContactValuePopup->SetShowState(false);
+
+ delete __pContactValueListProvider;
+ __pContactValueListProvider = null;
+
+ Invalidate(true);
+}
+
+void
+FavoriteListPanel::OnScrollEndReached (Tizen::Ui::Control &source, Tizen::Ui::Controls::ScrollEndEvent type)
+{
+}
+
+void
+FavoriteListPanel::OnScrollPositionChanged (Tizen::Ui::Control &source, int scrollPos)
+{
+ __scrolledDistance = scrollPos;
+}
+
+void
+FavoriteListPanel::OnScrollStopped (Tizen::Ui::Control &source)
+{
+}
+
+result
+FavoriteListPanel::LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, const Tizen::Base::String& argument, const Tizen::Base::String& type)
+{
+ result r = E_SUCCESS;
+ HashMap extraData;
+ extraData.Construct();
+
+ if (appId.Equals(String(PROVIDER_ID_PHONE)))
+ {
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TEL), new (std::nothrow) String(argument));
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TYPE), new (std::nothrow) String(type));
+ }
+ else if (appId.Equals(String(PROVIDER_ID_MESSAGE)))
+ {
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TO), new (std::nothrow) String(argument));
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TYPE), new (std::nothrow) String(INPUT_TYPE_SMS));
+ }
+
+ AppControl* pAc = AppManager::FindAppControlN(appId, operationId);
+ if (pAc != null)
+ {
+ r = pAc->Start(null, null, &extraData, null);
+
+ delete pAc;
+ }
+
+ extraData.RemoveAll(true);
+
+ 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 CtFavoriteListPresentationModel.cpp
+ * @brief This is the implementation file for the FavoriteListPresentationModel class.
+ */
+
+#include <FMedia.h>
+#include "CtFavoriteListPresentationModel.h"
+#include "CtResourceManager.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Media;
+using namespace Tizen::Social;
+using namespace Tizen::System;
+
+static const int VCARD_STRING_LENGTH = 26;
+
+static const wchar_t* VCARD_PATH_FORMAT = L"/tmp/Ct%04d%02d%02d%02d%02d%02d.vcf";
+
+FavoriteListPresentationModel* FavoriteListPresentationModel::__pInstance = null;
+
+FavoriteListPresentationModel*
+FavoriteListPresentationModel::GetInstance(void)
+{
+ if (__pInstance == null)
+ {
+ CreateInstance();
+ }
+
+ return __pInstance;
+}
+
+void
+FavoriteListPresentationModel::CreateInstance(void)
+{
+ __pInstance = new (std::nothrow) FavoriteListPresentationModel();
+ result r = __pInstance->Construct();
+ TryCatch(r == E_SUCCESS, , "[%s] Construction Failed", GetErrorMessage(r));
+
+ std::atexit(DestroyInstance);
+ return;
+
+CATCH:
+ delete __pInstance;
+ __pInstance = null;
+}
+
+void
+FavoriteListPresentationModel::DestroyInstance(void)
+{
+ delete __pInstance;
+}
+
+FavoriteListPresentationModel::FavoriteListPresentationModel(void)
+: __pFavoriteList(null)
+{
+
+}
+FavoriteListPresentationModel::~FavoriteListPresentationModel(void)
+{
+ if (__pFavoriteList != null)
+ {
+ __pFavoriteList->RemoveAll(true);
+ delete __pFavoriteList;
+ }
+}
+
+result
+FavoriteListPresentationModel::Construct(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pFavoriteList != null)
+ {
+ AppLogDebug("FavoriteListPresentationModel is already constructed.");
+
+ return E_SUCCESS;
+ }
+
+ r = InitializeFavoriteList();
+
+ return r;
+}
+
+int
+FavoriteListPresentationModel::GetFavoriteCount(void)
+{
+ return __pFavoriteList->GetCount();
+}
+
+int
+FavoriteListPresentationModel::GetContactCount(void)
+{
+ int contactCount = 0;
+ IList* pList = AddressbookManager::GetInstance()->GetAllContactsN();
+ if (pList != null)
+ {
+ contactCount = pList->GetCount();
+ delete pList;
+ }
+
+ return contactCount;
+}
+
+result
+FavoriteListPresentationModel::GetFavoriteItemInfo(int index, Tizen::Base::String& name, Tizen::Graphics::Bitmap*& pThumbnail)
+{
+ Person* pPerson = static_cast<Person *>(__pFavoriteList->GetAt(index));
+ if (pPerson == null)
+ {
+ return E_FAILURE;
+ }
+
+ name = pPerson->GetDisplayName();
+ String thumbnailPath = pPerson->GetThumbnailPath();
+
+ if (thumbnailPath.IsEmpty() == false)
+ {
+ ImageBuffer thumbnailImageBuffer;
+ result r = thumbnailImageBuffer.Construct(thumbnailPath);
+ if (r == E_SUCCESS)
+ {
+ pThumbnail = thumbnailImageBuffer.GetBitmapN(BITMAP_PIXEL_FORMAT_RGB565, BUFFER_SCALING_NONE);
+ }
+ }
+
+ return E_SUCCESS;
+}
+
+Tizen::Base::Collection::IList*
+FavoriteListPresentationModel::GetMultiValuesN(AppControlReturnType returnType, int index)
+{
+ Person* pPerson = static_cast<Person*>(__pFavoriteList->GetAt(index));
+ IList* pContactList = null;
+ if (pPerson != null)
+ {
+ pContactList = AddressbookManager::GetInstance()->GetContactsByPersonN(pPerson->GetId());
+ }
+
+ if (pContactList == null)
+ {
+ return null;
+ }
+
+ Contact* pContact = static_cast<Contact*>(pContactList->GetAt(0));
+ if (pContact == null)
+ {
+ delete pContactList;
+ return null;
+ }
+
+ ArrayList* pReturnList = new (std::nothrow) ArrayList();
+ pReturnList->Construct();
+
+ IList* pMultiValues = null;
+ IEnumerator* pEnum = null;
+ if (returnType == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ pMultiValues = pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
+ if (pMultiValues != null)
+ {
+ pEnum = pMultiValues->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ PhoneNumber* pPhoneNumber = static_cast<PhoneNumber*>(pEnum->GetCurrent());
+ if (pPhoneNumber != null)
+ {
+ String phoneNumberInfo;
+ switch(pPhoneNumber->GetType())
+ {
+ case PHONENUMBER_TYPE_HOME:
+ phoneNumberInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_HOME"));
+ break;
+ case PHONENUMBER_TYPE_WORK:
+ phoneNumberInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_WORK"));
+ break;
+ case PHONENUMBER_TYPE_MOBILE:
+ phoneNumberInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_MOBILE"));
+ break;
+ case PHONENUMBER_TYPE_HOME_FAX:
+ phoneNumberInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_FAX_HHOME"));
+ break;
+ case PHONENUMBER_TYPE_WORK_FAX:
+ phoneNumberInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_FAX_HWORK"));
+ break;
+ case PHONENUMBER_TYPE_PAGER:
+ phoneNumberInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_PAGER"));
+ break;
+ case PHONENUMBER_TYPE_OTHER:
+ phoneNumberInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_OTHER"));
+ break;
+ default:
+ break;
+ }
+ phoneNumberInfo.Append(CHARACTER_SPACE);
+ phoneNumberInfo.Append(pPhoneNumber->GetPhoneNumber());
+
+ pReturnList->Add(*(new (std::nothrow) String(phoneNumberInfo)));
+ }
+ }
+ }
+ }
+ else if (returnType == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ pMultiValues = pContact->GetValuesN(CONTACT_MPROPERTY_ID_EMAILS);
+ if (pMultiValues != null)
+ {
+ pEnum = pMultiValues->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ Email* pEmail = static_cast<Email*>(pEnum->GetCurrent());
+ if (pEmail != null)
+ {
+ String emailInfo;
+ switch(pEmail->GetType())
+ {
+ case EMAIL_TYPE_PERSONAL:
+ emailInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_HOME"));
+ break;
+ case EMAIL_TYPE_WORK:
+ emailInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_WORK"));
+ break;
+ case EMAIL_TYPE_OTHER:
+ emailInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_OTHER"));
+ break;
+ default:
+ break;
+ }
+ emailInfo.Append(CHARACTER_SPACE);
+ emailInfo.Append(pEmail->GetEmail());
+
+ pReturnList->Add(*(new (std::nothrow) String(emailInfo)));
+ }
+ }
+ }
+ }
+
+ delete pEnum;
+ delete pMultiValues;
+ delete pContactList;
+
+ return pReturnList;
+}
+
+Tizen::Social::RecordId
+FavoriteListPresentationModel::GetContactId(int index)
+{
+ Person* pPerson = static_cast<Person *>(__pFavoriteList->GetAt(index));
+ if (pPerson == null)
+ {
+ return INVALID_RECORD_ID;
+ }
+
+ IList* pList = AddressbookManager::GetInstance()->GetContactsByPersonN(pPerson->GetId());
+ if (pList == null)
+ {
+ return INVALID_RECORD_ID;
+ }
+
+ Contact* pContact = static_cast<Contact *>(pList->GetAt(0));
+ if (pContact == null)
+ {
+ pList->RemoveAll(true);
+ delete pList;
+
+ return INVALID_RECORD_ID;
+ }
+
+ RecordId contactId = pContact->GetRecordId();
+
+ pList->RemoveAll(true);
+ delete pList;
+
+ return contactId;
+}
+
+result
+FavoriteListPresentationModel::SetAsFavorite(Tizen::Social::RecordId contactId, bool isFavorite)
+{
+ result r = E_SUCCESS;
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+
+ Contact* pContact = pAddressbookManager->GetContactN(contactId);
+ if (pContact == null)
+ {
+ return E_FAILURE;
+ }
+
+ r = pAddressbookManager->SetPersonAsFavorite(pContact->GetPersonId(), isFavorite);
+
+ return r;
+}
+
+result
+FavoriteListPresentationModel::InitializeFavoriteList(AppControlReturnType returnType)
+{
+ result r = E_SUCCESS;
+
+ if (__pFavoriteList != null)
+ {
+ __pFavoriteList->RemoveAll(true);
+ __pFavoriteList = null;
+ }
+
+ AddressbookFilter mainFilter(AB_FI_TYPE_PERSON);
+ if (returnType == APP_CONTROL_RETURN_TYPE_NONE || returnType == APP_CONTROL_RETURN_TYPE_CONTACT_ID || returnType == APP_CONTROL_RETURN_TYPE_VCARD)
+ {
+ __pFavoriteList = AddressbookManager::GetInstance()->GetFavoritePersonsN();
+ }
+ else if (returnType == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_NONE, PERSON_FI_PR_HAS_PHONE, FI_CMP_OP_EQUAL, true);
+ mainFilter.AppendBool(FI_CONJ_OP_AND, PERSON_FI_PR_IS_FAVORITE, FI_CMP_OP_EQUAL, true);
+ __pFavoriteList = AddressbookManager::GetInstance()->SearchN(mainFilter);
+ }
+ else if (returnType == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_NONE, PERSON_FI_PR_HAS_EMAIL, FI_CMP_OP_EQUAL, true);
+ mainFilter.AppendBool(FI_CONJ_OP_AND, PERSON_FI_PR_IS_FAVORITE, FI_CMP_OP_EQUAL, true);
+ __pFavoriteList = AddressbookManager::GetInstance()->SearchN(mainFilter);
+ }
+
+ if (__pFavoriteList == null)
+ {
+ r = E_FAILURE;
+ }
+
+ return r;
+}
+
+Tizen::Base::String
+FavoriteListPresentationModel::GetDefaultPhoneNumber(int index)
+{
+ Person* pPerson = static_cast<Person *>(__pFavoriteList->GetAt(index));
+ if (pPerson == null)
+ {
+ return String();
+ }
+
+ PhoneNumber phoneNumber = pPerson->GetPrimaryPhoneNumber();
+
+ return phoneNumber.GetPhoneNumber();
+}
+
+Tizen::Base::String
+FavoriteListPresentationModel::ExportToVcard(int index)
+{
+ String vCardPath;
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+ Contact* pContact = pAddressbookManager->GetContactN(GetContactId(index));
+ TryReturn(pContact != null, vCardPath, "[E_FAILURE] Unable to get the specific contact.");
+
+ DateTime currentDateTime;
+ SystemTime::GetCurrentTime(TIME_MODE_WALL, currentDateTime);
+
+ vCardPath.Format(VCARD_STRING_LENGTH, VCARD_PATH_FORMAT, currentDateTime.GetYear(), currentDateTime.GetMonth(), currentDateTime.GetDay(),
+ currentDateTime.GetHour(), currentDateTime.GetMinute(), currentDateTime.GetSecond());
+
+ result r = pAddressbookManager->ExportContactToVcard(*pContact, vCardPath);
+
+ if (r != E_SUCCESS)
+ {
+ vCardPath.Clear();
+ }
+
+ delete pContact;
+
+ return vCardPath;
+}
--- /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 CtFormFactory.cpp
+ * @brief This is the implementation file for the FormFactory class.
+ */
+
+#include "CtContactDetailsForm.h"
+#include "CtContactEditorForm.h"
+#include "CtContactSelectorForm.h"
+#include "CtFormFactory.h"
+#include "CtGroupContactListEditorForm.h"
+#include "CtGroupContactListForm.h"
+#include "CtGroupEditorForm.h"
+#include "CtGroupSelectorForm.h"
+#include "CtMainForm.h"
+#include "CtSettingsForm.h"
+#include "CtTypes.h"
+
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+FormFactory::FormFactory(void)
+{
+}
+
+FormFactory::~FormFactory(void)
+{
+}
+
+Tizen::Ui::Controls::Form*
+FormFactory::CreateFormN(const Tizen::Base::String& formId, const Tizen::Ui::Scenes::SceneId& sceneId)
+{
+ result r = E_SUCCESS;
+
+ Form* pNewForm = null;
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ if (formId == IDC_FORM_MAIN)
+ {
+ MainForm* pForm = new (std::nothrow) MainForm();
+ pForm->Initialize();
+
+ pNewForm = pForm;
+ }
+ else if (formId == IDC_FORM_CONTACT_SELECTOR)
+ {
+ ContactSelectorForm* pForm = new (std::nothrow) ContactSelectorForm();
+ pForm->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ TryCatch(r == E_SUCCESS, delete pForm, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewForm = pForm;
+ }
+ else if (formId == IDC_FORM_CONTACT_DETAILS)
+ {
+ ContactDetailsForm* pForm = new (std::nothrow) ContactDetailsForm();
+ pForm->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ TryCatch(r == E_SUCCESS, delete pForm, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewForm = pForm;
+ }
+ else if (formId == IDC_FORM_CONTACT_EDITOR)
+ {
+ ContactEditorForm* pForm = new (std::nothrow) ContactEditorForm();
+ pForm->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ TryCatch(r == E_SUCCESS, delete pForm, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewForm = pForm;
+ }
+ else if (formId == IDC_FORM_GROUP_SELECTOR)
+ {
+ GroupSelectorForm* pForm = new (std::nothrow) GroupSelectorForm();
+ pForm->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ TryCatch(r == E_SUCCESS, delete pForm, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewForm = pForm;
+ }
+ else if (formId == IDC_FORM_GROUP_EDITOR)
+ {
+ GroupEditorForm* pForm = new (std::nothrow) GroupEditorForm();
+ pForm->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ TryCatch(r == E_SUCCESS, delete pForm, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewForm = pForm;
+ }
+ else if (formId == IDC_FORM_SETTINGS)
+ {
+ SettingsForm* pForm = new (std::nothrow) SettingsForm();
+ pForm->Initialize();
+ pNewForm = pForm;
+ }
+ else if (formId == IDC_FORM_GROUP_CONTACT_LIST)
+ {
+ GroupContactListForm* pForm = new (std::nothrow) GroupContactListForm();
+ pForm->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ TryCatch(r == E_SUCCESS, delete pForm, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewForm = pForm;
+ }
+ else if (formId == IDC_FORM_GROUP_CONTACT_LIST_EDITOR)
+ {
+ GroupContactListEditorForm* pForm = new (std::nothrow) GroupContactListEditorForm();
+ pForm->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ TryCatch(r == E_SUCCESS, delete pForm, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewForm = pForm;
+ }
+
+ return pNewForm;
+
+CATCH:
+ return 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 CtGroupContactListEditorForm.cpp
+ * @brief This is the implementation file for the GroupContactListEditorForm class.
+ */
+
+#include "CtContactListItem.h"
+#include "CtContactsApp.h"
+#include "CtGroupContactListEditorForm.h"
+#include "CtGroupContactListPresentationModel.h"
+#include "CtResourceManager.h"
+#include "CtSearchListEventListener.h"
+#include "CtTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+static const int IDA_FOOTER_REMOVE = 0;
+static const int IDA_FOOTER_CANCEL = 1;
+static const int IDA_FOOTER_DONE = 2;
+static const int IDA_CHECK_SELECT_ALL_CHECKED = 10;
+static const int IDA_CHECK_SELECT_ALL_UNCHECKED = 11;
+static const int IDA_POPUP_CONTACT_VALUE_CLOSE = 20;
+
+static const wchar_t* IDB_NO_CONTENTS = L"00_Nocontents_text.png";
+
+static const int X_EMPTY_IMAGE = 220;
+static const int Y_EMPTY_IMAGE = 300;
+static const int W_EMPTY_IMAGE = 280;
+static const int H_EMPTY_IMAGE = 280;
+static const int Y_EMPTY_COMMENT = 618;
+static const int H_EMPTY_COMMENT = 38;
+static const int H_ITEM = 108;
+static const int H_GROUP_ITEM = 76;
+static const int H_LIST_ITEM =112;
+static const int H_BOTTOM_LABEL = 48;
+static const int W_CONTACT_VALUE_POPUP = 720;
+static const int H_CONTACT_VALUE_POPUP = 700;
+static const int H_CONTACT_VALUE_POPUP_LIST_VIEW = 506;
+static const int Y_CLOSE_BUTTON = 526;
+static const int H_CLOSE_BUTTON = 74;
+static const int W_CLOSE_BUTTON = 394;
+static const int X_LIST_ITEM_TEXT_MARGIN = 32;
+
+static const int FONT_SIZE_BOTTOM_LABEL = 32;
+static const int FONT_SIZE_EMPTY_COMMENT = 32;
+
+static const unsigned int COLOR_BOTTOM_LABEL_BG = Color32<215, 225, 232>::Value;
+static const unsigned int COLOR_BOTTOM_LABEL_FONT = Color32<76, 81, 88>::Value;
+static const unsigned int COLOR_EMPTY_COMMENT = Color32<102, 102, 102>::Value;
+
+static const int LIST_VIEW_GROUP_INDEX_SHIFT = 16;
+static const int LIST_VIEW_MASK = 0xFFFF;
+
+static const wchar_t* INPUT_KEY_TYPE = L"type";
+static const wchar_t* INPUT_TYPE_SMS = L"SMS";
+static const wchar_t* INPUT_KEY_TO = L"to";
+
+
+GroupContactListEditorForm::GroupContactListEditorForm(void)
+: __pContactValueListEvent(null)
+, __pPresentationModel(null)
+, __pSearchListEvent(null)
+, __pTempContactValueHashMap(null)
+, __pSearchBar(null)
+, __pSelectAllButton(null)
+, __pListView(null)
+, __pSearchListView(null)
+, __pBottomLabel(null)
+, __pEmptyImageLabel(null)
+, __pEmptyCommentLabel(null)
+, __pMultipleContactValuePopup(null)
+, __launchType(0)
+, __selectedIndex(-1)
+, __selectedSearchIndex(-1)
+{
+}
+
+GroupContactListEditorForm::~GroupContactListEditorForm(void)
+{
+}
+
+void
+GroupContactListEditorForm::Initialize(void)
+{
+ Construct(FORM_STYLE_NORMAL | FORM_STYLE_INDICATOR | FORM_STYLE_HEADER | FORM_STYLE_FOOTER);
+}
+
+result
+GroupContactListEditorForm::OnInitializing(void)
+{
+ SetFormBackEventListener(this);
+
+ __pPresentationModel = GroupContactListPresentationModel::GetInstance();
+ __pPresentationModel->AddContactChangeListener(*this);
+
+ __pSelectAllButton = new (std::nothrow) CheckButton();
+ __pSelectAllButton->Construct(Rectangle(0, H_ITEM, GetClientAreaBounds().width, H_ITEM), CHECK_BUTTON_STYLE_MARK, BACKGROUND_STYLE_DEFAULT);
+ __pSelectAllButton->SetText(ResourceManager::GetString(L"IDS_COM_BODY_SELECT_ALL"));
+ __pSelectAllButton->SetActionId(IDA_CHECK_SELECT_ALL_CHECKED, IDA_CHECK_SELECT_ALL_UNCHECKED);
+ __pSelectAllButton->AddActionEventListener(*this);
+ AddControl(*__pSelectAllButton);
+
+ __pListView = new (std::nothrow) GroupedListView();
+ __pListView->Construct(Rectangle(0, H_ITEM * 2, GetClientAreaBounds().width, GetClientAreaBounds().height - H_ITEM * 2 - H_BOTTOM_LABEL), GROUPED_LIST_VIEW_STYLE_INDEXED, true, true);
+ __pListView->SetItemProvider(*this);
+ __pListView->AddFastScrollListener(*this);
+ __pListView->AddGroupedListViewItemEventListener(*this);
+ __pListView->AddTouchEventListener(*this);
+ AddControl(*__pListView);
+
+ __pSearchBar = new (std::nothrow) SearchBar();
+ __pSearchBar->Construct(Rectangle(0, 0, GetClientAreaBounds().width, H_ITEM));
+ __pSearchBar->SetGuideText(ResourceManager::GetString(L"IDS_COM_BODY_SEARCH"));
+ __pSearchBar->AddSearchBarEventListener(*this);
+ __pSearchBar->AddTextEventListener(*this);
+ __pSearchBar->AddKeypadEventListener(*this);
+ __pSearchBar->SetContentAreaSize(Dimension(0, 0));
+
+ __pSearchListEvent = new (std::nothrow) SearchListEventListener(LIST_ANNEX_STYLE_MARK, __pPresentationModel);
+ AddControl(*__pSearchBar);
+
+ __pSearchListView = new (std::nothrow) GroupedListView();
+ __pSearchListView->Construct(Rectangle(0, H_ITEM, GetClientAreaBounds().width, GetClientAreaBounds().height - H_ITEM - H_BOTTOM_LABEL), GROUPED_LIST_VIEW_STYLE_INDEXED, true, false);
+ __pSearchListView->SetItemProvider(*__pSearchListEvent);
+ __pSearchListView->AddGroupedListViewItemEventListener(*this);
+ __pSearchListView->AddTouchEventListener(*this);
+ __pSearchListView->SetTextOfEmptyList(ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pSearchListView->SetShowState(false);
+ AddControl(*__pSearchListView);
+
+ __pEmptyImageLabel = new (std::nothrow) Label();
+ __pEmptyImageLabel->Construct(Rectangle(X_EMPTY_IMAGE, Y_EMPTY_IMAGE, W_EMPTY_IMAGE, H_EMPTY_IMAGE), L"");
+ Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_NO_CONTENTS);
+ if (pBitmap != null)
+ {
+ __pEmptyImageLabel->SetBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+ __pEmptyImageLabel->SetShowState(false);
+
+ AddControl(*__pEmptyImageLabel);
+
+ __pEmptyCommentLabel = new (std::nothrow) Label();
+ __pEmptyCommentLabel->Construct(Rectangle(0, Y_EMPTY_COMMENT, GetClientAreaBounds().width, H_EMPTY_COMMENT),
+ ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pEmptyCommentLabel->SetTextConfig(FONT_SIZE_EMPTY_COMMENT, LABEL_TEXT_STYLE_NORMAL);
+ __pEmptyCommentLabel->SetTextColor(Color(COLOR_EMPTY_COMMENT));
+ __pEmptyCommentLabel->SetShowState(false);
+
+ AddControl(*__pEmptyCommentLabel);
+
+ __pBottomLabel = new (std::nothrow) Label();
+ __pBottomLabel->Construct(Rectangle(0, GetClientAreaBounds().height - H_BOTTOM_LABEL, GetClientAreaBounds().width, H_BOTTOM_LABEL),
+ ResourceManager::GetString(L"IDS_COM_POP_SELECTED") + INITIAL_SELECTED_COUNT);
+ __pBottomLabel->SetBackgroundColor(Color(COLOR_BOTTOM_LABEL_BG));
+ __pBottomLabel->SetTextColor(Color(COLOR_BOTTOM_LABEL_FONT));
+ __pBottomLabel->SetTextConfig(FONT_SIZE_BOTTOM_LABEL, LABEL_TEXT_STYLE_BOLD);
+ __pBottomLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ AddControl(*__pBottomLabel);
+
+ __pTempContactValueHashMap = new (std::nothrow) HashMap();
+ __pTempContactValueHashMap->Construct();
+
+ return E_SUCCESS;
+}
+
+result
+GroupContactListEditorForm::OnTerminating(void)
+{
+ if (__pPresentationModel != null)
+ {
+ __pPresentationModel->RemoveContactChangeListener(*this);
+ }
+
+ __pTempContactValueHashMap->RemoveAll(true);
+ delete __pTempContactValueHashMap;
+ delete __pSearchListEvent;
+ delete __pMultipleContactValuePopup;
+
+ return E_SUCCESS;
+}
+
+void
+GroupContactListEditorForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_GROUP_LIST, SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+}
+
+void
+GroupContactListEditorForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ switch (actionId)
+ {
+ case IDA_FOOTER_REMOVE:
+ {
+ RemoveSelectedContacts();
+ pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_GROUP_CONTACT_LIST));
+ }
+ break;
+ case IDA_FOOTER_CANCEL:
+ {
+ pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_GROUP_CONTACT_LIST));
+ }
+ break;
+ case IDA_CHECK_SELECT_ALL_CHECKED:
+ {
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ __pListView->SetItemChecked(groupIndex, itemIndex, true);
+
+ int index = 0;
+ index |= groupIndex << LIST_VIEW_GROUP_INDEX_SHIFT;
+ index |= itemIndex;
+ Integer hashMapIndex(index);
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE || __launchType == ID_GROUP_CONTACT_SELECT_MESSAGE)
+ {
+ if (__pTempContactValueHashMap->GetValue(hashMapIndex) == null)
+ {
+ String phoneNumber = __pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(index)), *(new (std::nothrow) String(phoneNumber)));
+ }
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL || __launchType == ID_GROUP_CONTACT_SELECT_EMAIL)
+ {
+ if (__pTempContactValueHashMap->GetValue(hashMapIndex) == null)
+ {
+ String email = __pPresentationModel->GetDefaultEmail(groupIndex, itemIndex);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(index)), *(new (std::nothrow) String(email)));
+ }
+ }
+ }
+ }
+ __pListView->SetFocus();
+ __pListView->Invalidate(true);
+ UpdateBottomLabel();
+ }
+ break;
+ case IDA_CHECK_SELECT_ALL_UNCHECKED:
+ {
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ __pListView->SetItemChecked(groupIndex, itemIndex, false);
+ }
+ }
+ __pTempContactValueHashMap->RemoveAll(true);
+ __pListView->SetFocus();
+ __pListView->Invalidate(true);
+ UpdateBottomLabel();
+ }
+ break;
+ case IDA_FOOTER_DONE:
+ {
+ if (__launchType == ID_GROUP_CONTACT_SELECT_MESSAGE ||
+ __launchType == ID_GROUP_CONTACT_SELECT_EMAIL)
+ {
+ LaunchAppControl();
+ }
+ else
+ {
+ ReturnMultipleValues();
+ }
+ }
+ break;
+ case IDA_POPUP_CONTACT_VALUE_CLOSE:
+ {
+ HideContactValuePopup();
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+GroupContactListEditorForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList *pArgs)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (pArgs != null)
+ {
+ Integer* pCategoryId = null;
+
+ IEnumerator* pEnum = pArgs->GetEnumeratorN();
+ if (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pCategoryId = static_cast<Integer*>(pEnum->GetCurrent());
+ }
+ if (pEnum->MoveNext() == E_SUCCESS)
+ {
+ Integer* pItemTypeForLaunchAppControl = static_cast<Integer*>(pEnum->GetCurrent());
+ if (pItemTypeForLaunchAppControl != null)
+ {
+ __launchType = pItemTypeForLaunchAppControl->ToInt();
+ }
+ }
+
+ if (pCategoryId != null)
+ {
+ Header* pHeader = GetHeader();
+ if (pCategoryId->ToInt() == ID_GROUP_CONTACT_NOT_ASSIGNED)
+ {
+ if (__launchType == ID_GROUP_CONTACT_SELECT_MESSAGE)
+ {
+ __pPresentationModel->InitializeGroupContactList(Tizen::Social::INVALID_RECORD_ID, GROUP_CONTACT_LAUNCH_TYPE_MESSAGE);
+ }
+ else if (__launchType == ID_GROUP_CONTACT_SELECT_EMAIL)
+ {
+ __pPresentationModel->InitializeGroupContactList(Tizen::Social::INVALID_RECORD_ID, GROUP_CONTACT_LAUNCH_TYPE_EMAIL);
+ }
+ else
+ {
+ __pPresentationModel->InitializeGroupContactList(Tizen::Social::INVALID_RECORD_ID);
+ }
+ pHeader->SetTitleText(ResourceManager::GetString(L"IDS_PB_BODY_NOT_ASSIGNED"));
+ }
+ else
+ {
+ if (__launchType == ID_GROUP_CONTACT_SELECT_MESSAGE)
+ {
+ __pPresentationModel->InitializeGroupContactList(pCategoryId->ToInt(), GROUP_CONTACT_LAUNCH_TYPE_MESSAGE);
+ }
+ else if (__launchType == ID_GROUP_CONTACT_SELECT_EMAIL)
+ {
+ __pPresentationModel->InitializeGroupContactList(pCategoryId->ToInt(), GROUP_CONTACT_LAUNCH_TYPE_EMAIL);
+ }
+ else
+ {
+ __pPresentationModel->InitializeGroupContactList(pCategoryId->ToInt());
+ }
+ pHeader->SetTitleText(__pPresentationModel->GetCategoryName());
+ }
+
+ __pListView->SetFastScrollIndex(__pPresentationModel->GetAllKeys(), false);
+ }
+ delete pEnum;
+ delete pArgs;
+ }
+
+ Footer* pFooter = GetFooter();
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK || __launchType != 0)
+ {
+ pFooter->SetBackButton();
+
+ if (__pPresentationModel->GetContactCount() == 0)
+ {
+ __pSearchBar->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pSelectAllButton->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ __pBottomLabel->SetShowState(false);
+ }
+ else
+ {
+ FooterItem footerItemDone;
+ footerItemDone.Construct(IDA_FOOTER_DONE);
+ footerItemDone.SetText(ResourceManager::GetString(L"IDS_COM_SK_DONE"));
+ pFooter->AddItem(footerItemDone);
+ pFooter->SetItemEnabled(0, false);
+ }
+
+ if (__launchType != 0)
+ {
+ pContactsApp->AddContactsAppChangeEventListener(*this);
+ }
+ }
+ else
+ {
+ pFooter->RemoveBackButton();
+ FooterItem footerItemRemove;
+ footerItemRemove.Construct(IDA_FOOTER_REMOVE);
+ footerItemRemove.SetText(ResourceManager::GetString(L"IDS_COM_BODY_REMOVE"));
+
+ FooterItem footerItemCancel;
+ footerItemCancel.Construct(IDA_FOOTER_CANCEL);
+ footerItemCancel.SetText(ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
+
+ pFooter->AddItem(footerItemRemove);
+ pFooter->AddItem(footerItemCancel);
+ pFooter->SetItemEnabled(0, false);
+ }
+
+ pFooter->AddActionEventListener(*this);
+}
+
+void
+GroupContactListEditorForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+ if (__pSearchBar->GetMode() == SEARCH_BAR_MODE_INPUT)
+ {
+ __pSearchBar->SetMode(SEARCH_BAR_MODE_NORMAL);
+ }
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (__launchType != 0)
+ {
+ pContactsApp->RemoveContactsAppChangeEventListener(*this);
+ }
+}
+
+void
+GroupContactListEditorForm::OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, Tizen::Ui::Controls::SearchBarMode mode)
+{
+ if (mode == SEARCH_BAR_MODE_NORMAL)
+ {
+ int searchedCount = __pPresentationModel->GetSearchedContactCount();
+ bool isChecked = true;
+
+ for (int index = 0; index < searchedCount; index++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+
+ __pListView->SetItemChecked(groupIndex, itemIndex, __pSearchListView->IsItemChecked(0, index));
+ }
+
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount() && isChecked == true; groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ isChecked = false;
+ break;
+ }
+ }
+ }
+
+ __pListView->SetShowState(true);
+ __pListView->Invalidate(true);
+ __pSelectAllButton->SetShowState(true);
+ __pSelectAllButton->SetSelected(isChecked);
+ __pSearchListView->SetShowState(false);
+ __pPresentationModel->ResetSearchedContactList();
+ __pSearchListView->UpdateList();
+
+ UpdateBottomLabel();
+ }
+}
+
+void
+GroupContactListEditorForm::OnTextValueChanged(const Tizen::Ui::Control& source)
+{
+ String searchText = __pSearchBar->GetText();
+ searchText.Trim();
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_HAS_PHONE_ONLY);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_HAS_EMAIL_ONLY);
+ }
+ else
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_NORMAL);
+ }
+
+ if (searchText.GetLength() != 0)
+ {
+ __pSelectAllButton->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pSearchListView->SetShowState(true);
+
+ __pSearchListView->UpdateList();
+
+ int searchedCount = __pPresentationModel->GetSearchedContactCount();
+
+ for (int index = 0; index < searchedCount; index++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+ __pSearchListView->SetItemChecked(0, index, __pListView->IsItemChecked(groupIndex, itemIndex));
+ }
+
+ __pSearchListView->Invalidate(true);
+ }
+ else
+ {
+ __pSelectAllButton->SetShowState(true);
+ __pListView->SetShowState(true);
+ __pSearchListView->SetShowState(false);
+
+ int count = __pPresentationModel->GetSearchedContactCount();
+ bool isChecked = true;
+
+ for (int index = 0; index < count; index++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+ __pListView->SetItemChecked(groupIndex, itemIndex, __pSearchListView->IsItemChecked(0, index));
+ }
+
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount() && isChecked == true; groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ isChecked = false;
+ break;
+ }
+ }
+ }
+
+ __pSelectAllButton->SetSelected(isChecked);
+ __pListView->Invalidate(true);
+ }
+
+
+}
+
+void
+GroupContactListEditorForm::OnTextValueChangeCanceled(const Tizen::Ui::Control& source)
+{
+}
+
+int
+GroupContactListEditorForm::GetGroupCount(void)
+{
+ return __pPresentationModel->GetKeyCount();
+}
+
+int
+GroupContactListEditorForm::GetItemCount(int groupIndex)
+{
+ return __pPresentationModel->GetContactCount(groupIndex);
+}
+
+Tizen::Ui::Controls::ListItemBase*
+GroupContactListEditorForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ String name;
+ Bitmap* pThumbnail = null;
+
+ CustomItem* pItem = new (std::nothrow) CustomItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_ITEM), LIST_ANNEX_STYLE_MARK);
+
+ __pPresentationModel->GetContactItemInfoN(groupIndex, itemIndex, name, pThumbnail);
+
+ ContactListItem* pCustomElement = new (std::nothrow) ContactListItem(name, pThumbnail);
+ pItem->AddElement(Rectangle(0, 0, itemWidth - (ListItemBase::GetAnnexWidth(LIST_ANNEX_STYLE_MARK) + X_LIST_ITEM_TEXT_MARGIN), H_LIST_ITEM), 0, *(static_cast<ICustomElement*>(pCustomElement)));
+
+ return pItem;
+}
+
+Tizen::Ui::Controls::GroupItem*
+GroupContactListEditorForm::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ GroupItem* pItem = new (std::nothrow) GroupItem();
+ pItem->Construct(Dimension(itemWidth, H_GROUP_ITEM));
+ pItem->SetElement(__pPresentationModel->GetKey(groupIndex), null);
+
+ return pItem;
+}
+
+bool
+GroupContactListEditorForm::DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+bool
+GroupContactListEditorForm::DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+void
+GroupContactListEditorForm::OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+}
+
+void
+GroupContactListEditorForm::OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus state)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ int mainGroupIndex = groupIndex;
+ int mainItemIndex = itemIndex;
+
+ if (listView.Equals(*__pSearchListView) == true)
+ {
+ __selectedSearchIndex = 0;
+ __selectedSearchIndex |= groupIndex << LIST_VIEW_GROUP_INDEX_SHIFT;
+ __selectedSearchIndex |= itemIndex;
+
+ __pPresentationModel->GetItemMainIndex(itemIndex, mainGroupIndex, mainItemIndex);
+ }
+
+ __selectedIndex = 0;
+ __selectedIndex |= mainGroupIndex << LIST_VIEW_GROUP_INDEX_SHIFT;
+ __selectedIndex |= mainItemIndex;
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK ||
+ __launchType == ID_GROUP_CONTACT_SELECT_MESSAGE ||
+ __launchType == ID_GROUP_CONTACT_SELECT_EMAIL)
+ {
+ if (listView.IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ IList* pList = null;
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE ||
+ __launchType == ID_GROUP_CONTACT_SELECT_MESSAGE)
+ {
+ pList = __pPresentationModel->GetAllPhoneNumbersN(mainGroupIndex, mainItemIndex);
+
+ if (pList == null)
+ {
+ ReturnResultFailed();
+ }
+ else
+ {
+ if (pList->GetCount() > 1)
+ {
+ listView.SetItemChecked(groupIndex, itemIndex, false);
+ __pContactValueListEvent = new (std::nothrow) ContactValueListItemProvider(pList);
+ ShowContactValuePopup(mainGroupIndex, mainItemIndex);
+ }
+ else if (pList->GetCount() == 1)
+ {
+ String* pContactValueInfo = static_cast<String *>(pList->GetAt(0));
+ int blankIndex = 0;
+ pContactValueInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pContactValueInfo->Remove(0, blankIndex + 1);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(__selectedIndex)), *(new (std::nothrow) String(*pContactValueInfo)));
+ delete pList;
+ }
+ }
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL ||
+ __launchType == ID_GROUP_CONTACT_SELECT_EMAIL)
+ {
+ pList = __pPresentationModel->GetAllEmailsN(mainGroupIndex, mainItemIndex);
+
+ if (pList == null)
+ {
+ ReturnResultFailed();
+ }
+ else
+ {
+ if (pList->GetCount() > 1)
+ {
+ listView.SetItemChecked(groupIndex, itemIndex, false);
+ __pContactValueListEvent = new (std::nothrow) ContactValueListItemProvider(pList);
+ ShowContactValuePopup(mainGroupIndex, mainItemIndex);
+ }
+ else if (pList->GetCount() == 1)
+ {
+ String* pContactValueInfo = static_cast<String *>(pList->GetAt(0));
+ int blankIndex = 0;
+ pContactValueInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pContactValueInfo->Remove(0, blankIndex + 1);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(__selectedIndex)), *(new (std::nothrow) String(*pContactValueInfo)));
+ delete pList;
+ }
+ }
+ }
+ }
+ else
+ {
+ Integer keyIndex(__selectedIndex);
+ __pTempContactValueHashMap->Remove(keyIndex, true);
+ }
+ }
+
+ if (listView.Equals(*__pListView) == true)
+ {
+ __pListView->SetFocus();
+
+ if (listView.IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ bool isChecked = true;
+ for (int groupIndex = 0; groupIndex < listView.GetGroupCount() && isChecked == true; groupIndex++)
+ {
+ int itemCount = listView.GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (listView.IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ isChecked = false;
+ break;
+ }
+ }
+ }
+
+ __pSelectAllButton->SetSelected(isChecked);
+ }
+ else if (listView.IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ __pSelectAllButton->SetSelected(false);
+ }
+ }
+ else if (listView.Equals(*__pSearchListView) == true)
+ {
+ __pSearchListView->SetFocus();
+
+ int searchedCount = __pPresentationModel->GetSearchedContactCount();
+
+ for (int index = 0; index < searchedCount; index++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+
+ __pListView->SetItemChecked(groupIndex, itemIndex, __pSearchListView->IsItemChecked(0, index));
+ }
+ }
+
+ UpdateBottomLabel();
+}
+
+void
+GroupContactListEditorForm::OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+void
+GroupContactListEditorForm::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+}
+
+void
+GroupContactListEditorForm::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ int groupIndex = (__selectedIndex >> LIST_VIEW_GROUP_INDEX_SHIFT) & LIST_VIEW_MASK;
+ int itemIndex = __selectedIndex & LIST_VIEW_MASK;
+
+ IList* pList = null;
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE ||
+ __launchType == ID_GROUP_CONTACT_SELECT_MESSAGE)
+ {
+ pList = __pPresentationModel->GetAllPhoneNumbersN(groupIndex, itemIndex);
+
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL ||
+ __launchType == ID_GROUP_CONTACT_SELECT_EMAIL)
+ {
+ pList = __pPresentationModel->GetAllEmailsN(groupIndex, itemIndex);
+ }
+
+ if (pList == null)
+ {
+ ReturnResultFailed();
+ }
+ else
+ {
+ String* pContactValueInfo = static_cast<String *>(pList->GetAt(index));
+ int blankIndex = 0;
+ pContactValueInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pContactValueInfo->Remove(0, blankIndex + 1);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(__selectedIndex)), *(new (std::nothrow) String(*pContactValueInfo)));
+ }
+
+ delete pList;
+
+ HideContactValuePopup();
+
+ if (__pListView->GetShowState() == true)
+ {
+ __pListView->SetItemChecked(groupIndex, itemIndex, true);
+
+ bool isChecked = true;
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount() && isChecked == true; groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ isChecked = false;
+ break;
+ }
+ }
+ }
+
+ __pSelectAllButton->SetSelected(isChecked);
+ }
+ else
+ {
+ groupIndex = (__selectedSearchIndex >> LIST_VIEW_GROUP_INDEX_SHIFT) & LIST_VIEW_MASK;
+ itemIndex = __selectedSearchIndex & LIST_VIEW_MASK;
+ __pSearchListView->SetItemChecked(groupIndex, itemIndex, true);
+
+ int searchedCount = __pPresentationModel->GetSearchedContactCount();
+
+ for (int index = 0; index < searchedCount; index++)
+ {
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+
+ __pListView->SetItemChecked(groupIndex, itemIndex, __pSearchListView->IsItemChecked(0, index));
+ }
+ }
+
+ UpdateBottomLabel();
+}
+
+void
+GroupContactListEditorForm::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+void
+GroupContactListEditorForm::OnFastScrollIndexSelected(Tizen::Ui::Control& source, Tizen::Base::String& index)
+{
+ __pListView->ScrollToItem(__pPresentationModel->GetKeyIndex(index), -1);
+ __pListView->Invalidate(false);
+}
+
+void
+GroupContactListEditorForm::OnContactsChanged(void)
+{
+ __pListView->SetFastScrollIndex(__pPresentationModel->GetAllKeys(), false);
+ __pListView->UpdateList();
+}
+
+void
+GroupContactListEditorForm::OnCategoriesChanged(void)
+{
+ SceneManager::GetInstance()->GoBackward(BackwardSceneTransition(IDSCN_GROUP_LIST,
+ SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_DESTROY_OPTION_DESTROY));
+}
+
+result
+GroupContactListEditorForm::RemoveSelectedContacts(void)
+{
+ for (int groupIndex = __pListView->GetGroupCount() - 1; groupIndex >= 0 ; groupIndex--)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex) - 1;
+ for (int itemIndex = itemCount; itemIndex >= 0; itemIndex--)
+ {
+ if (__pSelectAllButton->IsSelected() || __pListView->IsItemChecked(groupIndex, itemIndex))
+ {
+ __pPresentationModel->RemoveContactFromCategory(groupIndex, itemIndex);
+ }
+ }
+ }
+
+ return E_SUCCESS;
+}
+
+result
+GroupContactListEditorForm::UpdateBottomLabel(void)
+{
+ int selectedCount = 0;
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ selectedCount++;
+ }
+ }
+ }
+
+ String selected = ResourceManager::GetString(L"IDS_COM_POP_SELECTED");
+ selected.Append(L" (");
+ selected.Append(selectedCount);
+ selected.Append(L")");
+ __pBottomLabel->SetText(selected);
+ __pBottomLabel->Invalidate(false);
+
+ Footer* pFooter = GetFooter();
+
+ if (selectedCount > 0)
+ {
+ pFooter->SetItemEnabled(0, true);
+ }
+ else
+ {
+ pFooter->SetItemEnabled(0, false);
+ }
+
+ pFooter->Invalidate(true);
+
+ return E_SUCCESS;
+}
+
+void
+GroupContactListEditorForm::ShowContactValuePopup(int groupIndex, int itemIndex)
+{
+ delete __pMultipleContactValuePopup;
+ __pMultipleContactValuePopup = new (std::nothrow) Popup();
+ __pMultipleContactValuePopup->Construct(true, Dimension(W_CONTACT_VALUE_POPUP, H_CONTACT_VALUE_POPUP));
+ __pMultipleContactValuePopup->SetTitleText(__pPresentationModel->GetName(groupIndex, itemIndex));
+
+ Rectangle popupClientBounds = __pMultipleContactValuePopup->GetClientAreaBounds();
+
+ ListView* pListView = new (std::nothrow) ListView();
+ pListView->Construct(Rectangle(0, 0, popupClientBounds.width, H_CONTACT_VALUE_POPUP_LIST_VIEW));
+ pListView->SetItemProvider(*__pContactValueListEvent);
+ pListView->AddListViewItemEventListener(*this);
+
+ __pMultipleContactValuePopup->AddControl(*pListView);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle((popupClientBounds.width - W_CLOSE_BUTTON) / 2, Y_CLOSE_BUTTON, W_CLOSE_BUTTON, H_CLOSE_BUTTON), ResourceManager::GetString(L"IDS_COM_POP_CLOSE"));
+ pCancelButton->SetActionId(IDA_POPUP_CONTACT_VALUE_CLOSE);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pMultipleContactValuePopup->AddControl(*pCancelButton);
+ __pMultipleContactValuePopup->SetShowState(true);
+ __pMultipleContactValuePopup->Show();
+}
+
+void
+GroupContactListEditorForm::HideContactValuePopup(void)
+{
+ __pMultipleContactValuePopup->SetShowState(false);
+
+ delete __pContactValueListEvent;
+ __pContactValueListEvent = null;
+
+ Invalidate(true);
+}
+
+void
+GroupContactListEditorForm::ReturnValues(RequestId requestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue)
+{
+ AppControlProviderManager* pAppManager = AppControlProviderManager::GetInstance();
+ pAppManager->SendAppControlResult(requestId, appCtrlResult, pReturnValue);
+
+ UiApp* pApp = UiApp::GetInstance();
+ pApp->Terminate();
+}
+
+void
+GroupContactListEditorForm::ReturnMultipleValues(void)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ String* pKeyType = new (std::nothrow) String(RETURN_KEY_TYPE);
+ String* pKeyValue = new (std::nothrow) String(RETURN_KEY_VALUE);
+ String* pMultiValue = new (std::nothrow) String();
+
+ HashMap* pReturnValue = new (std::nothrow) HashMap();
+ pReturnValue->Construct();
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ pReturnValue->Add(pKeyType, new (std::nothrow) String(RETURN_TYPE_PHONE));
+
+ IMapEnumerator* pMapEnum = __pTempContactValueHashMap->GetMapEnumeratorN();
+ while (pMapEnum->MoveNext() == E_SUCCESS)
+ {
+ String* pValue = static_cast<String*> (pMapEnum->GetValue());
+ pMultiValue->Append(*pValue + DELIMITER_SEMICOLON);
+ }
+ pMultiValue->Remove(pMultiValue->GetLength() - 1, 1);
+ pReturnValue->Add(pKeyValue, pMultiValue);
+
+ delete pMapEnum;
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ pReturnValue->Add(pKeyType, new (std::nothrow) String(RETURN_TYPE_EMAIL));
+
+ IMapEnumerator* pMapEnum = __pTempContactValueHashMap->GetMapEnumeratorN();
+ while (pMapEnum->MoveNext() == E_SUCCESS)
+ {
+ String* pValue = static_cast<String*> (pMapEnum->GetValue());
+ pMultiValue->Append(*pValue + DELIMITER_SEMICOLON);
+ }
+ pMultiValue->Remove(pMultiValue->GetLength() - 1, 1);
+ pReturnValue->Add(pKeyValue, pMultiValue);
+
+ delete pMapEnum;
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_CONTACT_ID)
+ {
+ pReturnValue->Add(pKeyType, new (std::nothrow) String(RETURN_TYPE_CONTACT_ID));
+
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ String pContactId(L"");
+ pContactId.Append(__pPresentationModel->GetContactId(groupIndex, itemIndex));
+ pMultiValue->Append(pContactId + DELIMITER_SEMICOLON);
+ }
+ }
+ }
+ pMultiValue->Remove(pMultiValue->GetLength() - 1, 1);
+ pReturnValue->Add(pKeyValue, pMultiValue);
+ }
+ else
+ {
+ delete pKeyType;
+ delete pKeyValue;
+ delete pMultiValue;
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, pReturnValue);
+
+ return;
+ }
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+ }
+}
+
+void
+GroupContactListEditorForm::ReturnResultFailed(void)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, null);
+}
+
+result
+GroupContactListEditorForm::LaunchAppControl(void)
+{
+ result r = E_SUCCESS;
+ AppControl* pAc = null;
+
+ HashMap extraData;
+ extraData.Construct();
+
+ if (__launchType == ID_GROUP_CONTACT_SELECT_MESSAGE)
+ {
+ pAc = AppManager::FindAppControlN(PROVIDER_ID_MESSAGE, OPERATION_ID_COMPOSE);
+ TryCatch(pAc != null, r = E_FAILURE, "Unable to find appcontrol");
+
+ String toValue;
+
+ IMapEnumerator* pMapEnum = __pTempContactValueHashMap->GetMapEnumeratorN();
+ while (pMapEnum->MoveNext() == E_SUCCESS)
+ {
+ String* pValue = static_cast<String*> (pMapEnum->GetValue());
+ toValue.Append(*pValue);
+ toValue.Append(DELIMITER_SEMICOLON);
+ }
+ delete pMapEnum;
+
+ toValue.Remove(toValue.GetLength() - 1, 1);
+
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TYPE), new (std::nothrow) String(INPUT_TYPE_SMS));
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TO), new (std::nothrow) String(toValue));
+ }
+ else if (__launchType == ID_GROUP_CONTACT_SELECT_EMAIL)
+ {
+ pAc = AppManager::FindAppControlN(PROVIDER_ID_EMAIL, OPERATION_ID_COMPOSE);
+ TryCatch(pAc != null, r = E_FAILURE, "Unable to find appcontrol");
+
+ String toValue;
+
+ IMapEnumerator* pMapEnum = __pTempContactValueHashMap->GetMapEnumeratorN();
+ while (pMapEnum->MoveNext() == E_SUCCESS)
+ {
+ String* pValue = static_cast<String*> (pMapEnum->GetValue());
+ toValue.Append(*pValue);
+ toValue.Append(DELIMITER_SEMICOLON);
+ }
+ delete pMapEnum;
+
+ toValue.Remove(toValue.GetLength() - 1, 1);
+
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TO), new (std::nothrow) String(toValue));
+ }
+
+ if (pAc != null)
+ {
+ r = pAc->Start(null, null, &extraData, null);
+ TryCatch(r == E_SUCCESS, , "Failed to launch appcontrol");
+ }
+
+ extraData.RemoveAll(true);
+
+CATCH:
+ delete pAc;
+
+ return r;
+}
+
+void
+GroupContactListEditorForm::OnKeypadWillOpen(Tizen::Ui::Control& source)
+{
+ SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, false);
+}
+
+void
+GroupContactListEditorForm::OnKeypadOpened(Tizen::Ui::Control& source)
+{
+}
+
+void
+GroupContactListEditorForm::OnKeypadClosed(Tizen::Ui::Control& source)
+{
+ SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, true);
+ UpdateBottomLabel();
+}
+
+void
+GroupContactListEditorForm::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction)
+{
+}
+
+void
+GroupContactListEditorForm::OnForeground(void)
+{
+}
+
+void
+GroupContactListEditorForm::OnBackground(void)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ pSceneManager->GoBackward(BackwardSceneTransition());
+}
+
+void
+GroupContactListEditorForm::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo & touchInfo)
+{
+ GroupedListView* pList = static_cast<GroupedListView*>(&const_cast<Control&>(source));
+ if (pList != null)
+ {
+ pList->SetFocus();
+ }
+}
+
+void
+GroupContactListEditorForm::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+GroupContactListEditorForm::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+GroupContactListEditorForm::OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+GroupContactListEditorForm::OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
--- /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 CtGroupContactListForm.cpp
+ * @brief This is the implementation file for the GroupContactListForm class.
+ */
+
+#include "CtContactListItem.h"
+#include "CtContactsApp.h"
+#include "CtGroupContactListForm.h"
+#include "CtGroupContactListPresentationModel.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtSearchListEventListener.h"
+#include "CtSearchListItem.h"
+#include "CtTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Utility;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Social;
+
+static const int IDA_FOOTER_MORE = 10;
+static const int IDA_FOOTER_ADD_MEMBER = 11;
+static const int IDA_MORE_REMOVE = 12;
+static const int IDA_LIST_ELEMENT_CALL = 20;
+static const int IDA_LIST_ELEMENT_MESSAGE = 21;
+static const int IDA_LIST_ELEMENT_VIDEO_CALL = 22;
+static const int IDA_LIST_ELEMENT_DELETE = 23;
+static const int IDA_POPUP_DELETE_YES = 30;
+static const int IDA_POPUP_DELETE_CANCEL = 31;
+static const int IDA_POPUP_CONTACT_VALUE_CLOSE = 32;
+
+static const wchar_t* IDB_NO_CONTENTS = L"00_Nocontents_text.png";
+static const wchar_t* IDB_MORE_NORMAL = L"00_icon_more.png";
+static const wchar_t* IDB_MORE_PRESSED = L"00_icon_more_press.png";
+
+static const int H_SEARCHBAR = 108;
+static const int H_ITEM = 112;
+static const int H_GROUP_ITEM = 76;
+static const int X_MORE = 55;
+
+static const int X_EMPTY_IMAGE = 220;
+static const int Y_EMPTY_IMAGE = 300;
+static const int W_EMPTY_IMAGE = 280;
+static const int H_EMPTY_IMAGE = 280;
+static const int Y_EMPTY_COMMENT = 618;
+static const int H_EMPTY_COMMENT = 38;
+static const int W_DELETE_POPUP = 720;
+static const int H_DELETE_POPUP = 208;
+static const int H_DELETE_LABEL = 94;
+static const int Y_DELETE_BUTTON = 114;
+static const int W_DELETE_BUTTON = 314;
+static const int H_DELETE_BUTTON = 74;
+static const int W_DELETE_BUTTON_GAP = 20;
+static const int W_CONTACT_VALUE_POPUP = 720;
+static const int H_CONTACT_VALUE_POPUP = 700;
+static const int H_CONTACT_VALUE_POPUP_LIST_VIEW = 506;
+static const int Y_CLOSE_BUTTON = 526;
+static const int H_CLOSE_BUTTON = 74;
+static const int W_CLOSE_BUTTON = 394;
+
+static const int FONT_SIZE_EMPTY_COMMENT = 32;
+static const int FONT_SIZE_DELETE_CONFIRM = 42;
+
+static const unsigned int COLOR_EMPTY_COMMENT = Color32<102, 102, 102>::Value;
+
+static const int LIST_VIEW_GROUP_INDEX_SHIFT = 16;
+static const int LIST_VIEW_MASK = 0xFFFF;
+
+static const wchar_t* INPUT_KEY_TYPE = L"type";
+static const wchar_t* INPUT_TYPE_VIDEO = L"video";
+static const wchar_t* INPUT_TYPE_VOICE = L"voice";
+static const wchar_t* INPUT_TYPE_SMS = L"SMS";
+static const wchar_t* INPUT_KEY_TEL = L"tel";
+static const wchar_t* INPUT_KEY_TO = L"to";
+
+GroupContactListForm::GroupContactListForm(void)
+ : __pListView(null)
+ , __pSearchListView(null)
+ , __pSearchBar(null)
+ , __pDeletePopup(null)
+ , __pMultipleContactValuePopup(null)
+ , __pEmptyImageLabel(null)
+ , __pEmptyCommentLabel(null)
+ , __pContextMenuMore(null)
+ , __categoryId(0)
+ , __pContactValueListEvent(null)
+ , __pPresentationModel(null)
+ , __pSearchListEvent(null)
+ , __sweptItemIndex(-1)
+ , __selectedIndex(-1)
+{
+}
+
+GroupContactListForm::~GroupContactListForm(void)
+{
+}
+
+void
+GroupContactListForm::Initialize(void)
+{
+ Construct(FORM_STYLE_NORMAL | FORM_STYLE_INDICATOR | FORM_STYLE_HEADER | FORM_STYLE_FOOTER);
+}
+
+result
+GroupContactListForm::OnInitializing(void)
+{
+ Footer* pFooter = GetFooter();
+ pFooter->SetBackButton();
+ pFooter->AddActionEventListener(*this);
+
+ SetFormBackEventListener(this);
+
+ __pPresentationModel = GroupContactListPresentationModel::GetInstance();
+ __pPresentationModel->AddContactChangeListener(*this);
+
+ __pListView = new (std::nothrow) GroupedListView();
+ __pListView->Construct(Rectangle(0, H_SEARCHBAR, GetClientAreaBounds().width, GetClientAreaBounds().height - H_SEARCHBAR), GROUPED_LIST_VIEW_STYLE_INDEXED, true, true);
+ __pListView->SetItemProvider(*this);
+ __pListView->AddFastScrollListener(*this);
+ __pListView->AddGroupedListViewItemEventListener(*this);
+ __pListView->AddTouchEventListener(*this);
+ AddControl(*__pListView);
+
+ __pSearchBar = new (std::nothrow) SearchBar();
+ __pSearchBar->Construct(Rectangle(0, 0, GetClientAreaBounds().width, H_SEARCHBAR));
+ __pSearchBar->SetGuideText(ResourceManager::GetString(L"IDS_COM_BODY_SEARCH"));
+ __pSearchBar->AddSearchBarEventListener(*this);
+ __pSearchBar->AddTextEventListener(*this);
+ __pSearchBar->AddKeypadEventListener(*this);
+ __pSearchBar->SetContentAreaSize(Dimension(0, 0));
+
+ __pSearchListEvent = new (std::nothrow) SearchListEventListener(LIST_ANNEX_STYLE_NORMAL, __pPresentationModel);
+ AddControl(*__pSearchBar);
+
+ __pSearchListView = new (std::nothrow) GroupedListView();
+ __pSearchListView->Construct(Rectangle(0, H_SEARCHBAR, GetClientAreaBounds().width, GetClientAreaBounds().height - H_SEARCHBAR), GROUPED_LIST_VIEW_STYLE_INDEXED, true, false);
+ __pSearchListView->SetItemProvider(*__pSearchListEvent);
+ __pSearchListView->AddGroupedListViewItemEventListener(*this);
+ __pSearchListView->AddTouchEventListener(*this);
+ __pSearchListView->SetTextOfEmptyList(ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pSearchListView->SetShowState(false);
+ AddControl(*__pSearchListView);
+
+ __pEmptyImageLabel = new (std::nothrow) Label();
+ __pEmptyImageLabel->Construct(Rectangle(X_EMPTY_IMAGE, Y_EMPTY_IMAGE, W_EMPTY_IMAGE, H_EMPTY_IMAGE), L"");
+ Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_NO_CONTENTS);
+ if (pBitmap != null)
+ {
+ __pEmptyImageLabel->SetBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+ __pEmptyImageLabel->SetShowState(false);
+
+ AddControl(*__pEmptyImageLabel);
+
+ __pEmptyCommentLabel = new (std::nothrow) Label();
+ __pEmptyCommentLabel->Construct(Rectangle(0, Y_EMPTY_COMMENT, GetClientAreaBounds().width, H_EMPTY_COMMENT),
+ ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pEmptyCommentLabel->SetTextConfig(FONT_SIZE_EMPTY_COMMENT, LABEL_TEXT_STYLE_NORMAL);
+ __pEmptyCommentLabel->SetTextColor(Color(COLOR_EMPTY_COMMENT));
+ __pEmptyCommentLabel->SetShowState(false);
+
+ AddControl(*__pEmptyCommentLabel);
+
+ __pContextMenuMore = new (std::nothrow) ContextMenu();
+ __pContextMenuMore->Construct(Point(X_MORE, GetClientAreaBounds().y + GetClientAreaBounds().height), CONTEXT_MENU_STYLE_LIST);
+ __pContextMenuMore->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_REMOVE"), IDA_MORE_REMOVE);
+ __pContextMenuMore->AddActionEventListener(*this);
+
+ return E_SUCCESS;
+}
+
+result
+GroupContactListForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pPresentationModel != null)
+ {
+ __pPresentationModel->RemoveContactChangeListener(*this);
+ }
+
+ delete __pDeletePopup;
+ delete __pContextMenuMore;
+ delete __pMultipleContactValuePopup;
+
+ return r;
+}
+
+void
+GroupContactListForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_GROUP_LIST, SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+}
+
+void
+GroupContactListForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ switch (actionId)
+ {
+ case IDA_FOOTER_ADD_MEMBER:
+ {
+ ArrayList* pArgList = new (std::nothrow) ArrayList();
+ pArgList->Construct();
+
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ for (int itemIndex = 0; itemIndex < __pListView->GetItemCountAt(groupIndex); itemIndex++)
+ {
+ pArgList->Add(*(new (std::nothrow) Integer(__pPresentationModel->GetContactId(groupIndex, itemIndex))));
+ }
+ }
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_SELECTOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pArgList);
+ }
+ break;
+ case IDA_FOOTER_MORE:
+ {
+ __pContextMenuMore->SetShowState(true);
+ __pContextMenuMore->Show();
+ }
+ break;
+ case IDA_MORE_REMOVE:
+ {
+ ArrayList* pArgList = new (std::nothrow) ArrayList();
+ pArgList->Construct();
+ pArgList->Add(*(new (std::nothrow) Integer(__categoryId)));
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_CONTACT_LIST_EDITOR), pArgList);
+ }
+ break;
+ case IDA_POPUP_DELETE_YES:
+ {
+ int groupIndex = (__sweptItemIndex >> LIST_VIEW_GROUP_INDEX_SHIFT) & LIST_VIEW_MASK;
+ int itemIndex = __sweptItemIndex & LIST_VIEW_MASK;
+
+ __pPresentationModel->RemoveContact(groupIndex, itemIndex);
+
+ HideDeletePopup();
+ }
+ break;
+ case IDA_POPUP_DELETE_CANCEL:
+ {
+ HideDeletePopup();
+ }
+ break;
+ case IDA_POPUP_CONTACT_VALUE_CLOSE:
+ {
+ HideContactValuePopup();
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+GroupContactListForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (pArgs != null)
+ {
+ if (previousSceneId.Equals(IDSCN_GROUP_LIST, true))
+ {
+ Integer* pCategoryId = null;
+ IEnumerator* pEnum = pArgs->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pCategoryId = static_cast<Integer*>(pEnum->GetCurrent());
+ if (pCategoryId != null)
+ {
+ __categoryId = pCategoryId->ToInt();
+
+ if (__categoryId == ID_GROUP_CONTACT_NOT_ASSIGNED)
+ {
+ __pPresentationModel->InitializeGroupContactList(Tizen::Social::INVALID_RECORD_ID);
+ }
+ else
+ {
+ __pPresentationModel->InitializeGroupContactList(__categoryId);
+ }
+
+ __pListView->SetFastScrollIndex(__pPresentationModel->GetAllKeys(), false);
+ }
+ }
+ delete pEnum;
+ }
+ else if (previousSceneId.Equals(IDSCN_CONTACT_SELECTOR, true))
+ {
+ AddSelectedContactToCategory(pArgs);
+ }
+
+ pArgs->RemoveAll(true);
+ delete pArgs;
+ }
+
+ if (__pPresentationModel->IsCategoryValid())
+ {
+ String groupName = __pPresentationModel->GetCategoryName();
+
+ Header* pHeader = GetHeader();
+ pHeader->SetTitleText(groupName);
+
+ Footer* pFooter = GetFooter();
+ pFooter->RemoveAllItems();
+ pFooter->RemoveButtonAt(BUTTON_POSITION_LEFT);
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ if (__pPresentationModel->GetContactCount() == 0)
+ {
+ __pSearchBar->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ }
+
+ return;
+ }
+
+ if (__categoryId != ID_GROUP_CONTACT_NOT_ASSIGNED)
+ {
+ FooterItem footerItemAdd;
+ footerItemAdd.Construct(IDA_FOOTER_ADD_MEMBER);
+ footerItemAdd.SetText(ResourceManager::GetString(L"IDS_PB_SK_ADD_MEMBER"));
+ pFooter->AddItem(footerItemAdd);
+
+ if (__pPresentationModel->GetAllContactsCount() <= __pPresentationModel->GetContactCount())
+ {
+ pFooter->SetItemEnabled(0, false);
+ }
+
+ if (__pPresentationModel->GetContactCount() > 0)
+ {
+ ButtonItem buttonItemMore;
+ buttonItemMore.Construct(BUTTON_ITEM_STYLE_ICON, IDA_FOOTER_MORE);
+ buttonItemMore.SetBackgroundBitmap(BUTTON_ITEM_STATUS_NORMAL, ResourceManager::GetBitmapN(IDB_MORE_NORMAL));
+ buttonItemMore.SetBackgroundBitmap(BUTTON_ITEM_STATUS_PRESSED, ResourceManager::GetBitmapN(IDB_MORE_PRESSED));
+ pFooter->SetButton(BUTTON_POSITION_LEFT, buttonItemMore);
+ }
+ }
+
+ if (__pPresentationModel->GetContactCount() > 0)
+ {
+ __pSearchBar->SetShowState(true);
+ __pListView->SetShowState(true);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+
+ __pListView->SetFastScrollIndex(__pPresentationModel->GetAllKeys(), false);
+ __pListView->UpdateList();
+ }
+ else
+ {
+ __pSearchBar->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ }
+ }
+ pContactsApp->AddContactsAppChangeEventListener(*this);
+}
+
+void
+GroupContactListForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (__pSearchBar->GetMode() == SEARCH_BAR_MODE_INPUT)
+ {
+ __pSearchBar->SetMode(SEARCH_BAR_MODE_NORMAL);
+ }
+ pContactsApp->RemoveContactsAppChangeEventListener(*this);
+}
+
+result
+GroupContactListForm::AddSelectedContactToCategory(Tizen::Base::Collection::IList* pArgs)
+{
+ Integer* pContactId = null;
+ IEnumerator* pEnum = pArgs->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pContactId = static_cast<Integer*>(pEnum->GetCurrent());
+ if (pContactId != null)
+ {
+ __pPresentationModel->AddContactToCategory(pContactId->ToInt());
+ }
+ }
+ delete pEnum;
+
+ return E_SUCCESS;
+}
+
+int
+GroupContactListForm::GetGroupCount(void)
+{
+ return __pPresentationModel->GetKeyCount();
+}
+
+int
+GroupContactListForm::GetItemCount(int groupIndex)
+{
+ return __pPresentationModel->GetContactCount(groupIndex);
+}
+
+Tizen::Ui::Controls::ListItemBase*
+GroupContactListForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ String name;
+ Bitmap* pThumbnail = null;
+
+ CustomItem* pItem = new (std::nothrow) CustomItem();
+ pItem->Construct(Dimension(itemWidth, H_ITEM), LIST_ANNEX_STYLE_NORMAL);
+
+ __pPresentationModel->GetContactItemInfoN(groupIndex, itemIndex, name, pThumbnail);
+
+ ContactListItem* pCustomElement = new (std::nothrow) ContactListItem(name, pThumbnail);
+ pItem->AddElement(Rectangle(0, 0, itemWidth, H_ITEM), 0, *(static_cast<ICustomElement*>(pCustomElement)));
+
+ bool isEnabled = true;
+ if (__pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex).IsEmpty())
+ {
+ isEnabled = false;
+ }
+
+ ListContextItem* pItemContext = new (std::nothrow) ListContextItem();
+ pItemContext->Construct();
+ pItemContext->AddElement(IDA_LIST_ELEMENT_CALL, ResourceManager::GetString(L"IDS_COM_BODY_CALL"), isEnabled);
+ pItemContext->AddElement(IDA_LIST_ELEMENT_MESSAGE, ResourceManager::GetString(L"IDS_COM_BODY_MESSAGE"), isEnabled);
+#if __SUPPORT_VIDEO_CALL
+ pItemContext->AddElement(IDA_LIST_ELEMENT_VIDEO_CALL, ResourceManager::GetString(L"IDS_COM_BODY_VIDEO_CALL"), isEnabled);
+#endif
+ pItemContext->AddElement(IDA_LIST_ELEMENT_DELETE, ResourceManager::GetString(L"IDS_COM_SK_DELETE"));
+
+ pItem->SetContextItem(pItemContext);
+
+ return pItem;
+}
+
+Tizen::Ui::Controls::GroupItem*
+GroupContactListForm::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ GroupItem* pItem = new (std::nothrow) GroupItem();
+ pItem->Construct(Dimension(itemWidth, H_GROUP_ITEM));
+ pItem->SetElement(__pPresentationModel->GetKey(groupIndex), null);
+
+ return pItem;
+}
+
+bool
+GroupContactListForm::DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+bool
+GroupContactListForm::DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+void
+GroupContactListForm::OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+ int index = 0;
+
+ index |= groupIndex << LIST_VIEW_GROUP_INDEX_SHIFT;
+ index |= itemIndex;
+
+ __sweptItemIndex = index;
+
+ switch (elementId)
+ {
+ case IDA_LIST_ELEMENT_DELETE:
+ {
+ ShowDeletePopup();
+ }
+ break;
+ case IDA_LIST_ELEMENT_CALL:
+ {
+ String phoneNumber = __pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex);
+ LaunchAppControl(PROVIDER_ID_PHONE, OPERATION_ID_CALL, phoneNumber, INPUT_TYPE_VOICE);
+ }
+ break;
+ case IDA_LIST_ELEMENT_MESSAGE:
+ {
+ String phoneNumber = __pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex);
+ LaunchAppControl(PROVIDER_ID_MESSAGE, OPERATION_ID_COMPOSE, phoneNumber);
+ }
+ break;
+ case IDA_LIST_ELEMENT_VIDEO_CALL:
+ {
+ String phoneNumber = __pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex);
+ LaunchAppControl(PROVIDER_ID_PHONE, OPERATION_ID_CALL, phoneNumber, INPUT_TYPE_VIDEO);
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+GroupContactListForm::OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus state)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (listView.Equals(*__pSearchListView) == true)
+ {
+ __pPresentationModel->GetItemMainIndex(itemIndex, groupIndex, itemIndex);
+ }
+
+ int index = 0;
+
+ index |= groupIndex << LIST_VIEW_GROUP_INDEX_SHIFT;
+ index |= itemIndex;
+
+ __selectedIndex = index;
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ IList* pList = null;
+ HashMap* pReturnValue = new (std::nothrow) HashMap();
+ pReturnValue->Construct();
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ pList = __pPresentationModel->GetAllPhoneNumbersN(groupIndex, itemIndex);
+
+ if (pList == null)
+ {
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, pReturnValue);
+ }
+ else
+ {
+ if (pList->GetCount() > 1)
+ {
+ __pContactValueListEvent = new (std::nothrow) ContactValueListItemProvider(pList);
+ ShowContactValuePopup(groupIndex, itemIndex);
+ }
+ else if (pList->GetCount() == 1)
+ {
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_TYPE), new (std::nothrow) String(RETURN_TYPE_PHONE));
+
+ String* pPhoneNumberInfo = static_cast<String *>(pList->GetAt(0));
+ int blankIndex = 0;
+
+ pPhoneNumberInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pPhoneNumberInfo->Remove(0, blankIndex + 1);
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_VALUE), new (std::nothrow) String(*pPhoneNumberInfo));
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+ delete pList;
+ }
+ }
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ pList = __pPresentationModel->GetAllEmailsN(groupIndex, itemIndex);
+
+ if (pList == null)
+ {
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, pReturnValue);
+ }
+ else
+ {
+ if (pList->GetCount() > 1)
+ {
+ __pContactValueListEvent = new (std::nothrow) ContactValueListItemProvider(pList);
+ ShowContactValuePopup(groupIndex, itemIndex);
+ }
+ else if (pList->GetCount() == 1)
+ {
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_TYPE), new (std::nothrow) String(RETURN_TYPE_EMAIL));
+
+ String* pEmailInfo = static_cast<String *>(pList->GetAt(0));
+ int blankIndex = 0;
+ pEmailInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pEmailInfo->Remove(0, blankIndex + 1);
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_VALUE), new (std::nothrow) String(*pEmailInfo));
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+ delete pList;
+ }
+ }
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_CONTACT_ID)
+ {
+ AppCtrlResult appCtrlResult = APP_CTRL_RESULT_SUCCEEDED;
+ RecordId contactId = __pPresentationModel->GetContactId(groupIndex, itemIndex);
+ if (contactId == INVALID_RECORD_ID)
+ {
+ appCtrlResult = APP_CTRL_RESULT_FAILED;
+ }
+ else
+ {
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_TYPE), new (std::nothrow) String(RETURN_TYPE_CONTACT_ID));
+
+ String pContactId;
+ pContactId.Append(contactId);
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_VALUE), new (std::nothrow) String(pContactId));
+ }
+
+ ReturnValues(pContactsApp->GetRequestId(), appCtrlResult, pReturnValue);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_VCARD)
+ {
+ AppCtrlResult appCtrlResult = APP_CTRL_RESULT_SUCCEEDED;
+ String vCardPath = __pPresentationModel->ExportToVcard(groupIndex, itemIndex);
+ if (vCardPath.IsEmpty())
+ {
+ appCtrlResult = APP_CTRL_RESULT_FAILED;
+ }
+ else
+ {
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_TYPE), new (std::nothrow) String(RETURN_TYPE_VCARD));
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_VALUE), new (std::nothrow) String(vCardPath));
+ }
+
+ ReturnValues(pContactsApp->GetRequestId(), appCtrlResult, pReturnValue);
+ }
+
+ delete pReturnValue;
+ }
+ else
+ {
+ ArrayList* pContactId = new (std::nothrow) ArrayList();
+ pContactId->Construct();
+
+ pContactId->Add(*(new (std::nothrow) Integer(__pPresentationModel->GetContactId(groupIndex, itemIndex))));
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_DETAILS, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pContactId);
+ }
+}
+
+void
+GroupContactListForm::OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+void
+GroupContactListForm::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+}
+
+void
+GroupContactListForm::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ IList* pList = null;
+
+ HashMap* pReturnValue = new (std::nothrow) HashMap();
+ pReturnValue->Construct();
+
+ int groupIndex = (__selectedIndex >> LIST_VIEW_GROUP_INDEX_SHIFT) & LIST_VIEW_MASK;
+ int itemIndex = __selectedIndex & LIST_VIEW_MASK;
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_TYPE), new (std::nothrow) String(RETURN_TYPE_PHONE));
+
+ pList = __pPresentationModel->GetAllPhoneNumbersN(groupIndex, itemIndex);
+ String* pPhoneNumberInfo = static_cast<String *>(pList->GetAt(index));
+ int blankIndex = 0;
+ pPhoneNumberInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pPhoneNumberInfo->Remove(0, blankIndex + 1);
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_VALUE), new (std::nothrow) String(*pPhoneNumberInfo));
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_TYPE), new (std::nothrow) String(RETURN_TYPE_EMAIL));
+
+ pList = __pPresentationModel->GetAllEmailsN(groupIndex, itemIndex);
+ String* pEmailInfo = static_cast<String *>(pList->GetAt(index));
+ int blankIndex = 0;
+ pEmailInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pEmailInfo->Remove(0, blankIndex + 1);
+ pReturnValue->Add(new (std::nothrow) String(RETURN_KEY_VALUE), new (std::nothrow) String(*pEmailInfo));
+ }
+
+ delete pList;
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+}
+
+void
+GroupContactListForm::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+void
+GroupContactListForm::OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, SearchBarMode mode)
+{
+ if (mode == SEARCH_BAR_MODE_NORMAL)
+ {
+ __pListView->SetShowState(true);
+ __pSearchListView->SetShowState(false);
+ __pPresentationModel->ResetSearchedContactList();
+ __pSearchListView->UpdateList();
+ }
+}
+
+void
+GroupContactListForm::OnTextValueChanged(const Tizen::Ui::Control& source)
+{
+ String searchText = __pSearchBar->GetText();
+ searchText.Trim();
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_HAS_PHONE_ONLY);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_HAS_EMAIL_ONLY);
+ }
+ else
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_NORMAL);
+ }
+
+ if (searchText.GetLength() != 0)
+ {
+ __pSearchListView->SetShowState(true);
+ __pListView->SetShowState(false);
+ }
+ else
+ {
+ __pSearchListView->SetShowState(false);
+ __pListView->SetShowState(true);
+ }
+
+ __pSearchListView->UpdateList();
+}
+
+void
+GroupContactListForm::OnFastScrollIndexSelected (Tizen::Ui::Control& source, Tizen::Base::String& index)
+{
+ __pListView->ScrollToItem(__pPresentationModel->GetKeyIndex(index), -1);
+ __pListView->Invalidate(false);
+}
+
+void
+GroupContactListForm::OnTextValueChangeCanceled(const Tizen::Ui::Control& source)
+{
+}
+
+void
+GroupContactListForm::OnContactsChanged(void)
+{
+ if (__categoryId != ID_GROUP_CONTACT_NOT_ASSIGNED)
+ {
+ Footer* pFooter = GetFooter();
+ pFooter->RemoveButtonAt(BUTTON_POSITION_LEFT);
+
+ if (__pPresentationModel->GetAllContactsCount() <= __pPresentationModel->GetContactCount())
+ {
+ pFooter->SetItemEnabled(0, false);
+ }
+ else
+ {
+ pFooter->SetItemEnabled(0, true);
+ }
+
+ if (__pPresentationModel->GetContactCount() > 0)
+ {
+ ButtonItem buttonItemMore;
+ buttonItemMore.Construct(BUTTON_ITEM_STYLE_ICON, IDA_FOOTER_MORE);
+ buttonItemMore.SetBackgroundBitmap(BUTTON_ITEM_STATUS_NORMAL, ResourceManager::GetBitmapN(IDB_MORE_NORMAL));
+ buttonItemMore.SetBackgroundBitmap(BUTTON_ITEM_STATUS_PRESSED, ResourceManager::GetBitmapN(IDB_MORE_PRESSED));
+ pFooter->SetButton(BUTTON_POSITION_LEFT, buttonItemMore);
+ }
+ }
+
+ if (__pPresentationModel->GetContactCount() > 0)
+ {
+ __pSearchBar->SetShowState(true);
+ __pListView->SetShowState(true);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+
+ __pListView->SetFastScrollIndex(__pPresentationModel->GetAllKeys(), false);
+ __pListView->UpdateList();
+ }
+ else
+ {
+ __pSearchBar->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ }
+}
+
+void
+GroupContactListForm::OnCategoriesChanged(void)
+{
+ if (__pPresentationModel->IsCategoryValid() == false)
+ {
+ SceneManager::GetInstance()->GoBackward(BackwardSceneTransition(IDSCN_GROUP_LIST));
+ }
+ else
+ {
+ __pListView->UpdateList();
+ }
+}
+
+void
+GroupContactListForm::ShowDeletePopup(void)
+{
+ if (__pDeletePopup == null)
+ {
+ __pDeletePopup = new (std::nothrow) Popup();
+ __pDeletePopup->Construct(false, Dimension(W_DELETE_POPUP, H_DELETE_POPUP));
+
+ Rectangle popupClientBounds = __pDeletePopup->GetClientAreaBounds();
+
+ Label* pLabel = new (std::nothrow) Label();
+ pLabel->Construct(Rectangle(0, 0, popupClientBounds.width, H_DELETE_LABEL), ResourceManager::GetString(L"IDS_COM_SK_DELETE") + L"?");
+ pLabel->SetTextConfig(FONT_SIZE_DELETE_CONFIRM, LABEL_TEXT_STYLE_BOLD);
+ pLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+
+ Button* pDeleteButton = new (std::nothrow) Button();
+ pDeleteButton->Construct(Rectangle(0, Y_DELETE_BUTTON, W_DELETE_BUTTON, H_DELETE_BUTTON), ResourceManager::GetString(L"IDS_COM_SK_DELETE"));
+ pDeleteButton->SetActionId(IDA_POPUP_DELETE_YES);
+ pDeleteButton->AddActionEventListener(*this);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle(W_DELETE_BUTTON + W_DELETE_BUTTON_GAP, Y_DELETE_BUTTON, W_DELETE_BUTTON, H_DELETE_BUTTON), ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
+ pCancelButton->SetActionId(IDA_POPUP_DELETE_CANCEL);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pDeletePopup->AddControl(*pLabel);
+ __pDeletePopup->AddControl(*pDeleteButton);
+ __pDeletePopup->AddControl(*pCancelButton);
+ }
+
+ __pDeletePopup->SetShowState(true);
+ __pDeletePopup->Show();
+}
+
+void
+GroupContactListForm::HideDeletePopup(void)
+{
+ delete __pDeletePopup;
+ __pDeletePopup = null;
+
+ delete __pContactValueListEvent;
+ __pContactValueListEvent = null;
+
+ Invalidate(true);
+}
+
+void
+GroupContactListForm::ShowContactValuePopup(int groupIndex, int itemIndex)
+{
+ delete __pMultipleContactValuePopup;
+ __pMultipleContactValuePopup = new (std::nothrow) Popup();
+ __pMultipleContactValuePopup->Construct(true, Dimension(W_CONTACT_VALUE_POPUP, H_CONTACT_VALUE_POPUP));
+ __pMultipleContactValuePopup->SetTitleText(__pPresentationModel->GetName(groupIndex, itemIndex));
+
+ Rectangle popupClientBounds = __pMultipleContactValuePopup->GetClientAreaBounds();
+
+ ListView* pListView = new (std::nothrow) ListView();
+ pListView->Construct(Rectangle(0, 0, popupClientBounds.width, H_CONTACT_VALUE_POPUP_LIST_VIEW));
+ pListView->SetItemProvider(*__pContactValueListEvent);
+ pListView->AddListViewItemEventListener(*this);
+
+ __pMultipleContactValuePopup->AddControl(*pListView);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle((popupClientBounds.width - W_CLOSE_BUTTON) / 2, Y_CLOSE_BUTTON, W_CLOSE_BUTTON, H_CLOSE_BUTTON), ResourceManager::GetString(L"IDS_COM_POP_CLOSE"));
+ pCancelButton->SetActionId(IDA_POPUP_CONTACT_VALUE_CLOSE);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pMultipleContactValuePopup->AddControl(*pCancelButton);
+ __pMultipleContactValuePopup->SetShowState(true);
+ __pMultipleContactValuePopup->Show();
+}
+
+void
+GroupContactListForm::HideContactValuePopup(void)
+{
+ __pMultipleContactValuePopup->SetShowState(false);
+
+ delete __pContactValueListEvent;
+ __pContactValueListEvent = null;
+
+ Invalidate(true);
+}
+
+result
+GroupContactListForm::ParseAppControlArgument(const Tizen::Base::String& argument, Tizen::Base::String& type, Tizen::Base::String& content)
+{
+ result r = E_SUCCESS;
+
+ if (argument.IsEmpty() || argument.Contains(DELIMITER) == false)
+ {
+ return E_FAILURE;
+ }
+
+ StringTokenizer stringToken(argument, DELIMITER);
+
+ r = stringToken.GetNextToken(type);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to get type", GetErrorMessage(r));
+
+ r = stringToken.GetNextToken(content);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to get content", GetErrorMessage(r));
+
+ return r;
+}
+
+void
+GroupContactListForm::ReturnValues(RequestId requestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue)
+{
+ AppControlProviderManager* pAppManager = AppControlProviderManager::GetInstance();
+ pAppManager->SendAppControlResult(requestId, appCtrlResult, pReturnValue);
+
+ UiApp* pApp = UiApp::GetInstance();
+ pApp->Terminate();
+}
+
+result
+GroupContactListForm::LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, const Tizen::Base::String& argument, const Tizen::Base::String& type)
+{
+ result r = E_SUCCESS;
+ HashMap extraData;
+ extraData.Construct();
+
+ if (appId.Equals(String(PROVIDER_ID_PHONE)))
+ {
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TEL), new (std::nothrow) String(argument));
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TYPE), new (std::nothrow) String(type));
+ }
+ else if (appId.Equals(String(PROVIDER_ID_MESSAGE)))
+ {
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TO), new (std::nothrow) String(argument));
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TYPE), new (std::nothrow) String(INPUT_TYPE_SMS));
+ }
+
+ AppControl* pAc = AppManager::FindAppControlN(appId, operationId);
+ if (pAc != null)
+ {
+ r = pAc->Start(null, null, &extraData, null);
+
+ delete pAc;
+ }
+
+ extraData.RemoveAll(true);
+
+ return r;
+}
+
+void
+GroupContactListForm::OnKeypadWillOpen(Tizen::Ui::Control& source)
+{
+ SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, false);
+}
+
+void
+GroupContactListForm::OnKeypadOpened(Tizen::Ui::Control& source)
+{
+}
+
+void
+GroupContactListForm::OnKeypadClosed(Tizen::Ui::Control& source)
+{
+ SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, true);
+}
+
+void
+GroupContactListForm::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction)
+{
+}
+
+void
+GroupContactListForm::OnForeground(void)
+{
+}
+
+void
+GroupContactListForm::OnBackground(void)
+{
+ int groupIndex = (__sweptItemIndex >> LIST_VIEW_GROUP_INDEX_SHIFT) & LIST_VIEW_MASK;
+ int itemIndex = __sweptItemIndex & LIST_VIEW_MASK;
+
+ __pListView->RefreshList(groupIndex, itemIndex, LIST_REFRESH_TYPE_ITEM_MODIFY);
+}
+
+void
+GroupContactListForm::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo & touchInfo)
+{
+ GroupedListView* pList = static_cast<GroupedListView*>(&const_cast<Control&>(source));
+ if (pList != null)
+ {
+ pList->SetFocus();
+ }
+}
+
+void
+GroupContactListForm::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+GroupContactListForm::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+GroupContactListForm::OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+GroupContactListForm::OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
--- /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 CtGroupContactListPresentationModel.cpp
+ * @brief This is the implementation file for the GroupContactListPresentationModel class.
+ */
+
+#include <FSocial.h>
+#include "CtContactsApp.h"
+#include "CtGroupContactListPresentationModel.h"
+#include "CtIContactEventListener.h"
+#include "CtResourceManager.h"
+#include "CtTypes.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Social;
+
+static const wchar_t* KEY_SHARP = L"#";
+
+GroupContactListPresentationModel* GroupContactListPresentationModel::__pInstance = null;
+
+GroupContactListPresentationModel*
+GroupContactListPresentationModel::GetInstance(void)
+{
+ if (__pInstance == null)
+ {
+ CreateInstance();
+ }
+
+ return __pInstance;
+}
+
+void
+GroupContactListPresentationModel::CreateInstance(void)
+{
+ __pInstance = new (std::nothrow) GroupContactListPresentationModel();
+ result r = __pInstance->Construct();
+ TryCatch(r == E_SUCCESS, , "[%s] Construction Failed", GetErrorMessage(r));
+
+ std::atexit(DestroyInstance);
+ return;
+
+CATCH:
+ delete __pInstance;
+ __pInstance = null;
+}
+
+void
+GroupContactListPresentationModel::DestroyInstance(void)
+{
+ delete __pInstance;
+}
+
+GroupContactListPresentationModel::GroupContactListPresentationModel(void)
+ : __categoryId(INVALID_RECORD_ID)
+ , __groupContactLaunchType(GROUP_CONTACT_LAUNCH_TYPE_NONE)
+{
+}
+
+GroupContactListPresentationModel::~GroupContactListPresentationModel(void)
+{
+}
+
+result
+GroupContactListPresentationModel::Construct(void)
+{
+ result r = E_SUCCESS;
+
+ if (_pAddressbook != null)
+ {
+ AppLogDebug("ContactListPresentationModel is already constructed.");
+ return E_SUCCESS;
+ }
+
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+
+ _pAddressbook = pAddressbookManager->GetAddressbookN(DEFAULT_ADDRESSBOOK_ID);
+ if (_pAddressbook == null)
+ {
+ return E_FAILURE;
+ }
+
+ r = _pAddressbook->SetEventListener(this);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to set event listener.", GetErrorMessage(r));
+
+ _pContactChangeListenerList = new (std::nothrow) ArrayList();
+ _pContactChangeListenerList->Construct();
+
+ return r;
+
+CATCH:
+ delete _pAddressbook;
+ _pAddressbook = null;
+
+ if (_pContactList != null)
+ {
+ _pContactList->RemoveAll(true);
+
+ delete _pContactList;
+ _pContactList = null;
+ }
+
+ delete _pContactChangeListenerList;
+ _pContactChangeListenerList = null;
+
+ return r;
+}
+
+result
+GroupContactListPresentationModel::InitializeGroupContactList(Tizen::Social::RecordId categoryId, GroupContactLaunchType launchType)
+{
+ __categoryId = categoryId;
+ __groupContactLaunchType = launchType;
+
+
+ return CreateContactList();
+}
+
+Tizen::Base::String
+GroupContactListPresentationModel::GetName(int groupIndex, int itemIndex)
+{
+ Person* pPerson = GetPersonAt(groupIndex, itemIndex);
+
+ if (pPerson == null)
+ {
+ return null;
+ }
+
+ return pPerson->GetDisplayName();
+}
+
+Tizen::Base::Collection::IList*
+GroupContactListPresentationModel::GetAllPhoneNumbersN(int groupIndex, int itemIndex)
+{
+ Contact* pContact = _pAddressbook->GetContactN(GetContactId(groupIndex, itemIndex));
+ if (pContact == null)
+ {
+ return null;
+ }
+ IList* pPhoneNumberList = pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
+ if (pPhoneNumberList == null)
+ {
+ delete pContact;
+ return null;
+ }
+
+ ArrayList* pPhoneNumberInfoList = new (std::nothrow) ArrayList();
+ pPhoneNumberInfoList->Construct();
+ PhoneNumber* pPhoneNumber = null;
+
+ IEnumerator* pEnum = pPhoneNumberList->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pPhoneNumber = static_cast<PhoneNumber *>(pEnum->GetCurrent());
+ if (pPhoneNumber != null)
+ {
+ String phoneNumbersInfo(L"");
+
+ switch (pPhoneNumber->GetType())
+ {
+ case PHONENUMBER_TYPE_HOME:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_HOME"));
+ break;
+ case PHONENUMBER_TYPE_WORK:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_WORK"));
+ break;
+ case PHONENUMBER_TYPE_MOBILE:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_MOBILE"));
+ break;
+ case PHONENUMBER_TYPE_HOME_FAX:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_FAX_HHOME"));
+ break;
+ case PHONENUMBER_TYPE_WORK_FAX:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_FAX_HWORK"));
+ break;
+ case PHONENUMBER_TYPE_PAGER:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_PAGER"));
+ break;
+ case PHONENUMBER_TYPE_OTHER:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_OTHER"));
+ break;
+ default:
+ break;
+ }
+ phoneNumbersInfo.Append(CHARACTER_SPACE);
+ phoneNumbersInfo.Append(pPhoneNumber->GetPhoneNumber());
+
+ pPhoneNumberInfoList->Add(*(new (std::nothrow) String(phoneNumbersInfo)));
+ }
+ }
+
+ delete pEnum;
+ delete pContact;
+ pPhoneNumberList->RemoveAll(true);
+ delete pPhoneNumberList;
+
+ return pPhoneNumberInfoList;
+}
+
+Tizen::Base::Collection::IList*
+GroupContactListPresentationModel::GetAllEmailsN(int groupIndex, int itemIndex)
+{
+ Contact* pContact = _pAddressbook->GetContactN(GetContactId(groupIndex, itemIndex));
+ if (pContact == null)
+ {
+ return null;
+ }
+ IList* pEmailList = pContact->GetValuesN(CONTACT_MPROPERTY_ID_EMAILS);
+ if (pEmailList == null)
+ {
+ delete pContact;
+ return null;
+ }
+
+ ArrayList* pEmailInfoList = new (std::nothrow) ArrayList();
+ pEmailInfoList->Construct();
+ Email* pEmail = null;
+
+ IEnumerator* pEnum = pEmailList->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pEmail = static_cast<Email *>(pEnum->GetCurrent());
+ if (pEmail != null)
+ {
+ String EmailsInfo(L"");
+
+ switch (pEmail->GetType())
+ {
+ case EMAIL_TYPE_PERSONAL:
+ EmailsInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_HOME"));
+ break;
+ case EMAIL_TYPE_WORK:
+ EmailsInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_WORK"));
+ break;
+ case EMAIL_TYPE_OTHER:
+ EmailsInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_OTHER"));
+ break;
+ default:
+ break;
+ }
+ EmailsInfo.Append(CHARACTER_SPACE);
+ EmailsInfo.Append(pEmail->GetEmail());
+
+ pEmailInfoList->Add(*(new (std::nothrow) String(EmailsInfo)));
+ }
+ }
+
+ delete pEnum;
+ delete pContact;
+ pEmailList->RemoveAll(true);
+ delete pEmailList;
+
+ return pEmailInfoList;
+}
+
+Tizen::Social::Person*
+GroupContactListPresentationModel::GetPersonAt(int groupIndex, int itemIndex)
+{
+ int count = 0;
+ Person* pPerson = null;
+ IEnumerator* pEnum = _pContactList->GetValuesN(GetKey(groupIndex));
+
+ TryReturn(pEnum, null, "No contact")
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ if (itemIndex == count++)
+ {
+ pPerson = static_cast<Person *>(pEnum->GetCurrent());
+ break;
+ }
+ }
+
+ delete pEnum;
+
+ return pPerson;
+}
+
+result
+GroupContactListPresentationModel::CreateContactList(void)
+{
+ result r = E_SUCCESS;
+
+ if (_pAddressbook == null)
+ {
+ return E_FAILURE;
+ }
+
+ if (_pContactList == null)
+ {
+ _pContactList = new (std::nothrow) MultiHashMap();
+ _pContactList->Construct();
+ }
+ else
+ {
+ _pContactList->RemoveAll(true);
+ }
+
+ if (_pGroupIndexList == null)
+ {
+ _pGroupIndexList = new (std::nothrow) ArrayList();
+ _pGroupIndexList->Construct();
+ }
+ else
+ {
+ _pGroupIndexList->RemoveAll(false);
+ }
+
+ IList* pContactList = AddressbookManager::GetInstance()->GetPersonsByCategoryN(__categoryId);
+ if (pContactList == null)
+ {
+ return E_FAILURE;
+ }
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ TrimListForAppControl(pContactList);
+ }
+
+ if (__groupContactLaunchType != GROUP_CONTACT_LAUNCH_TYPE_NONE)
+ {
+ TrimListForLaunch(pContactList);
+ }
+
+ IEnumerator* pEnum = pContactList->GetEnumeratorN();
+ if (pEnum == null)
+ {
+ return E_FAILURE;
+ }
+
+ bool isNotUsedSharpKey = true;
+ String* pSharpKey = new (std::nothrow) String(KEY_SHARP);
+ String* pKey = null;
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ Person* pPerson = static_cast<Person *>(pEnum->GetCurrent());
+ if (pPerson == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ String displayName = pPerson->GetDisplayName();
+ String firstCharacter;
+
+ displayName.SubString(0, 1, firstCharacter);
+ firstCharacter.ToUpper();
+
+ if (pKey == null || firstCharacter.CompareTo(*pKey) != 0)
+ {
+ if (*(firstCharacter.GetPointer()) >= L'A' && *(firstCharacter.GetPointer()) <= L'Z')
+ {
+ pKey = new (std::nothrow) String(firstCharacter);
+ _pGroupIndexList->Add(*pKey);
+ }
+ else
+ {
+ isNotUsedSharpKey = false;
+ pKey = pSharpKey;
+
+ if (_pGroupIndexList->Contains(*pKey) == false)
+ {
+ _pGroupIndexList->Add(*pKey);
+ }
+ }
+ }
+ _pContactList->Add(*pKey, *pPerson);
+ }
+
+ _pGroupIndexList->Sort(StringComparer());
+
+ delete pEnum;
+ delete pContactList;
+
+ if (isNotUsedSharpKey)
+ {
+ delete pSharpKey;
+ }
+
+ return r;
+}
+
+result
+GroupContactListPresentationModel::TrimListForAppControl(Tizen::Base::Collection::IList*& pContactList)
+{
+ TryReturn(pContactList != null, E_INVALID_ARG, "Invalid argument");
+
+ IList* pSelectedList = null;
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+ AddressbookFilter mainFilter(AB_FI_TYPE_PERSON);
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_NONE, PERSON_FI_PR_HAS_PHONE, FI_CMP_OP_EQUAL, true);
+ if (__categoryId != INVALID_RECORD_ID)
+ {
+ mainFilter.AppendInt(FI_CONJ_OP_AND, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_EQUAL, __categoryId);
+ }
+ else
+ {
+ mainFilter.AppendInt(FI_CONJ_OP_AND, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_IS_NULL, 0);
+ }
+
+ pSelectedList = pAddressbookManager->SearchN(mainFilter);
+ TryReturn(pSelectedList != null, E_FAILURE, "Unable to get the list contained phone number");
+
+ pContactList->RemoveAll(true);
+ pContactList->AddItems(*pSelectedList);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_NONE, PERSON_FI_PR_HAS_EMAIL, FI_CMP_OP_EQUAL, true);
+ if (__categoryId != INVALID_RECORD_ID)
+ {
+ mainFilter.AppendInt(FI_CONJ_OP_AND, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_EQUAL, __categoryId);
+ }
+ else
+ {
+ mainFilter.AppendInt(FI_CONJ_OP_AND, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_IS_NULL, 0);
+ }
+
+ pSelectedList = pAddressbookManager->SearchN(mainFilter);
+ TryReturn(pSelectedList != null, E_FAILURE, "Unable to get the list contained email");
+
+ pContactList->RemoveAll(true);
+ pContactList->AddItems(*pSelectedList);
+ }
+
+ return E_SUCCESS;
+}
+
+result
+GroupContactListPresentationModel::TrimListForLaunch(Tizen::Base::Collection::IList*& pContactList)
+{
+ result r = E_SUCCESS;
+
+ TryReturn(pContactList != null, E_INVALID_ARG, "Invalid argument");
+
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+ IList* pSelectedList = null;
+ AddressbookFilter mainFilter(AB_FI_TYPE_PERSON);
+
+ if (__groupContactLaunchType == GROUP_CONTACT_LAUNCH_TYPE_MESSAGE)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_NONE, PERSON_FI_PR_HAS_PHONE, FI_CMP_OP_EQUAL, true);
+
+ if (__categoryId == INVALID_RECORD_ID)
+ {
+ mainFilter.AppendInt(FI_CONJ_OP_AND, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_IS_NULL, __categoryId);
+ }
+ else
+ {
+ mainFilter.AppendInt(FI_CONJ_OP_AND, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_EQUAL, __categoryId);
+ }
+
+ pSelectedList = pAddressbookManager->SearchN(mainFilter);
+ TryReturn(pSelectedList != null, E_FAILURE, "[E_FAIURE] Unable to get the list contained phone number");
+ }
+ else if (__groupContactLaunchType == GROUP_CONTACT_LAUNCH_TYPE_EMAIL)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_NONE, PERSON_FI_PR_HAS_EMAIL, FI_CMP_OP_EQUAL, true);
+
+ if (__categoryId == INVALID_RECORD_ID)
+ {
+ mainFilter.AppendInt(FI_CONJ_OP_AND, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_IS_NULL, __categoryId);
+ }
+ else
+ {
+ mainFilter.AppendInt(FI_CONJ_OP_AND, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_EQUAL, __categoryId);
+ }
+
+ pSelectedList = pAddressbookManager->SearchN(mainFilter);
+ TryReturn(pSelectedList != null, E_FAILURE, "[E_FAILURE] Unable to get the list contained email");
+ }
+
+ pContactList->RemoveAll(true);
+ pContactList->AddItems(*pSelectedList);
+
+ return r;
+}
+
+Tizen::Base::String
+GroupContactListPresentationModel::GetCategoryName(void)
+{
+ String categoryName;
+
+ if (__categoryId != INVALID_RECORD_ID)
+ {
+ Category* pCategory = _pAddressbook->GetCategoryN(__categoryId);
+ if (pCategory == null)
+ {
+ return categoryName;
+ }
+
+ categoryName = pCategory->GetName();
+
+ if (pCategory->IsDefault())
+ {
+ if (categoryName.Equals(DEFAULT_GROUP_FAMILY, false))
+ {
+ categoryName.Clear();
+ categoryName = ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT_GROUP_FAMILY");
+ }
+ else if (categoryName.Equals(DEFAULT_GROUP_FRIENDS, false))
+ {
+ categoryName.Clear();
+ categoryName = ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT_GROUP_FRIENDS");
+ }
+ else if (categoryName.Equals(DEFAULT_GROUP_COWORKERS, false))
+ {
+ categoryName.Clear();
+ categoryName = ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT_GROUP_WORK");
+ }
+ }
+
+ delete pCategory;
+ }
+ else
+ {
+ categoryName = ResourceManager::GetString(L"IDS_PB_BODY_NOT_ASSIGNED");
+ }
+
+ return categoryName;
+}
+
+int
+GroupContactListPresentationModel::GetAllContactsCount(void)
+{
+ return _pAddressbook->GetContactCount();
+}
+
+bool
+GroupContactListPresentationModel::IsCategoryValid(void)
+{
+ if (__categoryId != INVALID_RECORD_ID)
+ {
+ Category* pCategory = _pAddressbook->GetCategoryN(__categoryId);
+ if (pCategory != null)
+ {
+ delete pCategory;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+result
+GroupContactListPresentationModel::AddContactToCategory(Tizen::Social::RecordId contactId)
+{
+ Category* pCategory = _pAddressbook->GetCategoryN(__categoryId);
+ if (pCategory == null)
+ {
+ return E_FAILURE;
+ }
+
+ pCategory->AddMember(contactId);
+ _pAddressbook->UpdateCategory(*pCategory);
+ CreateContactList();
+
+ delete pCategory;
+
+ return E_SUCCESS;
+}
+
+result
+GroupContactListPresentationModel::RemoveContactFromCategory(int groupIndex, int itemIndex)
+{
+ Category* pCategory = _pAddressbook->GetCategoryN(__categoryId);
+ if (pCategory == null)
+ {
+ return E_FAILURE;
+ }
+
+ Person* pPerson = GetPersonAt(groupIndex, itemIndex);
+ if (pPerson == null)
+ {
+ delete pCategory;
+ return E_FAILURE;
+ }
+
+ _pAddressbook->RemoveMemberFromCategory(pCategory->GetRecordId(), GetContactId(groupIndex, itemIndex));
+ _pAddressbook->UpdateCategory(*pCategory);
+
+ CreateContactList();
+
+ delete pCategory;
+
+ return E_SUCCESS;
+}
+
+void
+GroupContactListPresentationModel::OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList)
+{
+ result r = CreateContactList();
+ if (r != E_SUCCESS)
+ {
+ return;
+ }
+
+ IContactEventListener* pInterface = null;
+ if (_pContactChangeListenerList != null)
+ {
+ IEnumerator* pEnum = _pContactChangeListenerList->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pInterface = static_cast<IContactEventListener *>(pEnum->GetCurrent());
+ if (pInterface == null)
+ {
+ delete pEnum;
+ return;
+ }
+ pInterface->OnContactsChanged();
+ }
+
+ delete pEnum;
+ }
+}
+
+void
+GroupContactListPresentationModel::OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList)
+{
+ result r = CreateContactList();
+ if (r != E_SUCCESS)
+ {
+ return;
+ }
+
+ IContactEventListener* pInterface = null;
+ if (_pContactChangeListenerList != null)
+ {
+ IEnumerator* pEnum = _pContactChangeListenerList->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pInterface = static_cast<IContactEventListener *>(pEnum->GetCurrent());
+ if (pInterface == null)
+ {
+ delete pEnum;
+ return;
+ }
+ pInterface->OnCategoriesChanged();
+ }
+
+ delete pEnum;
+ }
+}
+
+Tizen::Base::Collection::IList*
+GroupContactListPresentationModel::GetSearchedContactListN(const Tizen::Base::String& searchText, SearchType searchType)
+{
+ if (searchText.GetLength() == 0)
+ {
+ return null;
+ }
+
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+ int phoneNumber = 0;
+ IList* pSearchedList = null;
+
+ if (Integer::Parse(searchText, phoneNumber) == E_SUCCESS)
+ {
+ _isSearchingPhoneNumber = true;
+
+ IList* pSearchingPhoneNumberList = null;
+ AddressbookFilter phoneNumberFilter(AB_FI_TYPE_PHONE_CONTACT);
+ phoneNumberFilter.AppendString(FI_CONJ_OP_NONE, PHONE_CONTACT_FI_PR_PHONE, FI_STR_OP_CONTAIN, searchText);
+
+ pSearchingPhoneNumberList = pAddressbookManager->SearchN(phoneNumberFilter);
+ if (pSearchingPhoneNumberList == null)
+ {
+ return null;
+ }
+
+ IEnumerator* pEnum = pSearchingPhoneNumberList->GetEnumeratorN();
+ if (pEnum == null)
+ {
+ pSearchingPhoneNumberList->RemoveAll(true);
+ delete pSearchingPhoneNumberList;
+
+ return null;
+ }
+
+ ArrayList* pSearchedPersonsList = new (std::nothrow) ArrayList();
+ pSearchedPersonsList->Construct();
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ PhoneNumberContact* pPhoneNumberContact = static_cast<PhoneNumberContact *>(pEnum->GetCurrent());
+ Person* pPerson = pAddressbookManager->GetPersonN(pPhoneNumberContact->GetPersonId());
+
+ if (pPerson != null && pSearchedPersonsList->Contains(*pPerson) == false)
+ {
+ IList* pCategoryList = pAddressbookManager->GetCategoriesByPersonN(pPerson->GetId());
+
+ if (__categoryId == INVALID_RECORD_ID)
+ {
+ if (pCategoryList == null)
+ {
+ pSearchedPersonsList->Add(*pPerson);
+ }
+ else
+ {
+ delete pPerson;
+ }
+ }
+ else
+ {
+ if (pCategoryList != null)
+ {
+ IEnumerator* pCategoryEnum = pCategoryList->GetEnumeratorN();
+ bool isAdded = false;
+
+ while (pCategoryEnum->MoveNext() == E_SUCCESS)
+ {
+ Category* pCategory = static_cast<Category *>(pCategoryEnum->GetCurrent());
+ if (pCategory != null && pCategory->GetRecordId() == __categoryId)
+ {
+ pSearchedPersonsList->Add(*pPerson);
+ isAdded = true;
+ }
+ }
+
+ if (isAdded == false)
+ {
+ delete pPerson;
+ }
+
+ delete pCategoryEnum;
+ }
+ }
+
+ if (pCategoryList != null)
+ {
+ pCategoryList->RemoveAll(true);
+ delete pCategoryList;
+ }
+ }
+ }
+
+ pSearchingPhoneNumberList->RemoveAll(true);
+ delete pSearchingPhoneNumberList;
+ delete pEnum;
+
+ pSearchedList = pSearchedPersonsList;
+ }
+ else
+ {
+ _isSearchingPhoneNumber = false;
+
+ AddressbookFilter mainFilter(AB_FI_TYPE_PERSON);
+ if (__categoryId != INVALID_RECORD_ID)
+ {
+ mainFilter.AppendInt(FI_CONJ_OP_NONE, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_EQUAL, __categoryId);
+ }
+ else
+ {
+ mainFilter.AppendInt(FI_CONJ_OP_NONE, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_IS_NULL, INVALID_RECORD_ID);
+ }
+ mainFilter.AppendString(FI_CONJ_OP_AND, PERSON_FI_PR_DISPLAY_NAME, FI_STR_OP_CONTAIN, searchText);
+
+ if (searchType == SEARCH_TYPE_HAS_PHONE_ONLY)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_AND, PERSON_FI_PR_HAS_PHONE, FI_CMP_OP_EQUAL, true);
+ }
+ else if (searchType == SEARCH_TYPE_HAS_EMAIL_ONLY)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_AND, PERSON_FI_PR_HAS_EMAIL, FI_CMP_OP_EQUAL, true);
+ }
+
+ pSearchedList = pAddressbookManager->SearchN(mainFilter);
+ }
+
+ return pSearchedList;
+}
--- /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 CtGroupEditorForm.cpp
+ * @brief This is the implementation file for the GroupEditorForm class.
+ */
+
+#include <FApp.h>
+#include <FMedia.h>
+#include "CtGroupEditorForm.h"
+#include "CtGroupPresentationModel.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtTypes.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::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Social;
+
+static const int IDA_HEADER_SAVE = 0;
+static const int IDA_HEADER_CANCEL = 1;
+static const int IDA_BUTTON_GALLERY = 10;
+static const int IDA_BUTTON_TAKE_PHOTO = 11;
+static const int IDA_BUTTON_REMOVE = 12;
+
+static const wchar_t* IDB_ICON_ADD_NORMAL = L"C02_caller_id_icon_add.png";
+static const wchar_t* IDB_ICON_ADD_PRESSED = L"C02_caller_id_icon_add_press.png";
+static const wchar_t* IDB_ICON_ADD_DIM = L"C02_caller_id_icon_add_dim.png";
+static const wchar_t* IDB_ICON_CAMERA_NORMAL = L"C02_caller_id_icon_camera.png";
+static const wchar_t* IDB_ICON_CAMERA_PRESSED = L"C02_caller_id_icon_camera_press.png";
+static const wchar_t* IDB_ICON_CAMERA_DIM = L"C02_caller_id_icon_camera_dim.png";
+static const wchar_t* IDB_ICON_REMOVE_NORMAL = L"00_button_expand_minus_press.png";
+static const wchar_t* IDB_ICON_REMOVE_PRESSED = L"00_button_expand_minus_press.png";
+static const wchar_t* IDB_REMOVE_BG_NORMAL = L"00_circle_button_delete.png";
+static const wchar_t* IDB_REMOVE_BG_PRESSED = L"00_circle_button_delete_press.png";
+
+static const int H_ITEM = 128;
+static const int H_THUMBNAIL = 360;
+static const int Y_THUMBNAIL = 57;
+static const int H_ICON_BUTTON = 74;
+static const int Y_REMOVE_BUTTON = 26;
+static const int X_REMOVE_BUTTON_MARGIN = 40;
+
+static const int X_RINGTONE_TEXT = 3;
+static const int Y_RINGTONE_TITLE = 10;
+static const int Y_RINGTONE_NAME = 68;
+static const int W_RINGTONE_TEXT = 600;
+static const int H_RINGTONE_TITLE = 58;
+static const int H_RINGTONE_NAME = 50;
+
+static const unsigned int COLOR_GUIDE_TEXT = Color32<255, 0, 0>::Value;
+static const unsigned int COLOR_RINGTONE = Color32<34, 137, 194>::Value;
+static const unsigned int COLOR_THUMBNAIL = Color32<239, 237, 229>::Value;
+static const unsigned int COLOR_TABLE_BG = Color32<248, 246, 239>::Value;
+
+static const int ITEM_COUNT = 3;
+
+static const int FONT_SIZE_RINGTONE_TITLE = 40;
+static const int FONT_SIZE_RINGTONE = 32;
+
+static const wchar_t* INPUT_KEY_TYPE = L"type";
+static const wchar_t* INPUT_KEY_SELECTION_TYPE = L"selectionType";
+static const wchar_t* INPUT_KEY_SELECTION_MODE = L"selectionMode";
+static const wchar_t* INPUT_KEY_MEDIA_TYPE = L"mediaType";
+static const wchar_t* INPUT_TYPE_AUDIO = L"audio";
+static const wchar_t* INPUT_TYPE_CAMERA = L"camera";
+static const wchar_t* INPUT_SELECTION_TYPE_SINGLE = L"single";
+static const wchar_t* INPUT_MEDIA_TYPE_IMAGE = L"image";
+static const wchar_t* RESULT_KEY_PATH = L"path";
+static const wchar_t* THUMBNAIL_LABEL = L"thumbnail";
+static const wchar_t* THUMBNAIL_EMPTY_LABEL = L"emptyThumbnail";
+static const wchar_t* ADD_BUTTON = L"add";
+static const wchar_t* CAMERA_BUTTON = L"camera";
+static const wchar_t* REMOVE_BUTTON = L"remove";
+
+GroupEditorForm::GroupEditorForm(void)
+ : __pPresentationModel(null)
+ , __pTableView(null)
+ , __pItemGroupName(null)
+ , __categoryId(INVALID_RECORD_ID)
+ , __isEditMode(false)
+{
+}
+
+GroupEditorForm::~GroupEditorForm(void)
+{
+}
+
+void
+GroupEditorForm::Initialize(void)
+{
+ Construct(L"IDL_GROUP_EDITOR_FORM");
+}
+
+result
+GroupEditorForm::OnInitializing(void)
+{
+ Header* pHeader = GetHeader();
+ pHeader->AddActionEventListener(*this);
+
+ __pTableView = new (std::nothrow) TableView();
+ __pTableView->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height), true, TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT);
+ __pTableView->SetItemProvider(this);
+ __pTableView->AddTableViewItemEventListener(*this);
+ AddControl(*__pTableView);
+
+ return E_SUCCESS;
+}
+
+result
+GroupEditorForm::OnTerminating(void)
+{
+ __pTableView->SetItemProvider(null);
+
+ delete __pPresentationModel;
+
+ return E_SUCCESS;
+}
+
+void
+GroupEditorForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ result r = E_SUCCESS;
+ EditField* pEditField = null;
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ switch (actionId)
+ {
+ case IDA_HEADER_SAVE:
+ {
+ if (__pItemGroupName != null)
+ {
+ pEditField = static_cast<EditField*>(__pItemGroupName->GetControl(0));
+ TryReturnVoid(pEditField, "[E_FAILURE] A system error occurred");
+ pEditField->SetEnabled(true);
+ }
+
+ if (pEditField == null)
+ {
+ break;
+ }
+
+ String groupName = pEditField->GetText();
+ groupName.Trim();
+
+ if (__pPresentationModel->IsDefaultCategory() == false && __pPresentationModel->IsDuplicatedCategory(groupName))
+ {
+ r = pEditField->Clear();
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to clear edit field", GetErrorMessage(r));
+
+ r = pEditField->SetGuideTextColor(Color(COLOR_GUIDE_TEXT));
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set guide text color", GetErrorMessage(r));
+
+ pEditField->SetGuideText(ResourceManager::GetString(L"IDS_PB_POP_GROUP_ALREADY_IN_USE"));
+
+ r = pEditField->SetFocus();
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set focus", GetErrorMessage(r));
+
+ pEditField->Invalidate(false);
+ return;
+ }
+
+ if (__isEditMode)
+ {
+ r = __pPresentationModel->SetCategoryName(groupName);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set category name", GetErrorMessage(r));
+ }
+ else
+ {
+ r = __pPresentationModel->AddCategory(groupName);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to add category name", GetErrorMessage(r));
+ }
+
+ r = __pPresentationModel->SetThumbnailPath(groupName, __tempThumbnailPath);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set thumbnail path", GetErrorMessage(r));
+
+ if (__ringtonePath.Equals(ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT")) == false)
+ {
+ r = __pPresentationModel->SetRingtone(groupName, __ringtonePath);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set ringtone", GetErrorMessage(r));
+ }
+
+ r = pEditField->HideKeypad();
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to hide keypad", GetErrorMessage(r));
+
+ r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go backward", GetErrorMessage(r));
+ }
+ break;
+ case IDA_HEADER_CANCEL:
+ {
+ if (__pItemGroupName != null)
+ {
+ pEditField = static_cast<EditField*>(__pItemGroupName->GetControl(0));
+ TryReturnVoid(pEditField, "[E_FAILURE] A system error occurred");
+ pEditField->SetEnabled(true);
+ }
+
+ if (pEditField == null)
+ {
+ break;
+ }
+
+ r = pEditField->HideKeypad();
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to hide keypad", GetErrorMessage(r));
+
+ r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go backward", GetErrorMessage(r));
+ }
+ break;
+ case IDA_BUTTON_GALLERY:
+ {
+ LaunchAppControl(PROVIDER_ID_GALLERY, OPERATION_ID_PICK);
+ }
+ break;
+ case IDA_BUTTON_TAKE_PHOTO:
+ {
+ LaunchAppControl(PROVIDER_ID_CAMERA, OPERATION_ID_CREATE_CONTENT);
+ }
+ break;
+ case IDA_BUTTON_REMOVE:
+ {
+ __tempThumbnailPath.Clear();
+ __pTableView->RefreshItem(0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+
+ if (__pItemGroupName != null)
+ {
+ EditField* pEditField = static_cast<EditField*>(__pItemGroupName->GetControl(0));
+ TryReturnVoid(pEditField != null, "[E_FAILURE] A system error occurred");
+
+ String tempName = pEditField->GetText();
+ tempName.Trim();
+
+ if (tempName.GetLength() > 0)
+ {
+ Header* pHeader = GetHeader();
+ pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, true);
+ pHeader->Invalidate(true);
+ }
+ }
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+GroupEditorForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
+ const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
+{
+ if (pArgs != null)
+ {
+ IEnumerator* pEnum = pArgs->GetEnumeratorN();
+ if (pEnum->MoveNext() == E_SUCCESS)
+ {
+ Integer* pCategoryId = static_cast<Integer*>(pEnum->GetCurrent());
+ if (pCategoryId != null)
+ {
+ __categoryId = pCategoryId->ToInt();
+ __isEditMode = true;
+ }
+ }
+ delete pEnum;
+
+ pArgs->RemoveAll(true);
+ delete pArgs;
+ }
+
+ __pPresentationModel = new (std::nothrow) GroupPresentationModel();
+ __pPresentationModel->Construct(__categoryId);
+
+ Header* pHeader = GetHeader();
+ if (pHeader != null)
+ {
+ if (__isEditMode)
+ {
+ pHeader->SetTitleText(ResourceManager::GetString(L"IDS_PB_OPT2_EDIT_GROUPS"));
+ __ringtonePath = __pPresentationModel->GetRingtone();
+ if (__ringtonePath.IsEmpty() == true)
+ {
+ __ringtonePath = ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT");
+ }
+ }
+ else
+ {
+ pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_BODY_CREATE"));
+ __ringtonePath = ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT");
+ }
+
+ pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, false);
+ }
+}
+
+void
+GroupEditorForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
+ const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+ if (__pItemGroupName != null)
+ {
+ EditField* pEditField = static_cast<EditField*>(__pItemGroupName->GetControl(0));
+ TryReturnVoid(pEditField, "[E_FAILURE] A system error occurred");
+
+ pEditField->HideKeypad();
+ }
+}
+
+int
+GroupEditorForm::GetItemCount(void)
+{
+ return ITEM_COUNT;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+GroupEditorForm::CreateItem(int itemIndex, int itemWidth)
+{
+ Label* pSubjectLabel = null;
+ Label* pContentLabel = null;
+
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ if (itemIndex == 0)
+ {
+ pItem->SetBounds(0, 0, itemWidth, Y_THUMBNAIL * 2 + H_THUMBNAIL);
+
+ Label* pThumbnailLabel = new (std::nothrow) Label();
+ pThumbnailLabel->Construct(Rectangle((itemWidth - H_THUMBNAIL) / 2, Y_THUMBNAIL, H_THUMBNAIL, H_THUMBNAIL), L"");
+ pThumbnailLabel->SetName(THUMBNAIL_LABEL);
+ pItem->AddControl(*pThumbnailLabel);
+ Label* pEmptyThumbnailLabel = new (std::nothrow) Label();
+ pEmptyThumbnailLabel->Construct(Rectangle((itemWidth - H_THUMBNAIL) / 2, Y_THUMBNAIL, H_THUMBNAIL, H_THUMBNAIL), L"");
+ pEmptyThumbnailLabel->SetName(THUMBNAIL_EMPTY_LABEL);
+ pEmptyThumbnailLabel->SetBackgroundColor(COLOR_THUMBNAIL);
+ pItem->AddControl(*pEmptyThumbnailLabel);
+
+ __tempThumbnailPath = __pPresentationModel->GetThumbnailPath();
+ if (__tempThumbnailPath.IsEmpty() == false)
+ {
+ Bitmap* pThumbnail = null;
+ ImageBuffer thumbnailImageBuffer;
+ result r = thumbnailImageBuffer.Construct(__tempThumbnailPath);
+ if (r == E_SUCCESS)
+ {
+ pThumbnail = thumbnailImageBuffer.GetBitmapN(BITMAP_PIXEL_FORMAT_RGB565, BUFFER_SCALING_NONE);
+ }
+ pThumbnailLabel->SetBackgroundBitmap(*pThumbnail);
+ delete pThumbnail;
+
+ pEmptyThumbnailLabel->SetShowState(false);
+ }
+
+ Button* pButtonAdd = new (std::nothrow) Button();
+ pButtonAdd->Construct(Rectangle((itemWidth - H_ICON_BUTTON) / 2, (H_THUMBNAIL - H_ICON_BUTTON) / 2 + Y_THUMBNAIL, H_ICON_BUTTON, H_ICON_BUTTON), L"");
+ pButtonAdd->SetActionId(IDA_BUTTON_GALLERY);
+ pButtonAdd->AddActionEventListener(*this);
+ pButtonAdd->SetName(ADD_BUTTON);
+ Bitmap* pIconNormal = ResourceManager::GetBitmapN(IDB_ICON_ADD_NORMAL);
+ Bitmap* pIconPressed = ResourceManager::GetBitmapN(IDB_ICON_ADD_PRESSED);
+ Bitmap* pIconDim = ResourceManager::GetBitmapN(IDB_ICON_ADD_DIM);
+ if (pIconNormal != null)
+ {
+ pButtonAdd->SetNormalBackgroundBitmap(*pIconNormal);
+ delete pIconNormal;
+ }
+ if (pIconPressed != null)
+ {
+ pButtonAdd->SetPressedBackgroundBitmap(*pIconPressed);
+ delete pIconPressed;
+ }
+ if (pIconDim != null)
+ {
+ pButtonAdd->SetDisabledBitmap(Point(0, 0), *pIconDim);
+ delete pIconDim;
+ }
+ pItem->AddControl(*pButtonAdd);
+
+ Button* pButtonCamera = new (std::nothrow) Button();
+ pButtonCamera->Construct(Rectangle((itemWidth - H_THUMBNAIL) / 2 + H_THUMBNAIL, Y_THUMBNAIL + H_THUMBNAIL - H_ICON_BUTTON, H_ICON_BUTTON, H_ICON_BUTTON), L"");
+ pButtonCamera->SetActionId(IDA_BUTTON_TAKE_PHOTO);
+ pButtonCamera->AddActionEventListener(*this);
+ pButtonCamera->SetName(CAMERA_BUTTON);
+ pIconNormal = ResourceManager::GetBitmapN(IDB_ICON_CAMERA_NORMAL);
+ pIconPressed = ResourceManager::GetBitmapN(IDB_ICON_CAMERA_PRESSED);
+ pIconDim = ResourceManager::GetBitmapN(IDB_ICON_CAMERA_DIM);
+ if (pIconNormal != null)
+ {
+ pButtonCamera->SetNormalBackgroundBitmap(*pIconNormal);
+ delete pIconNormal;
+ }
+ if (pIconPressed != null)
+ {
+ pButtonCamera->SetPressedBackgroundBitmap(*pIconPressed);
+ delete pIconPressed;
+ }
+ if (pIconDim != null)
+ {
+ pButtonCamera->SetDisabledBitmap(Point(0, 0), *pIconDim);
+ delete pIconDim;
+ }
+ pItem->AddControl(*pButtonCamera);
+
+ Button* pButtonRemove = new (std::nothrow) Button();
+ pButtonRemove->Construct(Rectangle((itemWidth - H_THUMBNAIL) / 2 - X_REMOVE_BUTTON_MARGIN, Y_REMOVE_BUTTON, H_ICON_BUTTON, H_ICON_BUTTON), L"");
+ pButtonRemove->SetActionId(IDA_BUTTON_REMOVE);
+ pButtonRemove->AddActionEventListener(*this);
+ pButtonRemove->SetName(REMOVE_BUTTON);
+ pIconNormal = ResourceManager::GetBitmapN(IDB_ICON_REMOVE_NORMAL);
+ pIconPressed = ResourceManager::GetBitmapN(IDB_ICON_REMOVE_PRESSED);
+ if (pIconNormal != null)
+ {
+ pButtonRemove->SetNormalBitmap(Point(0, 0), *pIconNormal);
+ delete pIconNormal;
+ }
+ if (pIconPressed != null)
+ {
+ pButtonRemove->SetPressedBitmap(Point(0, 0), *pIconPressed);
+ delete pIconPressed;
+ }
+
+ pIconNormal = ResourceManager::GetBitmapN(IDB_REMOVE_BG_NORMAL);
+ pIconPressed = ResourceManager::GetBitmapN(IDB_REMOVE_BG_PRESSED);
+ if (pIconNormal != null)
+ {
+ pButtonRemove->SetNormalBackgroundBitmap(*pIconNormal);
+ delete pIconNormal;
+ }
+ if (pIconPressed != null)
+ {
+ pButtonRemove->SetPressedBackgroundBitmap(*pIconPressed);
+ delete pIconPressed;
+ }
+ pItem->AddControl(*pButtonRemove);
+
+ if (__tempThumbnailPath.IsEmpty() == true)
+ {
+ pButtonRemove->SetShowState(false);
+ }
+ else
+ {
+ pButtonAdd->SetShowState(false);
+ }
+ }
+ else if (itemIndex == 1)
+ {
+ bool isNotDefaultCategory = true;
+
+ if (__pPresentationModel->IsDefaultCategory() == true)
+ {
+ isNotDefaultCategory = false;
+ }
+
+ EditField* pEditField = new (std::nothrow) EditField();
+ pEditField->Construct(Rectangle(0, 0, itemWidth, H_ITEM), EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY, EDIT_FIELD_TITLE_STYLE_TOP, isNotDefaultCategory);
+ pEditField->AddTextEventListener(*this);
+ pEditField->AddKeypadEventListener(*this);
+ pEditField->SetText(__tempName);
+ pEditField->SetTitleText(ResourceManager::GetString(L"IDS_PB_BODY_GROUP_NAME_ABB"));
+ pEditField->SetEnabled(isNotDefaultCategory);
+
+ if (__isEditMode == true)
+ {
+ String categoryName = __pPresentationModel->GetCategoryName();
+ if (isNotDefaultCategory == false)
+ {
+ if (categoryName.Equals(DEFAULT_GROUP_FAMILY, false))
+ {
+ categoryName.Clear();
+ categoryName = ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT_GROUP_FAMILY");
+ }
+ else if (categoryName.Equals(DEFAULT_GROUP_FRIENDS, false))
+ {
+ categoryName.Clear();
+ categoryName = ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT_GROUP_FRIENDS");
+ }
+ else if (categoryName.Equals(DEFAULT_GROUP_COWORKERS, false))
+ {
+ categoryName.Clear();
+ categoryName = ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT_GROUP_WORK");
+ }
+ }
+ pEditField->SetText(categoryName);
+ }
+ pItem->AddControl(*pEditField);
+
+ __pItemGroupName = pItem;
+ }
+ else if (itemIndex == 2)
+ {
+ pSubjectLabel = new (std::nothrow) Label();
+ pSubjectLabel->Construct(Rectangle(X_RINGTONE_TEXT, Y_RINGTONE_TITLE, W_RINGTONE_TEXT, H_RINGTONE_TITLE),
+ ResourceManager::GetString(L"IDS_PB_BODY_RINGTONE"));
+ pSubjectLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pSubjectLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pSubjectLabel->SetTextConfig(FONT_SIZE_RINGTONE_TITLE, LABEL_TEXT_STYLE_BOLD);
+ pItem->AddControl(*pSubjectLabel);
+
+ int index = 0;
+ String trimmedPath;
+ __ringtonePath.LastIndexOf(L"/", __ringtonePath.GetLength() - 1, index);
+
+ if (index != 0)
+ {
+ __ringtonePath.SubString(index + 1, trimmedPath);
+ }
+
+ pContentLabel = new (std::nothrow) Label();
+ pContentLabel->Construct(Rectangle(X_RINGTONE_TEXT, Y_RINGTONE_NAME, W_RINGTONE_TEXT, H_RINGTONE_NAME), trimmedPath);
+ pContentLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pContentLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pContentLabel->SetTextColor(Color(COLOR_RINGTONE));
+ pContentLabel->SetTextConfig(FONT_SIZE_RINGTONE, LABEL_TEXT_STYLE_BOLD);
+ pItem->AddControl(*pContentLabel);
+ }
+
+ return pItem;
+}
+
+bool
+GroupEditorForm::DeleteItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ delete pItem;
+ return true;
+}
+
+void
+GroupEditorForm::UpdateItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ if (pItem == null)
+ {
+ return;
+ }
+
+ if (itemIndex == 0)
+ {
+ Button* pRemoveButton = static_cast<Button*>(pItem->GetControl(REMOVE_BUTTON, false));
+ Button* pAddButton = static_cast<Button*>(pItem->GetControl(ADD_BUTTON, false));
+ Label* pThumbnailLabel = static_cast<Label*>(pItem->GetControl(THUMBNAIL_LABEL, false));
+ Label* pThumbnailEmptyLabel = static_cast<Label*>(pItem->GetControl(THUMBNAIL_EMPTY_LABEL, false));
+ if (pRemoveButton == null || pAddButton == null ||
+ pThumbnailLabel == null || pThumbnailEmptyLabel == null)
+ {
+ return;
+ }
+
+ if (__tempThumbnailPath.IsEmpty() == true)
+ {
+ pRemoveButton->SetShowState(false);
+ pThumbnailLabel->SetShowState(false);
+ pThumbnailEmptyLabel->SetShowState(true);
+ pAddButton->SetShowState(true);
+ }
+ else
+ {
+ pAddButton->SetShowState(false);
+ pThumbnailEmptyLabel->SetShowState(false);
+ pThumbnailLabel->SetShowState(true);
+ pRemoveButton->SetShowState(true);
+
+ Bitmap* pThumbnail = null;
+ ImageBuffer thumbnailImageBuffer;
+ result r = thumbnailImageBuffer.Construct(__tempThumbnailPath);
+ if (r == E_SUCCESS)
+ {
+ pThumbnail = thumbnailImageBuffer.GetBitmapN(BITMAP_PIXEL_FORMAT_ARGB8888, BUFFER_SCALING_NONE);
+ }
+ pThumbnailLabel->SetBackgroundBitmap(*pThumbnail);
+ delete pThumbnail;
+
+ pThumbnailLabel->Invalidate(false);
+ }
+ }
+ else if (itemIndex == 2)
+ {
+ int index = 0;
+ String trimmedPath;
+ __ringtonePath.LastIndexOf(L"/", __ringtonePath.GetLength() - 1, index);
+
+ if (index != 0)
+ {
+ __ringtonePath.SubString(index + 1, trimmedPath);
+ }
+
+ Label* pRingtoneName = static_cast<Label*>(pItem->GetControl(1));
+ if (pRingtoneName != null)
+ {
+ pRingtoneName->SetText(trimmedPath);
+ pRingtoneName->Invalidate(true);
+ }
+ }
+}
+
+int
+GroupEditorForm::GetDefaultItemHeight(void)
+{
+ return H_ITEM;
+}
+
+void
+GroupEditorForm::OnTableViewItemStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status)
+{
+ if (status == TABLE_VIEW_ITEM_STATUS_SELECTED && itemIndex == 2)
+ {
+ if (__pItemGroupName != null)
+ {
+ EditField* pEditField = static_cast<EditField*>(__pItemGroupName->GetControl(0));
+ TryReturnVoid(pEditField != null, "[E_FAILURE] A system error occurred");
+
+ __tempName = pEditField->GetText();
+ }
+
+ LaunchAppControl(PROVIDER_ID_FILEMANAGER, OPERATION_ID_PICK);
+ }
+}
+
+void
+GroupEditorForm::OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated)
+{
+}
+
+void
+GroupEditorForm::OnTableViewItemReordered(Tizen::Ui::Controls::TableView& tableView, int itemIndexFrom, int itemIndexTo)
+{
+}
+
+void
+GroupEditorForm::OnTextValueChanged(const Tizen::Ui::Control& source)
+{
+ bool notEmpty = false;
+
+ EditField* pEdit = static_cast<EditField*>(const_cast<Control*>(&source));
+ TryReturnVoid(pEdit, "[E_FAILURE] A system error occurred");
+
+ String name = pEdit->GetText();
+ wchar_t ch;
+
+ for (int index = 0; index < name.GetLength(); index++)
+ {
+ name.GetCharAt(index, ch);
+
+ if (ch != L' ')
+ {
+ notEmpty = true;
+ }
+ }
+
+ Header* pHeader = GetHeader();
+ if (notEmpty)
+ {
+ pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, true);
+ }
+ else
+ {
+ pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, false);
+ }
+
+ pHeader->Invalidate(true);
+}
+
+void
+GroupEditorForm::OnTextValueChangeCanceled(const Tizen::Ui::Control& source)
+{
+}
+
+void
+GroupEditorForm::OnKeypadWillOpen(Tizen::Ui::Control& source)
+{
+}
+
+void
+GroupEditorForm::OnKeypadOpened(Tizen::Ui::Control& source)
+{
+ Rectangle clientBounds = GetClientAreaBounds();
+
+ __pTableView->SetSize(clientBounds.width, clientBounds.height);
+}
+
+void
+GroupEditorForm::OnKeypadClosed(Tizen::Ui::Control& source)
+{
+ Rectangle clientBounds = GetClientAreaBounds();
+
+ __pTableView->SetSize(clientBounds.width, clientBounds.height);
+}
+
+void
+GroupEditorForm::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction)
+{
+}
+
+void
+GroupEditorForm::OnKeypadBoundsChanged(Tizen::Ui::Control& source)
+{
+ Rectangle clientBounds = GetClientAreaBounds();
+
+ __pTableView->SetSize(clientBounds.width, clientBounds.height);
+}
+
+void
+GroupEditorForm::OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData)
+{
+ SetEnabled(true);
+ Invalidate(true);
+
+ TryReturnVoid(appControlResult == APP_CTRL_RESULT_SUCCEEDED, "[E_FAILURE] The result of an appcontrol is not succeeded.");
+ TryReturnVoid(pExtraData != null, "[E_FAILURE] The extra data is null.");
+
+ const String* pResultString = null;
+
+ if (appId.Equals(String(PROVIDER_ID_CAMERA)) && operationId.Equals(String(OPERATION_ID_CREATE_CONTENT)))
+ {
+ pResultString = static_cast<const String *>(pExtraData->GetValue(String(RESULT_KEY_PATH)));
+ TryReturnVoid(pResultString != null, "[E_FAILURE] Unable to get file path.");
+
+ __tempThumbnailPath.Clear();
+ __tempThumbnailPath.Append(*pResultString);
+ __pTableView->RefreshItem(0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+ else if (appId.Equals(String(PROVIDER_ID_GALLERY)) && operationId.Equals(String(OPERATION_ID_PICK)))
+ {
+ pResultString = static_cast<const String *>(pExtraData->GetValue(String(RESULT_KEY_PATH)));
+ TryReturnVoid(pResultString != null, "[E_FAILURE] Unable to get file path.");
+
+ __tempThumbnailPath.Clear();
+ __tempThumbnailPath.Append(*pResultString);
+ __pTableView->RefreshItem(0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+ else if (appId.Equals(String(PROVIDER_ID_FILEMANAGER)) && operationId.Equals(String(OPERATION_ID_PICK)))
+ {
+ pResultString = static_cast<const String *>(pExtraData->GetValue(String(RESULT_KEY_PATH)));
+ TryReturnVoid(pResultString != null, "[E_FAILURE] Unable to get file path.");
+
+ __ringtonePath.Clear();
+ __ringtonePath.Append(*pResultString);
+ __pTableView->RefreshItem(2, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+
+ if (__pItemGroupName != null)
+ {
+ EditField* pEditField = static_cast<EditField*>(__pItemGroupName->GetControl(0));
+ TryReturnVoid(pEditField != null, "[E_FAILURE] A system error occurred");
+
+ String tempName = pEditField->GetText();
+ tempName.Trim();
+
+ if (tempName.GetLength() > 0)
+ {
+ Header* pHeader = GetHeader();
+ pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, true);
+ pHeader->Invalidate(true);
+ }
+ }
+}
+
+result
+GroupEditorForm::LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId)
+{
+ result r = E_SUCCESS;
+ HashMap extraData;
+ extraData.Construct();
+
+ if (appId.Equals(String(PROVIDER_ID_CAMERA)) && operationId.Equals(String(OPERATION_ID_CREATE_CONTENT)))
+ {
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TYPE), new (std::nothrow) String(INPUT_TYPE_CAMERA));
+ }
+ else if (appId.Equals(String(PROVIDER_ID_GALLERY)) && operationId.Equals(String(OPERATION_ID_PICK)))
+ {
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_MEDIA_TYPE), new (std::nothrow) String(INPUT_MEDIA_TYPE_IMAGE));
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_SELECTION_MODE), new (std::nothrow) String(INPUT_SELECTION_TYPE_SINGLE));
+ }
+ else if (appId.Equals(String(PROVIDER_ID_FILEMANAGER)) && operationId.Equals(String(OPERATION_ID_PICK)))
+ {
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_SELECTION_TYPE), new (std::nothrow) String(INPUT_SELECTION_TYPE_SINGLE));
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TYPE), new (std::nothrow) String(INPUT_TYPE_AUDIO));
+ }
+
+ AppControl* pAc = AppManager::FindAppControlN(appId, operationId);
+
+ if (pAc)
+ {
+ r = pAc->Start(null, null, &extraData, this);
+ if (r == E_SUCCESS)
+ {
+ SetEnabled(false);
+ }
+ delete pAc;
+ }
+
+ extraData.RemoveAll(true);
+
+ 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 CtGroupListEditorPanel.cpp
+ * @brief This is the implementation file for the GroupListEditorPanel class.
+ */
+
+#include "CtGroupListEditorPanel.h"
+#include "CtGroupListPresentationModel.h"
+#include "CtMainForm.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtTypes.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Utility;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+static const int IDA_HEADER_CONTACTS = 10;
+static const int IDA_HEADER_GROUPS = 11;
+static const int IDA_HEADER_FAVORITES = 12;
+static const int IDA_FOOTER_REMOVE = 20;
+static const int IDA_FOOTER_CANCEL = 21;
+static const int IDA_BUTTON_EDIT = 30;
+
+static const wchar_t* IDB_CALL_ID_DEFAULT = L"caller_ID.png";
+static const wchar_t* IDB_BUTTON_RENAME = L"C02_button_rename.png";
+static const wchar_t* IDB_BUTTON_CIRCLE_NORMAL = L"C02_button_circle_bg_normal.png";
+static const wchar_t* IDB_BUTTON_CIRCLE_PRESSED = L"C02_button_circle_bg_normal_press.png";
+static const wchar_t* IDB_CHECK_MARK = L"00_button_check.png";
+
+static const int W_INITIAL_PANEL = 10;
+static const int H_INITIAL_PANEL = 10;
+static const int Y_ACCOUNT_LABEL = 18;
+static const int H_ACCOUNT_LABEL = 40;
+static const int H_GROUP_ITEM = 60;
+static const int X_ITEM = 21;
+static const int W_ITEM = 321;
+static const int H_ITEM = 290;
+static const int H_ITEM_GAP = 42;
+static const int W_ITEM_GAP = 36;
+static const int X_ITEM_HEADER = 3;
+static const int Y_ITEM_HEADER = 3;
+static const int W_ITEM_HEADER = 315;
+static const int H_ITEM_HEADER = 72;
+static const int X_ITEM_TEXT = 10;
+static const int W_ITEM_TEXT = 251;
+static const int Y_ITEM_NAME = 7;
+static const int H_ITEM_NAME = 38;
+static const int Y_ITEM_COUNT = 45;
+static const int X_RENAME = 267;
+static const int Y_RENAME = 18;
+static const int W_RENAME = 48;
+static const int H_RENAME = 48;
+static const int H_CHECK_MARK = 148;
+
+static const int X_THUMBNAIL_LEFT = 3;
+static const int X_THUMBNAIL_CENTER = 109;
+static const int X_THUMBNAIL_RIGHT = 215;
+static const int Y_THUMBNAIL_TOP = 78;
+static const int Y_THUMBNAIL_BOTTOM = 184;
+static const int W_THUMBNAIL = 103;
+static const int W_THUMBNAIL_WIDER = 209;
+static const int W_THUMBNAIL_WIDEST = 315;
+static const int H_THUMBNAIL_TALL = 209;
+static const int H_THUMBNAIL_SHORT = 103;
+static const int THUMBNAIL_MAXIMUM_COUNT = 6;
+static const int THUMBNAIL_COUNT_SINGLE = 1;
+static const int THUMBNAIL_COUNT_DOUBLE = 2;
+static const int THUMBNAIL_COUNT_TRIPLE = 3;
+static const int THUMBNAIL_COUNT_TRIPLE_RANGE_MIN = 3;
+static const int THUMBNAIL_COUNT_TRIPLE_RANGE_MAX = 10;
+static const int THUMBNAIL_COUNT_MULTIPLE = 11;
+static const int MULTIPLE_COLUMN_COUNT = 3;
+static const int H_BOTTOM_LABEL = 48;
+static const int COLUMN_COUNT = 2;
+static const int CHECKED_MASK = 0x40000000;
+
+static const int FONT_SIZE_ACCOUNT_LABEL = 32;
+static const int FONT_SIZE_GROUP_NAME = 33;
+static const int FONT_SIZE_CONTACT_COUNT = 23;
+static const int FONT_SIZE_BOTTOM_LABEL = 32;
+
+static const unsigned int COLOR_TABLE_BG = Color32<248, 246, 239>::Value;
+static const unsigned int COLOR_ACCOUNT_LABEL = Color32<41, 41, 41>::Value;
+static const unsigned int COLOR_ITEM_CONTAINER = Color32<209, 209, 209>::Value;
+static const unsigned int COLOR_ITEM_HEADER[6] = {Color32<74, 119, 149>::Value, Color32<135, 73, 62>::Value, Color32<70, 101, 37>::Value, Color32<69, 81, 102>::Value, Color32<82, 69, 102>::Value, Color32<127, 102, 65>::Value};
+static const unsigned int COLOR_ITEM_TEXT = Color32<255, 255, 255>::Value;
+static const unsigned int COLOR_BOTTOM_LABEL_BG = Color32<215, 225, 232>::Value;
+static const unsigned int COLOR_BOTTOM_LABEL_FONT =Color32<76, 81, 88>::Value;
+static const unsigned int COLOR_CHECK_LABEL = Color32<0, 0, 0, 122>::Value;
+static const unsigned int COLOR_ITEM_TEXT_DIM = Color32<248, 246, 239, 77>::Value;
+
+GroupListEditorPanel::GroupListEditorPanel(void)
+ : __pGroupCheckList(null)
+ , __pTableView(null)
+ , __pBottomLabel(null)
+ , __pDefaultThumbnail(null)
+ , __pPresentationModel(null)
+ , __isToggleOpened(false)
+ , __isTouchMoved(false)
+{
+}
+
+GroupListEditorPanel::~GroupListEditorPanel(void)
+{
+}
+
+void
+GroupListEditorPanel::Initialize(void)
+{
+ Construct(Rectangle(0, 0, W_INITIAL_PANEL, H_INITIAL_PANEL));
+}
+
+result
+GroupListEditorPanel::OnInitializing(void)
+{
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Rectangle clientBounds = pForm->GetClientAreaBounds();
+ SetBounds(Rectangle(0, 0, clientBounds.width, clientBounds.height));
+
+ __pPresentationModel = GroupListPresentationModel::GetInstance();
+ __pPresentationModel->AddGroupChangeListener(*this);
+
+ __pGroupCheckList = new (std::nothrow) ArrayListT<bool>;
+ __pGroupCheckList->Construct();
+
+ __pTableView = new (std::nothrow) TableView();
+ __pTableView->Construct(Rectangle(0, 0, clientBounds.width, clientBounds.height - H_BOTTOM_LABEL), false, TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT);
+ __pTableView->SetBackgroundColor(COLOR_TABLE_BG);
+ __pTableView->AddScrollEventListener(*this);
+ __pTableView->SetItemProvider(this);
+ AddControl(*__pTableView);
+
+ __pBottomLabel = new (std::nothrow) Label();
+ __pBottomLabel->Construct(Rectangle(0, clientBounds.height - H_BOTTOM_LABEL, clientBounds.width, H_BOTTOM_LABEL),
+ ResourceManager::GetString(L"IDS_COM_POP_SELECTED") + INITIAL_SELECTED_COUNT);
+ __pBottomLabel->SetBackgroundColor(Color(COLOR_BOTTOM_LABEL_BG));
+ __pBottomLabel->SetTextColor(Color(COLOR_BOTTOM_LABEL_FONT));
+ __pBottomLabel->SetTextConfig(FONT_SIZE_BOTTOM_LABEL, LABEL_TEXT_STYLE_BOLD);
+ __pBottomLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ AddControl(*__pBottomLabel);
+
+ __pDefaultThumbnail = ResourceManager::GetBitmapN(IDB_CALL_ID_DEFAULT);
+
+ return E_SUCCESS;
+}
+
+result
+GroupListEditorPanel::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pPresentationModel != null)
+ {
+ __pPresentationModel->RemoveGroupChangeListener(*this);
+ }
+
+ if (__pGroupCheckList != null)
+ {
+ __pGroupCheckList->RemoveAll();
+ delete __pGroupCheckList;
+ }
+
+ delete __pDefaultThumbnail;
+
+ return r;
+}
+
+void
+GroupListEditorPanel::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ String categoryIndex = source.GetName();
+
+ switch (actionId)
+ {
+ case IDA_HEADER_CONTACTS:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST));
+ }
+ break;
+ case IDA_HEADER_GROUPS:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_LIST));
+ }
+ break;
+ case IDA_HEADER_FAVORITES:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST));
+ }
+ break;
+ case IDA_FOOTER_REMOVE:
+ {
+ bool isChecked = false;
+ int categoryCount = __pGroupCheckList->GetCount();
+
+ for (int index = categoryCount - 1; index >= 0; index--)
+ {
+ __pGroupCheckList->GetAt(index, isChecked);
+
+ if (isChecked == true)
+ {
+ __pPresentationModel->RemoveCategory(index);
+ }
+ }
+
+ pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_GROUP_LIST));
+ }
+ break;
+ case IDA_FOOTER_CANCEL:
+ {
+ pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_GROUP_LIST));
+ }
+ break;
+ case IDA_BUTTON_EDIT:
+ {
+ int index = -1;
+ Integer::Parse(source.GetName(), index);
+ ArrayList* pList = new (std::nothrow) ArrayList();
+ pList->Construct();
+ pList->Add(*(new (std::nothrow) Integer(__pPresentationModel->GetCategoryId(index))));
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pList);
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+GroupListEditorPanel::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
+{
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+ Header* pHeader = pForm->GetHeader();
+ pHeader->AddActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->AddActionEventListener(*this);
+ pFooter->RemoveBackButton();
+ pFooter->RemoveAllItems();
+ pFooter->RemoveButtonAt(BUTTON_POSITION_LEFT);
+
+ FooterItem footerRemove;
+ footerRemove.Construct(IDA_FOOTER_REMOVE);
+ footerRemove.SetText(ResourceManager::GetString(L"IDS_COM_BODY_REMOVE"));
+ pFooter->AddItem(footerRemove);
+
+ FooterItem footerCancel;
+ footerCancel.Construct(IDA_FOOTER_CANCEL);
+ footerCancel.SetText(ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
+ pFooter->AddItem(footerCancel);
+
+ if (previousSceneId.Equals(IDSCN_GROUP_EDITOR, false))
+ {
+ int selectedCount = 0;
+ bool isChecked = false;
+
+ IEnumeratorT<bool>* pEnum = __pGroupCheckList->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pEnum->GetCurrent(isChecked);
+ if (isChecked == true)
+ {
+ selectedCount++;
+ }
+ }
+ delete pEnum;
+
+ if (selectedCount > 0)
+ {
+ pFooter->SetItemEnabled(0, true);
+ }
+ else
+ {
+ pFooter->SetItemEnabled(0, false);
+ }
+ }
+ else
+ {
+ pFooter->SetItemEnabled(0, false);
+ UpdateGroupList();
+ __pTableView->UpdateTableView();
+ }
+
+ UpdateBottomLabel();
+
+ if (pArgs != null)
+ {
+ pArgs->RemoveAll(true);
+ delete pArgs;
+ }
+}
+
+void
+GroupListEditorPanel::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Header* pHeader = pForm->GetHeader();
+ pHeader->RemoveActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->SetBackButton();
+ pFooter->RemoveActionEventListener(*this);
+}
+
+void
+GroupListEditorPanel::OnContactsChanged(void)
+{
+ UpdateGroupList();
+ __pTableView->UpdateTableView();
+}
+
+void
+GroupListEditorPanel::OnCategoriesChanged(void)
+{
+ UpdateGroupList();
+ __pTableView->UpdateTableView();
+}
+
+result
+GroupListEditorPanel::ComposeGroupItem(Tizen::Ui::Controls::TableViewItem& item, int groupBoxIndex, const Tizen::Graphics::Point& itemPosition, bool isChecked)
+{
+ result r = E_SUCCESS;
+
+ String groupName = __pPresentationModel->GetCategoryName(groupBoxIndex);
+ int contactCount = __pPresentationModel->GetContactCountInCategory(groupBoxIndex);
+
+ Label* pContainer = new (std::nothrow) Label();
+ pContainer->Construct(Rectangle(itemPosition.x, itemPosition.y, W_ITEM, H_ITEM), L"");
+ pContainer->AddTouchEventListener(*this);
+ pContainer->SetName(Integer::ToString(groupBoxIndex));
+ item.AddControl(*pContainer);
+
+ Canvas* pCanvas = new (std::nothrow) Canvas();
+ pCanvas->Construct(Rectangle(0, 0, W_ITEM, H_ITEM));
+ pCanvas->SetBackgroundColor(COLOR_ITEM_CONTAINER);
+ pCanvas->Clear();
+
+ pCanvas->FillRectangle(COLOR_ITEM_HEADER[groupBoxIndex % THUMBNAIL_MAXIMUM_COUNT],
+ Rectangle(X_ITEM_HEADER, Y_ITEM_HEADER, W_ITEM_HEADER, H_ITEM_HEADER));
+
+ EnrichedText* pEnrichedText = new (std::nothrow) EnrichedText();
+ pEnrichedText->Construct(Dimension(W_ITEM_TEXT, H_ITEM_NAME));
+ pEnrichedText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
+ pEnrichedText->SetElementVerticalAlignment(TEXT_ALIGNMENT_MIDDLE);
+ pEnrichedText->SetTextWrapStyle(TEXT_WRAP_NONE);
+ pEnrichedText->SetTextAbbreviationEnabled(true);
+
+ TextElement* pNameText = new (std::nothrow) TextElement();
+ pNameText->Construct(groupName);
+ Font nameFont;
+ nameFont.Construct(FONT_STYLE_BOLD, FONT_SIZE_GROUP_NAME);
+ pNameText->SetFont(nameFont);
+
+ TextElement* pCountText = new (std::nothrow) TextElement();
+ pCountText->Construct(Integer::ToString(contactCount));
+ Font countFont;
+ countFont.Construct(FONT_STYLE_BOLD, FONT_SIZE_CONTACT_COUNT);
+ pCountText->SetFont(countFont);
+
+ if (__pPresentationModel->IsDefaultCategory(groupBoxIndex))
+ {
+ pNameText->SetTextColor(COLOR_ITEM_TEXT_DIM);
+ pCountText->SetTextColor(COLOR_ITEM_TEXT_DIM);
+ }
+ else
+ {
+ pNameText->SetTextColor(COLOR_ITEM_TEXT);
+ pCountText->SetTextColor(COLOR_ITEM_TEXT);
+ }
+
+ pEnrichedText->Add(*pNameText);
+ pCanvas->DrawText(Point(X_ITEM_TEXT, Y_ITEM_NAME), *pEnrichedText);
+ pEnrichedText->Remove(*pNameText, true);
+
+ pEnrichedText->Add(*pCountText);
+ pCanvas->DrawText(Point(X_ITEM_TEXT, Y_ITEM_COUNT), *pEnrichedText);
+ pEnrichedText->Remove(*pCountText, true);
+
+ r = ArrangeThumbnails(*pCanvas, groupBoxIndex, contactCount);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to arrange thumbnails", GetErrorMessage(r));
+
+ Bitmap* pBitmap = new (std::nothrow) Bitmap();
+ pBitmap->Construct(*pCanvas, Rectangle(0, 0, W_ITEM, H_ITEM));
+
+ pContainer->SetBackgroundBitmap(*pBitmap);
+
+ delete pEnrichedText;
+ delete pCanvas;
+ delete pBitmap;
+
+ pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_RENAME);
+ if (pBitmap != null)
+ {
+ pBitmap->Scale(Dimension(W_RENAME, H_RENAME));
+ }
+ Button* pRenameButton = new (std::nothrow) Button();
+ pRenameButton->Construct(Rectangle(itemPosition.x + X_RENAME, itemPosition.y + Y_RENAME, W_RENAME, H_RENAME));
+ pRenameButton->SetNormalBitmap(Point(0, 0), *pBitmap);
+ pRenameButton->SetPressedBitmap(Point(0, 0), *pBitmap);
+ delete pBitmap;
+
+ pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_CIRCLE_NORMAL);
+ if (pBitmap != null)
+ {
+ pRenameButton->SetNormalBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+
+ pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_CIRCLE_PRESSED);
+ if (pBitmap != null)
+ {
+ pRenameButton->SetPressedBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+
+ pRenameButton->SetName(Integer::ToString(groupBoxIndex));
+ pRenameButton->SetActionId(IDA_BUTTON_EDIT);
+ pRenameButton->AddActionEventListener(*this);
+ item.AddControl(*pRenameButton);
+
+ if (isChecked == true)
+ {
+ CreateCheckLabel(item, Rectangle(itemPosition.x, itemPosition.y, W_ITEM, H_ITEM), groupBoxIndex);
+ }
+
+ return r;
+}
+
+result
+GroupListEditorPanel::ArrangeThumbnails(Tizen::Graphics::Canvas& canvas, int groupBoxIndex, int contactCount)
+{
+ result r = E_SUCCESS;
+
+ Rectangle itemBounds;
+
+ r = __pPresentationModel->UpdatePersonList(groupBoxIndex);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to update person list", GetErrorMessage(r));
+
+ Bitmap* pCategoryThumbnail = __pPresentationModel->GetThumbnailN(Dimension(W_THUMBNAIL_WIDEST, W_THUMBNAIL_WIDEST), groupBoxIndex, -1);
+ if (pCategoryThumbnail != null)
+ {
+ canvas.DrawBitmap(Rectangle(X_THUMBNAIL_LEFT, Y_THUMBNAIL_TOP, W_THUMBNAIL_WIDEST, H_THUMBNAIL_TALL), *pCategoryThumbnail);
+ return E_SUCCESS;
+ }
+
+ if (contactCount == THUMBNAIL_COUNT_SINGLE)
+ {
+ itemBounds.x = X_THUMBNAIL_LEFT;
+ itemBounds.y = Y_THUMBNAIL_TOP;
+ itemBounds.width = W_THUMBNAIL_WIDEST;
+ itemBounds.height = H_THUMBNAIL_TALL;
+ r = PlaceThumbnail(canvas, itemBounds, groupBoxIndex, 0);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to place thumbnail", GetErrorMessage(r));
+ }
+ else if (contactCount == THUMBNAIL_COUNT_DOUBLE)
+ {
+ itemBounds.x = X_THUMBNAIL_LEFT;
+ itemBounds.y = Y_THUMBNAIL_TOP;
+ itemBounds.width = W_THUMBNAIL_WIDER;
+ itemBounds.height = H_THUMBNAIL_TALL;
+
+ for (int index = 0; index < contactCount; index++)
+ {
+ r = PlaceThumbnail(canvas, itemBounds, groupBoxIndex, index);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to place thumbnail", GetErrorMessage(r));
+
+ itemBounds.x = X_THUMBNAIL_RIGHT;
+ itemBounds.width = W_THUMBNAIL;
+ }
+ }
+ else if (contactCount >= THUMBNAIL_COUNT_TRIPLE_RANGE_MIN && contactCount <= THUMBNAIL_COUNT_TRIPLE_RANGE_MAX)
+ {
+ itemBounds.x = X_THUMBNAIL_LEFT;
+ itemBounds.y = Y_THUMBNAIL_TOP;
+ itemBounds.width = W_THUMBNAIL_WIDER;
+ itemBounds.height = H_THUMBNAIL_TALL;
+
+ for (int index = 0; index < THUMBNAIL_COUNT_TRIPLE; index++)
+ {
+ r = PlaceThumbnail(canvas, itemBounds, groupBoxIndex, index);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to place thumbnail", GetErrorMessage(r));
+
+ if (index == 0)
+ {
+ itemBounds.x = X_THUMBNAIL_RIGHT;
+ itemBounds.width = W_THUMBNAIL;
+ itemBounds.height = H_THUMBNAIL_SHORT;
+ }
+ else if (index == 1)
+ {
+ itemBounds.y = Y_THUMBNAIL_BOTTOM;
+ }
+ }
+ }
+ else if (contactCount >= THUMBNAIL_COUNT_MULTIPLE)
+ {
+ itemBounds.width = W_THUMBNAIL;
+ itemBounds.height = H_THUMBNAIL_SHORT;
+
+ for (int index = 0; index < THUMBNAIL_MAXIMUM_COUNT; index++)
+ {
+ switch ((index % MULTIPLE_COLUMN_COUNT))
+ {
+ case 0:
+ itemBounds.x = X_THUMBNAIL_LEFT;
+ break;
+ case 1:
+ itemBounds.x = X_THUMBNAIL_CENTER;
+ break;
+ case 2:
+ itemBounds.x = X_THUMBNAIL_RIGHT;
+ break;
+ }
+
+ if (index < MULTIPLE_COLUMN_COUNT)
+ {
+ itemBounds.y = Y_THUMBNAIL_TOP;
+ }
+ else
+ {
+ itemBounds.y = Y_THUMBNAIL_BOTTOM;
+ }
+
+ r = PlaceThumbnail(canvas, itemBounds, groupBoxIndex, index);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to place thumbnail", GetErrorMessage(r));
+ }
+ }
+
+ return r;
+}
+
+result
+GroupListEditorPanel::PlaceThumbnail(Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& bounds, int categoryIndex, int contactIndex)
+{
+ result r = E_SUCCESS;
+
+ bool isDefaultThumbnail = false;
+
+ Bitmap* pPersonThumbnail = null;
+ Bitmap* pClippedThumbnail = new (std::nothrow) Bitmap();
+ if (bounds.width > bounds.height)
+ {
+ pPersonThumbnail = __pPresentationModel->GetThumbnailN(Dimension(bounds.width, bounds.width), categoryIndex, contactIndex);
+ if (pPersonThumbnail == null)
+ {
+ pPersonThumbnail = __pDefaultThumbnail;
+ pPersonThumbnail->SetScalingQuality(BITMAP_SCALING_QUALITY_LOW);
+ pPersonThumbnail->Scale(Dimension(bounds.width, bounds.width));
+ isDefaultThumbnail = true;
+ }
+
+ pClippedThumbnail->Construct(*pPersonThumbnail, Rectangle(0, (bounds.width - bounds.height) / 2, bounds.width, bounds.height));
+ canvas.DrawBitmap(bounds, *pClippedThumbnail);
+ }
+ else if (bounds.width < bounds.height)
+ {
+ pPersonThumbnail = __pPresentationModel->GetThumbnailN(Dimension(bounds.height, bounds.height), categoryIndex, contactIndex);
+ if (pPersonThumbnail == null)
+ {
+ pPersonThumbnail = __pDefaultThumbnail;
+ pPersonThumbnail->SetScalingQuality(BITMAP_SCALING_QUALITY_LOW);
+ pPersonThumbnail->Scale(Dimension(bounds.height, bounds.height));
+ isDefaultThumbnail = true;
+ }
+
+ pClippedThumbnail->Construct(*pPersonThumbnail, Rectangle((bounds.height - bounds.width) / 2, 0, bounds.width, bounds.height));
+ canvas.DrawBitmap(bounds, *pClippedThumbnail);
+ }
+ else
+ {
+ pPersonThumbnail = __pPresentationModel->GetThumbnailN(Dimension(bounds.width, bounds.height), categoryIndex, contactIndex);
+ if (pPersonThumbnail == null)
+ {
+ pPersonThumbnail = __pDefaultThumbnail;
+ pPersonThumbnail->SetScalingQuality(BITMAP_SCALING_QUALITY_LOW);
+ pPersonThumbnail->Scale(Dimension(bounds.width, bounds.height));
+ isDefaultThumbnail = true;
+ }
+
+ canvas.DrawBitmap(bounds, *pPersonThumbnail);
+ }
+
+ if (isDefaultThumbnail == false)
+ {
+ delete pPersonThumbnail;
+ }
+ delete pClippedThumbnail;
+
+ return r;
+}
+
+void
+GroupListEditorPanel::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo & touchInfo)
+{
+ __isTouchMoved = false;
+}
+
+void
+GroupListEditorPanel::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+ if (source.Contains(currentPosition) == false || touchInfo.IsFlicked() == true)
+ {
+ return;
+ }
+
+ if (__isTouchMoved)
+ {
+ return;
+ }
+
+ TableViewItem* pItem = static_cast<TableViewItem*>(source.GetParent());
+ if (pItem == null)
+ {
+ return;
+ }
+
+ bool isChecked = false;
+ bool isCheckLabelCreated = false;
+ Label* pCheckLabel = null;
+
+ int groupBoxIndex = -1;
+ Integer::Parse(source.GetName(), groupBoxIndex);
+
+ if (__pPresentationModel->IsDefaultCategory(groupBoxIndex))
+ {
+ return;
+ }
+
+ if (groupBoxIndex >= CHECKED_MASK)
+ {
+ groupBoxIndex = groupBoxIndex - CHECKED_MASK;
+ isCheckLabelCreated = true;
+ }
+
+ __pGroupCheckList->GetAt(groupBoxIndex, isChecked);
+
+ if (isChecked == true)
+ {
+ // hide check label
+ pCheckLabel = static_cast<Label*>(&(const_cast<Control&>(source)));
+ if (pCheckLabel == null)
+ {
+ return;
+ }
+
+ pCheckLabel->SetShowState(false);
+ __pGroupCheckList->SetAt(false, groupBoxIndex);
+ }
+ else
+ {
+ // show or create check label
+ if (isCheckLabelCreated == true)
+ {
+ pCheckLabel = static_cast<Label*>(pItem->GetControl(Integer::ToString(groupBoxIndex + CHECKED_MASK), false));
+ if (pCheckLabel == null)
+ {
+ return;
+ }
+
+ pCheckLabel->SetShowState(true);
+ }
+ else
+ {
+ CreateCheckLabel(*pItem, source.GetBounds(), groupBoxIndex);
+ }
+
+ __pGroupCheckList->SetAt(true, groupBoxIndex);
+ }
+
+ UpdateBottomLabel();
+}
+
+void
+GroupListEditorPanel::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+GroupListEditorPanel::OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+GroupListEditorPanel::OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+GroupListEditorPanel::OnTouchCanceled(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+result
+GroupListEditorPanel::UpdateBottomLabel(void)
+{
+ int selectedCount = 0;
+ bool isChecked = false;
+
+ IEnumeratorT<bool>* pEnum = __pGroupCheckList->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pEnum->GetCurrent(isChecked);
+ if (isChecked == true)
+ {
+ selectedCount++;
+ }
+ }
+
+ delete pEnum;
+
+ String selected = ResourceManager::GetString(L"IDS_COM_POP_SELECTED");
+ selected.Append(L" (");
+ selected.Append(selectedCount);
+ selected.Append(L")");
+ __pBottomLabel->SetText(selected);
+ __pBottomLabel->Invalidate(false);
+
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Footer* pFooter = pForm->GetFooter();
+
+ if (selectedCount > 0)
+ {
+ pFooter->SetItemEnabled(0, true);
+ }
+ else
+ {
+ pFooter->SetItemEnabled(0, false);
+ }
+
+ pFooter->Invalidate(true);
+
+ return E_SUCCESS;
+}
+
+void
+GroupListEditorPanel::UpdateGroupList(void)
+{
+ __pGroupCheckList->RemoveAll();
+
+ int groupCount = __pPresentationModel->GetCategoryCount();
+
+ for (int index = 0; index < groupCount; index++)
+ {
+ __pGroupCheckList->Add(false);
+ }
+}
+
+result
+GroupListEditorPanel::CreateCheckLabel(Tizen::Ui::Controls::TableViewItem& item, const Tizen::Graphics::Rectangle& bounds, int groupBoxIndex)
+{
+ result r = E_SUCCESS;
+
+ Label* pCheckLabel = new (std::nothrow) Label();
+ pCheckLabel->Construct(bounds, L"");
+ pCheckLabel->SetName(Integer::ToString(groupBoxIndex + CHECKED_MASK));
+ pCheckLabel->AddTouchEventListener(*this);
+
+ Canvas* pCanvas = new (std::nothrow) Canvas();
+ pCanvas->Construct(Rectangle(0, 0, bounds.width, bounds.height));
+ pCanvas->SetBackgroundColor(COLOR_CHECK_LABEL);
+ pCanvas->Clear();
+
+ Bitmap* pBitmapMark = ResourceManager::GetBitmapN(IDB_CHECK_MARK);
+ if (pBitmapMark != null)
+ {
+ pBitmapMark->SetScalingQuality(BITMAP_SCALING_QUALITY_HIGH);
+ pBitmapMark->Scale(Dimension(H_CHECK_MARK, H_CHECK_MARK));
+ pCanvas->DrawBitmap(Rectangle(((bounds.width - H_CHECK_MARK) / 2), ((bounds.height - H_CHECK_MARK) / 2), H_CHECK_MARK, H_CHECK_MARK), *pBitmapMark);
+ }
+
+ Bitmap* pBitmapBackground = new (std::nothrow) Bitmap();
+ pBitmapBackground->Construct(*pCanvas, Rectangle(0, 0, bounds.width, bounds.height));
+
+ pCheckLabel->SetBackgroundBitmap(*pBitmapBackground);
+
+ item.AddControl(*pCheckLabel);
+ pCheckLabel->Invalidate(false);
+
+ delete pCanvas;
+ delete pBitmapMark;
+ delete pBitmapBackground;
+
+ return r;
+}
+
+int
+GroupListEditorPanel::GetItemCount(void)
+{
+ int count = __pPresentationModel->GetCategoryCount();
+
+ if (count % COLUMN_COUNT == 1)
+ {
+ count = count / COLUMN_COUNT + 1;
+ }
+ else if (count % COLUMN_COUNT == 0)
+ {
+ count = count / COLUMN_COUNT;
+ }
+
+ // Add Account name
+ return ++count;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+GroupListEditorPanel::CreateItem(int itemIndex, int itemWidth)
+{
+ if (itemIndex == 0)
+ {
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_GROUP_ITEM));
+
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ Label* pAccountLabel = new (std::nothrow) Label();
+ pAccountLabel->Construct(Rectangle(X_ITEM, Y_ACCOUNT_LABEL, itemWidth - X_ITEM, H_ACCOUNT_LABEL),
+ ResourceManager::GetString(L"IDS_PB_BODY_PHONE"));
+ pAccountLabel->SetTextConfig(FONT_SIZE_ACCOUNT_LABEL, LABEL_TEXT_STYLE_BOLD);
+ pAccountLabel->SetTextColor(Color(COLOR_ACCOUNT_LABEL));
+ pAccountLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pItem->AddControl(*pAccountLabel);
+
+ return pItem;
+ }
+ else
+ {
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_ITEM + H_ITEM_GAP));
+
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ int groupBoxIndex = (itemIndex - 1) * COLUMN_COUNT;
+
+ Point itemPosition;
+ itemPosition.x = X_ITEM;
+ itemPosition.y = H_ITEM_GAP / 2;
+
+ bool isChecked = false;
+ for (int index = 0; index < COLUMN_COUNT; index++)
+ {
+ result r = __pGroupCheckList->GetAt(groupBoxIndex, isChecked);
+ if (r == E_SUCCESS)
+ {
+ ComposeGroupItem(*pItem, groupBoxIndex, itemPosition, isChecked);
+ }
+
+ itemPosition.x = X_ITEM + W_ITEM + W_ITEM_GAP;
+ groupBoxIndex++;
+ }
+
+ return pItem;
+ }
+}
+
+bool
+GroupListEditorPanel::DeleteItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ delete pItem;
+ return true;
+}
+
+void
+GroupListEditorPanel::UpdateItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+}
+
+int
+GroupListEditorPanel::GetDefaultItemHeight(void)
+{
+ return H_ITEM;
+}
+
+void
+GroupListEditorPanel::OnScrollEndReached(Tizen::Ui::Control& source, Tizen::Ui::Controls::ScrollEndEvent type)
+{
+}
+
+void
+GroupListEditorPanel::OnScrollPositionChanged(Tizen::Ui::Control& source, int scrollPos)
+{
+ __isTouchMoved = 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 CtGroupListPanel.cpp
+ * @brief This is the implementation file for the GroupListPanel class.
+ */
+
+#include "CtContactsApp.h"
+#include "CtGroupListPanel.h"
+#include "CtGroupListPresentationModel.h"
+#include "CtMainForm.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtTypes.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Utility;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+static const int IDA_HEADER_CONTACTS = 10;
+static const int IDA_HEADER_GROUPS = 11;
+static const int IDA_HEADER_FAVORITES = 12;
+static const int IDA_FOOTER_MORE = 20;
+static const int IDA_FOOTER_CREATE = 21;
+static const int IDA_MORE_EDIT = 22;
+static const int IDA_CONTEXT_MESSAGE = 30;
+static const int IDA_CONTEXT_EMAIL = 31;
+
+static const wchar_t* IDB_CALLER_ID_DEFAULT = L"caller_ID.png";
+static const wchar_t* IDB_EXPAND_OPENED = L"C02_folder_expand_opened.png";
+static const wchar_t* IDB_MORE_NORMAL = L"00_icon_more.png";
+static const wchar_t* IDB_MORE_PRESSED = L"00_icon_more_press.png";
+
+static const int W_INITIAL_PANEL = 10;
+static const int H_INITIAL_PANEL = 10;
+static const int Y_ACCOUNT_LABEL = 18;
+static const int H_ACCOUNT_LABEL = 40;
+static const int H_GROUP_ITEM = 60;
+static const int X_ITEM = 21;
+static const int W_ITEM = 321;
+static const int H_ITEM = 290;
+static const int H_ITEM_GAP = 42;
+static const int W_ITEM_GAP = 36;
+static const int X_ITEM_HEADER = 3;
+static const int Y_ITEM_HEADER = 3;
+static const int H_ITEM_HEADER = 72;
+static const int X_ITEM_TEXT = 10;
+static const int W_ITEM_TEXT = 251;
+static const int Y_ITEM_NAME = 7;
+static const int H_ITEM_NAME = 38;
+static const int Y_ITEM_COUNT = 45;
+static const int X_TOGGLE_BG = 264;
+static const int W_TOGGLE_BG = 54;
+static const int X_TOGGLE = 10;
+static const int Y_TOGGLE = 32;
+static const int W_TOGGLE = 34;
+static const int H_TOGGLE = 21;
+static const int X_MORE = 55;
+
+static const int X_THUMBNAIL_LEFT = 3;
+static const int X_THUMBNAIL_CENTER = 109;
+static const int X_THUMBNAIL_RIGHT = 215;
+static const int Y_THUMBNAIL_TOP = 78;
+static const int Y_THUMBNAIL_BOTTOM = 184;
+static const int W_THUMBNAIL = 103;
+static const int W_THUMBNAIL_WIDER = 209;
+static const int W_THUMBNAIL_WIDEST = 315;
+static const int H_THUMBNAIL_TALL = 209;
+static const int H_THUMBNAIL_SHORT = 103;
+static const int THUMBNAIL_MAXIMUM_COUNT = 6;
+static const int THUMBNAIL_COUNT_SINGLE = 1;
+static const int THUMBNAIL_COUNT_DOUBLE = 2;
+static const int THUMBNAIL_COUNT_TRIPLE = 3;
+static const int THUMBNAIL_COUNT_TRIPLE_RANGE_MIN = 3;
+static const int THUMBNAIL_COUNT_TRIPLE_RANGE_MAX = 10;
+static const int THUMBNAIL_COUNT_MULTIPLE = 11;
+static const int MULTIPLE_COLUMN_COUNT = 3;
+static const int COLUMN_COUNT = 2;
+static const int CONTEXT_MENU_MASK = 0x40000000;
+
+static const int FONT_SIZE_ACCOUNT_LABEL = 32;
+static const int FONT_SIZE_GROUP_NAME = 33;
+static const int FONT_SIZE_CONTACT_COUNT = 23;
+
+static const unsigned int COLOR_TABLE_BG = Color32<248, 246, 239>::Value;
+static const unsigned int COLOR_ACCOUNT_LABEL = Color32<41, 41, 41>::Value;
+static const unsigned int COLOR_ITEM_CONTAINER = Color32<209, 209, 209>::Value;
+static const unsigned int COLOR_ITEM_HEADER[6] = {Color32<74, 119, 149>::Value, Color32<135, 73, 62>::Value, Color32<70, 101, 37>::Value, Color32<69, 81, 102>::Value, Color32<82, 69, 102>::Value, Color32<127, 102, 65>::Value};
+static const unsigned int COLOR_ITEM_NAME = Color32<255, 255, 255>::Value;
+static const unsigned int COLOR_ITEM_COUNT = Color32<255, 255, 255>::Value;
+
+GroupListPanel::GroupListPanel(void)
+ : __pTableView(null)
+ , __pContextMenuQuickMenu(null)
+ , __pContextMenuMore(null)
+ , __pDefaultThumbnail(null)
+ , __pPresentationModel(null)
+ , __isToggleOpened(false)
+ , __isTouchMoved(false)
+ , __scrolledDistance(0)
+{
+}
+
+GroupListPanel::~GroupListPanel(void)
+{
+}
+
+void
+GroupListPanel::Initialize(void)
+{
+ Construct(Rectangle(0, 0, W_INITIAL_PANEL, H_INITIAL_PANEL));
+}
+
+result
+GroupListPanel::OnInitializing(void)
+{
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Rectangle clientBounds = pForm->GetClientAreaBounds();
+ SetBounds(Rectangle(0, 0, clientBounds.width, clientBounds.height));
+
+ __pPresentationModel = GroupListPresentationModel::GetInstance();
+ __pPresentationModel->AddGroupChangeListener(*this);
+
+ __pTableView = new (std::nothrow) TableView();
+ __pTableView->Construct(Rectangle(0, 0, clientBounds.width, clientBounds.height), false, TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT);
+ __pTableView->SetBackgroundColor(COLOR_TABLE_BG);
+ __pTableView->AddScrollEventListener(*this);
+ __pTableView->SetItemProvider(this);
+ AddControl(*__pTableView);
+
+ __pContextMenuQuickMenu = new (std::nothrow) ContextMenu();
+ __pContextMenuQuickMenu->Construct(Point(0, 0), CONTEXT_MENU_STYLE_GRID);
+ __pContextMenuQuickMenu->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_MESSAGE"), IDA_CONTEXT_MESSAGE);
+ __pContextMenuQuickMenu->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_EMAIL"), IDA_CONTEXT_EMAIL);
+ __pContextMenuQuickMenu->AddActionEventListener(*this);
+
+ __pContextMenuMore = new (std::nothrow) ContextMenu();
+ __pContextMenuMore->Construct(Point(X_MORE, clientBounds.y + clientBounds.height), CONTEXT_MENU_STYLE_LIST);
+ __pContextMenuMore->AddItem(ResourceManager::GetString(L"IDS_COM_SK_EDIT"), IDA_MORE_EDIT);
+ __pContextMenuMore->AddActionEventListener(*this);
+
+ __pDefaultThumbnail = ResourceManager::GetBitmapN(IDB_CALLER_ID_DEFAULT);
+
+ return E_SUCCESS;
+}
+
+result
+GroupListPanel::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pPresentationModel != null)
+ {
+ __pPresentationModel->RemoveGroupChangeListener(*this);
+ }
+
+ delete __pContextMenuQuickMenu;
+ delete __pContextMenuMore;
+ delete __pDefaultThumbnail;
+
+ return r;
+}
+
+void
+GroupListPanel::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ String groupIndex = source.GetName();
+
+ switch (actionId)
+ {
+ case IDA_HEADER_CONTACTS:
+ {
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_SINGLE)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST));
+ }
+ else if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_MULTI)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST_EDITOR));
+ }
+ }
+ else
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST));
+ }
+ }
+ break;
+ case IDA_HEADER_GROUPS:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_LIST));
+ }
+ break;
+ case IDA_HEADER_FAVORITES:
+ {
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_SINGLE)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST));
+ }
+ else if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_MULTI)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST_EDITOR));
+ }
+ }
+ else
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST));
+ }
+ }
+ break;
+ case IDA_FOOTER_CREATE:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT));
+ }
+ break;
+ case IDA_FOOTER_MORE:
+ {
+ __pContextMenuMore->SetShowState(true);
+ __pContextMenuMore->Show();
+ }
+ break;
+ case IDA_MORE_EDIT:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_LIST_EDITOR));
+ }
+ break;
+ case IDA_CONTEXT_MESSAGE:
+ {
+ int groupBoxIndex = 0;
+ Integer::Parse(source.GetName(), groupBoxIndex);
+
+ ArrayList* pList = new (std::nothrow) ArrayList();
+ pList->Construct();
+
+ if (__pPresentationModel->GetCategoryCount() == groupBoxIndex)
+ {
+ pList->Add(*(new (std::nothrow) Integer(ID_GROUP_CONTACT_NOT_ASSIGNED)));
+ }
+ else
+ {
+ pList->Add(*(new (std::nothrow) Integer(__pPresentationModel->GetCategoryId(groupBoxIndex))));
+ }
+ pList->Add(*(new (std::nothrow) Integer(ID_GROUP_CONTACT_SELECT_MESSAGE)));
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_CONTACT_LIST_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pList);
+ }
+ break;
+ case IDA_CONTEXT_EMAIL:
+ {
+ int groupBoxIndex = 0;
+ Integer::Parse(source.GetName(), groupBoxIndex);
+
+ ArrayList* pList = new (std::nothrow) ArrayList();
+ pList->Construct();
+
+ if (__pPresentationModel->GetCategoryCount() == groupBoxIndex)
+ {
+ pList->Add(*(new (std::nothrow) Integer(ID_GROUP_CONTACT_NOT_ASSIGNED)));
+ }
+ else
+ {
+ pList->Add(*(new (std::nothrow) Integer(__pPresentationModel->GetCategoryId(groupBoxIndex))));
+ }
+ pList->Add(*(new (std::nothrow) Integer(ID_GROUP_CONTACT_SELECT_EMAIL)));
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_CONTACT_LIST_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pList);
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+GroupListPanel::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Header* pHeader = pForm->GetHeader();
+ pHeader->AddActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->RemoveAllItems();
+ pFooter->RemoveButtonAt(BUTTON_POSITION_LEFT);
+ pFooter->SetBackButton();
+ pFooter->AddActionEventListener(*this);
+
+ if (pContactsApp->GetOperationId() != OPERATION_ID_PICK)
+ {
+ FooterItem footerItemCreate;
+ footerItemCreate.Construct(IDA_FOOTER_CREATE);
+ footerItemCreate.SetText(ResourceManager::GetString(L"IDS_COM_BODY_CREATE"));
+ pFooter->AddItem(footerItemCreate);
+
+ ButtonItem buttonItemMore;
+ buttonItemMore.Construct(BUTTON_ITEM_STYLE_ICON, IDA_FOOTER_MORE);
+ buttonItemMore.SetBackgroundBitmap(BUTTON_ITEM_STATUS_NORMAL, ResourceManager::GetBitmapN(IDB_MORE_NORMAL));
+ buttonItemMore.SetBackgroundBitmap(BUTTON_ITEM_STATUS_PRESSED, ResourceManager::GetBitmapN(IDB_MORE_PRESSED));
+ pFooter->SetButton(BUTTON_POSITION_LEFT, buttonItemMore);
+ }
+
+ if (pArgs != null)
+ {
+ pArgs->RemoveAll(true);
+ delete pArgs;
+ }
+}
+
+void
+GroupListPanel::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Header* pHeader = pForm->GetHeader();
+ pHeader->RemoveActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->RemoveActionEventListener(*this);
+}
+
+void
+GroupListPanel::OnContactsChanged(void)
+{
+ __pTableView->UpdateTableView();
+}
+
+void
+GroupListPanel::OnCategoriesChanged(void)
+{
+ __pTableView->UpdateTableView();
+}
+
+result
+GroupListPanel::ComposeGroupItem(Tizen::Ui::Controls::TableViewItem& item, int groupBoxIndex, const Tizen::Graphics::Point& itemPosition, int contactCount, bool isNotAssigned)
+{
+ result r = E_SUCCESS;
+
+ String groupName;
+
+ if (isNotAssigned == true)
+ {
+ groupName = ResourceManager::GetString(L"IDS_PB_BODY_NOT_ASSIGNED");
+ }
+ else
+ {
+ groupName = __pPresentationModel->GetCategoryName(groupBoxIndex);
+ }
+
+ Label* pContainer = new (std::nothrow) Label();
+ pContainer->Construct(Rectangle(itemPosition.x, itemPosition.y, W_ITEM, H_ITEM), L"");
+ pContainer->AddTouchEventListener(*this);
+ pContainer->SetName(Integer::ToString(groupBoxIndex));
+ item.AddControl(*pContainer);
+
+ Canvas* pCanvas = new (std::nothrow) Canvas();
+ pCanvas->Construct(Rectangle(0, 0, W_ITEM, H_ITEM));
+ pCanvas->SetBackgroundColor(COLOR_ITEM_CONTAINER);
+ pCanvas->Clear();
+
+ pCanvas->FillRectangle(COLOR_ITEM_HEADER[groupBoxIndex % THUMBNAIL_MAXIMUM_COUNT],
+ Rectangle(X_ITEM_HEADER, Y_ITEM_HEADER, X_ITEM_TEXT + W_ITEM_TEXT + W_TOGGLE_BG, H_ITEM_HEADER));
+
+ EnrichedText* pEnrichedText = new (std::nothrow) EnrichedText();
+ pEnrichedText->Construct(Dimension(W_ITEM_TEXT, H_ITEM_NAME));
+ pEnrichedText->SetHorizontalAlignment(TEXT_ALIGNMENT_LEFT);
+ pEnrichedText->SetElementVerticalAlignment(TEXT_ALIGNMENT_MIDDLE);
+ pEnrichedText->SetTextWrapStyle(TEXT_WRAP_NONE);
+ pEnrichedText->SetTextAbbreviationEnabled(true);
+
+ TextElement* pNameText = new (std::nothrow) TextElement();
+ pNameText->Construct(groupName);
+ pNameText->SetTextColor(COLOR_ITEM_NAME);
+ Font nameFont;
+ nameFont.Construct(FONT_STYLE_BOLD, FONT_SIZE_GROUP_NAME);
+ pNameText->SetFont(nameFont);
+
+ TextElement* pCountText = new (std::nothrow) TextElement();
+ pCountText->Construct(Integer::ToString(contactCount));
+ pCountText->SetTextColor(COLOR_ITEM_COUNT);
+ Font countFont;
+ countFont.Construct(FONT_STYLE_BOLD, FONT_SIZE_CONTACT_COUNT);
+ pCountText->SetFont(countFont);
+
+ pEnrichedText->Add(*pNameText);
+ pCanvas->DrawText(Point(X_ITEM_TEXT, Y_ITEM_NAME), *pEnrichedText);
+ pEnrichedText->Remove(*pNameText, true);
+
+ pEnrichedText->Add(*pCountText);
+ pCanvas->DrawText(Point(X_ITEM_TEXT, Y_ITEM_COUNT), *pEnrichedText);
+ pEnrichedText->Remove(*pCountText, true);
+
+ r = ArrangeThumbnails(*pCanvas, groupBoxIndex, contactCount);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to arrange thumbnails", GetErrorMessage(r));
+
+ Bitmap* pBitmap = new (std::nothrow) Bitmap();
+ pBitmap->Construct(*pCanvas, Rectangle(0, 0, W_ITEM, H_ITEM));
+
+ pContainer->SetBackgroundBitmap(*pBitmap);
+
+ delete pEnrichedText;
+ delete pCanvas;
+ delete pBitmap;
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ if (pContactsApp->GetOperationId() != OPERATION_ID_PICK)
+ {
+ Label* pToggle = new (std::nothrow) Label();
+ pToggle->Construct(Rectangle(itemPosition.x + X_TOGGLE_BG, itemPosition.y + Y_ITEM_HEADER, W_TOGGLE_BG, H_ITEM_HEADER), L"");
+ pToggle->AddTouchEventListener(*this);
+ pToggle->SetName(Integer::ToString(CONTEXT_MENU_MASK + groupBoxIndex));
+ item.AddControl(*pToggle);
+
+ pCanvas = new (std::nothrow) Canvas();
+ pCanvas->Construct(Rectangle(0, 0, W_TOGGLE_BG, H_ITEM_HEADER));
+ pCanvas->SetBackgroundColor(COLOR_ITEM_HEADER[groupBoxIndex % THUMBNAIL_MAXIMUM_COUNT]);
+ pCanvas->Clear();
+
+ Bitmap* pToggleBitmap = ResourceManager::GetBitmapN(IDB_EXPAND_OPENED);
+ if (pToggleBitmap != null)
+ {
+ pCanvas->DrawBitmap(Rectangle(X_TOGGLE, Y_TOGGLE, W_TOGGLE, H_TOGGLE), *pToggleBitmap);
+ }
+
+ Bitmap* pToggleBgBitmap = new (std::nothrow) Bitmap();
+ pToggleBgBitmap->Construct(*pCanvas, Rectangle(0, 0, W_TOGGLE_BG, H_ITEM_HEADER));
+ pToggle->SetBackgroundBitmap(*pToggleBgBitmap);
+
+ delete pCanvas;
+ delete pToggleBitmap;
+ delete pToggleBgBitmap;
+ }
+
+ return r;
+}
+
+result
+GroupListPanel::ArrangeThumbnails(Tizen::Graphics::Canvas& canvas, int groupBoxIndex, int contactCount)
+{
+ result r = E_SUCCESS;
+
+ Rectangle itemBounds;
+
+ r = __pPresentationModel->UpdatePersonList(groupBoxIndex);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to update person list", GetErrorMessage(r));
+
+ Bitmap* pCategoryThumbnail = __pPresentationModel->GetThumbnailN(Dimension(W_THUMBNAIL_WIDEST, W_THUMBNAIL_WIDEST), groupBoxIndex, -1);
+ if (pCategoryThumbnail != null)
+ {
+ canvas.DrawBitmap(Rectangle(X_THUMBNAIL_LEFT, Y_THUMBNAIL_TOP, W_THUMBNAIL_WIDEST, H_THUMBNAIL_TALL), *pCategoryThumbnail);
+ return E_SUCCESS;
+ }
+
+ if (contactCount == THUMBNAIL_COUNT_SINGLE)
+ {
+ itemBounds.x = X_THUMBNAIL_LEFT;
+ itemBounds.y = Y_THUMBNAIL_TOP;
+ itemBounds.width = W_THUMBNAIL_WIDEST;
+ itemBounds.height = H_THUMBNAIL_TALL;
+ r = PlaceThumbnail(canvas, itemBounds, groupBoxIndex, 0);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to place thumbnail", GetErrorMessage(r));
+ }
+ else if (contactCount == THUMBNAIL_COUNT_DOUBLE)
+ {
+ itemBounds.x = X_THUMBNAIL_LEFT;
+ itemBounds.y = Y_THUMBNAIL_TOP;
+ itemBounds.width = W_THUMBNAIL_WIDER;
+ itemBounds.height = H_THUMBNAIL_TALL;
+
+ for (int index = 0; index < contactCount; index++)
+ {
+ r = PlaceThumbnail(canvas, itemBounds, groupBoxIndex, index);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to place thumbnail", GetErrorMessage(r));
+
+ itemBounds.x = X_THUMBNAIL_RIGHT;
+ itemBounds.width = W_THUMBNAIL;
+ }
+ }
+ else if (contactCount >= THUMBNAIL_COUNT_TRIPLE_RANGE_MIN && contactCount <= THUMBNAIL_COUNT_TRIPLE_RANGE_MAX)
+ {
+ itemBounds.x = X_THUMBNAIL_LEFT;
+ itemBounds.y = Y_THUMBNAIL_TOP;
+ itemBounds.width = W_THUMBNAIL_WIDER;
+ itemBounds.height = H_THUMBNAIL_TALL;
+
+ for (int index = 0; index < THUMBNAIL_COUNT_TRIPLE; index++)
+ {
+ r = PlaceThumbnail(canvas, itemBounds, groupBoxIndex, index);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to place thumbnail", GetErrorMessage(r));
+
+ if (index == 0)
+ {
+ itemBounds.x = X_THUMBNAIL_RIGHT;
+ itemBounds.width = W_THUMBNAIL;
+ itemBounds.height = H_THUMBNAIL_SHORT;
+ }
+ else if (index == 1)
+ {
+ itemBounds.y = Y_THUMBNAIL_BOTTOM;
+ }
+ }
+ }
+ else if (contactCount >= THUMBNAIL_COUNT_MULTIPLE)
+ {
+ itemBounds.width = W_THUMBNAIL;
+ itemBounds.height = H_THUMBNAIL_SHORT;
+
+ for (int index = 0; index < THUMBNAIL_MAXIMUM_COUNT; index++)
+ {
+ switch ((index % MULTIPLE_COLUMN_COUNT))
+ {
+ case 0:
+ itemBounds.x = X_THUMBNAIL_LEFT;
+ break;
+ case 1:
+ itemBounds.x = X_THUMBNAIL_CENTER;
+ break;
+ case 2:
+ itemBounds.x = X_THUMBNAIL_RIGHT;
+ break;
+ }
+
+ if (index < MULTIPLE_COLUMN_COUNT)
+ {
+ itemBounds.y = Y_THUMBNAIL_TOP;
+ }
+ else
+ {
+ itemBounds.y = Y_THUMBNAIL_BOTTOM;
+ }
+
+ r = PlaceThumbnail(canvas, itemBounds, groupBoxIndex, index);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to place thumbnail", GetErrorMessage(r));
+ }
+ }
+
+ return r;
+}
+
+result
+GroupListPanel::PlaceThumbnail(Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& bounds, int groupBoxIndex, int contactIndex)
+{
+ result r = E_SUCCESS;
+
+ bool isDefaultThumbnail = false;
+
+ Bitmap* pPersonThumbnail = null;
+ Bitmap* pClippedThumbnail = new (std::nothrow) Bitmap();
+ if (bounds.width > bounds.height)
+ {
+ pPersonThumbnail = __pPresentationModel->GetThumbnailN(Dimension(bounds.width, bounds.width), groupBoxIndex, contactIndex);
+ if (pPersonThumbnail == null)
+ {
+ pPersonThumbnail = __pDefaultThumbnail;
+ pPersonThumbnail->SetScalingQuality(BITMAP_SCALING_QUALITY_LOW);
+ pPersonThumbnail->Scale(Dimension(bounds.width, bounds.width));
+ isDefaultThumbnail = true;
+ }
+
+ pClippedThumbnail->Construct(*pPersonThumbnail, Rectangle(0, (bounds.width - bounds.height) / 2, bounds.width, bounds.height));
+ canvas.DrawBitmap(bounds, *pClippedThumbnail);
+ }
+ else if (bounds.width < bounds.height)
+ {
+ pPersonThumbnail = __pPresentationModel->GetThumbnailN(Dimension(bounds.height, bounds.height), groupBoxIndex, contactIndex);
+ if (pPersonThumbnail == null)
+ {
+ pPersonThumbnail = __pDefaultThumbnail;
+ pPersonThumbnail->SetScalingQuality(BITMAP_SCALING_QUALITY_LOW);
+ pPersonThumbnail->Scale(Dimension(bounds.height, bounds.height));
+ isDefaultThumbnail = true;
+ }
+
+ pClippedThumbnail->Construct(*pPersonThumbnail, Rectangle((bounds.height - bounds.width) / 2, 0, bounds.width, bounds.height));
+ canvas.DrawBitmap(bounds, *pClippedThumbnail);
+ }
+ else
+ {
+ pPersonThumbnail = __pPresentationModel->GetThumbnailN(Dimension(bounds.width, bounds.height), groupBoxIndex, contactIndex);
+ if (pPersonThumbnail == null)
+ {
+ pPersonThumbnail = __pDefaultThumbnail;
+ pPersonThumbnail->SetScalingQuality(BITMAP_SCALING_QUALITY_LOW);
+ pPersonThumbnail->Scale(Dimension(bounds.width, bounds.height));
+ isDefaultThumbnail = true;
+ }
+
+ canvas.DrawBitmap(bounds, *pPersonThumbnail);
+ }
+
+ if (isDefaultThumbnail == false)
+ {
+ delete pPersonThumbnail;
+ }
+ delete pClippedThumbnail;
+
+ return r;
+}
+
+void
+GroupListPanel::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo & touchInfo)
+{
+ __isTouchMoved = false;
+}
+
+void
+GroupListPanel::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+ if (source.Contains(currentPosition) == false || touchInfo.IsFlicked() == true)
+ {
+ return;
+ }
+
+ if (__isTouchMoved)
+ {
+ return;
+ }
+
+ int groupBoxIndex = 0;
+ Integer::Parse(source.GetName(), groupBoxIndex);
+
+ if (groupBoxIndex >= CONTEXT_MENU_MASK)
+ {
+ TableViewItem* pParent = static_cast<TableViewItem*>(source.GetParent());
+ if (pParent == null)
+ {
+ return;
+ }
+
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Point point;
+ point.x = source.GetBounds().x + (source.GetBounds().width / 2);
+ point.y = pForm->GetClientAreaBounds().y + pParent->GetY() + H_ITEM_HEADER - __scrolledDistance;
+
+ __pContextMenuQuickMenu->SetName(Integer::ToString(groupBoxIndex - CONTEXT_MENU_MASK));
+ __pContextMenuQuickMenu->SetAnchorPosition(point);
+ __pContextMenuQuickMenu->SetShowState(true);
+ __pContextMenuQuickMenu->Show();
+ }
+ else
+ {
+ ArrayList* pList = new (std::nothrow) ArrayList();
+ pList->Construct();
+
+ if (__pPresentationModel->GetCategoryCount() == groupBoxIndex)
+ {
+ pList->Add(*(new (std::nothrow) Integer(ID_GROUP_CONTACT_NOT_ASSIGNED)));
+ }
+ else
+ {
+ pList->Add(*(new (std::nothrow) Integer(__pPresentationModel->GetCategoryId(groupBoxIndex))));
+ }
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_MULTI)
+ {
+ SceneManager::GetInstance()->GoForward(ForwardSceneTransition(IDSCN_GROUP_CONTACT_LIST_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pList);
+ }
+ else
+ {
+ SceneManager::GetInstance()->GoForward(ForwardSceneTransition(IDSCN_GROUP_CONTACT_LIST, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pList);
+ }
+ }
+}
+
+void
+GroupListPanel::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+GroupListPanel::OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+GroupListPanel::OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+GroupListPanel::OnTouchCanceled(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+int
+GroupListPanel::GetItemCount(void)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ int count = __pPresentationModel->GetCategoryCount();
+
+ if (__pPresentationModel->GetContactCountInNotAssignedCategory(pContactsApp->GetReturnType()) > 0)
+ {
+ count++;
+ }
+
+ if (count % COLUMN_COUNT == 1)
+ {
+ count = count / COLUMN_COUNT + 1;
+ }
+ else if (count % COLUMN_COUNT == 0)
+ {
+ count = count / COLUMN_COUNT;
+ }
+
+ // Add Account name
+ return ++count;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+GroupListPanel::CreateItem(int itemIndex, int itemWidth)
+{
+ if (itemIndex == 0)
+ {
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_GROUP_ITEM));
+
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ Label* pAccountLabel = new (std::nothrow) Label();
+ pAccountLabel->Construct(Rectangle(X_ITEM, Y_ACCOUNT_LABEL, itemWidth - X_ITEM, H_ACCOUNT_LABEL),
+ ResourceManager::GetString(L"IDS_PB_BODY_PHONE"));
+ pAccountLabel->SetTextConfig(FONT_SIZE_ACCOUNT_LABEL, LABEL_TEXT_STYLE_BOLD);
+ pAccountLabel->SetTextColor(Color(COLOR_ACCOUNT_LABEL));
+ pAccountLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pItem->AddControl(*pAccountLabel);
+
+ return pItem;
+ }
+ else
+ {
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_ITEM + H_ITEM_GAP));
+
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ int groupBoxIndex = (itemIndex - 1) * COLUMN_COUNT;
+
+ Point itemPosition;
+ itemPosition.x = X_ITEM;
+ itemPosition.y = H_ITEM_GAP / 2;
+
+ for (int index = 0; index < COLUMN_COUNT; index++)
+ {
+ int contactCount = __pPresentationModel->GetContactCountInCategory(groupBoxIndex, pContactsApp->GetReturnType());
+ if (contactCount >= 0)
+ {
+ ComposeGroupItem(*pItem, groupBoxIndex, itemPosition, contactCount, false);
+ }
+ else
+ {
+ contactCount = __pPresentationModel->GetContactCountInNotAssignedCategory(pContactsApp->GetReturnType());
+ if (contactCount > 0)
+ {
+ ComposeGroupItem(*pItem, groupBoxIndex, itemPosition, contactCount, true);
+ break;
+ }
+ }
+
+ itemPosition.x = X_ITEM + W_ITEM + W_ITEM_GAP;
+ groupBoxIndex++;
+ }
+
+ return pItem;
+ }
+}
+
+bool
+GroupListPanel::DeleteItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ delete pItem;
+ return true;
+}
+
+void
+GroupListPanel::UpdateItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+}
+
+int
+GroupListPanel::GetDefaultItemHeight(void)
+{
+ return H_ITEM;
+}
+
+void
+GroupListPanel::OnScrollEndReached(Tizen::Ui::Control& source, Tizen::Ui::Controls::ScrollEndEvent type)
+{
+
+}
+
+void
+GroupListPanel::OnScrollPositionChanged(Tizen::Ui::Control& source, int scrollPos)
+{
+ __scrolledDistance = scrollPos;
+ __isTouchMoved = 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 CtGroupListPresentationModel.cpp
+ * @brief This is the implementation file for the GroupListPresentationModel class.
+ */
+
+#include <FMedia.h>
+#include "CtGroupListPresentationModel.h"
+#include "CtIContactEventListener.h"
+#include "CtResourceManager.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Media;
+using namespace Tizen::Social;
+
+GroupListPresentationModel* GroupListPresentationModel::__pInstance = null;
+
+GroupListPresentationModel*
+GroupListPresentationModel::GetInstance(void)
+{
+ if (__pInstance == null)
+ {
+ CreateInstance();
+ }
+
+ return __pInstance;
+}
+
+void
+GroupListPresentationModel::CreateInstance(void)
+{
+ __pInstance = new (std::nothrow) GroupListPresentationModel();
+ result r = __pInstance->Construct();
+ TryCatch(r == E_SUCCESS, , "[%s] Construction Failed", GetErrorMessage(r));
+
+ std::atexit(DestroyInstance);
+ return;
+
+CATCH:
+ delete __pInstance;
+ __pInstance = null;
+}
+
+void
+GroupListPresentationModel::DestroyInstance(void)
+{
+ delete __pInstance;
+}
+
+GroupListPresentationModel::GroupListPresentationModel(void)
+: __pAddressbook(null)
+, __pCategoryList(null)
+, __pPersonList(null)
+, __pCategoryChangeListener(null)
+{
+}
+
+GroupListPresentationModel::~GroupListPresentationModel(void)
+{
+ delete __pAddressbook;
+
+ if (__pCategoryList != null)
+ {
+ __pCategoryList->RemoveAll(true);
+ delete __pCategoryList;
+ }
+
+ if (__pPersonList != null)
+ {
+ __pPersonList->RemoveAll(true);
+ delete __pPersonList;
+ }
+
+ if (__pCategoryChangeListener != null)
+ {
+ __pCategoryChangeListener->RemoveAll(false);
+ delete __pCategoryChangeListener;
+ }
+}
+
+result
+GroupListPresentationModel::Construct(void)
+{
+ result r = E_SUCCESS;
+
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+
+ __pAddressbook = pAddressbookManager->GetAddressbookN(DEFAULT_ADDRESSBOOK_ID);
+ if (__pAddressbook == null)
+ {
+ return E_FAILURE;
+ }
+
+ r = __pAddressbook->SetEventListener(this);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to set event listener", GetErrorMessage(r));
+
+ __pCategoryList = __pAddressbook->GetAllCategoriesN();
+ r = GetLastResult();
+ TryCatch(__pCategoryList && r == E_SUCCESS, , "[%s] Unable to get all categories", GetErrorMessage(r));
+
+ __pCategoryChangeListener = new (std::nothrow) ArrayList();
+ __pCategoryChangeListener->Construct();
+
+ return r;
+
+CATCH:
+ delete __pAddressbook;
+ __pAddressbook = null;
+
+ if (__pCategoryList != null)
+ {
+ __pCategoryList->RemoveAll(true);
+
+ delete __pCategoryList;
+ __pCategoryList = null;
+ }
+
+ delete __pCategoryChangeListener;
+ __pCategoryChangeListener = null;
+
+ return r;
+}
+
+result
+GroupListPresentationModel::RemoveCategory(int index)
+{
+ Category* pCategory = static_cast<Category*>(__pCategoryList->GetAt(index));
+ if (pCategory == null)
+ {
+ return E_FAILURE;
+ }
+
+ __pAddressbook->RemoveCategory(*pCategory);
+
+ return E_SUCCESS;
+}
+
+Tizen::Base::String
+GroupListPresentationModel::GetCategoryName(int index)
+{
+ String returnName;
+
+ Category* pCategory = static_cast<Category *>(__pCategoryList->GetAt(index));
+ if (pCategory == null)
+ {
+ return returnName;
+ }
+
+ returnName = pCategory->GetName();
+
+ if (pCategory->IsDefault())
+ {
+ if (returnName.Equals(DEFAULT_GROUP_FAMILY, false))
+ {
+ returnName.Clear();
+ returnName = ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT_GROUP_FAMILY");
+ }
+ else if (returnName.Equals(DEFAULT_GROUP_FRIENDS, false))
+ {
+ returnName.Clear();
+ returnName = ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT_GROUP_FRIENDS");
+ }
+ else if (returnName.Equals(DEFAULT_GROUP_COWORKERS, false))
+ {
+ returnName.Clear();
+ returnName = ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT_GROUP_WORK");
+ }
+ }
+
+ return returnName;
+}
+
+bool
+GroupListPresentationModel::IsContactInCategory(const Tizen::Base::Collection::IList& categoryIdList, int categoryIndex)
+{
+ Category* pCategory = static_cast<Category*>(__pCategoryList->GetAt(categoryIndex));
+ if (pCategory == null)
+ {
+ return false;
+ }
+
+ IEnumerator* pEnum = categoryIdList.GetEnumeratorN();
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ String* pCategoryIdString = static_cast<String *>(pEnum->GetCurrent());
+
+ if (pCategoryIdString->Equals(Integer::ToString(pCategory->GetRecordId()), true))
+ {
+ delete pEnum;
+
+ return true;
+ }
+ }
+
+ delete pEnum;
+
+ return false;
+}
+
+bool
+GroupListPresentationModel::IsDefaultCategory(int index)
+{
+ Category* pCategory = static_cast<Category*>(__pCategoryList->GetAt(index));
+ if (pCategory == null)
+ {
+ return false;
+ }
+
+ return pCategory->IsDefault();
+}
+
+int
+GroupListPresentationModel::GetContactCountInCategory(int index, AppControlReturnType returnType)
+{
+ Category* pCategory = static_cast<Category *>(__pCategoryList->GetAt(index));
+ if (pCategory == null)
+ {
+ return -1;
+ }
+ if (returnType != APP_CONTROL_RETURN_TYPE_PHONE &&
+ returnType != APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ return pCategory->GetMemberCount();
+ }
+
+ int returnCount = 0;
+ IList* pList = null;
+ AddressbookFilter mainFilter(AB_FI_TYPE_PERSON);
+
+ mainFilter.AppendInt(FI_CONJ_OP_NONE, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_EQUAL, pCategory->GetRecordId());
+ if (returnType == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_AND, PERSON_FI_PR_HAS_PHONE, FI_CMP_OP_EQUAL, true);
+ }
+ else if (returnType == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_AND, PERSON_FI_PR_HAS_EMAIL, FI_CMP_OP_EQUAL, true);
+ }
+
+ pList = AddressbookManager::GetInstance()->SearchN(mainFilter);
+
+ if (pList == null)
+ {
+ return returnCount;
+ }
+
+ returnCount = pList->GetCount();
+
+ pList->RemoveAll(true);
+ delete pList;
+
+ return returnCount;
+}
+
+int
+GroupListPresentationModel::GetContactCountInNotAssignedCategory(AppControlReturnType returnType)
+{
+ int returnCount = 0;
+ IList* pList = null;
+ AddressbookFilter mainFilter(AB_FI_TYPE_PERSON);
+
+ mainFilter.AppendInt(FI_CONJ_OP_NONE, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_IS_NULL, INVALID_RECORD_ID);
+ if (returnType == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_AND, PERSON_FI_PR_HAS_PHONE, FI_CMP_OP_EQUAL, true);
+ }
+ else if (returnType == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_AND, PERSON_FI_PR_HAS_EMAIL, FI_CMP_OP_EQUAL, true);
+ }
+
+ pList = AddressbookManager::GetInstance()->SearchN(mainFilter);
+
+ if (pList == null)
+ {
+ return returnCount;
+ }
+
+ returnCount = pList->GetCount();
+
+ pList->RemoveAll(true);
+ delete pList;
+
+ return returnCount;
+}
+
+int
+GroupListPresentationModel::GetCategoryCount(void)
+{
+ return __pAddressbook->GetCategoryCount();
+}
+
+Tizen::Graphics::Bitmap*
+GroupListPresentationModel::GetThumbnailN(const Tizen::Graphics::Dimension& dimension, int categoryIndex, int contactIndex)
+{
+ TryReturn(__pPersonList != null, null, "Invalid state");
+
+ String filePath;
+ if (contactIndex == -1)
+ {
+ Category* pCategory = static_cast<Category*>(__pCategoryList->GetAt(categoryIndex));
+ TryReturn(pCategory != null, null, "Unable to get a category");
+ filePath = pCategory->GetThumbnailPath();
+ }
+ else
+ {
+ Person* pPerson = static_cast<Person*>(__pPersonList->GetAt(contactIndex));
+ TryReturn(pPerson != null, null, "Unable to get a person");
+ filePath = pPerson->GetThumbnailPath();
+ }
+
+ Bitmap* pThumbnail = null;
+ ImageBuffer thumbnailImageBuffer;
+ result r = thumbnailImageBuffer.Construct(filePath);
+ if (r == E_SUCCESS)
+ {
+ pThumbnail = thumbnailImageBuffer.GetBitmapN(BITMAP_PIXEL_FORMAT_RGB565, BUFFER_SCALING_NONE);
+ }
+
+ if (pThumbnail != null)
+ {
+ pThumbnail->SetScalingQuality(BITMAP_SCALING_QUALITY_LOW);
+ pThumbnail->Scale(dimension);
+ }
+
+ return pThumbnail;
+}
+
+result
+GroupListPresentationModel::UpdatePersonList(int categoryIndex)
+{
+ RecordId categoryId = INVALID_RECORD_ID;
+ Category* pCategory = static_cast<Category*>(__pCategoryList->GetAt(categoryIndex));
+ if (pCategory != null)
+ {
+ categoryId = pCategory->GetRecordId();
+ }
+
+ if (__pPersonList != null)
+ {
+ delete __pPersonList;
+ }
+ __pPersonList = AddressbookManager::GetInstance()->GetPersonsByCategoryN(categoryId);
+
+ if (__pPersonList == null)
+ {
+ return E_FAILURE;
+ }
+
+ return E_SUCCESS;
+}
+
+Tizen::Social::RecordId
+GroupListPresentationModel::GetCategoryId(int index)
+{
+ Category* pCategory = static_cast<Category *>(__pCategoryList->GetAt(index));
+ if (pCategory == null)
+ {
+ return -1;
+ }
+
+ return pCategory->GetRecordId();
+}
+
+result
+GroupListPresentationModel::UpdateCategoryList(void)
+{
+ if (__pCategoryList != null)
+ {
+ __pCategoryList->RemoveAll(true);
+ delete __pCategoryList;
+ __pCategoryList = null;
+ }
+
+ __pCategoryList = __pAddressbook->GetAllCategoriesN();
+ if ((__pCategoryList == null) || IsFailed(GetLastResult()))
+ {
+ return E_FAILURE;
+ }
+
+ return E_SUCCESS;
+}
+
+void
+GroupListPresentationModel::AddGroupChangeListener(const IContactEventListener& listener)
+{
+ __pCategoryChangeListener->Add(listener);
+}
+
+void
+GroupListPresentationModel::RemoveGroupChangeListener(const IContactEventListener& listener)
+{
+ __pCategoryChangeListener->Remove(listener, false);
+}
+
+void
+GroupListPresentationModel::OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList)
+{
+ UpdateCategoryList();
+
+ IContactEventListener* pInterface = null;
+ IEnumerator* pEnum = __pCategoryChangeListener->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pInterface = static_cast<IContactEventListener *>(pEnum->GetCurrent());
+ if (pInterface == null)
+ {
+ delete pEnum;
+ return;
+ }
+ pInterface->OnContactsChanged();
+ }
+
+ delete pEnum;
+}
+
+void
+GroupListPresentationModel::OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList)
+{
+ UpdateCategoryList();
+
+ IContactEventListener* pInterface = null;
+ IEnumerator* pEnum = __pCategoryChangeListener->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pInterface = static_cast<IContactEventListener *>(pEnum->GetCurrent());
+ if (pInterface == null)
+ {
+ delete pEnum;
+ return;
+ }
+ pInterface->OnCategoriesChanged();
+ }
+
+ 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 CtGroupPresentationModel.cpp
+ * @brief This is the implementation file for the GroupPresentationModel class.
+ */
+
+#include "CtGroupPresentationModel.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Social;
+
+GroupPresentationModel::GroupPresentationModel(void)
+ : __pAddressbook(null)
+ , __categoryId(INVALID_RECORD_ID)
+{
+}
+
+GroupPresentationModel::~GroupPresentationModel(void)
+{
+ delete __pAddressbook;
+}
+
+result
+GroupPresentationModel::Construct(Tizen::Social::RecordId categoryId)
+{
+ __categoryId = categoryId;
+
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+ __pAddressbook = pAddressbookManager->GetAddressbookN(DEFAULT_ADDRESSBOOK_ID);
+ if (__pAddressbook == null)
+ {
+ return E_FAILURE;
+ }
+
+ return E_SUCCESS;
+}
+
+bool
+GroupPresentationModel::IsDuplicatedCategory(const Tizen::Base::String& groupName)
+{
+ bool isDuplicated = false;
+ Category* pCategory = null;
+ RecordId otherCategoryId = 0;
+
+ IList* pList = __pAddressbook->GetAllCategoriesN();
+ if (pList == null)
+ {
+ return false;
+ }
+
+ IEnumerator* pEnum = pList->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pCategory = static_cast<Category*>(pEnum->GetCurrent());
+ TryCatch(pCategory != null, , "Unable to cast object to category");
+
+ if (pCategory->IsDefault())
+ {
+ continue;
+ }
+
+ otherCategoryId = pCategory->GetRecordId();
+
+ if (otherCategoryId != __categoryId && pCategory->GetName().Equals(groupName) == true)
+ {
+ isDuplicated = true;
+ }
+ }
+
+CATCH:
+ pList->RemoveAll(true);
+ delete pList;
+ delete pEnum;
+
+ return isDuplicated;
+}
+
+bool
+GroupPresentationModel::IsDefaultCategory(void)
+{
+ Category* pCategory = __pAddressbook->GetCategoryN(__categoryId);
+
+ if (pCategory != null)
+ {
+ return pCategory->IsDefault();
+ }
+
+ return false;
+}
+
+result
+GroupPresentationModel::SetCategoryName(const Tizen::Base::String& groupName)
+{
+ Category* pCategory = __pAddressbook->GetCategoryN(__categoryId);
+ if (pCategory == null)
+ {
+ return E_FAILURE;
+ }
+
+ pCategory->SetName(groupName);
+ __pAddressbook->UpdateCategory(*pCategory);
+
+ delete pCategory;
+
+ return E_SUCCESS;
+}
+
+result
+GroupPresentationModel::SetRingtone(const Tizen::Base::String& groupName, const Tizen::Base::String& ringtonePath)
+{
+ result r = E_SUCCESS;
+
+ IList* pAllCategories = null;
+ IEnumerator* pEnum = null;
+
+ Category* pCategory = __pAddressbook->GetCategoryN(__categoryId);
+
+ if (pCategory != null)
+ {
+ r = pCategory->SetRingtonePath(ringtonePath);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to set ringtone", GetErrorMessage(r));
+
+ r = __pAddressbook->UpdateCategory(*pCategory);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to update category", GetErrorMessage(r));
+ }
+ else
+ {
+ pAllCategories = __pAddressbook->GetAllCategoriesN();
+ pEnum = pAllCategories->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pCategory = static_cast<Category*>(pEnum->GetCurrent());
+ TryCatch(pCategory != null, r = E_FAILURE, "Unable to cast category");
+
+ if (pCategory->GetName().Equals(groupName, true) == true)
+ {
+ r = pCategory->SetRingtonePath(ringtonePath);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to set ringtone", GetErrorMessage(r));
+
+ r = __pAddressbook->UpdateCategory(*pCategory);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to update category", GetErrorMessage(r));
+ }
+ }
+ }
+
+CATCH:
+ delete pCategory;
+ delete pEnum;
+ delete pAllCategories;
+
+ return r;
+}
+
+result
+GroupPresentationModel::AddCategory(const Tizen::Base::String& groupName)
+{
+ result r = E_SUCCESS;
+ Category* pCategory = new (std::nothrow) Category();
+
+ pCategory->SetName(groupName);
+ r = __pAddressbook->AddCategory(*pCategory);
+
+ delete pCategory;
+
+ return r;
+}
+
+result
+GroupPresentationModel::SetThumbnailPath(const Tizen::Base::String& groupName, const Tizen::Base::String& filePath)
+{
+ result r = E_SUCCESS;
+
+ IList* pAllCategories = null;
+ IEnumerator* pEnum = null;
+
+ Category* pCategory = __pAddressbook->GetCategoryN(__categoryId);
+ if (pCategory != null)
+ {
+ r = pCategory->SetThumbnail(filePath);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to set thumbnail path", GetErrorMessage(r));
+
+ r = __pAddressbook->UpdateCategory(*pCategory);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to update category", GetErrorMessage(r));
+ }
+ else
+ {
+ pAllCategories = __pAddressbook->GetAllCategoriesN();
+ pEnum = pAllCategories->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pCategory = static_cast<Category*>(pEnum->GetCurrent());
+ TryCatch(pCategory != null, r = E_FAILURE, "Unable to cast category");
+
+ if (pCategory->GetName().Equals(groupName, true) == true)
+ {
+ r = pCategory->SetThumbnail(filePath);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to set thumbnail path", GetErrorMessage(r));
+
+ r = __pAddressbook->UpdateCategory(*pCategory);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to update category", GetErrorMessage(r));
+ }
+ }
+ }
+
+CATCH:
+ delete pCategory;
+ delete pEnum;
+ delete pAllCategories;
+
+ return r;
+}
+
+Tizen::Base::String
+GroupPresentationModel::GetThumbnailPath(void)
+{
+ String thumbnailPath;
+
+ Category* pCategory = __pAddressbook->GetCategoryN(__categoryId);
+ if (pCategory == null)
+ {
+ return thumbnailPath;
+ }
+
+ thumbnailPath = pCategory->GetThumbnailPath();
+ delete pCategory;
+
+ return thumbnailPath;
+}
+
+Tizen::Base::String
+GroupPresentationModel::GetCategoryName(void)
+{
+ String returnString;
+
+ Category* pCategory = __pAddressbook->GetCategoryN(__categoryId);
+ if (pCategory != null)
+ {
+ returnString = pCategory->GetName();
+ delete pCategory;
+ }
+
+ return returnString;
+}
+
+Tizen::Base::String
+GroupPresentationModel::GetRingtone(void)
+{
+ String returnString;
+
+ Category* pCategory = __pAddressbook->GetCategoryN(__categoryId);
+ if (pCategory != null)
+ {
+ returnString = pCategory->GetRingtonePath();
+ delete pCategory;
+ }
+
+ return returnString;
+}
--- /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 CtGroupSelectorForm.cpp
+ * @brief This is the implementation file for the GroupSelectorForm class.
+ */
+
+#include <FApp.h>
+#include <FBase.h>
+#include "CtGroupListPresentationModel.h"
+#include "CtGroupSelectorForm.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtTypes.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 int IDA_FOOTER_MORE = 10;
+static const int IDA_FOOTER_DONE = 11;
+static const int IDA_FOOTER_CANCEL = 12;
+static const int IDA_MORE_CREATE_GROUP = 13;
+static const int X_LIST_ITEM_TEXT_MARGIN = 32;
+
+static const int H_ITEM = 112;
+static const int X_MORE = 55;
+
+GroupSelectorForm::GroupSelectorForm(void)
+ : __pGroupListPresentationModel(null)
+ , __pListView(null)
+ , __pBottomLabel(null)
+ , __pContextMenuMore(null)
+ , __pGroupIndexMap(null)
+ , __pGroupIdList(null)
+{
+}
+
+GroupSelectorForm::~GroupSelectorForm(void)
+{
+}
+
+void
+GroupSelectorForm::Initialize(void)
+{
+ Construct(L"IDL_GROUP_SELECTOR_FORM");
+}
+
+result
+GroupSelectorForm::OnInitializing(void)
+{
+ Footer* pFooter = GetFooter();
+ pFooter->SetItemEnabled(0, false);
+ pFooter->AddActionEventListener(*this);
+
+ __pGroupListPresentationModel = GroupListPresentationModel::GetInstance();
+ __pGroupListPresentationModel->AddGroupChangeListener(*this);
+
+ __pListView = static_cast<ListView*>(GetControl(L"IDC_LISTVIEW", false));
+ __pListView->SetItemProvider(*this);
+ __pListView->AddListViewItemEventListener(*this);
+
+ __pBottomLabel = static_cast<Label*>(GetControl(L"IDC_LABEL", false));
+
+ __pGroupIndexMap = new (std::nothrow) HashMapT<int, bool>();
+ __pGroupIndexMap->Construct(__pGroupListPresentationModel->GetCategoryCount());
+
+ __pContextMenuMore = new (std::nothrow) ContextMenu();
+ __pContextMenuMore->Construct(Point(X_MORE, GetClientAreaBounds().y + GetClientAreaBounds().height), CONTEXT_MENU_STYLE_LIST);
+ __pContextMenuMore->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_CREATE"), IDA_MORE_CREATE_GROUP);
+ __pContextMenuMore->AddActionEventListener(*this);
+
+ return E_SUCCESS;
+}
+
+result
+GroupSelectorForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pGroupIndexMap)
+ {
+ __pGroupIndexMap->RemoveAll();
+ delete __pGroupIndexMap;
+ }
+
+ if (__pGroupIdList)
+ {
+ __pGroupIdList->RemoveAll(true);
+ delete __pGroupIdList;
+ }
+
+ if (__pGroupListPresentationModel != null)
+ {
+ __pGroupListPresentationModel->RemoveGroupChangeListener(*this);
+ }
+
+ delete __pContextMenuMore;
+
+ return r;
+}
+
+void
+GroupSelectorForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ result r = E_SUCCESS;
+
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ ArrayList* pList = null;
+
+ switch (actionId)
+ {
+ case IDA_FOOTER_MORE:
+ {
+ __pContextMenuMore->SetShowState(true);
+ __pContextMenuMore->Show();
+ }
+ break;
+ case IDA_MORE_CREATE_GROUP:
+ {
+ r = pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT));
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to go forward", GetErrorMessage(r));
+ }
+ break;
+ case IDA_FOOTER_DONE:
+ {
+ pList = new (std::nothrow) ArrayList();
+ pList->Construct(__pGroupIndexMap->GetCount());
+
+ for (int i = 0; i < __pGroupListPresentationModel->GetCategoryCount(); i++)
+ {
+ bool categoryValue = false;
+ RecordId categoryId = __pGroupListPresentationModel->GetCategoryId(i);
+
+ __pGroupIndexMap->GetValue(categoryId, categoryValue);
+
+ if (categoryValue)
+ {
+ pList->Add(*(new (std::nothrow) Integer(categoryId)));
+ }
+ }
+
+ r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT), pList);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to go backward", GetErrorMessage(r));
+ }
+ break;
+ case IDA_FOOTER_CANCEL:
+ {
+ r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+ TryCatch(r == E_SUCCESS, ,"[%s] Unable to go backward", GetErrorMessage(r));
+ }
+ break;
+ default:
+ break;
+ }
+
+ return;
+
+CATCH:
+ if (pList != null)
+ {
+ pList->RemoveAll(true);
+ delete pList;
+ }
+
+ return;
+}
+
+void
+GroupSelectorForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
+{
+ if (pArgs == null)
+ {
+ return;
+ }
+
+ if (__pGroupIdList != null)
+ {
+ __pGroupIdList->RemoveAll(true);
+ delete __pGroupIdList;
+ }
+
+ __pGroupIdList = pArgs;
+
+ __pGroupIndexMap->RemoveAll();
+
+ int categoryCount = __pGroupListPresentationModel->GetCategoryCount();
+ for (int index = 0; index < categoryCount; index++)
+ {
+ if (__pGroupListPresentationModel->IsContactInCategory(*__pGroupIdList, index) == true)
+ {
+ __pGroupIndexMap->Add(__pGroupListPresentationModel->GetCategoryId(index), true);
+ }
+ else
+ {
+ __pGroupIndexMap->Add(__pGroupListPresentationModel->GetCategoryId(index), false);
+ }
+ }
+
+ String selected(ResourceManager::GetString(L"IDS_COM_POP_SELECTED") + L" (" + Integer::ToString(__pGroupIdList->GetCount()) + L")");
+ __pBottomLabel->SetText(selected);
+
+ __pListView->UpdateList();
+
+ for (int index = 0; index < __pListView->GetItemCount(); index++)
+ {
+ bool isChecked = false;
+
+ __pGroupIndexMap->GetValue(__pGroupListPresentationModel->GetCategoryId(index), isChecked);
+
+ if (isChecked == true)
+ {
+ result r = __pListView->SetItemChecked(index, true);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set item checked", GetErrorMessage(r));
+ }
+ }
+}
+
+void
+GroupSelectorForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+}
+
+Tizen::Ui::Controls::ListItemBase*
+GroupSelectorForm::CreateItem(int index, int itemWidth)
+{
+ result r = E_SUCCESS;
+ String name;
+
+ CustomItem* pItem = new (std::nothrow) CustomItem();
+ pItem->Construct(Dimension(itemWidth, H_ITEM), LIST_ANNEX_STYLE_MARK);
+
+ name = __pGroupListPresentationModel->GetCategoryName(index);
+
+ r = pItem->AddElement(Rectangle(0, 0, itemWidth - (ListItemBase::GetAnnexWidth(LIST_ANNEX_STYLE_MARK) + X_LIST_ITEM_TEXT_MARGIN), H_ITEM), index, name);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to add element", GetErrorMessage(r));
+
+ return pItem;
+
+CATCH:
+ delete pItem;
+ pItem = null;
+
+ return null;
+}
+
+bool
+GroupSelectorForm::DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
+{
+ delete pItem;
+
+ return true;
+}
+
+int
+GroupSelectorForm::GetItemCount(void)
+{
+ return __pGroupListPresentationModel->GetCategoryCount();
+}
+
+void
+GroupSelectorForm::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+}
+
+void
+GroupSelectorForm::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status)
+{
+ result r = E_SUCCESS;
+
+ if (status == LIST_ITEM_STATUS_CHECKED)
+ {
+ r = listView.SetItemChecked(index, true);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set item checked", GetErrorMessage(r));
+
+ r = __pGroupIndexMap->SetValue(__pGroupListPresentationModel->GetCategoryId(index), true);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set value", GetErrorMessage(r));
+ }
+ else if (status == LIST_ITEM_STATUS_UNCHECKED)
+ {
+ r = listView.SetItemChecked(index, false);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set item checked", GetErrorMessage(r));
+
+ r = __pGroupIndexMap->SetValue(__pGroupListPresentationModel->GetCategoryId(index), false);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set value", GetErrorMessage(r));
+ }
+
+ Footer* pFooter = GetFooter();
+ pFooter->SetItemEnabled(0, true);
+ pFooter->Invalidate(true);
+
+ UpdateBottomLabel();
+}
+
+void
+GroupSelectorForm::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+result
+GroupSelectorForm::UpdateBottomLabel(void)
+{
+ int itemCount = __pListView->GetItemCount();
+ int selectedCount = 0;
+ bool isChecked = false;
+
+ for (int index = 0; index < itemCount; index++)
+ {
+ __pGroupIndexMap->GetValue(__pGroupListPresentationModel->GetCategoryId(index), isChecked);
+ if (isChecked == true)
+ {
+ selectedCount++;
+ }
+ }
+
+ String selected = ResourceManager::GetString(L"IDS_COM_POP_SELECTED");
+ selected.Append(L" (");
+ selected.Append(selectedCount);
+ selected.Append(L")");
+ __pBottomLabel->SetText(selected);
+ __pBottomLabel->Invalidate(false);
+
+ return E_SUCCESS;
+}
+
+void
+GroupSelectorForm::OnContactsChanged(void)
+{
+}
+
+void
+GroupSelectorForm::OnCategoriesChanged(void)
+{
+ __pListView->UpdateList();
+
+ for (int index = 0; index < __pListView->GetItemCount(); index++)
+ {
+ bool isChecked = false;
+
+ __pGroupIndexMap->GetValue(__pGroupListPresentationModel->GetCategoryId(index), isChecked);
+
+ if (isChecked == true)
+ {
+ result r = __pListView->SetItemChecked(index, true);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set item checked", GetErrorMessage(r));
+ }
+ else
+ {
+ result r = __pListView->SetItemChecked(index, false);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set item unchecked", GetErrorMessage(r));
+
+ __pGroupIndexMap->Add(__pGroupListPresentationModel->GetCategoryId(index), false);
+ }
+ }
+
+ __pListView->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 CtMainForm.cpp
+ * @brief This is the implementation file for the MainForm class.
+ */
+
+#include <FApp.h>
+#include "CtContactsApp.h"
+#include "CtMainForm.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+static const int IDA_HEADER_CONTACTS = 10;
+static const int IDA_HEADER_GROUPS = 11;
+static const int IDA_HEADER_FAVORITES = 12;
+
+static const wchar_t* IDB_TAB_ICON_CONTACTS = L"C02_tab_icon_contacts.png";
+static const wchar_t* IDB_TAB_ICON_GROUPS = L"C02_tab_icon_groups.png";
+static const wchar_t* IDB_TAB_ICON_FAVORITES = L"C02_tab_icon_favourites.png";
+static const wchar_t* IDB_TAB_ICON_CONTACTS_PRESSED = L"C02_tab_icon_contacts_press.png";
+static const wchar_t* IDB_TAB_ICON_GROUPS_PRESSED = L"C02_tab_icon_groups_press.png";
+static const wchar_t* IDB_TAB_ICON_FAVORITES_PRESSED = L"C02_tab_icon_favourites_press.png";
+
+MainForm::MainForm(void)
+{
+}
+
+MainForm::~MainForm(void)
+{
+}
+
+void
+MainForm::Initialize(void)
+{
+ Construct(FORM_STYLE_NORMAL | FORM_STYLE_INDICATOR | FORM_STYLE_HEADER | FORM_STYLE_FOOTER);
+}
+
+result
+MainForm::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+
+ Header* pHeader = GetHeader();
+
+ r = pHeader->SetStyle(HEADER_STYLE_TAB);
+ if (r != E_SUCCESS)
+ {
+ return r;
+ }
+
+ HeaderItem headerContacts;
+ headerContacts.Construct(IDA_HEADER_CONTACTS);
+ r = headerContacts.SetText(ResourceManager::GetString(L"IDS_COM_BODY_CONTACTS"));
+ if (r != E_SUCCESS)
+ {
+ return r;
+ }
+
+ headerContacts.SetIcon(HEADER_ITEM_STATUS_NORMAL, ResourceManager::GetBitmapN(IDB_TAB_ICON_CONTACTS));
+ headerContacts.SetIcon(HEADER_ITEM_STATUS_PRESSED, ResourceManager::GetBitmapN(IDB_TAB_ICON_CONTACTS_PRESSED));
+
+ HeaderItem headerGroups;
+ headerGroups.Construct(IDA_HEADER_GROUPS);
+ r = headerGroups.SetText(ResourceManager::GetString(L"IDS_PB_BODY_GROUPS"));
+ if (r != E_SUCCESS)
+ {
+ return r;
+ }
+
+ headerGroups.SetIcon(HEADER_ITEM_STATUS_NORMAL, ResourceManager::GetBitmapN(IDB_TAB_ICON_GROUPS));
+ headerGroups.SetIcon(HEADER_ITEM_STATUS_PRESSED, ResourceManager::GetBitmapN(IDB_TAB_ICON_GROUPS_PRESSED));
+
+ HeaderItem headerFavorites;
+ headerFavorites.Construct(IDA_HEADER_FAVORITES);
+ r = headerFavorites.SetText(ResourceManager::GetString(L"IDS_PB_ITAB4_FAVOURITES"));
+ if (r != E_SUCCESS)
+ {
+ return r;
+ }
+
+ headerFavorites.SetIcon(HEADER_ITEM_STATUS_NORMAL, ResourceManager::GetBitmapN(IDB_TAB_ICON_FAVORITES));
+ headerFavorites.SetIcon(HEADER_ITEM_STATUS_PRESSED, ResourceManager::GetBitmapN(IDB_TAB_ICON_FAVORITES_PRESSED));
+
+ r = pHeader->AddItem(headerContacts);
+ if (r != E_SUCCESS)
+ {
+ return r;
+ }
+ r = pHeader->AddItem(headerGroups);
+ if (r != E_SUCCESS)
+ {
+ return r;
+ }
+ r = pHeader->AddItem(headerFavorites);
+ if (r != E_SUCCESS)
+ {
+ return r;
+ }
+
+ SetFormBackEventListener(this);
+
+ return r;
+}
+
+result
+MainForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ return r;
+}
+
+void
+MainForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ TryReturnVoid(pContactsApp != null, "Unable to cast UiApp to ContactsApp");
+
+ if (pContactsApp->GetOperationId().Equals(OPERATION_ID_PICK, true))
+ {
+ AppControlProviderManager::GetInstance()->SendAppControlResult(pContactsApp->GetRequestId(), APP_CTRL_RESULT_CANCELED, null);
+ }
+
+ UiApp* pApp = UiApp::GetInstance();
+ pApp->Terminate();
+}
+
--- /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 CtMainFrame.cpp
+ * @brief This is the implementation file for the MainFrame class.
+ */
+
+#include "CtContactsApp.h"
+#include "CtMainFrame.h"
+#include "CtSceneRegister.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Ui::Scenes;
+
+MainFrame::MainFrame(void)
+{
+}
+
+MainFrame::~MainFrame(void)
+{
+}
+
+result
+MainFrame::OnInitializing(void)
+{
+ result r = SceneRegister::RegisterAllScenes();
+ TryReturn(r == E_SUCCESS, r, "[%s] Scene registering failed", GetErrorMessage(r));
+
+ ContactsApp* pApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ r = SceneManager::GetInstance()->GoForward(ForwardSceneTransition(pApp->GetInitialSceneId()), pApp->GetArguments());
+ TryReturn(r == E_SUCCESS, r, "[%s] Scene transition failed", GetErrorMessage(r));
+
+ return r;
+}
+
+result
+MainFrame::OnTerminating(void)
+{
+ 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 CtPanelFactory.cpp
+ * @brief This is the implementation file for the PanelFactory class.
+ */
+
+#include "CtContactListEditorPanel.h"
+#include "CtContactListPanel.h"
+#include "CtFavoriteListEditorPanel.h"
+#include "CtFavoriteListPanel.h"
+#include "CtGroupListPanel.h"
+#include "CtGroupListEditorPanel.h"
+#include "CtPanelFactory.h"
+#include "CtTypes.h"
+
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+PanelFactory::PanelFactory(void)
+{
+}
+
+PanelFactory::~PanelFactory(void)
+{
+}
+
+Tizen::Ui::Controls::Panel*
+PanelFactory::CreatePanelN(const Tizen::Base::String& panelId, const Tizen::Ui::Scenes::SceneId& sceneId)
+{
+ result r = E_SUCCESS;
+
+ Panel* pNewPanel= null;
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ if (panelId == IDC_PANEL_CONTACT_LIST)
+ {
+ ContactListPanel* pPanel = new (std::nothrow) ContactListPanel();
+ pPanel->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pPanel);
+ TryCatch(r == E_SUCCESS, delete pPanel, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewPanel = pPanel;
+ }
+ else if (panelId == IDC_PANEL_CONTACT_LIST_EDITOR)
+ {
+ ContactListEditorPanel* pPanel = new (std::nothrow) ContactListEditorPanel();
+ pPanel->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pPanel);
+ TryCatch(r == E_SUCCESS, delete pPanel, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewPanel = pPanel;
+ }
+ else if (panelId == IDC_PANEL_GROUP_LIST)
+ {
+ GroupListPanel* pPanel = new (std::nothrow) GroupListPanel();
+ pPanel->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pPanel);
+ TryCatch(r == E_SUCCESS, delete pPanel, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewPanel = pPanel;
+ }
+ else if (panelId == IDC_PANEL_GROUP_LIST_EDITOR)
+ {
+ GroupListEditorPanel* pPanel = new (std::nothrow) GroupListEditorPanel();
+ pPanel->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pPanel);
+ TryCatch(r == E_SUCCESS, delete pPanel, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewPanel = pPanel;
+ }
+ else if (panelId == IDC_PANEL_FAVORITE_LIST)
+ {
+ FavoriteListPanel* pPanel = new (std::nothrow) FavoriteListPanel();
+ pPanel->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pPanel);
+ TryCatch(r == E_SUCCESS, delete pPanel, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewPanel = pPanel;
+ }
+ else if (panelId == IDC_PANEL_FAVORITE_LIST_EDITOR)
+ {
+ FavoriteListEditorPanel* pPanel = new (std::nothrow) FavoriteListEditorPanel();
+ pPanel->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pPanel);
+ TryCatch(r == E_SUCCESS, delete pPanel, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewPanel = pPanel;
+ }
+
+ return pNewPanel;
+
+CATCH:
+ return 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 CtResourceManager.cpp
+ * @brief This is the implementation file for the ResourceManager class.
+ */
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FGraphics.h>
+#include "CtResourceManager.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Graphics;
+
+Tizen::Graphics::Bitmap*
+ResourceManager::GetBitmapN(const Tizen::Base::String& id)
+{
+ AppResource* pAppResource = Application::GetInstance()->GetAppResource();
+ if (pAppResource == null)
+ {
+ AppLog("Unable to get app resource.");
+ return null;
+ }
+
+ return pAppResource->GetBitmapN(id);
+}
+
+Tizen::Base::String
+ResourceManager::GetString(const Tizen::Base::String& id)
+{
+ AppResource* pAppResource = Application::GetInstance()->GetAppResource();
+ if (pAppResource == null)
+ {
+ AppLog("Unable to get app resource.");
+ return null;
+ }
+
+ String str;
+ pAppResource->GetString(id, str);
+ return str;
+}
--- /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 CtSceneRegister.cpp
+ * @brief This is the implementation file for the SceneRegister class.
+ */
+
+#include <FUi.h>
+#include "CtFormFactory.h"
+#include "CtPanelFactory.h"
+#include "CtSceneRegister.h"
+#include "CtTypes.h"
+
+using namespace Tizen::Ui::Scenes;
+
+SceneRegister::SceneRegister()
+{
+}
+
+SceneRegister::~SceneRegister()
+{
+}
+
+result
+SceneRegister::RegisterAllScenes(void)
+{
+ result r = E_SUCCESS;
+
+ static const wchar_t* PANEL_BLANK = L"";
+ static FormFactory formFactory;
+ static PanelFactory panelFactory;
+
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ r |= pSceneManager->RegisterFormFactory(formFactory);
+ r |= pSceneManager->RegisterPanelFactory(panelFactory);
+ r |= pSceneManager->RegisterScene(IDSCN_CONTACT_LIST, IDC_FORM_MAIN, IDC_PANEL_CONTACT_LIST);
+ r |= pSceneManager->RegisterScene(IDSCN_CONTACT_LIST_EDITOR, IDC_FORM_MAIN, IDC_PANEL_CONTACT_LIST_EDITOR);
+ r |= pSceneManager->RegisterScene(IDSCN_CONTACT_DETAILS, IDC_FORM_CONTACT_DETAILS, PANEL_BLANK);
+ r |= pSceneManager->RegisterScene(IDSCN_CONTACT_EDITOR, IDC_FORM_CONTACT_EDITOR, PANEL_BLANK);
+ r |= pSceneManager->RegisterScene(IDSCN_CONTACT_SELECTOR, IDC_FORM_CONTACT_SELECTOR, PANEL_BLANK);
+ r |= pSceneManager->RegisterScene(IDSCN_GROUP_LIST, IDC_FORM_MAIN, IDC_PANEL_GROUP_LIST);
+ r |= pSceneManager->RegisterScene(IDSCN_GROUP_LIST_EDITOR, IDC_FORM_MAIN, IDC_PANEL_GROUP_LIST_EDITOR);
+ r |= pSceneManager->RegisterScene(IDSCN_GROUP_SELECTOR, IDC_FORM_GROUP_SELECTOR, PANEL_BLANK);
+ r |= pSceneManager->RegisterScene(IDSCN_GROUP_EDITOR, IDC_FORM_GROUP_EDITOR, PANEL_BLANK);
+ r |= pSceneManager->RegisterScene(IDSCN_GROUP_CONTACT_LIST, IDC_FORM_GROUP_CONTACT_LIST, PANEL_BLANK);
+ r |= pSceneManager->RegisterScene(IDSCN_GROUP_CONTACT_LIST_EDITOR, IDC_FORM_GROUP_CONTACT_LIST_EDITOR, PANEL_BLANK);
+ r |= pSceneManager->RegisterScene(IDSCN_SETTINGS, IDC_FORM_SETTINGS, PANEL_BLANK);
+ r |= pSceneManager->RegisterScene(IDSCN_FAVORITE_LIST, IDC_FORM_MAIN, IDC_PANEL_FAVORITE_LIST);
+ r |= pSceneManager->RegisterScene(IDSCN_FAVORITE_LIST_EDITOR, IDC_FORM_MAIN, IDC_PANEL_FAVORITE_LIST_EDITOR);
+
+ 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 CtSearchListEventListener.cpp
+ * @brief This is the implementation file for the SearchListEventListener class.
+ */
+
+#include "CtContactListPresentationModel.h"
+#include "CtResourceManager.h"
+#include "CtSearchListEventListener.h"
+#include "CtSearchListItem.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui::Controls;
+
+static const int H_GROUP_ITEM = 76;
+static const int H_ITEM = 112;
+static const int X_LIST_ITEM_TEXT_MARGIN = 32;
+
+SearchListEventListener::SearchListEventListener(ListAnnexStyle itemAnnexStyle, ContactListPresentationModel* pContactListPresentationModel)
+: __pContactListPresentationModel(pContactListPresentationModel)
+, __itemAnnexStyle(itemAnnexStyle)
+{
+}
+
+SearchListEventListener::~SearchListEventListener(void)
+{
+}
+
+int
+SearchListEventListener::GetGroupCount(void)
+{
+ if (__pContactListPresentationModel->GetSearchedContactCount() != 0)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+int
+SearchListEventListener::GetItemCount(int groupIndex)
+{
+ return __pContactListPresentationModel->GetSearchedContactCount();
+}
+
+Tizen::Ui::Controls::ListItemBase*
+SearchListEventListener::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ String name;
+ String phoneNumber;
+ Bitmap* pThumbnail = null;
+ CustomItem* pItem = null;
+ SearchListItem* pCustomElement = null;
+ int searchItemWidth = itemWidth;
+
+ __pContactListPresentationModel->GetSearchedContactItemInfo(itemIndex, name, pThumbnail);
+
+ pItem = new (std::nothrow) CustomItem();
+ pItem->Construct(Dimension(itemWidth, H_ITEM), __itemAnnexStyle);
+
+ pCustomElement = new (std::nothrow) SearchListItem(name, pThumbnail, __pContactListPresentationModel->GetSearchText());
+
+ if (__itemAnnexStyle == LIST_ANNEX_STYLE_MARK)
+ {
+ searchItemWidth -= (ListItemBase::GetAnnexWidth(LIST_ANNEX_STYLE_MARK) + X_LIST_ITEM_TEXT_MARGIN);
+ }
+
+ pItem->AddElement(Rectangle(0, 0, searchItemWidth, H_ITEM), 0, *(static_cast<ICustomElement *>(pCustomElement)));
+
+ return pItem;
+}
+
+Tizen::Ui::Controls::GroupItem*
+SearchListEventListener::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ GroupItem* pItem = new (std::nothrow) GroupItem();
+ pItem->Construct(Dimension(itemWidth, H_GROUP_ITEM));
+ pItem->SetElement(ResourceManager::GetString("IDS_COM_BODY_CONTACTS") + L" (" + Integer::ToString(__pContactListPresentationModel->GetSearchedContactCount()) + L")");
+
+ return pItem;
+}
+
+bool
+SearchListEventListener::DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+bool
+SearchListEventListener::DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* 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 CtSearchListItem.cpp
+ * @brief This is the implementation file for the SearchListItem class.
+ */
+
+#include "CtSearchListItem.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui::Controls;
+
+static const int W_THUMBNAIL_AREA = 112;
+static const int Y_THUMBNAIL = 8;
+static const int W_THUMBNAIL = 96;
+static const int H_THUMBNAIL = 96;
+static const int X_TEXT = 16;
+static const int H_TEXT = 80;
+static const int Y_NAME = 16;
+
+static const unsigned int COLOR_TEXT_NORMAL = Color32<0, 0, 0>::Value;
+static const unsigned int COLOR_TEXT_PRESSED = Color32<255, 255, 255>::Value;
+static const unsigned int COLOR_SEARCHED_TEXT = Color32<255, 0, 255>::Value;
+
+static const int FONT_SIZE_NAME = 44;
+
+SearchListItem::SearchListItem(const Tizen::Base::String& name, Tizen::Graphics::Bitmap* pThumbnail, const Tizen::Base::String& searchedText)
+: __name(name)
+, __searchedText(searchedText)
+, __pThumbnail(pThumbnail)
+{
+}
+
+SearchListItem::~SearchListItem(void)
+{
+}
+
+Tizen::Graphics::EnrichedText*
+SearchListItem::GetDisplayEnrichedTextN(const Tizen::Graphics::Rectangle& rect, const Tizen::Base::String& text, Tizen::Ui::Controls::ListItemDrawingStatus itemStatus, bool isSearchingTextVisible)
+{
+ int searchedTextIndex = 0;
+ String preSearchedText;
+ String searchedText;
+ String postSearchedText;
+ String displayNameText;
+ EnrichedText* pEnrichedText = null;
+ TextElement* pSearchedTextElement = null;
+ TextElement* pPreNameTextElement = null;
+ TextElement* pPostNameTextElement = null;
+ Color textColor;
+ Color searchedTextColor;
+
+ pEnrichedText = new (std::nothrow) EnrichedText();
+ pEnrichedText->Construct(Dimension(rect.width - (rect.x + X_TEXT + W_THUMBNAIL_AREA), rect.height));
+ pEnrichedText->SetVerticalAlignment(TEXT_ALIGNMENT_MIDDLE);
+ pEnrichedText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
+ pEnrichedText->SetTextAbbreviationEnabled(true);
+
+ if (itemStatus == LIST_ITEM_DRAWING_STATUS_NORMAL)
+ {
+ textColor = COLOR_TEXT_NORMAL;
+ searchedTextColor = COLOR_SEARCHED_TEXT;
+ }
+ else if (itemStatus == LIST_ITEM_DRAWING_STATUS_PRESSED)
+ {
+ textColor = COLOR_TEXT_PRESSED;
+ searchedTextColor = COLOR_TEXT_PRESSED;
+ }
+
+ if (isSearchingTextVisible == false)
+ {
+ if (text.GetLength() > 0)
+ {
+ pSearchedTextElement = new (std::nothrow) TextElement();
+ pSearchedTextElement->Construct(text);
+ pSearchedTextElement->SetTextColor(textColor);
+ pEnrichedText->Add(*pSearchedTextElement);
+ }
+
+ return pEnrichedText;
+ }
+
+ text.ToLowerCase(displayNameText);
+ displayNameText.IndexOf(__searchedText, 0, searchedTextIndex);
+
+ if (searchedTextIndex == -1)
+ {
+ preSearchedText = text;
+ }
+ else
+ {
+ text.SubString(0, searchedTextIndex, preSearchedText);
+ text.SubString(searchedTextIndex, __searchedText.GetLength(), searchedText);
+ text.SubString(searchedTextIndex + __searchedText.GetLength(), text.GetLength() - (searchedTextIndex + __searchedText.GetLength()), postSearchedText);
+ }
+
+ if (preSearchedText.GetLength() > 0)
+ {
+ pPreNameTextElement = new (std::nothrow) TextElement();
+ pPreNameTextElement->Construct(preSearchedText);
+ pPreNameTextElement->SetTextColor(textColor);
+
+ pEnrichedText->Add(*pPreNameTextElement);
+ }
+
+ if (searchedText.GetLength() > 0)
+ {
+ pSearchedTextElement = new (std::nothrow) TextElement();
+ pSearchedTextElement->Construct(searchedText);
+ pSearchedTextElement->SetTextColor(searchedTextColor);
+
+ pEnrichedText->Add(*pSearchedTextElement);
+ }
+
+ if (postSearchedText.GetLength() > 0)
+ {
+ pPostNameTextElement = new (std::nothrow) TextElement();
+ pPostNameTextElement->Construct(postSearchedText);
+ pPostNameTextElement->SetTextColor(textColor);
+
+ pEnrichedText->Add(*pPostNameTextElement);
+ }
+
+ return pEnrichedText;
+}
+
+bool
+SearchListItem::OnDraw(Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& rect, Tizen::Ui::Controls::ListItemDrawingStatus itemStatus)
+{
+ result r = E_SUCCESS;
+ bool ret = true;
+ EnrichedText* pEnrichedText = null;
+ Rectangle enrichedTextBounds = rect;
+ Font font;
+
+ font.Construct(FONT_STYLE_PLAIN , FONT_SIZE_NAME);
+ canvas.SetFont(font);
+
+ enrichedTextBounds.height = H_TEXT;
+ pEnrichedText = GetDisplayEnrichedTextN(enrichedTextBounds, __name, itemStatus);
+
+ r = canvas.DrawText(Point(rect.x + X_TEXT, Y_NAME), *pEnrichedText);
+ TryCatch(r == E_SUCCESS, ret = false, "Unable to draw text.");
+
+ if (__pThumbnail != null)
+ {
+ r = canvas.DrawBitmap(Rectangle(rect.width - W_THUMBNAIL_AREA, Y_THUMBNAIL, W_THUMBNAIL, H_THUMBNAIL), *__pThumbnail);
+ TryCatch(r == E_SUCCESS, ret = false, "Unable to draw a thumbnail.");
+ }
+
+CATCH:
+ if (pEnrichedText != null)
+ {
+ pEnrichedText->RemoveAllTextElements(true);
+ delete pEnrichedText;
+ }
+
+ return ret;
+}
--- /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 CtSettingsForm.cpp
+ * @brief This is the implementation file for the SettingsForm class.
+ */
+
+#include <FApp.h>
+#include <FSystem.h>
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtSettingsForm.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::System;
+
+static const int H_ITEM_MAIN = 140;
+static const int H_ITEM_SUB = 112;
+static const int X_TEXT = 26;
+static const int Y_TEXT_ITEM_TITLE = 22;
+static const int H_TEXT_ITEM_TITLE = 54;
+static const int Y_TEXT_ITEM_SELECTED = 80;
+static const int H_TEXT_ITEM_SELECTED = 42;
+static const int Y_SUB_TEXT = 30;
+static const int W_EXPAND = 100;
+static const int LIST_ITEM_COUNT = 3;
+static const int INDEX_FIRST_NAME = 1;
+static const int INDEX_LAST_NAME = 2;
+
+static const unsigned int COLOR_TEXT_ITEM_TITLE = Color32<0, 0, 0>::Value;
+static const unsigned int COLOR_TEXT_ITEM_SELECTED = Color32<59, 115, 182>::Value;
+static const unsigned int COLOR_EXPANDED_ITEM_BG = Color32<220, 218, 211>::Value;
+
+static const int FONT_SIZE_ITEM_TITLE = 44;
+static const int FONT_SIZE_ITEM_SELECTED = 32;
+
+static const wchar_t* SETTING_KEY_FIRST_NAME = L"http://tizen.org/setting/contacts.order.firstname";
+
+SettingsForm::SettingsForm(void)
+: __pListView(null)
+, __isExpanded(false)
+, __isFirstNameFirst(false)
+{
+}
+
+SettingsForm::~SettingsForm(void)
+{
+}
+
+void
+SettingsForm::Initialize(void)
+{
+ Construct(FORM_STYLE_NORMAL | FORM_STYLE_INDICATOR | FORM_STYLE_HEADER | FORM_STYLE_FOOTER);
+}
+
+result
+SettingsForm::OnInitializing(void)
+{
+ Header* pHeader = GetHeader();
+ pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_BODY_CONTACTS"));
+
+ Footer* pFooter = GetFooter();
+ pFooter->SetBackButton();
+ pFooter->AddActionEventListener(*this);
+
+ SetFormBackEventListener(this);
+
+ __pListView = new (std::nothrow) ListView();
+ __pListView->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height), true, false);
+ __pListView->AddListViewItemEventListener(*this);
+ __pListView->SetItemProvider(*this);
+
+ AddControl(*__pListView);
+
+ SettingInfo::GetValue(SETTING_KEY_FIRST_NAME, __isFirstNameFirst);
+
+ return E_SUCCESS;
+}
+
+result
+SettingsForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ return r;
+}
+
+void
+SettingsForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+}
+
+void
+SettingsForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
+{
+ UiApp* pApp = UiApp::GetInstance();
+ pApp->Terminate();
+}
+
+int
+SettingsForm::GetItemCount(void)
+{
+ return LIST_ITEM_COUNT;
+}
+
+Tizen::Ui::Controls::ListItemBase*
+SettingsForm::CreateItem(int index, int itemWidth)
+{
+ CustomItem* pItem = null;
+
+ if (index == 0)
+ {
+ pItem = new (std::nothrow) CustomItem();
+ pItem->Construct(Dimension(itemWidth, H_ITEM_MAIN), LIST_ANNEX_STYLE_DETAILED);
+
+ pItem->AddElement(Rectangle(X_TEXT, Y_TEXT_ITEM_TITLE, itemWidth - W_EXPAND, H_TEXT_ITEM_TITLE), 0, ResourceManager::GetString(L"IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"),
+ FONT_SIZE_ITEM_TITLE, COLOR_TEXT_ITEM_TITLE, COLOR_TEXT_ITEM_TITLE, COLOR_TEXT_ITEM_TITLE);
+
+ String selectedItem;
+ if (__isFirstNameFirst == true)
+ {
+ selectedItem = ResourceManager::GetString(L"IDS_PB_BODY_FIRST_NAME_FIRST");
+ }
+ else
+ {
+ selectedItem = ResourceManager::GetString(L"IDS_PB_BODY_LAST_NAME_FIRST_ABB");
+ }
+ pItem->AddElement(Rectangle(X_TEXT, Y_TEXT_ITEM_SELECTED, itemWidth - W_EXPAND, H_TEXT_ITEM_SELECTED), 1, selectedItem,
+ FONT_SIZE_ITEM_SELECTED, COLOR_TEXT_ITEM_SELECTED, COLOR_TEXT_ITEM_SELECTED, COLOR_TEXT_ITEM_SELECTED);
+
+ return pItem;
+ }
+
+ String nameOrder;
+ int itemHeight = H_ITEM_SUB;
+ if (__isExpanded == false)
+ {
+ itemHeight = 0;
+ }
+
+ if (index == INDEX_FIRST_NAME)
+ {
+ nameOrder = ResourceManager::GetString(L"IDS_PB_BODY_FIRST_NAME_FIRST");
+ }
+ else if (index == INDEX_LAST_NAME)
+ {
+ nameOrder = ResourceManager::GetString(L"IDS_PB_BODY_LAST_NAME_FIRST_ABB");
+ }
+
+ pItem = new (std::nothrow) CustomItem();
+ pItem->Construct(Dimension(itemWidth, itemHeight), LIST_ANNEX_STYLE_RADIO);
+ pItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_NORMAL, COLOR_EXPANDED_ITEM_BG);
+
+ pItem->AddElement(Rectangle(0, Y_SUB_TEXT, itemWidth, H_TEXT_ITEM_TITLE), 0, nameOrder,
+ FONT_SIZE_ITEM_TITLE, COLOR_TEXT_ITEM_TITLE, COLOR_TEXT_ITEM_TITLE, COLOR_TEXT_ITEM_TITLE);
+
+ return pItem;
+}
+
+bool
+SettingsForm::DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
+{
+ delete pItem;
+ return true;
+}
+
+void
+SettingsForm::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status)
+{
+ if (index == 0)
+ {
+ if (status == LIST_ITEM_STATUS_SELECTED || status == LIST_ITEM_STATUS_MORE)
+ {
+ __isExpanded ? __isExpanded = false : __isExpanded = true;
+ }
+ }
+ else if (index == INDEX_FIRST_NAME)
+ {
+ if (status == LIST_ITEM_STATUS_CHECKED)
+ {
+ __isFirstNameFirst = true;
+ SettingInfo::SetValue(SETTING_KEY_FIRST_NAME, true);
+ }
+ }
+ else if (index == INDEX_LAST_NAME)
+ {
+ if (status == LIST_ITEM_STATUS_CHECKED)
+ {
+ __isFirstNameFirst = false;
+ SettingInfo::SetValue(SETTING_KEY_FIRST_NAME, false);
+ }
+ }
+
+ __pListView->UpdateList();
+
+ if (__isFirstNameFirst == true)
+ {
+ __pListView->SetItemChecked(INDEX_FIRST_NAME, true);
+ __pListView->SetItemChecked(INDEX_LAST_NAME, false);
+ }
+ else
+ {
+ __pListView->SetItemChecked(INDEX_FIRST_NAME, false);
+ __pListView->SetItemChecked(INDEX_LAST_NAME, true);
+ }
+
+ __pListView->Invalidate(true);
+}
+
+void
+SettingsForm::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+void
+SettingsForm::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus status)
+{
+}
--- /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 CtTypes.cpp
+ * @brief This is the implementation file for the Contacts application types.
+ */
+
+#include "CtTypes.h"
+
+// form, panel ids
+const wchar_t* IDC_FORM_CONTACT_DETAILS = L"FormContactDetails";
+const wchar_t* IDC_FORM_CONTACT_EDITOR = L"FormContactEditor";
+const wchar_t* IDC_FORM_CONTACT_SELECTOR = L"FormContactSelector";
+const wchar_t* IDC_FORM_GROUP_SELECTOR = L"FormGroupSelector";
+const wchar_t* IDC_FORM_GROUP_EDITOR = L"FormGroupEditor";
+const wchar_t* IDC_FORM_GROUP_CONTACT_LIST = L"FormGroupContactList";
+const wchar_t* IDC_FORM_GROUP_CONTACT_LIST_EDITOR = L"FormGroupContactListEditor";
+const wchar_t* IDC_FORM_SETTINGS = L"FormSettings";
+const wchar_t* IDC_FORM_MAIN = L"FormMain";
+
+const wchar_t* IDC_PANEL_CONTACT_LIST = L"PanelContactList";
+const wchar_t* IDC_PANEL_CONTACT_LIST_EDITOR = L"PanelContactListEditor";
+const wchar_t* IDC_PANEL_GROUP_LIST = L"PanelGroupList";
+const wchar_t* IDC_PANEL_GROUP_LIST_EDITOR = L"PanelGroupListEditor";
+const wchar_t* IDC_PANEL_FAVORITE_LIST = L"PanelFavoriteList";
+const wchar_t* IDC_PANEL_FAVORITE_LIST_EDITOR = L"PanelFavoriteListEditor";
+
+// scene ids
+const wchar_t* IDSCN_CONTACT_LIST = L"ContactList";
+const wchar_t* IDSCN_CONTACT_LIST_EDITOR = L"ContactListEditor";
+const wchar_t* IDSCN_CONTACT_DETAILS = L"ContactDetails";
+const wchar_t* IDSCN_CONTACT_EDITOR = L"ContactEditor";
+const wchar_t* IDSCN_CONTACT_SELECTOR = L"ContactSelector";
+const wchar_t* IDSCN_GROUP_LIST = L"GroupList";
+const wchar_t* IDSCN_GROUP_LIST_EDITOR = L"GroupListEditor";
+const wchar_t* IDSCN_GROUP_SELECTOR = L"GroupSelector";
+const wchar_t* IDSCN_GROUP_EDITOR = L"GroupEditor";
+const wchar_t* IDSCN_GROUP_CONTACT_LIST = L"GroupContactList";
+const wchar_t* IDSCN_GROUP_CONTACT_LIST_EDITOR = L"GroupContactListEditor";
+const wchar_t* IDSCN_FAVORITE_LIST = L"FavoriteList";
+const wchar_t* IDSCN_FAVORITE_LIST_EDITOR = L"FavoriteListEditor";
+const wchar_t* IDSCN_SETTINGS = L"Settings";
+
+const wchar_t* OPERATION_ID_MAIN = L"http://tizen.org/appcontrol/operation/main";
+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_CREATE_CONTENT = L"http://tizen.org/appcontrol/operation/createcontent";
+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* RETURN_KEY_TYPE = L"returnType";
+const wchar_t* RETURN_KEY_VALUE = L"value";
+const wchar_t* RETURN_TYPE_PHONE = L"phone";
+const wchar_t* RETURN_TYPE_EMAIL = L"email";
+const wchar_t* RETURN_TYPE_VCARD = L"vcard";
+const wchar_t* RETURN_TYPE_CONTACT_ID = L"contactId";
+
+const wchar_t* PROVIDER_ID_CAMERA = L"tizen.camera";
+const wchar_t* PROVIDER_ID_GALLERY = L"tizen.gallery";
+const wchar_t* PROVIDER_ID_PHONE = L"tizen.phone";
+const wchar_t* PROVIDER_ID_MESSAGE = L"tizen.messages";
+const wchar_t* PROVIDER_ID_EMAIL = L"tizen.email";
+const wchar_t* PROVIDER_ID_FILEMANAGER = L"tizen.filemanager";
+
+const wchar_t* SETTING_KEY_LANGUAGE = L"http://tizen.org/setting/locale.language";
+const wchar_t* SETTING_KEY_COUNTRY = L"http://tizen.org/setting/locale.country";
+
+const wchar_t* CHARACTER_SPACE = L" ";
+const wchar_t* DELIMITER = L":";
+const wchar_t* DELIMITER_SEMICOLON = L";";
+const wchar_t* INITIAL_SELECTED_COUNT = L" (0)";
+const wchar_t* DEFAULT_GROUP_FAMILY = L"family";
+const wchar_t* DEFAULT_GROUP_FRIENDS = L"friends";
+const wchar_t* DEFAULT_GROUP_COWORKERS = L"coworkers";
+
+const int ID_GROUP_CONTACT_NOT_ASSIGNED = 0xFFFFFFFF;
+const int ID_GROUP_CONTACT_SELECT_MESSAGE = 0xFFFFFFFE;
+const int ID_GROUP_CONTACT_SELECT_EMAIL = 0xFFFFFFFD;
+