X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/85bc196887fbed01187e3830cd28c2500cb01cb2..2b951edfdf0fd3460c595ecb8aed180e1da920f7:/src/treeviewsidebarpage.cpp diff --git a/src/treeviewsidebarpage.cpp b/src/treeviewsidebarpage.cpp index 523e21a78..8c746a253 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 @@ -36,17 +36,12 @@ #include #include "dolphinsettings.h" -// TODO: currently when using a proxy model the strange effect occurs -// that items get duplicated. Activate the following define to have the proxy -// model: -//#define USE_PROXY_MODEL - TreeViewSidebarPage::TreeViewSidebarPage(QWidget* parent) : - SidebarPage(parent), - m_dirLister(0), - m_dirModel(0), - m_proxyModel(0), - m_treeView(0) + SidebarPage(parent), + m_dirLister(0), + m_dirModel(0), + m_proxyModel(0), + m_treeView(0) { m_dirLister = new KDirLister(); m_dirLister->setDirOnlyMode(true); @@ -59,8 +54,6 @@ TreeViewSidebarPage::TreeViewSidebarPage(QWidget* parent) : m_dirModel->setDirLister(m_dirLister); m_dirModel->setDropsAllowed(KDirModel::DropOnDirectory); - -#if defined(USE_PROXY_MODEL) m_proxyModel = new DolphinSortFilterProxyModel(this); m_proxyModel->setSourceModel(m_dirModel); @@ -68,11 +61,7 @@ TreeViewSidebarPage::TreeViewSidebarPage(QWidget* parent) : m_treeView->setModel(m_proxyModel); m_proxyModel->setSorting(DolphinView::SortByName); - m_proxyModel->setSortOrder(Qt::Ascending); -#else - m_treeView = new SidebarTreeView(this); - m_treeView->setModel(m_dirModel); -#endif + m_proxyModel->setSortOrder(Qt::AscendingOrder); connect(m_treeView, SIGNAL(clicked(const QModelIndex&)), this, SLOT(updateActiveView(const QModelIndex&))); @@ -99,8 +88,8 @@ void TreeViewSidebarPage::setUrl(const KUrl& url) m_url = 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(); + const KUrl baseUrl = placesModel->url(placesModel->closestItem(url)); if (m_dirLister->url() != baseUrl) { m_dirLister->stop(); m_dirLister->openUrl(baseUrl); @@ -112,17 +101,11 @@ void TreeViewSidebarPage::setUrl(const KUrl& url) const QModelIndex index = m_dirModel->indexForUrl(url); if (index.isValid()) { -#if defined(USE_PROXY_MODEL) // the item with the given URL is already part of the model const QModelIndex proxyIndex = m_proxyModel->mapFromSource(index); m_treeView->scrollTo(proxyIndex); selModel->setCurrentIndex(proxyIndex, QItemSelectionModel::Select); -#else - m_treeView->scrollTo(index); - selModel->setCurrentIndex(index, QItemSelectionModel::Select); -#endif - } - 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. @@ -153,12 +136,8 @@ void TreeViewSidebarPage::contextMenuEvent(QContextMenuEvent* event) return; } -#if defined(USE_PROXY_MODEL) const QModelIndex dirModelIndex = m_proxyModel->mapToSource(index); KFileItem* item = m_dirModel->itemForIndex(dirModelIndex); -#else - KFileItem* item = m_dirModel->itemForIndex(index); -#endif emit changeSelection(KFileItemList()); TreeViewContextMenu contextMenu(this, item); @@ -178,40 +157,25 @@ void TreeViewSidebarPage::expandSelectionParent() QModelIndex index = m_dirModel->indexForUrl(parentUrl); if (index.isValid()) { -#if defined(USE_PROXY_MODEL) QModelIndex proxyIndex = m_proxyModel->mapFromSource(index); m_treeView->setExpanded(proxyIndex, true); -#else - m_treeView->setExpanded(index, true); -#endif // select the item and assure that the item is visible index = m_dirModel->indexForUrl(m_url); if (index.isValid()) { -#if defined(USE_PROXY_MODEL) proxyIndex = m_proxyModel->mapFromSource(index); m_treeView->scrollTo(proxyIndex); QItemSelectionModel* selModel = m_treeView->selectionModel(); selModel->setCurrentIndex(proxyIndex, QItemSelectionModel::Select); -#else - m_treeView->scrollTo(index); - - QItemSelectionModel* selModel = m_treeView->selectionModel(); - selModel->setCurrentIndex(index, QItemSelectionModel::Select); -#endif } } } void TreeViewSidebarPage::updateActiveView(const QModelIndex& index) { -#if defined(USE_PROXY_MODEL) - const QModelIndex& dirIndex = m_proxyModel->mapToSource(index); + const QModelIndex dirIndex = m_proxyModel->mapToSource(index); const KFileItem* item = m_dirModel->itemForIndex(dirIndex); -#else - const KFileItem* item = m_dirModel->itemForIndex(index); -#endif if (item != 0) { const KUrl& url = item->url(); emit changeUrl(url); @@ -222,12 +186,8 @@ void TreeViewSidebarPage::dropUrls(const KUrl::List& urls, const QModelIndex& index) { if (index.isValid()) { -#if defined(USE_PROXY_MODEL) - const QModelIndex& dirIndex = m_proxyModel->mapToSource(index); + const QModelIndex dirIndex = m_proxyModel->mapToSource(index); KFileItem* item = m_dirModel->itemForIndex(dirIndex); -#else - KFileItem* item = m_dirModel->itemForIndex(index); -#endif Q_ASSERT(item != 0); if (item->isDir()) { emit urlsDropped(urls, item->url());