From 61a90d07120d6dce327282a6fbf7395e1fa7b138 Mon Sep 17 00:00:00 2001 From: Balackburn Date: Tue, 20 Aug 2024 10:58:28 +0200 Subject: [PATCH] Squashed commit of the following: commit 2ece340746622c50667b9d466410e859eb459339 Merge: f652976 ca84635 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Tue Aug 20 00:52:28 2024 -0700 Merge pull request #358 from bhackel/gestures Gestures and Loop commit ca84635cf4266715f4e741e9faaa094b5cb54220 Merge: 5066716 87d7b57 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Tue Aug 20 00:31:16 2024 -0700 Merge branch 'main' into gestures commit 5066716f7f531fd1da22327bd06340498d4ac906 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Mon Aug 19 23:53:21 2024 -0700 Localizations for Gestures commit bed87298f614ad8ecdb2ab6df06dc3c7e4e506f7 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Sun Aug 18 22:25:52 2024 -0700 Update Submodule commit 87d7b576ddf7e41d1bc733a37c6ccd63023ed12a Author: GitHub Actions Date: Tue Aug 20 00:53:21 2024 +0000 updated submodules commit f652976a536b813b4176f7126f44bd9e8d962ccb Author: GitHub Actions Date: Tue Aug 20 00:44:56 2024 +0000 updated submodules commit 44d6ffe781045bdf9103a630f9caad1008f215bf Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Mon Aug 19 14:08:08 2024 -0700 Create LICENSE commit 023fafae15be7b13a28b78dfd78c625db729afe8 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Sun Aug 18 18:17:32 2024 -0700 Added YouLoop submodule to Tweaks/ folder commit 4c5e2ee0e8673285a3c3e10d7eaaf3b3d5647970 Author: GitHub Actions Date: Sun Aug 18 00:49:27 2024 +0000 updated submodules commit de89f7aca8ee5fbb9fae857b61418c4c0c8c4021 Author: GitHub Actions Date: Sat Aug 17 00:43:19 2024 +0000 updated submodules commit 36f9da844b230f76f5400b49f4ac46c95bb77d93 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Fri Aug 16 09:27:09 2024 -0700 Add disable option commit e63bc374cf8ed56641f4584e11b18d5a66e97b21 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Fri Aug 16 01:13:22 2024 -0700 Fix defaults and text descriptions commit 067ad5a373fd5c3f7126566136c9c2afc7869248 Merge: b081d5b 6e8bbcb Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Fri Aug 16 01:40:45 2024 -0700 Merge pull request #345 from bhackel/video-player Basic Video player commit 6e8bbcb49e99c4e2adee9e7951c22610c3c2bf1d Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Fri Aug 16 01:01:33 2024 -0700 Add localization commit e21e026c30041317f329acdce88173dc0ee1e97b Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Fri Aug 16 00:32:22 2024 -0700 Fix compile commit 1647358a9e189d57c0c0112d1f5870ed6588b05d Merge: feaaa07 2d82e0b Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Fri Aug 16 00:35:06 2024 -0700 Merge branch 'main' into video-player commit feaaa07e9e30d2cf52103b0a90ff8b19762556ec Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Fri Aug 16 00:33:37 2024 -0700 Revert "Prototype 2" This reverts commit 8f578bb741f6d1c9f39dedf0dfa24c686a75ae66. commit f434239419177cbf6bc4b8208b773605d03bafe7 Merge: e626997 2d82e0b Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Fri Aug 16 00:26:24 2024 -0700 Merge branch 'main' into gestures commit e62699749d303b5d70519041d88e26188498051c Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Fri Aug 16 00:25:24 2024 -0700 Sensitivity and Deadzone settings commit 4602b74e6fc3d1026813a176a967fe98741fdd3b Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Thu Aug 15 23:15:18 2024 -0700 Add deadzone commit 6854f91c1e640613a2158aa5c26962ea41112a4a Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Thu Aug 15 10:45:27 2024 -0700 Implement gesture selection commit b081d5b52e5f87112283e415089227227c21a166 Author: GitHub Actions Date: Fri Aug 16 00:44:28 2024 +0000 updated submodules commit 8ed3d97d2debf5b69c1a5d9da494086a668fd5f4 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Wed Aug 14 23:56:27 2024 -0700 Gesture refactor for settings commit e92ada842799d3049994c8d57ea90ddb1dc8d3b8 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Wed Aug 14 22:20:36 2024 -0700 Gesture settings commit 8f578bb741f6d1c9f39dedf0dfa24c686a75ae66 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Wed Aug 14 18:28:42 2024 -0700 Prototype 2 commit 2d82e0b5329c579252ad886336240a79b04eadc8 Author: GitHub Actions Date: Thu Aug 15 00:43:33 2024 +0000 updated submodules commit b963c807bbf5fad0e1c3299312191f8c7b26d62e Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Wed Aug 14 09:15:43 2024 -0700 Video player prototype commit 10882e5d613e258bafebb222828183e787526ef0 Merge: 4ed8e94 76f48a2 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Wed Aug 14 09:00:51 2024 -0700 Merge branch 'main' into gestures commit 4ed8e948806781a63bd516d5502ebee843ecae12 Merge: b588b7f 9aa33a6 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Tue Aug 13 23:41:37 2024 -0700 Merge branch 'main' into gestures commit b588b7f6d0af074f2850187f4bb7c51ee71db010 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Tue Aug 13 22:02:23 2024 -0700 Attempt seek gesture commit 9aa33a676d2c04f6de1c107be2e7f6af1b54bb25 Author: GitHub Actions Date: Wed Aug 14 00:53:53 2024 +0000 updated submodules commit 76f48a2700a33d04c10cccc8bee92f4089df2726 Author: GitHub Actions Date: Wed Aug 14 00:45:08 2024 +0000 updated submodules commit 45b7cd948e1c0350090afefc4a4e70b56514fa67 Author: schweppes Date: Wed Aug 14 01:33:23 2024 +0200 Bulgarian translations (#332) Co-authored-by: tonydalov commit 4c24c0c3365f64e07e362a40f9abe1bd1707483a Author: gototheskinny <51786709+gototheskinny@users.noreply.github.com> Date: Wed Aug 14 02:33:12 2024 +0300 Turkish loc updated (#336) commit dd88efc6319b9214240ed4d7bcf9c5c99635a537 Merge: 6e609d5 e067e8d Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Mon Aug 12 23:05:35 2024 -0700 Merge pull request #331 from bhackel/fix-oled-live-chat Fix OLED live chat commit e067e8dec5ba012cb9422b1730c6ffb51a659f37 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Mon Aug 12 21:50:33 2024 -0700 Fix OLED live chat commit 6e609d56e78a49daff604cff29db52b4b8f92efe Merge: 916bcf3 11faee3 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Mon Aug 12 22:43:28 2024 -0700 Merge pull request #330 from bhackel/remove-speed-popup Remove speed popup commit 11faee3f1e5ace8355f8ff0cd3b3b97dce850004 Merge: 82e4f21 916bcf3 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Mon Aug 12 22:42:56 2024 -0700 Merge branch 'main' into remove-speed-popup I used a translator, hopefully it is fine commit 82e4f21d24474c721d218830dcbbe2b3d9deeda6 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Mon Aug 12 21:33:53 2024 -0700 Add Hide Speed Toast commit 916bcf33ff4e27a87fb2d60e3358a84e9267479a Author: GitHub Actions Date: Tue Aug 13 00:46:14 2024 +0000 updated submodules commit 9d0fb160753c6aedcec1b7d3a3b8c78521b3ee41 Author: Victor Alves Date: Mon Aug 12 17:12:18 2024 -0300 Update Portuguese localization (#326) * Update Portuguese Localization commit 21df218f2ff0fac8afd0431e94ae4081dbae3715 Author: Balackburn <93828569+Balackburn@users.noreply.github.com> Date: Mon Aug 12 10:42:23 2024 +0200 Updated Credits commit f384a00e041590089d03a7cae4e11505852f58d7 Author: GitHub Actions Date: Mon Aug 12 00:46:59 2024 +0000 updated submodules commit 10a536880b4a12f7d444607b5fb3d3e8b679afb5 Merge: 818005d 08c263f Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Sat Aug 10 05:28:47 2024 -0700 Merge pull request #320 from bhackel/hud-and-collapse Copy Hide HUD and Hide Collapse Button commit 08c263fdf01a53c382f2028bc849fee403b8783a Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Sat Aug 10 04:07:47 2024 -0700 Copy Hide HUD and Hide Collapse Button commit 818005d73c9564737e9f98c09eb21933a3e87df2 Merge: 37582ec 1a97587 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Sat Aug 10 03:48:54 2024 -0700 Merge pull request #319 from bhackel/misc-features Misc features commit 1a9758770dc5c1946bfef4dd5969e5c3d6e3973b Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Sat Aug 10 02:34:42 2024 -0700 Fix bugs commit f64aab1b586f17cebab545ba2826735e0300ba73 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Sat Aug 10 02:19:23 2024 -0700 Fix build error commit 762cd8f61807bf41ebae90f60a1880ccb15cc268 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Sat Aug 10 00:47:05 2024 -0700 Remove YTLitePlus OLED Theme commit ba13d1b987938bd47faecbc0c185a121958bcdc1 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Fri Aug 9 22:44:51 2024 -0700 Live Chat OLED dark mode commit 753d690b78f09654cdb25621c3f9001cafbb1abf Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Fri Aug 9 22:38:19 2024 -0700 Hide autoplay mini preview commit c9875ec8b70a0863cbb958e0a580d893bb90ec55 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Fri Aug 9 17:26:19 2024 -0700 Fix localization, fix copy/paste switch commit 11a3e75b0de971727d6b085e3fd99a94c364e199 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Fri Aug 9 16:44:59 2024 -0700 Default disable big mini player commit 794fb561c9d256dca532b6a6b07525479d672114 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Fri Aug 9 16:29:34 2024 -0700 Fix import export settings localization commit 4f2b55a897f03e166103c0823e54935554c32dfa Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Fri Aug 9 16:34:57 2024 -0700 Hide comment previews by @arichornlover commit 948ea5ff2906aec19c83727d5f5b16d1cc81a0ad Author: GitHub Actions Date: Sat Aug 10 00:53:31 2024 +0000 updated submodules commit 37582ecbf88040dcddf73ae15e68024b2128d845 Author: GitHub Actions Date: Sat Aug 10 00:44:53 2024 +0000 updated submodules commit 64c712d630c7125b3ae41daec7c1b86a3778cc4c Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Fri Aug 9 16:51:12 2024 -0700 Attempt brightness and volume gestures commit 91290efdfe7394aa78871aa10f2aec160d6cbf79 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Wed Aug 7 13:24:51 2024 -0700 Allow other gestures commit f2e7c234eb499fd2434b607cbfdc3ce508266680 Author: GitHub Actions Date: Fri Aug 9 00:45:23 2024 +0000 updated submodules commit e7523dc08dec20db31c82af020ad72e28b201362 Author: GitHub Actions Date: Thu Aug 8 00:44:57 2024 +0000 updated submodules commit 09ddc42e32b6f9c734f78f7f45f4a3c8c2d0b31e Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Wed Aug 7 12:11:03 2024 -0700 Add reporting option commit d4679b8414cfa6d5949f117d4bff7e441537b64e Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Tue Aug 6 23:49:31 2024 -0700 Attempt Volume Sliding commit df3d09e81d21e67b9d87505155f97071e5fd6201 Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Tue Aug 6 22:36:59 2024 -0700 Gesture test using YTHFS code commit d731dbddeca24a6e70764fb8433f75088e5cb88c Author: arichornlover <78001398+arichornlover@users.noreply.github.com> Date: Tue Aug 6 21:06:02 2024 -0500 Fix LowContrastMode description also added Version compatibility, LowContrastMode will not work once v17.38.10 is gone in the future. commit 00bb15a868b506af3ec6daff3d5885f9efee2797 Author: GitHub Actions Date: Wed Aug 7 00:45:08 2024 +0000 updated submodules commit 8a717e763a4bdc812276e543d7c39d86a596fab5 Author: GitHub Actions Date: Tue Aug 6 00:44:29 2024 +0000 updated submodules commit 47562c543b10c4d8b8623c09d2017a8c4a70c4f3 Author: ChuDucManh <89825108+manhchuduc@users.noreply.github.com> Date: Tue Aug 6 01:52:29 2024 +0700 Update Localizable.strings (#305) commit d27150b11dc28195abb968de8fd57b43b4d0a14d Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Mon Aug 5 03:16:34 2024 -0700 Fix delete workflows commit 46d6b163b9cdd1db7557ed267e474f6a6fc4d03f Author: Bryce Hackel <34104885+bhackel@users.noreply.github.com> Date: Mon Aug 5 03:09:41 2024 -0700 Fix YouTube Extensions bug --- .gitmodules | 3 + LICENSE | 21 ++ Makefile | 2 +- README.md | 159 +++-------- Source/LowContrastMode.xm | 5 +- Source/Settings.xm | 250 +++++++++++++++- Source/Themes.xm | 3 - Source/VersionSpooferLite.xm | 5 +- Tweaks/Return-YouTube-Dislikes | 2 +- Tweaks/YTUHD | 2 +- Tweaks/YouLoop | 1 + Tweaks/YouTubeHeader | 2 +- Tweaks/protobuf | 2 +- YTLitePlus.h | 41 +++ YTLitePlus.xm | 267 +++++++++++++++++- .../ar.lproj/Localizable.strings | 22 ++ .../bg.lproj/Localizable.strings | 185 ++++++++++++ .../de.lproj/Localizable.strings | 22 ++ .../en.lproj/Localizable.strings | 22 ++ .../es.lproj/Localizable.strings | 22 ++ .../fr.lproj/Localizable.strings | 22 ++ .../ja.lproj/Localizable.strings | 22 ++ .../pt.lproj/Localizable.strings | 59 ++-- .../ro.lproj/Localizable.strings | 22 ++ .../ru.lproj/Localizable.strings | 22 ++ .../template.lproj/Localizable.strings | 22 ++ .../tr.lproj/Localizable.strings | 45 ++- .../vi.lproj/Localizable.strings | 22 ++ .../zh_TW.lproj/Localizable.strings | 22 ++ 29 files changed, 1117 insertions(+), 179 deletions(-) create mode 100644 LICENSE create mode 160000 Tweaks/YouLoop create mode 100644 lang/YTLitePlus.bundle/bg.lproj/Localizable.strings diff --git a/.gitmodules b/.gitmodules index e52c366..6d35fdf 100644 --- a/.gitmodules +++ b/.gitmodules @@ -55,3 +55,6 @@ [submodule "Tweaks/YouTimeStamp"] path = Tweaks/YouTimeStamp url = https://github.com/arichornloverALT/YouTimeStamp.git +[submodule "Tweaks/YouLoop"] + path = Tweaks/YouLoop + url = https://github.com/bhackel/YouLoop diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..4df64a9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 YTLitePlus + +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 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. diff --git a/Makefile b/Makefile index ad408a6..6022e6a 100644 --- a/Makefile +++ b/Makefile @@ -22,7 +22,7 @@ YTLitePlus_FRAMEWORKS = UIKit Security include $(THEOS)/makefiles/common.mk include $(THEOS_MAKE_PATH)/tweak.mk -SUBPROJECTS += Tweaks/Alderis Tweaks/iSponsorBlock Tweaks/YTUHD Tweaks/YouPiP Tweaks/Return-YouTube-Dislikes Tweaks/YTABConfig Tweaks/YouMute Tweaks/DontEatMyContent Tweaks/YTHoldForSpeed Tweaks/YTVideoOverlay Tweaks/YouQuality Tweaks/YouTimeStamp Tweaks/YouGroupSettings +SUBPROJECTS += Tweaks/Alderis Tweaks/iSponsorBlock Tweaks/YTUHD Tweaks/YouPiP Tweaks/Return-YouTube-Dislikes Tweaks/YTABConfig Tweaks/YouMute Tweaks/DontEatMyContent Tweaks/YTHoldForSpeed Tweaks/YTVideoOverlay Tweaks/YouQuality Tweaks/YouTimeStamp Tweaks/YouGroupSettings Tweaks/YouLoop include $(THEOS_MAKE_PATH)/aggregate.mk YTLITE_PATH = Tweaks/YTLite diff --git a/README.md b/README.md index 5277147..64d84a8 100644 --- a/README.md +++ b/README.md @@ -26,122 +26,49 @@ # Credits - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - +
- - - - - - - - - - - - - - - - - - -
-
- - - - -
-
- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dayanch96BalackburnarichornloverALTPoomSmartqnblackcat
SKEIDsasdfzxcvbnmatt911bhackelAlexInABox
GlentagototheskinnyMrAlucardDanteGalactic-DevAhmedBafkir
MiRO92ichitasoDeci8BelioSjuliovernetherealFoxster
Lyvendiassuesskindhbanglevel3tjgzSaaiq
ISnackableVictorxD70MacleykunBandarHLCokePokes
# Features diff --git a/Source/LowContrastMode.xm b/Source/LowContrastMode.xm index 0b0744e..6948402 100644 --- a/Source/LowContrastMode.xm +++ b/Source/LowContrastMode.xm @@ -1,9 +1,6 @@ #import "../YTLitePlus.h" -// -static BOOL IsEnabled(NSString *key) { - return [[NSUserDefaults standardUserDefaults] boolForKey:key]; -} +// Low Contrast Mode static int contrastMode() { return [[NSUserDefaults standardUserDefaults] integerForKey:@"lcm"]; } diff --git a/Source/Settings.xm b/Source/Settings.xm index 331c9bf..c25f262 100644 --- a/Source/Settings.xm +++ b/Source/Settings.xm @@ -32,12 +32,6 @@ settingItemId:0] */ -static BOOL IsEnabled(NSString *key) { - return [[NSUserDefaults standardUserDefaults] boolForKey:key]; -} -static int GetSelection(NSString *key) { - return [[NSUserDefaults standardUserDefaults] integerForKey:key]; -} static int contrastMode() { return [[NSUserDefaults standardUserDefaults] integerForKey:@"lcm"]; } @@ -47,6 +41,8 @@ static int appVersionSpoofer() { @interface YTSettingsSectionItemManager (YTLitePlus) - (void)updateYTLitePlusSectionWithEntry:(id)entry; +- (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentsAtURLs:(NSArray *)urls; +- (void)documentPickerWasCancelled:(UIDocumentPickerViewController *)controller; @end extern NSBundle *YTLitePlusBundle(); @@ -80,7 +76,7 @@ static const NSInteger YTLiteSection = 789; %end -// Settings +// Add YTLitePlus to the settings list %hook YTAppSettingsPresentationData + (NSArray *)settingsCategoryOrder { NSArray *order = %orig; @@ -108,14 +104,15 @@ static const NSInteger YTLiteSection = 789; Class YTSettingsSectionItemClass = %c(YTSettingsSectionItem); YTSettingsViewController *settingsViewController = [self valueForKey:@"_settingsViewControllerDelegate"]; + // Add item for going to the YTLitePlus GitHub page YTSettingsSectionItem *main = [%c(YTSettingsSectionItem) - itemWithTitle:[NSString stringWithFormat:LOC(@"VERSION"), @(OS_STRINGIFY(TWEAK_VERSION))] - titleDescription:LOC(@"VERSION_CHECK") - accessibilityIdentifier:nil - detailTextBlock:nil - selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { - return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/YTLitePlus/YTLitePlus/releases/latest"]]; - }]; + itemWithTitle:[NSString stringWithFormat:LOC(@"VERSION"), @(OS_STRINGIFY(TWEAK_VERSION))] + titleDescription:LOC(@"VERSION_CHECK") + accessibilityIdentifier:nil + detailTextBlock:nil + selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + return [%c(YTUIUtils) openURL:[NSURL URLWithString:@"https://github.com/YTLitePlus/YTLitePlus/releases/latest"]]; + }]; [sectionItems addObject:main]; YTSettingsSectionItem *copySettings = [%c(YTSettingsSectionItem) @@ -197,6 +194,29 @@ static const NSInteger YTLiteSection = 789; ]; [sectionItems addObject:pasteSettings]; + YTSettingsSectionItem *videoPlayer = [%c(YTSettingsSectionItem) + itemWithTitle:LOC(@"VIDEO_PLAYER") + titleDescription:LOC(@"VIDEO_PLAYER_DESC") + accessibilityIdentifier:nil + detailTextBlock:nil + selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + // Access the current view controller + UIViewController *settingsViewController = [self valueForKey:@"_settingsViewControllerDelegate"]; + if (settingsViewController) { + // Present the video picker + UIDocumentPickerViewController *documentPicker = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:@[(NSString *)kUTTypeMovie, (NSString *)kUTTypeVideo] inMode:UIDocumentPickerModeImport]; + documentPicker.delegate = (id)self; + documentPicker.allowsMultipleSelection = NO; + [settingsViewController presentViewController:documentPicker animated:YES completion:nil]; + } else { + NSLog(@"settingsViewController is nil"); + } + + return YES; // Return YES to indicate that the action was handled + } + ]; + [sectionItems addObject:videoPlayer]; + /* YTSettingsSectionItem *appIcon = [%c(YTSettingsSectionItem) itemWithTitle:LOC(@"CHANGE_APP_ICON") @@ -212,6 +232,179 @@ static const NSInteger YTLiteSection = 789; [sectionItems addObject:appIcon]; */ +# pragma mark - Player Gestures - @bhackel + // Helper to get the selected gesture mode + static NSString* (^sectionGestureSelectedModeToString)(GestureMode) = ^(GestureMode sectionIndex) { + switch (sectionIndex) { + case GestureModeVolume: + return LOC(@"VOLUME"); + case GestureModeBrightness: + return LOC(@"BRIGHTNESS"); + case GestureModeSeek: + return LOC(@"SEEK"); + case GestureModeDisabled: + return LOC(@"DISABLED"); + default: + return @"Invalid index - Report bug"; + } + }; + + // Helper to generate checkmark setting items for selecting gesture modes + static YTSettingsSectionItem* (^gestureCheckmarkSettingItem)(NSInteger, NSString *) = ^(NSInteger idx, NSString *key) { + return [YTSettingsSectionItemClass + checkmarkItemWithTitle:sectionGestureSelectedModeToString(idx) + selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + [[NSUserDefaults standardUserDefaults] setInteger:idx forKey:key]; + [settingsViewController reloadData]; + return YES; + } + ]; + }; + + // Helper to generate a section item for selecting a gesture mode + YTSettingsSectionItem *(^createSectionGestureSelector)(NSString *, NSString *) = ^YTSettingsSectionItem *(NSString *sectionLabel, NSString *sectionKey) { + return [YTSettingsSectionItemClass itemWithTitle:LOC(sectionLabel) + accessibilityIdentifier:nil + detailTextBlock:^NSString *() { + return sectionGestureSelectedModeToString(GetSelection(sectionKey)); + } + selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + NSArray *rows = @[ + gestureCheckmarkSettingItem(0, sectionKey), // Volume + gestureCheckmarkSettingItem(1, sectionKey), // Brightness + gestureCheckmarkSettingItem(2, sectionKey), // Seek + gestureCheckmarkSettingItem(3, sectionKey) // Disabled + ]; + // Present picker when selecting this settings item + YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] + initWithNavTitle:LOC(sectionLabel) + pickerSectionTitle:nil + rows:rows + selectedItemIndex:GetSelection(sectionKey) + parentResponder:[self parentResponder] + ]; + [settingsViewController pushViewController:picker]; + return YES; + } + ]; + }; + // Configuration picker for deadzone to pick from 0 to 100 pixels with interval of 10 + NSMutableArray *deadzoneValues = [NSMutableArray array]; + for (CGFloat value = 0; value <= 100; value += 10) { + [deadzoneValues addObject:@(value)]; + } + YTSettingsSectionItem *deadzonePicker = [YTSettingsSectionItemClass + itemWithTitle:LOC(@"DEADZONE") + titleDescription:LOC(@"DEADZONE_DESC") + accessibilityIdentifier:nil + detailTextBlock:^NSString *() { + return [NSString stringWithFormat:@"%ld px", (long)GetFloat(@"playerGesturesDeadzone")]; + } + selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + // Generate rows for deadzone picker using the predefined array + NSMutableArray *deadzoneRows = [NSMutableArray array]; + for (NSNumber *deadzoneValue in deadzoneValues) { + CGFloat deadzone = [deadzoneValue floatValue]; + [deadzoneRows addObject:[YTSettingsSectionItemClass + checkmarkItemWithTitle:[NSString stringWithFormat:@"%ld px", (long)deadzone] + selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + [[NSUserDefaults standardUserDefaults] setFloat:deadzone forKey:@"playerGesturesDeadzone"]; + [settingsViewController reloadData]; + return YES; + } + ]]; + } + // Determine the index of the currently selected deadzone + CGFloat currentDeadzone = GetFloat(@"playerGesturesDeadzone"); + NSUInteger selectedIndex = [deadzoneValues indexOfObject:@(currentDeadzone)]; + if (selectedIndex == NSNotFound) { + selectedIndex = 0; // Default to the first item if the current deadzone is not found + } + // Present deadzone picker when selecting this settings item + YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] + initWithNavTitle:LOC(@"DEADZONE") + pickerSectionTitle:nil + rows:deadzoneRows + selectedItemIndex:selectedIndex + parentResponder:[self parentResponder] + ]; + [settingsViewController pushViewController:picker]; + return YES; + } + ]; + + // Configuration picker for sensitivity to pick from 0.5 to 2.0 with interval of 0.1 + NSMutableArray *sensitivityValues = [NSMutableArray array]; + for (CGFloat value = 0.5; value <= 2.0; value += 0.1) { + [sensitivityValues addObject:@(value)]; + } + YTSettingsSectionItem *sensitivityPicker = [YTSettingsSectionItemClass + itemWithTitle:LOC(@"SENSITIVITY") + titleDescription:LOC(@"SENSITIVITY_DESC") + accessibilityIdentifier:nil + detailTextBlock:^NSString *() { + return [NSString stringWithFormat:@"%.1f", GetFloat(@"playerGesturesSensitivity")]; + } + selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + // Generate rows for sensitivity picker using the predefined array + NSMutableArray *sensitivityRows = [NSMutableArray array]; + for (NSNumber *sensitivityValue in sensitivityValues) { + CGFloat sensitivity = [sensitivityValue floatValue]; + [sensitivityRows addObject:[YTSettingsSectionItemClass + checkmarkItemWithTitle:[NSString stringWithFormat:@"%.1f", sensitivity] + selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + [[NSUserDefaults standardUserDefaults] setFloat:sensitivity forKey:@"playerGesturesSensitivity"]; + [settingsViewController reloadData]; + return YES; + } + ]]; + } + // Determine the index of the currently selected sensitivity + CGFloat currentSensitivity = GetFloat(@"playerGesturesSensitivity"); + NSUInteger selectedIndex = [sensitivityValues indexOfObject:@(currentSensitivity)]; + if (selectedIndex == NSNotFound) { + selectedIndex = 0; // Default to the first item if the current sensitivity is not found + } + // Present sensitivity picker + YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] + initWithNavTitle:LOC(@"SENSITIVITY") + pickerSectionTitle:nil + rows:sensitivityRows + selectedItemIndex:selectedIndex + parentResponder:[self parentResponder] + ]; + [settingsViewController pushViewController:picker]; + return YES; + } + ]; + + // Create and add items to the high level gestures menu + YTSettingsSectionItem *playerGesturesGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"PLAYER_GESTURES_TITLE") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { + NSArray *rows = @[ + // Description header item + [YTSettingsSectionItemClass + itemWithTitle:nil + titleDescription:LOC(@"PLAYER_GESTURES_DESC") + accessibilityIdentifier:nil + detailTextBlock:nil + selectBlock:nil + ], + // Toggle for enabling gestures + BASIC_SWITCH(LOC(@"PLAYER_GESTURES_TOGGLE"), nil, @"playerGestures_enabled"), + // Pickers for each gesture section + createSectionGestureSelector(@"TOP_SECTION", @"playerGestureTopSelection"), + createSectionGestureSelector(@"MIDDLE_SECTION", @"playerGestureMiddleSelection"), + createSectionGestureSelector(@"BOTTOM_SECTION", @"playerGestureBottomSelection"), + // Pickers for configuration settings + deadzonePicker, + sensitivityPicker + ]; + YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"Player Gestures (Beta)") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]]; + [settingsViewController pushViewController:picker]; + return YES; + }]; + [sectionItems addObject:playerGesturesGroup]; + # pragma mark - Video Controls Overlay Options YTSettingsSectionItem *videoControlOverlayGroup = [YTSettingsSectionItemClass itemWithTitle:LOC(@"VIDEO_CONTROLS_OVERLAY_OPTIONS") accessibilityIdentifier:nil detailTextBlock:nil selectBlock:^BOOL (YTSettingsCell *cell, NSUInteger arg1) { NSArray *rows = @[ @@ -233,7 +426,7 @@ static const NSInteger YTLiteSection = 789; BASIC_SWITCH(LOC(@"HIDE_AUTOPLAY_MINI_PREVIEW"), LOC(@"HIDE_AUTOPLAY_MINI_PREVIEW_DESC"), @"hideAutoplayMiniPreview_enabled"), BASIC_SWITCH(LOC(@"HIDE_HUD_MESSAGES"), LOC(@"HIDE_HUD_MESSAGES_DESC"), @"hideHUD_enabled"), BASIC_SWITCH(LOC(@"HIDE_COLLAPSE_BUTTON"), LOC(@"HIDE_COLLAPSE_BUTTON_DESC"), @"disableCollapseButton_enabled"), - + BASIC_SWITCH(LOC(@"HIDE_SPEED_TOAST"), LOC(@"HIDE_SPEED_TOAST_DESC"), @"hideSpeedToast_enabled"), ]; YTSettingsPickerViewController *picker = [[%c(YTSettingsPickerViewController) alloc] initWithNavTitle:LOC(@"VIDEO_CONTROLS_OVERLAY_OPTIONS") pickerSectionTitle:nil rows:rows selectedItemIndex:NSNotFound parentResponder:[self parentResponder]]; [settingsViewController pushViewController:picker]; @@ -479,4 +672,31 @@ static const NSInteger YTLiteSection = 789; } %orig; } + +// Implement the delegate method for document picker +%new +- (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentsAtURLs:(NSArray *)urls { + NSURL *pickedURL = [urls firstObject]; + + if (pickedURL) { + // Use AVPlayerViewController to play the video + AVPlayer *player = [AVPlayer playerWithURL:pickedURL]; + AVPlayerViewController *playerViewController = [[AVPlayerViewController alloc] init]; + playerViewController.player = player; + + UIViewController *settingsViewController = [self valueForKey:@"_settingsViewControllerDelegate"]; + if (settingsViewController) { + [settingsViewController presentViewController:playerViewController animated:YES completion:^{ + [player play]; + }]; + } + } +} + +%new +- (void)documentPickerWasCancelled:(UIDocumentPickerViewController *)controller { + // Handle cancellation if needed + NSLog(@"Document picker was cancelled"); +} + %end diff --git a/Source/Themes.xm b/Source/Themes.xm index 4ea44b7..50457ff 100644 --- a/Source/Themes.xm +++ b/Source/Themes.xm @@ -1,8 +1,5 @@ #import "../YTLitePlus.h" -static BOOL IsEnabled(NSString *key) { - return [[NSUserDefaults standardUserDefaults] boolForKey:key]; -} static BOOL isDarkMode() { return ([[NSUserDefaults standardUserDefaults] integerForKey:@"page_style"] == 1); } diff --git a/Source/VersionSpooferLite.xm b/Source/VersionSpooferLite.xm index 7399aec..78f2889 100644 --- a/Source/VersionSpooferLite.xm +++ b/Source/VersionSpooferLite.xm @@ -1,9 +1,6 @@ #import "../YTLitePlus.h" -// -static BOOL IsEnabled(NSString *key) { - return [[NSUserDefaults standardUserDefaults] boolForKey:key]; -} + static int appVersionSpoofer() { return [[NSUserDefaults standardUserDefaults] integerForKey:@"versionSpoofer"]; } diff --git a/Tweaks/Return-YouTube-Dislikes b/Tweaks/Return-YouTube-Dislikes index 0f4c6b7..8578263 160000 --- a/Tweaks/Return-YouTube-Dislikes +++ b/Tweaks/Return-YouTube-Dislikes @@ -1 +1 @@ -Subproject commit 0f4c6b7f5960308161c870d9aab30905fe8145cc +Subproject commit 8578263c9f7caf7a22bd9364648e218974ee543c diff --git a/Tweaks/YTUHD b/Tweaks/YTUHD index 17c2035..02a5c91 160000 --- a/Tweaks/YTUHD +++ b/Tweaks/YTUHD @@ -1 +1 @@ -Subproject commit 17c2035ea9c8334f2d9154f114b6590928e93521 +Subproject commit 02a5c915a7f4183307812a94759d73f25e7fdba6 diff --git a/Tweaks/YouLoop b/Tweaks/YouLoop new file mode 160000 index 0000000..5a424d7 --- /dev/null +++ b/Tweaks/YouLoop @@ -0,0 +1 @@ +Subproject commit 5a424d7531c0d2f82d258b8e8c580e153a93fcdd diff --git a/Tweaks/YouTubeHeader b/Tweaks/YouTubeHeader index 171f681..850e939 160000 --- a/Tweaks/YouTubeHeader +++ b/Tweaks/YouTubeHeader @@ -1 +1 @@ -Subproject commit 171f681e235a1f7176cde31a95e6454fc00418c3 +Subproject commit 850e939ce7053f593ed477e83ec914c98669be46 diff --git a/Tweaks/protobuf b/Tweaks/protobuf index b9d1cff..57ba428 160000 --- a/Tweaks/protobuf +++ b/Tweaks/protobuf @@ -1 +1 @@ -Subproject commit b9d1cfff8ca6814723889bade011f3fa4675d46d +Subproject commit 57ba42815efe292b3c9c99e8afadf13bbb13fff1 diff --git a/YTLitePlus.h b/YTLitePlus.h index 82d6ac1..8a41583 100644 --- a/YTLitePlus.h +++ b/YTLitePlus.h @@ -6,6 +6,10 @@ #import #import #import +#import +#import +#import // For AVPlayer and AVPlayerViewController +#import // For kUTTypeMovie and kUTTypeVideo #import "Tweaks/FLEX/FLEX.h" #import "Tweaks/YouTubeHeader/YTAppDelegate.h" @@ -40,6 +44,8 @@ #import "Tweaks/YouTubeHeader/YTPlayerBarController.h" #import "Tweaks/YouTubeHeader/YTResponder.h" #import "Tweaks/YouTubeHeader/YTMainAppControlsOverlayView.h" +#import "Tweaks/YouTubeHeader/YTMultiSizeViewController.h" +#import "Tweaks/YouTubeHeader/YTWatchLayerViewController.h" #define LOC(x) [tweakBundle localizedStringForKey:x value:nil table:nil] #define YT_BUNDLE_ID @"com.google.ios.youtube" @@ -48,6 +54,30 @@ #define IS_ENABLED(k) [[NSUserDefaults standardUserDefaults] boolForKey:k] #define APP_THEME_IDX [[NSUserDefaults standardUserDefaults] integerForKey:@"appTheme"] +// Avoid issues with multiple includes of this file +#pragma once + +// Helper methods for key retrieval +#define IsEnabled(key) [[NSUserDefaults standardUserDefaults] boolForKey:key] +#define GetSelection(key) [[NSUserDefaults standardUserDefaults] integerForKey:key] +#define GetFloat(key) [[NSUserDefaults standardUserDefaults] floatForKey:key] + + +// Player Gesture selected mode enum +typedef NS_ENUM(NSUInteger, GestureMode) { + GestureModeVolume, + GestureModeBrightness, + GestureModeSeek, + GestureModeDisabled +}; +// Gesture Section Enum +typedef NS_ENUM(NSUInteger, GestureSection) { + GestureSectionTop, + GestureSectionMiddle, + GestureSectionBottom, + GestureSectionInvalid +}; + // YTSpeed @interface YTVarispeedSwitchControllerOption : NSObject - (id)initWithTitle:(id)title rate:(float)rate; @@ -122,6 +152,17 @@ @property id parentResponder; @end +// Player Gestures - @bhackel +@interface YTPlayerViewController (YTLitePlus) +@property (nonatomic, retain) UIPanGestureRecognizer *YTLitePlusPanGesture; +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer; +@end +@interface YTWatchFullscreenViewController : YTMultiSizeViewController +@end +@interface MPVolumeController : NSObject +@property (nonatomic, assign, readwrite) float volumeValue; +@end + // Hide Collapse Button - @arichornlover @interface YTMainAppControlsOverlayView (YTLitePlus) @property (nonatomic, assign, readwrite) YTQTMButton *watchCollapseButton; diff --git a/YTLitePlus.xm b/YTLitePlus.xm index c4248cb..d7bbc48 100644 --- a/YTLitePlus.xm +++ b/YTLitePlus.xm @@ -33,11 +33,6 @@ static NSString *accessGroupID() { return accessGroup; } -// -static BOOL IsEnabled(NSString *key) { - return [[NSUserDefaults standardUserDefaults] boolForKey:key]; -} - # pragma mark - Tweaks // Activate FLEX @@ -179,6 +174,7 @@ BOOL isSelf() { %end %end + // A/B flags %hook YTColdConfig - (BOOL)respectDeviceCaptionSetting { return NO; } // YouRememberCaption: https://poomsmart.github.io/repo/depictions/youremembercaption.html @@ -194,6 +190,30 @@ BOOL isSelf() { - (BOOL)shouldShowUpgradeDialog { return NO;} %end +// Hide Speed Toast - @bhackel +// YTLite Speed Toast +%hook PlayerToast +- (void)showPlayerToastWithText:(id)text + value:(CGFloat)value + style:(NSInteger)style + onView:(id)view +{ + if (IsEnabled(@"hideSpeedToast_enabled")) { + return; + } + %orig; +} +%end +// Default YouTube Speed Toast +%hook YTInlinePlayerScrubUserEducationView +- (void)setVisible:(BOOL)visible { + if (IsEnabled(@"hideSpeedToast_enabled")) { + return; + } + %orig; +} +%end + // Hide Home Tab - @bhackel %group gHideHomeTab %hook YTPivotBarView @@ -557,10 +577,14 @@ BOOL isTabSelected = NO; [self setNeedsLayout]; [self removeFromSuperview]; } + // Live chat OLED dark mode - @bhackel - if (([[%c(YTLUserDefaults) standardUserDefaults] boolForKey:@"oledTheme"] // YTLite OLED Theme - || [[NSUserDefaults standardUserDefaults] integerForKey:@"appTheme"] == 1 // YTLitePlus OLED Theme - ) && [self.accessibilityIdentifier isEqualToString:@"eml.live_chat_text_message"]) { + CGFloat alpha; + if ([[%c(YTLUserDefaults) standardUserDefaults] boolForKey:@"oledTheme"] // YTLite OLED Theme + && [self.accessibilityIdentifier isEqualToString:@"eml.live_chat_text_message"] // Live chat text message + && [self.backgroundColor getWhite:nil alpha:&alpha] // Check if color is grayscale and get alpha + && alpha != 0.0) // Ignore shorts live chat + { self.backgroundColor = [UIColor blackColor]; } } @@ -615,6 +639,213 @@ BOOL isTabSelected = NO; } %end +// Gestures - @bhackel +%group playerGestures +%hook YTWatchLayerViewController +// invoked when the player view controller is either created or destroyed +- (void)watchController:(YTWatchController *)watchController didSetPlayerViewController:(YTPlayerViewController *)playerViewController { + if (playerViewController) { + // check to see if the pan gesture is already created + if (!playerViewController.YTLitePlusPanGesture) { + playerViewController.YTLitePlusPanGesture = [[UIPanGestureRecognizer alloc] initWithTarget:playerViewController + action:@selector(YTLitePlusHandlePanGesture:)]; + playerViewController.YTLitePlusPanGesture.delegate = playerViewController; + [playerViewController.playerView addGestureRecognizer:playerViewController.YTLitePlusPanGesture]; + } + } + %orig; +} +%end + + +%hook YTPlayerViewController +// the pan gesture that will be created and added to the player view +%property (nonatomic, retain) UIPanGestureRecognizer *YTLitePlusPanGesture; +%new +- (void)YTLitePlusHandlePanGesture:(UIPanGestureRecognizer *)panGestureRecognizer { + // Haptic feedback generator + static UIImpactFeedbackGenerator *feedbackGenerator = [[UIImpactFeedbackGenerator alloc] initWithStyle:UIImpactFeedbackStyleMedium]; + // Variables for storing initial values to be adjusted + static float initialVolume; + static float initialBrightness; + static CGFloat currentTime; + // Flag to determine if the pan gesture is valid + static BOOL isValidHorizontalPan = NO; + // Variable to store the section of the screen the gesture is in + static GestureSection gestureSection = GestureSectionInvalid; + // Variable to track the start location of the whole pan gesture + static CGPoint startLocation; + // Variable to track the X translation when exiting the deadzone + static CGFloat deadzoneStartingXTranslation; + // Constant for the deadzone radius that can be changed in the settings + static CGFloat deadzoneRadius = (CGFloat)GetFloat(@"playerGesturesDeadzone"); + // Constant for the sensitivity factor that can be changed in the settings + static CGFloat sensitivityFactor = (CGFloat)GetFloat(@"playerGesturesSensitivity"); + +/***** Helper functions *****/ + // Helper function to adjust brightness + void (^adjustBrightness)(CGFloat, CGFloat) = ^(CGFloat translationX, CGFloat initialBrightness) { + float newBrightness = initialBrightness + ((translationX / 1000.0) * sensitivityFactor); + newBrightness = fmaxf(fminf(newBrightness, 1.0), 0.0); + [[UIScreen mainScreen] setBrightness:newBrightness]; + }; + // Helper function to adjust volume + void (^adjustVolume)(CGFloat, CGFloat) = ^(CGFloat translationX, CGFloat initialVolume) { + float newVolume = initialVolume + ((translationX / 1000.0) * sensitivityFactor); + newVolume = fmaxf(fminf(newVolume, 1.0), 0.0); + // https://stackoverflow.com/questions/50737943/how-to-change-volume-programmatically-on-ios-11-4 + MPVolumeView *volumeView = [[MPVolumeView alloc] init]; + UISlider *volumeViewSlider = nil; + for (UIView *view in volumeView.subviews) { + if ([view isKindOfClass:[UISlider class]]) { + volumeViewSlider = (UISlider *)view; + break; + } + } + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + volumeViewSlider.value = newVolume; + }); + }; + // Helper function to adjust seek time + void (^adjustSeek)(CGFloat, CGFloat) = ^(CGFloat translationX, CGFloat currentTime) { + // Calculate a seek fraction based on the horizontal translation + CGFloat totalDuration = self.currentVideoTotalMediaTime; + CGFloat viewWidth = self.view.bounds.size.width; + CGFloat seekFraction = (translationX / viewWidth); + // Seek to the new time based on the calculated offset + CGFloat sensitivityFactor = 1; // Adjust this value to make seeking less sensitive + seekFraction = sensitivityFactor * seekFraction; + CGFloat seekTime = currentTime + totalDuration * seekFraction; + [self seekToTime:seekTime]; + }; + // Helper function to run the selected gesture action + void (^runSelectedGesture)(NSString*, CGFloat, CGFloat, CGFloat, CGFloat) + = ^(NSString *sectionKey, CGFloat translationX, CGFloat initialBrightness, CGFloat initialVolume, CGFloat currentTime) { + // Determine the selected gesture mode using the section key + GestureMode selectedGestureMode = (GestureMode)GetSelection(sectionKey); + // Handle the gesture action based on the selected mode + switch (selectedGestureMode) { + case GestureModeVolume: + adjustVolume(translationX, initialVolume); + break; + case GestureModeBrightness: + adjustBrightness(translationX, initialBrightness); + break; + case GestureModeSeek: + adjustSeek(translationX, currentTime); + break; + case GestureModeDisabled: + // Do nothing if the gesture is disabled + break; + default: + // Show an alert if the gesture mode is invalid + UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Invalid Gesture Mode" message:@"Please report this bug." preferredStyle:UIAlertControllerStyleAlert]; + UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]; + [alertController addAction:okAction]; + [self presentViewController:alertController animated:YES completion:nil]; + break; + } + }; +/***** End of Helper functions *****/ + + // Handle gesture based on current gesture state + if (panGestureRecognizer.state == UIGestureRecognizerStateBegan) { + // Get the gesture's start position + startLocation = [panGestureRecognizer locationInView:self.view]; + CGFloat viewHeight = self.view.bounds.size.height; + + // Determine the section based on the start position + // by dividing the view into thirds + if (startLocation.y <= viewHeight / 3.0) { + gestureSection = GestureSectionTop; + // Cancel the gesture if the mode is disabled + if (GetSelection(@"playerGestureTopSelection") == GestureModeDisabled) { + panGestureRecognizer.state = UIGestureRecognizerStateCancelled; + return; + } + } else if (startLocation.y <= 2 * viewHeight / 3.0) { + gestureSection = GestureSectionMiddle; + // Cancel the gesture if the mode is disabled + if (GetSelection(@"playerGestureMiddleSelection") == GestureModeDisabled) { + panGestureRecognizer.state = UIGestureRecognizerStateCancelled; + return; + } + } else if (startLocation.y <= viewHeight) { + gestureSection = GestureSectionBottom; + // Cancel the gesture if the mode is disabled + if (GetSelection(@"playerGestureBottomSelection") == GestureModeDisabled) { + panGestureRecognizer.state = UIGestureRecognizerStateCancelled; + return; + } + } else { + gestureSection = GestureSectionInvalid; + } + // Deactive the activity flag + isValidHorizontalPan = NO; + } + + if (panGestureRecognizer.state == UIGestureRecognizerStateChanged) { + // Determine if the gesture is predominantly horizontal + CGPoint translation = [panGestureRecognizer translationInView:self.view]; + if (!isValidHorizontalPan) { + if (fabs(translation.x) > fabs(translation.y)) { + // Check if the touch has moved outside the deadzone + CGFloat distanceFromStart = hypot(translation.x, translation.y); + if (distanceFromStart < deadzoneRadius) { + // If within the deadzone, don't activate the pan gesture + return; + } + // If outside the deadzone, activate the pan gesture and store the initial values + isValidHorizontalPan = YES; + deadzoneStartingXTranslation = translation.x; + initialBrightness = [UIScreen mainScreen].brightness; + initialVolume = [[AVAudioSession sharedInstance] outputVolume]; + currentTime = self.currentVideoMediaTime; + // Provide haptic feedback to indicate a gesture start + [feedbackGenerator prepare]; + [feedbackGenerator impactOccurred]; + } else { + // Cancel the gesture if the translation is not horizontal + panGestureRecognizer.state = UIGestureRecognizerStateCancelled; + return; + } + } + + // Handle the gesture based on the identified section + if (isValidHorizontalPan) { + // Adjust the X translation based on the value hit after + // exiting the deadzone + CGFloat adjustedTranslationX = translation.x - deadzoneStartingXTranslation; + // Pass the adjusted translation to the selected gesture + if (gestureSection == GestureSectionTop) { + runSelectedGesture(@"playerGestureTopSelection", adjustedTranslationX, initialBrightness, initialVolume, currentTime); + } else if (gestureSection == GestureSectionMiddle) { + runSelectedGesture(@"playerGestureMiddleSelection", adjustedTranslationX, initialBrightness, initialVolume, currentTime); + } else if (gestureSection == GestureSectionBottom) { + runSelectedGesture(@"playerGestureBottomSelection", adjustedTranslationX, initialBrightness, initialVolume, currentTime); + } else { + // If the section is invalid, cancel the gesture + panGestureRecognizer.state = UIGestureRecognizerStateCancelled; + } + } + } + if (panGestureRecognizer.state == UIGestureRecognizerStateEnded) { + if (isValidHorizontalPan) { + // Provide haptic feedback upon successful gesture recognition + [feedbackGenerator prepare]; + [feedbackGenerator impactOccurred]; + } + } + +} +// allow the pan gesture to be recognized simultaneously with other gestures +%new +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { + return YES; +} +%end +%end + /* // BigYTMiniPlayer: https://github.com/Galactic-Dev/BigYTMiniPlayer %group Main @@ -844,6 +1075,9 @@ BOOL isTabSelected = NO; if (IsEnabled(@"disableEngagementOverlay_enabled")) { %init(gDisableEngagementOverlay); } + if (IsEnabled(@"playerGestures_enabled")) { + %init(playerGestures); + } // Change the default value of some options NSArray *allKeys = [[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys]; @@ -859,4 +1093,21 @@ BOOL isTabSelected = NO; if (![allKeys containsObject:@"fixCasting_enabled"]) { [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"fixCasting_enabled"]; } + // Default gestures as volume, brightness, seek + if (![allKeys containsObject:@"playerGestureTopSelection"]) { + [[NSUserDefaults standardUserDefaults] setInteger:GestureModeVolume forKey:@"playerGestureTopSelection"]; + } + if (![allKeys containsObject:@"playerGestureMiddleSelection"]) { + [[NSUserDefaults standardUserDefaults] setInteger:GestureModeBrightness forKey:@"playerGestureMiddleSelection"]; + } + if (![allKeys containsObject:@"playerGestureBottomSelection"]) { + [[NSUserDefaults standardUserDefaults] setInteger:GestureModeSeek forKey:@"playerGestureBottomSelection"]; + } + // Default configuration options for gestures + if (![allKeys containsObject:@"playerGesturesDeadzone"]) { + [[NSUserDefaults standardUserDefaults] setFloat:20.0 forKey:@"playerGesturesDeadzone"]; + } + if (![allKeys containsObject:@"playerGesturesSensitivity"]) { + [[NSUserDefaults standardUserDefaults] setFloat:1.0 forKey:@"playerGesturesSensitivity"]; + } } diff --git a/lang/YTLitePlus.bundle/ar.lproj/Localizable.strings b/lang/YTLitePlus.bundle/ar.lproj/Localizable.strings index 496cfb4..a577d98 100644 --- a/lang/YTLitePlus.bundle/ar.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/ar.lproj/Localizable.strings @@ -13,6 +13,25 @@ "REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons"; "REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'"; +"VIDEO_PLAYER" = "Video Player (Beta)"; +"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player"; + +// Player Gestures +"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures"; +"VOLUME" = "Volume"; +"BRIGHTNESS" = "Brightness"; +"SEEK" = "Seek"; +"DISABLED" = "Disabled"; +"DEADZONE" = "Deadzone"; +"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized"; +"SENSITIVITY" = "Sensitivity"; +"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures"; +"PLAYER_GESTURES_TITLE" = "Player Gestures"; +"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player"; +"TOP_SECTION" = "Top Section"; +"MIDDLE_SECTION" = "Middle Section"; +"BOTTOM_SECTION" = "Bottom Section"; + // Video controls overlay options "VIDEO_CONTROLS_OVERLAY_OPTIONS" = "خيارات تراكب ضوابط الفيديو"; @@ -70,6 +89,9 @@ "HIDE_COLLAPSE_BUTTON" = "Hide Collapse Button"; "HIDE_COLLAPSE_BUTTON_DESC" = "Hides the Arrow Collapse Button that was shown in the Top Left of the Video Player."; +"HIDE_SPEED_TOAST" = "Hide Speed Toast"; +"HIDE_SPEED_TOAST_DESC" = "Hide the 2X Speed popup when holding the player"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "App Settings Overlay Options"; diff --git a/lang/YTLitePlus.bundle/bg.lproj/Localizable.strings b/lang/YTLitePlus.bundle/bg.lproj/Localizable.strings new file mode 100644 index 0000000..4689437 --- /dev/null +++ b/lang/YTLitePlus.bundle/bg.lproj/Localizable.strings @@ -0,0 +1,185 @@ +// Settings +"VERSION" = "Версия на YTLitePlus: %@"; +"VERSION_CHECK" = "Докоснете, за да проверите за актуализация!"; + +"COPY_SETTINGS" = "Копиране на настройки"; +"COPY_SETTINGS_DESC" = "Копиране на всички текущи настройки в клипборда"; +"PASTE_SETTINGS" = "Поставяне на настройки"; +"PASTE_SETTINGS_DESC" = "Поставяне на настройки от клипборда и прилагане"; +"EXPORT_SETTINGS" = "Експортиране на настройки"; +"EXPORT_SETTINGS_DESC" = "Експортиране на всички текущи настройки в .txt файл"; +"IMPORT_SETTINGS" = "Импортиране на настройки"; +"IMPORT_SETTINGS_DESC" = "Натиснете, за да импортирате настройки (.txt)"; +"REPLACE_COPY_AND_PASTE_BUTTONS" = "Заменете бутоните 'Копиране на настройки' и 'Поставяне на настройки'"; +"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Заменете бутоните с 'Експортиране на настройки' и 'Импортиране на настройки'"; + +"VIDEO_PLAYER" = "Video Player (Beta)"; +"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player"; + +// Player Gestures +"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures"; +"VOLUME" = "Volume"; +"BRIGHTNESS" = "Brightness"; +"SEEK" = "Seek"; +"DISABLED" = "Disabled"; +"DEADZONE" = "Deadzone"; +"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized"; +"SENSITIVITY" = "Sensitivity"; +"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures"; +"PLAYER_GESTURES_TITLE" = "Player Gestures"; +"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player"; +"TOP_SECTION" = "Top Section"; +"MIDDLE_SECTION" = "Middle Section"; +"BOTTOM_SECTION" = "Bottom Section"; + +// Video controls overlay options +"VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Опции за контрол на видеото"; + +"ENABLE_SHARE_BUTTON" = "Активирайте бутона за споделяне"; +"ENABLE_SHARE_BUTTON_DESC" = "Активирайте бутона за споделяне в контролите на видеото."; + +"ENABLE_SAVE_TO_PLAYLIST_BUTTON" = "Активирайте бутона 'Запази в плейлист'"; +"ENABLE_SAVE_TO_PLAYLIST_BUTTON_DESC" = "Активирайте бутона 'Запази в плейлист' в контролите на видеото."; + +"HIDE_SHADOW_OVERLAY_BUTTONS" = "Скрийте бутоните с сенчест слой"; +"HIDE_SHADOW_OVERLAY_BUTTONS_DESC" = "Скрийте сенчестия слой на бутоните за възпроизвеждане/пауза, предишен, следващ, напред и въртене назад."; + +"HIDE_RIGHT_PANEL" = "Скрийте дясната панел в режим на цял екран"; +"HIDE_RIGHT_PANEL_DESC" = "Необходим е рестарт на приложението."; + +"HIDE_HEATWAVES" = "Скрийте топлинните вълни"; +"HIDE_HEATWAVES_DESC" = "Скрийте топлинните вълни в видеоплеъра. Необходим е рестарт на приложението."; + +"DISABLE_AMBIENT_PORTRAIT" = "Деактивирайте Ambient Mode (Портрет)"; +"DISABLE_AMBIENT_PORTRAIT_DESC" = "Деактивирайте осветлението около заглавието на видеото"; + +"DISABLE_AMBIENT_FULLSCREEN" = "Деактивирайте Ambient Mode (Цял екран)"; +"DISABLE_AMBIENT_FULLSCREEN_DESC" = "Деактивирайте осветлението около видеоплеъра"; + +"FULLSCREEN_TO_THE_RIGHT" = "Цял екран вдясно"; +"FULLSCREEN_TO_THE_RIGHT_DESC" = "Винаги влизайте в режим на цял екран с бутона за начало от дясната страна."; + +"SEEK_ANYWHERE" = "Търсене навсякъде жест"; +"SEEK_ANYWHERE_DESC" = "Задръжте и плъзнете върху видеоплеъра, за да търсите. Трябва да деактивирате YTLite - Задръжте, за да увеличите скоростта"; + +"ENABLE_TAP_TO_SEEK" = "Активирайте докосване за търсене"; +"ENABLE_TAP_TO_SEEK_DESC" = "Скочете навсякъде в видео, като докоснете един път лентата за търсене"; + +"DISABLE_PULL_TO_FULLSCREEN_GESTURE" = "Деактивирайте жеста за плъзгане до цял екран"; +"DISABLE_PULL_TO_FULLSCREEN_GESTURE_DESC" = "Деактивирайте жеста за плъзгане, за да влезете в вертикален режим на цял екран. Приложимо само за видеа в ландшафтен режим."; + +"ALWAYS_USE_REMAINING_TIME" = "Винаги използвайте оставащото време"; +"ALWAYS_USE_REMAINING_TIME_DESC" = "Променете настройката по подразбиране да показва оставащото време в лентата на плейъра."; + +"DISABLE_TOGGLE_TIME_REMAINING" = "Деактивирайте превключването на оставащото време"; +"DISABLE_TOGGLE_TIME_REMAINING_DESC" = "Деактивирайте променянето на изминалото време на оставащото време. Използвайте с друга настройка, за да показвате винаги оставащото време."; + +"DISABLE_ENGAGEMENT_OVERLAY" = "Деактивирайте ангажиращия слой в режим на цял екран"; +"DISABLE_ENGAGEMENT_OVERLAY_DESC" = "Деактивирайте жеста за плъзгане нагоре и списъка с предложени видеа в режим на цял екран"; + +"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "Скрийте прегледите на коментари под плейъра"; +"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC" = "Скрийте спойлера на коментарите в бутона за коментари"; + +"HIDE_AUTOPLAY_MINI_PREVIEW" = "Скрийте мини прегледа за автоматично възпроизвеждане"; +"HIDE_AUTOPLAY_MINI_PREVIEW_DESC" = "Скрийте малкия прозорец с предложени видеа близо до заглавието в режим на цял екран"; + +"HIDE_HUD_MESSAGES" = "Скрийте съобщенията на HUD"; +"HIDE_HUD_MESSAGES_DESC" = "Скрийте съобщенията, които се показват за определени действия (напр. CC включен/изключен)"; + +"HIDE_COLLAPSE_BUTTON" = "Скрийте бутона за свиване"; +"HIDE_COLLAPSE_BUTTON_DESC" = "Скрийте бутона за свиване на стрелка, който беше показан в горния ляв ъгъл на видеоплеъра."; + +"HIDE_SPEED_TOAST" = "Скрийте съобщението за скорост"; +"HIDE_SPEED_TOAST_DESC" = "Скрийте изскачащото съобщение за 2X скорост при задържане на плейъра"; + +// App settings overlay options +"APP_SETTINGS_OVERLAY_OPTIONS" = "Опции за настройки на приложението"; + +"HIDE_ACCOUNT_SECTION" = "Скрийте секцията \"Акаунт\""; +"HIDE_AUTOPLAY_SECTION" = "Скрийте секцията \"Автоматично възпроизвеждане\""; +"HIDE_TRYNEWFEATURES_SECTION" = "Скрийте секцията \"Опитайте нови функции\""; +"HIDE_VIDEOQUALITYPREFERENCES_SECTION" = "Скрийте секцията \"Предпочитания за качество на видеото\""; +"HIDE_NOTIFICATIONS_SECTION" = "Скрийте секцията \"Уведомления\""; +"HIDE_MANAGEALLHISTORY_SECTION" = "Скрийте секцията \"Управление на цялата история\""; +"HIDE_YOURDATAINYOUTUBE_SECTION" = "Скрийте секцията \"Вашите данни в YouTube\""; +"HIDE_PRIVACY_SECTION" = "Скрийте секцията \"Поверителност\""; +"HIDE_LIVECHAT_SECTION" = "Скрийте секцията \"Жив чат\""; + +// Theme +"THEME_OPTIONS" = "Опции за тема"; + +"OLED_DARK_THEME" = "OLED тъмен режим"; +"OLED_DARK_THEME_2" = "OLED тъмен режим"; +"OLED_DARK_THEME_DESC" = "Истински тъмен режим. Може да не работи правилно в някои случаи. Необходим е рестарт на приложението след включване/изключване на тази опция."; + +"OLD_DARK_THEME" = "Стар тъмен режим"; +"OLD_DARK_THEME_DESC" = "Старият тъмен режим на YouTube (сив режим). Необходим е рестарт на приложението."; + +"DEFAULT_THEME" = "По подразбиране"; +"DEFAULT_THEME_DESC" = "Тъмен(и) режим(и) по подразбиране на YouTube. Необходим е рестарт на приложението."; + +"OLED_KEYBOARD" = "OLED клавиатура"; +"OLED_KEYBOARD_DESC" = "Може да не работи правилно в някои случаи. Необходим е рестарт на приложението."; + +"LOW_CONTRAST_MODE" = "Режим с нисък контраст"; +"LOW_CONTRAST_MODE_DESC" = "Тази опция ще намали контраста на текстовете и бутоните, както беше в стария интерфейс на YouTube. Необходим е рестарт на приложението."; +"LCM_SELECTOR" = "Избор на режим с нисък контраст"; +"DEFAULT_LOWCONTRASTMODE" = "(По подразбиране) Режим с нисък контраст"; +"CUSTOM_LOWCONTRASTMODE" = "(Персонализиран цвят) Режим с нисък контраст"; + +// Miscellaneous +"MISCELLANEOUS" = "Разни"; + +"PLAYBACK_IN_FEEDS" = "Възпроизвеждане в новините"; +"PLAYBACK_IN_FEEDS_ALWAYS_ON" = "Винаги включено"; +"PLAYBACK_IN_FEEDS_WIFI_ONLY" = "Само Wi-Fi"; +"PLAYBACK_IN_FEEDS_OFF" = "Изключено"; + +"NEW_SETTINGS_UI" = "Нов потребителски интерфейс на настройките"; +"NEW_SETTINGS_UI_DESC" = "Използвайте новия групиран потребителски интерфейс за настройки. Може да скрие някои настройки"; + +"ENABLE_YT_STARTUP_ANIMATION" = "Активирайте анимацията при стартиране на YouTube"; +"ENABLE_YT_STARTUP_ANIMATION_DESC" = ""; + +"HIDE_MODERN_INTERFACE" = "Скрийте съвременния интерфейс (YTNoModernUI)"; +"HIDE_MODERN_INTERFACE_DESC" = "Включете това, за да скриете съвременните елементи, добавени от YouTube. Премахва Ambient Mode, закръглен дизайн и други. Необходим е рестарт на приложението."; + +"IPAD_LAYOUT" = "Оформление за iPad"; +"IPAD_LAYOUT_DESC" = "Използвайте това, само ако искате да имате оформлението за iPad на текущия си iPhone/iPod. Необходим е рестарт на приложението."; + +"IPHONE_LAYOUT" = "Оформление за iPhone"; +"IPHONE_LAYOUT_DESC" = "Използвайте това, само ако искате да имате оформлението за iPhone на текущия си iPad. Необходим е рестарт на приложението."; + +"CAST_CONFIRM" = "Потвърдете предупреждението преди стрийминг (YTCastConfirm)"; +"CAST_CONFIRM_DESC" = "Показвайте потвърдително предупреждение преди стрийминг, за да предотвратите случайно преекспониране на TV."; +"CASTING" = "Стрийминг"; +"MSG_ARE_YOU_SURE" = "Сигурни ли сте, че искате да започнете стрийминг?"; +"MSG_YES" = "Да"; +"MSG_CANCEL" = "Отказ"; + +"NEW_MINIPLAYER_STYLE" = "Нов стил на мини плейъра (BigYTMiniPlayer)"; +"NEW_MINIPLAYER_STYLE_DESC" = "Необходим е рестарт на приложението."; + +"HIDE_CAST_BUTTON" = "Скрийте бутона за стрийминг"; +"HIDE_CAST_BUTTON_DESC" = "Необходим е рестарт на приложението."; + +"HIDE_SPONSORBLOCK_BUTTON" = "Скрийте бутона за iSponsorBlock в навигационната лента"; +"HIDE_SPONSORBLOCK_BUTTON_DESC" = ""; + +"HIDE_HOME_TAB" = "Скрийте таба \"Начало\""; +"HIDE_HOME_TAB_DESC" = "Бъдете внимателни при скриване на всички табове"; + +"FIX_CASTING" = "Поправете стрийминг"; +"FIX_CASTING_DESC" = "Променя някои AB флагове, за да поправи стрийминг"; + +"ENABLE_FLEX" = "Активирайте FLEX"; +"ENABLE_FLEX_DESC" = "Активирайте FLEX за отстраняване на проблеми (не се препоръчва). Оставете това изключено, освен ако не знаете какво правите."; + +// Version Spoofer +"APP_VERSION_SPOOFER_LITE" = "Активирайте Промяна на версията на приложението (Lite)"; +"APP_VERSION_SPOOFER_LITE_DESC" = "Активирайте това, за да използвате Промяната на версията (Lite) и изберете предпочитаната версия по-долу. Необходим е рестарт на приложението."; +"VERSION_SPOOFER_TITLE" = "Избор на Промяна на версията"; + +// Other Localization +"APP_RESTART_DESC" = "Необходим е рестарт на приложението."; +"CHANGE_APP_ICON" = "Промяна на иконата на приложението"; diff --git a/lang/YTLitePlus.bundle/de.lproj/Localizable.strings b/lang/YTLitePlus.bundle/de.lproj/Localizable.strings index 8d1dee7..76a63fe 100644 --- a/lang/YTLitePlus.bundle/de.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/de.lproj/Localizable.strings @@ -13,6 +13,25 @@ "REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons"; "REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'"; +"VIDEO_PLAYER" = "Video Player (Beta)"; +"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player"; + +// Player Gestures +"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures"; +"VOLUME" = "Volume"; +"BRIGHTNESS" = "Brightness"; +"SEEK" = "Seek"; +"DISABLED" = "Disabled"; +"DEADZONE" = "Deadzone"; +"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized"; +"SENSITIVITY" = "Sensitivity"; +"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures"; +"PLAYER_GESTURES_TITLE" = "Player Gestures"; +"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player"; +"TOP_SECTION" = "Top Section"; +"MIDDLE_SECTION" = "Middle Section"; +"BOTTOM_SECTION" = "Bottom Section"; + // Video controls overlay options "VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Overlay-Optionen für Videosteuerungen"; @@ -70,6 +89,9 @@ "HIDE_COLLAPSE_BUTTON" = "Hide Collapse Button"; "HIDE_COLLAPSE_BUTTON_DESC" = "Hides the Arrow Collapse Button that was shown in the Top Left of the Video Player."; +"HIDE_SPEED_TOAST" = "Hide Speed Toast"; +"HIDE_SPEED_TOAST_DESC" = "Hide the 2X Speed popup when holding the player"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "Overlay-Optionen für App-Einstellungen"; diff --git a/lang/YTLitePlus.bundle/en.lproj/Localizable.strings b/lang/YTLitePlus.bundle/en.lproj/Localizable.strings index 6c805d4..9801761 100644 --- a/lang/YTLitePlus.bundle/en.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/en.lproj/Localizable.strings @@ -13,6 +13,25 @@ "REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons"; "REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'"; +"VIDEO_PLAYER" = "Video Player (Beta)"; +"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player"; + +// Player Gestures +"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures"; +"VOLUME" = "Volume"; +"BRIGHTNESS" = "Brightness"; +"SEEK" = "Seek"; +"DISABLED" = "Disabled"; +"DEADZONE" = "Deadzone"; +"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized"; +"SENSITIVITY" = "Sensitivity"; +"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures"; +"PLAYER_GESTURES_TITLE" = "Player Gestures"; +"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player"; +"TOP_SECTION" = "Top Section"; +"MIDDLE_SECTION" = "Middle Section"; +"BOTTOM_SECTION" = "Bottom Section"; + // Video controls overlay options "VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options"; @@ -70,6 +89,9 @@ "HIDE_COLLAPSE_BUTTON" = "Hide Collapse Button"; "HIDE_COLLAPSE_BUTTON_DESC" = "Hides the Arrow Collapse Button that was shown in the Top Left of the Video Player."; +"HIDE_SPEED_TOAST" = "Hide Speed Toast"; +"HIDE_SPEED_TOAST_DESC" = "Hide the 2X Speed popup when holding the player"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "App Settings Overlay Options"; diff --git a/lang/YTLitePlus.bundle/es.lproj/Localizable.strings b/lang/YTLitePlus.bundle/es.lproj/Localizable.strings index 6b1d700..1cf7433 100644 --- a/lang/YTLitePlus.bundle/es.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/es.lproj/Localizable.strings @@ -13,6 +13,25 @@ "REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons"; "REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'"; +"VIDEO_PLAYER" = "Video Player (Beta)"; +"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player"; + +// Player Gestures +"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures"; +"VOLUME" = "Volume"; +"BRIGHTNESS" = "Brightness"; +"SEEK" = "Seek"; +"DISABLED" = "Disabled"; +"DEADZONE" = "Deadzone"; +"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized"; +"SENSITIVITY" = "Sensitivity"; +"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures"; +"PLAYER_GESTURES_TITLE" = "Player Gestures"; +"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player"; +"TOP_SECTION" = "Top Section"; +"MIDDLE_SECTION" = "Middle Section"; +"BOTTOM_SECTION" = "Bottom Section"; + // Video controls overlay options "VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Opciones de superposición de controles de vídeo"; @@ -70,6 +89,9 @@ "HIDE_COLLAPSE_BUTTON" = "Hide Collapse Button"; "HIDE_COLLAPSE_BUTTON_DESC" = "Hides the Arrow Collapse Button that was shown in the Top Left of the Video Player."; +"HIDE_SPEED_TOAST" = "Hide Speed Toast"; +"HIDE_SPEED_TOAST_DESC" = "Hide the 2X Speed popup when holding the player"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "Opciones de superposición de los ajustes de la aplicación"; diff --git a/lang/YTLitePlus.bundle/fr.lproj/Localizable.strings b/lang/YTLitePlus.bundle/fr.lproj/Localizable.strings index ec9a68c..e788b97 100644 --- a/lang/YTLitePlus.bundle/fr.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/fr.lproj/Localizable.strings @@ -13,6 +13,25 @@ "REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons"; "REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'"; +"VIDEO_PLAYER" = "Video Player (Beta)"; +"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player"; + +// Player Gestures +"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures"; +"VOLUME" = "Volume"; +"BRIGHTNESS" = "Brightness"; +"SEEK" = "Seek"; +"DISABLED" = "Disabled"; +"DEADZONE" = "Deadzone"; +"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized"; +"SENSITIVITY" = "Sensitivity"; +"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures"; +"PLAYER_GESTURES_TITLE" = "Player Gestures"; +"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player"; +"TOP_SECTION" = "Top Section"; +"MIDDLE_SECTION" = "Middle Section"; +"BOTTOM_SECTION" = "Bottom Section"; + // Video controls overlay options "VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Options de l'overlay des contrôles vidéo"; @@ -70,6 +89,9 @@ "HIDE_COLLAPSE_BUTTON" = "Hide Collapse Button"; "HIDE_COLLAPSE_BUTTON_DESC" = "Hides the Arrow Collapse Button that was shown in the Top Left of the Video Player."; +"HIDE_SPEED_TOAST" = "Hide Speed Toast"; +"HIDE_SPEED_TOAST_DESC" = "Hide the 2X Speed popup when holding the player"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "Paramètres des options d'overlay de l'application"; diff --git a/lang/YTLitePlus.bundle/ja.lproj/Localizable.strings b/lang/YTLitePlus.bundle/ja.lproj/Localizable.strings index 1550594..2749ff2 100644 --- a/lang/YTLitePlus.bundle/ja.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/ja.lproj/Localizable.strings @@ -13,6 +13,25 @@ "REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons"; "REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'"; +"VIDEO_PLAYER" = "Video Player (Beta)"; +"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player"; + +// Player Gestures +"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures"; +"VOLUME" = "Volume"; +"BRIGHTNESS" = "Brightness"; +"SEEK" = "Seek"; +"DISABLED" = "Disabled"; +"DEADZONE" = "Deadzone"; +"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized"; +"SENSITIVITY" = "Sensitivity"; +"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures"; +"PLAYER_GESTURES_TITLE" = "Player Gestures"; +"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player"; +"TOP_SECTION" = "Top Section"; +"MIDDLE_SECTION" = "Middle Section"; +"BOTTOM_SECTION" = "Bottom Section"; + // Video controls overlay options "VIDEO_CONTROLS_OVERLAY_OPTIONS" = "動画コントロールオーバーレイの設定"; @@ -70,6 +89,9 @@ "HIDE_COLLAPSE_BUTTON" = "折りたたみボタンを隠す"; "HIDE_COLLAPSE_BUTTON_DESC" = "プレーヤー左上の折りたたみボタンを非表示にします。"; +"HIDE_SPEED_TOAST" = "Hide Speed Toast"; +"HIDE_SPEED_TOAST_DESC" = "Hide the 2X Speed popup when holding the player"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "アプリの設定オーバーレイの設定"; diff --git a/lang/YTLitePlus.bundle/pt.lproj/Localizable.strings b/lang/YTLitePlus.bundle/pt.lproj/Localizable.strings index 2c580f6..df987ed 100644 --- a/lang/YTLitePlus.bundle/pt.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/pt.lproj/Localizable.strings @@ -2,16 +2,35 @@ "VERSION" = "Versão do YTLitePlus: %@"; "VERSION_CHECK" = "Toque para verificar se há atualização!"; -"COPY_SETTINGS" = "Copy Settings"; -"COPY_SETTINGS_DESC" = "Copy all current settings to the clipboard"; -"PASTE_SETTINGS" = "Paste Settings"; -"PASTE_SETTINGS_DESC" = "Paste settings from clipboard and apply"; -"EXPORT_SETTINGS" = "Export Settings"; -"EXPORT_SETTINGS_DESC" = "Exports all current settings into a .txt file"; -"IMPORT_SETTINGS" = "Import Settings"; -"IMPORT_SETTINGS_DESC" = "Press to import settings (.txt)"; -"REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons"; -"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'"; +"COPY_SETTINGS" = "Copiar Configurações"; +"COPY_SETTINGS_DESC" = "Copia todas as configurações atuais para a área de transferência"; +"PASTE_SETTINGS" = "Colar Configurações"; +"PASTE_SETTINGS_DESC" = "Cola as configurações da área de transferência e aplica"; +"EXPORT_SETTINGS" = "Exportar Configurações"; +"EXPORT_SETTINGS_DESC" = "Exporta todas as configurações atuais para um arquivo .txt"; +"IMPORT_SETTINGS" = "Importar Configurações"; +"IMPORT_SETTINGS_DESC" = "Pressione para importar as configurações (.txt)"; +"REPLACE_COPY_AND_PASTE_BUTTONS" = "Substituir os Botões 'Copiar Configurações' e 'Colar Configurações'"; +"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Substitui os Botões 'Exportar Configurações' e 'Importar Configurações'"; + +"VIDEO_PLAYER" = "Video Player (Beta)"; +"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player"; + +// Player Gestures +"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures"; +"VOLUME" = "Volume"; +"BRIGHTNESS" = "Brightness"; +"SEEK" = "Seek"; +"DISABLED" = "Disabled"; +"DEADZONE" = "Deadzone"; +"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized"; +"SENSITIVITY" = "Sensitivity"; +"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures"; +"PLAYER_GESTURES_TITLE" = "Player Gestures"; +"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player"; +"TOP_SECTION" = "Top Section"; +"MIDDLE_SECTION" = "Middle Section"; +"BOTTOM_SECTION" = "Bottom Section"; // Video controls overlay options "VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Opções de Sobreposição de Controles de Vídeo"; @@ -37,8 +56,8 @@ "DISABLE_AMBIENT_FULLSCREEN" = "Desativar Iluminação cinematográfica (Tela cheia)"; "DISABLE_AMBIENT_FULLSCREEN_DESC" = "Desativa a iluminação ao redor do player de vídeo"; -"FULLSCREEN_TO_THE_RIGHT" = "Fullscreen to the Right"; -"FULLSCREEN_TO_THE_RIGHT_DESC" = "Always enter fullscreen with home button on the right side."; +"FULLSCREEN_TO_THE_RIGHT" = "Tela cheia para a direita"; +"FULLSCREEN_TO_THE_RIGHT_DESC" = "Sempre entre em tela cheia com o botão home no lado direito."; "SEEK_ANYWHERE" = "Gesto de Busca em qualquer lugar"; "SEEK_ANYWHERE_DESC" = "Segure e arraste o player de vídeo para buscar. Você deve desativar o YTLite - Segurar para velocidade (Hold for speed)"; @@ -58,17 +77,21 @@ "DISABLE_ENGAGEMENT_OVERLAY" = "Desativar sobreposição de engajamento em tela cheia"; "DISABLE_ENGAGEMENT_OVERLAY_DESC" = "Desativa o gesto de deslizar para cima e a lista de vídeos sugeridos em tela cheia"; -"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "Hide Comment previews under player"; -"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC" = "Hide comment spoiler in comments button"; +"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "Ocultar Visualizações de comentários sob o player"; +"HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC" = "Oculta a Prévia de comentário no botão de comentários"; -"HIDE_AUTOPLAY_MINI_PREVIEW" = "Hide autoplay mini preview"; -"HIDE_AUTOPLAY_MINI_PREVIEW_DESC" = "Hide the small suggested video box near the title in fullscreen"; +"HIDE_AUTOPLAY_MINI_PREVIEW" = "Ocultar mini visualização de reprodução automática"; +"HIDE_AUTOPLAY_MINI_PREVIEW_DESC" = "Oculta a pequena caixa de vídeo sugerida perto do título em tela cheia"; "HIDE_HUD_MESSAGES" = "Ocultar Mensagens do HUD"; "HIDE_HUD_MESSAGES_DESC" = "Exemplo: Legendas/CC ativadas/desativadas, A repetição do vídeo está ativada,..."; -"HIDE_COLLAPSE_BUTTON" = "Hide Collapse Button"; -"HIDE_COLLAPSE_BUTTON_DESC" = "Hides the Arrow Collapse Button that was shown in the Top Left of the Video Player."; +"HIDE_COLLAPSE_BUTTON" = "Ocultar Botão de Recolhimento"; +"HIDE_COLLAPSE_BUTTON_DESC" = "Oculta o botão de seta para recolher que era exibido no canto superior esquerdo do player de vídeo."; + +"HIDE_SPEED_TOAST" = "Ocultar Toast de Velocidade"; +"HIDE_SPEED_TOAST_DESC" = "Ocultar o popup de Velocidade 2X ao segurar o player"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "Configurações do Aplicativo"; diff --git a/lang/YTLitePlus.bundle/ro.lproj/Localizable.strings b/lang/YTLitePlus.bundle/ro.lproj/Localizable.strings index 6bec7d1..343c226 100644 --- a/lang/YTLitePlus.bundle/ro.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/ro.lproj/Localizable.strings @@ -13,6 +13,25 @@ "REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons"; "REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'"; +"VIDEO_PLAYER" = "Video Player (Beta)"; +"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player"; + +// Player Gestures +"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures"; +"VOLUME" = "Volume"; +"BRIGHTNESS" = "Brightness"; +"SEEK" = "Seek"; +"DISABLED" = "Disabled"; +"DEADZONE" = "Deadzone"; +"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized"; +"SENSITIVITY" = "Sensitivity"; +"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures"; +"PLAYER_GESTURES_TITLE" = "Player Gestures"; +"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player"; +"TOP_SECTION" = "Top Section"; +"MIDDLE_SECTION" = "Middle Section"; +"BOTTOM_SECTION" = "Bottom Section"; + // Video controls overlay options "VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Opțiuni Overlay Controale Video"; @@ -70,6 +89,9 @@ "HIDE_COLLAPSE_BUTTON" = "Hide Collapse Button"; "HIDE_COLLAPSE_BUTTON_DESC" = "Hides the Arrow Collapse Button that was shown in the Top Left of the Video Player."; +"HIDE_SPEED_TOAST" = "Hide Speed Toast"; +"HIDE_SPEED_TOAST_DESC" = "Hide the 2X Speed popup when holding the player"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "Opțiuni Overlay Setări Aplicație"; diff --git a/lang/YTLitePlus.bundle/ru.lproj/Localizable.strings b/lang/YTLitePlus.bundle/ru.lproj/Localizable.strings index f7f6443..5e6bb59 100644 --- a/lang/YTLitePlus.bundle/ru.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/ru.lproj/Localizable.strings @@ -13,6 +13,25 @@ "REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons"; "REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'"; +"VIDEO_PLAYER" = "Video Player (Beta)"; +"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player"; + +// Player Gestures +"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures"; +"VOLUME" = "Volume"; +"BRIGHTNESS" = "Brightness"; +"SEEK" = "Seek"; +"DISABLED" = "Disabled"; +"DEADZONE" = "Deadzone"; +"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized"; +"SENSITIVITY" = "Sensitivity"; +"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures"; +"PLAYER_GESTURES_TITLE" = "Player Gestures"; +"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player"; +"TOP_SECTION" = "Top Section"; +"MIDDLE_SECTION" = "Middle Section"; +"BOTTOM_SECTION" = "Bottom Section"; + // Video controls overlay options "VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options"; @@ -70,6 +89,9 @@ "HIDE_COLLAPSE_BUTTON" = "Hide Collapse Button"; "HIDE_COLLAPSE_BUTTON_DESC" = "Hides the Arrow Collapse Button that was shown in the Top Left of the Video Player."; +"HIDE_SPEED_TOAST" = "Hide Speed Toast"; +"HIDE_SPEED_TOAST_DESC" = "Hide the 2X Speed popup when holding the player"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "App Settings Overlay Options"; diff --git a/lang/YTLitePlus.bundle/template.lproj/Localizable.strings b/lang/YTLitePlus.bundle/template.lproj/Localizable.strings index 5e6f94d..413a20a 100644 --- a/lang/YTLitePlus.bundle/template.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/template.lproj/Localizable.strings @@ -28,6 +28,25 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap "REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons"; "REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'"; +"VIDEO_PLAYER" = "Video Player (Beta)"; +"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player"; + +// Player Gestures +"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures"; +"VOLUME" = "Volume"; +"BRIGHTNESS" = "Brightness"; +"SEEK" = "Seek"; +"DISABLED" = "Disabled"; +"DEADZONE" = "Deadzone"; +"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized"; +"SENSITIVITY" = "Sensitivity"; +"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures"; +"PLAYER_GESTURES_TITLE" = "Player Gestures"; +"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player"; +"TOP_SECTION" = "Top Section"; +"MIDDLE_SECTION" = "Middle Section"; +"BOTTOM_SECTION" = "Bottom Section"; + // Video controls overlay options "VIDEO_CONTROLS_OVERLAY_OPTIONS" = "Video Controls Overlay Options"; @@ -85,6 +104,9 @@ https://github.com/PoomSmart/Return-YouTube-Dislikes/tree/main/layout/Library/Ap "HIDE_COLLAPSE_BUTTON" = "Hide Collapse Button"; "HIDE_COLLAPSE_BUTTON_DESC" = "Hides the Arrow Collapse Button that was shown in the Top Left of the Video Player."; +"HIDE_SPEED_TOAST" = "Hide Speed Toast"; +"HIDE_SPEED_TOAST_DESC" = "Hide the 2X Speed popup when holding the player"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "App Settings Overlay Options"; diff --git a/lang/YTLitePlus.bundle/tr.lproj/Localizable.strings b/lang/YTLitePlus.bundle/tr.lproj/Localizable.strings index e1d707f..14c9e72 100644 --- a/lang/YTLitePlus.bundle/tr.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/tr.lproj/Localizable.strings @@ -1,6 +1,36 @@ // Settings "VERSION" = "YTLitePlus'ın sürümü: %@"; -"VERSION_CHECK" = "Güncelleme için dokunun!"; +"VERSION_CHECK" = "Güncelleme kontrolü için dokun!"; + +"COPY_SETTINGS" = "Ayarları Kopyala"; +"COPY_SETTINGS_DESC" = "Tüm mevcut ayarları panoya kopyala"; +"PASTE_SETTINGS" = "Ayarları Yapıştır"; +"PASTE_SETTINGS_DESC" = "Panodaki ayarları yapıştır ve uygula"; +"EXPORT_SETTINGS" = "Ayarları Dışa Aktar"; +"EXPORT_SETTINGS_DESC" = "Tüm mevcut ayarları bir .txt dosyasına dışa aktarır"; +"IMPORT_SETTINGS" = "Ayarları İçe Aktar"; +"IMPORT_SETTINGS_DESC" = "Ayarları içe aktarmak için basın (.txt)"; +"REPLACE_COPY_AND_PASTE_BUTTONS" = "'Ayarları Kopyala' ve 'Ayarları Yapıştır' Düğmelerini Değiştir"; +"REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Düğmeleri 'Ayarları Dışa Aktar' ve 'Ayarları İçe Aktar' ile değiştirir"; + +"VIDEO_PLAYER" = "Video Player (Beta)"; +"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player"; + +// Player Gestures +"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures"; +"VOLUME" = "Volume"; +"BRIGHTNESS" = "Brightness"; +"SEEK" = "Seek"; +"DISABLED" = "Disabled"; +"DEADZONE" = "Deadzone"; +"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized"; +"SENSITIVITY" = "Sensitivity"; +"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures"; +"PLAYER_GESTURES_TITLE" = "Player Gestures"; +"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player"; +"TOP_SECTION" = "Top Section"; +"MIDDLE_SECTION" = "Middle Section"; +"BOTTOM_SECTION" = "Bottom Section"; "COPY_SETTINGS" = "Ayarları Kopyala"; "COPY_SETTINGS_DESC" = "Tüm mevcut ayarları panoya kopyala"; @@ -61,8 +91,8 @@ "HIDE_COMMENT_PREVIEWS_UNDER_PLAYER" = "Oynatıcının Altındaki Yorum Önizlemelerini Gizle"; "HIDE_COMMENT_PREVIEWS_UNDER_PLAYER_DESC" = "Video oynatıcının altındaki yorum önizlemelerini gizler."; -"HIDE_AUTOPLAY_MINI_PREVIEW" = "Hide autoplay mini preview"; -"HIDE_AUTOPLAY_MINI_PREVIEW_DESC" = "Hide the small suggested video box near the title in fullscreen"; +"HIDE_AUTOPLAY_MINI_PREVIEW" = "Otomatik Oynatma Mini Önizlemesini Gizle"; +"HIDE_AUTOPLAY_MINI_PREVIEW_DESC" = "Tam ekranda başlık yakınındaki küçük önerilen video kutusunu gizle"; "HIDE_HUD_MESSAGES" = "HUD mesajlarını gizle"; "HIDE_HUD_MESSAGES_DESC" = "Belirli işlemler için görüntülenen bildirim çubuklarını gizler (ör. CC açıldı/kapandı)"; @@ -70,6 +100,9 @@ "HIDE_COLLAPSE_BUTTON" = "Daraltma Düğmesini Gizle"; "HIDE_COLLAPSE_BUTTON_DESC" = "Video oynatıcıda sol üstte görünen ok ile daraltma düğmesini gizler."; +"HIDE_SPEED_TOAST" = "Hız Bildirimini Gizle"; +"HIDE_SPEED_TOAST_DESC" = "Oynatıcıya basılı tutarken 2X Hız bildirimini gizle"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "Uyg. Ayarları Kaplama Seç."; @@ -84,7 +117,7 @@ "HIDE_LIVECHAT_SECTION" = "\"Canlı Sohbet\" Bölümünü Gizle"; // Theme -"THEME_OPTIONS" = "Tema Seç."; +"THEME_OPTIONS" = "Tema Seç"; "OLED_DARK_THEME" = "OLED koyu tema"; "OLED_DARK_THEME_2" = "OLED koyu tema"; @@ -106,9 +139,9 @@ "CUSTOM_LOWCONTRASTMODE" = "(Özel Renk) DüşükKontrastModu"; // Miscellaneous -"MISCELLANEOUS" = "Çeşitli"; +"MISCELLANEOUS" = "Diğer"; -"PLAYBACK_IN_FEEDS" = "Akışlarda Oynatma"; +"PLAYBACK_IN_FEEDS" = "Akışlarda Oto Oynatma"; "PLAYBACK_IN_FEEDS_ALWAYS_ON" = "Her zaman açık"; "PLAYBACK_IN_FEEDS_WIFI_ONLY" = "Yalnızca Wi-Fi"; "PLAYBACK_IN_FEEDS_OFF" = "Kapalı"; diff --git a/lang/YTLitePlus.bundle/vi.lproj/Localizable.strings b/lang/YTLitePlus.bundle/vi.lproj/Localizable.strings index 49194cd..dd3fdb0 100644 --- a/lang/YTLitePlus.bundle/vi.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/vi.lproj/Localizable.strings @@ -13,6 +13,25 @@ "REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons"; "REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'"; +"VIDEO_PLAYER" = "Video Player (Beta)"; +"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player"; + +// Player Gestures +"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures"; +"VOLUME" = "Volume"; +"BRIGHTNESS" = "Brightness"; +"SEEK" = "Seek"; +"DISABLED" = "Disabled"; +"DEADZONE" = "Deadzone"; +"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized"; +"SENSITIVITY" = "Sensitivity"; +"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures"; +"PLAYER_GESTURES_TITLE" = "Player Gestures"; +"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player"; +"TOP_SECTION" = "Top Section"; +"MIDDLE_SECTION" = "Middle Section"; +"BOTTOM_SECTION" = "Bottom Section"; + // Video player options "VIDEO_PLAYER_OPTIONS" = "Tùy chọn trình phát video"; @@ -79,6 +98,9 @@ "HIDE_COLLAPSE_BUTTON" = "Hide Collapse Button"; "HIDE_COLLAPSE_BUTTON_DESC" = "Hides the Arrow Collapse Button that was shown in the Top Left of the Video Player."; +"HIDE_SPEED_TOAST" = "Hide Speed Toast"; +"HIDE_SPEED_TOAST_DESC" = "Hide the 2X Speed popup when holding the player"; + // Shorts controls overlay options "SHORTS_CONTROLS_OVERLAY_OPTIONS" = "Tùy chọn lớp phủ điều khiển quần short"; diff --git a/lang/YTLitePlus.bundle/zh_TW.lproj/Localizable.strings b/lang/YTLitePlus.bundle/zh_TW.lproj/Localizable.strings index f4d3dfa..aef5cf3 100644 --- a/lang/YTLitePlus.bundle/zh_TW.lproj/Localizable.strings +++ b/lang/YTLitePlus.bundle/zh_TW.lproj/Localizable.strings @@ -14,6 +14,25 @@ "REPLACE_COPY_AND_PASTE_BUTTONS" = "Replace 'Copy Settings' & 'Paste Settings' Buttons"; "REPLACE_COPY_AND_PASTE_BUTTONS_DESC" = "Replaces the Buttons to 'Export Settings' and 'Import Settings'"; +"VIDEO_PLAYER" = "Video Player (Beta)"; +"VIDEO_PLAYER_DESC" = "Open a downloaded video in the Apple player"; + +// Player Gestures +"PLAYER_GESTURES_TOGGLE" = "Enable Player Gestures"; +"VOLUME" = "Volume"; +"BRIGHTNESS" = "Brightness"; +"SEEK" = "Seek"; +"DISABLED" = "Disabled"; +"DEADZONE" = "Deadzone"; +"DEADZONE_DESC" = "Minimum distance to move before a gesture is recognized"; +"SENSITIVITY" = "Sensitivity"; +"SENSITIVITY_DESC" = "Multiplier on volume and brightness gestures"; +"PLAYER_GESTURES_TITLE" = "Player Gestures"; +"PLAYER_GESTURES_DESC" = "Configure horizontal pan gestures for the player"; +"TOP_SECTION" = "Top Section"; +"MIDDLE_SECTION" = "Middle Section"; +"BOTTOM_SECTION" = "Bottom Section"; + // Video controls overlay options "VIDEO_CONTROLS_OVERLAY_OPTIONS" = "影片區覆蓋按鈕設定"; @@ -71,6 +90,9 @@ "HIDE_COLLAPSE_BUTTON" = "Hide Collapse Button"; "HIDE_COLLAPSE_BUTTON_DESC" = "Hides the Arrow Collapse Button that was shown in the Top Left of the Video Player."; +"HIDE_SPEED_TOAST" = "Hide Speed Toast"; +"HIDE_SPEED_TOAST_DESC" = "Hide the 2X Speed popup when holding the player"; + // App settings overlay options "APP_SETTINGS_OVERLAY_OPTIONS" = "應用程式設定隱藏項目";