File indexing completed on 2024-04-21 04:49:02
0001 /* 0002 SPDX-FileCopyrightText: 2017 (c) Matthieu Gallien <matthieu_gallien@yahoo.fr> 0003 0004 SPDX-License-Identifier: LGPL-3.0-or-later 0005 */ 0006 0007 #ifndef TRACKSLISTENER_H 0008 #define TRACKSLISTENER_H 0009 0010 #include "elisaLib_export.h" 0011 0012 #include "databaseinterface.h" 0013 #include "datatypes.h" 0014 #include "elisautils.h" 0015 0016 #include <QObject> 0017 0018 #include <memory> 0019 0020 class TracksListenerPrivate; 0021 0022 class ELISALIB_EXPORT TracksListener : public QObject 0023 { 0024 Q_OBJECT 0025 0026 public: 0027 0028 using ListTrackDataType = DataTypes::ListTrackDataType; 0029 0030 using TrackDataType = DataTypes::TrackDataType; 0031 0032 explicit TracksListener(DatabaseInterface *database, QObject *parent = nullptr); 0033 0034 ~TracksListener() override; 0035 0036 Q_SIGNALS: 0037 0038 void trackHasChanged(const TracksListener::TrackDataType &audioTrack); 0039 0040 void trackHasBeenRemoved(qulonglong id); 0041 0042 void tracksListAdded(qulonglong newDatabaseId, 0043 const QString &entryTitle, 0044 ElisaUtils::PlayListEntryType databaseIdType, 0045 const TracksListener::ListTrackDataType &tracks); 0046 0047 public Q_SLOTS: 0048 0049 void tracksAdded(const TracksListener::ListTrackDataType &allTracks); 0050 0051 void trackRemoved(qulonglong id); 0052 0053 void trackModified(const TracksListener::TrackDataType &modifiedTrack); 0054 0055 void trackByNameInList(const QVariant &title, const QVariant &artist, const QVariant &album, const QVariant &trackNumber, const QVariant &discNumber); 0056 0057 void newEntryInList(qulonglong newDatabaseId, 0058 const QString &entryTitle, 0059 ElisaUtils::PlayListEntryType databaseIdType); 0060 0061 void trackByFileNameInList(ElisaUtils::PlayListEntryType type, const QUrl &fileName); 0062 0063 void newUrlInList(const QUrl &entryUrl, 0064 ElisaUtils::PlayListEntryType databaseIdType); 0065 0066 void updateSingleFileMetaData(const QUrl &url, DataTypes::ColumnsRoles role, const QVariant &data); 0067 0068 private: 0069 0070 void newArtistInList(qulonglong newDatabaseId, const QString &artist); 0071 0072 void newGenreInList(qulonglong newDatabaseId, const QString &entryTitle); 0073 0074 void newAlbumInList(qulonglong newDatabaseId, 0075 const QString &entryTitle); 0076 0077 std::unique_ptr<TracksListenerPrivate> d; 0078 0079 }; 0080 0081 #endif // TRACKSLISTENER_H