feat(gui): slideshow in the photo viewer

A new top-bar button, or F5, plays the loaded photos as a slideshow: it goes
fullscreen, hides the controls and moves on every five seconds. A video plays
to its end first, and the slideshow waits for each photo to load before it
starts counting. Stepping by hand restarts the count. Escape stops the
slideshow instead of closing the viewer, and fullscreen is left only if the
slideshow entered it. The slideshow ends on the last photo of the timeline.
This commit is contained in:
nvrl committed 2026-09-28 02:12:58 +02:00
1 parent b47e6c91a0
commit 557eeb5f1d
10 files changed
+557 -387

No files matched your search

+47 -43
View File
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: proton-drive-linux 2.1.0\n"
"Report-Msgid-Bugs-To: https://github.com/narrrl/proton-drive-linux/issues\n"
"POT-Creation-Date: 2026-09-28 00:13+0200\n"
"POT-Creation-Date: 2026-09-28 00:14+0200\n"
"PO-Revision-Date: 2026-09-23 12:00+0200\n"
"Last-Translator: Proton Drive for Linux contributors\n"
"Language-Team: Dutch\n"
@@ -400,7 +400,7 @@ msgstr "Kon activiteit niet lezen"
#: crates/pdfs-gui/src/app/pages/activity.rs:275
#: crates/pdfs-gui/src/app/pages/browser.rs:2880
#: crates/pdfs-gui/src/app/pages/browser.rs:3066
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:292
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:310
#: crates/pdfs-gui/src/app/pages/photos.rs:3077
#: crates/pdfs-gui/src/app/pages/shared_by_me.rs:139
#: crates/pdfs-gui/src/app/pages/trash.rs:320
@@ -731,7 +731,7 @@ msgstr "Kon het album niet aanmaken"
#: crates/pdfs-gui/src/app/pages/locations.rs:739
#: crates/pdfs-gui/src/app/pages/locations.rs:1090
#: crates/pdfs-gui/src/app/pages/locations.rs:1109
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:1297
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:1424
#: crates/pdfs-gui/src/app/pages/photos.rs:1234
#: crates/pdfs-gui/src/app/pages/photos.rs:1947
#: crates/pdfs-gui/src/app/pages/photos.rs:2912
@@ -1088,7 +1088,7 @@ msgid "Location"
msgstr "Locatie"
#: crates/pdfs-gui/src/app/pages/browser.rs:1256
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:998
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:1110
msgid "Open With…"
msgstr "Openen met…"
@@ -1126,7 +1126,7 @@ msgid "Versions…"
msgstr "Versies…"
#: crates/pdfs-gui/src/app/pages/browser.rs:1302
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:1032
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:1145
msgid "Details"
msgstr "Details"
@@ -2387,171 +2387,175 @@ msgid "Sign Out"
msgstr "Afmelden"
#. Translators: tooltip of the button that switches to another file of the same photo; {name} is a file name.
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:182
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:194
#, rust-format
msgid "Show {name}"
msgstr "{name} tonen"
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:185
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:197
msgid "Show the raw file"
msgstr "Het RAW-bestand tonen"
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:186
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:198
msgid "Show the video"
msgstr "De video tonen"
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:187
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:199
msgid "Show the photo"
msgstr "De foto tonen"
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:288
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:306
msgid "Couldn't render this photo."
msgstr "Kon deze foto niet weergeven."
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:293
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:311
msgid "Couldn't reach Proton Drive."
msgstr "Kon Proton Drive niet bereiken."
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:345
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:449
msgid "Reading photo details…"
msgstr "Fotodetails lezen…"
#. Translators: label of a photo's file size in the details panel.
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:362
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:466
msgctxt "property"
msgid "Size"
msgstr "Grootte"
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:368
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:472
msgid "This photo carries no metadata."
msgstr "Deze foto bevat geen metadata."
#. Translators: a photo's pixel dimensions, such as "4032 × 3024".
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:441
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:545
#, rust-format
msgid "{width} × {height}"
msgstr "{width} × {height}"
#. Translators: label of a photo's pixel dimensions in the details panel.
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:444
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:548
msgid "Dimensions"
msgstr "Afmetingen"
#. Translators: label of when a photo was taken, in the details panel.
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:448
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:552
msgctxt "photo property"
msgid "Taken"
msgstr "Genomen"
#. Translators: label of the camera model in a photo's details panel.
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:453
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:557
msgid "Camera"
msgstr "Camera"
#. Translators: label of the lens model in a photo's details panel.
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:457
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:561
msgid "Lens"
msgstr "Lens"
#. Translators: a photo's ISO sensitivity, such as "ISO 400".
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:472
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:576
#, rust-format
msgid "ISO {value}"
msgstr "ISO {value}"
#. Translators: label of aperture, shutter speed, ISO and focal length in a photo's details panel.
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:484
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:588
msgid "Exposure"
msgstr "Belichting"
#. Translators: label of where a photo was taken, in the details panel.
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:492
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:596
msgctxt "photo property"
msgid "Location"
msgstr "Locatie"
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:495
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:599
#, rust-format
msgid "{latitude}, {longitude}"
msgstr "{latitude}, {longitude}"
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:685
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:789
msgid "Save a Copy"
msgstr "Een kopie opslaan"
#. Translators: {name} is the saved file's name.
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:706
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:810
#, rust-format
msgid "Saved “{name}”"
msgstr "“{name}” opgeslagen"
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:708
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:711
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:812
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:815
msgid "Couldn't save the copy"
msgstr "Kon de kopie niet opslaan"
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:712
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:816
msgid "The copy was interrupted."
msgstr "Het kopiëren is onderbroken."
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:839
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:844
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:943
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:948
#, rust-format
msgid "{position} of {total}"
msgstr "{position} van {total}"
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:849
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:953
#, rust-format
msgid "{position} of {loaded}+"
msgstr "{position} van {loaded}+"
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:877
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:981
msgid "Photo"
msgstr "Foto"
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:924
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:1028
msgid "Previous (←)"
msgstr "Vorige (←)"
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:938
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:1042
msgid "Next (→)"
msgstr "Volgende (→)"
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:976
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:1080
msgid "Details (i)"
msgstr "Details (i)"
#. Translators: tooltip of the star button that marks a photo as a favorite.
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:985
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:1089
msgctxt "verb"
msgid "Favorite"
msgstr "Favoriet maken"
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:993
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:1097
msgid "Slideshow (F5)"
msgstr "Diavoorstelling (F5)"
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:1105
msgid "Other files of this photo"
msgstr "Andere bestanden van deze foto"
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:996
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:1108
msgid "Save a Copy…"
msgstr "Een kopie opslaan…"
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:997
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:1109
msgid "Move to Trash (Delete)"
msgstr "Naar prullenbak verplaatsen (Delete)"
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:999
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:1111
msgid "Close (Esc)"
msgstr "Sluiten (Esc)"
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:1022
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:1135
msgid "Show on map"
msgstr "Tonen op kaart"
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:1040
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:1153
msgid "Hide details"
msgstr "Details verbergen"
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:1302
#: crates/pdfs-gui/src/app/pages/photo_viewer.rs:1429
#: crates/pdfs-gui/src/app/pages/photos.rs:2907
#: crates/pdfs-gui/src/app/pages/photos.rs:2911
msgid "Couldn't change the favorite"