feat: pagination, back/forward nav, context menu, artist fav, image fix

**Artist portrait**
- Fix CDN URL: images.portrait.{hash,format} →
  https://static.qobuz.com/images/artists/covers/large/{hash}.{format}

**Section alignment**
- Qt::ToolButtonTextOnly on all section toggles so text is truly left-aligned

**Auth 401 race condition**
- qobuz_backend_set_token now uses blocking_lock() instead of spawning an
  async task, guaranteeing the token is set before any subsequent API call

**Pagination (infinite scroll)**
- Release sections load 50 at a time (was 500)
- ArtistSection tracks has_more + loaded count; scrolling to the bottom
  emits loadMoreRequested → ArtistView calls getArtistReleases(offset=N)
- AlbumListView gains addAlbums() for append; setReleases routes to
  setAlbums (offset=0) or appendAlbums (offset>0)

**Back/Forward navigation**
- MainToolBar exposes Back/Forward QActions (go-previous/go-next icons)
- MainWindow keeps a NavPage vector + index; pushNav() on every album/artist
  navigation; goBack/goForward re-navigate without pushing history

**Context menu on now-playing label**
- Right-click on track label in toolbar → "Go to Album" / "Go to Artist"
- MainToolBar stores current track; emits albumRequested/artistRequested
  signals wired to MainWindow's existing handlers

**Artist favourites button**
- ♡ Favourite / ♥ Favourited toggle in artist header
- Calls new addFavArtist / removeFavArtist (Rust + Qt backend wiring)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
joren
2026-03-25 18:25:12 +01:00
parent 963c9ad232
commit 3e96b6d7a8
157 changed files with 64124 additions and 84 deletions

View File

@@ -0,0 +1,22 @@
# Consider dependencies only in project.
set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF)
# The set of languages for which implicit dependencies are needed:
set(CMAKE_DEPENDS_LANGUAGES
)
# The set of dependency files which are needed:
set(CMAKE_DEPENDS_DEPENDENCY_FILES
)
# Targets to which this target links which contain Fortran sources.
set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES
)
# Targets to which this target links which contain Fortran sources.
set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES
)
# Fortran module output directory.
set(CMAKE_Fortran_TARGET_MODULE_DIR "")

View File

@@ -0,0 +1,86 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 4.2
# Delete rule output on recipe failure.
.DELETE_ON_ERROR:
#=============================================================================
# Special targets provided by cmake.
# Disable implicit rules so canonical targets will work.
.SUFFIXES:
# Disable VCS-based implicit rules.
% : %,v
# Disable VCS-based implicit rules.
% : RCS/%
# Disable VCS-based implicit rules.
% : RCS/%,v
# Disable VCS-based implicit rules.
% : SCCS/s.%
# Disable VCS-based implicit rules.
% : s.%
.SUFFIXES: .hpux_make_needs_suffix_list
# Command-line flag to silence nested $(MAKE).
$(VERBOSE)MAKESILENT = -s
#Suppress display of executed commands.
$(VERBOSE).SILENT:
# A target that is always out of date.
cmake_force:
.PHONY : cmake_force
#=============================================================================
# Set environment variables for the build.
# The shell in which to execute make rules.
SHELL = /bin/sh
# The CMake executable.
CMAKE_COMMAND = /usr/bin/cmake
# The command to remove a file.
RM = /usr/bin/cmake -E rm -f
# Escaping for special characters.
EQUALS = =
# The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = /home/joren/dev/qobuz-qt
# The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = /home/joren/dev/qobuz-qt/build-viz
# Utility rule file for qobuz-qt_autogen_timestamp_deps.
# Include any custom commands dependencies for this target.
include CMakeFiles/qobuz-qt_autogen_timestamp_deps.dir/compiler_depend.make
# Include the progress variables for this target.
include CMakeFiles/qobuz-qt_autogen_timestamp_deps.dir/progress.make
CMakeFiles/qobuz-qt_autogen_timestamp_deps.dir/codegen:
.PHONY : CMakeFiles/qobuz-qt_autogen_timestamp_deps.dir/codegen
qobuz-qt_autogen_timestamp_deps: CMakeFiles/qobuz-qt_autogen_timestamp_deps.dir/build.make
.PHONY : qobuz-qt_autogen_timestamp_deps
# Rule to build all files generated by this target.
CMakeFiles/qobuz-qt_autogen_timestamp_deps.dir/build: qobuz-qt_autogen_timestamp_deps
.PHONY : CMakeFiles/qobuz-qt_autogen_timestamp_deps.dir/build
CMakeFiles/qobuz-qt_autogen_timestamp_deps.dir/clean:
$(CMAKE_COMMAND) -P CMakeFiles/qobuz-qt_autogen_timestamp_deps.dir/cmake_clean.cmake
.PHONY : CMakeFiles/qobuz-qt_autogen_timestamp_deps.dir/clean
CMakeFiles/qobuz-qt_autogen_timestamp_deps.dir/depend:
cd /home/joren/dev/qobuz-qt/build-viz && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/joren/dev/qobuz-qt /home/joren/dev/qobuz-qt /home/joren/dev/qobuz-qt/build-viz /home/joren/dev/qobuz-qt/build-viz /home/joren/dev/qobuz-qt/build-viz/CMakeFiles/qobuz-qt_autogen_timestamp_deps.dir/DependInfo.cmake "--color=$(COLOR)" qobuz-qt_autogen_timestamp_deps
.PHONY : CMakeFiles/qobuz-qt_autogen_timestamp_deps.dir/depend

View File

@@ -0,0 +1,5 @@
# Per-language clean rules from dependency scanning.
foreach(lang )
include(CMakeFiles/qobuz-qt_autogen_timestamp_deps.dir/cmake_clean_${lang}.cmake OPTIONAL)
endforeach()

View File

@@ -0,0 +1,2 @@
# Empty custom commands generated dependencies file for qobuz-qt_autogen_timestamp_deps.
# This may be replaced when dependencies are built.

View File

@@ -0,0 +1,2 @@
# CMAKE generated file: DO NOT EDIT!
# Timestamp file for custom commands dependencies management for qobuz-qt_autogen_timestamp_deps.