1 /*
2   This file is part of Lokalize
3 
4   SPDX-FileCopyrightText: 2007-2009 Nick Shaforostoff <shafff@ukr.net>
5   SPDX-FileCopyrightText: 2018-2019 Simon Depiets <sdepiets@gmail.com>
6 
7   SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
8 */
9 
10 
11 #ifndef SCANAPI_H
12 #define SCANAPI_H
13 
14 #include <QDir>
15 #include <QElapsedTimer>
16 #include <QUrl>
17 #include <QVector>
18 
19 #include <kjob.h>
20 
21 bool dragIsAcceptable(const QList<QUrl>& urls);
22 QString shorterFilePath(const QString path);
23 
24 
25 namespace TM
26 {
27 class ScanJob;
28 class ScanJobFeedingBack;
29 
30 void purgeMissingFilesFromTM(const QStringList& urls, const QString& dbName);
31 
32 ///wrapper. returns gross number of jobs started
33 int scanRecursive(const QStringList& urls, const QString& dbName);
34 
35 class RecursiveScanJob: public KJob
36 {
37     Q_OBJECT
38 public:
39     explicit RecursiveScanJob(const QString& dbName, QObject* parent = nullptr);
40     void setJobs(const QVector<ScanJob*>& jobs);
41     void start() override;
42 
43 public Q_SLOTS:
44     void scanJobFinished(ScanJobFeedingBack*);
45     void scanJobDestroyed();
46 protected:
47     bool doKill() override;
48 
49 private:
50     QString m_dbName;
51     QElapsedTimer m_time;
52     QVector<ScanJob*> m_jobs;
53     qulonglong m_destroyedJobs = 0;
54 };
55 }
56 
57 #endif
58