104 lines
3.7 KiB
Plaintext
104 lines
3.7 KiB
Plaintext
class LibraryBackend : QObject {
|
|
|
|
%TypeHeaderCode
|
|
#include "library/librarybackend.h"
|
|
%End
|
|
|
|
public:
|
|
struct Album {
|
|
Album();
|
|
Album(const QString& _artist, const QString& _album_name,
|
|
const QString& _art_automatic, const QString& _art_manual,
|
|
const QString& _first_filename);
|
|
|
|
QString artist;
|
|
QString album_name;
|
|
|
|
QString art_automatic;
|
|
QString art_manual;
|
|
QString first_filename;
|
|
};
|
|
typedef QList<LibraryBackend::Album> AlbumList;
|
|
|
|
QString songs_table() const;
|
|
QString dirs_table() const;
|
|
QString subdirs_table() const;
|
|
|
|
// Get a list of directories in the library. Emits DirectoriesDiscovered.
|
|
void LoadDirectoriesAsync();
|
|
|
|
// Counts the songs in the library. Emits TotalSongCountUpdated
|
|
void UpdateTotalSongCountAsync();
|
|
|
|
SongList FindSongsInDirectory(int id);
|
|
SubdirectoryList SubdirsInDirectory(int id);
|
|
DirectoryList GetAllDirectories();
|
|
void ChangeDirPath(int id, const QString& new_path);
|
|
|
|
QStringList GetAll(const QString& column, const QueryOptions& opt = QueryOptions());
|
|
QStringList GetAllArtists(const QueryOptions& opt = QueryOptions());
|
|
QStringList GetAllArtistsWithAlbums(const QueryOptions& opt = QueryOptions());
|
|
SongList GetSongs(const QString& artist, const QString& album, const QueryOptions& opt = QueryOptions());
|
|
|
|
bool HasCompilations(const QueryOptions& opt = QueryOptions());
|
|
SongList GetCompilationSongs(const QString& album, const QueryOptions& opt = QueryOptions());
|
|
|
|
LibraryBackend::AlbumList GetAllAlbums(const QueryOptions& opt = QueryOptions());
|
|
LibraryBackend::AlbumList GetAlbumsByArtist(const QString& artist, const QueryOptions& opt = QueryOptions());
|
|
LibraryBackend::AlbumList GetCompilationAlbums(const QueryOptions& opt = QueryOptions());
|
|
|
|
void UpdateManualAlbumArtAsync(const QString& artist, const QString& album, const QString& art);
|
|
LibraryBackend::Album GetAlbumArt(const QString& artist, const QString& album);
|
|
|
|
Song GetSongById(int id);
|
|
SongList GetSongsById(const QList<int>& ids);
|
|
SongList GetSongsById(const QStringList& ids);
|
|
SongList GetSongsByForeignId(const QStringList& ids, const QString& table,
|
|
const QString& column);
|
|
|
|
SongList GetSongsByFilename(const QString& filename);
|
|
Song GetSongByFilename(const QString& filename, int beginning);
|
|
|
|
void AddDirectory(const QString& path);
|
|
void RemoveDirectory(const Directory& dir);
|
|
|
|
bool ExecQuery(LibraryQuery* q);
|
|
// SongList FindSongs(const smart_playlists::Search& search);
|
|
|
|
void IncrementPlayCountAsync(int id);
|
|
void IncrementSkipCountAsync(int id, float progress);
|
|
void ResetStatisticsAsync(int id);
|
|
void UpdateSongRatingAsync(int id, float rating);
|
|
|
|
void DeleteAll();
|
|
|
|
public slots:
|
|
void LoadDirectories();
|
|
void UpdateTotalSongCount();
|
|
void AddOrUpdateSongs(const SongList& songs);
|
|
void UpdateMTimesOnly(const SongList& songs);
|
|
void DeleteSongs(const SongList& songs);
|
|
void AddOrUpdateSubdirs(const SubdirectoryList& subdirs);
|
|
void UpdateCompilations();
|
|
void UpdateManualAlbumArt(const QString& artist, const QString& album, const QString& art);
|
|
void ForceCompilation(const QString& artist, const QString& album, bool on);
|
|
void IncrementPlayCount(int id);
|
|
void IncrementSkipCount(int id, float progress);
|
|
void ResetStatistics(int id);
|
|
void UpdateSongRating(int id, float rating);
|
|
|
|
signals:
|
|
void DirectoryDiscovered(const Directory& dir, const SubdirectoryList& subdirs);
|
|
void DirectoryDeleted(const Directory& dir);
|
|
|
|
void SongsDiscovered(const SongList& songs);
|
|
void SongsDeleted(const SongList& songs);
|
|
void SongsStatisticsChanged(const SongList& songs);
|
|
void DatabaseReset();
|
|
|
|
void TotalSongCountUpdated(int total);
|
|
|
|
private:
|
|
LibraryBackend();
|
|
};
|