geode/loader/include/Geode/ui/ListView.hpp

67 lines
2.2 KiB
C++
Raw Normal View History

#pragma once
#include <Geode/binding/CustomListView.hpp>
#include <Geode/binding/CCIndexPath.hpp>
2022-10-30 14:59:20 -04:00
#include <Geode/binding/TableViewCell.hpp>
namespace geode {
class GEODE_DLL GenericListCell : public TableViewCell {
protected:
cocos2d::ccColor3B m_primaryColor;
cocos2d::ccColor3B m_secondaryColor;
GLubyte m_opacity;
cocos2d::ccColor4B m_borderColor;
2022-10-30 14:59:20 -04:00
GenericListCell(char const* name, cocos2d::CCSize size);
void draw() override;
public:
2022-10-30 14:59:20 -04:00
static GenericListCell* create(char const* key, cocos2d::CCSize size);
void updateBGColor(int index);
void setPrimaryColor(cocos2d::ccColor3B color);
void setSecondaryColor(cocos2d::ccColor3B color);
void setOpacity(GLubyte opacity);
void setBorderColor(cocos2d::ccColor4B color);
};
/**
2022-10-30 14:59:20 -04:00
* Class for a generic scrollable list of
* items like the level list in GD
*/
class GEODE_DLL ListView : public CustomListView {
protected:
cocos2d::ccColor3B m_primaryCellColor;
cocos2d::ccColor3B m_secondaryCellColor;
GLubyte m_cellOpacity;
cocos2d::ccColor4B m_cellBorderColor;
void setupList(float) override;
2022-10-30 14:59:20 -04:00
TableViewCell* getListCell(char const* key) override;
void loadCell(TableViewCell* cell, int index) override;
void updateAllCells();
public:
/**
2022-10-30 14:59:20 -04:00
* Create a generic scrollable list of
* items
* @param items Nodes to add as children
* @param itemHeight Height of each child
* @param width Width of the list
* @param height Height of the list
2022-10-30 14:59:20 -04:00
* @returns The created ListView, or nullptr
* on error
*/
static ListView* create(
2022-10-30 14:59:20 -04:00
cocos2d::CCArray* items, float itemHeight = 40.f, float width = 358.f,
float height = 220.f
);
void setPrimaryCellColor(cocos2d::ccColor3B color);
void setSecondaryCellColor(cocos2d::ccColor3B color);
void setCellOpacity(GLubyte opacity);
void setCellBorderColor(cocos2d::ccColor4B color);
};
}