┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2007-05-09 05:59:25 +0000
committerPeter Penz <[email protected]>2007-05-09 05:59:25 +0000
commit1d3ccf2ada8f2d6f58b962eb19e49df647373477 (patch)
tree561c6afef7886b55e3caf0098726ae7a264f4096
parentd49c258910739bcd4e96d3e48701c97d604ddc04 (diff)
Postpone the creating of the dir lister to the first show event. This assures that no performance and memory overhead is given when the TreeView is not used at all.
svn path=/trunk/KDE/kdebase/apps/; revision=662771
-rw-r--r--src/treeviewsidebarpage.cpp75
1 files changed, 41 insertions, 34 deletions
diff --git a/src/treeviewsidebarpage.cpp b/src/treeviewsidebarpage.cpp
index 8c1c153d6..0e6edff08 100644
--- a/src/treeviewsidebarpage.cpp
+++ b/src/treeviewsidebarpage.cpp
@@ -43,34 +43,6 @@ TreeViewSidebarPage::TreeViewSidebarPage(QWidget* parent) :
m_proxyModel(0),
m_treeView(0)
{
- m_dirLister = new KDirLister();
- m_dirLister->setDirOnlyMode(true);
- m_dirLister->setAutoUpdate(true);
- m_dirLister->setMainWindow(this);
- m_dirLister->setDelayedMimeTypes(true);
- m_dirLister->setAutoErrorHandlingEnabled(false, this);
-
- m_dirModel = new KDirModel();
- m_dirModel->setDirLister(m_dirLister);
- m_dirModel->setDropsAllowed(KDirModel::DropOnDirectory);
-
- m_proxyModel = new DolphinSortFilterProxyModel(this);
- m_proxyModel->setSourceModel(m_dirModel);
-
- m_treeView = new SidebarTreeView(this);
- m_treeView->setModel(m_proxyModel);
-
- m_proxyModel->setSorting(DolphinView::SortByName);
- m_proxyModel->setSortOrder(Qt::AscendingOrder);
-
- connect(m_treeView, SIGNAL(clicked(const QModelIndex&)),
- this, SLOT(updateActiveView(const QModelIndex&)));
- connect(m_treeView, SIGNAL(urlsDropped(const KUrl::List&, const QModelIndex&)),
- this, SLOT(dropUrls(const KUrl::List&, const QModelIndex&)));
-
- QVBoxLayout* layout = new QVBoxLayout(this);
- layout->setMargin(0);
- layout->addWidget(m_treeView);
}
TreeViewSidebarPage::~TreeViewSidebarPage()
@@ -86,18 +58,51 @@ void TreeViewSidebarPage::setUrl(const KUrl& url)
}
SidebarPage::setUrl(url);
- // TODO: it makes only sense to load the tree if the TreeViewSidebarPage
- // is visible, but currently an assertion is triggered in KDirModel when hiding
- // the tree view, changing to a complete different hierarchy and showing it again.
- //if (isVisible()) {
+ if (m_dirLister != 0) {
loadTree(url);
- //}
+ }
}
void TreeViewSidebarPage::showEvent(QShowEvent* event)
{
- SidebarPage::showEvent(event);
+ if (m_dirLister == 0) {
+ // Postpone the creating of the dir lister to the first show event.
+ // This assures that no performance and memory overhead is given when the TreeView is not
+ // used at all (see TreeViewSidebarPage::setUrl()).
+ m_dirLister = new KDirLister();
+ m_dirLister->setDirOnlyMode(true);
+ m_dirLister->setAutoUpdate(true);
+ m_dirLister->setMainWindow(this);
+ m_dirLister->setDelayedMimeTypes(true);
+ m_dirLister->setAutoErrorHandlingEnabled(false, this);
+
+ Q_ASSERT(m_dirModel == 0);
+ m_dirModel = new KDirModel();
+ m_dirModel->setDirLister(m_dirLister);
+ m_dirModel->setDropsAllowed(KDirModel::DropOnDirectory);
+
+ Q_ASSERT(m_proxyModel == 0);
+ m_proxyModel = new DolphinSortFilterProxyModel(this);
+ m_proxyModel->setSourceModel(m_dirModel);
+
+ Q_ASSERT(m_treeView == 0);
+ m_treeView = new SidebarTreeView(this);
+ m_treeView->setModel(m_proxyModel);
+ m_proxyModel->setSorting(DolphinView::SortByName);
+ m_proxyModel->setSortOrder(Qt::AscendingOrder);
+
+ connect(m_treeView, SIGNAL(clicked(const QModelIndex&)),
+ this, SLOT(updateActiveView(const QModelIndex&)));
+ connect(m_treeView, SIGNAL(urlsDropped(const KUrl::List&, const QModelIndex&)),
+ this, SLOT(dropUrls(const KUrl::List&, const QModelIndex&)));
+
+ QVBoxLayout* layout = new QVBoxLayout(this);
+ layout->setMargin(0);
+ layout->addWidget(m_treeView);
+ }
+
loadTree(url());
+ SidebarPage::showEvent(event);
}
void TreeViewSidebarPage::contextMenuEvent(QContextMenuEvent* event)
@@ -171,6 +176,8 @@ void TreeViewSidebarPage::dropUrls(const KUrl::List& urls,
void TreeViewSidebarPage::loadTree(const KUrl& url)
{
+ Q_ASSERT(m_dirLister != 0);
+
// adjust the root of the tree to the base bookmark
KFilePlacesModel* placesModel = DolphinSettings::instance().placesModel();
KUrl baseUrl = placesModel->url(placesModel->closestItem(url));