Mehrere Folgen ankreuzen und in einem Zug laden

Je Folge einzeln zu tippen ist bei einer halb gesehenen Staffel die falsche
Arbeit. „Auswählen" im Kopf der Folgenliste schaltet um: jede Zeile bekommt
einen Kreis, unten erscheint „N Folgen laden".

**Der Knopf steht bei dem, was er auswählt** — in der Zeile mit „Folgen",
nicht oben in der Werkzeugleiste. Dort wäre er weiter von der Liste entfernt
als von allem anderen auf der Seite.

**Nur bei Folgen.** Eine Staffelliste zeigt ihn nicht; für ganze Staffeln
gibt es den Knopf oben im Kopf.

**Die Qualität wird einmal gefragt, nicht je Folge.** Dafür werden die
Dateiangaben **einer** Folge nachgeholt — die Folgen einer Staffel sind in
derselben Fassung kodiert, und zwanzig Anfragen für eine Frage, die einmal
gestellt wird, wären zwanzig zu viel. Geladen wird danach jede Folge
einzeln; dort zählt wieder ihre eigene Größe.

**Was zur Wahl steht, steht jetzt an einer Stelle.** Die beiden Rechnungen
— welche Stufen angeboten werden dürfen und wie sie beschriftet sind —
lagen im Knopf einer einzelnen Folge. Mit der Leiste gäbe es sie zweimal,
und die zweite Kopie wäre die mit dem Fehler. Sie sind jetzt
`DownloadQualityChoice`, ohne eine Zeile SwiftUI darin.

`DownloadService.downloadAll` und der neue Weg teilen sich dieselbe
Schleife; „alle Folgen" ist nur noch „diese Folgen" mit einer anderen Liste.

Im Simulator geprüft: Serienseite ohne Knopf, Staffelseite mit; zwei Folgen
angekreuzt → „2 Folgen laden". iOS und tvOS bauen, 489 Tests grün.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-10-02 21:57:53 +02:00
co-authored by Claude Opus 5
parent 915bdcd277
commit 261cdee2f2
5 changed files with 378 additions and 95 deletions
+73
View File
@@ -631,6 +631,24 @@
}
}
},
"detail.loadSelected %lld": {
"comment": "Die angekreuzten Folgen laden",
"extractionState": "manual",
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "%lld Folgen laden"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Download %lld episodes"
}
}
}
},
"detail.playFromStart": {
"extractionState": "stale",
"localizations": {
@@ -665,6 +683,60 @@
}
}
},
"detail.select": {
"comment": "Mehrere Folgen auswählen",
"extractionState": "manual",
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Auswählen"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "Select"
}
}
}
},
"detail.selectAll": {
"comment": "Alle Folgen ankreuzen",
"extractionState": "manual",
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Alle"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "All"
}
}
}
},
"detail.selectNone": {
"comment": "Alle Haken entfernen",
"extractionState": "manual",
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Keine"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "None"
}
}
}
},
"detail.toSeason": {
"extractionState": "stale",
"localizations": {
@@ -1557,6 +1629,7 @@
}
},
"downloads.resume": {
"extractionState": "stale",
"localizations": {
"de": {
"stringUnit": {