aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Marshall <jmarshall@never.you.mind>2012-11-12 18:42:47 +1300
committerJonathan Marshall <jmarshall@never.you.mind>2012-11-12 18:44:18 +1300
commit63c7d1d89c01e8e8917f56ce4bde1414a3eb8c4a (patch)
treec2ad4f0ddd265a53f00584ef19e346133a9eefcc
parente5af8e1e510f59adf3285a74b9c1f66a28e0b180 (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.cpp31
-rw-r--r--xbmc/utils/Fanart.h1
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