summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--smdirmodel.cpp11
-rw-r--r--smdirmodel.h2
-rw-r--r--smdirwatcher.cpp16
-rw-r--r--smdirwatcher.h2
4 files changed, 23 insertions, 8 deletions
diff --git a/smdirmodel.cpp b/smdirmodel.cpp
index 1552044..73ae0c5 100644
--- a/smdirmodel.cpp
+++ b/smdirmodel.cpp
@@ -135,6 +135,11 @@ void SmDirModel::setDir(const QString &dir){
mWatch->setDir(mCurrentDir);
}
+void SmDirModel::setDirNoProgress(const QString &dir){
+ mCurrentDir = dir;
+ mWatch->setDir(mCurrentDir, false);
+}
+
void SmDirModel::dirEvent(const QList<QVariant> &data, int e){
if(e == SmDirWatcher::Added){
/* for some reason SmTreeModel::addRow() doesn't work,
@@ -172,7 +177,7 @@ void SmDirModel::readSettings(){
interval *= 1000;
mRefreshTimer->setInterval(interval);
mRefreshTimer->start();
- connect(mRefreshTimer, SIGNAL(timeout()), this, SLOT(refresh()));
+ connect(mRefreshTimer, SIGNAL(timeout()), this, SLOT(refreshNoProgress()));
}
bool expensive = s.value("ui/expensiveops", true).toBool();
mWatch->setExpensiveOps(expensive);
@@ -182,6 +187,10 @@ void SmDirModel::refresh(){
setDir(mCurrentDir);
}
+void SmDirModel::refreshNoProgress(){
+ setDirNoProgress(mCurrentDir);
+}
+
void SmDirModel::populate(SmTreeItem *root){
setRoot(root);
//mWatch->startAsyncJobs();
diff --git a/smdirmodel.h b/smdirmodel.h
index a775553..4e7112a 100644
--- a/smdirmodel.h
+++ b/smdirmodel.h
@@ -39,9 +39,11 @@ class SmDirModel : public SmTreeModel {
public slots:
void setDir(const QString &dir);
+ void setDirNoProgress(const QString &dir);
void dirEvent(const QList<QVariant> &data, int e);
void readSettings();
void refresh();
+ void refreshNoProgress();
private slots:
void populate(SmTreeItem *root);
diff --git a/smdirwatcher.cpp b/smdirwatcher.cpp
index 8c0570e..c5914ad 100644
--- a/smdirwatcher.cpp
+++ b/smdirwatcher.cpp
@@ -29,7 +29,7 @@ SmDirWatcher::SmDirWatcher(int numFields, QObject *parent) : QThread(parent), mF
mDb.open();
}
-void SmDirWatcher::setDir(const QString &dir){
+void SmDirWatcher::setDir(const QString &dir, bool progress){
if(mDescr){
inotify_rm_watch(mFd, mDescr); //generates IN_IGNORE ???
}
@@ -37,14 +37,18 @@ void SmDirWatcher::setDir(const QString &dir){
QDir d(mCurrent);
QWidget *fsWidget = SmGlobals::instance()->registeredWidgets().value("FSWidget");
QProgressDialog *pDlg = new QProgressDialog(tr("Gathering data..."), QString(), 0, d.count(), fsWidget);
- pDlg->setWindowModality(Qt::WindowModal);
- Helper::centerWidget(pDlg);
- pDlg->show();
+ if(progress){
+ pDlg->setWindowModality(Qt::WindowModal);
+ Helper::centerWidget(pDlg);
+ pDlg->show();
+ }
SmTreeItem *rootItem = new SmTreeItem(mNumFields);
for(uint i = 0; i < d.count(); ++i){
QFileInfo fi = d.entryInfoList().at(i);
- pDlg->setValue(i);
- qApp->processEvents();
+ if(progress){
+ pDlg->setValue(i);
+ qApp->processEvents();
+ }
if(fi.fileName() == "." || fi.fileName() == ".."){
continue;
}
diff --git a/smdirwatcher.h b/smdirwatcher.h
index bf89050..bb045ef 100644
--- a/smdirwatcher.h
+++ b/smdirwatcher.h
@@ -33,7 +33,7 @@ class SmDirWatcher : public QThread {
public slots:
void run();
void stop();
- void setDir(const QString &dir);
+ void setDir(const QString &dir, bool progress = true);
void setExpensiveOps(bool expensiveOps);
private: