summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configurationdialog.cpp57
-rw-r--r--configurationdialog.h2
-rw-r--r--filesystemwidget.cpp2
-rw-r--r--smdirmodel.cpp5
-rw-r--r--smdirmodel.h2
-rw-r--r--smdirwatcher.cpp39
-rw-r--r--smdirwatcher.h2
7 files changed, 64 insertions, 45 deletions
diff --git a/configurationdialog.cpp b/configurationdialog.cpp
index da7142d..2c5c804 100644
--- a/configurationdialog.cpp
+++ b/configurationdialog.cpp
@@ -5,38 +5,38 @@
2 of the License, or (at your option) any later version.
*/
-#include <QtWidgets/QPushButton>
-#include <QtWidgets/QTabWidget>
-#include <QtWidgets/QHBoxLayout>
-#include <QtWidgets/QVBoxLayout>
-#include <QtWidgets/QGridLayout>
-#include <QtWidgets/QFormLayout>
-#include <QtWidgets/QLineEdit>
-#include <QtWidgets/QLabel>
-#include <QtWidgets/QComboBox>
-#include <QtWidgets/QDirModel>
-#include <QtWidgets/QCompleter>
-#include <QtWidgets/QApplication>
+#include <QPushButton>
+#include <QTabWidget>
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QGridLayout>
+#include <QFormLayout>
+#include <QLineEdit>
+#include <QLabel>
+#include <QComboBox>
+#include <QDirModel>
+#include <QCompleter>
+#include <QApplication>
#include <QSettings>
#include <QRegExp>
#include <QFileInfo>
-#include <QtWidgets/QGroupBox>
-#include <QtWidgets/QCheckBox>
-#include <QtWidgets/QSpinBox>
+#include <QGroupBox>
+#include <QCheckBox>
+#include <QSpinBox>
#include <QFileInfo>
-#include <QtWidgets/QMessageBox>
+#include <QMessageBox>
#include <QFile>
#include <QTextStream>
#include <QRegExpValidator>
#include <QSignalMapper>
#include <QColor>
-#include <QtWidgets/QColorDialog>
+#include <QColorDialog>
#include <QPalette>
#include <QImage>
#include <QPainter>
#include <QStandardItemModel>
#include <QStandardItem>
-#include <QtWidgets/QDesktopWidget>
+#include <QDesktopWidget>
#include "configurationdialog.h"
#include "programconfigurator.h"
@@ -91,7 +91,16 @@ ConfigurationDialog::ConfigurationDialog(QWidget *parent, Qt::WindowFlags f) : S
copyL->addRow(tr("Strip from path"), mStripPath);
copyBox->setLayout(copyL);
pathLayout->addWidget(copyBox);
- mTab->addTab(pathWidget, tr("Directories"));
+
+ //expensive option
+ QGroupBox *expensiveBox = new QGroupBox(tr("Expensive file operations"));
+ QHBoxLayout *expensiveL = new QHBoxLayout;
+ mExpensive = new QCheckBox(tr("Do expenive file operations"));
+ expensiveL->addWidget(mExpensive);
+ expensiveBox->setLayout(expensiveL);
+ pathLayout->addWidget(expensiveBox);
+ pathLayout->addStretch(Qt::Vertical);
+ mTab->addTab(pathWidget, tr("Files"));
//misc tab
QWidget *miscWidget = new QWidget;
@@ -288,12 +297,6 @@ ConfigurationDialog::ConfigurationDialog(QWidget *parent, Qt::WindowFlags f) : S
dbBox->setLayout(dbFormL);
QVBoxLayout *dbWidgetLayout = new QVBoxLayout;
dbWidgetLayout->addWidget(dbBox);
- QGroupBox *miscDbBox = new QGroupBox(tr("Misc."));
- QVBoxLayout *miscDbLayout= new QVBoxLayout;
- mCheckPresent = new QCheckBox(tr("Check database for files"));
- miscDbLayout->addWidget(mCheckPresent);
- miscDbBox->setLayout(miscDbLayout);
- dbWidgetLayout->addWidget(miscDbBox);
dbWidgetLayout->addStretch();
QWidget *dbWidget = new QWidget;
dbWidget->setLayout(dbWidgetLayout);
@@ -480,6 +483,7 @@ void ConfigurationDialog::readSettings(){
mCoverPath->setText(s.value("paths/coverpath").toString());
mWindowsDrive->setText(s.value("paths/windowsdrive").toString());
mStripPath->setText(s.value("paths/strippath").toString());
+ mExpensive->setChecked(s.value("ui/expensiveops", true).toBool());
//read pictures
mInfoBox->setCurrentIndex(mInfoBox->findData(s.value("ui/infoposition", TopLeft).toInt()));
@@ -492,7 +496,6 @@ void ConfigurationDialog::readSettings(){
mDatabaseName->setText(s.value("database/dbname").toString());
mDatabaseUsername->setText(s.value("database/dbuser").toString());
mDatabasePassword->setText(s.value("database/dbpass").toString());
- mCheckPresent->setChecked(s.value("database/checkpresent", false).toBool());
//read colors
QVariant clip = s.value("ui/clipcolor", QVariant(QColor(Qt::darkBlue)));
@@ -545,6 +548,7 @@ void ConfigurationDialog::writeSettings(){
s.setValue("paths/windowsdrive", mWindowsDrive->text());
s.setValue("paths/strippath", mStripPath->text());
s.setValue("paths/coverpath", mCoverPath->text());
+ s.setValue("ui/expensiveops", (mExpensive->checkState() == Qt::Checked));
//write icons
s.setValue("ui/foldericon", mIconForFolder->currentText());
@@ -578,7 +582,6 @@ void ConfigurationDialog::writeSettings(){
s.setValue("database/dbname", mDatabaseName->text());
s.setValue("database/dbuser", mDatabaseUsername->text());
s.setValue("database/dbpass", mDatabasePassword->text());
- s.setValue("database/checkpresent", (mCheckPresent->checkState() == Qt::Checked));
//write movies
mMovieConfig->writeSettings();
diff --git a/configurationdialog.h b/configurationdialog.h
index c266d37..6775478 100644
--- a/configurationdialog.h
+++ b/configurationdialog.h
@@ -81,7 +81,7 @@ class ConfigurationDialog : public SmDialog {
QCheckBox *mAutoAddCovers;
QCheckBox *mIconizeCovers;
QCheckBox *mAutoRefresh;
- QCheckBox *mCheckPresent;
+ QCheckBox *mExpensive;
QSpinBox *mHoverOpacity;
QSpinBox *mCursorOffset;
QSpinBox *mPVWidth;
diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp
index 64f5ee8..da8acb2 100644
--- a/filesystemwidget.cpp
+++ b/filesystemwidget.cpp
@@ -343,6 +343,8 @@ void FilesystemWidget::readSettings(){
mDirView->selectionModel()->setCurrentIndex(pidx, QItemSelectionModel::ClearAndSelect);
}
}
+ bool expensiveOps = s.value("ui/expensiveops", true).toBool();
+ mFileModel->watcher()->setExpensiveOps(expensiveOps);
QPoint picViewerPos = s.value("windows/picviewer").toPoint();
mPicViewer->move(picViewerPos);
mFileView->readConfig();
diff --git a/smdirmodel.cpp b/smdirmodel.cpp
index 6c84784..8a403d1 100644
--- a/smdirmodel.cpp
+++ b/smdirmodel.cpp
@@ -15,7 +15,7 @@
#include "smglobals.h"
#include "helper.h"
-SmDirModel::SmDirModel(const QStringList &headers, QObject *parent) : SmTreeModel(headers, parent), mHeaders(headers){
+SmDirModel::SmDirModel(const QStringList &headers, QObject *parent) : SmTreeModel(headers, parent), mHeaders(headers), mExpensiveOps(true){
mDb = QSqlDatabase::database("treedb");
mWatch = new SmDirWatcher(NumFields, this);
connect(mWatch, SIGNAL(needRefresh()), this, SLOT(refresh()));
@@ -102,7 +102,6 @@ bool SmDirModel::setData(const QModelIndex &index, const QVariant &value, int ro
QString newPath = QString("%1/%2").arg(dir).arg(newName);
QFile::rename(old, newPath);
emit needResize();
- // watcher->collector will do the rest
return true;
}
return SmTreeModel::setData(index, value, role);
@@ -177,6 +176,8 @@ void SmDirModel::readSettings(){
mRefreshTimer->start();
connect(mRefreshTimer, SIGNAL(timeout()), this, SLOT(refresh()));
}
+ bool expensive = s.value("ui/expensiveops", true).toBool();
+ mWatch->setExpensiveOps(expensive);
}
void SmDirModel::refresh(){
diff --git a/smdirmodel.h b/smdirmodel.h
index 26f34cf..19609fd 100644
--- a/smdirmodel.h
+++ b/smdirmodel.h
@@ -35,6 +35,7 @@ class SmDirModel : public SmTreeModel {
QDir dir() const;
QFileInfo fileInfo(const QModelIndex &idx) const;
QTimer *refreshTimer() { return mRefreshTimer; }
+ SmDirWatcher *watcher() { return mWatch; }
public slots:
void setDir(const QString &dir);
@@ -62,6 +63,7 @@ class SmDirModel : public SmTreeModel {
QTimer *mRefreshTimer;
QMap<QString, QIcon> mIcons;
QSqlDatabase mDb;
+ bool mExpensiveOps;
};
class TimerHandler {
diff --git a/smdirwatcher.cpp b/smdirwatcher.cpp
index d825c2c..038c4cf 100644
--- a/smdirwatcher.cpp
+++ b/smdirwatcher.cpp
@@ -17,7 +17,7 @@
#include "smtreeitem.h"
#include "helper.h"
-SmDirWatcher::SmDirWatcher(int numFields, QObject *parent) : QThread(parent), mFd(0), mDescr(0), mNumFields(numFields) {
+SmDirWatcher::SmDirWatcher(int numFields, QObject *parent) : QThread(parent), mFd(0), mDescr(0), mNumFields(numFields), mExpensiveOps(true) {
mBufLen = 1024 * (sizeof(struct inotify_event) + 16);
mINdata = new char[mBufLen];
mFd = inotify_init();
@@ -47,20 +47,22 @@ void SmDirWatcher::setDir(const QString &dir){
QString mime = data.at(SmDirModel::Type).toString();
SmTreeItem *newItem = new SmTreeItem(data, rootItem);
rootItem->appendChild(newItem);
- Md5Summer *s = new Md5Summer(fi.absoluteFilePath());
- s->setAutoDelete(false);
- connect(s, SIGNAL(md5sumDone(QString,QString)), this, SIGNAL(setMd5Sum(QString,QString)));
- mAsyncTasks.append(s);
- if(mime.startsWith("video")){
- FfmpegGatherer *g = new FfmpegGatherer(fi.absoluteFilePath());
- g->setAutoDelete(false);
- connect(g, SIGNAL(ffmpegDone(QString,QVariantMap)), this, SIGNAL(setFfmpeg(QString,QVariantMap)));
- mAsyncTasks.append(g);
- }else if(mime.startsWith("image")){
- PicSizeGatherer *pg = new PicSizeGatherer(fi.absoluteFilePath());
- pg->setAutoDelete(false);
- connect(pg, SIGNAL(picSizeDone(QString,QVariant)), this, SIGNAL(setPicSize(QString,QVariant)));
- mAsyncTasks.append(pg);
+ if(mExpensiveOps){
+ Md5Summer *s = new Md5Summer(fi.absoluteFilePath());
+ s->setAutoDelete(false);
+ connect(s, SIGNAL(md5sumDone(QString,QString)), this, SIGNAL(setMd5Sum(QString,QString)));
+ mAsyncTasks.append(s);
+ if(mime.startsWith("video")){
+ FfmpegGatherer *g = new FfmpegGatherer(fi.absoluteFilePath());
+ g->setAutoDelete(false);
+ connect(g, SIGNAL(ffmpegDone(QString,QVariantMap)), this, SIGNAL(setFfmpeg(QString,QVariantMap)));
+ mAsyncTasks.append(g);
+ }else if(mime.startsWith("image")){
+ PicSizeGatherer *pg = new PicSizeGatherer(fi.absoluteFilePath());
+ pg->setAutoDelete(false);
+ connect(pg, SIGNAL(picSizeDone(QString,QVariant)), this, SIGNAL(setPicSize(QString,QVariant)));
+ mAsyncTasks.append(pg);
+ }
}
}
emit population(rootItem);
@@ -79,6 +81,9 @@ void SmDirWatcher::startAsyncJobs(){
}
void SmDirWatcher::gatherAsync(const QString &path){
+ if(!mExpensiveOps){
+ return;
+ }
QString mimeType = Helper::mimeType(path);
Md5Summer *s = new Md5Summer(path);
connect(s, SIGNAL(md5sumDone(QString,QString)), this, SIGNAL(setMd5Sum(QString,QString)));
@@ -94,6 +99,10 @@ void SmDirWatcher::gatherAsync(const QString &path){
}
}
+void SmDirWatcher::setExpensiveOps(bool expensiveOps){
+ mExpensiveOps = expensiveOps;
+}
+
QList<QVariant> SmDirWatcher::generalData(const QString &path){
QFileInfo fi(path);
QList<QVariant> data;
diff --git a/smdirwatcher.h b/smdirwatcher.h
index 9ec9181..775ca63 100644
--- a/smdirwatcher.h
+++ b/smdirwatcher.h
@@ -46,6 +46,7 @@ class SmDirWatcher : public QThread {
void setDir(const QString &dir);
void startAsyncJobs();
void gatherAsync(const QString &path);
+ void setExpensiveOps(bool expensiveOps);
private:
QList<QVariant> generalData(const QString &path);
@@ -57,6 +58,7 @@ class SmDirWatcher : public QThread {
QThreadPool *mAsyncPool;
int mNumFields;
QList<AsyncTask*> mAsyncTasks;
+ bool mExpensiveOps;
};
class AsyncTask : public QObject, public QRunnable {