2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 * @file FApp_AppSetting.h
20 * @brief This is the header file for the %_AppSettingImpl class.
22 * This header file contains the declarations of the %_AppSettingImpl class.
25 #ifndef _FAPP_INTERNAL_APP_SETTING_IMPL_H_
26 #define _FAPP_INTERNAL_APP_SETTING_IMPL_H_
28 #include <dbus/dbus.h>
29 #include <dbus/dbus-glib-lowlevel.h>
30 #include <libxml/parser.h>
31 #include <FBaseObject.h>
32 #include <FBaseString.h>
33 #include <FBaseColHashMap.h>
34 #include <FBaseColLinkedListT.h>
35 #include <FAppAppSetting.h>
38 namespace Tizen { namespace App
41 enum _ElementType { ELEMENT_INVALID, ELEMENT_BOOL, ELEMENT_INTEGER, ELEMENT_STRING, ELEMENT_EXPANDLIST };
44 : public Tizen::Base::Object
47 static _AppSettingImpl* GetInstance(void);
48 static AppSetting* GetInstance(const Tizen::Base::String& version);
49 static AppSetting* GetInstanceByAppId(const AppId& appId);
50 static result ReleaseInstanceByAppId(const AppId& appId);
51 static result ReleaseOtherAppInstances(void);
52 static Tizen::Base::Collection::IList* GetAppSettingVersionListN(void);
53 result GetValue(const Tizen::Base::String& id, bool& value) const;
54 result GetValue(const Tizen::Base::String& id, int& value) const;
55 result GetValue(const Tizen::Base::String& id, Tizen::Base::String& value) const;
56 result SetValue(const Tizen::Base::String& id, bool value, bool save = true);
57 result SetValue(const Tizen::Base::String& id, int value, bool save = true);
58 result SetValue(const Tizen::Base::String& id, const Tizen::Base::String& value, bool save = true);
59 result SetAppSettingEventListener(IAppSettingEventListener* pListener);
62 // Gets the implementation.
64 // @return The implementation
65 // @param[in] The interface instance pointer
68 static _AppSettingImpl* GetInstance(AppSetting& appSetting);
71 // Gets the implementation.
73 // @return The implementation
74 // @param[in] The interface instance pointer
77 static const _AppSettingImpl* GetInstance(const AppSetting& appSetting);
79 _AppSettingImpl(void);
80 virtual ~_AppSettingImpl(void);
81 static AppSetting* CreateAppSetting(void);
82 static void SetImplInstance(AppSetting& appSetting, _AppSettingImpl& impl);
85 result Construct(const AppId& correspondAppId, const Tizen::Base::String& version = L"");
86 result ConstructByAppPath(const AppId& correspondAppId, const Tizen::Base::String& appRootPath);
89 void VisitNode(xmlNodePtr pCurrentNode);
90 void CheckNodeNameAndAddToCollection(xmlNodePtr pNode);
91 _ElementType GetElementType(xmlNodePtr pNode);
92 void GetMinMaxValue(xmlNodePtr pNode, _ElementType type, int& min, int& max);
93 Object* GetValueObjectN(_ElementType type, Tizen::Base::String& strValue, bool validValue);
94 bool UpdateProperty(xmlNodePtr pNode, const Tizen::Base::String& value);
95 bool InitizlizeDBus(void);
96 static DBusHandlerResult HandleDBusMessage(DBusConnection* connection, DBusMessage* message, void* user_data);
97 void SetValueFromDBusData(const char* pId, const char* pValue);
98 bool SendMessage(const Tizen::Base::String& id, const Tizen::Base::String& value, bool intType);
100 _AppSettingImpl(const _AppSettingImpl& rhs);
101 _AppSettingImpl& operator =(const _AppSettingImpl& rhs);
104 bool __oldVersionInstance;
105 IAppSettingEventListener* __pEventListener;
107 AppId __correspondAppId;
108 Tizen::Base::String __filePath;
109 Tizen::Base::Collection::HashMap __settingContainer;
111 class _MutiInstanceManager
114 _MutiInstanceManager(void);
115 ~_MutiInstanceManager(void);
116 AppSetting* GetInstance(const Tizen::Base::String& version);
117 AppSetting* GetInstanceByAppId(const AppId& appId);
118 result ReleaseInstanceByAppId(const AppId& appId);
119 result ReleaseOtherAppInstances(void);
121 Tizen::Base::Collection::HashMap __stringToInstanceMap;
123 static _MutiInstanceManager __appIdMultiInstanceMgr;
125 friend class AppSetting;
126 }; // _AppSettingImpl
129 #endif // _FAPP_INTERNAL_APP_SETTING_IMPL_H_