X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/56a81a196f9db867bc69f23fe46c239045f784ca..749fac334dcf56eecb8cc6dbfb1cc005804e3c7d:/src/dolphinview.cpp diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index fe4296409..c0d700eb5 100644 --- a/src/dolphinview.cpp +++ b/src/dolphinview.cpp @@ -156,7 +156,7 @@ DolphinView::DolphinView(QWidget* parent, this, SLOT(emitSelectionChangedSignal())); applyViewProperties(); - m_topLayout->addWidget(m_viewAccessor.itemView()); + m_topLayout->addWidget(m_viewAccessor.layoutTarget()); } DolphinView::~DolphinView() @@ -222,6 +222,10 @@ void DolphinView::setMode(Mode mode) const int oldZoomLevel = m_controller->zoomLevel(); m_mode = mode; + // remember the currently selected items, so that they will + // be restored after reloading the directory + m_selectedItems = selectedItems(); + deleteView(); const KUrl viewPropsUrl = rootUrl(); @@ -248,9 +252,7 @@ void DolphinView::setMode(Mode mode) emit modeChanged(); updateZoomLevel(oldZoomLevel); - if (m_showPreview) { - loadDirectory(viewPropsUrl); - } + loadDirectory(viewPropsUrl); } DolphinView::Mode DolphinView::mode() const @@ -291,6 +293,14 @@ bool DolphinView::hasSelection() const return view && view->selectionModel()->hasSelection(); } +void DolphinView::markUrlsAsSelected(const QList& urls) +{ + foreach (const KUrl& url, urls) { + KFileItem item(KFileItem::Unknown, KFileItem::Unknown, url); + m_selectedItems.append(item); + } +} + KFileItemList DolphinView::selectedItems() const { const QAbstractItemView* view = m_viewAccessor.itemView(); @@ -441,7 +451,7 @@ void DolphinView::reload() QByteArray viewState; QDataStream saveStream(&viewState, QIODevice::WriteOnly); saveState(saveStream); - m_selectedItems = selectedItems(); + m_selectedItems= selectedItems(); setUrl(url()); loadDirectory(url(), true); @@ -577,13 +587,7 @@ void DolphinView::setUrl(const KUrl& url) void DolphinView::selectAll() { - QAbstractItemView* view = m_viewAccessor.itemView(); - // TODO: there seems to be a bug in QAbstractItemView::selectAll(); if - // the Ctrl-key is pressed (e. g. for Ctrl+A), selectAll() inverts the - // selection instead of selecting all items. This is bypassed for KDE 4.0 - // by invoking clearSelection() first. - view->clearSelection(); - view->selectAll(); + m_viewAccessor.itemView()->selectAll(); } void DolphinView::invertSelection() @@ -604,27 +608,6 @@ void DolphinView::clearSelection() m_viewAccessor.itemView()->clearSelection(); } -void DolphinView::changeSelection(const KFileItemList& selection) -{ - clearSelection(); - if (selection.isEmpty()) { - return; - } - const KUrl& baseUrl = url(); - KUrl url; - QItemSelection newSelection; - foreach(const KFileItem& item, selection) { - url = item.url().upUrl(); - if (baseUrl.equals(url, KUrl::CompareWithoutTrailingSlash)) { - QModelIndex index = m_viewAccessor.proxyModel()->mapFromSource(m_viewAccessor.dirModel()->indexForItem(item)); - newSelection.select(index, index); - } - } - m_viewAccessor.itemView()->selectionModel()->select(newSelection, - QItemSelectionModel::ClearAndSelect - | QItemSelectionModel::Current); -} - void DolphinView::renameSelectedItems() { KFileItemList items = selectedItems(); @@ -1233,7 +1216,19 @@ void DolphinView::slotLoadingCompleted() } if (!m_selectedItems.isEmpty()) { - changeSelection(m_selectedItems); + const KUrl& baseUrl = url(); + KUrl url; + QItemSelection newSelection; + foreach(const KFileItem& item, m_selectedItems) { + url = item.url().upUrl(); + if (baseUrl.equals(url, KUrl::CompareWithoutTrailingSlash)) { + QModelIndex index = m_viewAccessor.proxyModel()->mapFromSource(m_viewAccessor.dirModel()->indexForItem(item)); + newSelection.select(index, index); + } + } + m_viewAccessor.itemView()->selectionModel()->select(newSelection, + QItemSelectionModel::ClearAndSelect + | QItemSelectionModel::Current); m_selectedItems.clear(); }