From 09787a0dddcb4778c9e2647007b1a741a4236ca9 Mon Sep 17 00:00:00 2001 From: DaveTBlake Date: Mon, 29 Apr 2019 18:41:07 +0100 Subject: [PATCH] Fix blank viz preset dialog when no viz or when viz not have presets --- .../resources/strings.po | 5 +++- .../GUIDialogVisualisationPresetList.cpp | 27 +++++++++++++++---- .../GUIDialogVisualisationPresetList.h | 1 + 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po index 4e239efb2ecb4..04b553667c167 100644 --- a/addons/resource.language.en_gb/resources/strings.po +++ b/addons/resource.language.en_gb/resources/strings.po @@ -5097,6 +5097,7 @@ msgstr "" #empty string with id 10121 #: xbmc/guilib/WindowIDs.h +#: xbmc/music/dialogs/GUIDialogVisualisationPresetList.cpp msgctxt "#10122" msgid "Visualization preset list" msgstr "" @@ -6879,8 +6880,9 @@ msgctxt "#13388" msgid "Preset" msgstr "" +#: xbmc/music/dialogs/GUIDialogVisualisationPresetList.cpp msgctxt "#13389" -msgid "There are no presets available\nfor this visualisation" +msgid "There are no presets available for this visualisation" msgstr "" msgctxt "#13390" @@ -6970,6 +6972,7 @@ msgctxt "#13406" msgid "Picture information" msgstr "" +#: xbmc/music/dialogs/GUIDialogVisualisationPresetList.cpp msgctxt "#13407" msgid "{0:s} presets" msgstr "" diff --git a/xbmc/music/dialogs/GUIDialogVisualisationPresetList.cpp b/xbmc/music/dialogs/GUIDialogVisualisationPresetList.cpp index fd8d76502306c..3b8ee4faa8198 100644 --- a/xbmc/music/dialogs/GUIDialogVisualisationPresetList.cpp +++ b/xbmc/music/dialogs/GUIDialogVisualisationPresetList.cpp @@ -29,7 +29,7 @@ bool CGUIDialogVisualisationPresetList::OnMessage(CGUIMessage &message) switch (message.GetMessage()) { case GUI_MSG_VISUALISATION_UNLOADING: - SetVisualisation(nullptr); + ClearVisualisation(); break; } return CGUIDialogSelect::OnMessage(message); @@ -41,11 +41,23 @@ void CGUIDialogVisualisationPresetList::OnSelect(int idx) m_viz->SetPreset(idx); } +void CGUIDialogVisualisationPresetList::ClearVisualisation() +{ + m_viz = nullptr; + Reset(); +} + void CGUIDialogVisualisationPresetList::SetVisualisation(CGUIVisualisationControl* vis) { m_viz = vis; Reset(); - if (m_viz) + if (!m_viz) + { // No viz, but show something if this dialog activated + SetHeading(CVariant{ 10122 }); + CFileItem item(g_localizeStrings.Get(13389)); + Add(item); + } + else { SetUseDetails(false); SetMultiSelection(false); @@ -61,6 +73,12 @@ void CGUIDialogVisualisationPresetList::SetVisualisation(CGUIVisualisationContro } SetSelected(m_viz->GetActivePreset()); } + else + { // Viz does not have any presets + // "There are no presets available for this visualisation" + CFileItem item(g_localizeStrings.Get(13389)); + Add(item); + } } } @@ -68,13 +86,12 @@ void CGUIDialogVisualisationPresetList::OnInitWindow() { CGUIMessage msg(GUI_MSG_GET_VISUALISATION, 0, 0); CServiceBroker::GetGUI()->GetWindowManager().SendMessage(msg); - if (msg.GetPointer()) - SetVisualisation(static_cast(msg.GetPointer())); + SetVisualisation(static_cast(msg.GetPointer())); CGUIDialogSelect::OnInitWindow(); } void CGUIDialogVisualisationPresetList::OnDeinitWindow(int nextWindowID) { - SetVisualisation(nullptr); + ClearVisualisation(); CGUIDialogSelect::OnDeinitWindow(nextWindowID); } diff --git a/xbmc/music/dialogs/GUIDialogVisualisationPresetList.h b/xbmc/music/dialogs/GUIDialogVisualisationPresetList.h index b44a87272299f..c832163d2040a 100644 --- a/xbmc/music/dialogs/GUIDialogVisualisationPresetList.h +++ b/xbmc/music/dialogs/GUIDialogVisualisationPresetList.h @@ -26,6 +26,7 @@ class CGUIDialogVisualisationPresetList : public CGUIDialogSelect void OnSelect(int idx) override; private: + void ClearVisualisation(); void SetVisualisation(CGUIVisualisationControl *addon); CGUIVisualisationControl* m_viz = nullptr; };