┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2008-10-11 14:13:14 +0000
committerPeter Penz <[email protected]>2008-10-11 14:13:14 +0000
commit3b77f108ae1d08e663d06394484c6f0c3100a12a (patch)
treea661aa6835ae61b9c11bbfba3d49810ed93f5c25 /src
parent5ab9dca1f945592e120758f085b6b80d5719b584 (diff)
Simplify the treeview panel implementation (thanks to David Faure for pimping KDirModel::expandToUrl() :-)).
svn path=/trunk/KDE/kdebase/apps/; revision=869982
Diffstat (limited to 'src')
-rw-r--r--src/treeviewsidebarpage.cpp55
-rw-r--r--src/treeviewsidebarpage.h27
2 files changed, 9 insertions, 73 deletions
diff --git a/src/treeviewsidebarpage.cpp b/src/treeviewsidebarpage.cpp
index 6cf2ede18..4e591a127 100644
--- a/src/treeviewsidebarpage.cpp
+++ b/src/treeviewsidebarpage.cpp
@@ -87,7 +87,6 @@ bool TreeViewSidebarPage::showHiddenFiles() const
return FoldersPanelSettings::showHiddenFiles();
}
-
void TreeViewSidebarPage::rename(const KFileItem& item)
{
if (DolphinSettings::instance().generalSettings()->renameInline()) {
@@ -141,15 +140,12 @@ void TreeViewSidebarPage::showEvent(QShowEvent* event)
m_dirLister->setAutoErrorHandlingEnabled(false, this);
m_dirLister->setShowingDotFiles(FoldersPanelSettings::showHiddenFiles());
- connect(m_dirLister, SIGNAL(completed()),
- this, SLOT(triggerLoadSubTree()));
-
Q_ASSERT(m_dolphinModel == 0);
m_dolphinModel = new DolphinModel(this);
m_dolphinModel->setDirLister(m_dirLister);
m_dolphinModel->setDropsAllowed(DolphinModel::DropOnDirectory);
connect(m_dolphinModel, SIGNAL(expand(const QModelIndex&)),
- this, SLOT(triggerExpanding()));
+ this, SLOT(expandToDir(const QModelIndex&)));
Q_ASSERT(m_proxyModel == 0);
m_proxyModel = new DolphinSortFilterProxyModel(this);
@@ -216,52 +212,12 @@ void TreeViewSidebarPage::dropUrls(const QModelIndex& index, QDropEvent* event)
}
}
-void TreeViewSidebarPage::triggerExpanding()
-{
- // the expanding of the folders may not be done in the context
- // of this slot
- QMetaObject::invokeMethod(this, "expandToLeafDir", Qt::QueuedConnection);
-}
-
-void TreeViewSidebarPage::triggerLoadSubTree()
+void TreeViewSidebarPage::expandToDir(const QModelIndex& index)
{
- // the loading of the sub tree may not be done in the context
- // of this slot
- QMetaObject::invokeMethod(this, "loadSubTree", Qt::QueuedConnection);
-}
-
-void TreeViewSidebarPage::expandToLeafDir()
-{
- // expand all directories until the parent directory of m_leafDir
- const KUrl parentUrl = m_leafDir.upUrl();
- QModelIndex dirIndex = m_dolphinModel->indexForUrl(parentUrl);
- QModelIndex proxyIndex = m_proxyModel->mapFromSource(dirIndex);
- m_treeView->setExpanded(proxyIndex, true);
+ m_treeView->setExpanded(index, true);
selectLeafDirectory();
}
-
-void TreeViewSidebarPage::loadSubTree()
-{
- m_treeView->selectionModel()->clearSelection();
-
- if (m_leafDir.isParentOf(m_dirLister->url())) {
- // The leaf directory is not a child of the base URL, hence
- // no sub directory must be loaded or selected.
- return;
- }
-
- const QModelIndex index = m_dolphinModel->indexForUrl(m_leafDir);
- if (index.isValid()) {
- selectLeafDirectory();
- } else {
- // Load all sub directories that need to get expanded for making
- // the leaf directory visible. The slot triggerExpanding() will
- // get invoked if the expanding has been finished.
- m_dolphinModel->expandToUrl(m_leafDir);
- }
-}
-
void TreeViewSidebarPage::scrollToLeaf()
{
const QModelIndex dirIndex = m_dolphinModel->indexForUrl(m_leafDir);
@@ -294,9 +250,8 @@ void TreeViewSidebarPage::loadTree(const KUrl& url)
if (m_dirLister->url() != baseUrl) {
m_dirLister->stop();
m_dirLister->openUrl(baseUrl, KDirLister::Reload);
- } else {
- loadSubTree();
}
+ m_dolphinModel->expandToUrl(m_leafDir);
}
void TreeViewSidebarPage::selectLeafDirectory()
@@ -317,7 +272,7 @@ void TreeViewSidebarPage::selectLeafDirectory()
}
QItemSelectionModel* selModel = m_treeView->selectionModel();
- selModel->setCurrentIndex(proxyIndex, QItemSelectionModel::Select);
+ selModel->setCurrentIndex(proxyIndex, QItemSelectionModel::ClearAndSelect);
}
#include "treeviewsidebarpage.moc"
diff --git a/src/treeviewsidebarpage.h b/src/treeviewsidebarpage.h
index b9f1fba6d..3a37c8882 100644
--- a/src/treeviewsidebarpage.h
+++ b/src/treeviewsidebarpage.h
@@ -93,31 +93,12 @@ private slots:
* to the index \a index.
*/
void dropUrls(const QModelIndex& index, QDropEvent* event);
-
- /**
- * Invokes expandToLeafDir() asynchronously (the expanding
- * may not be done in the context of this slot).
- */
- void triggerExpanding();
-
- /**
- * Invokes loadSubTree() asynchronously (the loading
- * may not be done in the context of this slot).
- */
- void triggerLoadSubTree();
-
- /**
- * Expands all directories to make m_leafDir visible and
- * adjusts the selection.
- */
- void expandToLeafDir();
-
+
/**
- * Loads the sub tree to make m_leafDir visible. Is invoked
- * indirectly by loadTree() after the directory lister has
- * finished loading the root items.
+ * Expands the treeview to show the directory
+ * specified by \a index.
*/
- void loadSubTree();
+ void expandToDir(const QModelIndex& index);
/**
* Assures that the leaf folder gets visible.