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 StDateTimeForm.cpp
19 * @brief This is the implementation file for DateTimeForm class.
22 #include "StDateTimeForm.h"
23 #include "StResourceManager.h"
24 #include "StSettingScenesList.h"
28 using namespace Tizen::Base;
29 using namespace Tizen::Graphics;
30 using namespace Tizen::Locales;
31 using namespace Tizen::System;
32 using namespace Tizen::Ui;
33 using namespace Tizen::Ui::Controls;
34 using namespace Tizen::Ui::Scenes;
36 static const int ID_GROUP_DATE_AND_TIME_MAIN = 0;
37 static const int ID_GROUP_DATE_AND_TIME_MAIN_ITEM_COUNT = 1;
38 static const int ID_ITEM_DATE_AND_TIME_MAIN_AUTOMATIC_UPDATE = 0;
40 static const int ID_GROUP_DATE_AND_TIME_LOCAL_TIME = 1;
41 static const int ID_GROUP_DATE_AND_TIME_LOCAL_TIME_ITEM_COUNT = 2;
42 static const int ID_ITEM_DATE_AND_TIME_TIME_ZONE = 0;
43 static const int ID_ITEM_DATE_AND_TIME_DATE_AND_TIME = 1;
45 static const int ID_GROUP_DATE_AND_TIME_FORMAT = 2;
46 static const int ID_GROUP_DATE_AND_TIME_FORMAT_ITEM_COUNT = 1;
48 static const int ID_GROUP_DATE_AND_TIME_FORMAT_LIST = 3;
49 static const int ID_GROUP_DATE_AND_TIME_FORMAT_LIST_ITEM_COUNT = 2;
50 static const int ID_ITEM_DATE_AND_TIME_FORMAT_12_HOURS = 0;
51 static const int ID_ITEM_DATE_AND_TIME_FORMAT_24_HOURS = 1;
53 static const int ID_GROUP_DATE_AND_TIME_FIRST_DAY = 4;
54 static const int ID_GROUP_DATE_AND_TIME_FIRST_DAY_ITEM_COUNT = 1;
56 static const int ID_GROUP_DATE_AND_TIME_FIRST_DAY_LIST = 5;
57 static const int ID_GROUP_DATE_AND_TIME_FIRST_DAY_LIST_ITEM_COUNT = 2;
58 static const int ID_ITEM_DATE_AND_TIME_FORMAT_FIRST_DAY_MONDAY = 0;
59 static const int ID_ITEM_DATE_AND_TIME_FORMAT_FIRST_DAY_SUNDAY = 1;
61 static const int ID_GROUP_COUNT = 4;
63 static const int SIXTY_MINUTES_TO_HOUR = 60;
64 static const int H_GROUP_ITEM_EDITFIELD_DEFAULT = 120;
66 static const int NEXT_INDEX = 1;
67 static const int W_RESIZE_LABEL_GAP = 170;
68 static const int H_TIME_FIELD = 150;
70 static const int SECOND_CONTROL_ITEM = 1;
71 static const int SECOND_TEXT_ITEM = 2;
72 static const int MIN_YEAR = 1980;
73 static const int MAX_YEAR = 2035;
74 static const float RESIZE_RATE = 5.5;
75 static const int DIVIDE_BY_TEN = 10;
77 DateTimeForm::DateTimeForm(void)
81 DateTimeForm::~DateTimeForm(void)
86 DateTimeForm::CreateFooter(void)
88 Footer* pFooter = GetFooter();
91 pFooter->SetStyle(FOOTER_STYLE_BUTTON_TEXT);
92 pFooter->SetBackButton();
93 pFooter->AddActionEventListener(*this);
95 SetFormBackEventListener(this);
99 DateTimeForm::OnInitializing(void)
101 CreateHeader(ResourceManager::GetString(L"IDS_ST_BODY_DATE_AND_TIME"));
105 AppLogDebug("ENTER");
111 DateTimeForm::OnTerminating(void)
115 SetFormBackEventListener(null);
120 DateTimeForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
122 bool automaticUpdate = false;
123 bool hourFormat = false;
124 __pTableView->UpdateTableView();
125 __pTableView->CollapseGroup(ID_GROUP_DATE_AND_TIME_FORMAT_LIST);
126 __pTableView->RefreshItem(ID_GROUP_DATE_AND_TIME_FORMAT, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
127 __pTableView->RefreshItem(ID_GROUP_DATE_AND_TIME_LOCAL_TIME, 1, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
129 if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_UPDATE_AUTO, automaticUpdate) == E_SUCCESS)
131 __pTableView->SetItemChecked(ID_GROUP_DATE_AND_TIME_MAIN, ID_ITEM_DATE_AND_TIME_MAIN_AUTOMATIC_UPDATE, automaticUpdate);
132 __pTableView->SetItemEnabled(ID_GROUP_DATE_AND_TIME_LOCAL_TIME, ID_ITEM_DATE_AND_TIME_TIME_ZONE, !automaticUpdate);
133 __pTableView->SetItemEnabled(ID_GROUP_DATE_AND_TIME_LOCAL_TIME, ID_ITEM_DATE_AND_TIME_DATE_AND_TIME, !automaticUpdate);
136 if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_24HOUR, hourFormat) == E_SUCCESS)
138 if (hourFormat == false)
140 __pTableView->SetItemChecked(ID_GROUP_DATE_AND_TIME_FORMAT_LIST, ID_ITEM_DATE_AND_TIME_FORMAT_12_HOURS, true);
141 __pTableView->SetItemChecked(ID_GROUP_DATE_AND_TIME_FORMAT_LIST, ID_ITEM_DATE_AND_TIME_FORMAT_24_HOURS, false);
145 __pTableView->SetItemChecked(ID_GROUP_DATE_AND_TIME_FORMAT_LIST, ID_ITEM_DATE_AND_TIME_FORMAT_24_HOURS, true);
146 __pTableView->SetItemChecked(ID_GROUP_DATE_AND_TIME_FORMAT_LIST, ID_ITEM_DATE_AND_TIME_FORMAT_12_HOURS, false);
149 AppLogDebug("SettingInfo::GetValue() fail(%s)", GetErrorMessage(GetLastResult()));
154 DateTimeForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
159 DateTimeForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
161 SceneManager* pSceneManager = SceneManager::GetInstance();
162 AppAssert(pSceneManager);
164 __pTableView->CollapseGroup(ID_GROUP_DATE_AND_TIME_FORMAT_LIST);
165 pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT), null);
169 DateTimeForm::GetGroupCount(void)
171 AppLogDebug("ENTER");
172 return ID_GROUP_COUNT;
176 DateTimeForm::GetItemCount(int groupIndex)
182 case ID_GROUP_DATE_AND_TIME_MAIN:
184 itemCount = ID_GROUP_DATE_AND_TIME_MAIN_ITEM_COUNT;
188 case ID_GROUP_DATE_AND_TIME_LOCAL_TIME:
190 itemCount = ID_GROUP_DATE_AND_TIME_LOCAL_TIME_ITEM_COUNT;
194 case ID_GROUP_DATE_AND_TIME_FORMAT:
196 itemCount = ID_GROUP_DATE_AND_TIME_FORMAT_ITEM_COUNT;
200 case ID_GROUP_DATE_AND_TIME_FORMAT_LIST:
202 itemCount = ID_GROUP_DATE_AND_TIME_FORMAT_LIST_ITEM_COUNT;
206 case ID_GROUP_DATE_AND_TIME_FIRST_DAY:
208 itemCount = ID_GROUP_DATE_AND_TIME_FIRST_DAY_ITEM_COUNT;
212 case ID_GROUP_DATE_AND_TIME_FIRST_DAY_LIST:
214 itemCount = ID_GROUP_DATE_AND_TIME_FIRST_DAY_LIST_ITEM_COUNT;
221 AppLogDebug("GetItemCount %d", itemCount);
227 DateTimeForm::CreateGroupItem(int groupIndex, int itemWidth)
229 AppLogDebug("ENTER");
231 int itemHeight = H_GROUP_INDEX_NO_TITLE_DEFAULT;
232 int yItemOffset = H_GROUP_INDEX_HELP_TEXT_TOP_GAP;
233 LabelTextStyle style = LABEL_TEXT_STYLE_BOLD;
234 Rectangle itemMainRectangle;
236 Label* pLabel = null;
238 TableViewGroupItem* pItem = new (std::nothrow) TableViewGroupItem();
242 case ID_GROUP_DATE_AND_TIME_MAIN:
244 case ID_GROUP_DATE_AND_TIME_FORMAT:
246 yItemOffset = Y_GROUP_INDEX_DEFAULT;
247 itemHeight = H_GROUP_INDEX_NO_TITLE_DEFAULT;
251 case ID_GROUP_DATE_AND_TIME_LOCAL_TIME:
253 style = LABEL_TEXT_STYLE_NORMAL;
254 yItemOffset = H_GROUP_INDEX_HELP_TEXT_TOP_GAP;
255 itemHeight = H_GROUP_INDEX_DEFAULT;
256 groupText = ResourceManager::GetString(L"IDS_ST_BODY_USE_TIME_PROVIDED_BY_NETWORK");
260 case ID_GROUP_DATE_AND_TIME_FIRST_DAY:
266 case ID_GROUP_DATE_AND_TIME_FORMAT_LIST:
268 case ID_GROUP_DATE_AND_TIME_FIRST_DAY_LIST:
276 yItemOffset = Y_GROUP_INDEX_DEFAULT;
277 itemHeight = H_GROUP_INDEX_NO_TITLE_DEFAULT;
282 itemMainRectangle.x = X_GROUP_INDEX_DEFAULT_LABEL;
283 itemMainRectangle.y = yItemOffset;
284 itemMainRectangle.width = itemWidth;
285 itemMainRectangle.height = itemHeight;
287 RelativeLayout relativeLayout;
288 relativeLayout.Construct();
290 pItem->Construct(relativeLayout, Dimension(itemWidth, itemHeight));
292 pLabel = new (std::nothrow) Label();
293 pLabel->Construct(itemMainRectangle, groupText);
294 pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
295 pLabel->SetTextVerticalAlignment(ALIGNMENT_TOP);
296 pLabel->SetTextConfig(FONT_SIZE_GROUP_TITLE_TEXT, style);
297 pLabel->SetTextColor(COLOR_GROUP_TITLE_TEXT);
299 pItem->AddControl(pLabel);
300 relativeLayout.SetMargin(*pLabel, itemMainRectangle.x, RELATIVE_LAYOUT_RIGHT_MARGIN, 0, 0);
301 relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_LEFT_TO_LEFT);
302 relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_RIGHT_TO_RIGHT);
303 pItem->SetBackgroundColor(COLOR_BG_GROUP_INDEX_DEFAULT);
304 pItem->SetEnabled(false);
310 DateTimeForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
312 AppLogDebug("group[%d] index[%d]", groupIndex, itemIndex);
314 bool isSecondLine = false;
315 Rectangle itemMainRectangle;
316 Rectangle itemSubRectangle;
317 TableViewAnnexStyle style = TABLE_VIEW_ANNEX_STYLE_NORMAL;
322 Label* pLabel = null;
323 int itemHeight = H_GROUP_ITEM_DEFAULT;
324 int fontSize = GetFontSize();
326 ItemTypeOneLine(itemMainRectangle);
327 TableViewItem* pItem = new (std::nothrow) TableViewItem();
331 case ID_GROUP_DATE_AND_TIME_MAIN:
333 bool automaticUpdate = false;
334 style = TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING;
335 itemMainText = ResourceManager::GetString(L"IDS_ST_BODY_AUTOMATIC_UPDATE");
336 itemMainRectangle.width -= W_RESIZE_LABEL_GAP;
338 if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_UPDATE_AUTO, automaticUpdate) == E_SUCCESS)
340 __pTableView->SetItemChecked(groupIndex, itemIndex, automaticUpdate);
345 case ID_GROUP_DATE_AND_TIME_LOCAL_TIME:
349 LocaleManager localeManager;
350 localeManager.Construct();
351 TimeZone timeZone = localeManager.GetSystemTimeZone();
352 int rawOffset = timeZone.GetRawOffset();
356 case ID_ITEM_DATE_AND_TIME_TIME_ZONE:
358 itemSubText = timeZone.GetId();
359 itemSubText.IndexOf(L"/", 0, slashIndex);
360 itemSubText.Remove(0, slashIndex + NEXT_INDEX);
363 itemSubText.Insert(L", GMT +", itemSubText.GetLength());
367 itemSubText.Insert(L", GMT ", itemSubText.GetLength());
369 itemSubText.Insert((rawOffset / SIXTY_MINUTES_TO_HOUR), (itemSubText.GetLength()));
370 int minutes = rawOffset % SIXTY_MINUTES_TO_HOUR;
373 int minusMinutes = 0;
376 minusMinutes -= (minusMinutes + minutes);
377 itemSubText.Insert(L":", itemSubText.GetLength());
378 itemSubText.Insert((minusMinutes), (itemSubText.GetLength()));
382 itemSubText.Insert(L":", itemSubText.GetLength());
383 itemSubText.Insert((minutes), (itemSubText.GetLength()));
386 itemMainText = ResourceManager::GetString(L"IDS_ST_BODY_TIME_ZONE");
390 case ID_ITEM_DATE_AND_TIME_DATE_AND_TIME:
392 ItemTypeOneLine(itemMainRectangle);
393 itemHeight = H_GROUP_ITEM_EDITFIELD_DEFAULT;
394 itemMainText = ResourceManager::GetString(L"IDS_ST_BODY_DATE_AND_TIME");
404 case ID_GROUP_DATE_AND_TIME_FORMAT:
406 bool hourFormat = false;
409 if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_24HOUR, hourFormat) != E_SUCCESS)
411 AppLogDebug("SettingInfo::GetValue() fail(%s)", GetErrorMessage(GetLastResult()));
416 itemSubText = ResourceManager::GetString(L"IDS_COM_BODY_12_HOURS");
420 itemSubText = ResourceManager::GetString(L"IDS_ST_BODY_24_HOURS");
423 itemMainText = ResourceManager::GetString(L"IDS_ST_BODY_TIME_FORMAT");
427 case ID_GROUP_DATE_AND_TIME_FORMAT_LIST:
429 bool hourFormat = false;
430 style = TABLE_VIEW_ANNEX_STYLE_RADIO;
431 isSecondLine = false;
433 if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_24HOUR, hourFormat) != E_SUCCESS)
435 AppLogDebug("SettingInfo::GetValue() fail(%s)", GetErrorMessage(GetLastResult()));
440 case ID_ITEM_DATE_AND_TIME_FORMAT_12_HOURS:
442 itemMainText = ResourceManager::GetString(L"IDS_COM_BODY_12_HOURS");
444 if (hourFormat == false)
446 __pTableView->SetItemChecked(groupIndex, itemIndex, true);
451 case ID_ITEM_DATE_AND_TIME_FORMAT_24_HOURS:
453 itemMainText = ResourceManager::GetString(L"IDS_ST_BODY_24_HOURS");
455 if (hourFormat == true)
457 __pTableView->SetItemChecked(groupIndex, itemIndex, true);
468 case ID_GROUP_DATE_AND_TIME_FIRST_DAY:
470 String firstDayOfWeek;
473 if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_FIRSTDAY, firstDayOfWeek) != E_SUCCESS)
475 AppLogDebug("SettingInfo::GetValue() fail(%s)", GetErrorMessage(GetLastResult()));
477 itemSubText = firstDayOfWeek;
481 case ID_GROUP_DATE_AND_TIME_FIRST_DAY_LIST:
483 String firstDayOfWeek;
484 style = TABLE_VIEW_ANNEX_STYLE_RADIO;
485 isSecondLine = false;
487 if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_FIRSTDAY, firstDayOfWeek) != E_SUCCESS)
489 AppLogDebug("SettingInfo::GetValue() fail(%s)", GetErrorMessage(GetLastResult()));
494 case ID_ITEM_DATE_AND_TIME_FORMAT_FIRST_DAY_MONDAY:
496 itemMainText = ResourceManager::GetString(L"IDS_ST_BODY_MONDAY");
498 if (firstDayOfWeek.Equals(L"Sunday", false) == false)
500 __pTableView->SetItemChecked(groupIndex, itemIndex, true);
505 case ID_ITEM_DATE_AND_TIME_FORMAT_FIRST_DAY_SUNDAY:
507 itemMainText = ResourceManager::GetString(L"IDS_ST_BODY_SUNDAY");
508 if (firstDayOfWeek.Equals(L"Sunday", false))
510 __pTableView->SetItemChecked(groupIndex, itemIndex, true);
525 if ((groupIndex == ID_GROUP_DATE_AND_TIME_LOCAL_TIME) && (itemIndex == ID_ITEM_DATE_AND_TIME_DATE_AND_TIME))
527 pItem->Construct( Dimension(itemWidth, H_TIME_FIELD), style);
528 pItem->SetBackgroundColor(COLOR_BG_GROUP_ITEM_DEFAULT);
530 bool hourFormat = false;
532 EditDate* pEditDate = new (std::nothrow) EditDate();
533 pEditDate->Construct(Point(0, 0), itemMainText);
534 pEditDate->SetCurrentDate();
536 int minYear = MIN_YEAR;
537 int maxYear = MAX_YEAR;
539 if (pEditDate->GetYear() < MIN_YEAR)
541 minYear = pEditDate->GetYear();
544 if (pEditDate->GetYear() > MAX_YEAR)
546 maxYear = pEditDate->GetYear();
549 pEditDate->SetYearRange(minYear, maxYear);
550 pEditDate->AddDateChangeEventListener(*this);
551 pEditDate->SetName(L"EditDate");
553 pItem->AddControl(pEditDate);
555 EditTime* pEditTime = new (std::nothrow) EditTime();
556 pEditTime->Construct(Point(pEditDate->GetWidth(), 0), L" ");
557 pEditTime->SetCurrentTime();
559 if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_24HOUR, hourFormat) == E_SUCCESS)
561 pEditTime->Set24HourNotationEnabled(hourFormat);
564 pEditTime->AddTimeChangeEventListener(*this);
565 pEditTime->SetName(L"EditTime");
567 pItem->AddControl(pEditTime);
568 pItem->SetIndividualSelectionEnabled(pEditDate, true);
569 pItem->SetIndividualSelectionEnabled(pEditTime, true);
571 else if (isSecondLine == true)
573 ItemTypeTwoLine(itemMainRectangle, itemSubRectangle, fontSize);
574 itemHeight = (itemMainRectangle.height + itemSubRectangle.height);
576 RelativeLayout relativeLayout;
577 relativeLayout.Construct();
579 pItem->Construct(relativeLayout, Dimension(itemWidth, itemHeight), style);
580 pItem->SetBackgroundColor(COLOR_BG_GROUP_ITEM_DEFAULT);
582 pLabel = new (std::nothrow) Label();
583 pLabel->Construct(itemMainRectangle, itemMainText);
584 pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
585 pLabel->SetTextConfig(fontSize, LABEL_TEXT_STYLE_NORMAL);
586 pLabel->SetTextColor(COLOR_MAIN_TEXT);
588 pItem->AddControl(pLabel);
589 if (groupIndex == ID_GROUP_DATE_AND_TIME_FORMAT)
591 relativeLayout.SetMargin(*pLabel, itemMainRectangle.x, RELATIVE_LAYOUT_RIGHT_MARGIN_DETAIL_BUTTON, 0, 0);
595 relativeLayout.SetMargin(*pLabel, itemMainRectangle.x, RELATIVE_LAYOUT_RIGHT_MARGIN, 0, 0);
597 relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_LEFT_TO_LEFT);
598 relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_RIGHT_TO_RIGHT);
600 if (groupIndex == ID_GROUP_DATE_AND_TIME_FORMAT)
602 Rectangle detailArrow;
603 Bitmap* pBitmap = null;
604 if (__pTableView->IsGroupExpanded(ID_GROUP_DATE_AND_TIME_FORMAT_LIST))
606 pBitmap = ResourceManager::GetBitmapN(IDB_DETAIL_BUTTON_EXPAND_OPENED);
610 pBitmap = ResourceManager::GetBitmapN(IDB_DETAIL_BUTTON_EXPAND_CLOSED);
613 detailArrow = itemMainRectangle;
614 detailArrow.y = itemMainRectangle.y + ((itemHeight - W_DETAIL_ARROW_BUTTON) / DIVIDE_BY_TWO);
615 detailArrow.height = W_DETAIL_ARROW_BUTTON;
616 detailArrow.width = W_DETAIL_ARROW_BUTTON;
618 pLabel = new (std::nothrow) Label();
619 pLabel->Construct(detailArrow, L"");
621 pLabel->SetBackgroundBitmap(*pBitmap);
623 pItem->AddControl(pLabel);
624 relativeLayout.SetMargin(*pLabel, itemMainRectangle.x, RELATIVE_LAYOUT_RIGHT_MARGIN_DETAIL_ARROW_BUTTON, 0, 0);
625 relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_RIGHT_TO_RIGHT);
628 pLabel = new (std::nothrow) Label();
629 pLabel->Construct(itemSubRectangle, itemSubText);
630 pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
631 pLabel->SetTextVerticalAlignment(ALIGNMENT_TOP);
632 pLabel->SetTextConfig(FONT_SIZE_SUB_TEXT, LABEL_TEXT_STYLE_NORMAL);
633 pLabel->SetTextColor(COLOR_SUB_TEXT);
635 pItem->AddControl(pLabel);
636 relativeLayout.SetMargin(*pLabel, itemSubRectangle.x, RELATIVE_LAYOUT_RIGHT_MARGIN, 0, 0);
637 relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_LEFT_TO_LEFT);
638 relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_RIGHT_TO_RIGHT);
642 RelativeLayout relativeLayout;
643 relativeLayout.Construct();
645 pItem->Construct(relativeLayout, Dimension(itemWidth, itemHeight), style);
646 pItem->SetBackgroundColor(COLOR_BG_GROUP_ITEM_DEFAULT);
648 pLabel = new (std::nothrow) Label();
649 pLabel->Construct(itemMainRectangle, itemMainText);
650 pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
651 pLabel->SetTextConfig(fontSize, LABEL_TEXT_STYLE_NORMAL);
652 pLabel->SetTextColor(COLOR_MAIN_TEXT);
654 pItem->AddControl(pLabel);
658 case TABLE_VIEW_ANNEX_STYLE_RADIO:
660 relativeLayout.SetMargin(*pLabel, RELATIVE_LAYOUT_LEFT_MARGIN, RELATIVE_LAYOUT_RIGHT_MARGIN, 0, 0);
664 case TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING:
666 relativeLayout.SetMargin(*pLabel, itemMainRectangle.x, RELATIVE_LAYOUT_RIGHT_MARGIN_ONOFF_SLIDING, 0, 0);
672 relativeLayout.SetMargin(*pLabel, itemMainRectangle.x, RELATIVE_LAYOUT_RIGHT_MARGIN, 0, 0);
677 relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_LEFT_TO_LEFT);
678 relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_RIGHT_TO_RIGHT);
685 DateTimeForm::DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem)
687 AppLogDebug("ENTER");
696 DateTimeForm::DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem)
698 AppLogDebug("ENTER");
707 DateTimeForm::OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status)
709 SceneManager* pSceneManager = SceneManager::GetInstance();
710 AppAssert(pSceneManager);
712 AppLogDebug("group[%d] index[%d]", groupIndex, itemIndex);
716 case ID_GROUP_DATE_AND_TIME_MAIN:
718 bool automaticUpdateStatus = tableView.IsItemChecked(groupIndex, itemIndex);
720 if (status == TABLE_VIEW_ITEM_STATUS_SELECTED)
722 automaticUpdateStatus = (!(automaticUpdateStatus));
725 if (SettingInfo::SetValue(SETTING_INFO_KEY_LOCALE_UPDATE_AUTO, automaticUpdateStatus) == E_SUCCESS)
727 tableView.SetItemChecked(groupIndex, itemIndex, automaticUpdateStatus);
728 tableView.SetItemEnabled(ID_GROUP_DATE_AND_TIME_LOCAL_TIME, ID_ITEM_DATE_AND_TIME_TIME_ZONE, !automaticUpdateStatus);
729 tableView.SetItemEnabled(ID_GROUP_DATE_AND_TIME_LOCAL_TIME, ID_ITEM_DATE_AND_TIME_DATE_AND_TIME, !automaticUpdateStatus);
730 tableView.RefreshAllItems();
734 AppLogDebug("SettingInfo::SetValue() fail(%s)", GetErrorMessage(GetLastResult()));
739 case ID_GROUP_DATE_AND_TIME_LOCAL_TIME:
741 if (itemIndex == ID_ITEM_DATE_AND_TIME_TIME_ZONE)
743 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_TIME_ZONE, SCENE_TRANSITION_ANIMATION_TYPE_LEFT));
745 else if (itemIndex == ID_ITEM_DATE_AND_TIME_DATE_AND_TIME)
747 //TODO: make operation time and date
752 case ID_GROUP_DATE_AND_TIME_FORMAT:
754 AppLogDebug("ID_ITEM_DATE_AND_TIME_FORMAT_TIME_FORMAT Detail");
756 if (tableView.IsGroupExpanded(ID_GROUP_DATE_AND_TIME_FORMAT_LIST) == true)
758 tableView.CollapseGroup(ID_GROUP_DATE_AND_TIME_FORMAT_LIST);
762 tableView.ExpandGroup(ID_GROUP_DATE_AND_TIME_FORMAT_LIST);
764 tableView.RefreshItem(groupIndex, itemIndex, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
765 tableView.ScrollToItem(groupIndex, itemIndex);
769 case ID_GROUP_DATE_AND_TIME_FIRST_DAY:
771 if (tableView.IsGroupExpanded(ID_GROUP_DATE_AND_TIME_FIRST_DAY_LIST) == true)
773 tableView.CollapseGroup(ID_GROUP_DATE_AND_TIME_FIRST_DAY_LIST);
777 tableView.ExpandGroup(ID_GROUP_DATE_AND_TIME_FIRST_DAY_LIST);
782 case ID_GROUP_DATE_AND_TIME_FIRST_DAY_LIST:
786 if (itemIndex == ID_ITEM_DATE_AND_TIME_FORMAT_FIRST_DAY_MONDAY)
788 firstDay = L"Monday";
792 firstDay = L"Sunday";
795 if (SettingInfo::SetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_FIRSTDAY, firstDay) != E_SUCCESS)
797 AppLogDebug("SettingInfo::GetValue() fail(%s)", GetErrorMessage(GetLastResult()));
802 case ID_GROUP_DATE_AND_TIME_FORMAT_LIST:
804 bool timeFormat = false;
808 case ID_ITEM_DATE_AND_TIME_FORMAT_12_HOURS:
811 tableView.SetItemChecked(groupIndex, ID_ITEM_DATE_AND_TIME_FORMAT_12_HOURS, true);
812 tableView.SetItemChecked(groupIndex, ID_ITEM_DATE_AND_TIME_FORMAT_24_HOURS, false);
816 case ID_ITEM_DATE_AND_TIME_FORMAT_24_HOURS:
819 tableView.SetItemChecked(groupIndex, ID_ITEM_DATE_AND_TIME_FORMAT_12_HOURS, false);
820 tableView.SetItemChecked(groupIndex, ID_ITEM_DATE_AND_TIME_FORMAT_24_HOURS, true);
828 if (SettingInfo::SetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_24HOUR, timeFormat) != E_SUCCESS)
830 AppLogDebug("SettingInfo::GetValue() fail(%s)", GetErrorMessage(GetLastResult()));
833 tableView.RefreshAllItems();
843 DateTimeForm::OnDateChanged(const Tizen::Ui::Control& source, int year, int month, int day)
845 LocaleManager localeManager;
846 localeManager.Construct();
847 TimeZone timeZone = localeManager.GetSystemTimeZone();
851 SystemTime::GetCurrentTime(TIME_MODE_WALL, wallTime);
853 wallTime.SetValue(year, month, day, wallTime.GetHour(), wallTime.GetMinute(), wallTime.GetSecond());
854 utcTime = timeZone.WallTimeToUtcTime(wallTime);
856 SystemTime::SetCurrentTime(utcTime);
860 DateTimeForm::OnDateChangeCanceled(const Tizen::Ui::Control& source)
865 DateTimeForm::OnTimeChanged(const Control& source, int hour, int minute)
867 LocaleManager localeManager;
868 localeManager.Construct();
869 TimeZone timeZone = localeManager.GetSystemTimeZone();
873 SystemTime::GetCurrentTime(TIME_MODE_WALL, wallTime);
875 wallTime.SetValue(wallTime.GetYear(), wallTime.GetMonth(), wallTime.GetDay(), hour, minute, 0);
876 utcTime = timeZone.WallTimeToUtcTime(wallTime);
878 SystemTime::SetCurrentTime(utcTime);
882 DateTimeForm::OnTimeChangeCanceled(const Control& source)
887 DateTimeForm::GetDefaultGroupItemHeight(void)
889 return H_GROUP_INDEX_NO_TITLE_DEFAULT;
893 DateTimeForm::GetDefaultItemHeight(void)
895 return H_GROUP_ITEM_DEFAULT;
899 DateTimeForm::UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem)
904 DateTimeForm::UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
906 if ((groupIndex == ID_GROUP_DATE_AND_TIME_LOCAL_TIME) && (itemIndex == ID_ITEM_DATE_AND_TIME_DATE_AND_TIME))
908 EditTime* pEditTime = static_cast<EditTime*>(pItem->GetControl(L"EditTime"));
909 if (pEditTime == null)
911 AppLogDebug("pEditTime update Fail");
914 bool hourFormat = false;
915 if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_24HOUR, hourFormat) == E_SUCCESS)
917 pEditTime->Set24HourNotationEnabled(hourFormat);
920 Rectangle editTimeRectangle = pEditTime->GetBounds();
921 Rectangle itemRectangle = pItem->GetBounds();
922 int pos = ((itemRectangle.width * RESIZE_RATE) / DIVIDE_BY_TEN);
923 pEditTime->SetSize(pos, editTimeRectangle.height);
924 pEditTime->SetPosition(pos, 0);
925 pItem->Invalidate(true);
927 if (groupIndex == ID_GROUP_DATE_AND_TIME_FORMAT)
930 Label* pLabelSecondLine = static_cast<Label*>(pItem->GetControl(SECOND_TEXT_ITEM));
931 Label* pLabelBitmap = static_cast<Label*>(pItem->GetControl(SECOND_CONTROL_ITEM));
932 Bitmap* pBitmap = null;
934 if (__pTableView->IsGroupExpanded(ID_GROUP_DATE_AND_TIME_FORMAT_LIST))
936 pBitmap = ResourceManager::GetBitmapN(IDB_DETAIL_BUTTON_EXPAND_OPENED);
940 pBitmap = ResourceManager::GetBitmapN(IDB_DETAIL_BUTTON_EXPAND_CLOSED);
943 bool hourFormat = false;
945 if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_24HOUR, hourFormat) != E_SUCCESS)
947 AppLogDebug("SettingInfo::GetValue() fail(%s)", GetErrorMessage(GetLastResult()));
952 timeFormat = ResourceManager::GetString(L"IDS_COM_BODY_12_HOURS");
956 timeFormat = ResourceManager::GetString(L"IDS_ST_BODY_24_HOURS");
959 pLabelSecondLine->SetText(timeFormat);
960 pLabelSecondLine->Invalidate(false);
962 pLabelBitmap->SetBackgroundBitmap(*pBitmap);
963 pLabelBitmap->Invalidate(false);
966 pItem->Invalidate(false);
970 DateTimeForm::OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated)
975 DateTimeForm::OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status)
980 DateTimeForm::OnOrientationChanged(const Tizen::Ui::Control& source, Tizen::Ui::OrientationStatus orientationStatus)
982 BaseForm::OnOrientationChanged(source, orientationStatus);
983 __pTableView->RefreshItem(ID_GROUP_DATE_AND_TIME_LOCAL_TIME, ID_ITEM_DATE_AND_TIME_DATE_AND_TIME, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
987 DateTimeForm::OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs)
989 if (requestId == FRFRESH_REQUEST_EVENT)
993 bool hourFormat = false;
995 if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_24HOUR, hourFormat) != E_SUCCESS)
997 AppLogDebug("SettingInfo::GetValue() fail(%s)", GetErrorMessage(GetLastResult()));
1000 if (hourFormat == false)
1002 __pTableView->SetItemChecked(ID_GROUP_DATE_AND_TIME_FORMAT_LIST, ID_ITEM_DATE_AND_TIME_FORMAT_12_HOURS, true);
1003 __pTableView->SetItemChecked(ID_GROUP_DATE_AND_TIME_FORMAT_LIST, ID_ITEM_DATE_AND_TIME_FORMAT_24_HOURS, false);
1007 __pTableView->SetItemChecked(ID_GROUP_DATE_AND_TIME_FORMAT_LIST, ID_ITEM_DATE_AND_TIME_FORMAT_24_HOURS, true);
1008 __pTableView->SetItemChecked(ID_GROUP_DATE_AND_TIME_FORMAT_LIST, ID_ITEM_DATE_AND_TIME_FORMAT_12_HOURS, false);
1010 __pTableView->RefreshAllItems();
1014 pArgs->RemoveAll(true);