feat(qt): opt-in "feat." featured artists on the track-row artist line

Settings > Appearance > Player & Visuals. Qobuz rows only; the artist line
stays a single text so the artist link keeps its hit area.

cc
This commit is contained in:
vicrodh committed 2026-09-13 03:50:10 -06:00
1 parent 30c2208a03
commit c2c8d7de57
11 files changed
+96 -1

No files matched your search

@@ -7487,3 +7487,11 @@ msgstr "Diese Optionen gelten nicht, solange Nur Streaming aktiviert ist. Deakti
msgid "Mimics official clients’ streaming behavior with lower memory usage. Skips the playback cache and its protection against network interruptions: QBZ’s cache keeps upcoming audio ready for more reliable playback and instant replay."
msgstr "Entspricht dem Streaming-Verhalten der offiziellen Clients bei geringerem Speicherbedarf. Umgeht den Wiedergabe-Cache und seinen Schutz vor Netzwerkunterbrechungen: Der QBZ-Cache hält kommende Audiodaten für zuverlässigere Wiedergabe und sofortiges erneutes Abspielen bereit."
#: qbz-qt/qml/settings/AppearanceSettings.qml
msgid "Show featured artists in track rows"
msgstr "Gastkünstler in Titelzeilen anzeigen"
#: qbz-qt/qml/settings/AppearanceSettings.qml
msgid "Append \"feat. …\" with the track's featured performers to the artist line of Qobuz track rows. Off by default."
msgstr "Hängt \"feat. …\" mit den Gastinterpreten des Titels an die Künstlerzeile der Qobuz-Titelzeilen an. Standardmäßig aus."
@@ -3113,3 +3113,11 @@ msgstr "These options do not apply while Streaming only is enabled. Turn it off
msgid "Mimics official clients’ streaming behavior with lower memory usage. Skips the playback cache and its protection against network interruptions: QBZ’s cache keeps upcoming audio ready for more reliable playback and instant replay."
msgstr "Mimics official clients’ streaming behavior with lower memory usage. Skips the playback cache and its protection against network interruptions: QBZ’s cache keeps upcoming audio ready for more reliable playback and instant replay."
#: qbz-qt/qml/settings/AppearanceSettings.qml
msgid "Show featured artists in track rows"
msgstr "Show featured artists in track rows"
#: qbz-qt/qml/settings/AppearanceSettings.qml
msgid "Append \"feat. …\" with the track's featured performers to the artist line of Qobuz track rows. Off by default."
msgstr "Append \"feat. …\" with the track's featured performers to the artist line of Qobuz track rows. Off by default."
@@ -7493,3 +7493,11 @@ msgstr "Estas opciones no se aplican mientras Solo streaming esté activado. Des
msgid "Mimics official clients’ streaming behavior with lower memory usage. Skips the playback cache and its protection against network interruptions: QBZ’s cache keeps upcoming audio ready for more reliable playback and instant replay."
msgstr "Imita el comportamiento de streaming de los clientes oficiales y usa menos memoria. Omite la caché de reproducción y su protección ante interrupciones de red: la caché de QBZ prepara el audio siguiente para una reproducción más fiable y permite volver a escuchar al instante."
#: qbz-qt/qml/settings/AppearanceSettings.qml
msgid "Show featured artists in track rows"
msgstr "Mostrar artistas invitados en las filas de pistas"
#: qbz-qt/qml/settings/AppearanceSettings.qml
msgid "Append \"feat. …\" with the track's featured performers to the artist line of Qobuz track rows. Off by default."
msgstr "Añade \"feat. …\" con los intérpretes invitados de la pista a la línea de artista en las filas de pistas de Qobuz. Desactivado por defecto."
@@ -7485,3 +7485,11 @@ msgstr "Ces options ne s’appliquent pas lorsque Streaming uniquement est activ
msgid "Mimics official clients’ streaming behavior with lower memory usage. Skips the playback cache and its protection against network interruptions: QBZ’s cache keeps upcoming audio ready for more reliable playback and instant replay."
msgstr "Reproduit le comportement de streaming des clients officiels en utilisant moins de mémoire. Désactive le cache de lecture et sa protection contre les interruptions réseau : le cache de QBZ prépare les prochains contenus audio pour une lecture plus fiable et une réécoute immédiate."
#: qbz-qt/qml/settings/AppearanceSettings.qml
msgid "Show featured artists in track rows"
msgstr "Afficher les artistes invités dans les lignes de piste"
#: qbz-qt/qml/settings/AppearanceSettings.qml
msgid "Append \"feat. …\" with the track's featured performers to the artist line of Qobuz track rows. Off by default."
msgstr "Ajoute « feat. … » avec les interprètes invités du morceau sur la ligne d'artiste des lignes de piste Qobuz. Désactivé par défaut."
@@ -7468,3 +7468,11 @@ msgstr "「ストリーミングのみ」が有効な間、これらの設定は
msgid "Mimics official clients’ streaming behavior with lower memory usage. Skips the playback cache and its protection against network interruptions: QBZ’s cache keeps upcoming audio ready for more reliable playback and instant replay."
msgstr "公式クライアントと同様のストリーミング動作でメモリ使用量を抑えます。再生キャッシュとそのネットワーク中断への保護を無効にします。QBZのキャッシュは次の音声を事前に用意し、より安定した再生と即座のリプレイを可能にします。"
#: qbz-qt/qml/settings/AppearanceSettings.qml
msgid "Show featured artists in track rows"
msgstr "トラック行にフィーチャリングアーティストを表示"
#: qbz-qt/qml/settings/AppearanceSettings.qml
msgid "Append \"feat. …\" with the track's featured performers to the artist line of Qobuz track rows. Off by default."
msgstr "Qobuz のトラック行のアーティスト欄に、フィーチャリングされた演奏者を「feat. …」として追加します。既定ではオフです。"
@@ -7475,3 +7475,11 @@ msgstr "Deze opties zijn niet van toepassing zolang Alleen streamen is ingeschak
msgid "Mimics official clients’ streaming behavior with lower memory usage. Skips the playback cache and its protection against network interruptions: QBZ’s cache keeps upcoming audio ready for more reliable playback and instant replay."
msgstr "Bootst het streaminggedrag van de officiële clients na met minder geheugengebruik. Slaat de afspeelcache en de bescherming tegen netwerkonderbrekingen over: de cache van QBZ houdt komende audio gereed voor betrouwbaarder afspelen en direct opnieuw afspelen."
#: qbz-qt/qml/settings/AppearanceSettings.qml
msgid "Show featured artists in track rows"
msgstr "Gastartiesten in trackregels tonen"
#: qbz-qt/qml/settings/AppearanceSettings.qml
msgid "Append \"feat. …\" with the track's featured performers to the artist line of Qobuz track rows. Off by default."
msgstr "Voegt \"feat. …\" met de gastartiesten van de track toe aan de artiestregel van Qobuz-trackregels. Standaard uit."
@@ -7485,3 +7485,11 @@ msgstr "Estas opções não se aplicam enquanto Apenas streaming estiver ativado
msgid "Mimics official clients’ streaming behavior with lower memory usage. Skips the playback cache and its protection against network interruptions: QBZ’s cache keeps upcoming audio ready for more reliable playback and instant replay."
msgstr "Reproduz o comportamento de streaming dos clientes oficiais com menor uso de memória. Ignora o cache de reprodução e sua proteção contra interrupções de rede: o cache do QBZ prepara o próximo áudio para uma reprodução mais confiável e repetição imediata."
#: qbz-qt/qml/settings/AppearanceSettings.qml
msgid "Show featured artists in track rows"
msgstr "Mostrar artistas convidados nas linhas de faixa"
#: qbz-qt/qml/settings/AppearanceSettings.qml
msgid "Append \"feat. …\" with the track's featured performers to the artist line of Qobuz track rows. Off by default."
msgstr "Acrescenta \"feat. …\" com os intérpretes convidados da faixa à linha do artista nas linhas de faixa do Qobuz. Desligado por padrão."
@@ -7506,3 +7506,11 @@ msgstr "Эти параметры не применяются, пока вклю
msgid "Mimics official clients’ streaming behavior with lower memory usage. Skips the playback cache and its protection against network interruptions: QBZ’s cache keeps upcoming audio ready for more reliable playback and instant replay."
msgstr "Повторяет поведение потокового воспроизведения официальных клиентов, используя меньше памяти. Отключает кэш воспроизведения и его защиту от перебоев сети: кэш QBZ заранее подготавливает аудио для более надёжного воспроизведения и мгновенного повтора."
#: qbz-qt/qml/settings/AppearanceSettings.qml
msgid "Show featured artists in track rows"
msgstr "Показывать приглашённых артистов в строках треков"
#: qbz-qt/qml/settings/AppearanceSettings.qml
msgid "Append \"feat. …\" with the track's featured performers to the artist line of Qobuz track rows. Off by default."
msgstr "Добавляет «feat. …» с приглашёнными исполнителями трека к строке артиста в строках треков Qobuz. По умолчанию выключено."
+17 -1
View File
@@ -507,6 +507,18 @@ Rectangle {
}
return false
}
// "Show featured artists in track rows" (AppearanceSettings). Same read
// as playIndicatorAnim: the settings document republishes on every
// settings write, which is the only time this re-evaluates.
readonly property bool showFeaturedArtists: {
var raw = QbzBridge.settingsJson
if (raw && raw.length > 2) {
try {
return JSON.parse(raw).showFeaturedArtists === true
} catch (e) { /* fall through */ }
}
return false
}
// The animated eq bars carry the playing state in the play cell when the
// pref is ON (TrackPlayCell.slint:99-100 `show-bars`): only while this
// row's track is actually PLAYING, at rest (hover reveals the pause
@@ -968,7 +980,11 @@ Rectangle {
Text {
width: parent.width
visible: (root.item.artist || "") !== ""
text: root.item.artist || ""
// "feat." is a music convention, not a translated word. Local /
// media-server rows carry no `featured` and stay as they are.
text: (root.item.artist || "")
+ (root.showFeaturedArtists && (root.item.featured || "") !== ""
? " feat. " + root.item.featured : "")
color: root.artistLink && root.item.artistId && artistLinkArea.containsMouse
? theme.textPrimary : theme.textMuted
font.pixelSize: 12
@@ -326,6 +326,14 @@ Column {
onToggled: function (v) { QbzBridge.settingsBool("play-indicator-animation", v) }
}
}
SettingRow { kioskHost: root.kioskHost;
label: QbzSession.tr("Show featured artists in track rows", QbzSession.trRev)
description: QbzSession.tr("Append \"feat. …\" with the track's featured performers to the artist line of Qobuz track rows. Off by default.", QbzSession.trRev)
QbzToggle { kioskHost: root.kioskHost;
checked: root.doc.showFeaturedArtists === true
onToggled: function (v) { QbzBridge.settingsBool("show-featured-artists", v) }
}
}
SettingRow { kioskHost: root.kioskHost;
// Parked for a later visual pass. Keep the preference wiring intact so
// restoring the experiment does not require a settings migration.
+7
View File
@@ -2196,6 +2196,8 @@ pub struct SettingsDoc {
pub library_track_artwork: bool,
#[serde(rename = "localLibraryTrackArtwork")]
pub local_library_track_artwork: bool,
#[serde(rename = "showFeaturedArtists")]
pub show_featured_artists: bool,
#[serde(rename = "playIndicatorAnimation")]
pub play_indicator_animation: bool,
#[serde(rename = "seekbarWaveform")]
@@ -2739,6 +2741,7 @@ pub async fn publish_snapshot() {
library_track_artwork: pref_bool("library_track_artwork", false),
local_library_track_artwork: pref_bool("local_library_track_artwork", false),
play_indicator_animation: pref_bool("play_indicator_animation", false),
show_featured_artists: pref_bool("show_featured_artists", false),
seekbar_waveform: seekbar_waveform(),
invert_swipe_navigation: pref_bool("invert_swipe_navigation", false),
in_app_toasts: pref_bool("in_app_toasts", true),
@@ -3633,6 +3636,10 @@ pub async fn settings_bool(runtime: &Arc<AppRuntime<LoggingAdapter>>, key: &str,
crate::local_album_actions::publish_track_artwork();
Ok(Apply::None)
}
"show-featured-artists" => {
save_pref("show_featured_artists", serde_json::json!(value));
Ok(Apply::None)
}
"play-indicator-animation" => {
save_pref("play_indicator_animation", serde_json::json!(value));
Ok(Apply::None)