2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.1 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://floralicense.org/license/
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an AS IS BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
18 * @file CtContactDetailsForm.cpp
19 * @brief This is the implementation file for the ContactDetailsForm class.
26 #include "CtContactDetailsForm.h"
27 #include "CtContactPresentationModel.h"
28 #include "CtContactValueListItemProvider.h"
29 #include "CtContactsApp.h"
30 #include "CtResourceManager.h"
31 #include "CtSceneRegister.h"
34 using namespace Tizen::App;
35 using namespace Tizen::Base;
36 using namespace Tizen::Base::Collection;
37 using namespace Tizen::Base::Utility;
38 using namespace Tizen::Graphics;
39 using namespace Tizen::Io;
40 using namespace Tizen::Media;
41 using namespace Tizen::Ui;
42 using namespace Tizen::Ui::Controls;
43 using namespace Tizen::Ui::Scenes;
44 using namespace Tizen::Social;
46 static const int IDA_FOOTER_EDIT = 10;
47 static const int IDA_FOOTER_DELETE = 11;
48 static const int IDA_FOOTER_ADD = 13;
49 static const int IDA_VOICE_CALL = 20;
50 static const int IDA_MESSAGE = 21;
51 static const int IDA_VIDEO_CALL = 22;
52 static const int IDA_CONTEXTMENU_SHARE_EMAIL = 30;
53 static const int IDA_CONTEXTMENU_SHARE_MESSAGE = 31;
54 static const int IDA_BUTTON_RINGTONE_CLEAR = 40;
55 static const int IDA_BUTTON_SHARE_NAME_CARD = 50;
56 static const int IDA_POPUP_CLOSE = 60;
57 static const int IDA_INVALID_FILE_POPUP_CLOSE = 61;
58 static const int IDA_MORE_DEFAULT_NUMBER = 70;
60 static const wchar_t* IDB_DETAILS_FAVORITE_ON = L"00_icon_favorite_on.png";
61 static const wchar_t* IDB_DETAILS_FAVORITE_OFF = L"00_icon_favorite_off.png";
62 static const wchar_t* IDB_DETAILS_RESET_NORMAL = L"00_button_refresh.png";
63 static const wchar_t* IDB_DETAILS_RESET_PRESSED = L"00_button_refresh_press.png";
64 static const wchar_t* IDB_CIRCLE_BUTTON_NORMAL = L"C02_circle_button.png";
65 static const wchar_t* IDB_CIRCLE_BUTTON_PRESSED = L"C02_circle_button_press.png";
66 static const wchar_t* IDB_CALL_NORMAL = L"C02_circle_icon_call.png";
67 static const wchar_t* IDB_CALL_PRESSED = L"C02_circle_icon_call_press.png";
68 static const wchar_t* IDB_SMS_NORMAL = L"C02_circle_icon_sms.png";
69 static const wchar_t* IDB_SMS_PRESSED = L"C02_circle_icon_sms_press.png";
70 static const wchar_t* IDB_VIDEO_CALL_NORMAL = L"C02_circle_icon_vt-call.png";
71 static const wchar_t* IDB_VIDEO_CALL_PRESSED = L"C02_circle_icon_vt-call_press.png";
73 static const wchar_t* FAVORITE_LABEL = L"FavoriteLabel";
74 static const wchar_t* GROUP_STYLE_PANEL = L"GroupStylePanel";
75 static const wchar_t* GROUP_LABEL = L"GroupLabel";
77 static const int Y_THUMBNAIL = 34;
78 static const int H_THUMBNAIL = 360;
79 static const int X_MAIN_INFO = 26;
80 static const int H_NAME = 70;
81 static const int H_SUB_INFO = 40;
82 static const int H_SUB_INFO_DIVIDER = 6;
83 static const int H_DEFAULT_NUMBER = 50;
84 static const int H_QUICK_BUTTON_DIVIDER = 42;
85 #if __SUPPORT_VIDEO_CALL
86 static const int W_QUICK_BUTTON_GAP = 115;
87 static const int X_QUICK_BUTTON = 38;
89 static const int W_QUICK_BUTTON_GAP = 148;
90 static const int X_QUICK_BUTTON = 148;
92 static const int H_QUICK_BUTTON = 138;
93 static const int Y_FAVORITE = 10;
94 static const int H_FAVORITE = 45;
95 static const int W_FAVORITE_GAP = 26;
96 static const int W_GROUP_STYLE_MARGIN = 16;
97 static const int W_TEXT_MARGIN = 26;
98 static const int W_TYPE = 160;
99 static const int H_ITEM = 112;
100 static const int H_ITEM_DOUBLE_LINE = 148;
101 static const int H_ADDITIONAL_ITEM = 54;
102 static const int Y_ITEM_TITLE = 22;
103 static const int H_ITEM_TITLE = 42;
104 static const int H_ITEM_VALUE = 62;
105 static const int H_ICON = 74;
106 static const int Y_BUTTON = 20;
107 static const int H_BUTTON = 72;
108 static const int H_BUTTON_CONTAINER = 132;
109 static const int W_BUTTON_GAP = 18;
111 static const int W_POPUP = 688;
112 static const int H_POPUP = 532;
113 static const int H_INVALID_FILE_POPUP = 200;
114 static const int H_POPUP_LIST_VIEW = 338;
115 static const int Y_POPUP_BUTTON = 358;
116 static const int H_POPUP_BUTTON = 74;
117 static const int W_POPUP_BUTTON = 394;
118 static const int Y_POPUP_TEXT_LABEL = 12;
119 static const int H_POPUP_TEXT_LABEL = 90;
121 static const int SUB_INDEX_MASK = 0xF000;
122 static const int MESSAGE_BOX_TIMEOUT_MS = 300000;
124 static const unsigned int COLOR_TABLE_BG = Color32<248, 246, 239>::Value;
125 static const unsigned int COLOR_ITEM_TITLE = Color32<128, 128, 128>::Value;
126 static const unsigned int COLOR_ITEM_VALUE = Color32<0, 0, 0>::Value;
127 static const unsigned int COLOR_ITEM_TYPE = Color32<128, 128, 128>::Value;
128 static const unsigned int COLOR_OTHER_NUMBER = Color32<0, 0, 0>::Value;
129 static const unsigned int COLOR_NAME = Color32<59, 115, 182>::Value;
130 static const unsigned int COLOR_GROUP_STYLE = Color32<240, 237, 232>::Value;
131 static const unsigned int COLOR_POPUP_TEXT = Color32<0, 0, 0>::Value;
132 static const unsigned int COLOR_PRESSED = Color32<87, 135, 194>::Value;
134 static const int FONT_SIZE_NAME = 56;
135 static const int FONT_SIZE_SUB_INFO = 32;
136 static const int FONT_SIZE_MAIN_TEXT = 44;
137 static const int FONT_SIZE_SUB_TEXT = 32;
138 static const int FONT_SIZE_POPUP_TEXT = 38;
140 static const wchar_t* INPUT_KEY_CALL_TYPE = L"http://tizen.org/appcontrol/data/call/type";
141 static const wchar_t* INPUT_KEY_MESSAGE_TYPE = L"http://tizen.org/appcontrol/data/message/type";
142 static const wchar_t* INPUT_KEY_MESSAGE_TO = L"http://tizen.org/appcontrol/data/to";
143 static const wchar_t* INPUT_KEY_SELECTION_MODE = L"http://tizen.org/appcontrol/data/selection_mode";
144 static const wchar_t* INPUT_DATA_SELECTION_MODE_SINGLE = L"single";
145 static const wchar_t* INPUT_MIME_TYPE_AUDIO = L"audio/*";
146 static const wchar_t* INPUT_URI_TEL = L"tel:";
147 static const wchar_t* INPUT_TYPE_VIDEO = L"video";
148 static const wchar_t* INPUT_TYPE_VOICE = L"voice";
149 static const wchar_t* INPUT_TYPE_SMS = L"sms";
150 static const wchar_t* INPUT_TYPE_MMS = L"mms";
151 static const wchar_t* OUTPUT_KEY_SELECTED = L"http://tizen.org/appcontrol/data/selected";
152 static const wchar_t* KEY_VIEW_TYPE = L"viewType";
153 static const wchar_t* KEY_VIEW_TYPE_VCF = L"path";
154 static const wchar_t* KEY_VIEW_TYPE_CONTACT_ID = L"contactId";
155 static const wchar_t* VALUE_VIEW_TYPE_VCF = L"vcf";
156 static const wchar_t* VALUE_VIEW_TYPE_CONTACT = L"contact";
158 ContactDetailsForm::ContactDetailsForm(void)
159 : __isAppControlLaunching(false)
160 , __pAppControl(null)
162 , __pContextMenuCall(null)
163 , __pContextMenuShare(null)
164 , __pFileEventManager(null)
165 , __pOptionMenu(null)
166 , __pDefaultSelectorPopup(null)
167 , __pInvalidFilePopup(null)
169 , __pPresentationModel(null)
170 , __scrolledDistance(0)
174 ContactDetailsForm::~ContactDetailsForm(void)
179 ContactDetailsForm::Initialize(void)
181 Construct(L"IDL_CONTACT_DETAILS_FORM");
185 ContactDetailsForm::OnInitializing(void)
187 Footer* pFooter = GetFooter();
188 pFooter->AddActionEventListener(*this);
189 SetFormBackEventListener(this);
190 SetFormMenuEventListener(this);
192 __pTableView = new (std::nothrow) TableView();
193 __pTableView->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height), false, TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT);
194 __pTableView->SetItemProvider(this);
195 __pTableView->AddTableViewItemEventListener(*this);
196 __pTableView->SetBackgroundColor(COLOR_TABLE_BG);
197 __pTableView->AddTouchEventListener(*this);
198 __pTableView->AddScrollEventListener(*this);
199 AddControl(__pTableView);
201 __pContextMenuCall = new (std::nothrow) ContextMenu();
202 __pContextMenuCall->Construct(Point(0, 0), CONTEXT_MENU_STYLE_LIST);
203 __pContextMenuCall->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_CALL"), IDA_VOICE_CALL);
204 __pContextMenuCall->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_MESSAGE"), IDA_MESSAGE);
205 #if __SUPPORT_VIDEO_CALL
206 __pContextMenuCall->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_VIDEO_CALL"), IDA_VIDEO_CALL);
208 __pContextMenuCall->AddActionEventListener(*this);
209 __pContextMenuCall->SetFocusable(true);
211 __pContextMenuShare = new (std::nothrow) ContextMenu();
212 __pContextMenuShare->Construct(Point(0, 0), CONTEXT_MENU_STYLE_LIST);
213 __pContextMenuShare->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_EMAIL"), IDA_CONTEXTMENU_SHARE_EMAIL);
214 __pContextMenuShare->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_MESSAGE"), IDA_CONTEXTMENU_SHARE_MESSAGE);
215 __pContextMenuShare->AddActionEventListener(*this);
216 __pContextMenuShare->SetFocusable(true);
218 __pItemList = new (std::nothrow) ArrayListT<int>();
219 __pItemList->Construct();
221 __pPresentationModel = new (std::nothrow) ContactPresentationModel();
222 __pPresentationModel->Construct();
223 __pPresentationModel->AddContactChangeListener(*this);
225 __pOptionMenu = new (std::nothrow) OptionMenu();
226 __pOptionMenu->Construct();
227 __pOptionMenu->AddItem(ResourceManager::GetString(L"IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"), IDA_MORE_DEFAULT_NUMBER);
228 __pOptionMenu->AddActionEventListener(*this);
229 __pOptionMenu->SetShowState(false);
235 ContactDetailsForm::OnTerminating(void)
237 delete __pAppControl;
238 delete __pContextMenuCall;
239 delete __pContextMenuShare;
240 delete __pFileEventManager;
241 delete __pOptionMenu;
243 if (__pItemList != null)
245 __pItemList->RemoveAll();
249 if (__pPresentationModel != null)
251 __pPresentationModel->RemoveContactChangeListener(*this);
252 delete __pPresentationModel;
255 delete __pDefaultSelectorPopup;
256 delete __pInvalidFilePopup;
262 ContactDetailsForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
264 AppLog("ContactDetailsForm::OnActionPerformed(), actionId %d", actionId);
266 result r = E_SUCCESS;
267 SceneManager* pSceneManager = SceneManager::GetInstance();
271 case IDA_FOOTER_EDIT:
273 ArrayList* pList = new (std::nothrow) ArrayList();
275 pList->Add(*(new (std::nothrow) Integer(__pPresentationModel->GetContactId())));
276 r = pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pList);
277 TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go forward", GetErrorMessage(r));
280 case IDA_FOOTER_DELETE:
283 MessageBox deleteMessageBox;
284 deleteMessageBox.Construct(L"", ResourceManager::GetString(L"IDS_COM_POP_DELETE_Q"), MSGBOX_STYLE_YESNO, MESSAGE_BOX_TIMEOUT_MS);
285 deleteMessageBox.ShowAndWait(modalResult);
287 if (modalResult == MSGBOX_RESULT_YES)
289 r = __pPresentationModel->RemoveContact();
290 TryReturnVoid(r == E_SUCCESS, "[%s] Unable to remove contact", GetErrorMessage(r));
296 ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
298 if (pContactsApp->GetOperationId() == OPERATION_ID_VIEW)
300 if(Tizen::Io::File::IsFileExist(__pPresentationModel->GetVcfPath()) == false)
302 ShowInvalidFilePopup(false);
307 ArrayList* pList = new (std::nothrow) ArrayList();
309 pList->Add(*(new (std::nothrow) Integer(INVALID_RECORD_ID)));
310 pList->Add(*(new (std::nothrow) String(__pPresentationModel->GetVcfPath())));
311 r = pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pList);
312 TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go forward", GetErrorMessage(r));
315 case IDA_MORE_DEFAULT_NUMBER:
317 ShowDefaultSelectorPopup();
320 case IDA_BUTTON_RINGTONE_CLEAR:
322 __pPresentationModel->SetValue(DETAIL_PROPERTY_RINGTONE, String());
323 __pPresentationModel->UpdateContact();
324 __pTableView->RefreshItem(__pItemList->GetCount() - 1, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
329 r = LaunchAppControl(PROVIDER_ID_PHONE, OPERATION_ID_CALL, INPUT_TYPE_VOICE, source.GetName());
330 TryReturnVoid(r == E_SUCCESS, "[%s] Unable to launch appcontrol", GetErrorMessage(r));
335 r = LaunchAppControl(PROVIDER_ID_MESSAGE, OPERATION_ID_COMPOSE, INPUT_TYPE_SMS, source.GetName());
336 TryReturnVoid(r == E_SUCCESS, "[%s] Unable to launch appcontrol", GetErrorMessage(r));
341 r = LaunchAppControl(PROVIDER_ID_PHONE, OPERATION_ID_CALL, INPUT_TYPE_VIDEO, source.GetName());
342 TryReturnVoid(r == E_SUCCESS, "[%s] Unable to launch appcontrol", GetErrorMessage(r));
345 case IDA_CONTEXTMENU_SHARE_EMAIL:
347 r = LaunchAppControl(PROVIDER_ID_EMAIL, OPERATION_ID_COMPOSE);
348 TryReturnVoid(r == E_SUCCESS, "[%s] Unable to launch appcontrol", GetErrorMessage(r));
351 case IDA_CONTEXTMENU_SHARE_MESSAGE:
353 r = LaunchAppControl(PROVIDER_ID_MESSAGE, OPERATION_ID_COMPOSE, INPUT_TYPE_MMS);
354 TryReturnVoid(r == E_SUCCESS, "[%s] Unable to launch appcontrol", GetErrorMessage(r));
357 case IDA_BUTTON_SHARE_NAME_CARD:
360 itemPoint.x = GetClientAreaBounds().width / 2;
363 TableViewItem* pParent = static_cast<TableViewItem*>(source.GetParent());
366 itemPoint.y = GetClientAreaBounds().y + pParent->GetY() + source.GetY() - __scrolledDistance;
369 __pContextMenuShare->SetAnchorPosition(itemPoint);
370 __pContextMenuShare->SetShowState(true);
371 __pContextMenuShare->Show();
374 case IDA_POPUP_CLOSE:
376 HideDefaultSelectorPopup();
379 case IDA_INVALID_FILE_POPUP_CLOSE:
381 __pInvalidFilePopup->SetShowState(false);
383 ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
385 result r = AppControlProviderManager::GetInstance()->SendAppControlResult(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, null);
386 AppLogDebug("[%s] The return result from SendAppControlResult().", GetErrorMessage(r));
388 UiApp::GetInstance()->Terminate();
397 ContactDetailsForm::OnFormMenuRequested(Tizen::Ui::Controls::Form& source)
399 __pOptionMenu->SetShowState(true);
400 __pOptionMenu->Show();
404 ContactDetailsForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
406 if (__appControlViewType.IsEmpty() == false)
408 ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
409 AppControlProviderManager* pAppManager = AppControlProviderManager::GetInstance();
411 result r = pAppManager->SendAppControlResult(pContactsApp->GetRequestId(), APP_CTRL_RESULT_CANCELED, null);
412 AppLogDebug("[%s] The return result from SendAppControlResult().", GetErrorMessage(r));
414 UiApp::GetInstance()->Terminate();
418 SceneManager* pSceneManager = SceneManager::GetInstance();
420 result r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
421 TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go backward", GetErrorMessage(r));
426 ContactDetailsForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, IList* pArgs)
428 ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
429 TryReturnVoid(pContactsApp != null, "Unable to cast UiApp to ContactsApp");
431 pContactsApp->AddContactsAppChangeEventListener(*this);
433 if (previousSceneId == IDSCN_GROUP_SELECTOR || previousSceneId == IDSCN_GROUP_EDITOR)
440 Integer* pArgument = null;
441 __pPresentationModel->RemoveContactFromAllCategories();
442 IEnumerator* pEnum = pArgs->GetEnumeratorN();
443 while (pEnum->MoveNext() == E_SUCCESS)
445 pArgument = static_cast<Integer*>(pEnum->GetCurrent());
446 if (pArgument != null)
448 __pPresentationModel->AddContactToCategory(pArgument->ToInt());
453 __pTableView->RefreshItem(__pItemList->GetCount() - 2, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
455 else if (previousSceneId == IDSCN_CONTACT_EDITOR && __appControlViewType.Equals(VALUE_VIEW_TYPE_VCF, false) == false)
457 InitializeDetailItemList();
458 __pTableView->UpdateTableView();
467 if (pContactsApp->GetOperationId() == OPERATION_ID_VIEW)
469 __pPresentationModel->RemoveContactChangeListener(*this);
471 result r = InitializeAppControl(pArgs);
475 pArgs->RemoveAll(true);
477 AppLogDebug("Unable to initialize appcontrol");
479 ShowInvalidFilePopup();
484 InitializeDetailItemList();
488 Integer* pContactId = static_cast<Integer*>(pArgs->GetAt(0));
489 if (pContactId != null)
491 __pPresentationModel->SetContactId(pContactId->ToInt());
492 InitializeDetailItemList();
495 __pTableView->UpdateTableView();
500 pArgs->RemoveAll(true);
506 ContactDetailsForm::InitializeAppControl(Tizen::Base::Collection::IList* pArgs)
513 result r = E_SUCCESS;
515 String* pArgStringType = null;
516 String* pArgStringValue = null;
519 String valueViewType;
522 pArgStringType = static_cast<String*>(pArgs->GetAt(0));
523 pArgStringValue = static_cast<String*>(pArgs->GetAt(1));
525 TryReturn(pArgStringType != null && pArgStringValue != null, E_FAILURE, "[E_FAILURE] Unable to initialize appcontrol");
527 ParseAppControlArgument(*pArgStringType, keyViewType, valueViewType);
528 ParseAppControlArgument(*pArgStringValue, keyValue, value);
530 if (keyViewType.Equals(KEY_VIEW_TYPE, false))
532 if (valueViewType.Equals(VALUE_VIEW_TYPE_CONTACT, false))
534 if (keyValue.Equals(KEY_VIEW_TYPE_CONTACT_ID, false))
537 Integer::Parse(value, contactId);
538 r = __pPresentationModel->SetContactId(contactId);
539 __appControlViewType = valueViewType;
541 Footer* pFooter = GetFooter();
542 pFooter->RemoveAllItems();
544 FooterItem footerItemEdit;
545 footerItemEdit.Construct(IDA_FOOTER_EDIT);
546 footerItemEdit.SetText(ResourceManager::GetString(L"IDS_COM_SK_EDIT"));
547 pFooter->AddItem(footerItemEdit);
549 __pPresentationModel->AddContactChangeListener(*this);
553 AppLogDebug("Invalid KEY(contactId) of AppControl[VIEW]. [%ls] has been input", keyValue.GetPointer());
557 else if (valueViewType.Equals(VALUE_VIEW_TYPE_VCF, false))
559 if (keyValue.Equals(KEY_VIEW_TYPE_VCF, false))
561 r = __pPresentationModel->SetVcfPath(value);
563 __appControlViewType = valueViewType;
564 Footer* pFooter = GetFooter();
565 pFooter->RemoveAllItems();
566 pFooter->RemoveButtonAt(BUTTON_POSITION_LEFT);
568 FooterItem footerItemAdd;
569 footerItemAdd.Construct(IDA_FOOTER_ADD);
570 footerItemAdd.SetText(ResourceManager::GetString(L"IDS_COM_OPT_ADD_TO_CONTACTS"));
571 pFooter->AddItem(footerItemAdd);
575 AppLogDebug("Invalid KEY(path) of AppControl[VIEW]. [%ls] has been input", keyValue.GetPointer());
581 AppLogDebug("viewType of AppControl[VIEW] should be either vcf or contact. [%ls] has been inpue", keyValue.GetPointer());
587 AppLogDebug("Invalid KEY(viewType) of AppControl[VIEW]. [%ls] has been input", keyViewType.GetPointer());
595 ContactDetailsForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
597 ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
598 pContactsApp->RemoveContactsAppChangeEventListener(*this);
600 delete __pAppControl;
601 __pAppControl = null;
605 ContactDetailsForm::InitializeDetailItemList(void)
607 if (__pItemList->GetCount() > 0)
609 __pItemList->RemoveAll();
613 __pItemList->Add(DETAIL_PROPERTY_MAIN_INFO);
615 // Other Phone Numbers
616 Footer* pFooter = GetFooter();
617 pFooter->RemoveButtonAt(BUTTON_POSITION_LEFT);
618 int otherNumberCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER);
620 if (otherNumberCount > 1)
622 if (__appControlViewType.Equals(VALUE_VIEW_TYPE_VCF, false) == false)
624 SetFormMenuEventListener(this);
628 SetFormMenuEventListener(null);
631 for (int subIndex = 0; subIndex < otherNumberCount; subIndex++)
633 if (__pPresentationModel->GetDefaultNumberIndex() != subIndex)
635 __pItemList->Add(DETAIL_PROPERTY_PHONE_NUMBER + subIndex);
641 SetFormMenuEventListener(null);
644 if (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_EMAIL) > 0)
646 __pItemList->Add(DETAIL_PROPERTY_EMAIL);
649 if (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_ADDRESS) > 0)
651 __pItemList->Add(DETAIL_PROPERTY_ADDRESS);
654 if (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_IM_ADDRESS) > 0)
656 __pItemList->Add(DETAIL_PROPERTY_IM_ADDRESS);
659 if (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_URL) > 0)
661 __pItemList->Add(DETAIL_PROPERTY_URL);
664 if (__pPresentationModel->GetValue(DETAIL_PROPERTY_BIRTHDAY).IsEmpty() == false)
666 __pItemList->Add(DETAIL_PROPERTY_BIRTHDAY);
669 if (__pPresentationModel->GetValue(DETAIL_PROPERTY_NOTE).IsEmpty() == false)
671 __pItemList->Add(DETAIL_PROPERTY_NOTE);
674 __pItemList->Add(DETAIL_PROPERTY_GROUP);
675 __pItemList->Add(DETAIL_PROPERTY_RINGTONE);
679 ContactDetailsForm::GetItemCount(void)
681 return __pItemList->GetCount();
684 Tizen::Ui::Controls::TableViewItem*
685 ContactDetailsForm::CreateItem(int itemIndex, int itemWidth)
687 TableViewItem* pItem = new (std::nothrow) TableViewItem();
689 int contentItemIndex = -1;
690 int itemSubIndex = -1;
691 __pItemList->GetAt(itemIndex, contentItemIndex);
693 switch (contentItemIndex & SUB_INDEX_MASK)
695 case DETAIL_PROPERTY_PHONE_NUMBER:
697 itemSubIndex = contentItemIndex - DETAIL_PROPERTY_PHONE_NUMBER;
698 contentItemIndex = DETAIL_PROPERTY_PHONE_NUMBER;
701 case DETAIL_PROPERTY_EMAIL:
703 contentItemIndex = DETAIL_PROPERTY_EMAIL;
706 case DETAIL_PROPERTY_IM_ADDRESS:
708 contentItemIndex = DETAIL_PROPERTY_IM_ADDRESS;
711 case DETAIL_PROPERTY_ADDRESS:
713 contentItemIndex = DETAIL_PROPERTY_ADDRESS;
716 case DETAIL_PROPERTY_URL:
718 contentItemIndex = DETAIL_PROPERTY_URL;
725 switch (contentItemIndex)
727 case DETAIL_PROPERTY_MAIN_INFO:
729 AddMainInfo(itemWidth, pItem);
732 case DETAIL_PROPERTY_PHONE_NUMBER: // fall through
733 case DETAIL_PROPERTY_EMAIL: // fall through
734 case DETAIL_PROPERTY_ADDRESS: // fall through
735 case DETAIL_PROPERTY_URL: // fall through
736 case DETAIL_PROPERTY_BIRTHDAY: // fall through
737 case DETAIL_PROPERTY_NOTE:
738 case DETAIL_PROPERTY_IM_ADDRESS:
740 AddProperty(itemWidth, pItem, contentItemIndex, itemSubIndex);
743 case DETAIL_PROPERTY_GROUP:
745 AddGroup(itemWidth, pItem);
748 case DETAIL_PROPERTY_RINGTONE:
750 AddRingTone(itemWidth, pItem);
765 ContactDetailsForm::DeleteItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
772 ContactDetailsForm::UpdateItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
774 int contentItemIndex = -1;
775 __pItemList->GetAt(itemIndex, contentItemIndex);
779 if (contentItemIndex == DETAIL_PROPERTY_GROUP)
781 value = __pPresentationModel->GetValue(DETAIL_PROPERTY_GROUP);
785 value = ResourceManager::GetString(L"IDS_PB_BODY_NOT_ASSIGNED");
788 else if (contentItemIndex == DETAIL_PROPERTY_RINGTONE)
790 String path = __pPresentationModel->GetValue(DETAIL_PROPERTY_RINGTONE);
792 path.LastIndexOf(L"/", path.GetLength() - 1, index);
796 path.SubString(index + 1, value);
800 Label* pValueLabel = static_cast<Label*>(pItem->GetControl(2));
801 if (pValueLabel == null)
806 pValueLabel->SetText(value);
807 pValueLabel->Invalidate(false);
811 ContactDetailsForm::GetDefaultItemHeight(void)
817 ContactDetailsForm::AddMainInfo(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem)
819 int itemHeight = Y_THUMBNAIL;
821 Label* pThumbnailLabel = null;
823 String thumbnailPath = __pPresentationModel->GetValue(DETAIL_PROPERTY_THUMBNAIL);
824 Bitmap* pThumbnail = null;
825 ImageBuffer thumbnailImageBuffer;
826 result r = thumbnailImageBuffer.Construct(thumbnailPath);
829 pThumbnail = thumbnailImageBuffer.GetBitmapN(BITMAP_PIXEL_FORMAT_ARGB8888, BUFFER_SCALING_NONE);
831 if (pThumbnail != null)
833 pThumbnail->SetScalingQuality(BITMAP_SCALING_QUALITY_HIGH);
834 pThumbnail->Scale(Dimension(H_THUMBNAIL, H_THUMBNAIL));
835 pThumbnailLabel = new (std::nothrow) Label();
836 pThumbnailLabel->Construct(Rectangle((itemWidth - H_THUMBNAIL) / 2, Y_THUMBNAIL, H_THUMBNAIL, H_THUMBNAIL), L"");
837 pThumbnailLabel->SetBackgroundBitmap(*pThumbnail);
840 itemHeight += (H_THUMBNAIL + Y_THUMBNAIL);
843 String firstName = __pPresentationModel->GetValue(DETAIL_PROPERTY_FIRST_NAME);
844 String middleName = __pPresentationModel->GetValue(DETAIL_PROPERTY_MIDDLE_NAME);
845 String lastName = __pPresentationModel->GetValue(DETAIL_PROPERTY_LAST_NAME);
846 String nickName = __pPresentationModel->GetValue(DETAIL_PROPERTY_NICK_NAME);
847 String suffix = __pPresentationModel->GetValue(DETAIL_PROPERTY_NAME_SUFFIX);
848 String jobTitle = __pPresentationModel->GetValue(DETAIL_PROPERTY_JOB_TITLE);
849 String company = __pPresentationModel->GetValue(DETAIL_PROPERTY_COMPANY);
850 String department = __pPresentationModel->GetValue(DETAIL_PROPERTY_DEPARTMENT);
853 if (firstName.IsEmpty() == false)
855 name = firstName + CHARACTER_SPACE;
857 if (middleName.IsEmpty() == false)
859 name += (middleName + CHARACTER_SPACE);
861 if (lastName.IsEmpty() == false)
868 if (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER))
870 name.Append(__pPresentationModel->GetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER));
874 name.Append(__pPresentationModel->GetValue(DETAIL_PROPERTY_EMAIL, 0));
878 String suffixNickName;
879 if (suffix.IsEmpty() == false)
881 suffixNickName = suffix + CHARACTER_SPACE;
883 if (nickName.IsEmpty() == false)
885 suffixNickName += nickName;
889 if (jobTitle.IsEmpty() == false)
891 companyInfo = jobTitle + CHARACTER_SPACE;
893 if (company.IsEmpty() == false)
895 companyInfo += company + CHARACTER_SPACE;
897 if (department.IsEmpty() == false)
899 companyInfo += department;
902 Label* pNameLabel = null;
903 Label* pFavoriteLabel = null;
904 if (name.IsEmpty() == false)
906 pNameLabel = new (std::nothrow) Label();
907 pNameLabel->Construct(Rectangle(X_MAIN_INFO, itemHeight, itemWidth - (X_MAIN_INFO + H_FAVORITE + W_FAVORITE_GAP * 2), H_NAME), name);
908 pNameLabel->SetTextConfig(FONT_SIZE_NAME, LABEL_TEXT_STYLE_BOLD);
909 pNameLabel->SetTextColor(COLOR_NAME);
910 pNameLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
911 pNameLabel->SetTextVerticalAlignment(ALIGNMENT_TOP);
913 if (__appControlViewType.Equals(VALUE_VIEW_TYPE_VCF, false) == false)
915 pFavoriteLabel = new (std::nothrow) Label();
916 pFavoriteLabel->Construct(Rectangle(itemWidth - (H_FAVORITE + W_FAVORITE_GAP * 2), itemHeight + Y_FAVORITE, H_FAVORITE, H_FAVORITE), L"");
917 pFavoriteLabel->SetName(FAVORITE_LABEL);
918 pFavoriteLabel->AddTouchEventListener(*this);
920 Bitmap* pBitmap = null;
921 if (__pPresentationModel->IsFavorite())
923 pBitmap = ResourceManager::GetBitmapN(IDB_DETAILS_FAVORITE_ON);
927 pBitmap = ResourceManager::GetBitmapN(IDB_DETAILS_FAVORITE_OFF);
932 pFavoriteLabel->SetBackgroundBitmap(*pBitmap);
937 itemHeight += H_NAME;
940 Label* pSuffixNickNameLabel = null;
941 if (suffixNickName.IsEmpty() == false)
943 pSuffixNickNameLabel = new (std::nothrow) Label();
944 pSuffixNickNameLabel->Construct(Rectangle(X_MAIN_INFO, itemHeight, itemWidth - X_MAIN_INFO, H_SUB_INFO), suffixNickName);
945 pSuffixNickNameLabel->SetTextConfig(FONT_SIZE_SUB_INFO, LABEL_TEXT_STYLE_NORMAL);
946 pSuffixNickNameLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
947 pSuffixNickNameLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
948 itemHeight += (H_SUB_INFO + H_SUB_INFO_DIVIDER);
951 Label* pCompanyInfoLabel = null;
952 if (companyInfo.IsEmpty() == false)
954 pCompanyInfoLabel = new (std::nothrow) Label();
955 pCompanyInfoLabel->Construct(Rectangle(X_MAIN_INFO, itemHeight, itemWidth - X_MAIN_INFO, H_SUB_INFO), companyInfo);
956 pCompanyInfoLabel->SetTextConfig(FONT_SIZE_SUB_INFO, LABEL_TEXT_STYLE_NORMAL);
957 pCompanyInfoLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
958 pCompanyInfoLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
959 itemHeight += (H_SUB_INFO + H_SUB_INFO_DIVIDER);
962 Label* pDefaultNumberLabel = null;
963 Button* pCallButton = null;
964 Button* pMessageButton = null;
965 #if __SUPPORT_VIDEO_CALL
966 Button* pVideoCallButton = null;
969 String defaultPhoneNumber = __pPresentationModel->GetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER);
970 if (defaultPhoneNumber.IsEmpty() == false)
972 pDefaultNumberLabel = new (std::nothrow) Label();
973 pDefaultNumberLabel->Construct(Rectangle(X_MAIN_INFO, itemHeight, itemWidth - X_MAIN_INFO, H_DEFAULT_NUMBER), defaultPhoneNumber);
974 pDefaultNumberLabel->SetTextConfig(FONT_SIZE_MAIN_TEXT, LABEL_TEXT_STYLE_BOLD);
975 pDefaultNumberLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
976 pDefaultNumberLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
977 itemHeight += (H_DEFAULT_NUMBER + H_QUICK_BUTTON_DIVIDER);
979 Bitmap* pBgNormal = ResourceManager::GetBitmapN(IDB_CIRCLE_BUTTON_NORMAL);
980 Bitmap* pBgPressed = ResourceManager::GetBitmapN(IDB_CIRCLE_BUTTON_PRESSED);
981 Bitmap* pCallNormal = ResourceManager::GetBitmapN(IDB_CALL_NORMAL);
982 Bitmap* pCallPressed = ResourceManager::GetBitmapN(IDB_CALL_PRESSED);
983 Bitmap* pMessageNormal = ResourceManager::GetBitmapN(IDB_SMS_NORMAL);
984 Bitmap* pMessagePressed = ResourceManager::GetBitmapN(IDB_SMS_PRESSED);
985 Bitmap* pVideoCallNormal = ResourceManager::GetBitmapN(IDB_VIDEO_CALL_NORMAL);
986 Bitmap* pVideoCallPressed = ResourceManager::GetBitmapN(IDB_VIDEO_CALL_PRESSED);
988 pCallButton = new (std::nothrow) Button();
989 pCallButton->Construct(Rectangle(X_QUICK_BUTTON, itemHeight, H_QUICK_BUTTON, H_QUICK_BUTTON));
990 pCallButton->SetActionId(IDA_VOICE_CALL);
991 pCallButton->AddActionEventListener(*this);
992 if (pBgNormal != null)
994 pCallButton->SetNormalBackgroundBitmap(*pBgNormal);
996 if (pBgPressed != null)
998 pCallButton->SetPressedBackgroundBitmap(*pBgPressed);
1000 if (pCallNormal != null)
1002 pCallButton->SetNormalBitmap(Point(0, 0), *pCallNormal);
1004 if (pCallPressed != null)
1006 pCallButton->SetPressedBitmap(Point(0, 0), *pCallPressed);
1009 pMessageButton = new (std::nothrow) Button();
1010 pMessageButton->Construct(Rectangle((X_QUICK_BUTTON + H_QUICK_BUTTON + W_QUICK_BUTTON_GAP), itemHeight, H_QUICK_BUTTON, H_QUICK_BUTTON));
1011 pMessageButton->SetActionId(IDA_MESSAGE);
1012 pMessageButton->AddActionEventListener(*this);
1013 if (pBgNormal != null)
1015 pMessageButton->SetNormalBackgroundBitmap(*pBgNormal);
1017 if (pBgPressed != null)
1019 pMessageButton->SetPressedBackgroundBitmap(*pBgPressed);
1021 if (pMessageNormal != null)
1023 pMessageButton->SetNormalBitmap(Point(0, 0), *pMessageNormal);
1025 if (pMessagePressed != null)
1027 pMessageButton->SetPressedBitmap(Point(0, 0), *pMessagePressed);
1029 #if __SUPPORT_VIDEO_CALL
1030 pVideoCallButton = new (std::nothrow) Button();
1031 pVideoCallButton->Construct(Rectangle((X_QUICK_BUTTON + (H_QUICK_BUTTON * 2) + (W_QUICK_BUTTON_GAP * 2)), itemHeight, H_QUICK_BUTTON, H_QUICK_BUTTON));
1032 pVideoCallButton->SetActionId(IDA_VIDEO_CALL);
1033 pVideoCallButton->AddActionEventListener(*this);
1034 if (pBgNormal != null)
1036 pVideoCallButton->SetNormalBackgroundBitmap(*pBgNormal);
1038 if (pBgPressed != null)
1040 pVideoCallButton->SetPressedBackgroundBitmap(*pBgPressed);
1042 if (pVideoCallNormal != null)
1044 pVideoCallButton->SetNormalBitmap(Point(0, 0), *pVideoCallNormal);
1046 if (pVideoCallPressed != null)
1048 pVideoCallButton->SetPressedBitmap(Point(0, 0), *pVideoCallPressed);
1055 delete pCallPressed;
1056 delete pMessageNormal;
1057 delete pMessagePressed;
1058 delete pVideoCallNormal;
1059 delete pVideoCallPressed;
1061 itemHeight += (H_QUICK_BUTTON + H_QUICK_BUTTON_DIVIDER);
1065 itemHeight += H_QUICK_BUTTON_DIVIDER;
1068 pItem->Construct(Dimension(itemWidth, itemHeight));
1069 pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
1070 pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
1072 if (pThumbnailLabel != null)
1074 pItem->AddControl(pThumbnailLabel);
1076 if (pNameLabel != null)
1078 pItem->AddControl(pNameLabel);
1080 if (pFavoriteLabel != null)
1082 pItem->AddControl(pFavoriteLabel);
1084 if (pSuffixNickNameLabel != null)
1086 pItem->AddControl(pSuffixNickNameLabel);
1088 if (pCompanyInfoLabel != null)
1090 pItem->AddControl(pCompanyInfoLabel);
1092 if (pDefaultNumberLabel != null)
1094 pItem->AddControl(pDefaultNumberLabel);
1096 #if __SUPPORT_VIDEO_CALL
1097 if (pCallButton != null && pMessageButton != null && pVideoCallButton != null)
1099 pItem->AddControl(pCallButton);
1100 pItem->AddControl(pMessageButton);
1101 pItem->AddControl(pVideoCallButton);
1104 if (pCallButton != null && pMessageButton != null)
1106 pItem->AddControl(pCallButton);
1107 pItem->AddControl(pMessageButton);
1113 ContactDetailsForm::AddProperty(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, int detailProperty, int itemSubIndex)
1119 int itemHeight = H_ITEM_DOUBLE_LINE;
1120 int valueCount = __pPresentationModel->GetMultiValuesCount(static_cast<DetailProperty>(detailProperty));
1122 ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
1123 if (detailProperty != DETAIL_PROPERTY_PHONE_NUMBER && valueCount > 1)
1125 pItem->Construct(Dimension(itemWidth, H_ITEM_DOUBLE_LINE + pContactsApp->GetFontHeightOffset() + ((H_ADDITIONAL_ITEM + pContactsApp->GetFontHeightOffset()) * (valueCount - 1))), TABLE_VIEW_ANNEX_STYLE_NORMAL);
1126 CreateTitleValueTypeItem(itemWidth, pItem, detailProperty);
1131 switch (detailProperty)
1133 case DETAIL_PROPERTY_PHONE_NUMBER:
1135 type = __pPresentationModel->GetType(DETAIL_PROPERTY_PHONE_NUMBER, itemSubIndex);
1136 value = __pPresentationModel->GetValue(DETAIL_PROPERTY_PHONE_NUMBER, itemSubIndex);
1138 pItem->Construct(Dimension(itemWidth, H_ITEM + pContactsApp->GetFontHeightOffset()), TABLE_VIEW_ANNEX_STYLE_NORMAL);
1139 pItem->SetName(value);
1141 CreateValueTypeItem(itemWidth, pItem, value, type);
1146 case DETAIL_PROPERTY_EMAIL:
1148 title = ResourceManager::GetString(L"IDS_COM_BODY_EMAIL");
1149 type = __pPresentationModel->GetType(static_cast<DetailProperty>(detailProperty), 0);
1150 value = __pPresentationModel->GetValue(static_cast<DetailProperty>(detailProperty), 0);
1153 case DETAIL_PROPERTY_ADDRESS:
1155 title = ResourceManager::GetString(L"IDS_PB_BODY_ADDRESS");
1156 type = __pPresentationModel->GetType(static_cast<DetailProperty>(detailProperty), 0);
1157 value = __pPresentationModel->GetValue(static_cast<DetailProperty>(detailProperty), 0);
1160 case DETAIL_PROPERTY_IM_ADDRESS:
1162 title = ResourceManager::GetString(L"IDS_PB_HEADER_INSTANT_MESSENGER_ABB");
1163 type = __pPresentationModel->GetType(static_cast<DetailProperty>(detailProperty), 0);
1164 value = __pPresentationModel->GetValue(static_cast<DetailProperty>(detailProperty), 0);
1167 case DETAIL_PROPERTY_URL:
1169 title = ResourceManager::GetString(L"IDS_PB_BODY_URL");
1170 type = __pPresentationModel->GetType(static_cast<DetailProperty>(detailProperty), 0);
1171 value = __pPresentationModel->GetValue(static_cast<DetailProperty>(detailProperty), 0);
1174 case DETAIL_PROPERTY_BIRTHDAY:
1176 title = ResourceManager::GetString(L"IDS_PB_BODY_BIRTHDAY");
1177 value = __pPresentationModel->GetValue(DETAIL_PROPERTY_BIRTHDAY);
1180 case DETAIL_PROPERTY_NOTE:
1182 pItem->Construct(Dimension(itemWidth, itemHeight + pContactsApp->GetFontHeightOffset()), TABLE_VIEW_ANNEX_STYLE_NORMAL);
1183 CreateNoteItem(itemWidth, pItem);
1192 pItem->Construct(Dimension(itemWidth, itemHeight + pContactsApp->GetFontHeightOffset()), TABLE_VIEW_ANNEX_STYLE_NORMAL);
1193 CreateTitleValueTypeItem(itemWidth, pItem, title, value, type, lineCount);
1197 ContactDetailsForm::AddGroup(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem)
1199 ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
1201 pItem->Construct(Dimension(itemWidth, H_ITEM_DOUBLE_LINE + pContactsApp->GetFontHeightOffset()), TABLE_VIEW_ANNEX_STYLE_NORMAL);
1202 pItem->SetName(Integer::ToString(DETAIL_PROPERTY_GROUP));
1204 String title = ResourceManager::GetString(L"IDS_PB_BODY_GROUPS");
1205 String value = __pPresentationModel->GetValue(DETAIL_PROPERTY_GROUP);
1207 if (value.IsEmpty())
1209 value = ResourceManager::GetString(L"IDS_PB_BODY_NOT_ASSIGNED");
1212 AddGroupStylePanel(itemWidth, pItem, GROUP_STYLE_TOP);
1214 CreateTitleValueTypeItem(itemWidth, pItem, title, value);
1218 ContactDetailsForm::AddRingTone(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem)
1220 ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
1222 pItem->Construct(Dimension(itemWidth, H_ITEM_DOUBLE_LINE + pContactsApp->GetFontHeightOffset()), TABLE_VIEW_ANNEX_STYLE_NORMAL);
1223 pItem->SetName(Integer::ToString(DETAIL_PROPERTY_RINGTONE));
1225 String title = ResourceManager::GetString(L"IDS_PB_BODY_RINGTONE");
1226 String value = __pPresentationModel->GetValue(DETAIL_PROPERTY_RINGTONE);
1230 value.LastIndexOf(L"/", value.GetLength() - 1, index);
1234 value.SubString(index + 1, trimmedPath);
1237 AddGroupStylePanel(itemWidth, pItem, GROUP_STYLE_BOTTOM);
1239 CreateTitleValueTypeItem(itemWidth, pItem, title, trimmedPath);
1241 if (__appControlViewType.Equals(VALUE_VIEW_TYPE_VCF, false) == false)
1243 Button* pClearButton = new (std::nothrow) Button();
1244 pClearButton->Construct(Rectangle(itemWidth - H_ICON - W_TEXT_MARGIN, (H_ITEM_DOUBLE_LINE + pContactsApp->GetFontHeightOffset() - H_ICON) / 2, H_ICON, H_ICON));
1245 pClearButton->SetActionId(IDA_BUTTON_RINGTONE_CLEAR);
1246 pClearButton->AddActionEventListener(*this);
1248 Bitmap* pReset = ResourceManager::GetBitmapN(IDB_DETAILS_RESET_NORMAL);
1251 pClearButton->SetNormalBitmap(Point(0, 0), *pReset);
1254 pReset = ResourceManager::GetBitmapN(IDB_DETAILS_RESET_PRESSED);
1257 pClearButton->SetPressedBitmap(Point(0, 0), *pReset);
1261 pItem->AddControl(pClearButton);
1262 pItem->SetIndividualSelectionEnabled(pClearButton, true);
1267 ContactDetailsForm::AddShareButtons(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem)
1269 pItem->Construct(Dimension(itemWidth, H_BUTTON_CONTAINER));
1271 int buttonWidth = itemWidth - W_BUTTON_GAP * 2;
1273 Button* pSendNameButton = new (std::nothrow) Button();
1274 pSendNameButton->Construct(Rectangle(W_BUTTON_GAP, Y_BUTTON, buttonWidth, H_BUTTON), ResourceManager::GetString(L"IDS_PB_HEADER_SEND_NAMECARD"));
1275 pSendNameButton->SetActionId(IDA_BUTTON_SHARE_NAME_CARD);
1276 pSendNameButton->AddActionEventListener(*this);
1277 pItem->AddControl(pSendNameButton);
1281 ContactDetailsForm::CreateValueTypeItem(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, const Tizen::Base::String& value, const Tizen::Base::String& type)
1283 ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
1284 pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
1285 pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
1287 Label* pValueLabel = new (std::nothrow) Label();
1288 pValueLabel->Construct(Rectangle(W_TEXT_MARGIN, 0, itemWidth - W_TEXT_MARGIN * 2 - W_TYPE, H_ITEM + pContactsApp->GetFontHeightOffset()), value);
1289 pValueLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
1290 pValueLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
1291 pValueLabel->SetTextConfig(pContactsApp->GetFontSize(), LABEL_TEXT_STYLE_NORMAL);
1292 pValueLabel->SetTextColor(COLOR_OTHER_NUMBER);
1293 pItem->AddControl(pValueLabel);
1295 Label* pTypeLabel = new (std::nothrow) Label();
1296 pTypeLabel->Construct(Rectangle((itemWidth - W_TEXT_MARGIN - W_TYPE), 0, W_TYPE, H_ITEM + pContactsApp->GetFontHeightOffset()), type);
1297 pTypeLabel->SetTextHorizontalAlignment(ALIGNMENT_RIGHT);
1298 pTypeLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
1299 pTypeLabel->SetTextConfig(FONT_SIZE_SUB_TEXT, LABEL_TEXT_STYLE_BOLD);
1300 pTypeLabel->SetTextColor(COLOR_ITEM_TYPE);
1301 pItem->AddControl(pTypeLabel);
1305 ContactDetailsForm::CreateTitleValueTypeItem(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, const Tizen::Base::String& title, const Tizen::Base::String& value, const Tizen::Base::String& type, int lineCount)
1307 int valueWidth = itemWidth - (W_TEXT_MARGIN * 2);
1309 ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
1311 pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
1312 pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
1314 Label* pTitleLabel = new (std::nothrow) Label();
1315 pTitleLabel->Construct(Rectangle(W_TEXT_MARGIN, Y_ITEM_TITLE, itemWidth - W_TEXT_MARGIN, H_ITEM_TITLE), title);
1316 pTitleLabel->SetName(GROUP_LABEL);
1317 pTitleLabel->AddTouchEventListener(*this);
1318 pTitleLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
1319 pTitleLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
1320 pTitleLabel->SetTextConfig(FONT_SIZE_SUB_TEXT, LABEL_TEXT_STYLE_BOLD);
1321 pTitleLabel->SetTextColor(COLOR_ITEM_TITLE);
1322 pItem->AddControl(pTitleLabel);
1324 if (type.IsEmpty() == false)
1326 Label* pTypeLabel = new (std::nothrow) Label();
1327 pTypeLabel->Construct(Rectangle((itemWidth - W_TEXT_MARGIN - W_TYPE), Y_ITEM_TITLE + H_ITEM_TITLE, W_TYPE, H_ITEM_VALUE), type);
1328 pTypeLabel->SetName(GROUP_LABEL);
1329 pTypeLabel->AddTouchEventListener(*this);
1330 pTypeLabel->SetTextHorizontalAlignment(ALIGNMENT_RIGHT);
1331 pTypeLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
1332 pTypeLabel->SetTextConfig(FONT_SIZE_SUB_TEXT, LABEL_TEXT_STYLE_BOLD);
1333 pTypeLabel->SetTextColor(COLOR_ITEM_TYPE);
1334 pItem->AddControl(pTypeLabel);
1336 valueWidth = itemWidth - (W_TEXT_MARGIN * 2) - W_TYPE;
1338 else if (title.Equals(ResourceManager::GetString(L"IDS_PB_BODY_RINGTONE"), false))
1340 valueWidth = itemWidth - (W_TEXT_MARGIN * 2) - H_ICON;
1343 Label* pValueLabel = new (std::nothrow) Label();
1344 pValueLabel->Construct(Rectangle(W_TEXT_MARGIN, Y_ITEM_TITLE + H_ITEM_TITLE, valueWidth, (H_ITEM_VALUE + pContactsApp->GetFontHeightOffset()) * lineCount), value);
1345 pValueLabel->SetName(GROUP_LABEL);
1346 pValueLabel->AddTouchEventListener(*this);
1347 pValueLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
1348 pValueLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
1349 pValueLabel->SetTextConfig(pContactsApp->GetFontSize(), LABEL_TEXT_STYLE_NORMAL);
1350 pValueLabel->SetTextColor(COLOR_ITEM_VALUE);
1351 pItem->AddControl(pValueLabel);
1355 ContactDetailsForm::CreateTitleValueTypeItem(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, int detailProperty)
1358 ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
1360 pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
1361 pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
1363 switch (detailProperty)
1365 case DETAIL_PROPERTY_EMAIL:
1367 title = ResourceManager::GetString(L"IDS_COM_BODY_EMAIL");
1370 case DETAIL_PROPERTY_ADDRESS:
1372 title = ResourceManager::GetString(L"IDS_PB_BODY_ADDRESS");
1375 case DETAIL_PROPERTY_URL:
1377 title = ResourceManager::GetString(L"IDS_PB_BODY_URL");
1380 case DETAIL_PROPERTY_IM_ADDRESS:
1382 title = ResourceManager::GetString(L"IDS_PB_HEADER_INSTANT_MESSENGER_ABB");
1389 Label* pTitleLabel = new (std::nothrow) Label();
1390 pTitleLabel->Construct(Rectangle(W_TEXT_MARGIN, Y_ITEM_TITLE, itemWidth - W_TEXT_MARGIN, H_ITEM_TITLE), title);
1391 pTitleLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
1392 pTitleLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
1393 pTitleLabel->SetTextConfig(FONT_SIZE_SUB_TEXT, LABEL_TEXT_STYLE_BOLD);
1394 pTitleLabel->SetTextColor(COLOR_ITEM_TITLE);
1395 pItem->AddControl(pTitleLabel);
1397 for (int i = 0; i < __pPresentationModel->GetMultiValuesCount(static_cast<DetailProperty>(detailProperty)); i++)
1399 String type = __pPresentationModel->GetType(static_cast<DetailProperty>(detailProperty), i);
1400 String value = __pPresentationModel->GetValue(static_cast<DetailProperty>(detailProperty), i);
1402 int valueWidth = itemWidth - (W_TEXT_MARGIN * 2);
1403 if (type.IsEmpty() == false)
1405 Label* pTypeLabel = new (std::nothrow) Label();
1406 pTypeLabel->Construct(Rectangle((itemWidth - W_TEXT_MARGIN - W_TYPE), (H_ADDITIONAL_ITEM + pContactsApp->GetFontHeightOffset())/2 + H_ITEM_TITLE + ((H_ADDITIONAL_ITEM + pContactsApp->GetFontHeightOffset()) * i), W_TYPE, H_ITEM_VALUE), type);
1407 pTypeLabel->SetTextHorizontalAlignment(ALIGNMENT_RIGHT);
1408 pTypeLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
1409 pTypeLabel->SetTextConfig(FONT_SIZE_SUB_TEXT, LABEL_TEXT_STYLE_BOLD);
1410 pTypeLabel->SetTextColor(COLOR_ITEM_TYPE);
1411 pItem->AddControl(pTypeLabel);
1413 valueWidth = itemWidth - (W_TEXT_MARGIN * 2) - W_TYPE;
1416 Label* pValueLabel = new (std::nothrow) Label();
1417 pValueLabel->Construct(Rectangle(W_TEXT_MARGIN, Y_ITEM_TITLE + H_ITEM_TITLE + ((H_ADDITIONAL_ITEM + pContactsApp->GetFontHeightOffset()) * i), valueWidth, H_ITEM_VALUE + pContactsApp->GetFontHeightOffset()), value);
1418 pValueLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
1419 pValueLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
1420 pValueLabel->SetTextConfig(pContactsApp->GetFontSize(), LABEL_TEXT_STYLE_NORMAL);
1421 pValueLabel->SetTextColor(COLOR_ITEM_VALUE);
1422 pItem->AddControl(pValueLabel);
1427 ContactDetailsForm::CreateNoteItem(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem)
1429 ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
1431 pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
1432 pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
1434 String title = ResourceManager::GetString(L"IDS_PB_BODY_NOTE");
1435 String value = __pPresentationModel->GetValue(DETAIL_PROPERTY_NOTE);
1437 Label* pTitleLabel = new (std::nothrow) Label();
1438 pTitleLabel->Construct(Rectangle(W_TEXT_MARGIN, Y_ITEM_TITLE, itemWidth - W_TEXT_MARGIN, H_ITEM_TITLE), title);
1439 pTitleLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
1440 pTitleLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
1441 pTitleLabel->SetTextConfig(FONT_SIZE_SUB_TEXT, LABEL_TEXT_STYLE_BOLD);
1442 pTitleLabel->SetTextColor(COLOR_ITEM_TITLE);
1443 pItem->AddControl(pTitleLabel);
1445 Label* pValueLabel = new (std::nothrow) Label();
1446 pValueLabel->Construct(Rectangle(W_TEXT_MARGIN, Y_ITEM_TITLE + H_ITEM_TITLE, itemWidth - (W_TEXT_MARGIN * 2), H_ITEM_VALUE), value);
1447 pValueLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
1448 pValueLabel->SetTextVerticalAlignment(ALIGNMENT_TOP);
1449 pValueLabel->SetTextConfig(pContactsApp->GetFontSize(), LABEL_TEXT_STYLE_NORMAL);
1450 pValueLabel->SetTextColor(COLOR_ITEM_VALUE);
1451 pItem->AddControl(pValueLabel);
1454 font.Construct(FONT_STYLE_PLAIN, pContactsApp->GetFontSize());
1456 TextElement* pNameElement = new (std::nothrow) TextElement();
1457 pNameElement->Construct(value);
1458 pNameElement->SetFont(font);
1460 EnrichedText* pEnrichedText = new (std::nothrow) EnrichedText();
1461 pEnrichedText->Construct(Dimension(itemWidth - (W_TEXT_MARGIN * 2) - (pValueLabel->GetLeftMargin() * 2), H_ITEM_VALUE));
1462 pEnrichedText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
1463 pEnrichedText->SetTextAbbreviationEnabled(false);
1464 pEnrichedText->Add(*pNameElement);
1466 pValueLabel->SetSize(pValueLabel->GetWidth(), pEnrichedText->GetTotalLineHeight() + pValueLabel->GetTopMargin());
1467 pItem->SetSize(itemWidth, (Y_ITEM_TITLE * 2) + H_ITEM_TITLE + pEnrichedText->GetTotalLineHeight());
1469 pEnrichedText->RemoveAllTextElements(true);
1470 delete pEnrichedText;
1474 ContactDetailsForm::OnTableViewItemStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status)
1476 SceneManager* pSceneManager = SceneManager::GetInstance();
1478 if (status == TABLE_VIEW_ITEM_STATUS_SELECTED)
1480 String itemName = pItem->GetName();
1482 if (itemName.Equals(Integer::ToString(DETAIL_PROPERTY_GROUP), true) == true)
1484 if (__appControlViewType.Equals(VALUE_VIEW_TYPE_VCF, false) == true)
1489 if (__pPresentationModel->GetCategoryCount() > 0)
1491 IList* pCategoryList = __pPresentationModel->GetAssignedCategoryIdListN();
1493 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_SELECTOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pCategoryList);
1497 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT));
1500 else if (itemName.Equals(Integer::ToString(DETAIL_PROPERTY_RINGTONE), true) == true)
1502 if (__appControlViewType.Equals(VALUE_VIEW_TYPE_VCF, false) == true)
1507 result r = LaunchAppControl(PROVIDER_ID_FILEMANAGER, OPERATION_ID_PICK);
1508 TryReturnVoid(r == E_SUCCESS, "[%s] Unable to launch appcontrol", GetErrorMessage(r));
1510 else if (itemName.IsEmpty() == false)
1512 if (__isAppControlLaunching == true)
1517 itemPoint.x = GetClientAreaBounds().width / 2;
1518 itemPoint.y = GetClientAreaBounds().y + pItem->GetY() + (pItem->GetHeight() / 2) - __scrolledDistance;
1520 __pContextMenuCall->SetName(itemName);
1521 __pContextMenuCall->SetAnchorPosition(itemPoint);
1522 __pContextMenuCall->SetShowState(true);
1523 __pContextMenuCall->Show();
1529 ContactDetailsForm::OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated)
1534 ContactDetailsForm::OnTableViewItemReordered(Tizen::Ui::Controls::TableView& tableView, int itemIndexFrom, int itemIndexTo)
1539 ContactDetailsForm::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo & touchInfo)
1541 if (source.GetName().Equals(GROUP_STYLE_PANEL, true))
1543 Panel* pPanel = static_cast<Panel*>(&const_cast<Control&>(source));
1544 pPanel->SetBackgroundColor(COLOR_PRESSED);
1546 else if (source.GetName().Equals(GROUP_LABEL, true))
1548 Panel* pPanel = static_cast<Panel*>(source.GetParent()->GetControl(GROUP_STYLE_PANEL));
1551 pPanel->SetBackgroundColor(COLOR_PRESSED);
1557 ContactDetailsForm::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
1559 if (source.GetName().Equals(GROUP_STYLE_PANEL, true))
1561 Panel* pPanel = static_cast<Panel*>(&const_cast<Control&>(source));
1562 pPanel->SetBackgroundColor(COLOR_GROUP_STYLE);
1564 else if (source.GetName().Equals(GROUP_LABEL, true))
1566 Panel* pPanel = static_cast<Panel*>(source.GetParent()->GetControl(GROUP_STYLE_PANEL));
1569 pPanel->SetBackgroundColor(COLOR_GROUP_STYLE);
1572 else if (source.GetName().Equals(FAVORITE_LABEL, true))
1574 Label* pLabel = static_cast<Label*>(&const_cast<Control&>(source));
1580 __pPresentationModel->SetAsFavorite(!__pPresentationModel->IsFavorite());
1582 Bitmap* pBitmap = null;
1583 if (__pPresentationModel->IsFavorite())
1585 pBitmap = ResourceManager::GetBitmapN(IDB_DETAILS_FAVORITE_ON);
1589 pBitmap = ResourceManager::GetBitmapN(IDB_DETAILS_FAVORITE_OFF);
1592 if (pBitmap != null)
1594 pLabel->SetBackgroundBitmap(*pBitmap);
1597 pLabel->Invalidate(false);
1602 ContactDetailsForm::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
1607 ContactDetailsForm::OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
1612 ContactDetailsForm::OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
1617 ContactDetailsForm::OnTouchCanceled(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
1622 ContactDetailsForm::OnFileEventOccured(const unsigned long events, const Tizen::Base::String &path, const unsigned int eventId)
1624 AppLogDebug("Kamesh: OnFileEventOccured");
1625 AppLogDebug("Kamesh: path = %ls", path.GetPointer());
1626 String ringtonePath = __pPresentationModel->GetValue(DETAIL_PROPERTY_RINGTONE);
1627 AppLogDebug("Kamesh: ringtonePath = %ls", ringtonePath.GetPointer());
1628 if (ringtonePath.Equals(ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT"), false) == true )
1630 __pTableView->RefreshItem(__pItemList->GetCount() - 1, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
1635 ContactDetailsForm::OnScrollEndReached (Tizen::Ui::Control &source, Tizen::Ui::Controls::ScrollEndEvent type)
1640 ContactDetailsForm::OnScrollPositionChanged (Tizen::Ui::Control &source, int scrollPos)
1642 __scrolledDistance = scrollPos;
1646 ContactDetailsForm::OnScrollStopped (Tizen::Ui::Control &source)
1651 ContactDetailsForm::OnContactsChanged(void)
1653 if (__pPresentationModel->IsContactRemoved())
1655 if (__appControlViewType.IsEmpty() == true)
1657 SceneManager* pSceneManager = SceneManager::GetInstance();
1659 result r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
1660 TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go backward", GetErrorMessage(r));
1664 UiApp::GetInstance()->Terminate();
1669 ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
1670 TryReturnVoid(pContactsApp != null, "Unable to get ContactsApp instance.");
1672 if (pContactsApp->GetAppUiState() == APP_UI_STATE_BACKGROUND)
1674 InitializeDetailItemList();
1675 __pTableView->UpdateTableView();
1679 delete __pDefaultSelectorPopup;
1680 __pDefaultSelectorPopup = null;
1684 ContactDetailsForm::OnCategoriesChanged(void)
1689 ContactDetailsForm::LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, const Tizen::Base::String& launchType, const Tizen::Base::String& value)
1691 result r = E_SUCCESS;
1693 if (__pAppControl != null)
1701 extraData.Construct();
1702 IAppControlResponseListener* pEvent = null;
1704 if (appId.Equals(String(PROVIDER_ID_PHONE)) && operationId.Equals(String(OPERATION_ID_CALL)))
1706 uri.Append(INPUT_URI_TEL);
1708 if (value.IsEmpty())
1710 uri.Append(__pPresentationModel->GetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER));
1717 extraData.Add(new (std::nothrow) String(INPUT_KEY_CALL_TYPE), new (std::nothrow) String(launchType));
1719 else if (appId.Equals(String(PROVIDER_ID_MESSAGE)) && operationId.Equals(String(OPERATION_ID_COMPOSE)))
1721 String recipientAddress;
1723 if (value.IsEmpty())
1725 recipientAddress.Append(__pPresentationModel->GetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER));
1729 recipientAddress.Append(value);
1731 extraData.Add(new (std::nothrow) String(INPUT_KEY_MESSAGE_TO), new (std::nothrow) String(recipientAddress));
1732 extraData.Add(new (std::nothrow) String(INPUT_KEY_MESSAGE_TYPE), new (std::nothrow) String(INPUT_TYPE_SMS));
1734 else if (appId.Equals(String(PROVIDER_ID_FILEMANAGER)) && operationId.Equals(String(OPERATION_ID_PICK)))
1736 mimeType.Append(INPUT_MIME_TYPE_AUDIO);
1737 extraData.Add(new (std::nothrow) String(INPUT_KEY_SELECTION_MODE), new (std::nothrow) String(INPUT_DATA_SELECTION_MODE_SINGLE));
1741 else if (appId.Equals(String(PROVIDER_ID_EMAIL)) && operationId.Equals(String(OPERATION_ID_COMPOSE)))
1743 ArrayList* pArgList = new (std::nothrow) ArrayList();
1744 pArgList->Construct();
1746 pArgList->Add(new (std::nothrow) String(__pPresentationModel->GetValue(DETAIL_PROPERTY_EMAIL, 0)));
1747 extraData.Add(new (std::nothrow) String(INPUT_KEY_MESSAGE_TO), pArgList);
1750 __pAppControl = AppManager::FindAppControlN(appId, operationId);
1752 if (__pAppControl != null)
1754 r = __pAppControl->Start(&uri, &mimeType, &extraData, pEvent);
1755 TryCatch(r == E_SUCCESS, , "[%s] Unable to launch app control", GetErrorMessage(r));
1757 __isAppControlLaunching = true;
1759 if (operationId.Equals(String(OPERATION_ID_PICK)))
1765 Footer* pFooter = GetFooter();
1766 pFooter->SetEnabled(false);
1770 extraData.RemoveAll(true);
1775 ContactDetailsForm::OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData)
1777 AppLogDebug("ENTER");
1782 if (pExtraData == null)
1787 if (appId.Equals(String(PROVIDER_ID_FILEMANAGER)) && operationId.Equals(String(OPERATION_ID_PICK)))
1789 if (appControlResult == APP_CTRL_RESULT_SUCCEEDED)
1791 const String *pResultString = null;
1792 const ArrayList* pResultList = dynamic_cast<const ArrayList*>(pExtraData->GetValue(String(OUTPUT_KEY_SELECTED)));
1793 if (pResultList != null)
1795 pResultString = static_cast<const String*>(pResultList->GetAt(0));
1799 pResultString = static_cast<const String*>(pExtraData->GetValue(String(OUTPUT_KEY_SELECTED)));
1802 if (pResultString != null && pResultString->IsEmpty() == false)
1804 __pPresentationModel->SetValue(DETAIL_PROPERTY_RINGTONE, *pResultString);
1805 __pPresentationModel->UpdateContact();
1806 __pTableView->RefreshItem(__pItemList->GetCount() - 1, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
1808 if (__pFileEventManager == null)
1810 __pFileEventManager = new (std::nothrow) FileEventManager();
1811 __pFileEventManager->Construct(*this);
1813 __pFileEventManager->AddPath(*pResultString, FILE_EVENT_TYPE_DELETE | FILE_EVENT_TYPE_DELETE_SELF | FILE_EVENT_TYPE_MODIFY | FILE_EVENT_TYPE_MOVE_SELF);
1819 AppLogDebug("EXIT");
1823 ContactDetailsForm::AddGroupStylePanel(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::GroupStyle groupStyle)
1825 ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
1827 Panel* pGroupStyle = new (std::nothrow) Panel();
1828 pGroupStyle->Construct(Rectangle(W_GROUP_STYLE_MARGIN, 0, itemWidth - W_GROUP_STYLE_MARGIN * 2, H_ITEM_DOUBLE_LINE + pContactsApp->GetFontHeightOffset()), groupStyle);
1829 pGroupStyle->SetName(GROUP_STYLE_PANEL);
1830 pGroupStyle->SetBackgroundColor(COLOR_GROUP_STYLE);
1831 pGroupStyle->AddTouchEventListener(*this);
1832 pItem->AddControl(pGroupStyle);
1836 ContactDetailsForm::ParseAppControlArgument(const Tizen::Base::String& argument, Tizen::Base::String& type, Tizen::Base::String& content)
1838 result r = E_SUCCESS;
1840 if (argument.IsEmpty() || argument.Contains(DELIMITER) == false)
1845 StringTokenizer stringToken(argument, DELIMITER);
1847 r = stringToken.GetNextToken(type);
1848 TryReturn(r == E_SUCCESS, r, "[%s] Unable to get type", GetErrorMessage(r));
1850 r = stringToken.GetNextToken(content);
1851 TryReturn(r == E_SUCCESS, r, "[%s] Unable to get content", GetErrorMessage(r));
1857 ContactDetailsForm::ShowDefaultSelectorPopup(void)
1859 ArrayList* pList = new (std::nothrow) ArrayList();
1862 String numberWithType;
1863 int numberCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER);
1864 for (int index = 0; index < numberCount; index++)
1866 numberWithType = __pPresentationModel->GetType(DETAIL_PROPERTY_PHONE_NUMBER, index) + L" ";
1867 numberWithType += __pPresentationModel->GetValue(DETAIL_PROPERTY_PHONE_NUMBER, index);
1869 pList->Add(*(new (std::nothrow) String(numberWithType)));
1871 ContactValueListItemProvider* pProvider = new (std::nothrow) ContactValueListItemProvider(pList);
1873 delete __pDefaultSelectorPopup;
1874 __pDefaultSelectorPopup = new (std::nothrow) Popup();
1875 __pDefaultSelectorPopup->Construct(true, Dimension(W_POPUP, H_POPUP));
1876 __pDefaultSelectorPopup->SetTitleText(ResourceManager::GetString(L"IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"));
1877 __pDefaultSelectorPopup->SetPropagatedKeyEventListener(this);
1879 Rectangle popupClientBounds = __pDefaultSelectorPopup->GetClientAreaBounds();
1881 ListView* pOtherNumberList = new (std::nothrow) ListView();
1882 pOtherNumberList->Construct(Rectangle(0, 0, popupClientBounds.width, H_POPUP_LIST_VIEW));
1883 pOtherNumberList->AddListViewItemEventListener(*this);
1884 pOtherNumberList->SetItemProvider(*pProvider);
1886 __pDefaultSelectorPopup->AddControl(pOtherNumberList);
1888 Button* pCloseButton = new (std::nothrow) Button();
1889 pCloseButton->Construct(Rectangle((popupClientBounds.width - W_POPUP_BUTTON) / 2, Y_POPUP_BUTTON,
1890 W_POPUP_BUTTON, H_POPUP_BUTTON), ResourceManager::GetString(L"IDS_COM_POP_CLOSE"));
1891 pCloseButton->SetActionId(IDA_POPUP_CLOSE);
1892 pCloseButton->AddActionEventListener(*this);
1894 __pDefaultSelectorPopup->AddControl(pCloseButton);
1895 __pDefaultSelectorPopup->SetShowState(true);
1896 __pDefaultSelectorPopup->Show();
1900 ContactDetailsForm::HideDefaultSelectorPopup(void)
1902 __pDefaultSelectorPopup->SetShowState(false);
1908 ContactDetailsForm::ShowInvalidFilePopup(bool isInvalidFormat)
1910 if (__pInvalidFilePopup != null)
1912 delete __pInvalidFilePopup;
1915 __pInvalidFilePopup = new (std::nothrow) Popup();
1916 __pInvalidFilePopup->Construct(false, Dimension(W_POPUP, H_INVALID_FILE_POPUP));
1917 __pInvalidFilePopup->SetPropagatedKeyEventListener(this);
1919 Rectangle clientBounds = __pInvalidFilePopup->GetClientAreaBounds();
1921 Label* pLabelText = new (std::nothrow) Label();
1922 if(isInvalidFormat == true)
1924 pLabelText->Construct(Rectangle(0, Y_POPUP_TEXT_LABEL, clientBounds.width, H_POPUP_TEXT_LABEL), ResourceManager::GetString(L"IDS_RSSR_BODY_INVALID_FORMAT"));
1928 pLabelText->Construct(Rectangle(0, Y_POPUP_TEXT_LABEL, clientBounds.width, H_POPUP_TEXT_LABEL), ResourceManager::GetString(L"IDS_MP_POP_INVALID_FILE"));
1931 pLabelText->SetTextColor(COLOR_POPUP_TEXT);
1932 pLabelText->SetTextConfig(FONT_SIZE_POPUP_TEXT, LABEL_TEXT_STYLE_BOLD);
1933 pLabelText->SetTextHorizontalAlignment(ALIGNMENT_CENTER);
1935 __pInvalidFilePopup->AddControl(pLabelText);
1937 Button* pButtonClose = new (std::nothrow) Button();
1938 pButtonClose->Construct(Rectangle((clientBounds.width - W_POPUP_BUTTON) / 2, pLabelText->GetY() + pLabelText->GetHeight(), W_POPUP_BUTTON, H_POPUP_BUTTON));
1939 pButtonClose->SetText(ResourceManager::GetString("IDS_COM_SK_OK"));
1940 pButtonClose->SetActionId(IDA_INVALID_FILE_POPUP_CLOSE);
1941 pButtonClose->AddActionEventListener(*this);
1943 __pInvalidFilePopup->AddControl(pButtonClose);
1945 __pInvalidFilePopup->Show();
1949 ContactDetailsForm::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status)
1951 __pPresentationModel->SetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER, L"", index);
1952 __pPresentationModel->AddAddressBook();
1953 InitializeDetailItemList();
1954 __pTableView->UpdateTableView();
1956 HideDefaultSelectorPopup();
1960 ContactDetailsForm::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction)
1965 ContactDetailsForm::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus status)
1970 ContactDetailsForm::OnForeground(void)
1972 if (IsEnabled() == false)
1978 Footer* pFooter = GetFooter();
1979 pFooter->SetEnabled(true);
1981 delete __pAppControl;
1982 __pAppControl = null;
1984 __isAppControlLaunching = false;
1988 ContactDetailsForm::OnBackground(void)
1993 ContactDetailsForm::OnKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
1999 ContactDetailsForm::OnKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)
2001 if (keyEventInfo.GetKeyCode() == KEY_BACK)
2003 if (__pDefaultSelectorPopup && __pDefaultSelectorPopup->GetShowState() == true)
2005 HideDefaultSelectorPopup();
2008 else if (__pInvalidFilePopup && __pInvalidFilePopup->GetShowState() == true)
2010 __pInvalidFilePopup->SetShowState(false);
2012 ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
2014 result r = AppControlProviderManager::GetInstance()->SendAppControlResult(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, null);
2015 AppLogDebug("[%s] The return result from SendAppControlResult().", GetErrorMessage(r));
2017 UiApp::GetInstance()->Terminate();
2025 ContactDetailsForm::OnPreviewKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
2031 ContactDetailsForm::OnPreviewKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)