//WidgetSlideListView.h
class WidgetEaseInListView : public cocos2d::gui::UIListView
{
public:
static WidgetEaseInListView* create(cocos2d::gui::UIListView* pAnthor=NULL);
void doEaseIn(bool bRight2Left=true);
protected:
virtual void copySpecialProperties(cocos2d::gui::Widget* model);
protected:
virtual void onEaseInOver();
virtual void startEaseIn(bool bRight2Left);
virtual void tick(float delta);
protected:
bool m_bRight2Left;
};
class SlideListViewDataSource
{
public:
virtual size_t getTotalItemNum() = 0;
virtual size_t getEveryPageItemNum() = 0;
virtual cocos2d::gui::UIWidget* getWidgetAt(size_t nIdx) = 0;
virtual void onPageTurnOver(size_t nCurrentPage){}
};
class WidgetSlideListView : public WidgetEaseInListView
{
enum SlideDir
{
eSlideDir_None = 0,
eSlideDir_Horizon_Left,
eSlideDir_Horizon_Right,
eSlideDir_Virtical
};
protected:
WidgetSlideListView();
virtual ~WidgetSlideListView();
public:
static WidgetSlideListView* create(SlideListViewDataSource* pDelegate,cocos2d::gui::UIListView* pAnthor=NULL);
public:
void setDelegate(SlideListViewDataSource* pDelegate){ m_pDelegate = pDelegate; }
void reloadData();
size_t getCurrentPage()const{ return m_nCurrentPage; }
void turnToPage(unsigned int nPage);
protected:
virtual bool init();
virtual void handleMoveLogic(const cocos2d::CCPoint &touchPoint);
virtual void handleReleaseLogic(const cocos2d::CCPoint &touchPoint);
void scheduleTurnPage(float t);
protected:
SlideListViewDataSource* m_pDelegate;
size_t m_nCurrentPage;
SlideDir m_eSlideDir;
cocos2d::CCPoint m_BackPos;
};
class WidgetEaseI