2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Flora License, Version 1.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://floralicense.org/license/
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.
18 * @file FShell_AppWidgetViewManager.cpp
19 * @brief This is the implementation file for the _AppWidgetView class.
27 #include <elm_config.h>
29 #include <livebox-service.h>
31 #include <FBaseColHashMapT.h>
32 #include <FBaseSysLog.h>
33 #include <FBaseString.h>
34 #include <FGrpBufferInfo.h>
35 #include <FGrpBitmap.h>
36 #include <FGrpCanvas.h>
37 #include <FGrpDimension.h>
38 #include <FGrpPixelFormat.h>
39 #include <FGrpPoint.h>
40 #include <FGrpRectangle.h>
41 #include <FMediaImageTypes.h>
42 #include <FBase_StringConverter.h>
43 #include <FGrp_BitmapImpl.h>
44 #include <FGrp_CoordinateSystem.h>
45 #include <FMedia_ImageDecoder.h>
46 #include <FUi_ControlManager.h>
47 #include <FUiCtrl_Frame.h>
48 #include <FUiCtrl_IFrameEventListener.h>
49 #include "FShell_AppWidgetViewManager.h"
50 #include "FShell_AppWidgetView.h"
51 #include "FShell_AppWidgetPopupView.h"
53 //#define _PIXMAP_TEST
55 #if defined(_PIXMAP_TEST)
60 #include <X11/Xproto.h>
64 #define virtual UICTRL_INTERNAL_VIRTUAL_REDEFINE
65 #define private UICTRL_INTERNAL_PRIVATE_REDEFINE
66 #include <libdrm/drm_slp_bufmgr.h>
70 #endif // _PIXMAP_TEST
73 using namespace Tizen::Base;
74 using namespace Tizen::Base::Collection;
75 using namespace Tizen::Graphics;
76 using namespace Tizen::Media;
77 using namespace Tizen::Ui;
78 using namespace Tizen::Ui::Controls;
83 #if defined(_PIXMAP_TEST)
85 drm_slp_bufmgr __bufMgr = null;
89 dump_bmp(const char* pFileName, const void* pData, int width, int height)
95 unsigned char magic[2];
96 } bmpfile_magic = { {'B', 'M'} };
101 unsigned short creator1;
102 unsigned short creator2;
103 unsigned int bmp_offset;
104 } bmpfile_header = { 0, 0, 0, 0x36 };
108 unsigned int header_sz;
111 unsigned short nplanes;
112 unsigned short bitspp;
113 unsigned int compress_type;
114 unsigned int bmp_bytesz;
117 unsigned int ncolors;
118 unsigned int nimpcolors;
119 } bmp_dib_v3_header_t = { 0x28, 0, 0, 1, 24, 0, 0, 0, 0, 0, 0 };
121 unsigned int* pBlocks = null;
123 FILE* pFile = fopen(pFileName, "w+");
126 SysLog(NID_UI_CTRL, "failed to fopen [%s]", pFileName);
131 bmpfile_header.filesz = sizeof(bmpfile_magic) + sizeof(bmpfile_header) + sizeof(bmp_dib_v3_header_t) + width * height * 3;
132 bmp_dib_v3_header_t.header_sz = sizeof(bmp_dib_v3_header_t);
133 bmp_dib_v3_header_t.width = width;
134 bmp_dib_v3_header_t.height = -height;
135 bmp_dib_v3_header_t.nplanes = 1;
136 bmp_dib_v3_header_t.bmp_bytesz = width * height * 3;
138 fwrite(&bmpfile_magic, sizeof(bmpfile_magic), 1, pFile);
139 fwrite(&bmpfile_header, sizeof(bmpfile_header), 1, pFile);
140 fwrite(&bmp_dib_v3_header_t, sizeof(bmp_dib_v3_header_t), 1, pFile);
142 pBlocks = (unsigned int*)pData;
143 for (i = 0; i < (height * width); i++)
144 fwrite(&pBlocks[i], 3, 1, pFile);
153 bufmgr_get(Display* pDisplay, Pixmap pixmap)
157 drm_slp_bufmgr bufmgr;
158 int eventBase, errorBase;
159 int dri2Major, dri2Minor;
160 char* pDriverName, *pDeviceName;
163 screen = DefaultScreen(pDisplay);
166 if (!DRI2QueryExtension (pDisplay, &eventBase, &errorBase))
168 SysLog(NID_UI_CTRL, "!!Error : DRI2QueryExtension !!\n");
172 if (!DRI2QueryVersion (pDisplay, &dri2Major, &dri2Minor))
174 SysLog(NID_UI_CTRL, "!!Error : DRI2QueryVersion !!\n");
178 if (!DRI2Connect (pDisplay, RootWindow(pDisplay, screen), &pDriverName, &pDeviceName))
180 SysLog(NID_UI_CTRL, "!!Error : DRI2Connect !!\n");
184 SysLog(NID_UI_CTRL, "Open drm device : %s\n", pDeviceName);
186 /* get the drm_fd though opening the deviceName */
187 drm_fd = open (pDeviceName, O_RDWR);
190 SysLog(NID_UI_CTRL, "!!Error : cannot open drm device (%s)\n", pDeviceName);
194 /* get the drm magic */
195 drmGetMagic(drm_fd, &magic);
196 printf("drm magic = %d \n", magic);
198 if (!DRI2Authenticate(pDisplay, RootWindow(pDisplay, screen), magic))
200 SysLog(NID_UI_CTRL, "!!Error : DRI2Authenticate !!\n");
205 /* drm slp buffer manager init */
206 bufmgr = drm_slp_bufmgr_init (drm_fd, null);
209 SysLog(NID_UI_CTRL, "!!Error : failed to init buffer manager \n");
214 DRI2CreateDrawable (pDisplay, pixmap);
220 pixmap_update(Display* pDisplay, drm_slp_bufmgr bufmgr, Pixmap pixmap, int x, int y, int width, int height)
222 DRI2Buffer* pDri2_buffers = null;
223 unsigned int attachments[1];
224 int dri2_count, dri2_out_count;
225 int dri2_width, dri2_height, dri2_stride;
228 void* pVirtualBuf = null;
229 char imgFile[100] = {0,};
231 attachments[0] = DRI2BufferFrontLeft;
233 pDri2_buffers = DRI2GetBuffers (pDisplay, pixmap, &dri2_width, &dri2_height,
234 attachments, dri2_count, &dri2_out_count);
238 SysLog(NID_UI_CTRL, "[Error] : failed to get buffers\n");
242 if (!pDri2_buffers[0].name)
244 SysLog(NID_UI_CTRL, "[Error] : a handle of the dri2 buffer is null \n ");
248 SysLog(NID_UI_CTRL, "pDri2_buffers[0].name : %d", pDri2_buffers[0].name);
250 bo = drm_slp_bo_import(bufmgr, pDri2_buffers[0].name);
253 SysLog(NID_UI_CTRL, "[Error] : cannot import bo (key:%d)\n", pDri2_buffers[0].name);
257 dri2_stride = pDri2_buffers[0].pitch;
259 opt = DRM_SLP_OPTION_READ|DRM_SLP_OPTION_WRITE;
260 pVirtualBuf = (void*)drm_slp_bo_map (bo, DRM_SLP_DEVICE_CPU, opt);
263 SysLog(NID_UI_CTRL, "[Error] : failed to map \n");
267 memset(imgFile, 0, sizeof(imgFile));
268 sprintf(imgFile,"./dump%d.bmp", __FileCount++);
269 dump_bmp(imgFile, pVirtualBuf, dri2_width, dri2_height);
273 drm_slp_bo_unmap(bo, DRM_SLP_DEVICE_CPU);
275 drm_slp_bo_unref(bo);
281 DumpPixmap(int pixmap)
288 ecore_x_pixmap_geometry_get(pixmap, &x, &y, &width, &height);
289 SysTryReturnVoidResult(NID_UI_CTRL, (width > 0) && (height > 0), E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid [0x%x %d %d].", pixmap, width , height);
293 drm_slp_bufmgr_destroy(__bufMgr);
297 if (__bufMgr == null)
298 __bufMgr = bufmgr_get((Display*)ecore_x_display_get(), pixmap);
300 if (__bufMgr != null)
302 pixmap_update((Display*)ecore_x_display_get(), __bufMgr, pixmap, 0, 0, width, height);
305 SysLog(NID_UI_CTRL, "can't get pixmap __bufMgr");
307 SysLog(NID_UI_CTRL, "dump pixmap [%d]", pixmap);
310 #endif // _PIXMAP_TEST
314 namespace Tizen { namespace Graphics
316 result _CreateCoordinateTransformer(_ICoordinateSystemTransformer*&, _LogicalResolution, _BaseScreenSize, _PhysicalResolution, _BaseScreenSize);
317 } } // Tizen::Graphics
319 namespace Tizen { namespace Shell
322 const int LIVEBOX_SIZE_1 = 175;
323 const int LIVEBOX_SIZE_2 = 354;
324 const int LIVEBOX_SIZE_4 = 712;
326 struct _AppWidgetSizeInfo
333 const _AppWidgetSizeInfo LIVEBOX_SIZE_INFO[] =
335 { LB_SIZE_TYPE_1x1, LIVEBOX_SIZE_1, LIVEBOX_SIZE_1 },
336 { LB_SIZE_TYPE_2x1, LIVEBOX_SIZE_2, LIVEBOX_SIZE_1 },
337 { LB_SIZE_TYPE_2x2, LIVEBOX_SIZE_2, LIVEBOX_SIZE_2 },
338 { LB_SIZE_TYPE_4x1, LIVEBOX_SIZE_4, LIVEBOX_SIZE_1 },
339 { LB_SIZE_TYPE_4x2, LIVEBOX_SIZE_4, LIVEBOX_SIZE_2 },
340 { LB_SIZE_TYPE_4x4, LIVEBOX_SIZE_4, LIVEBOX_SIZE_4 }
344 _AppWidgetViewManager*
345 _AppWidgetViewManager::GetInstance(void)
347 static _AppWidgetViewManager instance;
352 _AppWidgetViewManager::AddAppWidgetView(_AppWidgetView* pAppWidgetView, const String& userInfo)
354 SysTryReturn(NID_UI_CTRL, pAppWidgetView, null, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
356 unique_ptr<char[]> pAppWidgetId(_StringConverter::CopyToCharArrayN(pAppWidgetView->GetAppWidgetId()));
357 SysTryReturn(NID_UI_CTRL, pAppWidgetId, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
359 unique_ptr<char[]> pContent(_StringConverter::CopyToCharArrayN(userInfo));
360 SysTryReturn(NID_UI_CTRL, pContent, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
362 const char* pCluster = "user,created";
363 const char* pCategory = "default";
364 double period = 1.0f;
365 int sizeType = GetAppWidgetSizeType(pAppWidgetView->GetSizeF());
367 livebox* pAppWidget = livebox_add_with_size(pAppWidgetId.get(), pContent.get(), pCluster, pCategory, period, sizeType, OnAppWidgetAdded, this);
368 SysTryReturn(NID_UI_CTRL, pAppWidget, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
370 __pViewMap->Add(pAppWidget, pAppWidgetView);
376 _AppWidgetViewManager::RemoveAppWidgetView(_AppWidgetView* pAppWidgetView)
378 SysTryReturnVoidResult(NID_UI_CTRL, pAppWidgetView, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
380 livebox* pAppWidget = pAppWidgetView->GetNativeAppWidget();
381 SysTryReturnVoidResult(NID_UI_CTRL, pAppWidget, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
383 __pViewMap->Remove(pAppWidget);
385 livebox_del(pAppWidget, OnAppWidgetDeleted, this);
387 __pViewMap->Remove(pAppWidget);
391 _AppWidgetViewManager::GetAppWidgetView(livebox* pAppWidget) const
393 _AppWidgetView* pAppWidgetView = null;
394 __pViewMap->GetValue(pAppWidget, pAppWidgetView);
396 return pAppWidgetView;
400 _AppWidgetViewManager::GetAppWidgetSize(livebox* pAppWidget) const
402 SysTryReturn(NID_UI_CTRL, pAppWidget, FloatDimension(0, 0), E_SYSTEM, "[E_SYSTEM] A system error occurred.");
407 int type = livebox_size(pAppWidget);
408 livebox_service_get_size(type, &width, &height);
410 // SysLog(NID_UI_CTRL, "size [%d %d]", width, height);
412 return FloatDimension(width, height);
416 _AppWidgetViewManager::GetAppWidgetPopupSize(livebox* pAppWidget) const
418 SysTryReturn(NID_UI_CTRL, pAppWidget, FloatDimension(0, 0), E_SYSTEM, "[E_SYSTEM] A system error occurred.");
423 livebox_get_pdsize(pAppWidget, &width, &height);
425 // SysLog(NID_UI_CTRL, "size [%d %d]", width, height);
427 return FloatDimension(width, height);
431 _AppWidgetViewManager::SetAppWidgetSize(const _AppWidgetView& appwidgetView, const FloatDimension& size)
433 livebox* pAppWidget = appwidgetView.GetNativeAppWidget();
434 SysTryReturnVoidResult(NID_UI_CTRL, pAppWidget, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
436 int sizeType = GetAppWidgetSizeType(size);
438 livebox_resize(pAppWidget, sizeType, OnAppWidgetResized, this);
442 _AppWidgetViewManager::AddFrameEventListener(void)
444 if (!__pFrameEventListener)
446 unique_ptr<_FrameEventListener> pFrameEventListener(new (std::nothrow) _FrameEventListener());
447 SysTryReturnVoidResult(NID_UI_CTRL, pFrameEventListener, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
449 _Window* pWindow = _ControlManager::GetInstance()->GetCurrentFrame();
450 SysTryReturnVoidResult(NID_UI_CTRL, pWindow, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
452 __pFrameEventListener = move(pFrameEventListener);
454 _Frame* pFrame = dynamic_cast<_Frame*>(pWindow);
457 pFrame->AddFrameEventListener(*__pFrameEventListener);
462 _AppWidgetViewManager::_AppWidgetViewManager(void)
465 // _LogicalResolution sourceResolution = RESOLUTION_LOGICAL_720;
466 // _PhysicalResolution destResolution = _CoordinateSystem::GetInstance()->GetPhysicalResolution();
468 livebox_init(ecore_x_display_get());
469 livebox_subscribe_group("*", "*");
471 __eventHandler.reset(livebox_set_event_handler(OnAppWidgetEventReceived, this));
472 SysTryReturnVoidResult(NID_UI_CTRL, __eventHandler == 0, E_SYSTEM, "[E_SYSTEM] A system error occured.");
474 __faultEventHandler.reset(livebox_set_fault_handler(OnAppWidgetFaultReceived, this));
475 SysTryReturnVoidResult(NID_UI_CTRL, __faultEventHandler == 0, E_SYSTEM, "[E_SYSTEM] A system error occured.");
477 unique_ptr<HashMapT<livebox*, _AppWidgetView*> > pViewMap(new (std::nothrow) HashMapT<livebox*, _AppWidgetView*>);
478 SysTryReturnVoidResult(NID_UI_CTRL, pViewMap, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
480 result r = pViewMap->Construct();
481 SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
483 __pViewMap = move(pViewMap);
484 __glMode = IsGlMode();
486 // r = _CreateCoordinateTransformer(__pCoordinateTransformer, sourceResolution, BASE_SCREEN_SIZE_NORMAL, destResolution, BASE_SCREEN_SIZE_NORMAL);
487 // SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
490 _AppWidgetViewManager::~_AppWidgetViewManager(void)
492 _ControlManager* pControlManager = _ControlManager::GetInstance();
493 if (pControlManager && __pFrameEventListener)
495 _Window* pWindow = pControlManager->GetCurrentFrame();
498 _Frame* pFrame = dynamic_cast<_Frame*>(pWindow);
501 pFrame->RemoveFrameEventListener(*__pFrameEventListener);
508 _AppWidgetViewManager::GetAppWidgetSizeType(const Tizen::Graphics::FloatDimension& size) const
510 int sizeType = LB_SIZE_TYPE_UNKNOWN;
512 int sizetypeCount = sizeof(LIVEBOX_SIZE_INFO) / sizeof(_AppWidgetSizeInfo);
513 for ( int i = 0; i < sizetypeCount; ++ i)
515 if (size.width <= LIVEBOX_SIZE_INFO[i].width && size.height <= LIVEBOX_SIZE_INFO[i].height)
517 sizeType = LIVEBOX_SIZE_INFO[i].type;
522 SysLog(NID_UI_CTRL, "[%d %d] type [%d][%d]", size.width, size.height, sizeType, sizetypeCount);
528 _AppWidgetViewManager::GetPixelFormat(BitmapPixelFormat format) const
530 MediaPixelFormat mediaPixelFormat = MEDIA_PIXEL_FORMAT_NONE;
534 case BITMAP_PIXEL_FORMAT_RGB565:
535 mediaPixelFormat = MEDIA_PIXEL_FORMAT_RGB565LE;
538 case BITMAP_PIXEL_FORMAT_ARGB8888:
539 mediaPixelFormat = MEDIA_PIXEL_FORMAT_BGRA8888;
542 case BITMAP_PIXEL_FORMAT_R8G8B8A8:
543 mediaPixelFormat = MEDIA_PIXEL_FORMAT_RGBA8888;
550 return mediaPixelFormat;
554 _AppWidgetViewManager::GetBitmapN(const String& fileName) const
559 MediaPixelFormat format = GetPixelFormat(BITMAP_PIXEL_FORMAT_ARGB8888);
561 unique_ptr<ByteBuffer> pByteBuffer(_ImageDecoder::DecodeToBufferN(fileName, format, width, height));
562 SysTryReturn(NID_UI_CTRL, pByteBuffer, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
564 unique_ptr<Bitmap> pBitmap(_BitmapImpl::GetNonScaledBitmapN(*pByteBuffer, Dimension(width, height), BITMAP_PIXEL_FORMAT_ARGB8888));
565 SysTryReturn(NID_UI_CTRL, pBitmap, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
567 return pBitmap.release();
571 _AppWidgetViewManager::GetBitmapN(void* pBuffer, const FloatDimension& size) const
573 SysTryReturn(NID_UI_CTRL, pBuffer, null, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
575 byte* pTempBuffer = static_cast<byte*>(pBuffer);
576 const int BITS_PER_PIXEL = 32;
577 int length = size.width * size.height * BITS_PER_PIXEL / 8;
579 unique_ptr<ByteBuffer> pByteBuffer(new (std::nothrow) ByteBuffer());
580 SysTryReturn(NID_UI_CTRL, pByteBuffer, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
582 result r = pByteBuffer->Construct(pTempBuffer, 0, length, length);
583 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
585 unique_ptr<Bitmap> pBitmap(_BitmapImpl::GetNonScaledBitmapN(*pByteBuffer.get(), Dimension(size.width, size.height), BITMAP_PIXEL_FORMAT_ARGB8888));
586 SysTryReturn(NID_UI_CTRL, pBitmap, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
588 return pBitmap.release();
592 _AppWidgetViewManager::IsGlMode(void) const
596 String preferred(elm_config_preferred_engine_get());
597 if(preferred == L"opengl_x11")
602 else if(preferred == L"software_x11")
609 String engineConfig(elm_config_engine_get());
610 if(engineConfig == L"opengl_x11")
617 SysLog(NID_UI_CTRL, "[%d %d]", mode, glMode);
623 _AppWidgetViewManager::OnAppWidgetCreated(livebox* pAppWidget)
628 _AppWidgetViewManager::OnAppWidgetUpdated(livebox* pAppWidget)
630 _AppWidgetView* pAppWidgetView = GetAppWidgetView(pAppWidget);
631 SysTryReturnVoidResult(NID_UI_CTRL, pAppWidgetView, E_SYSTEM, "[E_SYSTEM] A system error occured.");
633 int type = livebox_lb_type(pAppWidget);
635 // SysLog(NID_UI_CTRL, "type (%d)", type);
641 unique_ptr<Bitmap> pBitmap(GetBitmapN(livebox_filename(pAppWidget)));
642 SysTryReturnVoidResult(NID_UI_CTRL, pBitmap, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
644 pAppWidgetView->OnAppWidgetUpdated(*pBitmap.get(), GetAppWidgetSize(pAppWidget));
651 void* pBuffer = livebox_acquire_fb(pAppWidget);
652 SysTryReturnVoidResult(NID_UI_CTRL, pBuffer, E_SYSTEM, "[E_SYSTEM] A system error occured.");
654 FloatDimension sourceSize = GetAppWidgetSize(pAppWidget);
655 SysLog(NID_UI_CTRL, "size [%d %d]", sourceSize.width, sourceSize.height);
657 unique_ptr<Bitmap> pBitmap(GetBitmapN(pBuffer, sourceSize));
658 SysTryReturnVoidResult(NID_UI_CTRL, pBitmap, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
660 pAppWidgetView->OnAppWidgetUpdated(*pBitmap.get(), sourceSize);
661 livebox_release_fb(pBuffer);
669 pAppWidgetView->OnAppWidgetUpdated(livebox_lb_pixmap(pAppWidget));
671 #if defined(_PIXMAP_TEST)
672 DumpPixmap(livebox_lb_pixmap(pAppWidget));
673 #endif // _PIXMAP_TEST
677 void* pBuffer = livebox_acquire_fb(pAppWidget);
678 SysTryReturnVoidResult(NID_UI_CTRL, pBuffer, E_SYSTEM, "[E_SYSTEM] A system error occured.");
680 FloatDimension sourceSize = GetAppWidgetSize(pAppWidget);
682 unique_ptr<Bitmap> pBitmap(GetBitmapN(pBuffer, sourceSize));
683 SysTryReturnVoidResult(NID_UI_CTRL, pBitmap, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
685 pAppWidgetView->OnAppWidgetUpdated(*pBitmap.get(), sourceSize);
686 livebox_release_fb(pBuffer);
697 _AppWidgetViewManager::OnAppWidgetDeleted(livebox* pAppWidget)
699 _AppWidgetView* pAppWidgetView = GetAppWidgetView(pAppWidget);
700 SysTryReturnVoidResult(NID_UI_CTRL, pAppWidgetView, E_SYSTEM, "[E_SYSTEM] A system error occured.");
702 pAppWidgetView->CallProviderRemoved();
706 _AppWidgetViewManager::OnAppWidgetPinUpChanged(livebox* pAppWidget)
711 _AppWidgetViewManager::OnAppWidgetPopupUpdated(livebox* pAppWidget)
713 _AppWidgetView* pAppWidgetView = GetAppWidgetView(pAppWidget);
714 SysTryReturnVoidResult(NID_UI_CTRL, pAppWidgetView, E_SYSTEM, "[E_SYSTEM] A system error occured.");
716 _AppWidgetPopupView* pAppWidgetPopupView = pAppWidgetView->GetAppWidgetPopup();
717 SysTryReturnVoidResult(NID_UI_CTRL, pAppWidgetPopupView, E_SYSTEM, "[E_SYSTEM] A system error occured.");
719 int type = livebox_pd_type(pAppWidget);
721 // SysLog(NID_UI_CTRL, "type (%d)", type);
727 void* pBuffer = livebox_acquire_pdfb(pAppWidget);
728 SysTryReturnVoidResult(NID_UI_CTRL, pBuffer, E_SYSTEM, "[E_SYSTEM] A system error occured.");
730 FloatDimension sourceSize = GetAppWidgetPopupSize(pAppWidget);
732 unique_ptr<Bitmap> pBitmap(GetBitmapN(pBuffer, sourceSize));
733 SysTryReturnVoidResult(NID_UI_CTRL, pBitmap, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
735 pAppWidgetPopupView->OnAppWidgetUpdated(*pBitmap.get(), sourceSize);
736 livebox_release_pdfb(pBuffer);
744 pAppWidgetPopupView->OnAppWidgetUpdated(livebox_pd_pixmap(pAppWidget));
745 #if defined(_PIXMAP_TEST)
746 DumpPixmap(livebox_pd_pixmap(pAppWidget));
747 #endif // _PIXMAP_TEST
751 void* pBuffer = livebox_acquire_pdfb(pAppWidget);
752 SysTryReturnVoidResult(NID_UI_CTRL, pBuffer, E_SYSTEM, "[E_SYSTEM] A system error occured.");
754 FloatDimension sourceSize = GetAppWidgetPopupSize(pAppWidget);
756 unique_ptr<Bitmap> pBitmap(GetBitmapN(pBuffer, sourceSize));
757 SysTryReturnVoidResult(NID_UI_CTRL, pBitmap, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
759 pAppWidgetPopupView->OnAppWidgetUpdated(*pBitmap.get(), sourceSize);
760 livebox_release_pdfb(pBuffer);
771 _AppWidgetViewManager::OnAppWidgetEventReceived(livebox* pAppWidget, livebox_event_type eventType, void* pData)
773 SysTryReturn(NID_UI_CTRL, pAppWidget, EXIT_SUCCESS, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
775 _AppWidgetViewManager* pAppWidgetViewManager = static_cast<_AppWidgetViewManager*>(pData);
776 SysTryReturn(NID_UI_CTRL, pAppWidgetViewManager, EXIT_SUCCESS, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
780 case LB_EVENT_LB_UPDATED:
781 pAppWidgetViewManager->OnAppWidgetUpdated(pAppWidget);
784 case LB_EVENT_PD_UPDATED:
785 pAppWidgetViewManager->OnAppWidgetPopupUpdated(pAppWidget);
788 case LB_EVENT_CREATED:
789 pAppWidgetViewManager->OnAppWidgetCreated(pAppWidget);
792 case LB_EVENT_DELETED:
793 pAppWidgetViewManager->OnAppWidgetDeleted(pAppWidget);
796 case LB_EVENT_GROUP_CHANGED:
799 case LB_EVENT_PINUP_CHANGED:
800 pAppWidgetViewManager->OnAppWidgetPinUpChanged(pAppWidget);
803 case LB_EVENT_PERIOD_CHANGED:
807 SysLog(NID_UI_CTRL, "Not supported event type: %d", eventType);
815 _AppWidgetViewManager::OnAppWidgetFaultReceived(livebox_fault_type faultType, const char* pAppWidgetId, const char* pFilename, const char* pFuncName, void* pData)
817 if (faultType == LB_FAULT_DEACTIVATED)
819 SysLog(NID_UI_CTRL, "type (%d) packageName (%s) fileName (%s) funcName (%s)", faultType, pAppWidgetId, pFilename, pFuncName);
820 livebox_activate(pAppWidgetId, OnAppWidgetActivated, pData);
827 _AppWidgetViewManager::OnAppWidgetActivated(livebox* pAppWidget, int ret, void* pData)
829 SysTryReturnVoidResult(NID_UI_CTRL, pAppWidget, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
830 SysTryReturnVoidResult(NID_UI_CTRL, ret == 0, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
832 _AppWidgetViewManager* pAppWidgetViewManager = static_cast<_AppWidgetViewManager*>(pData);
833 SysTryReturnVoidResult(NID_UI_CTRL, pAppWidgetViewManager, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
837 _AppWidgetViewManager::OnAppWidgetAdded(livebox* pAppWidget, int ret, void* pData)
839 SysTryReturnVoidResult(NID_UI_CTRL, pAppWidget, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
840 SysTryReturnVoidResult(NID_UI_CTRL, ret == 0, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
842 _AppWidgetViewManager* pAppWidgetViewManager = static_cast<_AppWidgetViewManager*>(pData);
843 SysTryReturnVoidResult(NID_UI_CTRL, pAppWidgetViewManager, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
847 _AppWidgetViewManager::OnAppWidgetDeleted(livebox* pAppWidget, int ret, void* pData)
849 SysTryReturnVoidResult(NID_UI_CTRL, pAppWidget, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
850 SysTryReturnVoidResult(NID_UI_CTRL, ret == 0, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
852 _AppWidgetViewManager* pAppWidgetViewManager = static_cast<_AppWidgetViewManager*>(pData);
853 SysTryReturnVoidResult(NID_UI_CTRL, pAppWidgetViewManager, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
857 _AppWidgetViewManager::OnAppWidgetResized(livebox* pAppWidget, int ret, void* pData)
859 SysTryReturnVoidResult(NID_UI_CTRL, pAppWidget, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
860 SysTryReturnVoidResult(NID_UI_CTRL, ret == 0, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
862 _AppWidgetViewManager* pAppWidgetViewManager = static_cast<_AppWidgetViewManager*>(pData);
863 SysTryReturnVoidResult(NID_UI_CTRL, pAppWidgetViewManager, E_INVALID_ARG, "[E_INVALID_ARG] The argument is invalid.");
865 pAppWidgetViewManager->OnAppWidgetUpdated(pAppWidget);
869 _AppWidgetViewManager::_FrameEventListener::OnFrameActivated(const Tizen::Ui::Controls::_Frame& source)
871 int ret = livebox_client_resumed();
872 SysLog(NID_UI_CTRL, "ret (%d)", ret);
876 _AppWidgetViewManager::_FrameEventListener::OnFrameDeactivated(const Tizen::Ui::Controls::_Frame& source)
878 int ret = livebox_client_paused();
879 SysLog(NID_UI_CTRL, "ret (%d)", ret);
883 _AppWidgetViewManager::_FrameEventListener::OnFrameMinimized(const Tizen::Ui::Controls::_Frame& source)
888 _AppWidgetViewManager::_FrameEventListener::OnFrameRestored(const Tizen::Ui::Controls::_Frame& source)