From bd3716dcab86c7d3e018004a1f26b470a7f6cfb7 Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 8 Nov 2014 04:31:40 +0100 Subject: Select child dir when going up in directory hierarchy Select the previously selected dir in FileView when going up in the directory hierarchy. --- filesystemwidget.cpp | 3 +++ filesystemwidget.h | 1 + fileview.cpp | 9 +++++++++ fileview.h | 1 + 4 files changed, 14 insertions(+) diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp index 5dbc612..779db2e 100644 --- a/filesystemwidget.cpp +++ b/filesystemwidget.cpp @@ -116,6 +116,7 @@ FilesystemWidget::FilesystemWidget(QWidget *parent) : QWidget(parent), mClipboar connect(mDirEdit, SIGNAL(returnPressed()), this, SLOT(directoryEdited())); connect(mFileView, SIGNAL(delFiles()), this, SLOT(deleteFiles())); connect(mFileView, SIGNAL(editorClosed(QModelIndex)), this, SLOT(fileEditorClosed(QModelIndex))); + connect(this, SIGNAL(upSelected(QString)), mFileView, SLOT(selectItem(QString))); QVBoxLayout *mainLayout = new QVBoxLayout; QSplitter *splitter = new QSplitter; @@ -229,6 +230,8 @@ void FilesystemWidget::parentDir(){ if(idx.parent().isValid()){ mDirView->setCurrentIndex(idx.parent()); } + QString sel = idx.data().toString(); + emit upSelected(sel); } void FilesystemWidget::goBack(){ diff --git a/filesystemwidget.h b/filesystemwidget.h index 82c3b04..0284fb6 100644 --- a/filesystemwidget.h +++ b/filesystemwidget.h @@ -47,6 +47,7 @@ class FilesystemWidget : public QWidget { void windowTitle(const QString &); void statusbarMessage(const QString &); void mounted(bool); + void upSelected(const QString &); public slots: void directoryChanged(const QModelIndex &selected, const QModelIndex &); diff --git a/fileview.cpp b/fileview.cpp index 7280696..72ebf7f 100644 --- a/fileview.cpp +++ b/fileview.cpp @@ -221,6 +221,15 @@ void FileView::properties(){ fpd.exec(); } +void FileView::selectItem(const QString &item){ + QModelIndex start = mProxy->index(0, 0); + QModelIndexList items = mProxy->match(start, Qt::DisplayRole, item, 1, Qt::MatchExactly | Qt::MatchWrap); + if(!items.isEmpty()){ + selectionModel()->select(items.at(0), QItemSelectionModel::Rows | QItemSelectionModel::Select); + scrollTo(items.at(0)); + } +} + void FileView::saveSelection(){ mSelectedFiles.clear(); QModelIndexList selected = selectionModel()->selectedRows(SmDirModel::Name); diff --git a/fileview.h b/fileview.h index 4858ce6..d437201 100644 --- a/fileview.h +++ b/fileview.h @@ -50,6 +50,7 @@ class FileView : public SmTreeView { void restoreSelection(); void selectedFilesChanged(); void properties(); + void selectItem(const QString &item); protected slots: virtual void closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint); -- cgit v1.2.3-70-g09d2