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 LocalLibrary_H
22#define LocalLibrary_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 Library::Info info() const;
60
61 Library::Importer* importer();
62
63 bool isReloading() const override;
64
65 public slots:
66 void deleteTracks(const MetaDataList& tracks, Library::TrackDeletionMode answer) override;
67 void reloadLibrary(bool clear_first, Library::ReloadQuality quality) override;
68 void importFiles(const QStringList& files) override;
69 void importFilesTo(const QStringList& files, const QString& targetDirectory);
70
71 private:
72 void applyDatabaseFixes();
73 void initReloadThread();
74
75 void getAllArtists(ArtistList& artists) const override;
76 void getAllArtistsBySearchstring(Library::Filter filter, ArtistList& artists) const override;
77
78 void getAllAlbums(AlbumList& albums) const override;
79 void getAllAlbumsByArtist(IdList artistIds, AlbumList& albums, Library::Filter filter) const override;
80 void getAllAlbumsBySearchstring(Library::Filter filter, AlbumList& albums) const override;
81
82 int getTrackCount() const override;
83 void getAllTracks(MetaDataList& v_md) const override;
84 void getAllTracks(const QStringList& paths, MetaDataList& tracks) const override;
85 void getAllTracksByArtist(IdList artistIds, MetaDataList& tracks, Library::Filter filter) const override;
86 void getAllTracksByAlbum(IdList albumIds, MetaDataList& tracks, Library::Filter filter) const override;
87 void getAllTracksBySearchstring(Library::Filter filter, MetaDataList& v_md) const override;
88 void getAllTracksByPath(const QStringList& paths, MetaDataList& v_md) const override;
89
90 void getTrackById(TrackID trackId, MetaData& track) const override;
91 void getAlbumById(AlbumId albumId, Album& album) const override;
92 void getArtistById(ArtistId artistId, Artist& artist) const override;
93
94 // not needed
95 void refreshArtists() override;
96 void refreshAlbums() override;
97 void refreshTracks() override;
98
99 private slots:
100 void reloadThreadNewBlock();
101 void reloadThreadFinished();
102 void searchModeChanged();
103 void showAlbumArtistsChanged();
104 void importStatusChanged(Library::Importer::ImportStatus status);
105};
106
107#endif // LocalLibrary_H
Definition: AbstractLibrary.h:44
The AlbumList class.
Definition: Album.h:100
The Album class.
Definition: Album.h:41
ArtistList.
Definition: Artist.h:77
The Artist class.
Definition: Artist.h:38
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:37
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