Switch to side-by-side view

--- a/dirbrowser/dirbrowser.cpp
+++ b/dirbrowser/dirbrowser.cpp
@@ -28,7 +28,7 @@
 #include "GUI/prefs/sortprefs.h"
 #include "HelperStructs/CSettingsStorage.h"
 
-DirBrowser::DirBrowser(QWidget *parent, Playlist *pl)
+DirBrowser::DirBrowser(QWidget *parent, std::shared_ptr<Playlist> pl)
     : QWidget(parent), ui(new Ui::DirBrowser), m_pl(pl), m_insertactive(false),
       m_randplayer(0)
 {
@@ -97,7 +97,7 @@
     setPlaylist(pl);
 }
 
-void DirBrowser::setPlaylist(Playlist *pl)
+void DirBrowser::setPlaylist(std::shared_ptr<Playlist> pl)
 {
     m_pl = pl;
 
@@ -105,7 +105,8 @@
         setupTabConnections(i);
     }
     if (m_pl)
-        connect(m_pl, SIGNAL(sig_insert_done()), this, SLOT(onInsertDone()));
+        connect(m_pl.get(), SIGNAL(sig_insert_done()),
+                this, SLOT(onInsertDone()));
 }
 
 void DirBrowser::setStyleSheet(bool dark)
@@ -373,6 +374,8 @@
 void DirBrowser::setInsertActive(bool onoff)
 {
     m_insertactive = onoff;
+    if (!m_pl)
+        m_insertactive = false;
 }
 
 bool DirBrowser::insertActive()
@@ -416,7 +419,7 @@
     disconnect(cdb, SIGNAL(sig_tracks_to_playlist(const MetaDataList&)), 0, 0);
     if (m_pl)
         connect(cdb, SIGNAL(sig_tracks_to_playlist(const MetaDataList&)),
-                m_pl, SLOT(psl_add_tracks(const MetaDataList&)));
+                m_pl.get(), SLOT(psl_add_tracks(const MetaDataList&)));
 
     disconnect(cdb, SIGNAL(sig_searchcaps_changed()), 0, 0);
     connect(cdb, SIGNAL(sig_searchcaps_changed()), 
@@ -449,6 +452,8 @@
 void DirBrowser::onEnterRandPlay(RandPlayer::PlayMode mode, const
                                  std::vector<UPnPClient::UPnPDirObject>& ents)
 {
+    if (!m_pl)
+        return;
     qDebug() << "DirBrowser::onEnterRandPlay: " << ents.size() << " tracks";
     if (m_randplayer) {
         delete m_randplayer;
@@ -460,7 +465,7 @@
     }
     connect(m_randplayer, SIGNAL(sig_tracks_to_playlist(const MetaDataList&)),
             this, SLOT(onRandTracksToPlaylist(const MetaDataList&)));
-    connect(m_pl, SIGNAL(sig_playlist_done()),
+    connect(m_pl.get(), SIGNAL(sig_playlist_done()),
             m_randplayer, SLOT(playNextSlice()));
     connect(m_randplayer, SIGNAL(sig_randplay_done()),
             this, SLOT(onRandDone()));
@@ -479,7 +484,7 @@
     // playlist clear from the ui (which we want to trigger a new
     // slice) from this one, but temporarily disconnecting is just
     // simpler.
-    disconnect(m_pl, SIGNAL(sig_playlist_done()),
+    disconnect(m_pl.get(), SIGNAL(sig_playlist_done()),
                m_randplayer, SLOT(playNextSlice()));
     
     Playlist_Mode mode = m_pl->mode();
@@ -495,7 +500,7 @@
     m_pl->psl_change_track(0);
     m_pl->psl_play();
 
-    connect(m_pl, SIGNAL(sig_playlist_done()),
+    connect(m_pl.get(), SIGNAL(sig_playlist_done()),
             m_randplayer, SLOT(playNextSlice()));
 }