Scrollable: Klocwork issues fix
[platform/core/uifw/dali-toolkit.git] / base / dali-toolkit / internal / controls / scrollable / item-view / item-view-impl.cpp
index dc5a456..633a1d2 100644 (file)
 
 // EXTERNAL INCLUDES
 #include <algorithm>
+#include <dali/public-api/animation/constraints.h>
+#include <dali/public-api/common/set-wrapper.h>
+#include <dali/public-api/common/stage.h>
+#include <dali/public-api/events/mouse-wheel-event.h>
+#include <dali/public-api/events/touch-event.h>
+#include <dali/public-api/object/type-registry.h>
 
 // INTERNAL INCLUDES
-#include <dali/public-api/events/mouse-wheel-event.h>
 #include <dali-toolkit/public-api/controls/scrollable/item-view/item-factory.h>
 #include <dali-toolkit/internal/controls/scrollable/scroll-connector-impl.h>
 #include <dali-toolkit/internal/controls/scrollable/bouncing-effect-actor.h>
 
-using namespace std;
+using std::string;
+using std::set;
 using namespace Dali;
 
 namespace // unnamed namespace
@@ -323,7 +329,6 @@ ItemView::ItemView(ItemFactory& factory)
 : Scrollable(),
   mItemFactory(factory),
   mActiveLayout(NULL),
-  mDefaultAlphaFunction(Dali::Constraint::DEFAULT_ALPHA_FUNCTION),
   mAnimatingOvershootOn(false),
   mAnimateOvershootOff(false),
   mAnchoringEnabled(true),
@@ -332,6 +337,7 @@ ItemView::ItemView(ItemFactory& factory)
   mRefreshOrderHint(true/*Refresh item 0 first*/),
   mMinimumSwipeSpeed(DEFAULT_MINIMUM_SWIPE_SPEED),
   mMinimumSwipeDistance(DEFAULT_MINIMUM_SWIPE_DISTANCE),
+  mMouseWheelScrollDistanceStep(0.0f),
   mScrollDistance(0.0f),
   mScrollSpeed(0.0f),
   mTotalPanDisplacement(Vector2::ZERO),
@@ -339,6 +345,9 @@ ItemView::ItemView(ItemFactory& factory)
   mIsFlicking(false),
   mGestureState(Gesture::Clear),
   mAddingItems(false),
+  mPropertyPosition(Property::INVALID_INDEX),
+  mPropertyMinimumLayoutPosition(Property::INVALID_INDEX),
+  mPropertyScrollSpeed(Property::INVALID_INDEX),
   mRefreshEnabled(true),
   mItemsParentOrigin( ParentOrigin::CENTER),
   mItemsAnchorPoint( AnchorPoint::CENTER)
@@ -548,16 +557,6 @@ void ItemView::DeactivateCurrentLayout()
   }
 }
 
-void ItemView::SetDefaultAlphaFunction(AlphaFunction func)
-{
-  mDefaultAlphaFunction = func;
-}
-
-AlphaFunction ItemView::GetDefaultAlphaFunction() const
-{
-  return mDefaultAlphaFunction;
-}
-
 void ItemView::OnRefreshNotification(PropertyNotification& source)
 {
   if(mRefreshEnabled || mScrollAnimation)
@@ -631,7 +630,7 @@ float ItemView::GetAnchoringDuration() const
 
 void ItemView::SetRefreshInterval(float intervalLayoutPositions)
 {
-  if(mRefreshIntervalLayoutPositions != intervalLayoutPositions)
+  if( !Equals(mRefreshIntervalLayoutPositions, intervalLayoutPositions) )
   {
     mRefreshIntervalLayoutPositions = intervalLayoutPositions;
 
@@ -730,18 +729,16 @@ void ItemView::InsertItems( const ItemContainer& newItems, float durationSeconds
   mAddingItems = true;
 
   // Insert from lowest id to highest
-  set<Item> sortedItems;
+  std::set<Item> sortedItems;
   for( ConstItemIter iter = newItems.begin(); newItems.end() != iter; ++iter )
   {
     sortedItems.insert( *iter );
   }
 
-  for( set<Item>::iterator iter = sortedItems.begin(); sortedItems.end() != iter; ++iter )
+  for( std::set<Item>::iterator iter = sortedItems.begin(); sortedItems.end() != iter; ++iter )
   {
     Self().Add( iter->second );
 
-    cout << "inserting item: " << iter->first << endl;
-
     ItemPoolIter foundIter = mItemPool.find( iter->first );
     if( mItemPool.end() != foundIter )
     {
@@ -909,7 +906,7 @@ void ItemView::RemoveActorsOutsideRange( ItemRange range )
 
 void ItemView::AddActorsWithinRange( ItemRange range, float durationSeconds )
 {
-  range.end = min(mItemFactory.GetNumberOfItems(), range.end);
+  range.end = std::min(mItemFactory.GetNumberOfItems(), range.end);
 
   // The order of addition depends on the scroll direction.
   if (mRefreshOrderHint)
@@ -1110,7 +1107,7 @@ float ItemView::ClampFirstItemPosition(float targetPosition, const Vector3& targ
 {
   Actor self = Self();
   float minLayoutPosition = layout.GetMinimumLayoutPosition(mItemFactory.GetNumberOfItems(), targetSize);
-  float clamppedPosition = min(0.0f, max(minLayoutPosition, targetPosition));
+  float clamppedPosition = std::min(0.0f, std::max(minLayoutPosition, targetPosition));
   mScrollOvershoot = targetPosition - clamppedPosition;
   self.SetProperty(mPropertyMinimumLayoutPosition, minLayoutPosition);
 
@@ -1157,7 +1154,7 @@ void ItemView::OnPan(PanGesture gesture)
 
         RemoveAnimation(mScrollAnimation);
 
-        float flickAnimationDuration = Clamp( mActiveLayout->GetItemFlickAnimationDuration() * max(1.0f, fabsf(firstItemScrollPosition - GetCurrentLayoutPosition(0)))
+        float flickAnimationDuration = Clamp( mActiveLayout->GetItemFlickAnimationDuration() * std::max(1.0f, fabsf(firstItemScrollPosition - GetCurrentLayoutPosition(0)))
                                        , DEFAULT_MINIMUM_SWIPE_DURATION, DEFAULT_MAXIMUM_SWIPE_DURATION);
 
         mScrollAnimation = Animation::New(flickAnimationDuration);
@@ -1581,7 +1578,7 @@ float ItemView::CalculateScrollOvershoot()
     float positionDelta = GetCurrentLayoutPosition(0) + scrollDistance;
     float minLayoutPosition = mActiveLayout->GetMinimumLayoutPosition(mItemFactory.GetNumberOfItems(), Self().GetCurrentSize());
     self.SetProperty(mPropertyMinimumLayoutPosition, minLayoutPosition);
-    float clamppedPosition = min(0.0f, max(minLayoutPosition, positionDelta));
+    float clamppedPosition = std::min(0.0f, std::max(minLayoutPosition, positionDelta));
     overshoot = positionDelta - clamppedPosition;
   }
 
@@ -1650,8 +1647,16 @@ Vector3 ItemView::GetItemsAnchorPoint() const
 
 void ItemView::GetItemsRange(ItemRange& range)
 {
-  range.begin = mItemPool.begin()->first;
-  range.end = mItemPool.rbegin()->first + 1;
+  if( !mItemPool.empty() )
+  {
+    range.begin = mItemPool.begin()->first;
+    range.end = mItemPool.rbegin()->first + 1;
+  }
+  else
+  {
+    range.begin = 0;
+    range.end = 0;
+  }
 }
 
 void ItemView::OnScrollPositionChanged( float position )