diff options
Diffstat (limited to 'desktop-widgets/findmovedimagesdialog.h')
-rw-r--r-- | desktop-widgets/findmovedimagesdialog.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/desktop-widgets/findmovedimagesdialog.h b/desktop-widgets/findmovedimagesdialog.h new file mode 100644 index 000000000..9cae6e8fd --- /dev/null +++ b/desktop-widgets/findmovedimagesdialog.h @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: GPL-2.0 +#ifndef FINDMOVEDIMAGES_H +#define FINDMOVEDIMAGES_H + +#include "ui_findmovedimagesdialog.h" +#include <QFutureWatcher> +#include <QVector> +#include <QMap> +#include <QAtomicInteger> + +class FindMovedImagesDialog : public QDialog { + Q_OBJECT +public: + FindMovedImagesDialog(QWidget *parent = 0); +private +slots: + void on_scanButton_clicked(); + void apply(); + void on_buttonBox_rejected(); + void setProgress(double progress, QString path); + void searchDone(); +private: + struct Match { + QString originalFilename; + QString localFilename; + int matchingPathItems; + }; + struct ImageMatch { + QString localFilename; + int score; + }; + struct ImagePath { + QString fullPath; + QString filenameUpperCase; + ImagePath() = default; // For some reason QVector<...>::reserve() needs a default constructor!? + ImagePath(const QString &path); + inline bool operator<(const ImagePath &path2) const; + }; + Ui::FindMovedImagesDialog ui; + QFutureWatcher<QVector<Match>> watcher; + QVector<Match> matches; + QAtomicInt stopScanning; + QScopedPointer<QFontMetrics> fontMetrics; // Needed to format elided paths + + void learnImage(const QString &filename, QMap<QString, ImageMatch> &matches, const QVector<ImagePath> &imagePaths); + QVector<Match> learnImages(const QString &dir, int maxRecursions, QVector<QString> imagePaths); +}; + +#endif |