void DolphinView::setCategorizedSorting(bool categorized)
{
- if (!supportsCategorizedSorting() || (categorized == categorizedSorting())) {
+ if (categorized == categorizedSorting()) {
+ return;
+ }
+
+ if (!categorized && !supportsCategorizedSorting())
+ {
+ m_proxyModel->setCategorizedModel(categorized);
+ m_proxyModel->sort(m_proxyModel->sortColumn(), m_proxyModel->sortOrder());
+
+ emit categorizedSortingChanged();
+
return;
}
void DolphinView::invertSelection()
{
- QItemSelectionModel* selectionModel = itemView()->selectionModel();
- const QAbstractItemModel* itemModel = selectionModel->model();
+ if (isColumnViewActive()) {
+ // QAbstractItemView does not offer a virtual method invertSelection()
+ // as counterpart to QAbstractItemView::selectAll(). This makes it
+ // necessary to delegate the inverting of the selection to the
+ // column view, as only the selection of the active column should get
+ // inverted.
+ m_columnView->invertSelection();
+ } else {
+ QItemSelectionModel* selectionModel = itemView()->selectionModel();
+ const QAbstractItemModel* itemModel = selectionModel->model();
- const QModelIndex topLeft = itemModel->index(0, 0);
- const QModelIndex bottomRight = itemModel->index(itemModel->rowCount() - 1,
- itemModel->columnCount() - 1);
+ const QModelIndex topLeft = itemModel->index(0, 0);
+ const QModelIndex bottomRight = itemModel->index(itemModel->rowCount() - 1,
+ itemModel->columnCount() - 1);
- QItemSelection selection(topLeft, bottomRight);
- selectionModel->select(selection, QItemSelectionModel::Toggle);
+ const QItemSelection selection(topLeft, bottomRight);
+ selectionModel->select(selection, QItemSelectionModel::Toggle);
+ }
}
bool DolphinView::hasSelection() const
updateViewportColor();
}
-void DolphinView::setUrl(const KUrl& url)
+void DolphinView::updateView(const KUrl& url, const KUrl& rootUrl)
{
if (m_controller->url() == url) {
return;
}
+ const bool restoreColumnView = !rootUrl.isEmpty()
+ && !rootUrl.equals(url, KUrl::CompareWithoutTrailingSlash)
+ && rootUrl.isParentOf(url);
+
m_controller->setUrl(url); // emits urlChanged, which we forward
- applyViewProperties(url);
+ if (restoreColumnView) {
+ applyViewProperties(rootUrl);
+ Q_ASSERT(itemView() == m_columnView);
+ startDirLister(rootUrl);
+ m_columnView->showColumn(url);
+ } else {
+ applyViewProperties(url);
+ startDirLister(url);
+ }
- startDirLister(url);
itemView()->setFocus();
+
+ emit startedPathLoading(url);
+}
+
+void DolphinView::setUrl(const KUrl& url)
+{
+ updateView(url, KUrl());
}
void DolphinView::mouseReleaseEvent(QMouseEvent* event)
case DetailsView:
m_detailsView = new DolphinDetailsView(this, m_controller);
view = m_detailsView;
+ setCategorizedSorting(false);
break;
case ColumnView:
m_columnView = new DolphinColumnView(this, m_controller);
view = m_columnView;
+ setCategorizedSorting(false);
break;
}