feat: add playlist browse/search discovery and follow controls
Some checks failed
Build for Windows / build-windows (push) Has been cancelled

This commit is contained in:
joren
2026-03-31 00:23:56 +02:00
parent 07d6c8a88d
commit 96bb21adff
13 changed files with 833 additions and 26 deletions

View File

@@ -41,6 +41,13 @@ MainContent::MainContent(QobuzBackend *backend, PlayQueue *queue, QWidget *paren
const qint64 id = m_header->artistId();
if (id > 0) emit artistRequested(id);
});
QObject::connect(m_header->followButton(), &QPushButton::clicked,
[this] {
const qint64 id = m_header->playlistId();
if (id <= 0 || m_header->playlistOwned())
return;
emit playlistFollowToggled(id, !m_header->playlistFollowed());
});
m_albumList = new AlbumListView(this);
m_artistList = new ArtistListView(this);
@@ -62,6 +69,7 @@ MainContent::MainContent(QobuzBackend *backend, PlayQueue *queue, QWidget *paren
connect(m_artistView, &ArtistView::playTrackRequested, this, &MainContent::playTrackRequested);
connect(m_genreBrowser, &GenreBrowserView::albumSelected, this, &MainContent::albumRequested);
connect(m_genreBrowser, &GenreBrowserView::artistSelected, this, &MainContent::artistRequested);
connect(m_genreBrowser, &GenreBrowserView::playlistSelected, this, &MainContent::playlistRequested);
}
void MainContent::showWelcome() { m_stack->setCurrentIndex(0); }
@@ -73,9 +81,9 @@ void MainContent::showAlbum(const QJsonObject &album)
m_stack->setCurrentIndex(1);
}
void MainContent::showPlaylist(const QJsonObject &playlist)
void MainContent::showPlaylist(const QJsonObject &playlist, bool isFollowed, bool isOwned)
{
m_header->setPlaylist(playlist);
m_header->setPlaylist(playlist, isFollowed, isOwned);
m_tracks->loadPlaylist(playlist);
m_stack->setCurrentIndex(1);
}
@@ -130,5 +138,18 @@ void MainContent::onDeepShuffleTracks(const QJsonArray &tracks)
void MainContent::showGenreBrowser()
{
m_genreBrowser->ensureGenresLoaded();
m_genreBrowser->setBrowseMode(GenreBrowserView::BrowseMode::Genres);
m_stack->setCurrentIndex(5);
}
void MainContent::showPlaylistBrowser()
{
m_genreBrowser->ensureGenresLoaded();
m_genreBrowser->setBrowseMode(GenreBrowserView::BrowseMode::PlaylistSearch);
m_stack->setCurrentIndex(5);
}
void MainContent::setCurrentPlaylistFollowed(bool followed)
{
m_header->setPlaylistFollowed(followed);
}