File indexing completed on 2024-05-05 04:50:32

0001 /*
0002    SPDX-FileCopyrightText: 2018 (c) Matthieu Gallien <matthieu_gallien@yahoo.fr>
0003 
0004    SPDX-License-Identifier: LGPL-3.0-or-later
0005  */
0006 
0007 #ifndef ANDROIDFILELISTING_H
0008 #define ANDROIDFILELISTING_H
0009 
0010 #include "../abstractfile/abstractfilelisting.h"
0011 
0012 #include "datatypes.h"
0013 
0014 #include <QObject>
0015 #include <QString>
0016 #include <QUrl>
0017 #include <QHash>
0018 
0019 #include <memory>
0020 
0021 class AndroidFileListingPrivate;
0022 class MusicAudioTrack;
0023 
0024 class AndroidFileListing : public AbstractFileListing
0025 {
0026 
0027     Q_OBJECT
0028 
0029 public:
0030     AndroidFileListing(QObject *parent = nullptr);
0031 
0032     ~AndroidFileListing() override;
0033 
0034     void applicationAboutToQuit() override;
0035 
0036     static void registerNativeMethods();
0037 
0038     static AndroidFileListing* currentInstance();
0039 
0040     void androidMusicTracksScanStarted();
0041 
0042     void newMusicTrack(const QString &trackDescription);
0043 
0044     void androidMusicTracksScanFinished();
0045 
0046     void androidMusicAlbumsScanStarted();
0047 
0048     void newMusicAlbum(const QString &albumDescription);
0049 
0050     void androidMusicAlbumsScanFinished();
0051 
0052     void readExternalStoragePermissionIsOk();
0053 
0054     void readExternalStoragePermissionIsKo();
0055 
0056 Q_SIGNALS:
0057 
0058 public Q_SLOTS:
0059 
0060 private Q_SLOTS:
0061 
0062 private:
0063     void executeInit(QHash<QUrl, QDateTime> allFiles) override;
0064 
0065     void triggerRefreshOfContent() override;
0066 
0067     DataTypes::TrackDataType scanOneFile(const QUrl &scanFile, const QFileInfo &scanFileInfo, FileSystemWatchingModes watchForFileSystemChanges) override;
0068 
0069     static AndroidFileListing* mCurrentInstance;
0070 
0071     std::unique_ptr<AndroidFileListingPrivate> d;
0072 
0073 };
0074 
0075 #endif // ANDROIDFILELISTING_H