ChatPlexSDK-BS 1.0.1-v6.2.0
C++ ChatPlex BeatSaber SDK
Loading...
Searching...
No Matches
XUIVVList.hpp
1#pragma once
2
3#include "../UI/Components/CVVList.hpp"
4#include "Generics/IXUIElement.hpp"
5#include "Generics/IXUIBindable.hpp"
6#include "Generics/IXUIElementReady.hpp"
7
8namespace CP_SDK::XUI {
9
11 class XUIVVList :
12 public IXUIElement,
13 public IXUIElementReady<XUIVVList, _v::CVVList>,
14 public IXUIBindable<XUIVVList>,
15 public std::enable_shared_from_this<XUIVVList>
16 {
17 CP_SDK_NO_COPYMOVE_CTORS(XUIVVList);
18 CP_SDK_PRIV_TAG();
19
20 private:
22
24
25 public:
26 std::shared_ptr<XUIVVList> AsShared() { return std::enable_shared_from_this<XUIVVList>::shared_from_this(); }
27
28 virtual _v::UIFieldRef<_u::RectTransform> RTransform() override
29 {
30 return m_Element ? m_Element->RTransform() : _v::UIFieldDefault<_u::RectTransform>::Value;
31 }
32 virtual _v::UIFieldRef<_v::CVVList> Element()
33 {
34 return m_Element;
35 }
36
37 public:
38 static constexpr ETypeID TypeID = ETypeID::VVList;
39 using Ptr = std::shared_ptr<XUIVVList>;
40
41 XUIVVList(CP_SDK_PRIV_TAG_ARG(), std::u16string_view p_Name)
42 : IXUIElement(p_Name, TypeID)
43 { }
44
45 public:
47 static Ptr Make()
48 {
49 return std::make_shared<XUIVVList>(CP_SDK_PRIV_TAG_VAL(), u"XUIVVList");
50 }
53 static Ptr Make(std::u16string_view p_Name)
54 {
55 return std::make_shared<XUIVVList>(CP_SDK_PRIV_TAG_VAL(), p_Name);
56 }
57
58 public:
61 virtual void BuildUI(_u::Transform* p_Parent) override
62 {
63 m_Element = _v::UISystem::VVListFactory->Create(IXUIElement::GetInitialName(), p_Parent);
64
65 try { m_OnReady(m_Element.Ptr()); m_OnReady.Clear(); }
66 catch (const std::exception& l_Exception)
67 {
68 ChatPlexSDK::Logger()->Error(u"[CP_SDK.XUI][XUIVVList.BuildUI] Error OnReady:");
69 ChatPlexSDK::Logger()->Error(l_Exception);
70 }
71 }
72
73 public:
76 virtual XUIVVList* OnReady(_v::CActionRef<_v::CVVList*> p_Functor) override
77 {
78 if (m_Element) p_Functor(m_Element.Ptr());
79 else m_OnReady += p_Functor;
80 return this;
81 }
84 virtual XUIVVList* Bind(std::shared_ptr<XUIVVList>* p_Target) override
85 {
86 *p_Target = std::enable_shared_from_this<XUIVVList>::shared_from_this();
87 return this;
88 }
89
90 public:
94 XUIVVList* OnListItemSelected(_v::Action<const _v::Data::IListItem::Ptr&> p_Functor, bool p_Add = true) XUI_PROXY_IMPL(_v::CVVList, { x->OnListItemSelected(p_Functor, p_Add); })
95
96 public:
99 XUIVVList* SetActive(bool p_Active) XUI_PROXY_IMPL(_v::CVVList, { x->get_gameObject()->SetActive(p_Active); })
100
101 public:
105 XUIVVList* ScrollTo(float p_TargetPosition, bool p_Animated) XUI_PROXY_IMPL(_v::CVVList, { x->ScrollTo(p_TargetPosition, p_Animated); })
106
107 public:
110 XUIVVList* SetListCellPrefab(_v::Data::IListCell* p_Prefab) XUI_PROXY_IMPL(_v::CVVList, { x->SetListCellPrefab(p_Prefab); })
113 XUIVVList* SetListItems(const std::vector<_v::Data::IListItem::Ptr>& p_ListItems) XUI_PROXY_IMPL(_v::CVVList, { x->SetListItems(p_ListItems); })
117 XUIVVList* SetSelectedListItem(const _v::Data::IListItem::Ptr& p_ListItem, bool p_Notify = true) XUI_PROXY_IMPL(_v::CVVList, { x->SetSelectedListItem(p_ListItem, p_Notify); })
118
119 public:
122 XUIVVList* AddListItem(const _v::Data::IListItem::Ptr& p_ListItem) XUI_PROXY_IMPL(_v::CVVList, { x->AddListItem(p_ListItem); })
128 XUIVVList* RemoveListItem(const _v::Data::IListItem::Ptr& p_ListItem)XUI_PROXY_IMPL(_v::CVVList, { x->RemoveListItem(p_ListItem); })
129
130 };
131
132}
static Logging::ILogger * Logger()
Logger instance.
Virtual Vertical List.
Definition CVVList.hpp:19
CVXList * SortListItems(_v::CFuncRef< int, const Data::IListItem::Ptr &, const Data::IListItem::Ptr & > p_Functor)
Sort list items by a functor.
CVXList * SetListItems(const std::vector< Data::IListItem::Ptr > &p_ListItems)
Set list items.
CVXList * SetSelectedListItem(const Data::IListItem::Ptr &p_ListItem, bool p_Notify=true)
Set selected list item.
CVXList * RemoveListItem(const Data::IListItem::Ptr &p_ListItem)
Remove a list item.
Event class helper.
Definition Event.hpp:100
IXUIElement Bind interface.
Element interface.
std::u16string_view GetInitialName()
Get initial name.
IXUIElement OnReady functor interface.
CVVList XUI Element.
Definition XUIVVList.hpp:16
XUIVVList * RemoveListItem(const _v::Data::IListItem::Ptr &p_ListItem) XUI_PROXY_IMPL(_v
Remove a list item.
XUIVVList * SetSelectedListItem(const _v::Data::IListItem::Ptr &p_ListItem, bool p_Notify=true) XUI_PROXY_IMPL(_v
Set selected list item.
XUIVVList * ScrollTo(float p_TargetPosition, bool p_Animated) XUI_PROXY_IMPL(_v
Scroll to position.
XUIVVList * SortListItems(_v::Func< int, const _v::Data::IListItem::Ptr &, const _v::Data::IListItem::Ptr & > p_Functor) XUI_PROXY_IMPL(_v
Sort list items by a functor.
XUIVVList * SetActive(bool p_Active) XUI_PROXY_IMPL(_v
Set game object active state.
Definition XUIVVList.hpp:99
static Ptr Make()
Constructor.
Definition XUIVVList.hpp:47
static Ptr Make(std::u16string_view p_Name)
Constructor.
Definition XUIVVList.hpp:53
XUIVVList * OnListItemSelected(_v::Action< const _v::Data::IListItem::Ptr & > p_Functor, bool p_Add=true) XUI_PROXY_IMPL(_v
On list item selected event.
Definition XUIVVList.hpp:94
virtual void BuildUI(_u::Transform *p_Parent) override
BuildUI for this element into p_Parent transform.
Definition XUIVVList.hpp:61
XUIVVList * SetListItems(const std::vector< _v::Data::IListItem::Ptr > &p_ListItems) XUI_PROXY_IMPL(_v
Set list items.
virtual XUIVVList * Bind(std::shared_ptr< XUIVVList > *p_Target) override
On ready, bind.
Definition XUIVVList.hpp:84
virtual XUIVVList * OnReady(_v::CActionRef< _v::CVVList * > p_Functor) override
IXUIElement OnReady functor interface.
Definition XUIVVList.hpp:76
XUIVVList * AddListItem(const _v::Data::IListItem::Ptr &p_ListItem) XUI_PROXY_IMPL(_v
Add a list item.
XUIVVList * SetListCellPrefab(_v::Data::IListCell *p_Prefab) XUI_PROXY_IMPL(_v
Set list cell prefab.
Tree like syntax CP_SDK::UI builder.