X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/c9eec20c3d8d8fa73364681389e5c682fbd3dc20..cdcb4b0166aefdd382d20e7ff3b5cb217ba54ba8:/src/treeviewsidebarpage.cpp diff --git a/src/treeviewsidebarpage.cpp b/src/treeviewsidebarpage.cpp index 19142d6ea..d2e469945 100644 --- a/src/treeviewsidebarpage.cpp +++ b/src/treeviewsidebarpage.cpp @@ -19,13 +19,13 @@ #include "treeviewsidebarpage.h" -#include "kbookmarkmanager.h" #include "dolphinmainwindow.h" #include "dolphinsortfilterproxymodel.h" #include "dolphinview.h" #include "sidebartreeview.h" #include "treeviewcontextmenu.h" +#include #include #include #include @@ -61,7 +61,7 @@ TreeViewSidebarPage::TreeViewSidebarPage(QWidget* parent) : m_treeView->setModel(m_proxyModel); m_proxyModel->setSorting(DolphinView::SortByName); - m_proxyModel->setSortOrder(Qt::Ascending); + m_proxyModel->setSortOrder(Qt::AscendingOrder); connect(m_treeView, SIGNAL(clicked(const QModelIndex&)), this, SLOT(updateActiveView(const QModelIndex&))); @@ -81,15 +81,21 @@ TreeViewSidebarPage::~TreeViewSidebarPage() void TreeViewSidebarPage::setUrl(const KUrl& url) { - if (!url.isValid() || (url == m_url)) { + if (!url.isValid() || (url == SidebarPage::url())) { return; } - m_url = url; + SidebarPage::setUrl(url); // adjust the root of the tree to the base bookmark - KBookmarkManager* bookmarkManager = DolphinSettings::instance().bookmarkManager(); - const KUrl baseUrl = bookmarkManager->root().closestBookmark(url).url(); + KFilePlacesModel* placesModel = DolphinSettings::instance().placesModel(); + KUrl baseUrl = placesModel->url(placesModel->closestItem(url)); + if (!baseUrl.isValid()) { + // it's possible that no closest item is available and hence an + // empty URL is returned + baseUrl = url; + } + if (m_dirLister->url() != baseUrl) { m_dirLister->stop(); m_dirLister->openUrl(baseUrl); @@ -105,8 +111,7 @@ void TreeViewSidebarPage::setUrl(const KUrl& url) const QModelIndex proxyIndex = m_proxyModel->mapFromSource(index); m_treeView->scrollTo(proxyIndex); selModel->setCurrentIndex(proxyIndex, QItemSelectionModel::Select); - } - else { + } else { // The item with the given URL is not loaded by the model yet. Iterate // backward to the base URL and trigger the loading of the items for // each hierarchy level. @@ -151,7 +156,7 @@ void TreeViewSidebarPage::expandSelectionParent() this, SLOT(expandSelectionParent())); // expand the parent folder of the selected item - KUrl parentUrl = m_url.upUrl(); + KUrl parentUrl = url().upUrl(); if (!m_dirLister->url().isParentOf(parentUrl)) { return; } @@ -162,7 +167,7 @@ void TreeViewSidebarPage::expandSelectionParent() m_treeView->setExpanded(proxyIndex, true); // select the item and assure that the item is visible - index = m_dirModel->indexForUrl(m_url); + index = m_dirModel->indexForUrl(url()); if (index.isValid()) { proxyIndex = m_proxyModel->mapFromSource(index); m_treeView->scrollTo(proxyIndex);