geode/loader/include/Geode/ui/ListView.hpp
SMJS 9a3a66ff3f
Added better color customization support for generic list cells (#854)
* Added better color customization support for generic list cells
2024-06-06 10:03:36 +02:00

53 lines
1.6 KiB
C++

#pragma once
#include <Geode/binding/CustomListView.hpp>
#include <Geode/binding/CCIndexPath.hpp>
#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;
GenericListCell(char const* name, cocos2d::CCSize size);
void draw() override;
public:
static GenericListCell* create(char const* key, cocos2d::CCSize size);
virtual void updateBGColor(int index);
void setPrimaryColor(cocos2d::ccColor3B color);
void setSecondaryColor(cocos2d::ccColor3B color);
void setOpacity(GLubyte opacity);
};
/**
* Class for a generic scrollable list of
* items like the level list in GD
*/
class GEODE_DLL ListView : public CustomListView {
protected:
void setupList(float) override;
TableViewCell* getListCell(char const* key) override;
void loadCell(TableViewCell* cell, int index) override;
public:
/**
* 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
* @returns The created ListView, or nullptr
* on error
*/
static ListView* create(
cocos2d::CCArray* items, float itemHeight = 40.f, float width = 358.f,
float height = 220.f
);
};
}