2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 // Licensed under the Apache License, Version 2.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://www.apache.org/licenses/LICENSE-2.0
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 FApp_AppSetting.h
19 * @brief This is the header file for the %_AppSettingImpl class.
21 * This header file contains the declarations of the %_AppSettingImpl class.
24 #ifndef _FAPP_INTERNAL_APP_SETTING_IMPL_H_
25 #define _FAPP_INTERNAL_APP_SETTING_IMPL_H_
27 #include <dbus/dbus.h>
28 #include <dbus/dbus-glib-lowlevel.h>
29 #include <libxml/parser.h>
30 #include <FBaseObject.h>
31 #include <FBaseString.h>
32 #include <FBaseColHashMap.h>
33 #include <FBaseColLinkedListT.h>
34 #include <FAppAppSetting.h>
37 namespace Tizen { namespace App
40 enum _ElementType { ELEMENT_INVALID, ELEMENT_BOOL, ELEMENT_INTEGER, ELEMENT_STRING, ELEMENT_EXPANDLIST };
43 : public Tizen::Base::Object
46 static _AppSettingImpl* GetInstance(void);
47 static AppSetting* GetInstance(const Tizen::Base::String& version);
48 static AppSetting* GetInstanceByAppId(const AppId& appId);
49 static result ReleaseInstanceByAppId(const AppId& appId);
50 static result ReleaseOtherAppInstances(void);
51 static Tizen::Base::Collection::IList* GetAppSettingVersionListN(void);
52 result GetValue(const Tizen::Base::String& id, bool& value) const;
53 result GetValue(const Tizen::Base::String& id, int& value) const;
54 result GetValue(const Tizen::Base::String& id, Tizen::Base::String& value) const;
55 result SetValue(const Tizen::Base::String& id, bool value, bool save = true);
56 result SetValue(const Tizen::Base::String& id, int value, bool save = true);
57 result SetValue(const Tizen::Base::String& id, const Tizen::Base::String& value, bool save = true);
58 result SetAppSettingEventListener(IAppSettingEventListener* pListener);
61 // Gets the implementation.
63 // @return The implementation
64 // @param[in] The interface instance pointer
67 static _AppSettingImpl* GetInstance(AppSetting& appSetting);
70 // Gets the implementation.
72 // @return The implementation
73 // @param[in] The interface instance pointer
76 static const _AppSettingImpl* GetInstance(const AppSetting& appSetting);
78 _AppSettingImpl(void);
79 virtual ~_AppSettingImpl(void);
80 static AppSetting* CreateAppSetting(void);
81 static void SetImplInstance(AppSetting& appSetting, _AppSettingImpl& impl);
84 result Construct(const AppId& correspondAppId, const Tizen::Base::String& version = L"");
85 result ConstructByAppPath(const AppId& correspondAppId, const Tizen::Base::String& appRootPath);
88 void VisitNode(xmlNodePtr pCurrentNode);
89 void CheckNodeNameAndAddToCollection(xmlNodePtr pNode);
90 _ElementType GetElementType(xmlNodePtr pNode);
91 void GetMinMaxValue(xmlNodePtr pNode, _ElementType type, int& min, int& max);
92 Object* GetValueObjectN(_ElementType type, Tizen::Base::String& strValue, bool validValue);
93 bool UpdateProperty(xmlNodePtr pNode, const Tizen::Base::String& value);
94 bool InitializeDBus(void);
95 static DBusHandlerResult HandleDBusMessage(DBusConnection* connection, DBusMessage* message, void* user_data);
96 void SetValueFromDBusData(const char* pId, const char* pValue);
97 bool SendMessage(const Tizen::Base::String& id, const Tizen::Base::String& value, bool intType);
99 _AppSettingImpl(const _AppSettingImpl& rhs);
100 _AppSettingImpl& operator =(const _AppSettingImpl& rhs);
103 bool __oldVersionInstance;
104 IAppSettingEventListener* __pEventListener;
106 AppId __correspondAppId;
107 Tizen::Base::String __filePath;
108 Tizen::Base::Collection::HashMap __settingContainer;
110 class _MutiInstanceManager
113 _MutiInstanceManager(void);
114 ~_MutiInstanceManager(void);
115 AppSetting* GetInstance(const Tizen::Base::String& version);
116 AppSetting* GetInstanceByAppId(const AppId& appId);
117 result ReleaseInstanceByAppId(const AppId& appId);
118 result ReleaseOtherAppInstances(void);
120 Tizen::Base::Collection::HashMap __stringToInstanceMap;
122 static _MutiInstanceManager __appIdMultiInstanceMgr;
124 friend class AppSetting;
125 }; // _AppSettingImpl
128 #endif // _FAPP_INTERNAL_APP_SETTING_IMPL_H_