diff options
author | Arno <am@disconnect.de> | 2013-03-22 04:14:56 +0100 |
---|---|---|
committer | Arno <am@disconnect.de> | 2013-03-22 04:14:56 +0100 |
commit | db95f01cdb220842e031030df86ee56724e72f27 (patch) | |
tree | c5b4b959865fa3e99567e7f369d1e3769978187b /fileview.cpp | |
parent | f72ed32feae2f3397dc8d0828e6b33584c99fb3f (diff) | |
download | SheMov-db95f01cdb220842e031030df86ee56724e72f27.tar.gz SheMov-db95f01cdb220842e031030df86ee56724e72f27.tar.bz2 SheMov-db95f01cdb220842e031030df86ee56724e72f27.zip |
Remember selections on FileModel reset
Since can reset the FileView through a time, remember the selections on
reset and restore them after. The Timer is stopped when an item is being
edited.
Diffstat (limited to 'fileview.cpp')
-rw-r--r-- | fileview.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/fileview.cpp b/fileview.cpp index 0f0fa28..b5766ca 100644 --- a/fileview.cpp +++ b/fileview.cpp @@ -25,6 +25,7 @@ #include <QSortFilterProxyModel> #include <QtWidgets/QInputDialog> #include <QPalette> +#include <QTimer> #include "fileview.h" #include "hoverwindow.h" @@ -43,6 +44,12 @@ FileView::FileView(QWidget *parent) : QTreeView(parent), mDeleteA(0) { SmGlobals::instance()->treeWidgets().append(this); } +void FileView::setModel(QAbstractItemModel *model){ + mProxy = qobject_cast<FilesystemFileProxy*>(model); + mModel = qobject_cast<SmDirModel*>(mProxy->sourceModel()); + QTreeView::setModel(model); +} + void FileView::markFiles(){ bool ok; QString title = QString(tr("%1 - %2")).arg(qApp->applicationName()).arg(tr("Mark files")); @@ -108,6 +115,7 @@ void FileView::closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint h QSortFilterProxyModel *proxy = qobject_cast<QSortFilterProxyModel*>(model()); QModelIndex sourceIdx = proxy->mapToSource(currentIndex()); emit editorClosed(sourceIdx); + mModel->refresTimer()->start(); } void FileView::contextMenuEvent(QContextMenuEvent *e){ @@ -219,6 +227,24 @@ void FileView::selectedFilesChanged(){ emit selectedSize(selSize); } +void FileView::saveSelection(){ + mMd5Sums.clear(); + QModelIndexList selected = selectionModel()->selectedRows(SmDirModel::Md5sum); + foreach(QModelIndex i, selected){ + mMd5Sums << i.data().toString(); + } +} + +void FileView::restoreSelection(){ + foreach(QString s, mMd5Sums){ + QModelIndex i = mModel->find(s, SmDirModel::Md5sum); + if(i.isValid()){ + QModelIndex r = mProxy->mapFromSource(i); + selectionModel()->select(r, QItemSelectionModel::Rows | QItemSelectionModel::Select); + } + } +} + bool FileView::exitHover(bool exitVal){ mHoverWin->setVisible(false); mCurHover = QModelIndex(); |