feat: context menus on search panel, track info dialog, separate shuffle buttons

- Add right-click context menus to search panel tracks (play, queue,
  favorites, playlist, go to album/artist, track info) and albums
  (open, favorite, go to artist)
- Add "Track info..." dialog showing metadata (title, performer,
  composer, album, quality, hi-res status) — available everywhere:
  playlists, albums, favorites, search results
- Split artist page shuffle into "Shuffle" (popular tracks) and
  "Shuffle All" (deep shuffle across all releases)
- Remove magnifying glass emoji from welcome text

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
joren
2026-03-25 23:57:42 +01:00
parent a21d0c8a33
commit 6c8d032ce9
8 changed files with 275 additions and 25 deletions

View File

@@ -54,7 +54,7 @@ MainWindow::MainWindow(QobuzBackend *backend, QWidget *parent)
addDockWidget(Qt::RightDockWidgetArea, m_queuePanel);
// ---- Search side panel (right) ----
m_sidePanel = new SidePanel::View(m_backend, this);
m_sidePanel = new SidePanel::View(m_backend, m_queue, this);
m_sidePanel->hide();
addDockWidget(Qt::RightDockWidgetArea, m_sidePanel);
@@ -155,6 +155,11 @@ MainWindow::MainWindow(QobuzBackend *backend, QWidget *parent)
this, &MainWindow::onSearchArtistSelected);
connect(m_sidePanel, &SidePanel::View::trackPlayRequested,
this, &MainWindow::onPlayTrackRequested);
connect(m_sidePanel, &SidePanel::View::addToPlaylistRequested,
this, [this](qint64 trackId, qint64 playlistId) {
m_backend->addTrackToPlaylist(playlistId, trackId);
statusBar()->showMessage(tr("Adding track to playlist..."), 3000);
});
// ---- Album / artist navigation from content views ----
connect(m_content, &MainContent::albumRequested,
@@ -410,5 +415,6 @@ void MainWindow::onUserPlaylistsChanged(const QVector<QPair<qint64, QString>> &p
{
m_userPlaylists = playlists;
m_content->tracksList()->setUserPlaylists(playlists);
m_sidePanel->searchTab()->setUserPlaylists(playlists);
}