2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.0 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://floralicense.org/license/
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an AS IS BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
18 * @file StAppSettingForm.cpp
19 * @brief This is the implementation file for AppSettingForm class.
22 #include "StAppSettingForm.h"
23 #include "StResourceManager.h"
26 using namespace Tizen::App;
27 using namespace Tizen::Base;
28 using namespace Tizen::Base::Collection;
29 using namespace Tizen::Base::Utility;
30 using namespace Tizen::Graphics;
31 using namespace Tizen::Io;
32 using namespace Tizen::Ui;
33 using namespace Tizen::Ui::Controls;
34 using namespace Tizen::Ui::Scenes;
36 static const int APPSETTING_DEFAULT_COUNT = 1;
37 static const int LIMIT_EDITFIELD = 100;
38 static const int STRING_SIZE_LIMIT = 10;
39 static const int ID_APPSETTTING_ARGUMENT_DEFAULT = 0;
40 static const int ID_APPSETTTING_ARGUMENT_APP_ID = 1;
41 static const int ID_APPSETTTING_ARGUMENT_COUNT = 2;
43 static const wchar_t* DEFAULT_VALUE_STRING = L"1";
44 static const wchar_t* ID_POST_FIX_BUTTON_DONE = L"DONE";
45 static const wchar_t* ID_POST_FIX_BUTTON_CANCEL = L"CANCEL";
47 static const wchar_t* ID_APPSETTING_ITEM_TYPE_BOOL = L"bool";
48 static const wchar_t* ID_APPSETTING_ITEM_TYPE_INTEGER = L"integer";
49 static const wchar_t* ID_APPSETTING_ITEM_TYPE_STRING = L"string";
50 static const wchar_t* ID_APPSETTING_ITEM_TYPE_LABEL = L"label";
51 static const wchar_t* ID_APPSETTING_ITEM_TYPE_EXPAND_LIST = L"expandlist";
52 static const wchar_t* ID_APPSETTING_ITEM_TYPE_EXPAND_ITEM = L"expanditem";
54 static const wchar_t* ID_APPSETTING_ATTRIBUTE_TYPE_TITLE = L"title";
55 static const wchar_t* ID_APPSETTING_ATTRIBUTE_TYPE_MIN = L"min";
56 static const wchar_t* ID_APPSETTING_ATTRIBUTE_TYPE_MAX = L"max";
57 static const wchar_t* ID_APPSETTING_ATTRIBUTE_TYPE_VALUE = L"value";
59 static const int ITEM_WIDTH_GAP = 100;
60 static const int H_RESIZE_LANDSCAPE_CLIPBOARD = 292;
61 static const int H_RESIZE_PORTRAIT_CLIPBOARD = 614;
63 static const int APP_SETTING_DEFAULT_COUNT = 1;
64 static const int IDA_HEADER_BACK_BUTTON = 500;
66 AppSettingForm::AppSettingForm(void)
70 , __isNoTitleGroup(true)
71 , __pIOAppSetting(null)
72 , __pGroupItemNodeList(null)
73 , __pTranslateTableIndexToHashCode(null)
74 , __pTranslateTableHashCodeToItemTag(null)
75 , __pItemHashcodeHashMap(null)
79 AppSettingForm::~AppSettingForm(void)
84 AppSettingForm::CreateFooter(void)
86 Footer* pFooter = GetFooter();
89 pFooter->SetStyle(FOOTER_STYLE_BUTTON_TEXT);
90 pFooter->SetBackButton();
91 pFooter->AddActionEventListener(*this);
92 SetFormBackEventListener(this);
96 AppSettingForm::SetHeaderTitle(void)
98 if (__pGroupItemNodeList == null)
100 AppLogDebug("__pGroupItemNodeList is null");
101 CreateHeader(L"AppSettingDefault");
106 result r = __pGroupItemNodeList->GetAt(0, pNode);
112 AppLogDebug("pNode is null");
116 AppLogDebug("GetAt fail [%s]", GetErrorMessage(r));
118 CreateHeader(L"AppSettingDefault");
122 Node* pParent = pNode->GetParent();
123 if ((pParent == null)
124 || (!pParent->GetType().Equals(L"setting", false)))
128 AppLogDebug("pParent is null");
132 AppLogDebug("pParent is not setting element [%ls]", pParent->GetType().GetPointer());
134 CreateHeader(L"AppSettingDefault");
138 String* pTitle = pParent->GetAttributeN(L"title");
141 AppLogDebug("pTitle is null");
142 CreateHeader(L"AppSettingDefault");
146 CreateHeader(*pTitle);
151 AppSettingForm::OnInitializing(void)
157 AppSettingForm::AppSettingManagerInit(Tizen::Base::String rootId, Tizen::Base::String filePath)
159 __pAppSettingManager = AppSettingManager::GetInstance();
160 if (__pAppSettingManager == null)
162 AppLogDebug("AppSettingManager::GetInstance fail");
166 ElementNode* pRoot = __pAppSettingManager->AddAppSettingRootNode(rootId);
167 result r = __pAppSettingManager->XmlAppSettingFileRead(filePath, pRoot);
170 __pAppSettingManager->RemoveAppSettingRootNode(rootId);
171 AppLogDebug("XmlAppSettingFileRead fail [%s]", GetErrorMessage(r));
179 AppSettingForm::SetGroupItemNodeList(Tizen::Base::String rootId)
181 InitGroupItemNodeList();
183 if (__pAppSettingManager == null)
185 AppLogDebug("__pAppSettingManager is null");
189 ElementNode* pRoot = __pAppSettingManager->GetAppSettingRootNode(rootId);
193 AppLogDebug("AppId is not found");
197 bool isFindSttingElement = false;
199 Enumerator* pEnum = pRoot->CreateEnumerator();
200 while (pEnum->MoveNext() == E_SUCCESS)
202 pNode = static_cast<const Node*>(pEnum->GetCurrentObject());
203 if (pNode->GetType().Equals(L"setting", false))
205 isFindSttingElement = true;
211 if ((isFindSttingElement == false)
213 || (pNode->GetNodeType() == Node::NODE_TYPE_LEAF))
215 if (isFindSttingElement == false)
217 AppLogDebug("Setting Element is not found");
221 AppLogDebug("Child is not found");
226 ElementNode* pElementNode = dynamic_cast<ElementNode*>(pNode);
227 if (pElementNode == null)
229 AppLogDebug("dynamic_cast<ElementNode*>(pNode) is null");
232 unsigned int childCount = pElementNode->GetChildCount();
235 AppLogDebug("Child is zero");
239 result r = E_FAILURE;
240 for (unsigned int i = 0; i < childCount; i++)
242 if (pElementNode->GetChild(i)->GetType().Equals(L"navigationbar", false))
247 r = __pGroupItemNodeList->Add(pElementNode->GetChild(i));
250 AppLogDebug("Add fail");
251 RemoveAllGroupItemNodeList();
255 r = AddItemHashCodeMap(pElementNode->GetChild(i)->GetId().GetHashCode(), pElementNode->GetChild(i));
258 AppLogDebug("AddItemHashCodeMap fail");
259 RemoveAllGroupItemNodeList();
268 AppSettingForm::RemoveAllGroupItemNodeList(void)
270 if (__pGroupItemNodeList != null)
272 __pGroupItemNodeList->RemoveAll();
273 delete __pGroupItemNodeList;
274 __pGroupItemNodeList = null;
279 AppSettingForm::InitGroupItemNodeList(void)
281 RemoveAllGroupItemNodeList();
283 __pGroupItemNodeList = new (std::nothrow) LinkedListT<Node*>;
284 if (__pGroupItemNodeList == null)
286 AppLogDebug("__pGroupItemNodeList create fail");
294 AppSettingForm::InitItemHashCodeMap(void)
296 RemoveAllItemHashCodeMap();
298 __pItemHashcodeHashMap = new (std::nothrow) HashMapT<unsigned int, Node*>;
299 if (__pItemHashcodeHashMap == null)
301 AppLogDebug("__pItemHashcodeHashMap create fail");
305 result r = __pItemHashcodeHashMap->Construct();
308 AppLogDebug("Construct fail [%s]", GetErrorMessage(r));
309 RemoveAllItemHashCodeMap();
316 AppSettingForm::AddItemHashCodeMap(unsigned int hashCode, Node* pNode)
318 if (__pItemHashcodeHashMap == null)
320 AppLogDebug("__pItemHashcodeHashMap is null");
324 result r = __pItemHashcodeHashMap->Add(hashCode, pNode);
330 AppSettingForm::MakeTranslateTable(void)
332 if ((__pGroupItemNodeList == null)
333 || (__pItemHashcodeHashMap == null))
335 AppLogDebug("__pGroupItemNodeList or __pItemHashcodeHashMap is null");
339 unsigned int groupItemListCount = __pGroupItemNodeList->GetCount();
340 if (groupItemListCount == 0)
342 AppLogDebug("groupItemListCount is zero");
346 result r = E_FAILURE;
348 Enumerator* pEnum = null;
350 for (unsigned int i = 0; i < groupItemListCount; i++)
352 r = __pGroupItemNodeList->GetAt(i, pNode);
358 AppLogDebug("pNode is null");
363 AppLogDebug("GetAt fail [%s]", GetErrorMessage(r));
366 RemoveAllTranslateTableIndexToHashCode();
367 RemoveAllItemHashCodeMap();
372 ArrayListT<unsigned int>* pGroupItemHashCode = new (std::nothrow) ArrayListT<unsigned int>;
373 if (pGroupItemHashCode == null)
375 AppLogDebug("pNode is null");
377 RemoveAllTranslateTableIndexToHashCode();
378 RemoveAllItemHashCodeMap();
383 r = pGroupItemHashCode->Construct();
386 AppLogDebug("Construct fail [%s]", GetErrorMessage(r));
387 RemoveAllTranslateTableIndexToHashCode();
388 RemoveAllItemHashCodeMap();
390 pGroupItemHashCode->RemoveAll();
391 delete pGroupItemHashCode;
396 int enumLoopCount = 0;
397 pEnum = pNode->CreateEnumerator();
398 while (pEnum->MoveNext() == E_SUCCESS)
400 Node* pCurrent = static_cast<const Node*>(pEnum->GetCurrentObject());
401 if (pCurrent == null)
403 AppLogDebug("pNode is null");
404 RemoveAllTranslateTableIndexToHashCode();
405 RemoveAllItemHashCodeMap();
408 pGroupItemHashCode->RemoveAll();
409 delete pGroupItemHashCode;
414 unsigned int idHashCode = pCurrent->GetId().GetHashCode();
416 r = AddItemHashCodeMap(idHashCode, pCurrent);
419 AppLogDebug("Add fail [%s]", GetErrorMessage(r));
420 RemoveAllTranslateTableIndexToHashCode();
421 RemoveAllItemHashCodeMap();
424 pGroupItemHashCode->RemoveAll();
425 delete pGroupItemHashCode;
430 r = pGroupItemHashCode->Add(idHashCode);
433 AppLogDebug("Add fail [%s]", GetErrorMessage(r));
434 RemoveAllTranslateTableIndexToHashCode();
435 RemoveAllItemHashCodeMap();
438 pGroupItemHashCode->RemoveAll();
439 delete pGroupItemHashCode;
443 SetTranslateTableHashCodeToItemTag(idHashCode, new (std::nothrow) ItemTag(i, enumLoopCount));
444 enumLoopCount = enumLoopCount + APPSETTING_DEFAULT_COUNT;
448 r = SetTranslateTableIndexToHashCode(pGroupItemHashCode);
451 AppLogDebug("SetTranslateTableIndexToHashCode fail [%s]", GetErrorMessage(r));
452 RemoveAllTranslateTableIndexToHashCode();
453 RemoveAllItemHashCodeMap();
455 pGroupItemHashCode->RemoveAll();
456 delete pGroupItemHashCode;
466 AppSettingForm::GetItemHashCodeMap(unsigned int hashCode)
468 if (__pItemHashcodeHashMap == null)
470 AppLogDebug("__pItemHashcodeHashMap is null");
474 bool isFindKey = false;
475 result r = __pItemHashcodeHashMap->ContainsKey(hashCode, isFindKey);
476 if ((isFindKey == false)
479 if (isFindKey == false)
481 AppLogDebug("Key is not found");
485 AppLogDebug("ContainsKey fail [%s]", GetErrorMessage(r));
491 Node* pValueNode = null;
492 r = __pItemHashcodeHashMap->GetValue(hashCode, pValueNode);
493 if ((pValueNode == null)
496 if (pValueNode == null)
498 AppLogDebug("pValueNode is null");
502 AppLogDebug("GetValue fail [%s]", GetErrorMessage(r));
512 AppSettingForm::RemoveAllItemHashCodeMap(void) // must be modify
514 if (__pItemHashcodeHashMap != null)
516 __pItemHashcodeHashMap->RemoveAll();
517 delete __pItemHashcodeHashMap;
518 __pItemHashcodeHashMap = null;
523 AppSettingForm::InitTranslateTableIndexToHashCode(void)
525 if (__pTranslateTableIndexToHashCode != null)
527 AppLogDebug("__pTranslateTableIndexToHashCode is not null");
531 __pTranslateTableIndexToHashCode = new (std::nothrow) ArrayListT<ArrayListT<unsigned int>*>;
532 if (__pTranslateTableIndexToHashCode == null)
534 AppLogDebug("__pTranslateTableIndexToHashCode create fail");
538 result r = __pTranslateTableIndexToHashCode->Construct();
541 AppLogDebug("Construct fail [%s]", GetErrorMessage(r));
542 RemoveAllTranslateTableIndexToHashCode();
549 AppSettingForm::InitTranslateTableHashCodeToItemTag(void)
551 if (__pTranslateTableHashCodeToItemTag != null)
553 AppLogDebug("__pTranslateTableIndexToHashCode is not null");
556 __pTranslateTableHashCodeToItemTag = new (std::nothrow) HashMapT<unsigned int, ItemTag*>;
557 if (__pTranslateTableHashCodeToItemTag == null)
559 AppLogDebug("__pTranslateTableHashCodeToItemTag create fail");
562 result r = __pTranslateTableHashCodeToItemTag->Construct();
565 AppLogDebug("Construct fail [%s]", GetErrorMessage(r));
566 RemoveAllTranslateTableHashCodeToItemTag();
572 AppSettingForm::SetTranslateTableHashCodeToItemTag(int hashCode, ItemTag* itemTag)
574 InitTranslateTableHashCodeToItemTag();
575 if (__pTranslateTableHashCodeToItemTag == null)
577 AppLogDebug("__pTranslateTableHashCodeToItemTag is null");
580 return __pTranslateTableHashCodeToItemTag->Add(hashCode, itemTag);
584 AppSettingForm::GetTranslateTableHashCodeToItemTag(unsigned int hashCode)
586 if (__pTranslateTableHashCodeToItemTag == null)
588 AppLogDebug("__pTranslateTableHashCodeToItemTag is null");
591 bool isFindKey = false;
592 result r = __pTranslateTableHashCodeToItemTag->ContainsKey(hashCode, isFindKey);
593 if ((isFindKey == false)
596 if (isFindKey == false)
598 AppLogDebug("Key is not found");
602 AppLogDebug("ContainsKey fail [%s]", GetErrorMessage(r));
606 ItemTag* pValueItemTag = null;
607 r = __pTranslateTableHashCodeToItemTag->GetValue(hashCode, pValueItemTag);
608 if ((pValueItemTag == null)
611 if (pValueItemTag == null)
613 AppLogDebug("pValueItemTag is null");
617 AppLogDebug("GetValue fail [%s]", GetErrorMessage(r));
621 return pValueItemTag;
625 AppSettingForm::RemoveAllTranslateTableHashCodeToItemTag(void)
627 if (__pTranslateTableHashCodeToItemTag != null)
629 __pTranslateTableHashCodeToItemTag->RemoveAll();
630 delete __pTranslateTableHashCodeToItemTag;
631 __pTranslateTableHashCodeToItemTag = null;
636 AppSettingForm::SetTranslateTableIndexToHashCode(Tizen::Base::Collection::ArrayListT<unsigned int>* groupItemHashCode)
638 InitTranslateTableIndexToHashCode();
640 if (__pTranslateTableIndexToHashCode == null)
642 AppLogDebug("__pTranslateTableIndexToHashCode is null");
646 result r = __pTranslateTableIndexToHashCode->Add(groupItemHashCode);
649 AppLogDebug("Add fail [%s]", GetErrorMessage(r));
656 AppSettingForm::GetTranslateTableIndexToHashCode(unsigned int groupIndex, unsigned int itemIndex)
658 unsigned int retHashCode = 0;
660 if (__pTranslateTableIndexToHashCode == null)
662 AppLogDebug("__pTranslateTableIndexToHashCode is null");
666 unsigned int groupCount = __pTranslateTableIndexToHashCode->GetCount();
667 if ((groupIndex >= groupCount)
668 || (groupCount == 0))
670 AppLogDebug("groupIndex is not found");
674 ArrayListT<unsigned int>* pItemList = null;
675 result r = __pTranslateTableIndexToHashCode->GetAt(groupIndex, pItemList);
676 if ((pItemList == null)
679 if (pItemList == null)
681 AppLogDebug("pItemList is null");
685 AppLogDebug("GetAt fail [%s]", GetErrorMessage(r));
691 unsigned int itemCount = pItemList->GetCount();
692 if ((itemIndex >= itemCount)
695 AppLogDebug("itemIndex is not found");
699 r = pItemList->GetAt(itemIndex, retHashCode);
702 AppLogDebug("GetAt fail [%s]", GetErrorMessage(r));
712 AppSettingForm::GetItemCountByTranslateTable(unsigned int groupIndex)
714 unsigned int itemCount = 0;
715 if (__pTranslateTableIndexToHashCode == null)
717 AppLogDebug("__pTranslateTableIndexToHashCode is null");
721 unsigned int groupCount = __pTranslateTableIndexToHashCode->GetCount();
722 if ((groupIndex >= groupCount)
723 || (groupCount == 0))
725 AppLogDebug("groupIndex is not found");
729 ArrayListT<unsigned int>* pItemList = null;
730 result r = __pTranslateTableIndexToHashCode->GetAt(groupIndex, pItemList);
731 if ((pItemList == null)
734 if (pItemList == null)
736 AppLogDebug("pItemList is null");
740 AppLogDebug("GetAt fail [%s]", GetErrorMessage(r));
746 itemCount = pItemList->GetCount();
749 itemCount = APPSETTING_DEFAULT_COUNT;
756 AppSettingForm::RemoveAllTranslateTableIndexToHashCode(void)
758 if (__pTranslateTableIndexToHashCode != null)
760 unsigned int groupCount = __pTranslateTableIndexToHashCode->GetCount();
763 for (unsigned int i = 0; i < groupCount; i++)
765 ArrayListT<unsigned int>* itemList = null;
766 __pTranslateTableIndexToHashCode->GetAt(i, itemList);
768 if (itemList != null)
770 itemList->RemoveAll();
776 __pTranslateTableIndexToHashCode->RemoveAll();
777 delete __pTranslateTableIndexToHashCode;
778 __pTranslateTableIndexToHashCode = null;
783 AppSettingForm::IOAppSettingInit(Tizen::Base::String appId)
785 __pIOAppSetting = new (std::nothrow) IOAppSetting();
786 if (__pIOAppSetting == null)
788 AppLogDebug("__pIOAppSetting Create failed");
792 result r = __pIOAppSetting->Constructor(appId);
795 RemoveIOAppSetting();
802 AppSettingForm::RemoveIOAppSetting(void)
804 if (__pIOAppSetting != null)
806 delete __pIOAppSetting;
807 __pIOAppSetting = null;
812 AppSettingForm::OnTerminating(void)
814 __pTableView->SetItemProvider(null);
816 RemoveAllGroupItemNodeList();
817 RemoveAllItemHashCodeMap();
818 RemoveAllTranslateTableIndexToHashCode();
819 RemoveAllTranslateTableHashCodeToItemTag();
820 RemoveIOAppSetting();
822 __pAppSettingManager->RemoveAppSettingRootNode(__appId);
823 __pAppSettingManager = null;
824 __pStaticEdit = null;
826 SceneManager* pSceneManager = SceneManager::GetInstance();
827 AppAssert(pSceneManager);
829 pSceneManager->UnregisterScene(__appId);
831 SetFormBackEventListener(null);
836 AppSettingForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
838 Node* pRootNode = null;
839 Enumerator* pEnum = null;
840 String* pArgsValue[ID_APPSETTTING_ARGUMENT_COUNT] = {null, };
845 AppLogDebug("pArgs is null");
849 argsCount = pArgs->GetCount();
850 if (argsCount != ID_APPSETTTING_ARGUMENT_COUNT)
852 AppLogDebug("Wrong count of pArgs");
857 for (int i = 0; i < argsCount; i++)
859 pArgsValue[i] = static_cast<String*>(pArgs->GetAt(i));
860 if (pArgsValue[i] == null)
862 AppLogDebug("pArgsValue[%d] is null", i);
869 StringTokenizer stringTokenizer(*pArgsValue[ID_APPSETTTING_ARGUMENT_DEFAULT], L":");
870 result r = stringTokenizer.GetNextToken(appId);
871 TryCatch(r == E_SUCCESS, , "GetNextToken fail[%s]", GetErrorMessage(r));
873 r = stringTokenizer.GetNextToken(appId);
875 || (appId.IsEmpty() == true))
881 TryCatch(r == E_SUCCESS, , "GetNextToken fail[%s]", GetErrorMessage(r));
884 r = AppSettingManagerInit(appId, *pArgsValue[ID_APPSETTTING_ARGUMENT_APP_ID]);
885 TryCatch(r == E_SUCCESS, , "AppSettingManagerInit fail [%s]", GetErrorMessage(r));
887 InitItemHashCodeMap();
888 r = SetGroupItemNodeList(appId);
889 TryCatch(r == E_SUCCESS, , "SetGroupItemNodeList fail");
891 r = MakeTranslateTable();
892 TryCatch(r == E_SUCCESS, , "MakeTranslateTable fail");
893 if (__appId.IsEmpty() == true)
895 __appId.Append(appId);
898 IOAppSettingInit(__appId);
904 __pTableView->UpdateTableView();
905 pRootNode = __pAppSettingManager->GetAppSettingRootNode(__appId);
906 pEnum = pRootNode->CreateEnumerator();
907 while (pEnum->MoveNext() == E_SUCCESS)
909 Node* pCurrent = static_cast<Node*>(pEnum->GetCurrentObject());
910 if (pCurrent->GetType().Equals(ID_APPSETTING_ITEM_TYPE_BOOL, false))
912 unsigned int hashCode = pCurrent->GetId().GetHashCode();
913 ItemTag* itemTag = GetTranslateTableHashCodeToItemTag(hashCode);
918 String* pValue = pCurrent->GetAttributeN(ID_APPSETTING_ATTRIBUTE_TYPE_VALUE);
919 if (pValue->Equals(L"true", false))
921 __pTableView->SetItemChecked(itemTag->GetGroupIndex(), itemTag->GetItemIndex(), true);
925 else if (pCurrent->GetType().Equals(ID_APPSETTING_ITEM_TYPE_EXPAND_LIST, false))
927 ElementNode* pExpandListItem = dynamic_cast<ElementNode*>(pCurrent);
928 if (pExpandListItem == null)
932 String* pExpandListValue = pExpandListItem->GetAttributeN(ID_APPSETTING_ATTRIBUTE_TYPE_VALUE);
933 for (int i = 0; i < pExpandListItem->GetChildCount(); i++)
935 ElementLeaf* pElementLeaf = dynamic_cast<ElementLeaf*>(pExpandListItem->GetChild(i));
936 if (pElementLeaf == null)
940 String* pExpandItemValue = pElementLeaf->GetAttributeN(ID_APPSETTING_ATTRIBUTE_TYPE_TITLE);
941 if (!pExpandListValue->Equals(*pExpandItemValue, false))
943 delete pExpandItemValue;
946 unsigned int hashCode = pElementLeaf->GetId().GetHashCode();
947 ItemTag* itemTag = GetTranslateTableHashCodeToItemTag(hashCode);
952 __pTableView->SetItemChecked(itemTag->GetGroupIndex(), itemTag->GetItemIndex(), true);
953 delete pExpandItemValue;
955 delete pExpandListValue;
968 AppLogDebug("AppSettingForm Initialize fail");
972 AppSettingForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
977 AppSettingForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
979 SceneManager* pSceneManager = SceneManager::GetInstance();
980 AppAssert(pSceneManager);
982 if (__pIOAppSetting != null)
984 __pIOAppSetting->UpdateChangedValue();
987 pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT), null);
991 AppSettingForm::GetGroupCount(void)
993 if (__pGroupItemNodeList != null)
995 return __pGroupItemNodeList->GetCount();
998 return APPSETTING_DEFAULT_COUNT;
1002 AppSettingForm::GetItemCount(int groupIndex)
1004 return GetItemCountByTranslateTable(groupIndex);
1008 AppSettingForm::CreateGroupItem(int groupIndex, int itemWidth)
1010 AppLogDebug("ENTER");
1012 int itemHeight = H_GROUP_INDEX_DEFAULT;
1013 int yItemOffset = Y_GROUP_INDEX_DEFAULT;
1014 LabelTextStyle style = LABEL_TEXT_STYLE_NORMAL;
1015 Rectangle itemRectangle;
1016 String* groupText = null;
1018 __pGroupItemNodeList->GetAt(groupIndex, pNode);
1020 TableViewGroupItem* pItem = new (std::nothrow) TableViewGroupItem();
1022 itemRectangle.x = X_GROUP_ITEM_DEFAULT_LABEL;
1023 itemRectangle.y = yItemOffset;
1024 itemRectangle.width = itemWidth;
1025 itemRectangle.height = itemHeight;
1027 itemHeight = H_GROUP_INDEX_DEFAULT;
1028 itemRectangle.y = H_GROUP_INDEX_TITLE_TEXT;
1029 itemRectangle.height = H_GROUP_INDEX_DEFAULT - H_GROUP_INDEX_TITLE_TEXT;
1031 groupText = pNode->GetAttributeN(ID_APPSETTING_ATTRIBUTE_TYPE_TITLE);
1032 if (groupText == null)
1038 if (!pNode->GetType().Equals(L"group", false))
1040 if (__isNoTitleGroup == true)
1042 itemHeight = H_GROUP_INDEX_NO_TITLE_DEFAULT;
1043 __isNoTitleGroup = false;
1052 __isNoTitleGroup = true;
1055 (*groupText).Format(STRING_SIZE_LIMIT, L"Group %d", groupIndex);
1056 pItem->Construct(Dimension(itemWidth, itemHeight));
1057 pItem->SetBackgroundColor(COLOR_BG_GROUP_INDEX_DEFAULT);
1059 Label* pLabel = new (std::nothrow) Label();
1061 pLabel->Construct(itemRectangle, (*groupText).GetPointer());
1062 pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
1063 pLabel->SetTextVerticalAlignment(ALIGNMENT_TOP);
1065 pItem->AddControl(*pLabel);
1067 pLabel->SetTextConfig(FONT_SIZE_GROUP_TITLE_TEXT, style);
1068 pLabel->SetTextColor(COLOR_HELP_TEXT_TYPE_01);
1070 pItem->SetEnabled(false);
1077 AppSettingForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
1079 Rectangle itemRectangle;
1080 Label* pLabel = null;
1082 String* itemText = null;
1084 TableViewAnnexStyle style = TABLE_VIEW_ANNEX_STYLE_NORMAL;
1086 unsigned int hashCode = GetTranslateTableIndexToHashCode(groupIndex, itemIndex);
1088 Node* pItemNode = GetItemHashCodeMap(hashCode);
1089 if (pItemNode == null)
1091 result r = __pGroupItemNodeList->GetAt(groupIndex, pItemNode);
1094 AppLogDebug("pItemNode is null");
1098 pItemNode = GetItemHashCodeMap(pItemNode->GetId().GetHashCode());
1099 if (pItemNode == null)
1101 AppLogDebug("pItemNode is null");
1106 TableViewItem* pItem = new (std::nothrow) TableViewItem();
1108 itemText = pItemNode->GetAttributeN(ID_APPSETTING_ATTRIBUTE_TYPE_TITLE);
1109 itemType = pItemNode->GetType();
1110 ItemTypeOneLine(itemRectangle);
1112 if ((pItemNode->GetType()).Equals(ID_APPSETTING_ITEM_TYPE_BOOL, false))
1114 bool toggleValue = false;
1115 String* valueString = pItemNode->GetAttributeN(ID_APPSETTING_ATTRIBUTE_TYPE_VALUE);
1117 pItemNode->RegisterObserverlistener(__pIOAppSetting);
1119 style = TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING;
1121 RelativeLayout relativeLayout;
1122 relativeLayout.Construct();
1124 pItem->Construct(relativeLayout, Dimension(itemWidth, itemRectangle.height), style);
1125 pItem->SetBackgroundColor(COLOR_BG_GROUP_ITEM_DEFAULT);
1127 pLabel = new (std::nothrow) Label();
1128 pLabel->Construct(itemRectangle, (itemText)->GetPointer());
1129 pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
1130 pLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
1132 pItem->AddControl(*pLabel);
1133 relativeLayout.SetMargin(*pLabel, 0, RELATIVE_LAYOUT_RIGHT_MARGIN, 0, 0);
1134 relativeLayout.SetRelation(*pLabel, *pItem, RECT_EDGE_RELATION_LEFT_TO_LEFT);
1135 relativeLayout.SetRelation(*pLabel, *pItem, RECT_EDGE_RELATION_RIGHT_TO_RIGHT);
1137 pItem->SetBackgroundColor(COLOR_BG_GROUP_INDEX_DEFAULT, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
1139 toggleValue = Boolean::Parse((*valueString).GetPointer(), true);
1141 if ((toggleValue != 0) || ((*valueString).Equals(DEFAULT_VALUE_STRING, true)))
1143 __pTableView->SetItemChecked(groupIndex, itemIndex, true);
1147 else if ((pItemNode->GetType()).Equals(ID_APPSETTING_ITEM_TYPE_INTEGER, false))
1149 Slider* pSlider = null;
1154 pItemNode->RegisterObserverlistener(__pIOAppSetting);
1156 itemRectangle.width = (itemWidth - ITEM_WIDTH_GAP);
1157 itemRectangle.height = H_GROUP_ITEM_DEFAULT_SLIDER;
1159 RelativeLayout relativeLayout;
1160 relativeLayout.Construct();
1161 pItem->Construct(relativeLayout, Dimension(itemWidth, itemRectangle.height), style);
1162 pItem->SetBackgroundColor(COLOR_BG_GROUP_ITEM_DEFAULT);
1164 String* minValueString = pItemNode->GetAttributeN(ID_APPSETTING_ATTRIBUTE_TYPE_MIN);
1165 String* maxValueString = pItemNode->GetAttributeN(ID_APPSETTING_ATTRIBUTE_TYPE_MAX);
1166 String* setValueString = pItemNode->GetAttributeN(ID_APPSETTING_ATTRIBUTE_TYPE_VALUE);
1168 Integer::Parse((*minValueString).GetPointer(), minValue);
1169 Integer::Parse((*maxValueString).GetPointer(), maxValue);
1170 Integer::Parse((*setValueString).GetPointer(), setValue);
1172 pSlider = new (std::nothrow) Slider();
1173 pSlider->Construct(itemRectangle, BACKGROUND_STYLE_NONE, true, minValue, maxValue);
1174 pSlider->SetTitleText((*itemText).GetPointer());
1175 pSlider->SetValue(setValue);
1176 pSlider->AddAdjustmentEventListener(*this);
1177 pSlider->AddSliderEventListener(*this);
1178 pSlider->SetName(pItemNode->GetId());
1180 pItem->AddControl(*pSlider);
1181 relativeLayout.SetMargin(*pSlider, 0, RELATIVE_LAYOUT_RIGHT_MARGIN, 0, 0);
1182 relativeLayout.SetRelation(*pSlider, *pItem, RECT_EDGE_RELATION_LEFT_TO_LEFT);
1183 relativeLayout.SetRelation(*pSlider, *pItem, RECT_EDGE_RELATION_RIGHT_TO_RIGHT);
1185 pItem->SetBackgroundColor(COLOR_BG_GROUP_ITEM_DEFAULT, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
1186 pItem->SetBackgroundColor(COLOR_BG_GROUP_ITEM_DEFAULT, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
1187 pItem->SetBackgroundColor(COLOR_BG_GROUP_ITEM_DEFAULT, TABLE_VIEW_ITEM_DRAWING_STATUS_HIGHLIGHTED);
1188 delete minValueString;
1189 delete maxValueString;
1190 delete setValueString;
1192 else if ((pItemNode->GetType()).Equals(ID_APPSETTING_ITEM_TYPE_STRING, false))
1194 itemRectangle.x = 0;
1196 RelativeLayout relativeLayout;
1197 relativeLayout.Construct();
1198 pItem->Construct(relativeLayout, Dimension(itemWidth, itemRectangle.height), style);
1199 pItem->SetBackgroundColor(COLOR_BG_GROUP_ITEM_DEFAULT);
1201 pItemNode->RegisterObserverlistener(__pIOAppSetting);
1203 String id = pItemNode->GetId();
1204 String setActionIdDone(id);
1205 String setActionIdCancel(id);
1207 setActionIdDone.Append(ID_POST_FIX_BUTTON_DONE);
1208 setActionIdCancel.Append(ID_POST_FIX_BUTTON_CANCEL);
1210 EditField* pEditField = new (std::nothrow) EditField();
1211 String* secondLine = pItemNode->GetAttributeN(ID_APPSETTING_ATTRIBUTE_TYPE_VALUE);
1213 itemRectangle.x = X_GROUP_DEFAULT;
1214 pEditField->Construct(itemRectangle, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY, EDIT_FIELD_TITLE_STYLE_TOP, true, LIMIT_EDITFIELD, GROUP_STYLE_NONE);
1215 pEditField->SetGuideText((*itemText).GetPointer());
1216 pEditField->SetTitleText((*itemText).GetPointer());
1217 pEditField->SetText((*secondLine).GetPointer());
1220 pEditField->SetTextSize(FONT_SIZE_SUB_TEXT);
1221 pEditField->SetTitleTextColor(EDIT_STATUS_NORMAL, COLOR_HELP_TEXT_TYPE_01);
1222 pEditField->SetColor(EDIT_STATUS_NORMAL, COLOR_BG_GROUP_ITEM_DEFAULT);
1223 pEditField->SetColor(EDIT_STATUS_PRESSED, COLOR_BG_GROUP_ITEM_DEFAULT);
1224 pEditField->SetColor(EDIT_STATUS_HIGHLIGHTED, COLOR_BG_GROUP_ITEM_DEFAULT);
1225 pEditField->SetColor(EDIT_STATUS_DISABLED, COLOR_BG_GROUP_ITEM_DEFAULT);
1226 pEditField->AddActionEventListener(*this);
1227 pEditField->AddTextEventListener(*this);
1228 pEditField->SetName(id);
1229 pEditField->SetOverlayKeypadCommandButtonVisible(false);
1230 pEditField->AddKeypadEventListener(*this);
1232 pItem->AddControl(*pEditField);
1233 pItem->SetBackgroundColor(COLOR_BG_GROUP_INDEX_DEFAULT ,TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
1234 pItem->SetIndividualSelectionEnabled(pEditField, true);
1236 relativeLayout.SetMargin(*pEditField, 0, RELATIVE_LAYOUT_RIGHT_MARGIN, 0, 0);
1237 relativeLayout.SetRelation(*pEditField, *pItem, RECT_EDGE_RELATION_LEFT_TO_LEFT);
1238 relativeLayout.SetRelation(*pEditField, *pItem, RECT_EDGE_RELATION_RIGHT_TO_RIGHT);
1240 else if ((pItemNode->GetType()).Equals(ID_APPSETTING_ITEM_TYPE_LABEL, false))
1242 pItem->Construct(Dimension(itemWidth, itemRectangle.height), style);
1243 pItem->SetBackgroundColor(COLOR_BG_GROUP_ITEM_DEFAULT);
1245 pLabel = new (std::nothrow) Label();
1246 pLabel->Construct(itemRectangle, (itemText)->GetPointer());
1247 pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
1248 pLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
1250 pItem->AddControl(*pLabel);
1251 pItem->SetBackgroundColor(COLOR_BG_GROUP_INDEX_DEFAULT, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
1253 else if ((pItemNode->GetType()).Equals(ID_APPSETTING_ITEM_TYPE_EXPAND_LIST, false))
1255 String* value = pItemNode->GetAttributeN(ID_APPSETTING_ATTRIBUTE_TYPE_VALUE);
1258 pItemNode->RegisterObserverlistener(__pIOAppSetting);
1260 pItem->Construct(Dimension(itemWidth, itemRectangle.height), style);
1261 pItem->SetBackgroundColor(COLOR_BG_GROUP_ITEM_DEFAULT);
1263 expendList.Append(itemText->GetPointer());
1264 expendList.Append(L" : ");
1265 expendList.Append(value->GetPointer());
1269 pLabel = new (std::nothrow) Label();
1270 pLabel->Construct(itemRectangle, expendList);
1271 pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
1272 pLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
1273 pLabel->SetName(pItemNode->GetId());
1275 pItem->AddControl(*pLabel);
1276 pItem->SetBackgroundColor(COLOR_BG_GROUP_INDEX_DEFAULT, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
1278 else if ((pItemNode->GetType()).Equals(ID_APPSETTING_ITEM_TYPE_EXPAND_ITEM, false))
1280 style = TABLE_VIEW_ANNEX_STYLE_RADIO;
1282 pItem->Construct(Dimension(itemWidth, itemRectangle.height), style);
1283 pItem->SetBackgroundColor(COLOR_BG_GROUP_ITEM_LISTITEM);
1285 Node* parent = pItemNode->GetParent();
1287 String* pParentValue = (parent->GetAttributeN(ID_APPSETTING_ATTRIBUTE_TYPE_VALUE));
1288 String* pCurrentValue = (pItemNode->GetAttributeN(ID_APPSETTING_ATTRIBUTE_TYPE_TITLE));
1290 if (pCurrentValue->Equals(*pParentValue, true))
1292 __pTableView->SetItemChecked(groupIndex, itemIndex, true);
1295 pLabel = new (std::nothrow) Label();
1296 pLabel->Construct(itemRectangle, (itemText)->GetPointer());
1297 pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
1298 pLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
1300 pItem->AddControl(*pLabel);
1301 delete pParentValue;
1302 delete pCurrentValue;
1306 AppLogDebug("pItem is null");
1316 AppSettingForm::DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem)
1325 AppSettingForm::DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem)
1334 AppSettingForm::OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status)
1336 unsigned int hashCode = GetTranslateTableIndexToHashCode(groupIndex, itemIndex);
1337 AppLogDebug("%d %d", groupIndex, itemIndex);
1338 Node* pItemNode = GetItemHashCodeMap(hashCode);
1339 if (pItemNode == null)
1344 if ((pItemNode->GetType()).Equals(ID_APPSETTING_ITEM_TYPE_EXPAND_ITEM, false))
1346 ElementNode* pParent = dynamic_cast<ElementNode*>(pItemNode->GetParent());
1347 if (pParent == null)
1349 AppLogDebug("pParent is null");
1353 if (!pParent->GetType().Equals(ID_APPSETTING_ITEM_TYPE_EXPAND_LIST, false))
1355 AppLogDebug("pParent is not ITEM_TYPE_EXPAND_LIST");
1359 String* pValue = pItemNode->GetAttributeN(ID_APPSETTING_ATTRIBUTE_TYPE_TITLE);
1362 AppLogDebug("pValue is null");
1366 pParent->SetAttribute(ID_APPSETTING_ATTRIBUTE_TYPE_VALUE, *pValue);
1369 unsigned int hashCode = pParent->GetId().GetHashCode();
1370 ItemTag* itemTag = GetTranslateTableHashCodeToItemTag(hashCode);
1371 int loopCount = pParent->GetChildCount() + itemTag->GetItemIndex() + APPSETTING_DEFAULT_COUNT;
1373 for (int pos = itemTag->GetItemIndex() + APPSETTING_DEFAULT_COUNT; pos < loopCount; pos++)
1375 if (pos != itemIndex)
1377 __pTableView->SetItemChecked(groupIndex, pos, false);
1381 __pTableView->SetItemChecked(groupIndex, pos, true);
1386 __pStaticEdit->HideKeypad();
1387 __pStaticEdit->Invalidate(false);
1390 __pTableView->RefreshItem(itemTag->GetGroupIndex(), itemTag->GetItemIndex(), TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
1394 else if (pItemNode->GetType().Equals(ID_APPSETTING_ITEM_TYPE_BOOL, false))
1398 __pStaticEdit->HideKeypad();
1399 __pStaticEdit->Invalidate(false);
1402 bool itemSelectStatus = tableView.IsItemChecked(groupIndex, itemIndex);
1404 if (status == TABLE_VIEW_ITEM_STATUS_SELECTED)
1406 itemSelectStatus = (!itemSelectStatus);
1408 tableView.SetItemChecked(groupIndex, itemIndex, itemSelectStatus);
1409 pItemNode->SetAttribute(ID_APPSETTING_ATTRIBUTE_TYPE_VALUE, Boolean::ToString(itemSelectStatus));
1413 AppLogDebug("null");
1416 __pStaticEdit->HideKeypad();
1417 __pStaticEdit->Invalidate(false);
1424 AppSettingForm::OnActionPerformed(const Control& source, int actionId)
1426 String sourceNametmp(source.GetName());
1427 String sourceName(L"");
1429 StringTokenizer stringTokenizer(sourceNametmp, L":");
1430 stringTokenizer.GetNextToken(sourceName);
1432 Node* pNode = GetItemHashCodeMap(sourceName.GetHashCode());
1435 AppLogDebug("pNode is null");
1439 if (pNode->GetType().Equals(ID_APPSETTING_ITEM_TYPE_STRING, false))
1441 if (actionId == IDA_HEADER_BACK_BUTTON)
1443 __pStaticEdit->HideKeypad();
1444 __pStaticEdit->Invalidate(false);
1446 AppLogDebug("APPSETTING_BUG_REPORT: result error of GetHashCode");
1451 AppSettingForm::GetDefaultGroupItemHeight(void)
1453 return H_GROUP_INDEX_NO_TITLE_DEFAULT;
1456 AppSettingForm::GetDefaultItemHeight(void)
1458 return H_GROUP_ITEM_DEFAULT;
1462 AppSettingForm::UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem)
1467 AppSettingForm::UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
1469 unsigned int hashCode = GetTranslateTableIndexToHashCode(groupIndex, itemIndex);
1470 Node* pItemNode = GetItemHashCodeMap(hashCode);
1471 if (pItemNode == null)
1473 AppLogDebug("GetItemHashCodeMap is null");
1477 if (!pItemNode->GetType().Equals(ID_APPSETTING_ITEM_TYPE_EXPAND_LIST, false))
1479 AppLogDebug("pItemNode->GetType not equal ID_APPSETTING_ITEM_TYPE_EXPAND_LIST");
1483 Label* pLabel = static_cast<Label*>(pItem->GetControl(pItemNode->GetId(), false));
1486 AppLogDebug("pItem->GetControl is null");
1490 String* pTitle = pItemNode->GetAttributeN(ID_APPSETTING_ATTRIBUTE_TYPE_TITLE);
1491 String* pValue = pItemNode->GetAttributeN(ID_APPSETTING_ATTRIBUTE_TYPE_VALUE);
1492 if (pValue == null || pTitle == null)
1494 AppLogDebug("GetAttributeN is null");
1500 String expendList(*pTitle);
1501 expendList.Append(L" : ");
1502 expendList.Append(*pValue);
1504 pLabel->SetText(expendList);
1505 pLabel->Invalidate(false);
1512 AppSettingForm::OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated)
1517 AppSettingForm::OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status)
1522 AppSettingForm::OnAdjustmentValueChanged(const Tizen::Ui::Control& source, int adjustment)
1524 String sourceName = source.GetName();
1528 __pStaticEdit->HideKeypad();
1529 __pStaticEdit->Invalidate(false);
1532 Node* pNode = GetItemHashCodeMap(sourceName.GetHashCode());
1535 AppLogDebug("pNode is null");
1539 pNode->SetAttribute(ID_APPSETTING_ATTRIBUTE_TYPE_VALUE, Integer::ToString(adjustment));
1544 AppSettingForm::OnSliderBarMoved(Tizen::Ui::Controls::Slider& source, int value)
1548 __pStaticEdit->HideKeypad();
1549 __pStaticEdit->Invalidate(false);
1554 AppSettingForm::OnTextValueChanged(const Tizen::Ui::Control& source)
1556 String sourceName = source.GetName();
1558 Node* pNode = GetItemHashCodeMap(sourceName.GetHashCode());
1561 AppLogDebug("pNode is null");
1565 EditField* pEditField = static_cast<EditField*>(&const_cast<Control&>(source));
1569 changedText = pEditField->GetText();
1572 pNode->SetAttribute(ID_APPSETTING_ATTRIBUTE_TYPE_VALUE, changedText);
1576 AppSettingForm::OnKeypadWillOpen(Tizen::Ui::Control& source)
1578 __pStaticEdit = static_cast<EditField*>(&const_cast<Control&>(source));
1580 String sourceName = source.GetName();
1581 Node* pNode = GetItemHashCodeMap(sourceName.GetHashCode());
1584 AppLogDebug("pNode is null");
1588 if (pNode->GetType().Equals(ID_APPSETTING_ITEM_TYPE_STRING, false))
1590 String id = pNode->GetId();
1592 Header* pHeader = GetHeader();
1593 Bitmap* pBitmapNormal = ResourceManager::GetBitmapN(IDB_HEADER_BACK_BUTTON_NORMAL);
1594 Bitmap* pBitmapPress = ResourceManager::GetBitmapN(IDB_HEADER_BACK_BUTTON_PRESS);
1596 ButtonItem buttonItem;
1597 buttonItem.Construct(BUTTON_ITEM_STYLE_ICON, IDA_HEADER_BACK_BUTTON);
1598 buttonItem.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pBitmapNormal);
1599 buttonItem.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pBitmapPress);
1601 pHeader->SetButton(BUTTON_POSITION_RIGHT, buttonItem);
1602 pHeader->AddActionEventListener(*this);
1603 pHeader->Invalidate(false);
1604 pHeader->SetName(id + L":");
1605 SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, false);
1607 delete pBitmapNormal;
1608 delete pBitmapPress;
1613 AppSettingForm::OnKeypadClosed(Tizen::Ui::Control& source)
1615 if (__pGroupItemNodeList == null)
1617 AppLogDebug("__pGroupItemNodeList is null");
1618 CreateHeader(L"AppSettingDefault");
1623 result r = __pGroupItemNodeList->GetAt(0, pNode);
1629 AppLogDebug("pNode is null");
1633 AppLogDebug("GetAt fail [%s]", GetErrorMessage(r));
1635 CreateHeader(L"AppSettingDefault");
1639 Node* pParent = pNode->GetParent();
1640 if ((pParent == null)
1641 || (!pParent->GetType().Equals(L"setting", false)))
1643 if (pParent == null)
1645 AppLogDebug("pParent is null");
1649 AppLogDebug("pParent is not setting element [%ls]", pParent->GetType().GetPointer());
1651 CreateHeader(L"AppSettingDefault");
1655 String* pTitle = pParent->GetAttributeN(L"title");
1658 AppLogDebug("pTitle is null");
1659 CreateHeader(L"AppSettingDefault");
1662 CreateHeader(*pTitle);
1666 Clipboard* pClipboard = Clipboard::GetInstance();
1667 if (pClipboard != null && pClipboard->IsPopupVisible() == true)
1669 SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, false);
1671 unsigned int hashCode =source.GetName().GetHashCode();
1672 ItemTag* itemTag = GetTranslateTableHashCodeToItemTag(hashCode);
1673 ReSizingTableviewForClipboard(itemTag->GetGroupIndex(), itemTag->GetItemIndex() + APP_SETTING_DEFAULT_COUNT, true);
1677 SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, true);
1678 ReSizingTableviewForClipboard();
1683 AppSettingForm::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction)
1685 switch (keypadAction)
1687 case KEYPAD_ACTION_ENTER:
1689 case KEYPAD_ACTION_DONE:
1691 case KEYPAD_ACTION_SEARCH:
1693 __pStaticEdit->HideKeypad();
1694 __pStaticEdit->Invalidate(false);
1704 AppSettingForm::ReSizingTableviewForClipboard(int scrollToGroupIndex, int scrollToItemIndex, bool isSetScrollPosition)
1706 static int prevScrollToGroupIndex = 0;
1707 static int prevScrollToItemIndex = 0;
1709 RelativeLayout* pRelativeLayout = dynamic_cast<RelativeLayout*>(this->GetLayoutN());
1710 if (pRelativeLayout == null)
1712 AppLogDebug("this->GetLayoutN() is null");
1716 int reSizingTableviewHeight = H_RESIZE_PORTRAIT_CLIPBOARD;
1717 OrientationStatus orientationStatus = GetOrientationStatus();
1718 if (orientationStatus == ORIENTATION_STATUS_LANDSCAPE
1719 || orientationStatus == ORIENTATION_STATUS_LANDSCAPE_REVERSE)
1721 reSizingTableviewHeight = H_RESIZE_LANDSCAPE_CLIPBOARD;
1724 Clipboard* pClipboard = Clipboard::GetInstance();
1725 if (pClipboard->IsPopupVisible())
1727 pRelativeLayout->ResetRelation(*__pTableView, RECT_EDGE_BOTTOM);
1728 pRelativeLayout->SetHeight(*__pTableView, reSizingTableviewHeight);
1731 if (isSetScrollPosition == true)
1733 prevScrollToGroupIndex = scrollToGroupIndex;
1734 prevScrollToItemIndex = scrollToItemIndex;
1737 __pTableView->ScrollToItem(prevScrollToGroupIndex, prevScrollToItemIndex, TABLE_VIEW_SCROLL_ITEM_ALIGNMENT_BOTTOM);
1741 pRelativeLayout->ResetRelation(*__pTableView, RECT_EDGE_BOTTOM);
1742 pRelativeLayout->SetRelation(*__pTableView, *this, RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM);
1748 AppSettingForm::OnKeypadOpened(Tizen::Ui::Control& source)
1753 AppSettingForm::OnOrientationChanged(const Tizen::Ui::Control& source, Tizen::Ui::OrientationStatus orientationStatus)
1755 Clipboard* pClipboard = Clipboard::GetInstance();
1756 if (pClipboard != null && pClipboard->IsPopupVisible() == true)
1758 SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, false);
1760 ReSizingTableviewForClipboard();
1766 ItemTag::SetItemTag(int groupIndex, int itemIndex)
1768 __groupIndex = groupIndex;
1769 __itemIndex = itemIndex;
1773 ItemTag::GetItemTag(int& groupIndex, int& itemIndex)
1775 groupIndex = __groupIndex;
1776 itemIndex = __itemIndex;