ChatPlexSDK-BS 1.0.1-v6.2.0
C++ ChatPlex BeatSaber SDK
Loading...
Searching...
No Matches
XUITextSegmentedControl.hpp
1#pragma once
2
3#include "../UI/Components/CTextSegmentedControl.hpp"
4#include "Generics/IXUIElement.hpp"
5#include "Generics/IXUIBindable.hpp"
6#include "Generics/IXUIElementReady.hpp"
7
8namespace CP_SDK::XUI {
9
12 public IXUIElement,
13 public IXUIElementReady<XUITextSegmentedControl, _v::CTextSegmentedControl>,
14 public IXUIBindable<XUITextSegmentedControl>,
15 public std::enable_shared_from_this<XUITextSegmentedControl>
16 {
17 CP_SDK_NO_COPYMOVE_CTORS(XUITextSegmentedControl);
18 CP_SDK_PRIV_TAG();
19
20 private:
22
24
25 public:
26 std::shared_ptr<XUITextSegmentedControl> AsShared() { return std::enable_shared_from_this<XUITextSegmentedControl>::shared_from_this(); }
27
28 virtual _v::UIFieldRef<RectTransform> RTransform() override
29 {
30 return m_Element ? m_Element->RTransform() : _v::UIFieldDefault<RectTransform>::Value;
31 }
33 {
34 return m_Element;
35 }
36
37 public:
38 static constexpr ETypeID TypeID = ETypeID::TextSegmentedControl;
39 using Ptr = std::shared_ptr<XUITextSegmentedControl>;
40
41 XUITextSegmentedControl(CP_SDK_PRIV_TAG_ARG(), std::u16string_view p_Name, const std::vector<std::u16string>& p_Texts)
42 : IXUIElement(p_Name, TypeID)
43 {
44 SetTexts(p_Texts);
45 }
46
47 public:
50 static Ptr Make(const std::vector<std::u16string>& p_Texts)
51 {
52 return std::make_shared<XUITextSegmentedControl>(CP_SDK_PRIV_TAG_VAL(), u"XUITextSegmentedControl", p_Texts);
53 }
57 static Ptr Make(std::u16string_view p_Name, const std::vector<std::u16string>& p_Texts)
58 {
59 return std::make_shared<XUITextSegmentedControl>(CP_SDK_PRIV_TAG_VAL(), p_Name, p_Texts);
60 }
61
62 public:
65 virtual void BuildUI(_u::Transform* p_Parent) override
66 {
67 m_Element = _v::UISystem::TextSegmentedControlFactory->Create(IXUIElement::GetInitialName(), p_Parent);
68
69 try { m_OnReady(m_Element.Ptr()); m_OnReady.Clear(); }
70 catch (const std::exception& l_Exception)
71 {
72 ChatPlexSDK::Logger()->Error(u"[CP_SDK.XUI][XUITextSegmentedControl.BuildUI] Error OnReady:");
73 ChatPlexSDK::Logger()->Error(l_Exception);
74 }
75 }
76
77 public:
81 {
82 if (m_Element) p_Functor(m_Element.Ptr());
83 else m_OnReady += p_Functor;
84 return this;
85 }
88 virtual XUITextSegmentedControl* Bind(std::shared_ptr<XUITextSegmentedControl>* p_Target) override
89 {
90 *p_Target = std::enable_shared_from_this<XUITextSegmentedControl>::shared_from_this();
91 return this;
92 }
93
94 public:
98 XUITextSegmentedControl* OnActiveChanged(_v::Action<int> p_Functor, bool p_Add = true) XUI_PROXY_IMPL(_v::CTextSegmentedControl, { x->OnActiveChanged(p_Functor, p_Add); })
99
100 public:
103 XUITextSegmentedControl* SetActive(bool p_Active) XUI_PROXY_IMPL(_v::CTextSegmentedControl, { x->get_gameObject()->SetActive(p_Active); })
104
105 public:
109 XUITextSegmentedControl* SetActiveText(int p_Index, bool p_Notify = true) XUI_PROXY_IMPL(_v::CTextSegmentedControl, { x->SetActiveText(p_Index, p_Notify); })
112 XUITextSegmentedControl* SetTexts(std::vector<std::u16string> p_Texts) XUI_PROXY_IMPL(_v::CTextSegmentedControl, { x->SetTexts(p_Texts); })
113
114 };
115
116}
static Logging::ILogger * Logger()
Logger instance.
CTextSegmentedControl * SetTexts(const std::vector< std::u16string > &p_Texts)
Set texts.
Event class helper.
Definition Event.hpp:100
IXUIElement Bind interface.
Element interface.
std::u16string_view GetInitialName()
Get initial name.
IXUIElement OnReady functor interface.
CTextSegmentedControl XUI Element.
XUITextSegmentedControl * SetActiveText(int p_Index, bool p_Notify=true) XUI_PROXY_IMPL(_v
Set active text.
virtual XUITextSegmentedControl * OnReady(_v::CActionRef< _v::CTextSegmentedControl * > p_Functor) override
IXUIElement OnReady functor interface.
static Ptr Make(const std::vector< std::u16string > &p_Texts)
Constructor.
static Ptr Make(std::u16string_view p_Name, const std::vector< std::u16string > &p_Texts)
Constructor.
virtual XUITextSegmentedControl * Bind(std::shared_ptr< XUITextSegmentedControl > *p_Target) override
On ready, bind.
XUITextSegmentedControl * SetTexts(std::vector< std::u16string > p_Texts) XUI_PROXY_IMPL(_v
Set texts.
XUITextSegmentedControl * OnActiveChanged(_v::Action< int > p_Functor, bool p_Add=true) XUI_PROXY_IMPL(_v
On value changed event.
virtual void BuildUI(_u::Transform *p_Parent) override
BuildUI for this element into p_Parent transform.
XUITextSegmentedControl * SetActive(bool p_Active) XUI_PROXY_IMPL(_v
Set game object active state.
Tree like syntax CP_SDK::UI builder.