summaryrefslogtreecommitdiffstats
path: root/filewidget.h
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2018-01-02 22:09:07 +0100
committerArno <arno@disconnect.de>2018-01-02 22:09:07 +0100
commitb5dc8c10367537aec8ce7c061f608ca896ec9f36 (patch)
tree3038603c5b485b8a92593a2b24295327d9b71702 /filewidget.h
parentc77061d4d19de23c805ccbcc7cc229b221d4c1d5 (diff)
downloadShemovCleaner-b5dc8c10367537aec8ce7c061f608ca896ec9f36.tar.gz
ShemovCleaner-b5dc8c10367537aec8ce7c061f608ca896ec9f36.tar.bz2
ShemovCleaner-b5dc8c10367537aec8ce7c061f608ca896ec9f36.zip
Implement cache for FileWidget
Some data-gathering is quite expensive and requires a QProcess, like getting the duration, so cache it in memory using QCache. Once the cache is filled, the UI is much snappier. This simplifies gatherData() a bit. It's still quite a long function, but now it doesn't create the QStandardItems any more. I moved it to a separate function.
Diffstat (limited to 'filewidget.h')
-rw-r--r--filewidget.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/filewidget.h b/filewidget.h
index b4c94e3..9c466fa 100644
--- a/filewidget.h
+++ b/filewidget.h
@@ -9,6 +9,7 @@
#include <QToolBar>
#include <QFileInfo>
#include <QLineEdit>
+#include <QCache>
class QLineEdit;
class QStandardItemModel;
@@ -23,6 +24,8 @@ class OriginDialog;
class QMenu;
class FileCopier;
class ProgressDialog;
+class CachedFileData;
+class QStandardItem;
class FileWidget : public QWidget {
Q_OBJECT
@@ -86,6 +89,7 @@ class FileWidget : public QWidget {
void readSettings();
void writeSettings();
void cutOrCopy();
+ QList<QStandardItem*> constructRow(CachedFileData *fd) const;
QAction *createSeparator();
QLineEdit *mDir;
QLineEdit *mFilter;
@@ -117,6 +121,7 @@ class FileWidget : public QWidget {
VideoSorter *mProxy;
OriginDialog *mOrignDlg;
FileCopier *mFileCopier;
+ QCache<QString, CachedFileData> mFileCache;
int mFileAction;
};