File indexing completed on 2024-04-28 15:39:59

0001 // SPDX-FileCopyrightText: 2003-2012 Jesper K. Pedersen <jesper.pedersen@kdab.com>
0002 // SPDX-FileCopyrightText: 2007 Dirk Mueller <mueller@kde.org>
0003 // SPDX-FileCopyrightText: 2007-2008 Jan Kundrát <jkt@flaska.net>
0004 // SPDX-FileCopyrightText: 2007-2010 Tuomas Suutari <tuomas@nepnep.net>
0005 // SPDX-FileCopyrightText: 2008 Henner Zeller <h.zeller@acm.org>
0006 // SPDX-FileCopyrightText: 2011 Andreas Neustifter <andreas.neustifter@gmail.com>
0007 // SPDX-FileCopyrightText: 2013-2023 Johannes Zarl-Zierl <johannes@zarl-zierl.at>
0008 // SPDX-FileCopyrightText: 2017-2018 Robert Krawitz <rlk@alum.mit.edu>
0009 //
0010 // SPDX-License-Identifier: GPL-2.0-or-later
0011 
0012 #ifndef NEWIMAGEFINDER_H
0013 #define NEWIMAGEFINDER_H
0014 #include "ImageInfo.h"
0015 #include "ImageInfoPtr.h"
0016 
0017 #include <QMutex>
0018 
0019 namespace DB
0020 {
0021 class MD5Map;
0022 class FileNameList;
0023 
0024 class NewImageFinder
0025 {
0026 public:
0027     bool findImages();
0028     bool calculateMD5sums(const DB::FileNameList &list, DB::MD5Map *map, bool *wasCanceled = nullptr);
0029 
0030 protected:
0031     void searchForNewFiles(const DB::FileNameSet &loadedFiles, QString directory);
0032     void setupFileVersionDetection();
0033     void loadExtraFiles();
0034     void loadExtraFile(const DB::FileName &name, DB::MediaType type);
0035     void markUnTagged(ImageInfoPtr info);
0036     bool handleIfImageHasBeenMoved(const DB::FileName &newFileName, const MD5 &sum);
0037 
0038 private:
0039     typedef QList<QPair<DB::FileName, DB::MediaType>> LoadList;
0040     LoadList m_pendingLoad;
0041 
0042     QString m_modifiedFileCompString;
0043     QRegExp m_modifiedFileComponent;
0044     QStringList m_originalFileComponents;
0045     static QMutex s_imageFinderLock; ///< Only one NewImageFinder can accesss the database at any time!
0046 };
0047 }
0048 
0049 #endif /* NEWIMAGEFINDER_H */
0050 
0051 // vi:expandtab:tabstop=4 shiftwidth=4: