Fixed TDIS-5664; changed grid style to have line limitation.
authorclone <ingyou.park@samsung.com>
Tue, 28 May 2013 07:25:27 +0000 (16:25 +0900)
committerclone <ingyou.park@samsung.com>
Tue, 28 May 2013 07:25:27 +0000 (16:25 +0900)
Change-Id: Iddcb4cb8e9b130514b2ba365b88a9bf480a1c0fe
Signed-off-by: clone <ingyou.park@samsung.com>
src/ui/controls/FUiCtrl_ContextMenu.cpp
src/ui/controls/FUiCtrl_ContextMenuGridPresenter.cpp
src/ui/controls/FUiCtrl_ContextMenuModel.cpp
src/ui/inc/FUiCtrl_ContextMenuGridPresenter.h
src/ui/resource/FUi_ResourceContextMenuConfig.cpp

index e11bc77..f763947 100644 (file)
@@ -82,6 +82,8 @@ _ContextMenu::_ContextMenu(const FloatPoint& point, enum ContextMenuCoreStyle st
                __pArrowNormalBitmap[i] = null;
                __pArrowEffectBitmap[i] = null;
        }
+
+       GET_SHAPE_CONFIG(CONTEXTMENU::ITEM_MAX_COUNT, __layout, __showItemMaxCount);
 }
 
 _ContextMenu::~_ContextMenu(void)
@@ -310,7 +312,8 @@ _ContextMenu::OnAttachedToMainTree(void)
                __pContextMenuPresenter->CalculateShowItemCount();
        }
 
-       __pContextMenuPresenter->CalculateWindowRect();
+       r = __pContextMenuPresenter->CalculateWindowRect();
+       SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, E_SYSTEM, "[%s] Propagating.", GetErrorMessage(GetLastResult()));
 
        r = Open();
 
index eb9db26..3a362f2 100644 (file)
@@ -42,7 +42,7 @@ using namespace Tizen::Graphics::_Text;
 
 static const int MAX_COUNT_PER_LINE = 5;
 static const int MIN_COUNT_PER_LINE = 3;
-static const int MAX_LINE_COUNT = 32;
+static const int MAX_LINE_COUNT = 32;          // Only for index of array
 
 namespace Tizen { namespace Ui { namespace Controls
 {
@@ -254,6 +254,14 @@ _ContextMenuGridPresenter::AddItem(const Base::String& text, int actionId, const
                SysTryReturn(NID_UI_CTRL, false, r, r, "Failed to add item.");
        }
 
+       r = AdjustItemLayout();
+       if (r != E_SUCCESS)
+       {
+               result rt = __pModel->RemoveItem(__pModel->GetItemCount() - 1);
+               SysTryReturn(NID_UI_CTRL, rt == E_SUCCESS, rt, rt, "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+
+               SysTryReturn(NID_UI_CTRL, false, r, r, "Failed to add item.");
+       }
 
        return r;
 }
@@ -277,7 +285,16 @@ _ContextMenuGridPresenter::InsertItem(int index, const Tizen::Base::String& text
        if (r != E_SUCCESS)
        {
                delete pItem;
-               SysTryReturn(NID_UI_CTRL, false, r, r, "Failed to add item.");
+               SysTryReturn(NID_UI_CTRL, false, r, r, "Failed to insert item.");
+       }
+
+       r = AdjustItemLayout();
+       if (r != E_SUCCESS)
+       {
+               result rt = __pModel->RemoveItem(index);
+               SysTryReturn(NID_UI_CTRL, rt == E_SUCCESS, rt, rt, "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+
+               SysTryReturn(NID_UI_CTRL, false, r, r, "Failed to insert item.");
        }
 
        return E_SUCCESS;
@@ -301,7 +318,16 @@ _ContextMenuGridPresenter::SetItem(int index, const Tizen::Base::String& text, i
        if (r != E_SUCCESS)
        {
                delete pItem;
-               SysTryReturn(NID_UI_CTRL, false, r, r, "Failed to add item.");
+               SysTryReturn(NID_UI_CTRL, false, r, r, "Failed to set item.");
+       }
+
+       r = AdjustItemLayout();
+       if (r != E_SUCCESS)
+       {
+               result rt = __pModel->RemoveItem(index);
+               SysTryReturn(NID_UI_CTRL, rt == E_SUCCESS, rt, rt, "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+
+               SysTryReturn(NID_UI_CTRL, false, r, r, "Failed to set item.");
        }
 
        return E_SUCCESS;
@@ -399,9 +425,11 @@ _ContextMenuGridPresenter::CalculateWindowRect(void)
 {
        result r = E_SUCCESS;
 
-       AdjustItemLayout();
+       r = AdjustItemLayout();
+       SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(GetLastResult()));
 
        r = CalculateRect();
+       SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(GetLastResult()));
 
        AdjustItemPosition();
 
@@ -762,7 +790,7 @@ _ContextMenuGridPresenter::IsLayoutBitmapOnly(void)
        return true;
 }
 
-void
+result
 _ContextMenuGridPresenter::AdjustItemLayout(void)
 {
        int itemCount = __pModel->GetItemCount();
@@ -772,7 +800,8 @@ _ContextMenuGridPresenter::AdjustItemLayout(void)
        {
                __layoutSize.width = __itemWidth;
                __layoutSize.height = __itemHeight;
-               return;
+
+               return E_SUCCESS;
        }
 
        bool bitmapOnly = IsLayoutBitmapOnly();
@@ -786,25 +815,16 @@ _ContextMenuGridPresenter::AdjustItemLayout(void)
                layoutSize = AdjustItemLayoutTabStyle();
        }
 
-       FloatDimension screen = _ControlManager::GetInstance()->GetScreenSizeF();
-
-       if (__pContextMenu->GetLayout() == _CONTROL_ORIENTATION_LANDSCAPE)
-       {
-               screen.SetSize(screen.height, screen.width);
-       }
-
-       int maxHeight = screen.height - __screenTopMargin - __screenBottomMargin - __arrowHeight;
-       if (layoutSize.height > maxHeight)
-       {
-               layoutSize.height = maxHeight;
-       }
-
        __layoutSize = layoutSize;
+
+       return GetLastResult();
 }
 
 Tizen::Graphics::FloatDimension
 _ContextMenuGridPresenter::AdjustItemLayoutIconStyle(void)
 {
+       ClearLastResult();
+
        int countPerLine = 0;
        int itemCount = __pModel->GetItemCount();
        float itemWidth = __itemWidth + __itemGap;
@@ -894,6 +914,11 @@ _ContextMenuGridPresenter::AdjustItemLayoutIconStyle(void)
                }
        }
 
+       if (lineCount > __pContextMenu->GetShowItemMaxCount())
+       {
+               SetLastResult(E_MAX_EXCEEDED);
+       }
+
        return layoutSize;
 
 }
@@ -901,6 +926,8 @@ _ContextMenuGridPresenter::AdjustItemLayoutIconStyle(void)
 Tizen::Graphics::FloatDimension
 _ContextMenuGridPresenter::AdjustItemLayoutTabStyle(void)
 {
+       ClearLastResult();
+
        int lineItemCountList[MAX_LINE_COUNT] = {0, };
        float lineWidthList[MAX_LINE_COUNT] = {0.0f, };
 
@@ -981,7 +1008,7 @@ _ContextMenuGridPresenter::AdjustItemLayoutTabStyle(void)
                }
 
                lineWidthList[lineCount - 1] = lineWidth;
-               lineItemCountList[lineCount -1] = lineItemCount;
+               lineItemCountList[lineCount - 1] = lineItemCount;
        }
 
        // last item
@@ -1057,6 +1084,11 @@ _ContextMenuGridPresenter::AdjustItemLayoutTabStyle(void)
                itemIndex += count;
        }
 
+       if (lineCount > __pContextMenu->GetShowItemMaxCount())
+       {
+               SetLastResult(E_MAX_EXCEEDED);
+       }
+
        return layoutSize;
 }
 
index 2cbad83..be5b574 100644 (file)
@@ -108,6 +108,7 @@ _ContextMenuModel::InsertItem( _ContextMenuItem* pItem, int index)
 result
 _ContextMenuModel::SetItem(_ContextMenuItem* pItem, int index)
 {
+       // The same ActionId can be used in SetItem.
        if (IsValidItem(pItem) == false)
        {
                _ContextMenuItem* pTargetItem = GetItem(index);
index 5b78488..ea5f98c 100644 (file)
@@ -90,7 +90,7 @@ public:
 private:
        void LoadShape(void);
        result CalculateRect(void);
-       void AdjustItemLayout(void);
+       result AdjustItemLayout(void);
        void AdjustItemPosition(void);
        Tizen::Graphics::FloatDimension AdjustItemLayoutIconStyle(void);
        Tizen::Graphics::FloatDimension AdjustItemLayoutTabStyle(void);
index 4cf8368..d0dafe0 100644 (file)
@@ -93,10 +93,10 @@ START_UI_CONFIG(CONTEXTMENU);
 
                ADD_FIXED_VALUE_CONFIG(GRID_ITEM_GAP, 2);
 
-               ADD_SHAPE_CONFIG(SCREEN_TOP_MARGIN, 24);
-               ADD_SHAPE_CONFIG(SCREEN_BOTTOM_MARGIN, 24);
-               ADD_SHAPE_CONFIG(SCREEN_LEFT_MARGIN, 24);
-               ADD_SHAPE_CONFIG(SCREEN_RIGHT_MARGIN, 24);
+               ADD_SHAPE_CONFIG(SCREEN_TOP_MARGIN, 0);
+               ADD_SHAPE_CONFIG(SCREEN_BOTTOM_MARGIN, 0);
+               ADD_SHAPE_CONFIG(SCREEN_LEFT_MARGIN, 0);
+               ADD_SHAPE_CONFIG(SCREEN_RIGHT_MARGIN, 0);
 
                ADD_SHAPE_CONFIG(ANCHOR_WIDTH, 36);
                ADD_SHAPE_CONFIG(ANCHOR_HEIGHT, 36);