Sayonara Player
Toggle main menu visibility
Loading...
Searching...
No Matches
src
Components
Library
AbstractLibrary.h
1
/* AbstractLibrary.h */
2
3
/* Copyright (C) 2011-2024 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 ABSTRACTLIBRARY_H
22
#define ABSTRACTLIBRARY_H
23
24
#include "Utils/Library/LibraryNamespaces.h"
25
#include "Utils/Library/Filter.h"
26
#include "Utils/Library/Sorting.h"
27
#include "Utils/Pimpl.h"
28
29
#include <QFile>
30
31
class
Genre
;
32
namespace
Gui
33
{
34
class
ExtensionSet
;
35
}
36
37
class
LibraryPlaylistInteractor
;
38
39
class
AbstractLibrary :
40
public
QObject
41
{
42
Q_OBJECT
43
PIMPL(AbstractLibrary)
44
45
signals:
46
void
sigAllTracksLoaded();
47
void
sigAllAlbumsLoaded();
48
void
sigAllArtistsLoaded();
49
50
void
sigReloadingLibrary(
const
QString& message,
int
progress);
51
void
sigReloadingLibraryFinished();
52
53
void
sigDeleteAnswer(QString);
54
55
void
sigCurrentAlbumChanged(
int
row);
56
void
sigCurrentTrackChanged(
int
row);
57
58
public
:
59
explicit
AbstractLibrary(
LibraryPlaylistInteractor
* playlistInteractor, QObject* parent =
nullptr
);
60
~AbstractLibrary()
override
;
61
62
virtual
void
init();
63
64
[[nodiscard]]
Library::Sortings
sortorder()
const
;
65
[[nodiscard]]
Library::Filter
filter()
const
;
66
// calls fetch_by_filter and emits
67
void
changeFilter(
Library::Filter
,
bool
force =
false
);
68
69
[[nodiscard]]
const
MetaDataList
& tracks()
const
;
70
[[nodiscard]]
const
AlbumList
& albums()
const
;
71
[[nodiscard]]
const
ArtistList
& artists()
const
;
72
[[nodiscard]]
const
MetaDataList
& currentTracks()
const
;
73
74
[[nodiscard]]
const
Util::Set<AlbumId>
& selectedAlbums()
const
;
75
[[nodiscard]]
const
Util::Set<ArtistId>
& selectedArtists()
const
;
76
77
// emits new tracks, very similar to psl_selected_albums_changed
78
void
changeCurrentDisc(Disc track);
79
80
[[nodiscard]]
bool
isLoaded()
const
;
81
82
void
setExtensions(
const
Gui::ExtensionSet
& extensions);
83
[[nodiscard]]
Gui::ExtensionSet
extensions()
const
;
84
85
[[nodiscard]]
virtual
bool
isReloading()
const
;
86
[[nodiscard]]
virtual
bool
isEmpty()
const
;
87
88
[[nodiscard]]
LibraryPlaylistInteractor
* playlistInteractor()
const
;
89
90
public
slots:
// NOLINT(*-redundant-access-specifiers)
91
virtual
void
reloadLibrary(
bool
clear_first, Library::ReloadQuality quality) = 0;
92
93
virtual
void
refetch();
94
95
virtual
void
refreshCurrentView();
96
97
virtual
void
findTrack(TrackID
id
);
98
99
virtual
void
selectedArtistsChanged(
const
IndexSet& indexes);
100
virtual
void
selectedAlbumsChanged(
const
IndexSet& indexes,
bool
ignore_artists =
false
);
101
virtual
void
selectedTracksChanged(
const
IndexSet& indexes);
102
103
virtual
void
fetchByFilter(
const
Library::Filter
& filter,
bool
force);
104
virtual
void
fetchTracksByPath(
const
QStringList& paths);
105
106
virtual
void
deleteTracks(
const
MetaDataList
& tracks, Library::TrackDeletionMode mode) = 0;
107
108
virtual
void
deleteFetchedTracks(Library::TrackDeletionMode mode);
109
virtual
void
deleteCurrentTracks(Library::TrackDeletionMode mode);
110
virtual
void
deleteAllTracks();
111
112
virtual
void
importFiles(
const
QStringList& files);
113
114
virtual
void
changeTrackSortorder(Library::TrackSortorder sortOrder);
115
virtual
void
changeAlbumSortorder(Library::AlbumSortorder sortOrder);
116
virtual
void
changeArtistSortorder(Library::ArtistSortorder sortOrder);
117
118
virtual
void
refreshArtists() = 0;
119
virtual
void
refreshAlbums() = 0;
120
virtual
void
refreshTracks() = 0;
121
122
protected
:
123
/* Emit 3 signals with shown artists, shown album, shown tracks */
124
virtual
void
initLibraryImpl() = 0;
125
virtual
void
emitAll();
126
127
virtual
void
getAllArtists(
ArtistList
& artists)
const
= 0;
128
virtual
void
getAllArtistsBySearchstring(
const
Library::Filter
& filter,
ArtistList
& artists)
const
= 0;
129
130
virtual
void
getAllAlbums(
AlbumList
& albums)
const
= 0;
131
virtual
void
132
getAllAlbumsByArtist(
const
IdList& artistIds,
AlbumList
& albums,
const
Library::Filter
& filter)
const
= 0;
133
virtual
void
getAllAlbumsBySearchstring(
const
Library::Filter
& filter,
AlbumList
& albums)
const
= 0;
134
135
[[nodiscard]]
virtual
int
getTrackCount()
const
= 0;
136
virtual
void
getAllTracks(
MetaDataList
& tracks)
const
= 0;
137
virtual
void
getAllTracks(
const
QStringList& paths,
MetaDataList
& tracks)
const
= 0;
138
virtual
void
139
getAllTracksByArtist(
const
IdList& artistIds,
MetaDataList
& tracks,
const
Library::Filter
& filter)
const
= 0;
140
virtual
void
141
getAllTracksByAlbum(
const
IdList& albumIds,
MetaDataList
& tracks,
const
Library::Filter
& filter)
const
= 0;
142
virtual
void
getAllTracksBySearchstring(
const
Library::Filter
& filter,
MetaDataList
& tracks)
const
= 0;
143
virtual
void
getAllTracksByPath(
const
QStringList& paths,
MetaDataList
& tracks)
const
= 0;
144
145
virtual
void
getTrackById(TrackID trackId,
MetaData
& md)
const
= 0;
146
virtual
void
getAlbumById(AlbumId albumId,
Album
& album)
const
= 0;
147
virtual
void
getArtistById(ArtistId artistId,
Artist
& artist)
const
= 0;
148
149
void
replaceAlbum(
int
index,
const
Album
& album);
150
void
replaceTrack(
int
index,
const
MetaData
& track);
151
152
void
prepareTracks();
153
void
prepareAlbums();
154
void
prepareArtists();
155
156
private
:
157
void
changeTrackSelection(
const
IndexSet& indexes);
158
void
changeArtistSelection(
const
IndexSet& indexes);
159
void
changeAlbumSelection(
const
IndexSet& indexes,
bool
ignore_artists =
false
);
160
};
161
162
#endif
// ABSTRACTLIBRARY_H
AlbumList
Definition
Album.h:91
Album
Definition
Album.h:37
ArtistList
Definition
Artist.h:61
Artist
Definition
Artist.h:34
Genre
Definition
Genre.h:31
Gui::ExtensionSet
Collection of extensions. Handles extensions currently active or inactive and the extension toolbar.
Definition
ExtensionSet.h:33
LibraryPlaylistInteractor
Definition
LibraryPlaylistInteractor.h:34
Library::Filter
Definition
Filter.h:34
MetaDataList
Definition
MetaDataList.h:34
MetaData
Definition
MetaData.h:43
Util::Set
A set structure. Inherited from std::set with some useful methods. For integer and String this set is...
Definition
Set.h:37
Library::Sortings
Definition
Sorting.h:32
Generated on
for Sayonara Player by
1.17.0