2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.1 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://floralicense.org/license/
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an AS IS BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
18 * @file StAppSettingManager.h
19 * @brief This is the header file for AppSetting Manager class.
22 #ifndef _ST_APPSETTING_MANAGER_H_
23 #define _ST_APPSETTING_MANAGER_H_
28 class ElementEnumerator;
31 class ObserverAttribute;
34 : public Tizen::Base::Object
45 Tizen::Base::String GetId(void);
46 Tizen::Base::String GetType(void);
47 Tizen::Base::String GetParentId(void);
48 Node* GetParent(void);
50 result AddAttribute(Tizen::Base::String key, Tizen::Base::String value);
51 result SetAttribute(Tizen::Base::String key, Tizen::Base::String value);
52 result RemoveAttriube(Tizen::Base::String key);
53 Tizen::Base::String* GetAttributeN(Tizen::Base::String key);
54 int GetAttriubteCount(void);
55 Tizen::Base::Collection::IMapEnumerator* GetAttributeIEnumeratorN(void);
57 void RegisterObserverlistener(ObserverAttribute* pObserver);
58 void UnRegisterObserverlistener(ObserverAttribute* pObserver);
60 virtual Enumerator* CreateEnumerator(void) = 0;
61 virtual Tizen::Base::Collection::IEnumerator* GetCurrentIEnumerator(void) = 0;
62 virtual NodeType GetNodeType(void) = 0;
63 virtual void DebugLog(void) = 0;
67 explicit Node(Tizen::Base::String id, Tizen::Base::String type, Node* pParent = null, Tizen::Base::String parentId = "NONE");
69 void RemoveAllAttribute(void);
70 void RemoveAllObserverListener(void);
71 void ChangedAttributeValue(Tizen::Base::String value);
76 Tizen::Base::Collection::LinkedListT<ObserverAttribute*>* __pRegisteredObserverList;
77 Tizen::Base::Collection::HashMap* __pNodeAttribute;
79 Tizen::Base::String __parentId;
80 Tizen::Base::String __id;
81 Tizen::Base::String __type;
88 explicit ElementLeaf(Tizen::Base::String id, Tizen::Base::String type, Node* pParent, Tizen::Base::String parentId)
89 : Node(id, type, pParent, parentId){}
90 virtual ~ElementLeaf(void){}
92 virtual Node::NodeType GetNodeType(void);
93 virtual Enumerator* CreateEnumerator(void);
94 virtual void DebugLog(void);
99 virtual Tizen::Base::Collection::IEnumerator* GetCurrentIEnumerator(void);
106 explicit ElementNode(Tizen::Base::String id, Tizen::Base::String type, Node* pParent = null, Tizen::Base::String parentId = "NONE");
107 virtual ~ElementNode(void);
109 Node* AddChild(Tizen::Base::String id, Tizen::Base::String type, NodeType nodetype = NODE_TYPE_ELEMENT);
110 Node* AddSilbing(Tizen::Base::String id, Tizen::Base::String type, NodeType nodetype = NODE_TYPE_ELEMENT);
111 Node* GetChild(Tizen::Base::String id);
112 Node* GetChild(int index);
113 int GetChildCount(void);
115 result RemoveChildAt(Tizen::Base::String id);
116 result RemoveSilbingAt(Tizen::Base::String id);
118 virtual Enumerator* CreateEnumerator(void);
119 virtual Node::NodeType GetNodeType(void);
120 virtual void DebugLog(void);
125 result Add(Node& node);
126 result Remove(Tizen::Base::String id, Node* pParent);
127 void RemoveAllChild(void);
128 void ResetCurrentIEnumerator(void);
130 virtual Tizen::Base::Collection::IEnumerator* GetCurrentIEnumerator(void);
133 friend class ElementEnumerator;
135 Tizen::Base::Collection::IEnumerator* __pCurrentEnum;
136 Tizen::Base::Collection::LinkedList* __pChild;
142 virtual ~Enumerator(void){}
144 virtual result MoveNext(void) = 0;
145 virtual Tizen::Base::Object* GetCurrentObject(void) = 0;
151 class ElementEnumerator
155 virtual ~ElementEnumerator(void);
157 result MoveNext(void);
158 Tizen::Base::Object* GetCurrentObject(void);
161 explicit ElementEnumerator(Node* pRootNode);
162 ElementEnumerator(void);
168 friend class ElementNode;
171 Tizen::Base::Collection::IEnumerator* __pCurrentIEnumerator;
172 Tizen::Base::Collection::StackT<Node*> __enumeratorStack;
179 virtual ~NullEnumerator(void){}
181 result MoveNext(void);
182 Tizen::Base::Object* GetCurrentObject(void);
185 explicit NullEnumerator(ElementLeaf* pRootNode) : __pRootNode(pRootNode){}
186 NullEnumerator(void){}
189 friend class ElementLeaf;
191 ElementLeaf* __pRootNode;
194 class ObserverAttribute
195 : public Tizen::Base::Object
198 virtual ~ObserverAttribute(void){}
200 virtual result OnChangedAttributeValue(Tizen::Base::String id, Tizen::Base::String value, Tizen::Base::String type) = 0;
201 virtual void UpdateChangedValue(void) = 0;
204 ObserverAttribute(void){}
208 : public ObserverAttribute
209 , public Tizen::App::IAppSettingEventListener
213 virtual ~IOAppSetting(void);
215 result Constructor(Tizen::Base::String appId);
216 virtual result OnChangedAttributeValue(Tizen::Base::String id, Tizen::Base::String value, Tizen::Base::String type);
217 virtual void UpdateChangedValue(void);
219 virtual void OnAppSettingChanged(const Tizen::Base::String& id){}
222 bool GetStringToBoolValue(Tizen::Base::String value);
223 int GetStringToIntegerValue(Tizen::Base::String value);
226 Tizen::Base::String __appId;
227 Tizen::App::AppSetting* __pAppSettingInstance;
228 Tizen::Base::Collection::HashMap* __pChangedAttributeHashMap;
231 class AppSettingManager
234 virtual ~AppSettingManager(void);
236 result XmlAppSettingFileRead(Tizen::Base::String filePath, ElementNode* pRootNode);
237 ElementNode* AddAppSettingRootNode(Tizen::Base::String rootId);
238 ElementNode* GetAppSettingRootNode(Tizen::Base::String rootId);
239 result RemoveAppSettingRootNode(Tizen::Base::String rootId);
240 Tizen::Base::Collection::IMapEnumerator* GetRottNodeIEnumeratorN(void);
241 int GetRootNodeCount(void);
243 static AppSettingManager* GetInstance(void);
246 AppSettingManager(void);
247 result Construct(void);
248 static void CreateInstance(void);
249 static void DestroyInstance(void);
252 static AppSettingManager* __pAppSettingManagerInstance;
253 Tizen::Base::Collection::HashMap* __pRootListHashMap;
256 #endif // _ST_APPSETTING_MANAGER_H_