ScrollList::ScrollList(ds::ui::SpriteEngine& engine, const bool vertical) : ds::ui::Sprite(engine) , mScrollArea(nullptr) , mStartPositionX(10.0f) , mIncrementAmount(50.0f) , mAnimateOnDeltaDelay(0.0f) , mAnimateOnStartDelay(0.0f) , mVerticalScrolling(vertical) , mFillFromTop(true) { mScrollArea = new ds::ui::ScrollArea(mEngine, getWidth(), getHeight(), mVerticalScrolling); if(mScrollArea){ mScrollArea->setScrollUpdatedCallback([this](ds::ui::Sprite*){ assignItems(); }); mScrollArea->setFadeColors(ci::ColorA(0.0f, 0.0f, 0.0f, 1.0f), ci::ColorA(0.0f, 0.0f, 0.0f, 0.0f)); mScrollArea->setFadeHeight(50.0f); mScrollArea->setUseFades(true); addChildPtr(mScrollArea); } mScrollableHolder = new ds::ui::Sprite(mEngine); if(mScrollableHolder){ mScrollArea->addSpriteToScroll(mScrollableHolder); mScrollableHolder->enable(false); } enable(false); }
ScrollList::ScrollList(ds::ui::SpriteEngine& engine, const bool vertical) : ds::ui::Sprite(engine) , mScrollArea(nullptr) , mStartPositionX(10.0f) , mStartPositionY(0.0f) , mIncrementAmount(50.0f) , mAnimateOnDeltaDelay(0.0f) , mAnimateOnStartDelay(0.0f) , mVerticalScrolling(vertical) , mFillFromTop(true) , mGridLayout(false) , mSpecialLayout(false) , mTargetRow(0) , mTargetColumn(0) , mGapping(0) { mScrollArea = new ds::ui::ScrollArea(mEngine, getWidth(), getHeight(), mVerticalScrolling); if(mScrollArea){ mScrollArea->setScrollUpdatedCallback([this](ds::ui::Sprite*){ assignItems(); if(mScrollUpdatedCallback){ mScrollUpdatedCallback(); } }); mScrollArea->setScrollerTouchedCallback([this]{ mLastUpdateTime = Poco::Timestamp().epochMicroseconds(); }); mScrollArea->setFadeColors(ci::ColorA(0.0f, 0.0f, 0.0f, 1.0f), ci::ColorA(0.0f, 0.0f, 0.0f, 0.0f)); mScrollArea->setFadeHeight(50.0f); mScrollArea->setUseFades(true); addChildPtr(mScrollArea); } mScrollableHolder = new ds::ui::Sprite(mEngine); if(mScrollableHolder){ mScrollArea->addSpriteToScroll(mScrollableHolder); mScrollableHolder->enable(false); } mLastUpdateTime = Poco::Timestamp().epochMicroseconds(); enable(false); }
void ScrollList::layout(){ layoutItems(); if(mVerticalScrolling){ float scrollyHeight = mScrollableHolder->getHeight(); if(scrollyHeight < getHeight()){ scrollyHeight = getHeight(); } if(mScrollableHolder){ mScrollableHolder->setSize(getWidth(), scrollyHeight); } if (getPerspective()){ if(mFillFromTop){ pushItemsTop(); } } else if(!mFillFromTop){ pushItemsTop(); } } else { float scrollyWidth = mScrollableHolder->getWidth(); if(scrollyWidth < getWidth()){ scrollyWidth = getWidth(); } if(mScrollableHolder){ mScrollableHolder->setSize(scrollyWidth, getHeight()); } } if(mScrollArea){ mScrollArea->setScrollSize(getWidth(), getHeight()); } assignItems(); }