Applied latest source code
[apps/native/preloaded/Settings.git] / src / StLanguageAndRegionForm.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                StLanguageAndRegionForm.cpp
19  * @brief               This is the implementation file for LocaleForm class.
20  */
21
22 #include <FLocales.h>
23 #include "StLanguageAndRegionForm.h"
24 #include "StResourceManager.h"
25 #include "StSettingScenesList.h"
26 #include "StTypes.h"
27
28 using namespace Tizen::App;
29 using namespace Tizen::Base;
30 using namespace Tizen::Base::Collection;
31 using namespace Tizen::Base::Utility;
32 using namespace Tizen::Graphics;
33 using namespace Tizen::Locales;
34 using namespace Tizen::System;
35 using namespace Tizen::Ui;
36 using namespace Tizen::Ui::Controls;
37 using namespace Tizen::Ui::Scenes;
38
39 static const int ID_GROUP_LANGUAGE_AND_REGION_MAIN = 0;
40 static const int ID_GROUP_LANGUAGE_AND_REGION_MAIN_ITEM_COUNT = 2;
41 static const int ID_ITEM_LANGUAGE_AND_REGION_MAIN_DISPLAY_LANGUAGE = 0;
42 static const int ID_ITEM_LANGUAGE_AND_REGION_MAIN_REGION = 1;
43
44 static const int ID_GROUP_LANGUAGE_AND_REGION_MAIN_TEXT = 1;
45
46 static const int ID_GROUP_KEYBOARD = 2;
47 static const int ID_GROUP_KEYBOARD_ITEM_COUNT = 1;
48 static const int ID_GROUP_COUNT = 3;
49
50 static const int ID_GROUP_LANGUAGE_ITEM_COUNT = 51;
51 static const int FIRST_CONTROL = 0;
52 static const int SECOND_CONTROL = 1;
53 static const int REFRESH_GROUP_ITEM_INDEX = -1;
54 static const int BASE_FORM_DEFAULT_MARGIN = 40;
55
56 static const int NUMBER_TEXT_HEIGHT_GAP = 5;
57
58 static const long DEFAULT_INPUT_NUMBER = 123456789;
59
60 static const wchar_t* LABEL_0 = L"Label0";
61 static const wchar_t* LABEL_1 = L"Label1";
62 static const wchar_t* LABEL_LANGUAGE = L"Label_language";
63 static const wchar_t* LABEL_REGION = L"Label_region";
64
65 static const wchar_t* languageCode[ID_GROUP_LANGUAGE_ITEM_COUNT] =
66 {
67         L"ara_AE",
68         L"aze_AZ",
69         L"bul_BG",
70         L"cat_ES",
71         L"ces_CZ",
72         L"dan_DK",
73         L"deu_DE",
74         L"ell_GR",
75         L"eng_GB",
76         L"eng_PH",
77         L"eng_US",
78         L"est_EE",
79         L"eus_ES",
80         /*L"fas_AF",*/
81         L"fin_FI",
82         L"fra_CA",
83         L"fra_FR",
84         L"gle_IE",
85         L"glg_ES",
86         L"hin_IN",
87         L"hrv_HR",
88         L"hun_HU",
89         L"hye_AM",
90         L"isl_IS",
91         L"ita_IT",
92         L"jpn_JP",
93         L"kat_GE",
94         L"kaz_KZ",
95         L"kor_KR",
96         L"lav_LV",
97         L"lit_LT",
98         L"mkd_MK",
99         L"nld_NL",
100         L"nob_NO",
101         L"pol_PL",
102         L"por_BR",
103         L"por_PT",
104         L"ron_RO",
105         L"rus_RU",
106         L"slk_SK",
107         L"slv_SI",
108         L"spa_ES",
109         L"spa_MX",
110         L"srp_RS",
111         L"swe_SE",
112         /*L"tha_TH",*/
113         L"tur_TR",
114         L"ukr_UA",
115         /*L"urd_IN",*/
116         L"uzb_UZ",
117         L"zho_CN",
118         L"zho_HK",
119         L"zho_SG",
120         L"zho_TW"
121 };
122
123 LocaleForm::LocaleForm(void)
124         : __languageDataList(null)
125         , __isRunningAppControl(false)
126 {
127         __pLabel[0] = null;
128         __pLabel[1] = null;
129 }
130
131 LocaleForm::~LocaleForm(void)
132 {
133 }
134
135
136 void
137 LocaleForm::InitLanguageList(void)
138 {
139         int i = 0;
140         String key;
141         String displayName;
142         String data;
143
144         if (__languageDataList != null)
145         {
146                 delete __languageDataList;
147                 __languageDataList = null;
148         }
149
150         __languageDataList = new (std::nothrow) ArrayList(SingleObjectDeleter);
151         __languageDataList->Construct();
152
153         // ara_AE
154         data = L"";
155         key = languageCode[i++];
156         displayName = ResourceManager::GetString(L"IDS_IME_BODY_ARABIC");
157         data.Append(displayName + L"/" + key);
158         __languageDataList->Add(new (std::nothrow) String(data));
159
160         // aze_AZ
161         data = L"";
162         key = languageCode[i++];
163         displayName = ResourceManager::GetString(L"IDS_IME_BODY_LANG_AZERBAIJANI");
164         data.Append(displayName + L"/" + key);
165         __languageDataList->Add(new (std::nothrow) String(data));
166
167         // bul_BG
168         data = L"";
169         key = languageCode[i++];
170         displayName = ResourceManager::GetString(L"IDS_IME_BODY_LANG_BULGARIAN");
171         data.Append(displayName + L"/" + key);
172         __languageDataList->Add(new (std::nothrow) String(data));
173
174         // cat_ES
175         data = L"";
176         key = languageCode[i++];
177         displayName = ResourceManager::GetString(L"IDS_IME_BODY_LANG_CATALAN");
178         data.Append(displayName + L"/" + key);
179         __languageDataList->Add(new (std::nothrow) String(data));
180
181         // ces_CZ
182         data = L"";
183         key = languageCode[i++];
184         displayName = ResourceManager::GetString(L"IDS_IME_OPT_LANG_CZECH");
185         data.Append(displayName + L"/" + key);
186         __languageDataList->Add(new (std::nothrow) String(data));
187
188         // dan_DK
189         data = L"";
190         key = languageCode[i++];
191         displayName = ResourceManager::GetString(L"IDS_IME_OPT_LANG_DANISH");
192         data.Append(displayName + L"/" + key);
193         __languageDataList->Add(new (std::nothrow) String(data));
194
195         // deu_DE
196         data = L"";
197         key = languageCode[i++];
198         displayName = ResourceManager::GetString(L"IDS_IME_OPT_LANG_GERMAN");
199         data.Append(displayName + L"/" + key);
200         __languageDataList->Add(new (std::nothrow) String(data));
201
202         // ell_GR
203         data = L"";
204         key = languageCode[i++];
205         displayName = ResourceManager::GetString(L"IDS_IME_OPT_LANG_GREEK");
206         data.Append(displayName + L"/" + key);
207         __languageDataList->Add(new (std::nothrow) String(data));
208
209         // eng_GB
210         data = L"";
211         key = languageCode[i++];
212         displayName = ResourceManager::GetString(L"IDS_IME_BODY_LANG_ENGLISH_HUNITED_KINGDOM");
213         data.Append(displayName + L"/" + key);
214         __languageDataList->Add(new (std::nothrow) String(data));
215
216         // eng_PH
217         data = L"";
218         key = languageCode[i++];
219         displayName = ResourceManager::GetString(L"IDS_IME_OPT_LANG_ENGLISH");
220         displayName.Append(L" (");
221         displayName.Append(ResourceManager::GetString(L"IDS_WCL_BODY_PHILIPPINES"));
222         displayName.Append(L")");
223         data.Append(displayName + L"/" + key);
224         __languageDataList->Add(new (std::nothrow) String(data));
225
226         // eng_US
227         data = L"";
228         key = languageCode[i++];
229         displayName = ResourceManager::GetString(L"IDS_IME_BODY_LANG_ENGLISH_HUNITED_STATES");
230         data.Append(displayName + L"/" + key);
231         __languageDataList->Add(new (std::nothrow) String(data));
232
233         // est_EE
234         data = L"";
235         key = languageCode[i++];
236         displayName = ResourceManager::GetString(L"IDS_IME_POP_LANG_ESTONIAN");
237         data.Append(displayName + L"/" + key);
238         __languageDataList->Add(new (std::nothrow) String(data));
239
240         // eus_ES
241         data = L"";
242         key = languageCode[i++];
243         displayName = ResourceManager::GetString(L"IDS_IME_BODY_LANG_BASQUE");
244         data.Append(displayName + L"/" + key);
245         __languageDataList->Add(new (std::nothrow) String(data));
246 #if 0
247         // fas_AF
248         data = L"";
249         key = languageCode[i++];
250         displayName = ResourceManager::GetString(L"IDS_IME_BODY_FARSI");
251         data.Append(displayName + L"/" + key);
252         __languageDataList->Add(new (std::nothrow) String(data));
253 #endif
254         // fin_FI
255         data = L"";
256         key = languageCode[i++];
257         displayName = ResourceManager::GetString(L"IDS_IME_OPT_LANG_FINNISH");
258         data.Append(displayName + L"/" + key);
259         __languageDataList->Add(new (std::nothrow) String(data));
260
261         // fra_CA
262         data = L"";
263         key = languageCode[i++];
264         displayName = ResourceManager::GetString(L"IDS_IME_OPT_LANG_FRENCH");
265         displayName.Append(L" (");
266         displayName.Append(ResourceManager::GetString(L"IDS_WCL_BODY_CANADA"));
267         displayName.Append(L")");
268         data.Append(displayName + L"/" + key);
269         __languageDataList->Add(new (std::nothrow) String(data));
270
271         // fra_FR
272         data = L"";
273         key = languageCode[i++];
274         displayName = ResourceManager::GetString(L"IDS_IME_OPT_LANG_FRENCH");
275         data.Append(displayName + L"/" + key);
276         __languageDataList->Add(new (std::nothrow) String(data));
277
278         // gle_IE
279         data = L"";
280         key = languageCode[i++];
281         displayName = ResourceManager::GetString(L"IDS_IME_OPT_LANG_IRISH");
282         data.Append(displayName + L"/" + key);
283         __languageDataList->Add(new (std::nothrow) String(data));
284
285         // glg_ES
286         data = L"";
287         key = languageCode[i++];
288         displayName = ResourceManager::GetString(L"IDS_IME_BODY_LANG_GALICIAN");
289         data.Append(displayName + L"/" + key);
290         __languageDataList->Add(new (std::nothrow) String(data));
291
292         // hin_IN
293         data = L"";
294         key = languageCode[i++];
295         displayName = ResourceManager::GetString(L"IDS_IME_BODY_LANG_HINDI");
296         data.Append(displayName + L"/" + key);
297         __languageDataList->Add(new (std::nothrow) String(data));
298
299         // hrv_HR
300         data = L"";
301         key = languageCode[i++];
302         displayName = ResourceManager::GetString(L"IDS_IME_OPT_LANG_CROATIAN");
303         data.Append(displayName + L"/" + key);
304         __languageDataList->Add(new (std::nothrow) String(data));
305
306         // hun_HU
307         data = L"";
308         key = languageCode[i++];
309         displayName = ResourceManager::GetString(L"IDS_IME_OPT_LANG_HUNGARIAN");
310         data.Append(displayName + L"/" + key);
311         __languageDataList->Add(new (std::nothrow) String(data));
312
313         // hye_AM
314         data = L"";
315         key = languageCode[i++];
316         displayName = ResourceManager::GetString(L"IDS_IME_BODY_ARMENIAN");
317         data.Append(displayName + L"/" + key);
318         __languageDataList->Add(new (std::nothrow) String(data));
319
320         // isl_IS
321         data = L"";
322         key = languageCode[i++];
323         displayName = ResourceManager::GetString(L"IDS_IME_POP_LANG_ICELANDIC");
324         data.Append(displayName + L"/" + key);
325         __languageDataList->Add(new (std::nothrow) String(data));
326
327         // ita_IT
328         data = L"";
329         key = languageCode[i++];
330         displayName = ResourceManager::GetString(L"IDS_IME_POP_LANG_ITALIAN");
331         data.Append(displayName + L"/" + key);
332         __languageDataList->Add(new (std::nothrow) String(data));
333
334         // jpn_JP
335         data = L"";
336         key = languageCode[i++];
337         displayName = ResourceManager::GetString(L"IDS_IME_BODY_LANG_JAPANESE");
338         data.Append(displayName + L"/" + key);
339         __languageDataList->Add(new (std::nothrow) String(data));
340
341         // kat_GE
342         data = L"";
343         key = languageCode[i++];
344         displayName = ResourceManager::GetString(L"IDS_IME_BODY_LANG_GEORGIAN");
345         data.Append(displayName + L"/" + key);
346         __languageDataList->Add(new (std::nothrow) String(data));
347
348         // kaz_KZ
349         data = L"";
350         key = languageCode[i++];
351         displayName = ResourceManager::GetString(L"IDS_IME_OPT_LANG_KAZAKH");
352         data.Append(displayName + L"/" + key);
353         __languageDataList->Add(new (std::nothrow) String(data));
354
355         // kor_KR
356         data = L"";
357         key = languageCode[i++];
358         displayName = ResourceManager::GetString(L"IDS_IME_OPT_LANG_KOREAN");
359         data.Append(displayName + L"/" + key);
360         __languageDataList->Add(new (std::nothrow) String(data));
361
362         // lav_LV
363         data = L"";
364         key = languageCode[i++];
365         displayName = ResourceManager::GetString(L"IDS_IME_POP_LANG_LATVIAN");
366         data.Append(displayName + L"/" + key);
367         __languageDataList->Add(new (std::nothrow) String(data));
368
369         // lit_LT
370         data = L"";
371         key = languageCode[i++];
372         displayName = ResourceManager::GetString(L"IDS_IME_POP_LANG_LITHUANIAN");
373         data.Append(displayName + L"/" + key);
374         __languageDataList->Add(new (std::nothrow) String(data));
375
376         // mkd_MK
377         data = L"";
378         key = languageCode[i++];
379         displayName = ResourceManager::GetString(L"IDS_IME_POP_LANG_MACEDONIAN");
380         data.Append(displayName + L"/" + key);
381         __languageDataList->Add(new (std::nothrow) String(data));
382
383         // nld_NL
384         data = L"";
385         key = languageCode[i++];
386         displayName = ResourceManager::GetString(L"IDS_IME_OPT_LANG_DUTCH");
387         data.Append(displayName + L"/" + key);
388         __languageDataList->Add(new (std::nothrow) String(data));
389
390         // nob_NO
391         data = L"";
392         key = languageCode[i++];
393         displayName = ResourceManager::GetString(L"IDS_IME_POP_LANG_NORWEGIAN");
394         data.Append(displayName + L"/" + key);
395         __languageDataList->Add(new (std::nothrow) String(data));
396
397         // pol_PL
398         data = L"";
399         key = languageCode[i++];
400         displayName = ResourceManager::GetString(L"IDS_IME_OPT_LANG_POLISH");
401         data.Append(displayName + L"/" + key);
402         __languageDataList->Add(new (std::nothrow) String(data));
403
404         // por_BR
405         data = L"";
406         key = languageCode[i++];
407         displayName = ResourceManager::GetString(L"IDS_IME_POP_LANG_PORTUGUESE");
408         displayName.Append(L" (");
409         displayName.Append(ResourceManager::GetString(L"IDS_WCL_BODY_BRAZIL"));
410         displayName.Append(L")");
411         data.Append(displayName + L"/" + key);
412         __languageDataList->Add(new (std::nothrow) String(data));
413
414         // por_PT
415         data = L"";
416         key = languageCode[i++];
417         displayName = ResourceManager::GetString(L"IDS_IME_POP_LANG_PORTUGUESE");
418         data.Append(displayName + L"/" + key);
419         __languageDataList->Add(new (std::nothrow) String(data));
420
421         // ron_RO
422         data = L"";
423         key = languageCode[i++];
424         displayName = ResourceManager::GetString(L"IDS_IME_BODY_LANG_ROMANIAN");
425         data.Append(displayName + L"/" + key);
426         __languageDataList->Add(new (std::nothrow) String(data));
427
428         // rus_RU
429         data = L"";
430         key = languageCode[i++];
431         displayName = ResourceManager::GetString(L"IDS_IME_OPT_LANG_RUSSIAN");
432         data.Append(displayName + L"/" + key);
433         __languageDataList->Add(new (std::nothrow) String(data));
434
435         // slk_SK
436         data = L"";
437         key = languageCode[i++];
438         displayName = ResourceManager::GetString(L"IDS_IME_OPT_LANG_SLOVAK");
439         data.Append(displayName + L"/" + key);
440         __languageDataList->Add(new (std::nothrow) String(data));
441
442         // slv_SI
443         data = L"";
444         key = languageCode[i++];
445         displayName = ResourceManager::GetString(L"IDS_IME_POP_LANG_SLOVENIAN");
446         data.Append(displayName + L"/" + key);
447         __languageDataList->Add(new (std::nothrow) String(data));
448
449         // spa_ES
450         data = L"";
451         key = languageCode[i++];
452         displayName = ResourceManager::GetString(L"IDS_IME_OPT_LANG_SPANISH");
453         data.Append(displayName + L"/" + key);
454         __languageDataList->Add(new (std::nothrow) String(data));
455
456         // spa_MX
457         data = L"";
458         key = languageCode[i++];
459         displayName = ResourceManager::GetString(L"IDS_IME_OPT_LANG_SPANISH");
460         displayName.Append(L" (");
461         displayName.Append(ResourceManager::GetString(L"IDS_WCL_BODY_MEXICO"));
462         displayName.Append(L")");
463         data.Append(displayName + L"/" + key);
464         __languageDataList->Add(new (std::nothrow) String(data));
465
466         // srp_RS
467         data = L"";
468         key = languageCode[i++];
469         displayName = ResourceManager::GetString(L"IDS_IME_POP_LANG_SERBIAN");
470         data.Append(displayName + L"/" + key);
471         __languageDataList->Add(new (std::nothrow) String(data));
472
473         // swe_SE
474         data = L"";
475         key = languageCode[i++];
476         displayName = ResourceManager::GetString(L"IDS_IME_POP_LANG_SWEDISH");
477         data.Append(displayName + L"/" + key);
478         __languageDataList->Add(new (std::nothrow) String(data));
479 #if 0
480         // tha_TH
481         data = L"";
482         key = languageCode[i++];
483         displayName = ResourceManager::GetString(L"IDS_IME_BODY_THAI");
484         data.Append(displayName + L"/" + key);
485         __languageDataList->Add(new (std::nothrow) String(data));
486 #endif
487         // tur_TR
488         data = L"";
489         key = languageCode[i++];
490         displayName = ResourceManager::GetString(L"IDS_IME_OPT_LANG_TURKISH");
491         data.Append(displayName + L"/" + key);
492         __languageDataList->Add(new (std::nothrow) String(data));
493
494         // ukr_UA
495         data = L"";
496         key = languageCode[i++];
497         displayName = ResourceManager::GetString(L"IDS_IME_OPT_LANG_UKRAINIAN");
498         data.Append(displayName + L"/" + key);
499         __languageDataList->Add(new (std::nothrow) String(data));
500 #if 0
501         // urd_IN
502         data = L"";
503         key = languageCode[i++];
504         displayName = ResourceManager::GetString(L"IDS_IME_BODY_URDU");
505         data.Append(displayName + L"/" + key);
506         __languageDataList->Add(new (std::nothrow) String(data));
507 #endif
508         // uzb_UZ
509         data = L"";
510         key = languageCode[i++];
511         displayName = ResourceManager::GetString(L"IDS_IME_BODY_UZBEK");
512         data.Append(displayName + L"/" + key);
513         __languageDataList->Add(new (std::nothrow) String(data));
514
515         // zho_CN
516         data = L"";
517         key = languageCode[i++];
518         displayName = ResourceManager::GetString(L"IDS_IME_BODY_CHINESE_SIMPLIFIED");
519         data.Append(displayName + L"/" + key);
520         __languageDataList->Add(new (std::nothrow) String(data));
521
522         // zho_HK
523         data = L"";
524         key = languageCode[i++];
525         displayName = ResourceManager::GetString(L"IDS_IME_BODY_CHINESE_TRADITIONAL_HONGKONG");
526         data.Append(displayName + L"/" + key);
527         __languageDataList->Add(new (std::nothrow) String(data));
528
529         // zho_SG
530         data = L"";
531         key = languageCode[i++];
532         displayName = ResourceManager::GetString(L"IDS_IME_BODY_CHINESE_SINGAPORE");
533         data.Append(displayName + L"/" + key);
534         __languageDataList->Add(new (std::nothrow) String(data));
535
536         // zho_TW
537         data = L"";
538         key = languageCode[i++];
539         displayName = ResourceManager::GetString(L"IDS_IME_BODY_CHINESE_TRADITIONAL_TAIWAN");
540         data.Append(displayName + L"/" + key);
541         __languageDataList->Add(new (std::nothrow) String(data));
542 }
543
544 void
545 LocaleForm::CreateFooter(void)
546 {
547         Footer* pFooter = GetFooter();
548         AppAssert(pFooter);
549
550         pFooter->SetStyle(FOOTER_STYLE_BUTTON_TEXT);
551         pFooter->AddActionEventListener(*this);
552
553         SetFormBackEventListener(this);
554 }
555
556 result
557 LocaleForm::OnInitializing(void)
558 {
559         InitLanguageList();
560         CreateHeader(ResourceManager::GetString(L"IDS_ST_BODY_LANGUAGE_AND_KEYBOARD"));
561         CreateTableView();
562         __pTableView->UpdateTableView();
563         AppLogDebug("ENTER");
564
565         return E_SUCCESS;
566 }
567
568 result
569 LocaleForm::OnTerminating(void)
570 {
571         __pTableView = null;
572
573         RemoveFocusEventListener(*this);
574         SetFormBackEventListener(null);
575         return E_SUCCESS;
576 }
577
578 void
579 LocaleForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
580 {
581         AppLog("Enter");
582         Header* pHeader = GetHeader();
583         pHeader->SetTitleText(ResourceManager::GetString(L"IDS_ST_BODY_LANGUAGE_AND_KEYBOARD"));
584
585         if (previousSceneId.Equals(IDSCN_LOCALE_LANGUAGE, false) || previousSceneId.Equals(IDSCN_LOCALE_REGION, false))
586         {
587                 InitLanguageList();
588                 __pTableView->Draw();
589                 RefreshTableViewItem();
590         }
591 }
592
593 void
594 LocaleForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
595 {
596 }
597
598 void
599 LocaleForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
600 {
601         if (__isRunningAppControl)
602         {
603                 AppLogDebug("busy status");
604                 return;
605         }
606         SceneManager* pSceneManager = SceneManager::GetInstance();
607         AppAssert(pSceneManager);
608
609         pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT), null);
610 }
611
612 int
613 LocaleForm::GetGroupCount(void)
614 {
615         AppLogDebug("ENTER");
616         return ID_GROUP_COUNT;
617 }
618
619 int
620 LocaleForm::GetItemCount(int groupIndex)
621 {
622         int itemCount = 0;
623
624         switch (groupIndex)
625         {
626         case ID_GROUP_LANGUAGE_AND_REGION_MAIN:
627                 {
628                         itemCount = ID_GROUP_LANGUAGE_AND_REGION_MAIN_ITEM_COUNT;
629                 }
630                 break;
631
632         case ID_GROUP_KEYBOARD:
633                 {
634                         itemCount = ID_GROUP_KEYBOARD_ITEM_COUNT;
635                 }
636                 break;
637
638         default:
639                 break;
640         }
641         AppLogDebug("GetItemCount %d", itemCount);
642
643         return itemCount;
644 }
645
646 TableViewGroupItem*
647 LocaleForm::CreateGroupItem(int groupIndex, int itemWidth)
648 {
649         AppLogDebug("ENTER");
650         itemWidth = GetClientAreaBounds().width;
651
652         int itemHeight = 0;
653         int yItemOffset = H_GROUP_INDEX_HELP_TEXT_TOP_GAP;
654         LabelTextStyle style = LABEL_TEXT_STYLE_NORMAL;
655         Rectangle itemMainRectangle;
656         String groupText;
657         String dateText;
658         String numberText;
659         String timeText;
660         Label* pLabel = null;
661         int fontSize = GetFontSize();
662         int tempHeight = 0;
663         const wchar_t LRE = 0x202A;
664         const wchar_t PDF = 0x202C;
665         TableViewGroupItem* pItem = new (std::nothrow) TableViewGroupItem();
666
667         switch (groupIndex)
668         {
669         case ID_GROUP_LANGUAGE_AND_REGION_MAIN_TEXT:
670                 {
671                         String formattedString;
672                         String numberFormat;
673                         long inputNumber = DEFAULT_INPUT_NUMBER;
674
675                         LocaleManager localeManager;
676                         localeManager.Construct();
677
678                         Locale systemLocale = localeManager.GetSystemLocale();
679                         NumberFormatter* pNumberFormatter = NumberFormatter::CreateCurrencyFormatterN(systemLocale);
680                         DateTimeFormatter* pDateFormatter = DateTimeFormatter::CreateDateFormatterN(systemLocale);
681
682                         DateTime dateTime;
683                         SystemTime::GetCurrentTime(TIME_MODE_WALL, dateTime);
684
685                         groupText = ResourceManager::GetString(L"IDS_ST_BODY_REGIONAL_EXAMPLE");
686                         dateText = ResourceManager::GetString(L"IDS_ST_BODY_DATE");
687                         numberText = ResourceManager::GetString(L"IDS_ST_BODY_NUMBER");
688                         timeText = ResourceManager::GetString(L"IDS_COM_BODY_TIME");
689
690                         if (pDateFormatter)
691                         {
692                                 tempHeight = GetHeightForStringArea(groupText, itemWidth - X_GROUP_ITEM_DEFAULT_LABEL, fontSize);
693                                 itemHeight += tempHeight;
694                                 String localPattern;
695                                 if (SettingInfo::GetValue(L"http://tizen.org/setting/locale.date.format",localPattern) == E_SUCCESS)
696                                 {
697                                         pDateFormatter->ApplyPattern(localPattern);
698                                 }
699                                 else
700                                 {
701                                         pDateFormatter->ApplyPattern("EEE, MMM dd, yyyy");
702                                 }
703
704                                 pDateFormatter->Format(dateTime, formattedString);
705                                 formattedString = dateText + L" : " + LRE + formattedString + PDF;
706                                 groupText.Insert(L"\n" + formattedString, groupText.GetLength());
707                                 tempHeight = GetHeightForStringArea(formattedString, itemWidth - X_GROUP_ITEM_DEFAULT_LABEL, fontSize);
708                                 itemHeight += tempHeight;
709                                 formattedString.Remove(0, formattedString.GetLength());
710
711                                 bool timeFormat = false;
712                                 pDateFormatter->ApplyPattern("hh:mm aa");
713                                 if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_24HOUR, timeFormat) == E_SUCCESS)
714                                 {
715                                         if (timeFormat == true)
716                                         {
717                                                 pDateFormatter->ApplyPattern("HH:mm");
718                                         }
719                                 }
720                                 pDateFormatter->Format(dateTime, formattedString);
721                                 formattedString = timeText + L" : " + LRE + formattedString + PDF;
722                                 groupText.Insert(L"\n" + formattedString, groupText.GetLength());
723                                 tempHeight = GetHeightForStringArea(formattedString, itemWidth - X_GROUP_ITEM_DEFAULT_LABEL, fontSize);
724                                 itemHeight += tempHeight;
725                                 formattedString.Remove(0, formattedString.GetLength());
726
727                                 pNumberFormatter->Format(inputNumber, formattedString);
728                                 formattedString = numberText + L" : " + LRE + formattedString + PDF;
729                                 groupText.Insert(L"\n" + formattedString, groupText.GetLength());
730                                 tempHeight = GetHeightForStringArea(formattedString, itemWidth - X_GROUP_ITEM_DEFAULT_LABEL, fontSize);
731                                 itemHeight += tempHeight;
732                         }
733                         yItemOffset = H_GROUP_INDEX_HELP_TEXT_TOP_GAP / DIVIDE_BY_TWO;
734                 }
735                 break;
736
737         default:
738                 {
739                         yItemOffset = 0;
740                         itemHeight = 0;
741                 }
742                 break;
743         }
744
745         itemMainRectangle.x = X_GROUP_ITEM_DEFAULT_LABEL;
746         itemMainRectangle.y = yItemOffset;
747         itemMainRectangle.width = itemWidth;
748         itemMainRectangle.height = itemHeight;
749
750         RelativeLayout relativeLayout;
751         relativeLayout.Construct();
752
753         pItem->Construct(relativeLayout, Dimension(itemWidth, itemHeight));
754         pItem->SetBackgroundColor(COLOR_BG_GROUP_INDEX_DEFAULT);
755
756         pLabel = new (std::nothrow) Label();
757         pLabel->Construct(itemMainRectangle, groupText);
758         pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
759         pLabel->SetTextVerticalAlignment(ALIGNMENT_TOP);
760         pLabel->SetTextConfig(fontSize, style);
761         pLabel->SetTextColor(COLOR_HELP_TEXT_TYPE_01);
762
763         pItem->AddControl(pLabel);
764         relativeLayout.SetMargin(*pLabel, itemMainRectangle.x, 0, 0, 0);
765         relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_LEFT_TO_LEFT);
766         relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_RIGHT_TO_RIGHT);
767         pItem->SetEnabled(false);
768
769         return pItem;
770 }
771
772 TableViewItem*
773 LocaleForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
774 {
775         AppLogDebug("group[%d] index[%d]", groupIndex, itemIndex);
776         bool isItemSubText = false;
777         Rectangle itemMainRectangle;
778         Rectangle itemSubRectangle;
779         TableViewAnnexStyle style = TABLE_VIEW_ANNEX_STYLE_NORMAL;
780         String itemMainText;
781         String itemSubText;
782         String name = LABEL_NAME;
783         int index = 0;
784         String systemLocaleString;
785         Label* pLabel = null;
786         int fontSize = GetFontSize();
787         LocaleManager localeManager;
788         localeManager.Construct();
789         Locale locale = localeManager.GetSystemLocale();
790         int itemHeight = H_GROUP_ITEM_DEFAULT;
791
792         switch (groupIndex)
793         {
794         case ID_GROUP_LANGUAGE_AND_REGION_MAIN:
795                 {
796                         isItemSubText = true;
797
798                         switch (itemIndex)
799                         {
800                         case ID_ITEM_LANGUAGE_AND_REGION_MAIN_DISPLAY_LANGUAGE:
801                                 {
802                                         itemMainText = ResourceManager::GetString(L"IDS_ST_HEADER_DISPLAY_LANGUAGE");
803                                         if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_LANGUAGE, itemSubText) != E_SUCCESS)
804                                         {
805                                                 AppLogDebug("SettingInfo::GetValue() fail(%s)", GetErrorMessage(GetLastResult()));
806                                         }
807                                         else
808                                         {
809                                                 for (int i = 0; i< ID_GROUP_LANGUAGE_ITEM_COUNT; i++)
810                                                 {
811                                                         if (itemSubText.Equals(languageCode[i], false))
812                                                         {
813                                                                 String* pKey = static_cast<String*>(__languageDataList->GetAt(i));
814
815                                                                 StringTokenizer stringTokenizer(*pKey, L"/");
816                                                                 stringTokenizer.GetNextToken(itemSubText);
817                                                                 break;
818                                                         }
819                                                 }
820                                         }
821                                 }
822                                 break;
823
824                         case ID_ITEM_LANGUAGE_AND_REGION_MAIN_REGION:
825                                 {
826                                         itemMainText = ResourceManager::GetString(L"IDS_ST_BODY_REGION");
827                                         String localeLanguage;
828                                         if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_LANGUAGE, localeLanguage) != E_SUCCESS)
829                                         {
830                                                 AppLogDebug("GetValue: SETTING_INFO_KEY_LOCALE_LANGUAGE failed [%s]", GetErrorMessage(GetLastResult()));
831                                                 localeLanguage = L"eng_GB";
832                                         }
833
834                                         LanguageCode langCode = LANGUAGE_INVALID;
835                                         CountryCode countryCode = COUNTRY_INVALID;
836                                         StringTokenizer strTok(localeLanguage, L"_");
837                                         String token;
838
839                                         if (strTok.HasMoreTokens())
840                                         {
841                                                 strTok.GetNextToken(token);
842                                                 langCode = Locale::StringToLanguageCode(token);
843                                         }
844
845                                         if (strTok.HasMoreTokens())
846                                         {
847                                                 strTok.GetNextToken(token);
848                                                 countryCode = Locale::StringToCountryCode(token);
849                                         }
850
851                                         Locale currentLocale(langCode, countryCode);
852
853                                         locale.GetLanguageName(currentLocale, systemLocaleString);
854                                         itemSubText.Append(systemLocaleString + L" (");
855                                         systemLocaleString.Remove(0, systemLocaleString.GetLength());
856
857                                         locale.GetCountryName(currentLocale, systemLocaleString);
858                                         itemSubText.Append(systemLocaleString + L")");
859                                         systemLocaleString.Remove(0, systemLocaleString.GetLength());
860                                 }
861                                 break;
862
863                         default:
864                                 break;
865                         }
866                 }
867                 break;
868
869         case ID_GROUP_KEYBOARD:
870                 {
871                         itemMainText = ResourceManager::GetString(L"IDS_ST_BODY_KEYBOARD");
872                 }
873                 break;
874
875         default:
876                 break;
877         }
878
879         ItemTypeOneLine(itemMainRectangle);
880
881         TableViewItem* pItem = new (std::nothrow) TableViewItem();
882
883         if (isItemSubText == true)
884         {
885                 ItemTypeTwoLine(itemMainRectangle, itemSubRectangle, fontSize);
886                 itemHeight = (itemMainRectangle.height + itemSubRectangle.height);
887                 RelativeLayout relativeLayout;
888                 relativeLayout.Construct();
889                 pItem->Construct(relativeLayout, Dimension(itemWidth, itemHeight), style);
890                 pItem->SetBackgroundColor(COLOR_BG_GROUP_ITEM_DEFAULT);
891
892                 name.Append(itemIndex);
893                 pLabel = new (std::nothrow) Label();
894                 pLabel->Construct(itemMainRectangle, itemMainText);
895                 pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
896                 pLabel->SetTextConfig(fontSize, LABEL_TEXT_STYLE_NORMAL);
897                 pLabel->SetTextColor(COLOR_MAIN_TEXT);
898                 pLabel->SetName(name);
899                 pLabel->AddTouchEventListener(*this);
900
901                 pItem->AddControl(pLabel);
902                 relativeLayout.SetMargin(*pLabel, 0, RELATIVE_LAYOUT_RIGHT_MARGIN, 0, 0);
903                 relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_LEFT_TO_LEFT);
904                 relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_RIGHT_TO_RIGHT);
905
906                 if (itemIndex == 0)
907                 {
908                         index = 0;
909                         name = LABEL_LANGUAGE;
910                         pItem->SetName(ITEM_NAME_1);
911                 }
912                 else if (itemIndex == 1)
913                 {
914                         index = 1;
915                         name = LABEL_REGION;
916                         pItem->SetName(ITEM_NAME_2);
917                 }
918                 __pLabel[index] = new (std::nothrow) Label();
919                 __pLabel[index]->Construct(itemSubRectangle, itemSubText);
920                 __pLabel[index]->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
921                 __pLabel[index]->SetTextVerticalAlignment(ALIGNMENT_TOP);
922                 __pLabel[index]->SetTextConfig(FONT_SIZE_SUB_TEXT, LABEL_TEXT_STYLE_NORMAL);
923                 __pLabel[index]->SetTextColor(COLOR_SUB_TEXT);
924                 __pLabel[index]->SetName(name);
925                 __pLabel[index]->AddTouchEventListener(*this);
926                 __pLabel[index]->AddFocusEventListener(*this);
927
928                 pItem->AddControl(__pLabel[index]);
929                 pItem->AddKeyEventListener(*this);
930                 pItem->AddFocusEventListener(*this);
931                 relativeLayout.SetMargin(*__pLabel[index], 0, RELATIVE_LAYOUT_RIGHT_MARGIN, 0, 0);
932                 relativeLayout.SetRelation(*__pLabel[index], pItem, RECT_EDGE_RELATION_LEFT_TO_LEFT);
933                 relativeLayout.SetRelation(*__pLabel[index], pItem, RECT_EDGE_RELATION_RIGHT_TO_RIGHT);
934         }
935         else
936         {
937                 RelativeLayout relativeLayout;
938                 relativeLayout.Construct();
939
940                 pItem->Construct(relativeLayout, Dimension(W_GROUP_ITEM_DEFAULT, H_GROUP_ITEM_DEFAULT), style);
941                 pItem->SetBackgroundColor(COLOR_BG_GROUP_ITEM_DEFAULT);
942
943                 pLabel = new (std::nothrow) Label();
944                 pLabel->Construct(itemMainRectangle, itemMainText);
945                 pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
946                 pLabel->SetTextConfig(fontSize, LABEL_TEXT_STYLE_NORMAL);
947                 pLabel->SetTextColor(COLOR_MAIN_TEXT);
948
949                 pItem->AddControl(pLabel);
950                 relativeLayout.SetMargin(*pLabel, 0, 0, 0, 0);
951                 relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_LEFT_TO_LEFT);
952                 relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_RIGHT_TO_RIGHT);
953         }
954
955         return pItem;
956 }
957
958 bool
959 LocaleForm::DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem)
960 {
961         AppLogDebug("ENTER");
962
963         delete pItem;
964         pItem = null;
965
966         return true;
967 }
968
969 bool
970 LocaleForm::DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem)
971 {
972         AppLogDebug("ENTER");
973
974         delete pItem;
975         pItem = null;
976
977         return true;
978 }
979
980 void
981 LocaleForm::OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status)
982 {
983         if (__isRunningAppControl == true)
984         {
985                 AppLog("busy status");
986                 return;
987         }
988
989         SceneManager* pSceneManager = SceneManager::GetInstance();
990         AppAssert(pSceneManager);
991
992         AppLogDebug("group[%d] index[%d]", groupIndex, itemIndex);
993
994         switch (groupIndex)
995         {
996         case ID_GROUP_LANGUAGE_AND_REGION_MAIN:
997                 {
998                         if (itemIndex == ID_ITEM_LANGUAGE_AND_REGION_MAIN_DISPLAY_LANGUAGE)
999                         {
1000                                 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_LOCALE_LANGUAGE, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), __languageDataList);
1001                         }
1002                         if (itemIndex == ID_ITEM_LANGUAGE_AND_REGION_MAIN_REGION)
1003                         {
1004                                 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_LOCALE_REGION, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), null);
1005                         }
1006                 }
1007                 break;
1008
1009         case ID_GROUP_KEYBOARD:
1010                 {
1011                         #if 0
1012                         pSceneManager->GoForward(ForwardSceneTransition(IDSCN_KEYBOARD, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), null);
1013                         #else
1014                         FocusManager* pFocusManager = Tizen::Ui::FocusManager::GetInstance();
1015                         Control* __pFocusedControl = pFocusManager->GetCurrentFocusOwner();
1016                         __pFocusedControl->AddFocusEventListener(*this);
1017                         if (AppControl::FindAndStart(L"http://tizen.org/appcontrol/operation/setting/ime", null, null, null, null, null) == E_SUCCESS)
1018                         {
1019                                 __isRunningAppControl = true;
1020                         }
1021                         #endif
1022                 }
1023                 break;
1024
1025         default:
1026                 break;
1027         }
1028 }
1029
1030 int
1031 LocaleForm::GetDefaultGroupItemHeight(void)
1032 {
1033         return H_GROUP_INDEX_NO_TITLE_DEFAULT;
1034 }
1035
1036 int
1037 LocaleForm::GetDefaultItemHeight(void)
1038 {
1039         return H_GROUP_ITEM_DEFAULT;
1040 }
1041
1042 void
1043 LocaleForm::UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem)
1044 {
1045         switch (groupIndex)
1046         {
1047         case ID_GROUP_LANGUAGE_AND_REGION_MAIN_TEXT:
1048                 {
1049                         Rectangle pItemBounds = pItem->GetBounds();
1050                         Rectangle pBounds = GetClientAreaBounds();
1051                         Label* pGroupLabel = static_cast<Label*>(pItem->GetControl(FIRST_CONTROL));
1052                         int labelWidth = pItemBounds.width;
1053
1054                         String groupText;
1055                         String timeText;
1056                         String dateText;
1057                         String numberText;
1058                         String formattedString;
1059                         String numberFormat;
1060                         long inputNumber = DEFAULT_INPUT_NUMBER;
1061                         int tempHeight = 0;
1062                         int itemHeight = 0;
1063                         int fontSize = GetFontSize();
1064
1065                         LocaleManager localeManager;
1066                         localeManager.Construct();
1067
1068                         Locale systemLocale = localeManager.GetSystemLocale();
1069                         NumberFormatter* pNumberFormatter = NumberFormatter::CreateCurrencyFormatterN(systemLocale);
1070                         DateTimeFormatter* pDateFormatter = DateTimeFormatter::CreateDateFormatterN(systemLocale);
1071
1072                         DateTime dateTime;
1073                         SystemTime::GetCurrentTime(TIME_MODE_WALL, dateTime);
1074
1075                         groupText = ResourceManager::GetString(L"IDS_ST_BODY_REGIONAL_EXAMPLE");
1076                         dateText = ResourceManager::GetString(L"IDS_ST_BODY_DATE");
1077                         numberText = ResourceManager::GetString(L"IDS_ST_BODY_NUMBER");
1078                         timeText = ResourceManager::GetString(L"IDS_COM_BODY_TIME");
1079
1080                         if (pDateFormatter)
1081                         {
1082                                 const wchar_t LRE = 0x202A;
1083                                 const wchar_t PDF = 0x202C;
1084                                 tempHeight = GetHeightForStringArea(groupText, labelWidth - X_GROUP_ITEM_DEFAULT_LABEL, fontSize);
1085                                 itemHeight += tempHeight;
1086                                 String localPattern;
1087                                 if (SettingInfo::GetValue(L"http://tizen.org/setting/locale.date.format",localPattern) == E_SUCCESS)
1088                                 {
1089                                         pDateFormatter->ApplyPattern(localPattern);
1090                                 }
1091                                 else
1092                                 {
1093                                         pDateFormatter->ApplyPattern("EEE, MMM dd, yyyy");
1094                                 }
1095                                 pDateFormatter->Format(dateTime, formattedString);
1096                                 formattedString = dateText + L" : "  + LRE + formattedString  + PDF;
1097                                 groupText.Insert(L"\n" + formattedString, groupText.GetLength());
1098                                 tempHeight = GetHeightForStringArea(formattedString, labelWidth - X_GROUP_ITEM_DEFAULT_LABEL, fontSize);
1099                                 itemHeight += tempHeight;
1100                                 formattedString.Remove(0, formattedString.GetLength());
1101
1102                                 bool timeFormat = false;
1103                                 pDateFormatter->ApplyPattern("hh:mm aa");
1104                                 if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_TIME_FORMAT_24HOUR, timeFormat) == E_SUCCESS)
1105                                 {
1106                                         if (timeFormat == true)
1107                                         {
1108                                                 pDateFormatter->ApplyPattern("HH:mm");
1109                                         }
1110                                 }
1111                                 pDateFormatter->Format(dateTime, formattedString);
1112                                 formattedString = timeText + L" : " + LRE + formattedString + PDF;
1113                                 groupText.Insert(L"\n" + formattedString, groupText.GetLength());
1114                                 tempHeight = GetHeightForStringArea(formattedString, labelWidth - X_GROUP_ITEM_DEFAULT_LABEL, fontSize);
1115                                 itemHeight += tempHeight;
1116                                 formattedString.Remove(0, formattedString.GetLength());
1117
1118                                 pNumberFormatter->Format(inputNumber, formattedString);
1119                                 formattedString = numberText + L" : " + LRE + formattedString + PDF;
1120                                 groupText.Insert(L"\n" + formattedString, groupText.GetLength());
1121                                 tempHeight = GetHeightForStringArea(formattedString, labelWidth - X_GROUP_ITEM_DEFAULT_LABEL, fontSize);
1122                                 itemHeight += tempHeight;
1123                         }
1124                         pItemBounds.height = itemHeight + NUMBER_TEXT_HEIGHT_GAP;
1125                         pItem->SetBounds(pItemBounds);
1126                         AppLogDebug("%d %d %d %d", pItemBounds.x, pItemBounds.y, pItemBounds.width, pItemBounds.height);
1127                         pItemBounds.y = H_GROUP_INDEX_HELP_TEXT_TOP_GAP;
1128                         pGroupLabel->SetBounds(Rectangle(pGroupLabel->GetBounds().x, pGroupLabel->GetBounds().y, pGroupLabel->GetBounds().width, itemHeight));
1129                         pGroupLabel->SetText(groupText);
1130                         pGroupLabel->SetTextConfig(fontSize, LABEL_TEXT_STYLE_NORMAL);
1131                         pGroupLabel->Invalidate(false);
1132                         pItem->Invalidate(false);
1133                 }
1134                 break;
1135
1136         default:
1137                 break;
1138         }
1139 }
1140
1141 void
1142 LocaleForm::UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
1143 {
1144         String firstLineText;
1145         String itemSubText;
1146
1147         Rectangle pItemBounds = pItem->GetBounds();
1148         Rectangle firstLineRect;
1149         Rectangle secondLineRect;
1150
1151         Label* pFirstLabel = null;
1152         Label* pSecondLabel = null;
1153
1154         int fontSize = GetFontSize();
1155
1156         switch (groupIndex)
1157         {
1158         case ID_GROUP_LANGUAGE_AND_REGION_MAIN:
1159                 {
1160                         pFirstLabel = static_cast<Label*>(pItem->GetControl(FIRST_CONTROL));
1161                         pSecondLabel = static_cast<Label*>(pItem->GetControl(SECOND_CONTROL));
1162
1163                         ItemTypeTwoLine(firstLineRect, secondLineRect, fontSize);
1164                         pItemBounds.height = (firstLineRect.height + secondLineRect.height);
1165
1166                         switch (itemIndex)
1167                         {
1168                         case ID_ITEM_LANGUAGE_AND_REGION_MAIN_DISPLAY_LANGUAGE:
1169                                 {
1170                                         firstLineText = ResourceManager::GetString(L"IDS_ST_HEADER_DISPLAY_LANGUAGE");
1171
1172                                         if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_LANGUAGE, itemSubText) != E_SUCCESS)
1173                                         {
1174                                                 AppLogDebug("SettingInfo::GetValue() fail(%s)", GetErrorMessage(GetLastResult()));
1175                                         }
1176                                         else
1177                                         {
1178                                                 for (int i = 0; i< ID_GROUP_LANGUAGE_ITEM_COUNT; i++)
1179                                                 {
1180                                                         if (itemSubText.Equals(languageCode[i], false))
1181                                                         {
1182                                                                 String* pKey = static_cast<String*>(__languageDataList->GetAt(i));
1183
1184                                                                 StringTokenizer stringTokenizer(*pKey, L"/");
1185                                                                 stringTokenizer.GetNextToken(itemSubText);
1186                                                                 break;
1187                                                         }
1188                                                 }
1189                                         }
1190                                         pItem->SetBounds(pItemBounds);
1191                                         pFirstLabel->SetText(firstLineText);
1192                                         pFirstLabel->SetTextConfig(fontSize, LABEL_TEXT_STYLE_NORMAL);
1193
1194                                         pSecondLabel->SetText(itemSubText);
1195                                         pSecondLabel->SetTextConfig(FONT_SIZE_SUB_TEXT, LABEL_TEXT_STYLE_NORMAL);
1196
1197                                         pFirstLabel->Invalidate(false);
1198                                         pSecondLabel->Invalidate(false);
1199                                         pItem->Invalidate(false);
1200                                 }
1201                                 break;
1202
1203                         case ID_ITEM_LANGUAGE_AND_REGION_MAIN_REGION:
1204                                 {
1205                                         LocaleManager localeManager;
1206                                         localeManager.Construct();
1207                                         Locale locale = localeManager.GetSystemLocale();
1208                                         String systemLocaleString;
1209
1210                                         firstLineText = ResourceManager::GetString(L"IDS_ST_BODY_REGION");
1211
1212                                         String localeLanguage;
1213                                         if (SettingInfo::GetValue(SETTING_INFO_KEY_LOCALE_LANGUAGE, localeLanguage) != E_SUCCESS)
1214                                         {
1215                                                 AppLogDebug("GetValue: SETTING_INFO_KEY_LOCALE_LANGUAGE failed [%s]", GetErrorMessage(GetLastResult()));
1216                                                 localeLanguage = L"eng_GB";
1217                                         }
1218
1219                                         LanguageCode langCode = LANGUAGE_INVALID;
1220                                         CountryCode countryCode = COUNTRY_INVALID;
1221                                         StringTokenizer strTok(localeLanguage, L"_");
1222                                         String token;
1223
1224                                         if (strTok.HasMoreTokens())
1225                                         {
1226                                                 strTok.GetNextToken(token);
1227                                                 langCode = Locale::StringToLanguageCode(token);
1228                                         }
1229
1230                                         if (strTok.HasMoreTokens())
1231                                         {
1232                                                 strTok.GetNextToken(token);
1233                                                 countryCode = Locale::StringToCountryCode(token);
1234                                         }
1235
1236                                         Locale currentLocale(langCode, countryCode);
1237
1238                                         locale.GetLanguageName(currentLocale, systemLocaleString);
1239                                         itemSubText.Append(systemLocaleString + L" (");
1240                                         systemLocaleString.Remove(0, systemLocaleString.GetLength());
1241
1242                                         locale.GetCountryName(currentLocale, systemLocaleString);
1243                                         itemSubText.Append(systemLocaleString + L")");
1244                                         systemLocaleString.Remove(0, systemLocaleString.GetLength());
1245
1246                                         pItem->SetBounds(pItemBounds);
1247                                         pFirstLabel->SetText(firstLineText);
1248                                         pFirstLabel->SetTextConfig(fontSize, LABEL_TEXT_STYLE_NORMAL);
1249
1250                                         pSecondLabel->SetText(itemSubText);
1251                                         pSecondLabel->SetTextConfig(FONT_SIZE_SUB_TEXT, LABEL_TEXT_STYLE_NORMAL);
1252
1253                                         pFirstLabel->Invalidate(false);
1254                                         pSecondLabel->Invalidate(false);
1255                                         pItem->Invalidate(false);
1256                                 }
1257                                 break;
1258
1259                         default:
1260                                 break;
1261                         }
1262                 }
1263                 break;
1264
1265         case ID_GROUP_KEYBOARD:
1266                 {
1267                         pFirstLabel = static_cast<Label*>(pItem->GetControl(FIRST_CONTROL));
1268
1269                         ItemTypeOneLine(firstLineRect);
1270                         pItemBounds.height = firstLineRect.height;
1271
1272                         firstLineText = ResourceManager::GetString(L"IDS_ST_BODY_KEYBOARD");
1273                         pItem->SetBounds(pItemBounds);
1274                         pFirstLabel->SetText(firstLineText);
1275                         pFirstLabel->SetTextConfig(fontSize, LABEL_TEXT_STYLE_NORMAL);
1276                         pFirstLabel->Invalidate(false);
1277                         pItem->Invalidate(false);
1278                 }
1279                 break;
1280
1281         default:
1282                 break;
1283         }
1284 }
1285
1286 void
1287 LocaleForm::OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated)
1288 {
1289 }
1290
1291 void
1292 LocaleForm::OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status)
1293 {
1294 }
1295
1296 void
1297 LocaleForm::RefreshTableViewGroupItem(int groupIndex)
1298 {
1299         int itemCount = __pTableView->GetItemCountAt(groupIndex);
1300
1301         for (int index = REFRESH_GROUP_ITEM_INDEX; index < itemCount; index++)
1302         {
1303                 __pTableView->RefreshItem(groupIndex, index, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
1304         }
1305 }
1306
1307 void
1308 LocaleForm::RefreshTableViewItem(void)
1309 {
1310         if (__pTableView == null)
1311         {
1312                 return;
1313         }
1314
1315         int groupCount = __pTableView->GetGroupCount();
1316
1317         for (int index = 0; index < groupCount; index++)
1318         {
1319                 RefreshTableViewGroupItem(index);
1320         }
1321 }
1322
1323 void
1324 LocaleForm::OnOrientationChanged(const Tizen::Ui::Control& source, Tizen::Ui::OrientationStatus orientationStatus)
1325 {
1326         RefreshTableViewItem();
1327 }
1328
1329 void
1330 LocaleForm::OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs)
1331 {
1332         if (requestId == REFRESH_REQUEST_EVENT)
1333         {
1334                 AppLog("Refresh");
1335                 __isRunningAppControl = false;
1336         }
1337 }
1338
1339 void
1340 LocaleForm::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
1341 {
1342         int index = 0;
1343         if (source.GetName() == LABEL_0 || source.GetName() == LABEL_LANGUAGE)
1344         {
1345                 index = 0;
1346         }
1347         else if (source.GetName() == LABEL_1 || source.GetName() == LABEL_REGION)
1348         {
1349                 index = 1;
1350         }
1351         __pLabel[index]->SetTextColor(COLOR_SUB_TEXT);
1352         __pLabel[index]->Invalidate(false);
1353 }
1354
1355 void
1356 LocaleForm::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
1357 {
1358         int index = 0;
1359         if (source.GetName() == LABEL_0 || source.GetName() == LABEL_LANGUAGE)
1360         {
1361                 index = 0;
1362         }
1363         else if (source.GetName() == LABEL_1 || source.GetName() == LABEL_REGION)
1364         {
1365                 index = 1;
1366         }
1367         __pLabel[index]->SetTextColor(Color::GetColor(COLOR_ID_WHITE));
1368         __pLabel[index]->Invalidate(false);
1369 }
1370
1371 void
1372 LocaleForm::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
1373 {
1374         int index = 0;
1375         if (source.GetName() == LABEL_0 || source.GetName() == LABEL_LANGUAGE)
1376         {
1377                 index = 0;
1378         }
1379         else if (source.GetName() == LABEL_1 || source.GetName() == LABEL_REGION)
1380         {
1381                 index = 1;
1382         }
1383         __pLabel[index]->SetTextColor(COLOR_SUB_TEXT);
1384         __pLabel[index]->Invalidate(false);
1385 }
1386
1387 void
1388 LocaleForm::OnTouchCanceled(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
1389 {
1390         int index = 0;
1391         if (source.GetName() == LABEL_0 || source.GetName() == LABEL_LANGUAGE)
1392         {
1393                 index = 0;
1394         }
1395         else if (source.GetName() == LABEL_1 || source.GetName() == LABEL_REGION)
1396         {
1397                 index = 1;
1398         }
1399         __pLabel[index]->SetTextColor(COLOR_SUB_TEXT);
1400         __pLabel[index]->Invalidate(false);
1401 }
1402
1403 void
1404 LocaleForm::OnFocusLost(const Tizen::Ui::Control& source)
1405 {
1406         AppLog("Enter");
1407         int index = 0;
1408
1409         if (source.GetName() == LABEL_0 || source.GetName() == LABEL_LANGUAGE || source.GetName() == ITEM_NAME_1)
1410         {
1411                 index = 0;
1412         }
1413
1414         else if (source.GetName() == LABEL_1 || source.GetName() == LABEL_REGION || source.GetName() == ITEM_NAME_2)
1415         {
1416                 index = 1;
1417         }
1418
1419         __pLabel[index]->SetTextColor(COLOR_SUB_TEXT);
1420         __pLabel[index]->Invalidate(false);
1421 }
1422
1423 void
1424 LocaleForm::OnFocusGained(const Tizen::Ui::Control& source)
1425 {
1426         AppLog("Enter");
1427         __isRunningAppControl = false;
1428 }
1429
1430 void
1431 LocaleForm::OnKeyPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode)
1432 {
1433         AppLog("Enter");
1434         if(keyCode == KEY_ENTER)
1435         {
1436                 AppLog("Enter");
1437                 int index = 0;
1438                 if (source.GetName() == ITEM_NAME_1)
1439                 {
1440                         index = 0;
1441                 }
1442                 else if (source.GetName() == ITEM_NAME_2)
1443                 {
1444                         index = 1;
1445                 }
1446                 __pLabel[index]->SetTextColor(Color::GetColor(COLOR_ID_WHITE));
1447                 __pLabel[index]->Invalidate(false);
1448         }
1449 }
1450
1451 void
1452 LocaleForm::OnKeyReleased(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode)
1453 {
1454         AppLog("Enter");
1455         if(keyCode == KEY_ENTER)
1456         {
1457                 AppLog("Enter");
1458                 int index = 0;
1459                 if (source.GetName() ==ITEM_NAME_1)
1460                 {
1461                         index = 0;
1462                 }
1463                 else if (source.GetName() == ITEM_NAME_2)
1464                 {
1465                         index = 1;
1466                 }
1467                 __pLabel[index]->SetTextColor(COLOR_SUB_TEXT);
1468                 __pLabel[index]->Invalidate(false);
1469         }
1470 }
1471
1472 void
1473 LocaleForm::OnKeyLongPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode)
1474 {
1475 }