#include <QVBoxLayout>
#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->setDirLister(m_dirLister);
m_dirModel->setDropsAllowed(KDirModel::DropOnDirectory);
-
-#if defined(USE_PROXY_MODEL)
m_proxyModel = new DolphinSortFilterProxyModel(this);
m_proxyModel->setSourceModel(m_dirModel);
m_proxyModel->setSorting(DolphinView::SortByName);
m_proxyModel->setSortOrder(Qt::Ascending);
-#else
- m_treeView = new SidebarTreeView(this);
- m_treeView->setModel(m_dirModel);
-#endif
connect(m_treeView, SIGNAL(clicked(const QModelIndex&)),
this, SLOT(updateActiveView(const QModelIndex&)));
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 {
// The item with the given URL is not loaded by the model yet. Iterate
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);
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);
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());