summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configurationdialog.cpp22
-rw-r--r--configurationdialog.h2
-rw-r--r--smdirmodel.cpp12
-rw-r--r--smdirmodel.h1
-rw-r--r--smdirwatcher.cpp2
5 files changed, 39 insertions, 0 deletions
diff --git a/configurationdialog.cpp b/configurationdialog.cpp
index d963d3c..12198e3 100644
--- a/configurationdialog.cpp
+++ b/configurationdialog.cpp
@@ -140,9 +140,27 @@ ConfigurationDialog::ConfigurationDialog(QWidget *parent, Qt::WindowFlags f) : S
archiveLayout->addWidget(mIconizeCovers);
archiveBox->setLayout(archiveLayout);
+ //auto refresh
+ QGroupBox *autoRefreshBox = new QGroupBox(tr("Auto Refresh"));
+ QVBoxLayout *autoRefreshLayout = new QVBoxLayout;
+ mAutoRefresh = new QCheckBox(tr("Automatically refresh directory"));
+ autoRefreshLayout->addWidget(mAutoRefresh);
+ QLabel *refreshL1 = new QLabel(tr("Refresh every (s)"));
+ mAutoRefreshValue = new QSpinBox;
+ mAutoRefreshValue->setMinimum(5);
+ mAutoRefreshValue->setValue(5);
+ QHBoxLayout *autoSpinLayout = new QHBoxLayout;
+ autoSpinLayout->addWidget(refreshL1);
+ autoSpinLayout->addWidget(mAutoRefreshValue);
+ QVBoxLayout *autoRefreshBoxL = new QVBoxLayout;
+ autoRefreshBoxL->addWidget(mAutoRefresh);
+ autoRefreshBoxL->addLayout(autoSpinLayout);
+ autoRefreshBox->setLayout(autoRefreshBoxL);
+
//misc - assemble
miscLayout->addWidget(hoverBox);
miscLayout->addWidget(archiveBox);
+ miscLayout->addWidget(autoRefreshBox);
miscWidget->setLayout(miscLayout);
mTab->addTab(miscWidget, tr("Misc. settings"));
@@ -431,6 +449,8 @@ void ConfigurationDialog::readSettings(){
mAutoAddCovers->setChecked(s.value("ui/autoaddcovers", false).toBool());
mIconizeCovers->setChecked(s.value("ui/iconizecovers", false).toBool());
mCursorOffset->setValue(s.value("ui/cursoroffset", SmGlobals::instance()->cursorSize().height()).toInt());
+ mAutoRefresh->setChecked(s.value("ui/autorefresh", false).toBool());
+ mAutoRefreshValue->setValue(s.value("ui/autorefreshvalue", 5).toInt());
//read paths
mArchiveDir->setText(s.value("paths/archivedir").toString());
@@ -521,6 +541,8 @@ void ConfigurationDialog::writeSettings(){
s.setValue("ui/autoaddcovers", (mAutoAddCovers->checkState() == Qt::Checked));
s.setValue("ui/iconizecovers", (mIconizeCovers->checkState() == Qt::Checked));
s.setValue("ui/cursoroffset", mCursorOffset->value());
+ s.setValue("ui/autorefresh", (mAutoRefresh->checkState() == Qt::Checked));
+ s.setValue("ui/autorefreshvalue", mAutoRefreshValue->value());
//write pictures
QString curPos = mInfoBox->currentText();
diff --git a/configurationdialog.h b/configurationdialog.h
index f090e2c..cc074de 100644
--- a/configurationdialog.h
+++ b/configurationdialog.h
@@ -79,10 +79,12 @@ class ConfigurationDialog : public SmDialog {
QCheckBox *mHoverMovies;
QCheckBox *mAutoAddCovers;
QCheckBox *mIconizeCovers;
+ QCheckBox *mAutoRefresh;
QSpinBox *mHoverOpacity;
QSpinBox *mCursorOffset;
QSpinBox *mPVWidth;
QSpinBox *mPVHeight;
+ QSpinBox *mAutoRefreshValue;
QLabel *mClipboardColor;
QLabel *mBaseColor;
QLabel *mAlternateBaseColor;
diff --git a/smdirmodel.cpp b/smdirmodel.cpp
index d24fdef..ea44ccd 100644
--- a/smdirmodel.cpp
+++ b/smdirmodel.cpp
@@ -22,6 +22,7 @@ SmDirModel::SmDirModel(const QStringList &headers, QObject *parent) : SmTreeMode
mRunTimer->setInterval(2000);
connect(mRunTimer, SIGNAL(timeout()), mWatch, SLOT(start()));
mRunTimer->start();
+ mRefreshTimer = new QTimer(this);
readSettings();
mCollector = mWatch->collector();
@@ -154,9 +155,20 @@ void SmDirModel::readSettings(){
mIcons.insert("image", QIcon(icons.value(iconName)));
iconName = s.value("ui/othericon").toString();
mIcons.insert("other", QIcon(icons.value(iconName)));
+ bool autorefresh = s.value("ui/autorefresh", false).toBool();
+ if(autorefresh){
+ mRefreshTimer->stop();
+ mRefreshTimer->disconnect();
+ int interval = s.value("ui/autorefreshvalue").toInt();
+ interval *= 1000;
+ mRefreshTimer->setInterval(interval);
+ mRefreshTimer->start();
+ connect(mRefreshTimer, SIGNAL(timeout()), this, SLOT(refresh()));
+ }
}
void SmDirModel::refresh(){
+ setDir(mCurrentDir);
}
void SmDirModel::populate(SmTreeItem *root){
diff --git a/smdirmodel.h b/smdirmodel.h
index 2db790b..9c311e0 100644
--- a/smdirmodel.h
+++ b/smdirmodel.h
@@ -55,6 +55,7 @@ class SmDirModel : public SmTreeModel {
QString mCurrentDir;
QString mCur;
QTimer *mRunTimer;
+ QTimer *mRefreshTimer;
QMap<QString, QIcon> mIcons;
QMutex *mCollectorMx;
SmDataColletor *mCollector;
diff --git a/smdirwatcher.cpp b/smdirwatcher.cpp
index 8b72aab..069ebfe 100644
--- a/smdirwatcher.cpp
+++ b/smdirwatcher.cpp
@@ -37,6 +37,8 @@ SmDirWatcher::SmDirWatcher(QObject *parent) : QThread(parent), mFd(0), mDescr(0)
}
SmDirWatcher::~SmDirWatcher(){
+ mCollector->terminate();
+ mCollector->wait();
if(mFd && mDescr){
inotify_rm_watch(mFd, mDescr);
}