NABI issues N_SE-50115, N_SE-50067, N_SE-49946, N_SE-49897, N_SE-49884, N_SE-48837...
[apps/osp/Settings.git] / src / StDateTimeForm.cpp
1 //
2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
3 //
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
7 //
8 //     http://floralicense.org/license/
9 //
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.
15 //
16
17 /**
18  * @file                StDateTimeForm.cpp
19  * @brief               This is the implementation file for DateTimeForm class.
20  */
21
22 #include "StDateTimeForm.h"
23 #include "StResourceManager.h"
24 #include "StSettingScenesList.h"
25 #include "StTypes.h"
26
27 using namespace Tizen::Base;
28 using namespace Tizen::Base::Runtime;
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;
35
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;
39
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;
44
45 static const int ID_GROUP_DATE_AND_TIME_FORMAT = 2;
46 static const int ID_GROUP_DATE_AND_TIME_FORMAT_ITEM_COUNT = 1;
47
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;
52
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;
55
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;
60
61 static const int ID_GROUP_COUNT = 4;
62
63 static const int SIXTY_MINUTES_TO_HOUR = 60;
64 static const int H_GROUP_ITEM_EDITFIELD_DEFAULT = 120;
65
66 static const int NEXT_INDEX = 1;
67 static const int W_RESIZE_LABEL_GAP = 170;
68 static const int H_TIME_FIELD = 150;
69
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;
76 static const int NO_OF_SECONDS = 60;
77 static const int ONE_SECOND_TIME_INTERVAL = 1000;
78
79 static const wchar_t* EDIT_TIME_CONTROL = L"EditTime";
80 static const wchar_t* EDIT_DATE_CONTROL = L"EditDate";
81 static const wchar_t* SUB_TEXT_CONTROL = L"SubText";
82
83 DateTimeForm::DateTimeForm(void)
84         : __pTimer(null)
85 {
86 }
87
88 DateTimeForm::~DateTimeForm(void)
89 {
90 }
91
92 void
93 DateTimeForm::CreateFooter(void)
94 {
95         Footer* pFooter = GetFooter();
96         AppAssert(pFooter);
97
98         pFooter->SetStyle(FOOTER_STYLE_BUTTON_TEXT);
99         pFooter->AddActionEventListener(*this);
100
101         SetFormBackEventListener(this);
102 }
103
104 result
105 DateTimeForm::OnInitializing(void)
106 {
107         AppLogDebug("ENTER");
108         CreateHeader(ResourceManager::GetString(L"IDS_ST_BODY_DATE_AND_TIME"));
109         CreateTableView();
110
111         return E_SUCCESS;
112 }
113
114 result
115 DateTimeForm::OnTerminating(void)
116 {
117         __pTableView = null;
118
119         SetFormBackEventListener(null);
120         return E_SUCCESS;
121 }
122
123 void
124 DateTimeForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
125 {
126         result r;
127         bool automaticUpdate = false;
128         bool hourFormat = false;
129         __pTableView->UpdateTableView();
130         __pTableView->CollapseGroup(ID_GROUP_DATE_AND_TIME_FORMAT_LIST);
131         __pTableView->RefreshItem(ID_GROUP_DATE_AND_TIME_FORMAT, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
132         __pTableView->RefreshItem(ID_GROUP_DATE_AND_TIME_LOCAL_TIME, ID_ITEM_DATE_AND_TIME_DATE_AND_TIME, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
133
134         r = SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_UPDATE_AUTO, automaticUpdate);
135         if (IsFailed(r))
136         {
137                 AppLogException("GetValue(locale.update.auto) failed(%s)", GetErrorMessage(r));
138         }
139         else
140         {
141                 __pTableView->SetItemChecked(ID_GROUP_DATE_AND_TIME_MAIN, ID_ITEM_DATE_AND_TIME_MAIN_AUTOMATIC_UPDATE, automaticUpdate);
142                 __pTableView->SetItemEnabled(ID_GROUP_DATE_AND_TIME_LOCAL_TIME, ID_ITEM_DATE_AND_TIME_TIME_ZONE, !automaticUpdate);
143                 __pTableView->SetItemEnabled(ID_GROUP_DATE_AND_TIME_LOCAL_TIME, ID_ITEM_DATE_AND_TIME_DATE_AND_TIME, !automaticUpdate);
144         }
145
146         r = SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_24HOUR, hourFormat);
147         if (IsFailed(r))
148         {
149                 AppLogException("GetValue(locale.time.format.24hour) failed(%s)", GetErrorMessage(r));
150         }
151         else
152         {
153                 if (hourFormat == false)
154                 {
155                         __pTableView->SetItemChecked(ID_GROUP_DATE_AND_TIME_FORMAT_LIST, ID_ITEM_DATE_AND_TIME_FORMAT_12_HOURS, true);
156                         __pTableView->SetItemChecked(ID_GROUP_DATE_AND_TIME_FORMAT_LIST, ID_ITEM_DATE_AND_TIME_FORMAT_24_HOURS, false);
157                 }
158                 else
159                 {
160                         __pTableView->SetItemChecked(ID_GROUP_DATE_AND_TIME_FORMAT_LIST, ID_ITEM_DATE_AND_TIME_FORMAT_24_HOURS, true);
161                         __pTableView->SetItemChecked(ID_GROUP_DATE_AND_TIME_FORMAT_LIST, ID_ITEM_DATE_AND_TIME_FORMAT_12_HOURS, false);
162                 }
163         }
164
165         DateTime currentDateTime;
166         SystemTime::GetCurrentTime(currentDateTime);
167         int interval = ONE_SECOND_TIME_INTERVAL;
168         interval *= (NO_OF_SECONDS - currentDateTime.GetSecond());
169         __pTimer = new (std::nothrow) Timer();
170         __pTimer->Construct(*this);
171         __pTimer->Start(interval);
172 }
173
174 void
175 DateTimeForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
176 {
177         if (__pTimer != null)
178         {
179                 __pTimer->Cancel();
180                 delete __pTimer;
181         }
182 }
183
184 void
185 DateTimeForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
186 {
187         SceneManager* pSceneManager = SceneManager::GetInstance();
188         AppAssert(pSceneManager);
189
190         __pTableView->CollapseGroup(ID_GROUP_DATE_AND_TIME_FORMAT_LIST);
191         pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT), null);
192 }
193
194 int
195 DateTimeForm::GetGroupCount(void)
196 {
197         AppLogDebug("ENTER");
198         return ID_GROUP_COUNT;
199 }
200
201 int
202 DateTimeForm::GetItemCount(int groupIndex)
203 {
204         int itemCount = 0;
205
206         switch (groupIndex)
207         {
208         case ID_GROUP_DATE_AND_TIME_MAIN:
209                 {
210                         itemCount = ID_GROUP_DATE_AND_TIME_MAIN_ITEM_COUNT;
211                 }
212                 break;
213
214         case ID_GROUP_DATE_AND_TIME_LOCAL_TIME:
215                 {
216                         itemCount = ID_GROUP_DATE_AND_TIME_LOCAL_TIME_ITEM_COUNT;
217                 }
218                 break;
219
220         case ID_GROUP_DATE_AND_TIME_FORMAT:
221                 {
222                         itemCount = ID_GROUP_DATE_AND_TIME_FORMAT_ITEM_COUNT;
223                 }
224                 break;
225
226         case ID_GROUP_DATE_AND_TIME_FORMAT_LIST:
227                 {
228                         itemCount = ID_GROUP_DATE_AND_TIME_FORMAT_LIST_ITEM_COUNT;
229                 }
230                 break;
231
232         case ID_GROUP_DATE_AND_TIME_FIRST_DAY:
233                 {
234                         itemCount = ID_GROUP_DATE_AND_TIME_FIRST_DAY_ITEM_COUNT;
235                 }
236                 break;
237
238         case ID_GROUP_DATE_AND_TIME_FIRST_DAY_LIST:
239                 {
240                         itemCount = ID_GROUP_DATE_AND_TIME_FIRST_DAY_LIST_ITEM_COUNT;
241                 }
242                 break;
243
244         default:
245                 break;
246         }
247         AppLogDebug("GetItemCount %d", itemCount);
248
249         return itemCount;
250 }
251
252 TableViewGroupItem*
253 DateTimeForm::CreateGroupItem(int groupIndex, int itemWidth)
254 {
255         AppLogDebug("ENTER");
256
257         int itemHeight = H_GROUP_INDEX_NO_TITLE_DEFAULT;
258         int yItemOffset = H_GROUP_INDEX_HELP_TEXT_TOP_GAP;
259         LabelTextStyle style = LABEL_TEXT_STYLE_BOLD;
260         Rectangle itemMainRectangle;
261         String groupText;
262         Label* pLabel = null;
263
264         TableViewGroupItem* pItem = new (std::nothrow) TableViewGroupItem();
265
266         switch (groupIndex)
267         {
268         case ID_GROUP_DATE_AND_TIME_MAIN:
269                 // fall through
270         case ID_GROUP_DATE_AND_TIME_FORMAT:
271                 {
272                         yItemOffset = Y_GROUP_INDEX_DEFAULT;
273                         itemHeight = H_GROUP_INDEX_NO_TITLE_DEFAULT;
274                 }
275                 break;
276
277         case ID_GROUP_DATE_AND_TIME_LOCAL_TIME:
278                 {
279                         style = LABEL_TEXT_STYLE_NORMAL;
280                         yItemOffset = H_GROUP_INDEX_HELP_TEXT_TOP_GAP;
281                         itemHeight = H_GROUP_INDEX_DEFAULT;
282                         groupText = ResourceManager::GetString(L"IDS_ST_BODY_USE_TIME_PROVIDED_BY_NETWORK");
283                 }
284                 break;
285
286         case ID_GROUP_DATE_AND_TIME_FIRST_DAY:
287                 {
288                         itemHeight = 0;
289                 }
290                 break;
291
292         case ID_GROUP_DATE_AND_TIME_FORMAT_LIST:
293                 // fall through
294         case ID_GROUP_DATE_AND_TIME_FIRST_DAY_LIST:
295                 {
296                         itemHeight = 0;
297                 }
298                 break;
299
300         default:
301                 {
302                         yItemOffset = Y_GROUP_INDEX_DEFAULT;
303                         itemHeight = H_GROUP_INDEX_NO_TITLE_DEFAULT;
304                 }
305                 break;
306         }
307
308         itemMainRectangle.x = X_GROUP_INDEX_DEFAULT_LABEL;
309         itemMainRectangle.y = yItemOffset;
310         itemMainRectangle.width = itemWidth;
311         itemMainRectangle.height = itemHeight;
312
313         RelativeLayout relativeLayout;
314         relativeLayout.Construct();
315
316         pItem->Construct(relativeLayout, Dimension(itemWidth, itemHeight));
317
318         pLabel = new (std::nothrow) Label();
319         pLabel->Construct(itemMainRectangle, groupText);
320         pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
321         pLabel->SetTextVerticalAlignment(ALIGNMENT_TOP);
322         pLabel->SetTextConfig(FONT_SIZE_GROUP_TITLE_TEXT, style);
323         pLabel->SetTextColor(COLOR_GROUP_TITLE_TEXT);
324
325         pItem->AddControl(pLabel);
326         relativeLayout.SetMargin(*pLabel, itemMainRectangle.x, RELATIVE_LAYOUT_RIGHT_MARGIN, 0, 0);
327         relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_LEFT_TO_LEFT);
328         relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_RIGHT_TO_RIGHT);
329         pItem->SetBackgroundColor(COLOR_BG_GROUP_INDEX_DEFAULT);
330         pItem->SetEnabled(false);
331
332         return pItem;
333 }
334
335 TableViewItem*
336 DateTimeForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
337 {
338         AppLogDebug("group[%d] index[%d]", groupIndex, itemIndex);
339
340         result r;
341         bool isEnabled = true;
342         bool isSecondLine = false;
343         Rectangle itemMainRectangle;
344         Rectangle itemSubRectangle;
345         TableViewAnnexStyle style = TABLE_VIEW_ANNEX_STYLE_NORMAL;
346         String itemMainText;
347         String itemSubText;
348         String key;
349         String Value;
350         Label* pLabel = null;
351         int itemHeight = H_GROUP_ITEM_DEFAULT;
352         int fontSize = GetFontSize();
353
354         ItemTypeOneLine(itemMainRectangle);
355         TableViewItem* pItem = new (std::nothrow) TableViewItem();
356
357         switch (groupIndex)
358         {
359         case ID_GROUP_DATE_AND_TIME_MAIN:
360                 {
361                         bool automaticUpdate = false;
362                         style = TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING;
363                         itemMainText = ResourceManager::GetString(L"IDS_ST_BODY_AUTOMATIC_UPDATE");
364                         itemMainRectangle.width -= W_RESIZE_LABEL_GAP;
365
366                         r = SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_UPDATE_AUTO, automaticUpdate);
367                         if (IsFailed(r))
368                         {
369                                 AppLogException("GetValue(locale.update.auto) failed(%s)", GetErrorMessage(r));
370                         }
371                         else
372                         {
373                                 __pTableView->SetItemChecked(groupIndex, itemIndex, automaticUpdate);
374                         }
375                 }
376                 break;
377
378         case ID_GROUP_DATE_AND_TIME_LOCAL_TIME:
379                 {
380                         int slashIndex = 0;
381                         isSecondLine = true;
382                         LocaleManager localeManager;
383                         localeManager.Construct();
384                         TimeZone timeZone = localeManager.GetSystemTimeZone();
385                         int rawOffset = timeZone.GetRawOffset();
386
387                         switch (itemIndex)
388                         {
389                         case ID_ITEM_DATE_AND_TIME_TIME_ZONE:
390                                 {
391                                         itemSubText = timeZone.GetId();
392                                         itemSubText.IndexOf(L"/", 0, slashIndex);
393                                         itemSubText.Remove(0, slashIndex + NEXT_INDEX);
394                                         itemSubText.Replace(L"_", L" ");
395                                         if (rawOffset >= 0)
396                                         {
397                                                 itemSubText.Insert(L", GMT +", itemSubText.GetLength());
398                                         }
399                                         else
400                                         {
401                                                 itemSubText.Insert(L", GMT ", itemSubText.GetLength());
402                                         }
403                                         itemSubText.Insert((rawOffset / SIXTY_MINUTES_TO_HOUR), (itemSubText.GetLength()));
404                                         int minutes = rawOffset % SIXTY_MINUTES_TO_HOUR;
405                                         if (minutes != 0)
406                                         {
407                                                 int minusMinutes = 0;
408                                                 if (minutes < 0)
409                                                 {
410                                                         minusMinutes -= (minusMinutes + minutes);
411                                                         itemSubText.Insert(L":", itemSubText.GetLength());
412                                                         itemSubText.Insert((minusMinutes), (itemSubText.GetLength()));
413                                                 }
414                                                 else
415                                                 {
416                                                         itemSubText.Insert(L":", itemSubText.GetLength());
417                                                         itemSubText.Insert((minutes), (itemSubText.GetLength()));
418                                                 }
419                                         }
420                                         itemMainText = ResourceManager::GetString(L"IDS_ST_BODY_TIME_ZONE");
421
422                                         bool automaticUpdateStatus = false;
423
424                                         r = SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_UPDATE_AUTO, automaticUpdateStatus);
425                                         if (IsFailed(r))
426                                         {
427                                                 AppLogException("GetValue(locale.update.auto) failed(%s)", GetErrorMessage(r));
428                                         }
429                                         else
430                                         {
431                                                 isEnabled = !automaticUpdateStatus;
432                                         }
433                                 }
434                                 break;
435
436                         case ID_ITEM_DATE_AND_TIME_DATE_AND_TIME:
437                                 {
438                                         ItemTypeOneLine(itemMainRectangle);
439                                         itemHeight = H_GROUP_ITEM_EDITFIELD_DEFAULT;
440                                         itemMainText = ResourceManager::GetString(L"IDS_ST_BODY_DATE_AND_TIME");
441                                 }
442                                 break;
443
444                         default:
445                                 break;
446                         }
447                 }
448                 break;
449
450         case ID_GROUP_DATE_AND_TIME_FORMAT:
451                 {
452                         bool hourFormat = false;
453                         isSecondLine = true;
454
455                         if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_24HOUR, hourFormat) != E_SUCCESS)
456                         {
457                                 AppLogDebug("SettingInfo::GetValue() fail(%s)", GetErrorMessage(GetLastResult()));
458                         }
459
460                         if (hourFormat == 0)
461                         {
462                                 itemSubText = ResourceManager::GetString(L"IDS_COM_BODY_12_HOURS");
463                         }
464                         else
465                         {
466                                 itemSubText = ResourceManager::GetString(L"IDS_ST_BODY_24_HOURS");
467                         }
468
469                         itemMainText = ResourceManager::GetString(L"IDS_ST_BODY_TIME_FORMAT");
470                 }
471                 break;
472         
473         case ID_GROUP_DATE_AND_TIME_FORMAT_LIST:
474                 {
475                         bool hourFormat = false;
476                         style = TABLE_VIEW_ANNEX_STYLE_RADIO;
477                         isSecondLine = false;
478
479                         if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_24HOUR, hourFormat) != E_SUCCESS)
480                         {
481                                 AppLogDebug("SettingInfo::GetValue() fail(%s)", GetErrorMessage(GetLastResult()));
482                         }
483
484                         switch (itemIndex)
485                         {
486                         case ID_ITEM_DATE_AND_TIME_FORMAT_12_HOURS:
487                                 {
488                                         itemMainText = ResourceManager::GetString(L"IDS_COM_BODY_12_HOURS");
489
490                                         if (hourFormat == false)
491                                         {
492                                                 __pTableView->SetItemChecked(groupIndex, itemIndex, true);
493                                         }
494                                 }
495                                 break;
496
497                         case ID_ITEM_DATE_AND_TIME_FORMAT_24_HOURS:
498                                 {
499                                         itemMainText = ResourceManager::GetString(L"IDS_ST_BODY_24_HOURS");
500
501                                         if (hourFormat == true)
502                                         {
503                                                 __pTableView->SetItemChecked(groupIndex, itemIndex, true);
504                                         }
505                                 }
506                                 break;
507
508                         default:
509                                 break;
510                         }
511                 }
512                 break;
513
514         case ID_GROUP_DATE_AND_TIME_FIRST_DAY:
515                 {
516                         String firstDayOfWeek;
517                         isSecondLine = true;
518
519                         if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_FIRSTDAY, firstDayOfWeek) != E_SUCCESS)
520                         {
521                                 AppLogDebug("SettingInfo::GetValue() fail(%s)", GetErrorMessage(GetLastResult()));
522                         }
523                         itemSubText = firstDayOfWeek;
524                 }
525                 break;
526
527         case ID_GROUP_DATE_AND_TIME_FIRST_DAY_LIST:
528                 {
529                         String firstDayOfWeek;
530                         style = TABLE_VIEW_ANNEX_STYLE_RADIO;
531                         isSecondLine = false;
532
533                         if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_FIRSTDAY, firstDayOfWeek) != E_SUCCESS)
534                         {
535                                 AppLogDebug("SettingInfo::GetValue() fail(%s)", GetErrorMessage(GetLastResult()));
536                         }
537
538                         switch (itemIndex)
539                         {
540                         case ID_ITEM_DATE_AND_TIME_FORMAT_FIRST_DAY_MONDAY:
541                                 {
542                                         itemMainText = ResourceManager::GetString(L"IDS_ST_BODY_MONDAY");
543
544                                         if (firstDayOfWeek.Equals(L"Sunday", false) == false)
545                                         {
546                                                 __pTableView->SetItemChecked(groupIndex, itemIndex, true);
547                                         }
548                                 }
549                                 break;
550
551                         case ID_ITEM_DATE_AND_TIME_FORMAT_FIRST_DAY_SUNDAY:
552                                 {
553                                         itemMainText = ResourceManager::GetString(L"IDS_ST_BODY_SUNDAY");
554                                         if (firstDayOfWeek.Equals(L"Sunday", false))
555                                         {
556                                                 __pTableView->SetItemChecked(groupIndex, itemIndex, true);
557                                         }
558                                 }
559                                 break;
560
561                         default:
562                                 break;
563                         }
564                 }
565                 break;
566
567         default:
568                 break;
569         }
570
571         if ((groupIndex == ID_GROUP_DATE_AND_TIME_LOCAL_TIME) && (itemIndex == ID_ITEM_DATE_AND_TIME_DATE_AND_TIME))
572         {
573                 pItem->Construct(Dimension(itemWidth, H_TIME_FIELD), style);
574                 pItem->SetBackgroundColor(COLOR_BG_GROUP_ITEM_DEFAULT);
575
576                 bool hourFormat = false;
577
578                 EditDate* pEditDate = new (std::nothrow) EditDate();
579                 pEditDate->Construct(Point(0, 0), itemMainText);
580                 pEditDate->SetCurrentDate();
581
582                 int minYear = MIN_YEAR;
583                 int maxYear = MAX_YEAR;
584
585                 if (pEditDate->GetYear() < MIN_YEAR)
586                 {
587                         minYear = pEditDate->GetYear();
588                 }
589
590                 if (pEditDate->GetYear() > MAX_YEAR)
591                 {
592                         maxYear = pEditDate->GetYear();
593                 }
594
595                 pEditDate->SetYearRange(minYear, maxYear);
596                 pEditDate->AddDateChangeEventListener(*this);
597                 pEditDate->SetName(EDIT_DATE_CONTROL);
598
599                 pItem->AddControl(pEditDate);
600
601                 EditTime* pEditTime = new (std::nothrow) EditTime();
602                 pEditTime->Construct(Point(pEditDate->GetWidth(), 0), L" ");
603                 pEditTime->SetCurrentTime();
604
605                 if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_24HOUR, hourFormat) == E_SUCCESS)
606                 {
607                         pEditTime->Set24HourNotationEnabled(hourFormat);
608                 }
609
610                 pEditTime->AddTimeChangeEventListener(*this);
611                 pEditTime->SetName(EDIT_TIME_CONTROL);
612
613                 pItem->AddControl(pEditTime);
614                 pItem->SetIndividualSelectionEnabled(pEditDate, true);
615                 pItem->SetIndividualSelectionEnabled(pEditTime, true);
616         }
617         else if (isSecondLine == true)
618         {
619                 ItemTypeTwoLine(itemMainRectangle, itemSubRectangle, fontSize);
620                 itemHeight = (itemMainRectangle.height + itemSubRectangle.height);
621
622                 RelativeLayout relativeLayout;
623                 relativeLayout.Construct();
624
625                 pItem->Construct(relativeLayout, Dimension(itemWidth, itemHeight), style);
626                 pItem->SetBackgroundColor(COLOR_BG_GROUP_ITEM_DEFAULT);
627
628                 pLabel = new (std::nothrow) Label();
629                 pLabel->Construct(itemMainRectangle, itemMainText);
630                 pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
631                 pLabel->SetTextConfig(fontSize, LABEL_TEXT_STYLE_NORMAL);
632                 pLabel->SetTextColor(COLOR_MAIN_TEXT);
633
634                 pItem->AddControl(pLabel);
635                 if (groupIndex == ID_GROUP_DATE_AND_TIME_FORMAT)
636                 {
637                         relativeLayout.SetMargin(*pLabel, itemMainRectangle.x, RELATIVE_LAYOUT_RIGHT_MARGIN_DETAIL_BUTTON, 0, 0);
638                 }
639                 else
640                 {
641                         relativeLayout.SetMargin(*pLabel, itemMainRectangle.x, RELATIVE_LAYOUT_RIGHT_MARGIN, 0, 0);
642                 }
643                 relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_LEFT_TO_LEFT);
644                 relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_RIGHT_TO_RIGHT);
645
646                 if (groupIndex == ID_GROUP_DATE_AND_TIME_FORMAT)
647                 {
648                         Rectangle detailArrow;
649                         Bitmap* pBitmap = null;
650                         if (__pTableView->IsGroupExpanded(ID_GROUP_DATE_AND_TIME_FORMAT_LIST))
651                         {
652                                 pBitmap = ResourceManager::GetBitmapN(IDB_DETAIL_BUTTON_EXPAND_OPENED);
653                         }
654                         else
655                         {
656                                 pBitmap = ResourceManager::GetBitmapN(IDB_DETAIL_BUTTON_EXPAND_CLOSED);
657                         }
658
659                         detailArrow = itemMainRectangle;
660                         detailArrow.y = itemMainRectangle.y + ((itemHeight - W_DETAIL_ARROW_BUTTON) / DIVIDE_BY_TWO);
661                         detailArrow.height = W_DETAIL_ARROW_BUTTON;
662                         detailArrow.width = W_DETAIL_ARROW_BUTTON;
663
664                         pLabel = new (std::nothrow) Label();
665                         pLabel->Construct(detailArrow, L"");
666
667                         pLabel->SetBackgroundBitmap(*pBitmap);
668
669                         pItem->AddControl(pLabel);
670                         relativeLayout.SetMargin(*pLabel, itemMainRectangle.x, RELATIVE_LAYOUT_RIGHT_MARGIN_DETAIL_ARROW_BUTTON, 0, 0);
671                         relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_RIGHT_TO_RIGHT);
672                 }
673
674                 pLabel = new (std::nothrow) Label();
675                 pLabel->Construct(itemSubRectangle, itemSubText);
676                 pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
677                 pLabel->SetTextVerticalAlignment(ALIGNMENT_TOP);
678                 pLabel->SetTextConfig(FONT_SIZE_SUB_TEXT, LABEL_TEXT_STYLE_NORMAL);
679                 pLabel->SetName(SUB_TEXT_CONTROL);
680                 if (isEnabled)
681                 {
682                         pLabel->SetTextColor(COLOR_SUB_TEXT);
683                 }
684                 else
685                 {
686                         pLabel->SetTextColor(COLOR_SUB_DISABLED_TEXT);
687                 }
688
689                 pItem->AddControl(pLabel);
690                 relativeLayout.SetMargin(*pLabel, itemSubRectangle.x, RELATIVE_LAYOUT_RIGHT_MARGIN, 0, 0);
691                 relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_LEFT_TO_LEFT);
692                 relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_RIGHT_TO_RIGHT);
693         }
694         else
695         {
696                 RelativeLayout relativeLayout;
697                 relativeLayout.Construct();
698
699                 pItem->Construct(relativeLayout, Dimension(itemWidth, itemHeight), style);
700                 pItem->SetBackgroundColor(COLOR_BG_GROUP_ITEM_DEFAULT);
701
702                 pLabel = new (std::nothrow) Label();
703                 pLabel->Construct(itemMainRectangle, itemMainText);
704                 pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
705                 pLabel->SetTextConfig(fontSize, LABEL_TEXT_STYLE_NORMAL);
706                 pLabel->SetTextColor(COLOR_MAIN_TEXT);
707
708                 pItem->AddControl(pLabel);
709
710                 switch (style)
711                 {
712                 case TABLE_VIEW_ANNEX_STYLE_RADIO:
713                         {
714                                 relativeLayout.SetMargin(*pLabel, RELATIVE_LAYOUT_LEFT_MARGIN, RELATIVE_LAYOUT_RIGHT_MARGIN, 0, 0);
715                         }
716                         break;
717
718                 case TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING:
719                         {
720                                 relativeLayout.SetMargin(*pLabel, itemMainRectangle.x, RELATIVE_LAYOUT_RIGHT_MARGIN_ONOFF_SLIDING, 0, 0);
721                         }
722                         break;
723
724                 default:
725                         {
726                                 relativeLayout.SetMargin(*pLabel, itemMainRectangle.x, RELATIVE_LAYOUT_RIGHT_MARGIN, 0, 0);
727                         }
728                         break;
729                 }
730
731                 relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_LEFT_TO_LEFT);
732                 relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_RIGHT_TO_RIGHT);
733         }
734
735         return pItem;
736 }
737
738 bool
739 DateTimeForm::DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem)
740 {
741         AppLogDebug("ENTER");
742
743         delete pItem;
744         pItem = null;
745
746         return true;
747 }
748
749 bool
750 DateTimeForm::DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem)
751 {
752         AppLogDebug("ENTER");
753
754         delete pItem;
755         pItem = null;   
756
757         return true;
758 }
759
760 void
761 DateTimeForm::OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status)
762 {
763         SceneManager* pSceneManager = SceneManager::GetInstance();
764         AppAssert(pSceneManager);
765
766         AppLogDebug("group[%d] index[%d]", groupIndex, itemIndex);
767
768         result r;
769
770         switch (groupIndex)
771         {
772         case ID_GROUP_DATE_AND_TIME_MAIN:
773                 {
774                         bool automaticUpdateStatus = tableView.IsItemChecked(groupIndex, itemIndex);
775
776                         if (status == TABLE_VIEW_ITEM_STATUS_SELECTED)
777                         {
778                                 automaticUpdateStatus = (!(automaticUpdateStatus));
779                         }
780
781                         r = SettingInfo::SetValue(SETTING_INFO_KEY_LOCALE_UPDATE_AUTO, automaticUpdateStatus);
782                         if (IsFailed(r))
783                         {
784                                 AppLogException("SetValue(locale.update.auto) failed(%s)", GetErrorMessage(r));
785                         }
786                         else
787                         {
788                                 tableView.SetItemChecked(groupIndex, itemIndex, automaticUpdateStatus);
789                                 tableView.SetItemEnabled(ID_GROUP_DATE_AND_TIME_LOCAL_TIME, ID_ITEM_DATE_AND_TIME_TIME_ZONE, !automaticUpdateStatus);
790                                 tableView.SetItemEnabled(ID_GROUP_DATE_AND_TIME_LOCAL_TIME, ID_ITEM_DATE_AND_TIME_DATE_AND_TIME, !automaticUpdateStatus);
791                                 tableView.RefreshAllItems();
792                         }
793                 }
794                 break;
795
796         case ID_GROUP_DATE_AND_TIME_LOCAL_TIME:
797                 {
798                         if (itemIndex == ID_ITEM_DATE_AND_TIME_TIME_ZONE)
799                         {
800                                 __pTableView->CollapseGroup(ID_GROUP_DATE_AND_TIME_FORMAT_LIST);
801                                 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_TIME_ZONE, SCENE_TRANSITION_ANIMATION_TYPE_LEFT));
802                         }
803                         else if (itemIndex == ID_ITEM_DATE_AND_TIME_DATE_AND_TIME)
804                         {
805                                 //TODO: make operation time and date
806                         }
807                 }
808                 break;
809
810         case ID_GROUP_DATE_AND_TIME_FORMAT:
811                 {
812                         AppLogDebug("ID_ITEM_DATE_AND_TIME_FORMAT_TIME_FORMAT Detail");
813
814                         if (tableView.IsGroupExpanded(ID_GROUP_DATE_AND_TIME_FORMAT_LIST) == true)
815                         {
816                                 tableView.CollapseGroup(ID_GROUP_DATE_AND_TIME_FORMAT_LIST);
817                         }
818                         else
819                         {
820                                 tableView.ExpandGroup(ID_GROUP_DATE_AND_TIME_FORMAT_LIST);
821                         }
822                         tableView.RefreshItem(groupIndex, itemIndex, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
823                         tableView.ScrollToItem(groupIndex, itemIndex);
824                 }
825                 break;
826
827         case ID_GROUP_DATE_AND_TIME_FIRST_DAY:
828                 {
829                         if (tableView.IsGroupExpanded(ID_GROUP_DATE_AND_TIME_FIRST_DAY_LIST) == true)
830                         {
831                                 tableView.CollapseGroup(ID_GROUP_DATE_AND_TIME_FIRST_DAY_LIST);
832                         }
833                         else
834                         {
835                                 tableView.ExpandGroup(ID_GROUP_DATE_AND_TIME_FIRST_DAY_LIST);
836                         }
837                 }
838                 break;
839
840         case ID_GROUP_DATE_AND_TIME_FIRST_DAY_LIST:
841                 {
842                         String firstDay;
843
844                         if (itemIndex == ID_ITEM_DATE_AND_TIME_FORMAT_FIRST_DAY_MONDAY)
845                         {
846                                 firstDay = L"Monday";
847                         }
848                         else
849                         {
850                                 firstDay = L"Sunday";
851                         }
852
853                         if (SettingInfo::SetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_FIRSTDAY, firstDay) != E_SUCCESS)
854                         {
855                                 AppLogDebug("SettingInfo::GetValue() fail(%s)", GetErrorMessage(GetLastResult()));
856                         }
857                 }
858                 break;
859
860         case ID_GROUP_DATE_AND_TIME_FORMAT_LIST:
861                 {
862                         bool timeFormat = false;
863
864                         switch (itemIndex)
865                         {
866                         case ID_ITEM_DATE_AND_TIME_FORMAT_12_HOURS:
867                                 {
868                                         timeFormat = false;
869                                         tableView.SetItemChecked(groupIndex, ID_ITEM_DATE_AND_TIME_FORMAT_12_HOURS, true);
870                                         tableView.SetItemChecked(groupIndex, ID_ITEM_DATE_AND_TIME_FORMAT_24_HOURS, false);
871                                 }
872                                 break;
873
874                         case ID_ITEM_DATE_AND_TIME_FORMAT_24_HOURS:
875                                 {
876                                         timeFormat = true;
877                                         tableView.SetItemChecked(groupIndex, ID_ITEM_DATE_AND_TIME_FORMAT_12_HOURS, false);
878                                         tableView.SetItemChecked(groupIndex, ID_ITEM_DATE_AND_TIME_FORMAT_24_HOURS, true);
879                                 }
880                                 break;
881
882                         default:
883                                 break;
884                         }
885
886                         if (SettingInfo::SetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_24HOUR, timeFormat) != E_SUCCESS)
887                         {
888                                 AppLogDebug("SettingInfo::GetValue() fail(%s)", GetErrorMessage(GetLastResult()));
889                         }
890
891                         tableView.RefreshAllItems();
892                 }
893                 break;
894
895         default:
896                 break;
897         }
898 }
899
900 void
901 DateTimeForm::OnDateChanged(const Tizen::Ui::Control& source, int year, int month, int day)
902 {
903         LocaleManager localeManager;
904         localeManager.Construct();
905         TimeZone timeZone = localeManager.GetSystemTimeZone();
906
907         DateTime wallTime;
908         DateTime utcTime;
909         SystemTime::GetCurrentTime(TIME_MODE_WALL, wallTime);
910
911         wallTime.SetValue(year, month, day, wallTime.GetHour(), wallTime.GetMinute(), wallTime.GetSecond());
912         utcTime =  timeZone.WallTimeToUtcTime(wallTime);
913
914         SystemTime::SetCurrentTime(utcTime);
915         DateTime currentDateTime;
916         SystemTime::GetCurrentTime(currentDateTime);
917         int interval = ONE_SECOND_TIME_INTERVAL;
918         interval *= (NO_OF_SECONDS - currentDateTime.GetSecond());
919         __pTimer->Cancel();
920         __pTimer->Start(interval);
921 }
922
923 void
924 DateTimeForm::OnDateChangeCanceled(const Tizen::Ui::Control& source)
925 {
926 }
927
928 void
929 DateTimeForm::OnTimeChanged(const Control& source, int hour, int minute)
930 {
931         LocaleManager localeManager;
932         localeManager.Construct();
933         TimeZone timeZone = localeManager.GetSystemTimeZone();
934
935         DateTime wallTime;
936         DateTime utcTime;
937         SystemTime::GetCurrentTime(TIME_MODE_WALL, wallTime);
938
939         wallTime.SetValue(wallTime.GetYear(), wallTime.GetMonth(), wallTime.GetDay(), hour, minute, 0);
940         utcTime =  timeZone.WallTimeToUtcTime(wallTime);
941
942         SystemTime::SetCurrentTime(utcTime);
943         __pTimer->Cancel();
944         __pTimer->Start(NO_OF_SECONDS * ONE_SECOND_TIME_INTERVAL);
945 }
946
947 void
948 DateTimeForm::OnTimeChangeCanceled(const Control& source)
949 {
950 }
951
952 int
953 DateTimeForm::GetDefaultGroupItemHeight(void)
954 {
955         return H_GROUP_INDEX_NO_TITLE_DEFAULT;
956 }
957
958 int
959 DateTimeForm::GetDefaultItemHeight(void)
960 {
961         return H_GROUP_ITEM_DEFAULT;
962 }
963
964 void
965 DateTimeForm::UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem)
966 {
967 }
968
969 void
970 DateTimeForm::UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
971 {
972         if (groupIndex == ID_GROUP_DATE_AND_TIME_LOCAL_TIME)
973         {
974                 if (itemIndex == ID_ITEM_DATE_AND_TIME_DATE_AND_TIME)
975                 {
976                         EditTime* pEditTime = static_cast<EditTime*>(pItem->GetControl(EDIT_TIME_CONTROL));
977                         if (pEditTime == null)
978                         {
979                                 AppLogDebug("pEditTime update Fail");
980                                 return;
981                         }
982                         bool hourFormat = false;
983                         if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_24HOUR, hourFormat) == E_SUCCESS)
984                         {
985                                 pEditTime->Set24HourNotationEnabled(hourFormat);
986                         }
987
988                         Rectangle editTimeRectangle = pEditTime->GetBounds();
989                         Rectangle itemRectangle = pItem->GetBounds();
990                         int pos = ((itemRectangle.width * RESIZE_RATE) / DIVIDE_BY_TEN);
991                         pEditTime->SetSize(pos, editTimeRectangle.height);
992                         pEditTime->SetPosition(pos, 0);
993                         pEditTime->SetCurrentTime();
994
995                         EditDate* pEditDate = static_cast<EditDate*>(pItem->GetControl(EDIT_DATE_CONTROL));
996                         if (pEditTime == null)
997                         {
998                                 AppLogDebug("pEditDate update Fail");
999                                 return;
1000                         }
1001                         pEditDate->SetCurrentDate();
1002                 }
1003                 else if (itemIndex == ID_ITEM_DATE_AND_TIME_TIME_ZONE)
1004                 {
1005                         Label* pLabelSub = static_cast<Label*>(pItem->GetControl(SUB_TEXT_CONTROL));
1006
1007                         if (__pTableView->IsItemEnabled(ID_GROUP_DATE_AND_TIME_LOCAL_TIME, ID_ITEM_DATE_AND_TIME_TIME_ZONE))
1008                         {
1009                                 pLabelSub->SetTextColor(COLOR_SUB_TEXT);
1010                         }
1011                         else
1012                         {
1013                                 pLabelSub->SetTextColor(COLOR_SUB_DISABLED_TEXT);
1014                         }
1015                 }
1016                 pItem->Invalidate(true);
1017         }
1018         else if (groupIndex == ID_GROUP_DATE_AND_TIME_FORMAT)
1019         {
1020                 String timeFormat;
1021                 Label* pLabelSecondLine = static_cast<Label*>(pItem->GetControl(SECOND_TEXT_ITEM));
1022                 Label* pLabelBitmap = static_cast<Label*>(pItem->GetControl(SECOND_CONTROL_ITEM));
1023                 Bitmap* pBitmap = null;
1024
1025                 if (__pTableView->IsGroupExpanded(ID_GROUP_DATE_AND_TIME_FORMAT_LIST))
1026                 {
1027                         pBitmap = ResourceManager::GetBitmapN(IDB_DETAIL_BUTTON_EXPAND_OPENED);
1028                 }
1029                 else
1030                 {
1031                         pBitmap = ResourceManager::GetBitmapN(IDB_DETAIL_BUTTON_EXPAND_CLOSED);
1032                 }
1033
1034                 bool hourFormat = false;
1035
1036                 if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_24HOUR, hourFormat) != E_SUCCESS)
1037                 {
1038                         AppLogDebug("SettingInfo::GetValue() fail(%s)", GetErrorMessage(GetLastResult()));
1039                 }
1040
1041                 if (hourFormat == 0)
1042                 {
1043                         timeFormat = ResourceManager::GetString(L"IDS_COM_BODY_12_HOURS");
1044                 }
1045                 else
1046                 {
1047                         timeFormat = ResourceManager::GetString(L"IDS_ST_BODY_24_HOURS");
1048                 }
1049
1050                 pLabelSecondLine->SetText(timeFormat);
1051                 pLabelSecondLine->Invalidate(false);
1052
1053                 pLabelBitmap->SetBackgroundBitmap(*pBitmap);
1054                 pLabelBitmap->Invalidate(false);
1055                 delete pBitmap;
1056         }
1057         pItem->Invalidate(false);
1058 }
1059
1060 void
1061 DateTimeForm::OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated)
1062 {
1063 }
1064
1065 void
1066 DateTimeForm::OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status)
1067 {
1068 }
1069
1070 void
1071 DateTimeForm::OnOrientationChanged(const Tizen::Ui::Control& source, Tizen::Ui::OrientationStatus orientationStatus)
1072 {
1073         BaseForm::OnOrientationChanged(source, orientationStatus);
1074         __pTableView->RefreshItem(ID_GROUP_DATE_AND_TIME_LOCAL_TIME, ID_ITEM_DATE_AND_TIME_DATE_AND_TIME, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
1075 }
1076
1077 void
1078 DateTimeForm::OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs)
1079 {
1080         if (requestId == REFRESH_REQUEST_EVENT)
1081         {
1082                 if (__pTableView)
1083                 {
1084                         bool hourFormat = false;
1085
1086                         if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_24HOUR, hourFormat) != E_SUCCESS)
1087                         {
1088                                 AppLogDebug("SettingInfo::GetValue() fail(%s)", GetErrorMessage(GetLastResult()));
1089                         }
1090
1091                         if (hourFormat == false)
1092                         {
1093                                 __pTableView->SetItemChecked(ID_GROUP_DATE_AND_TIME_FORMAT_LIST, ID_ITEM_DATE_AND_TIME_FORMAT_12_HOURS, true);
1094                                 __pTableView->SetItemChecked(ID_GROUP_DATE_AND_TIME_FORMAT_LIST, ID_ITEM_DATE_AND_TIME_FORMAT_24_HOURS, false);
1095                         }
1096                         else
1097                         {
1098                                 __pTableView->SetItemChecked(ID_GROUP_DATE_AND_TIME_FORMAT_LIST, ID_ITEM_DATE_AND_TIME_FORMAT_24_HOURS, true);
1099                                 __pTableView->SetItemChecked(ID_GROUP_DATE_AND_TIME_FORMAT_LIST, ID_ITEM_DATE_AND_TIME_FORMAT_12_HOURS, false);
1100                         }
1101                         __pTableView->RefreshAllItems();
1102                 }
1103                 if (pArgs)
1104                 {
1105                         pArgs->RemoveAll(true);
1106                         delete pArgs;
1107                 }
1108         }
1109 }
1110
1111 void
1112 DateTimeForm::OnTimerExpired(Timer& timer)
1113 {
1114         __pTableView->RefreshItem(ID_GROUP_DATE_AND_TIME_LOCAL_TIME, ID_ITEM_DATE_AND_TIME_DATE_AND_TIME, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
1115         __pTimer->Start(NO_OF_SECONDS * ONE_SECOND_TIME_INTERVAL);
1116 }