summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--filesystemwidget.cpp3
-rw-r--r--filesystemwidget.h1
-rw-r--r--fileview.cpp9
-rw-r--r--fileview.h1
4 files changed, 14 insertions, 0 deletions
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);