feat: add playlist browse/search discovery and follow controls
Some checks failed
Build for Windows / build-windows (push) Has been cancelled
Some checks failed
Build for Windows / build-windows (push) Has been cancelled
This commit is contained in:
@@ -4,8 +4,14 @@
|
||||
#include "albumlistview.hpp"
|
||||
|
||||
#include <QComboBox>
|
||||
#include <QLabel>
|
||||
#include <QLineEdit>
|
||||
#include <QJsonArray>
|
||||
#include <QJsonObject>
|
||||
#include <QSet>
|
||||
#include <QPushButton>
|
||||
#include <QStackedWidget>
|
||||
#include <QTreeWidget>
|
||||
#include <QWidget>
|
||||
|
||||
class GenreBrowserView : public QWidget
|
||||
@@ -13,24 +19,57 @@ class GenreBrowserView : public QWidget
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
enum class BrowseMode {
|
||||
Genres,
|
||||
PlaylistSearch,
|
||||
};
|
||||
|
||||
explicit GenreBrowserView(QobuzBackend *backend, QWidget *parent = nullptr);
|
||||
|
||||
void ensureGenresLoaded();
|
||||
void setBrowseMode(BrowseMode mode);
|
||||
|
||||
signals:
|
||||
void albumSelected(const QString &albumId);
|
||||
void artistSelected(qint64 artistId);
|
||||
void playlistSelected(qint64 playlistId);
|
||||
|
||||
private slots:
|
||||
void onGenresLoaded(const QJsonObject &result);
|
||||
void onFeaturedAlbumsLoaded(const QJsonObject &result);
|
||||
void onFeaturedPlaylistsLoaded(const QJsonObject &result);
|
||||
void onDiscoverPlaylistsLoaded(const QJsonObject &result);
|
||||
void onPlaylistSearchLoaded(const QJsonObject &result);
|
||||
void onSelectionChanged();
|
||||
void onAlbumContextMenu(const QPoint &pos);
|
||||
void onPlaylistActivated(QTreeWidgetItem *item, int column);
|
||||
void onPlaylistContextMenu(const QPoint &pos);
|
||||
|
||||
private:
|
||||
QobuzBackend *m_backend = nullptr;
|
||||
QLabel *m_browseLabel = nullptr;
|
||||
QLabel *m_genreLabel = nullptr;
|
||||
QLabel *m_typeLabel = nullptr;
|
||||
QLabel *m_playlistSearchLabel = nullptr;
|
||||
QWidget *m_gapAfterKind = nullptr;
|
||||
QWidget *m_gapAfterGenre = nullptr;
|
||||
QComboBox *m_kindCombo = nullptr;
|
||||
QComboBox *m_genreCombo = nullptr;
|
||||
QComboBox *m_typeCombo = nullptr;
|
||||
QLineEdit *m_playlistSearchBox = nullptr;
|
||||
QPushButton *m_playlistSearchBtn = nullptr;
|
||||
QStackedWidget *m_resultsStack = nullptr;
|
||||
AlbumListView *m_albumList = nullptr;
|
||||
QTreeWidget *m_playlistList = nullptr;
|
||||
BrowseMode m_mode = BrowseMode::Genres;
|
||||
bool m_genresLoaded = false;
|
||||
int m_lastGenreComboIndex = 0;
|
||||
QSet<qint64> m_multiGenreIds;
|
||||
|
||||
void refreshModeUi();
|
||||
void refreshGenreTypeChoices();
|
||||
QString currentGenreIds() const;
|
||||
bool chooseMultiGenres();
|
||||
void updateMultiGenreLabel();
|
||||
void setPlaylistItems(const QJsonArray &items);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user