Anchor added.
authorHeeJu Kang <mobum.kang@samsung.com>
Sat, 16 Feb 2013 08:13:26 +0000 (17:13 +0900)
committerHeeJu Kang <mobum.kang@samsung.com>
Sat, 16 Feb 2013 08:13:26 +0000 (17:13 +0900)
Change-Id: I46d5e1286a67d42b85272862ceb8262737e5b2b4
Signed-off-by: HeeJu Kang <mobum.kang@samsung.com>
src/FShell_LiveboxPopup.cpp
src/FShell_LiveboxPopup.h
src/FShell_LiveboxPopupImpl.cpp
src/FShell_LiveboxPopupImpl.h
src/FShell_LiveboxPopupModel.cpp
src/FShell_LiveboxPopupModel.h
src/FShell_LiveboxPopupPresenter.cpp
src/FShell_LiveboxPopupPresenter.h
src/FShell_LiveboxPopupProviderImpl.cpp

index 0129fe2..acb1d71 100644 (file)
@@ -258,6 +258,18 @@ _LiveboxPopup::GetProviderId(void) const
        return __pLiveboxPopupPresenter->GetProviderId();
 }
 
+void
+_LiveboxPopup::SetAnchorPosition(const Tizen::Graphics::FloatPoint& position)
+{
+       return __pLiveboxPopupPresenter->SetAnchorPosition(position);
+}
+
+FloatPoint
+_LiveboxPopup::GetAnchorPosition(void) const
+{
+       return __pLiveboxPopupPresenter->GetAnchorPosition();
+}
+
 result
 _LiveboxPopup::SetLayerShowState(bool showState)
 {
index 5df3e6f..18de23a 100644 (file)
 #include <FBaseString.h>
 #include "FUi_Window.h"
 
+namespace Tizen { namespace Graphics
+{
+class Dimension;
+class FloatPoint;
+}} // Tizen::Graphics
+
 namespace Tizen { namespace Ui
 {
 class _IUiEventManager;
@@ -58,6 +64,8 @@ public:
        result Initialize(const Tizen::Graphics::Dimension& size);
        result SetProviderId(const Tizen::Base::String& providerId);
        Tizen::Base::String GetProviderId(void) const;
+       void SetAnchorPosition(const Tizen::Graphics::FloatPoint& position);
+       Tizen::Graphics::FloatPoint GetAnchorPosition(void) const;
 
 protected:
        _LiveboxPopup(void);
index d3dc6c2..5810dd9 100644 (file)
@@ -115,4 +115,22 @@ _LiveboxPopupImpl::SetProviderId(const String& providerId)
        return r;
 }
 
+String
+_LiveboxPopupImpl::GetProviderId(void) const
+{
+       return GetCore().GetProviderId();
+}
+
+void
+_LiveboxPopupImpl::SetAnchorPosition(const Tizen::Graphics::FloatPoint& position)
+{
+       GetCore().SetAnchorPosition(position);
+}
+
+FloatPoint
+_LiveboxPopupImpl::GetAnchorPosition(void) const
+{
+       return GetCore().GetAnchorPosition();
+}
+
 }} // Tizen::Shell
index 0bf9de6..2081c86 100644 (file)
 #include "FUi_WindowImpl.h"
 #include "FShell_LiveboxPopup.h"
 
+namespace Tizen { namespace Graphics
+{
+class Dimension;
+class FloatPoint;
+}} // Tizen::Graphics
+
 namespace Tizen { namespace Shell
 {
 
@@ -42,6 +48,9 @@ public:
 
        result Initialize(const Tizen::Graphics::Dimension& size);
        result SetProviderId(const Tizen::Base::String& providerId);
+       Tizen::Base::String GetProviderId(void) const;
+       void SetAnchorPosition(const Tizen::Graphics::FloatPoint& position);
+       Tizen::Graphics::FloatPoint GetAnchorPosition(void) const;
 
 protected:
        _LiveboxPopupImpl(LiveboxPopup* pPublic, _LiveboxPopup* pCore, const Tizen::Ui::Layout* pPortraitLayout, const Tizen::Ui::Layout* pLandscapeLayout);
index 5f764a3..2a658cf 100644 (file)
@@ -23,6 +23,7 @@
 #include "FShell_LiveboxPopupModel.h"
 
 using namespace Tizen::Base;
+using namespace Tizen::Graphics;
 
 namespace Tizen { namespace Shell
 {
@@ -47,4 +48,16 @@ _LiveboxPopupModel::GetProviderId(void) const
        return __providerId;
 }
 
+void
+_LiveboxPopupModel::SetAnchorPosition(const Tizen::Graphics::FloatPoint& position)
+{
+       __anchorPosition = position;
+}
+
+FloatPoint
+_LiveboxPopupModel::GetAnchorPosition(void) const
+{
+       return __anchorPosition;
+}
+
 }} // Tizen::Shell
index 01efc91..9b48608 100644 (file)
@@ -25,6 +25,7 @@
 
 #include <FBaseObject.h>
 #include <FBaseString.h>
+#include <FGrpFloatPoint.h>
 
 namespace Tizen { namespace Shell
 {
@@ -39,13 +40,17 @@ public:
 public:
        void SetProviderId(const Tizen::Base::String& providerId);
        Tizen::Base::String GetProviderId(void) const;
+       void SetAnchorPosition(const Tizen::Graphics::FloatPoint& position);
+       Tizen::Graphics::FloatPoint GetAnchorPosition(void) const;
 
 private:
        _LiveboxPopupModel(const _LiveboxPopupModel& rhs);
        _LiveboxPopupModel& operator =(const _LiveboxPopupModel& rhs);
 
 private:
-       Tizen::Base::String __providerId;
+       Tizen::Base::String __providerId;\r
+       Tizen::Graphics::FloatPoint __anchorPosition;\r
+
 }; // _LiveboxPopupModel
 
 }} // Tizen::Shell
index cb2995d..a805a71 100644 (file)
@@ -83,22 +83,74 @@ _LiveboxPopupPresenter::GetProviderId(void) const
 }
 
 void
+_LiveboxPopupPresenter::SetAnchorPosition(const Tizen::Graphics::FloatPoint& position)
+{
+       return __pLiveboxPopupModel->SetAnchorPosition(position);
+}
+
+FloatPoint
+_LiveboxPopupPresenter::GetAnchorPosition(void) const
+{
+       return __pLiveboxPopupModel->GetAnchorPosition();
+}
+
+void
 _LiveboxPopupPresenter::Draw(void)
 {
        unique_ptr<Canvas> pCanvas(__pLiveboxPopup->GetCanvasN());
        SysTryReturnVoidResult(NID_UI_CTRL, pCanvas, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is insufficient.");
 
+       DrawBackground(*pCanvas);
+       DrawAnchor(*pCanvas);
+}
+
+void
+_LiveboxPopupPresenter::DrawBackground(Canvas& canvas)
+{
        Rectangle bounds = __pLiveboxPopup->GetBounds();
        bounds.x = 0;
        bounds.y = 0;
 
        if (__pBackgroundBitmap->IsNinePatchedBitmap())
        {
-               pCanvas->DrawNinePatchedBitmap(bounds, *__pBackgroundBitmap);
+               canvas.DrawNinePatchedBitmap(bounds, *__pBackgroundBitmap);
+       }
+       else
+       {
+               canvas.DrawBitmap(bounds, *__pBackgroundBitmap, Rectangle(0, 0, __pBackgroundBitmap->GetWidth(), __pBackgroundBitmap->GetHeight()));
+       }
+}
+
+void
+_LiveboxPopupPresenter::DrawAnchor(Canvas& canvas)
+{
+       Rectangle popupBounds = __pLiveboxPopup->GetBounds();
+       FloatPoint anchorF = GetAnchorPosition();
+       Bitmap* pArrowBitmap = null;
+
+       Dimension screenSize = _ControlManager::GetInstance()->GetScreenSize();
+       Point anchor(anchorF.x * screenSize.width, 0);
+
+       if (anchorF.y < 0.5f)
+       {
+               pArrowBitmap = __pArrowUpBitmap.get();
+               anchor.y = 0;
+       }
+       else
+       {
+               pArrowBitmap = __pArrowDownBitmap.get();
+               anchor.y = popupBounds.height - pArrowBitmap->GetHeight();
+       }
+
+       Rectangle bounds(anchor.x, anchor.y, pArrowBitmap->GetWidth(), pArrowBitmap->GetHeight());
+
+       if (pArrowBitmap->IsNinePatchedBitmap())
+       {
+               canvas.DrawNinePatchedBitmap(bounds, *pArrowBitmap);
        }
        else
        {
-               pCanvas->DrawBitmap(bounds, *__pBackgroundBitmap, Rectangle(0, 0, __pBackgroundBitmap->GetWidth(), __pBackgroundBitmap->GetHeight()));
+               canvas.DrawBitmap(bounds, *pArrowBitmap, Rectangle(0, 0, pArrowBitmap->GetWidth(), pArrowBitmap->GetHeight()));
        }
 }
 
index 5124353..4c2edc9 100644 (file)
@@ -29,6 +29,8 @@
 namespace Tizen { namespace Graphics
 {
 class Bitmap;
+class Canvas;
+class FloatPoint;
 }} // Tizen::Graphics
 
 namespace Tizen { namespace Shell
@@ -46,7 +48,11 @@ public:
        result Initialize(void);
        void SetProviderId(const Tizen::Base::String& providerId);
        Tizen::Base::String GetProviderId(void) const;
+       void SetAnchorPosition(const Tizen::Graphics::FloatPoint& position);
+       Tizen::Graphics::FloatPoint GetAnchorPosition(void) const;
        void Draw(void);
+       void DrawBackground(Tizen::Graphics::Canvas& canvas);
+       void DrawAnchor(Tizen::Graphics::Canvas& canvas);
 
 private:
        _LiveboxPopupPresenter(const _LiveboxPopupPresenter& rhs);
index b58419a..5adcfe9 100644 (file)
@@ -31,6 +31,7 @@ namespace Tizen { namespace Shell
 {
 
 using namespace Tizen::Base;
+using namespace Tizen::Graphics;
 
 _LiveboxPopupProviderImpl::_LiveboxPopupProviderImpl(const String& instanceId, double x, double y)
        :__instanceId(instanceId)
@@ -72,6 +73,7 @@ _LiveboxPopupProviderImpl::SetLiveboxPopup(LiveboxPopup* pLiveboxPopup)
        _LiveboxPopupImpl* pLiveboxPopupImpl = _LiveboxPopupImpl::GetInstance(*pLiveboxPopup);
        SysTryReturnResult(NID_APP, pLiveboxPopupImpl, E_INVALID_OPERATION, "Not-yet constructed! LiveboxPopup::Construct() should be called before use.");
 
+       pLiveboxPopupImpl->SetAnchorPosition(FloatPoint(__x, __y));
        pLiveboxPopupImpl->SetProviderId(GetInstanceId());
 
        return E_SUCCESS;