2 // Open Service Platform
3 // Copyright (c) 2012-2013 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 #include <feedback/feedback.h>
20 #include <FBaseInteger.h>
21 #include <FBaseByteBuffer.h>
22 #include <FBaseColIMap.h>
23 #include <FBaseColArrayListT.h>
24 #include <FBaseSysLog.h>
25 #include <FIoDirectory.h>
27 #include <FGrpBitmap.h>
28 #include <FGrpDimension.h>
29 #include <FGrpColor.h>
30 #include <FMediaImageTypes.h>
31 #include <FUiCtrlAnimationFrame.h>
32 #include <FApp_AppInfo.h>
33 #include <FAppPkg_PackageManagerImpl.h>
34 #include <FIo_DirectoryImpl.h>
35 #include <FGrp_BitmapImpl.h>
36 #include <FGrp_CanvasImpl.h>
37 #include <FGrp_CoordinateSystem.h>
38 #include <FGrp_Screen.h>
39 #include <FMedia_ImageDecoder.h>
40 #include <FSys_SystemInfoImpl.h>
41 #include "FUi_ControlManager.h"
42 #include "FUi_CoordinateSystemUtils.h"
43 #include "FUi_ResourceManager.h"
44 #include "FUi_ResourceStringLoader.h"
45 #include "FUi_ResourceConfigLoader.h"
46 #include "FUi_ResourceConfigParser.h"
47 #include "FUi_ResourceMapContainer.h"
49 using namespace Tizen::App;
50 using namespace Tizen::App::Package;
51 using namespace Tizen::Base;
52 using namespace Tizen::Base::Collection;
53 using namespace Tizen::Io;
54 using namespace Tizen::Graphics;
55 using namespace Tizen::Media;
56 using namespace Tizen::Ui::Controls;
57 using namespace Tizen::Ui::_Resource;
61 const int DEFAULT_SCREEN_WIDTH = 720;
62 const int DEFAULT_SCREEN_HEIGHT = 1280;
64 const int DPI_FOR_XHIGH = 290;
65 const int DPI_FOR_HIGH = 200;
66 const int DPI_FOR_MIDDLE = 150;
67 const int DPI_FOR_LOW = 0;
69 template<typename T> class ResourceFallbackItemComparer
70 : public IComparerT <T>
73 ResourceFallbackItemComparer(void) {}
74 virtual ~ResourceFallbackItemComparer(void) {}
75 virtual result Compare(const T& obj1, const T& obj2, int& cmp) const
77 if (obj1->scaleFactor > obj2->scaleFactor)
82 else if (obj1->scaleFactor < obj2->scaleFactor)
95 MediaPixelFormat ConvertBitmapPixelFormatToMediaPixelFormat(BitmapPixelFormat format)
97 MediaPixelFormat out = MEDIA_PIXEL_FORMAT_NONE;
100 case BITMAP_PIXEL_FORMAT_RGB565:
101 out = MEDIA_PIXEL_FORMAT_RGB565LE;
103 case BITMAP_PIXEL_FORMAT_ARGB8888:
104 out = MEDIA_PIXEL_FORMAT_BGRA8888;
106 case BITMAP_PIXEL_FORMAT_R8G8B8A8:
107 out = MEDIA_PIXEL_FORMAT_RGBA8888;
115 feedback_pattern_e Convert_ResourceFeedbackPatternTofeedback_pattern_e(Tizen::Ui::_ResourceFeedbackPattern pattern)
117 feedback_pattern_e outPattern = FEEDBACK_PATTERN_TAP;
120 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_TAP:
121 outPattern = FEEDBACK_PATTERN_TAP;
123 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_SIP:
124 outPattern = FEEDBACK_PATTERN_SIP;
126 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_SIP_BACKSPACE:
127 outPattern = FEEDBACK_PATTERN_SIP_BACKSPACE;
129 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_MAX_CHARACTER:
130 outPattern = FEEDBACK_PATTERN_MAX_CHARACTER;
132 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_KEY0:
133 outPattern = FEEDBACK_PATTERN_KEY0;
135 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_KEY1:
136 outPattern = FEEDBACK_PATTERN_KEY1;
138 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_KEY2:
139 outPattern = FEEDBACK_PATTERN_KEY2;
141 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_KEY3:
142 outPattern = FEEDBACK_PATTERN_KEY3;
144 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_KEY4:
145 outPattern = FEEDBACK_PATTERN_KEY4;
147 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_KEY5:
148 outPattern = FEEDBACK_PATTERN_KEY5;
150 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_KEY6:
151 outPattern = FEEDBACK_PATTERN_KEY6;
153 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_KEY7:
154 outPattern = FEEDBACK_PATTERN_KEY7;
156 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_KEY8:
157 outPattern = FEEDBACK_PATTERN_KEY8;
159 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_KEY9:
160 outPattern = FEEDBACK_PATTERN_KEY9;
162 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_KEY_STAR:
163 outPattern = FEEDBACK_PATTERN_KEY_STAR;
165 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_KEY_SHARP:
166 outPattern = FEEDBACK_PATTERN_KEY_SHARP;
168 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_HOLD:
169 outPattern = FEEDBACK_PATTERN_HOLD;
171 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_MULTI_TAP:
172 outPattern = FEEDBACK_PATTERN_MULTI_TAP;
174 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_HW_TAP:
175 outPattern = FEEDBACK_PATTERN_HW_TAP;
177 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_HW_HOLD:
178 outPattern = FEEDBACK_PATTERN_HW_HOLD;
180 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_MESSAGE:
181 outPattern = FEEDBACK_PATTERN_MESSAGE;
183 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_MESSAGE_ON_CALL:
184 outPattern = FEEDBACK_PATTERN_MESSAGE_ON_CALL;
186 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_EMAIL:
187 outPattern = FEEDBACK_PATTERN_EMAIL;
189 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_EMAIL_ON_CALL:
190 outPattern = FEEDBACK_PATTERN_EMAIL_ON_CALL;
192 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_WAKEUP:
193 outPattern = FEEDBACK_PATTERN_WAKEUP;
195 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_WAKEUP_ON_CALL:
196 outPattern = FEEDBACK_PATTERN_WAKEUP_ON_CALL;
198 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_SCHEDULE:
199 outPattern = FEEDBACK_PATTERN_SCHEDULE;
201 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_SCHEDULE_ON_CALL:
202 outPattern = FEEDBACK_PATTERN_SCHEDULE_ON_CALL;
204 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_TIMER:
205 outPattern = FEEDBACK_PATTERN_TIMER;
207 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_TIMER_ON_CALL:
208 outPattern = FEEDBACK_PATTERN_TIMER_ON_CALL;
210 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_GENERAL:
211 outPattern = FEEDBACK_PATTERN_GENERAL;
213 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_GENERAL_ON_CALL:
214 outPattern = FEEDBACK_PATTERN_GENERAL_ON_CALL;
216 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_POWERON:
217 outPattern = FEEDBACK_PATTERN_POWERON;
219 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_POWEROFF:
220 outPattern = FEEDBACK_PATTERN_POWEROFF;
222 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_CHARGERCONN:
223 outPattern = FEEDBACK_PATTERN_CHARGERCONN;
225 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_CHARGERCONN_ON_CALL:
226 outPattern = FEEDBACK_PATTERN_CHARGERCONN_ON_CALL;
228 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_FULLCHARGED:
229 outPattern = FEEDBACK_PATTERN_FULLCHARGED;
231 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_FULLCHARGED_ON_CALL:
232 outPattern = FEEDBACK_PATTERN_FULLCHARGED_ON_CALL;
234 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_LOWBATT:
235 outPattern = FEEDBACK_PATTERN_LOWBATT;
237 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_LOWBATT_ON_CALL:
238 outPattern = FEEDBACK_PATTERN_LOWBATT_ON_CALL;
240 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_LOCK:
241 outPattern = FEEDBACK_PATTERN_LOCK;
243 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_UNLOCK:
244 outPattern = FEEDBACK_PATTERN_UNLOCK;
246 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_CALLCONNECT:
247 outPattern = FEEDBACK_PATTERN_CALLCONNECT;
249 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_DISCALLCONNECT:
250 outPattern = FEEDBACK_PATTERN_DISCALLCONNECT;
252 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_MINUTEMINDER:
253 outPattern = FEEDBACK_PATTERN_MINUTEMINDER;
255 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_VIBRATION:
256 outPattern = FEEDBACK_PATTERN_VIBRATION;
258 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_SHUTTER:
259 outPattern = FEEDBACK_PATTERN_SHUTTER;
261 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_LIST_REORDER:
262 outPattern = FEEDBACK_PATTERN_LIST_REORDER;
264 case Tizen::Ui::_RESOURCE_FEEDBACK_PATTERN_SLIDER_SWEEP:
265 outPattern = FEEDBACK_PATTERN_SLIDER_SWEEP;
274 namespace Tizen { namespace Graphics
277 _CreateCoordinateTransformer(_ICoordinateSystemTransformer*& pTransformer, int srcResolution, _BaseScreenSize srcBaseScreenSize, Dimension destResolution, _BaseScreenSize destBaseScreenSize);
280 namespace Tizen { namespace Ui
283 int _SCREEN_HEIGHT_ = 0;
285 Color _GetDefaultBackgroundColor(void)
288 GET_COLOR_CONFIG(BASIC::background, color);
291 Color _GetDefaultForegroundColor(void)
294 GET_COLOR_CONFIG(BASIC::foreground, color);
298 _ResourceManager* pRsrcMgr = null;
301 _ResourceManager::GetInstance(void)
303 static pthread_once_t onceBlock = PTHREAD_ONCE_INIT;
305 if (pRsrcMgr == null)
307 pthread_once(&onceBlock, CreateInstance);
308 pRsrcMgr->DoPostInitialization();
314 _ResourceManager::CreateInstance(void)
316 static _ResourceManager pManager;
317 pRsrcMgr = &pManager;
318 _CanvasImpl::SetThemeInfoCallback(_GetDefaultForegroundColor, _GetDefaultBackgroundColor);
321 _ResourceManager::_ResourceManager(void)
322 : __pStringLoader(null)
323 , __pTransformer(null)
324 , __appBasePortraitMode("")
325 , __appBaseLandscapeMode("")
326 , __targetPortraitMode("")
327 , __targetLandscapeMode("")
328 , __defaultPortraitMode(L"720x1280")
329 , __defaultLandscapeMode(L"1280x720")
332 , __appliedUserTheme(false)
333 , __initializeFeedback(false)
335 , __appBaseHeight(-1)
339 , __feedbackStatus(_RESOURCE_FEEDBACK_STATUS_INIT)
340 , __feedbackAcquireCount(0)
341 , __pFallbackList(null)
343 __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT] = null;
344 __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE] = null;
345 __pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT] = null;
346 __pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE] = null;
348 int appBaseWidth = DEFAULT_SCREEN_WIDTH;
349 int appBaseHeight = DEFAULT_SCREEN_HEIGHT;
351 result r = E_SUCCESS;
353 int appLogicalResolution = _CoordinateSystem::GetInstance()->GetLogicalResolutionInt();
355 if (_CreateCoordinateTransformer(__pTransformer,DEFAULT_SCREEN_WIDTH, _CoordinateSystem::GetInstance()->GetLogicalBaseScreenSize(),
356 Dimension(appLogicalResolution, appLogicalResolution), _CoordinateSystem::GetInstance()->GetPhysicalBaseScreenSize()) != E_SUCCESS)
361 r = Tizen::System::_SystemInfoImpl::GetSysInfo(L"http://tizen.org/feature/screen.dpi", __deviceDPI);
362 SysTryReturn(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] system error occurred");
364 _ControlManager::GetInstance()->SetScreenDpi(__deviceDPI);
366 switch(appLogicalResolution)
382 appBaseHeight = 1280;
385 r = Tizen::System::_SystemInfoImpl::GetSysInfo("http://tizen.org/feature/screen.width", appBaseWidth);
386 SysTryReturn(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] system error occurred");
387 r = Tizen::System::_SystemInfoImpl::GetSysInfo("http://tizen.org/feature/screen.height", appBaseHeight);
388 SysTryReturn(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] system error occurred");
391 __appBaseWidth = appBaseWidth;
392 __appBaseHeight = appBaseHeight;
394 __appBasePortraitMode.Append(appBaseWidth);
395 __appBasePortraitMode.Append(L"x");
396 __appBasePortraitMode.Append(appBaseHeight);
398 __appBaseLandscapeMode.Append(appBaseHeight);
399 __appBaseLandscapeMode.Append(L"x");
400 __appBaseLandscapeMode.Append(appBaseWidth);
403 r = Tizen::System::_SystemInfoImpl::GetSysInfo("http://tizen.org/feature/screen.width", _width);
404 SysTryReturn(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] system error occurred");
405 r = Tizen::System::_SystemInfoImpl::GetSysInfo("http://tizen.org/feature/screen.height", _height);
406 SysTryReturn(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] system error occurred");
408 __targetWidth = _width;
409 __targetHeight = _height;
410 __targetPortraitMode.Append(_width);
411 __targetPortraitMode.Append(L"x");
412 __targetPortraitMode.Append(_height);
414 __targetLandscapeMode.Append(_height);
415 __targetLandscapeMode.Append(L"x");
416 __targetLandscapeMode.Append(_width);
418 Dimension dim = _CoordinateSystemUtils::InverseTransform(Dimension(_Screen::GetWidth(), _Screen::GetHeight()));
419 __logicalWidth = dim.width;
420 __logicalHeight = dim.height;
421 LoadThemeInformation(__systemTheme, __userTheme);
423 __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT] = new (std::nothrow) MapContainer();
424 SysTryReturnVoidResult(NID_UI, __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT], E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
425 __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT]->SetResolution(__appBasePortraitMode);
426 if (!(InitializeTheme(*__pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT])))
430 __pStringLoader = new (std::nothrow) StringLoader();
431 SysTryReturnVoidResult(NID_UI, __pStringLoader, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
435 _ResourceManager::InitializeTheme(MapContainer& mapContainer)
438 String themeFile(L"");
439 mapContainer.CreateMap(RESOURCE_TYPE_SHAPE);
440 mapContainer.CreateMap(RESOURCE_TYPE_FIXED_VALUE);
441 mapContainer.CreateMap(RESOURCE_TYPE_DIMENSION);
442 mapContainer.CreateMap(RESOURCE_TYPE_IMAGE);
443 mapContainer.CreateMap(RESOURCE_TYPE_COLOR);
444 mapContainer.CreateMap(RESOURCE_TYPE_ANIMATION);
445 mapContainer.SetResolution(__appBasePortraitMode);
446 themeFile = String(L"/usr/share/osp/themes/"+__systemTheme + ".xml");
447 ConfigParser* pParser = new (std::nothrow) ConfigParser();
448 SysTryReturn(NID_UI, pParser, false, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
449 r = pParser->Parse(themeFile, mapContainer);
450 LoadConfig(__appBasePortraitMode, mapContainer, __appBaseWidth, __appBaseHeight);
451 if (__userTheme.GetLength() > 0)
453 themeFile = String(_AppInfo::GetAppRootPath()+L"res/themes/" +__userTheme + L"/" +__userTheme + ".xml");
454 r = pParser->Parse(themeFile, mapContainer);
461 _ResourceManager::LoadConfig(const String& resolution, MapContainer& mapContainer, int width, int height)
463 _ICoordinateSystemTransformer* pTransformer = _CoordinateSystem::GetTransformerN(__appBaseWidth, _CoordinateSystem::GetInstance()->GetLogicalBaseScreenSize(),
464 Dimension(width, height), BASE_SCREEN_SIZE_NORMAL);
468 _SCREEN_HEIGHT_ = pTransformer->Transform(__logicalHeight);
472 _SCREEN_HEIGHT_ = __logicalHeight;
475 SysLog(NID_UI, "_SCREEN_HEIGHT_ : %d, resolution : %ls", _SCREEN_HEIGHT_, resolution.GetPointer());
476 int count = ConfigLoader::GetInstance()->GetInitFuncCount();
477 for (int i = 0; i < count; i++)
479 _Init_Func func = null;
480 ConfigLoader::GetInstance()->GetInitFunc(i, func);
483 func(mapContainer, resolution);
490 _ResourceManager::DoPostInitialization(void)
492 if (_AppInfo::IsOspCompat())
494 SysLog(NID_UI, "Compatibility symbols are loaded.");
500 _ResourceManager::GetMapContainer(MapContainerType type)
502 MapContainer* pContainer = null;
505 case MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT:
506 pContainer = __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT];
508 case MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE:
509 if (__pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE])
511 pContainer = __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE];
515 pContainer = new (std::nothrow) MapContainer();
516 SysTryReturn(NID_UI, pContainer, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
517 pContainer->SetResolution(__appBaseLandscapeMode);
518 pContainer->CreateMap(RESOURCE_TYPE_SHAPE);
519 pContainer->CreateMap(RESOURCE_TYPE_DIMENSION);
520 pContainer->CreateMap(RESOURCE_TYPE_FIXED_VALUE);
521 LoadConfig(__appBaseLandscapeMode, *pContainer, __appBaseWidth, __appBaseHeight);
522 __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE] = pContainer;
525 case MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT:
526 if (__pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT])
528 pContainer = __pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT];
532 if(__defaultPortraitMode == __appBasePortraitMode)
534 __pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT] = __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT];
535 __pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE] = __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE];
536 pContainer = __pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT];
540 pContainer = new (std::nothrow) MapContainer();
541 SysTryReturn(NID_UI, pContainer, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
542 pContainer->SetResolution(__defaultPortraitMode);
543 pContainer->CreateMap(RESOURCE_TYPE_SHAPE);
544 pContainer->CreateMap(RESOURCE_TYPE_DIMENSION);
545 pContainer->CreateMap(RESOURCE_TYPE_FIXED_VALUE);
546 LoadConfig(__defaultPortraitMode, *pContainer, DEFAULT_SCREEN_WIDTH, DEFAULT_SCREEN_HEIGHT);
547 __pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT] = pContainer;
551 case MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE:
552 if (__pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE])
554 pContainer = __pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE];
558 if(__defaultPortraitMode == __appBasePortraitMode)
560 __pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT] = __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT];
561 __pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE] = __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE];
562 pContainer = __pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE];
566 pContainer = new (std::nothrow) MapContainer();
567 SysTryReturn(NID_UI, pContainer, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
568 pContainer->SetResolution(__defaultLandscapeMode);
569 pContainer->CreateMap(RESOURCE_TYPE_SHAPE);
570 pContainer->CreateMap(RESOURCE_TYPE_DIMENSION);
571 pContainer->CreateMap(RESOURCE_TYPE_FIXED_VALUE);
572 LoadConfig(__defaultLandscapeMode, *pContainer, DEFAULT_SCREEN_WIDTH, DEFAULT_SCREEN_HEIGHT);
573 __pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE] = pContainer;
583 _ResourceManager::~_ResourceManager(void)
585 delete __pStringLoader;
586 __pStringLoader = null;
587 delete __pTransformer;
588 __pTransformer = null;
589 delete __pFallbackList;
590 __pFallbackList = null;
591 bool deleteDefaultMap = true;
592 if (__pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT] == __pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT])
594 deleteDefaultMap = false;
596 delete __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT];
597 __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT] = null;
598 delete __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE];
599 __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE] = null;
601 if (deleteDefaultMap)
603 delete __pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT];
604 __pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT] = null;
605 delete __pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE];
606 __pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE] = null;
609 feedback_deinitialize();
612 _ResourceManager::ReloadTheme(Tizen::Base::String& themeName, bool userdefine)
616 __userTheme = themeName;
620 __systemTheme = themeName;
625 _ResourceManager::GetBitmapInternalN(const String& fileName, BitmapPixelFormat pixelFormat, _ControlOrientation orientation, Bitmap*& pBitmap)
628 Bitmap* pTempBitmap = null;
629 int foundFolderWidth = 0;
630 String fullName = FindImagePath(fileName, foundFolderWidth);
631 if(foundFolderWidth == __targetWidth)
633 pTempBitmap = new (std::nothrow) Bitmap;
634 SysTryReturn(NID_UI, pTempBitmap, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[%s] Propagating.", GetErrorMessage(r));
635 r = _BitmapImpl::GetInstance(*pTempBitmap)->Construct(fullName, pixelFormat);
636 SysTryCatch(NID_UI, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
637 pBitmap = pTempBitmap;
642 if (_BitmapImpl::HasNinePatchedBitmapTag(fileName))
644 pTempBitmap = new (std::nothrow) Bitmap;
645 SysTryReturn(NID_UI, pTempBitmap, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[%s] Propagating.", GetErrorMessage(r));
646 r = _BitmapImpl::GetInstance(*pTempBitmap)->Construct(fullName, pixelFormat);
647 SysTryCatch(NID_UI, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
648 pBitmap = pTempBitmap;
653 ByteBuffer* pImageBuffer = null;
656 MediaPixelFormat format = ConvertBitmapPixelFormatToMediaPixelFormat(pixelFormat);
657 pImageBuffer = _ImageDecoder::DecodeToBufferN(fullName, format, imageWidth, imageHeight);
660 pTempBitmap = _BitmapImpl::GetNonScaledBitmapN(*pImageBuffer, Dimension(imageWidth, imageHeight), pixelFormat);
663 if(pTempBitmap != null)
665 if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*pTempBitmap))
667 pBitmap = pTempBitmap;
672 float scaleFactor = (float)((float)__targetWidth/(float)foundFolderWidth);
673 r = pTempBitmap->Scale(Dimension(pTempBitmap->GetWidth()*scaleFactor, pTempBitmap->GetHeight()*scaleFactor));
676 pBitmap = pTempBitmap;
693 _ResourceManager::GetBitmapN(int bitmapId, BitmapPixelFormat pixelFormat, _ControlOrientation orientation, Bitmap*& pBitmap)
696 ResourceItem* pItem = null;
698 r = __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT]->GetImageMap()->GetValue(bitmapId, pItem);
701 fileName = pItem->GetImageName();
702 if (fileName.IsEmpty())
708 r = GetBitmapInternalN(fileName, pixelFormat, orientation, pBitmap);
715 _ResourceManager::GetString(const String& stringId, String& string)
717 return __pStringLoader->GetString(stringId, string);
721 _ResourceManager::GetColor(int colorId, Color& color)
724 ResourceItem* pItem = null;
725 r = __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT]->GetColorMap()->GetValue(colorId, pItem);
728 if(pItem->isInitialized())
730 color.SetRGB32(pItem->GetColor(), true);
734 unsigned int value = 0;
735 ResourceItem* pPaletteItem = null;
736 const char* key = pItem->GetRawString();
737 ResourceKey resourceKey(key);
738 __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT]->GetPalette()->GetValue(resourceKey, pPaletteItem);
741 value = pPaletteItem->GetColor();
742 pItem->SetRawDataColor(value);
743 color.SetRGB32(value, true);
747 color.SetRGB32(0,true);
755 _ResourceManager::GetDimension(int dimensionId, _ControlOrientation orientation, Dimension& dimension)
757 result r = E_SUCCESS;
758 ResourceItem* pItem = null;
760 if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
762 r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT)->GetDimensionMap()->GetValue(dimensionId, pItem);
765 r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE)->GetDimensionMap()->GetValue(dimensionId, pItem);
770 r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE)->GetDimensionMap()->GetValue(dimensionId, pItem);
773 r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT)->GetDimensionMap()->GetValue(dimensionId, pItem);
779 dimension.SetSize(pItem->GetDimension().width, pItem->GetDimension().height);
783 r = GetDefaultShapeWithScaling(dimensionId, orientation, dimension);
790 _ResourceManager::GetDimension(int dimensionId, _ControlOrientation orientation, Tizen::Graphics::FloatDimension& dimension)
792 result r = E_SUCCESS;
793 ResourceItem* pItem = null;
795 if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
797 r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT)->GetDimensionMap()->GetValue(dimensionId, pItem);
800 r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE)->GetDimensionMap()->GetValue(dimensionId, pItem);
805 r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE)->GetDimensionMap()->GetValue(dimensionId, pItem);
808 r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT)->GetDimensionMap()->GetValue(dimensionId, pItem);
814 dimension = pItem->GetDimension();
818 r = GetDefaultShapeWithScaling(dimensionId, orientation, dimension);
825 _ResourceManager::GetAnimationN(int animationId, ArrayList*& pList)
827 ResourceAnimationFrameList* pFrameList = null;
828 AnimationFrame* pFrame = null;
829 Bitmap* pBitmap = null;
830 ResourceItem* pItem = null;
832 result r = __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT]->GetAnimationMap()->GetValue(animationId, pItem);
833 SysTryReturnResult(NID_UI, r == E_SUCCESS, E_SYSTEM,"System error is occured.");
835 pFrameList = pItem->GetAnimationFrameList();
836 Tizen::Base::Collection::LinkedListT<ResourceAnimationFrame>* pAnimationList = static_cast<Tizen::Base::Collection::LinkedListT<ResourceAnimationFrame>* >(pFrameList->GetAnimationList());
837 if (pAnimationList == null)
841 int count = pAnimationList->GetCount();
846 pList = new (std::nothrow) ArrayList();
848 for (; i < count ; i++)
850 ResourceAnimationFrame frame;
851 r = pAnimationList->GetAt(i, frame);
852 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM,"System error is occured.");
853 r = GetBitmapInternalN(frame.__fileName, BITMAP_PIXEL_FORMAT_ARGB8888, _CONTROL_ORIENTATION_PORTRAIT, pBitmap);
854 SysTryCatch(NID_UI, r == E_SUCCESS, , E_SYSTEM,"System error is occured.");
855 pFrame = new (std::nothrow) AnimationFrame(*pBitmap, frame.__duration);
856 SysTryCatch(NID_UI, pFrame, , E_SYSTEM,"System error is occured.");
870 _ResourceManager::GetShape(int shapeId, _ControlOrientation orientation, int& value)
872 result r = E_SUCCESS;
873 ResourceItem* pItem = null;
875 if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
877 r = __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT]->GetShapeMap()->GetValue(shapeId, pItem);
880 r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE)->GetShapeMap()->GetValue(shapeId, pItem);
885 r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE)->GetShapeMap()->GetValue(shapeId, pItem);
888 r = __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT]->GetShapeMap()->GetValue(shapeId, pItem);
894 value = (int)pItem->GetFloat();
898 r = GetDefaultShapeWithScaling(shapeId, orientation, value);
904 _ResourceManager::GetShape(int shapeId, _ControlOrientation orientation, float& value)
906 result r = E_SUCCESS;
907 ResourceItem* pItem = null;
909 if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
911 r = __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT]->GetShapeMap()->GetValue(shapeId, pItem);
914 r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE)->GetShapeMap()->GetValue(shapeId, pItem);
919 r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE)->GetShapeMap()->GetValue(shapeId, pItem);
922 r = __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT]->GetShapeMap()->GetValue(shapeId, pItem);
928 value = pItem->GetFloat();
932 r = GetDefaultShapeWithScaling(shapeId, orientation, value);
939 _ResourceManager::GetFixedValue(int fixedValueId, _ControlOrientation orientation, int& value)
941 result r = E_SUCCESS;
942 ResourceItem* pItem = null;
944 if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
946 r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT)->GetFixedValueMap()->GetValue(fixedValueId, pItem);
950 r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE)->GetFixedValueMap()->GetValue(fixedValueId, pItem);
955 r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE)->GetFixedValueMap()->GetValue(fixedValueId, pItem);
958 r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT)->GetFixedValueMap()->GetValue(fixedValueId, pItem);
964 if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
966 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT)->GetFixedValueMap()->GetValue(fixedValueId, pItem);
969 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE)->GetFixedValueMap()->GetValue(fixedValueId, pItem);
974 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE)->GetFixedValueMap()->GetValue(fixedValueId, pItem);
977 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT)->GetFixedValueMap()->GetValue(fixedValueId, pItem);
984 value = (int)(pItem->GetFloat());
991 _ResourceManager::GetFixedValue(int fixedValueId, _ControlOrientation orientation, float& value)
993 result r = E_SUCCESS;
994 ResourceItem* pItem = null;
996 if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
998 r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT)->GetFixedValueMap()->GetValue(fixedValueId, pItem);
1002 r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE)->GetFixedValueMap()->GetValue(fixedValueId, pItem);
1007 r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE)->GetFixedValueMap()->GetValue(fixedValueId, pItem);
1010 r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT)->GetFixedValueMap()->GetValue(fixedValueId, pItem);
1016 if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
1018 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT)->GetFixedValueMap()->GetValue(fixedValueId, pItem);
1021 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE)->GetFixedValueMap()->GetValue(fixedValueId, pItem);
1026 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE)->GetFixedValueMap()->GetValue(fixedValueId, pItem);
1029 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT)->GetFixedValueMap()->GetValue(fixedValueId, pItem);
1036 value = pItem->GetFloat();
1043 _ResourceManager::IsCustomColor(int colorId)
1045 return __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT]->GetColorMap()->IsUserThemeItem(colorId);
1048 _ResourceManager::IsCustomBitmap(int bitmapId)
1050 return __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT]->GetImageMap()->IsUserThemeItem(bitmapId);
1054 _ResourceManager::PlayFeedback(_ResourceFeedbackPattern pattern)
1056 if (unlikely(__initializeFeedback == false))
1058 feedback_error_e error = (feedback_error_e)feedback_initialize();
1059 if(error != FEEDBACK_ERROR_NONE)
1063 __initializeFeedback = true;
1065 if (__feedbackStatus == _RESOURCE_FEEDBACK_STATUS_PLAYED)
1067 SysLog(NID_UI, "feedback is already played.");
1070 feedback_pattern_e playPattern = Convert_ResourceFeedbackPatternTofeedback_pattern_e(pattern);
1071 __feedbackStatus = _RESOURCE_FEEDBACK_STATUS_PLAYED;
1072 int r = feedback_play(playPattern);
1073 if (r == FEEDBACK_ERROR_NONE)
1075 SysLog(NID_UI, "It succeeded to play feedback.");
1080 SysLog(NID_UI, "It failed to play feedback.");
1087 _ResourceManager::GetDefaultShapeWithScaling(int shapeId, _ControlOrientation orientation, int& value)
1089 result r = E_SUCCESS;
1090 ResourceItem* pItem = null;
1092 if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
1094 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT)->GetShapeMap()->GetValue(shapeId, pItem);
1097 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE)->GetShapeMap()->GetValue(shapeId, pItem);
1102 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE)->GetShapeMap()->GetValue(shapeId, pItem);
1105 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT)->GetShapeMap()->GetValue(shapeId, pItem);
1111 value = (int)pItem->GetFloat();
1116 int temp = __pTransformer->Transform(value);
1117 if (temp == 0 && value > 0)
1130 _ResourceManager::GetDefaultShapeWithScaling(int shapeId, _ControlOrientation orientation, Tizen::Graphics::FloatDimension& dimension)
1132 result r = E_SUCCESS;
1133 ResourceItem* pItem = null;
1135 if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
1137 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT)->GetDimensionMap()->GetValue(shapeId, pItem);
1140 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE)->GetDimensionMap()->GetValue(shapeId, pItem);
1145 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE)->GetDimensionMap()->GetValue(shapeId, pItem);
1148 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT)->GetDimensionMap()->GetValue(shapeId, pItem);
1154 dimension = __pTransformer->Transform(pItem->GetDimension());
1161 _ResourceManager::GetDefaultShapeWithScaling(int shapeId, _ControlOrientation orientation, float& outValue)
1163 result r = E_SUCCESS;
1164 ResourceItem* pItem = null;
1166 if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
1168 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT)->GetShapeMap()->GetValue(shapeId, pItem);
1171 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE)->GetShapeMap()->GetValue(shapeId, pItem);
1176 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE)->GetShapeMap()->GetValue(shapeId, pItem);
1179 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT)->GetShapeMap()->GetValue(shapeId, pItem);
1185 outValue = __pTransformer->Transform(pItem->GetFloat());
1192 _ResourceManager::GetDefaultShapeWithScaling(int shapeId, _ControlOrientation orientation, Dimension& dimension)
1194 result r = E_SUCCESS;
1195 ResourceItem* pItem = null;
1197 if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
1199 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT)->GetDimensionMap()->GetValue(shapeId, pItem);
1202 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE)->GetDimensionMap()->GetValue(shapeId, pItem);
1207 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE)->GetDimensionMap()->GetValue(shapeId, pItem);
1210 r = GetMapContainer(MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT)->GetDimensionMap()->GetValue(shapeId, pItem);
1216 Dimension dim((int)pItem->GetDimension().width, (int)pItem->GetDimension().height);
1217 Dimension temp = __pTransformer->Transform(dim);
1218 if (temp.width == 0 && dim.width > 0)
1222 if (temp.height == 0 && dim.height > 0)
1232 _ResourceManager::LoadThemeInformation(String& systemTheme, String& userTheme)
1234 AppId appId = _AppInfo::GetPackageId();
1236 pList = _PackageManagerImpl::GetInstance()->GetUiThemeListN(appId);
1240 IMapEnumerator* pMapEnum = pList->GetMapEnumeratorN();
1241 while (pMapEnum->MoveNext() == E_SUCCESS)
1243 String* pKey = static_cast<String*> (pMapEnum->GetKey());
1244 String* pValue = static_cast<String*> (pMapEnum->GetValue());
1247 if (key == L"systemtheme")
1249 systemTheme = *pValue;
1250 systemTheme.ToLowerCase();
1252 if (key == L"userdefinedtheme")
1254 userTheme = *pValue;
1259 pList->RemoveAll(true);
1262 if (systemTheme.GetLength() < 1)
1264 systemTheme = L"black";
1270 _ResourceManager::GetThemeName(String& systemTheme, String& userTheme) const
1272 systemTheme = __systemTheme;
1273 userTheme = __userTheme;
1277 _ResourceManager::SetSystemColor(void)
1280 Color* pColor = null;
1281 Color* (*GetSystemColor)(const String&) = null;
1283 handle = dlopen ("libosp-compat.so", RTLD_LAZY);
1288 GetSystemColor = reinterpret_cast<Color*(*)(const String&)>(dlsym(handle, "_GetSystemColor"));
1289 if (dlerror() != NULL)
1294 pColor = GetSystemColor(L"TITLE_TEXT");
1297 GET_COLOR_CONFIG(HEADER::TITLE_TEXT_NORMAL, *pColor);
1300 pColor = GetSystemColor(L"BODY_TEXT");
1303 GET_COLOR_CONFIG(BUTTON::TEXT_NORMAL, *pColor);
1306 pColor = GetSystemColor(L"FOREGROUND");
1309 GET_COLOR_CONFIG(BASIC::foreground, *pColor);
1312 pColor = GetSystemColor(L"BACKGROUND");
1315 GET_COLOR_CONFIG(BASIC::background, *pColor);
1318 pColor = GetSystemColor(L"LIST_BACKGROUND");
1321 GET_COLOR_CONFIG(FORM::BG_NORMAL, *pColor);
1324 pColor = GetSystemColor(L"FORM_BACKGROUND");
1327 GET_COLOR_CONFIG(FORM::BG_NORMAL, *pColor);
1330 pColor = GetSystemColor(L"FORM_GROUP_BACKGROUND");
1333 GET_COLOR_CONFIG(PANEL::GROUPED_STYLE_BG_NORMAL, *pColor);
1336 pColor = GetSystemColor(L"POPUP_BACKGROUND");
1339 GET_COLOR_CONFIG(POPUP::BG_NORMAL, *pColor);
1342 pColor = GetSystemColor(L"GROUP_ITEM_TEXT");
1345 GET_COLOR_CONFIG(CHECKBUTTON::TEXT_NORMAL, *pColor);
1348 pColor = GetSystemColor(L"LIST_ITEM_TEXT");
1351 GET_COLOR_CONFIG(TABLEVIEW::ITEM_TEXT_NORMAL, *pColor);
1354 pColor = GetSystemColor(L"LIST_ITEM_PRESSED_TEXT");
1357 GET_COLOR_CONFIG(TABLEVIEW::ITEM_TEXT_PRESSED, *pColor);
1360 pColor = GetSystemColor(L"LIST_ITEM_HIGHLIGHTED_TEXT");
1363 GET_COLOR_CONFIG(TABLEVIEW::ITEM_TEXT_HIGHLIGHTED, *pColor);
1372 _ResourceManager::GetDensityDirectory(const String& directoryName, float& scaleFactor)
1374 float denominator = 0.0;
1375 float numerator = 0.0;
1376 if(!(directoryName.StartsWith(L"screen-density",0)))
1381 if (__deviceDPI >= DPI_FOR_XHIGH)
1385 else if (__deviceDPI >= DPI_FOR_HIGH)
1389 else if (__deviceDPI >= DPI_FOR_MIDDLE)
1393 else if (__deviceDPI < DPI_FOR_MIDDLE && __deviceDPI > DPI_FOR_LOW)
1402 if(directoryName.Contains(L"xhigh"))
1406 else if(directoryName.Contains(L"high"))
1410 else if(directoryName.Contains(L"middle"))
1414 else if(directoryName.Contains(L"low"))
1423 scaleFactor = numerator / denominator;
1428 _ResourceManager::GetResolutionDirectory(const String& directoryName, float& scaleFactor)
1430 if(!(directoryName.Contains(L"0")))
1436 if(directoryName.IndexOf(L"x", 0, index) != E_SUCCESS)
1442 if(directoryName.SubString(0, index - 1, width))
1444 int denominatorInt = 0;
1445 float denominator = 0;
1446 float numerator = 0;
1447 if(Integer::Parse(width, denominatorInt) == E_SUCCESS)
1449 denominator = (float)denominatorInt;
1450 numerator = __targetWidth;
1451 scaleFactor = numerator / denominator;
1459 _ResourceManager::FindImagePath(const String& fileName, int& foundFolderWidth)
1462 String fullName(L"");
1463 ResourceFallbackItem* pItem = null;
1465 if(__userTheme.GetLength() > 0)
1467 String resDirectory = _AppInfo::GetAppRootPath() + L"res/themes/"+__userTheme;
1468 if(__pFallbackList == null)
1470 __pFallbackList = new (std::nothrow) ArrayListT<ResourceFallbackItem*>;
1471 SysTryReturn(NID_UI, __pFallbackList, L"", E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
1473 result r = dir.Construct(resDirectory);
1476 DirEnumerator* pDirEnum = dir.ReadN();
1477 if (pDirEnum != null)
1479 while (pDirEnum->MoveNext() == E_SUCCESS)
1481 DirEntry entry = pDirEnum->GetCurrentDirEntry();
1482 if(entry.IsDirectory())
1484 float scaleFactor = 0;
1485 String directoryName = entry.GetName();
1486 if(GetDensityDirectory(directoryName, scaleFactor))
1488 pItem = new (std::nothrow) ResourceFallbackItem;
1489 SysTryCatch(NID_UI, pItem, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
1490 pItem->scaleFactor = scaleFactor;
1491 pItem->directoryName = directoryName;
1492 __pFallbackList->Add(pItem);
1494 else if(GetResolutionDirectory(directoryName, scaleFactor))
1496 pItem = new (std::nothrow) ResourceFallbackItem;
1497 SysTryCatch(NID_UI, pItem, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
1498 pItem->scaleFactor = scaleFactor;
1499 pItem->directoryName = directoryName;
1500 __pFallbackList->Add(pItem);
1504 ResourceFallbackItemComparer<ResourceFallbackItem*> comparer;
1505 __pFallbackList->Sort(comparer);
1508 for(int i = 0 ; i < __pFallbackList->GetCount() ; i++)
1510 ResourceFallbackItem* pItem;
1511 if(__pFallbackList->GetAt(i,pItem) == E_SUCCESS)
1513 if(pItem->scaleFactor < 1.001 && pItem->scaleFactor > 0.999)
1515 __pFallbackList->RemoveAt(i);
1516 __pFallbackList->InsertAt(pItem,0);
1517 if(pItem->directoryName.Contains(L"0"))
1526 for(int i = 0 ; i <__pFallbackList->GetCount() ; i++)
1528 ResourceFallbackItem* pItem;
1529 __pFallbackList->GetAt(i,pItem);
1530 fullName = resDirectory + L"/" + pItem->directoryName + L"/" + fileName;
1531 if (File::IsFileExist(fullName))
1534 foundFolderWidth = __targetWidth / pItem->scaleFactor;
1535 if(foundFolderWidth > __targetWidth)
1537 if( foundFolderWidth < __targetWidth + 3)
1539 foundFolderWidth = __targetWidth;
1544 if( foundFolderWidth >__targetWidth - 3)
1546 foundFolderWidth = __targetWidth;
1555 fullName = String(L"/usr/share/osp/bitmaps/" + __targetPortraitMode+ "/" + __systemTheme + L"/" + fileName);
1556 if (File::IsFileExist(fullName))
1559 foundFolderWidth = __targetWidth;
1563 fullName = String(L"/usr/share/osp/bitmaps/" + __defaultPortraitMode+ "/" + __systemTheme + L"/" + fileName);
1564 if (File::IsFileExist(fullName))
1567 foundFolderWidth = DEFAULT_SCREEN_WIDTH;
1574 fullName = String(L"/usr/share/osp/bitmaps/" + __targetPortraitMode + "/" + fileName);
1575 if (File::IsFileExist(fullName))
1578 foundFolderWidth = __targetWidth;
1582 fullName = String(L"/usr/share/osp/bitmaps/" + __defaultPortraitMode+ "/" + fileName);
1583 if (File::IsFileExist(fullName))
1586 foundFolderWidth = DEFAULT_SCREEN_WIDTH;
1600 delete __pFallbackList;
1601 __pFallbackList = null;
1606 _ResourceManager::IsFeedbackPlayed(void)
1608 if (__feedbackStatus == _RESOURCE_FEEDBACK_STATUS_INIT)
1616 _ResourceManager::AcquireFeedback(void)
1618 ++__feedbackAcquireCount;
1622 _ResourceManager::ReleaseFeedback(void)
1624 __feedbackAcquireCount >0 ? --__feedbackAcquireCount : __feedbackAcquireCount = 0;
1625 if(__feedbackAcquireCount == 0)
1627 __feedbackStatus = _RESOURCE_FEEDBACK_STATUS_INIT;
1631 _ResourceManager::ResetFeedback(void)
1633 __feedbackAcquireCount = 0;
1634 __feedbackStatus = _RESOURCE_FEEDBACK_STATUS_INIT;