Switch to side-by-side view

--- a/dirbrowser/cdb_html.cpp
+++ b/dirbrowser/cdb_html.cpp
@@ -141,9 +141,12 @@
 
 QString CDBrowser::CTToHtml(unsigned int idx, const UPnPDirObject& e)
 {
+    bool isPlaylist = !e.getprop("upnp:class").compare(plContainerClass);
+    
     QString out;
-    out += QString("<tr class=\"container\" objid=\"%1\" objidx=\"\">"
-                   "<td></td><td>").arg(e.m_id.c_str());
+    out += QString("<tr class=\"container\" objid=\"%1\" objidx=\"%2\" "
+                   "ispl=\"%3\"><td></td><td>")
+        .arg(e.m_id.c_str()).arg(idx).arg(isPlaylist);
     out += QString("<a class=\"ct_title\" href=\"http://h/C%1\">").arg(idx);
     out += u8s2qs(CTTitleStartMarker + Helper::escapeHtml(e.m_title));
     out += "</a></td>";
@@ -272,10 +275,9 @@
     QString htmlpath("<div id=\"fixedheader\"><div id=\"browsepath\"><ul>");
     bool current_is_search = false;
     for (unsigned i = 0; i < m_curpath.size(); i++) {
-        QString title = QString::fromUtf8(m_curpath[i].title.c_str());
-        QString objid = QString::fromUtf8(m_curpath[i].objid.c_str());
+        CtPathElt& e{m_curpath[i]};
         QString sep("&gt;");
-        if (!m_curpath[i].searchStr.empty()) {
+        if (!e.searchStr.empty()) {
             if (current_is_search) {
                 // Indicate that searches are not nested by changing
                 // the separator
@@ -285,9 +287,10 @@
         }
         if (i == 0)
             sep = "";
-        htmlpath += QString("<li class=\"container\" objid=\"%3\">"
+        htmlpath += QString("<li class=\"container\" objid=\"%3\" ispl=\"%5\">"
                             " %4 <a href=\"http://h/L%1\">%2</a></li>").
-            arg(i).arg(title).arg(objid).arg(sep);
+            arg(i).arg(u8s2qs(e.title)).arg(u8s2qs(e.objid)).arg(sep)
+            .arg(e.isPlaylist);
     }
 
     htmlpath += QString("</ul></div>");