summaryrefslogtreecommitdiffstats
path: root/fileview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'fileview.cpp')
-rw-r--r--fileview.cpp26
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();