Apply for SetImageSource() API and OnCanvasRequestedN()
authorwonyoung12.lee <wonyoung12.lee@samsung.com>
Thu, 27 Jun 2013 09:41:15 +0000 (18:41 +0900)
committerwonyoung12.lee <wonyoung12.lee@samsung.com>
Fri, 28 Jun 2013 08:42:19 +0000 (17:42 +0900)
Change-Id: I962fed5493d6e4e4d4ee60101a3dd22a7741fb7d
Signed-off-by: wonyoung12.lee <wonyoung12.lee@samsung.com>
src/ui/controls/FUiCtrl_IconListItem.cpp
src/ui/controls/FUiCtrl_IconListPresenter.cpp
src/ui/controls/FUiCtrl_IconListView.cpp
src/ui/inc/FUiCtrl_IconListPresenter.h
src/ui/inc/FUiCtrl_IconListView.h

index e45ac14..d033206 100644 (file)
@@ -419,22 +419,34 @@ _IconListItem::DrawBitmap(Canvas& canvas, Bitmap& bitmap, float ratio)
        __pTouchAniVE->SetBounds(FloatRectangle(rect.x, rect.y, width, height));
        __pTouchAniVE->SetShowState(true);
 
-       Canvas* pCanvas = __pTouchAniVE->GetCanvasN();
-       SysTryReturn(NID_UI_CTRL, pCanvas != null, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
-       pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
-       pCanvas->Clear();
-
-
        if (_BitmapImpl::CheckNinePatchedBitmapStrictly(bitmap))
        {
+               Canvas* pCanvas = __pTouchAniVE->GetCanvasN();
+               SysTryReturn(NID_UI_CTRL, pCanvas != null, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+               pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
+               pCanvas->Clear();
                pCanvas->DrawNinePatchedBitmap(FloatRectangle(0.0f, 0.0f, bitmap.GetWidthF(), bitmap.GetHeightF()), bitmap);
+               delete pCanvas;
        }
        else
        {
-               pCanvas->DrawBitmap(FloatRectangle(0.0f, 0.0f, width, height), bitmap);
+               String  imagePath = _BitmapImpl::GetInstance(bitmap)->GetFileName();
+
+               if (!imagePath.IsEmpty())
+               {
+                       __pTouchAniVE->SetImageSource(imagePath);
+               }
+               else
+               {
+                       __pTouchAniVE->SetImageSource(L"");
+                       Canvas* pCanvas = __pTouchAniVE->GetCanvasN();
+                       SysTryReturn(NID_UI_CTRL, pCanvas != null, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+                       pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
+                       pCanvas->Clear();
+                       pCanvas->DrawBitmap(FloatRectangle(0.0f, 0.0f, width, height), bitmap);
+                       delete pCanvas;
+               }
        }
-       delete pCanvas;
 
        if (!_FloatCompareGE(ratio, REFERENCE_FACTOR))
        {
@@ -744,14 +756,14 @@ _IconListItem::DrawBorder(Tizen::Graphics::Canvas& canvas, bool isFocused)
                __pFocusVE->SetBounds(FloatRectangle(focusUiBounds.x, focusUiBounds.y, focusUiBounds.width, focusUiBounds.height));
        }
 
-       Canvas* pCanvas = __pFocusVE->GetCanvasN();
-       SysTryReturn(NID_UI_CTRL, pCanvas != null, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
-       pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
-       pCanvas->Clear();
-
        if (isFocused)
        {
+               Canvas* pCanvas = __pFocusVE->GetCanvasN();
+               SysTryReturn(NID_UI_CTRL, pCanvas != null, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+
+               pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
+               pCanvas->Clear();
+
                if (__pProperty->GetFocusBitmap() != null)
                {
                        const Bitmap* pShadowBitmap = __pProperty->GetFocusBitmap();
@@ -768,6 +780,7 @@ _IconListItem::DrawBorder(Tizen::Graphics::Canvas& canvas, bool isFocused)
                                pCanvas->DrawBitmap(__pProperty->GetDropShadowBitmapBounds(), *pShadowBitmap);
                        }
                        __pFocusVE->SetShowState(true);
+                       delete pCanvas;
                }
        }
        else
index 4d7da9c..4960896 100644 (file)
@@ -145,6 +145,8 @@ _IconListPresenter::_IconListPresenter(_IconListView* pIconListView, _ListViewMo
        , __firstTouchMoveDirection(ICON_LIST_VIEW_SCROLL_DIRECTION_VERTICAL)
        , __RequestToDrawAccessibilityFocusUi(false)
        , __runningAnimationBackupIndex(INVALID_INDEX)
+       , __lazyDecodeBackGroundBitmap(false)
+       , __lazyDecodeEmptyListBitmap(false)
 {
 }
 
@@ -1369,23 +1371,38 @@ _IconListPresenter::Draw(void)
                const Bitmap* pBackgroundBitmap = __pIconListView->GetBackgroundBitmap();
                if (pBackgroundBitmap != null)
                {
-                       Canvas* pCanvas = __pVE->GetCanvasN();
-                       SysTryCatch(NID_UI_CTRL, (pCanvas!= null), , GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
-                       pCanvas->SetBackgroundColor(backgroundColor);
-                       pCanvas->Clear();
                        FloatRectangle bounds(__pIconListView->GetBoundsF());
                        bounds.SetPosition(0.0f, 0.0f);
                        if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*pBackgroundBitmap))
                        {
+                               Canvas* pCanvas = __pVE->GetCanvasN();
+                               SysTryCatch(NID_UI_CTRL, (pCanvas!= null), , GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+                               pCanvas->SetBackgroundColor(backgroundColor);
+                               pCanvas->Clear();
                                pCanvas->DrawNinePatchedBitmap(bounds, *pBackgroundBitmap);
+                               delete pCanvas;
                        }
                        else
                        {
-                               pCanvas->DrawBitmap(bounds, *pBackgroundBitmap);
-                       }
+                               String imagePath = _BitmapImpl::GetInstance(*pBackgroundBitmap)->GetFileName();
 
-                       delete pCanvas;
+                               if (!imagePath.IsEmpty())
+                               {
+                                       __pVE->SetImageSource(imagePath);
+                                       __lazyDecodeBackGroundBitmap = true;
+                               }
+                               else
+                               {
+                                       __pVE->SetImageSource(L"");
+                                       __lazyDecodeBackGroundBitmap = false;
+                                       Canvas* pCanvas = __pVE->GetCanvasN();
+                                       SysTryCatch(NID_UI_CTRL, (pCanvas!= null), , GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+                                       pCanvas->SetBackgroundColor(backgroundColor);
+                                       pCanvas->Clear();
+                                       pCanvas->DrawBitmap(bounds, *pBackgroundBitmap);
+                                       delete pCanvas;
+                               }
+                       }
 
                        __needBaseCanvas = true;
                }
@@ -1538,7 +1555,7 @@ _IconListPresenter::DrawEmptyList(void)
        }
 
        // set visual element or canvas for empty list
-       if (!__needBaseCanvas && __pEmptyListVE == null)
+       if (pBitmap != null && __pEmptyListVE == null)
        {
                __pEmptyListVE = new (std::nothrow) _VisualElement();
                SysTryCatch(NID_UI, __pEmptyListVE != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
@@ -1642,18 +1659,11 @@ _IconListPresenter::DrawEmptyList(void)
        }
 
        // draw empty list
-       if (!__needBaseCanvas)
+       if (pBitmap != null && __pEmptyListVE != null)
        {
                __pEmptyListVE->SetBounds(bounds);
                __pEmptyListVE->SetShowState(true);
 
-               pCanvas = __pEmptyListVE->GetCanvasN();
-               SysTryCatch(NID_UI, pCanvas != null, , GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
-               Color backgroundColor = __pIconListView->GetBackgroundColor();
-               pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
-               pCanvas->Clear();
-
                bounds.x = 0.0f;
                bounds.y = 0.0f;
        }
@@ -1663,11 +1673,31 @@ _IconListPresenter::DrawEmptyList(void)
                FloatRectangle bitmapBounds(bounds.x + bitmapXPosition, bounds.y, bitmapWidth, bitmapHeight);
                if (_BitmapImpl::CheckNinePatchedBitmapStrictly(*pBitmap))
                {
+                       pCanvas = __pEmptyListVE->GetCanvasN();
+                       SysTryCatch(NID_UI, pCanvas != null, , GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+                       pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
+                       pCanvas->Clear();
                        pCanvas->DrawNinePatchedBitmap(bitmapBounds, *pBitmap);
                }
                else
                {
-                       pCanvas->DrawBitmap(bitmapBounds, *pBitmap);
+                       String imagePath = _BitmapImpl::GetInstance(*pBitmap)->GetFileName();
+
+                       if (!imagePath.IsEmpty())
+                       {
+                               __pEmptyListVE->SetImageSource(imagePath);
+                               __lazyDecodeEmptyListBitmap = true;
+                       }
+                       else
+                       {
+                               __pEmptyListVE->SetImageSource(L"");
+                               __lazyDecodeEmptyListBitmap = false;
+                               pCanvas = __pEmptyListVE->GetCanvasN();
+                               SysTryCatch(NID_UI, pCanvas != null, , GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+                               pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
+                               pCanvas->Clear();
+                               pCanvas->DrawBitmap(bitmapBounds, *pBitmap);
+                       }
                }
        }
 
@@ -1681,7 +1711,14 @@ _IconListPresenter::DrawEmptyList(void)
 
                if (pCanvas == null)
                {
-                       pCanvas = __pEmptyListVE->GetCanvasN();
+                       if (__pEmptyListVE != null)
+                       {
+                               pCanvas = __pEmptyListVE->GetCanvasN();
+                       }
+                       else
+                       {
+                               pCanvas = __pVE->GetCanvasN();
+                       }
                        SysTryCatch(NID_UI, pCanvas != null, , GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
                        pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
                        pCanvas->Clear();
@@ -1693,12 +1730,6 @@ _IconListPresenter::DrawEmptyList(void)
 
        __listStatusChanged = false;
 
-       if (__needBaseCanvas && __pEmptyListVE != null)
-       {
-               __pEmptyListVE->Destroy();
-               __pEmptyListVE = null;
-       }
-
        delete pCanvas;
        delete pTextObject;
        return r;
@@ -2750,6 +2781,56 @@ _IconListPresenter::OnDrawFocus(void)
        DrawFocusUi(__highlightedIndex);
 }
 
+
+Canvas*
+_IconListPresenter::OnCanvasRequestedN(const FloatRectangle& bounds)
+{
+       int itemCount = __pListModel->GetItemCountInGroup(DEFAULT_GROUP_INDEX);
+
+       if (__pIconListView->GetBackgroundBitmap() != null && itemCount > 0)
+       {
+               if (__pVE != null && __lazyDecodeBackGroundBitmap == true)
+               {
+                       const Bitmap* pBackgroundBitmap = __pIconListView->GetBackgroundBitmap();
+
+                       if (pBackgroundBitmap != null)
+                       {
+                               Canvas* pCanvas = __pVE->GetCanvasN();
+                               SysTryCatch(NID_UI_CTRL, (pCanvas!= null), , GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+                               Color backgroundColor = __pIconListView->GetBackgroundColor();
+                               pCanvas->SetBackgroundColor(backgroundColor);
+                               pCanvas->Clear();
+
+                               pBackgroundBitmap->IsNinePatchedBitmap();
+                               Draw();
+                               return  pCanvas;
+                       }
+               }
+       }
+       else if (__pIconListView->GetBitmapOfEmptyList() != null && itemCount <= 0)
+       {
+               if (__pEmptyListVE != null && __lazyDecodeEmptyListBitmap == true)
+               {
+                       const Bitmap* pEmptyBitmap = __pIconListView->GetBitmapOfEmptyList();
+
+                       if (pEmptyBitmap != null)
+                       {
+                               Canvas* pCanvas = __pEmptyListVE->GetCanvasN();
+                               SysTryCatch(NID_UI_CTRL, (pCanvas!= null), , GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+                               pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
+                               pCanvas->Clear();
+
+                               pEmptyBitmap->IsNinePatchedBitmap();
+                               DrawEmptyList();
+                               return pCanvas;
+                       }
+               }
+       }
+
+CATCH:
+       return null;
+}
+
 // Tizen::Ui::_IKeyEventPreviewer
 bool
 _IconListPresenter::OnPreviewKeyPressed(const _Control& source, const _KeyInfo& keyInfo)
index ae10649..fd3cd51 100644 (file)
@@ -1083,6 +1083,13 @@ _IconListView::OnDrawFocus(void)
        __pIconListPresenter->OnDrawFocus();
 }
 
+Canvas*
+_IconListView::OnCanvasRequestedN(const FloatRectangle& bounds)
+{
+       return __pIconListPresenter->OnCanvasRequestedN(bounds);
+}
+
+
 // Tizen::Ui::_IPreviewKeyEventListener
 bool
 _IconListView::OnPreviewKeyPressed(const _Control& source, const _KeyInfo& keyInfo)
index efd6cfe..6297db7 100644 (file)
@@ -199,6 +199,7 @@ public:
        virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
        virtual void OnFocusModeStateChanged(void);
        virtual void OnDrawFocus(void);
+       Tizen::Graphics::Canvas* OnCanvasRequestedN(const Tizen::Graphics::FloatRectangle& bounds);
 
        // Tizen::Ui::_IKeyEventPreviewer
        virtual bool OnPreviewKeyPressed(const _Control& source, const _KeyInfo& keyInfo);
@@ -472,6 +473,8 @@ private:
        IconListViewScrollDirection __firstTouchMoveDirection;
        bool __RequestToDrawAccessibilityFocusUi;
        int __runningAnimationBackupIndex;
+       bool __lazyDecodeBackGroundBitmap;
+       bool __lazyDecodeEmptyListBitmap;
 }; // _IconListPresenter
 
 }}} // Tizen::Ui::Controls
index 28ab8c0..88b6b04 100644 (file)
@@ -313,6 +313,7 @@ public:
        virtual void OnFontChanged(Tizen::Graphics::Font* pFont);
        virtual void OnFocusModeStateChanged(void);
        virtual void OnDrawFocus(void);
+       virtual Tizen::Graphics::Canvas* OnCanvasRequestedN(const Tizen::Graphics::FloatRectangle& bounds);
 
        // Tizen::Ui::_IKeyEventListenerPreviewer
        virtual bool OnPreviewKeyPressed(const _Control& source, const _KeyInfo& keyInfo);