X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Fpublic-api%2Fcontrols%2Fscrollable%2Fitem-view%2Fitem-layout.cpp;h=443b21178ff506e9f46bb077e21bb9b9b0a7de62;hp=0dc2bb4788a14f45825c5726a3ec8179af185759;hb=1d82abb8a1a514ce0af63004706135fb7883f89b;hpb=26f485226da13f840c19b73a228f9baa9ef71214 diff --git a/dali-toolkit/public-api/controls/scrollable/item-view/item-layout.cpp b/dali-toolkit/public-api/controls/scrollable/item-view/item-layout.cpp index 0dc2bb4..443b211 100644 --- a/dali-toolkit/public-api/controls/scrollable/item-view/item-layout.cpp +++ b/dali-toolkit/public-api/controls/scrollable/item-view/item-layout.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,22 +24,22 @@ #include // INTERNAL INCLUDES +#include #include namespace Dali { - namespace Toolkit { - struct ItemLayout::Impl { - Vector3 mItemSize; ///< The size of an item in the layout - ControlOrientation::Type mOrientation; ///< the orientation of the layout. + Vector3 mItemSize; ///< The size of an item in the layout + ControlOrientation::Type mOrientation; ///< the orientation of the layout. + Property::Map mProperties; }; ItemLayout::ItemLayout() -: mImpl( new Impl ) +: mImpl(new Impl) { mImpl->mOrientation = ControlOrientation::Up; } @@ -59,12 +59,12 @@ ControlOrientation::Type ItemLayout::GetOrientation() const return mImpl->mOrientation; } -void ItemLayout::GetItemSize( unsigned int itemId, const Vector3& layoutSize, Vector3& itemSize ) const +void ItemLayout::GetItemSize(unsigned int itemId, const Vector3& layoutSize, Vector3& itemSize) const { // If item-size has not been set then get the default size - if ( mImpl->mItemSize == Vector3::ZERO ) + if(mImpl->mItemSize == Vector3::ZERO) { - GetDefaultItemSize( itemId, layoutSize, itemSize ); + GetDefaultItemSize(itemId, layoutSize, itemSize); } else { @@ -72,21 +72,18 @@ void ItemLayout::GetItemSize( unsigned int itemId, const Vector3& layoutSize, Ve } } -void ItemLayout::SetItemSize( const Vector3& itemSize ) +void ItemLayout::SetItemSize(const Vector3& itemSize) { mImpl->mItemSize = itemSize; } float ItemLayout::GetClosestOnScreenLayoutPosition(int itemID, float currentLayoutPosition, const Vector3& layoutSize) { - Vector3 itemPosition = GetItemPosition( itemID, currentLayoutPosition, layoutSize ); + Vector3 itemPosition = GetItemPosition(itemID, currentLayoutPosition, layoutSize); Vector3 itemSize; GetItemSize(itemID, layoutSize, itemSize); Vector3 onScreenArea = (layoutSize - itemSize) * 0.5f; - if (itemPosition.x < -onScreenArea.x - || itemPosition.x > onScreenArea.x - || itemPosition.y < -onScreenArea.y - || itemPosition.y > onScreenArea.y) + if(itemPosition.x < -onScreenArea.x || itemPosition.x > onScreenArea.x || itemPosition.y < -onScreenArea.y || itemPosition.y > onScreenArea.y) { // item not within viewable area // safest thing to do here since we have no idea how the implementation will work is to return the scroll to position @@ -97,13 +94,13 @@ float ItemLayout::GetClosestOnScreenLayoutPosition(int itemID, float currentLayo int ItemLayout::GetNextFocusItemID(int itemID, int maxItems, Dali::Toolkit::Control::KeyboardFocus::Direction direction, bool loopEnabled) { - switch( direction ) + switch(direction) { case Control::KeyboardFocus::LEFT: case Control::KeyboardFocus::UP: { itemID--; - if( itemID < 0 ) + if(itemID < 0) { itemID = loopEnabled ? maxItems - 1 : 0; } @@ -113,12 +110,16 @@ int ItemLayout::GetNextFocusItemID(int itemID, int maxItems, Dali::Toolkit::Cont case Control::KeyboardFocus::DOWN: { itemID++; - if( itemID >= maxItems ) + if(itemID >= maxItems) { itemID = loopEnabled ? 0 : maxItems - 1; } break; } + default: + { + break; + } } return itemID; } @@ -129,6 +130,34 @@ float ItemLayout::GetFlickSpeedFactor() const return GetScrollSpeedFactor(); } +void ItemLayout::SetLayoutProperties(const Property::Map& properties) +{ + for(unsigned int idx = 0, mapCount = properties.Count(); idx < mapCount; ++idx) + { + KeyValuePair propertyPair(properties.GetKeyValue(idx)); + + if(propertyPair.first == DefaultItemLayoutProperty::ITEM_SIZE) + { + SetItemSize(propertyPair.second.Get()); + } + else if(propertyPair.first == DefaultItemLayoutProperty::ORIENTATION) + { + //Up, Left, Down, Right + int orientationType = propertyPair.second.Get(); + if(orientationType <= ControlOrientation::Right && orientationType >= ControlOrientation::Up) + { + SetOrientation(ControlOrientation::Type(orientationType)); + } + } + } + mImpl->mProperties = properties; +} + +Property::Map ItemLayout::GetLayoutProperties() +{ + return mImpl->mProperties; +} + } // namespace Toolkit } // namespace Dali