2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.1 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://floralicense.org/license/
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an AS IS BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
18 * @file 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_BUTTON_RINGTONE_CLEAR = 28;
54 static const int IDA_CONTEXT_MENU_ITEM_JOB_TITLE = 31;
55 static const int IDA_CONTEXT_MENU_ITEM_DEPARTMENT = 32;
56 static const int IDA_CONTEXT_MENU_ITEM_INSTANT_MESSENGER = 33;
57 static const int IDA_CONTEXT_MENU_ITEM_URL = 34;
58 static const int IDA_CONTEXT_MENU_ITEM_BIRTHDAY = 35;
59 static const int IDA_CONTEXT_MENU_ITEM_NOTE = 36;
60 static const int IDA_INPUT_FIELD_DISPLAY_NAME = 41;
61 static const int IDA_POPUP_INVALID_NUMBER_OK = 42;
62 static const int IDA_POPUP_SAVE_CONTACT_OK = 44;
63 static const int IDA_POPUP_SAVE_CONTACT_CANCEL = 45;
65 static const wchar_t* IDB_EXPAND_BUTTON_NORMAL = L"00_circle_button.png";
66 static const wchar_t* IDB_EXPAND_BUTTON_PRESSED = L"00_circle_button_press.png";
67 static const wchar_t* IDB_EXPAND_CLOSED = L"00_button_expand_closed.png";
68 static const wchar_t* IDB_EXPAND_CLOSED_PRESSED = L"00_button_expand_closed_press.png";
69 static const wchar_t* IDB_EXPAND_OPENED = L"00_button_expand_opened.png";
70 static const wchar_t* IDB_EXPAND_OPENED_PRESSED = L"00_button_expand_opened_press.png";
71 static const wchar_t* IDB_BUTTON_DELETE_NORMAL = L"00_circle_button_delete.png";
72 static const wchar_t* IDB_BUTTON_DELETE_PRESSED = L"00_circle_button_delete_press.png";
73 static const wchar_t* IDB_BUTTON_MINUS = L"00_button_expand_minus_press.png";
74 static const wchar_t* IDB_BUTTON_MINUS_PRESSED = L"00_button_expand_minus_press.png";
75 static const wchar_t* IDB_BUTTON_RESET_NORMAL = L"00_button_refresh.png";
76 static const wchar_t* IDB_BUTTON_RESET_PRESSED = L"00_button_refresh_press.png";
77 static const wchar_t* IDB_BUTTON_ADD= L"C02_caller_id_icon_add.png";
78 static const wchar_t* IDB_BUTTON_ADD_PRESSED = L"C02_caller_id_icon_add_press.png";
79 static const wchar_t* IDB_BUTTON_CAMERA = L"C02_caller_id_icon_camera.png";
80 static const wchar_t* IDB_BUTTON_CAMERA_PRESSED = L"C02_caller_id_icon_camera_press.png";
81 static const wchar_t* IDB_BUTTON_DROPBOX = L"C02_button_icon_dropbox.png";
82 static const wchar_t* IDB_THUMBNAIL_BACKGROUND = L"C02_created_photo_bg.png";
83 static const wchar_t* IDB_DETAILS_RESET_NORMAL = L"00_button_refresh.png";
84 static const wchar_t* IDB_DETAILS_RESET_PRESSED = L"00_button_refresh_press.png";
86 static const wchar_t* INPUT_DATA_SELECTION_MODE_SINGLE = L"single";
87 static const wchar_t* INPUT_KEY_SELECTION_MODE = L"http://tizen.org/appcontrol/data/selection_mode";
88 static const wchar_t* INPUT_KEY_ALLOW_SWITCH = L"http://tizen.org/appcontrol/data/camera/allow_switch";
89 static const wchar_t* INPUT_MIME_TYPE_CAMERA = L"image/jpg";
90 static const wchar_t* INPUT_MIME_TYPE_GALLERY = L"image/*";
91 static const wchar_t* INPUT_MIME_TYPE_AUDIO = L"audio/*";
92 static const wchar_t* INPUT_VALUE_FALSE = L"false";
93 static const wchar_t* OUTPUT_KEY_SELECTED = L"http://tizen.org/appcontrol/data/selected";
94 static const wchar_t* SD_CARD_UNMOUNTED = L"Unmounted";
96 static const int H_ITEM = 112;
97 static const int H_DOUBLE_LINE_ITEM = 140;
98 static const int H_LABEL = 40;
99 static const int H_DESCRIPTION_CONTAINER = 136;
100 static const int H_DIVIDER = 1;
101 static const int W_DIVIDER = 1;
102 static const int H_EMPTY_SPACE = 32;
103 static const int H_EXPANDED_NAME_FIELDS = 672;
104 static const int H_BUTTON = 74;
105 static const int H_ICON_BUTTON = 74;
106 static const int W_THUMBNAIL = 360;
107 static const int W_TITLE_LABEL = 170;
108 static const int X_MORE_INFORMATION_BUTTON = 60;
109 static const int Y_MORE_INFORMATION_BUTTON = 30;
110 static const int Y_DEFAULT_NUMBER_BUTTON = 19;
111 static const int W_ITEM_GAP = 16;
112 static const int W_TYPE_BUTTON = 186;
113 static const int W_THUMBNAIL_DELETE_BUTTON_GAP = 10;
114 static const int H_THUMBNAIL_DELETE_BUTTON_GAP = 10;
115 static const int H_THUMBNAIL_GROUP_ITEM_HEIGHT = 34;
116 static const int H_NAMEFIELD_GROUP_ITEM_HEIGHT = 40;
117 static const int H_GROUP_RINGTONE_TITLE_GAP = 22;
118 static const int H_GROUP_RINGTONE_TITLE_LABEL = 42;
119 static const int H_GROUP_RINGTONE_VALUE_LABEL = 54;
120 static const int W_DROPBOX_ICON = 29;
121 static const int H_DROPBOX_ICON = 29;
122 static const int W_INVALID_NUMBER_POPUP = 688;
123 static const int H_INVALID_NUMBER_POPUP = 308;
124 static const int Y_INVALID_NUMBER_POPUP_TITLE = 20;
125 static const int H_INVALID_NUMBER_POPUP_ELEMENT = 60;
126 static const int Y_INVALID_NUMBER_POPUP_OK_BUTTON = 214;
127 static const int H_INVALID_NUMBER_POPUP_OK_BUTTON = 74;
128 static const int W_INVALID_NUMBER_POPUP_OK_BUTTON = 394;
129 static const int W_SAVE_CONTACT_POPUP = 688;
130 static const int H_SAVE_CONTACT_POPUP = 230;
131 static const int W_SAVE_CONTACT_LABEL = 656;
132 static const int H_SAVE_CONTACT_LABEL = 80;
133 static const int X_SAVE_CONTACT_LABEL = 16;
134 static const int Y_SAVE_CONTACT_LABEL = 32;
135 static const int Y_SAVE_CONTACT_BUTTON = 132;
136 static const int H_SAVE_CONTACT_BUTTON = 74;
137 static const int W_SAVE_CONTACT_BUTTON = 318;
138 static const int W_POPUP_ITEM_GAP = 20;
139 static const int X_REFRESH_BUTTON_MARGIN = 88;
141 static const int FONT_SIZE_SAVE_CONTACT_CONFIRM = 42;
142 static const int FONT_SIZE_SAVE_CONTACT_BUTTON = 36;
144 static const int FONT_SIZE_VALUE_TEXT = 44;
145 static const int FONT_SIZE_TITLE_TEXT = 32;
146 static const int FONT_SIZE_INVALID_NUMBER_POPUP_TEXT = 36;
148 static const int GROUP_ITEM_COUNT = 11;
149 static const int NAME_FIELD_ITEM_COUNT = 1;
151 static const int EDIT_FIELD_EXTENDED_LENGTH = 100;
153 static const unsigned int COLOR_TABLE_VIEW_BG = Color32<248, 246, 239>::Value;
154 static const unsigned int COLOR_DIVIDER = Color32<169, 169, 169>::Value;
155 static const unsigned int COLOR_RINGTONE = Color32<92, 151, 187>::Value;
156 static const unsigned int COLOR_THUMBNAIL_BACKGROUND = Color32<239, 237, 229>::Value;
157 static const unsigned int COLOR_ITEM_TITLE = Color32<128, 128, 128>::Value;
158 static const unsigned int COLOR_INVALID_NUMBER_POPUP_TEXT = Color32<128, 128, 128>::Value;
160 static const unsigned int COLOR_SAVE_CONTACT_BUTTON_NORMAL = Color32<213, 82, 82>::Value;
161 static const unsigned int COLOR_SAVE_CONTACT_BUTTON_PRESSED = Color32<194, 71, 71>::Value;
162 static const unsigned int COLOR_SAVE_CONTACT_BUTTON_TEXT = Color32<248, 246, 239>::Value;
164 static const int TABLE_VIEW_DELETE_INPUT_FIELD_ID = 0xE0000000;
165 static const int TABLE_VIEW_INPUT_FIELD_ACTION_MASK = 0xF0000000;
166 static const int TABLE_VIEW_INPUT_FIELD_INDEX_MASK = 0x0F000000;
167 static const int TABLE_VIEW_GROUP_INDEX_MASK = 0x00FF0000;
168 static const int TABLE_VIEW_ITEM_INDEX_MASK = 0x0000FFFF;
169 static const int TABLE_VIEW_GROUP_INDEX_SHIFT = 16;
170 static const int TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT = 24;
171 static const int TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT = 28;
172 static const int TABLE_VIEW_THUMBNAIL_FIELD_INDEX = 0;
173 static const int TABLE_VIEW_NAME_FIELD_INDEX = 1;
174 static const int TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX = 2;
175 static const int TABLE_VIEW_EMAIL_FIELD_INDEX = 3;
176 static const int TABLE_VIEW_ADDRESS_FIELD_INDEX = 4;
177 static const int TABLE_VIEW_IM_ADDRESS_FIELD_INDEX = 5;
178 static const int TABLE_VIEW_URL_FIELD_INDEX = 6;
179 static const int TABLE_VIEW_BIRTHDAY_FIELD_INDEX = 7;
180 static const int TABLE_VIEW_NOTE_FIELD_INDEX = 8;
181 static const int TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX = 9;
182 static const int TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX = 10;
184 static const wchar_t* INPUT_TYPE_PHONE = L"phone";
185 static const wchar_t* INPUT_TYPE_EMAIL = L"email";
186 static const wchar_t* INPUT_TYPE_URL = L"url";
187 static const wchar_t* VIEW_TYPE = L"viewType";
188 static const wchar_t* VIEW_TYPE_VALUE_CONTACT = L"contact";
189 static const wchar_t* VIEW_TYPE_CONTACT_ID = L"contactId";
191 ContactEditorForm::ContactEditorForm(void)
192 : __isExpandable(false)
193 , __isAppControl(false)
194 , __isJobTitleEnabled(false)
195 , __isDepartmentEnabled(false)
196 , __isDefaultPhoneNumberButtonEnabled(false)
198 , __isDataRemoved(false)
199 , __isMoreInformationContextMenuShowing(false)
200 , __isKeypadOpened(false)
201 , __isScrollOccurred(false)
202 , __isContactModified(false)
203 , __scrolledDistance(0)
204 , __pAppControl(null)
205 , __pPhoneNumberFieldItem(null)
206 , __pEmailFieldItem(null)
207 , __pAddressFieldItem(null)
208 , __pImAddressFieldItem(null)
209 , __pUrlFieldItem(null)
210 , __pFileEventManager(null)
211 , __pSaveContactPopup(null)
212 , __pCurrentFocusedItem(null)
213 , __pDefaultPhoneNumberContextMenu(null)
214 , __pMoreInformationContextMenu(null)
215 , __pThumbnailContextMenu(null)
216 , __pTypeContextMenu(null)
218 , __pNameFieldItem(null)
219 , __pNoteFieldItem(null)
220 , __pInvalidNumberPopup(null)
221 , __pPresentationModel(null)
225 ContactEditorForm::~ContactEditorForm(void)
230 ContactEditorForm::Initialize(void)
232 Construct(FORM_STYLE_NORMAL | FORM_STYLE_INDICATOR | FORM_STYLE_HEADER | FORM_STYLE_FOOTER);
236 ContactEditorForm::OnInitializing(void)
238 SetFormBackEventListener(this);
239 SettingInfo::AddSettingEventListener(*this);
241 Footer* pFooter = GetFooter();
242 pFooter->SetBackButton();
244 FooterItem footerItemSave;
245 footerItemSave.Construct(IDA_ACTION_BAR_SAVE);
246 footerItemSave.SetText(ResourceManager::GetString(L"IDS_COM_SK_SAVE"));
248 pFooter->AddItem(footerItemSave);
249 pFooter->AddActionEventListener(*this);
251 __pTableView = new (std::nothrow) GroupedTableView();
252 __pTableView->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height), false, TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT);
253 __pTableView->SetItemProvider(this);
254 __pTableView->AddScrollEventListener(*this);
255 __pTableView->AddGroupedTableViewItemEventListener(*this);
256 AddControl(__pTableView);
258 __pPhoneNumberFieldItem = new (std::nothrow) ArrayList();
259 __pPhoneNumberFieldItem->Construct();
261 __pEmailFieldItem = new (std::nothrow) ArrayList();
262 __pEmailFieldItem->Construct();
264 __pAddressFieldItem = new (std::nothrow) ArrayList();
265 __pAddressFieldItem->Construct();
267 __pImAddressFieldItem = new (std::nothrow) ArrayList();
268 __pImAddressFieldItem->Construct();
270 __pUrlFieldItem = new (std::nothrow) ArrayList();
271 __pUrlFieldItem->Construct();
273 __pPresentationModel = new (std::nothrow) ContactPresentationModel();
274 __pPresentationModel->Construct();
275 __pPresentationModel->AddContactChangeListener(*this);
278 __pInvalidNumberPopup = new (std::nothrow) Popup();
279 __pInvalidNumberPopup->Construct(false, Dimension(W_INVALID_NUMBER_POPUP, H_INVALID_NUMBER_POPUP));
280 Rectangle clientBounds = __pInvalidNumberPopup->GetClientAreaBounds();
282 Label* pLabelTitle = new (std::nothrow) Label();
283 pLabelTitle->Construct(Rectangle(0, Y_INVALID_NUMBER_POPUP_TITLE, clientBounds.width, H_INVALID_NUMBER_POPUP_ELEMENT), ResourceManager::GetString(L"IDS_PB_BODY_INVALID_NUMBER"));
284 pLabelTitle->SetTextColor(COLOR_INVALID_NUMBER_POPUP_TEXT);
285 pLabelTitle->SetTextConfig(FONT_SIZE_INVALID_NUMBER_POPUP_TEXT, LABEL_TEXT_STYLE_BOLD);
286 pLabelTitle->SetTextHorizontalAlignment(ALIGNMENT_CENTER);
287 __pInvalidNumberPopup->AddControl(pLabelTitle);
289 Button* pOkButton = new (std::nothrow) Button();
290 pOkButton->Construct(Rectangle((clientBounds.width - W_INVALID_NUMBER_POPUP_OK_BUTTON) / 2, Y_INVALID_NUMBER_POPUP_OK_BUTTON, W_INVALID_NUMBER_POPUP_OK_BUTTON, H_INVALID_NUMBER_POPUP_OK_BUTTON));
291 pOkButton->SetText(ResourceManager::GetString("IDS_COM_SK_OK"));
292 pOkButton->SetActionId(IDA_POPUP_INVALID_NUMBER_OK);
293 pOkButton->AddActionEventListener(*this);
295 __pInvalidNumberPopup->AddControl(pOkButton);
296 DeviceManager::AddDeviceEventListener(DEVICE_TYPE_STORAGE_CARD, *this);
302 ContactEditorForm::OnTerminating(void)
304 AppLog("ContactEditorForm::OnTerminating()");
306 result r = E_SUCCESS;
308 __pTableView->SetItemProvider(null);
310 if (__pPresentationModel != null)
312 __pPresentationModel->RemoveContactChangeListener(*this);
313 delete __pPresentationModel;
316 if (__pPhoneNumberFieldItem)
318 __pPhoneNumberFieldItem->RemoveAll(true);
319 delete __pPhoneNumberFieldItem;
322 if (__pEmailFieldItem)
324 __pEmailFieldItem->RemoveAll(true);
325 delete __pEmailFieldItem;
328 if (__pAddressFieldItem)
330 __pAddressFieldItem->RemoveAll(true);
331 delete __pAddressFieldItem;
336 __pUrlFieldItem->RemoveAll(true);
337 delete __pUrlFieldItem;
340 if (__pImAddressFieldItem)
342 __pImAddressFieldItem->RemoveAll(true);
343 delete __pImAddressFieldItem;
346 delete __pInvalidNumberPopup;
347 delete __pAppControl;
348 delete __pNameFieldItem;
349 delete __pNoteFieldItem;
350 delete __pDefaultPhoneNumberContextMenu;
351 delete __pMoreInformationContextMenu;
352 delete __pThumbnailContextMenu;
353 delete __pTypeContextMenu;
354 delete __pFileEventManager;
356 DeviceManager::RemoveDeviceEventListener(DEVICE_TYPE_STORAGE_CARD, *this);
357 SettingInfo::RemoveSettingEventListener(*this);
363 ContactEditorForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
367 if( IsSaveContactValid() == true && __isContactModified == true)
369 ShowSaveContactPopup();
372 if (__isAppControl == true)
374 ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
375 AppControlProviderManager* pAppManager = AppControlProviderManager::GetInstance();
377 result r = pAppManager->SendAppControlResult(pContactsApp->GetRequestId(), APP_CTRL_RESULT_CANCELED, null);
378 AppLogDebug("[%s] The return result from SendAppControlResult().", GetErrorMessage(r));
380 UiApp::GetInstance()->Terminate();
384 SceneManager* pSceneManager = SceneManager::GetInstance();
386 result r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
387 TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go backward", GetErrorMessage(r));
392 ContactEditorForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
394 AppLog("ContactEditorForm::OnActionPerformed(), actionId %d", actionId);
396 if ((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) == TABLE_VIEW_DELETE_INPUT_FIELD_ID)
398 int groupIndex = (actionId & TABLE_VIEW_GROUP_INDEX_MASK) >> TABLE_VIEW_GROUP_INDEX_SHIFT;
399 int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
401 if (groupIndex > TABLE_VIEW_NAME_FIELD_INDEX)
403 DeleteInputField(groupIndex, itemIndex);
404 __isContactModified = true;
409 else if (&source == __pDefaultPhoneNumberContextMenu)
411 SetAsDefaultPhoneNumber(actionId);
412 __isContactModified = true;
416 else if (((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) >> TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT) == TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX)
418 int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
419 int selectedItemIndex = (actionId & TABLE_VIEW_INPUT_FIELD_INDEX_MASK) >> TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
421 TableViewItem* pItem = static_cast<TableViewItem *>(__pPhoneNumberFieldItem->GetAt(itemIndex));
426 pItem->SetName(Integer::ToString(selectedItemIndex));
428 Button* pButtonType = static_cast<Button *>(pItem->GetControl(1));
429 if (pButtonType == null)
434 pButtonType->SetText(__pPresentationModel->GetPhoneNumberTypeString((DetailPhoneNumberType)selectedItemIndex));
435 pButtonType->Invalidate(false);
437 __isContactModified = true;
440 else if (((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) >> TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT) == TABLE_VIEW_EMAIL_FIELD_INDEX)
442 int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
443 int selectedItemIndex = (actionId & TABLE_VIEW_INPUT_FIELD_INDEX_MASK) >> TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
445 TableViewItem* pItem = static_cast<TableViewItem *>(__pEmailFieldItem->GetAt(itemIndex));
450 pItem->SetName(Integer::ToString(selectedItemIndex));
452 Button* pButtonType = static_cast<Button *>(pItem->GetControl(1));
453 if (pButtonType == null)
458 pButtonType->SetText(__pPresentationModel->GetEmailTypeString((DetailEmailType)selectedItemIndex));
459 pButtonType->Invalidate(false);
461 __isContactModified = true;
464 else if (((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) >> TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT) == TABLE_VIEW_ADDRESS_FIELD_INDEX)
466 int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
467 int selectedItemIndex = (actionId & TABLE_VIEW_INPUT_FIELD_INDEX_MASK) >> TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
469 TableViewItem* pItem = static_cast<TableViewItem *>(__pAddressFieldItem->GetAt(itemIndex));
474 pItem->SetName(Integer::ToString(selectedItemIndex));
476 Button* pButtonType = static_cast<Button *>(pItem->GetControl(1));
477 if (pButtonType == null)
482 pButtonType->SetText(__pPresentationModel->GetAddressTypeString((DetailAddressType)selectedItemIndex));
483 pButtonType->Invalidate(false);
485 __isContactModified = true;
488 else if (((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) >> TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT) == TABLE_VIEW_IM_ADDRESS_FIELD_INDEX)
490 int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
491 int selectedItemIndex = (actionId & TABLE_VIEW_INPUT_FIELD_INDEX_MASK) >> TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
493 TableViewItem* pItem = static_cast<TableViewItem *>(__pImAddressFieldItem->GetAt(itemIndex));
498 pItem->SetName(Integer::ToString(selectedItemIndex));
500 Button* pButtonType = static_cast<Button *>(pItem->GetControl(1));
501 if (pButtonType == null)
506 pButtonType->SetText(__pPresentationModel->GetImAddressTypeString((DetailImAddressType)selectedItemIndex));
507 pButtonType->Invalidate(false);
509 __isContactModified = true;
512 else if (((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) >> TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT) == TABLE_VIEW_URL_FIELD_INDEX)
514 int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
515 int selectedItemIndex = (actionId & TABLE_VIEW_INPUT_FIELD_INDEX_MASK) >> TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
517 TableViewItem* pItem = static_cast<TableViewItem *>(__pUrlFieldItem->GetAt(itemIndex));
522 pItem->SetName(Integer::ToString(selectedItemIndex));
524 Button* pButtonType = static_cast<Button *>(pItem->GetControl(1));
525 if (pButtonType == null)
530 pButtonType->SetText(__pPresentationModel->GetUrlTypeString((DetailUrlType)selectedItemIndex));
531 pButtonType->Invalidate(false);
533 __isContactModified = true;
539 case IDA_ACTION_BAR_SAVE:
541 result r = E_SUCCESS;
543 r = SaveContactData();
555 case IDA_BUTTON_THUMBNAIL_ADD:
557 if (__pCurrentFocusedItem != null)
561 LaunchAppControl(PROVIDER_ID_GALLERY, OPERATION_ID_PICK);
564 case IDA_BUTTON_THUMBNAIL_DELETE:
566 __pPresentationModel->SetThumbnail(L"");
567 __isContactModified = true;
568 __pTableView->RefreshItem(TABLE_VIEW_THUMBNAIL_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
570 delete __pFileEventManager;
571 __pFileEventManager = null;
574 case IDA_BUTTON_CAMERA:
576 if (__pCurrentFocusedItem != null)
580 LaunchAppControl(PROVIDER_ID_CAMERA, OPERATION_ID_CREATE_CONTENT);
583 case IDA_BUTTON_EXPANDABLE:
585 ChangeNameFieldStatus();
587 if (__pCurrentFocusedItem == __pNameFieldItem)
589 __pCurrentFocusedItem = null;
592 __pTableView->RefreshItem(TABLE_VIEW_NAME_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
594 Rectangle clientBounds = GetClientAreaBounds();
595 __pTableView->SetSize(clientBounds.width, clientBounds.height);
597 if (__pCurrentFocusedItem != null)
603 case IDA_BUTTON_MORE_INFO:
605 if (__pCurrentFocusedItem != null)
607 if (__isKeypadOpened)
609 __isMoreInformationContextMenuShowing = true;
610 __scrolledDistance = 0;
614 Control* pParentPanel = source.GetParent();
615 if (pParentPanel == null)
620 Control* pParentTableViewItem = pParentPanel->GetParent();
621 if (pParentTableViewItem == null)
626 Point contextMenuPos;
628 contextMenuPos.x = pParentTableViewItem->GetWidth() / 2;
629 contextMenuPos.y = GetClientAreaBounds().y + pParentTableViewItem->GetY() + source.GetY() - __scrolledDistance;
631 ShowMoreInformationContextMenu(contextMenuPos);
634 case IDA_BUTTON_BIRTHDAY_CLEAR:
636 DateTime currentDate;
637 Tizen::System::SystemTime::GetCurrentTime(currentDate);
638 __pPresentationModel->SetBirthday(currentDate);
640 __pTableView->RefreshItem(TABLE_VIEW_BIRTHDAY_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
641 __isContactModified = true;
644 case IDA_CONTEXT_MENU_ITEM_JOB_TITLE:
646 __isExpandable = false;
647 __isJobTitleEnabled = true;
649 ChangeNameFieldStatus();
651 __pTableView->RefreshItem(TABLE_VIEW_NAME_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
653 if (IsMoreInformationButtonVisible() == false)
655 __pTableView->RefreshItem(TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
657 __pTableView->ScrollToItem(TABLE_VIEW_NAME_FIELD_INDEX, 0);
660 case IDA_CONTEXT_MENU_ITEM_DEPARTMENT:
662 __isExpandable = false;
663 __isDepartmentEnabled = true;
665 ChangeNameFieldStatus();
667 __pTableView->RefreshItem(TABLE_VIEW_NAME_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
669 if (IsMoreInformationButtonVisible() == false)
671 __pTableView->RefreshItem(TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
673 __pTableView->ScrollToItem(TABLE_VIEW_NAME_FIELD_INDEX, 0);
676 case IDA_CONTEXT_MENU_ITEM_INSTANT_MESSENGER:
678 SaveContactData(false);
680 int index = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_IM_ADDRESS);
682 __pTableView->RefreshItem(TABLE_VIEW_IM_ADDRESS_FIELD_INDEX, index, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
684 if (IsMoreInformationButtonVisible() == false)
686 __pTableView->RefreshItem(TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
688 __pTableView->ScrollToItem(TABLE_VIEW_IM_ADDRESS_FIELD_INDEX, 0);
691 case IDA_CONTEXT_MENU_ITEM_URL:
693 SaveContactData(false);
695 int index = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_URL);
697 __pTableView->RefreshItem(TABLE_VIEW_URL_FIELD_INDEX, index, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
699 if (IsMoreInformationButtonVisible() == false)
701 __pTableView->RefreshItem(TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
703 __pTableView->ScrollToItem(TABLE_VIEW_URL_FIELD_INDEX, 0);
706 case IDA_CONTEXT_MENU_ITEM_BIRTHDAY:
708 DateTime currentDate;
710 Tizen::System::SystemTime::GetCurrentTime(currentDate);
711 __pPresentationModel->SetBirthday(currentDate);
713 __pTableView->RefreshItem(TABLE_VIEW_BIRTHDAY_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
715 if (IsMoreInformationButtonVisible() == false)
717 __pTableView->RefreshItem(TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
719 __pTableView->ScrollToItem(TABLE_VIEW_BIRTHDAY_FIELD_INDEX, 0);
722 case IDA_CONTEXT_MENU_ITEM_NOTE:
724 __pTableView->RefreshItem(TABLE_VIEW_NOTE_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
726 if (IsMoreInformationButtonVisible() == false)
728 __pTableView->RefreshItem(TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
730 __pTableView->ScrollToItem(TABLE_VIEW_NOTE_FIELD_INDEX, 0);
733 case IDA_BUTTON_DEFAULT_PHONE_NUMBER:
735 Control* pParent = source.GetParent();
736 Point contextMenuPos;
738 contextMenuPos.x = pParent->GetWidth() / 2;
739 contextMenuPos.y = GetClientAreaBounds().y + pParent->GetY() + source.GetY() + (source.GetHeight() / 2) - __scrolledDistance;
741 if (__pCurrentFocusedItem != null)
746 SaveContactData(false);
747 ShowDefaultPhoneNumberContextMenu(contextMenuPos);
750 case IDA_POPUP_INVALID_NUMBER_OK:
752 __pInvalidNumberPopup->SetShowState(false);
755 case IDA_POPUP_SAVE_CONTACT_OK:
757 HideSaveContactPopup();
759 result r = SaveContactData();
771 case IDA_POPUP_SAVE_CONTACT_CANCEL:
773 HideSaveContactPopup();
775 if (__isAppControl == true)
777 ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
778 AppControlProviderManager* pAppManager = AppControlProviderManager::GetInstance();
780 result r = pAppManager->SendAppControlResult(pContactsApp->GetRequestId(), APP_CTRL_RESULT_CANCELED, null);
781 AppLogDebug("[%s] The return result from SendAppControlResult().", GetErrorMessage(r));
783 UiApp::GetInstance()->Terminate();
788 SceneManager* pSceneManager = SceneManager::GetInstance();
790 result r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
791 TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go backward", GetErrorMessage(r));
795 case IDA_BUTTON_RINGTONE_CLEAR:
797 __pPresentationModel->SetValue(DETAIL_PROPERTY_RINGTONE, L"", 0);
798 __pTableView->RefreshItem(TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX, 2, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
807 ContactEditorForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId,
808 Tizen::Base::Collection::IList* pArgs)
810 ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
811 TryReturnVoid(pContactsApp != null, "Unable to cast UiApp to ContactsApp");
813 pContactsApp->AddContactsAppChangeEventListener(*this);
815 Header* pHeader = GetHeader();
816 Footer* pFooter = GetFooter();
818 if (previousSceneId.Equals(IDSCN_GROUP_SELECTOR, true) || previousSceneId.Equals(IDSCN_GROUP_EDITOR, true))
822 Integer* pCategoryId = null;
826 IList* pCategoryList = __pPresentationModel->GetAssignedCategoryIdListN();
827 prevCount = pCategoryList->GetCount();
828 delete pCategoryList;
830 __pPresentationModel->RemoveContactFromAllCategories();
832 IEnumerator* pEnum = pArgs->GetEnumeratorN();
833 while (pEnum->MoveNext() == E_SUCCESS)
835 pCategoryId = static_cast<Integer*>(pEnum->GetCurrent());
836 if (pCategoryId != null)
838 __pPresentationModel->AddContactToCategory(pCategoryId->ToInt());
839 __isContactModified = true;
844 if(prevCount > 0 && curCount == 0)
846 __isContactModified = true;
851 pArgs->RemoveAll(true);
855 __pTableView->RefreshItem(TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
860 if (pContactsApp->GetOperationId() == OPERATION_ID_ADD)
862 __isAppControl = true;
863 __pPresentationModel->PrepareNewContact();
865 pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_BODY_CREATE"));
866 pFooter->SetItemEnabled(0, false);
868 else if (pContactsApp->GetOperationId() == OPERATION_ID_EDIT)
870 __isAppControl = true;
874 String* pArgString = null;
878 IEnumerator* pEnum = pArgs->GetEnumeratorN();
879 while (pEnum->MoveNext() == E_SUCCESS)
881 pArgString = static_cast<String*>(pEnum->GetCurrent());
882 if (pArgString != null)
884 ParseAppControlArgument(*pArgString, type, content);
886 if (type.Equals(RETURN_TYPE_ITEM_ID, false))
889 Integer::Parse(content, contactId);
890 result r = __pPresentationModel->SetContactId(contactId, true);
894 AppLogDebug("Invalid contactId has been input : %d", contactId);
895 UiApp::GetInstance()->Terminate();
898 if (__pPresentationModel->GetValue(DETAIL_PROPERTY_JOB_TITLE).IsEmpty() == false)
900 __isJobTitleEnabled = true;
902 if (__pPresentationModel->GetValue(DETAIL_PROPERTY_DEPARTMENT).IsEmpty() == false)
904 __isDepartmentEnabled = true;
912 pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_SK_EDIT"));
919 Integer* pContactId = null;
921 pContactId = static_cast<Integer*>(pArgs->GetAt(0));
922 if (pContactId != null)
924 if (pContactId->ToInt() != INVALID_RECORD_ID)
926 pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_SK_EDIT"));
927 __pPresentationModel->SetContactId(pContactId->ToInt(), true);
931 pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_BODY_CREATE"));
933 String* pVcfPath = static_cast<String*>(pArgs->GetAt(1));
934 if (pVcfPath != null)
936 __pPresentationModel->SetVcfPath(*pVcfPath, true);
941 if (__pPresentationModel->GetValue(DETAIL_PROPERTY_JOB_TITLE).IsEmpty() == false)
943 __isJobTitleEnabled = true;
945 if (__pPresentationModel->GetValue(DETAIL_PROPERTY_DEPARTMENT).IsEmpty() == false)
947 __isDepartmentEnabled = true;
952 pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_BODY_CREATE"));
953 pFooter->SetItemEnabled(0, false);
954 __pPresentationModel->PrepareNewContact();
958 if (__isAppControl == true)
962 String* pArgString = null;
966 IEnumerator* pEnum = pArgs->GetEnumeratorN();
967 while (pEnum->MoveNext() == E_SUCCESS)
969 pArgString = static_cast<String*>(pEnum->GetCurrent());
970 if (pArgString != null)
972 result r = E_SUCCESS;
973 ParseAppControlArgument(*pArgString, type, content);
975 if (type.Equals(INPUT_TYPE_PHONE, false))
977 r = __pPresentationModel->SetValue(DETAIL_PROPERTY_PHONE_NUMBER, content, __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER));
979 else if (type.Equals(INPUT_TYPE_EMAIL, false))
981 r = __pPresentationModel->SetValue(DETAIL_PROPERTY_EMAIL, content, __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_EMAIL));
983 else if (type.Equals(INPUT_TYPE_URL, false))
985 r = __pPresentationModel->SetValue(DETAIL_PROPERTY_URL, content, __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_URL));
990 pFooter->SetItemEnabled(0, true);
1000 pArgs->RemoveAll(true);
1006 ContactEditorForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
1008 ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
1010 pContactsApp->RemoveContactsAppChangeEventListener(*this);
1014 ContactEditorForm::OnKeypadWillOpen(Tizen::Ui::Control& source)
1019 ContactEditorForm::OnKeypadOpened(Tizen::Ui::Control& source)
1021 Rectangle clientBounds = GetClientAreaBounds();
1023 __pTableView->SetSize(clientBounds.width, clientBounds.height);
1024 __isKeypadOpened = true;
1028 ContactEditorForm::OnKeypadClosed(Tizen::Ui::Control& source)
1030 if (__pCurrentFocusedItem != null)
1032 Rectangle clientBounds = GetClientAreaBounds();
1034 AppLogDebug("Contacts::OnKeypadclosed bounds are width:(%d), height:(%d)", clientBounds.width, clientBounds.height);
1036 __pTableView->SetSize(clientBounds.width, clientBounds.height);
1038 else if (__isMoreInformationContextMenuShowing)
1040 Point anchorPosition = __pMoreInformationContextMenu->GetAnchorPosition();
1041 __pTableView->ScrollToItem(TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX, 0, TABLE_VIEW_SCROLL_ITEM_ALIGNMENT_BOTTOM);
1042 anchorPosition.y -= __scrolledDistance;
1043 __pMoreInformationContextMenu->SetAnchorPosition(anchorPosition);
1044 __pMoreInformationContextMenu->Show();
1046 __isMoreInformationContextMenuShowing = false;
1048 __isKeypadOpened = false;
1052 ContactEditorForm::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction)
1057 ContactEditorForm::OnKeypadBoundsChanged(Tizen::Ui::Control& source)
1059 Rectangle clientBounds = GetClientAreaBounds();
1060 __pTableView->SetSize(clientBounds.width, clientBounds.height);
1064 ContactEditorForm::OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem *pItem, Tizen::Ui::Controls::TableViewItemStatus status)
1066 SceneManager* pSceneManager = SceneManager::GetInstance();
1068 if (status == TABLE_VIEW_ITEM_STATUS_SELECTED && groupIndex == TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX)
1070 if (__pCurrentFocusedItem != null)
1077 if (__pPresentationModel->GetCategoryCount() > 0)
1079 IList* pCategoryList = __pPresentationModel->GetAssignedCategoryIdListN();
1081 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_SELECTOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pCategoryList);
1085 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT));
1090 else if (itemIndex == 2)
1092 LaunchAppControl(PROVIDER_ID_FILEMANAGER, OPERATION_ID_PICK);
1098 ContactEditorForm::OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem *pContextItem, bool activated)
1103 ContactEditorForm::OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem *pItem, Tizen::Ui::Controls::TableViewItemStatus status)
1108 ContactEditorForm::GetGroupCount(void)
1110 return GROUP_ITEM_COUNT;
1114 ContactEditorForm::GetItemCount(int groupIndex)
1120 case TABLE_VIEW_THUMBNAIL_FIELD_INDEX:
1125 case TABLE_VIEW_NAME_FIELD_INDEX:
1127 itemCount = NAME_FIELD_ITEM_COUNT;
1130 case TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX:
1132 itemCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER) + 1;
1134 if (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER) > 1)
1136 __isDefaultPhoneNumberButtonEnabled = true;
1141 __isDefaultPhoneNumberButtonEnabled = false;
1145 case TABLE_VIEW_EMAIL_FIELD_INDEX:
1147 itemCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_EMAIL) + 1;
1150 case TABLE_VIEW_ADDRESS_FIELD_INDEX:
1152 itemCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_ADDRESS) + 1;
1155 case TABLE_VIEW_IM_ADDRESS_FIELD_INDEX:
1157 itemCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_IM_ADDRESS);
1159 if ((itemCount == 0 && __pImAddressFieldItem->GetCount() > 0) || itemCount > 0)
1165 case TABLE_VIEW_URL_FIELD_INDEX:
1167 itemCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_URL);
1169 if ((itemCount == 0 && __pUrlFieldItem->GetCount() > 0) || itemCount > 0)
1175 case TABLE_VIEW_BIRTHDAY_FIELD_INDEX:
1178 if (__pPresentationModel->GetBirthday(birthday) != E_SUCCESS)
1188 case TABLE_VIEW_NOTE_FIELD_INDEX:
1190 if (__pPresentationModel->GetValue(DETAIL_PROPERTY_NOTE).IsEmpty() == false || __pNoteFieldItem != null )
1200 case TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX:
1205 case TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX:
1207 if (IsMoreInformationButtonVisible())
1225 ContactEditorForm::GetDefaultGroupItemHeight(void)
1227 return H_EMPTY_SPACE;
1231 ContactEditorForm::GetDefaultItemHeight(void)
1237 ContactEditorForm::CreateGroupItem(int groupIndex, int itemWidth)
1239 int groupItemHeight = H_EMPTY_SPACE;
1241 if (groupIndex == TABLE_VIEW_THUMBNAIL_FIELD_INDEX)
1243 groupItemHeight = H_THUMBNAIL_GROUP_ITEM_HEIGHT;
1245 else if (groupIndex == TABLE_VIEW_NAME_FIELD_INDEX)
1247 groupItemHeight = H_NAMEFIELD_GROUP_ITEM_HEIGHT;
1249 else if ((groupIndex > TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX && groupIndex < TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX) || groupIndex == TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX)
1251 groupItemHeight = 0;
1254 TableViewGroupItem* pGroupItem = new (std::nothrow) TableViewGroupItem();
1255 pGroupItem->Construct(Dimension(itemWidth, groupItemHeight));
1256 pGroupItem->SetBackgroundColor(Color(COLOR_TABLE_VIEW_BG), TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
1257 pGroupItem->SetEnabled(false);
1259 Panel* pPanel = new (std::nothrow) Panel();
1260 pPanel->Construct(Rectangle(0, -(H_DIVIDER), itemWidth, groupItemHeight + H_DIVIDER));
1261 pPanel->SetBackgroundColor(Color(COLOR_TABLE_VIEW_BG));
1263 pGroupItem->AddControl(pPanel);
1269 ContactEditorForm::DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem)
1278 ContactEditorForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
1280 TableViewItem* pItem = null;
1284 case TABLE_VIEW_THUMBNAIL_FIELD_INDEX:
1286 pItem = GetThumbnailField(itemWidth);
1289 case TABLE_VIEW_NAME_FIELD_INDEX:
1291 pItem = GetNameFields(itemWidth);
1294 case TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX:
1296 if ((itemIndex == __pTableView->GetItemCountAt(groupIndex) - 1) && __isDefaultPhoneNumberButtonEnabled == true)
1298 pItem = GetDefaultPhoneNumberItem(itemWidth);
1302 pItem = GetPhoneNumberFields(itemIndex, itemWidth);
1305 case TABLE_VIEW_EMAIL_FIELD_INDEX:
1307 pItem = GetEmailFields(itemIndex, itemWidth);
1310 case TABLE_VIEW_ADDRESS_FIELD_INDEX:
1312 pItem = GetAddressFields(itemIndex, itemWidth);
1315 case TABLE_VIEW_IM_ADDRESS_FIELD_INDEX:
1317 pItem = GetImAddressFields(itemIndex, itemWidth);
1320 case TABLE_VIEW_URL_FIELD_INDEX:
1322 pItem = GetUrlFields(itemIndex, itemWidth);
1325 case TABLE_VIEW_BIRTHDAY_FIELD_INDEX:
1327 pItem = GetBirthdayField(itemWidth);
1330 case TABLE_VIEW_NOTE_FIELD_INDEX:
1332 pItem = GetNoteField(itemWidth);
1335 case TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX:
1340 pItem = GetGroupsField(itemWidth);
1344 pItem = new (std::nothrow) TableViewItem();
1345 pItem->Construct(Dimension(itemWidth, H_DIVIDER * 2));
1346 pItem->SetEnabled(false);
1350 pItem = GetRingtoneField(itemWidth);
1357 case TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX:
1359 if (IsMoreInformationButtonVisible())
1361 pItem = GetMoreInformationField(itemWidth);
1377 ContactEditorForm::DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
1379 if (groupIndex == TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX)
1381 if ((itemIndex == __pPhoneNumberFieldItem->GetCount()) && __isDefaultPhoneNumberButtonEnabled == true)
1390 if ((groupIndex > TABLE_VIEW_NAME_FIELD_INDEX && groupIndex < TABLE_VIEW_BIRTHDAY_FIELD_INDEX) || groupIndex == TABLE_VIEW_NOTE_FIELD_INDEX)
1392 if (__isDataRemoved == false)
1397 else if (groupIndex == TABLE_VIEW_NAME_FIELD_INDEX)
1400 __pNameFieldItem = null;
1403 if (__pCurrentFocusedItem == pItem && __isKeypadOpened)
1405 __isKeypadOpened = false;
1415 ContactEditorForm::UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem *pItem)
1420 ContactEditorForm::UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem *pItem)
1429 case TABLE_VIEW_THUMBNAIL_FIELD_INDEX:
1431 SetThumbnailControls(*pItem, true);
1432 pItem->Invalidate(true);
1435 case TABLE_VIEW_NAME_FIELD_INDEX:
1437 if (__pCurrentFocusedItem == pItem && __isKeypadOpened)
1439 __isKeypadOpened = false;
1441 pItem->RemoveAllControls();
1442 SetNameFields(*pItem);
1446 case TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX:
1449 Label* pLabel = static_cast<Label *>(pItem->GetControl(1));
1458 valueString = __pPresentationModel->GetValue(DETAIL_PROPERTY_GROUP);
1459 if (valueString.IsEmpty() == true)
1461 valueString = ResourceManager::GetString(L"IDS_PB_BODY_NOT_ASSIGNED");
1464 else if (itemIndex == 2)
1466 String ringtoneName = __pPresentationModel->GetValue(DETAIL_PROPERTY_RINGTONE);
1469 ringtoneName.LastIndexOf(L"/", ringtoneName.GetLength() - 1, index);
1473 ringtoneName.SubString(index + 1, valueString);
1477 pLabel->SetText(valueString);
1478 pLabel->Invalidate(false);
1481 case TABLE_VIEW_BIRTHDAY_FIELD_INDEX:
1485 DateTime birthdayDate;
1486 EditDate* pBirthday = static_cast<EditDate *>(pItem->GetControl(1));
1488 if (pBirthday == null)
1493 __pPresentationModel->GetBirthday(birthdayDate);
1495 pBirthday->SetDate(birthdayDate);
1497 pBirthday->GetYearRange(min, max);
1498 max = birthdayDate.GetYear();
1499 pBirthday->SetYearRange(min, max);
1500 pBirthday->Invalidate(false);
1503 case TABLE_VIEW_NOTE_FIELD_INDEX:
1505 Control* pNoteField = pItem->GetControl(1);
1506 Control* pNoteLabel = pItem->GetControl(0);
1507 if (pNoteField == null)
1512 pItem->SetSize(pItem->GetWidth(), pNoteLabel->GetHeight() + pNoteField->GetHeight());
1520 Tizen::Ui::Controls::TableViewItem*
1521 ContactEditorForm::GetThumbnailField(int itemWidth)
1523 TableViewItem* pThumbnailItem = new (std::nothrow) TableViewItem();
1524 pThumbnailItem->Construct(Dimension(itemWidth, W_THUMBNAIL));
1525 pThumbnailItem->SetBackgroundColor(Color(0), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
1527 SetThumbnailControls(*pThumbnailItem);
1529 return pThumbnailItem;
1532 Tizen::Ui::Controls::TableViewItem*
1533 ContactEditorForm::GetNameFields(int itemWidth)
1535 __pNameFieldItem = new (std::nothrow) TableViewItem();
1536 __pNameFieldItem->Construct(Dimension(itemWidth, H_ITEM));
1537 __pNameFieldItem->SetBackgroundColor(Color(0), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
1539 SetNameFields(*__pNameFieldItem);
1541 return __pNameFieldItem;
1545 ContactEditorForm::SetNameFields(Tizen::Ui::Controls::TableViewItem& item)
1547 int itemWidth = item.GetWidth();
1548 int itemHeight = H_ITEM;
1550 if (__isExpandable == true)
1552 itemHeight = H_EXPANDED_NAME_FIELDS;
1554 if (__isJobTitleEnabled == true)
1556 itemHeight += H_ITEM;
1559 if (__isDepartmentEnabled)
1561 itemHeight += H_ITEM;
1565 item.SetSize(itemWidth, itemHeight);
1567 Rectangle itemBounds(W_ITEM_GAP, 0, itemWidth - (W_ITEM_GAP * 3) - H_BUTTON, H_ITEM);
1569 if (__isExpandable == true)
1571 EditField* pFirstName = new (std::nothrow) EditField();
1572 pFirstName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY, false, __pPresentationModel->GetValue(DETAIL_PROPERTY_FIRST_NAME).GetLength() + EDIT_FIELD_EXTENDED_LENGTH);
1573 pFirstName->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_FIRST_NAME"));
1574 pFirstName->AddFocusEventListener(*this);
1575 pFirstName->AddKeypadEventListener(*this);
1576 pFirstName->SetName(ResourceManager::GetString(L"IDS_PB_BODY_FIRST_NAME"));
1577 pFirstName->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_FIRST_NAME));
1578 pFirstName->AddTextEventListener(*this);
1580 item.AddControl(pFirstName);
1582 itemBounds.y += pFirstName->GetHeight();
1583 EditField* pMiddleName = new (std::nothrow) EditField();
1584 pMiddleName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
1585 pMiddleName->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_MIDDLE_NAME"));
1586 pMiddleName->AddFocusEventListener(*this);
1587 pMiddleName->AddKeypadEventListener(*this);
1588 pMiddleName->AddTextEventListener(*this);
1589 pMiddleName->SetName(ResourceManager::GetString(L"IDS_PB_BODY_MIDDLE_NAME"));
1590 pMiddleName->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_MIDDLE_NAME));
1592 item.AddControl(pMiddleName);
1594 itemBounds.y += pMiddleName->GetHeight();
1595 EditField* pLastName = new (std::nothrow) EditField();
1596 pLastName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY, false, __pPresentationModel->GetValue(DETAIL_PROPERTY_LAST_NAME).GetLength() + EDIT_FIELD_EXTENDED_LENGTH);
1597 pLastName->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_LAST_NAME"));
1598 pLastName->AddFocusEventListener(*this);
1599 pLastName->AddKeypadEventListener(*this);
1600 pLastName->SetName(ResourceManager::GetString(L"IDS_PB_BODY_LAST_NAME"));
1601 pLastName->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_LAST_NAME));
1602 pLastName->AddTextEventListener(*this);
1604 item.AddControl(pLastName);
1606 itemBounds.y += pLastName->GetHeight();
1607 EditField* pSuffix = new (std::nothrow) EditField();
1608 pSuffix->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
1609 pSuffix->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_SUFFIX"));
1610 pSuffix->AddFocusEventListener(*this);
1611 pSuffix->AddKeypadEventListener(*this);
1612 pSuffix->AddTextEventListener(*this);
1613 pSuffix->SetName(ResourceManager::GetString(L"IDS_PB_BODY_SUFFIX"));
1614 pSuffix->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_NAME_SUFFIX));
1616 item.AddControl(pSuffix);
1618 itemBounds.y += pSuffix->GetHeight();
1619 EditField* pNickName = new (std::nothrow) EditField();
1620 pNickName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
1621 pNickName->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_NICKNAME"));
1622 pNickName->AddFocusEventListener(*this);
1623 pNickName->AddKeypadEventListener(*this);
1624 pNickName->AddTextEventListener(*this);
1625 pNickName->SetName(ResourceManager::GetString(L"IDS_PB_BODY_NICKNAME"));
1626 pNickName->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_NICK_NAME));
1628 item.AddControl(pNickName);
1630 itemBounds.y += pNickName->GetHeight();
1631 if (__isJobTitleEnabled == true)
1633 EditField* pJobTitle = new (std::nothrow) EditField();
1634 pJobTitle->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
1635 pJobTitle->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_JOB_TITLE"));
1636 pJobTitle->AddFocusEventListener(*this);
1637 pJobTitle->AddKeypadEventListener(*this);
1638 pJobTitle->AddTextEventListener(*this);
1639 pJobTitle->SetName(ResourceManager::GetString(L"IDS_PB_BODY_JOB_TITLE"));
1640 pJobTitle->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_JOB_TITLE));
1642 item.AddControl(pJobTitle);
1644 itemBounds.y += pJobTitle->GetHeight();
1647 if (__isDepartmentEnabled == true)
1649 EditField* pDepartment = new (std::nothrow) EditField();
1650 pDepartment->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
1651 pDepartment->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_DEPARTMENT"));
1652 pDepartment->AddFocusEventListener(*this);
1653 pDepartment->AddKeypadEventListener(*this);
1654 pDepartment->AddTextEventListener(*this);
1655 pDepartment->SetName(ResourceManager::GetString(L"IDS_PB_BODY_DEPARTMENT"));
1656 pDepartment->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_DEPARTMENT));
1658 item.AddControl(pDepartment);
1660 itemBounds.y += pDepartment->GetHeight();
1663 EditField* pCompanyName = new (std::nothrow) EditField();
1664 pCompanyName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
1665 pCompanyName->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_COMPANY"));
1666 pCompanyName->AddFocusEventListener(*this);
1667 pCompanyName->AddKeypadEventListener(*this);
1668 pCompanyName->SetName(ResourceManager::GetString(L"IDS_PB_BODY_COMPANY"));
1669 pCompanyName->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_COMPANY));
1671 item.AddControl(pCompanyName);
1675 String firstName(__pPresentationModel->GetValue(DETAIL_PROPERTY_FIRST_NAME));
1676 String lastName(__pPresentationModel->GetValue(DETAIL_PROPERTY_LAST_NAME));
1678 EditField* pName = new (std::nothrow) EditField();
1679 pName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY, false, firstName.GetLength() + lastName.GetLength() + EDIT_FIELD_EXTENDED_LENGTH);
1680 pName->SetGuideText(ResourceManager::GetString(L"IDS_COM_BODY_DETAILS_NAME"));
1681 pName->AddFocusEventListener(*this);
1682 pName->AddKeypadEventListener(*this);
1683 pName->SetName(Integer::ToString(IDA_INPUT_FIELD_DISPLAY_NAME));
1684 pName->AddTextEventListener(*this);
1686 if (firstName.IsEmpty() == false)
1688 pName->SetText(firstName);
1691 if (lastName.IsEmpty() == false)
1693 pName->AppendText(CHARACTER_SPACE + lastName);
1696 item.AddControl(pName);
1699 Button* pButtonExpand = new (std::nothrow) Button();
1700 pButtonExpand->Construct(Rectangle(itemWidth - (H_BUTTON + W_ITEM_GAP), (H_ITEM - H_BUTTON) / 2, H_BUTTON, H_BUTTON));
1701 pButtonExpand->SetActionId(IDA_BUTTON_EXPANDABLE);
1702 pButtonExpand->AddActionEventListener(*this);
1704 Bitmap* pBitmap = null;
1705 Bitmap* pBitmapPressed = null;
1707 if (__isExpandable == true)
1709 pBitmap = ResourceManager::GetBitmapN(IDB_EXPAND_OPENED);
1710 pBitmapPressed = ResourceManager::GetBitmapN(IDB_EXPAND_OPENED_PRESSED);
1714 pBitmap = ResourceManager::GetBitmapN(IDB_EXPAND_CLOSED);
1715 pBitmapPressed = ResourceManager::GetBitmapN(IDB_EXPAND_CLOSED_PRESSED);
1718 if (pBitmap != null)
1720 pButtonExpand->SetNormalBitmap(Point(0, 0), *pBitmap);
1723 if (pBitmapPressed != null)
1725 pButtonExpand->SetPressedBitmap(Point(0, 0), *pBitmapPressed);
1729 delete pBitmapPressed;
1731 pBitmap = ResourceManager::GetBitmapN(IDB_EXPAND_BUTTON_NORMAL);
1732 pBitmapPressed = ResourceManager::GetBitmapN(IDB_EXPAND_BUTTON_PRESSED);
1734 if (pBitmap != null)
1736 pButtonExpand->SetNormalBackgroundBitmap(*pBitmap);
1739 if (pBitmapPressed != null)
1741 pButtonExpand->SetPressedBackgroundBitmap(*pBitmapPressed);
1742 delete pBitmapPressed;
1745 item.AddControl(pButtonExpand);
1748 Tizen::Ui::Controls::TableViewItem*
1749 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)
1751 TableViewItem* pTableViewItem = new (std::nothrow) TableViewItem();
1752 pTableViewItem->Construct(Dimension(itemWidth, H_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
1753 pTableViewItem->SetBackgroundColor(Color(0), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
1755 EditField* pInputField = new (std::nothrow) EditField();
1756 pInputField->Construct(Rectangle(W_ITEM_GAP, 0, itemWidth - (W_ITEM_GAP * 4) - H_BUTTON - W_TYPE_BUTTON, H_ITEM), style, INPUT_STYLE_OVERLAY);
1757 pInputField->SetGuideText(guideText);
1758 pInputField->SetText(text);
1759 pInputField->AddKeypadEventListener(*this);
1760 pInputField->AddFocusEventListener(*this);
1761 pInputField->AddTextEventListener(*this);
1763 int parsedItemIndex = 0;
1764 parsedItemIndex |= (groupIndex << TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT);
1765 parsedItemIndex |= (groupIndex << TABLE_VIEW_GROUP_INDEX_SHIFT);
1766 parsedItemIndex |= itemIndex;
1768 pInputField->SetName(Integer::ToString(parsedItemIndex));
1769 pTableViewItem->AddControl(pInputField);
1771 Button *pButtonType = new (std::nothrow) Button();
1772 pButtonType->Construct(Rectangle(pInputField->GetX() + pInputField->GetWidth() + W_ITEM_GAP, (H_ITEM - H_BUTTON) / 2, W_TYPE_BUTTON, H_BUTTON));
1773 pButtonType->SetText(titleText);
1774 pButtonType->AddTouchEventListener(*this);
1775 pButtonType->SetName(Integer::ToString(parsedItemIndex));
1777 Bitmap* pDropBoxIcon = ResourceManager::GetBitmapN(IDB_BUTTON_DROPBOX);
1779 if (pDropBoxIcon != null)
1781 pButtonType->SetNormalBitmap(Point(W_TYPE_BUTTON - W_DROPBOX_ICON, H_BUTTON - H_DROPBOX_ICON), *pDropBoxIcon);
1782 pButtonType->SetPressedBitmap(Point(W_TYPE_BUTTON - W_DROPBOX_ICON, H_BUTTON - H_DROPBOX_ICON), *pDropBoxIcon);
1783 pButtonType->SetDisabledBitmap(Point(W_TYPE_BUTTON - W_DROPBOX_ICON, H_BUTTON - H_DROPBOX_ICON), *pDropBoxIcon);
1784 delete pDropBoxIcon;
1786 pTableViewItem->AddControl(pButtonType);
1788 Button *pButtonDelete = new (std::nothrow) Button();
1789 pButtonDelete->Construct(Rectangle(itemWidth - H_BUTTON - W_ITEM_GAP, (H_ITEM - H_BUTTON) / 2, H_BUTTON, H_BUTTON));
1790 Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_MINUS);
1791 Bitmap* pBitmapPressed = ResourceManager::GetBitmapN(IDB_BUTTON_MINUS_PRESSED);
1793 if (pBitmap != null)
1795 pButtonDelete->SetNormalBitmap(Point(0, 0), *pBitmap);
1798 if (pBitmapPressed != null)
1800 pButtonDelete->SetPressedBitmap(Point(0, 0), *pBitmapPressed);
1801 delete pBitmapPressed;
1804 pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_DELETE_NORMAL);
1805 pBitmapPressed = ResourceManager::GetBitmapN(IDB_BUTTON_DELETE_PRESSED);
1807 if (pBitmap != null)
1809 pButtonDelete->SetNormalBackgroundBitmap(*pBitmap);
1812 if (pBitmapPressed != null)
1814 pButtonDelete->SetPressedBackgroundBitmap(*pBitmapPressed);
1815 delete pBitmapPressed;
1819 actionId |= TABLE_VIEW_DELETE_INPUT_FIELD_ID;
1820 actionId |= (groupIndex << TABLE_VIEW_GROUP_INDEX_SHIFT);
1821 actionId |= itemIndex;
1823 pButtonDelete->SetActionId(actionId);
1824 pButtonDelete->AddActionEventListener(*this);
1826 pTableViewItem->AddControl(pButtonDelete);
1828 if (isDeleteButton == false)
1830 pButtonDelete->SetShowState(false);
1833 return pTableViewItem;
1836 Tizen::Ui::Controls::TableViewItem*
1837 ContactEditorForm::GetPhoneNumberFields(int itemIndex, int itemWidth)
1839 if (__pPhoneNumberFieldItem->GetCount() == 0)
1841 int phoneNumberCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER);
1842 String guideText = ResourceManager::GetString(L"IDS_PB_BODY_NUMBER");
1843 String defaultPhoneNumber = __pPresentationModel->GetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER);
1845 for (int i = 0; i < phoneNumberCount; i++)
1847 String typeString = __pPresentationModel->GetType(DETAIL_PROPERTY_PHONE_NUMBER, i);
1848 String phoneNumberString = __pPresentationModel->GetValue(DETAIL_PROPERTY_PHONE_NUMBER, i);
1850 TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX, i, itemWidth, EDIT_FIELD_STYLE_PHONE_NUMBER, typeString, guideText, phoneNumberString, true);
1851 pItem->SetName(Integer::ToString(__pPresentationModel->GetPhoneNumberType(i)));
1853 __pPhoneNumberFieldItem->Add(*pItem);
1856 TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX, phoneNumberCount, itemWidth, EDIT_FIELD_STYLE_PHONE_NUMBER, __pPresentationModel->GetPhoneNumberTypeString(DETAIL_PHONENUMBER_TYPE_MOBILE), guideText);
1857 pItem->SetName(Integer::ToString(DETAIL_PHONENUMBER_TYPE_MOBILE));
1859 __pPhoneNumberFieldItem->Add(*pItem);
1860 SetAsDefaultPhoneNumber(__pPresentationModel->GetDefaultNumberIndex());
1863 if (__pPhoneNumberFieldItem->GetCount() != (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER) + 1))
1865 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"));
1866 pItem->SetName(Integer::ToString(DETAIL_PHONENUMBER_TYPE_MOBILE));
1868 __pPhoneNumberFieldItem->Add(*pItem);
1871 TableViewItem* pItem = static_cast<TableViewItem *>(__pPhoneNumberFieldItem->GetAt(itemIndex));
1880 Tizen::Ui::Controls::TableViewItem*
1881 ContactEditorForm::GetEmailFields(int itemIndex, int itemWidth)
1883 if (__pEmailFieldItem->GetCount() == 0)
1885 int emailCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_EMAIL);
1886 String guideText = ResourceManager::GetString(L"IDS_COM_BODY_EMAIL");
1888 for (int i = 0; i < emailCount; i++)
1890 String typeString = __pPresentationModel->GetType(DETAIL_PROPERTY_EMAIL, i);
1891 String emailString = __pPresentationModel->GetValue(DETAIL_PROPERTY_EMAIL, i);
1893 TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_EMAIL_FIELD_INDEX, i, itemWidth, EDIT_FIELD_STYLE_EMAIL, typeString, guideText, emailString, true);
1894 pItem->SetName(Integer::ToString(__pPresentationModel->GetEmailType(i)));
1896 __pEmailFieldItem->Add(*pItem);
1899 TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_EMAIL_FIELD_INDEX, emailCount, itemWidth, EDIT_FIELD_STYLE_EMAIL, __pPresentationModel->GetEmailTypeString(DETAIL_EMAIL_TYPE_HOME), guideText);
1900 pItem->SetName(Integer::ToString(DETAIL_EMAIL_TYPE_HOME));
1902 __pEmailFieldItem->Add(*pItem);
1905 if (__pEmailFieldItem->GetCount() != (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_EMAIL) + 1))
1907 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"));
1908 pItem->SetName(Integer::ToString(DETAIL_EMAIL_TYPE_HOME));
1910 __pEmailFieldItem->Add(*pItem);
1913 TableViewItem* pItem = static_cast<TableViewItem *>(__pEmailFieldItem->GetAt(itemIndex));
1922 Tizen::Ui::Controls::TableViewItem*
1923 ContactEditorForm::GetAddressFields(int itemIndex, int itemWidth)
1925 if (__pAddressFieldItem->GetCount() == 0)
1927 int addressCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_ADDRESS);
1928 String guideText = ResourceManager::GetString(L"IDS_PB_BODY_ADDRESS");
1930 for (int i = 0; i < addressCount; i++)
1932 String typeString = __pPresentationModel->GetType(DETAIL_PROPERTY_ADDRESS, i);
1933 String addressString = __pPresentationModel->GetValue(DETAIL_PROPERTY_ADDRESS, i);
1935 TableViewItem* pItem= GetInputFieldN(TABLE_VIEW_ADDRESS_FIELD_INDEX, i, itemWidth, EDIT_FIELD_STYLE_NORMAL, typeString, guideText, addressString, true);
1936 pItem->SetName(Integer::ToString(__pPresentationModel->GetAddressType(DETAIL_PROPERTY_ADDRESS, i)));
1938 __pAddressFieldItem->Add(*pItem);
1941 TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_ADDRESS_FIELD_INDEX, addressCount, itemWidth, EDIT_FIELD_STYLE_NORMAL, ResourceManager::GetString(L"IDS_PB_BODY_HOME"), guideText);
1942 pItem->SetName(Integer::ToString(DETAIL_ADDRESS_TYPE_HOME));
1944 __pAddressFieldItem->Add(*pItem);
1947 if (__pAddressFieldItem->GetCount() != (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_ADDRESS) + 1))
1949 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"));
1950 pItem->SetName(Integer::ToString(DETAIL_ADDRESS_TYPE_HOME));
1952 __pAddressFieldItem->Add(*pItem);
1955 TableViewItem* pItem = static_cast<TableViewItem *>(__pAddressFieldItem->GetAt(itemIndex));
1964 Tizen::Ui::Controls::TableViewItem*
1965 ContactEditorForm::GetImAddressFields(int itemIndex, int itemWidth)
1967 if (__pImAddressFieldItem->GetCount() == 0)
1969 int imCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_IM_ADDRESS);
1970 String guideText = ResourceManager::GetString(L"IDS_PB_HEADER_INSTANT_MESSENGER_ABB");
1972 for (int i = 0; i < imCount; i++)
1974 String typeString = __pPresentationModel->GetType(DETAIL_PROPERTY_IM_ADDRESS, i);
1975 String imString = __pPresentationModel->GetValue(DETAIL_PROPERTY_IM_ADDRESS, i);
1977 TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_IM_ADDRESS_FIELD_INDEX, i, itemWidth, EDIT_FIELD_STYLE_NORMAL, typeString, guideText, imString, true);
1978 pItem->SetName(Integer::ToString(__pPresentationModel->GetImAddressType(i)));
1980 __pImAddressFieldItem->Add(*pItem);
1983 TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_IM_ADDRESS_FIELD_INDEX, imCount, itemWidth, EDIT_FIELD_STYLE_NORMAL, IM_ADDRESS_YAHOO, guideText);
1984 pItem->SetName(Integer::ToString(DETAIL_IM_ADDRESS_TYPE_YAHOO));
1986 __pImAddressFieldItem->Add(*pItem);
1989 if (__pImAddressFieldItem->GetCount() != (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_IM_ADDRESS) + 1))
1991 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"));
1992 pItem->SetName(Integer::ToString(DETAIL_IM_ADDRESS_TYPE_YAHOO));
1994 __pImAddressFieldItem->Add(*pItem);
1997 TableViewItem* pItem = static_cast<TableViewItem *>(__pImAddressFieldItem->GetAt(itemIndex));
2006 Tizen::Ui::Controls::TableViewItem*
2007 ContactEditorForm::GetUrlFields(int itemIndex, int itemWidth)
2009 if (__pUrlFieldItem->GetCount() == 0)
2011 int urlCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_URL);
2012 String guideText = ResourceManager::GetString(L"IDS_PB_BODY_URL");
2014 for (int i = 0; i < urlCount; i++)
2016 String typeString = __pPresentationModel->GetType(DETAIL_PROPERTY_URL, i);
2017 String urlString = __pPresentationModel->GetValue(DETAIL_PROPERTY_URL, i);
2019 TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_URL_FIELD_INDEX, i, itemWidth, EDIT_FIELD_STYLE_URL, typeString, guideText, urlString, true);
2020 pItem->SetName(Integer::ToString(__pPresentationModel->GetUrlType(i)));
2022 __pUrlFieldItem->Add(*pItem);
2025 TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_URL_FIELD_INDEX, urlCount, itemWidth, EDIT_FIELD_STYLE_URL, __pPresentationModel->GetUrlTypeString(DETAIL_URL_TYPE_HOME), guideText);
2026 pItem->SetName(Integer::ToString(DETAIL_URL_TYPE_HOME));
2028 __pUrlFieldItem->Add(*pItem);
2031 if (__pUrlFieldItem->GetCount() != (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_URL) + 1))
2033 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"));
2034 pItem->SetName(Integer::ToString(DETAIL_URL_TYPE_HOME));
2036 __pUrlFieldItem->Add(*pItem);
2039 TableViewItem* pItem = static_cast<TableViewItem *>(__pUrlFieldItem->GetAt(itemIndex));
2047 Tizen::Ui::Controls::TableViewItem*
2048 ContactEditorForm::GetGroupsField(int itemWidth)
2050 TableViewItem* pGroupsItem = new (std::nothrow) TableViewItem();
2051 pGroupsItem->Construct(Dimension(itemWidth, H_DOUBLE_LINE_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
2052 pGroupsItem->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND);
2054 Label* pLabelTitle = new (std::nothrow) Label();
2055 pLabelTitle->Construct(Rectangle(0, H_GROUP_RINGTONE_TITLE_GAP, itemWidth, H_GROUP_RINGTONE_TITLE_LABEL), ResourceManager::GetString(L"IDS_PB_BODY_GROUPS"));
2056 pLabelTitle->SetTextConfig(FONT_SIZE_TITLE_TEXT, LABEL_TEXT_STYLE_BOLD);
2057 pLabelTitle->SetTextColor(COLOR_ITEM_TITLE);
2058 pLabelTitle->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
2060 pGroupsItem->AddControl(pLabelTitle);
2062 String groupsName = __pPresentationModel->GetValue(DETAIL_PROPERTY_GROUP);
2063 if (groupsName.IsEmpty() == true)
2065 groupsName = ResourceManager::GetString(L"IDS_PB_BODY_NOT_ASSIGNED");
2068 Label* pLabelGroupName = new (std::nothrow) Label();
2069 pLabelGroupName->Construct(Rectangle(0, H_GROUP_RINGTONE_TITLE_GAP + H_GROUP_RINGTONE_TITLE_LABEL, itemWidth, H_GROUP_RINGTONE_VALUE_LABEL), groupsName);
2070 pLabelGroupName->SetTextConfig(FONT_SIZE_VALUE_TEXT, LABEL_TEXT_STYLE_NORMAL);
2071 pLabelGroupName->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
2073 pGroupsItem->AddControl(pLabelGroupName);
2078 Tizen::Ui::Controls::TableViewItem*
2079 ContactEditorForm::GetBirthdayField(int itemWidth)
2081 DateTime birthdayDate;
2082 EditDate* pBirthday = new (std::nothrow) EditDate();
2083 pBirthday->Construct(Point(W_TITLE_LABEL, 0));
2084 pBirthday->AddDateChangeEventListener(*this);
2086 __pPresentationModel->GetBirthday(birthdayDate);
2087 pBirthday->SetDate(birthdayDate);
2089 DateTime currentDate;
2090 Tizen::System::SystemTime::GetCurrentTime(currentDate);
2093 pBirthday->GetYearRange(min, max);
2094 max = currentDate.GetYear();
2095 pBirthday->SetYearRange(min, max);
2097 TableViewItem* pBirthdayItem = new (std::nothrow) TableViewItem();
2098 pBirthdayItem->Construct(Dimension(itemWidth, H_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
2099 pBirthdayItem->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
2100 pBirthdayItem->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
2102 Label* pLabelTitle = new (std::nothrow) Label();
2103 pLabelTitle->Construct(Rectangle(0, 0, W_TITLE_LABEL, pBirthdayItem->GetHeight()), L"");
2104 pLabelTitle->SetText(ResourceManager::GetString(L"IDS_PB_BODY_BIRTHDAY"));
2105 pLabelTitle->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
2106 pLabelTitle->SetTextColor(COLOR_ITEM_TITLE);
2107 pLabelTitle->SetTextConfig(FONT_SIZE_TITLE_TEXT, LABEL_TEXT_STYLE_BOLD);
2109 pBirthdayItem->AddControl(pLabelTitle);
2110 pBirthdayItem->AddControl(pBirthday);
2112 Button* pClearButton = new (std::nothrow) Button();
2113 pClearButton->Construct(Rectangle(itemWidth - (H_BUTTON * 2), (pBirthdayItem->GetHeight() - H_BUTTON) / 2, H_BUTTON, H_BUTTON));
2114 pClearButton->SetActionId(IDA_BUTTON_BIRTHDAY_CLEAR);
2115 pClearButton->AddActionEventListener(*this);
2117 Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_RESET_NORMAL);
2118 if (pBitmap != null)
2120 pClearButton->SetNormalBitmap(Point(0, 0), *pBitmap);
2123 pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_RESET_PRESSED);
2124 if (pBitmap != null)
2126 pClearButton->SetPressedBitmap(Point(0, 0), *pBitmap);
2130 pBirthdayItem->AddControl(pClearButton);
2132 return pBirthdayItem;
2135 Tizen::Ui::Controls::TableViewItem*
2136 ContactEditorForm::GetNoteField(int itemWidth)
2138 if (__pNoteFieldItem != null)
2140 return __pNoteFieldItem;
2143 __pNoteFieldItem = new (std::nothrow) TableViewItem();
2144 __pNoteFieldItem->Construct(Dimension(itemWidth, H_DOUBLE_LINE_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
2145 __pNoteFieldItem->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
2146 __pNoteFieldItem->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
2149 Label* pNoteTitle = new (std::nothrow) Label();
2150 pNoteTitle->Construct(Rectangle(0, 0, itemWidth, H_LABEL), ResourceManager::GetString(L"IDS_PB_BODY_NOTE"));
2151 pNoteTitle->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
2152 pNoteTitle->SetTextColor(COLOR_ITEM_TITLE);
2153 pNoteTitle->SetTextConfig(FONT_SIZE_TITLE_TEXT, LABEL_TEXT_STYLE_BOLD);
2154 __pNoteFieldItem->AddControl(pNoteTitle);
2156 ExpandableEditArea* pNoteEditArea = new (std::nothrow) ExpandableEditArea();
2157 pNoteEditArea->Construct(Rectangle(0, H_LABEL, itemWidth, H_DOUBLE_LINE_ITEM - H_LABEL), EXPANDABLE_EDIT_AREA_STYLE_NORMAL, EXPANDABLE_EDIT_AREA_TITLE_STYLE_NONE);
2158 pNoteEditArea->SetTitleText(ResourceManager::GetString(L"IDS_PB_BODY_NOTE"));
2159 pNoteEditArea->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_NOTE));
2160 pNoteEditArea->AddExpandableEditAreaEventListener(*this);
2161 pNoteEditArea->AddKeypadEventListener(*this);
2162 pNoteEditArea->AddFocusEventListener(*this);
2163 pNoteEditArea->AddTextEventListener(*this);
2165 __pNoteFieldItem->AddControl(pNoteEditArea);
2167 return __pNoteFieldItem;
2170 Tizen::Ui::Controls::TableViewItem*
2171 ContactEditorForm::GetRingtoneField(int itemWidth)
2173 TableViewItem* pRingtoneItem = new (std::nothrow) TableViewItem();
2174 pRingtoneItem->Construct(Dimension(itemWidth, H_DOUBLE_LINE_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
2175 pRingtoneItem->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND);
2177 Label* pLabelTitle = new (std::nothrow) Label();
2178 pLabelTitle->Construct(Rectangle(0, H_GROUP_RINGTONE_TITLE_GAP, itemWidth, H_GROUP_RINGTONE_TITLE_LABEL), ResourceManager::GetString(L"IDS_PB_BODY_RINGTONE"));
2179 pLabelTitle->SetTextConfig(FONT_SIZE_TITLE_TEXT, LABEL_TEXT_STYLE_BOLD);
2180 pLabelTitle->SetTextColor(COLOR_ITEM_TITLE);
2181 pLabelTitle->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
2183 pRingtoneItem->AddControl(pLabelTitle);
2185 String ringtoneName = __pPresentationModel->GetValue(DETAIL_PROPERTY_RINGTONE);
2189 ringtoneName.LastIndexOf(L"/", ringtoneName.GetLength() - 1, index);
2193 ringtoneName.SubString(index + 1, trimmedPath);
2196 Label* pLabelRingToneName = new (std::nothrow) Label();
2197 pLabelRingToneName->Construct(Rectangle(0, H_GROUP_RINGTONE_TITLE_GAP + H_GROUP_RINGTONE_TITLE_LABEL, itemWidth, H_GROUP_RINGTONE_VALUE_LABEL), trimmedPath);
2198 pLabelRingToneName->SetTextConfig(FONT_SIZE_VALUE_TEXT, LABEL_TEXT_STYLE_NORMAL);
2199 pLabelRingToneName->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
2200 pLabelRingToneName->SetTextColor(Color(COLOR_RINGTONE));
2201 pRingtoneItem->AddControl(pLabelRingToneName);
2203 Button* pClearButton = new (std::nothrow) Button();
2204 pClearButton->Construct(Rectangle(itemWidth - X_REFRESH_BUTTON_MARGIN, (pRingtoneItem->GetHeight() - H_ICON_BUTTON) / 2, H_ICON_BUTTON, H_ICON_BUTTON));
2205 pClearButton->SetActionId(IDA_BUTTON_RINGTONE_CLEAR);
2206 pClearButton->AddActionEventListener(*this);
2208 Bitmap* pReset = ResourceManager::GetBitmapN(IDB_DETAILS_RESET_NORMAL);
2211 pClearButton->SetNormalBitmap(Point(0, 0), *pReset);
2214 pReset = ResourceManager::GetBitmapN(IDB_DETAILS_RESET_PRESSED);
2217 pClearButton->SetPressedBitmap(Point(0, 0), *pReset);
2221 pRingtoneItem->AddControl(pClearButton);
2222 pRingtoneItem->SetIndividualSelectionEnabled(pClearButton, true);
2224 return pRingtoneItem;
2227 Tizen::Ui::Controls::TableViewItem*
2228 ContactEditorForm::GetMoreInformationField(int itemWidth)
2230 TableViewItem* pMoreInformationItem = new (std::nothrow) TableViewItem();
2231 pMoreInformationItem->Construct(Dimension(itemWidth, H_DESCRIPTION_CONTAINER));
2232 pMoreInformationItem->SetBackgroundColor(Color(COLOR_TABLE_VIEW_BG), TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
2233 pMoreInformationItem->SetBackgroundColor(Color(COLOR_TABLE_VIEW_BG), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
2235 Panel* pPanel = new (std::nothrow) Panel();
2236 pPanel->Construct(Rectangle(0, -(H_DIVIDER), itemWidth, H_DESCRIPTION_CONTAINER + H_DIVIDER));
2237 pPanel->SetBackgroundColor(Color(COLOR_TABLE_VIEW_BG));
2239 pMoreInformationItem->AddControl(pPanel);
2241 Button* pButtonMoreInformation = new (std::nothrow) Button();
2242 pButtonMoreInformation->Construct(Rectangle(X_MORE_INFORMATION_BUTTON, Y_MORE_INFORMATION_BUTTON, itemWidth - (X_MORE_INFORMATION_BUTTON * 2), H_BUTTON));
2243 pButtonMoreInformation->SetText(ResourceManager::GetString(L"IDS_KA_BODY_MORE_INFORMATION"));
2244 pButtonMoreInformation->SetActionId(IDA_BUTTON_MORE_INFO);
2245 pButtonMoreInformation->AddActionEventListener(*this);
2247 pPanel->AddControl(pButtonMoreInformation);
2249 return pMoreInformationItem;
2252 Tizen::Ui::Controls::TableViewItem*
2253 ContactEditorForm::GetDefaultPhoneNumberItem(int itemWidth)
2255 TableViewItem* pDefaultPhoneNumberItem = new (std::nothrow) TableViewItem();
2256 pDefaultPhoneNumberItem->Construct(Dimension(itemWidth, H_ITEM));
2257 pDefaultPhoneNumberItem->SetBackgroundColor(Color(0), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
2259 Button* pButtonDefaultNumber = new (std::nothrow) Button();
2260 pButtonDefaultNumber->Construct(Rectangle(X_MORE_INFORMATION_BUTTON, Y_DEFAULT_NUMBER_BUTTON, itemWidth - (X_MORE_INFORMATION_BUTTON * 2), H_BUTTON));
2261 pButtonDefaultNumber->SetText(ResourceManager::GetString(L"IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"));
2262 pButtonDefaultNumber->SetActionId(IDA_BUTTON_DEFAULT_PHONE_NUMBER);
2263 pButtonDefaultNumber->AddActionEventListener(*this);
2265 pDefaultPhoneNumberItem->AddControl(pButtonDefaultNumber);
2267 return pDefaultPhoneNumberItem;
2271 ContactEditorForm::DeleteInputField(int groupIndex, int itemIndex)
2273 result r = E_SUCCESS;
2274 ArrayList* pFieldList = null;
2278 case TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX:
2280 pFieldList = __pPhoneNumberFieldItem;
2283 case TABLE_VIEW_EMAIL_FIELD_INDEX:
2285 pFieldList = __pEmailFieldItem;
2288 case TABLE_VIEW_ADDRESS_FIELD_INDEX:
2290 pFieldList = __pAddressFieldItem;
2293 case TABLE_VIEW_IM_ADDRESS_FIELD_INDEX:
2295 pFieldList = __pImAddressFieldItem;
2298 case TABLE_VIEW_URL_FIELD_INDEX:
2300 pFieldList = __pUrlFieldItem;
2307 TryReturn(pFieldList != null, E_FAILURE, "[E_FAILURE] Unable to delete the item.")
2309 r = pFieldList->RemoveAt(itemIndex, false);
2310 __isDataRemoved = true;
2311 __pTableView->RefreshItem(groupIndex, itemIndex, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
2312 __isDataRemoved = false;
2314 Rectangle clientBounds = GetClientAreaBounds();
2315 __pTableView->SetSize(clientBounds.width, clientBounds.height);
2317 for (int i = itemIndex; i < pFieldList->GetCount(); i++)
2319 TableViewItem* pItem = static_cast<TableViewItem *>(pFieldList->GetAt(i));
2326 EditField* pInputField = static_cast<EditField*>(pItem->GetControl(0));
2327 if (pInputField == null)
2332 result r = Integer::Decode(pInputField->GetName(), parsedIndex);
2333 if (r == E_NUM_FORMAT)
2337 pInputField->SetName(Integer::ToString(parsedIndex - 1));
2339 Button* pTypeButton = static_cast<Button*>(pItem->GetControl(1));
2340 if (pTypeButton == null)
2345 r = Integer::Decode(pTypeButton->GetName(), parsedIndex);
2346 if (r == E_NUM_FORMAT)
2350 pTypeButton->SetName(Integer::ToString(parsedIndex - 1));
2352 Button* pDeleteButton = static_cast<Button *>(pItem->GetControl(2));
2353 if (pDeleteButton == null)
2357 pDeleteButton->SetActionId(pDeleteButton->GetActionId() - 1);
2360 SaveContactData(false);
2361 SetSaveButtonEnabled(IsSaveContactValid());
2363 if (groupIndex == TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX)
2365 if (itemIndex == __pPresentationModel->GetDefaultNumberIndex())
2369 SetAsDefaultPhoneNumber(itemIndex - 1);
2373 SetAsDefaultPhoneNumber(itemIndex);
2376 else if (itemIndex < __pPresentationModel->GetDefaultNumberIndex())
2378 SetAsDefaultPhoneNumber(__pPresentationModel->GetDefaultNumberIndex() - 1);
2382 if (__isDefaultPhoneNumberButtonEnabled == true && __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER) < 2)
2384 __pTableView->RefreshItem(TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX, __pTableView->GetItemCountAt(TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX) - 1, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
2386 __isDefaultPhoneNumberButtonEnabled = false;
2393 ContactEditorForm::SetThumbnailControls(Tizen::Ui::Controls::TableViewItem& item, bool isUpdated)
2395 Label* pLabelThumbnail = null;
2396 Button* pButtonAdd = null;
2397 Button* pButtonDelete = null;
2399 if (isUpdated == false)
2401 int itemWidth = GetBounds().width;
2403 pLabelThumbnail = new (std::nothrow) Label();
2404 pLabelThumbnail->Construct(Rectangle((itemWidth - W_THUMBNAIL) / 2, 0, W_THUMBNAIL, W_THUMBNAIL), L"");
2406 item.AddControl(pLabelThumbnail);
2408 Bitmap* pBitmapItem = null;
2409 Bitmap* pBitmapItemPressed = null;
2411 pButtonAdd = new (std::nothrow) Button();
2412 pButtonAdd->Construct(Rectangle(pLabelThumbnail->GetX() + ((pLabelThumbnail->GetWidth() - H_BUTTON) / 2), pLabelThumbnail->GetY() + ((pLabelThumbnail->GetHeight() - H_BUTTON) / 2), H_BUTTON, H_BUTTON));
2413 pButtonAdd->SetActionId(IDA_BUTTON_THUMBNAIL_ADD);
2414 pButtonAdd->AddActionEventListener(*this);
2416 pBitmapItem = ResourceManager::GetBitmapN(IDB_BUTTON_ADD);
2417 pBitmapItemPressed = ResourceManager::GetBitmapN(IDB_BUTTON_ADD_PRESSED);
2419 if (pBitmapItem != null)
2421 pButtonAdd->SetNormalBackgroundBitmap(*pBitmapItem);
2424 if (pBitmapItemPressed != null)
2426 pButtonAdd->SetPressedBackgroundBitmap(*pBitmapItemPressed);
2427 delete pBitmapItemPressed;
2429 item.AddControl(pButtonAdd);
2431 pButtonDelete = new (std::nothrow) Button();
2432 pButtonDelete->Construct(Rectangle(pLabelThumbnail->GetX() + W_THUMBNAIL_DELETE_BUTTON_GAP, pLabelThumbnail->GetY() + H_THUMBNAIL_DELETE_BUTTON_GAP, H_BUTTON, H_BUTTON));
2433 pButtonDelete->SetActionId(IDA_BUTTON_THUMBNAIL_DELETE);
2434 pButtonDelete->AddActionEventListener(*this);
2436 pBitmapItem = ResourceManager::GetBitmapN(IDB_BUTTON_MINUS);
2437 pBitmapItemPressed = ResourceManager::GetBitmapN(IDB_BUTTON_MINUS_PRESSED);
2439 if (pBitmapItem != null)
2441 pButtonDelete->SetNormalBitmap(Point(0, 0), *pBitmapItem);
2444 if (pBitmapItemPressed != null)
2446 pButtonDelete->SetPressedBitmap(Point(0, 0), *pBitmapItemPressed);
2447 delete pBitmapItemPressed;
2450 pBitmapItem = ResourceManager::GetBitmapN(IDB_BUTTON_DELETE_NORMAL);
2451 pBitmapItemPressed = ResourceManager::GetBitmapN(IDB_BUTTON_DELETE_PRESSED);
2453 if (pBitmapItem != null)
2455 pButtonDelete->SetNormalBackgroundBitmap(*pBitmapItem);
2458 if (pBitmapItemPressed != null)
2460 pButtonDelete->SetPressedBackgroundBitmap(*pBitmapItemPressed);
2461 delete pBitmapItemPressed;
2463 item.AddControl(pButtonDelete);
2465 Button* pButtonCamera = new (std::nothrow) Button();
2466 pButtonCamera->Construct(Rectangle(pLabelThumbnail->GetX() + pLabelThumbnail->GetWidth(), pLabelThumbnail->GetY() + pLabelThumbnail->GetHeight() - H_BUTTON, H_BUTTON, H_BUTTON));
2467 pButtonCamera->SetActionId(IDA_BUTTON_CAMERA);
2468 pButtonCamera->AddActionEventListener(*this);
2470 pBitmapItem = ResourceManager::GetBitmapN(IDB_BUTTON_CAMERA);
2471 pBitmapItemPressed = ResourceManager::GetBitmapN(IDB_BUTTON_CAMERA_PRESSED);
2472 if (pBitmapItem != null)
2474 pButtonCamera->SetNormalBackgroundBitmap(*pBitmapItem);
2477 if (pBitmapItemPressed != null)
2479 pButtonCamera->SetPressedBackgroundBitmap(*pBitmapItemPressed);
2480 delete pBitmapItemPressed;
2483 item.AddControl(pButtonCamera);
2487 pLabelThumbnail = static_cast<Label*>(item.GetControl(0));
2488 TryReturnVoid(pLabelThumbnail != null, "[E_FAILURE] Unable to get a thumbnail control.");
2490 pButtonAdd = static_cast<Button*>(item.GetControl(1));
2491 TryReturnVoid(pButtonAdd != null, "[E_FAILURE] Unable to get a button.");
2493 pButtonDelete = static_cast<Button*>(item.GetControl(2));
2494 TryReturnVoid(pButtonDelete != null, "[E_FAILURE] Unable to get a button.");
2497 Bitmap* pThumbnail = null;
2498 String thumbnailPath = __pPresentationModel->GetValue(DETAIL_PROPERTY_THUMBNAIL);
2500 if (thumbnailPath.IsEmpty() == false)
2502 ImageBuffer thumbnailImageBuffer;
2503 result r = thumbnailImageBuffer.Construct(thumbnailPath);
2506 pThumbnail = thumbnailImageBuffer.GetBitmapN(BITMAP_PIXEL_FORMAT_ARGB8888, BUFFER_SCALING_NONE);
2508 if (pThumbnail != null)
2510 pThumbnail->SetScalingQuality(BITMAP_SCALING_QUALITY_HIGH);
2511 pThumbnail->Scale(Dimension(W_THUMBNAIL, W_THUMBNAIL));
2512 pLabelThumbnail->SetBackgroundBitmap(*pThumbnail);
2513 pButtonAdd->SetShowState(false);
2514 pButtonDelete->SetShowState(true);
2519 pThumbnail = ResourceManager::GetBitmapN(IDB_THUMBNAIL_BACKGROUND);
2520 if (pThumbnail != null)
2522 pLabelThumbnail->SetBackgroundBitmap(*pThumbnail);
2523 pButtonAdd->SetShowState(true);
2524 pButtonDelete->SetShowState(false);
2532 ContactEditorForm::AddHorizontalDivider(Tizen::Ui::Controls::TableViewItem* pItem, int positionY, int width)
2534 Label* pDivider = new (std::nothrow) Label();
2535 pDivider->Construct(Rectangle(0, positionY, width, H_DIVIDER), L"");
2536 pDivider->SetBackgroundColor(Color(COLOR_DIVIDER));
2537 pDivider->SetEnabled(false);
2539 pItem->AddControl(pDivider);
2543 ContactEditorForm::AddVerticalDivider(Tizen::Ui::Controls::TableViewItem* pItem, int positionX, int positionY)
2545 Label* pDivider = new (std::nothrow) Label();
2546 pDivider->Construct(Rectangle(positionX, positionY, W_DIVIDER, H_ITEM), L"");
2547 pDivider->SetBackgroundColor(Color(COLOR_DIVIDER));
2548 pDivider->SetEnabled(false);
2550 pItem->AddControl(pDivider);
2554 ContactEditorForm::SetAsDefaultPhoneNumber(int index)
2556 result r = E_SUCCESS;
2557 TableViewItem* pItem = null;
2558 EditField* pEditField = null;
2560 pItem = static_cast<TableViewItem *>(__pPhoneNumberFieldItem->GetAt(index));
2567 pEditField = static_cast<EditField *>(pItem->GetControl(0));
2568 if (pEditField == null)
2574 __pPresentationModel->SetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER, L"", index);
2576 if (pEditField->IsVisible() == false)
2578 __pTableView->ScrollToItem(TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX, index);
2580 pEditField->Invalidate(true);
2587 ContactEditorForm::ChangeNameFieldStatus(void)
2589 result r = E_SUCCESS;
2591 r = SaveNameFields();
2593 __isExpandable = (__isExpandable == true) ? false : true;
2599 ContactEditorForm::SaveContactData(bool isSaved)
2601 result r = E_SUCCESS;
2603 if (isSaved == true)
2605 long long avialableMemory = 0;
2606 result r = E_SUCCESS;
2608 String key(RUNTIMEINFO_INTERNAL_MEMORY_KEY);
2610 r = RuntimeInfo::GetValue(key, avialableMemory);
2611 if (avialableMemory == 0)
2613 int modalResult = 0;
2614 MessageBox memoryFullMessageBox;
2615 memoryFullMessageBox.Construct(L"", ResourceManager::GetString(L"IDS_EMAIL_POP_DEVICE_STORAGE_FULL"), MSGBOX_STYLE_NONE, 1000);
2616 memoryFullMessageBox.ShowAndWait(modalResult);
2621 r = SaveNameFields();
2623 for (int i = 0; i < __pPhoneNumberFieldItem->GetCount(); i++)
2626 TableViewItem* pItem = static_cast<TableViewItem *>(__pPhoneNumberFieldItem->GetAt(i));
2633 EditField* pEditField = static_cast<EditField *>(pItem->GetControl(0));
2634 if (pEditField == null)
2640 String phoneNumberString(pEditField->GetText());
2641 String phoneNumberTypeString(pItem->GetName());
2642 int phoneNumberType;
2643 phoneNumberString.Trim();
2646 for (int i = 0; i < phoneNumberString.GetLength(); i++)
2648 phoneNumberString.GetCharAt(i, ch);
2650 if(ch == '+' && i == 0)
2654 else if ((ch < '0' || ch > '9') && (ch != '*') && (ch != '#'))
2665 if (isSaved == true && phoneNumberString.GetLength() > 0 && r != E_SUCCESS)
2667 __pInvalidNumberPopup->SetShowState(true);
2668 __pInvalidNumberPopup->Show();
2673 Integer::Parse(phoneNumberTypeString, phoneNumberType);
2675 __pPresentationModel->SetPhoneNumber((DetailPhoneNumberType)phoneNumberType, phoneNumberString, i);
2678 for (int i = 0; i < __pEmailFieldItem->GetCount(); i++)
2680 TableViewItem* pItem = static_cast<TableViewItem *>(__pEmailFieldItem->GetAt(i));
2687 EditField* pEditField = static_cast<EditField *>(pItem->GetControl(0));
2688 if (pEditField == null)
2694 String emailString(pEditField->GetText());
2695 String remainingString;
2696 String emailTypeString(pItem->GetName());
2700 Integer::Parse(emailTypeString, emailType);
2702 r = __pPresentationModel->SetEmail((DetailEmailType)emailType, emailString, i);
2704 if (isSaved == true && r == E_SUCCESS)
2706 if(emailString.GetLength() > 0)
2708 bool isValidEmail = ValidateEmailAddress(emailString);
2709 if (isValidEmail != true)
2712 MessageBox invalidEmailMessage;
2713 invalidEmailMessage.Construct(L"", ResourceManager::GetString(L"IDS_PB_POP_INVALID_EMAIL_ADDRESS"), MSGBOX_STYLE_OK);
2714 invalidEmailMessage.ShowAndWait(modalResult);
2715 pEditField->ShowKeypad();
2723 for (int i = 0; i < __pAddressFieldItem->GetCount(); i++)
2725 TableViewItem* pItem = static_cast<TableViewItem *>(__pAddressFieldItem->GetAt(i));
2732 EditField* pEditField = static_cast<EditField *>(pItem->GetControl(0));
2733 if (pEditField == null)
2739 String addressString(pEditField->GetText());
2741 addressString.Trim();
2742 __pPresentationModel->SetValue(DETAIL_PROPERTY_ADDRESS_STREET, addressString, i);
2745 for (int i = 0; i < __pImAddressFieldItem->GetCount(); i++)
2747 TableViewItem* pItem = static_cast<TableViewItem *>(__pImAddressFieldItem->GetAt(i));
2754 EditField* pEditField = static_cast<EditField *>(pItem->GetControl(0));
2755 if (pEditField == null)
2761 String addressString(pEditField->GetText());
2762 String addressTypeString(pItem->GetName());
2765 addressString.Trim();
2766 Integer::Parse(addressTypeString, addressType);
2768 __pPresentationModel->SetImAddress((DetailImAddressType)addressType, addressString, i);
2771 for (int i = 0; i < __pUrlFieldItem->GetCount(); i++)
2773 TableViewItem* pItem = static_cast<TableViewItem *>(__pUrlFieldItem->GetAt(i));
2780 EditField* pEditField = static_cast<EditField *>(pItem->GetControl(0));
2781 if (pEditField == null)
2787 String urlString(pEditField->GetText());
2788 String urlTypeString(pItem->GetName());
2792 Integer::Parse(urlTypeString, urlType);
2794 __pPresentationModel->SetUrl((DetailUrlType)urlType, urlString, i);
2797 if (__pNoteFieldItem != null)
2800 ExpandableEditArea* pNoteEditArea = static_cast<ExpandableEditArea *>(__pNoteFieldItem->GetControl(1));
2801 if (pNoteEditArea != null)
2803 noteString.Append(pNoteEditArea->GetText());
2806 __pPresentationModel->SetValue(DETAIL_PROPERTY_NOTE, noteString);
2809 if (isSaved == true)
2811 r = __pPresentationModel->AddAddressBook();
2817 ContactEditorForm::SaveNameFields(void)
2819 result r = E_SUCCESS;
2821 if (__pNameFieldItem == null)
2826 if (__isExpandable == true)
2828 EditField* pFirstName = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_FIRST_NAME"), false));
2829 if (pFirstName == null)
2833 __pPresentationModel->SetValue(DETAIL_PROPERTY_FIRST_NAME, pFirstName->GetText());
2835 EditField* pLastName = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_LAST_NAME"), false));
2836 if (pLastName == null)
2841 __pPresentationModel->SetValue(DETAIL_PROPERTY_LAST_NAME, pLastName->GetText());
2843 EditField* pMiddleName = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_MIDDLE_NAME"), false));
2844 if (pMiddleName == null)
2848 __pPresentationModel->SetValue(DETAIL_PROPERTY_MIDDLE_NAME, pMiddleName->GetText());
2850 EditField* pSuffix = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_SUFFIX"), false));
2851 if (pSuffix == null)
2855 __pPresentationModel->SetValue(DETAIL_PROPERTY_NAME_SUFFIX, pSuffix->GetText());
2857 EditField* pNickName = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_NICKNAME"), false));
2858 if (pNickName == null)
2862 __pPresentationModel->SetValue(DETAIL_PROPERTY_NICK_NAME, pNickName->GetText());
2864 EditField* pCompanyName = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_COMPANY"), false));
2865 if (pCompanyName == null)
2869 __pPresentationModel->SetValue(DETAIL_PROPERTY_COMPANY, pCompanyName->GetText());
2871 if (__isJobTitleEnabled == true)
2873 EditField* pJobTitle = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_JOB_TITLE"), false));
2874 if (pJobTitle == null)
2878 __pPresentationModel->SetValue(DETAIL_PROPERTY_JOB_TITLE, pJobTitle->GetText());
2881 if (__isDepartmentEnabled == true)
2883 EditField* pDepartment = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_DEPARTMENT"), false));
2884 if (pDepartment == null)
2888 __pPresentationModel->SetValue(DETAIL_PROPERTY_DEPARTMENT, pDepartment->GetText());
2893 EditField* pName = static_cast<EditField *>(__pNameFieldItem->GetControl(Integer::ToString(IDA_INPUT_FIELD_DISPLAY_NAME), false));
2899 String displayName(pName->GetText());
2904 displayName.IndexOf(CHARACTER_SPACE, 0, delimeterIndex);
2906 if (delimeterIndex < 0)
2908 firstName.Append(displayName);
2912 displayName.SubString(0, delimeterIndex++, firstName);
2913 displayName.SubString(delimeterIndex, displayName.GetLength() - delimeterIndex, lastName);
2916 __pPresentationModel->SetValue(DETAIL_PROPERTY_FIRST_NAME, firstName);
2917 __pPresentationModel->SetValue(DETAIL_PROPERTY_LAST_NAME, lastName);
2924 ContactEditorForm::IsSaveContactValid(void)
2926 if (__pPresentationModel->GetValue(DETAIL_PROPERTY_FIRST_NAME).IsEmpty() == false)
2931 if (__pPresentationModel->GetValue(DETAIL_PROPERTY_LAST_NAME).IsEmpty() == false)
2936 for (int i = 0; i < __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER); i++)
2938 if (__pPresentationModel->GetValue(DETAIL_PROPERTY_PHONE_NUMBER, i).IsEmpty() == false)
2944 for (int i = 0; i < __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_EMAIL); i++)
2946 if (__pPresentationModel->GetValue(DETAIL_PROPERTY_EMAIL, i).IsEmpty() == false)
2956 ContactEditorForm::SetSaveButtonEnabled(bool enable)
2958 Footer* pFooter = GetFooter();
2962 pFooter->SetItemEnabled(0, true);
2966 pFooter->SetItemEnabled(0, false);
2969 pFooter->Invalidate(true);
2973 ContactEditorForm::IsMoreInformationButtonVisible(void)
2975 if (__isJobTitleEnabled == false)
2980 if (__isDepartmentEnabled == false)
2985 if (__pImAddressFieldItem->GetCount() == 0)
2990 if (__pUrlFieldItem->GetCount() == 0)
2996 if (__pPresentationModel->GetBirthday(birthday) != E_SUCCESS)
3001 if (__pNoteFieldItem == null)
3010 ContactEditorForm::OnTextValueChanged(const Tizen::Ui::Control& source)
3012 TableViewItem* pTableViewItem = static_cast<TableViewItem *>(source.GetParent());
3014 __isContactModified = true;
3016 if (pTableViewItem == null)
3021 SaveContactData(false);
3022 SetSaveButtonEnabled(IsSaveContactValid());
3024 if (__pNameFieldItem == pTableViewItem)
3029 EditField* pEditField = const_cast<EditField *>(static_cast<const EditField *>(&source));
3030 if (pEditField == null)
3035 Control* pDeleteButton = pTableViewItem->GetControl(2);
3036 if (pDeleteButton == null)
3046 Integer::Decode(pEditField->GetName(), index);
3047 groupIndex = (index & TABLE_VIEW_GROUP_INDEX_MASK) >> TABLE_VIEW_GROUP_INDEX_SHIFT;
3048 inputFlag = (index & TABLE_VIEW_INPUT_FIELD_INDEX_MASK) >> TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
3049 itemCount = __pTableView->GetItemCountAt(groupIndex);
3051 if(__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER) <= 1 && __isDefaultPhoneNumberButtonEnabled == true)
3053 __isDefaultPhoneNumberButtonEnabled = false;
3054 __pTableView->RefreshItem(groupIndex, __pTableView->GetItemCountAt(groupIndex) - 1, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
3056 else if(__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER) > 1 && __isDefaultPhoneNumberButtonEnabled == false)
3058 __isDefaultPhoneNumberButtonEnabled = true;
3059 __pTableView->RefreshItem(groupIndex, __pTableView->GetItemCountAt(groupIndex), TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
3061 String trimmedString = pEditField->GetText();
3062 trimmedString.Trim();
3064 if (trimmedString.IsEmpty())
3066 pDeleteButton->SetShowState(false);
3071 if (pDeleteButton->GetShowState())
3076 pDeleteButton->SetShowState(true);
3084 index |= (1 << TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT);
3085 pEditField->SetName(Integer::ToString(index));
3088 if (groupIndex == TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX)
3090 if (__isDefaultPhoneNumberButtonEnabled == false && __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER) > 1)
3092 __isDefaultPhoneNumberButtonEnabled = true;
3093 __pTableView->RefreshItem(groupIndex, __pTableView->GetItemCountAt(groupIndex), TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
3095 else if (itemCount > 1)
3101 ArrayList* pFieldList = null;
3104 case TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX:
3106 pFieldList = __pPhoneNumberFieldItem;
3109 case TABLE_VIEW_EMAIL_FIELD_INDEX:
3111 pFieldList = __pEmailFieldItem;
3114 case TABLE_VIEW_ADDRESS_FIELD_INDEX:
3116 pFieldList = __pAddressFieldItem;
3119 case TABLE_VIEW_IM_ADDRESS_FIELD_INDEX:
3121 pFieldList = __pImAddressFieldItem;
3124 case TABLE_VIEW_URL_FIELD_INDEX:
3126 pFieldList = __pUrlFieldItem;
3133 TableViewItem* pItem = static_cast<TableViewItem*>(pFieldList->GetAt(pFieldList->GetCount() - 1));
3136 EditField* pInputField = static_cast<EditField*>(pItem->GetControl(0));
3138 if (pInputField != null && pInputField->GetTextLength() != 0)
3140 __pTableView->RefreshItem(groupIndex, itemCount, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
3146 ContactEditorForm::OnTextValueChangeCanceled(const Tizen::Ui::Control& source)
3151 ContactEditorForm::ParseAppControlArgument(const Tizen::Base::String& argument, Tizen::Base::String& type, Tizen::Base::String& content)
3153 result r = E_SUCCESS;
3155 if (argument.IsEmpty() || argument.Contains(DELIMITER) == false)
3162 argument.IndexOf(DELIMITER, 0, delimiterIndex);
3163 argument.SubString(0, delimiterIndex++, type);
3164 TryReturn(r == E_SUCCESS, r, "[%s] Unable to get type", GetErrorMessage(r));
3165 argument.SubString(delimiterIndex, argument.GetLength() - delimiterIndex, content);
3166 TryReturn(r == E_SUCCESS, r, "[%s] Unable to get type", GetErrorMessage(r));
3172 ContactEditorForm::OnFocusGained(const Tizen::Ui::Control& source)
3174 __pCurrentFocusedItem = source.GetParent();
3176 if (__pCurrentFocusedItem == __pNameFieldItem)
3181 ArrayList* pFieldList = null;
3185 const EditField* pEditField = static_cast<const EditField*>(&source);
3186 if (pEditField != null)
3190 Integer::Decode(pEditField->GetName(), index);
3191 groupIndex = (index & TABLE_VIEW_GROUP_INDEX_MASK) >> TABLE_VIEW_GROUP_INDEX_SHIFT;
3192 itemIndex = (index & TABLE_VIEW_ITEM_INDEX_MASK);
3197 case TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX:
3199 pFieldList = __pPhoneNumberFieldItem;
3202 case TABLE_VIEW_EMAIL_FIELD_INDEX:
3204 pFieldList = __pEmailFieldItem;
3207 case TABLE_VIEW_ADDRESS_FIELD_INDEX:
3209 pFieldList = __pAddressFieldItem;
3212 case TABLE_VIEW_IM_ADDRESS_FIELD_INDEX:
3214 pFieldList = __pImAddressFieldItem;
3217 case TABLE_VIEW_URL_FIELD_INDEX:
3219 pFieldList = __pUrlFieldItem;
3226 TryReturnVoid(pFieldList != null, "[E_FAILURE] Unable to get a input field.");
3228 for (int i = pFieldList->GetCount() - 2; i >= 0; i--)
3230 TableViewItem* pTableViewItem = static_cast<TableViewItem*>(pFieldList->GetAt(i));
3231 if (pTableViewItem != null)
3233 EditField* pInputField = static_cast<EditField*>(pTableViewItem->GetControl(0));
3234 if (i != itemIndex && pInputField != null && pInputField->GetTextLength() == 0)
3236 DeleteInputField(groupIndex, i);
3243 ContactEditorForm::OnFocusLost(const Tizen::Ui::Control& source)
3245 if (__pCurrentFocusedItem == __pNameFieldItem)
3250 __pCurrentFocusedItem = null;
3254 ContactEditorForm::ShowDefaultPhoneNumberContextMenu(const Tizen::Graphics::Point& position)
3256 if (__pDefaultPhoneNumberContextMenu != null)
3258 delete __pDefaultPhoneNumberContextMenu;
3259 __pDefaultPhoneNumberContextMenu = null;
3262 __pDefaultPhoneNumberContextMenu = new (std::nothrow) ContextMenu();
3263 __pDefaultPhoneNumberContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST);
3264 __pDefaultPhoneNumberContextMenu->AddActionEventListener(*this);
3266 int count = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER);
3267 int defaultPhoneNumberIndex = __pPresentationModel->GetDefaultNumberIndex();
3269 for (int i = 0; i < count; i++)
3271 String phoneNumber(__pPresentationModel->GetValue(DETAIL_PROPERTY_PHONE_NUMBER, i));
3273 if (i != defaultPhoneNumberIndex)
3275 phoneNumber.Insert(__pPresentationModel->GetType(DETAIL_PROPERTY_PHONE_NUMBER, i) + CHARACTER_SPACE, 0);
3276 __pDefaultPhoneNumberContextMenu->AddItem(phoneNumber, i);
3280 if (__pDefaultPhoneNumberContextMenu->GetItemCount() > 0)
3282 __pDefaultPhoneNumberContextMenu->Show();
3287 ContactEditorForm::ShowMoreInformationContextMenu(const Tizen::Graphics::Point& position)
3289 if (__pMoreInformationContextMenu != null)
3291 delete __pMoreInformationContextMenu;
3292 __pMoreInformationContextMenu = null;
3295 __pMoreInformationContextMenu = new (std::nothrow) ContextMenu();
3296 __pMoreInformationContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST);
3298 __pMoreInformationContextMenu->SetMaxVisibleItemsCount(6);
3299 __pMoreInformationContextMenu->AddActionEventListener(*this);
3301 if (__isJobTitleEnabled == false)
3303 __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_BODY_JOB_TITLE"), IDA_CONTEXT_MENU_ITEM_JOB_TITLE);
3306 if (__isDepartmentEnabled == false)
3308 __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_BODY_DEPARTMENT"), IDA_CONTEXT_MENU_ITEM_DEPARTMENT);
3311 if (__pImAddressFieldItem->GetCount() == 0)
3313 __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_HEADER_INSTANT_MESSENGER_ABB"), IDA_CONTEXT_MENU_ITEM_INSTANT_MESSENGER);
3316 if (__pUrlFieldItem->GetCount() == 0)
3318 __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_BODY_URL"), IDA_CONTEXT_MENU_ITEM_URL);
3322 if (__pPresentationModel->GetBirthday(birthday) != E_SUCCESS)
3324 __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_BODY_BIRTHDAY"), IDA_CONTEXT_MENU_ITEM_BIRTHDAY);
3327 if (__pNoteFieldItem == null)
3329 __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_BODY_NOTE"), IDA_CONTEXT_MENU_ITEM_NOTE);
3332 if (__isMoreInformationContextMenuShowing == false)
3334 __pMoreInformationContextMenu->Show();
3341 ContactEditorForm::ShowTypeContextMenu(DetailPhoneNumberType currentType, const Tizen::Graphics::Point& position, int itemTag)
3343 if (__pTypeContextMenu != null)
3345 delete __pTypeContextMenu;
3346 __pTypeContextMenu = null;
3349 __pTypeContextMenu = new (std::nothrow) ContextMenu();
3350 __pTypeContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST, CONTEXT_MENU_ANCHOR_DIRECTION_LEFTWARD);
3352 __pTypeContextMenu->SetMaxVisibleItemsCount(DETAIL_PHONENUMBER_TYPE_OTHER + 1);
3353 __pTypeContextMenu->AddActionEventListener(*this);
3355 for (int i = 0; i <= DETAIL_PHONENUMBER_TYPE_OTHER; i++)
3357 int index = i << TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
3358 __pTypeContextMenu->AddItem(__pPresentationModel->GetPhoneNumberTypeString((DetailPhoneNumberType)i), itemTag | index);
3361 __pTypeContextMenu->RemoveItemAt((int)currentType);
3363 __pTypeContextMenu->Show();
3367 ContactEditorForm::ShowTypeContextMenu(DetailEmailType currentType, const Tizen::Graphics::Point& position, int itemTag)
3369 if (__pTypeContextMenu != null)
3371 delete __pTypeContextMenu;
3372 __pTypeContextMenu = null;
3375 __pTypeContextMenu = new (std::nothrow) ContextMenu();
3376 __pTypeContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST, CONTEXT_MENU_ANCHOR_DIRECTION_LEFTWARD);
3378 __pTypeContextMenu->SetMaxVisibleItemsCount(DETAIL_EMAIL_TYPE_OTHER + 1);
3379 __pTypeContextMenu->AddActionEventListener(*this);
3381 for (int i = 0; i <= DETAIL_EMAIL_TYPE_OTHER; i++)
3383 int index = i << TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
3384 __pTypeContextMenu->AddItem(__pPresentationModel->GetAddressTypeString((DetailAddressType)i), itemTag | index);
3387 __pTypeContextMenu->RemoveItemAt((int)currentType);
3389 __pTypeContextMenu->Show();
3393 ContactEditorForm::ShowTypeContextMenu(DetailAddressType currentType, const Tizen::Graphics::Point& position, int itemTag)
3395 if (__pTypeContextMenu != null)
3397 delete __pTypeContextMenu;
3398 __pTypeContextMenu = null;
3401 __pTypeContextMenu = new (std::nothrow) ContextMenu();
3402 __pTypeContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST, CONTEXT_MENU_ANCHOR_DIRECTION_LEFTWARD);
3404 __pTypeContextMenu->SetMaxVisibleItemsCount(DETAIL_ADDRESS_TYPE_OTHER + 1);
3405 __pTypeContextMenu->AddActionEventListener(*this);
3407 for (int i = 0; i <= DETAIL_ADDRESS_TYPE_OTHER; i++)
3409 int index = i << TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
3410 __pTypeContextMenu->AddItem(__pPresentationModel->GetAddressTypeString((DetailAddressType)i), itemTag | index);
3413 __pTypeContextMenu->RemoveItemAt((int)currentType);
3415 __pTypeContextMenu->Show();
3419 ContactEditorForm::ShowTypeContextMenu(DetailUrlType currentType, const Tizen::Graphics::Point& position, int itemTag)
3421 if (__pTypeContextMenu != null)
3423 delete __pTypeContextMenu;
3424 __pTypeContextMenu = null;
3427 __pTypeContextMenu = new (std::nothrow) ContextMenu();
3428 __pTypeContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST, CONTEXT_MENU_ANCHOR_DIRECTION_LEFTWARD);
3430 __pTypeContextMenu->SetMaxVisibleItemsCount(DETAIL_URL_TYPE_OTHER + 1);
3431 __pTypeContextMenu->AddActionEventListener(*this);
3433 for (int i = 0; i <= DETAIL_URL_TYPE_OTHER; i++)
3435 int index = i << TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
3436 __pTypeContextMenu->AddItem(__pPresentationModel->GetUrlTypeString((DetailUrlType)i), itemTag | index);
3439 __pTypeContextMenu->RemoveItemAt((int)currentType);
3441 __pTypeContextMenu->Show();
3445 ContactEditorForm::ShowTypeContextMenu(DetailImAddressType currentType, const Tizen::Graphics::Point& position, int itemTag)
3447 if (__pTypeContextMenu != null)
3449 delete __pTypeContextMenu;
3450 __pTypeContextMenu = null;
3453 __pTypeContextMenu = new (std::nothrow) ContextMenu();
3454 __pTypeContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST, CONTEXT_MENU_ANCHOR_DIRECTION_LEFTWARD);
3456 __pTypeContextMenu->SetMaxVisibleItemsCount(7); // Temporary the code due to limit max count(8) by UI framework.
3457 __pTypeContextMenu->AddActionEventListener(*this);
3459 for (int i = 0; i <= DETAIL_IM_ADDRESS_TYPE_OTHER; i++)
3461 int index = i << TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
3462 __pTypeContextMenu->AddItem(__pPresentationModel->GetImAddressTypeString((DetailImAddressType)i), itemTag | index);
3465 __pTypeContextMenu->RemoveItemAt((int)currentType);
3467 __pTypeContextMenu->Show();
3471 ContactEditorForm::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
3473 __isScrollOccurred = false;
3477 ContactEditorForm::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
3479 if (__isScrollOccurred || source.Contains(currentPosition) == false)
3486 Control* pParent = source.GetParent();
3487 Point position = pParent->GetPosition();
3488 Point itemPosition(position.x + source.GetX(), GetClientAreaBounds().y + position.y + source.GetY() + (source.GetHeight() / 2) - __scrolledDistance);
3489 String typeString = pParent->GetName();
3490 String itemIndexTag = source.GetName();
3494 Integer::Parse(itemIndexTag, itemIndex);
3495 Integer::Parse(typeString, type);
3497 int groupIndex = (itemIndex & TABLE_VIEW_GROUP_INDEX_MASK) >> TABLE_VIEW_GROUP_INDEX_SHIFT;
3501 case TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX:
3503 ShowTypeContextMenu((DetailPhoneNumberType)type, itemPosition, itemIndex);
3506 case TABLE_VIEW_EMAIL_FIELD_INDEX:
3508 ShowTypeContextMenu((DetailEmailType)type, itemPosition, itemIndex);
3511 case TABLE_VIEW_ADDRESS_FIELD_INDEX:
3513 ShowTypeContextMenu((DetailAddressType)type, itemPosition, itemIndex);
3516 case TABLE_VIEW_IM_ADDRESS_FIELD_INDEX:
3518 ShowTypeContextMenu((DetailImAddressType)type, itemPosition, itemIndex);
3521 case TABLE_VIEW_URL_FIELD_INDEX:
3523 ShowTypeContextMenu((DetailUrlType)type, itemPosition, itemIndex);
3532 ContactEditorForm::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
3537 ContactEditorForm::OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
3542 ContactEditorForm::OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
3547 ContactEditorForm::OnTouchCanceled(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
3552 ContactEditorForm::OnScrollEndReached (Tizen::Ui::Control &source, Tizen::Ui::Controls::ScrollEndEvent type)
3557 ContactEditorForm::OnScrollPositionChanged (Tizen::Ui::Control &source, int scrollPos)
3559 __scrolledDistance = scrollPos;
3561 if (__isScrollOccurred == false)
3563 __isScrollOccurred = true;
3568 ContactEditorForm::OnScrollStopped (Tizen::Ui::Control &source)
3573 ContactEditorForm::OnExpandableEditAreaLineAdded (Tizen::Ui::Controls::ExpandableEditArea &source, int newLineCount)
3575 __pTableView->RefreshItem(TABLE_VIEW_NOTE_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
3579 ContactEditorForm::OnExpandableEditAreaLineRemoved (Tizen::Ui::Controls::ExpandableEditArea &source, int newLineCount)
3581 __pTableView->RefreshItem(TABLE_VIEW_NOTE_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
3585 ContactEditorForm::OnDateChanged(const Tizen::Ui::Control& source, int year, int month, int day)
3587 DateTime changedDate;
3588 DateTime currentDate;
3589 SystemTime::GetCurrentTime(currentDate);
3591 changedDate.SetValue(year, month, day);
3593 if (changedDate.CompareTo(currentDate) > 0)
3596 MessageBox invalidBirthYear;
3597 invalidBirthYear.Construct(L"", ResourceManager::GetString(L"IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH"), MSGBOX_STYLE_OK);
3598 invalidBirthYear.ShowAndWait(modalResult);
3599 __pPresentationModel->SetBirthday(currentDate);
3600 __pTableView->RefreshItem(TABLE_VIEW_BIRTHDAY_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
3604 __pPresentationModel->SetBirthday(changedDate);
3606 __isContactModified = true;
3610 ContactEditorForm::OnDateChangeCanceled(const Tizen::Ui::Control& source)
3615 ContactEditorForm::OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData)
3617 AppLogDebug("ENTER");
3622 if (__pAppControl != null)
3624 delete __pAppControl;
3625 __pAppControl = null;
3628 TryReturnVoid(appControlResult == APP_CTRL_RESULT_SUCCEEDED, "[E_FAILURE] The result of an appcontrol is not succeeded.");
3629 TryReturnVoid(pExtraData != null, "[E_FAILURE] The extra data is null.");
3631 const String *pResultString = null;
3632 const ArrayList* pResultList = dynamic_cast<const ArrayList*>(pExtraData->GetValue(String(OUTPUT_KEY_SELECTED)));
3633 if (pResultList != null)
3635 pResultString = static_cast<const String*>(pResultList->GetAt(0));
3639 pResultString = static_cast<const String*>(pExtraData->GetValue(String(OUTPUT_KEY_SELECTED)));
3641 TryReturnVoid(pResultString != null, "[E_FAILURE] Unable to get file path.");
3643 if (appId.Equals(String(PROVIDER_ID_CAMERA)) && operationId.Equals(String(OPERATION_ID_CREATE_CONTENT)))
3645 __pPresentationModel->SetThumbnail(*pResultString);
3646 __pTableView->RefreshItem(TABLE_VIEW_THUMBNAIL_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
3648 if (__pFileEventManager == null)
3650 __pFileEventManager = new (std::nothrow) FileEventManager();
3651 __pFileEventManager->Construct(*this);
3653 __pFileEventManager->AddPath(*pResultString, FILE_EVENT_TYPE_DELETE | FILE_EVENT_TYPE_DELETE_SELF | FILE_EVENT_TYPE_MODIFY | FILE_EVENT_TYPE_MOVE_SELF);
3655 else if (appId.Equals(String(PROVIDER_ID_GALLERY)) && operationId.Equals(String(OPERATION_ID_PICK)))
3657 __pPresentationModel->SetThumbnail(*pResultString);
3658 __isContactModified = true;
3659 __pTableView->RefreshItem(TABLE_VIEW_THUMBNAIL_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
3661 if (__pFileEventManager == null)
3663 __pFileEventManager = new (std::nothrow) FileEventManager();
3664 __pFileEventManager->Construct(*this);
3666 __pFileEventManager->AddPath(*pResultString, FILE_EVENT_TYPE_DELETE | FILE_EVENT_TYPE_DELETE_SELF | FILE_EVENT_TYPE_MODIFY | FILE_EVENT_TYPE_MOVE_SELF);
3668 else if (appId.Equals(String(PROVIDER_ID_FILEMANAGER)) && operationId.Equals(String(OPERATION_ID_PICK)))
3670 __pPresentationModel->SetValue(DETAIL_PROPERTY_RINGTONE, *pResultString);
3671 __pTableView->RefreshItem(TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX, 2, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
3672 __isContactModified = true;
3675 AppLogDebug("EXIT");
3679 ContactEditorForm::LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId)
3681 result r = E_SUCCESS;
3686 extraData.Construct();
3688 if (appId.Equals(String(PROVIDER_ID_CAMERA)) && operationId.Equals(String(OPERATION_ID_CREATE_CONTENT)))
3690 mimeType.Append(INPUT_MIME_TYPE_CAMERA);
3691 extraData.Add(new (std::nothrow) String(INPUT_KEY_ALLOW_SWITCH), new (std::nothrow) String(INPUT_VALUE_FALSE));
3693 else if (appId.Equals(String(PROVIDER_ID_GALLERY)) && operationId.Equals(String(OPERATION_ID_PICK)))
3695 mimeType.Append(INPUT_MIME_TYPE_GALLERY);
3696 extraData.Add(new (std::nothrow) String(INPUT_KEY_SELECTION_MODE), new (std::nothrow) String(INPUT_DATA_SELECTION_MODE_SINGLE));
3698 else if (appId.Equals(String(PROVIDER_ID_FILEMANAGER)) && operationId.Equals(String(OPERATION_ID_PICK)))
3700 mimeType.Append(INPUT_MIME_TYPE_AUDIO);
3701 extraData.Add(new (std::nothrow) String(INPUT_KEY_SELECTION_MODE), new (std::nothrow) String(INPUT_DATA_SELECTION_MODE_SINGLE));
3704 __pAppControl = AppManager::FindAppControlN(appId, operationId);
3706 if (__pAppControl != null)
3708 r = __pAppControl->Start(&uri, &mimeType, &extraData, this);
3709 TryCatch(r == E_SUCCESS, , "[%s] Unable to launch app control.", GetErrorMessage(r));
3714 extraData.RemoveAll(true);
3719 extraData.RemoveAll(true);
3720 delete __pAppControl;
3721 __pAppControl = null;
3727 ContactEditorForm::OnContactsChanged(void)
3729 SceneManager* pSceneManager = SceneManager::GetInstance();
3730 ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
3732 if (__isSaved == false)
3734 if (__pPresentationModel->IsContactRemoved())
3736 if (pContactsApp->GetOperationId() == OPERATION_ID_VIEW)
3738 __pPresentationModel->RemoveContactChangeListener(*this);
3742 if (__pAppControl != null)
3744 __pAppControl->Stop();
3746 pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
3757 AppControlProviderManager* pAppManager = AppControlProviderManager::GetInstance();
3758 HashMap* pReturnValue = new (std::nothrow) HashMap();
3759 pReturnValue->Construct();
3761 pReturnValue->Add(new (std::nothrow) String(CONTACT_KEY_ITEM_ID), new (std::nothrow) String(Integer::ToString(__pPresentationModel->GetContactId())));
3763 result r = pAppManager->SendAppControlResult(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
3764 AppLogDebug("[%s] The return result from SendAppControlResult().", GetErrorMessage(r));
3766 UiApp::GetInstance()->Terminate();
3770 ArrayList* pArg = null;
3772 if (__pPresentationModel->GetVcfPath().IsEmpty() == false)
3774 pArg = new (std::nothrow) ArrayList();
3777 String* pViewType = new (std::nothrow) String();
3778 String* pValueType = new (std::nothrow) String();
3780 pViewType->Append(VIEW_TYPE);
3781 pViewType->Append(DELIMITER);
3782 pViewType->Append(VIEW_TYPE_VALUE_CONTACT);
3784 pValueType->Append(VIEW_TYPE_CONTACT_ID);
3785 pValueType->Append(DELIMITER);
3786 pValueType->Append(Integer::ToString(__pPresentationModel->GetContactId()));
3788 pArg->Add(pViewType);
3789 pArg->Add(pValueType);
3791 pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT), pArg);
3798 ContactEditorForm::OnCategoriesChanged(void)
3803 ContactEditorForm::OnForeground(void)
3805 if (IsEnabled() == false)
3813 ContactEditorForm::OnBackground(void)
3818 ContactEditorForm::OnFileEventOccured(const unsigned long events, const Tizen::Base::String &path, const unsigned int eventId)
3820 __pPresentationModel->SetThumbnail(L"");
3821 __pTableView->RefreshItem(TABLE_VIEW_THUMBNAIL_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
3825 ContactEditorForm::OnDeviceStateChanged(Tizen::System::DeviceType deviceType, const Tizen::Base::String &state)
3827 if (deviceType != DEVICE_TYPE_STORAGE_CARD || __pPresentationModel->GetValue(DETAIL_PROPERTY_THUMBNAIL).IsEmpty())
3832 if (state.Equals(SD_CARD_UNMOUNTED, false) && File::IsFileExist(__pPresentationModel->GetValue(DETAIL_PROPERTY_THUMBNAIL)) == false)
3834 __pPresentationModel->SetThumbnail(L"");
3835 __pTableView->RefreshItem(TABLE_VIEW_THUMBNAIL_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
3839 bool ContactEditorForm::ValidateEmailAddress(const Tizen::Base::String& emailAddress)
3843 const wchar_t* tmpChar;
3844 const wchar_t* tmpDomain;
3845 String splChars = L"([<@,;\\:\">])";
3847 for (tmpChar = emailAddress.GetPointer(), index=0; index < emailAddress.GetLength(); tmpChar++, index++)
3849 if (*tmpChar == '\"' && (tmpChar == emailAddress.GetPointer() || *(tmpChar-1) == '.' || *(tmpChar-1) == '\"'))
3853 if (*tmpChar == '\"')
3857 if (*tmpChar == '\\' && (*++tmpChar == ' '))
3861 if (*tmpChar <= ' ' || *tmpChar >= 127)
3870 if (*tmpChar == '@')
3874 if (*tmpChar != '.')
3880 if (*tmpChar == '@')
3884 if (*tmpChar <= ' ' || *tmpChar >= 127)
3888 if (splChars.IndexOf(*tmpChar, 0, index) != E_OBJ_NOT_FOUND)
3893 if (tmpChar == emailAddress.GetPointer() || *(tmpChar-1) == '.')
3898 if (!*(tmpDomain = ++tmpChar))
3904 if (*tmpChar == '.')
3906 if (tmpChar == tmpDomain || *(tmpChar-1) == '.')
3912 if (*tmpChar <= ' ' || *tmpChar >= 127)
3916 if (splChars.IndexOf(*tmpChar, 0, index) != E_OBJ_NOT_FOUND)
3920 } while (*++tmpChar);
3922 if (*(tmpChar-1) == '.')
3936 ContactEditorForm::OnSettingChanged(Tizen::Base::String &key)
3938 if(key == L"http://tizen.org/setting/locale.date_time")
3941 __pPresentationModel->GetBirthday(bday);
3943 DateTime currentDate;
3944 Tizen::System::SystemTime::GetCurrentTime(currentDate);
3946 if(bday > currentDate)
3948 __pPresentationModel->SetBirthday(currentDate);
3949 __pTableView->RefreshItem(TABLE_VIEW_BIRTHDAY_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
3955 ContactEditorForm::ShowSaveContactPopup(void)
3957 if (__pSaveContactPopup == null)
3959 __pSaveContactPopup = new (std::nothrow) Popup();
3960 __pSaveContactPopup->Construct(false, Dimension(W_SAVE_CONTACT_POPUP, H_SAVE_CONTACT_POPUP));
3962 Rectangle popupClientBounds = __pSaveContactPopup->GetClientAreaBounds();
3964 Label* pLabel = new (std::nothrow) Label();
3965 pLabel->Construct(Rectangle(X_SAVE_CONTACT_LABEL, Y_SAVE_CONTACT_LABEL, W_SAVE_CONTACT_LABEL, H_SAVE_CONTACT_LABEL), ResourceManager::GetString(L"IDS_PB_POP_SAVE_CONTACT_Q"));
3966 pLabel->SetTextConfig(FONT_SIZE_SAVE_CONTACT_CONFIRM, LABEL_TEXT_STYLE_NORMAL);
3967 pLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
3968 pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
3970 Button* pSaveButton = new (std::nothrow) Button();
3971 pSaveButton->Construct(Rectangle(X_SAVE_CONTACT_LABEL, Y_SAVE_CONTACT_BUTTON, W_SAVE_CONTACT_BUTTON, H_SAVE_CONTACT_BUTTON), ResourceManager::GetString(L"IDS_COM_SK_SAVE"));
3972 pSaveButton->SetColor(BUTTON_STATUS_NORMAL, COLOR_SAVE_CONTACT_BUTTON_NORMAL);
3973 pSaveButton->SetColor(BUTTON_STATUS_PRESSED, COLOR_SAVE_CONTACT_BUTTON_PRESSED);
3974 pSaveButton->SetTextColor(COLOR_SAVE_CONTACT_BUTTON_TEXT);
3975 pSaveButton->SetTextSize(FONT_SIZE_SAVE_CONTACT_BUTTON);
3976 pSaveButton->SetActionId(IDA_POPUP_SAVE_CONTACT_OK);
3977 pSaveButton->AddActionEventListener(*this);
3979 Button* pCancelButton = new (std::nothrow) Button();
3980 pCancelButton->Construct(Rectangle(X_SAVE_CONTACT_LABEL + W_SAVE_CONTACT_BUTTON + W_POPUP_ITEM_GAP, Y_SAVE_CONTACT_BUTTON, W_SAVE_CONTACT_BUTTON, H_SAVE_CONTACT_BUTTON), ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
3981 pCancelButton->SetTextSize(FONT_SIZE_SAVE_CONTACT_BUTTON);
3982 pCancelButton->SetActionId(IDA_POPUP_SAVE_CONTACT_CANCEL);
3983 pCancelButton->AddActionEventListener(*this);
3985 __pSaveContactPopup->AddControl(pLabel);
3986 __pSaveContactPopup->AddControl(pSaveButton);
3987 __pSaveContactPopup->AddControl(pCancelButton);
3990 __pSaveContactPopup->SetShowState(true);
3991 __pSaveContactPopup->Show();
3995 ContactEditorForm::HideSaveContactPopup(void)
3997 delete __pSaveContactPopup;
3998 __pSaveContactPopup = null;