summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--filesystemwidget.cpp19
-rw-r--r--smdirmodel.cpp11
-rw-r--r--smdirmodel.h9
3 files changed, 35 insertions, 4 deletions
diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp
index 4c05640..317d9c2 100644
--- a/filesystemwidget.cpp
+++ b/filesystemwidget.cpp
@@ -163,13 +163,21 @@ void FilesystemWidget::directoryEdited(){
}
void FilesystemWidget::fileViewActivated(const QModelIndex &idx){
- QModelIndex real = mFileProxy->mapToSource(idx);
+ /* we cannot use idx from the SIGNAL here, since the model
+ * may already have changed */
+ Q_UNUSED(idx);
+ TimerHandler h(mFileModel->refresTimer());
+ QModelIndexList selected = mFileView->selectionModel()->selectedRows();
+ if(selected.isEmpty()){
+ return;
+ }
+ QModelIndex real = mFileProxy->mapToSource(selected.first());
if(mFileModel->isDir(real)){
- if(idx.data().toString() == ".."){
+ if(real.data().toString() == ".."){
parentDir();
return;
}
- fileView()->selectionModel()->select(idx, QItemSelectionModel::Deselect);
+ fileView()->selectionModel()->select(selected.first(), QItemSelectionModel::Deselect);
QModelIndex curDir = mModel->index(real.data(SmDirModel::FullPathRole).toString());
mDirView->setCurrentIndex(mDirProxy->mapFromSource(curDir));
return;
@@ -216,6 +224,7 @@ void FilesystemWidget::goBack(){
}
void FilesystemWidget::deleteFiles(){
+ TimerHandler h(mFileModel->refresTimer());
QSortFilterProxyModel *proxy = qobject_cast<QSortFilterProxyModel*>(mFileView->model());
QModelIndexList selected = mFileView->selectionModel()->selectedRows();
if(selected.isEmpty()){
@@ -233,6 +242,7 @@ void FilesystemWidget::deleteFiles(){
}
void FilesystemWidget::toClipboard(int clipmode){
+ TimerHandler h(mFileModel->refresTimer());
mClipboardMode = clipmode;
QClipboard *clip = qApp->clipboard();
QModelIndexList selected = mFileView->selectionModel()->selectedRows();
@@ -279,7 +289,7 @@ void FilesystemWidget::fromClipboard(){
}
void FilesystemWidget::renameFile(){
- mFileModel->refresTimer()->stop();
+ TimerHandler h(mFileModel->refresTimer());
QModelIndex curIdx = mFileView->currentIndex();
if(curIdx.data().toString() == ".."){
return;
@@ -288,6 +298,7 @@ void FilesystemWidget::renameFile(){
}
void FilesystemWidget::playSelected(const QString &player){
+ TimerHandler h(mFileModel->refresTimer());
QStringList files = selectedFiles();
if(files.isEmpty()){
statusbarMessage(tr("Nothing selected."));
diff --git a/smdirmodel.cpp b/smdirmodel.cpp
index 480b6e1..6a7ac39 100644
--- a/smdirmodel.cpp
+++ b/smdirmodel.cpp
@@ -201,3 +201,14 @@ void SmDirModel::addFile(const QList<QVariant> &data){
return;
}
+TimerHandler::TimerHandler(QTimer *timer) : mTimer(timer) {
+ mTimer->stop();
+}
+
+TimerHandler::~TimerHandler(){
+ QSettings s;
+ bool autoRefresh = s.value("ui/autorefresh", false).toBool();
+ if(autoRefresh){
+ mTimer->start();
+ }
+}
diff --git a/smdirmodel.h b/smdirmodel.h
index 21aab40..192992a 100644
--- a/smdirmodel.h
+++ b/smdirmodel.h
@@ -61,4 +61,13 @@ class SmDirModel : public SmTreeModel {
SmDataColletor *mCollector;
};
+class TimerHandler {
+ public:
+ TimerHandler(QTimer *timer);
+ ~TimerHandler();
+
+ private:
+ QTimer *mTimer;
+};
+
#endif // SMDIRMODEL_H