Switch to side-by-side view

--- a/src/ohproduct.cxx
+++ b/src/ohproduct.cxx
@@ -58,9 +58,9 @@
 // (Type, Name) list
 static vector<pair<string, string> > o_sources;
 
-OHProduct::OHProduct(UpMpd *dev, const string& friendlyname)
+OHProduct::OHProduct(UpMpd *dev, ohProductDesc_t& ohProductDesc)
     : OHService(sTpProduct, sIdProduct, dev),
-      m_roomOrName(friendlyname), m_sourceIndex(0), m_standby(false)
+      m_ohProductDesc(ohProductDesc), m_sourceIndex(0), m_standby(false)
 {
     // Playlist must stay first.
     o_sources.push_back(pair<string,string>("Playlist","Playlist"));
@@ -131,31 +131,23 @@
 {
 }
 
-static const string csversion(UPMPDCLI_PACKAGE_VERSION);
-static const string csmanname("UpMPDCli heavy industries Co.");
-static const string csmaninfo("Such nice guys and gals");
-static const string csmanurl("http://www.lesbonscomptes.com/upmpdcli");
-static const string csmodname("UpMPDCli UPnP-MPD gateway");
-static const string csmodurl("http://www.lesbonscomptes.com/upmpdcli");
-static const string csprodname("Upmpdcli");
-
 bool OHProduct::makestate(unordered_map<string, string> &st)
 {
     st.clear();
 
-    st["ManufacturerName"] = csmanname;
-    st["ManufacturerInfo"] = csmaninfo;
-    st["ManufacturerUrl"] = csmanurl;
-    st["ManufacturerImageUri"] = "";
-    st["ModelName"] = csmodname;
-    st["ModelInfo"] = csversion;
-    st["ModelUrl"] = csmodurl;
-    st["ModelImageUri"] = "";
-    st["ProductRoom"] = m_roomOrName;
-    st["ProductName"] = csprodname;
-    st["ProductInfo"] = csversion;
-    st["ProductUrl"] = "";
-    st["ProductImageUri"] = "";
+    st["ManufacturerName"] = m_ohProductDesc.manufacturer.name;
+    st["ManufacturerInfo"] = m_ohProductDesc.manufacturer.info;
+    st["ManufacturerUrl"] = m_ohProductDesc.manufacturer.url;
+    st["ManufacturerImageUri"] = m_ohProductDesc.manufacturer.imageUri;
+    st["ModelName"] = m_ohProductDesc.model.name;
+    st["ModelInfo"] = m_ohProductDesc.model.info;
+    st["ModelUrl"] = m_ohProductDesc.model.url;
+    st["ModelImageUri"] = m_ohProductDesc.model.imageUri;
+    st["ProductRoom"] = m_ohProductDesc.room;
+    st["ProductName"] = m_ohProductDesc.product.name;
+    st["ProductInfo"] = m_ohProductDesc.product.info;
+    st["ProductUrl"] = m_ohProductDesc.product.url;
+    st["ProductImageUri"] = m_ohProductDesc.product.imageUri;
     st["Standby"] = m_standby ? "1" : "0";
     st["SourceCount"] = SoapHelp::i2s(o_sources.size());
     st["SourceXml"] = csxml;
@@ -168,31 +160,31 @@
 int OHProduct::manufacturer(const SoapIncoming& sc, SoapOutgoing& data)
 {
     LOGDEB("OHProduct::manufacturer" << endl);
-    data.addarg("Name", csmanname);
-    data.addarg("Info", csmaninfo);
-    data.addarg("Url", csmanurl);
-    data.addarg("ImageUri", "");
+    data.addarg("Name", m_ohProductDesc.manufacturer.name);
+    data.addarg("Info", m_ohProductDesc.manufacturer.info);
+    data.addarg("Url", m_ohProductDesc.manufacturer.url);
+    data.addarg("ImageUri", m_ohProductDesc.manufacturer.imageUri);
     return UPNP_E_SUCCESS;
 }
 
 int OHProduct::model(const SoapIncoming& sc, SoapOutgoing& data)
 {
     LOGDEB("OHProduct::model" << endl);
-    data.addarg("Name", csmodname);
-    data.addarg("Info", csversion);
-    data.addarg("Url", csmodurl);
-    data.addarg("ImageUri", "");
+    data.addarg("Name", m_ohProductDesc.model.name);
+    data.addarg("Info", m_ohProductDesc.model.info);
+    data.addarg("Url", m_ohProductDesc.model.url);
+    data.addarg("ImageUri", m_ohProductDesc.model.imageUri);
     return UPNP_E_SUCCESS;
 }
 
 int OHProduct::product(const SoapIncoming& sc, SoapOutgoing& data)
 {
     LOGDEB("OHProduct::product" << endl);
-    data.addarg("Room", m_roomOrName);
-    data.addarg("Name", csprodname);
-    data.addarg("Info", csversion);
-    data.addarg("Url", "");
-    data.addarg("ImageUri", "");
+    data.addarg("Room", m_ohProductDesc.room);
+    data.addarg("Name", m_ohProductDesc.product.name);
+    data.addarg("Info", m_ohProductDesc.product.info);
+    data.addarg("Url", m_ohProductDesc.product.url);
+    data.addarg("ImageUri", m_ohProductDesc.product.imageUri);
     return UPNP_E_SUCCESS;
 }
 
@@ -360,7 +352,7 @@
         LOGERR("OHProduct::source: bad index: " << sindex << endl);
         return UPNP_E_INVALID_PARAM;
     }
-    data.addarg("SystemName", m_roomOrName);
+    data.addarg("SystemName", m_ohProductDesc.room);
     data.addarg("Type", o_sources[sindex].first);
     data.addarg("Name", o_sources[sindex].second);
     string visible = o_sources[sindex].first.compare("Receiver") ? "1" : "0";