fix klocwork issue
[platform/framework/native/uifw.git] / src / ui / inc / FUi_ResourceManager.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
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
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0/
10 //
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.
16 //
17 /**
18  * @file                FUi_ResourceManager.h
19  * @brief               This is the header file for _ResourceManager class.
20  * @version             3.0
21  *
22  * This header file contains declaration of _ResourceManager class.
23  * The ActionEvent class can call listener's method. So, when event occurred,
24  * application can handle it appropriately.
25  *
26  */
27 #ifndef _FUI_INTERNAL_RESOURCE_MANAGER_H_
28 #define _FUI_INTERNAL_RESOURCE_MANAGER_H_
29
30 #include <FOspConfig.h>
31 #include <FBaseString.h>
32 #include <FGrpBitmap.h>
33 #include "FUi_ControlManager.h"
34 #include "FUi_ResourceConfigTypes.h"
35
36 namespace Tizen { namespace Base
37 {
38 class Integer;
39 class Float;
40 }}//Tizen::Base::
41
42 namespace Tizen { namespace Base { namespace Collection
43 {
44 template<class Type> class ArrayListT;
45 }}}
46
47 namespace Tizen { namespace Graphics
48 {
49 class Bitmap;
50 class FloatDimension;
51 class Dimension;
52 class Color;
53 class _ICoordinateSystemTransformer;
54 }}//Tizen::Graphics
55
56 namespace Tizen { namespace Ui { namespace _Resource
57 {
58 class StringLoader;
59 class ConfigLoader;
60 class MapContainer;
61 class ConfigParser;
62 }}}
63
64 namespace Tizen { namespace Ui
65 {
66
67 enum _ResourceFeedbackStatus
68 {
69         _RESOURCE_FEEDBACK_STATUS_INIT = 0,
70         _RESOURCE_FEEDBACK_STATUS_PLAYED
71 };// enum _ResourceFeedbackPattern
72
73 enum _ResourceFeedbackPattern
74 {
75         _RESOURCE_FEEDBACK_PATTERN_TAP = 0,
76         _RESOURCE_FEEDBACK_PATTERN_SIP,
77         _RESOURCE_FEEDBACK_PATTERN_SIP_BACKSPACE,
78         _RESOURCE_FEEDBACK_PATTERN_MAX_CHARACTER,
79         _RESOURCE_FEEDBACK_PATTERN_KEY0,
80         _RESOURCE_FEEDBACK_PATTERN_KEY1,
81         _RESOURCE_FEEDBACK_PATTERN_KEY2,
82         _RESOURCE_FEEDBACK_PATTERN_KEY3,
83         _RESOURCE_FEEDBACK_PATTERN_KEY4,
84         _RESOURCE_FEEDBACK_PATTERN_KEY5,
85         _RESOURCE_FEEDBACK_PATTERN_KEY6,
86         _RESOURCE_FEEDBACK_PATTERN_KEY7,
87         _RESOURCE_FEEDBACK_PATTERN_KEY8,
88         _RESOURCE_FEEDBACK_PATTERN_KEY9,
89         _RESOURCE_FEEDBACK_PATTERN_KEY_STAR,
90         _RESOURCE_FEEDBACK_PATTERN_KEY_SHARP,
91         _RESOURCE_FEEDBACK_PATTERN_HOLD,
92         _RESOURCE_FEEDBACK_PATTERN_MULTI_TAP,
93         _RESOURCE_FEEDBACK_PATTERN_HW_TAP,
94         _RESOURCE_FEEDBACK_PATTERN_HW_HOLD,
95         _RESOURCE_FEEDBACK_PATTERN_MESSAGE,
96         _RESOURCE_FEEDBACK_PATTERN_MESSAGE_ON_CALL,
97         _RESOURCE_FEEDBACK_PATTERN_EMAIL,
98         _RESOURCE_FEEDBACK_PATTERN_EMAIL_ON_CALL,
99         _RESOURCE_FEEDBACK_PATTERN_WAKEUP,
100         _RESOURCE_FEEDBACK_PATTERN_WAKEUP_ON_CALL,
101         _RESOURCE_FEEDBACK_PATTERN_SCHEDULE,
102         _RESOURCE_FEEDBACK_PATTERN_SCHEDULE_ON_CALL,
103         _RESOURCE_FEEDBACK_PATTERN_TIMER,
104         _RESOURCE_FEEDBACK_PATTERN_TIMER_ON_CALL,
105         _RESOURCE_FEEDBACK_PATTERN_GENERAL,
106         _RESOURCE_FEEDBACK_PATTERN_GENERAL_ON_CALL,
107         _RESOURCE_FEEDBACK_PATTERN_POWERON,
108         _RESOURCE_FEEDBACK_PATTERN_POWEROFF,
109         _RESOURCE_FEEDBACK_PATTERN_CHARGERCONN,
110         _RESOURCE_FEEDBACK_PATTERN_CHARGERCONN_ON_CALL,
111         _RESOURCE_FEEDBACK_PATTERN_FULLCHARGED,
112         _RESOURCE_FEEDBACK_PATTERN_FULLCHARGED_ON_CALL,
113         _RESOURCE_FEEDBACK_PATTERN_LOWBATT,
114         _RESOURCE_FEEDBACK_PATTERN_LOWBATT_ON_CALL,
115         _RESOURCE_FEEDBACK_PATTERN_LOCK,
116         _RESOURCE_FEEDBACK_PATTERN_UNLOCK,
117         _RESOURCE_FEEDBACK_PATTERN_CALLCONNECT,
118         _RESOURCE_FEEDBACK_PATTERN_DISCALLCONNECT,
119         _RESOURCE_FEEDBACK_PATTERN_MINUTEMINDER,
120         _RESOURCE_FEEDBACK_PATTERN_VIBRATION,
121         _RESOURCE_FEEDBACK_PATTERN_SHUTTER,
122         _RESOURCE_FEEDBACK_PATTERN_LIST_REORDER,
123         _RESOURCE_FEEDBACK_PATTERN_SLIDER_SWEEP
124 }; // enum _ResourceFeedbackPattern
125
126 #define GET_SHAPE_CONFIG(shapeId, orientation, x)\
127         Tizen::Ui::_ResourceManager::GetInstance()->GetShape(Tizen::Ui::_Resource::_##shapeId##_SHAPE, orientation, x)
128
129 #define GET_DIMENSION_CONFIG(dimensionId, orientation, x)\
130         Tizen::Ui::_ResourceManager::GetInstance()->GetDimension(Tizen::Ui::_Resource::_##dimensionId##_DIMENSION, orientation, x)
131
132 #define GET_COLOR_CONFIG(colorId, x) \
133         Tizen::Ui::_ResourceManager::GetInstance()->GetColor(Tizen::Ui::_Resource::_##colorId##_COLOR, x)
134
135 #define GET_BITMAP_CONFIG_N(bitmapId, pixelFormat, pOutBitmap)\
136         Tizen::Ui::_ResourceManager::GetInstance()->GetBitmapN(Tizen::Ui::_Resource::_##bitmapId##_IMAGE, pixelFormat, _CONTROL_ORIENTATION_PORTRAIT, false, 0, pOutBitmap)
137
138 #define GET_REPLACED_BITMAP_CONFIG_N(bitmapId, pixelFormat, color ,pOutBitmap)\
139         Tizen::Ui::_ResourceManager::GetInstance()->GetBitmapN(Tizen::Ui::_Resource::_##bitmapId##_IMAGE, pixelFormat, _CONTROL_ORIENTATION_PORTRAIT, true, color, pOutBitmap)
140
141 #define GET_STRING_CONFIG(stringId, string)\
142         Tizen::Ui::_ResourceManager::GetInstance()->GetString(#stringId, string)
143
144 #define GET_FIXED_VALUE_CONFIG(fixedValueId, orientation, x)\
145         Tizen::Ui::_ResourceManager::GetInstance()->GetFixedValue(Tizen::Ui::_Resource::_##fixedValueId##_FIXED_VALUE, orientation, x)
146
147 #define GET_ANIMATION_CONFIG_N(animationId, x)\
148         Tizen::Ui::_ResourceManager::GetInstance()->GetAnimationN(Tizen::Ui::_Resource::_##animationId##_ANIMATION, x)
149
150 #define IS_CUSTOM_BITMAP(bitmapId) \
151         Tizen::Ui::_ResourceManager::GetInstance()->IsCustomBitmap(Tizen::Ui::_Resource::_##bitmapId##_IMAGE)
152
153 #define IS_CUSTOM_COLOR(colorId) \
154         Tizen::Ui::_ResourceManager::GetInstance()->IsCustomColor(Tizen::Ui::_Resource::_##colorId##_COLOR)
155
156 #define PLAY_FEEDBACK(pattern, control) \
157         Tizen::Ui::_ResourceManager::GetInstance()->PlayFeedback(pattern, control)
158
159 #define IS_PLAYED_FEEDBACK() \
160         Tizen::Ui::_ResourceManager::GetInstance()->IsFeedbackPlayed()
161
162 class _OSP_EXPORT_ _ResourceManager
163 {
164 public:
165         static void PreInitialize(void);
166         static _ResourceManager* GetInstance(void);
167         result GetBitmapN(int bitmapId, Tizen::Graphics::BitmapPixelFormat pixelFormat, _ControlOrientation orientation, bool replacementColor, const Tizen::Graphics::Color& color, Tizen::Graphics::Bitmap*& pBitmap);
168         result GetString(const char* stringId, Tizen::Base::String& string);
169         result GetColor(int colorId, Tizen::Graphics::Color& color);
170         result GetShape(int shapeId, _ControlOrientation orientation, int& value);
171         result GetFixedValue(int shapeId, _ControlOrientation orientation, int& value);
172         result GetDimension(int dimensionId, _ControlOrientation orientation, Tizen::Graphics::Dimension& dimension);
173         result GetShape(int shapeId, _ControlOrientation orientation, float& value);
174         result GetFixedValue(int shapeId, _ControlOrientation orientation, float& value);
175         result GetDimension(int dimensionId, _ControlOrientation orientation, Tizen::Graphics::FloatDimension& dimension);
176         result GetAnimationN(int animationId, Tizen::Base::Collection::ArrayList*& pList);
177         void GetThemeName(Tizen::Base::String& systemTheme, Tizen::Base::String& userTheme) const;
178         void ReloadTheme(Tizen::Base::String& themeName, bool userdefine);
179         bool IsCustomColor(int colorId);
180         bool IsCustomBitmap(int bitmapId);
181         result PlayFeedback(_ResourceFeedbackPattern pattern, const _Control* pControl);
182         bool IsFeedbackPlayed(void);
183         void AcquireFeedback(void);
184         void ReleaseFeedback(void);
185         void ResetFeedback(void);
186
187         Tizen::Graphics::Dimension GetLogicalScreenSizen(void);
188
189 private:
190         _ResourceManager(void);
191         ~_ResourceManager(void);
192         static void CreateInstance(void);
193
194         void PostInitialize(void);
195         void DoPostInitialization(void);
196         void SelectConfigTable(void);
197
198         _ResourceManager(const _ResourceManager& rhs);
199         _ResourceManager& operator =(const _ResourceManager& rhs);
200
201         enum MapContainerType
202         {
203                 MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT = 0,
204                 MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE = 1,
205                 MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT = 2,
206                 MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE = 3,
207                 MAP_CONTAINER_TYPE_MAX = 4,
208         };
209         result GetBitmapInternalN(const Tizen::Base::String& fileName, Tizen::Graphics::BitmapPixelFormat pixelFormat, _ControlOrientation orientation, bool isCustom, bool replacementColor, const Tizen::Graphics::Color& color, Tizen::Graphics::Bitmap*& pBitmap);
210         result GetDefaultShapeWithScaling(int shapeId, _ControlOrientation orientation, int& value);
211         result GetDefaultShapeWithScaling(int shapeId, _ControlOrientation orientation, Tizen::Graphics::Dimension& value);
212         result GetDefaultShapeWithScaling(int shapeId, _ControlOrientation orientation, float& value);
213         result GetDefaultShapeWithScaling(int shapeId, _ControlOrientation orientation, Tizen::Graphics::FloatDimension& value);
214         result LoadThemeInformation(Tizen::Base::String& systemTheme, Tizen::Base::String& userTheme);
215         bool InitializeTheme(_Resource::MapContainer& mapContainer);
216         void LoadConfig(const Tizen::Base::String& resolution, _Resource::MapContainer& mapContainer, int width, int height, bool preInit);
217         _Resource::MapContainer* GetMapContainer(MapContainerType type);
218         void SetSystemColor(void);
219         Tizen::Base::String FindImagePath(const Tizen::Base::String& fileName, int& findFolder, bool isCustom);
220         bool GetDensityDirectory(const Tizen::Base::String& directoryName, float& scaleFactor);
221         bool GetResolutionDirectory(const Tizen::Base::String& directoryName, float& scaleFactor);
222         void LoadPaletteInformation(const Tizen::Base::String& systemTheme);
223         void LoadBlackPalette(void);
224         void LoadWhitePalette(void);
225         void LoadDefaultPalette(void);
226 private:
227
228         struct ResourceFallbackItem
229         {
230                 float scaleFactor;
231                 Tizen::Base::String directoryName;
232         };
233
234         _Resource::StringLoader* __pStringLoader;
235         _Resource::ConfigParser* __pParser;
236         _Resource::MapContainer* __pMapContainer[MAP_CONTAINER_TYPE_MAX];
237         Tizen::Graphics::_ICoordinateSystemTransformer* __pTransformer;
238         Tizen::Base::String __appBasePortraitMode;
239         Tizen::Base::String __appBaseLandscapeMode;
240         Tizen::Base::String __targetPortraitMode;
241         Tizen::Base::String __targetLandscapeMode;
242         Tizen::Base::String __defaultPortraitMode;
243         Tizen::Base::String __defaultLandscapeMode;
244         Tizen::Base::String __systemTheme;
245         Tizen::Base::String __userTheme;
246         bool __appliedUserTheme;
247         bool __initializeFeedback;
248         bool __preInitialize;
249         bool __postInitialize;
250         int __appBaseWidth;
251         int __appBaseHeight;
252         int __targetWidth;
253         int __targetHeight;
254         int __deviceDPI;
255         int __logicalWidth;
256         int __logicalHeight;
257         _ResourceFeedbackStatus __feedbackStatus;
258         int __feedbackAcquireCount;
259         Tizen::Base::Collection::ArrayListT<ResourceFallbackItem*>* __pFallbackList;
260 };
261
262 }}//Tizen::Ui
263
264 #endif // _FUI_INTERNAL_RESOURCE_MANAGER_H_