diff options
author | Jonathan Marshall <jmarshall@never.you.mind> | 2012-11-12 18:42:47 +1300 |
---|---|---|
committer | Jonathan Marshall <jmarshall@never.you.mind> | 2012-11-12 18:44:18 +1300 |
commit | 63c7d1d89c01e8e8917f56ce4bde1414a3eb8c4a (patch) | |
tree | c2ad4f0ddd265a53f00584ef19e346133a9eefcc | |
parent | e5af8e1e510f59adf3285a74b9c1f66a28e0b180 (diff) |
construct image and preview URLs when unpacking fanart to make sure the url attribute applies only to the <fanart> block being processed. fixes #12860
-rw-r--r-- | xbmc/utils/Fanart.cpp | 31 | ||||
-rw-r--r-- | xbmc/utils/Fanart.h | 1 |
2 files changed, 17 insertions, 15 deletions
diff --git a/xbmc/utils/Fanart.cpp b/xbmc/utils/Fanart.cpp index 3b2e4dbe5b..d947dcb531 100644 --- a/xbmc/utils/Fanart.cpp +++ b/xbmc/utils/Fanart.cpp @@ -39,7 +39,6 @@ void CFanart::Pack() // Take our data and pack it into the m_xml string m_xml.Empty(); TiXmlElement fanart("fanart"); - fanart.SetAttribute("url", m_url.c_str()); for (std::vector<SFanartData>::const_iterator it = m_fanart.begin(); it != m_fanart.end(); ++it) { TiXmlElement thumb("thumb"); @@ -59,19 +58,28 @@ bool CFanart::Unpack() doc.Parse(m_xml.c_str()); m_fanart.clear(); - m_url.Empty(); TiXmlElement *fanart = doc.FirstChildElement("fanart"); while (fanart) { - m_url = fanart->Attribute("url"); + CStdString url = fanart->Attribute("url"); TiXmlElement *fanartThumb = fanart->FirstChildElement("thumb"); while (fanartThumb) { SFanartData data; - data.strImage = fanartThumb->GetText(); + if (url.empty()) + { + data.strImage = fanartThumb->GetText(); + if (fanartThumb->Attribute("preview")) + data.strPreview = fanartThumb->Attribute("preview"); + } + else + { + data.strImage = URIUtils::AddFileToFolder(url, fanartThumb->GetText()); + if (fanartThumb->Attribute("preview")) + data.strPreview = URIUtils::AddFileToFolder(url, fanartThumb->Attribute("preview")); + } data.strResolution = fanartThumb->Attribute("dim"); - data.strPreview = fanartThumb->Attribute("preview"); ParseColors(fanartThumb->Attribute("colors"), data.strColors); m_fanart.push_back(data); fanartThumb = fanartThumb->NextSiblingElement("thumb"); @@ -85,21 +93,16 @@ CStdString CFanart::GetImageURL(unsigned int index) const { if (index >= m_fanart.size()) return ""; - - if (m_url.IsEmpty()) - return m_fanart[index].strImage; - return URIUtils::AddFileToFolder(m_url, m_fanart[index].strImage); + + return m_fanart[index].strImage; } CStdString CFanart::GetPreviewURL(unsigned int index) const { if (index >= m_fanart.size()) return ""; - - CStdString thumb = !m_fanart[index].strPreview.IsEmpty() ? m_fanart[index].strPreview : m_fanart[index].strImage; - if (m_url.IsEmpty()) - return thumb; - return URIUtils::AddFileToFolder(m_url, thumb); + + return m_fanart[index].strPreview.empty() ? m_fanart[index].strImage : m_fanart[index].strPreview; } const CStdString CFanart::GetColor(unsigned int index) const diff --git a/xbmc/utils/Fanart.h b/xbmc/utils/Fanart.h index c44f76b360..b3fdd8f9f0 100644 --- a/xbmc/utils/Fanart.h +++ b/xbmc/utils/Fanart.h @@ -115,7 +115,6 @@ private: /// /// std::vector that stores all our fanart data std::vector<SFanartData> m_fanart; - CStdString m_url; }; #endif |