Sayonara Player
LocalLibrary.h
1/* LocalLibrary.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 SAYONARA_PLAYER_LOCAL_LIBRARY_H
22#define SAYONARA_PLAYER_LOCAL_LIBRARY_H
23
24#include "AbstractLibrary.h"
25#include "Importer/LibraryImporter.h"
26#include "Utils/Pimpl.h"
27
28class ReloadThread;
29
30namespace Library
31{
32 class Info;
33 class Manager;
34}
35
37 public AbstractLibrary
38{
39 friend class Library::Manager;
40
41 Q_OBJECT
42 PIMPL(LocalLibrary)
43
44 signals:
45 void sigImportDialogRequested(const QString& targetDirectory);
46 void sigRenamed(const QString& newName);
47 void sigPathChanged(const QString& newPath);
48
49 protected:
50 LocalLibrary(Library::Manager* libraryManager, LibraryId id, LibraryPlaylistInteractor* playlistInteractor,
51 QObject* parent = nullptr);
52
53 public:
54 ~LocalLibrary() override;
55
56 bool setLibraryPath(const QString& path);
57 bool setLibraryName(const QString& name);
58
59 [[nodiscard]] Library::Info info() const;
60 [[nodiscard]] Library::Importer* importer();
61 [[nodiscard]] bool isReloading() const override;
62
63 public slots: // NOLINT(readability-redundant-access-specifiers)
64 void deleteTracks(const MetaDataList& tracks, Library::TrackDeletionMode answer) override;
65 void reloadLibrary(bool clear_first, Library::ReloadQuality quality) override;
66 void importFiles(const QStringList& files) override;
67 void importFilesTo(const QStringList& files, const QString& targetDirectory);
68
69 private:
70 void applyDatabaseFixes();
71 void initReloadThread();
72
73 void getAllArtists(ArtistList& artists) const override;
74 void getAllArtistsBySearchstring(Library::Filter filter, ArtistList& artists) const override;
75
76 void getAllAlbums(AlbumList& albums) const override;
77 void getAllAlbumsByArtist(IdList artistIds, AlbumList& albums, Library::Filter filter) const override;
78 void getAllAlbumsBySearchstring(Library::Filter filter, AlbumList& albums) const override;
79
80 [[nodiscard]] int getTrackCount() const override;
81 void getAllTracks(MetaDataList& v_md) const override;
82 void getAllTracks(const QStringList& paths, MetaDataList& tracks) const override;
83 void getAllTracksByArtist(IdList artistIds, MetaDataList& tracks, Library::Filter filter) const override;
84 void getAllTracksByAlbum(IdList albumIds, MetaDataList& tracks, Library::Filter filter) const override;
85 void getAllTracksBySearchstring(Library::Filter filter, MetaDataList& v_md) const override;
86 void getAllTracksByPath(const QStringList& paths, MetaDataList& v_md) const override;
87
88 void getTrackById(TrackID trackId, MetaData& track) const override;
89 void getAlbumById(AlbumId albumId, Album& album) const override;
90 void getArtistById(ArtistId artistId, Artist& artist) const override;
91
92 // not needed
93 void refreshArtists() override;
94 void refreshAlbums() override;
95 void refreshTracks() override;
96
97 private slots: // NOLINT(readability-redundant-access-specifiers)
98 void reloadThreadNewBlock();
99 void reloadThreadFinished();
100 void searchModeChanged();
101 void showAlbumArtistsChanged();
102 void importStatusChanged(Library::Importer::ImportStatus status);
103};
104
105#endif // SAYONARA_PLAYER_LOCAL_LIBRARY_H
Definition: AbstractLibrary.h:44
Definition: Album.h:88
Definition: Album.h:37
Definition: Artist.h:61
Definition: Artist.h:34
Definition: LibraryPlaylistInteractor.h:27
Definition: Filter.h:34
The LibraryImporter class.
Definition: LibraryImporter.h:37
The Info class.
Definition: LibraryInfo.h:38
Definition: LibraryManager.h:40
Definition: LocalLibrary.h:38
The MetaDataList class.
Definition: MetaDataList.h:39
The MetaData class.
Definition: MetaData.h:47
Definition: EngineUtils.h:33
An interface class needed when implementing a library plugin.
Definition: LocalLibraryWatcher.h:31
ReloadQuality
The ReloadQuality enum.
Definition: LibraryNamespaces.h:48
TrackDeletionMode
The TrackDeletionMode enum.
Definition: LibraryNamespaces.h:37