From d462bad0323c7a8fc5f1e58270eab9c02d4f94de Mon Sep 17 00:00:00 2001 From: Zhong Yang Date: Thu, 24 Mar 2022 17:24:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E9=80=9A=E8=BF=87=E7=82=B9?= =?UTF-8?q?=E5=87=BB=E5=88=87=E6=8D=A2stackElement=E7=9A=84=E8=A1=8C?= =?UTF-8?q?=E4=B8=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MusicPlayer2/UserUi.cpp | 15 +++++++++++---- MusicPlayer2/UserUi.h | 4 +++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/MusicPlayer2/UserUi.cpp b/MusicPlayer2/UserUi.cpp index 21c601f9..224e506a 100644 --- a/MusicPlayer2/UserUi.cpp +++ b/MusicPlayer2/UserUi.cpp @@ -84,7 +84,8 @@ bool CUserUi::LButtonUp(CPoint point) { if (!CPlayerUIBase::LButtonUp(point)) { - for (const auto& element : m_stack_elements) + const auto& stack_elements{ GetStackElements() }; + for (const auto& element : stack_elements) { UiElement::StackElement* stack_element = dynamic_cast(element.get()); if (stack_element != nullptr && stack_element->ckick_to_switch && stack_element->GetRect().PtInRect(point)) @@ -329,7 +330,7 @@ std::shared_ptr CUserUi::BuildUiElementFromXmlNode(tinyxml2: } else if (item_name == "stackElement") { - m_stack_elements.push_back(ui_element); + GetStackElements().push_back(ui_element); UiElement::StackElement* stack_element = dynamic_cast(ui_element.get()); if (stack_element != nullptr) { @@ -350,6 +351,11 @@ std::shared_ptr CUserUi::BuildUiElementFromXmlNode(tinyxml2: return ui_element; } +std::vector>& CUserUi::GetStackElements() +{ + return m_stack_elements[GetUiSize()]; +} + void CUserUi::LoadUi() { m_stack_elements.clear(); @@ -381,9 +387,10 @@ void CUserUi::LoadUi() void CUserUi::SwitchStackElement() { m_draw_data.lyric_rect.SetRectEmpty(); - if (!m_stack_elements.empty()) + auto& stack_elements{ GetStackElements() }; + if (!stack_elements.empty()) { - UiElement::StackElement* stack_element = dynamic_cast(m_stack_elements.front().get()); + UiElement::StackElement* stack_element = dynamic_cast(stack_elements.front().get()); if (stack_element != nullptr) stack_element->SwitchDisplay(); } diff --git a/MusicPlayer2/UserUi.h b/MusicPlayer2/UserUi.h index 14ebe445..69b71d5a 100644 --- a/MusicPlayer2/UserUi.h +++ b/MusicPlayer2/UserUi.h @@ -26,7 +26,7 @@ private: std::shared_ptr m_root_ui_narrow; std::shared_ptr m_root_ui_small; std::wstring m_ui_name; - std::vector> m_stack_elements; + std::map>> m_stack_elements; public: virtual int GetUiIndex() override; @@ -39,6 +39,8 @@ private: static int GetMaxUiIndex(const std::vector>& ui_list); std::shared_ptr BuildUiElementFromXmlNode(tinyxml2::XMLElement* xml_node); //从一个xml节点创建UiElement::Element元素及其所有子元素的对象 + std::vector>& GetStackElements(); + protected: void LoadUi(); //从xml文件载入界面 virtual void SwitchStackElement() override;