mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-05 00:21:29 +00:00
50 lines
1.3 KiB
C
50 lines
1.3 KiB
C
|
// 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
|