feat: album list, artist list, and artist detail views

- Fav albums: now shows a sortable list (title/artist/year/tracks);
  double-click opens the album
- Fav artists: now shows a sortable list; double-click opens the artist
- Artist detail page: name, biography summary, and their album list
- Rust ArtistDto gains albums field; get_artist fixed to extra=albums only
- Volume popup minimum width set so "100%" label is never clipped

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
joren
2026-03-24 00:59:02 +01:00
parent 2436b53697
commit d5dedacc36
11 changed files with 255 additions and 16 deletions

View File

@@ -3,6 +3,9 @@
#include "../list/tracks.hpp"
#include "../backend/qobuzbackend.hpp"
#include "../playqueue.hpp"
#include "albumlistview.hpp"
#include "artistlistview.hpp"
#include "artistview.hpp"
#include <QWidget>
#include <QLabel>
@@ -24,10 +27,20 @@ public:
void showPlaylist(const QJsonObject &playlist);
void showFavTracks(const QJsonObject &result);
void showSearchTracks(const QJsonArray &tracks);
void showFavAlbums(const QJsonObject &result);
void showFavArtists(const QJsonObject &result);
void showArtist(const QJsonObject &artist);
signals:
void albumRequested(const QString &albumId);
void artistRequested(qint64 artistId);
private:
QobuzBackend *m_backend = nullptr;
QStackedWidget *m_stack = nullptr;
QLabel *m_welcome = nullptr;
List::Tracks *m_tracks = nullptr;
QobuzBackend *m_backend = nullptr;
QStackedWidget *m_stack = nullptr;
QLabel *m_welcome = nullptr;
List::Tracks *m_tracks = nullptr;
AlbumListView *m_albumList = nullptr;
ArtistListView *m_artistList = nullptr;
ArtistView *m_artistView = nullptr;
};