2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.0 (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 CtContactEditorForm.cpp
19 * @brief This is the implementation file for the ContactEditorForm class.
24 #include "CtContactEditorForm.h"
25 #include "CtContactPresentationModel.h"
26 #include "CtContactsApp.h"
27 #include "CtContactValueListItemProvider.h"
28 #include "CtResourceManager.h"
29 #include "CtSceneRegister.h"
32 using namespace Tizen::App;
33 using namespace Tizen::Base;
34 using namespace Tizen::Base::Collection;
35 using namespace Tizen::Base::Utility;
36 using namespace Tizen::Graphics;
37 using namespace Tizen::Io;
38 using namespace Tizen::Media;
39 using namespace Tizen::Ui;
40 using namespace Tizen::Ui::Controls;
41 using namespace Tizen::Ui::Scenes;
42 using namespace Tizen::Social;
43 using namespace Tizen::System;
45 static const int IDA_ACTION_BAR_SAVE = 11;
46 static const int IDA_BUTTON_THUMBNAIL_ADD = 21;
47 static const int IDA_BUTTON_THUMBNAIL_DELETE = 22;
48 static const int IDA_BUTTON_CAMERA = 23;
49 static const int IDA_BUTTON_EXPANDABLE = 24;
50 static const int IDA_BUTTON_MORE_INFO = 25;
51 static const int IDA_BUTTON_BIRTHDAY_CLEAR = 26;
52 static const int IDA_BUTTON_DEFAULT_PHONE_NUMBER = 27;
53 static const int IDA_CONTEXT_MENU_ITEM_JOB_TITLE = 31;
54 static const int IDA_CONTEXT_MENU_ITEM_DEPARTMENT = 32;
55 static const int IDA_CONTEXT_MENU_ITEM_INSTANT_MESSENGER = 33;
56 static const int IDA_CONTEXT_MENU_ITEM_URL = 34;
57 static const int IDA_CONTEXT_MENU_ITEM_BIRTHDAY = 35;
58 static const int IDA_CONTEXT_MENU_ITEM_NOTE = 36;
59 static const int IDA_INPUT_FIELD_DISPLAY_NAME = 41;
61 static const wchar_t* IDB_EXPAND_BUTTON_NORMAL = L"00_circle_button.png";
62 static const wchar_t* IDB_EXPAND_BUTTON_PRESSED = L"00_circle_button_press.png";
63 static const wchar_t* IDB_EXPAND_CLOSED = L"00_button_expand_closed.png";
64 static const wchar_t* IDB_EXPAND_CLOSED_PRESSED = L"00_button_expand_closed_press.png";
65 static const wchar_t* IDB_EXPAND_OPENED = L"00_button_expand_opened.png";
66 static const wchar_t* IDB_EXPAND_OPENED_PRESSED = L"00_button_expand_opened_press.png";
67 static const wchar_t* IDB_BUTTON_DELETE_NORMAL = L"00_circle_button_delete.png";
68 static const wchar_t* IDB_BUTTON_DELETE_PRESSED = L"00_circle_button_delete_press.png";
69 static const wchar_t* IDB_BUTTON_MINUS = L"00_button_expand_minus_press.png";
70 static const wchar_t* IDB_BUTTON_MINUS_PRESSED = L"00_button_expand_minus_press.png";
71 static const wchar_t* IDB_BUTTON_RESET_NORMAL = L"00_button_refresh.png";
72 static const wchar_t* IDB_BUTTON_RESET_PRESSED = L"00_button_refresh_press.png";
73 static const wchar_t* IDB_BUTTON_ADD= L"C02_caller_id_icon_add.png";
74 static const wchar_t* IDB_BUTTON_ADD_PRESSED = L"C02_caller_id_icon_add_press.png";
75 static const wchar_t* IDB_BUTTON_CAMERA = L"C02_caller_id_icon_camera.png";
76 static const wchar_t* IDB_BUTTON_CAMERA_PRESSED = L"C02_caller_id_icon_camera_press.png";
77 static const wchar_t* IDB_BUTTON_DROPBOX = L"C02_button_icon_dropbox.png";
78 static const wchar_t* IDB_THUMBNAIL_BACKGROUND = L"C02_created_photo_bg.png";
80 static const wchar_t* INPUT_DATA_SELECTION_MODE_SINGLE = L"single";
81 static const wchar_t* INPUT_KEY_SELECTION_MODE = L"http://tizen.org/appcontrol/data/selection_mode";
82 static const wchar_t* INPUT_KEY_ALLOW_SWITCH = L"http://tizen.org/appcontrol/data/camera/allow_switch";
83 static const wchar_t* INPUT_MIME_TYPE_CAMERA = L"image/jpg";
84 static const wchar_t* INPUT_MIME_TYPE_GALLERY = L"image/*";
85 static const wchar_t* INPUT_MIME_TYPE_AUDIO = L"audio/*";
86 static const wchar_t* INPUT_VALUE_FALSE = L"false";
87 static const wchar_t* OUTPUT_KEY_SELECTED = L"http://tizen.org/appcontrol/data/selected";
88 static const wchar_t* CHARACTER_AT = L"@";
89 static const wchar_t* CHARACTER_DOT = L".";
90 static const wchar_t* SD_CARD_UNMOUNTED = L"Unmounted";
92 static const int H_ITEM = 112;
93 static const int H_DOUBLE_LINE_ITEM = 140;
94 static const int H_DESCRIPTION_CONTAINER = 136;
95 static const int H_DIVIDER = 1;
96 static const int W_DIVIDER = 1;
97 static const int H_EMPTY_SPACE = 32;
98 static const int H_EXPANDED_NAME_FIELDS = 672;
99 static const int H_BUTTON = 74;
100 static const int W_THUMBNAIL = 360;
101 static const int W_TITLE_LABEL = 170;
102 static const int X_MORE_INFORMATION_BUTTON = 60;
103 static const int Y_MORE_INFORMATION_BUTTON = 30;
104 static const int Y_DEFAULT_NUMBER_BUTTON = 19;
105 static const int W_ITEM_GAP = 16;
106 static const int W_TYPE_BUTTON = 186;
107 static const int W_THUMBNAIL_DELETE_BUTTON_GAP = 10;
108 static const int H_THUMBNAIL_DELETE_BUTTON_GAP = 10;
109 static const int H_THUMBNAIL_GROUP_ITEM_HEIGHT = 34;
110 static const int H_NAMEFIELD_GROUP_ITEM_HEIGHT = 40;
111 static const int H_GROUP_RINGTONE_TITLE_GAP = 22;
112 static const int H_GROUP_RINGTONE_TITLE_LABEL = 42;
113 static const int H_GROUP_RINGTONE_VALUE_LABEL = 54;
114 static const int W_DROPBOX_ICON = 29;
115 static const int H_DROPBOX_ICON = 29;
117 static const int FONT_SIZE_VALUE_TEXT = 44;
118 static const int FONT_SIZE_TITLE_TEXT = 32;
120 static const int GROUP_ITEM_COUNT = 11;
121 static const int NAME_FIELD_ITEM_COUNT = 1;
123 static const unsigned int COLOR_TABLE_VIEW_BG = Color32<248, 246, 239>::Value;
124 static const unsigned int COLOR_DIVIDER = Color32<169, 169, 169>::Value;
125 static const unsigned int COLOR_THUMBNAIL_BACKGROUND = Color32<239, 237, 229>::Value;
126 static const unsigned int COLOR_ITEM_TITLE = Color32<128, 128, 128>::Value;
128 static const int TABLE_VIEW_DELETE_INPUT_FIELD_ID = 0xE0000000;
129 static const int TABLE_VIEW_INPUT_FIELD_ACTION_MASK = 0xF0000000;
130 static const int TABLE_VIEW_INPUT_FIELD_INDEX_MASK = 0x0F000000;
131 static const int TABLE_VIEW_GROUP_INDEX_MASK = 0x00FF0000;
132 static const int TABLE_VIEW_ITEM_INDEX_MASK = 0x0000FFFF;
133 static const int TABLE_VIEW_GROUP_INDEX_SHIFT = 16;
134 static const int TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT = 24;
135 static const int TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT = 28;
136 static const int TABLE_VIEW_THUMBNAIL_FIELD_INDEX = 0;
137 static const int TABLE_VIEW_NAME_FIELD_INDEX = 1;
138 static const int TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX = 2;
139 static const int TABLE_VIEW_EMAIL_FIELD_INDEX = 3;
140 static const int TABLE_VIEW_ADDRESS_FIELD_INDEX = 4;
141 static const int TABLE_VIEW_IM_ADDRESS_FIELD_INDEX = 5;
142 static const int TABLE_VIEW_URL_FIELD_INDEX = 6;
143 static const int TABLE_VIEW_BIRTHDAY_FIELD_INDEX = 7;
144 static const int TABLE_VIEW_NOTE_FIELD_INDEX = 8;
145 static const int TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX = 9;
146 static const int TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX = 10;
148 static const wchar_t* INPUT_TYPE_PHONE = L"phone";
149 static const wchar_t* INPUT_TYPE_EMAIL = L"email";
150 static const wchar_t* INPUT_TYPE_URL = L"url";
151 static const wchar_t* VIEW_TYPE = L"viewType";
152 static const wchar_t* VIEW_TYPE_VALUE_CONTACT = L"contact";
153 static const wchar_t* VIEW_TYPE_CONTACT_ID = L"contactId";
155 ContactEditorForm::ContactEditorForm(void)
156 : __isExpandable(false)
157 , __isAppControl(false)
158 , __isJobTitleEnabled(false)
159 , __isDepartmentEnabled(false)
160 , __isDefaultPhoneNumberButtonEnabled(false)
162 , __isDataRemoved(false)
163 , __isMoreInformationContextMenuShowing(false)
164 , __isKeypadOpened(false)
165 , __scrolledDistance(0)
166 , __pPhoneNumberFieldItem(null)
167 , __pEmailFieldItem(null)
168 , __pAddressFieldItem(null)
169 , __pImAddressFieldItem(null)
170 , __pUrlFieldItem(null)
171 , __pFileEventManager(null)
172 , __pCurrentFocusedItem(null)
173 , __pDefaultPhoneNumberContextMenu(null)
174 , __pMoreInformationContextMenu(null)
175 , __pThumbnailContextMenu(null)
176 , __pTypeContextMenu(null)
178 , __pNameFieldItem(null)
179 , __pNoteFieldItem(null)
180 , __pPresentationModel(null)
184 ContactEditorForm::~ContactEditorForm(void)
189 ContactEditorForm::Initialize(void)
191 Construct(FORM_STYLE_NORMAL | FORM_STYLE_INDICATOR | FORM_STYLE_HEADER | FORM_STYLE_FOOTER);
195 ContactEditorForm::OnInitializing(void)
197 SetFormBackEventListener(this);
199 Footer* pFooter = GetFooter();
200 pFooter->SetBackButton();
202 FooterItem footerItemSave;
203 footerItemSave.Construct(IDA_ACTION_BAR_SAVE);
204 footerItemSave.SetText(ResourceManager::GetString(L"IDS_COM_SK_SAVE"));
206 pFooter->AddItem(footerItemSave);
207 pFooter->AddActionEventListener(*this);
209 __pTableView = new (std::nothrow) GroupedTableView();
210 __pTableView->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height), false, TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT);
211 __pTableView->SetItemProvider(this);
212 __pTableView->AddScrollEventListener(*this);
213 __pTableView->AddGroupedTableViewItemEventListener(*this);
214 AddControl(*__pTableView);
216 __pPhoneNumberFieldItem = new (std::nothrow) ArrayList();
217 __pPhoneNumberFieldItem->Construct();
219 __pEmailFieldItem = new (std::nothrow) ArrayList();
220 __pEmailFieldItem->Construct();
222 __pAddressFieldItem = new (std::nothrow) ArrayList();
223 __pAddressFieldItem->Construct();
225 __pImAddressFieldItem = new (std::nothrow) ArrayList();
226 __pImAddressFieldItem->Construct();
228 __pUrlFieldItem = new (std::nothrow) ArrayList();
229 __pUrlFieldItem->Construct();
231 __pPresentationModel = new (std::nothrow) ContactPresentationModel();
232 __pPresentationModel->Construct();
233 __pPresentationModel->AddContactChangeListener(*this);
235 DeviceManager::AddDeviceEventListener(DEVICE_TYPE_STORAGE_CARD, *this);
241 ContactEditorForm::OnTerminating(void)
243 AppLog("ContactEditorForm::OnTerminating()");
245 result r = E_SUCCESS;
247 __pTableView->SetItemProvider(null);
249 if (__pPresentationModel != null)
251 __pPresentationModel->RemoveContactChangeListener(*this);
252 delete __pPresentationModel;
255 if (__pPhoneNumberFieldItem)
257 __pPhoneNumberFieldItem->RemoveAll(true);
258 delete __pPhoneNumberFieldItem;
261 if (__pEmailFieldItem)
263 __pEmailFieldItem->RemoveAll(true);
264 delete __pEmailFieldItem;
267 if (__pAddressFieldItem)
269 __pAddressFieldItem->RemoveAll(true);
270 delete __pAddressFieldItem;
275 __pUrlFieldItem->RemoveAll(true);
276 delete __pUrlFieldItem;
279 if (__pImAddressFieldItem)
281 __pImAddressFieldItem->RemoveAll(true);
282 delete __pImAddressFieldItem;
285 delete __pNameFieldItem;
286 delete __pNoteFieldItem;
287 delete __pDefaultPhoneNumberContextMenu;
288 delete __pMoreInformationContextMenu;
289 delete __pThumbnailContextMenu;
290 delete __pTypeContextMenu;
291 delete __pFileEventManager;
293 DeviceManager::RemoveDeviceEventListener(DEVICE_TYPE_STORAGE_CARD, *this);
299 ContactEditorForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
301 SceneManager* pSceneManager = SceneManager::GetInstance();
305 if (__isAppControl == true)
307 UiApp* pApp = UiApp::GetInstance();
312 pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
317 ContactEditorForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
319 AppLog("ContactEditorForm::OnActionPerformed(), actionId %d", actionId);
321 if ((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) == TABLE_VIEW_DELETE_INPUT_FIELD_ID)
323 int groupIndex = (actionId & TABLE_VIEW_GROUP_INDEX_MASK) >> TABLE_VIEW_GROUP_INDEX_SHIFT;
324 int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
326 if (groupIndex > TABLE_VIEW_NAME_FIELD_INDEX)
328 DeleteInputField(groupIndex, itemIndex);
333 else if (&source == __pDefaultPhoneNumberContextMenu)
335 SetAsDefaultPhoneNumber(actionId);
339 else if (((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) >> TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT) == TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX)
341 int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
342 int selectedItemIndex = (actionId & TABLE_VIEW_INPUT_FIELD_INDEX_MASK) >> TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
344 TableViewItem* pItem = static_cast<TableViewItem *>(__pPhoneNumberFieldItem->GetAt(itemIndex));
349 pItem->SetName(Integer::ToString(selectedItemIndex));
351 Button* pButtonType = static_cast<Button *>(pItem->GetControl(1));
352 if (pButtonType == null)
357 pButtonType->SetText(__pPresentationModel->GetPhoneNumberTypeString((DetailPhoneNumberType)selectedItemIndex));
358 pButtonType->Invalidate(false);
362 else if (((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) >> TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT) == TABLE_VIEW_EMAIL_FIELD_INDEX)
364 int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
365 int selectedItemIndex = (actionId & TABLE_VIEW_INPUT_FIELD_INDEX_MASK) >> TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
367 TableViewItem* pItem = static_cast<TableViewItem *>(__pEmailFieldItem->GetAt(itemIndex));
372 pItem->SetName(Integer::ToString(selectedItemIndex));
374 Button* pButtonType = static_cast<Button *>(pItem->GetControl(1));
375 if (pButtonType == null)
380 pButtonType->SetText(__pPresentationModel->GetEmailTypeString((DetailEmailType)selectedItemIndex));
381 pButtonType->Invalidate(false);
385 else if (((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) >> TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT) == TABLE_VIEW_ADDRESS_FIELD_INDEX)
387 int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
388 int selectedItemIndex = (actionId & TABLE_VIEW_INPUT_FIELD_INDEX_MASK) >> TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
390 TableViewItem* pItem = static_cast<TableViewItem *>(__pAddressFieldItem->GetAt(itemIndex));
395 pItem->SetName(Integer::ToString(selectedItemIndex));
397 Button* pButtonType = static_cast<Button *>(pItem->GetControl(1));
398 if (pButtonType == null)
403 pButtonType->SetText(__pPresentationModel->GetAddressTypeString((DetailAddressType)selectedItemIndex));
404 pButtonType->Invalidate(false);
408 else if (((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) >> TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT) == TABLE_VIEW_IM_ADDRESS_FIELD_INDEX)
410 int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
411 int selectedItemIndex = (actionId & TABLE_VIEW_INPUT_FIELD_INDEX_MASK) >> TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
413 TableViewItem* pItem = static_cast<TableViewItem *>(__pImAddressFieldItem->GetAt(itemIndex));
418 pItem->SetName(Integer::ToString(selectedItemIndex));
420 Button* pButtonType = static_cast<Button *>(pItem->GetControl(1));
421 if (pButtonType == null)
426 pButtonType->SetText(__pPresentationModel->GetImAddressTypeString((DetailImAddressType)selectedItemIndex));
427 pButtonType->Invalidate(false);
431 else if (((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) >> TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT) == TABLE_VIEW_URL_FIELD_INDEX)
433 int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
434 int selectedItemIndex = (actionId & TABLE_VIEW_INPUT_FIELD_INDEX_MASK) >> TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
436 TableViewItem* pItem = static_cast<TableViewItem *>(__pUrlFieldItem->GetAt(itemIndex));
441 pItem->SetName(Integer::ToString(selectedItemIndex));
443 Button* pButtonType = static_cast<Button *>(pItem->GetControl(1));
444 if (pButtonType == null)
449 pButtonType->SetText(__pPresentationModel->GetUrlTypeString((DetailUrlType)selectedItemIndex));
450 pButtonType->Invalidate(false);
457 case IDA_ACTION_BAR_SAVE:
459 result r = SaveContactData();
469 case IDA_BUTTON_THUMBNAIL_ADD:
471 if (__pCurrentFocusedItem != null)
475 LaunchAppControl(PROVIDER_ID_GALLERY, OPERATION_ID_PICK);
478 case IDA_BUTTON_THUMBNAIL_DELETE:
480 __pPresentationModel->SetThumbnail(L"");
481 __pTableView->RefreshItem(TABLE_VIEW_THUMBNAIL_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
483 delete __pFileEventManager;
484 __pFileEventManager = null;
487 case IDA_BUTTON_CAMERA:
489 if (__pCurrentFocusedItem != null)
493 LaunchAppControl(PROVIDER_ID_CAMERA, OPERATION_ID_CREATE_CONTENT);
496 case IDA_BUTTON_EXPANDABLE:
498 ChangeNameFieldStatus();
500 if (__pCurrentFocusedItem == __pNameFieldItem)
502 __pCurrentFocusedItem = null;
505 __pTableView->RefreshItem(TABLE_VIEW_NAME_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
507 Rectangle clientBounds = GetClientAreaBounds();
508 __pTableView->SetSize(clientBounds.width, clientBounds.height);
510 if (__pCurrentFocusedItem != null)
516 case IDA_BUTTON_MORE_INFO:
518 if (__pCurrentFocusedItem != null)
520 if (__isKeypadOpened)
522 __isMoreInformationContextMenuShowing = true;
523 __scrolledDistance = 0;
528 Control* pParentPanel = source.GetParent();
529 if (pParentPanel == null)
534 Control* pParentTableViewItem = pParentPanel->GetParent();
535 if (pParentTableViewItem == null)
540 Point contextMenuPos;
542 contextMenuPos.x = pParentTableViewItem->GetWidth() / 2;
543 contextMenuPos.y = GetClientAreaBounds().y + pParentTableViewItem->GetY() + source.GetY() - __scrolledDistance;
545 ShowMoreInformationContextMenu(contextMenuPos);
548 case IDA_BUTTON_BIRTHDAY_CLEAR:
550 DateTime currentDate;
551 Tizen::System::SystemTime::GetCurrentTime(currentDate);
552 __pPresentationModel->SetBirthday(currentDate);
554 __pTableView->RefreshItem(TABLE_VIEW_BIRTHDAY_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
557 case IDA_CONTEXT_MENU_ITEM_JOB_TITLE:
559 __isExpandable = false;
560 __isJobTitleEnabled = true;
562 ChangeNameFieldStatus();
564 __pTableView->RefreshItem(TABLE_VIEW_NAME_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
565 __pTableView->ScrollToItem(TABLE_VIEW_NAME_FIELD_INDEX, 0);
568 case IDA_CONTEXT_MENU_ITEM_DEPARTMENT:
570 __isExpandable = false;
571 __isDepartmentEnabled = true;
573 ChangeNameFieldStatus();
575 __pTableView->RefreshItem(TABLE_VIEW_NAME_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
576 __pTableView->ScrollToItem(TABLE_VIEW_NAME_FIELD_INDEX, 0);
579 case IDA_CONTEXT_MENU_ITEM_INSTANT_MESSENGER:
581 SaveContactData(false);
583 int index = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_IM_ADDRESS);
585 __pTableView->RefreshItem(TABLE_VIEW_IM_ADDRESS_FIELD_INDEX, index, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
587 if (IsMoreInformationButtonVisible() == false)
589 __pTableView->RefreshItem(TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
591 __pTableView->ScrollToItem(TABLE_VIEW_IM_ADDRESS_FIELD_INDEX, 0);
594 case IDA_CONTEXT_MENU_ITEM_URL:
596 SaveContactData(false);
598 int index = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_URL);
600 __pTableView->RefreshItem(TABLE_VIEW_URL_FIELD_INDEX, index, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
602 if (IsMoreInformationButtonVisible() == false)
604 __pTableView->RefreshItem(TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
606 __pTableView->ScrollToItem(TABLE_VIEW_URL_FIELD_INDEX, 0);
609 case IDA_CONTEXT_MENU_ITEM_BIRTHDAY:
611 DateTime currentDate;
613 Tizen::System::SystemTime::GetCurrentTime(currentDate);
614 __pPresentationModel->SetBirthday(currentDate);
616 __pTableView->RefreshItem(TABLE_VIEW_BIRTHDAY_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
618 if (IsMoreInformationButtonVisible() == false)
620 __pTableView->RefreshItem(TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
622 __pTableView->ScrollToItem(TABLE_VIEW_BIRTHDAY_FIELD_INDEX, 0);
625 case IDA_CONTEXT_MENU_ITEM_NOTE:
627 __pTableView->RefreshItem(TABLE_VIEW_NOTE_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
629 if (IsMoreInformationButtonVisible() == false)
631 __pTableView->RefreshItem(TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
633 __pTableView->ScrollToItem(TABLE_VIEW_NOTE_FIELD_INDEX, 0);
636 case IDA_BUTTON_DEFAULT_PHONE_NUMBER:
638 Control* pParent = source.GetParent();
639 Point contextMenuPos;
641 contextMenuPos.x = pParent->GetWidth() / 2;
642 contextMenuPos.y = GetClientAreaBounds().y + pParent->GetY() + source.GetY() + (source.GetHeight() / 2) - __scrolledDistance;
644 if (__pCurrentFocusedItem != null)
649 SaveContactData(false);
650 ShowDefaultPhoneNumberContextMenu(contextMenuPos);
659 ContactEditorForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId,
660 Tizen::Base::Collection::IList* pArgs)
662 ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
663 TryReturnVoid(pContactsApp != null, "Unable to cast UiApp to ContactsApp");
665 pContactsApp->AddContactsAppChangeEventListener(*this);
667 Header* pHeader = GetHeader();
668 Footer* pFooter = GetFooter();
670 if (previousSceneId.Equals(IDSCN_GROUP_SELECTOR, true) || previousSceneId.Equals(IDSCN_GROUP_EDITOR, true))
674 Integer* pCategoryId = null;
675 __pPresentationModel->RemoveContactFromAllCategories();
677 IEnumerator* pEnum = pArgs->GetEnumeratorN();
678 while (pEnum->MoveNext() == E_SUCCESS)
680 pCategoryId = static_cast<Integer*>(pEnum->GetCurrent());
681 if (pCategoryId != null)
683 __pPresentationModel->AddContactToCategory(pCategoryId->ToInt());
688 pArgs->RemoveAll(true);
692 __pTableView->RefreshItem(TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
697 if (pContactsApp->GetOperationId() == OPERATION_ID_ADD)
699 __isAppControl = true;
700 __pPresentationModel->PrepareNewContact();
702 pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_BODY_CREATE"));
703 pFooter->SetItemEnabled(0, false);
705 else if (pContactsApp->GetOperationId() == OPERATION_ID_EDIT)
707 __isAppControl = true;
711 String* pArgString = null;
715 IEnumerator* pEnum = pArgs->GetEnumeratorN();
716 while (pEnum->MoveNext() == E_SUCCESS)
718 pArgString = static_cast<String*>(pEnum->GetCurrent());
719 if (pArgString != null)
721 ParseAppControlArgument(*pArgString, type, content);
723 if (type.Equals(RETURN_TYPE_ITEM_ID, false))
726 Integer::Parse(content, contactId);
727 result r = __pPresentationModel->SetContactId(contactId, true);
731 AppLogDebug("Invalid contactId has been input : %d", contactId);
732 UiApp::GetInstance()->Terminate();
735 if (__pPresentationModel->GetValue(DETAIL_PROPERTY_JOB_TITLE).IsEmpty() == false)
737 __isJobTitleEnabled = true;
739 if (__pPresentationModel->GetValue(DETAIL_PROPERTY_DEPARTMENT).IsEmpty() == false)
741 __isDepartmentEnabled = true;
749 pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_SK_EDIT"));
756 Integer* pContactId = null;
758 pContactId = static_cast<Integer*>(pArgs->GetAt(0));
759 if (pContactId != null)
761 if (pContactId->ToInt() != INVALID_RECORD_ID)
763 pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_SK_EDIT"));
764 __pPresentationModel->SetContactId(pContactId->ToInt(), true);
768 pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_BODY_CREATE"));
770 String* pVcfPath = static_cast<String*>(pArgs->GetAt(1));
771 if (pVcfPath != null)
773 __pPresentationModel->SetVcfPath(*pVcfPath, true);
778 if (__pPresentationModel->GetValue(DETAIL_PROPERTY_JOB_TITLE).IsEmpty() == false)
780 __isJobTitleEnabled = true;
782 if (__pPresentationModel->GetValue(DETAIL_PROPERTY_DEPARTMENT).IsEmpty() == false)
784 __isDepartmentEnabled = true;
789 pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_BODY_CREATE"));
790 pFooter->SetItemEnabled(0, false);
791 __pPresentationModel->PrepareNewContact();
795 if (__isAppControl == true)
799 String* pArgString = null;
803 IEnumerator* pEnum = pArgs->GetEnumeratorN();
804 while (pEnum->MoveNext() == E_SUCCESS)
806 pArgString = static_cast<String*>(pEnum->GetCurrent());
807 if (pArgString != null)
809 result r = E_SUCCESS;
810 ParseAppControlArgument(*pArgString, type, content);
812 if (type.Equals(INPUT_TYPE_PHONE, false))
814 r = __pPresentationModel->SetValue(DETAIL_PROPERTY_PHONE_NUMBER, content, __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER));
816 else if (type.Equals(INPUT_TYPE_EMAIL, false))
818 r = __pPresentationModel->SetValue(DETAIL_PROPERTY_EMAIL, content, __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_EMAIL));
820 else if (type.Equals(INPUT_TYPE_URL, false))
822 r = __pPresentationModel->SetValue(DETAIL_PROPERTY_URL, content, __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_URL));
827 pFooter->SetItemEnabled(0, true);
837 pArgs->RemoveAll(true);
843 ContactEditorForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
845 ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
847 pContactsApp->RemoveContactsAppChangeEventListener(*this);
851 ContactEditorForm::OnKeypadWillOpen(Tizen::Ui::Control& source)
856 ContactEditorForm::OnKeypadOpened(Tizen::Ui::Control& source)
858 Rectangle clientBounds = GetClientAreaBounds();
860 __pTableView->SetSize(clientBounds.width, clientBounds.height);
861 __isKeypadOpened = true;
865 ContactEditorForm::OnKeypadClosed(Tizen::Ui::Control& source)
867 if (__pCurrentFocusedItem != null)
871 else if (__isMoreInformationContextMenuShowing)
873 Point anchorPosition = __pMoreInformationContextMenu->GetAnchorPosition();
875 __pTableView->ScrollToItem(TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX, 0, TABLE_VIEW_SCROLL_ITEM_ALIGNMENT_BOTTOM);
876 anchorPosition.y -= __scrolledDistance;
877 __pMoreInformationContextMenu->SetAnchorPosition(anchorPosition);
878 __pMoreInformationContextMenu->Show();
880 __isMoreInformationContextMenuShowing = false;
882 __isKeypadOpened = false;
886 ContactEditorForm::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction)
891 ContactEditorForm::OnKeypadBoundsChanged(Tizen::Ui::Control& source)
893 Rectangle clientBounds = GetClientAreaBounds();
895 __pTableView->SetSize(clientBounds.width, clientBounds.height);
899 ContactEditorForm::OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem *pItem, Tizen::Ui::Controls::TableViewItemStatus status)
901 SceneManager* pSceneManager = SceneManager::GetInstance();
903 if (status == TABLE_VIEW_ITEM_STATUS_SELECTED && groupIndex == TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX)
905 if (__pCurrentFocusedItem != null)
912 if (__pPresentationModel->GetCategoryCount() > 0)
914 IList* pCategoryList = __pPresentationModel->GetAssignedCategoryIdListN();
916 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_SELECTOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pCategoryList);
920 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT));
925 else if (itemIndex == 2)
927 LaunchAppControl(PROVIDER_ID_FILEMANAGER, OPERATION_ID_PICK);
933 ContactEditorForm::OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem *pContextItem, bool activated)
938 ContactEditorForm::OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem *pItem, Tizen::Ui::Controls::TableViewItemStatus status)
943 ContactEditorForm::GetGroupCount(void)
945 return GROUP_ITEM_COUNT;
949 ContactEditorForm::GetItemCount(int groupIndex)
955 case TABLE_VIEW_THUMBNAIL_FIELD_INDEX:
960 case TABLE_VIEW_NAME_FIELD_INDEX:
962 itemCount = NAME_FIELD_ITEM_COUNT;
965 case TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX:
967 itemCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER) + 1;
969 if (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER) > 1)
971 __isDefaultPhoneNumberButtonEnabled = true;
976 __isDefaultPhoneNumberButtonEnabled = false;
980 case TABLE_VIEW_EMAIL_FIELD_INDEX:
982 itemCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_EMAIL) + 1;
985 case TABLE_VIEW_ADDRESS_FIELD_INDEX:
987 itemCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_ADDRESS) + 1;
990 case TABLE_VIEW_IM_ADDRESS_FIELD_INDEX:
992 itemCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_IM_ADDRESS);
994 if ((itemCount == 0 && __pImAddressFieldItem->GetCount() > 0) || itemCount > 0)
1000 case TABLE_VIEW_URL_FIELD_INDEX:
1002 itemCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_URL);
1004 if ((itemCount == 0 && __pUrlFieldItem->GetCount() > 0) || itemCount > 0)
1010 case TABLE_VIEW_BIRTHDAY_FIELD_INDEX:
1013 if (__pPresentationModel->GetBirthday(birthday) != E_SUCCESS)
1023 case TABLE_VIEW_NOTE_FIELD_INDEX:
1025 if (__pPresentationModel->GetValue(DETAIL_PROPERTY_NOTE).IsEmpty() == false || __pNoteFieldItem != null )
1035 case TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX:
1040 case TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX:
1042 if (IsMoreInformationButtonVisible())
1060 ContactEditorForm::GetDefaultGroupItemHeight(void)
1062 return H_EMPTY_SPACE;
1066 ContactEditorForm::GetDefaultItemHeight(void)
1072 ContactEditorForm::CreateGroupItem(int groupIndex, int itemWidth)
1074 int groupItemHeight = H_EMPTY_SPACE;
1076 if (groupIndex == TABLE_VIEW_THUMBNAIL_FIELD_INDEX)
1078 groupItemHeight = H_THUMBNAIL_GROUP_ITEM_HEIGHT;
1080 else if (groupIndex == TABLE_VIEW_NAME_FIELD_INDEX)
1082 groupItemHeight = H_NAMEFIELD_GROUP_ITEM_HEIGHT;
1084 else if ((groupIndex > TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX && groupIndex < TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX) || groupIndex == TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX)
1086 groupItemHeight = 0;
1089 TableViewGroupItem* pGroupItem = new (std::nothrow) TableViewGroupItem();
1090 pGroupItem->Construct(Dimension(itemWidth, groupItemHeight));
1091 pGroupItem->SetBackgroundColor(Color(COLOR_TABLE_VIEW_BG), TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
1092 pGroupItem->SetEnabled(false);
1094 Panel* pPanel = new (std::nothrow) Panel();
1095 pPanel->Construct(Rectangle(0, -(H_DIVIDER), itemWidth, groupItemHeight + H_DIVIDER));
1096 pPanel->SetBackgroundColor(Color(COLOR_TABLE_VIEW_BG));
1098 pGroupItem->AddControl(*pPanel);
1104 ContactEditorForm::DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem)
1113 ContactEditorForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
1115 TableViewItem* pItem = null;
1119 case TABLE_VIEW_THUMBNAIL_FIELD_INDEX:
1121 pItem = GetThumbnailField(itemWidth);
1124 case TABLE_VIEW_NAME_FIELD_INDEX:
1126 pItem = GetNameFields(itemWidth);
1129 case TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX:
1131 if ((itemIndex == __pTableView->GetItemCountAt(groupIndex) - 1) && __isDefaultPhoneNumberButtonEnabled == true)
1133 pItem = GetDefaultPhoneNumberItem(itemWidth);
1137 pItem = GetPhoneNumberFields(itemIndex, itemWidth);
1140 case TABLE_VIEW_EMAIL_FIELD_INDEX:
1142 pItem = GetEmailFields(itemIndex, itemWidth);
1145 case TABLE_VIEW_ADDRESS_FIELD_INDEX:
1147 pItem = GetAddressFields(itemIndex, itemWidth);
1150 case TABLE_VIEW_IM_ADDRESS_FIELD_INDEX:
1152 pItem = GetImAddressFields(itemIndex, itemWidth);
1155 case TABLE_VIEW_URL_FIELD_INDEX:
1157 pItem = GetUrlFields(itemIndex, itemWidth);
1160 case TABLE_VIEW_BIRTHDAY_FIELD_INDEX:
1162 pItem = GetBirthdayField(itemWidth);
1165 case TABLE_VIEW_NOTE_FIELD_INDEX:
1167 pItem = GetNoteField(itemWidth);
1170 case TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX:
1175 pItem = GetGroupsField(itemWidth);
1179 pItem = new (std::nothrow) TableViewItem();
1180 pItem->Construct(Dimension(itemWidth, H_DIVIDER * 2));
1181 pItem->SetEnabled(false);
1185 pItem = GetRingtoneField(itemWidth);
1192 case TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX:
1194 if (IsMoreInformationButtonVisible())
1196 pItem = GetMoreInformationField(itemWidth);
1212 ContactEditorForm::DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
1214 if (groupIndex == TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX)
1216 if ((itemIndex == __pPhoneNumberFieldItem->GetCount()) && __isDefaultPhoneNumberButtonEnabled == true)
1225 if ((groupIndex > TABLE_VIEW_NAME_FIELD_INDEX && groupIndex < TABLE_VIEW_BIRTHDAY_FIELD_INDEX) || groupIndex == TABLE_VIEW_NOTE_FIELD_INDEX)
1227 if (__isDataRemoved == false)
1232 else if (groupIndex == TABLE_VIEW_NAME_FIELD_INDEX)
1235 __pNameFieldItem = null;
1238 if (__pCurrentFocusedItem == pItem && __isKeypadOpened)
1240 __isKeypadOpened = false;
1250 ContactEditorForm::UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem *pItem)
1255 ContactEditorForm::UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem *pItem)
1264 case TABLE_VIEW_THUMBNAIL_FIELD_INDEX:
1266 SetThumbnailControls(*pItem, true);
1267 pItem->Invalidate(true);
1270 case TABLE_VIEW_NAME_FIELD_INDEX:
1272 if (__pCurrentFocusedItem == pItem && __isKeypadOpened)
1274 __isKeypadOpened = false;
1276 pItem->RemoveAllControls();
1277 SetNameFields(*pItem);
1281 case TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX:
1284 Label* pLabel = static_cast<Label *>(pItem->GetControl(1));
1293 valueString = __pPresentationModel->GetValue(DETAIL_PROPERTY_GROUP);
1294 if (valueString.IsEmpty() == true)
1296 valueString = ResourceManager::GetString(L"IDS_PB_BODY_NOT_ASSIGNED");
1299 else if (itemIndex == 2)
1301 String ringtoneName = __pPresentationModel->GetValue(DETAIL_PROPERTY_RINGTONE);
1304 ringtoneName.LastIndexOf(L"/", ringtoneName.GetLength() - 1, index);
1308 ringtoneName.SubString(index + 1, valueString);
1312 pLabel->SetText(valueString);
1313 pLabel->Invalidate(false);
1316 case TABLE_VIEW_BIRTHDAY_FIELD_INDEX:
1318 DateTime birthdayDate;
1319 EditDate* pBirthday = static_cast<EditDate *>(pItem->GetControl(1));
1321 if (pBirthday == null)
1326 __pPresentationModel->GetBirthday(birthdayDate);
1328 pBirthday->SetDate(birthdayDate);
1329 pBirthday->Invalidate(false);
1332 case TABLE_VIEW_NOTE_FIELD_INDEX:
1334 Control* pNoteField = pItem->GetControl(0);
1336 if (pNoteField == null)
1341 pItem->SetSize(pItem->GetWidth(), pNoteField->GetHeight());
1349 Tizen::Ui::Controls::TableViewItem*
1350 ContactEditorForm::GetThumbnailField(int itemWidth)
1352 TableViewItem* pThumbnailItem = new (std::nothrow) TableViewItem();
1353 pThumbnailItem->Construct(Dimension(itemWidth, W_THUMBNAIL));
1354 pThumbnailItem->SetBackgroundColor(Color(0), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
1356 SetThumbnailControls(*pThumbnailItem);
1358 return pThumbnailItem;
1361 Tizen::Ui::Controls::TableViewItem*
1362 ContactEditorForm::GetNameFields(int itemWidth)
1364 __pNameFieldItem = new (std::nothrow) TableViewItem();
1365 __pNameFieldItem->Construct(Dimension(itemWidth, H_ITEM));
1366 __pNameFieldItem->SetBackgroundColor(Color(0), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
1368 SetNameFields(*__pNameFieldItem);
1370 return __pNameFieldItem;
1374 ContactEditorForm::SetNameFields(Tizen::Ui::Controls::TableViewItem& item)
1376 int itemWidth = item.GetWidth();
1377 int itemHeight = H_ITEM;
1379 if (__isExpandable == true)
1381 itemHeight = H_EXPANDED_NAME_FIELDS;
1383 if (__isJobTitleEnabled == true)
1385 itemHeight += H_ITEM;
1388 if (__isDepartmentEnabled)
1390 itemHeight += H_ITEM;
1394 item.SetSize(itemWidth, itemHeight);
1396 Rectangle itemBounds(W_ITEM_GAP, 0, itemWidth - (W_ITEM_GAP * 3) - H_BUTTON, H_ITEM);
1398 if (__isExpandable == true)
1400 EditField* pFirstName = new (std::nothrow) EditField();
1401 pFirstName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
1402 pFirstName->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_FIRST_NAME"));
1403 pFirstName->AddFocusEventListener(*this);
1404 pFirstName->AddKeypadEventListener(*this);
1405 pFirstName->SetName(ResourceManager::GetString(L"IDS_PB_BODY_FIRST_NAME"));
1406 pFirstName->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_FIRST_NAME));
1407 pFirstName->AddTextEventListener(*this);
1409 item.AddControl(*pFirstName);
1411 itemBounds.y += pFirstName->GetHeight();
1412 EditField* pMiddleName = new (std::nothrow) EditField();
1413 pMiddleName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
1414 pMiddleName->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_MIDDLE_NAME"));
1415 pMiddleName->AddFocusEventListener(*this);
1416 pMiddleName->AddKeypadEventListener(*this);
1417 pMiddleName->SetName(ResourceManager::GetString(L"IDS_PB_BODY_MIDDLE_NAME"));
1418 pMiddleName->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_MIDDLE_NAME));
1420 item.AddControl(*pMiddleName);
1422 itemBounds.y += pMiddleName->GetHeight();
1423 EditField* pLastName = new (std::nothrow) EditField();
1424 pLastName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
1425 pLastName->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_LAST_NAME"));
1426 pLastName->AddFocusEventListener(*this);
1427 pLastName->AddKeypadEventListener(*this);
1428 pLastName->SetName(ResourceManager::GetString(L"IDS_PB_BODY_LAST_NAME"));
1429 pLastName->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_LAST_NAME));
1430 pLastName->AddTextEventListener(*this);
1432 item.AddControl(*pLastName);
1434 itemBounds.y += pLastName->GetHeight();
1435 EditField* pSuffix = new (std::nothrow) EditField();
1436 pSuffix->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
1437 pSuffix->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_SUFFIX"));
1438 pSuffix->AddFocusEventListener(*this);
1439 pSuffix->AddKeypadEventListener(*this);
1440 pSuffix->SetName(ResourceManager::GetString(L"IDS_PB_BODY_SUFFIX"));
1441 pSuffix->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_NAME_SUFFIX));
1443 item.AddControl(*pSuffix);
1445 itemBounds.y += pSuffix->GetHeight();
1446 EditField* pNickName = new (std::nothrow) EditField();
1447 pNickName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
1448 pNickName->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_NICKNAME"));
1449 pNickName->AddFocusEventListener(*this);
1450 pNickName->AddKeypadEventListener(*this);
1451 pNickName->SetName(ResourceManager::GetString(L"IDS_PB_BODY_NICKNAME"));
1452 pNickName->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_NICK_NAME));
1454 item.AddControl(*pNickName);
1456 itemBounds.y += pNickName->GetHeight();
1457 if (__isJobTitleEnabled == true)
1459 EditField* pJobTitle = new (std::nothrow) EditField();
1460 pJobTitle->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
1461 pJobTitle->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_JOB_TITLE"));
1462 pJobTitle->AddFocusEventListener(*this);
1463 pJobTitle->AddKeypadEventListener(*this);
1464 pJobTitle->SetName(ResourceManager::GetString(L"IDS_PB_BODY_JOB_TITLE"));
1465 pJobTitle->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_JOB_TITLE));
1467 item.AddControl(*pJobTitle);
1469 itemBounds.y += pJobTitle->GetHeight();
1472 if (__isDepartmentEnabled == true)
1474 EditField* pDepartment = new (std::nothrow) EditField();
1475 pDepartment->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
1476 pDepartment->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_DEPARTMENT"));
1477 pDepartment->AddFocusEventListener(*this);
1478 pDepartment->AddKeypadEventListener(*this);
1479 pDepartment->SetName(ResourceManager::GetString(L"IDS_PB_BODY_DEPARTMENT"));
1480 pDepartment->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_DEPARTMENT));
1482 item.AddControl(*pDepartment);
1484 itemBounds.y += pDepartment->GetHeight();
1487 EditField* pCompanyName = new (std::nothrow) EditField();
1488 pCompanyName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
1489 pCompanyName->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_COMPANY"));
1490 pCompanyName->AddFocusEventListener(*this);
1491 pCompanyName->AddKeypadEventListener(*this);
1492 pCompanyName->SetName(ResourceManager::GetString(L"IDS_PB_BODY_COMPANY"));
1493 pCompanyName->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_COMPANY));
1495 item.AddControl(*pCompanyName);
1499 EditField* pName = new (std::nothrow) EditField();
1500 pName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
1501 pName->SetGuideText(ResourceManager::GetString(L"IDS_COM_BODY_DETAILS_NAME"));
1502 pName->AddFocusEventListener(*this);
1503 pName->AddKeypadEventListener(*this);
1504 pName->SetName(Integer::ToString(IDA_INPUT_FIELD_DISPLAY_NAME));
1505 pName->AddTextEventListener(*this);
1507 String firstName(__pPresentationModel->GetValue(DETAIL_PROPERTY_FIRST_NAME));
1508 String lastName(__pPresentationModel->GetValue(DETAIL_PROPERTY_LAST_NAME));
1510 if (firstName.IsEmpty() == false)
1512 pName->SetText(firstName);
1515 if (lastName.IsEmpty() == false)
1517 pName->AppendText(CHARACTER_SPACE + lastName);
1520 item.AddControl(*pName);
1523 Button* pButtonExpand = new (std::nothrow) Button();
1524 pButtonExpand->Construct(Rectangle(itemWidth - (H_BUTTON + W_ITEM_GAP), (H_ITEM - H_BUTTON) / 2, H_BUTTON, H_BUTTON));
1525 pButtonExpand->SetActionId(IDA_BUTTON_EXPANDABLE);
1526 pButtonExpand->AddActionEventListener(*this);
1528 Bitmap* pBitmap = null;
1529 Bitmap* pBitmapPressed = null;
1531 if (__isExpandable == true)
1533 pBitmap = ResourceManager::GetBitmapN(IDB_EXPAND_OPENED);
1534 pBitmapPressed = ResourceManager::GetBitmapN(IDB_EXPAND_OPENED_PRESSED);
1538 pBitmap = ResourceManager::GetBitmapN(IDB_EXPAND_CLOSED);
1539 pBitmapPressed = ResourceManager::GetBitmapN(IDB_EXPAND_CLOSED_PRESSED);
1542 if (pBitmap != null)
1544 pButtonExpand->SetNormalBitmap(Point(0, 0), *pBitmap);
1547 if (pBitmapPressed != null)
1549 pButtonExpand->SetPressedBitmap(Point(0, 0), *pBitmapPressed);
1553 delete pBitmapPressed;
1555 pBitmap = ResourceManager::GetBitmapN(IDB_EXPAND_BUTTON_NORMAL);
1556 pBitmapPressed = ResourceManager::GetBitmapN(IDB_EXPAND_BUTTON_PRESSED);
1558 if (pBitmap != null)
1560 pButtonExpand->SetNormalBackgroundBitmap(*pBitmap);
1563 if (pBitmapPressed != null)
1565 pButtonExpand->SetPressedBackgroundBitmap(*pBitmapPressed);
1566 delete pBitmapPressed;
1569 item.AddControl(*pButtonExpand);
1572 Tizen::Ui::Controls::TableViewItem*
1573 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)
1575 TableViewItem* pTableViewItem = new (std::nothrow) TableViewItem();
1576 pTableViewItem->Construct(Dimension(itemWidth, H_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
1577 pTableViewItem->SetBackgroundColor(Color(0), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
1579 EditField* pInputField = new (std::nothrow) EditField();
1580 pInputField->Construct(Rectangle(W_ITEM_GAP, 0, itemWidth - (W_ITEM_GAP * 4) - H_BUTTON - W_TYPE_BUTTON, H_ITEM), style, INPUT_STYLE_OVERLAY);
1581 pInputField->SetGuideText(guideText);
1582 pInputField->SetText(text);
1583 pInputField->AddKeypadEventListener(*this);
1584 pInputField->AddFocusEventListener(*this);
1585 pInputField->AddTextEventListener(*this);
1587 int parsedItemIndex = 0;
1588 parsedItemIndex |= (groupIndex << TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT);
1589 parsedItemIndex |= (groupIndex << TABLE_VIEW_GROUP_INDEX_SHIFT);
1590 parsedItemIndex |= itemIndex;
1592 pInputField->SetName(Integer::ToString(parsedItemIndex));
1593 pTableViewItem->AddControl(*pInputField);
1595 Button *pButtonType = new (std::nothrow) Button();
1596 pButtonType->Construct(Rectangle(pInputField->GetX() + pInputField->GetWidth() + W_ITEM_GAP, (H_ITEM - H_BUTTON) / 2, W_TYPE_BUTTON, H_BUTTON));
1597 pButtonType->SetText(titleText);
1598 pButtonType->AddTouchEventListener(*this);
1599 pButtonType->SetName(Integer::ToString(parsedItemIndex));
1601 Bitmap* pDropBoxIcon = ResourceManager::GetBitmapN(IDB_BUTTON_DROPBOX);
1603 if (pDropBoxIcon != null)
1605 pButtonType->SetNormalBitmap(Point(W_TYPE_BUTTON - W_DROPBOX_ICON, H_BUTTON - H_DROPBOX_ICON), *pDropBoxIcon);
1606 pButtonType->SetPressedBitmap(Point(W_TYPE_BUTTON - W_DROPBOX_ICON, H_BUTTON - H_DROPBOX_ICON), *pDropBoxIcon);
1607 pButtonType->SetDisabledBitmap(Point(W_TYPE_BUTTON - W_DROPBOX_ICON, H_BUTTON - H_DROPBOX_ICON), *pDropBoxIcon);
1608 delete pDropBoxIcon;
1610 pTableViewItem->AddControl(*pButtonType);
1612 Button *pButtonDelete = new (std::nothrow) Button();
1613 pButtonDelete->Construct(Rectangle(itemWidth - H_BUTTON - W_ITEM_GAP, (H_ITEM - H_BUTTON) / 2, H_BUTTON, H_BUTTON));
1614 Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_MINUS);
1615 Bitmap* pBitmapPressed = ResourceManager::GetBitmapN(IDB_BUTTON_MINUS_PRESSED);
1617 if (pBitmap != null)
1619 pButtonDelete->SetNormalBitmap(Point(0, 0), *pBitmap);
1622 if (pBitmapPressed != null)
1624 pButtonDelete->SetPressedBitmap(Point(0, 0), *pBitmapPressed);
1625 delete pBitmapPressed;
1628 pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_DELETE_NORMAL);
1629 pBitmapPressed = ResourceManager::GetBitmapN(IDB_BUTTON_DELETE_PRESSED);
1631 if (pBitmap != null)
1633 pButtonDelete->SetNormalBackgroundBitmap(*pBitmap);
1636 if (pBitmapPressed != null)
1638 pButtonDelete->SetPressedBackgroundBitmap(*pBitmapPressed);
1639 delete pBitmapPressed;
1643 actionId |= TABLE_VIEW_DELETE_INPUT_FIELD_ID;
1644 actionId |= (groupIndex << TABLE_VIEW_GROUP_INDEX_SHIFT);
1645 actionId |= itemIndex;
1647 pButtonDelete->SetActionId(actionId);
1648 pButtonDelete->AddActionEventListener(*this);
1650 pTableViewItem->AddControl(*pButtonDelete);
1652 if (isDeleteButton == false)
1654 pButtonDelete->SetShowState(false);
1657 return pTableViewItem;
1660 Tizen::Ui::Controls::TableViewItem*
1661 ContactEditorForm::GetPhoneNumberFields(int itemIndex, int itemWidth)
1663 if (__pPhoneNumberFieldItem->GetCount() == 0)
1665 int phoneNumberCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER);
1666 String guideText = ResourceManager::GetString(L"IDS_PB_BODY_NUMBER");
1667 String defaultPhoneNumber = __pPresentationModel->GetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER);
1669 for (int i = 0; i < phoneNumberCount; i++)
1671 String typeString = __pPresentationModel->GetType(DETAIL_PROPERTY_PHONE_NUMBER, i);
1672 String phoneNumberString = __pPresentationModel->GetValue(DETAIL_PROPERTY_PHONE_NUMBER, i);
1674 TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX, i, itemWidth, EDIT_FIELD_STYLE_PHONE_NUMBER, typeString, guideText, phoneNumberString, true);
1675 pItem->SetName(Integer::ToString(__pPresentationModel->GetPhoneNumberType(i)));
1677 __pPhoneNumberFieldItem->Add(*pItem);
1680 TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX, phoneNumberCount, itemWidth, EDIT_FIELD_STYLE_PHONE_NUMBER, __pPresentationModel->GetPhoneNumberTypeString(DETAIL_PHONENUMBER_TYPE_MOBILE), guideText);
1681 pItem->SetName(Integer::ToString(DETAIL_PHONENUMBER_TYPE_MOBILE));
1683 __pPhoneNumberFieldItem->Add(*pItem);
1685 SetAsDefaultPhoneNumber(__pPresentationModel->GetDefaultNumberIndex());
1688 if (__pPhoneNumberFieldItem->GetCount() != (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER) + 1))
1690 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"));
1691 pItem->SetName(Integer::ToString(DETAIL_PHONENUMBER_TYPE_MOBILE));
1693 __pPhoneNumberFieldItem->Add(*pItem);
1696 TableViewItem* pItem = static_cast<TableViewItem *>(__pPhoneNumberFieldItem->GetAt(itemIndex));
1705 Tizen::Ui::Controls::TableViewItem*
1706 ContactEditorForm::GetEmailFields(int itemIndex, int itemWidth)
1708 if (__pEmailFieldItem->GetCount() == 0)
1710 int emailCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_EMAIL);
1711 String guideText = ResourceManager::GetString(L"IDS_COM_BODY_EMAIL");
1713 for (int i = 0; i < emailCount; i++)
1715 String typeString = __pPresentationModel->GetType(DETAIL_PROPERTY_EMAIL, i);
1716 String emailString = __pPresentationModel->GetValue(DETAIL_PROPERTY_EMAIL, i);
1718 TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_EMAIL_FIELD_INDEX, i, itemWidth, EDIT_FIELD_STYLE_EMAIL, typeString, guideText, emailString, true);
1719 pItem->SetName(Integer::ToString(__pPresentationModel->GetEmailType(i)));
1721 __pEmailFieldItem->Add(*pItem);
1724 TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_EMAIL_FIELD_INDEX, emailCount, itemWidth, EDIT_FIELD_STYLE_EMAIL, __pPresentationModel->GetEmailTypeString(DETAIL_EMAIL_TYPE_HOME), guideText);
1725 pItem->SetName(Integer::ToString(DETAIL_EMAIL_TYPE_HOME));
1727 __pEmailFieldItem->Add(*pItem);
1730 if (__pEmailFieldItem->GetCount() != (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_EMAIL) + 1))
1732 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"));
1733 pItem->SetName(Integer::ToString(DETAIL_EMAIL_TYPE_HOME));
1735 __pEmailFieldItem->Add(*pItem);
1738 TableViewItem* pItem = static_cast<TableViewItem *>(__pEmailFieldItem->GetAt(itemIndex));
1747 Tizen::Ui::Controls::TableViewItem*
1748 ContactEditorForm::GetAddressFields(int itemIndex, int itemWidth)
1750 if (__pAddressFieldItem->GetCount() == 0)
1752 int addressCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_ADDRESS);
1753 String guideText = ResourceManager::GetString(L"IDS_PB_BODY_ADDRESS");
1755 for (int i = 0; i < addressCount; i++)
1757 String typeString = __pPresentationModel->GetType(DETAIL_PROPERTY_ADDRESS, i);
1758 String addressString = __pPresentationModel->GetValue(DETAIL_PROPERTY_ADDRESS, i);
1760 TableViewItem* pItem= GetInputFieldN(TABLE_VIEW_ADDRESS_FIELD_INDEX, i, itemWidth, EDIT_FIELD_STYLE_NORMAL, typeString, guideText, addressString, true);
1761 pItem->SetName(Integer::ToString(__pPresentationModel->GetAddressType(DETAIL_PROPERTY_ADDRESS, i)));
1763 __pAddressFieldItem->Add(*pItem);
1766 TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_ADDRESS_FIELD_INDEX, addressCount, itemWidth, EDIT_FIELD_STYLE_NORMAL, ResourceManager::GetString(L"IDS_PB_BODY_HOME"), guideText);
1767 pItem->SetName(Integer::ToString(DETAIL_ADDRESS_TYPE_HOME));
1769 __pAddressFieldItem->Add(*pItem);
1772 if (__pAddressFieldItem->GetCount() != (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_ADDRESS) + 1))
1774 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"));
1775 pItem->SetName(Integer::ToString(DETAIL_ADDRESS_TYPE_HOME));
1777 __pAddressFieldItem->Add(*pItem);
1780 TableViewItem* pItem = static_cast<TableViewItem *>(__pAddressFieldItem->GetAt(itemIndex));
1789 Tizen::Ui::Controls::TableViewItem*
1790 ContactEditorForm::GetImAddressFields(int itemIndex, int itemWidth)
1792 if (__pImAddressFieldItem->GetCount() == 0)
1794 int imCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_IM_ADDRESS);
1795 String guideText = ResourceManager::GetString(L"IDS_PB_HEADER_INSTANT_MESSENGER_ABB");
1797 for (int i = 0; i < imCount; i++)
1799 String typeString = __pPresentationModel->GetType(DETAIL_PROPERTY_IM_ADDRESS, i);
1800 String imString = __pPresentationModel->GetValue(DETAIL_PROPERTY_IM_ADDRESS, i);
1802 TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_IM_ADDRESS_FIELD_INDEX, i, itemWidth, EDIT_FIELD_STYLE_NORMAL, typeString, guideText, imString, true);
1803 pItem->SetName(Integer::ToString(__pPresentationModel->GetImAddressType(i)));
1805 __pImAddressFieldItem->Add(*pItem);
1808 TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_IM_ADDRESS_FIELD_INDEX, imCount, itemWidth, EDIT_FIELD_STYLE_NORMAL, IM_ADDRESS_YAHOO, guideText);
1809 pItem->SetName(Integer::ToString(DETAIL_IM_ADDRESS_TYPE_YAHOO));
1811 __pImAddressFieldItem->Add(*pItem);
1814 if (__pImAddressFieldItem->GetCount() != (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_IM_ADDRESS) + 1))
1816 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"));
1817 pItem->SetName(Integer::ToString(DETAIL_IM_ADDRESS_TYPE_YAHOO));
1819 __pImAddressFieldItem->Add(*pItem);
1822 TableViewItem* pItem = static_cast<TableViewItem *>(__pImAddressFieldItem->GetAt(itemIndex));
1831 Tizen::Ui::Controls::TableViewItem*
1832 ContactEditorForm::GetUrlFields(int itemIndex, int itemWidth)
1834 if (__pUrlFieldItem->GetCount() == 0)
1836 int urlCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_URL);
1837 String guideText = ResourceManager::GetString(L"IDS_PB_BODY_URL");
1839 for (int i = 0; i < urlCount; i++)
1841 String typeString = __pPresentationModel->GetType(DETAIL_PROPERTY_URL, i);
1842 String urlString = __pPresentationModel->GetValue(DETAIL_PROPERTY_URL, i);
1844 TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_URL_FIELD_INDEX, i, itemWidth, EDIT_FIELD_STYLE_URL, typeString, guideText, urlString, true);
1845 pItem->SetName(Integer::ToString(__pPresentationModel->GetUrlType(i)));
1847 __pUrlFieldItem->Add(*pItem);
1850 TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_URL_FIELD_INDEX, urlCount, itemWidth, EDIT_FIELD_STYLE_URL, __pPresentationModel->GetUrlTypeString(DETAIL_URL_TYPE_HOME), guideText);
1851 pItem->SetName(Integer::ToString(DETAIL_URL_TYPE_HOME));
1853 __pUrlFieldItem->Add(*pItem);
1856 if (__pUrlFieldItem->GetCount() != (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_URL) + 1))
1858 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"));
1859 pItem->SetName(Integer::ToString(DETAIL_URL_TYPE_HOME));
1861 __pUrlFieldItem->Add(*pItem);
1864 TableViewItem* pItem = static_cast<TableViewItem *>(__pUrlFieldItem->GetAt(itemIndex));
1872 Tizen::Ui::Controls::TableViewItem*
1873 ContactEditorForm::GetGroupsField(int itemWidth)
1875 TableViewItem* pGroupsItem = new (std::nothrow) TableViewItem();
1876 pGroupsItem->Construct(Dimension(itemWidth, H_DOUBLE_LINE_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
1877 pGroupsItem->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND);
1879 Label* pLabelTitle = new (std::nothrow) Label();
1880 pLabelTitle->Construct(Rectangle(0, H_GROUP_RINGTONE_TITLE_GAP, itemWidth, H_GROUP_RINGTONE_TITLE_LABEL), ResourceManager::GetString(L"IDS_PB_BODY_GROUPS"));
1881 pLabelTitle->SetTextConfig(FONT_SIZE_TITLE_TEXT, LABEL_TEXT_STYLE_BOLD);
1882 pLabelTitle->SetTextColor(COLOR_ITEM_TITLE);
1883 pLabelTitle->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
1885 pGroupsItem->AddControl(*pLabelTitle);
1887 String groupsName = __pPresentationModel->GetValue(DETAIL_PROPERTY_GROUP);
1888 if (groupsName.IsEmpty() == true)
1890 groupsName = ResourceManager::GetString(L"IDS_PB_BODY_NOT_ASSIGNED");
1893 Label* pLabelGroupName = new (std::nothrow) Label();
1894 pLabelGroupName->Construct(Rectangle(0, H_GROUP_RINGTONE_TITLE_GAP + H_GROUP_RINGTONE_TITLE_LABEL, itemWidth, H_GROUP_RINGTONE_VALUE_LABEL), groupsName);
1895 pLabelGroupName->SetTextConfig(FONT_SIZE_VALUE_TEXT, LABEL_TEXT_STYLE_NORMAL);
1896 pLabelGroupName->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
1898 pGroupsItem->AddControl(*pLabelGroupName);
1903 Tizen::Ui::Controls::TableViewItem*
1904 ContactEditorForm::GetBirthdayField(int itemWidth)
1906 DateTime birthdayDate;
1907 EditDate* pBirthday = new (std::nothrow) EditDate();
1908 pBirthday->Construct(Point(W_TITLE_LABEL, 0));
1909 pBirthday->AddDateChangeEventListener(*this);
1911 __pPresentationModel->GetBirthday(birthdayDate);
1912 pBirthday->SetDate(birthdayDate);
1914 TableViewItem* pBirthdayItem = new (std::nothrow) TableViewItem();
1915 pBirthdayItem->Construct(Dimension(itemWidth, H_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
1916 pBirthdayItem->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
1917 pBirthdayItem->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
1919 Label* pLabelTitle = new (std::nothrow) Label();
1920 pLabelTitle->Construct(Rectangle(0, 0, W_TITLE_LABEL, pBirthdayItem->GetHeight()), L"");
1921 pLabelTitle->SetText(ResourceManager::GetString(L"IDS_PB_BODY_BIRTHDAY"));
1922 pLabelTitle->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
1923 pLabelTitle->SetTextColor(COLOR_ITEM_TITLE);
1924 pLabelTitle->SetTextConfig(FONT_SIZE_TITLE_TEXT, LABEL_TEXT_STYLE_BOLD);
1926 pBirthdayItem->AddControl(*pLabelTitle);
1927 pBirthdayItem->AddControl(*pBirthday);
1929 Button* pClearButton = new (std::nothrow) Button();
1930 pClearButton->Construct(Rectangle(itemWidth - (H_BUTTON * 2), (pBirthdayItem->GetHeight() - H_BUTTON) / 2, H_BUTTON, H_BUTTON));
1931 pClearButton->SetActionId(IDA_BUTTON_BIRTHDAY_CLEAR);
1932 pClearButton->AddActionEventListener(*this);
1934 Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_RESET_NORMAL);
1935 if (pBitmap != null)
1937 pClearButton->SetNormalBitmap(Point(0, 0), *pBitmap);
1940 pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_RESET_PRESSED);
1941 if (pBitmap != null)
1943 pClearButton->SetPressedBitmap(Point(0, 0), *pBitmap);
1947 pBirthdayItem->AddControl(*pClearButton);
1949 return pBirthdayItem;
1952 Tizen::Ui::Controls::TableViewItem*
1953 ContactEditorForm::GetNoteField(int itemWidth)
1955 if (__pNoteFieldItem != null)
1957 return __pNoteFieldItem;
1960 __pNoteFieldItem = new (std::nothrow) TableViewItem();
1961 __pNoteFieldItem->Construct(Dimension(itemWidth, H_DOUBLE_LINE_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
1962 __pNoteFieldItem->SetBackgroundColor(Color(0), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
1964 ExpandableEditArea* pNoteEditArea = new (std::nothrow) ExpandableEditArea();
1965 pNoteEditArea->Construct(Rectangle(0, 0, itemWidth, H_DOUBLE_LINE_ITEM), EXPANDABLE_EDIT_AREA_STYLE_NORMAL, EXPANDABLE_EDIT_AREA_TITLE_STYLE_TOP);
1966 pNoteEditArea->SetTitleText(ResourceManager::GetString(L"IDS_PB_BODY_NOTE"));
1967 pNoteEditArea->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_NOTE));
1968 pNoteEditArea->AddExpandableEditAreaEventListener(*this);
1969 pNoteEditArea->AddKeypadEventListener(*this);
1970 pNoteEditArea->AddFocusEventListener(*this);
1972 __pNoteFieldItem->AddControl(*pNoteEditArea);
1974 return __pNoteFieldItem;
1977 Tizen::Ui::Controls::TableViewItem*
1978 ContactEditorForm::GetRingtoneField(int itemWidth)
1980 TableViewItem* pRingtoneItem = new (std::nothrow) TableViewItem();
1981 pRingtoneItem->Construct(Dimension(itemWidth, H_DOUBLE_LINE_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
1982 pRingtoneItem->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND);
1984 Label* pLabelTitle = new (std::nothrow) Label();
1985 pLabelTitle->Construct(Rectangle(0, H_GROUP_RINGTONE_TITLE_GAP, itemWidth, H_GROUP_RINGTONE_TITLE_LABEL), ResourceManager::GetString(L"IDS_PB_BODY_RINGTONE"));
1986 pLabelTitle->SetTextConfig(FONT_SIZE_TITLE_TEXT, LABEL_TEXT_STYLE_BOLD);
1987 pLabelTitle->SetTextColor(COLOR_ITEM_TITLE);
1988 pLabelTitle->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
1990 pRingtoneItem->AddControl(*pLabelTitle);
1992 String ringtoneName = __pPresentationModel->GetValue(DETAIL_PROPERTY_RINGTONE);
1996 ringtoneName.LastIndexOf(L"/", ringtoneName.GetLength() - 1, index);
2000 ringtoneName.SubString(index + 1, trimmedPath);
2003 Label* pLabelRingToneName = new (std::nothrow) Label();
2004 pLabelRingToneName->Construct(Rectangle(0, H_GROUP_RINGTONE_TITLE_GAP + H_GROUP_RINGTONE_TITLE_LABEL, itemWidth, H_GROUP_RINGTONE_VALUE_LABEL), trimmedPath);
2005 pLabelRingToneName->SetTextConfig(FONT_SIZE_VALUE_TEXT, LABEL_TEXT_STYLE_NORMAL);
2006 pLabelRingToneName->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
2008 pRingtoneItem->AddControl(*pLabelRingToneName);
2010 return pRingtoneItem;
2013 Tizen::Ui::Controls::TableViewItem*
2014 ContactEditorForm::GetMoreInformationField(int itemWidth)
2016 TableViewItem* pMoreInformationItem = new (std::nothrow) TableViewItem();
2017 pMoreInformationItem->Construct(Dimension(itemWidth, H_DESCRIPTION_CONTAINER));
2018 pMoreInformationItem->SetBackgroundColor(Color(COLOR_TABLE_VIEW_BG), TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
2019 pMoreInformationItem->SetBackgroundColor(Color(COLOR_TABLE_VIEW_BG), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
2021 Panel* pPanel = new (std::nothrow) Panel();
2022 pPanel->Construct(Rectangle(0, -(H_DIVIDER), itemWidth, H_DESCRIPTION_CONTAINER + H_DIVIDER));
2023 pPanel->SetBackgroundColor(Color(COLOR_TABLE_VIEW_BG));
2025 pMoreInformationItem->AddControl(*pPanel);
2027 Button* pButtonMoreInformation = new (std::nothrow) Button();
2028 pButtonMoreInformation->Construct(Rectangle(X_MORE_INFORMATION_BUTTON, Y_MORE_INFORMATION_BUTTON, itemWidth - (X_MORE_INFORMATION_BUTTON * 2), H_BUTTON));
2029 pButtonMoreInformation->SetText(ResourceManager::GetString(L"IDS_KA_BODY_MORE_INFORMATION"));
2030 pButtonMoreInformation->SetActionId(IDA_BUTTON_MORE_INFO);
2031 pButtonMoreInformation->AddActionEventListener(*this);
2033 pPanel->AddControl(*pButtonMoreInformation);
2035 return pMoreInformationItem;
2038 Tizen::Ui::Controls::TableViewItem*
2039 ContactEditorForm::GetDefaultPhoneNumberItem(int itemWidth)
2041 TableViewItem* pDefaultPhoneNumberItem = new (std::nothrow) TableViewItem();
2042 pDefaultPhoneNumberItem->Construct(Dimension(itemWidth, H_ITEM));
2043 pDefaultPhoneNumberItem->SetBackgroundColor(Color(0), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
2045 Button* pButtonDefaultNumber = new (std::nothrow) Button();
2046 pButtonDefaultNumber->Construct(Rectangle(X_MORE_INFORMATION_BUTTON, Y_DEFAULT_NUMBER_BUTTON, itemWidth - (X_MORE_INFORMATION_BUTTON * 2), H_BUTTON));
2047 pButtonDefaultNumber->SetText(ResourceManager::GetString(L"IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"));
2048 pButtonDefaultNumber->SetActionId(IDA_BUTTON_DEFAULT_PHONE_NUMBER);
2049 pButtonDefaultNumber->AddActionEventListener(*this);
2051 pDefaultPhoneNumberItem->AddControl(*pButtonDefaultNumber);
2053 return pDefaultPhoneNumberItem;
2057 ContactEditorForm::DeleteInputField(int groupIndex, int itemIndex)
2059 result r = E_SUCCESS;
2060 ArrayList* pFieldList = null;
2064 case TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX:
2066 pFieldList = __pPhoneNumberFieldItem;
2069 case TABLE_VIEW_EMAIL_FIELD_INDEX:
2071 pFieldList = __pEmailFieldItem;
2074 case TABLE_VIEW_ADDRESS_FIELD_INDEX:
2076 pFieldList = __pAddressFieldItem;
2079 case TABLE_VIEW_IM_ADDRESS_FIELD_INDEX:
2081 pFieldList = __pImAddressFieldItem;
2084 case TABLE_VIEW_URL_FIELD_INDEX:
2086 pFieldList = __pUrlFieldItem;
2093 TryReturn(pFieldList != null, E_FAILURE, "[E_FAILURE] Unable to delete the item.")
2095 r = pFieldList->RemoveAt(itemIndex, false);
2096 __isDataRemoved = true;
2097 __pTableView->RefreshItem(groupIndex, itemIndex, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
2098 __isDataRemoved = false;
2100 Rectangle clientBounds = GetClientAreaBounds();
2101 __pTableView->SetSize(clientBounds.width, clientBounds.height);
2103 for (int i = itemIndex; i < pFieldList->GetCount(); i++)
2105 TableViewItem* pItem = static_cast<TableViewItem *>(pFieldList->GetAt(i));
2112 EditField* pInputField = static_cast<EditField*>(pItem->GetControl(0));
2113 if (pInputField == null)
2118 result r = Integer::Decode(pInputField->GetName(), parsedIndex);
2119 if (r == E_NUM_FORMAT)
2123 pInputField->SetName(Integer::ToString(parsedIndex - 1));
2125 Button* pTypeButton = static_cast<Button*>(pItem->GetControl(1));
2126 if (pTypeButton == null)
2131 r = Integer::Decode(pTypeButton->GetName(), parsedIndex);
2132 if (r == E_NUM_FORMAT)
2136 pTypeButton->SetName(Integer::ToString(parsedIndex - 1));
2138 Button* pDeleteButton = static_cast<Button *>(pItem->GetControl(2));
2139 if (pDeleteButton == null)
2143 pDeleteButton->SetActionId(pDeleteButton->GetActionId() - 1);
2146 SaveContactData(false);
2147 SetSaveButtonEnabled(IsSaveContactValid());
2149 if (groupIndex == TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX)
2151 if (itemIndex == __pPresentationModel->GetDefaultNumberIndex())
2155 SetAsDefaultPhoneNumber(itemIndex - 1);
2159 SetAsDefaultPhoneNumber(itemIndex);
2162 else if (itemIndex < __pPresentationModel->GetDefaultNumberIndex())
2164 SetAsDefaultPhoneNumber(__pPresentationModel->GetDefaultNumberIndex() - 1);
2168 if (__isDefaultPhoneNumberButtonEnabled == true && __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER) < 2)
2170 __pTableView->RefreshItem(TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX, __pTableView->GetItemCountAt(TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX) - 1, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
2172 __isDefaultPhoneNumberButtonEnabled = false;
2179 ContactEditorForm::SetThumbnailControls(Tizen::Ui::Controls::TableViewItem& item, bool isUpdated)
2181 Label* pLabelThumbnail = null;
2182 Button* pButtonAdd = null;
2183 Button* pButtonDelete = null;
2185 if (isUpdated == false)
2187 int itemWidth = GetBounds().width;
2189 pLabelThumbnail = new (std::nothrow) Label();
2190 pLabelThumbnail->Construct(Rectangle((itemWidth - W_THUMBNAIL) / 2, 0, W_THUMBNAIL, W_THUMBNAIL), L"");
2192 item.AddControl(*pLabelThumbnail);
2194 Bitmap* pBitmapItem = null;
2195 Bitmap* pBitmapItemPressed = null;
2197 pButtonAdd = new (std::nothrow) Button();
2198 pButtonAdd->Construct(Rectangle(pLabelThumbnail->GetX() + ((pLabelThumbnail->GetWidth() - H_BUTTON) / 2), pLabelThumbnail->GetY() + ((pLabelThumbnail->GetHeight() - H_BUTTON) / 2), H_BUTTON, H_BUTTON));
2199 pButtonAdd->SetActionId(IDA_BUTTON_THUMBNAIL_ADD);
2200 pButtonAdd->AddActionEventListener(*this);
2202 pBitmapItem = ResourceManager::GetBitmapN(IDB_BUTTON_ADD);
2203 pBitmapItemPressed = ResourceManager::GetBitmapN(IDB_BUTTON_ADD_PRESSED);
2205 if (pBitmapItem != null)
2207 pButtonAdd->SetNormalBackgroundBitmap(*pBitmapItem);
2210 if (pBitmapItemPressed != null)
2212 pButtonAdd->SetPressedBackgroundBitmap(*pBitmapItemPressed);
2213 delete pBitmapItemPressed;
2215 item.AddControl(*pButtonAdd);
2217 pButtonDelete = new (std::nothrow) Button();
2218 pButtonDelete->Construct(Rectangle(pLabelThumbnail->GetX() + W_THUMBNAIL_DELETE_BUTTON_GAP, pLabelThumbnail->GetY() + H_THUMBNAIL_DELETE_BUTTON_GAP, H_BUTTON, H_BUTTON));
2219 pButtonDelete->SetActionId(IDA_BUTTON_THUMBNAIL_DELETE);
2220 pButtonDelete->AddActionEventListener(*this);
2222 pBitmapItem = ResourceManager::GetBitmapN(IDB_BUTTON_MINUS);
2223 pBitmapItemPressed = ResourceManager::GetBitmapN(IDB_BUTTON_MINUS_PRESSED);
2225 if (pBitmapItem != null)
2227 pButtonDelete->SetNormalBitmap(Point(0, 0), *pBitmapItem);
2230 if (pBitmapItemPressed != null)
2232 pButtonDelete->SetPressedBitmap(Point(0, 0), *pBitmapItemPressed);
2233 delete pBitmapItemPressed;
2236 pBitmapItem = ResourceManager::GetBitmapN(IDB_BUTTON_DELETE_NORMAL);
2237 pBitmapItemPressed = ResourceManager::GetBitmapN(IDB_BUTTON_DELETE_PRESSED);
2239 if (pBitmapItem != null)
2241 pButtonDelete->SetNormalBackgroundBitmap(*pBitmapItem);
2244 if (pBitmapItemPressed != null)
2246 pButtonDelete->SetPressedBackgroundBitmap(*pBitmapItemPressed);
2247 delete pBitmapItemPressed;
2249 item.AddControl(*pButtonDelete);
2251 Button* pButtonCamera = new (std::nothrow) Button();
2252 pButtonCamera->Construct(Rectangle(pLabelThumbnail->GetX() + pLabelThumbnail->GetWidth(), pLabelThumbnail->GetY() + pLabelThumbnail->GetHeight() - H_BUTTON, H_BUTTON, H_BUTTON));
2253 pButtonCamera->SetActionId(IDA_BUTTON_CAMERA);
2254 pButtonCamera->AddActionEventListener(*this);
2256 pBitmapItem = ResourceManager::GetBitmapN(IDB_BUTTON_CAMERA);
2257 pBitmapItemPressed = ResourceManager::GetBitmapN(IDB_BUTTON_CAMERA_PRESSED);
2258 if (pBitmapItem != null)
2260 pButtonCamera->SetNormalBackgroundBitmap(*pBitmapItem);
2263 if (pBitmapItemPressed != null)
2265 pButtonCamera->SetPressedBackgroundBitmap(*pBitmapItemPressed);
2266 delete pBitmapItemPressed;
2269 item.AddControl(*pButtonCamera);
2273 pLabelThumbnail = static_cast<Label*>(item.GetControl(0));
2274 TryReturnVoid(pLabelThumbnail != null, "[E_FAILURE] Unable to get a thumbnail control.");
2276 pButtonAdd = static_cast<Button*>(item.GetControl(1));
2277 TryReturnVoid(pButtonAdd != null, "[E_FAILURE] Unable to get a button.");
2279 pButtonDelete = static_cast<Button*>(item.GetControl(2));
2280 TryReturnVoid(pButtonDelete != null, "[E_FAILURE] Unable to get a button.");
2283 Bitmap* pThumbnail = null;
2284 String thumbnailPath = __pPresentationModel->GetValue(DETAIL_PROPERTY_THUMBNAIL);
2286 if (thumbnailPath.IsEmpty() == false)
2288 ImageBuffer thumbnailImageBuffer;
2289 result r = thumbnailImageBuffer.Construct(thumbnailPath);
2292 pThumbnail = thumbnailImageBuffer.GetBitmapN(BITMAP_PIXEL_FORMAT_ARGB8888, BUFFER_SCALING_NONE);
2294 if (pThumbnail != null)
2296 pThumbnail->SetScalingQuality(BITMAP_SCALING_QUALITY_HIGH);
2297 pThumbnail->Scale(Dimension(W_THUMBNAIL, W_THUMBNAIL));
2298 pLabelThumbnail->SetBackgroundBitmap(*pThumbnail);
2299 pButtonAdd->SetShowState(false);
2300 pButtonDelete->SetShowState(true);
2305 pThumbnail = ResourceManager::GetBitmapN(IDB_THUMBNAIL_BACKGROUND);
2306 if (pThumbnail != null)
2308 pLabelThumbnail->SetBackgroundBitmap(*pThumbnail);
2309 pButtonAdd->SetShowState(true);
2310 pButtonDelete->SetShowState(false);
2318 ContactEditorForm::AddHorizontalDivider(Tizen::Ui::Controls::TableViewItem* pItem, int positionY, int width)
2320 Label* pDivider = new (std::nothrow) Label();
2321 pDivider->Construct(Rectangle(0, positionY, width, H_DIVIDER), L"");
2322 pDivider->SetBackgroundColor(Color(COLOR_DIVIDER));
2323 pDivider->SetEnabled(false);
2325 pItem->AddControl(*pDivider);
2329 ContactEditorForm::AddVerticalDivider(Tizen::Ui::Controls::TableViewItem* pItem, int positionX, int positionY)
2331 Label* pDivider = new (std::nothrow) Label();
2332 pDivider->Construct(Rectangle(positionX, positionY, W_DIVIDER, H_ITEM), L"");
2333 pDivider->SetBackgroundColor(Color(COLOR_DIVIDER));
2334 pDivider->SetEnabled(false);
2336 pItem->AddControl(*pDivider);
2340 ContactEditorForm::SetAsDefaultPhoneNumber(int index)
2342 result r = E_SUCCESS;
2343 TableViewItem* pItem = null;
2344 EditField* pEditField = null;
2345 int previousDefaultIndex = __pPresentationModel->GetDefaultNumberIndex();
2347 pItem = static_cast<TableViewItem *>(__pPhoneNumberFieldItem->GetAt(previousDefaultIndex));
2354 pEditField = static_cast<EditField *>(pItem->GetControl(0));
2355 if (pEditField == null)
2361 pEditField->SetTextColor(EDIT_TEXT_COLOR_NORMAL, Color(0xFF000000));
2362 pEditField->SetTextColor(EDIT_TEXT_COLOR_HIGHLIGHTED, Color(0xFF000000));
2364 if (pEditField->IsVisible() == false)
2366 __pTableView->ScrollToItem(TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX, previousDefaultIndex);
2368 pEditField->Invalidate(true);
2370 pItem = static_cast<TableViewItem *>(__pPhoneNumberFieldItem->GetAt(index));
2377 pEditField = static_cast<EditField *>(pItem->GetControl(0));
2378 if (pEditField == null)
2384 __pPresentationModel->SetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER, L"", index);
2385 pEditField->SetTextColor(EDIT_TEXT_COLOR_NORMAL, Color(0xFFFF00FF));
2386 pEditField->SetTextColor(EDIT_TEXT_COLOR_HIGHLIGHTED, Color(0xFFFF00FF));
2388 if (pEditField->IsVisible() == false)
2390 __pTableView->ScrollToItem(TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX, index);
2392 pEditField->Invalidate(true);
2399 ContactEditorForm::ChangeNameFieldStatus(void)
2401 result r = E_SUCCESS;
2403 r = SaveNameFields();
2405 __isExpandable = (__isExpandable == true) ? false : true;
2411 ContactEditorForm::SaveContactData(bool isSaved)
2413 result r = E_SUCCESS;
2415 r = SaveNameFields();
2417 for (int i = 0; i < __pPhoneNumberFieldItem->GetCount(); i++)
2419 TableViewItem* pItem = static_cast<TableViewItem *>(__pPhoneNumberFieldItem->GetAt(i));
2426 EditField* pEditField = static_cast<EditField *>(pItem->GetControl(0));
2427 if (pEditField == null)
2433 String phoneNumberString(pEditField->GetText());
2434 String phoneNumberTypeString(pItem->GetName());
2435 int phoneNumberType;
2437 phoneNumberString.Trim();
2438 Integer::Parse(phoneNumberTypeString, phoneNumberType);
2440 __pPresentationModel->SetPhoneNumber((DetailPhoneNumberType)phoneNumberType, phoneNumberString, i);
2443 for (int i = 0; i < __pEmailFieldItem->GetCount(); i++)
2445 TableViewItem* pItem = static_cast<TableViewItem *>(__pEmailFieldItem->GetAt(i));
2452 EditField* pEditField = static_cast<EditField *>(pItem->GetControl(0));
2453 if (pEditField == null)
2459 String emailString(pEditField->GetText());
2460 String emailTypeString(pItem->GetName());
2464 Integer::Parse(emailTypeString, emailType);
2466 r = __pPresentationModel->SetEmail((DetailEmailType)emailType, emailString, i);
2468 if (isSaved == true && r == E_SUCCESS)
2471 int existedDotIndex;
2473 r = emailString.IndexOf(CHARACTER_AT, 0, existedAtIndex);
2476 r = emailString.IndexOf(CHARACTER_DOT, existedAtIndex + 2, existedDotIndex);
2479 if (r != E_SUCCESS || emailString.GetLength() == (existedDotIndex + 1))
2482 MessageBox invalidEmailMessage;
2483 invalidEmailMessage.Construct(L"", ResourceManager::GetString(L"IDS_PB_POP_INVALID_EMAIL_ADDRESS"), MSGBOX_STYLE_OK);
2484 invalidEmailMessage.ShowAndWait(modalResult);
2486 pEditField->ShowKeypad();
2493 for (int i = 0; i < __pAddressFieldItem->GetCount(); i++)
2495 TableViewItem* pItem = static_cast<TableViewItem *>(__pAddressFieldItem->GetAt(i));
2502 EditField* pEditField = static_cast<EditField *>(pItem->GetControl(0));
2503 if (pEditField == null)
2509 String addressString(pEditField->GetText());
2511 addressString.Trim();
2512 __pPresentationModel->SetValue(DETAIL_PROPERTY_ADDRESS_STREET, addressString, i);
2515 for (int i = 0; i < __pImAddressFieldItem->GetCount(); i++)
2517 TableViewItem* pItem = static_cast<TableViewItem *>(__pImAddressFieldItem->GetAt(i));
2524 EditField* pEditField = static_cast<EditField *>(pItem->GetControl(0));
2525 if (pEditField == null)
2531 String addressString(pEditField->GetText());
2532 String addressTypeString(pItem->GetName());
2535 addressString.Trim();
2536 Integer::Parse(addressTypeString, addressType);
2538 __pPresentationModel->SetImAddress((DetailImAddressType)addressType, addressString, i);
2541 for (int i = 0; i < __pUrlFieldItem->GetCount(); i++)
2543 TableViewItem* pItem = static_cast<TableViewItem *>(__pUrlFieldItem->GetAt(i));
2550 EditField* pEditField = static_cast<EditField *>(pItem->GetControl(0));
2551 if (pEditField == null)
2557 String urlString(pEditField->GetText());
2558 String urlTypeString(pItem->GetName());
2562 Integer::Parse(urlTypeString, urlType);
2564 __pPresentationModel->SetUrl((DetailUrlType)urlType, urlString, i);
2567 if (__pNoteFieldItem != null)
2570 ExpandableEditArea* pNoteEditArea = static_cast<ExpandableEditArea *>(__pNoteFieldItem->GetControl(0));
2571 if (pNoteEditArea != null)
2573 noteString.Append(pNoteEditArea->GetText());
2576 __pPresentationModel->SetValue(DETAIL_PROPERTY_NOTE, noteString);
2579 if (isSaved == true)
2581 r = __pPresentationModel->AddAddressBook();
2588 ContactEditorForm::SaveNameFields(void)
2590 result r = E_SUCCESS;
2592 if (__pNameFieldItem == null)
2597 if (__isExpandable == true)
2599 EditField* pFirstName = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_FIRST_NAME"), false));
2600 if (pFirstName == null)
2604 __pPresentationModel->SetValue(DETAIL_PROPERTY_FIRST_NAME, pFirstName->GetText());
2606 EditField* pLastName = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_LAST_NAME"), false));
2607 if (pLastName == null)
2612 __pPresentationModel->SetValue(DETAIL_PROPERTY_LAST_NAME, pLastName->GetText());
2614 EditField* pMiddleName = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_MIDDLE_NAME"), false));
2615 if (pMiddleName == null)
2619 __pPresentationModel->SetValue(DETAIL_PROPERTY_MIDDLE_NAME, pMiddleName->GetText());
2621 EditField* pSuffix = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_SUFFIX"), false));
2622 if (pSuffix == null)
2626 __pPresentationModel->SetValue(DETAIL_PROPERTY_NAME_SUFFIX, pSuffix->GetText());
2628 EditField* pNickName = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_NICKNAME"), false));
2629 if (pNickName == null)
2633 __pPresentationModel->SetValue(DETAIL_PROPERTY_NICK_NAME, pNickName->GetText());
2635 EditField* pCompanyName = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_COMPANY"), false));
2636 if (pCompanyName == null)
2640 __pPresentationModel->SetValue(DETAIL_PROPERTY_COMPANY, pCompanyName->GetText());
2642 if (__isJobTitleEnabled == true)
2644 EditField* pJobTitle = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_JOB_TITLE"), false));
2645 if (pJobTitle == null)
2649 __pPresentationModel->SetValue(DETAIL_PROPERTY_JOB_TITLE, pJobTitle->GetText());
2652 if (__isDepartmentEnabled == true)
2654 EditField* pDepartment = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_DEPARTMENT"), false));
2655 if (pDepartment == null)
2659 __pPresentationModel->SetValue(DETAIL_PROPERTY_DEPARTMENT, pDepartment->GetText());
2664 EditField* pName = static_cast<EditField *>(__pNameFieldItem->GetControl(Integer::ToString(IDA_INPUT_FIELD_DISPLAY_NAME), false));
2670 String displayName(pName->GetText());
2675 displayName.IndexOf(CHARACTER_SPACE, 0, delimeterIndex);
2677 if (delimeterIndex < 0)
2679 firstName.Append(displayName);
2683 displayName.SubString(0, delimeterIndex++, firstName);
2684 displayName.SubString(delimeterIndex, displayName.GetLength() - delimeterIndex, lastName);
2687 __pPresentationModel->SetValue(DETAIL_PROPERTY_FIRST_NAME, firstName);
2688 __pPresentationModel->SetValue(DETAIL_PROPERTY_LAST_NAME, lastName);
2695 ContactEditorForm::IsSaveContactValid(void)
2697 if (__pPresentationModel->GetValue(DETAIL_PROPERTY_FIRST_NAME).IsEmpty() == false)
2702 if (__pPresentationModel->GetValue(DETAIL_PROPERTY_LAST_NAME).IsEmpty() == false)
2707 for (int i = 0; i < __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER); i++)
2709 if (__pPresentationModel->GetValue(DETAIL_PROPERTY_PHONE_NUMBER, i).IsEmpty() == false)
2715 for (int i = 0; i < __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_EMAIL); i++)
2717 if (__pPresentationModel->GetValue(DETAIL_PROPERTY_EMAIL, i).IsEmpty() == false)
2727 ContactEditorForm::SetSaveButtonEnabled(bool enable)
2729 Footer* pFooter = GetFooter();
2733 pFooter->SetItemEnabled(0, true);
2737 pFooter->SetItemEnabled(0, false);
2740 pFooter->Invalidate(true);
2744 ContactEditorForm::IsMoreInformationButtonVisible(void)
2746 if (__isJobTitleEnabled == false)
2751 if (__isDepartmentEnabled == false)
2756 if (__pImAddressFieldItem->GetCount() == 0)
2761 if (__pUrlFieldItem->GetCount() == 0)
2767 if (__pPresentationModel->GetBirthday(birthday) != E_SUCCESS)
2772 if (__pNoteFieldItem == null)
2781 ContactEditorForm::OnTextValueChanged(const Tizen::Ui::Control& source)
2783 TableViewItem* pTableViewItem = static_cast<TableViewItem *>(source.GetParent());
2785 if (pTableViewItem == null)
2790 SaveContactData(false);
2791 SetSaveButtonEnabled(IsSaveContactValid());
2793 if (__pNameFieldItem == pTableViewItem)
2798 EditField* pEditField = const_cast<EditField *>(static_cast<const EditField *>(&source));
2799 if (pEditField == null)
2804 Control* pDeleteButton = pTableViewItem->GetControl(2);
2805 if (pDeleteButton == null)
2810 String trimmedString = pEditField->GetText();
2811 trimmedString.Trim();
2813 if (trimmedString.IsEmpty())
2815 pDeleteButton->SetShowState(false);
2820 if (pDeleteButton->GetShowState())
2825 pDeleteButton->SetShowState(true);
2831 Integer::Decode(pEditField->GetName(), index);
2832 groupIndex = (index & TABLE_VIEW_GROUP_INDEX_MASK) >> TABLE_VIEW_GROUP_INDEX_SHIFT;
2833 itemCount = __pTableView->GetItemCountAt(groupIndex);
2834 if (groupIndex == TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX)
2836 if (__isDefaultPhoneNumberButtonEnabled == false && __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER) > 1)
2838 __isDefaultPhoneNumberButtonEnabled = true;
2839 __pTableView->RefreshItem(groupIndex, __pTableView->GetItemCountAt(groupIndex), TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
2841 else if (itemCount > 1)
2846 __pTableView->RefreshItem(groupIndex, itemCount, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
2850 ContactEditorForm::OnTextValueChangeCanceled(const Tizen::Ui::Control& source)
2855 ContactEditorForm::ParseAppControlArgument(const Tizen::Base::String& argument, Tizen::Base::String& type, Tizen::Base::String& content)
2857 result r = E_SUCCESS;
2859 if (argument.IsEmpty() || argument.Contains(DELIMITER) == false)
2866 argument.IndexOf(DELIMITER, 0, delimiterIndex);
2867 argument.SubString(0, delimiterIndex++, type);
2868 TryReturn(r == E_SUCCESS, r, "[%s] Unable to get type", GetErrorMessage(r));
2869 argument.SubString(delimiterIndex, argument.GetLength() - delimiterIndex, content);
2870 TryReturn(r == E_SUCCESS, r, "[%s] Unable to get type", GetErrorMessage(r));
2876 ContactEditorForm::OnFocusGained(const Tizen::Ui::Control& source)
2878 __pCurrentFocusedItem = source.GetParent();
2880 if (__pCurrentFocusedItem == __pNameFieldItem)
2885 ArrayList* pFieldList = null;
2889 const EditField* pEditField = static_cast<const EditField*>(&source);
2890 if (pEditField != null)
2894 Integer::Decode(pEditField->GetName(), index);
2895 groupIndex = (index & TABLE_VIEW_GROUP_INDEX_MASK) >> TABLE_VIEW_GROUP_INDEX_SHIFT;
2896 itemIndex = (index & TABLE_VIEW_ITEM_INDEX_MASK);
2901 case TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX:
2903 pFieldList = __pPhoneNumberFieldItem;
2906 case TABLE_VIEW_EMAIL_FIELD_INDEX:
2908 pFieldList = __pEmailFieldItem;
2911 case TABLE_VIEW_ADDRESS_FIELD_INDEX:
2913 pFieldList = __pAddressFieldItem;
2916 case TABLE_VIEW_IM_ADDRESS_FIELD_INDEX:
2918 pFieldList = __pImAddressFieldItem;
2921 case TABLE_VIEW_URL_FIELD_INDEX:
2923 pFieldList = __pUrlFieldItem;
2930 TryReturnVoid(pFieldList != null, "[E_FAILURE] Unable to get a input field.");
2932 for (int i = pFieldList->GetCount() - 2; i >= 0; i--)
2934 TableViewItem* pTableViewItem = static_cast<TableViewItem*>(pFieldList->GetAt(i));
2935 if (pTableViewItem != null)
2937 EditField* pInputField = static_cast<EditField*>(pTableViewItem->GetControl(0));
2938 if (i != itemIndex && pInputField != null && pInputField->GetTextLength() == 0)
2940 DeleteInputField(groupIndex, i);
2947 ContactEditorForm::OnFocusLost(const Tizen::Ui::Control& source)
2949 if (__pCurrentFocusedItem == __pNameFieldItem)
2954 __pCurrentFocusedItem = null;
2958 ContactEditorForm::ShowDefaultPhoneNumberContextMenu(const Tizen::Graphics::Point& position)
2960 if (__pDefaultPhoneNumberContextMenu != null)
2962 delete __pDefaultPhoneNumberContextMenu;
2963 __pDefaultPhoneNumberContextMenu = null;
2966 __pDefaultPhoneNumberContextMenu = new (std::nothrow) ContextMenu();
2967 __pDefaultPhoneNumberContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST);
2968 __pDefaultPhoneNumberContextMenu->AddActionEventListener(*this);
2970 int count = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER);
2971 int defaultPhoneNumberIndex = __pPresentationModel->GetDefaultNumberIndex();
2973 for (int i = 0; i < count; i++)
2975 String phoneNumber(__pPresentationModel->GetValue(DETAIL_PROPERTY_PHONE_NUMBER, i));
2977 if (i != defaultPhoneNumberIndex)
2979 phoneNumber.Insert(__pPresentationModel->GetType(DETAIL_PROPERTY_PHONE_NUMBER, i) + CHARACTER_SPACE, 0);
2980 __pDefaultPhoneNumberContextMenu->AddItem(phoneNumber, i);
2984 if (__pDefaultPhoneNumberContextMenu->GetItemCount() > 0)
2986 __pDefaultPhoneNumberContextMenu->Show();
2991 ContactEditorForm::ShowMoreInformationContextMenu(const Tizen::Graphics::Point& position)
2993 if (__pMoreInformationContextMenu != null)
2995 delete __pMoreInformationContextMenu;
2996 __pMoreInformationContextMenu = null;
2999 __pMoreInformationContextMenu = new (std::nothrow) ContextMenu();
3000 __pMoreInformationContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST);
3002 __pMoreInformationContextMenu->SetMaxVisibleItemsCount(6);
3003 __pMoreInformationContextMenu->AddActionEventListener(*this);
3005 if (__isJobTitleEnabled == false)
3007 __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_BODY_JOB_TITLE"), IDA_CONTEXT_MENU_ITEM_JOB_TITLE);
3010 if (__isDepartmentEnabled == false)
3012 __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_BODY_DEPARTMENT"), IDA_CONTEXT_MENU_ITEM_DEPARTMENT);
3015 if (__pImAddressFieldItem->GetCount() == 0)
3017 __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_HEADER_INSTANT_MESSENGER_ABB"), IDA_CONTEXT_MENU_ITEM_INSTANT_MESSENGER);
3020 if (__pUrlFieldItem->GetCount() == 0)
3022 __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_BODY_URL"), IDA_CONTEXT_MENU_ITEM_URL);
3026 if (__pPresentationModel->GetBirthday(birthday) != E_SUCCESS)
3028 __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_BODY_BIRTHDAY"), IDA_CONTEXT_MENU_ITEM_BIRTHDAY);
3031 if (__pNoteFieldItem == null)
3033 __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_BODY_NOTE"), IDA_CONTEXT_MENU_ITEM_NOTE);
3036 if (__isMoreInformationContextMenuShowing == false)
3038 __pMoreInformationContextMenu->Show();
3043 ContactEditorForm::ShowTypeContextMenu(DetailPhoneNumberType currentType, const Tizen::Graphics::Point& position, int itemTag)
3045 if (__pTypeContextMenu != null)
3047 delete __pTypeContextMenu;
3048 __pTypeContextMenu = null;
3051 __pTypeContextMenu = new (std::nothrow) ContextMenu();
3052 __pTypeContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST, CONTEXT_MENU_ANCHOR_DIRECTION_LEFTWARD);
3054 __pTypeContextMenu->SetMaxVisibleItemsCount(DETAIL_PHONENUMBER_TYPE_OTHER + 1);
3055 __pTypeContextMenu->AddActionEventListener(*this);
3057 for (int i = 0; i <= DETAIL_PHONENUMBER_TYPE_OTHER; i++)
3059 int index = i << TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
3060 __pTypeContextMenu->AddItem(__pPresentationModel->GetPhoneNumberTypeString((DetailPhoneNumberType)i), itemTag | index);
3063 __pTypeContextMenu->RemoveItemAt((int)currentType);
3065 __pTypeContextMenu->Show();
3069 ContactEditorForm::ShowTypeContextMenu(DetailEmailType currentType, const Tizen::Graphics::Point& position, int itemTag)
3071 if (__pTypeContextMenu != null)
3073 delete __pTypeContextMenu;
3074 __pTypeContextMenu = null;
3077 __pTypeContextMenu = new (std::nothrow) ContextMenu();
3078 __pTypeContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST, CONTEXT_MENU_ANCHOR_DIRECTION_LEFTWARD);
3080 __pTypeContextMenu->SetMaxVisibleItemsCount(DETAIL_EMAIL_TYPE_OTHER + 1);
3081 __pTypeContextMenu->AddActionEventListener(*this);
3083 for (int i = 0; i <= DETAIL_EMAIL_TYPE_OTHER; i++)
3085 int index = i << TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
3086 __pTypeContextMenu->AddItem(__pPresentationModel->GetAddressTypeString((DetailAddressType)i), itemTag | index);
3089 __pTypeContextMenu->RemoveItemAt((int)currentType);
3091 __pTypeContextMenu->Show();
3095 ContactEditorForm::ShowTypeContextMenu(DetailAddressType currentType, const Tizen::Graphics::Point& position, int itemTag)
3097 if (__pTypeContextMenu != null)
3099 delete __pTypeContextMenu;
3100 __pTypeContextMenu = null;
3103 __pTypeContextMenu = new (std::nothrow) ContextMenu();
3104 __pTypeContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST, CONTEXT_MENU_ANCHOR_DIRECTION_LEFTWARD);
3106 __pTypeContextMenu->SetMaxVisibleItemsCount(DETAIL_ADDRESS_TYPE_OTHER + 1);
3107 __pTypeContextMenu->AddActionEventListener(*this);
3109 for (int i = 0; i <= DETAIL_ADDRESS_TYPE_OTHER; i++)
3111 int index = i << TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
3112 __pTypeContextMenu->AddItem(__pPresentationModel->GetAddressTypeString((DetailAddressType)i), itemTag | index);
3115 __pTypeContextMenu->RemoveItemAt((int)currentType);
3117 __pTypeContextMenu->Show();
3121 ContactEditorForm::ShowTypeContextMenu(DetailUrlType currentType, const Tizen::Graphics::Point& position, int itemTag)
3123 if (__pTypeContextMenu != null)
3125 delete __pTypeContextMenu;
3126 __pTypeContextMenu = null;
3129 __pTypeContextMenu = new (std::nothrow) ContextMenu();
3130 __pTypeContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST, CONTEXT_MENU_ANCHOR_DIRECTION_LEFTWARD);
3132 __pTypeContextMenu->SetMaxVisibleItemsCount(DETAIL_URL_TYPE_OTHER + 1);
3133 __pTypeContextMenu->AddActionEventListener(*this);
3135 for (int i = 0; i <= DETAIL_URL_TYPE_OTHER; i++)
3137 int index = i << TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
3138 __pTypeContextMenu->AddItem(__pPresentationModel->GetUrlTypeString((DetailUrlType)i), itemTag | index);
3141 __pTypeContextMenu->RemoveItemAt((int)currentType);
3143 __pTypeContextMenu->Show();
3147 ContactEditorForm::ShowTypeContextMenu(DetailImAddressType currentType, const Tizen::Graphics::Point& position, int itemTag)
3149 if (__pTypeContextMenu != null)
3151 delete __pTypeContextMenu;
3152 __pTypeContextMenu = null;
3155 __pTypeContextMenu = new (std::nothrow) ContextMenu();
3156 __pTypeContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST, CONTEXT_MENU_ANCHOR_DIRECTION_LEFTWARD);
3158 __pTypeContextMenu->SetMaxVisibleItemsCount(7); // Temporary the code due to limit max count(8) by UI framework.
3159 __pTypeContextMenu->AddActionEventListener(*this);
3161 for (int i = 0; i <= DETAIL_IM_ADDRESS_TYPE_OTHER; i++)
3163 int index = i << TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
3164 __pTypeContextMenu->AddItem(__pPresentationModel->GetImAddressTypeString((DetailImAddressType)i), itemTag | index);
3167 __pTypeContextMenu->RemoveItemAt((int)currentType);
3169 __pTypeContextMenu->Show();
3173 ContactEditorForm::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
3178 ContactEditorForm::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
3180 if (source.Contains(currentPosition) == false || touchInfo.IsFlicked() == true)
3187 Control* pParent = source.GetParent();
3188 Point position = pParent->GetPosition();
3189 Point itemPosition(position.x + source.GetX(), GetClientAreaBounds().y + position.y + source.GetY() + (source.GetHeight() / 2) - __scrolledDistance);
3190 String typeString = pParent->GetName();
3191 String itemIndexTag = source.GetName();
3195 Integer::Parse(itemIndexTag, itemIndex);
3196 Integer::Parse(typeString, type);
3198 int groupIndex = (itemIndex & TABLE_VIEW_GROUP_INDEX_MASK) >> TABLE_VIEW_GROUP_INDEX_SHIFT;
3202 case TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX:
3204 ShowTypeContextMenu((DetailPhoneNumberType)type, itemPosition, itemIndex);
3207 case TABLE_VIEW_EMAIL_FIELD_INDEX:
3209 ShowTypeContextMenu((DetailEmailType)type, itemPosition, itemIndex);
3212 case TABLE_VIEW_ADDRESS_FIELD_INDEX:
3214 ShowTypeContextMenu((DetailAddressType)type, itemPosition, itemIndex);
3217 case TABLE_VIEW_IM_ADDRESS_FIELD_INDEX:
3219 ShowTypeContextMenu((DetailImAddressType)type, itemPosition, itemIndex);
3222 case TABLE_VIEW_URL_FIELD_INDEX:
3224 ShowTypeContextMenu((DetailUrlType)type, itemPosition, itemIndex);
3233 ContactEditorForm::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
3238 ContactEditorForm::OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
3243 ContactEditorForm::OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
3248 ContactEditorForm::OnTouchCanceled(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
3253 ContactEditorForm::OnScrollEndReached (Tizen::Ui::Control &source, Tizen::Ui::Controls::ScrollEndEvent type)
3258 ContactEditorForm::OnScrollPositionChanged (Tizen::Ui::Control &source, int scrollPos)
3260 __scrolledDistance = scrollPos;
3264 ContactEditorForm::OnScrollStopped (Tizen::Ui::Control &source)
3269 ContactEditorForm::OnExpandableEditAreaLineAdded (Tizen::Ui::Controls::ExpandableEditArea &source, int newLineCount)
3271 __pTableView->RefreshItem(TABLE_VIEW_NOTE_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
3275 ContactEditorForm::OnExpandableEditAreaLineRemoved (Tizen::Ui::Controls::ExpandableEditArea &source, int newLineCount)
3277 __pTableView->RefreshItem(TABLE_VIEW_NOTE_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
3281 ContactEditorForm::OnDateChanged(const Tizen::Ui::Control& source, int year, int month, int day)
3283 DateTime changedDate;
3284 changedDate.SetValue(year, month, day);
3286 __pPresentationModel->SetBirthday(changedDate);
3290 ContactEditorForm::OnDateChangeCanceled(const Tizen::Ui::Control& source)
3295 ContactEditorForm::OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData)
3297 AppLogDebug("ENTER");
3302 TryReturnVoid(appControlResult == APP_CTRL_RESULT_SUCCEEDED, "[E_FAILURE] The result of an appcontrol is not succeeded.");
3303 TryReturnVoid(pExtraData != null, "[E_FAILURE] The extra data is null.");
3305 const String *pResultString = null;
3306 const ArrayList* pResultList = dynamic_cast<const ArrayList*>(pExtraData->GetValue(String(OUTPUT_KEY_SELECTED)));
3307 if (pResultList != null)
3309 pResultString = static_cast<const String*>(pResultList->GetAt(0));
3313 pResultString = static_cast<const String*>(pExtraData->GetValue(String(OUTPUT_KEY_SELECTED)));
3315 TryReturnVoid(pResultString != null, "[E_FAILURE] Unable to get file path.");
3317 if (appId.Equals(String(PROVIDER_ID_CAMERA)) && operationId.Equals(String(OPERATION_ID_CREATE_CONTENT)))
3319 __pPresentationModel->SetThumbnail(*pResultString);
3320 __pTableView->RefreshItem(TABLE_VIEW_THUMBNAIL_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
3322 if (__pFileEventManager == null)
3324 __pFileEventManager = new (std::nothrow) FileEventManager();
3325 __pFileEventManager->Construct(*this);
3327 __pFileEventManager->AddPath(*pResultString, FILE_EVENT_TYPE_DELETE | FILE_EVENT_TYPE_DELETE_SELF | FILE_EVENT_TYPE_MODIFY | FILE_EVENT_TYPE_MOVE_SELF);
3329 else if (appId.Equals(String(PROVIDER_ID_GALLERY)) && operationId.Equals(String(OPERATION_ID_PICK)))
3331 __pPresentationModel->SetThumbnail(*pResultString);
3332 __pTableView->RefreshItem(TABLE_VIEW_THUMBNAIL_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
3334 if (__pFileEventManager == null)
3336 __pFileEventManager = new (std::nothrow) FileEventManager();
3337 __pFileEventManager->Construct(*this);
3339 __pFileEventManager->AddPath(*pResultString, FILE_EVENT_TYPE_DELETE | FILE_EVENT_TYPE_DELETE_SELF | FILE_EVENT_TYPE_MODIFY | FILE_EVENT_TYPE_MOVE_SELF);
3341 else if (appId.Equals(String(PROVIDER_ID_FILEMANAGER)) && operationId.Equals(String(OPERATION_ID_PICK)))
3343 __pPresentationModel->SetValue(DETAIL_PROPERTY_RINGTONE, *pResultString);
3344 __pTableView->RefreshItem(TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX, 2, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
3347 AppLogDebug("EXIT");
3351 ContactEditorForm::LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId)
3353 result r = E_SUCCESS;
3358 extraData.Construct();
3360 if (appId.Equals(String(PROVIDER_ID_CAMERA)) && operationId.Equals(String(OPERATION_ID_CREATE_CONTENT)))
3362 mimeType.Append(INPUT_MIME_TYPE_CAMERA);
3363 extraData.Add(new (std::nothrow) String(INPUT_KEY_ALLOW_SWITCH), new (std::nothrow) String(INPUT_VALUE_FALSE));
3365 else if (appId.Equals(String(PROVIDER_ID_GALLERY)) && operationId.Equals(String(OPERATION_ID_PICK)))
3367 mimeType.Append(INPUT_MIME_TYPE_GALLERY);
3368 extraData.Add(new (std::nothrow) String(INPUT_KEY_SELECTION_MODE), new (std::nothrow) String(INPUT_DATA_SELECTION_MODE_SINGLE));
3370 else if (appId.Equals(String(PROVIDER_ID_FILEMANAGER)) && operationId.Equals(String(OPERATION_ID_PICK)))
3372 mimeType.Append(INPUT_MIME_TYPE_AUDIO);
3373 extraData.Add(new (std::nothrow) String(INPUT_KEY_SELECTION_MODE), new (std::nothrow) String(INPUT_DATA_SELECTION_MODE_SINGLE));
3376 AppControl* pAppControl = AppManager::FindAppControlN(appId, operationId);
3378 if (pAppControl != null)
3380 r = pAppControl->Start(&uri, &mimeType, &extraData, this);
3381 TryCatch(r == E_SUCCESS, , "[%s] Unable to launch app control.", GetErrorMessage(r));
3388 extraData.RemoveAll(true);
3395 ContactEditorForm::OnContactsChanged(void)
3397 SceneManager* pSceneManager = SceneManager::GetInstance();
3399 if (__isSaved == false)
3401 if (__pPresentationModel->IsContactRemoved())
3403 pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
3411 if (__isAppControl == true)
3413 UiApp* pApp = UiApp::GetInstance();
3418 ArrayList* pArg = null;
3420 if (__pPresentationModel->GetVcfPath().IsEmpty() == false)
3422 pArg = new (std::nothrow) ArrayList();
3425 String* pViewType = new (std::nothrow) String();
3426 String* pValueType = new (std::nothrow) String();
3428 pViewType->Append(VIEW_TYPE);
3429 pViewType->Append(DELIMITER);
3430 pViewType->Append(VIEW_TYPE_VALUE_CONTACT);
3432 pValueType->Append(VIEW_TYPE_CONTACT_ID);
3433 pValueType->Append(DELIMITER);
3434 pValueType->Append(Integer::ToString(__pPresentationModel->GetContactId()));
3436 pArg->Add(pViewType);
3437 pArg->Add(pValueType);
3439 pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT), pArg);
3446 ContactEditorForm::OnCategoriesChanged(void)
3451 ContactEditorForm::OnForeground(void)
3453 if (IsEnabled() == false)
3461 ContactEditorForm::OnBackground(void)
3466 ContactEditorForm::OnFileEventOccured(const unsigned long events, const Tizen::Base::String &path, const unsigned int eventId)
3468 __pPresentationModel->SetThumbnail(L"");
3469 __pTableView->RefreshItem(TABLE_VIEW_THUMBNAIL_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
3473 ContactEditorForm::OnDeviceStateChanged(Tizen::System::DeviceType deviceType, const Tizen::Base::String &state)
3475 if (deviceType != DEVICE_TYPE_STORAGE_CARD || __pPresentationModel->GetValue(DETAIL_PROPERTY_THUMBNAIL).IsEmpty())
3480 if (state.Equals(SD_CARD_UNMOUNTED, false) && File::IsFileExist(__pPresentationModel->GetValue(DETAIL_PROPERTY_THUMBNAIL)) == false)
3482 __pPresentationModel->SetThumbnail(L"");
3483 __pTableView->RefreshItem(TABLE_VIEW_THUMBNAIL_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);