m_controller->setUrl(m_dirLister->url());
}
- ViewProperties props(url());
+ const KUrl viewPropsUrl = viewPropertiesUrl();
+ ViewProperties props(viewPropsUrl);
props.setViewMode(m_mode);
createView();
- startDirLister(url());
+ startDirLister(viewPropsUrl);
emit modeChanged();
}
void DolphinView::setShowPreview(bool show)
{
- ViewProperties props(url());
+ const KUrl viewPropsUrl = viewPropertiesUrl();
+ ViewProperties props(viewPropsUrl);
props.setShowPreview(show);
m_controller->setShowPreview(show);
emit showPreviewChanged();
- startDirLister(url(), true);
+ startDirLister(viewPropsUrl, true);
}
bool DolphinView::showPreview() const
return;
}
- ViewProperties props(url());
+ const KUrl viewPropsUrl = viewPropertiesUrl();
+ ViewProperties props(viewPropsUrl);
props.setShowHiddenFiles(show);
m_dirLister->setShowingDotFiles(show);
emit showHiddenFilesChanged();
- startDirLister(url(), true);
+ startDirLister(viewPropsUrl, true);
}
bool DolphinView::showHiddenFiles() const
delete categorizer;
}
- ViewProperties props(url());
+ ViewProperties props(viewPropertiesUrl());
props.setCategorizedSorting(categorized);
props.save();
void DolphinView::selectAll()
{
- selectAll(QItemSelectionModel::Select);
+ itemView()->selectAll();
}
void DolphinView::invertSelection()
{
- selectAll(QItemSelectionModel::Toggle);
+ if (isColumnViewActive()) {
+ // In opposite to QAbstractItemView::selectAll() there is no virtual method
+ // for adjusting the invertion of a selection. As the generic approach by using
+ // the selection model does not work for the column view, we delegate this task:
+ 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);
+
+ QItemSelection selection(topLeft, bottomRight);
+ selectionModel->select(selection, QItemSelectionModel::Toggle);
+ }
}
bool DolphinView::hasSelection() const
void DolphinView::setAdditionalInfo(KFileItemDelegate::AdditionalInformation info)
{
- ViewProperties props(url());
+ const KUrl viewPropsUrl = viewPropertiesUrl();
+ ViewProperties props(viewPropsUrl);
props.setAdditionalInfo(info);
m_controller->setShowAdditionalInfo(info != KFileItemDelegate::NoInformation);
m_fileItemDelegate->setAdditionalInformation(info);
emit additionalInfoChanged(info);
- startDirLister(url(), true);
+ startDirLister(viewPropsUrl, true);
}
KFileItemDelegate::AdditionalInformation DolphinView::additionalInfo() const
return;
}
- // Prefer the local path over the URL. This assures that the
- // volume space information is correct. Assuming that the URL is media:/sda1,
- // and the local path is /windows/C: For the URL the space info is related
- // to the root partition (and hence wrong) and for the local path the space
- // info is related to the windows partition (-> correct).
- const QString localPath(item->localPath());
- KUrl url;
- if (localPath.isEmpty()) {
- url = item->url();
- } else {
- url = localPath;
- }
+ // The stuff below should be moved to ViewContainer and be just a signal?
+
+ // Prefer the local path over the URL.
+ bool isLocal;
+ KUrl url = item->mostLocalUrl(isLocal);
if (item->isDir()) {
setUrl(url);
if (!url.isValid()) {
const QString location(url.pathOrUrl());
if (location.isEmpty()) {
- emit errorMessage(i18n("The location is empty."));
+ emit errorMessage(i18nc("@info:status", "The location is empty."));
} else {
- emit errorMessage(i18n("The location '%1' is invalid.", location));
+ emit errorMessage(i18nc("@info:status", "The location '%1' is invalid.", location));
}
return;
}
}
}
+KUrl DolphinView::viewPropertiesUrl() const
+{
+ if (isColumnViewActive()) {
+ return m_dirLister->url();
+ }
+
+ return url();
+}
+
void DolphinView::applyViewProperties(const KUrl& url)
{
+ if (isColumnViewActive() && m_dirLister->url().isParentOf(url)) {
+ // The column view is active, hence don't apply the view properties
+ // of sub directories (represented by columns) to the view. The
+ // view always represents the properties of the first column.
+ return;
+ }
+
const ViewProperties props(url);
const Mode mode = props.viewMode();
- bool changeMode = (m_mode != mode);
- if (changeMode && isColumnViewActive()) {
- // The column view is active. Only change the
- // mode if the current URL is no child of the column view.
- if (m_dirLister->url().isParentOf(url)) {
- changeMode = false;
- }
- }
-
- if (changeMode) {
+ if (m_mode != mode) {
m_mode = mode;
createView();
emit modeChanged();
void DolphinView::updateSorting(DolphinView::Sorting sorting)
{
- ViewProperties props(url());
+ ViewProperties props(viewPropertiesUrl());
props.setSorting(sorting);
m_proxyModel->setSorting(sorting);
void DolphinView::updateSortOrder(Qt::SortOrder order)
{
- ViewProperties props(url());
+ ViewProperties props(viewPropertiesUrl());
props.setSortOrder(order);
m_proxyModel->setSortOrder(order);
const KFileItem* item = fileItem(index);
if (item != 0) {
- emit requestItemInfo(item->url());
+ emit requestItemInfo(*item);
}
}
void DolphinView::clearHoverInformation()
{
- emit requestItemInfo(KUrl());
+ emit requestItemInfo(KFileItem());
}
this, SLOT(emitContentsMoved()));
}
-void DolphinView::selectAll(QItemSelectionModel::SelectionFlags flags)
-{
- 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);
-
- QItemSelection selection(topLeft, bottomRight);
- selectionModel->select(selection, flags);
-}
-
QAbstractItemView* DolphinView::itemView() const
{
if (m_detailsView != 0) {