15 public std::enable_shared_from_this<XUITabControl>
26 using t_TabDefinition = std::tuple<std::u16string, std::shared_ptr<IXUIElement>>;
28 std::shared_ptr<XUITabControl> AsShared() {
return std::enable_shared_from_this<XUITabControl>::shared_from_this(); }
40 static constexpr ETypeID TypeID = ETypeID::TabControl;
41 using Ptr = std::shared_ptr<XUITabControl>;
43 XUITabControl(CP_SDK_PRIV_TAG_ARG(), std::u16string_view p_Name,
const std::vector<t_TabDefinition>& p_Tabs)
52 static Ptr
Make(
const std::vector<t_TabDefinition>& p_Tabs)
54 return std::make_shared<XUITabControl>(CP_SDK_PRIV_TAG_VAL(), u
"XUITabControl", p_Tabs);
59 static Ptr
Make(std::u16string_view p_Name,
const std::vector<t_TabDefinition>& p_Tabs)
61 return std::make_shared<XUITabControl>(CP_SDK_PRIV_TAG_VAL(), p_Name, p_Tabs);
67 virtual void BuildUI(_u::Transform* p_Parent)
override
71 try { m_OnReady(m_Element.Ptr()); m_OnReady.Clear(); }
72 catch (
const std::exception& l_Exception)
84 if (m_Element) p_Functor(m_Element.Ptr());
85 else m_OnReady += p_Functor;
92 *p_Target = std::enable_shared_from_this<XUITabControl>::shared_from_this();
115 auto l_Converted = std::vector<_v::CTabControl::t_TabDefinition>();
116 for (
auto l_I = 0; l_I < p_Tabs.size(); ++l_I)
118 auto& l_IXUIElement = std::get<1>(p_Tabs[l_I]);
119 if (!l_IXUIElement->RTransform())
120 l_IXUIElement->BuildUI(
nullptr);
122 auto l_RTransform = l_IXUIElement->RTransform().Ptr();
123 l_Converted.push_back(std::make_tuple(std::get<0>(p_Tabs[l_I]), l_RTransform));
126 x->SetTabs(l_Converted);