Sayonara Player
CachingThread.h
1/* ImportFolderThread.h */
2
3/* Copyright (C) 2011-2020 Michael Lugmair (Lucio Carreras)
4 *
5 * This file is part of sayonara player
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 */
20
21#ifndef IMPORTFOLDERTHREAD_H
22#define IMPORTFOLDERTHREAD_H
23
24#include <QThread>
25
26#include "ImportCache.h"
27#include "Utils/Pimpl.h"
28
29namespace Library
30{
31 class ImportCache;
37 public QThread
38 {
39 Q_OBJECT
40 PIMPL(CachingThread)
41
42 signals:
43 void sigCachedFilesChanged();
44
45 public:
46 explicit CachingThread(const QStringList& fileList, const QString& libraryPath, QObject* parent=nullptr);
47 ~CachingThread() override;
48
49 Library::ImportCachePtr cache() const;
50 void cancel();
51 bool isCancelled() const;
52 QStringList temporaryFiles() const;
53 int cachedFileCount() const;
54 int soundfileCount() const;
55
56
57 private:
58 void run() override;
59
60 void scanDirectory(const QString& dir);
61 bool scanRarArchive(const QString& rarFile);
62 bool scanZipArchive(const QString& zipFile);
63 bool scanTgzArchive(const QString& tgz);
64 void addFile(const QString& filename, const QString& relativeDir=QString());
65
66 QString createTempDirectory();
67 bool scanArchive
68 (
69 const QString& tempDirectory,
70 const QString& binary,
71 const QStringList& args,
72 const QList<int>& successCodes=QList<int>{0}
73 );
74
75 private slots:
76 void metadataChanged();
77 };
78}
79
80#endif // IMPORTFOLDERTHREAD_H
The CachingThread class.
Definition: CachingThread.h:38
Definition: EngineUtils.h:33
An interface class needed when implementing a library plugin.
Definition: LocalLibraryWatcher.h:31