Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cca7eb4c0c |
No files matched your search
@@ -43,6 +43,7 @@ find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS Kirigami2 I18n CoreAddon
|
||||
find_package(pybind11 REQUIRED)
|
||||
find_package(Ytdlp REQUIRED RUNTIME)
|
||||
find_package(YTMusicAPI 0.24.0 REQUIRED RUNTIME)
|
||||
find_package(Desert REQUIRED)
|
||||
|
||||
ki18n_install(po)
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
find_package(Python3 REQUIRED COMPONENTS Interpreter)
|
||||
|
||||
execute_process(COMMAND ${Python3_EXECUTABLE} -c "import ytmusicapi; print(ytmusicapi.__version__)" RESULT_VARIABLE YTMUSICAPI_CHECK_RESULT OUTPUT_VARIABLE YTMusicAPI_VERSION)
|
||||
execute_process(COMMAND ${Python3_EXECUTABLE} -c "import ytmusicapi; print(ytmusicapi.version('ytmusicapi'))" RESULT_VARIABLE YTMUSICAPI_CHECK_RESULT OUTPUT_VARIABLE YTMusicAPI_VERSION)
|
||||
|
||||
string(STRIP ${YTMusicAPI_VERSION} YTMusicAPI_VERSION)
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 6.2 KiB |
@@ -1 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" width="48" height="48" viewBox="0 0 12.7 12.7"><defs><linearGradient id="c"><stop offset="0" stop-color="#dc8689"/><stop offset="1" stop-color="#d56062"/></linearGradient><linearGradient id="b"><stop offset="0" stop-color="#da4453"/><stop offset="1" stop-color="#e74c3c"/></linearGradient><linearGradient id="a"><stop offset="0" stop-color="#c0392b"/><stop offset="1" stop-color="#c0392b" stop-opacity="0"/></linearGradient><linearGradient xlink:href="#a" id="e" x1="6.08542" x2="6.08542" y1="6.35" y2="11.3773" gradientUnits="userSpaceOnUse"/><linearGradient xlink:href="#b" id="d" x1="6.61458" x2="6.61458" y1="6.2178" y2="1.0583" gradientTransform="translate(0 -.15143)" gradientUnits="userSpaceOnUse"/><linearGradient xlink:href="#c" id="g" x1="10.58366" x2="11.64167" y1="6.08397" y2="6.08542" gradientUnits="userSpaceOnUse"/><linearGradient xlink:href="#c" id="f" x1="1.05833" x2="2.38125" y1="6.08542" y2="6.08542" gradientTransform="translate(-3.43958)" gradientUnits="userSpaceOnUse"/></defs><rect width="10.583" height="10.583" x="1.0584" y="1.0583" fill="#a83226" paint-order="stroke fill markers" rx="1.5875" ry="1.5875"/><rect width="10.583" height="10.319" x="1.0584" y=".90687" fill="url(#d)" paint-order="stroke fill markers" rx="1.5875" ry="1.5875"/><circle cx="6.35" cy="6.34408" r="3.97467" fill="none" stroke="#a83226" stroke-linecap="square" stroke-width=".51752"/><path fill="url(#e)" d="M1.05885 6.08542v3.83645c0 .87947.70803 1.5875 1.5875 1.5875h7.40782c.87946 0 1.5875-.70803 1.5875-1.5875V6.08542Z" paint-order="stroke fill markers"/><path fill="#ad3327" d="M1.05833 6.08542v.52916h2.51355a.132.132 0 0 0 .13229-.13229v-.26458a.132.132 0 0 0-.1323-.1323H1.05834z"/><path fill="#ac3327" d="M9.6578 6.08542a.132.132 0 0 0-.13228.13229v.26458a.132.132 0 0 0 .13229.1323h1.98386v-.52917Z"/><circle cx="6.3499" cy="6.06637" r="3.97467" fill="none" stroke="#dc8689" stroke-linecap="square" stroke-width=".51752"/><g fill="#ad3327" transform="translate(-.52917 -.26458)"><rect width=".52917" height=".52917" x="4.49792" y="6.35" rx=".13229" ry=".13229"/><rect width=".52917" height="4.7625" x="5.29167" y="4.49792" rx=".13229" ry=".13229"/><rect width=".52917" height="3.70417" x="6.08542" y="5.02708" rx=".13229" ry=".13229"/><rect width=".52917" height="2.64583" x="6.87917" y="5.55625" rx=".13229" ry=".13229"/><rect width=".52917" height="1.5875" x="7.67292" y="6.08542" rx=".13229" ry=".13229"/></g><path fill="#a83226" d="M7.9375 6.489v.27958c0 .06128.059.11059.1323.11059h.26458c.07328 0 .13229-.0493.13229-.1106v-.27956c-.00353.0701-.0613.12557-.1323.12557H8.0698c-.071 0-.12876-.05548-.13229-.12557z"/><path fill="#ad3327" d="M8.73125 6.22443V6.504c0 .06128.059.11058.1323.11058h.26458c.07328 0 .13229-.0493.13229-.11058v-.27957c-.00353.07009-.0613.12557-.1323.12557h-.26458c-.071 0-.12876-.05548-.13229-.12557z"/><rect width=".52917" height=".52917" x="3.96875" y="5.82083" fill="#f0b4ba" rx=".13229" ry=".13229"/><rect width=".52917" height="5.29167" x="4.7625" y="3.43958" fill="#fff" rx=".13229" ry=".13229"/><rect width=".52917" height="4.23333" x="5.55625" y="3.96875" fill="#fff" rx=".13229" ry=".13229"/><rect width=".52917" height="3.175" x="6.35" y="4.49792" fill="#fff" rx=".13229" ry=".13229"/><rect width=".52917" height="2.11667" x="7.14375" y="5.02708" fill="#fff" rx=".13229" ry=".13229"/><rect width=".52917" height="1.05833" x="7.9375" y="5.55625" fill="#fff" rx=".13229" ry=".13229"/><path fill="#dc8689" d="M2.38125 5.82083V6.35h1.19063a.132.132 0 0 0 .13229-.1323v-.26457a.132.132 0 0 0-.1323-.1323z"/><rect width=".52917" height=".52917" x="9.26042" y="6.08542" fill="#f0b4ba" rx=".13229" ry=".13229" transform="translate(-.52917 -.26458)"/><path fill="#dc8689" d="M9.6573 5.82083a.132.132 0 0 0-.1323.1323v.26458a.132.132 0 0 0 .1323.13229h.66145v-.52917Z"/><rect width="1.32292" height=".52917" x="-2.38125" y="5.82083" fill="url(#f)" rx="0" ry="0" transform="scale(-1 1)"/><rect width="1.32292" height=".52917" x="10.31875" y="5.82083" fill="url(#g)" rx="0" ry="0"/></svg>
|
||||
<?xml version="1.0" encoding="UTF-8"?><svg width="48" height="48" version="1.1" viewBox="0 0 12.7 12.7" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><linearGradient id="a" x1="25" x2="25" y1="3" y2="42.605" gradientTransform="matrix(.26458 0 0 .26458 5.101e-5 3.6667e-7)" gradientUnits="userSpaceOnUse"><stop stop-color="#f47750" offset="0"/><stop stop-color="#ed1515" offset="1"/></linearGradient><linearGradient id="d" x1="24" x2="24" y1="35.353" y2="12.647" gradientUnits="userSpaceOnUse"><stop stop-color="#31363b" offset="0"/><stop stop-color="#5f6a73" offset="1"/></linearGradient><linearGradient id="c" x1="24" x2="24" y1="29" y2="19" gradientUnits="userSpaceOnUse"><stop stop-color="#4d4d4d" offset="0"/><stop stop-color="#737373" offset="1"/></linearGradient><linearGradient id="b" x1="6.35" x2="6.35" y1="9.525" y2="-1.8372" gradientUnits="userSpaceOnUse"><stop stop-color="#7f8c8d" offset="0"/><stop stop-color="#929d9e" offset="1"/></linearGradient></defs><metadata><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/></cc:Work></rdf:RDF></metadata><g stroke-width=".26458"><rect x="1.0584" y="1.0583" width="10.583" height="10.583" rx="1.5875" ry="1.5875" fill="#a83226" style="paint-order:stroke fill markers"/><rect x="1.0584" y="1.0583" width="10.583" height="10.319" rx="1.5875" ry="1.5875" fill="url(#a)" style="paint-order:stroke fill markers"/><circle cx="6.35" cy="6.35" r="3.175" fill="none" stroke="#eee" stroke-linecap="square" stroke-width=".26458"/><path d="m8.3465 6.35-3.0549 1.7637 3e-7 -1.7637-3e-7 -1.7637 1.5274 0.88187z" fill="#fff"/><path d="m2.3962 5.8208a3.9538 3.9538 0 0 1 3.9538-3.9538 3.9538 3.9538 0 0 1 3.9538 3.9538" fill="none" stroke="url(#b)" stroke-linecap="square" stroke-width=".26458"/><path d="m4.3731 2.3967a3.9538 3.9538 0 0 1 3.9538 1e-7" fill="none" stroke="#6b6b6b" stroke-linecap="round" stroke-width=".52917"/><path transform="scale(.26458)" d="m8 19c-0.554 0-1 0.446-1 1v8c0 0.554 0.446 1 1 1h2c0.554 0 1-0.446 1-1v-8c0-0.554-0.446-1-1-1h-2zm30 0c-0.554 0-1 0.446-1 1v8c0 0.554 0.446 1 1 1h2c0.554 0 1-0.446 1-1v-8c0-0.554-0.446-1-1-1h-2z" fill="url(#c)"/><path transform="scale(.26458)" d="m8 19c-0.554 0-1 0.446-1 1v8c0 0.554 0.446 1 1 1h2v-10h-2zm30 0v10h2c0.554 0 1-0.446 1-1v-8c0-0.554-0.446-1-1-1h-2z" fill="url(#d)"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 2.5 KiB |
+30
-30
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2023-02-02 11:59+0400\n"
|
||||
"Last-Translator: Zayed Al-Saidi <[email protected]>\n"
|
||||
"Language-Team: ar\n"
|
||||
@@ -125,28 +125,37 @@ msgstr "الأكثر تشغيلا"
|
||||
msgid "played Songs"
|
||||
msgstr "الأغاني المشغلة"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "تيوب الصوتي"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "المشغل الآن"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "صُفّ"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr "الكلمات"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "أزل المسار"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "لا يوجد وسائط تعمل"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "أزل المسار"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -198,12 +207,12 @@ msgstr "قوائم التّشغيل"
|
||||
msgid "Unknown"
|
||||
msgstr "مجهول"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr "لا يوجد تطابق من البحوث الأخيرة"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr "أزل من تاريخ البحث"
|
||||
@@ -213,40 +222,31 @@ msgstr "أزل من تاريخ البحث"
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr " اطوِ الشريط الجانبي"
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "شغل التالي"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr "أضف للطابور"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr "أزل المفضلة"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr "أضف للمفضلة"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr "أزل من التّاريخ"
|
||||
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "المشغل الآن"
|
||||
|
||||
#~ msgid "Queue"
|
||||
#~ msgstr "صُفّ"
|
||||
|
||||
#~ msgid "Lyrics"
|
||||
#~ msgstr "الكلمات"
|
||||
|
||||
#~ msgid "Favourite Songs"
|
||||
#~ msgstr "الأغاني المفضّلة"
|
||||
|
||||
|
||||
+30
-27
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2022-06-19 12:16+0400\n"
|
||||
"Last-Translator: Kheyyam <[email protected]>\n"
|
||||
"Language-Team: Azerbaijani <[email protected]>\n"
|
||||
@@ -128,28 +128,37 @@ msgstr "Daha çox dinlənilən"
|
||||
msgid "played Songs"
|
||||
msgstr "Oxudulan mahnılar"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "İndi səslənir"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "Növbə"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Mahnını silin"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "Media faylı oynadılmır"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Mahnını silin"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -202,12 +211,12 @@ msgstr "Mahnı siyahıları"
|
||||
msgid "Unknown"
|
||||
msgstr "Bilinməyən"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr ""
|
||||
@@ -217,39 +226,33 @@ msgstr ""
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "Sonrakını oxudun"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Favourites"
|
||||
msgid "Remove Favourite"
|
||||
msgstr "Süçilmişlər"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Favourites"
|
||||
msgid "Add Favourite"
|
||||
msgstr "Süçilmişlər"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "İndi səslənir"
|
||||
|
||||
#~ msgid "Queue"
|
||||
#~ msgstr "Növbə"
|
||||
|
||||
#~ msgid "Favourite Songs"
|
||||
#~ msgstr "Seçilmiş mahnılar"
|
||||
|
||||
|
||||
+31
-22
@@ -9,8 +9,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"PO-Revision-Date: 2023-02-08 10:12+0100\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2023-01-27 10:54+0100\n"
|
||||
"Last-Translator: Josep M. Ferrer <[email protected]>\n"
|
||||
"Language-Team: Catalan <[email protected]>\n"
|
||||
"Language: ca\n"
|
||||
@@ -129,28 +129,37 @@ msgstr "Les més reproduïdes"
|
||||
msgid "played Songs"
|
||||
msgstr "Cançons reproduïdes"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "Ara s'està reproduint"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "Cua"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr "Lletra"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Elimina la pista"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "No s'està reproduint cap suport"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr "%1%"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Elimina la pista"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -202,12 +211,12 @@ msgstr "Llistes de reproducció"
|
||||
msgid "Unknown"
|
||||
msgstr "Desconeguda"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr "No hi ha cerques anteriors coincidents"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr "elimina de l'historial de cerques"
|
||||
@@ -217,27 +226,27 @@ msgstr "elimina de l'historial de cerques"
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr "Redueix la barra lateral"
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "Reprodueix el següent"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr "Afegeix a la cua"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr "Elimina de les preferides"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr "Afegeix a les preferides"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr "Elimina de l'historial"
|
||||
+31
-22
@@ -9,8 +9,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"PO-Revision-Date: 2023-02-08 10:12+0100\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2023-01-27 10:54+0100\n"
|
||||
"Last-Translator: Josep M. Ferrer <[email protected]>\n"
|
||||
"Language-Team: Catalan <[email protected]>\n"
|
||||
"Language: ca@valencia\n"
|
||||
@@ -129,28 +129,37 @@ msgstr "Les més reproduïdes"
|
||||
msgid "played Songs"
|
||||
msgstr "Cançons reproduïdes"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "Ara s'està reproduint"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "Cua"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr "Lletra"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Elimina la pista"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "No s'està reproduint cap suport"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr "%1%"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Elimina la pista"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -202,12 +211,12 @@ msgstr "Llistes de reproducció"
|
||||
msgid "Unknown"
|
||||
msgstr "Desconeguda"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr "No hi ha busques anteriors coincidents"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr "elimina de l'historial de busques"
|
||||
@@ -217,27 +226,27 @@ msgstr "elimina de l'historial de busques"
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr "Reduïx la barra lateral"
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "Reproduïx el següent"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr "Afig a la cua"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr "Elimina de les preferides"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr "Afig a les preferides"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr "Elimina de l'historial"
|
||||
+43
-34
@@ -1,13 +1,13 @@
|
||||
# Copyright (C) YEAR This file is copyright:
|
||||
# This file is distributed under the same license as the audiotube package.
|
||||
# Vit Pelcak <[email protected]>, 2021, 2022, 2023.
|
||||
# Vit Pelcak <[email protected]>, 2021, 2022.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"PO-Revision-Date: 2023-01-30 16:04+0100\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2022-06-28 13:58+0200\n"
|
||||
"Last-Translator: Vit Pelcak <[email protected]>\n"
|
||||
"Language-Team: Czech <[email protected]>\n"
|
||||
"Language: cs\n"
|
||||
@@ -15,7 +15,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||
"X-Generator: Lokalize 22.12.1\n"
|
||||
"X-Generator: Lokalize 22.04.2\n"
|
||||
|
||||
#, kde-format
|
||||
msgctxt "NAME OF TRANSLATORS"
|
||||
@@ -46,7 +46,7 @@ msgstr "Otevřít v prohlížeči"
|
||||
#: contents/ui/AlbumPage.qml:44
|
||||
#, kde-format
|
||||
msgid "Album • %1"
|
||||
msgstr "Album • %1"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
|
||||
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
|
||||
@@ -124,30 +124,39 @@ msgstr "Nejčastěji hrané"
|
||||
#: contents/ui/LibraryPage.qml:230
|
||||
#, kde-format
|
||||
msgid "played Songs"
|
||||
msgstr "přehrané skladby"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "Nyní přehrávám"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "Fronta"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr "Text písně"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Odstranit skladbu"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "Nepřehrává se žádné médium"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr "%1%"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Odstranit skladbu"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -182,7 +191,7 @@ msgstr "Seznam skladeb"
|
||||
#: contents/ui/SearchPage.qml:16
|
||||
#, kde-format
|
||||
msgid "Previous Searches:"
|
||||
msgstr "Předchozí hledání:"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SearchPage.qml:28
|
||||
#, kde-format
|
||||
@@ -199,42 +208,42 @@ msgstr "Seznamy skladeb"
|
||||
msgid "Unknown"
|
||||
msgstr "Neznámý"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr "Neodpovídají žádná předchozí hledání"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr "odstranit z historie hledání"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/Sidebar.qml:179
|
||||
#, kde-format
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr "Svinout postranní panel"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "Přehrát následující"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr "Zařadit do fronty"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr "Odstranit oblíbené"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr "Přidat oblíbené"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr "Odstranit z historie"
|
||||
msgstr ""
|
||||
+34
-34
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"PO-Revision-Date: 2023-02-09 00:18+0100\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2023-01-14 23:47+0100\n"
|
||||
"Last-Translator: Frederik Schwarzer <[email protected]>\n"
|
||||
"Language-Team: German <[email protected]>\n"
|
||||
"Language: de\n"
|
||||
@@ -128,28 +128,37 @@ msgstr "Am meisten abgespielt"
|
||||
msgid "played Songs"
|
||||
msgstr "Abgespielte Stücke"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "Aktueller Titel"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "Warteschlange"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr "Liedtext"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Stück entfernen"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "Es werden keine Medien wiedergegeben"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr "%1 %"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Stück entfernen"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -201,54 +210,45 @@ msgstr "Wiedergabelisten"
|
||||
msgid "Unknown"
|
||||
msgstr "Unbekannt"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr "Keine passenden vorherigen Suchvorgänge"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr "Aus Suchverlauf löschen"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/Sidebar.qml:179
|
||||
#, kde-format
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr "Seitenleiste einklappen"
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "Nächste Wiedergabe"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr "Zur Warteschlange hinzufügen"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr "Favoriten entfernen"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr "Favoriten hinzufügen"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr "Aus Verlauf löschen"
|
||||
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "Aktueller Titel"
|
||||
|
||||
#~ msgid "Queue"
|
||||
#~ msgstr "Warteschlange"
|
||||
|
||||
#~ msgid "Lyrics"
|
||||
#~ msgstr "Liedtext"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Favourite Songs"
|
||||
#~ msgstr "Lieblingsstücke"
|
||||
|
||||
+30
-30
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2022-12-31 15:53+0000\n"
|
||||
"Last-Translator: Steve Allewell <[email protected]>\n"
|
||||
"Language-Team: English <[email protected]>\n"
|
||||
@@ -126,28 +126,37 @@ msgstr "Most played"
|
||||
msgid "played Songs"
|
||||
msgstr "played Songs"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "Now Playing"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "Queue"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr "Lyrics"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Remove Track"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "No media playing"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Remove Track"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -199,13 +208,13 @@ msgstr "Playlists"
|
||||
msgid "Unknown"
|
||||
msgstr "Unknown"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Previous Searches:"
|
||||
msgid "No matching previous searches"
|
||||
msgstr "Previous Searches:"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr ""
|
||||
@@ -215,40 +224,31 @@ msgstr ""
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr "Collapse Sidebar"
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "Play Next"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr "Add to queue"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr "Remove Favourite"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr "Add Favourite"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "Now Playing"
|
||||
|
||||
#~ msgid "Queue"
|
||||
#~ msgstr "Queue"
|
||||
|
||||
#~ msgid "Lyrics"
|
||||
#~ msgstr "Lyrics"
|
||||
|
||||
#~ msgid "Favourite Songs"
|
||||
#~ msgstr "Favourite Songs"
|
||||
|
||||
|
||||
+32
-35
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"PO-Revision-Date: 2023-02-08 03:34+0100\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2023-01-29 00:58+0100\n"
|
||||
"Last-Translator: Eloy Cuadra <[email protected]>\n"
|
||||
"Language-Team: Spanish <[email protected]>\n"
|
||||
"Language: es\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Lokalize 22.12.2\n"
|
||||
"X-Generator: Lokalize 22.12.1\n"
|
||||
|
||||
#, kde-format
|
||||
msgctxt "NAME OF TRANSLATORS"
|
||||
@@ -128,28 +128,37 @@ msgstr "Más reproducidas"
|
||||
msgid "played Songs"
|
||||
msgstr "canciones reproducidas"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "Reproduciendo"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "Cola"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr "Letra"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Eliminar pista"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "Ningún medio en reproducción"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr "%1%"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Eliminar pista"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -201,12 +210,12 @@ msgstr "Listas de reproducción"
|
||||
msgid "Unknown"
|
||||
msgstr "Desconocido"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr "No hay búsquedas anteriores coincidentes"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr "eliminar del historial de búsqueda"
|
||||
@@ -216,43 +225,31 @@ msgstr "eliminar del historial de búsqueda"
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr "Contraer la barra lateral"
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "Reproducir siguiente"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr "Añadir a la cola"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr "Eliminar favorita"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr "Añadir favorita"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr "Eliminar del historial"
|
||||
|
||||
#~ msgid "%"
|
||||
#~ msgstr "%"
|
||||
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "Reproduciendo"
|
||||
|
||||
#~ msgid "Queue"
|
||||
#~ msgstr "Cola"
|
||||
|
||||
#~ msgid "Lyrics"
|
||||
#~ msgstr "Letra"
|
||||
|
||||
#~ msgid "Favourite Songs"
|
||||
#~ msgstr "Canciones favoritas"
|
||||
|
||||
|
||||
+32
-35
@@ -9,8 +9,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"PO-Revision-Date: 2023-02-08 07:47+0100\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2023-01-27 21:02+0100\n"
|
||||
"Last-Translator: Iñigo Salvador Azurmendi <[email protected]>\n"
|
||||
"Language-Team: Basque <[email protected]>\n"
|
||||
"Language: eu\n"
|
||||
@@ -18,7 +18,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Lokalize 22.12.2\n"
|
||||
"X-Generator: Lokalize 22.12.1\n"
|
||||
|
||||
#, kde-format
|
||||
msgctxt "NAME OF TRANSLATORS"
|
||||
@@ -129,28 +129,37 @@ msgstr "Gehien jotakoa"
|
||||
msgid "played Songs"
|
||||
msgstr "jotako abestiak"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "Orain jotzen"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "Ilara"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr "Hitzak"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Kendu pista"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "Ez da euskarririk jotzen ari"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr "%%1"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Kendu pista"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -202,12 +211,12 @@ msgstr "Jotze-zerrendak"
|
||||
msgid "Unknown"
|
||||
msgstr "Ezezaguna"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr "Ez dago bat datorren aurreko bilaketarik"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr "Kendu bilaketa-historiatik"
|
||||
@@ -217,43 +226,31 @@ msgstr "Kendu bilaketa-historiatik"
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr "Tolestu Alboko-barra"
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "Jo hurrengoa"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr "Gehitu ilaran"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr "Kendu gogokoa"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr "Gehitu gogokoa"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr "Kendu historiatik"
|
||||
|
||||
#~ msgid "%"
|
||||
#~ msgstr "%"
|
||||
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "Orain jotzen"
|
||||
|
||||
#~ msgid "Queue"
|
||||
#~ msgstr "Ilara"
|
||||
|
||||
#~ msgid "Lyrics"
|
||||
#~ msgstr "Hitzak"
|
||||
|
||||
#~ msgid "Favourite Songs"
|
||||
#~ msgstr "Gogoko abestiak"
|
||||
|
||||
|
||||
+30
-27
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2022-10-24 07:57+0300\n"
|
||||
"Last-Translator: Tommi Nieminen <[email protected]>\n"
|
||||
"Language-Team: Finnish <[email protected]>\n"
|
||||
@@ -127,28 +127,37 @@ msgstr "Soitetuimmat"
|
||||
msgid "played Songs"
|
||||
msgstr "Soitetut kappaleet"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "Nyt soi"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "Jono"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Poista raita"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "Mitään ei toisteta"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Poista raita"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -201,12 +210,12 @@ msgstr "Soittolistat"
|
||||
msgid "Unknown"
|
||||
msgstr "Tuntematon"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr ""
|
||||
@@ -216,39 +225,33 @@ msgstr ""
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "Toista seuraava"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Favourites"
|
||||
msgid "Remove Favourite"
|
||||
msgstr "Suosikit"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Favourites"
|
||||
msgid "Add Favourite"
|
||||
msgstr "Suosikit"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "Nyt soi"
|
||||
|
||||
#~ msgid "Queue"
|
||||
#~ msgstr "Jono"
|
||||
|
||||
#~ msgid "Favourite Songs"
|
||||
#~ msgstr "Suosikkikappaleet"
|
||||
|
||||
|
||||
+31
-34
@@ -4,8 +4,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"PO-Revision-Date: 2023-02-11 16:25+0100\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2023-01-29 10:52+0100\n"
|
||||
"Last-Translator: Xavier BESNARD <xavier.besnard]neuf.fr>\n"
|
||||
"Language-Team: fr\n"
|
||||
"Language: fr\n"
|
||||
@@ -124,28 +124,37 @@ msgstr "Les plus lus"
|
||||
msgid "played Songs"
|
||||
msgstr "Titres lus"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "En cours de lecture"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "Mettre en file d'attente"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr "Paroles"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Supprimer une piste"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "Aucun média en lecture"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr "%1 %"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Supprimer une piste"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -197,12 +206,12 @@ msgstr "Listes de lecture"
|
||||
msgid "Unknown"
|
||||
msgstr "Inconnu"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr "Aucune correspondance avec les recherches précédentes"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr "supprimer de l'historique de recherche"
|
||||
@@ -212,43 +221,31 @@ msgstr "supprimer de l'historique de recherche"
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr "Réduire la barre latérale"
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "Lire le suivant"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr "Ajouter à la file de lecture"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr "Supprimer un favori"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr "Ajouter un favori"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr "Supprimer de l'historique"
|
||||
|
||||
#~ msgid "%"
|
||||
#~ msgstr "%"
|
||||
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "En cours de lecture"
|
||||
|
||||
#~ msgid "Queue"
|
||||
#~ msgstr "Mettre en file d'attente"
|
||||
|
||||
#~ msgid "Lyrics"
|
||||
#~ msgstr "Paroles"
|
||||
|
||||
#~ msgid "Favourite Songs"
|
||||
#~ msgstr "Titres favoris"
|
||||
|
||||
|
||||
+31
-26
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2021-09-17 20:09+0530\n"
|
||||
"Last-Translator: Raghavendra Kamath <[email protected]>\n"
|
||||
"Language-Team: kde-hindi\n"
|
||||
@@ -126,28 +126,38 @@ msgstr ""
|
||||
msgid "played Songs"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "ओडियो-ट्यूब"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "No media playing"
|
||||
msgid "Now Playing"
|
||||
msgstr "कोई मीडिया नहीं बजा रहा है"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "गाना हटाएँ"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "कोई मीडिया नहीं बजा रहा है"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "गाना हटाएँ"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -200,12 +210,12 @@ msgstr "गीत-सूचीयाँ"
|
||||
msgid "Unknown"
|
||||
msgstr "अज्ञात"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr ""
|
||||
@@ -215,36 +225,31 @@ msgstr ""
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "अगला बजाएँ"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "No media playing"
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "कोई मीडिया नहीं बजा रहा है"
|
||||
|
||||
#~ msgid "Find music on YouTube Music"
|
||||
#~ msgstr "यूट्यूब संगीत पर संगीत ढूंढें"
|
||||
|
||||
|
||||
+30
-30
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2023-01-13 08:23+0700\n"
|
||||
"Last-Translator: Linerly <[email protected]>\n"
|
||||
"Language-Team: Indonesian <[email protected]>\n"
|
||||
@@ -126,28 +126,37 @@ msgstr "Paling banyak diputar"
|
||||
msgid "played Songs"
|
||||
msgstr "Lagu yang telah diputar"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "Sekarang Diputarkan"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "Antrean"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr "Lirik"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Hapus Trek"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "Tidak ada media yang diputarkan"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Hapus Trek"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -199,12 +208,12 @@ msgstr "Daftar Putar"
|
||||
msgid "Unknown"
|
||||
msgstr "Tidak diketahui"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr ""
|
||||
@@ -214,40 +223,31 @@ msgstr ""
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "Putar Berikutnya"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr "Tambahkan ke antrean"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr "Hapus Favorit"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr "Tambahkan Favorit"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "Sekarang Diputarkan"
|
||||
|
||||
#~ msgid "Queue"
|
||||
#~ msgstr "Antrean"
|
||||
|
||||
#~ msgid "Lyrics"
|
||||
#~ msgstr "Lirik"
|
||||
|
||||
#~ msgid "Favourite Songs"
|
||||
#~ msgstr "Lagu Favorit"
|
||||
|
||||
|
||||
+32
-35
@@ -6,8 +6,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"PO-Revision-Date: 2023-02-05 12:50+0100\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2023-01-27 19:12+0100\n"
|
||||
"Last-Translator: Vincenzo Reale <[email protected]>\n"
|
||||
"Language-Team: Italian <[email protected]>\n"
|
||||
"Language: it\n"
|
||||
@@ -15,7 +15,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Lokalize 22.12.2\n"
|
||||
"X-Generator: Lokalize 22.12.1\n"
|
||||
|
||||
#, kde-format
|
||||
msgctxt "NAME OF TRANSLATORS"
|
||||
@@ -126,28 +126,37 @@ msgstr "Più riprodotti"
|
||||
msgid "played Songs"
|
||||
msgstr "Brani riprodotti"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "In riproduzione"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "Coda"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr "Testi"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Rimuovi traccia"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "Nessun supporto in riproduzione"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Rimuovi traccia"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -199,12 +208,12 @@ msgstr "Scalette"
|
||||
msgid "Unknown"
|
||||
msgstr "Sconosciuto"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr "Nessuna ricerca precedente corrispondente"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr "rimuovi dalla cronologia delle ricerche"
|
||||
@@ -214,43 +223,31 @@ msgstr "rimuovi dalla cronologia delle ricerche"
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr "Contrai la barra laterale"
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "Riproduci successivo"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr "Aggiungi alla coda"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr "Rimuovi preferito"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr "Aggiungi preferito"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr "Rimuovi dalla cronologia"
|
||||
|
||||
#~ msgid "%"
|
||||
#~ msgstr "%"
|
||||
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "In riproduzione"
|
||||
|
||||
#~ msgid "Queue"
|
||||
#~ msgstr "Coda"
|
||||
|
||||
#~ msgid "Lyrics"
|
||||
#~ msgstr "Testi"
|
||||
|
||||
#~ msgid "Favourite Songs"
|
||||
#~ msgstr "Brani preferiti"
|
||||
|
||||
|
||||
+30
-21
@@ -2,7 +2,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2021-05-29 19:15-0700\n"
|
||||
"Last-Translator: Japanese KDE translation team <[email protected]>\n"
|
||||
"Language-Team: Japanese <[email protected]>\n"
|
||||
@@ -121,28 +121,37 @@ msgstr ""
|
||||
msgid "played Songs"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -194,12 +203,12 @@ msgstr ""
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr ""
|
||||
@@ -209,27 +218,27 @@ msgstr ""
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr ""
|
||||
+31
-34
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"PO-Revision-Date: 2023-02-08 07:08+0100\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2023-01-27 08:44+0100\n"
|
||||
"Last-Translator: Temuri Doghonadze <[email protected]>\n"
|
||||
"Language-Team: Georgian <[email protected]>\n"
|
||||
"Language: ka\n"
|
||||
@@ -126,28 +126,37 @@ msgstr "ხშირად დაკრულები"
|
||||
msgid "played Songs"
|
||||
msgstr "დაკრული სიმღერები"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "მიმდინარეობს დაკვრა"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "რიგი"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr "ლირიკა"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "აუდიობილიკის წაშლა"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "არაფერს ვუკრავ"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr "%1%"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "აუდიობილიკის წაშლა"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -199,12 +208,12 @@ msgstr "დასაკრავი სიები"
|
||||
msgid "Unknown"
|
||||
msgstr "უცნობი"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr "წინა ძებნებს არ ემთხვევა"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr "ძებნის ისტორიიდან წაშლა"
|
||||
@@ -214,43 +223,31 @@ msgstr "ძებნის ისტორიიდან წაშლა"
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr "გვერდითი ზოლის ჩაკეცვა"
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "შემდეგის დაკვრა"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr "რიგში ჩამატება"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr "რჩეულის წაშლა"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr "რჩეულის დამატება"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr "ისტორიიდან წაშლა"
|
||||
|
||||
#~ msgid "%"
|
||||
#~ msgstr "%"
|
||||
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "მიმდინარეობს დაკვრა"
|
||||
|
||||
#~ msgid "Queue"
|
||||
#~ msgstr "რიგი"
|
||||
|
||||
#~ msgid "Lyrics"
|
||||
#~ msgstr "ლირიკა"
|
||||
|
||||
#~ msgid "Favourite Songs"
|
||||
#~ msgstr "რჩეული სიმღერები"
|
||||
|
||||
|
||||
+30
-27
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2022-10-03 14:20+0200\n"
|
||||
"Last-Translator: Shinjo Park <[email protected]>\n"
|
||||
"Language-Team: Korean <[email protected]>\n"
|
||||
@@ -126,28 +126,37 @@ msgstr "가장 많이 재생됨"
|
||||
msgid "played Songs"
|
||||
msgstr "재생한 노래"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "지금 재생 중"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "대기열에 추가"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "트랙 삭제"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "재생 중인 미디어 없음"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "트랙 삭제"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -200,12 +209,12 @@ msgstr "재생 목록"
|
||||
msgid "Unknown"
|
||||
msgstr "알 수 없음"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr ""
|
||||
@@ -215,39 +224,33 @@ msgstr ""
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "다음 재생"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Favourites"
|
||||
msgid "Remove Favourite"
|
||||
msgstr "책갈피"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Favourites"
|
||||
msgid "Add Favourite"
|
||||
msgstr "책갈피"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "지금 재생 중"
|
||||
|
||||
#~ msgid "Queue"
|
||||
#~ msgstr "대기열에 추가"
|
||||
|
||||
#~ msgid "Favourite Songs"
|
||||
#~ msgstr "책갈피에 등록된 노래"
|
||||
|
||||
|
||||
+32
-35
@@ -6,8 +6,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"PO-Revision-Date: 2023-02-08 14:22+0100\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2023-01-27 12:41+0100\n"
|
||||
"Last-Translator: Freek de Kruijf <[email protected]>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: nl\n"
|
||||
@@ -15,7 +15,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Lokalize 22.12.2\n"
|
||||
"X-Generator: Lokalize 22.12.1\n"
|
||||
|
||||
#, kde-format
|
||||
msgctxt "NAME OF TRANSLATORS"
|
||||
@@ -126,28 +126,37 @@ msgstr "Meest afgespeeld"
|
||||
msgid "played Songs"
|
||||
msgstr "afgespeelde songs"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "Speelt nu"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "Wachtrij"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr "Liedteksten"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Track verwijderen"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "Er speelt geen medium"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr "%1%"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Track verwijderen"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -199,12 +208,12 @@ msgstr "Afspeellijsten"
|
||||
msgid "Unknown"
|
||||
msgstr "Onbekend"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr "Geen overeenkomende vorige zoekopdrachten"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr "uit zoekgeschiedenis verwijderen"
|
||||
@@ -214,43 +223,31 @@ msgstr "uit zoekgeschiedenis verwijderen"
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr "Zijbalk invouwen"
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "Volgende afspelen"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr "Aan wachtrij toevoegen"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr "Favoriet verwijderen"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr "Favoriet toevoegen"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr "Uit geschiedenis verwijderen"
|
||||
|
||||
#~ msgid "%"
|
||||
#~ msgstr "%"
|
||||
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "Speelt nu"
|
||||
|
||||
#~ msgid "Queue"
|
||||
#~ msgstr "Wachtrij"
|
||||
|
||||
#~ msgid "Lyrics"
|
||||
#~ msgstr "Liedteksten"
|
||||
|
||||
#~ msgid "Favourite Songs"
|
||||
#~ msgstr "Favoriete songs"
|
||||
|
||||
|
||||
+35
-26
@@ -6,8 +6,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"PO-Revision-Date: 2023-02-09 21:36+0100\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2023-01-15 12:33+0100\n"
|
||||
"Last-Translator: Karl Ove Hufthammer <[email protected]>\n"
|
||||
"Language-Team: Norwegian Nynorsk <[email protected]>\n"
|
||||
"Language: nn\n"
|
||||
@@ -15,7 +15,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Lokalize 22.12.2\n"
|
||||
"X-Generator: Lokalize 22.12.1\n"
|
||||
"X-Environment: kde\n"
|
||||
"X-Accelerator-Marker: &\n"
|
||||
"X-Text-Markup: kde4\n"
|
||||
@@ -127,28 +127,37 @@ msgstr "Oftast avspela"
|
||||
msgid "played Songs"
|
||||
msgstr "Avspela songar"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "Spelar no"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "Kø"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr "Songtekst"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Fjern spor"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "Inkje medium vert spela"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr "%1 %"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Fjern spor"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -200,42 +209,42 @@ msgstr "Spelelister"
|
||||
msgid "Unknown"
|
||||
msgstr "Ukjend"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr "Ingen samsvarande tidlegare søk"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr "Fjern frå søkjeloggen"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/Sidebar.qml:179
|
||||
#, kde-format
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr "Fald saman sidestolpe"
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "Spel som neste"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr "Legg i avspelingskøen"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr "Fjern frå favorittar"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr "Legg til favorittar"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr "Fjern frå loggen"
|
||||
msgstr ""
|
||||
+31
-26
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2022-01-01 09:11-0800\n"
|
||||
"Last-Translator: A S Alam <[email protected]>\n"
|
||||
"Language-Team: Punjabi <[email protected]>\n"
|
||||
@@ -125,28 +125,38 @@ msgstr ""
|
||||
msgid "played Songs"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "ਆਡੀਓ-ਟਿਊਬ"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "No media playing"
|
||||
msgid "Now Playing"
|
||||
msgstr "ਕੋਈ ਮੀਡੀਆ ਨਹੀਂ ਚੱਲਦਾ"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "ਟਰੈਕ ਨੂੰ ਹਟਾਓ"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "ਕੋਈ ਮੀਡੀਆ ਨਹੀਂ ਚੱਲਦਾ"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "ਟਰੈਕ ਨੂੰ ਹਟਾਓ"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -199,12 +209,12 @@ msgstr "ਪਲੇਅਲਿਸਟਾਂ"
|
||||
msgid "Unknown"
|
||||
msgstr "ਅਣਪਛਾਤਾ"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr ""
|
||||
@@ -214,36 +224,31 @@ msgstr ""
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "ਅਗਲਾ ਚਲਾਓ"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "No media playing"
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "ਕੋਈ ਮੀਡੀਆ ਨਹੀਂ ਚੱਲਦਾ"
|
||||
|
||||
#~ msgid "Find music on YouTube Music"
|
||||
#~ msgstr "ਯੂਟਿਊਬ ਸੰਗੀਤ ਉੱਤੇ ਸੰਗੀਤ ਲੱਭੋ"
|
||||
|
||||
|
||||
+30
-27
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2022-10-18 18:06+0200\n"
|
||||
"Last-Translator: Łukasz Wojniłowicz <[email protected]>\n"
|
||||
"Language-Team: Polish <[email protected]>\n"
|
||||
@@ -130,28 +130,37 @@ msgstr "Najczęściej odtwarzane"
|
||||
msgid "played Songs"
|
||||
msgstr "Odtwarzane utwory"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "Teraz odtwarzany"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "Kolejka"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Usuń utwór"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "Nic nie jest odtwarzane"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Usuń utwór"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -204,12 +213,12 @@ msgstr "Listy odtwarzania"
|
||||
msgid "Unknown"
|
||||
msgstr "Nieznany"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr ""
|
||||
@@ -219,39 +228,33 @@ msgstr ""
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "Odtwórz następny"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Favourites"
|
||||
msgid "Remove Favourite"
|
||||
msgstr "Ulubione"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Favourites"
|
||||
msgid "Add Favourite"
|
||||
msgstr "Ulubione"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "Teraz odtwarzany"
|
||||
|
||||
#~ msgid "Queue"
|
||||
#~ msgstr "Kolejka"
|
||||
|
||||
#~ msgid "Favourite Songs"
|
||||
#~ msgstr "Ulubione utwory"
|
||||
|
||||
|
||||
+30
-33
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2023-01-22 23:00+0000\n"
|
||||
"Last-Translator: José Nuno Coelho Pires <[email protected]>\n"
|
||||
"Language-Team: Portuguese <[email protected]>\n"
|
||||
@@ -128,28 +128,37 @@ msgstr "Mais Tocadas"
|
||||
msgid "played Songs"
|
||||
msgstr "Músicas tocadas"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "Agora a Ouvir"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "Fila"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr "Letras Musicais"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Remover a Faixa"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "Nada em reprodução"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr "%1%"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Remover a Faixa"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -201,12 +210,12 @@ msgstr "Listas de Reprodução"
|
||||
msgid "Unknown"
|
||||
msgstr "Desconhecido"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr "Sem pesquisas anteriores correspondentes"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Remove from History"
|
||||
msgid "remove from search history"
|
||||
@@ -217,39 +226,27 @@ msgstr "Remover do Histórico"
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr "Fechar a Barra Lateral"
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "Reproduzir o Seguinte"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr "Adicionar à fila"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr "Remover o Favorito"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr "Adicionar aos Favoritos"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr "Remover do Histórico"
|
||||
|
||||
#~ msgid "%"
|
||||
#~ msgstr "%"
|
||||
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "Agora a Ouvir"
|
||||
|
||||
#~ msgid "Queue"
|
||||
#~ msgstr "Fila"
|
||||
|
||||
#~ msgid "Lyrics"
|
||||
#~ msgstr "Letras Musicais"
|
||||
+41
-40
@@ -1,14 +1,14 @@
|
||||
# Copyright (C) YEAR This file is copyright:
|
||||
# This file is distributed under the same license as the audiotube package.
|
||||
#
|
||||
# Luiz Fernando Ranghetti <[email protected]>, 2021, 2022, 2023.
|
||||
# Luiz Fernando Ranghetti <[email protected]>, 2021, 2022.
|
||||
# Thiago Masato Costa Sueto <[email protected]>, 2021.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"PO-Revision-Date: 2023-02-14 11:03-0300\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2022-12-20 10:48-0300\n"
|
||||
"Last-Translator: Luiz Fernando Ranghetti <[email protected]>\n"
|
||||
"Language-Team: Portuguese <[email protected]>\n"
|
||||
"Language: pt_BR\n"
|
||||
@@ -123,36 +123,46 @@ msgid "Most played"
|
||||
msgstr "Mais reproduzidas"
|
||||
|
||||
#: contents/ui/LibraryPage.qml:230
|
||||
#, kde-format
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Played Songs"
|
||||
msgid "played Songs"
|
||||
msgstr "músicas reproduzidas"
|
||||
msgstr "Músicas reproduzidas"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "Reproduzindo agora"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "Fila"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr "Letras"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Remover faixa"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "Nenhuma mídia em reprodução"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr "%1%"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Remover faixa"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
msgstr "Biblioteca"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||
#, kde-format
|
||||
@@ -183,7 +193,7 @@ msgstr "Lista de músicas"
|
||||
#: contents/ui/SearchPage.qml:16
|
||||
#, kde-format
|
||||
msgid "Previous Searches:"
|
||||
msgstr "Pesquisas anteriores:"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SearchPage.qml:28
|
||||
#, kde-format
|
||||
@@ -200,54 +210,45 @@ msgstr "Listas de músicas"
|
||||
msgid "Unknown"
|
||||
msgstr "Desconhecido"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr "Nenhuma pesquisa anterior correspondente"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr "remover do histórico de pesquisa"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/Sidebar.qml:179
|
||||
#, kde-format
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr "Recolher barra lateral"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "Reproduzir próxima"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr "Adicionar à fila"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr "Remover das favoritas"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr "Adicionar favorita"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr "Remover do histórico"
|
||||
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "Reproduzindo agora"
|
||||
|
||||
#~ msgid "Queue"
|
||||
#~ msgstr "Fila"
|
||||
|
||||
#~ msgid "Lyrics"
|
||||
#~ msgstr "Letras"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Favourite Songs"
|
||||
#~ msgstr "Músicas favoritas"
|
||||
|
||||
+30
-30
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2023-01-28 13:37+0300\n"
|
||||
"Last-Translator: Alexander Yavorsky <[email protected]>\n"
|
||||
"Language-Team: Russian <[email protected]>\n"
|
||||
@@ -126,28 +126,37 @@ msgstr "Часто воспроизводимые"
|
||||
msgid "played Songs"
|
||||
msgstr "Воспроизведённые треки"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "Текущий трек"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "Очередь воспроизведения"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr "Текст песни"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Удалить дорожку"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "Ничего не воспроизводится"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Удалить дорожку"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -199,12 +208,12 @@ msgstr "Списки воспроизведения"
|
||||
msgid "Unknown"
|
||||
msgstr "Неизвестный тип"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr "Не найдено соответствующих предыдущих поисковых запросов"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr ""
|
||||
@@ -214,40 +223,31 @@ msgstr ""
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr "Свернуть боковую панель"
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "Воспроизвести следующим"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr "Добавить в очередь воспроизведения"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr "Убрать из избранного"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr "Добавить в избранное"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr "Удалить из журнала"
|
||||
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "Текущий трек"
|
||||
|
||||
#~ msgid "Queue"
|
||||
#~ msgstr "Очередь воспроизведения"
|
||||
|
||||
#~ msgid "Lyrics"
|
||||
#~ msgstr "Текст песни"
|
||||
|
||||
#~ msgid "Favourite Songs"
|
||||
#~ msgstr "Избранные треки"
|
||||
|
||||
|
||||
+31
-26
@@ -4,7 +4,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2022-04-07 18:01+0200\n"
|
||||
"Last-Translator: Roman Paholik <[email protected]>\n"
|
||||
"Language-Team: Slovak <[email protected]>\n"
|
||||
@@ -123,28 +123,38 @@ msgstr ""
|
||||
msgid "played Songs"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "No media playing"
|
||||
msgid "Now Playing"
|
||||
msgstr "Neprehráva sa žiadne médium"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "Neprehráva sa žiadne médium"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -197,12 +207,12 @@ msgstr "Zoznamy skladieb"
|
||||
msgid "Unknown"
|
||||
msgstr "Neznáme"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr ""
|
||||
@@ -212,37 +222,32 @@ msgstr ""
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Play"
|
||||
msgid "Play Next"
|
||||
msgstr "Prehrať"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "No media playing"
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "Neprehráva sa žiadne médium"
|
||||
|
||||
#~ msgid "Add to Playlist"
|
||||
#~ msgstr "Pridať do zoznamu skladieb"
|
||||
|
||||
|
||||
+32
-35
@@ -6,15 +6,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"PO-Revision-Date: 2023-02-09 08:26+0100\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2023-01-28 09:50+0100\n"
|
||||
"Last-Translator: Matjaž Jeran <[email protected]>\n"
|
||||
"Language-Team: Slovenian <[email protected]>\n"
|
||||
"Language: sl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Lokalize 22.12.2\n"
|
||||
"X-Generator: Lokalize 22.12.1\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
|
||||
"%100==4 ? 3 : 0);\n"
|
||||
|
||||
@@ -125,28 +125,37 @@ msgstr "Največkrat predvajane"
|
||||
msgid "played Songs"
|
||||
msgstr "predvajane pesmi"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "Pravkar predvajano"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "Čakalna vrsta"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr "Besedilo"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Odstrani sled"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "Niče se ne predvaja"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr "%1%"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Odstrani sled"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -198,12 +207,12 @@ msgstr "Seznami predvajanja"
|
||||
msgid "Unknown"
|
||||
msgstr "Neznano"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr "Ni zadetkov iz prejšnjih iskanj"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr "odstrani iz zgodovine iskanj"
|
||||
@@ -213,43 +222,31 @@ msgstr "odstrani iz zgodovine iskanj"
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr "Strni stransko vrstico"
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "Predvajaj naslednjo"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr "Dodaj v v čakalno vrsto"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr "Odstrani priljubljenega"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr "Dodaj priljubljenega"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr "Odstrani iz zgodovine"
|
||||
|
||||
#~ msgid "%"
|
||||
#~ msgstr "%"
|
||||
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "Pravkar predvajano"
|
||||
|
||||
#~ msgid "Queue"
|
||||
#~ msgstr "Čakalna vrsta"
|
||||
|
||||
#~ msgid "Lyrics"
|
||||
#~ msgstr "Besedilo"
|
||||
|
||||
#~ msgid "Favourite Songs"
|
||||
#~ msgstr "Priljubljene pesmi"
|
||||
|
||||
|
||||
+30
-27
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2022-09-24 14:57+0200\n"
|
||||
"Last-Translator: Stefan Asserhäll <[email protected]>\n"
|
||||
"Language-Team: Swedish <[email protected]>\n"
|
||||
@@ -126,28 +126,37 @@ msgstr "Mest spelade"
|
||||
msgid "played Songs"
|
||||
msgstr "Spelade låtar"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "Spelar nu"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "Köa"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Ta bort spår"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "Inga media spelar"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Ta bort spår"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -200,12 +209,12 @@ msgstr "Spellistor"
|
||||
msgid "Unknown"
|
||||
msgstr "Okänd"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr ""
|
||||
@@ -215,39 +224,33 @@ msgstr ""
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "Spela nästa"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Favourites"
|
||||
msgid "Remove Favourite"
|
||||
msgstr "Favoriter"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, fuzzy, kde-format
|
||||
#| msgid "Favourites"
|
||||
msgid "Add Favourite"
|
||||
msgstr "Favoriter"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "Spelar nu"
|
||||
|
||||
#~ msgid "Queue"
|
||||
#~ msgstr "Köa"
|
||||
|
||||
#~ msgid "Favourite Songs"
|
||||
#~ msgstr "Favoritlåtar"
|
||||
|
||||
|
||||
+32
-35
@@ -6,8 +6,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"PO-Revision-Date: 2023-02-08 11:05+0300\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2023-01-27 18:30+0300\n"
|
||||
"Last-Translator: Emir SARI <[email protected]>\n"
|
||||
"Language-Team: Turkish <[email protected]>\n"
|
||||
"Language: tr\n"
|
||||
@@ -15,7 +15,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Generator: Lokalize 22.12.2\n"
|
||||
"X-Generator: Lokalize 22.12.1\n"
|
||||
|
||||
#, kde-format
|
||||
msgctxt "NAME OF TRANSLATORS"
|
||||
@@ -126,28 +126,37 @@ msgstr "En Çok Çalınanlar"
|
||||
msgid "played Songs"
|
||||
msgstr "Çalınan Şarkılar"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "Şimdi Çalınıyor"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "Kuyruk"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr "Şarkı Sözleri"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Parçayı Kaldır"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "Ortam çalmıyor"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr "%%1"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Parçayı Kaldır"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -199,12 +208,12 @@ msgstr "Çalma Listeleri"
|
||||
msgid "Unknown"
|
||||
msgstr "Bilinmiyor"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr "Eşleşen daha önceden yapılmış arama yok"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr "arama geçmişinden kaldır"
|
||||
@@ -214,43 +223,31 @@ msgstr "arama geçmişinden kaldır"
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr "Kenar Çubuğunu Daralt"
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "Sonrakini Çal"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr "Kuyruğa ekle"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr "Beğenilerden Kaldır"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr "Beğenilere Ekle"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr "Geçmişten Kaldır"
|
||||
|
||||
#~ msgid "%"
|
||||
#~ msgstr "%"
|
||||
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "Şimdi Çalınıyor"
|
||||
|
||||
#~ msgid "Queue"
|
||||
#~ msgstr "Kuyruk"
|
||||
|
||||
#~ msgid "Lyrics"
|
||||
#~ msgstr "Şarkı Sözleri"
|
||||
|
||||
#~ msgid "Favourite Songs"
|
||||
#~ msgstr "Beğenilen Şarkılar"
|
||||
|
||||
|
||||
+32
-35
@@ -6,9 +6,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"PO-Revision-Date: 2023-02-08 08:23+0200\n"
|
||||
"Last-Translator: Yuri Chornoivan <[email protected]>\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2023-01-27 10:54+0200\n"
|
||||
"Last-Translator: Fracture dept <[email protected]>\n"
|
||||
"Language-Team: Ukrainian <[email protected]>\n"
|
||||
"Language: uk\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -127,28 +127,37 @@ msgstr "Часто слухали"
|
||||
msgid "played Songs"
|
||||
msgstr "Відтворені композиції"
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "Зараз відтворюємо"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "Додати до черги"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr "Текст"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Вилучити композицію"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "Відтворення не відбувається"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr "%1%"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "Вилучити композицію"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -200,12 +209,12 @@ msgstr "Списки відтворення"
|
||||
msgid "Unknown"
|
||||
msgstr "Невідомий"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr "Немає відповідних попередніх пошуків"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr "вилучити з журналу пошуку"
|
||||
@@ -215,43 +224,31 @@ msgstr "вилучити з журналу пошуку"
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr "Згорнути бічну панель"
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "Відтворити наступну"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr "Додати до черги"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr "Вилучити з улюблених"
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr "Додати до улюблених"
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr "Вилучити із журналу"
|
||||
|
||||
#~ msgid "%"
|
||||
#~ msgstr "%"
|
||||
|
||||
#~ msgid "Now Playing"
|
||||
#~ msgstr "Зараз відтворюємо"
|
||||
|
||||
#~ msgid "Queue"
|
||||
#~ msgstr "Додати до черги"
|
||||
|
||||
#~ msgid "Lyrics"
|
||||
#~ msgstr "Текст"
|
||||
|
||||
#~ msgid "Favourite Songs"
|
||||
#~ msgstr "Улюблені композиції"
|
||||
|
||||
|
||||
+31
-22
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: kdeorg\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"PO-Revision-Date: 2023-02-07 11:03\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2023-01-12 10:32\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Chinese Simplified\n"
|
||||
"Language: zh_CN\n"
|
||||
@@ -124,28 +124,37 @@ msgstr "最常播放"
|
||||
msgid "played Songs"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr "AudioTube"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr "正在播放"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr "播放队列"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "移除曲目"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr "没有正在播放的媒体"
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr "移除曲目"
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -197,12 +206,12 @@ msgstr "播放列表"
|
||||
msgid "Unknown"
|
||||
msgstr "未知"
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr ""
|
||||
@@ -212,27 +221,27 @@ msgstr ""
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr "播放下一首"
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr ""
|
||||
+30
-21
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: audiotube\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
|
||||
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||
"PO-Revision-Date: 2022-05-30 00:47+0000\n"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: none\n"
|
||||
@@ -125,28 +125,37 @@ msgstr ""
|
||||
msgid "played Songs"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/main.qml:108
|
||||
#: contents/ui/main.qml:109
|
||||
#, kde-format
|
||||
msgid "AudioTube"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:194
|
||||
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||
#, kde-format
|
||||
msgid "Now Playing"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||
#, kde-format
|
||||
msgid "Queue"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||
#, kde-format
|
||||
msgid "Lyrics"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||
#, kde-format
|
||||
msgid "No media playing"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:605
|
||||
#, kde-format
|
||||
msgid "%1%"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/MaximizedPlayerPage.qml:810
|
||||
#: contents/ui/MaximizedPlayerPage.qml:911
|
||||
#, kde-format
|
||||
msgid "Remove Track"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||
#, kde-format
|
||||
msgid "Library"
|
||||
@@ -198,12 +207,12 @@ msgstr ""
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:286
|
||||
#: contents/ui/SearchWithDropdown.qml:287
|
||||
#, kde-format
|
||||
msgid "No matching previous searches"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SearchWithDropdown.qml:321
|
||||
#: contents/ui/SearchWithDropdown.qml:322
|
||||
#, kde-format
|
||||
msgid "remove from search history"
|
||||
msgstr ""
|
||||
@@ -213,27 +222,27 @@ msgstr ""
|
||||
msgid "Collapse Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
|
||||
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||
#, kde-format
|
||||
msgid "Play Next"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
|
||||
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||
#, kde-format
|
||||
msgid "Add to queue"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Remove Favourite"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
|
||||
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||
#, kde-format
|
||||
msgid "Add Favourite"
|
||||
msgstr ""
|
||||
|
||||
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
|
||||
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||
#, kde-format
|
||||
msgid "Remove from History"
|
||||
msgstr ""
|
||||
+3
-3
@@ -33,6 +33,7 @@ add_executable(audiotube
|
||||
errorhandler.cpp
|
||||
playerutils.cpp
|
||||
abstractytmusicmodel.cpp
|
||||
autolistmodel.h
|
||||
multiiterableview.h
|
||||
library.cpp
|
||||
resources.qrc
|
||||
@@ -51,12 +52,11 @@ target_link_libraries(audiotube
|
||||
KF5::CoreAddons
|
||||
KF5::Crash
|
||||
KF5::WindowSystem
|
||||
Desert::desert
|
||||
ytm
|
||||
asyncdatabase
|
||||
)
|
||||
|
||||
target_compile_definitions(audiotube PRIVATE
|
||||
-DAUDIOTUBE_VERSION_STRING="${RELEASE_SERVICE_VERSION}"
|
||||
-DQT_NO_KEYWORDS -DQT_NO_URL_CAST_FROM_STRING)
|
||||
target_compile_definitions(audiotube PRIVATE -DQT_NO_KEYWORDS -DQT_NO_URL_CAST_FROM_STRING)
|
||||
|
||||
install(TARGETS audiotube ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
|
||||
@@ -148,13 +148,6 @@ QFuture<Lyrics> AsyncYTMusic::fetchLyrics(const QString &browseId)
|
||||
});
|
||||
}
|
||||
|
||||
QFuture<QString> AsyncYTMusic::version()
|
||||
{
|
||||
return invokeAndCatchOnThread([this]() {
|
||||
return QString::fromStdString(m_ytm->get_version());
|
||||
});
|
||||
}
|
||||
|
||||
YTMusicThread &YTMusicThread::instance()
|
||||
{
|
||||
static YTMusicThread thread;
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
#include <QFuture>
|
||||
#include <QFutureWatcher>
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
|
||||
#include <ytmusic.h>
|
||||
@@ -124,8 +123,6 @@ public:
|
||||
|
||||
QFuture<Lyrics> fetchLyrics(const QString &browseId);
|
||||
|
||||
QFuture<QString> version();
|
||||
|
||||
Q_SIGNAL void errorOccurred(const QString &error);
|
||||
|
||||
protected:
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
// SPDX-FileCopyrightText: 2023 Jonah Brüchert <[email protected]>
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QAbstractListModel>
|
||||
#include <QDebug>
|
||||
|
||||
#include <Desert/Reflection>
|
||||
|
||||
#include "updateablemodel.h"
|
||||
|
||||
template <typename T>
|
||||
using AutoListModelBase = UpdateableModel<QAbstractListModel, T>;
|
||||
|
||||
template <typename T>
|
||||
concept IsComparable = requires(T v, T o)
|
||||
{
|
||||
{ v == o } -> std::same_as<bool>;
|
||||
{ v < o } -> std::same_as<bool>;
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
requires desert::IsDesertObject<T> && IsComparable<T>
|
||||
class AutoListModel : public AutoListModelBase<T>
|
||||
{
|
||||
public:
|
||||
AutoListModel(QObject *parent = nullptr) : AutoListModelBase<T>(parent) {
|
||||
|
||||
}
|
||||
|
||||
QHash<int, QByteArray> roleNames() const override {
|
||||
QHash<int, QByteArray> roles;
|
||||
int i = Qt::UserRole + 1;
|
||||
T mock_obj;
|
||||
desert::iterate_struct(mock_obj, [&](auto attribute) {
|
||||
roles.insert(i, attribute.attributeName().toUtf8());
|
||||
i++;
|
||||
});
|
||||
return roles;
|
||||
}
|
||||
|
||||
int rowCount(const QModelIndex &parent) const override {
|
||||
return parent.isValid() ? 0 : m_data.size();
|
||||
}
|
||||
|
||||
QVariant data(const QModelIndex &index, int role) const override {
|
||||
int structIndex = role - Qt::UserRole - 1;
|
||||
if (structIndex >= pfr::tuple_size_v<T>) {
|
||||
qDebug() << "Tried to fetch a role that is not defined by this model. Role id:" << role;
|
||||
return {};
|
||||
}
|
||||
return structAttributeAt<0, T>(m_data.at(index.row()), structIndex);
|
||||
}
|
||||
|
||||
void updateData(std::vector<T> &&updatedData) {
|
||||
// allow comparing items. Could also have used an operator< on Data
|
||||
auto lessThan = [](const T &lhs, const T &rhs) { return lhs < rhs; };
|
||||
// check if the item has changed data, but is otherwise the same object. Needs to return the actual changes made.
|
||||
auto itemHasChanged = [](const T &lhs, const T &rhs) {
|
||||
typename AutoListModelBase<T>::DataChanges changes;
|
||||
if (lhs != rhs)
|
||||
changes.changedColumns.append(0);
|
||||
changes.changedRoles = QVector<int>{}; // TODO more specific updates
|
||||
return changes;
|
||||
};
|
||||
|
||||
// call the updateData method to trigger merging in the changes to the model
|
||||
auto changes = AutoListModelBase<T>::updateData(updatedData.cbegin(), updatedData.cend(), m_data, lessThan, itemHasChanged);
|
||||
|
||||
// the method above returns some stats, so lets print them.
|
||||
qDebug() << "changes in model: inserts:" << changes.inserts << " deletes:" << changes.removals
|
||||
<< " updates:" << changes.updates;
|
||||
}
|
||||
|
||||
private:
|
||||
std::vector<T> m_data;
|
||||
};
|
||||
|
||||
template <size_t i, typename T>
|
||||
requires desert::IsDesertObject<T>
|
||||
QVariant structAttributeAt(const T &object, size_t index) {
|
||||
if constexpr (i >= pfr::tuple_size_v<T>) {
|
||||
Q_UNREACHABLE();
|
||||
} else if (i == index) {
|
||||
return QVariant::fromValue(pfr::get<i>(object).value);
|
||||
} else {
|
||||
return structAttributeAt<i + 1>(object, index);
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
// SPDX-FileCopyrightText: 2022 Mathis Brüchert <[email protected]>
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
|
||||
import org.kde.kirigamiaddons.labs.mobileform 0.1 as MobileForm
|
||||
|
||||
import QtQuick 2.15
|
||||
import QtQuick.Layouts 1.3
|
||||
import QtQuick.Controls 2.15 as Controls
|
||||
import org.kde.kirigami 2.20 as Kirigami
|
||||
import org.kde.ytmusic 1.0
|
||||
|
||||
MobileForm.AboutPage {
|
||||
aboutData: About
|
||||
|
||||
showAboutKDE: false
|
||||
}
|
||||
@@ -47,34 +47,6 @@ Kirigami.ScrollablePage {
|
||||
}
|
||||
}
|
||||
|
||||
Kirigami.Icon {
|
||||
id: favouritesPlaceholder
|
||||
|
||||
implicitWidth: Kirigami.Units.gridUnit * 19
|
||||
implicitHeight: Kirigami.Units.gridUnit * 19
|
||||
|
||||
visible: favouriteRepeater.count === 0
|
||||
opacity: 0.4
|
||||
isMask: true
|
||||
source: "qrc:/resources/favourites_placeholder.svg"
|
||||
color: Kirigami.Theme.hoverColor
|
||||
|
||||
Layout.margins: Kirigami.Units.gridUnit * 2
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
Controls.Label {
|
||||
visible: favouriteRepeater.count === 0
|
||||
color: Kirigami.Theme.disabledTextColor
|
||||
text: i18n("No Favourites Yet")
|
||||
|
||||
font {
|
||||
bold: true
|
||||
pointSize: 15
|
||||
}
|
||||
|
||||
anchors.centerIn: favouritesPlaceholder
|
||||
}
|
||||
Controls.ScrollView {
|
||||
leftPadding: 15
|
||||
rightPadding: 25
|
||||
@@ -82,14 +54,12 @@ Kirigami.ScrollablePage {
|
||||
RowLayout {
|
||||
spacing: 20
|
||||
Repeater {
|
||||
id: favouriteRepeater
|
||||
Layout.fillWidth: true
|
||||
model: Library.favourites
|
||||
delegate: ColumnLayout {
|
||||
id: delegateItem
|
||||
required property string title
|
||||
required property var artists
|
||||
required property string artistsDisplayString
|
||||
required property string artists
|
||||
required property string videoId
|
||||
required property int index
|
||||
|
||||
@@ -212,7 +182,7 @@ Kirigami.ScrollablePage {
|
||||
Layout.maximumWidth: 200
|
||||
leftPadding: 5
|
||||
color: Kirigami.Theme.disabledTextColor
|
||||
text: delegateItem.artistsDisplayString
|
||||
text: delegateItem.artists
|
||||
elide: Text.ElideRight
|
||||
}
|
||||
}
|
||||
@@ -221,8 +191,8 @@ Kirigami.ScrollablePage {
|
||||
icon.name: "view-more-horizontal-symbolic"
|
||||
onPressed: menu.openForSong(delegateItem.videoId,
|
||||
delegateItem.title,
|
||||
delegateItem.artists,
|
||||
delegateItem.artistsDisplayString)
|
||||
delegateItem.artists, // TODO
|
||||
delegateItem.artists)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -261,27 +231,6 @@ Kirigami.ScrollablePage {
|
||||
})}
|
||||
}
|
||||
}
|
||||
Kirigami.Icon {
|
||||
visible: mostPlayedRepeater.count == 0
|
||||
Layout.margins: 20
|
||||
isMask: true
|
||||
opacity:0.4
|
||||
color: Kirigami.Theme.hoverColor
|
||||
id:playedPlaceholder
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.fillWidth: true
|
||||
implicitWidth: 190
|
||||
implicitHeight: 190
|
||||
source: "qrc:/resources/played_placeholder.svg"
|
||||
}
|
||||
Controls.Label {
|
||||
visible: mostPlayedRepeater.count == 0
|
||||
color: Kirigami.Theme.disabledTextColor
|
||||
anchors.centerIn:playedPlaceholder
|
||||
font.bold: true
|
||||
font.pointSize: 15
|
||||
text: i18n("No Songs Played Yet")
|
||||
}
|
||||
Controls.ScrollView {
|
||||
leftPadding: 15
|
||||
rightPadding: 25
|
||||
@@ -289,14 +238,12 @@ Kirigami.ScrollablePage {
|
||||
RowLayout {
|
||||
spacing: 20
|
||||
Repeater {
|
||||
id: mostPlayedRepeater
|
||||
Layout.fillWidth: true
|
||||
model: Library.mostPlayed
|
||||
delegate: ColumnLayout {
|
||||
id: mpdelegateItem
|
||||
required property string title
|
||||
required property var artists
|
||||
required property string artistsDisplayString
|
||||
required property string artists
|
||||
required property string videoId
|
||||
|
||||
Layout.fillWidth: false
|
||||
@@ -416,7 +363,7 @@ Kirigami.ScrollablePage {
|
||||
Layout.maximumWidth: 200
|
||||
leftPadding: 5
|
||||
color: Kirigami.Theme.disabledTextColor
|
||||
text: mpdelegateItem.artistsDisplayString
|
||||
text: mpdelegateItem.artists
|
||||
elide: Text.ElideRight
|
||||
}
|
||||
}
|
||||
@@ -425,8 +372,8 @@ Kirigami.ScrollablePage {
|
||||
icon.name: "view-more-horizontal-symbolic"
|
||||
onPressed: menu.openForSong(mpdelegateItem.videoId,
|
||||
mpdelegateItem.title,
|
||||
mpdelegateItem.artists,
|
||||
mpdelegateItem.artistsDisplayString)
|
||||
mpdelegateItem.artists, // TODO
|
||||
mpdelegateItem.artists)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -22,12 +22,14 @@ Item {
|
||||
required property var info // VideoInfoExtractor object
|
||||
required property var audio // Audio object
|
||||
|
||||
readonly property bool isWidescreen: width >= Kirigami.Units.gridUnit * 50
|
||||
readonly property bool isWidescreen: width >= Kirigami.Units.gridUnit * 40
|
||||
|
||||
signal requestOpen()
|
||||
|
||||
Rectangle {
|
||||
id: miniProgressBar
|
||||
z: 1
|
||||
visible: !root.isWidescreen
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
height: root.progressBarHeight
|
||||
@@ -36,14 +38,14 @@ Item {
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
width: !isWidescreen ? root.width - controlButtonBox.width: root.width
|
||||
anchors.fill: parent
|
||||
spacing: 0
|
||||
|
||||
Rectangle {
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
|
||||
Layout.maximumWidth: Kirigami.Units.gridUnit * 20
|
||||
Layout.preferredWidth: Kirigami.Units.gridUnit * 20
|
||||
color: Qt.rgba(0, 0, 0, trackClick.containsMouse ? 0.1 : trackClick.pressed ? 0.3 : 0)
|
||||
|
||||
RowLayout {
|
||||
@@ -76,12 +78,10 @@ Item {
|
||||
Kirigami.Theme.colorSet: Kirigami.Theme.Complementary
|
||||
Kirigami.Theme.inherit: false
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// track information
|
||||
ColumnLayout {
|
||||
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
|
||||
@@ -92,7 +92,6 @@ Item {
|
||||
wrapMode: Text.Wrap
|
||||
Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: Kirigami.Units.gridUnit * 15
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
elide: Text.ElideRight
|
||||
maximumLineCount: 1
|
||||
@@ -113,16 +112,14 @@ Item {
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
elide: Text.ElideRight
|
||||
maximumLineCount: 1
|
||||
Layout.maximumWidth: Kirigami.Units.gridUnit * 15
|
||||
// Hardcoded because the footerbar blur always makes a dark-ish
|
||||
// background, so we don't want to use a color scheme color that
|
||||
// might also be dark
|
||||
color: "white"
|
||||
}
|
||||
}
|
||||
Item{Layout.fillWidth: true}
|
||||
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: trackClick
|
||||
anchors.fill: parent
|
||||
@@ -130,159 +127,85 @@ Item {
|
||||
onClicked: root.requestOpen()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
visible: root.isWidescreen
|
||||
Layout.preferredWidth: 0
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
Layout.leftMargin: Kirigami.Units.largeSpacing
|
||||
Layout.rightMargin: Kirigami.Units.largeSpacing
|
||||
spacing: Kirigami.Units.smallSpacing
|
||||
|
||||
Label {
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
color: "white"
|
||||
visible: info.title
|
||||
text: PlayerUtils.formatTimestamp(audio.position)
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
id: controlButtonBox
|
||||
anchors.centerIn: isWidescreen ? parent : null
|
||||
anchors.right: !isWidescreen ? parent.right : null
|
||||
anchors.top: parent.top
|
||||
anchors.bottom: parent.bottom
|
||||
spacing: 2
|
||||
Slider {
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
Layout.fillWidth: true
|
||||
from: 0
|
||||
to: audio.duration
|
||||
value: audio.position
|
||||
enabled: audio.seekable
|
||||
onMoved: {
|
||||
console.log("Value:", value);
|
||||
audio.seek(Math.floor(value));
|
||||
}
|
||||
|
||||
Label {
|
||||
color: "white"
|
||||
visible: info.title && root.isWidescreen
|
||||
text: PlayerUtils.formatTimestamp(audio.position)
|
||||
Layout.rightMargin: 20
|
||||
Behavior on value {
|
||||
NumberAnimation {
|
||||
duration: 1000
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Label {
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
color: "white"
|
||||
visible: info.title
|
||||
text: PlayerUtils.formatTimestamp(audio.duration)
|
||||
}
|
||||
}
|
||||
|
||||
Button {
|
||||
id: skipBackwardButton
|
||||
implicitHeight: 40
|
||||
implicitWidth: 40
|
||||
Layout.fillHeight: !isWidescreen
|
||||
|
||||
Kirigami.Theme.colorSet: Kirigami.Theme.Complementary
|
||||
Kirigami.Theme.inherit: false
|
||||
|
||||
enabled: UserPlaylistModel.canSkipBack
|
||||
onClicked: UserPlaylistModel.previous()
|
||||
|
||||
contentItem: Item {
|
||||
Kirigami.Icon {
|
||||
anchors.centerIn: parent
|
||||
source:"media-skip-backward"
|
||||
color: "white"
|
||||
width: Kirigami.Units.gridUnit
|
||||
height: Kirigami.Units.gridUnit
|
||||
}
|
||||
}
|
||||
|
||||
background: Kirigami.ShadowedRectangle {
|
||||
corners.topLeftRadius: isWidescreen ? 7 : 0
|
||||
corners.bottomLeftRadius: isWidescreen ? 7 : 0
|
||||
|
||||
color: if (isWidescreen) {
|
||||
if (parent.down) {
|
||||
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.3)
|
||||
} else if(parent.hovered) {
|
||||
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.7)
|
||||
} else {
|
||||
Qt.rgba(1, 1, 1, 0.2)
|
||||
}
|
||||
} else {
|
||||
if (parent.down) {
|
||||
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.3)
|
||||
} else if (parent.hovered){
|
||||
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.7)
|
||||
} else {
|
||||
"transparent"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Button {
|
||||
ToolButton {
|
||||
id: playPauseButton
|
||||
implicitHeight: 40
|
||||
implicitWidth: 60
|
||||
Layout.fillHeight: !isWidescreen
|
||||
Layout.preferredHeight: Kirigami.Units.gridUnit * 3
|
||||
Layout.maximumWidth: height
|
||||
Layout.preferredWidth: height
|
||||
|
||||
enabled: info.audioUrl != ""
|
||||
onClicked: audio.playbackState === Audio.PlayingState ? audio.pause() : audio.play()
|
||||
contentItem: Item {
|
||||
Kirigami.Icon {
|
||||
anchors.centerIn:parent
|
||||
source: audio.playbackState === Audio.PlayingState ? "media-playback-pause" : "media-playback-start"
|
||||
color: "white"
|
||||
width: Kirigami.Units.gridUnit
|
||||
height: Kirigami.Units.gridUnit
|
||||
}
|
||||
}
|
||||
|
||||
background: Kirigami.ShadowedRectangle {
|
||||
color: if (isWidescreen) {
|
||||
if (parent.down) {
|
||||
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.3)
|
||||
} else if (parent.hovered) {
|
||||
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.7)
|
||||
} else {
|
||||
Qt.rgba(1, 1, 1, 0.2)
|
||||
}
|
||||
} else {
|
||||
if (parent.down) {
|
||||
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.3)
|
||||
} else if (parent.hovered) {
|
||||
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.7)
|
||||
} else {
|
||||
"transparent"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Button {
|
||||
id: skipForwardButton
|
||||
implicitHeight: 40
|
||||
implicitWidth: 40
|
||||
Layout.fillHeight: !isWidescreen
|
||||
Layout.rightMargin: isWidescreen ? 0 : 10
|
||||
Layout.alignment: !Qt.AlignVCenter
|
||||
|
||||
icon.name: audio.playbackState === Audio.PlayingState ? "media-playback-pause" : "media-playback-start"
|
||||
icon.width: Kirigami.Units.gridUnit
|
||||
icon.height: Kirigami.Units.gridUnit
|
||||
icon.color: "white"
|
||||
|
||||
Kirigami.Theme.colorSet: Kirigami.Theme.Complementary
|
||||
Kirigami.Theme.inherit: false
|
||||
|
||||
}
|
||||
|
||||
ToolButton {
|
||||
id: skipForwardButton
|
||||
Layout.rightMargin: Math.floor(Kirigami.Units.smallSpacing / 2)
|
||||
Layout.preferredHeight: Kirigami.Units.gridUnit * 3
|
||||
Layout.maximumWidth: height
|
||||
Layout.preferredWidth: height
|
||||
|
||||
enabled: UserPlaylistModel.canSkip
|
||||
onClicked: UserPlaylistModel.next()
|
||||
contentItem: Item {
|
||||
Kirigami.Icon {
|
||||
anchors.centerIn: parent
|
||||
source:"media-skip-forward"
|
||||
color: "white"
|
||||
width: Kirigami.Units.gridUnit
|
||||
height: Kirigami.Units.gridUnit
|
||||
}
|
||||
}
|
||||
background: Kirigami.ShadowedRectangle {
|
||||
corners.topRightRadius: isWidescreen ? 7 : 0
|
||||
corners.bottomRightRadius: isWidescreen ? 7 : 0
|
||||
color: if (isWidescreen) {
|
||||
if (parent.down) {
|
||||
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.3)
|
||||
} else if (parent.hovered) {
|
||||
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.7)
|
||||
} else {
|
||||
Qt.rgba(1, 1, 1, 0.2)
|
||||
}
|
||||
} else {
|
||||
if (parent.down) {
|
||||
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.3)
|
||||
} else if(parent.hovered) {
|
||||
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.7)
|
||||
} else {
|
||||
"transparent"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Label {
|
||||
color: "white"
|
||||
visible: info.title && root.isWidescreen
|
||||
text: PlayerUtils.formatTimestamp(audio.duration)
|
||||
Layout.leftMargin: 20
|
||||
|
||||
icon.name: "media-skip-forward"
|
||||
icon.width: Kirigami.Units.gridUnit
|
||||
icon.height: Kirigami.Units.gridUnit
|
||||
icon.color: "white"
|
||||
|
||||
Kirigami.Theme.colorSet: Kirigami.Theme.Complementary
|
||||
Kirigami.Theme.inherit: false
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -36,8 +36,7 @@ Kirigami.ScrollablePage {
|
||||
|
||||
required property string title
|
||||
required property string videoId
|
||||
required property var artists
|
||||
required property string artistsDisplayString
|
||||
required property string artists
|
||||
required property int index
|
||||
|
||||
onClicked: {
|
||||
|
||||
@@ -20,7 +20,7 @@ Flickable {
|
||||
property int footerSpacing:0
|
||||
property bool maximized: false
|
||||
|
||||
readonly property int progressBarHeight: Kirigami.Units.gridUnit / 4
|
||||
readonly property int progressBarHeight: Kirigami.Units.gridUnit / 6
|
||||
readonly property int minimizedPlayerContentHeight: Math.round(Kirigami.Units.gridUnit * 3.5)
|
||||
readonly property int minimizedPlayerHeight: minimizedPlayerContentHeight + progressBarHeight
|
||||
|
||||
@@ -158,8 +158,8 @@ Flickable {
|
||||
layer.effect: HueSaturation {
|
||||
cached: true
|
||||
|
||||
lightness: -0.7
|
||||
saturation: 3
|
||||
lightness: -0.5
|
||||
saturation: 1.9
|
||||
|
||||
layer.enabled: true
|
||||
layer.effect: FastBlur {
|
||||
|
||||
@@ -49,7 +49,7 @@ Item {
|
||||
pageStack.push("qrc:/SearchPage.qml", {
|
||||
"searchQuery": text,
|
||||
objectName: "searchPage"
|
||||
})
|
||||
})
|
||||
} else {
|
||||
wideScreen
|
||||
? pageStack.push("qrc:/LibraryPage.qml")
|
||||
@@ -176,7 +176,7 @@ Item {
|
||||
? (Math.min(content.implicitHeight, Kirigami.Units.gridUnit * 20))+2*(popup.shadowSize+popup.expansion)
|
||||
: (Kirigami.Units.gridUnit * 20)+2*(popup.shadowSize+popup.expansion)
|
||||
duration: 100
|
||||
to: searchField.height
|
||||
to: searchField.heigth
|
||||
}
|
||||
NumberAnimation on width{
|
||||
id: playCloseWidth
|
||||
@@ -203,6 +203,9 @@ Item {
|
||||
to: -0
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
contentItem: ColumnLayout{
|
||||
id: content
|
||||
width: parent.width
|
||||
@@ -221,8 +224,6 @@ Item {
|
||||
|
||||
Controls.ScrollView {
|
||||
id: mainScrollView
|
||||
|
||||
clip: true
|
||||
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
@@ -298,6 +299,8 @@ Item {
|
||||
filterRegularExpression: searchField.filterExpression
|
||||
}
|
||||
delegate: Kirigami.AbstractListItem {
|
||||
required property string query
|
||||
|
||||
id: completionDelegate
|
||||
highlighted: focus
|
||||
Kirigami.Theme.colorSet: Kirigami.Theme.Window
|
||||
@@ -313,7 +316,7 @@ Item {
|
||||
color: Kirigami.Theme.disabledTextColor
|
||||
}
|
||||
Controls.Label{
|
||||
text: model.display
|
||||
text: query
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
Controls.ToolButton {
|
||||
@@ -321,13 +324,13 @@ Item {
|
||||
text: i18n("remove from search history")
|
||||
display: Controls.AbstractButton.IconOnly
|
||||
onClicked: {
|
||||
Library.removeSearch(model.display)
|
||||
Library.removeSearch(query)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
onClicked: {
|
||||
searchField.text = model.display
|
||||
searchField.text = query
|
||||
searchField.accepted()
|
||||
}
|
||||
}
|
||||
@@ -336,4 +339,5 @@ Item {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+12
-14
@@ -150,28 +150,26 @@ Rectangle {
|
||||
"title": i18n("Played Songs"),
|
||||
"objectName": "history"
|
||||
})}
|
||||
|
||||
}
|
||||
|
||||
// Kirigami.NavigationTabButton {
|
||||
// Layout.fillWidth: true
|
||||
// width: column.width - column.Layout.leftMargin - column.Layout.rightMargin
|
||||
// implicitHeight: 50
|
||||
// display: Controls.AbstractButton.TextBesideIcon
|
||||
// text: i18n("Charts")
|
||||
// icon.name: "office-chart-line-forecast"
|
||||
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
Kirigami.Separator {
|
||||
Layout.fillWidth: true
|
||||
Layout.rightMargin: Kirigami.Units.smallSpacing
|
||||
Layout.leftMargin: Kirigami.Units.smallSpacing
|
||||
}
|
||||
Kirigami.NavigationTabButton {
|
||||
id: aboutButton
|
||||
Layout.fillWidth: true
|
||||
width: column.width - column.Layout.leftMargin - column.Layout.rightMargin
|
||||
implicitHeight: 50
|
||||
display: Controls.AbstractButton.TextBesideIcon
|
||||
text: collapsed? "" : i18n("About")
|
||||
checkable: false
|
||||
icon.name: "help-about-symbolic"
|
||||
|
||||
onClicked: {
|
||||
pageStack.pushDialogLayer("qrc:/AboutAudiotube.qml")
|
||||
}
|
||||
}
|
||||
|
||||
Kirigami.NavigationTabButton {
|
||||
id: collapseButton
|
||||
|
||||
@@ -58,16 +58,13 @@ Item {
|
||||
videoId: drawer.videoId
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
Layout.margins: 5
|
||||
radius:50
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
color: Kirigami.Theme.textColor
|
||||
opacity: 0.7
|
||||
width: 40
|
||||
height: 4
|
||||
|
||||
}
|
||||
// Kirigami.Icon {
|
||||
// Layout.margins: Kirigami.Units.smallSpacing
|
||||
// source: "arrow-down"
|
||||
// implicitWidth: Kirigami.Units.gridUnit
|
||||
// implicitHeight: Kirigami.Units.gridUnit
|
||||
// Layout.alignment: Qt.AlignHCenter
|
||||
// }
|
||||
RowLayout {
|
||||
spacing: 10
|
||||
Kirigami.ShadowedRectangle {
|
||||
|
||||
+17
-16
@@ -62,23 +62,24 @@ Kirigami.ApplicationWindow {
|
||||
}
|
||||
|
||||
contentItem: RowLayout {
|
||||
spacing: 0
|
||||
Row {
|
||||
Layout.alignment: Qt.AlignLeft
|
||||
|
||||
Controls.ToolButton {
|
||||
id: back
|
||||
enabled: applicationWindow().pageStack.layers.depth > 1 || (applicationWindow().pageStack.depth > 1 && (applicationWindow().pageStack.currentIndex > 0 || applicationWindow().pageStack.contentItem.contentX > 0)) // Copied from https://invent.kde.org/frameworks/kirigami/-/blob/master/src/controls/templates/private/BackButton.qml#L16
|
||||
icon.name: "draw-arrow-back"
|
||||
onClicked: pageStack.goBack()
|
||||
visible: wideScreen
|
||||
}
|
||||
Controls.ToolButton {
|
||||
icon.name: "draw-arrow-forward"
|
||||
enabled: applicationWindow().pageStack.currentIndex < applicationWindow().pageStack.depth-1
|
||||
onClicked: pageStack.goForward()
|
||||
visible: wideScreen
|
||||
}
|
||||
|
||||
|
||||
Controls.ToolButton {
|
||||
id: back
|
||||
enabled: applicationWindow().pageStack.layers.depth > 1 || (applicationWindow().pageStack.depth > 1 && (applicationWindow().pageStack.currentIndex > 0 || applicationWindow().pageStack.contentItem.contentX > 0)) // Copied from https://invent.kde.org/frameworks/kirigami/-/blob/master/src/controls/templates/private/BackButton.qml#L16
|
||||
icon.name: "draw-arrow-back"
|
||||
onClicked: pageStack.goBack()
|
||||
visible: wideScreen
|
||||
}
|
||||
Controls.ToolButton {
|
||||
icon.name: "draw-arrow-forward"
|
||||
enabled: applicationWindow().pageStack.currentIndex < applicationWindow().pageStack.depth-1
|
||||
onClicked: pageStack.goForward()
|
||||
anchors.left: back.right
|
||||
visible: wideScreen
|
||||
|
||||
|
||||
}
|
||||
|
||||
// spacer
|
||||
|
||||
+33
-106
@@ -40,8 +40,7 @@ Library &Library::instance()
|
||||
|
||||
FavouritesModel *Library::favourites()
|
||||
{
|
||||
auto future = m_database->getResults<Song>("select * from favourites natural join songs order by favourites.rowid desc");
|
||||
return new FavouritesModel(std::move(future), this);
|
||||
return new FavouritesModel(this);
|
||||
}
|
||||
|
||||
void Library::addFavourite(const QString &videoId, const QString &title, const QString &artist, const QString &album)
|
||||
@@ -66,7 +65,7 @@ FavouriteWatcher *Library::favouriteWatcher(const QString &videoId)
|
||||
|
||||
SearchHistoryModel *Library::searches()
|
||||
{
|
||||
return new SearchHistoryModel(m_database->getResults<SingleValue<QString>>("select distinct (search_query) from searches order by search_id desc"), this);
|
||||
return new SearchHistoryModel(this);
|
||||
}
|
||||
|
||||
void Library::addSearch(const QString &text)
|
||||
@@ -81,8 +80,7 @@ void Library::removeSearch(const QString &text)
|
||||
|
||||
PlaybackHistoryModel *Library::playbackHistory()
|
||||
{
|
||||
auto future = m_database->getResults<PlayedSong>("select * from played_songs natural join songs");
|
||||
return new PlaybackHistoryModel(std::move(future), this);
|
||||
return new PlaybackHistoryModel(this, PlaybackHistoryModel::History);
|
||||
}
|
||||
|
||||
void Library::addPlaybackHistoryItem(const QString &videoId, const QString &title, const QString &artist, const QString &album)
|
||||
@@ -110,8 +108,7 @@ WasPlayedWatcher *Library::wasPlayedWatcher(const QString& videoId)
|
||||
|
||||
PlaybackHistoryModel *Library::mostPlayed()
|
||||
{
|
||||
auto future = m_database->getResults<PlayedSong>("select * from played_songs natural join songs order by plays desc limit 10");
|
||||
return new PlaybackHistoryModel(std::move(future), this);
|
||||
return new PlaybackHistoryModel(this, PlaybackHistoryModel::MostPlayed);
|
||||
}
|
||||
|
||||
QNetworkAccessManager &Library::nam()
|
||||
@@ -171,93 +168,35 @@ void ThumbnailSource::setVideoId(const QString &id) {
|
||||
});
|
||||
}
|
||||
|
||||
PlaybackHistoryModel::PlaybackHistoryModel(QFuture<std::vector<PlayedSong> > &&songs, QObject *parent)
|
||||
: QAbstractListModel(parent)
|
||||
PlaybackHistoryModel::PlaybackHistoryModel(Library *library, Type type)
|
||||
: AutoListModel<PlayedSong>(library)
|
||||
{
|
||||
connectFuture(songs, this, [this](const auto songs) {
|
||||
beginResetModel();
|
||||
m_playedSongs = songs;
|
||||
endResetModel();
|
||||
});
|
||||
}
|
||||
|
||||
QHash<int, QByteArray> PlaybackHistoryModel::roleNames() const {
|
||||
return {
|
||||
{Roles::VideoId, "videoId"},
|
||||
{Roles::Title, "title"},
|
||||
{Roles::Artists, "artists"},
|
||||
{Roles::ArtistsDisplayString, "artistsDisplayString"},
|
||||
{Roles::Plays, "plays"}
|
||||
};
|
||||
}
|
||||
|
||||
int PlaybackHistoryModel::rowCount(const QModelIndex &parent) const {
|
||||
return parent.isValid() ? 0 : m_playedSongs.size();
|
||||
}
|
||||
|
||||
QVariant PlaybackHistoryModel::data(const QModelIndex &index, int role) const {
|
||||
switch (role) {
|
||||
case Roles::VideoId:
|
||||
return m_playedSongs.at(index.row()).videoId;
|
||||
case Roles::Title:
|
||||
return m_playedSongs.at(index.row()).title;
|
||||
case Roles::Artists:
|
||||
return QVariant::fromValue(std::vector<meta::Artist> {
|
||||
{
|
||||
m_playedSongs.at(index.row()).artist.toStdString(),
|
||||
{}
|
||||
auto update = [=, this]() {
|
||||
auto future = [=, this]() {
|
||||
if (type == MostPlayed) {
|
||||
return library->database().getResults<PlayedSong>("select * from played_songs natural join songs order by plays desc limit 10");
|
||||
} else {
|
||||
return library->database().getResults<PlayedSong>("select * from played_songs natural join songs");
|
||||
}
|
||||
});
|
||||
case Roles::ArtistsDisplayString:
|
||||
return m_playedSongs.at(index.row()).artist;
|
||||
case Roles::Plays:
|
||||
return m_playedSongs.at(index.row()).plays;
|
||||
}
|
||||
}();
|
||||
|
||||
Q_UNREACHABLE();
|
||||
connectFuture(future, this, &PlaybackHistoryModel::updateData);
|
||||
};
|
||||
|
||||
update();
|
||||
connect(library, &Library::playbackHistoryChanged, this, update);
|
||||
}
|
||||
|
||||
FavouritesModel::FavouritesModel(QFuture<std::vector<Song>> &&songs, QObject *parent)
|
||||
: QAbstractListModel(parent)
|
||||
FavouritesModel::FavouritesModel(Library *library)
|
||||
: AutoListModel<Song>(library)
|
||||
{
|
||||
connectFuture(songs, this, [this](const auto songs) {
|
||||
beginResetModel();
|
||||
m_favouriteSongs = songs;
|
||||
endResetModel();
|
||||
});
|
||||
}
|
||||
|
||||
QHash<int, QByteArray> FavouritesModel::roleNames() const {
|
||||
return {
|
||||
{Roles::VideoId, "videoId"},
|
||||
{Roles::Title, "title"},
|
||||
{Roles::Artists, "artists"},
|
||||
{Roles::ArtistsDisplayString, "artistsDisplayString"}
|
||||
auto update = [=, this]() {
|
||||
auto future = library->database().getResults<Song>("select * from favourites natural join songs order by favourites.rowid desc");
|
||||
connectFuture(future, this, &FavouritesModel::updateData);
|
||||
};
|
||||
}
|
||||
|
||||
int FavouritesModel::rowCount(const QModelIndex &parent) const {
|
||||
return parent.isValid() ? 0 : m_favouriteSongs.size();
|
||||
}
|
||||
|
||||
QVariant FavouritesModel::data(const QModelIndex &index, int role) const {
|
||||
switch (role) {
|
||||
case Roles::VideoId:
|
||||
return m_favouriteSongs.at(index.row()).videoId;
|
||||
case Roles::Title:
|
||||
return m_favouriteSongs.at(index.row()).title;
|
||||
case Roles::ArtistsDisplayString:
|
||||
return m_favouriteSongs.at(index.row()).artist;
|
||||
case Roles::Artists:
|
||||
return QVariant::fromValue(std::vector<meta::Artist> {
|
||||
{
|
||||
m_favouriteSongs.at(index.row()).artist.toStdString(),
|
||||
{}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Q_UNREACHABLE();
|
||||
update();
|
||||
connect(library, &Library::favouritesChanged, this, update);
|
||||
}
|
||||
|
||||
FavouriteWatcher::FavouriteWatcher(Library *library, const QString &videoId)
|
||||
@@ -279,27 +218,15 @@ bool FavouriteWatcher::isFavourite() const {
|
||||
return m_isFavourite;
|
||||
}
|
||||
|
||||
SearchHistoryModel::SearchHistoryModel(QFuture<std::vector<SingleValue<QString>>> &&historyFuture, QObject *parent)
|
||||
: QAbstractListModel(parent)
|
||||
SearchHistoryModel::SearchHistoryModel(Library *library)
|
||||
: AutoListModel<SearchQuery>(library)
|
||||
{
|
||||
connectFuture(historyFuture, this, [this](const auto history) {
|
||||
beginResetModel();
|
||||
m_history = history;
|
||||
endResetModel();
|
||||
});
|
||||
}
|
||||
|
||||
int SearchHistoryModel::rowCount(const QModelIndex &parent) const {
|
||||
return parent.isValid() ? 0 : m_history.size();
|
||||
}
|
||||
|
||||
QVariant SearchHistoryModel::data(const QModelIndex &index, int role) const {
|
||||
switch (role) {
|
||||
case Qt::DisplayRole:
|
||||
return m_history[index.row()].value;
|
||||
}
|
||||
|
||||
Q_UNREACHABLE();
|
||||
auto update = [=, this]() {
|
||||
auto future = library->database().getResults<SearchQuery>("select distinct (search_query) from searches order by search_id desc");
|
||||
connectFuture(future, this, &SearchHistoryModel::updateData);
|
||||
};
|
||||
update();
|
||||
connect(library, &Library::searchesChanged, update);
|
||||
}
|
||||
|
||||
WasPlayedWatcher::WasPlayedWatcher(Library* library, const QString& videoId)
|
||||
|
||||
+56
-51
@@ -15,10 +15,22 @@
|
||||
#include "asyncytmusic.h"
|
||||
#include "asyncdatabase.h"
|
||||
|
||||
#include "autolistmodel.h"
|
||||
|
||||
using namespace desert;
|
||||
|
||||
class FavouriteWatcher;
|
||||
class WasPlayedWatcher;
|
||||
|
||||
inline std::vector<meta::Artist> metaArtist(const QString &artist) {
|
||||
return { meta::Artist { artist.toStdString(), {} } };
|
||||
}
|
||||
|
||||
struct Song {
|
||||
DESERT_OBJECT
|
||||
|
||||
int operator<=>(const Song &other) const = default;
|
||||
|
||||
using ColumnTypes = std::tuple<QString, QString, QString, QString>;
|
||||
|
||||
static Song fromSql(ColumnTypes tuple) {
|
||||
@@ -26,34 +38,26 @@ struct Song {
|
||||
return Song {videoId, title, artist, album};
|
||||
}
|
||||
|
||||
QString videoId;
|
||||
QString title;
|
||||
QString artist;
|
||||
QString album;
|
||||
Attribute<u"videoId", QString> videoId;
|
||||
Attribute<u"title", QString> title;
|
||||
Attribute<u"artists", QString> artists;
|
||||
Attribute<u"album", QString> album;
|
||||
};
|
||||
|
||||
class FavouritesModel : public QAbstractListModel {
|
||||
class Library;
|
||||
|
||||
class FavouritesModel : public AutoListModel<Song> {
|
||||
Q_OBJECT
|
||||
|
||||
enum Roles {
|
||||
VideoId = Qt::UserRole + 1,
|
||||
Title,
|
||||
Artists,
|
||||
ArtistsDisplayString
|
||||
};
|
||||
|
||||
public:
|
||||
FavouritesModel(QFuture<std::vector<Song>> &&songs, QObject *parent = nullptr);
|
||||
|
||||
QHash<int, QByteArray> roleNames() const override;
|
||||
int rowCount(const QModelIndex &parent) const override;
|
||||
QVariant data(const QModelIndex &index, int role) const override;
|
||||
|
||||
private:
|
||||
std::vector<Song> m_favouriteSongs;
|
||||
FavouritesModel(Library *library);
|
||||
};
|
||||
|
||||
struct PlayedSong {
|
||||
DESERT_OBJECT
|
||||
|
||||
int operator<=>(const PlayedSong &other) const = default;
|
||||
|
||||
using ColumnTypes = std::tuple<QString, int, QString, QString, QString>;
|
||||
|
||||
static PlayedSong fromSql(ColumnTypes tuple) {
|
||||
@@ -61,55 +65,56 @@ struct PlayedSong {
|
||||
return PlayedSong {videoId, title, artist, album, plays};
|
||||
}
|
||||
|
||||
QString videoId;
|
||||
QString title;
|
||||
QString artist;
|
||||
QString album;
|
||||
int plays;
|
||||
Attribute<u"videoId", QString> videoId;
|
||||
Attribute<u"title", QString> title;
|
||||
Attribute<u"artists", QString> artists;
|
||||
Attribute<u"album", QString> album;
|
||||
Attribute<u"album", int> plays;
|
||||
};
|
||||
|
||||
class PlaybackHistoryModel : public QAbstractListModel {
|
||||
class PlaybackHistoryModel : public AutoListModel<PlayedSong> {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
enum Roles {
|
||||
VideoId = Qt::UserRole + 1,
|
||||
Title,
|
||||
Artists,
|
||||
ArtistsDisplayString,
|
||||
Plays
|
||||
enum Type {
|
||||
MostPlayed,
|
||||
History
|
||||
};
|
||||
Q_ENUM(Roles);
|
||||
|
||||
PlaybackHistoryModel(QFuture<std::vector<PlayedSong>> &&songs, QObject *parent = nullptr);
|
||||
|
||||
QHash<int, QByteArray> roleNames() const override;
|
||||
int rowCount(const QModelIndex &parent) const override;
|
||||
QVariant data(const QModelIndex &index, int role) const override;
|
||||
|
||||
private:
|
||||
std::vector<PlayedSong> m_playedSongs;
|
||||
PlaybackHistoryModel(Library *library, Type type);
|
||||
};
|
||||
|
||||
class SearchHistoryModel : public QAbstractListModel {
|
||||
class SearchQuery {
|
||||
DESERT_OBJECT
|
||||
|
||||
using ColumnTypes = std::tuple<QString>;
|
||||
|
||||
static SearchQuery fromSql(ColumnTypes tuple) {
|
||||
auto [query] = tuple;
|
||||
return { query };
|
||||
}
|
||||
|
||||
int operator<=>(const SearchQuery &other) const = default;
|
||||
|
||||
Attribute<u"query", QString> query;
|
||||
};
|
||||
|
||||
class SearchHistoryModel : public AutoListModel<SearchQuery> {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
SearchHistoryModel(QFuture<std::vector<SingleValue<QString>>> &&historyFuture, QObject *parent = nullptr);
|
||||
int rowCount(const QModelIndex &parent) const override;
|
||||
QVariant data(const QModelIndex &index, int role) const override;
|
||||
SearchHistoryModel(Library *library);
|
||||
|
||||
private:
|
||||
std::vector<SingleValue<QString>> m_history;
|
||||
std::vector<SearchQuery> m_history;
|
||||
};
|
||||
|
||||
class Library : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(QAbstractListModel *favourites READ favourites NOTIFY favouritesChanged)
|
||||
Q_PROPERTY(QAbstractListModel *searches READ searches NOTIFY searchesChanged)
|
||||
Q_PROPERTY(QAbstractListModel *playbackHistory READ playbackHistory NOTIFY playbackHistoryChanged)
|
||||
Q_PROPERTY(QAbstractListModel *mostPlayed READ mostPlayed NOTIFY playbackHistoryChanged)
|
||||
Q_PROPERTY(QAbstractListModel *favourites READ favourites CONSTANT)
|
||||
Q_PROPERTY(QAbstractListModel *searches READ searches CONSTANT)
|
||||
Q_PROPERTY(QAbstractListModel *playbackHistory READ playbackHistory CONSTANT)
|
||||
Q_PROPERTY(QAbstractListModel *mostPlayed READ mostPlayed CONSTANT)
|
||||
|
||||
public:
|
||||
explicit Library(QObject *parent = nullptr);
|
||||
|
||||
+1
-22
@@ -38,25 +38,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
|
||||
|
||||
KLocalizedString::setApplicationDomain("audiotube");
|
||||
|
||||
KAboutData about(QStringLiteral("audiotube"),
|
||||
i18n("AudioTube"),
|
||||
QStringLiteral(AUDIOTUBE_VERSION_STRING),
|
||||
i18n("YouTube Music Player"),
|
||||
KAboutLicense::GPL_V3,
|
||||
i18n("© 2021-2023 Jonah Brüchert, 2021-2023 KDE Community"));
|
||||
about.addAuthor(i18n("Jonah Brüchert"), i18n("Maintainer"), QStringLiteral("[email protected]"));
|
||||
about.addAuthor(i18n("Mathis Brüchert"), i18n("Designer"), QStringLiteral("[email protected]"));
|
||||
about.setTranslator(i18nc("NAME OF TRANSLATORS", "Your names"), i18nc("EMAIL OF TRANSLATORS", "Your emails"));
|
||||
about.setOrganizationDomain("kde.org");
|
||||
about.setBugAddress("https://bugs.kde.org/describecomponents.cgi?product=audiotube");
|
||||
auto future = YTMusicThread::instance()->version();
|
||||
connectFuture(future, &app, [&about](const auto &version) {
|
||||
about.addComponent(QStringLiteral("ytmusicapi"), i18n("Unofficial API for YouTube Music"), version);
|
||||
KAboutData::setApplicationData(about);
|
||||
});
|
||||
|
||||
QGuiApplication::setWindowIcon(QIcon::fromTheme(QStringLiteral("org.kde.audiotube")));
|
||||
|
||||
KAboutData::setApplicationData(KAboutData(QStringLiteral("audiotube"), QStringLiteral("AudioTube")));
|
||||
KCrash::initialize();
|
||||
|
||||
QQmlApplicationEngine engine;
|
||||
@@ -69,9 +51,6 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
|
||||
qmlRegisterUncreatableType<PlaybackHistoryModel>(URI, 1, 0, "PlaybackHistoryModel","");
|
||||
qmlRegisterType<QSortFilterProxyModel>(URI, 1, 0, "SortFilterModel");
|
||||
qmlRegisterType<Blur>(URI, 1, 0, "Blur");
|
||||
qmlRegisterSingletonType(URI, 1, 0, "About", [](QQmlEngine *engine, QJSEngine *) -> QJSValue {
|
||||
return engine->toScriptValue(KAboutData::applicationData());
|
||||
});
|
||||
|
||||
qmlRegisterSingletonType<UserPlaylistModel>(URI, 1, 0, "UserPlaylistModel", [](QQmlEngine *, QJSEngine *) {
|
||||
return new UserPlaylistModel();
|
||||
|
||||
@@ -10,20 +10,20 @@
|
||||
#include <QtGlobal>
|
||||
|
||||
template <typename Tuple, typename Func, std::size_t i>
|
||||
inline constexpr void iterate_impl(Tuple &tup, Func fun)
|
||||
inline constexpr void iterate_tuple_impl(Tuple &tup, Func fun)
|
||||
{
|
||||
if constexpr(i >= std::tuple_size_v<std::decay_t<decltype(tup)>>) {
|
||||
return;
|
||||
} else {
|
||||
fun(std::get<i>(tup));
|
||||
return iterate_impl<Tuple, Func, i + 1>(tup, fun);
|
||||
return iterate_tuple_impl<Tuple, Func, i + 1>(tup, fun);
|
||||
}
|
||||
}
|
||||
|
||||
template <typename Tuple, typename Func>
|
||||
inline constexpr void iterate_tuple(Tuple &tup, Func fun)
|
||||
{
|
||||
iterate_impl<Tuple, Func, 0>(tup, fun);
|
||||
iterate_tuple_impl<Tuple, Func, 0>(tup, fun);
|
||||
}
|
||||
|
||||
/// MultiIterableView is a view over multiple contigous memory arrays, like std::vector or std::array.
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
class PlayerUtils : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit PlayerUtils(QObject *parent = nullptr);
|
||||
|
||||
|
||||
@@ -26,8 +26,5 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
|
||||
<file alias="NavigationBar.qml">contents/ui/NavigationBar.qml</file>
|
||||
<file alias="SearchHistoryPage.qml">contents/ui/SearchHistoryPage.qml</file>
|
||||
<file alias="SearchWithDropdown.qml">contents/ui/SearchWithDropdown.qml</file>
|
||||
<file>resources/favourites_placeholder.svg</file>
|
||||
<file>resources/played_placeholder.svg</file>
|
||||
<file alias="AboutAudiotube.qml">contents/ui/AboutAudiotube.qml</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
@@ -1,93 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2023 Mathis Brüchert <[email protected]>
|
||||
|
||||
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
-->
|
||||
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="410mm"
|
||||
height="200mm"
|
||||
viewBox="0 0 410 199.99998"
|
||||
version="1.1"
|
||||
id="svg5"
|
||||
xml:space="preserve"
|
||||
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||
sodipodi:docname="favourites_placeholder.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
|
||||
id="namedview7"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#999999"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.64658308"
|
||||
inkscape:cx="852.9453"
|
||||
inkscape:cy="645.70202"
|
||||
inkscape:window-width="1707"
|
||||
inkscape:window-height="990"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1"><inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid1378"
|
||||
originx="-36.839489"
|
||||
originy="49.025167" /></sodipodi:namedview><defs
|
||||
id="defs2" /><g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-36.839491,49.025176)"><g
|
||||
id="g3754"
|
||||
transform="translate(1.0239803,48.048198)"><path
|
||||
id="path2136"
|
||||
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.86189;stroke-dasharray:none;stroke-opacity:0.882353"
|
||||
d="m 440.67683,-32.99624 c -12.80337,1.985129 -26.29162,9.680256 -39.10109,11.658868 l -1.33455,11.4329407 -5.14902,44.1397733 c -1.82871,-1.736935 -4.17283,-2.833887 -6.67796,-3.126198 -6.39434,-0.746382 -12.18423,3.830112 -12.93037,10.224494 -0.0906,0.775869 -0.10208,1.545901 -0.0416,2.296047 l -1.26165,1.759668 c 1.98087,2.357577 2.98079,3.562436 4.86071,5.753708 0.007,0.0069 0.0142,0.01424 0.0213,0.02136 1.76301,1.667675 4.05668,2.802348 6.65171,3.105172 6.39434,0.746383 12.18421,-3.835358 12.93037,-10.22975 l 6.37844,-54.684776 33.64731,-5.196316 -5.00192,42.857776 c -1.8287,-1.736995 -4.16757,-2.833886 -6.67272,-3.126197 -6.39433,-0.746383 -12.18418,3.835419 -12.93036,10.22975 -0.0956,0.821011 -0.10393,1.630593 -0.0316,2.42214 l -2.30656,0.257437 4.76548,5.884602 c 0.0172,0.02136 0.0355,0.04169 0.0529,0.06304 l 0.23121,0.288955 0.005,-0.0053 c 1.84309,2.159621 4.47063,3.659097 7.51339,4.01414 6.39435,0.746384 12.17896,-3.830121 12.92511,-10.224492 l 6.23137,-53.402774 1.3398,-11.432941 z"
|
||||
sodipodi:nodetypes="cccccsccccccccccscccscccsccc" /><path
|
||||
id="path2134"
|
||||
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.49536;stroke-dasharray:none;stroke-opacity:0.882353"
|
||||
d="m 218.05645,-38.280046 a 20.012256,20.012265 17.519729 0 0 -25.10697,13.059977 c -3.40195,10.753794 -2.04184,28.2651872 22.1953,54.681772 l 0.004,-0.0029 0.003,0.005 c 35.01078,-7.713326 46.17698,-21.2704644 49.56589,-32.0283659 l -0.007,-0.00212 -10e-4,-3.858e-4 a 20.012256,20.012256 0 0 0 -13.05955,-25.1082743 20.012256,20.012256 0 0 0 -19.95876,4.738745 20.012256,20.012265 17.519729 0 0 -13.63368,-15.34313 z" /><path
|
||||
id="path2132"
|
||||
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.53185;stroke-dasharray:none;stroke-opacity:0.882353"
|
||||
d="m 47.065658,-47.571342 6.262552,10.574758 10.981614,51.374016 C 61.210315,12.9092 57.718215,12.485874 54.357672,13.170999 45.779848,14.919656 40.24373,23.290951 41.992449,31.868766 43.741106,40.44659 52.112412,45.982697 60.690225,44.233979 69.268051,42.485321 74.804158,34.114026 73.055439,25.536212 L 61.28653,-29.699689 C 80.958225,-21.28437 83.410948,2.2050731 82.443029,5.8174106 l 3.749617,2.4150647 C 98.341428,-22.694892 68.952283,-23.159305 53.105037,-48.318315 Z"
|
||||
sodipodi:nodetypes="cccssscccccc" /><path
|
||||
id="path234"
|
||||
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.53185;stroke-dasharray:none;stroke-opacity:0.882353"
|
||||
d="m 47.083379,-47.229598 1.414458,6.93869 10.981613,51.374017 C 56.379942,9.6148752 52.887844,9.191549 49.527299,9.8766741 40.949475,11.625331 35.413357,19.996628 37.162076,28.574441 38.910733,37.152266 47.282039,42.688372 55.859853,40.939654 64.437677,39.190997 69.973785,30.819701 68.225065,22.241888 L 56.456157,-32.994014 C 71.640443,-20.266549 82.613067,-16.645 82.443029,5.8174106 94.591811,-25.109957 69.143154,-23.336999 53.295908,-48.496009 Z"
|
||||
sodipodi:nodetypes="cccsssccccc" /><path
|
||||
id="path1206"
|
||||
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.86189;stroke-dasharray:none;stroke-opacity:0.882353"
|
||||
d="m 440.67491,-32.994014 -4.78137,0.737131 -4.5e-4,0.0038 -38.43113,5.936232 -1.3359,11.436417 -5.14833,44.138482 c -1.82871,-1.736934 -4.1708,-2.833246 -6.67596,-3.125556 -6.39434,-0.746384 -12.18473,3.831504 -12.93086,10.225907 -0.74639,6.394351 3.8354,12.185169 10.22974,12.931338 6.39435,0.746384 12.1809,-3.831952 12.92706,-10.226364 l 6.38021,-54.684527 33.64971,-5.199365 -5.00263,42.860104 c -1.82871,-1.736996 -4.17036,-2.83713 -6.67551,-3.12944 -6.39435,-0.746384 -12.18131,3.835856 -12.92748,10.230207 -0.74638,6.394341 3.83194,12.18089 10.22635,12.927028 6.39437,0.746383 12.1809,-3.831951 12.92704,-10.226343 l 6.23365,-53.398483 z" /><path
|
||||
id="path1761"
|
||||
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.49536;stroke-dasharray:none;stroke-opacity:0.882353"
|
||||
d="m 216.50808,-45.145682 a 20.012256,20.012265 17.519729 0 0 -25.10696,13.059976 c -3.40194,10.753794 -2.04184,28.2651868 22.19531,54.681772 l 0.004,-0.0029 0.003,0.005 C 248.6142,14.88484 259.7804,1.3277008 263.16933,-9.4302005 l -0.007,-0.00208 -10e-4,-3.863e-4 a 20.012256,20.012256 0 0 0 -13.05955,-25.1082752 20.012256,20.012256 0 0 0 -19.95876,4.738746 20.012256,20.012265 17.519729 0 0 -13.63368,-15.343131 z" /><circle
|
||||
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:22.9781;stroke-dasharray:none;stroke-opacity:0.882353"
|
||||
id="path2242"
|
||||
cx="100.14573"
|
||||
cy="-33.542244"
|
||||
r="7.3963723" /><circle
|
||||
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:34.0385;stroke-dasharray:none;stroke-opacity:0.882353"
|
||||
id="circle2244"
|
||||
cx="160.65797"
|
||||
cy="30.305696"
|
||||
r="10.956545" /><circle
|
||||
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:34.4533;stroke-dasharray:none;stroke-opacity:0.882353"
|
||||
id="circle2246"
|
||||
cx="308.24826"
|
||||
cy="-28.016548"
|
||||
r="11.090084" /><circle
|
||||
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:22.9781;stroke-dasharray:none;stroke-opacity:0.882353"
|
||||
id="circle2248"
|
||||
cx="321.48218"
|
||||
cy="29.99456"
|
||||
r="7.3963723" /></g></g></svg>
|
||||
|
Before Width: | Height: | Size: 7.1 KiB |
@@ -1,121 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2023 Mathis Brüchert <[email protected]>
|
||||
|
||||
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||
-->
|
||||
|
||||
<svg
|
||||
width="410mm"
|
||||
height="200mm"
|
||||
viewBox="0 0 410.00001 199.99999"
|
||||
version="1.1"
|
||||
id="svg5"
|
||||
xml:space="preserve"
|
||||
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||
sodipodi:docname="played_placeholder.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
|
||||
id="namedview7"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#999999"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.26286253"
|
||||
inkscape:cx="549.717"
|
||||
inkscape:cy="682.86645"
|
||||
inkscape:window-width="853"
|
||||
inkscape:window-height="990"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="layer1"
|
||||
showguides="false"><inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid1378"
|
||||
originx="-39.082456"
|
||||
originy="83.308533" /></sodipodi:namedview><defs
|
||||
id="defs2"><inkscape:path-effect
|
||||
effect="fillet_chamfer"
|
||||
id="path-effect3380"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
nodesatellites_param="F,0,0,1,0,5.2916667,0,1 @ F,0,0,1,0,5.2916667,0,1 @ F,0,0,1,0,5.2916667,0,1"
|
||||
unit="px"
|
||||
method="auto"
|
||||
mode="F"
|
||||
radius="20"
|
||||
chamfer_steps="1"
|
||||
flexible="false"
|
||||
use_knot_distance="true"
|
||||
apply_no_radius="true"
|
||||
apply_with_radius="true"
|
||||
only_selected="false"
|
||||
hide_knots="false" /></defs><g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-39.082456,83.30855)"><g
|
||||
id="g3784"
|
||||
transform="translate(5.5779931,16.882453)"><path
|
||||
id="path2136"
|
||||
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.86189;stroke-dasharray:none;stroke-opacity:0.882353"
|
||||
d="m 250.59587,-83.30855 c -12.80337,1.985129 -26.29162,9.680256 -39.10109,11.658868 l -1.33455,11.432941 -5.14902,44.139773 c -1.82871,-1.736935 -4.17283,-2.833887 -6.67796,-3.126198 -6.39434,-0.746382 -12.18423,3.830112 -12.93037,10.2244936 -0.0906,0.775869 -0.10208,1.545901 -0.0416,2.296047 l -1.26165,1.759668 c 1.98087,2.357577 2.98079,3.562436 4.86071,5.75370803 0.007,0.0069 0.0142,0.01424 0.0213,0.02136 1.76301,1.66767497 4.05668,2.80234797 6.65171,3.10517197 6.39434,0.746383 12.18421,-3.83535797 12.93037,-10.22975 l 6.37844,-54.6847756 33.64731,-5.196316 -5.00192,42.857775 c -1.8287,-1.736995 -4.16757,-2.833886 -6.67272,-3.126197 -6.39433,-0.746383 -12.18418,3.835419 -12.93036,10.229751 -0.0956,0.821011 -0.10393,1.630593 -0.0316,2.42214 l -2.30656,0.257437 4.76548,5.8846016 c 0.0172,0.02136 0.0355,0.04169 0.0529,0.06304 l 0.23121,0.288955 0.005,-0.0053 c 1.84309,2.159621 4.47063,3.659097 7.51339,4.01414 6.39435,0.746384 12.17896,-3.830121 12.92511,-10.2244916 l 6.23137,-53.402774 1.3398,-11.432941 z"
|
||||
sodipodi:nodetypes="cccccsccccccccccscccscccsccc" /><path
|
||||
id="path2132"
|
||||
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.53185;stroke-dasharray:none;stroke-opacity:0.882353"
|
||||
d="m 414.76305,-42.591595 1.52996,12.194434 -10.39972,51.494964 c -2.25772,-2.581735 -5.2919,-4.361549 -8.64712,-5.072299 -8.56418,-1.814311 -16.9776,3.657567 -18.79186,12.221761 -1.81431,8.564179 3.65758,16.977596 12.22178,18.791851 8.56417,1.81431 16.97759,-3.657572 18.79184,-12.221765 l 11.21655,-55.350711 c 14.689,15.5572013 7.57838,38.078497 5.25117,41.005941 l 2.47668,3.709204 c 23.46666,-23.52468967 -3.30326,-35.661777 -7.81246,-65.051881 z"
|
||||
sodipodi:nodetypes="cccssscccccc" /><path
|
||||
id="path234"
|
||||
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.53185;stroke-dasharray:none;stroke-opacity:0.882353"
|
||||
d="m 414.64312,-42.271095 -1.46766,6.927632 -10.39973,51.494961 c -2.25773,-2.581737 -5.29189,-4.361547 -8.64712,-5.072297 -8.56417,-1.8143106 -16.9776,3.657569 -18.79185,12.221761 -1.81431,8.56418 3.65758,16.977596 12.22178,18.791851 8.56417,1.814311 16.97759,-3.657572 18.79184,-12.221765 l 11.21655,-55.35071 c 8.85494,17.7240249 17.47561,25.41804533 8.36872,45.952243 23.46665,-23.5246907 -0.58071,-32.03949 -5.08991,-61.429595 z"
|
||||
sodipodi:nodetypes="cccsssccccc" /><path
|
||||
id="path1206"
|
||||
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.86189;stroke-dasharray:none;stroke-opacity:0.882353"
|
||||
d="m 250.59395,-83.306324 -4.78137,0.737131 -4.5e-4,0.0038 -38.43113,5.936232 -1.3359,11.436417 -5.14833,44.138482 c -1.82871,-1.736935 -4.1708,-2.833247 -6.67596,-3.125557 -6.39434,-0.746384 -12.18473,3.831505 -12.93086,10.225908 -0.74639,6.3943506 3.8354,12.1851686 10.22974,12.9313376 6.39435,0.74638403 12.1809,-3.831952 12.92706,-10.2263636 l 6.38021,-54.684527 33.64971,-5.199365 -5.00263,42.860103 c -1.82871,-1.736995 -4.17036,-2.837129 -6.67551,-3.129439 -6.39435,-0.746384 -12.18131,3.835855 -12.92748,10.230207 -0.74638,6.394341 3.83194,12.1808896 10.22635,12.9270276 6.39437,0.746383 12.1809,-3.8319506 12.92704,-10.2263426 l 6.23365,-53.398483 z" /><circle
|
||||
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:22.9781;stroke-dasharray:none;stroke-opacity:0.882353"
|
||||
id="path2242"
|
||||
cx="46.478828"
|
||||
cy="-28.027006"
|
||||
r="7.3963723" /><circle
|
||||
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:34.0385;stroke-dasharray:none;stroke-opacity:0.882353"
|
||||
id="circle2244"
|
||||
cx="160.65797"
|
||||
cy="29.776529"
|
||||
r="10.956545" /><circle
|
||||
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:34.4533;stroke-dasharray:none;stroke-opacity:0.882353"
|
||||
id="circle2246"
|
||||
cx="308.24826"
|
||||
cy="-28.545715"
|
||||
r="11.090084" /><circle
|
||||
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:22.9781;stroke-dasharray:none;stroke-opacity:0.882353"
|
||||
id="circle2248"
|
||||
cx="358.07913"
|
||||
cy="27.152491"
|
||||
r="7.3963723" /><path
|
||||
id="path3189"
|
||||
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.564999;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 88.302198,-20.630633 A 28.690096,29.400146 0 0 0 59.612472,8.7696393 28.690096,29.400146 0 0 0 88.302198,38.169912 28.690096,29.400146 0 0 0 116.99244,8.7696393 28.690096,29.400146 0 0 0 88.302198,-20.630633 Z m 0,21.7413083 a 7.4738884,7.6588593 0 0 1 7.47397,7.658964 7.4738884,7.6588593 0 0 1 -7.47397,7.6589647 7.4738884,7.6588593 0 0 1 -7.473967,-7.6589647 7.4738884,7.6588593 0 0 1 7.473967,-7.658964 z" /><path
|
||||
id="path3271"
|
||||
style="opacity:0.31;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.564999;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 90.948048,-17.455631 A 28.690096,29.400146 0 0 0 62.258307,11.94464 28.690096,29.400146 0 0 0 90.948048,41.344914 28.690096,29.400146 0 0 0 119.63829,11.94464 28.690096,29.400146 0 0 0 90.948048,-17.455631 Z m 0,21.7413065 a 7.4738884,7.6588593 0 0 1 7.47397,7.6589645 7.4738884,7.6588593 0 0 1 -7.47397,7.658966 7.4738884,7.6588593 0 0 1 -7.47397,-7.658966 7.4738884,7.6588593 0 0 1 7.47397,-7.6589645 z" /><path
|
||||
id="path3325"
|
||||
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.214388;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:transform-center-x="-4.959854"
|
||||
inkscape:transform-center-y="4.9598554"
|
||||
d="m 239.8962,20.171856 a 4.3815311,4.3815311 0 0 0 -4.54524,5.504241 l 13.25331,49.461093 a 4.381492,4.381492 0 0 0 7.33034,1.964688 L 292.1424,40.893356 a 4.3814927,4.3814927 0 0 0 -1.96395,-7.330342 l -49.46109,-13.25257 a 4.3815311,4.3815311 0 0 0 -0.82116,-0.138588 z" /><path
|
||||
id="path3383"
|
||||
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.214388;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:transform-center-x="-4.959769"
|
||||
inkscape:transform-center-y="4.9598588"
|
||||
d="m 243.6907,24.72525 c -3.0042,-0.215135 -5.32469,2.594953 -4.54523,5.504241 -0.32195,7.307721 10.08785,46.26688 10.08785,46.26688 l 4.6507,5.473874 0.007,-0.01556 c 1.73787,1.402494 4.25249,1.273523 5.83774,-0.29941 L 295.93673,45.44675 c 1.46747,-1.470769 1.70023,-3.769945 0.55731,-5.504982 l 0.004,-0.0022 -0.0334,-0.04447 c -0.069,-0.101093 -0.14213,-0.199256 -0.21937,-0.294223 l -3.74508,-4.49848 c -14.28035,8.610206 -33.42491,-5.131775 -47.989,-10.238538 -0.2687,-0.07216 -0.54366,-0.118568 -0.82116,-0.138588 z"
|
||||
sodipodi:nodetypes="ccccccccccccccc" /></g></g></svg>
|
||||
|
Before Width: | Height: | Size: 8.9 KiB |
@@ -0,0 +1,475 @@
|
||||
/****************************************************************************
|
||||
** MIT License
|
||||
**
|
||||
** Copyright (C) 2018-2023 Klarälvdalens Datakonsult AB, a KDAB Group company, [email protected]
|
||||
** Author: André Somers <[email protected]>
|
||||
**
|
||||
** This file is part of KDToolBox (https://github.com/KDAB/KDToolBox).
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
** of this software and associated documentation files (the "Software"), to deal
|
||||
** in the Software without restriction, including without limitation the rights
|
||||
** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
** copies of the Software, ** and to permit persons to whom the Software is
|
||||
** furnished to do so, subject to the following conditions:
|
||||
**
|
||||
** The above copyright notice and this permission notice (including the next paragraph)
|
||||
** shall be included in all copies or substantial portions of the Software.
|
||||
**
|
||||
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
** AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
** LIABILITY, WHETHER IN AN ACTION OF ** CONTRACT, TORT OR OTHERWISE,
|
||||
** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
** DEALINGS IN THE SOFTWARE.
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef UPDATEABLEMODEL_H
|
||||
#define UPDATEABLEMODEL_H
|
||||
|
||||
#include <QModelIndex>
|
||||
#include <QSet>
|
||||
#include <QVector>
|
||||
#include <functional>
|
||||
|
||||
// concepts
|
||||
#define ForwardIt typename
|
||||
#define RandomIt typename
|
||||
#define Container typename
|
||||
#define BinaryPredicate typename
|
||||
#define EventHandler typename
|
||||
#define QAIM typename // QAbstractItemModel-derived class
|
||||
|
||||
// basic algorithm
|
||||
|
||||
// precondition: src and target are both ordered with respect to lessThan
|
||||
template<ForwardIt FwdIt, Container TargetCollection, BinaryPredicate LessThan, BinaryPredicate HasChanged,
|
||||
EventHandler OnChanged, EventHandler OnInsert, EventHandler OnRemove, EventHandler OnEqual>
|
||||
void updateCollection(const FwdIt srcBegin, const FwdIt srcEnd, TargetCollection &target, LessThan lessThan,
|
||||
HasChanged itemHasChanged, OnChanged onChanged, OnInsert onInsert, OnRemove onRemove,
|
||||
OnEqual onEqual)
|
||||
{
|
||||
auto srcIt = srcBegin;
|
||||
target.reserve(std::distance(srcBegin, srcEnd));
|
||||
auto targetIt = std::begin(target);
|
||||
|
||||
while (srcIt != srcEnd)
|
||||
{
|
||||
if (targetIt == std::end(target))
|
||||
{
|
||||
// insert: src has still items left while target has no more items
|
||||
// so, insert all remaining items from src into target
|
||||
targetIt = onInsert(srcIt, srcEnd, targetIt);
|
||||
// targetIt now points to the item after the item(s) just inserted
|
||||
srcIt = srcEnd;
|
||||
}
|
||||
else if (lessThan(*srcIt, *targetIt))
|
||||
{
|
||||
// insert: src has one or more items that need to be inserted into target
|
||||
auto srcInsertEnd = std::next(srcIt);
|
||||
while (srcInsertEnd != srcEnd && lessThan(*srcInsertEnd, *targetIt))
|
||||
{
|
||||
srcInsertEnd++;
|
||||
}
|
||||
targetIt = onInsert(srcIt, srcInsertEnd, targetIt);
|
||||
// targetIt now points to the item after the item(s) just inserted
|
||||
srcIt = srcInsertEnd;
|
||||
}
|
||||
else if (lessThan(*targetIt, *srcIt))
|
||||
{
|
||||
// removal: target has items that are not in src (any more), so remove them
|
||||
auto targetRemoveEnd = std::next(targetIt);
|
||||
auto targetEnd = std::end(target);
|
||||
while (targetRemoveEnd != targetEnd && lessThan(*targetRemoveEnd, *srcIt))
|
||||
{
|
||||
targetRemoveEnd++;
|
||||
}
|
||||
targetIt = onRemove(targetIt, targetRemoveEnd);
|
||||
// targetIt now points to the item after the items just removed,
|
||||
// the same item targetEnd was pointing to before the call
|
||||
}
|
||||
else
|
||||
{
|
||||
// same item, check for changes
|
||||
auto changes = itemHasChanged(*srcIt, *targetIt);
|
||||
if (changes)
|
||||
{
|
||||
onChanged(srcIt, targetIt, changes);
|
||||
}
|
||||
else
|
||||
{
|
||||
onEqual(srcIt, targetIt);
|
||||
}
|
||||
srcIt++;
|
||||
targetIt++;
|
||||
}
|
||||
}
|
||||
|
||||
if (targetIt != std::end(target))
|
||||
{
|
||||
// target has some items left, but we're at the end of src, so remove the rest from target
|
||||
onRemove(targetIt, std::end(target));
|
||||
}
|
||||
}
|
||||
|
||||
// helper functions
|
||||
namespace
|
||||
{
|
||||
// helper function to create a QSet<T> out of any container<T>.
|
||||
template<typename T>
|
||||
auto setFromContainer(T container) -> QSet<typename T::value_type>
|
||||
{
|
||||
QSet<typename T::value_type> set;
|
||||
set.reserve(container.size());
|
||||
for (const auto value : container)
|
||||
{
|
||||
set.insert(value);
|
||||
}
|
||||
return set;
|
||||
}
|
||||
|
||||
// helper for manual overload ranking
|
||||
// highest rank is selected first
|
||||
template<size_t Rank>
|
||||
struct OverloadRanker;
|
||||
template<>
|
||||
struct OverloadRanker<0>
|
||||
{
|
||||
};
|
||||
template<size_t Rank>
|
||||
struct OverloadRanker : OverloadRanker<Rank - 1>
|
||||
{
|
||||
};
|
||||
|
||||
// insert range into container, 2 overloads (using SFINAE) with manual ranking in case of multiple matches
|
||||
constexpr size_t BestInsertRangeOverloadRank = 1;
|
||||
|
||||
template<Container C, RandomIt InsertIt, ForwardIt FwdIt>
|
||||
auto insertRange_imp(C &container, InsertIt targetInsertBefore, FwdIt sourceBegin, FwdIt sourceEnd,
|
||||
OverloadRanker<1>) // Best match
|
||||
-> decltype(container.insert(targetInsertBefore, sourceBegin, sourceEnd), InsertIt())
|
||||
{
|
||||
// primary option: use insert with a whole range directly
|
||||
InsertIt it =
|
||||
std::next(container.insert(targetInsertBefore, sourceBegin, sourceEnd), std::distance(sourceBegin, sourceEnd));
|
||||
return it;
|
||||
}
|
||||
|
||||
template<Container C, RandomIt InsertIt, ForwardIt FwdIt>
|
||||
auto insertRange_imp(C &container, InsertIt targetInsertBefore, FwdIt sourceBegin, FwdIt sourceEnd,
|
||||
OverloadRanker<0>) // Fallback
|
||||
-> InsertIt
|
||||
{
|
||||
#if (QT_VERSION < QT_VERSION_CHECK(5, 13, 0))
|
||||
// Check if, when using QVector in Qt , the value type is default constructable
|
||||
static_assert(!std::is_same<QVector<typename C::value_type>, C>::value ||
|
||||
std::is_default_constructible<typename C::value_type>::value,
|
||||
"When using QVector as your container type, the value type must be default-contructible. Consider "
|
||||
"using std::vector instead or use a more recent Qt version.");
|
||||
#endif
|
||||
|
||||
// store the location and the length of the inserted items
|
||||
const auto location = std::distance(std::begin(container), targetInsertBefore);
|
||||
const auto originalCount = container.size();
|
||||
|
||||
// append the new items to the container
|
||||
std::copy(sourceBegin, sourceEnd, std::back_inserter(container));
|
||||
|
||||
// move the items into the right position in the container
|
||||
const auto b = std::begin(container);
|
||||
targetInsertBefore = std::next(b, location);
|
||||
const InsertIt originalEnd = std::next(b, originalCount);
|
||||
return std::rotate(targetInsertBefore, originalEnd, std::end(container));
|
||||
}
|
||||
|
||||
/**
|
||||
* Inserts a range into the target container
|
||||
* @returns an iterator pointing one item past the last item inserted
|
||||
* @param container is the target container
|
||||
* @param targetInsertBefore iterator to the item the new items should be inserted before
|
||||
* @param sourceBegin iterator to the first item to insert into @arg container
|
||||
* @param sourceEnd iterator to the item past the last item to insert into @arg container
|
||||
*
|
||||
* Implementation is done using SFINEA to select an efficient method for the type of
|
||||
* container used.
|
||||
*/
|
||||
|
||||
// "public API"
|
||||
template<Container C, RandomIt InsertIt, ForwardIt FwdIt>
|
||||
InsertIt insertRange(C &container, InsertIt targetInsertBefore, FwdIt sourceBegin, FwdIt sourceEnd)
|
||||
{
|
||||
return insertRange_imp(container, targetInsertBefore, sourceBegin, sourceEnd,
|
||||
OverloadRanker<BestInsertRangeOverloadRank>{});
|
||||
}
|
||||
|
||||
// less than on data type
|
||||
constexpr size_t BestDataLessThanOverloadRank = 1;
|
||||
|
||||
template<typename T>
|
||||
auto dataLessThan_imp(const T &lhs, const T &rhs, OverloadRanker<1>) -> decltype(operator<(lhs, rhs), bool())
|
||||
{
|
||||
return operator<(lhs, rhs);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
auto dataLessThan_imp(const T &lhs, const T &rhs, OverloadRanker<0>) -> decltype(bool())
|
||||
{
|
||||
// fake implementation to stop the compiler from whining. User is probably providing his own via function pointer
|
||||
Q_UNUSED(lhs);
|
||||
Q_UNUSED(rhs);
|
||||
return false;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
bool dataLessThan(const T &lhs, const T &rhs)
|
||||
{
|
||||
return dataLessThan_imp(lhs, rhs, OverloadRanker<BestDataLessThanOverloadRank>{});
|
||||
}
|
||||
}
|
||||
|
||||
// actual class to inherit from
|
||||
template<QAIM BaseModel, typename DataType>
|
||||
class UpdateableModel : public BaseModel
|
||||
{
|
||||
// can't use Q_OBJECT on templates
|
||||
|
||||
public:
|
||||
explicit UpdateableModel(QObject *parent = nullptr)
|
||||
: BaseModel(parent)
|
||||
{
|
||||
}
|
||||
|
||||
protected: // types
|
||||
struct Operations
|
||||
{
|
||||
uint inserts;
|
||||
uint removals;
|
||||
uint updates;
|
||||
};
|
||||
|
||||
struct DataChanges
|
||||
{
|
||||
operator bool() const { return !changedColumns.isEmpty(); }
|
||||
QVector<int> changedColumns; // important: keep ordered!
|
||||
QVector<int> changedRoles;
|
||||
};
|
||||
|
||||
enum ChangeMergePolicy
|
||||
{
|
||||
AlwaysMergeNeighbouringRows,
|
||||
MergeWhenColumnsMatch,
|
||||
MergeWhenRolesMatch,
|
||||
MergeOnPerfectMatch
|
||||
};
|
||||
|
||||
using HasChangesFunction = std::function<DataChanges(const DataType & /*lhs*/, const DataType & /*rhs*/)>;
|
||||
|
||||
protected: // methods
|
||||
void setChangeMergePolicy(ChangeMergePolicy policy) { m_changeMergePolicy = policy; }
|
||||
|
||||
ChangeMergePolicy changeMergePolicy() const { return m_changeMergePolicy; }
|
||||
|
||||
virtual bool lessThan(const DataType &lhs, const DataType &rhs) const { return dataLessThan(lhs, rhs); }
|
||||
|
||||
virtual DataChanges itemHasChanged(const DataType &lhs, const DataType &rhs) const
|
||||
{
|
||||
Q_UNUSED(lhs);
|
||||
Q_UNUSED(rhs);
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
template<ForwardIt Iterator, Container DataContainer, BinaryPredicate LessThan>
|
||||
Operations updateData(Iterator srcBegin, Iterator srcEnd, DataContainer &targetContainer, LessThan lessThan,
|
||||
HasChangesFunction itemHasChanged)
|
||||
{
|
||||
Operations ops{0, 0, 0};
|
||||
|
||||
// events
|
||||
auto onChanged = [this, &targetContainer, &ops](Iterator lhs, typename DataContainer::iterator rhs,
|
||||
const DataChanges &changes) {
|
||||
*rhs = *lhs;
|
||||
|
||||
int row = std::distance(targetContainer.begin(), rhs);
|
||||
addChange(row, changes.changedColumns, changes.changedRoles);
|
||||
|
||||
ops.updates++;
|
||||
};
|
||||
|
||||
auto onInsert = [this, &targetContainer, &ops](Iterator lhsBegin, Iterator lhsEnd,
|
||||
typename DataContainer::iterator rhsInsertAt) {
|
||||
flushCachedChanges();
|
||||
int firstNewRow = std::distance(targetContainer.begin(), rhsInsertAt);
|
||||
int lastNewRow = firstNewRow + std::distance(lhsBegin, lhsEnd) - 1;
|
||||
beginInsertRows(firstNewRow, lastNewRow);
|
||||
auto rangeEnd = insertRange(targetContainer, rhsInsertAt, lhsBegin, lhsEnd);
|
||||
endInsertRows();
|
||||
|
||||
ops.inserts += lhsEnd - lhsBegin;
|
||||
|
||||
return rangeEnd;
|
||||
};
|
||||
|
||||
auto onRemove = [this, &targetContainer, &ops](typename DataContainer::iterator rhsBegin,
|
||||
typename DataContainer::iterator rhsEnd) {
|
||||
flushCachedChanges();
|
||||
const auto targetContainerBegin = std::begin(targetContainer);
|
||||
int firstRemovedRow = std::distance(targetContainerBegin, rhsBegin);
|
||||
int lastRemovedRow = std::distance(targetContainerBegin, rhsEnd) - 1;
|
||||
beginRemoveRows(firstRemovedRow, lastRemovedRow);
|
||||
auto newRhsEnd = targetContainer.erase(rhsBegin, rhsEnd);
|
||||
endRemoveRows();
|
||||
|
||||
ops.removals += std::distance(rhsBegin, rhsEnd);
|
||||
|
||||
return newRhsEnd;
|
||||
};
|
||||
|
||||
auto onEqual = [this](Iterator /*lhs*/, typename DataContainer::iterator /*rhs*/) { flushCachedChanges(); };
|
||||
|
||||
updateCollection(srcBegin, srcEnd, targetContainer, lessThan, itemHasChanged, onChanged, onInsert, onRemove,
|
||||
onEqual);
|
||||
flushCachedChanges();
|
||||
|
||||
return ops;
|
||||
}
|
||||
|
||||
template<ForwardIt Iterator, Container Data>
|
||||
Operations updateData(Iterator srcBegin, Iterator srcEnd, Data &targetContainer, HasChangesFunction hasChanged = {})
|
||||
{
|
||||
auto lessThanFunction = [this](const DataType &lhs, const DataType &rhs) { return this->lessThan(lhs, rhs); };
|
||||
if (!hasChanged)
|
||||
{
|
||||
hasChanged = [this](const DataType &lhs, const DataType &rhs) -> DataChanges {
|
||||
return this->itemHasChanged(lhs, rhs);
|
||||
};
|
||||
}
|
||||
|
||||
return updateData(srcBegin, srcEnd, targetContainer, lessThanFunction, hasChanged);
|
||||
}
|
||||
|
||||
protected:
|
||||
// Shadowing the methods in the base model, because MSVC thinks the onRemove and onInsert
|
||||
// lambdas in updateData are not allowed to access the protected member functions in BaseClass.
|
||||
// GCC is ok with it...
|
||||
void beginInsertRows(int firstRow, int lastRow) { BaseModel::beginInsertRows(QModelIndex(), firstRow, lastRow); }
|
||||
|
||||
void endInsertRows() { BaseModel::endInsertRows(); }
|
||||
|
||||
void beginRemoveRows(int firstRow, int lastRow) { BaseModel::beginRemoveRows(QModelIndex(), firstRow, lastRow); }
|
||||
|
||||
void endRemoveRows() { BaseModel::endRemoveRows(); }
|
||||
|
||||
private:
|
||||
void flushCachedChanges()
|
||||
{
|
||||
if (m_firstChangedRow == -1)
|
||||
return;
|
||||
|
||||
// reconstruct vector of changed roles
|
||||
QVector<int> roles;
|
||||
roles.reserve(m_changedRoles.count());
|
||||
for (int role : qAsConst(m_changedRoles))
|
||||
{
|
||||
roles.append(role);
|
||||
}
|
||||
|
||||
// convert the vector of ints indicating changed columns into a vector of pairs of ints indicating ranges.
|
||||
// for example, the vector {1, 2, 3, 5, 6, 9} would be converted to {{1, 3}, {5, 6}, {9, 9}}
|
||||
typedef QVector<QPair<int, int>> ColumnRanges;
|
||||
auto accumulator = [](ColumnRanges ranges, int column) {
|
||||
if (ranges.isEmpty() || (ranges.last().second < column - 1))
|
||||
{
|
||||
ranges.append(qMakePair(column, column));
|
||||
}
|
||||
else
|
||||
{
|
||||
ranges[ranges.count() - 1].second = column;
|
||||
}
|
||||
return ranges;
|
||||
};
|
||||
const auto ranges =
|
||||
std::accumulate(m_changedColumns.cbegin(), m_changedColumns.cend(), ColumnRanges(), accumulator);
|
||||
|
||||
for (const auto &columnRange : ranges)
|
||||
{
|
||||
QModelIndex topLeft = BaseModel::index(m_firstChangedRow, columnRange.first);
|
||||
QModelIndex bottomRight = BaseModel::index(m_lastChangedRow, columnRange.second);
|
||||
Q_EMIT BaseModel::dataChanged(topLeft, bottomRight, roles);
|
||||
}
|
||||
|
||||
m_firstChangedRow = -1;
|
||||
}
|
||||
|
||||
void addChange(int row, const QVector<int> &columns, const QVector<int> &roles)
|
||||
{
|
||||
auto mergeColumns = [this](const QVector<int> &columns) {
|
||||
QVector<int> columnUnion;
|
||||
// we have to cast this to QAbstractItemModel, to work around QAbstractListModel making columnCount private
|
||||
columnUnion.reserve(static_cast<QAbstractItemModel *>(this)->columnCount());
|
||||
auto inserter = std::back_inserter(columnUnion);
|
||||
std::set_union(m_changedColumns.cbegin(), m_changedColumns.cend(), columns.cbegin(), columns.cend(),
|
||||
inserter);
|
||||
m_changedColumns = std::move(columnUnion);
|
||||
};
|
||||
|
||||
if (m_firstChangedRow > -1)
|
||||
{
|
||||
// from here rows are guaranteed to be sequential, so no need to check for that
|
||||
m_lastChangedRow = row; // optimistic, but lets see...
|
||||
|
||||
switch (m_changeMergePolicy)
|
||||
{
|
||||
case AlwaysMergeNeighbouringRows:
|
||||
m_changedRoles = m_changedRoles.intersect(setFromContainer(roles));
|
||||
mergeColumns(columns);
|
||||
return;
|
||||
case MergeWhenColumnsMatch:
|
||||
if (m_changedColumns == columns)
|
||||
{
|
||||
m_changedRoles = m_changedRoles.intersect(setFromContainer(roles));
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case MergeWhenRolesMatch:
|
||||
if (m_changedRoles == setFromContainer(roles))
|
||||
{
|
||||
mergeColumns(columns);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case MergeOnPerfectMatch:
|
||||
if (m_changedColumns == columns && m_changedRoles == setFromContainer(roles))
|
||||
{
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
m_lastChangedRow = row - 1; // we were too optimistic
|
||||
flushCachedChanges();
|
||||
}
|
||||
|
||||
// just copy the details of the first change
|
||||
m_firstChangedRow = row;
|
||||
m_lastChangedRow = row;
|
||||
m_changedColumns = columns;
|
||||
m_changedRoles = setFromContainer(roles);
|
||||
}
|
||||
|
||||
ChangeMergePolicy m_changeMergePolicy = MergeOnPerfectMatch;
|
||||
int m_firstChangedRow = -1;
|
||||
int m_lastChangedRow = -1;
|
||||
QVector<int> m_changedColumns;
|
||||
QSet<int> m_changedRoles;
|
||||
};
|
||||
|
||||
#undef ForwardIt
|
||||
#undef RandomIt
|
||||
#undef Container
|
||||
#undef BinaryPredicate
|
||||
#undef EventHandler
|
||||
#undef QAIM
|
||||
|
||||
#endif // UPDATEABLEMODEL_H
|
||||
@@ -129,20 +129,6 @@ QString UserPlaylistModel::nextVideoId() const
|
||||
return QString::fromStdString((currentTrack + 1)->video_id);
|
||||
}
|
||||
|
||||
QString UserPlaylistModel::previousVideoId() const
|
||||
{
|
||||
auto currentTrack = std::find_if(m_playlist.tracks.begin(), m_playlist.tracks.end(),
|
||||
[this](const watch::Playlist::Track &track) {
|
||||
return track.video_id == m_currentVideoId.toStdString();
|
||||
});
|
||||
|
||||
if (currentTrack == m_playlist.tracks.end() || currentTrack - 1 == m_playlist.tracks.end()) {
|
||||
return {};
|
||||
}
|
||||
|
||||
return QString::fromStdString((currentTrack - 1)->video_id);
|
||||
}
|
||||
|
||||
QString UserPlaylistModel::currentVideoId() const
|
||||
{
|
||||
return m_currentVideoId;
|
||||
@@ -155,8 +141,6 @@ void UserPlaylistModel::setCurrentVideoId(const QString &videoId)
|
||||
emitCurrentVideoChanged(old);
|
||||
Q_EMIT currentVideoIdChanged();
|
||||
Q_EMIT canSkipChanged();
|
||||
Q_EMIT canSkipBackChanged();
|
||||
|
||||
}
|
||||
|
||||
int UserPlaylistModel::currentIndex() const
|
||||
@@ -180,32 +164,12 @@ bool UserPlaylistModel::canSkip() const
|
||||
&& currentTrackIt != m_playlist.tracks.end()
|
||||
&& !m_playlist.tracks.empty();
|
||||
}
|
||||
bool UserPlaylistModel::canSkipBack() const
|
||||
{
|
||||
const auto currentTrackIt = std::ranges::find_if(m_playlist.tracks, [this](const watch::Playlist::Track &track) {
|
||||
return track.video_id == m_currentVideoId.toStdString();
|
||||
});
|
||||
|
||||
return currentTrackIt != m_playlist.tracks.begin()
|
||||
&& !m_playlist.tracks.empty();
|
||||
}
|
||||
|
||||
void UserPlaylistModel::next()
|
||||
{
|
||||
setCurrentVideoId(nextVideoId());
|
||||
Q_EMIT currentVideoIdChanged();
|
||||
Q_EMIT canSkipChanged();
|
||||
Q_EMIT canSkipBackChanged();
|
||||
|
||||
}
|
||||
|
||||
void UserPlaylistModel::previous()
|
||||
{
|
||||
setCurrentVideoId(previousVideoId());
|
||||
Q_EMIT currentVideoIdChanged();
|
||||
Q_EMIT canSkipChanged();
|
||||
Q_EMIT canSkipBackChanged();
|
||||
|
||||
}
|
||||
|
||||
void UserPlaylistModel::skipTo(const QString &videoId)
|
||||
@@ -215,8 +179,6 @@ void UserPlaylistModel::skipTo(const QString &videoId)
|
||||
emitCurrentVideoChanged(old);
|
||||
Q_EMIT currentVideoIdChanged();
|
||||
Q_EMIT canSkipChanged();
|
||||
Q_EMIT canSkipBackChanged();
|
||||
|
||||
}
|
||||
|
||||
void UserPlaylistModel::playNext(const QString &videoId, const QString &title, const std::vector<meta::Artist> &artists)
|
||||
@@ -237,8 +199,6 @@ void UserPlaylistModel::playNext(const QString &videoId, const QString &title, c
|
||||
endInsertRows();
|
||||
setCurrentVideoId(videoId);
|
||||
Q_EMIT canSkipChanged();
|
||||
Q_EMIT canSkipBackChanged();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -248,8 +208,6 @@ void UserPlaylistModel::playNext(const QString &videoId, const QString &title, c
|
||||
m_playlist.tracks.push_back(std::move(track));
|
||||
endInsertRows();
|
||||
Q_EMIT canSkipChanged();
|
||||
Q_EMIT canSkipBackChanged();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -258,8 +216,6 @@ void UserPlaylistModel::playNext(const QString &videoId, const QString &title, c
|
||||
m_playlist.tracks.insert(currentIt + 1, std::move(track));
|
||||
endInsertRows();
|
||||
Q_EMIT canSkipChanged();
|
||||
Q_EMIT canSkipBackChanged();
|
||||
|
||||
}
|
||||
|
||||
void UserPlaylistModel::append(const QString &videoId, const QString &title, const std::vector<meta::Artist> &artists)
|
||||
@@ -286,8 +242,6 @@ void UserPlaylistModel::clear()
|
||||
|
||||
setCurrentVideoId({});
|
||||
Q_EMIT canSkipChanged();
|
||||
Q_EMIT canSkipBackChanged();
|
||||
|
||||
}
|
||||
|
||||
void UserPlaylistModel::remove(const QString &videoId)
|
||||
@@ -305,8 +259,6 @@ void UserPlaylistModel::remove(const QString &videoId)
|
||||
endRemoveRows();
|
||||
|
||||
Q_EMIT canSkipChanged();
|
||||
Q_EMIT canSkipBackChanged();
|
||||
|
||||
}
|
||||
|
||||
void UserPlaylistModel::shufflePlaylist()
|
||||
|
||||
@@ -23,7 +23,6 @@ class UserPlaylistModel : public AbstractYTMusicModel
|
||||
Q_PROPERTY(QString currentVideoId READ currentVideoId NOTIFY currentVideoIdChanged)
|
||||
Q_PROPERTY(int currentIndex READ currentIndex NOTIFY currentVideoIdChanged)
|
||||
Q_PROPERTY(bool canSkip READ canSkip NOTIFY canSkipChanged)
|
||||
Q_PROPERTY(bool canSkipBack READ canSkipBack NOTIFY canSkipBackChanged)
|
||||
Q_PROPERTY(QString lyrics READ lyrics NOTIFY lyricsChanged)
|
||||
|
||||
public:
|
||||
@@ -47,7 +46,6 @@ public:
|
||||
Q_SIGNAL void initialVideoIdChanged();
|
||||
|
||||
QString nextVideoId() const;
|
||||
QString previousVideoId() const;
|
||||
|
||||
QString currentVideoId() const;
|
||||
void setCurrentVideoId(const QString &videoId);
|
||||
@@ -56,11 +54,7 @@ public:
|
||||
int currentIndex() const;
|
||||
|
||||
bool canSkip() const;
|
||||
bool canSkipBack() const;
|
||||
|
||||
Q_SIGNAL void canSkipChanged();
|
||||
Q_SIGNAL void canSkipBackChanged();
|
||||
|
||||
|
||||
QString playlistId() const;
|
||||
void setPlaylistId(const QString &playlistId);
|
||||
@@ -74,8 +68,6 @@ public:
|
||||
Q_SIGNAL void lyricsChanged();
|
||||
|
||||
Q_INVOKABLE void next();
|
||||
Q_INVOKABLE void previous();
|
||||
|
||||
Q_INVOKABLE void skipTo(const QString &videoId);
|
||||
Q_INVOKABLE void playNext(const QString &videoId, const QString &title, const std::vector<meta::Artist> &artists);
|
||||
Q_INVOKABLE void append(const QString &videoId, const QString &title, const std::vector<meta::Artist> &artists);
|
||||
|
||||
+4
-13
@@ -35,18 +35,18 @@ struct UNEXPORT YTMusicPrivate {
|
||||
|
||||
py::object get_ytmusic() {
|
||||
if (ytmusic.is_none()) {
|
||||
ytmusicapi_module = py::module::import("ytmusicapi");
|
||||
ytmusic = ytmusicapi_module.attr("YTMusic")(auth, user, requests_session, proxies, language);
|
||||
const auto module = py::module::import("ytmusicapi");
|
||||
ytmusic = module.attr("YTMusic")(auth, user, requests_session, proxies, language);
|
||||
|
||||
// Some of the called python code randomly fails if the encoding is not utf8
|
||||
setenv("LC_ALL", "en_US.utf8", true);
|
||||
|
||||
auto oldVersion = ytmusicapi_module.attr("__dict__").contains("_version");
|
||||
auto oldVersion = module.attr("__dict__").contains("_version");
|
||||
if (oldVersion) {
|
||||
std::cerr << "Running with outdated and untested version of ytmusicapi." << std::endl;
|
||||
std::cerr << "The currently tested and supported version is " << TESTED_YTMUSICAPI_VERSION << std::endl;
|
||||
} else {
|
||||
const auto version = ytmusicapi_module.attr("__version__").cast<std::string>();
|
||||
const auto version = module.attr("__version__").cast<std::string>();
|
||||
if (version != TESTED_YTMUSICAPI_VERSION) {
|
||||
std::cerr << "Running with untested version of ytmusicapi " << version << "." << std::endl;
|
||||
std::cerr << "The currently tested and supported version is " << TESTED_YTMUSICAPI_VERSION << std::endl;
|
||||
@@ -66,9 +66,6 @@ struct UNEXPORT YTMusicPrivate {
|
||||
return ytdl;
|
||||
}
|
||||
|
||||
public:
|
||||
py::module ytmusicapi_module;
|
||||
|
||||
private:
|
||||
py::object ytmusic = py::none();
|
||||
py::object ytdl = py::none();
|
||||
@@ -510,9 +507,3 @@ Lyrics YTMusic::get_lyrics(const std::string &browse_id) const
|
||||
lyrics["lyrics"].cast<std::string>()
|
||||
};
|
||||
}
|
||||
|
||||
std::string YTMusic::get_version() const
|
||||
{
|
||||
d->get_ytmusic();
|
||||
return d->ytmusicapi_module.attr("__version__").cast<std::string>();
|
||||
}
|
||||
@@ -319,8 +319,6 @@ public:
|
||||
|
||||
Lyrics get_lyrics(const std::string &browse_id) const;
|
||||
|
||||
std::string get_version() const;
|
||||
|
||||
// TODO wrap more methods
|
||||
|
||||
private:
|
||||
|
||||
Reference in new issue
Block a user