diff options
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(); |