From b70305cc8279a9f10eead2cd768907574317a288 Mon Sep 17 00:00:00 2001 From: Jakob Haufe Date: Sun, 13 Nov 2022 19:12:33 +0100 Subject: [PATCH] New upstream version 3.9.3 --- lib/js/js.cpp | 7 +- lib/js/js.pri | 6 +- lib/js/jsvm.cpp | 20 +++ lib/js/jsvm.h | 18 +++ lib/media/src/mpv/mediampv.cpp | 8 ++ locale/ar.ts | 32 ++--- locale/da.ts | 4 +- locale/gl.ts | 66 +++++----- locale/id.ts | 4 +- locale/pt_BR.ts | 6 +- locale/ru.ts | 64 +++++----- locale/uk.ts | 4 +- locale/uk_UA.ts | 216 ++++++++++++++++----------------- locale/zh_CN.ts | 52 ++++---- minitube.pro | 2 +- src/mainwindow.cpp | 2 +- src/standardfeedsview.cpp | 16 +++ src/standardfeedsview.h | 3 + src/videosourcewidget.cpp | 18 ++- src/videosourcewidget.h | 5 +- 20 files changed, 316 insertions(+), 237 deletions(-) create mode 100644 lib/js/jsvm.cpp create mode 100644 lib/js/jsvm.h diff --git a/lib/js/js.cpp b/lib/js/js.cpp index 8840064..0da5c79 100644 --- a/lib/js/js.cpp +++ b/lib/js/js.cpp @@ -1,6 +1,7 @@ #include "js.h" #include "cachedhttp.h" +#include "jsvm.h" namespace { Http &cachedHttp() { @@ -55,8 +56,6 @@ JSResult &JS::callFunction(JSResult *result, const QString &name, const QJSValue return *result; } - resetNAM(); - auto function = engine->evaluate(name); if (!function.isCallable()) { qWarning() << function.toString() << " is not callable"; @@ -116,6 +115,9 @@ void JS::initialize() { checkError(setTimeoutWrapperFunction); engine->globalObject().setProperty("clearTimeout", timer.property("clearTimeout")); + QJSValue vm = engine->newQObject(new JSVM(engine)); + engine->globalObject().setProperty("runInContextQt", vm.property("runInContext")); + connect(cachedHttp().get(url), &HttpReply::finished, this, [this](auto &reply) { if (!reply.isSuccessful()) { emit initFailed("Cannot load JS"); @@ -126,6 +128,7 @@ void JS::initialize() { auto value = engine->evaluate(reply.body()); if (!checkError(value)) { qDebug() << "Initialized"; + resetNAM(); ready = true; emit initialized(); } diff --git a/lib/js/js.pri b/lib/js/js.pri index 62baf7f..d0584e9 100644 --- a/lib/js/js.pri +++ b/lib/js/js.pri @@ -6,9 +6,11 @@ QT *= qml HEADERS += \ $$PWD/js.h \ $$PWD/jsnamfactory.h \ - $$PWD/jsresult.h + $$PWD/jsresult.h \ + $$PWD/jsvm.h SOURCES += \ $$PWD/js.cpp \ $$PWD/jsnamfactory.cpp \ - $$PWD/jsresult.cpp + $$PWD/jsresult.cpp \ + $$PWD/jsvm.cpp diff --git a/lib/js/jsvm.cpp b/lib/js/jsvm.cpp new file mode 100644 index 0000000..8d70be1 --- /dev/null +++ b/lib/js/jsvm.cpp @@ -0,0 +1,20 @@ +#include "jsvm.h" + +JSVM::JSVM(QQmlEngine *parent) : QObject{parent}, parentEngine(parent) {} + +QJSValue JSVM::runInContext(QString code, QJSValue props) { + auto engine = QQmlEngine(this); + + auto objectKeysFunction = parentEngine->evaluate("Object.keys"); + auto keys = objectKeysFunction.call({props}); + const int keyLength = keys.property("length").toInt(); + for (int i = 0; i < keyLength; ++i) { + auto key = keys.property(i).toString(); + auto value = props.property(key).toString(); + qDebug() << "Setting property" << key << value; + engine.globalObject().setProperty(key, value); + } + + auto res = engine.evaluate(code).toString(); + return parentEngine->toScriptValue(res); +} diff --git a/lib/js/jsvm.h b/lib/js/jsvm.h new file mode 100644 index 0000000..a522bd5 --- /dev/null +++ b/lib/js/jsvm.h @@ -0,0 +1,18 @@ +#ifndef JSVM_H +#define JSVM_H + +#include +#include + +class JSVM : public QObject { + Q_OBJECT +public: + explicit JSVM(QQmlEngine *parent); + + Q_INVOKABLE QJSValue runInContext(QString code, QJSValue props); + +private: + QQmlEngine *parentEngine; +}; + +#endif // JSVM_H diff --git a/lib/media/src/mpv/mediampv.cpp b/lib/media/src/mpv/mediampv.cpp index 8a548b7..4cad49d 100644 --- a/lib/media/src/mpv/mediampv.cpp +++ b/lib/media/src/mpv/mediampv.cpp @@ -86,6 +86,7 @@ MediaMPV::MediaMPV(QObject *parent) : Media(parent), widget(nullptr) { mpv_observe_property(mpv, 0, "volume", MPV_FORMAT_DOUBLE); mpv_observe_property(mpv, 0, "mute", MPV_FORMAT_FLAG); mpv_observe_property(mpv, 0, "pause", MPV_FORMAT_FLAG); + mpv_observe_property(mpv, 0, "paused-for-cache", MPV_FORMAT_FLAG); } // This slot is invoked by wakeup() (through the mpvEvents signal). @@ -200,6 +201,13 @@ void MediaMPV::handleMpvEvent(mpv_event *event) { } } + else if (strcmp(prop->name, "paused-for-cache") == 0) { + if (prop->format == MPV_FORMAT_FLAG) { + int pausedForCache = *(int *)prop->data; + setState(pausedForCache == 1 ? Media::BufferingState : Media::PlayingState); + } + } + break; } diff --git a/locale/ar.ts b/locale/ar.ts index 6fe886c..3a0326a 100644 --- a/locale/ar.ts +++ b/locale/ar.ts @@ -27,7 +27,7 @@ Powered by %1 - + بدعم من %1 Open-source software @@ -107,7 +107,7 @@ You have %n new video(s) - + You have %n new video(s)You have %n new video(s)You have %n new video(s)You have %n new video(s)You have %n new video(s)لديك %n فيديو جديد @@ -192,11 +192,11 @@ %n day(s) ago - + %n يوم مضى%n يوم مضى%n يوم مضى%n يوم مضى%n يوم مضى%n يوم مضى %n month(s) ago - + %n شهر مضى%n شهر مضى%n شهر مضى%n شهر مضى%n شهر مضى%n شهر مضى K @@ -219,11 +219,11 @@ %n week(s) ago - + %n اسبوع مضى%n اسبوع مضى%n اسبوع مضى%n اسبوع مضى%n اسبوع مضى%n اسبوع مضى %n year(s) ago - + %n سنة مضت%n سنة مضت%n سنة مضت%n سنة مضت%n سنة مضت%n سنة مضت @@ -277,7 +277,7 @@ %n Download(s) - + %n تحميل%n تحميل%n تحميل%n تحميل%n تحميل%n تحميل @@ -674,7 +674,7 @@ Menu - + قائمة &Love %1? Rate it! @@ -1038,7 +1038,7 @@ This year - + هذه السنة HD @@ -1171,19 +1171,19 @@ Music - + موسيقى News - + الأخبار Movies - + الأفلام Gaming - + الألعاب @@ -1225,7 +1225,7 @@ Download Update - + تحميل التحديث Downloading update... @@ -1241,7 +1241,7 @@ Version %1 is available. - + الإصدار %1 متوفر. An update has been downloaded and is ready to be installed. @@ -1492,7 +1492,7 @@ Download Update - + تحميل التحديث \ No newline at end of file diff --git a/locale/da.ts b/locale/da.ts index c55af31..eba1e5a 100644 --- a/locale/da.ts +++ b/locale/da.ts @@ -27,11 +27,11 @@ Powered by %1 - + Styrket af 1% Open-source software - + Åben-Kildekode software Icon designed by %1. diff --git a/locale/gl.ts b/locale/gl.ts index 88f99ae..657521b 100644 --- a/locale/gl.ts +++ b/locale/gl.ts @@ -1,4 +1,4 @@ - + AboutView @@ -223,7 +223,7 @@ %n year(s) ago - + %n ano(s) atrás%n ano(s) atrás @@ -852,15 +852,15 @@ Rewind %1 seconds - + Rebobina %1 segundos Fast forward %1 seconds - + Avanzar %1 segundos channel - + canle @@ -1038,19 +1038,19 @@ This year - + Este ano HD - + HD 4K - + 4K HDR - + HDR @@ -1099,19 +1099,19 @@ Remove - + Eliminar Need a remote control for %1? Try %2! - + Necesitas un control remoto para %1? Proba %2! I keep improving %1 to make it the best I can. Support this work! - + Sigo mellorando %1 para que sexa o mellor posible. Apoia este traballo! An update is ready to be installed. Quit and install update. - + Hai unha actualización para ser instalada. Saia e instale a actualización. @@ -1167,23 +1167,23 @@ Trending - + Tendencia Music - + Música News - + Noticias Movies - + Películas Gaming - + Xogos @@ -1201,31 +1201,31 @@ Updater Check for Updates... - + Buscando actualizacións... Version %1 is available... - + Está dispoñible a versión %1... Downloading version %1... - + Baixando a versión %1... Restart to Update - + Reiniciar para actualizar Version %1 download failed - + Erro ao baixar a versión %1 Check for Updates - + Buscar actualizacións Download Update - + Baixar actualización Downloading update... @@ -1233,19 +1233,19 @@ Retry Update Download - + Volver a intentar baixar a actualización You have the latest version. - + Xa tes a última versión. Version %1 is available. - + Está dispoñible a versión %1. An update has been downloaded and is ready to be installed. - + Baixouse unha actualización e está listo para que se instale. @@ -1461,18 +1461,18 @@ updater::DefaultUpdater There are currently no updates available. - + Non hai actualmente actualizacións dispoñibles. updater::Dialog You already have the latest version - + Xa tes a última versión Downloading %1 %2... - + Baixando %1 %2... A new version of %1 is available! @@ -1492,7 +1492,7 @@ Download Update - + Baixar actualización \ No newline at end of file diff --git a/locale/id.ts b/locale/id.ts index ce3ee9c..7f2ee97 100644 --- a/locale/id.ts +++ b/locale/id.ts @@ -27,11 +27,11 @@ Powered by %1 - + Ditenagai oleh %1 Open-source software - + Peranti lunak sumber terbuka Icon designed by %1. diff --git a/locale/pt_BR.ts b/locale/pt_BR.ts index 3cb23d5..bd50391 100644 --- a/locale/pt_BR.ts +++ b/locale/pt_BR.ts @@ -223,7 +223,7 @@ %n year(s) ago - %n ano atrás%n anos atrás + %n ano atrás%n ano(s) atrás @@ -1213,7 +1213,7 @@ Restart to Update - Reiniciar para atualizar + Reiniciar para Atualizar Version %1 download failed @@ -1221,7 +1221,7 @@ Check for Updates - Verificar se há atualizações + Verificar se há Atualizações Download Update diff --git a/locale/ru.ts b/locale/ru.ts index 93fc4f9..7954b01 100644 --- a/locale/ru.ts +++ b/locale/ru.ts @@ -1,4 +1,4 @@ - + AboutView @@ -224,7 +224,7 @@ %n year(s) ago - + %n год назад%n лет назад%n лет назад%n лет назад @@ -278,7 +278,7 @@ %n Download(s) - + Скачано %n разСкачано %n разСкачано %n разСкачано %n раз @@ -861,7 +861,7 @@ channel - + канал @@ -1039,19 +1039,19 @@ This year - + В этом году HD - + HD 4K - + 4K HDR - + HDR @@ -1100,19 +1100,19 @@ Remove - + Убрать Need a remote control for %1? Try %2! - + Нужен пульт для %1? Попробуйте %2! I keep improving %1 to make it the best I can. Support this work! - + Я буду улучшать %1 , чтобы достичь лучшего результата. Поддержите работу! An update is ready to be installed. Quit and install update. - + Обновление готово для установки. Выйдите и установите обновление. @@ -1168,23 +1168,23 @@ Trending - + Популярное Music - + Музыка News - + Новости Movies - + Фильмы Gaming - + Игры @@ -1202,31 +1202,31 @@ Updater Check for Updates... - + Проверить обновления... Version %1 is available... - + Доступна версия %1 Downloading version %1... - + Качаю версию %1... Restart to Update - + Перезапуск для обновления Version %1 download failed - + Загрузка версии %1 сорвалась Check for Updates - + Проверить обновления Download Update - + Скачать обновление Downloading update... @@ -1234,19 +1234,19 @@ Retry Update Download - + Попытаться скачать обновление заново You have the latest version. - + У вас последняя версия. Version %1 is available. - + Доступна версия %1 An update has been downloaded and is ready to be installed. - + Обновление было загружено и готово к установке. @@ -1462,18 +1462,18 @@ updater::DefaultUpdater There are currently no updates available. - + Нет новых обновлений. updater::Dialog You already have the latest version - + У вас уже последняя версия Downloading %1 %2... - + Загружается %1 %2... A new version of %1 is available! @@ -1493,7 +1493,7 @@ Download Update - + Скачать обновление \ No newline at end of file diff --git a/locale/uk.ts b/locale/uk.ts index 41591c5..39c4f25 100644 --- a/locale/uk.ts +++ b/locale/uk.ts @@ -671,7 +671,7 @@ Toggle &Menu Bar - + Приховати &Menu Bar Menu @@ -791,7 +791,7 @@ You can still access the menu bar by pressing the ALT key - + Відкрити меню можна натисканням ALT diff --git a/locale/uk_UA.ts b/locale/uk_UA.ts index 79a6639..4f0b305 100644 --- a/locale/uk_UA.ts +++ b/locale/uk_UA.ts @@ -19,7 +19,7 @@ Please <a href='%1'>donate</a> to support the continued development of %2. - Будь ласка, <a href='%1'>внесіть пожертву,</a> аби підтримати подальший розвиток %2. + Будь ласка, <a href='%1'>внесіть пожертву</a>, щоб підтримати подальший розвиток %2. Translate %1 to your native language using %2 @@ -27,11 +27,11 @@ Powered by %1 - + За допомогою %1 Open-source software - + ПЗ із відкритим джерельним кодом Icon designed by %1. @@ -74,11 +74,11 @@ The full version allows you to watch videos without interruptions. - Повна версія дозволяє дивитися видиво без перерв. + Повна версія дозволяє дивитися відео без перерв. By purchasing the full version, you will also support the hard work I put into creating %1. - При купівлі повної версії, Ви, також, надаєте підтримку важкій роботі, яка була задіяна під час створення %1. + Купуючи повну версію Ви також підтримуєте важку працю внесену в створення %1. Use Demo @@ -97,7 +97,7 @@ AppWidget Download - + Завантажити @@ -108,18 +108,18 @@ You have %n new video(s) - + У Вас %n нове відеоУ Вас %n нових відеоУ Вас %n нових відеоУ Вас %n нових відео ChannelItemDelegate All Videos - Усі видива + Усі відео Unwatched Videos - Не переглянуті видива + Не переглянуті відео @@ -142,11 +142,11 @@ Most Watched - Найбільш переглядаюче + Найбільш переглядувані Sort by - Сортувати за + Ґатункувати за Mark all as watched @@ -158,15 +158,15 @@ You have no subscriptions. Use the star symbol to subscribe to channels. - У Вас немає підписок. Використовуйте символ зірочки, аби підписуватися на канали. + У Вас нема підписок. Використовуйте символ зірочки, щоб підписуватися на канали. All Videos - Усі видива + Усі відео Unwatched Videos - Не переглянуті видива + Не переглянуті відео Mark as Watched @@ -178,41 +178,41 @@ There are no updated subscriptions at this time. - Наразі оновлень підписок немає. + Наразі оновлень підписок нема. DataUtils Just now - Тільки що + Тільки-но %n hour(s) ago - + %n год. тому%n год. тому%n год. тому%n год. тому %n day(s) ago - + %n день тому%n дні тому%n днів тому%n днів тому %n month(s) ago - + %n місяць тому%n місяці тому%n місяців тому%n місяців тому K K as in Kilo, i.e. thousands - + Тис M M stands for Millions - + Млн B B stands for Billions - + Млрд %1 views @@ -220,11 +220,11 @@ %n week(s) ago - + %n тиждень тому%n тижні тому%n тижнів тому%n тижнів тому %n year(s) ago - + %n рік тому%n роки тому%n років тому%n років тому @@ -278,7 +278,7 @@ %n Download(s) - + %n Завантаження%n Завантаження%n Завантажень%n Завантажень @@ -315,7 +315,7 @@ Extra The executable file has been tempered with, maybe by a virus. - Виконуваний файл було пошкоджено, може бути, вірус. + Виконуваний файл було пошкоджено, можливо вірусом. %1 will not run. Try installing again. @@ -354,11 +354,11 @@ Next track - Наступний трек + Наступна доріжка Previous track - Попередній трек + Попередня доріжка Increase volume @@ -389,7 +389,7 @@ Find videos and channels by keyword - Знайти видива та канали за ключовими словами + Знайти відео та канали за ключовими словами Browse @@ -397,7 +397,7 @@ Browse videos by category - Оглянути видива за катеґоріями + Оглянути відео за катеґоріями Subscriptions @@ -443,7 +443,7 @@ Go back to the previous track - Повернутися до попереднього треку + Повернутися до попередньої доріжки S&kip @@ -451,7 +451,7 @@ Skip to the next video - Перейти до наступного видива + Перейти до наступного відео &Play @@ -475,7 +475,7 @@ Hide the playlist and the toolbar - Сховати перелік та панель інструментів + Сховати перелік та панель знарядь Open the &YouTube Page @@ -483,7 +483,7 @@ Go to the YouTube video page and pause playback - Відкрити сторінку YouTube та призупинити відтворення видива + Відкрити сторінку YouTube та призупинити відтворення відео Copy the YouTube &Link @@ -491,23 +491,23 @@ Copy the current video YouTube link to the clipboard - Скопіювати YouTube посилання поточного видива до буферу + Скопіювати YouTube-посилання поточного відео до буферу Copy the Video Stream &URL - Копіювати посилання на ви&диво потік + Копіювати посилання на ві&деопотік Copy the current video stream URL to the clipboard - Скопіювати посилання поточного видива до буферу + Скопіювати посилання поточного відео до буферу Find Video &Parts - Знайти &фраґменти видива + Знайти &фрагменти відео Find other video parts hopefully in the right order - Знайти інші частини видива, сподіваюся, у правильному порядку + Знайти инші частини відео, сподіваюсь, у правильному порядку &Remove @@ -515,7 +515,7 @@ Remove the selected videos from the playlist - Вилучити обрані видива з переліку + Вилучити вибрані відео з грайлиста Move &Up @@ -523,7 +523,7 @@ Move up the selected videos in the playlist - Перемістити обране видиво догори у переліку + Перемістити вибране відео догори у грайлисті Move &Down @@ -531,7 +531,7 @@ Move down the selected videos in the playlist - Перемістити обране видиво донизу в переліку + Перемістити вибране відео донизу в грайлисті &Clear Recent Searches @@ -539,7 +539,7 @@ Clear the search history. Cannot be undone. - Очистити історію пошуку (зміни незворотні). + Очистити дієпис пошуку (зміни незворотні). &Quit @@ -551,7 +551,7 @@ &Website - &Веб-сайт + &Вебсайт %1 on the Web @@ -587,7 +587,7 @@ Manually start playing videos - Почати відтворення видива самотужки + Почати відтворення відео самотужки &Downloads @@ -595,7 +595,7 @@ Show details about video downloads - Показати деталі про видива, що завантажуються + Показати деталі про завантажувані відео &Download @@ -603,7 +603,7 @@ Download the current video - Завантажити це видиво + Завантажити це відео Take &Snapshot @@ -615,7 +615,7 @@ Share the current video using %1 - Поділитися поточним видивом за допомогою %1 + Поділитися поточним відео за допомогою %1 &Email @@ -635,7 +635,7 @@ &Stop After This Video - Зу&пинити після цього видиво + Зу&пинити після цього відео &Report an Issue... @@ -651,11 +651,11 @@ &Related Videos - Схо&жі видива + Схо&жі відео Watch videos related to the current one - Дивитися видива, пов’язані з поточним + Дивитися відео, пов’язані з поточним Open in &Browser... @@ -663,19 +663,19 @@ Restricted Mode - + Безпечний режим Hide videos that may contain inappropriate content - + Сховати відео, які можуть містити невідповідний вміст Toggle &Menu Bar - + Приховати &Меню Menu - + Меню &Love %1? Rate it! @@ -695,11 +695,11 @@ &Playlist - &Перелік відтворення + &Грайлист &Video - &Видиво + &Відео &Share @@ -715,7 +715,7 @@ Press %1 to raise the volume, %2 to lower it - Натисніть %1, аби приглушити гучність, та %2, щоб її відновити + Натисніть %1, аби приглушити гучність, і %2, щоб її відновити Choose your content location @@ -731,7 +731,7 @@ If you close %1 now, this download will be cancelled. - Якщо закрити %1 негайно, усі завантаження буде скасовано. + Якщо закрити %1 негайно, всі завантаження буде скасовано. Close and cancel download @@ -779,7 +779,7 @@ Maximum video definition set to %1 - Режим чіткості видива %1 + Режим чіткости відео %1 Your privacy is now safe @@ -791,22 +791,22 @@ You can still access the menu bar by pressing the ALT key - + Відкрити меню можна натисканням ALT MediaView You can now paste the YouTube link into another application - Тепер Ви можете використовувати YouTube посилання на видиво у зовнішній проґрамі + Тепер Ви можете використовувати YouTube-посилання на відео у зовнішній проґрамі You can now paste the video stream URL into another application - Тепер Ви можете використовувати посилання на видиво у зовнішній проґрамі + Тепер Ви можете використовувати посилання на відео у зовнішній проґрамі The link will be valid only for a limited time. - Посилання буде дійсне лише протягом обмеженого часу. + Посилання буде дійсне лише впродовж обмеженого часу. Downloading %1 @@ -841,7 +841,7 @@ Switched to %1 - + Перемикнутися на %1 Unsubscribed from %1 @@ -861,7 +861,7 @@ channel - + канал @@ -902,7 +902,7 @@ PickMessage Pick a video - + Оберіть відео @@ -937,11 +937,11 @@ Open parent folder - Перейти до теки з видивами + Перейти до теки з відео Restart downloading - Завантажити заново + Перезапустити завантаження @@ -956,14 +956,14 @@ No more videos - Більше немає + Більше нема RefineSearchWidget Sort by - Сортувати за + Ґатункувати за Relevance @@ -1039,19 +1039,19 @@ This year - + Цього року HD - + HD 4K - + 4K HDR - + HDR @@ -1100,19 +1100,19 @@ Remove - + Вилучити Need a remote control for %1? Try %2! - + Потрібен пульт дистанційного керування для %1? Спробуйте %2! I keep improving %1 to make it the best I can. Support this work! - + Я постійно вдосконалюю %1, щоб зробити це якнайкраще. Підтримайте цю роботу! An update is ready to be installed. Quit and install update. - + Оновлення готове до встановлення. Закрийте та встановіть оновлення. @@ -1123,7 +1123,7 @@ &Forward - + &Уперед Forward to %1 @@ -1168,23 +1168,23 @@ Trending - + Тенденція Music - + Музика News - + Новини Movies - + Фільми Gaming - + Ігри @@ -1195,38 +1195,38 @@ Downloading %1... - + Завантаження %1... Updater Check for Updates... - + Перевірити наявність оновлень... Version %1 is available... - + Доступна версія %1 ... Downloading version %1... - + Завантаження версії %1... Restart to Update - + Перезапустити оновлення Version %1 download failed - + Не вдалося завантажити версію %1 Check for Updates - + Перевірити наявність оновлень Download Update - + Завантажити оновлення Downloading update... @@ -1234,37 +1234,37 @@ Retry Update Download - + Повторити спробу завантаження оновлення You have the latest version. - + У вас остання версія. Version %1 is available. - + Доступна версія %1. An update has been downloaded and is ready to be installed. - + Оновлення завантажено та готове до встановлення. YTJSVideo Cannot get video stream for %1 - Не вдалося отримати видивопотік для %1 + Не вдалось отримати відеопотік для %1 YTRegions Algeria - Алжир + Алжір Argentina - Аргентина + Арґентина Australia @@ -1392,7 +1392,7 @@ Russia - Російська Федерація + Московія Saudi Arabia @@ -1412,7 +1412,7 @@ Spain - Іспанія + Еспанія Sweden @@ -1440,7 +1440,7 @@ United Kingdom - Великобританія + Велика Британія Yemen @@ -1455,25 +1455,25 @@ YTVideo Cannot get video stream for %1 - Не вдалося отримати видивопотік для %1 + Не вдалось отримати відеопотік для %1 updater::DefaultUpdater There are currently no updates available. - + Наразі оновлень нема. updater::Dialog You already have the latest version - + У вас вже є остання версія Downloading %1 %2... - + Завантаження %1 %2... A new version of %1 is available! @@ -1493,7 +1493,7 @@ Download Update - + Завантажити оновлення \ No newline at end of file diff --git a/locale/zh_CN.ts b/locale/zh_CN.ts index 9c8a76c..4176c7b 100644 --- a/locale/zh_CN.ts +++ b/locale/zh_CN.ts @@ -223,7 +223,7 @@ %n year(s) ago - + %n 年前 @@ -1038,19 +1038,19 @@ This year - + 今年 HD - + HD 4K - + 4K HDR - + HDR @@ -1111,7 +1111,7 @@ An update is ready to be installed. Quit and install update. - + 更新已准备好,退出并安装更新 @@ -1167,23 +1167,23 @@ Trending - + 趋势 Music - + 音乐 News - + 新闻 Movies - + 电影 Gaming - + 游戏 @@ -1201,31 +1201,31 @@ Updater Check for Updates... - + 查检更新 Version %1 is available... - + 版本 %1 可用 Downloading version %1... - + 下载版本 %1... Restart to Update - + 重启开始更新 Version %1 download failed - + 版本 %1 下载失败 Check for Updates - + 查检更新 Download Update - + 下载更新 Downloading update... @@ -1233,19 +1233,19 @@ Retry Update Download - + 重试下载更新 You have the latest version. - + 已是最新版本 Version %1 is available. - + 版本 %1 可用 An update has been downloaded and is ready to be installed. - + 更新下载,准备更新 @@ -1461,18 +1461,18 @@ updater::DefaultUpdater There are currently no updates available. - + 当前没有更新可用 updater::Dialog You already have the latest version - + 已是最新版本 Downloading %1 %2... - + 已下载 %1 %2... A new version of %1 is available! @@ -1492,7 +1492,7 @@ Download Update - + 下载更新 \ No newline at end of file diff --git a/minitube.pro b/minitube.pro index 71420f3..646dd4e 100644 --- a/minitube.pro +++ b/minitube.pro @@ -1,7 +1,7 @@ CONFIG += c++17 exceptions_off rtti_off object_parallel_to_source TEMPLATE = app -VERSION = 3.9.1 +VERSION = 3.9.3 DEFINES += APP_VERSION="$$VERSION" APP_NAME = Minitube diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 610c0d1..e4f09c6 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -171,7 +171,7 @@ MainWindow::MainWindow() } else if (VideoAPI::impl() == VideoAPI::YT3) { YT3::instance().initApiKeys(); } else if (VideoAPI::impl() == VideoAPI::JS) { - JS::instance().initialize(QUrl(QLatin1String(Constants::WEBSITE) + "-ws/bundle2.js")); + JS::instance().initialize(QUrl(QLatin1String(Constants::WEBSITE) + "-ws/bundle3.js")); // JS::instance().initialize(QUrl("http://localhost:8000/bundle-test.js")); Invidious::instance().initServers(); } diff --git a/src/standardfeedsview.cpp b/src/standardfeedsview.cpp index 2fb697d..4c23365 100644 --- a/src/standardfeedsview.cpp +++ b/src/standardfeedsview.cpp @@ -82,6 +82,19 @@ void StandardFeedsView::load() { QAction *regionAction = MainWindow::instance()->getRegionAction(); regionAction->setText(region.name); regionAction->setIcon(YTRegions::iconForRegionId(region.id)); + + loadNextPreview(); +} + +void StandardFeedsView::loadNextPreview(VideoSourceWidget *previous) { + int index = 0; + if (previous) { + index = sourceWidgets.indexOf(previous); + index++; + if (index == sourceWidgets.length() || index < 0) return; + } + auto w = sourceWidgets.at(index); + w->loadPreview()->finally([this, w] { loadNextPreview(w); }); } void StandardFeedsView::layoutCategories(const QVector &categories) { @@ -106,6 +119,9 @@ void StandardFeedsView::addVideoSourceWidget(VideoSource *videoSource) { int i = layout->count(); const int cols = VideoAPI::impl() == VideoAPI::YT3 ? 5 : 2; layout->addWidget(w, i / cols, i % cols); + + connect(w, &QObject::destroyed, this, [this, w] { sourceWidgets.removeOne(w); }); + sourceWidgets << w; } void StandardFeedsView::removeVideoSourceWidget(VideoSourceWidget *videoSourceWidget) { diff --git a/src/standardfeedsview.h b/src/standardfeedsview.h index aa07c0c..1070cab 100644 --- a/src/standardfeedsview.h +++ b/src/standardfeedsview.h @@ -56,9 +56,12 @@ private slots: private: void resetLayout(); void addVideoSourceWidget(VideoSource *videoSource); + void loadNextPreview(VideoSourceWidget *previous = nullptr); + YTStandardFeed * buildStandardFeed(const QString &feedId, const QString &label, QString time = QString()); QGridLayout *layout; + QVector sourceWidgets; }; #endif // CATEGORIESVIEW_H diff --git a/src/videosourcewidget.cpp b/src/videosourcewidget.cpp index 2e4adf7..3cb2ef0 100644 --- a/src/videosourcewidget.cpp +++ b/src/videosourcewidget.cpp @@ -33,7 +33,6 @@ VideoSourceWidget::VideoSourceWidget(VideoSource *videoSource, QWidget *parent) lastPixelRatio(0) { videoSource->setParent(this); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - loadPreview(); connect(this, SIGNAL(activated()), SLOT(activate())); } @@ -54,9 +53,10 @@ void VideoSourceWidget::previewVideo(const QVector