Files
qobuz-qt/src/view/maincontent.hpp
joren 8088412d4b feat: album/playlist header and playlist ownership filtering
- Add TrackContextHeader widget: shows album art (fetched via NAM),
  title, subtitle (artist/description), and metadata (year · tracks · duration)
  above the track list when an album or playlist is opened
- Hide header for favorite tracks and search results
- Store user ID in AppSettings on login
- Only show "Delete playlist" for playlists the user owns
- "Add to playlist" submenu only lists owned playlists
- "Remove from this playlist" only appears when viewing an owned playlist

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-24 11:34:04 +01:00

49 lines
1.4 KiB
C++

#pragma once
#include "../list/tracks.hpp"
#include "../backend/qobuzbackend.hpp"
#include "../playqueue.hpp"
#include "albumlistview.hpp"
#include "artistlistview.hpp"
#include "artistview.hpp"
#include "trackcontextheader.hpp"
#include <QWidget>
#include <QLabel>
#include <QStackedWidget>
#include <QJsonObject>
#include <QJsonArray>
class MainContent : public QWidget
{
Q_OBJECT
public:
explicit MainContent(QobuzBackend *backend, PlayQueue *queue, QWidget *parent = nullptr);
List::Tracks *tracksList() const { return m_tracks; }
void showWelcome();
void showAlbum(const QJsonObject &album);
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;
TrackContextHeader *m_header = nullptr;
AlbumListView *m_albumList = nullptr;
ArtistListView *m_artistList = nullptr;
ArtistView *m_artistView = nullptr;
};