Compare commits

...

2119 Commits
1.0.2 ... dev

Author SHA1 Message Date
KevinX8 8b3f2c5e2e
New Crowdin updates (#700)
* New translations strings.xml (Indonesian)

* New translations strings.xml (Croatian)

* New translations strings.xml (Croatian)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Croatian)

* New translations strings.xml (Persian)

* New translations strings.xml (Persian)

* New translations strings.xml (Catalan)

* New translations strings.xml (Catalan)

* New translations strings.xml (Russian)

* New translations strings.xml (Russian)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Norwegian)

* New translations strings.xml (Russian)

* New translations strings.xml (Russian)

* New translations strings.xml (Hungarian)

* New translations strings.xml (Bengali)

* New translations strings.xml (German)

* New translations strings.xml (Azerbaijani)

* New translations strings.xml (Filipino)

* New translations strings.xml (Portuguese, Brazilian)

* New translations strings.xml (Azerbaijani)

* New translations strings.xml (German)

* New translations strings.xml (Russian)

* New translations strings.xml (Belarusian)

* New translations strings.xml (Belarusian)

* New translations strings.xml (Belarusian)

* New translations strings.xml (Odia)

* New translations strings.xml (Odia)

* New translations strings.xml (German)

* New translations strings.xml (Finnish)
2022-03-14 01:11:33 +00:00
Xinto 7421ed9462
Merge pull request #797 from BioGeek/dev
Fix typo
2022-02-27 00:48:22 +04:00
Jeroen Van Goey 2ded1e87dd
Fix typo
user-freindly -> user-friendly
2022-02-17 15:13:12 +01:00
Xinto dcc3ad9a55
Merge pull request #783 from zamansoum/dev
Added Google Advanced Protection Program instructions
2022-02-04 14:09:15 +04:00
AmineMansoum 42bb94bd84
Fix Typos 2022-02-02 13:08:58 -05:00
AmineMansoum 0db7ddd83a
Added Google Advanced Protection Program notice 2022-02-02 13:07:32 -05:00
Xinto fc9da62528
Merge pull request #782 from AlphaVS-76/patch-3
Update README.md
2022-02-01 10:19:05 +04:00
Vaibhav Sharma dd9ffeca18
Update README.md 2022-02-01 09:43:36 +05:30
Xinto a2720c00fd
Merge pull request #781 from zamansoum/dev
Vanced FAQ not available on the playstore anymore
2022-01-31 12:58:07 +04:00
AmineMansoum a2d6c1b9de
Vanced FAQ not available on the playstore anymore 2022-01-30 18:33:18 -05:00
Xinto a170835b1d
Merge pull request #721 from NotWoods/autoupdate
Add background updates on Android 12
2021-10-27 00:29:50 -07:00
Tiger Oakes 9ca0fb789b Updated installSplitApks 2021-10-26 20:11:38 -07:00
Xinto eb28c6163c
Merge pull request #724 from NotWoods/viewmodel-no-leak
Remove HomeViewModel memory leak
2021-10-25 02:17:33 -07:00
Tiger Oakes 368808de0c Remove viewmodel memory leak 2021-10-24 23:36:47 -07:00
Tiger Oakes 4af47e8de0 Remove lifecycleOwner parameter from DataModel 2021-10-24 13:13:03 -07:00
Tiger Oakes 9a14d0f10c Add background updates on Android 12 2021-10-23 19:21:29 -07:00
X1nto 25f8f800ea update templates 2021-10-11 17:34:57 +04:00
X1nto 851727a1c1 bumped up version 2021-10-11 15:01:38 +04:00
X1nto 7c1dbb654a small optimization 2021-10-11 15:01:15 +04:00
X1nto 7c1392de94 preheat the shell in splash screen 2021-10-11 15:01:07 +04:00
X1nto 9a31f2b7e3 disable busybox 2021-10-11 15:00:51 +04:00
X1nto f887ba5d6c root installer improvements 2021-10-11 15:00:25 +04:00
X1nto ec17869600 Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2021-10-08 22:58:34 +04:00
X1nto 17f3af190f removed guide button 2021-10-08 22:58:23 +04:00
KevinX8 4eae61e7a6 update deps 2021-10-08 21:57:08 +03:00
X1nto 36fc660811 cleanup 2021-10-08 19:22:44 +04:00
X1nto f882e05965 updated buildscript 2021-10-08 19:10:32 +04:00
X1nto e7c6d2dc3d updated bottom sheet fragments 2021-10-08 19:10:24 +04:00
X1nto bbe993edf7 Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2021-10-08 17:55:28 +04:00
X1nto 9358447838 import cleanup 2021-10-08 17:55:18 +04:00
KevinX8 f110dc6a14
New Crowdin updates (#694)
* New translations strings.xml (Filipino)

* New translations strings.xml (Filipino)

* New translations strings.xml (Romanian)

* New translations strings.xml (Croatian)

* New translations strings.xml (Turkish)

* New translations strings.xml (Chinese Simplified)

* New translations strings.xml (Chinese Traditional)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Portuguese, Brazilian)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Tamil)

* New translations strings.xml (Bengali)

* New translations strings.xml (Marathi)

* New translations strings.xml (Thai)

* New translations strings.xml (Estonian)

* New translations strings.xml (Russian)

* New translations strings.xml (Azerbaijani)

* New translations strings.xml (Hindi)

* New translations strings.xml (Filipino)

* New translations strings.xml (Malayalam)

* New translations strings.xml (Sinhala)

* New translations strings.xml (Bengali, India)

* New translations strings.xml (Kurmanji (Kurdish))

* New translations strings.xml (Sorani (Kurdish))

* New translations strings.xml (Pashto)

* New translations strings.xml (Somali)

* New translations strings.xml (Swedish)

* New translations strings.xml (Portuguese)

* New translations strings.xml (French)

* New translations strings.xml (Danish)

* New translations strings.xml (Slovak)

* New translations strings.xml (Serbian (Cyrillic))

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Punjabi)

* New translations strings.xml (Spanish)

* New translations strings.xml (Afrikaans)

* New translations strings.xml (Arabic)

* New translations strings.xml (Bulgarian)

* New translations strings.xml (Catalan)

* New translations strings.xml (German)

* New translations strings.xml (Polish)

* New translations strings.xml (Greek)

* New translations strings.xml (Finnish)

* New translations strings.xml (Hebrew)

* New translations strings.xml (Hungarian)

* New translations strings.xml (Italian)

* New translations strings.xml (Japanese)

* New translations strings.xml (Georgian)

* New translations strings.xml (Korean)

* New translations strings.xml (Lithuanian)

* New translations strings.xml (Dutch)

* New translations strings.xml (Norwegian)

* New translations strings.xml (Punjabi, Pakistan)

* New translations strings.xml (Spanish)

* New translations strings.xml (Bulgarian)

* New translations strings.xml (Dutch)

* New translations strings.xml (Slovak)

* New translations strings.xml (Chinese Traditional)

* New translations strings.xml (Filipino)

* New translations strings.xml (Hungarian)

* New translations strings.xml (Japanese)

* New translations strings.xml (Filipino)

* New translations strings.xml (Arabic)

* New translations strings.xml (Italian)

* New translations strings.xml (Hungarian)

* New translations strings.xml (Arabic)

* New translations strings.xml (Polish)

* New translations strings.xml (German)

* New translations strings.xml (German)

* New translations strings.xml (Portuguese, Brazilian)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Odia)

* New translations strings.xml (Turkish)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Bulgarian)

* New translations strings.xml (Romanian)

* New translations strings.xml (Finnish)

* New translations strings.xml (Russian)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Finnish)

* New translations strings.xml (Tamil)

* New translations strings.xml (Sorani (Kurdish))

* New translations strings.xml (Thai)

* New translations strings.xml (Thai)

* New translations strings.xml (Thai)

* New translations strings.xml (German)

* New translations strings.xml (Danish)

* New translations strings.xml (Azerbaijani)

* New translations strings.xml (Thai)

* New translations strings.xml (Croatian)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Portuguese, Brazilian)

* New translations strings.xml (Arabic)

* New translations strings.xml (Malayalam)

* New translations strings.xml (Hindi)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Slovak)

* New translations strings.xml (Spanish)

* New translations strings.xml (Thai)
2021-10-08 06:52:35 -07:00
Xinto ad97dab04a
Merge pull request #632 from RDKRACZ/oxi
Optimize assets.
2021-10-08 06:37:50 -07:00
X1nto 6ed72d3b65 bundle busybox 2021-10-08 17:31:47 +04:00
X1nto ccd82f3bce fix unresolved references 2021-10-08 17:31:29 +04:00
X1nto e787217bf2 fix save button going offscreen when list is too large 2021-10-08 17:11:55 +04:00
X1nto 0a87f0d81c add config file 2021-10-08 17:01:07 +04:00
X1nto 0db9faad94 switch to github issue forms 2021-10-08 16:58:15 +04:00
X1nto a70d731ec4 update workflow 2021-10-08 16:19:46 +04:00
X1nto ce18bb0963 updated flexbox 2021-10-08 16:18:58 +04:00
X1nto a101e3a79f updated buildscript for subprojects 2021-10-08 16:17:08 +04:00
X1nto b1a51f837f replace jcenter with maven central 2021-10-08 16:04:50 +04:00
X1nto 02f7fe62ba declare array as nullable 2021-10-08 15:58:07 +04:00
X1nto 4a50b27812 bump up version 2021-10-08 15:45:34 +04:00
X1nto 465d9f4fdb buildscript cleanup 2021-10-08 15:45:11 +04:00
X1nto 5ef967f097 fuck crowdin 2021-10-08 15:19:15 +04:00
X1nto 7fca85be14 finish the uninstall dialog 2021-10-08 15:13:07 +04:00
X1nto 1cd0294801 android 12 crash fixes 2021-10-08 15:05:46 +04:00
X1nto 715eb9cf7a android 12 2021-10-08 14:48:32 +04:00
X1nto 46cb058cab dependency updates 2021-10-08 14:21:44 +04:00
K0RR 697fbf5ea7 Optimize assets.
Lossless compression.
2021-08-02 15:00:27 +02:00
KevinX8 bd04fddeb0 fix build error 2021-06-03 12:40:53 +01:00
Tornike Khintibidze 1e0c187b43
Merge pull request #570 from seahindeniz/dev
Fix some strings
2021-06-03 14:59:59 +04:00
Sahin Deniz d23f9a7bcf Add new line 🙂 2021-06-03 13:48:36 +03:00
Sahin Deniz be35498e65 Ignore .vscode folder 2021-06-03 13:46:54 +03:00
Sahin Deniz 6445564c85 Capitalize "just" 2021-06-03 13:45:55 +03:00
Sahin Deniz bb100aeefd Capitalize "apk" 2021-06-03 13:45:04 +03:00
Sahin Deniz 1759c01e98 Decapitalize "project" 2021-06-03 13:43:18 +03:00
KevinX8 956d8800e9
New Crowdin updates (#568)
* New translations strings.xml (Romanian)

* New translations strings.xml (Croatian)

* New translations strings.xml (Turkish)

* New translations strings.xml (Chinese Simplified)

* New translations strings.xml (Chinese Traditional)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Portuguese, Brazilian)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Tamil)

* New translations strings.xml (Bengali)

* New translations strings.xml (Marathi)

* New translations strings.xml (Thai)

* New translations strings.xml (Estonian)

* New translations strings.xml (Russian)

* New translations strings.xml (Azerbaijani)

* New translations strings.xml (Hindi)

* New translations strings.xml (Filipino)

* New translations strings.xml (Malayalam)

* New translations strings.xml (Sinhala)

* New translations strings.xml (Bengali, India)

* New translations strings.xml (Kurmanji (Kurdish))

* New translations strings.xml (Sorani (Kurdish))

* New translations strings.xml (Pashto)

* New translations strings.xml (Somali)

* New translations strings.xml (Swedish)

* New translations strings.xml (Portuguese)

* New translations strings.xml (French)

* New translations strings.xml (Danish)

* New translations strings.xml (Slovak)

* New translations strings.xml (Serbian (Cyrillic))

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Punjabi)

* New translations strings.xml (Spanish)

* New translations strings.xml (Afrikaans)

* New translations strings.xml (Arabic)

* New translations strings.xml (Bulgarian)

* New translations strings.xml (Catalan)

* New translations strings.xml (Czech)

* New translations strings.xml (German)

* New translations strings.xml (Polish)

* New translations strings.xml (Greek)

* New translations strings.xml (Finnish)

* New translations strings.xml (Hebrew)

* New translations strings.xml (Hungarian)

* New translations strings.xml (Italian)

* New translations strings.xml (Japanese)

* New translations strings.xml (Georgian)

* New translations strings.xml (Korean)

* New translations strings.xml (Lithuanian)

* New translations strings.xml (Dutch)

* New translations strings.xml (Norwegian)

* New translations strings.xml (Punjabi, Pakistan)
2021-06-01 20:39:46 +01:00
Tornike Khintibidze a7ee51a90b
Merge pull request #562 from cl-ement05/dev
Minor UI/UX improvements (show changelog after update + show pathy of saved log file)
2021-05-29 17:39:47 +04:00
cl-ement05 f98c21ddbe revert back to first version 2021-05-29 15:34:05 +02:00
cl-ement05 d7dfb27ca5 set default value to VERSION_CODE and removed useless blocks 2021-05-29 14:35:39 +02:00
cl-ement05 b9820468c6 very small UI improvement (show log save location) 2021-05-28 23:02:13 +02:00
cl-ement05 1ea32c75ff show changelog after app update 2021-05-28 15:11:34 +02:00
X1nto e6f04a95c8 Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2021-05-24 21:57:37 +04:00
X1nto 9346324ec5 updated issue templates 2021-05-24 21:57:27 +04:00
Tornike Khintibidze 4167aa422e
Merge pull request #551 from atahabaki/splash-screen-bg-fix-469
Splash screen background color (fix for #469)
2021-05-13 13:07:10 +04:00
A. Taha Baki 58a0b06b92 night theme splash color => #000... 2021-05-12 23:33:38 +03:00
A. Taha Baki b53d9f35cc light theme splash color => #cfcfcf... 2021-05-12 23:33:05 +03:00
Tornike Khintibidze 1150f5800b
Merge pull request #544 from sudo-nautilus/dev
Ignore Markdown Files While Pushing Or Pull Requesting
2021-05-08 12:01:39 +04:00
Nautilus cd7c05d25a
Merge pull request #1 from sudo-nautilus/workflow-patch
Ignore Markdown Files While Pushing Or Pull Request
2021-05-08 08:38:26 +05:30
Nautilus 04d3500bb0
Ignore .md files while pushing or pull request 2021-05-08 08:34:58 +05:30
Tornike Khintibidze 0e93d2091a
Merge pull request #540 from sudo-nautilus/dev
Beautify Readme
2021-05-06 16:08:02 +04:00
Nautilus df56ee8f04
Hotfix V2 2021-05-06 17:37:52 +05:30
Nautilus bfd8a0e1ef
OwO Hotfix Badge Alignment 2021-05-06 17:34:20 +05:30
Nautilus ecca7dfcba
OwO-Ify V2
UwU Buttons And Playstore Button
2021-05-06 17:31:50 +05:30
Nautilus c4ae3887fb
Revet To Orginal Readme 2021-05-06 17:16:43 +05:30
Nautilus f15dcdfaef
OwO-Ify 2021-05-06 10:51:06 +05:30
X1nto 81f8c7a036 updated bug template 2021-05-01 19:16:31 +04:00
X1nto c69bccfc99 updated bug template 2021-05-01 19:11:58 +04:00
Tornike Khintibidze c5a92d51b2
Merge pull request #523 from cl-ement05/dev
added an AppUninstallDialog
2021-04-29 12:19:17 +04:00
cl-ement05 69e0221e82 added an AppUninstallDialog 2021-04-28 16:30:42 +02:00
KevinX8 96a69144fe Updated deps 2021-04-27 13:20:06 +01:00
KevinX8 d8fc45dd39
New Crowdin updates (#515)
* New translations strings.xml (Arabic)

* New translations strings.xml (Greek)

* New translations strings.xml (Dutch)

* New translations strings.xml (Turkish)

* New translations strings.xml (Chinese Traditional)

* New translations strings.xml (Indonesian)
2021-04-27 12:23:57 +01:00
Tornike Khintibidze ffdc76a2ca
Merge pull request #512 from YTVanced/l10n_dev
New Crowdin updates
2021-04-27 10:23:22 +04:00
KevinX8 88c3a3b12b New translations strings.xml (Polish) 2021-04-26 23:12:38 +01:00
KevinX8 28346f7ae3 New translations strings.xml (Korean) 2021-04-26 23:12:34 +01:00
KevinX8 f92061f54d New translations strings.xml (Slovak) 2021-04-26 23:12:31 +01:00
KevinX8 822d7bdb78 New translations strings.xml (Arabic) 2021-04-26 23:12:24 +01:00
KevinX8 a420ab2d79 New translations strings.xml (Portuguese, Brazilian) 2021-04-26 23:12:08 +01:00
KevinX8 822b900396 New translations strings.xml (Lithuanian) 2021-04-26 21:36:32 +01:00
KevinX8 5a2be52767 New translations strings.xml (Russian) 2021-04-26 21:36:31 +01:00
KevinX8 f6231f809c New translations strings.xml (Portuguese) 2021-04-26 21:36:30 +01:00
KevinX8 24cac1920f New translations strings.xml (Polish) 2021-04-26 21:36:28 +01:00
KevinX8 835f84078b New translations strings.xml (Punjabi) 2021-04-26 21:36:27 +01:00
KevinX8 00896b77c3 New translations strings.xml (Norwegian) 2021-04-26 21:36:26 +01:00
KevinX8 c40c83d91c New translations strings.xml (Dutch) 2021-04-26 21:36:25 +01:00
KevinX8 48632c3d2a New translations strings.xml (Kurdish) 2021-04-26 21:36:24 +01:00
KevinX8 ab6beff186 New translations strings.xml (Korean) 2021-04-26 21:36:23 +01:00
KevinX8 ac8f5f6540 New translations strings.xml (Georgian) 2021-04-26 21:36:21 +01:00
KevinX8 de8c0a7ac7 New translations strings.xml (Japanese) 2021-04-26 21:36:20 +01:00
KevinX8 0a7f579063 New translations strings.xml (Italian) 2021-04-26 21:36:19 +01:00
KevinX8 487dc15c2a New translations strings.xml (Slovak) 2021-04-26 21:36:18 +01:00
KevinX8 afe6ec2f07 New translations strings.xml (Hungarian) 2021-04-26 21:36:17 +01:00
KevinX8 521495eaa8 New translations strings.xml (Finnish) 2021-04-26 21:36:16 +01:00
KevinX8 10c683a66c New translations strings.xml (Greek) 2021-04-26 21:36:15 +01:00
KevinX8 287b169bc9 New translations strings.xml (German) 2021-04-26 21:36:14 +01:00
KevinX8 b3db04e96e New translations strings.xml (Danish) 2021-04-26 21:36:12 +01:00
KevinX8 48dbb7527b New translations strings.xml (Czech) 2021-04-26 21:36:11 +01:00
KevinX8 b6e53bafa4 New translations strings.xml (Catalan) 2021-04-26 21:36:10 +01:00
KevinX8 a7107e4427 New translations strings.xml (Bulgarian) 2021-04-26 21:36:09 +01:00
KevinX8 91f40ad846 New translations strings.xml (Arabic) 2021-04-26 21:36:07 +01:00
KevinX8 2c3cdd0697 New translations strings.xml (Afrikaans) 2021-04-26 21:36:06 +01:00
KevinX8 606664cf39 New translations strings.xml (Spanish) 2021-04-26 21:36:05 +01:00
KevinX8 4e776e78ca New translations strings.xml (Hebrew) 2021-04-26 21:36:04 +01:00
KevinX8 bfb094f6b3 New translations strings.xml (French) 2021-04-26 21:36:03 +01:00
KevinX8 f9c40b12b2 New translations strings.xml (Serbian (Cyrillic)) 2021-04-26 21:36:01 +01:00
KevinX8 4adfb9db3c New translations strings.xml (Turkish) 2021-04-26 21:36:00 +01:00
KevinX8 f248bdba62 New translations strings.xml (Punjabi, Pakistan) 2021-04-26 21:35:59 +01:00
KevinX8 cd3a419326 New translations strings.xml (Somali) 2021-04-26 21:35:58 +01:00
KevinX8 ac09ae3c58 New translations strings.xml (Pashto) 2021-04-26 21:35:56 +01:00
KevinX8 e43bef60e5 New translations strings.xml (Sorani (Kurdish)) 2021-04-26 21:35:55 +01:00
KevinX8 0a354f4e3d New translations strings.xml (Kurmanji (Kurdish)) 2021-04-26 21:35:54 +01:00
KevinX8 2a1fc505ea New translations strings.xml (Bengali, India) 2021-04-26 21:35:53 +01:00
KevinX8 0e0ed12401 New translations strings.xml (Sinhala) 2021-04-26 21:35:51 +01:00
KevinX8 431139eb6b New translations strings.xml (Malayalam) 2021-04-26 21:35:50 +01:00
KevinX8 56a3850b5e New translations strings.xml (Filipino) 2021-04-26 21:35:49 +01:00
KevinX8 c1cb75afe6 New translations strings.xml (Hindi) 2021-04-26 21:35:48 +01:00
KevinX8 3620438efb New translations strings.xml (Azerbaijani) 2021-04-26 21:35:46 +01:00
KevinX8 33bfedfdf2 New translations strings.xml (Swedish) 2021-04-26 21:35:45 +01:00
KevinX8 01fadc6854 New translations strings.xml (Estonian) 2021-04-26 21:35:44 +01:00
KevinX8 b0d9611056 New translations strings.xml (Thai) 2021-04-26 21:35:43 +01:00
KevinX8 b264c13623 New translations strings.xml (Marathi) 2021-04-26 21:35:42 +01:00
KevinX8 5b78a5b4b7 New translations strings.xml (Bengali) 2021-04-26 21:35:41 +01:00
KevinX8 1aff587b09 New translations strings.xml (Tamil) 2021-04-26 21:35:39 +01:00
KevinX8 b89e6d01c8 New translations strings.xml (Indonesian) 2021-04-26 21:35:38 +01:00
KevinX8 de94258b11 New translations strings.xml (Portuguese, Brazilian) 2021-04-26 21:35:37 +01:00
KevinX8 5f87878d94 New translations strings.xml (Vietnamese) 2021-04-26 21:35:36 +01:00
KevinX8 0969b8d744 New translations strings.xml (Chinese Traditional) 2021-04-26 21:35:35 +01:00
KevinX8 fac5ec0f1b New translations strings.xml (Chinese Simplified) 2021-04-26 21:35:34 +01:00
KevinX8 5914932728 New translations strings.xml (Ukrainian) 2021-04-26 21:35:32 +01:00
KevinX8 b119be8bbf New translations strings.xml (Croatian) 2021-04-26 21:35:31 +01:00
KevinX8 24424c1d52 New translations strings.xml (Romanian) 2021-04-26 21:35:30 +01:00
X1nto 9db254d2f2 fixed version code comparison 2021-04-27 00:27:11 +04:00
X1nto 9368af2187 removed microg bug dialog 2021-04-26 23:40:53 +04:00
X1nto f1b6519825 removed path prefix for api urls 2021-04-26 23:11:53 +04:00
X1nto 96d01de045 updated icons in expandable app item 2021-04-26 23:08:39 +04:00
X1nto 5b2c8ce671 improved layout flexibility 2021-04-26 23:00:42 +04:00
X1nto f0f98b40b6 fixed lint for core-ui 2021-04-20 18:38:05 +04:00
X1nto 135454645a removed unecessary path from file_provider 2021-04-20 18:36:26 +04:00
X1nto 8bdeff3c83 fixed dark overlay not disappearing after bottom dialog has been dismissed 2021-04-20 18:08:55 +04:00
X1nto 33d059d002 removed unused event file 2021-04-19 19:57:51 +04:00
X1nto 82ba0b2615 cleanup 2021-04-19 19:57:14 +04:00
X1nto 108ca5ae5d use storage perms only on android 5 2021-04-19 19:52:12 +04:00
X1nto 4086b1150b updated base url 2021-04-19 19:50:56 +04:00
X1nto b84a2bd930 updated readme 2021-04-18 22:01:52 +04:00
X1nto a14eeda825 prevent stacktrace ovfuscation 2021-04-18 15:45:28 +04:00
X1nto 5d63aaf510 reverted all storage-related commits 2021-04-18 15:42:23 +04:00
X1nto a570aae1a1 Revert "Added an option to switch between internal and external storage"
This reverts commit 98c4b88961.
2021-04-18 15:31:54 +04:00
X1nto f82dc4eecf Revert "added back a fix for split installer"
This reverts commit aeaa0d445e.
2021-04-18 15:30:24 +04:00
X1nto 29158e7c9a Revert "prevent stacktrace from obfuscating"
This reverts commit 2d30eb60af.
2021-04-18 15:28:32 +04:00
X1nto ebf9e8031b added -r option for root music installer 2021-04-18 14:58:04 +04:00
X1nto aeaa0d445e added back a fix for split installer 2021-04-18 14:56:51 +04:00
X1nto 4b645ef1c0 removed warning for music vanced 2021-04-18 14:35:44 +04:00
X1nto 98c4b88961 Added an option to switch between internal and external storage 2021-04-18 14:22:54 +04:00
X1nto 2d30eb60af prevent stacktrace from obfuscating 2021-04-18 12:48:03 +04:00
X1nto e08f6513cf Updated build instructions 2021-04-17 20:19:25 +04:00
X1nto 65f6a1c8d3 Added build section to readme 2021-04-17 20:16:22 +04:00
X1nto 7550c37fb6 fixed readme 2021-04-17 20:06:53 +04:00
X1nto 39b9b981ca updated readme 2021-04-17 20:04:45 +04:00
X1nto 4fee34b661 fixed buttontag getter 2021-04-17 13:28:36 +04:00
X1nto c1770e2217 moved splash screen activity to parent dir 2021-04-17 13:24:35 +04:00
X1nto af3937e23f preview adjustments to navigation xml 2021-04-17 13:23:30 +04:00
X1nto 7e3edb9cb6 Added button info on long press 2021-04-17 13:16:46 +04:00
X1nto b5b577cf8b Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2021-04-16 17:57:48 +04:00
KevinX8 3d8886359c
New Crowdin updates (#489)
* New translations strings.xml (Romanian)

* New translations strings.xml (Bengali)

* New translations strings.xml (Serbian (Cyrillic))

* New translations strings.xml (Swedish)

* New translations strings.xml (Turkish)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Chinese Simplified)

* New translations strings.xml (Chinese Traditional)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Portuguese, Brazilian)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Tamil)

* New translations strings.xml (Marathi)

* New translations strings.xml (Portuguese)

* New translations strings.xml (Thai)

* New translations strings.xml (Croatian)

* New translations strings.xml (Azerbaijani)

* New translations strings.xml (Hindi)

* New translations strings.xml (Filipino)

* New translations strings.xml (Sinhala)

* New translations strings.xml (Bengali, India)

* New translations strings.xml (Sorani (Kurdish))

* New translations strings.xml (Pashto)

* New translations strings.xml (Somali)

* New translations strings.xml (Russian)

* New translations strings.xml (Polish)

* New translations strings.xml (Arabic)

* New translations strings.xml (Spanish)

* New translations strings.xml (Slovak)

* New translations strings.xml (Malayalam)

* New translations strings.xml (Japanese)

* New translations strings.xml (Estonian)

* New translations strings.xml (French)

* New translations strings.xml (Kurdish)

* New translations strings.xml (Kurmanji (Kurdish))

* New translations strings.xml (Hungarian)

* New translations strings.xml (Finnish)

* New translations strings.xml (Korean)

* New translations strings.xml (Afrikaans)

* New translations strings.xml (Punjabi)

* New translations strings.xml (Bulgarian)

* New translations strings.xml (Catalan)

* New translations strings.xml (Czech)

* New translations strings.xml (Danish)

* New translations strings.xml (German)

* New translations strings.xml (Greek)

* New translations strings.xml (Hebrew)

* New translations strings.xml (Italian)

* New translations strings.xml (Georgian)

* New translations strings.xml (Dutch)

* New translations strings.xml (Norwegian)

* New translations strings.xml (Punjabi, Pakistan)
2021-04-13 13:39:22 +01:00
X1nto c0d2dd6aa9 fixed crash on manager update 2021-04-13 16:03:10 +04:00
X1nto 1a4504de1c updated version 2021-04-13 14:47:06 +04:00
X1nto e2a6f056c9 bumped up dependencies 2021-04-13 14:45:38 +04:00
X1nto 982fff9989 improved layouts to look more close to each other 2021-04-13 14:28:00 +04:00
X1nto 0673920103 sorted strings xml 2021-04-13 14:22:16 +04:00
X1nto e73b56ed4d require external storage 2021-04-13 14:18:53 +04:00
X1nto 1c3ab835a6 only run 1 animation at once 2021-03-20 10:36:44 +04:00
X1nto 16e7d1586d always notify about miui error 2021-03-13 14:15:02 +04:00
X1nto 140a3ebf4b updated strings 2021-03-13 14:14:08 +04:00
X1nto f7d90b7c59 added a check for session id in root installer 2021-03-07 21:59:52 +04:00
X1nto 85e2d0c5c2 fixed viewpager navigation on RTL layout 2021-03-07 15:20:19 +04:00
X1nto 6c506c989c Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2021-03-01 22:55:45 +04:00
X1nto 38860ace07 fixed #435 2021-03-01 22:51:15 +04:00
X1nto e11d918a82 fixed #437 2021-03-01 22:50:24 +04:00
X1nto 22d67b51c3 bumped up kotlin to 1.4.31 2021-02-28 17:29:10 +04:00
X1nto 5583674974 fixed changelog not appearing when pressing card in about menu 2021-02-28 17:10:18 +04:00
X1nto ad17c6dfec added progress indicators to download dialogs 2021-02-28 15:49:06 +04:00
X1nto ad299ed96d small accent update 2021-02-28 15:05:42 +04:00
X1nto 3525ef88c1 property access syntax goes brrrrr 2021-02-28 15:02:01 +04:00
X1nto 1f600430ea optimised lifecycleOwner getter 2021-02-28 14:58:34 +04:00
X1nto 18cad94748 removed useless check inside 'when' statement 2021-02-28 14:23:55 +04:00
X1nto ae37a1e406 updated old stuff 2021-02-28 14:17:46 +04:00
X1nto 2e3416ef43 reference accent color variable instead of getting preference value every time 2021-02-28 14:13:21 +04:00
X1nto 4fcfe72a0f kotlin extensions are stonks 2021-02-28 13:52:02 +04:00
X1nto b7a5741f70 removed useless attribute 2021-02-27 23:46:01 +04:00
X1nto ff8177e147 removed unnoticable animation to improve performance 2021-02-27 23:43:57 +04:00
X1nto c84e795d75 fixed grammar 2021-02-26 20:54:23 +04:00
X1nto 365fb4aede bug fixes 2021-02-26 20:02:05 +04:00
X1nto 5c7b953fb4 fixed conflicts 2021-02-26 19:36:37 +04:00
X1nto fd9defcb5e updated app card UI 2021-02-26 19:34:22 +04:00
KevinX8 7c6e3e6d6f
Merge pull request #419 from YTVanced/l10n_dev
New Crowdin updates
2021-02-24 12:22:35 +00:00
KevinX8 72b46024c0 New translations strings.xml (Vietnamese) 2021-02-24 12:00:07 +00:00
KevinX8 ab0e73745c New translations strings.xml (Russian) 2021-02-24 00:03:57 +00:00
X1nto 7c72632f73 updated deps 2021-02-23 20:00:07 +04:00
X1nto ab3014d5af replaced any() with contains() 2021-02-23 19:34:48 +04:00
X1nto b32ebe51a0 bumped up version and updated language getter 2021-02-23 19:33:23 +04:00
X1nto e9ff1bfd9d prevent screen from sleeping when installation dialog is visible 2021-02-23 19:27:06 +04:00
KevinX8 42d1c1ec3a New translations strings.xml (Chinese Traditional) 2021-02-23 12:02:10 +00:00
KevinX8 4107464c48 New translations strings.xml (Romanian) 2021-02-23 12:02:09 +00:00
KevinX8 5ee365cffb New translations strings.xml (Indonesian) 2021-02-23 12:02:07 +00:00
KevinX8 208def0baa New translations strings.xml (Punjabi, Pakistan) 2021-02-22 23:37:12 +00:00
KevinX8 46378af4c9 New translations strings.xml (Somali) 2021-02-22 23:37:10 +00:00
KevinX8 1bb2c0de93 New translations strings.xml (Bulgarian) 2021-02-22 23:37:09 +00:00
KevinX8 99674b38c5 New translations strings.xml (Danish) 2021-02-22 23:37:08 +00:00
KevinX8 2c8e69bbf0 New translations strings.xml (Czech) 2021-02-22 23:37:07 +00:00
KevinX8 6c1dd9ecab New translations strings.xml (Catalan) 2021-02-22 23:37:06 +00:00
KevinX8 e99bd102e4 New translations strings.xml (Arabic) 2021-02-22 23:37:04 +00:00
KevinX8 60d01d4c49 New translations strings.xml (Afrikaans) 2021-02-22 23:37:03 +00:00
KevinX8 a712853d8c New translations strings.xml (French) 2021-02-22 23:37:02 +00:00
KevinX8 430cafbaf6 New translations strings.xml (Chinese Simplified) 2021-02-22 23:37:00 +00:00
KevinX8 af8922bb82 New translations strings.xml (Romanian) 2021-02-22 23:36:59 +00:00
KevinX8 22d6d1e84a New translations strings.xml (Hindi) 2021-02-22 23:36:58 +00:00
KevinX8 922fbbc96e New translations strings.xml (Sorani (Kurdish)) 2021-02-22 23:36:56 +00:00
KevinX8 3e588fa75e New translations strings.xml (Filipino) 2021-02-22 23:36:55 +00:00
KevinX8 a11faf346b New translations strings.xml (Azerbaijani) 2021-02-22 23:36:53 +00:00
KevinX8 08be8526eb New translations strings.xml (Croatian) 2021-02-22 23:36:52 +00:00
KevinX8 943e5256f4 New translations strings.xml (Ukrainian) 2021-02-22 23:36:51 +00:00
KevinX8 e2ef42a8fb New translations strings.xml (Korean) 2021-02-22 23:36:50 +00:00
KevinX8 1fb3a79d06 New translations strings.xml (Hungarian) 2021-02-22 23:36:49 +00:00
KevinX8 5f4afe9dd1 New translations strings.xml (Greek) 2021-02-22 23:36:47 +00:00
KevinX8 630e27d170 New translations strings.xml (Indonesian) 2021-02-22 23:36:45 +00:00
KevinX8 f9b6fb9831 New translations strings.xml (Spanish) 2021-02-22 23:36:44 +00:00
KevinX8 880d6f4f3f New translations strings.xml (Malayalam) 2021-02-22 23:36:42 +00:00
KevinX8 2d58e20e85 New translations strings.xml (Thai) 2021-02-22 23:36:41 +00:00
KevinX8 6604be1698 New translations strings.xml (German) 2021-02-22 23:36:40 +00:00
KevinX8 89093222dc New translations strings.xml (Finnish) 2021-02-22 23:36:39 +00:00
KevinX8 81d1b30b9e New translations strings.xml (Hebrew) 2021-02-22 23:36:37 +00:00
KevinX8 e664ae6a57 New translations strings.xml (Italian) 2021-02-22 23:36:36 +00:00
KevinX8 c4d886bde3 New translations strings.xml (Pashto) 2021-02-22 23:36:35 +00:00
KevinX8 b5ce1f14ff New translations strings.xml (Kurmanji (Kurdish)) 2021-02-22 23:36:34 +00:00
KevinX8 b6df68a5ff New translations strings.xml (Bengali, India) 2021-02-22 23:36:33 +00:00
KevinX8 4c181d743f New translations strings.xml (Sinhala) 2021-02-22 23:36:32 +00:00
KevinX8 167f3ce1aa New translations strings.xml (Estonian) 2021-02-22 23:36:30 +00:00
KevinX8 6d530b48a7 New translations strings.xml (Marathi) 2021-02-22 23:36:29 +00:00
KevinX8 f97325fd6a New translations strings.xml (Bengali) 2021-02-22 23:36:27 +00:00
KevinX8 257a14104e New translations strings.xml (Tamil) 2021-02-22 23:36:26 +00:00
KevinX8 d00699bde9 New translations strings.xml (Portuguese, Brazilian) 2021-02-22 23:36:25 +00:00
KevinX8 1b25daed4b New translations strings.xml (Vietnamese) 2021-02-22 23:36:23 +00:00
KevinX8 7616582094 New translations strings.xml (Japanese) 2021-02-22 23:36:22 +00:00
KevinX8 dde4d24e9b New translations strings.xml (Chinese Traditional) 2021-02-22 23:36:21 +00:00
KevinX8 30fbb53395 New translations strings.xml (Serbian (Cyrillic)) 2021-02-22 23:36:20 +00:00
KevinX8 6543ac47e3 New translations strings.xml (Russian) 2021-02-22 23:36:19 +00:00
KevinX8 0ec97c10a8 New translations strings.xml (Portuguese) 2021-02-22 23:36:17 +00:00
KevinX8 fdabeb75c4 New translations strings.xml (Polish) 2021-02-22 23:36:16 +00:00
KevinX8 416738a8a8 New translations strings.xml (Punjabi) 2021-02-22 23:36:14 +00:00
KevinX8 5f08cf0759 New translations strings.xml (Norwegian) 2021-02-22 23:36:13 +00:00
KevinX8 15e11254fd New translations strings.xml (Dutch) 2021-02-22 23:36:12 +00:00
KevinX8 388880395e New translations strings.xml (Kurdish) 2021-02-22 23:36:10 +00:00
KevinX8 4ba33c8482 New translations strings.xml (Georgian) 2021-02-22 23:36:09 +00:00
KevinX8 3ea4059d00 New translations strings.xml (Swedish) 2021-02-22 23:36:08 +00:00
KevinX8 5dce2f5073 New translations strings.xml (Turkish) 2021-02-22 23:36:06 +00:00
X1nto 64fd410d43 minor adjustments to root split installer 2021-02-22 20:41:34 +04:00
X1nto 18b79aace8 removed gradient from sponsor buttons 2021-02-22 20:27:48 +04:00
X1nto 98f07cdf50 removed -S parameter from root installer 2021-02-22 20:22:51 +04:00
X1nto dced053569 more logging 2021-02-22 20:00:11 +04:00
X1nto ac076f5035 updated strings 2021-02-22 15:52:43 +04:00
X1nto c783de1d74 removed su -c from install-write 2021-02-22 15:34:55 +04:00
X1nto 979e1da8f7 updated mount script 2021-02-22 15:34:14 +04:00
KevinX8 dcaaa04796 New translations strings.xml (Vietnamese) 2021-02-21 07:41:43 +00:00
KevinX8 5ddfcec174 New translations strings.xml (Japanese) 2021-02-21 07:41:40 +00:00
KevinX8 598d75dc88 New translations strings.xml (Russian) 2021-02-20 19:44:12 +00:00
KevinX8 01cd25d8b2 New translations strings.xml (French) 2021-02-20 19:44:10 +00:00
KevinX8 a53e4a1c83 New translations strings.xml (Turkish) 2021-02-20 19:44:09 +00:00
X1nto 494ea8b6a2 darkened surface color a little bit 2021-02-20 17:37:07 +04:00
X1nto a283097491 logging adjustments 2021-02-20 14:45:48 +04:00
X1nto 95bb60981b rewrite root split installer 2021-02-20 14:25:41 +04:00
KevinX8 935c656520 New translations strings.xml (Chinese Simplified) 2021-02-19 19:18:53 +00:00
X1nto 7acb40234b added jetpack compose testing samples; migrating after AS Arctic Fox releases 2021-02-19 17:51:34 +04:00
KevinX8 eb17a0d6f6 New translations strings.xml (Chinese Traditional) 2021-02-19 07:20:31 +00:00
KevinX8 b7d72bd2e3 New translations strings.xml (Finnish) 2021-02-19 07:20:29 +00:00
KevinX8 28539c7466 New translations strings.xml (Indonesian) 2021-02-19 07:20:28 +00:00
KevinX8 9297023201 New translations strings.xml (Spanish) 2021-02-19 07:20:27 +00:00
KevinX8 557cf8a934 New translations strings.xml (Thai) 2021-02-19 07:20:25 +00:00
KevinX8 4ab533bf7e New translations strings.xml (Hindi) 2021-02-18 19:13:41 +00:00
KevinX8 bbee245d96 New translations strings.xml (Croatian) 2021-02-18 19:13:39 +00:00
KevinX8 91167f1a28 New translations strings.xml (Ukrainian) 2021-02-18 19:13:38 +00:00
KevinX8 93b5e1b3a4 New translations strings.xml (Indonesian) 2021-02-18 07:01:05 +00:00
X1nto ae1d5691ac implemented a better way to animate welcome activity 2021-02-17 23:00:35 +04:00
KevinX8 87eeeaf65f New translations strings.xml (Swedish) 2021-02-17 18:52:55 +00:00
KevinX8 ccd3d6b71c New translations strings.xml (German) 2021-02-17 18:52:53 +00:00
X1nto 8c4b8332e8 improved AppListAdapter 2021-02-17 21:00:39 +04:00
KevinX8 a4e5c008ec New translations strings.xml (Bulgarian) 2021-02-17 06:49:24 +00:00
KevinX8 ad907a6565 New translations strings.xml (Afrikaans) 2021-02-17 06:49:23 +00:00
KevinX8 c5991a8456 New translations strings.xml (French) 2021-02-17 06:49:22 +00:00
KevinX8 31b36dec76 New translations strings.xml (Chinese Simplified) 2021-02-17 06:49:20 +00:00
KevinX8 42f2908dc1 New translations strings.xml (Romanian) 2021-02-17 06:49:19 +00:00
KevinX8 479d3025e5 New translations strings.xml (Hindi) 2021-02-17 06:49:18 +00:00
KevinX8 0d7ca349c6 New translations strings.xml (Sorani (Kurdish)) 2021-02-17 06:49:16 +00:00
KevinX8 44ee4a6112 New translations strings.xml (Filipino) 2021-02-17 06:49:15 +00:00
KevinX8 e6c7a23cfd New translations strings.xml (Arabic) 2021-02-17 06:49:14 +00:00
KevinX8 71daba634e New translations strings.xml (Azerbaijani) 2021-02-17 06:49:13 +00:00
KevinX8 581cb0c551 New translations strings.xml (Ukrainian) 2021-02-17 06:49:11 +00:00
KevinX8 629e2e5200 New translations strings.xml (Korean) 2021-02-17 06:49:10 +00:00
KevinX8 043c890bf3 New translations strings.xml (Hungarian) 2021-02-17 06:49:09 +00:00
KevinX8 38ad763613 New translations strings.xml (Greek) 2021-02-17 06:49:08 +00:00
KevinX8 2b46f8c3b8 New translations strings.xml (Indonesian) 2021-02-17 06:49:06 +00:00
KevinX8 231916f0a7 New translations strings.xml (Spanish) 2021-02-17 06:49:05 +00:00
KevinX8 37cedd74a9 New translations strings.xml (Malayalam) 2021-02-17 06:49:04 +00:00
KevinX8 438ddffc85 New translations strings.xml (Croatian) 2021-02-17 06:49:03 +00:00
KevinX8 bd97270626 New translations strings.xml (Thai) 2021-02-17 06:49:02 +00:00
KevinX8 00d4c42a57 New translations strings.xml (Catalan) 2021-02-17 06:49:00 +00:00
KevinX8 fb57354a3a New translations strings.xml (Danish) 2021-02-17 06:48:59 +00:00
KevinX8 9c9c93c0ee New translations strings.xml (Punjabi, Pakistan) 2021-02-17 06:48:58 +00:00
KevinX8 835e6c4611 New translations strings.xml (Somali) 2021-02-17 06:48:57 +00:00
KevinX8 073caa4469 New translations strings.xml (Pashto) 2021-02-17 06:48:56 +00:00
KevinX8 b4b950e5e4 New translations strings.xml (Kurmanji (Kurdish)) 2021-02-17 06:48:54 +00:00
KevinX8 bda401bd93 New translations strings.xml (Bengali, India) 2021-02-17 06:48:53 +00:00
KevinX8 2136d21af9 New translations strings.xml (Sinhala) 2021-02-17 06:48:52 +00:00
KevinX8 5f87eb936a New translations strings.xml (Estonian) 2021-02-17 06:48:51 +00:00
KevinX8 8f97203cb4 New translations strings.xml (Czech) 2021-02-17 06:48:49 +00:00
KevinX8 fcae09c41a New translations strings.xml (Marathi) 2021-02-17 06:48:48 +00:00
KevinX8 dba3824cbc New translations strings.xml (Tamil) 2021-02-17 06:48:47 +00:00
KevinX8 b0d194724c New translations strings.xml (Polish) 2021-02-17 06:48:46 +00:00
KevinX8 fd9a4990e1 New translations strings.xml (Georgian) 2021-02-17 06:48:45 +00:00
KevinX8 7656af8d45 New translations strings.xml (Italian) 2021-02-17 06:48:44 +00:00
KevinX8 3a5db1f7ef New translations strings.xml (Hebrew) 2021-02-17 06:48:43 +00:00
KevinX8 ee8d17a40b New translations strings.xml (Finnish) 2021-02-17 06:48:39 +00:00
KevinX8 6e7c64d7d4 New translations strings.xml (German) 2021-02-17 06:48:38 +00:00
KevinX8 73d7d9e679 New translations strings.xml (Bengali) 2021-02-17 06:48:37 +00:00
KevinX8 4cc4744a3c New translations strings.xml (Japanese) 2021-02-17 06:48:35 +00:00
KevinX8 54b90237fd New translations strings.xml (Chinese Traditional) 2021-02-16 18:49:02 +00:00
KevinX8 8d2b55aad9 New translations strings.xml (Swedish) 2021-02-16 18:49:01 +00:00
KevinX8 54103c28d1 New translations strings.xml (Serbian (Cyrillic)) 2021-02-16 18:48:59 +00:00
KevinX8 84005a7f85 New translations strings.xml (Russian) 2021-02-16 18:48:58 +00:00
KevinX8 52a8581f50 New translations strings.xml (Portuguese) 2021-02-16 18:48:57 +00:00
KevinX8 c19ffdac1b New translations strings.xml (Polish) 2021-02-16 18:48:56 +00:00
KevinX8 9a0313d450 New translations strings.xml (Punjabi) 2021-02-16 18:48:54 +00:00
KevinX8 b4690d97b2 New translations strings.xml (Norwegian) 2021-02-16 18:48:53 +00:00
KevinX8 9dfa8b774a New translations strings.xml (Dutch) 2021-02-16 18:48:52 +00:00
KevinX8 abfabe10f2 New translations strings.xml (Kurdish) 2021-02-16 18:48:50 +00:00
KevinX8 d0c9329a6a New translations strings.xml (Vietnamese) 2021-02-16 18:48:49 +00:00
KevinX8 f99cb1136a New translations strings.xml (Turkish) 2021-02-16 18:48:48 +00:00
X1nto 537e76499a added another way to check if miui optimizations are enabled 2021-02-16 19:30:24 +04:00
X1nto 597d7a7a4e Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2021-02-16 18:41:17 +04:00
X1nto cb97aa2fe1 reverted MIUI warning system 2021-02-16 18:41:06 +04:00
KevinX8 66184450ea
Merge branch 'master' into dev 2021-02-16 13:31:07 +00:00
KevinX8 f1a43970b6
Merge pull request #408 from YTVanced/l10n_dev
New Crowdin updates
2021-02-16 13:20:36 +00:00
KevinX8 af9524fb2e bumped deps 2021-02-16 12:50:33 +00:00
X1nto 26bf0a90d7 improved MIUI warning 2021-02-16 15:00:36 +04:00
X1nto d0e765fa39 moved progressmodel out of class 2021-02-16 12:26:40 +04:00
KevinX8 fbc5c6eec0 New translations strings.xml (Bulgarian) 2021-02-16 06:51:23 +00:00
KevinX8 6f4516f439 New translations strings.xml (Portuguese, Brazilian) 2021-02-16 06:51:21 +00:00
KevinX8 ba61a9409a New translations strings.xml (Chinese Traditional) 2021-02-16 06:51:20 +00:00
KevinX8 4dd5e9f66d New translations strings.xml (Italian) 2021-02-16 06:51:18 +00:00
KevinX8 15eabf37fb New translations strings.xml (French) 2021-02-16 06:51:17 +00:00
KevinX8 b5803994c6 New translations strings.xml (Croatian) 2021-02-16 06:51:15 +00:00
KevinX8 ca19201899 New translations strings.xml (Korean) 2021-02-16 06:51:14 +00:00
KevinX8 d61937a41b New translations strings.xml (Greek) 2021-02-16 06:51:13 +00:00
KevinX8 150eb5bbf3 New translations strings.xml (Indonesian) 2021-02-16 06:51:11 +00:00
KevinX8 2bfef3bdf7 New translations strings.xml (Turkish) 2021-02-16 06:51:10 +00:00
KevinX8 3b11865f3b New translations strings.xml (Bulgarian) 2021-02-15 18:50:04 +00:00
KevinX8 c1fd1d945e New translations strings.xml (German) 2021-02-15 18:50:02 +00:00
KevinX8 c5de17d34c New translations strings.xml (Danish) 2021-02-15 18:50:01 +00:00
KevinX8 6ddd3cee9e New translations strings.xml (Czech) 2021-02-15 18:49:59 +00:00
KevinX8 03a69cfd9c New translations strings.xml (Catalan) 2021-02-15 18:49:58 +00:00
KevinX8 564e9b13b9 New translations strings.xml (Arabic) 2021-02-15 18:49:57 +00:00
KevinX8 eac1cfeecd New translations strings.xml (Afrikaans) 2021-02-15 18:49:56 +00:00
KevinX8 e95abb8383 New translations strings.xml (French) 2021-02-15 18:49:55 +00:00
KevinX8 814dd399e9 New translations strings.xml (Chinese Simplified) 2021-02-15 18:49:54 +00:00
KevinX8 1b86674735 New translations strings.xml (Romanian) 2021-02-15 18:49:52 +00:00
KevinX8 805ff46048 New translations strings.xml (Hindi) 2021-02-15 18:49:51 +00:00
KevinX8 c0af27ec93 New translations strings.xml (Finnish) 2021-02-15 18:49:50 +00:00
KevinX8 ce2687b772 New translations strings.xml (Sorani (Kurdish)) 2021-02-15 18:49:49 +00:00
KevinX8 69accb784d New translations strings.xml (Azerbaijani) 2021-02-15 18:49:47 +00:00
KevinX8 05c0b01eb7 New translations strings.xml (Croatian) 2021-02-15 18:49:46 +00:00
KevinX8 c1c5458aaa New translations strings.xml (Ukrainian) 2021-02-15 18:49:45 +00:00
KevinX8 79f0a44bee New translations strings.xml (Korean) 2021-02-15 18:49:44 +00:00
KevinX8 e23e72f845 New translations strings.xml (Hungarian) 2021-02-15 18:49:43 +00:00
KevinX8 5f325789cd New translations strings.xml (Greek) 2021-02-15 18:49:42 +00:00
KevinX8 5bf881cd2a New translations strings.xml (Indonesian) 2021-02-15 18:49:40 +00:00
KevinX8 95db340034 New translations strings.xml (Spanish) 2021-02-15 18:49:39 +00:00
KevinX8 8ffe5a7389 New translations strings.xml (Malayalam) 2021-02-15 18:49:38 +00:00
KevinX8 09825992b5 New translations strings.xml (Thai) 2021-02-15 18:49:37 +00:00
KevinX8 9fe527de6b New translations strings.xml (Filipino) 2021-02-15 18:49:35 +00:00
KevinX8 bb6812c4df New translations strings.xml (Japanese) 2021-02-15 18:49:34 +00:00
KevinX8 4b9287a11c New translations strings.xml (Hebrew) 2021-02-15 18:49:33 +00:00
KevinX8 2cb4578316 New translations strings.xml (Georgian) 2021-02-15 18:49:32 +00:00
KevinX8 70c2ecfb31 New translations strings.xml (Punjabi, Pakistan) 2021-02-15 18:49:31 +00:00
KevinX8 3c7ecd155d New translations strings.xml (Somali) 2021-02-15 18:49:29 +00:00
KevinX8 bdce53e44b New translations strings.xml (Pashto) 2021-02-15 18:49:28 +00:00
KevinX8 6d4adc8ef4 New translations strings.xml (Kurmanji (Kurdish)) 2021-02-15 18:49:27 +00:00
KevinX8 067aa25606 New translations strings.xml (Bengali, India) 2021-02-15 18:49:26 +00:00
KevinX8 eab6a83edc New translations strings.xml (Sinhala) 2021-02-15 18:49:24 +00:00
KevinX8 45291c0f37 New translations strings.xml (Estonian) 2021-02-15 18:49:23 +00:00
KevinX8 35c52e9cdb New translations strings.xml (Marathi) 2021-02-15 18:49:22 +00:00
KevinX8 b69b4df687 New translations strings.xml (Bengali) 2021-02-15 18:49:21 +00:00
KevinX8 8e553ab669 New translations strings.xml (Tamil) 2021-02-15 18:49:20 +00:00
KevinX8 a3c7a1dce7 New translations strings.xml (Italian) 2021-02-15 18:49:18 +00:00
KevinX8 260c032fe0 New translations strings.xml (Portuguese, Brazilian) 2021-02-15 18:49:17 +00:00
KevinX8 7e58bcd30d New translations strings.xml (Chinese Traditional) 2021-02-15 18:49:16 +00:00
KevinX8 d33d9c8077 New translations strings.xml (Swedish) 2021-02-15 18:49:14 +00:00
KevinX8 b309f36c29 New translations strings.xml (Serbian (Cyrillic)) 2021-02-15 18:49:13 +00:00
KevinX8 65c807a878 New translations strings.xml (Russian) 2021-02-15 18:49:12 +00:00
KevinX8 b8560b210e New translations strings.xml (Portuguese) 2021-02-15 18:49:10 +00:00
KevinX8 37417fe6b4 New translations strings.xml (Polish) 2021-02-15 18:49:09 +00:00
KevinX8 0d3c06b558 New translations strings.xml (Punjabi) 2021-02-15 18:49:08 +00:00
KevinX8 199e6e9517 New translations strings.xml (Norwegian) 2021-02-15 18:49:07 +00:00
KevinX8 f63dacbd1e New translations strings.xml (Dutch) 2021-02-15 18:49:05 +00:00
KevinX8 bb6ec588ef New translations strings.xml (Kurdish) 2021-02-15 18:49:04 +00:00
KevinX8 a650d75a73 New translations strings.xml (Vietnamese) 2021-02-15 18:49:03 +00:00
KevinX8 a3eb10f5a4 New translations strings.xml (Turkish) 2021-02-15 18:49:01 +00:00
X1nto ab5f5182b1 updated about fragment padding in order to match other fragments 2021-02-15 22:30:44 +04:00
X1nto ae72720d42 updated about menu 2021-02-15 22:28:34 +04:00
X1nto 1769d86a88 removed empty git file 2021-02-15 21:42:42 +04:00
X1nto 15b259d853 fixed NPE 2021-02-15 20:02:13 +04:00
X1nto cb38dedb11 removed downloadProgress from livedata 2021-02-15 19:49:01 +04:00
X1nto 62b540b95c removed logging 2021-02-15 19:34:52 +04:00
X1nto b6c01333b0 theming fixes 2021-02-15 19:29:36 +04:00
X1nto 0c2b9805e4 added a separate brave image for light theme 2021-02-15 19:21:26 +04:00
X1nto 0cff9f51b5 updated issue template 2021-02-15 19:12:42 +04:00
X1nto 7d75990f30 bumped up version 2021-02-15 17:19:51 +04:00
KevinX8 ee608c72ae New translations strings.xml (Sorani (Kurdish)) 2021-02-15 06:39:28 +00:00
KevinX8 6ddd67a8d7 New translations strings.xml (Indonesian) 2021-02-15 06:39:27 +00:00
KevinX8 66a1b10e00 New translations strings.xml (Swedish) 2021-02-14 18:23:31 +00:00
X1nto c9245122f5 added an outline to sponsor buttons 2021-02-14 16:54:44 +04:00
X1nto dfbb623102 replaced deprecated method 2021-02-14 13:58:10 +04:00
X1nto dc0a66c700 prevent activity recreation on screen rotate 2021-02-14 13:57:48 +04:00
KevinX8 55e1d41f25 New translations strings.xml (Vietnamese) 2021-02-14 06:12:21 +00:00
KevinX8 da9ecb08a6 New translations strings.xml (German) 2021-02-14 06:12:20 +00:00
KevinX8 6a4b68e491 New translations strings.xml (Chinese Simplified) 2021-02-14 06:12:18 +00:00
KevinX8 07b2acf237 New translations strings.xml (Romanian) 2021-02-14 06:12:17 +00:00
KevinX8 089e54426c New translations strings.xml (Indonesian) 2021-02-14 06:12:16 +00:00
KevinX8 ac611373aa New translations strings.xml (Bulgarian) 2021-02-13 18:13:09 +00:00
KevinX8 e37561ad39 New translations strings.xml (German) 2021-02-13 18:13:08 +00:00
KevinX8 34df7b156e New translations strings.xml (Danish) 2021-02-13 18:13:07 +00:00
KevinX8 ed61fd1c1a New translations strings.xml (Czech) 2021-02-13 18:13:06 +00:00
KevinX8 3aad0c2f90 New translations strings.xml (Catalan) 2021-02-13 18:13:05 +00:00
KevinX8 0d0cca6eaf New translations strings.xml (Arabic) 2021-02-13 18:13:04 +00:00
KevinX8 419cbd7319 New translations strings.xml (Afrikaans) 2021-02-13 18:13:03 +00:00
KevinX8 3e5bb35342 New translations strings.xml (French) 2021-02-13 18:13:02 +00:00
KevinX8 28aa185a73 New translations strings.xml (Chinese Simplified) 2021-02-13 18:13:00 +00:00
KevinX8 0f5b5c6d53 New translations strings.xml (Romanian) 2021-02-13 18:12:59 +00:00
KevinX8 b1a0b1db87 New translations strings.xml (Hindi) 2021-02-13 18:12:58 +00:00
KevinX8 4d9bc88ada New translations strings.xml (Finnish) 2021-02-13 18:12:57 +00:00
KevinX8 672113248a New translations strings.xml (Sorani (Kurdish)) 2021-02-13 18:12:56 +00:00
KevinX8 2441fd4834 New translations strings.xml (Azerbaijani) 2021-02-13 18:12:55 +00:00
KevinX8 8569bb3af4 New translations strings.xml (Croatian) 2021-02-13 18:12:54 +00:00
KevinX8 ee1bd06249 New translations strings.xml (Ukrainian) 2021-02-13 18:12:53 +00:00
KevinX8 7fe8445162 New translations strings.xml (Korean) 2021-02-13 18:12:52 +00:00
KevinX8 18cb0cd504 New translations strings.xml (Hungarian) 2021-02-13 18:12:51 +00:00
KevinX8 414a7fa819 New translations strings.xml (Greek) 2021-02-13 18:12:49 +00:00
KevinX8 8baccc0909 New translations strings.xml (Indonesian) 2021-02-13 18:12:48 +00:00
KevinX8 34c8ed2f6b New translations strings.xml (Spanish) 2021-02-13 18:12:47 +00:00
KevinX8 0ea2c6881d New translations strings.xml (Malayalam) 2021-02-13 18:12:46 +00:00
KevinX8 ca2ef94978 New translations strings.xml (Thai) 2021-02-13 18:12:45 +00:00
KevinX8 30c39210cf New translations strings.xml (Filipino) 2021-02-13 18:12:44 +00:00
KevinX8 811fd789c7 New translations strings.xml (Japanese) 2021-02-13 18:12:43 +00:00
KevinX8 80c33a2d26 New translations strings.xml (Hebrew) 2021-02-13 18:12:41 +00:00
KevinX8 eeed6624de New translations strings.xml (Georgian) 2021-02-13 18:12:40 +00:00
KevinX8 0575f2ecbd New translations strings.xml (Punjabi, Pakistan) 2021-02-13 18:12:39 +00:00
KevinX8 01bc70c1c7 New translations strings.xml (Somali) 2021-02-13 18:12:38 +00:00
KevinX8 bffcd4000d New translations strings.xml (Pashto) 2021-02-13 18:12:37 +00:00
KevinX8 79864e3d53 New translations strings.xml (Kurmanji (Kurdish)) 2021-02-13 18:12:36 +00:00
KevinX8 bd231022c6 New translations strings.xml (Bengali, India) 2021-02-13 18:12:35 +00:00
KevinX8 6587359cfb New translations strings.xml (Sinhala) 2021-02-13 18:12:34 +00:00
KevinX8 5cb1564362 New translations strings.xml (Estonian) 2021-02-13 18:12:32 +00:00
KevinX8 703a669261 New translations strings.xml (Marathi) 2021-02-13 18:12:31 +00:00
KevinX8 16246aa51f New translations strings.xml (Bengali) 2021-02-13 18:12:30 +00:00
KevinX8 9df77a8ef7 New translations strings.xml (Tamil) 2021-02-13 18:12:29 +00:00
KevinX8 813d9682e0 New translations strings.xml (Italian) 2021-02-13 18:12:28 +00:00
KevinX8 69f50e5d58 New translations strings.xml (Portuguese, Brazilian) 2021-02-13 18:12:27 +00:00
KevinX8 e218441710 New translations strings.xml (Chinese Traditional) 2021-02-13 18:12:26 +00:00
KevinX8 446fa9092c New translations strings.xml (Swedish) 2021-02-13 18:12:25 +00:00
KevinX8 425622bf5e New translations strings.xml (Serbian (Cyrillic)) 2021-02-13 18:12:24 +00:00
KevinX8 ef234f2529 New translations strings.xml (Russian) 2021-02-13 18:12:22 +00:00
KevinX8 df594df1fe New translations strings.xml (Portuguese) 2021-02-13 18:12:21 +00:00
KevinX8 c0ab5f0279 New translations strings.xml (Polish) 2021-02-13 18:12:20 +00:00
KevinX8 fa664dd056 New translations strings.xml (Punjabi) 2021-02-13 18:12:19 +00:00
KevinX8 4e08e39c4c New translations strings.xml (Norwegian) 2021-02-13 18:12:18 +00:00
KevinX8 0a00a81d70 New translations strings.xml (Kurdish) 2021-02-13 18:12:16 +00:00
KevinX8 7829916289 New translations strings.xml (Vietnamese) 2021-02-13 18:12:15 +00:00
X1nto f6790ff22c cleanup 2021-02-13 17:36:50 +04:00
X1nto 4aae6e0c81 string adjustments 2021-02-13 17:34:28 +04:00
X1nto 238943af62 clickable boundary adjustments 2021-02-13 17:31:09 +04:00
X1nto 4efaaed304 rewrite nonroot split installer and clean up PackageHelper 2021-02-13 17:10:57 +04:00
X1nto 3896e7daad bumped up dependencies 2021-02-13 15:03:47 +04:00
KevinX8 c08636c505 New translations strings.xml (Malayalam) 2021-02-13 06:12:32 +00:00
KevinX8 ca2a89aa1d New translations strings.xml (Japanese) 2021-02-13 06:12:30 +00:00
KevinX8 e406d75200 New translations strings.xml (Romanian) 2021-02-12 18:17:10 +00:00
KevinX8 68ef2d4e61 New translations strings.xml (Indonesian) 2021-02-11 18:11:46 +00:00
KevinX8 3bfa8a6c01 New translations strings.xml (German) 2021-02-10 18:11:13 +00:00
KevinX8 33e7e8cf4f New translations strings.xml (Bulgarian) 2021-02-09 18:09:29 +00:00
KevinX8 587c1a1a4a New translations strings.xml (Croatian) 2021-02-09 18:09:28 +00:00
KevinX8 0f938c33c6 New translations strings.xml (Finnish) 2021-02-09 05:56:24 +00:00
KevinX8 56ea23df97 New translations strings.xml (German) 2021-02-09 05:56:23 +00:00
KevinX8 c07ac96fca New translations strings.xml (Thai) 2021-02-09 05:56:21 +00:00
KevinX8 6fed5fadd0 New translations strings.xml (Chinese Traditional) 2021-02-08 17:52:53 +00:00
KevinX8 0e85fa8e85 New translations strings.xml (Chinese Simplified) 2021-02-08 05:54:51 +00:00
KevinX8 195fe4d17c New translations strings.xml (Japanese) 2021-02-08 05:54:50 +00:00
KevinX8 c894a92aab New translations strings.xml (Bulgarian) 2021-02-07 17:51:06 +00:00
KevinX8 b3328bd34a New translations strings.xml (Portuguese, Brazilian) 2021-02-07 17:51:04 +00:00
KevinX8 bcfd1de35b New translations strings.xml (Czech) 2021-02-07 17:51:02 +00:00
KevinX8 581df0873d New translations strings.xml (Filipino) 2021-02-07 17:51:00 +00:00
KevinX8 d028ca9953 New translations strings.xml (Croatian) 2021-02-07 17:50:59 +00:00
X1nto e0f672acec improved logging 2021-02-07 14:12:54 +04:00
X1nto 284a6c07a8 made logs readable on light theme 2021-02-07 14:08:55 +04:00
KevinX8 baeb657ebf New translations strings.xml (Polish) 2021-02-07 05:52:53 +00:00
KevinX8 74dcd98d7b New translations strings.xml (Vietnamese) 2021-02-06 17:42:49 +00:00
KevinX8 2830aebc83 New translations strings.xml (Spanish) 2021-02-06 17:42:46 +00:00
KevinX8 2fec062f42 New translations strings.xml (Bulgarian) 2021-02-06 05:44:35 +00:00
KevinX8 1ef4afc2ba New translations strings.xml (Vietnamese) 2021-02-06 05:44:34 +00:00
KevinX8 b8d1553bb6 New translations strings.xml (Italian) 2021-02-06 05:44:32 +00:00
KevinX8 b5f0c46711 New translations strings.xml (Hungarian) 2021-02-06 05:44:29 +00:00
KevinX8 a8878aed9f New translations strings.xml (Greek) 2021-02-06 05:44:28 +00:00
KevinX8 65ad9d12db New translations strings.xml (Spanish) 2021-02-06 05:44:26 +00:00
KevinX8 c9c08baffa New translations strings.xml (Bulgarian) 2021-02-05 17:49:10 +00:00
KevinX8 9f6bf97fe6 New translations strings.xml (German) 2021-02-05 17:49:08 +00:00
KevinX8 e776ad35e7 New translations strings.xml (Danish) 2021-02-05 17:49:07 +00:00
KevinX8 d4fe9c4c5a New translations strings.xml (Czech) 2021-02-05 17:49:05 +00:00
KevinX8 eb690d4229 New translations strings.xml (Catalan) 2021-02-05 17:49:03 +00:00
KevinX8 d5741b609d New translations strings.xml (Arabic) 2021-02-05 17:49:02 +00:00
KevinX8 4044771843 New translations strings.xml (Afrikaans) 2021-02-05 17:49:00 +00:00
KevinX8 6dcfc4c706 New translations strings.xml (French) 2021-02-05 17:48:58 +00:00
KevinX8 5b88baedab New translations strings.xml (Chinese Simplified) 2021-02-05 17:48:56 +00:00
KevinX8 89e2b498f7 New translations strings.xml (Romanian) 2021-02-05 17:48:54 +00:00
KevinX8 6c9e4a175d New translations strings.xml (Hindi) 2021-02-05 17:48:52 +00:00
KevinX8 9a8a329df2 New translations strings.xml (Finnish) 2021-02-05 17:48:50 +00:00
KevinX8 782e200020 New translations strings.xml (Sorani (Kurdish)) 2021-02-05 17:48:49 +00:00
KevinX8 554c53fcba New translations strings.xml (Azerbaijani) 2021-02-05 17:48:47 +00:00
KevinX8 75c4b48daf New translations strings.xml (Croatian) 2021-02-05 17:48:45 +00:00
KevinX8 60cc27570d New translations strings.xml (Ukrainian) 2021-02-05 17:48:43 +00:00
KevinX8 738da25881 New translations strings.xml (Korean) 2021-02-05 17:48:42 +00:00
KevinX8 8e99791721 New translations strings.xml (Hungarian) 2021-02-05 17:48:40 +00:00
KevinX8 5272c98289 New translations strings.xml (Greek) 2021-02-05 17:48:38 +00:00
KevinX8 4df1f39dad New translations strings.xml (Indonesian) 2021-02-05 17:48:36 +00:00
KevinX8 b022621108 New translations strings.xml (Spanish) 2021-02-05 17:48:34 +00:00
KevinX8 7d8915cb28 New translations strings.xml (Malayalam) 2021-02-05 17:48:32 +00:00
KevinX8 2aefce3aed New translations strings.xml (Thai) 2021-02-05 17:48:30 +00:00
KevinX8 3110e917a5 New translations strings.xml (Filipino) 2021-02-05 17:48:29 +00:00
KevinX8 a8768c5fc3 New translations strings.xml (Japanese) 2021-02-05 17:48:27 +00:00
KevinX8 2f5e5e2b21 New translations strings.xml (Hebrew) 2021-02-05 17:48:26 +00:00
KevinX8 fbf251f72e New translations strings.xml (Georgian) 2021-02-05 17:48:24 +00:00
KevinX8 fe2862d79a New translations strings.xml (Punjabi, Pakistan) 2021-02-05 17:48:22 +00:00
KevinX8 2849b2c4a6 New translations strings.xml (Somali) 2021-02-05 17:48:20 +00:00
KevinX8 4b5ff4a093 New translations strings.xml (Pashto) 2021-02-05 17:48:19 +00:00
KevinX8 5464b8f1cf New translations strings.xml (Kurmanji (Kurdish)) 2021-02-05 17:48:17 +00:00
KevinX8 c37f493cc8 New translations strings.xml (Bengali, India) 2021-02-05 17:48:15 +00:00
KevinX8 7517cbe14f New translations strings.xml (Sinhala) 2021-02-05 17:48:11 +00:00
KevinX8 a34af2edbd New translations strings.xml (Estonian) 2021-02-05 17:48:09 +00:00
KevinX8 d10a9b2fca New translations strings.xml (Marathi) 2021-02-05 17:48:08 +00:00
KevinX8 26cacd813d New translations strings.xml (Bengali) 2021-02-05 17:48:06 +00:00
KevinX8 cbfd0e54c4 New translations strings.xml (Tamil) 2021-02-05 17:48:05 +00:00
KevinX8 8318a4a819 New translations strings.xml (Italian) 2021-02-05 17:48:03 +00:00
KevinX8 1cd0e8e48d New translations strings.xml (Portuguese, Brazilian) 2021-02-05 17:48:02 +00:00
KevinX8 eb21e1dde5 New translations strings.xml (Chinese Traditional) 2021-02-05 17:48:00 +00:00
KevinX8 d170f44a88 New translations strings.xml (Swedish) 2021-02-05 17:47:57 +00:00
KevinX8 3d9cec54c2 New translations strings.xml (Serbian (Cyrillic)) 2021-02-05 17:47:55 +00:00
KevinX8 ad46571905 New translations strings.xml (Russian) 2021-02-05 17:47:53 +00:00
KevinX8 cddd9951f2 New translations strings.xml (Portuguese) 2021-02-05 17:47:52 +00:00
KevinX8 9e41333d22 New translations strings.xml (Polish) 2021-02-05 17:47:50 +00:00
KevinX8 aa2fcd1ff3 New translations strings.xml (Punjabi) 2021-02-05 17:47:48 +00:00
KevinX8 6e16620a8d New translations strings.xml (Norwegian) 2021-02-05 17:47:47 +00:00
KevinX8 d0c3dbca70 New translations strings.xml (Dutch) 2021-02-05 17:47:45 +00:00
KevinX8 508e7e3d70 New translations strings.xml (Kurdish) 2021-02-05 17:47:43 +00:00
KevinX8 edfdaeea3a New translations strings.xml (Vietnamese) 2021-02-05 17:47:41 +00:00
KevinX8 6780e34da0 New translations strings.xml (Turkish) 2021-02-05 17:47:40 +00:00
KevinX8 7f6d0b30fb
Merge pull request #406 from YTVanced/dev
Manager v2.4.0 release
2021-02-05 10:37:53 +00:00
X1nto e5a0050cb5 rollback 2021-02-05 14:19:44 +04:00
X1nto 2c7f040b21 refactored faq to guide 2021-02-05 14:17:15 +04:00
KevinX8 53c164e532
New Crowdin updates (#405)
* New translations strings.xml (Malayalam)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Croatian)

* New translations strings.xml (Chinese Traditional)

* New translations strings.xml (Tamil)
2021-02-05 10:06:12 +00:00
KevinX8 ece088b9b3 Merge remote-tracking branch 'origin/dev' into dev 2021-02-05 10:00:37 +00:00
KevinX8 bab9ab0a93 bump okhttp3 & coroutines to latest stable 2021-02-05 10:00:06 +00:00
X1nto 0abf89acbb removed useless variable 2021-02-05 13:57:48 +04:00
X1nto f99c20c1de cleanup 2021-02-05 13:34:43 +04:00
X1nto 63aeab827a rounded corners for accent color dialog 2021-02-05 13:32:43 +04:00
X1nto 930f37fa17 updated strings 2021-02-05 13:27:46 +04:00
X1nto 61eed341ff Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2021-02-05 13:07:29 +04:00
X1nto f087893557 fixed some background crashes 2021-02-05 13:07:05 +04:00
KevinX8 808327b697
New Crowdin updates (#394)
* New translations strings.xml (Thai)

* New translations strings.xml (Malayalam)

* New translations strings.xml (Spanish)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Greek)

* New translations strings.xml (Hungarian)

* New translations strings.xml (Korean)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Croatian)

* New translations strings.xml (Azerbaijani)

* New translations strings.xml (Sorani (Kurdish))

* New translations strings.xml (Finnish)

* New translations strings.xml (Hindi)

* New translations strings.xml (Romanian)

* New translations strings.xml (Chinese Simplified)

* New translations strings.xml (French)

* New translations strings.xml (Afrikaans)

* New translations strings.xml (Arabic)

* New translations strings.xml (Catalan)

* New translations strings.xml (Czech)

* New translations strings.xml (Danish)

* New translations strings.xml (German)

* New translations strings.xml (Punjabi, Pakistan)

* New translations strings.xml (Turkish)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Kurdish)

* New translations strings.xml (Dutch)

* New translations strings.xml (Norwegian)

* New translations strings.xml (Punjabi)

* New translations strings.xml (Polish)

* New translations strings.xml (Portuguese)

* New translations strings.xml (Russian)

* New translations strings.xml (Serbian (Cyrillic))

* New translations strings.xml (Swedish)

* New translations strings.xml (Chinese Traditional)

* New translations strings.xml (Portuguese, Brazilian)

* New translations strings.xml (Italian)

* New translations strings.xml (Tamil)

* New translations strings.xml (Bengali)

* New translations strings.xml (Marathi)

* New translations strings.xml (Estonian)

* New translations strings.xml (Sinhala)

* New translations strings.xml (Bengali, India)

* New translations strings.xml (Kurmanji (Kurdish))

* New translations strings.xml (Pashto)

* New translations strings.xml (Somali)

* New translations strings.xml (Punjabi, Pakistan)

* New translations strings.xml (Georgian)

* New translations strings.xml (Hebrew)

* New translations strings.xml (Japanese)

* New translations strings.xml (Filipino)

* New translations strings.xml (Thai)

* New translations strings.xml (Malayalam)

* New translations strings.xml (Spanish)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Greek)

* New translations strings.xml (Hungarian)

* New translations strings.xml (Korean)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Croatian)

* New translations strings.xml (Azerbaijani)

* New translations strings.xml (Sorani (Kurdish))

* New translations strings.xml (Finnish)

* New translations strings.xml (Hindi)

* New translations strings.xml (Romanian)

* New translations strings.xml (Chinese Simplified)

* New translations strings.xml (French)

* New translations strings.xml (Afrikaans)

* New translations strings.xml (Arabic)

* New translations strings.xml (Catalan)

* New translations strings.xml (Czech)

* New translations strings.xml (Danish)

* New translations strings.xml (German)

* New translations strings.xml (Bulgarian)

* New translations strings.xml (Turkish)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Kurdish)

* New translations strings.xml (Dutch)

* New translations strings.xml (Norwegian)

* New translations strings.xml (Punjabi)

* New translations strings.xml (Polish)

* New translations strings.xml (Portuguese)

* New translations strings.xml (Russian)

* New translations strings.xml (Serbian (Cyrillic))

* New translations strings.xml (Swedish)

* New translations strings.xml (Chinese Traditional)

* New translations strings.xml (Portuguese, Brazilian)

* New translations strings.xml (Italian)

* New translations strings.xml (Tamil)

* New translations strings.xml (Bengali)

* New translations strings.xml (Marathi)

* New translations strings.xml (Estonian)

* New translations strings.xml (Sinhala)

* New translations strings.xml (Bengali, India)

* New translations strings.xml (Kurmanji (Kurdish))

* New translations strings.xml (Pashto)

* New translations strings.xml (Somali)

* New translations strings.xml (Punjabi, Pakistan)

* New translations strings.xml (Georgian)

* New translations strings.xml (Hebrew)

* New translations strings.xml (Japanese)

* New translations strings.xml (Filipino)

* New translations strings.xml (Thai)

* New translations strings.xml (Malayalam)

* New translations strings.xml (Spanish)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Greek)

* New translations strings.xml (Hungarian)

* New translations strings.xml (Korean)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Croatian)

* New translations strings.xml (Azerbaijani)

* New translations strings.xml (Sorani (Kurdish))

* New translations strings.xml (Finnish)

* New translations strings.xml (Hindi)

* New translations strings.xml (Romanian)

* New translations strings.xml (Chinese Simplified)

* New translations strings.xml (French)

* New translations strings.xml (Afrikaans)

* New translations strings.xml (Arabic)

* New translations strings.xml (Catalan)

* New translations strings.xml (Czech)

* New translations strings.xml (Danish)

* New translations strings.xml (German)

* New translations strings.xml (Bulgarian)

* New translations strings.xml (Turkish)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Greek)

* New translations strings.xml (Hungarian)

* New translations strings.xml (Korean)

* New translations strings.xml (Arabic)

* New translations strings.xml (German)

* New translations strings.xml (Italian)

* New translations strings.xml (Polish)

* New translations strings.xml (Swedish)

* New translations strings.xml (Portuguese, Brazilian)

* New translations strings.xml (Bulgarian)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Danish)

* New translations strings.xml (Spanish)

* New translations strings.xml (Korean)

* New translations strings.xml (Croatian)

* New translations strings.xml (Hebrew)

* New translations strings.xml (Russian)

* New translations strings.xml (Turkish)

* New translations strings.xml (Greek)

* New translations strings.xml (Croatian)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Turkish)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Kurdish)

* New translations strings.xml (Dutch)

* New translations strings.xml (Norwegian)

* New translations strings.xml (Punjabi)

* New translations strings.xml (Polish)

* New translations strings.xml (Portuguese)

* New translations strings.xml (Russian)

* New translations strings.xml (Serbian (Cyrillic))

* New translations strings.xml (Swedish)

* New translations strings.xml (Chinese Traditional)

* New translations strings.xml (Portuguese, Brazilian)

* New translations strings.xml (Italian)

* New translations strings.xml (Tamil)

* New translations strings.xml (Bengali)

* New translations strings.xml (Marathi)

* New translations strings.xml (Estonian)

* New translations strings.xml (Sinhala)

* New translations strings.xml (Bengali, India)

* New translations strings.xml (Kurmanji (Kurdish))

* New translations strings.xml (Pashto)

* New translations strings.xml (Somali)

* New translations strings.xml (Punjabi, Pakistan)

* New translations strings.xml (Georgian)

* New translations strings.xml (Hebrew)

* New translations strings.xml (Japanese)

* New translations strings.xml (Filipino)

* New translations strings.xml (Thai)

* New translations strings.xml (Malayalam)

* New translations strings.xml (Spanish)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Greek)

* New translations strings.xml (Hungarian)

* New translations strings.xml (Korean)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Croatian)

* New translations strings.xml (Azerbaijani)

* New translations strings.xml (Sorani (Kurdish))

* New translations strings.xml (Finnish)

* New translations strings.xml (Hindi)

* New translations strings.xml (Romanian)

* New translations strings.xml (Chinese Simplified)

* New translations strings.xml (French)

* New translations strings.xml (Afrikaans)

* New translations strings.xml (Arabic)

* New translations strings.xml (Catalan)

* New translations strings.xml (Czech)

* New translations strings.xml (Danish)

* New translations strings.xml (German)

* New translations strings.xml (Bulgarian)

* New translations strings.xml (Turkish)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Kurdish)

* New translations strings.xml (Dutch)

* New translations strings.xml (Norwegian)

* New translations strings.xml (Punjabi)

* New translations strings.xml (Polish)

* New translations strings.xml (Portuguese)

* New translations strings.xml (Russian)

* New translations strings.xml (Serbian (Cyrillic))

* New translations strings.xml (Swedish)

* New translations strings.xml (Chinese Traditional)

* New translations strings.xml (Portuguese, Brazilian)

* New translations strings.xml (Italian)

* New translations strings.xml (Tamil)

* New translations strings.xml (Bengali)

* New translations strings.xml (Marathi)

* New translations strings.xml (Estonian)

* New translations strings.xml (Sinhala)

* New translations strings.xml (Bengali, India)

* New translations strings.xml (Kurmanji (Kurdish))

* New translations strings.xml (Pashto)

* New translations strings.xml (Somali)

* New translations strings.xml (Punjabi, Pakistan)

* New translations strings.xml (Georgian)

* New translations strings.xml (Hebrew)

* New translations strings.xml (Japanese)

* New translations strings.xml (Filipino)

* New translations strings.xml (Thai)

* New translations strings.xml (Malayalam)

* New translations strings.xml (Spanish)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Greek)

* New translations strings.xml (Hungarian)

* New translations strings.xml (Korean)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Croatian)

* New translations strings.xml (Azerbaijani)

* New translations strings.xml (Sorani (Kurdish))

* New translations strings.xml (Finnish)

* New translations strings.xml (Hindi)

* New translations strings.xml (Romanian)

* New translations strings.xml (Chinese Simplified)

* New translations strings.xml (French)

* New translations strings.xml (Afrikaans)

* New translations strings.xml (Arabic)

* New translations strings.xml (Catalan)

* New translations strings.xml (Czech)

* New translations strings.xml (Danish)

* New translations strings.xml (German)

* New translations strings.xml (Bulgarian)
2021-02-04 23:11:29 +00:00
Tornike Khintibidze 0519cd4abd
Removed shitty joke from readmeme 2021-02-04 20:50:49 +04:00
Tornike Khintibidze b30e79069c
Update README.md 2021-02-04 20:47:50 +04:00
X1nto a71f834e36 updated gradle files 2021-02-04 20:10:35 +04:00
X1nto 2973d1db92 version bumpup 2021-02-04 19:58:02 +04:00
X1nto 928aec22e9 adjusted save button margins again 2021-02-04 19:36:12 +04:00
X1nto 15a28473e0 adjusted save button margins 2021-02-04 19:35:17 +04:00
X1nto d4c868c1e4 enabled instant support for FAQ 2021-02-04 19:30:52 +04:00
X1nto 6a76edd101 small adjustment 2021-02-04 12:36:09 +04:00
X1nto a494951831 improved faq button 2021-02-04 12:35:07 +04:00
X1nto a18f9c05a9 string adjustments 2021-02-04 11:56:11 +04:00
X1nto 351f849da8 added FAQ button 2021-02-04 11:55:12 +04:00
X1nto efa9ec7bc6 fixed incorrect error code by unifying error reporters 2021-02-04 11:47:13 +04:00
X1nto 44351912b4 fixed accent dialog 2021-02-04 11:29:58 +04:00
X1nto a3fd2111d4 fixed notification adapter 2021-02-04 11:27:55 +04:00
X1nto ed39a2ebf6 removed unused attribute 2021-02-03 23:45:03 +04:00
X1nto 8643ced9f4 fixed accent color for slider 2021-02-03 23:43:41 +04:00
X1nto 9c2b530d4d added log fragment 2021-02-03 22:24:28 +04:00
X1nto d58a2c3f71 fixed warnings for music and vanced 2021-02-03 20:12:32 +04:00
X1nto 3a4fa0abe0 Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2021-02-01 19:54:08 +04:00
X1nto 89611742ed fixed some strings not being translated 2021-02-01 19:54:03 +04:00
KevinX8 9e41d32592
Update strings.xml 2021-01-31 21:01:33 +00:00
KevinX8 83d184ca44
fix 2021-01-31 20:42:11 +00:00
X1nto 7e63ef1a6a fixed grammar lol 2021-01-31 21:09:56 +04:00
X1nto bff17853d7 fixed notifications not turning off when unselecting app 2021-01-30 13:53:13 +04:00
X1nto 6a0bd14680 added warning for music 2021-01-28 15:23:36 +04:00
X1nto a7fa67e726 updated notification logo 2021-01-28 13:26:30 +04:00
KevinX8 0c72ca8fe9
Merge pull request #386 from YTVanced/dev
v2.3.0
2021-01-27 17:43:11 +00:00
X1nto 50b81e85de rename version 2021-01-27 21:30:20 +04:00
X1nto 4f4c11d234 fixed shit grammar 2021-01-27 21:29:57 +04:00
X1nto 5c097ca112 Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2021-01-27 21:19:02 +04:00
X1nto deec5d558f fixed manifest 2021-01-27 21:18:50 +04:00
KevinX8 01eabb4b1c
New Crowdin updates (#385)
* New translations strings.xml (Turkish)

* New translations strings.xml (Chinese Traditional)

* New translations strings.xml (Kurdish)

* New translations strings.xml (Dutch)

* New translations strings.xml (Norwegian)

* New translations strings.xml (Punjabi)

* New translations strings.xml (Polish)

* New translations strings.xml (Portuguese)

* New translations strings.xml (Russian)

* New translations strings.xml (Serbian (Cyrillic))

* New translations strings.xml (Swedish)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Italian)

* New translations strings.xml (Portuguese, Brazilian)

* New translations strings.xml (Tamil)

* New translations strings.xml (Bengali)

* New translations strings.xml (Marathi)

* New translations strings.xml (Estonian)

* New translations strings.xml (Sinhala)

* New translations strings.xml (Bengali, India)

* New translations strings.xml (Kurmanji (Kurdish))

* New translations strings.xml (Pashto)

* New translations strings.xml (Somali)

* New translations strings.xml (Georgian)

* New translations strings.xml (Hebrew)

* New translations strings.xml (Japanese)

* New translations strings.xml (Filipino)

* New translations strings.xml (Thai)

* New translations strings.xml (Malayalam)

* New translations strings.xml (Spanish)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Greek)

* New translations strings.xml (Hungarian)

* New translations strings.xml (Korean)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Croatian)

* New translations strings.xml (Azerbaijani)

* New translations strings.xml (Sorani (Kurdish))

* New translations strings.xml (Finnish)

* New translations strings.xml (Hindi)

* New translations strings.xml (Romanian)

* New translations strings.xml (Chinese Simplified)

* New translations strings.xml (French)

* New translations strings.xml (Afrikaans)

* New translations strings.xml (Arabic)

* New translations strings.xml (Catalan)

* New translations strings.xml (Czech)

* New translations strings.xml (Danish)

* New translations strings.xml (German)

* New translations strings.xml (Punjabi, Pakistan)
2021-01-27 17:13:19 +00:00
X1nto 0c531dee8c cleanup 2021-01-27 21:07:13 +04:00
X1nto ad905e99e3 bumped up version 2021-01-27 21:03:13 +04:00
X1nto fe6a0386f1 Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2021-01-27 20:58:29 +04:00
X1nto 1c62fb45c1 Improved mirror fallback and added a check for broken microg 2021-01-27 20:58:18 +04:00
Tornike Khintibidze 40014b0cdc
Merge pull request #382 from coin3x/set-installer
Set installer package to Play Store for root variant
2021-01-26 15:10:13 +04:00
Coin b6fc2cadbc
Set installer package to Play Store for root variant
In some Android 11 installation, Play Services refuse to work if the calling
package does not come from a legit source (e.g. Play Store). Be sloppy about
version detection and whether the operation succeeded as this appears to happen
only in Android 11.
2021-01-26 15:38:26 +08:00
X1nto 196794a79b Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2021-01-25 20:54:32 +04:00
X1nto a12966d8f5 added backup URL fallback 2021-01-25 20:54:19 +04:00
KevinX8 b31dbda624
Update README.md 2021-01-25 11:59:43 +00:00
KevinX8 c2fe533836
Update README.md 2021-01-25 11:53:40 +00:00
KevinX8 5fb41b1f69
Update README.md 2021-01-25 11:53:18 +00:00
X1nto 77861b400c unhardcoded vanced themes in installer (kinda) 2021-01-24 23:14:03 +04:00
X1nto 14cabc7a8f optimised app version converter 2021-01-24 22:19:38 +04:00
X1nto 850b3dda1c added use of getters in more classes 2021-01-24 22:17:19 +04:00
X1nto dde6901dbe added getters and setters for preferences 2021-01-24 22:12:06 +04:00
X1nto fcdc910293 updated gradle plugin 2021-01-22 20:15:47 +04:00
X1nto 18a1ca3cbf Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2021-01-22 20:04:34 +04:00
X1nto 4be7bad75b migrated to kotlin SAM conversion 2021-01-22 20:04:21 +04:00
KevinX8 50f8620544
Update README.md 2021-01-20 14:42:02 +00:00
X1nto 7784827790 fixed comment alignment 2021-01-19 00:29:47 +04:00
X1nto e114116916 moved su command execution out of if else scope 2021-01-19 00:29:16 +04:00
X1nto 56eec40dd3 fixed root music installer for some devices 2021-01-18 20:03:08 +04:00
KevinX8 90767325ad
Merge pull request #363 from YTVanced/dev
2.2.1
2021-01-17 15:45:32 +00:00
X1nto 3e15ca01b2 Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2021-01-17 19:22:00 +04:00
X1nto 55e794cb00 version bumpup 2021-01-17 19:21:50 +04:00
KevinX8 aded397e10
Merge pull request #362 from YTVanced/l10n_dev
New Crowdin updates
2021-01-17 15:21:28 +00:00
X1nto ffa2e0a281 temporary fix for random crashes on installation 2021-01-17 19:13:30 +04:00
X1nto 375fffe590 removed unecessary trycatch block 2021-01-17 17:17:05 +04:00
X1nto 66f2d70de5 crash fixes 2021-01-17 17:15:57 +04:00
X1nto 835ede4de6 fixed crash in root data model 2021-01-17 16:52:50 +04:00
X1nto 1c123e55d8 crash fixes 2021-01-17 14:54:48 +04:00
KevinX8 12a80670ac New translations strings.xml (Somali) 2021-01-17 09:55:11 +00:00
KevinX8 480b23f925 New translations strings.xml (Turkish) 2021-01-17 09:55:09 +00:00
X1nto 1d205bb4bb fixed conflicts 2021-01-17 13:30:26 +04:00
X1nto eef6714943 added null safety for package manager 2021-01-17 13:27:22 +04:00
X1nto b783210238 prevent loading root data model on nonroot screen 2021-01-17 13:09:36 +04:00
KevinX8 95754472dd
Merge pull request #361 from YTVanced/dev
fix root models always being created
2021-01-16 23:34:37 +00:00
KevinX8 abbefbf21b fix root models always being created 2021-01-16 23:33:30 +00:00
KevinX8 b8f6ac9bf1
Merge pull request #359 from YTVanced/dev
Manager 2.2.0 Update
- Added ability to adjust root script timer
- Added an app launch button
- Improved root installer (again)
- Updated logo (again)
- Fixed issues with downloader
- UI fixes and improvements
- Stock YouTube/Music apps should no longer show up as installed
2021-01-16 23:20:05 +00:00
KevinX8 e83451ace6 updated deps 2021-01-16 22:22:51 +00:00
X1nto 82023db7d7 Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2021-01-17 02:13:27 +04:00
X1nto 430af21c5d removed boldness from vanced language box 2021-01-17 02:13:11 +04:00
X1nto a87e13e66d language picker fixes 2021-01-17 02:09:57 +04:00
KevinX8 98fa721aef
Merge branch 'master' into dev 2021-01-16 22:03:27 +00:00
KevinX8 d896a8c89d fix merge conflict 2021-01-16 22:02:07 +00:00
KevinX8 58fe0bff27
Merge pull request #360 from YTVanced/l10n_dev
New Crowdin updates
2021-01-16 21:54:41 +00:00
KevinX8 c8da92860d removed crowdin meme 2021-01-16 21:54:20 +00:00
KevinX8 19a5452baa New translations strings.xml (Arabic) 2021-01-16 21:51:20 +00:00
KevinX8 a5e82a3b47
Merge pull request #356 from YTVanced/l10n_dev
New Crowdin updates
2021-01-16 20:00:27 +00:00
KevinX8 0067fa4833 New translations strings.xml (German) 2021-01-16 17:08:28 +00:00
KevinX8 da947b8327 New translations strings.xml (Danish) 2021-01-16 17:08:26 +00:00
KevinX8 d7c77d163b New translations strings.xml (Ukrainian) 2021-01-16 17:08:24 +00:00
X1nto f47dd376b2 moved methods out of singletones 2021-01-16 21:00:38 +04:00
X1nto 834dad0946 avoid detecting stock apps as installed 2021-01-16 19:49:25 +04:00
X1nto ce1cf2fdb4 more logging 2021-01-16 18:45:20 +04:00
X1nto 1ceb53d2d4 retrofit goes brrrrrr 2021-01-16 18:36:46 +04:00
KevinX8 1cdd51b0e5 New translations strings.xml (Acholi) 2021-01-16 05:07:53 +00:00
KevinX8 f9535bd37e New translations strings.xml (German) 2021-01-16 05:07:52 +00:00
KevinX8 b6abd72b39 New translations strings.xml (Danish) 2021-01-16 05:07:50 +00:00
KevinX8 4d5aeff895 New translations strings.xml (Czech) 2021-01-16 05:07:48 +00:00
KevinX8 8a27de4918 New translations strings.xml (Catalan) 2021-01-16 05:07:46 +00:00
KevinX8 4518e9c6f1 New translations strings.xml (Arabic) 2021-01-16 05:07:44 +00:00
KevinX8 32deb79ebf New translations strings.xml (Afrikaans) 2021-01-16 05:07:42 +00:00
KevinX8 91b20dd088 New translations strings.xml (French) 2021-01-16 05:07:40 +00:00
KevinX8 24a99ef84d New translations strings.xml (Chinese Simplified) 2021-01-16 05:07:38 +00:00
KevinX8 93c995b10b New translations strings.xml (Romanian) 2021-01-16 05:07:36 +00:00
KevinX8 4cb25fde59 New translations strings.xml (Hindi) 2021-01-16 05:07:35 +00:00
KevinX8 6dcdbdcb1b New translations strings.xml (Finnish) 2021-01-16 05:07:33 +00:00
KevinX8 b4194a801e New translations strings.xml (Sorani (Kurdish)) 2021-01-16 05:07:31 +00:00
KevinX8 1c75e57322 New translations strings.xml (Azerbaijani) 2021-01-16 05:07:29 +00:00
KevinX8 5ec2a00706 New translations strings.xml (Croatian) 2021-01-16 05:07:27 +00:00
KevinX8 d5d9948e09 New translations strings.xml (Ukrainian) 2021-01-16 05:07:25 +00:00
KevinX8 8505b489a9 New translations strings.xml (Korean) 2021-01-16 05:07:23 +00:00
KevinX8 cc5a189680 New translations strings.xml (Hungarian) 2021-01-16 05:07:21 +00:00
KevinX8 7c915e9ee3 New translations strings.xml (Greek) 2021-01-16 05:07:20 +00:00
KevinX8 3090ae75be New translations strings.xml (Indonesian) 2021-01-16 05:07:18 +00:00
KevinX8 f78926036c New translations strings.xml (Spanish) 2021-01-16 05:07:16 +00:00
KevinX8 8049eb1ba0 New translations strings.xml (Malayalam) 2021-01-16 05:07:14 +00:00
KevinX8 697a9e0f6a New translations strings.xml (Thai) 2021-01-16 05:07:12 +00:00
KevinX8 a19df1c2d3 New translations strings.xml (Filipino) 2021-01-16 05:07:10 +00:00
KevinX8 b1452e64e3 New translations strings.xml (Japanese) 2021-01-16 05:07:08 +00:00
KevinX8 147eb96061 New translations strings.xml (Hebrew) 2021-01-16 05:07:06 +00:00
KevinX8 413bf4ac6c New translations strings.xml (Georgian) 2021-01-16 05:07:04 +00:00
KevinX8 b748ae7118 New translations strings.xml (Punjabi, Pakistan) 2021-01-16 05:06:55 +00:00
KevinX8 d5d5b23547 New translations strings.xml (Somali) 2021-01-16 05:06:54 +00:00
KevinX8 7b80ee94ea New translations strings.xml (Pashto) 2021-01-16 05:06:52 +00:00
KevinX8 7410050c75 New translations strings.xml (Kurmanji (Kurdish)) 2021-01-16 05:06:50 +00:00
KevinX8 2a70aa14f4 New translations strings.xml (Bengali, India) 2021-01-16 05:06:48 +00:00
KevinX8 be0355ea40 New translations strings.xml (Sinhala) 2021-01-16 05:06:47 +00:00
KevinX8 ebedd70e59 New translations strings.xml (Estonian) 2021-01-16 05:06:45 +00:00
KevinX8 e934c8cc33 New translations strings.xml (Marathi) 2021-01-16 05:06:43 +00:00
KevinX8 cd4a57bef7 New translations strings.xml (Bengali) 2021-01-16 05:06:41 +00:00
KevinX8 504ac8cc6d New translations strings.xml (Tamil) 2021-01-16 05:06:39 +00:00
KevinX8 ea5fafa7e0 New translations strings.xml (Italian) 2021-01-16 05:06:38 +00:00
KevinX8 f94387d6b3 New translations strings.xml (Portuguese, Brazilian) 2021-01-16 05:06:36 +00:00
KevinX8 cb90e1b991 New translations strings.xml (Chinese Traditional) 2021-01-16 05:06:34 +00:00
KevinX8 b938ad8cd9 New translations strings.xml (Swedish) 2021-01-16 05:06:32 +00:00
KevinX8 bfa8415ea9 New translations strings.xml (Serbian (Cyrillic)) 2021-01-16 05:06:30 +00:00
KevinX8 ecd8027370 New translations strings.xml (Russian) 2021-01-16 05:06:29 +00:00
KevinX8 29af694609 New translations strings.xml (Portuguese) 2021-01-16 05:06:27 +00:00
KevinX8 0cdbcd754e New translations strings.xml (Polish) 2021-01-16 05:06:25 +00:00
KevinX8 364fc15fc5 New translations strings.xml (Punjabi) 2021-01-16 05:06:23 +00:00
KevinX8 72603e15f6 New translations strings.xml (Norwegian) 2021-01-16 05:06:21 +00:00
KevinX8 d99ae33935 New translations strings.xml (Dutch) 2021-01-16 05:06:19 +00:00
KevinX8 a014389281 New translations strings.xml (Kurdish) 2021-01-16 05:06:17 +00:00
KevinX8 826b5d9a35 New translations strings.xml (Vietnamese) 2021-01-16 05:06:16 +00:00
KevinX8 429cc00707 New translations strings.xml (Turkish) 2021-01-16 05:06:14 +00:00
X1nto e670b5764e Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2021-01-15 23:08:29 +04:00
X1nto 0af2d9e35a fixed duplicate language 2021-01-15 23:08:19 +04:00
KevinX8 f1d4239954 removed dev string as translatable 2021-01-15 19:05:03 +00:00
X1nto 19826b3166 added back preferences 2021-01-15 22:27:17 +04:00
X1nto 4af4c264c0 Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2021-01-15 22:21:10 +04:00
X1nto 30a1bef60b removed androidx preference lib 2021-01-15 22:20:10 +04:00
KevinX8 a569452e62
Merge pull request #343 from YTVanced/l10n_dev
New Crowdin updates
2021-01-15 18:19:40 +00:00
X1nto 377f4f1156 version bumpup 2021-01-15 22:19:28 +04:00
X1nto 793d3f3f26 mapping 2021-01-15 22:06:45 +04:00
X1nto 0d80587b4a correctly handle exception in installer 2021-01-15 22:06:30 +04:00
X1nto aafa03612b NPE fix 2021-01-15 21:59:58 +04:00
X1nto bb53021d2a added a try catch block 2021-01-15 21:26:27 +04:00
KevinX8 b55fe9fb56 New translations strings.xml (Acholi) 2021-01-15 17:07:55 +00:00
KevinX8 d214bafc5c New translations strings.xml (German) 2021-01-15 17:07:53 +00:00
KevinX8 6dab72b0fa New translations strings.xml (Danish) 2021-01-15 17:07:51 +00:00
KevinX8 57fc0c609c New translations strings.xml (Czech) 2021-01-15 17:07:48 +00:00
KevinX8 2f26179c0d New translations strings.xml (Catalan) 2021-01-15 17:07:46 +00:00
KevinX8 137ea906ac New translations strings.xml (Arabic) 2021-01-15 17:07:44 +00:00
KevinX8 cadcb2860e New translations strings.xml (Afrikaans) 2021-01-15 17:07:42 +00:00
KevinX8 1eb8b0cc0b New translations strings.xml (French) 2021-01-15 17:07:40 +00:00
KevinX8 43047e38f6 New translations strings.xml (Chinese Simplified) 2021-01-15 17:07:39 +00:00
KevinX8 909186ce90 New translations strings.xml (Romanian) 2021-01-15 17:07:36 +00:00
KevinX8 94739b7b63 New translations strings.xml (Hindi) 2021-01-15 17:07:35 +00:00
KevinX8 bf4ddfbb17 New translations strings.xml (Finnish) 2021-01-15 17:07:33 +00:00
KevinX8 c5d1f1515f New translations strings.xml (Sorani (Kurdish)) 2021-01-15 17:07:31 +00:00
KevinX8 370d24d50b New translations strings.xml (Azerbaijani) 2021-01-15 17:07:29 +00:00
KevinX8 5c9f20b186 New translations strings.xml (Croatian) 2021-01-15 17:07:27 +00:00
KevinX8 f1686fc93d New translations strings.xml (Ukrainian) 2021-01-15 17:07:25 +00:00
KevinX8 9ef272ac3f New translations strings.xml (Korean) 2021-01-15 17:07:23 +00:00
KevinX8 9dcb24229c New translations strings.xml (Hungarian) 2021-01-15 17:07:21 +00:00
KevinX8 7249b38333 New translations strings.xml (Greek) 2021-01-15 17:07:17 +00:00
KevinX8 eddf9bf727 New translations strings.xml (Indonesian) 2021-01-15 17:07:15 +00:00
KevinX8 7b17d78748 New translations strings.xml (Spanish) 2021-01-15 17:07:14 +00:00
KevinX8 95d93a7839 New translations strings.xml (Malayalam) 2021-01-15 17:07:12 +00:00
KevinX8 a0e2eb4e7c New translations strings.xml (Thai) 2021-01-15 17:07:10 +00:00
KevinX8 d8c33a415a New translations strings.xml (Filipino) 2021-01-15 17:07:08 +00:00
KevinX8 aa7f20bfc2 New translations strings.xml (Japanese) 2021-01-15 17:07:06 +00:00
KevinX8 89c9c49ebb New translations strings.xml (Hebrew) 2021-01-15 17:07:04 +00:00
KevinX8 4e6c856308 New translations strings.xml (Georgian) 2021-01-15 17:07:02 +00:00
KevinX8 4ba0006ce4 New translations strings.xml (Punjabi, Pakistan) 2021-01-15 17:07:00 +00:00
KevinX8 c0d3311c0e New translations strings.xml (Somali) 2021-01-15 17:06:58 +00:00
KevinX8 e3300be78f New translations strings.xml (Pashto) 2021-01-15 17:06:56 +00:00
KevinX8 ce914d0bc6 New translations strings.xml (Kurmanji (Kurdish)) 2021-01-15 17:06:54 +00:00
KevinX8 f1c689dd0a New translations strings.xml (Bengali, India) 2021-01-15 17:06:51 +00:00
KevinX8 984c9568f8 New translations strings.xml (Sinhala) 2021-01-15 17:06:49 +00:00
KevinX8 8f2350f0a7 New translations strings.xml (Estonian) 2021-01-15 17:06:47 +00:00
KevinX8 f1c1a0181a New translations strings.xml (Marathi) 2021-01-15 17:06:46 +00:00
KevinX8 1beec83511 New translations strings.xml (Bengali) 2021-01-15 17:06:44 +00:00
KevinX8 5fd9391893 New translations strings.xml (Tamil) 2021-01-15 17:06:42 +00:00
KevinX8 d5e909660a New translations strings.xml (Italian) 2021-01-15 17:06:40 +00:00
KevinX8 ef8a132ab7 New translations strings.xml (Portuguese, Brazilian) 2021-01-15 17:06:38 +00:00
KevinX8 6f9963c95e New translations strings.xml (Chinese Traditional) 2021-01-15 17:06:36 +00:00
KevinX8 7fa932b20c New translations strings.xml (Swedish) 2021-01-15 17:06:35 +00:00
KevinX8 519c6db670 New translations strings.xml (Serbian (Cyrillic)) 2021-01-15 17:06:33 +00:00
KevinX8 faa1f72782 New translations strings.xml (Russian) 2021-01-15 17:06:31 +00:00
KevinX8 33001472f7 New translations strings.xml (Portuguese) 2021-01-15 17:06:29 +00:00
KevinX8 c3fca27487 New translations strings.xml (Polish) 2021-01-15 17:06:28 +00:00
KevinX8 f8295d85c3 New translations strings.xml (Punjabi) 2021-01-15 17:06:26 +00:00
KevinX8 b0f919ac60 New translations strings.xml (Norwegian) 2021-01-15 17:06:24 +00:00
KevinX8 f031d1f17c New translations strings.xml (Dutch) 2021-01-15 17:06:22 +00:00
KevinX8 c15ea49f62 New translations strings.xml (Kurdish) 2021-01-15 17:06:20 +00:00
KevinX8 ec599b963c New translations strings.xml (Vietnamese) 2021-01-15 17:06:18 +00:00
KevinX8 f1a8167e2a New translations strings.xml (Turkish) 2021-01-15 17:06:16 +00:00
X1nto d643895e06 unlocked orientation 2021-01-15 20:02:50 +04:00
X1nto 141a99d64c Added loggers for root installer 2021-01-15 18:37:41 +04:00
X1nto 7ab45bec22 new microg icon 2021-01-15 18:30:42 +04:00
X1nto 934224d8e8 ui updates 2021-01-15 18:24:07 +04:00
X1nto 671f192f5b themed slider 2021-01-15 14:12:39 +04:00
X1nto f9c174dbf9 prevent downloader from crashing if an exception occurs 2021-01-14 23:48:31 +04:00
X1nto e14fd50cdd reduced maximum value of service d timer 2021-01-14 17:42:41 +04:00
KevinX8 7402a134af New translations strings.xml (Russian) 2021-01-14 09:51:17 +00:00
KevinX8 1ac8d21b2c New translations strings.xml (Hebrew) 2021-01-13 10:10:11 +00:00
KevinX8 21ef97eaa5 New translations strings.xml (Indonesian) 2021-01-13 10:10:09 +00:00
KevinX8 58f1573868 New translations strings.xml (Arabic) 2021-01-12 22:11:49 +00:00
KevinX8 e47924e760 New translations strings.xml (Bengali, India) 2021-01-12 10:16:09 +00:00
KevinX8 901d603e43 New translations strings.xml (Tamil) 2021-01-12 10:16:07 +00:00
KevinX8 82f1854963 New translations strings.xml (Punjabi) 2021-01-12 10:16:05 +00:00
KevinX8 4c66e03137 New translations strings.xml (Hindi) 2021-01-12 10:16:02 +00:00
KevinX8 2fb507a061 New translations strings.xml (Indonesian) 2021-01-12 10:16:00 +00:00
KevinX8 096e838cc8 New translations strings.xml (Malayalam) 2021-01-12 10:15:58 +00:00
KevinX8 6c7f08d8f5 New translations strings.xml (Dutch) 2021-01-11 22:09:02 +00:00
KevinX8 af31ae2a1a New translations strings.xml (Hungarian) 2021-01-11 22:09:00 +00:00
KevinX8 c129fafc01 New translations strings.xml (Greek) 2021-01-11 22:08:58 +00:00
KevinX8 aa69c8a091 New translations strings.xml (Chinese Traditional) 2021-01-11 10:09:04 +00:00
KevinX8 8fcddad82d New translations strings.xml (German) 2021-01-11 10:09:01 +00:00
KevinX8 1a110498c2 New translations strings.xml (Chinese Simplified) 2021-01-11 10:09:00 +00:00
KevinX8 66e3077a01 New translations strings.xml (Thai) 2021-01-11 10:08:58 +00:00
KevinX8 27513982c3 New translations strings.xml (Acholi) 2021-01-10 22:08:41 +00:00
KevinX8 aa4dc70a2a New translations strings.xml (German) 2021-01-10 22:08:39 +00:00
KevinX8 bf7468ea1b New translations strings.xml (Danish) 2021-01-10 22:08:37 +00:00
KevinX8 6fd1cf9d49 New translations strings.xml (Czech) 2021-01-10 22:08:35 +00:00
KevinX8 10ef247e4a New translations strings.xml (Catalan) 2021-01-10 22:08:33 +00:00
KevinX8 ae30fb708d New translations strings.xml (Arabic) 2021-01-10 22:08:31 +00:00
KevinX8 8f135db321 New translations strings.xml (Afrikaans) 2021-01-10 22:08:29 +00:00
KevinX8 ea7fca27f0 New translations strings.xml (French) 2021-01-10 22:08:28 +00:00
KevinX8 78f3113575 New translations strings.xml (Chinese Simplified) 2021-01-10 22:08:26 +00:00
KevinX8 2d5b1a276d New translations strings.xml (Romanian) 2021-01-10 22:08:24 +00:00
KevinX8 2e213cec3d New translations strings.xml (Hindi) 2021-01-10 22:08:23 +00:00
KevinX8 5221f9499d New translations strings.xml (Finnish) 2021-01-10 22:08:21 +00:00
KevinX8 8fe7f73fcc New translations strings.xml (Sorani (Kurdish)) 2021-01-10 22:08:19 +00:00
KevinX8 0c9467e47b New translations strings.xml (Azerbaijani) 2021-01-10 22:08:17 +00:00
KevinX8 439843b812 New translations strings.xml (Croatian) 2021-01-10 22:08:16 +00:00
KevinX8 573d956e03 New translations strings.xml (Ukrainian) 2021-01-10 22:08:14 +00:00
KevinX8 9910227471 New translations strings.xml (Korean) 2021-01-10 22:08:12 +00:00
KevinX8 c4699f4514 New translations strings.xml (Hungarian) 2021-01-10 22:08:10 +00:00
KevinX8 53ff8c2eb4 New translations strings.xml (Greek) 2021-01-10 22:08:08 +00:00
KevinX8 74dd549440 New translations strings.xml (Indonesian) 2021-01-10 22:08:07 +00:00
KevinX8 db23cd91ca New translations strings.xml (Spanish) 2021-01-10 22:08:05 +00:00
KevinX8 d78d271c79 New translations strings.xml (Malayalam) 2021-01-10 22:08:03 +00:00
KevinX8 2e592add0f New translations strings.xml (Thai) 2021-01-10 22:08:01 +00:00
KevinX8 2ba5871f89 New translations strings.xml (Filipino) 2021-01-10 22:07:59 +00:00
KevinX8 e0d1c936f2 New translations strings.xml (Japanese) 2021-01-10 22:07:58 +00:00
KevinX8 9d148802ee New translations strings.xml (Hebrew) 2021-01-10 22:07:56 +00:00
KevinX8 d90db5674d New translations strings.xml (Georgian) 2021-01-10 22:07:54 +00:00
KevinX8 91e4a7bff6 New translations strings.xml (Punjabi, Pakistan) 2021-01-10 22:07:52 +00:00
KevinX8 246d6b6f87 New translations strings.xml (Somali) 2021-01-10 22:07:51 +00:00
KevinX8 73e1ff82d3 New translations strings.xml (Pashto) 2021-01-10 22:07:49 +00:00
KevinX8 7a004252ce New translations strings.xml (Kurmanji (Kurdish)) 2021-01-10 22:07:47 +00:00
KevinX8 d088007fa5 New translations strings.xml (Bengali, India) 2021-01-10 22:07:46 +00:00
KevinX8 5a0149b8ac New translations strings.xml (Sinhala) 2021-01-10 22:07:43 +00:00
KevinX8 46035b5003 New translations strings.xml (Estonian) 2021-01-10 22:07:42 +00:00
KevinX8 2ad5423e2f New translations strings.xml (Marathi) 2021-01-10 22:07:40 +00:00
KevinX8 0858ba524c New translations strings.xml (Bengali) 2021-01-10 22:07:38 +00:00
KevinX8 11b10eab37 New translations strings.xml (Tamil) 2021-01-10 22:07:37 +00:00
KevinX8 9db56b022a New translations strings.xml (Italian) 2021-01-10 22:07:35 +00:00
KevinX8 5ec13349eb New translations strings.xml (Portuguese, Brazilian) 2021-01-10 22:07:33 +00:00
KevinX8 42f1e963e6 New translations strings.xml (Chinese Traditional) 2021-01-10 22:07:32 +00:00
KevinX8 0f4c72e688 New translations strings.xml (Swedish) 2021-01-10 22:07:30 +00:00
KevinX8 1abf5e234e New translations strings.xml (Serbian (Cyrillic)) 2021-01-10 22:07:28 +00:00
KevinX8 6315130416 New translations strings.xml (Russian) 2021-01-10 22:07:26 +00:00
KevinX8 ce6cc7cc9e New translations strings.xml (Portuguese) 2021-01-10 22:07:24 +00:00
KevinX8 6ba3d749f8 New translations strings.xml (Polish) 2021-01-10 22:07:23 +00:00
KevinX8 9c5c855841 New translations strings.xml (Punjabi) 2021-01-10 22:07:21 +00:00
KevinX8 9c0e399833 New translations strings.xml (Norwegian) 2021-01-10 22:07:19 +00:00
KevinX8 6761f6e489 New translations strings.xml (Dutch) 2021-01-10 22:07:18 +00:00
KevinX8 a633bea848 New translations strings.xml (Kurdish) 2021-01-10 22:07:16 +00:00
KevinX8 41ffec580e New translations strings.xml (Vietnamese) 2021-01-10 22:07:14 +00:00
KevinX8 b3358581d7 New translations strings.xml (Turkish) 2021-01-10 22:07:12 +00:00
X1nto 69a015c5cf string updates 2021-01-10 22:52:31 +04:00
X1nto 615337c86a updated logo 2021-01-10 17:15:13 +04:00
X1nto c4fe880031 removed logs 2021-01-10 16:43:17 +04:00
X1nto 801ff2e712 removed kotlin android extensions in favor of viewbinding 2021-01-10 16:41:56 +04:00
X1nto 8f916ff751 fixed language grabber 2021-01-10 16:11:49 +04:00
Tornike Khintibidze 3a8722bdc8
Merge pull request #345 from kyelbek/dev
Fix crashes in root variant after device reboots.
2021-01-10 14:12:07 +04:00
X1nto 905011d397 Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2021-01-10 14:11:26 +04:00
X1nto efca4f7434 switched to kotlin dsl 2021-01-10 14:11:04 +04:00
KevinX8 3a0fe605ef New translations strings.xml (Chinese Simplified) 2021-01-10 10:06:33 +00:00
KevinX8 57eb6bb411 New translations strings.xml (Hungarian) 2021-01-09 10:08:37 +00:00
Kyelbek 641dc789f9 Change name of private variable in chConV to make it more consistent and obvious of what we're feeding this function with. This can help in avoiding confusion. 2021-01-08 22:39:19 +01:00
Kyelbek 04fc790e36 Fix service script for root variant. This should prevent selinux denials after reboot. Fixes https://github.com/YTVanced/Vanced/issues/331. 2021-01-08 22:24:58 +01:00
Kyelbek 8be35fec73 Fix root mount script. In process of moving service script code, input arguments were written in wrong order. 2021-01-08 22:10:46 +01:00
KevinX8 905222fa19 New translations strings.xml (Hindi) 2021-01-06 03:09:28 +00:00
KevinX8 a02d604565 New translations strings.xml (Greek) 2021-01-06 03:09:26 +00:00
KevinX8 9210a4988c New translations strings.xml (Indonesian) 2021-01-06 03:09:24 +00:00
KevinX8 8e8605aeff New translations strings.xml (Spanish) 2021-01-06 03:09:22 +00:00
Tornike Khintibidze 6ae43635e7
Merge pull request #331 from YTVanced/l10n_dev
New Crowdin updates
2021-01-05 19:01:17 +04:00
KevinX8 47471dc96b New translations strings.xml (Croatian) 2021-01-04 11:12:41 +00:00
KevinX8 3a9c355cf4 New translations strings.xml (Greek) 2021-01-03 23:05:54 +00:00
KevinX8 97050ef58b New translations strings.xml (Korean) 2021-01-02 00:53:29 +00:00
KevinX8 36cdc1e5c0 New translations strings.xml (Korean) 2020-12-30 18:23:47 +00:00
KevinX8 628f6a516f New translations strings.xml (Thai) 2020-12-29 11:36:14 +00:00
KevinX8 f5f498ba85 New translations strings.xml (Sorani (Kurdish)) 2020-12-28 23:28:01 +00:00
KevinX8 e26b0d1f06 New translations strings.xml (Azerbaijani) 2020-12-28 23:27:59 +00:00
KevinX8 e5c3882247 New translations strings.xml (Ukrainian) 2020-12-28 23:27:57 +00:00
KevinX8 508186824e New translations strings.xml (Japanese) 2020-12-28 11:31:56 +00:00
KevinX8 b7bc14cef9 New translations strings.xml (Thai) 2020-12-27 23:36:05 +00:00
KevinX8 5e1771f149 New translations strings.xml (Japanese) 2020-12-27 11:36:05 +00:00
KevinX8 6462479fec New translations strings.xml (Portuguese, Brazilian) 2020-12-26 23:37:59 +00:00
KevinX8 35dde9c14f New translations strings.xml (Danish) 2020-12-26 23:37:57 +00:00
KevinX8 a8a50932ce New translations strings.xml (Somali) 2020-12-26 23:37:55 +00:00
KevinX8 cf504130c1 New translations strings.xml (Korean) 2020-12-26 11:36:06 +00:00
KevinX8 8ce389cd28 New translations strings.xml (Spanish) 2020-12-25 21:46:28 +00:00
KevinX8 ce1e438056 New translations strings.xml (Ukrainian) 2020-12-25 09:49:06 +00:00
KevinX8 2abd03e59c New translations strings.xml (Indonesian) 2020-12-24 17:49:53 +00:00
KevinX8 5c6194ade9 New translations strings.xml (Chinese Traditional) 2020-12-24 17:49:51 +00:00
KevinX8 251661beb6 New translations strings.xml (Vietnamese) 2020-12-24 05:45:40 +00:00
KevinX8 41c07851ee New translations strings.xml (German) 2020-12-23 17:45:06 +00:00
KevinX8 e0961530c3 New translations strings.xml (Spanish) 2020-12-23 17:45:04 +00:00
KevinX8 fec32c6079 New translations strings.xml (Turkish) 2020-12-23 17:45:02 +00:00
X1nto e7c10d01e8 added a launch button for apps 2020-12-23 20:13:56 +04:00
X1nto b794afa294 removed an unecessary call 2020-12-23 19:47:34 +04:00
KevinX8 e00834ba28 New translations strings.xml (Portuguese, Brazilian) 2020-12-23 05:50:21 +00:00
KevinX8 db66ad323f New translations strings.xml (Tamil) 2020-12-23 05:50:20 +00:00
KevinX8 d9d45b3f1f New translations strings.xml (Thai) 2020-12-23 05:50:18 +00:00
KevinX8 cbe3f04164 New translations strings.xml (Dutch) 2020-12-23 05:50:16 +00:00
KevinX8 64cb14a628 New translations strings.xml (Chinese Traditional) 2020-12-23 05:50:14 +00:00
KevinX8 1cb1fcc443 New translations strings.xml (Estonian) 2020-12-23 05:50:12 +00:00
KevinX8 7373602292 New translations strings.xml (Malayalam) 2020-12-23 05:50:10 +00:00
KevinX8 dd48957f38 New translations strings.xml (French) 2020-12-23 05:50:08 +00:00
KevinX8 ab70ea8e92 New translations strings.xml (Czech) 2020-12-23 05:50:06 +00:00
KevinX8 c9a3cf8794 New translations strings.xml (Romanian) 2020-12-23 05:50:05 +00:00
KevinX8 41f970ee3d New translations strings.xml (Spanish) 2020-12-23 05:50:03 +00:00
KevinX8 3513bd5615 New translations strings.xml (Indonesian) 2020-12-23 05:50:01 +00:00
KevinX8 b3d88fb4a6 New translations strings.xml (Greek) 2020-12-23 05:49:59 +00:00
KevinX8 87395394b3 New translations strings.xml (Italian) 2020-12-23 05:49:57 +00:00
KevinX8 a198df2528 New translations strings.xml (Polish) 2020-12-23 05:49:55 +00:00
KevinX8 a896c57d45 New translations strings.xml (Russian) 2020-12-23 05:49:54 +00:00
KevinX8 700fa0a56b New translations strings.xml (Chinese Simplified) 2020-12-23 05:49:52 +00:00
KevinX8 adebb687b2 New translations strings.xml (Portuguese) 2020-12-23 05:49:50 +00:00
KevinX8 aa8e88b8bf New translations strings.xml (Arabic) 2020-12-23 05:49:49 +00:00
X1nto 6c0bc4e1ea added a fallback for empty language list 2020-12-22 23:23:18 +04:00
KevinX8 b1a6f5691c New translations strings.xml (Acholi) 2020-12-22 17:44:27 +00:00
KevinX8 9c1de28e0d New translations strings.xml (Hungarian) 2020-12-22 17:44:26 +00:00
KevinX8 17bdbb267d New translations strings.xml (Greek) 2020-12-22 17:44:24 +00:00
KevinX8 7d196025a8 New translations strings.xml (German) 2020-12-22 17:44:22 +00:00
KevinX8 72da00438e New translations strings.xml (Danish) 2020-12-22 17:44:20 +00:00
KevinX8 646219eec6 New translations strings.xml (Indonesian) 2020-12-22 17:44:18 +00:00
KevinX8 ee17d06867 New translations strings.xml (Bengali) 2020-12-22 17:44:16 +00:00
KevinX8 5dd87eff9a New translations strings.xml (Somali) 2020-12-22 17:44:14 +00:00
KevinX8 e8b6e33f95 New translations strings.xml (Bengali, India) 2020-12-22 17:44:12 +00:00
KevinX8 55af59937f New translations strings.xml (Portuguese) 2020-12-22 17:44:10 +00:00
KevinX8 5386884d7b New translations strings.xml (Italian) 2020-12-22 17:44:08 +00:00
KevinX8 1ff073d6f4 New translations strings.xml (Malayalam) 2020-12-22 17:44:06 +00:00
KevinX8 e3d6346f1f New translations strings.xml (Chinese Traditional) 2020-12-22 17:44:04 +00:00
KevinX8 db9ad77e25 New translations strings.xml (Dutch) 2020-12-22 17:44:02 +00:00
KevinX8 c46cfd78a6 New translations strings.xml (Sinhala) 2020-12-22 17:44:00 +00:00
KevinX8 f7d33f6545 New translations strings.xml (Thai) 2020-12-22 17:43:58 +00:00
KevinX8 8c05f87541 New translations strings.xml (Tamil) 2020-12-22 17:43:56 +00:00
KevinX8 105d2dda3b New translations strings.xml (Japanese) 2020-12-22 17:43:54 +00:00
KevinX8 604204c0c8 New translations strings.xml (Hebrew) 2020-12-22 17:43:53 +00:00
KevinX8 01a0881026 New translations strings.xml (Czech) 2020-12-22 17:43:51 +00:00
KevinX8 8800368110 New translations strings.xml (Estonian) 2020-12-22 17:43:49 +00:00
KevinX8 2d76fff03c New translations strings.xml (Georgian) 2020-12-22 17:43:47 +00:00
KevinX8 4270f08511 New translations strings.xml (Finnish) 2020-12-22 17:43:45 +00:00
KevinX8 3e22213967 New translations strings.xml (Kurdish) 2020-12-22 17:43:43 +00:00
KevinX8 207665ee56 New translations strings.xml (Punjabi, Pakistan) 2020-12-22 17:43:42 +00:00
KevinX8 4db130137a New translations strings.xml (Pashto) 2020-12-22 17:43:40 +00:00
KevinX8 5ab665917a New translations strings.xml (Sorani (Kurdish)) 2020-12-22 17:43:38 +00:00
KevinX8 539972b567 New translations strings.xml (Kurmanji (Kurdish)) 2020-12-22 17:43:36 +00:00
KevinX8 446d983741 New translations strings.xml (Filipino) 2020-12-22 17:43:35 +00:00
KevinX8 23801ac596 New translations strings.xml (Hindi) 2020-12-22 17:43:33 +00:00
KevinX8 9f2a98aeba New translations strings.xml (Azerbaijani) 2020-12-22 17:43:30 +00:00
KevinX8 a26155c1b6 New translations strings.xml (Croatian) 2020-12-22 17:43:28 +00:00
KevinX8 715dceca1b New translations strings.xml (Marathi) 2020-12-22 17:43:26 +00:00
KevinX8 289ea83840 New translations strings.xml (Portuguese, Brazilian) 2020-12-22 17:43:24 +00:00
KevinX8 2676b02504 New translations strings.xml (Korean) 2020-12-22 17:43:22 +00:00
KevinX8 a87a317a67 New translations strings.xml (Chinese Simplified) 2020-12-22 17:43:20 +00:00
KevinX8 0ebd6c5655 New translations strings.xml (Vietnamese) 2020-12-22 17:43:19 +00:00
KevinX8 f6dcf31aec New translations strings.xml (Swedish) 2020-12-22 17:43:17 +00:00
KevinX8 5d024b791c New translations strings.xml (Serbian (Cyrillic)) 2020-12-22 17:43:15 +00:00
KevinX8 648c485154 New translations strings.xml (Russian) 2020-12-22 17:43:13 +00:00
KevinX8 9b5abc83e5 New translations strings.xml (Polish) 2020-12-22 17:43:11 +00:00
KevinX8 77e0089175 New translations strings.xml (Punjabi) 2020-12-22 17:43:09 +00:00
KevinX8 752093c6a0 New translations strings.xml (Norwegian) 2020-12-22 17:43:07 +00:00
KevinX8 a43362eae5 New translations strings.xml (Ukrainian) 2020-12-22 17:43:05 +00:00
KevinX8 665d1d3339 New translations strings.xml (Turkish) 2020-12-22 17:43:03 +00:00
KevinX8 e60cd5dc5d New translations strings.xml (Romanian) 2020-12-22 17:43:01 +00:00
KevinX8 341701526b New translations strings.xml (French) 2020-12-22 17:43:00 +00:00
KevinX8 62f107e782 New translations strings.xml (Spanish) 2020-12-22 17:42:58 +00:00
KevinX8 82881de2eb New translations strings.xml (Afrikaans) 2020-12-22 17:42:56 +00:00
KevinX8 94395bc30c New translations strings.xml (Catalan) 2020-12-22 17:42:54 +00:00
KevinX8 6b7b576c92 New translations strings.xml (Arabic) 2020-12-22 17:42:52 +00:00
X1nto c5f4f7a609 added strings 2020-12-22 21:39:09 +04:00
X1nto cdd00c4f36 Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2020-12-22 21:36:30 +04:00
X1nto 1f9ecfddc0 added sleep timer adjuster and optimized views 2020-12-22 21:36:11 +04:00
KevinX8 a74178b124 New translations strings.xml (Portuguese) 2020-12-21 23:08:38 +00:00
KevinX8 b8d04c1243 New translations strings.xml (Somali) 2020-12-21 23:08:36 +00:00
KevinX8 d75c7f5692 New translations strings.xml (Afrikaans) 2020-12-21 23:08:32 +00:00
KevinX8 b74bc3a2cb New translations strings.xml (Vietnamese) 2020-12-21 23:08:23 +00:00
KevinX8 8475cef50c New translations strings.xml (Turkish) 2020-12-21 23:08:14 +00:00
Tornike Khintibidze 994c2037a9
Merge pull request #321 from YTVanced/l10n_dev
New Crowdin updates
2020-12-21 15:18:30 +04:00
KevinX8 da26ecbf94 New translations strings.xml (Acholi) 2020-12-21 11:12:09 +00:00
KevinX8 e862e452c0 New translations strings.xml (German) 2020-12-21 11:12:08 +00:00
KevinX8 8d29b1a60e New translations strings.xml (Danish) 2020-12-21 11:12:06 +00:00
KevinX8 f52c1f3408 New translations strings.xml (Catalan) 2020-12-21 11:12:04 +00:00
KevinX8 5defde0351 New translations strings.xml (Afrikaans) 2020-12-21 11:12:02 +00:00
KevinX8 d598490517 New translations strings.xml (Indonesian) 2020-12-21 11:11:59 +00:00
KevinX8 f757a54f8e New translations strings.xml (Bengali) 2020-12-21 11:11:58 +00:00
KevinX8 de6cb9025a New translations strings.xml (Spanish) 2020-12-21 11:11:56 +00:00
KevinX8 72b9987cf1 New translations strings.xml (Somali) 2020-12-21 11:11:54 +00:00
KevinX8 84672e36f0 New translations strings.xml (Bengali, India) 2020-12-21 11:11:52 +00:00
KevinX8 60848e1603 New translations strings.xml (Portuguese) 2020-12-21 11:11:50 +00:00
KevinX8 bd0aa467c2 New translations strings.xml (Greek) 2020-12-21 11:11:48 +00:00
KevinX8 3ba3f7fe72 New translations strings.xml (Romanian) 2020-12-21 11:11:46 +00:00
KevinX8 67a2edf546 New translations strings.xml (Malayalam) 2020-12-21 11:11:44 +00:00
KevinX8 a939132b50 New translations strings.xml (Estonian) 2020-12-21 11:11:42 +00:00
KevinX8 e6aa10b5a0 New translations strings.xml (Chinese Traditional) 2020-12-21 11:11:41 +00:00
KevinX8 ac1358b088 New translations strings.xml (Dutch) 2020-12-21 11:11:39 +00:00
KevinX8 4786f99b68 New translations strings.xml (Sinhala) 2020-12-21 11:11:37 +00:00
KevinX8 78d8bb20e5 New translations strings.xml (Thai) 2020-12-21 11:11:35 +00:00
KevinX8 fa53008832 New translations strings.xml (Tamil) 2020-12-21 11:11:33 +00:00
KevinX8 a596e4fbc5 New translations strings.xml (Japanese) 2020-12-21 11:11:31 +00:00
KevinX8 d9e8109061 New translations strings.xml (Hebrew) 2020-12-21 11:11:30 +00:00
KevinX8 f6a1e47116 New translations strings.xml (Czech) 2020-12-21 11:11:28 +00:00
KevinX8 db449f99e8 New translations strings.xml (French) 2020-12-21 11:11:26 +00:00
KevinX8 26e9ab9e3f New translations strings.xml (Arabic) 2020-12-21 11:11:24 +00:00
KevinX8 18e9452670 New translations strings.xml (Finnish) 2020-12-21 11:11:22 +00:00
KevinX8 c7f4b6356a New translations strings.xml (Italian) 2020-12-21 11:11:19 +00:00
KevinX8 d7faf817d7 New translations strings.xml (Punjabi, Pakistan) 2020-12-21 11:11:17 +00:00
KevinX8 20533073c5 New translations strings.xml (Pashto) 2020-12-21 11:11:15 +00:00
KevinX8 04eac0196a New translations strings.xml (Sorani (Kurdish)) 2020-12-21 11:11:13 +00:00
KevinX8 e2e5b2546b New translations strings.xml (Kurmanji (Kurdish)) 2020-12-21 11:11:11 +00:00
KevinX8 4906b14377 New translations strings.xml (Filipino) 2020-12-21 11:11:09 +00:00
KevinX8 db7ba4da1a New translations strings.xml (Hindi) 2020-12-21 11:11:07 +00:00
KevinX8 c59e022fce New translations strings.xml (Azerbaijani) 2020-12-21 11:11:05 +00:00
KevinX8 63bfb0b277 New translations strings.xml (Croatian) 2020-12-21 11:11:04 +00:00
KevinX8 f3bb175211 New translations strings.xml (Marathi) 2020-12-21 11:11:02 +00:00
KevinX8 769d467f29 New translations strings.xml (Portuguese, Brazilian) 2020-12-21 11:11:00 +00:00
KevinX8 9dcab2460c New translations strings.xml (Hungarian) 2020-12-21 11:10:58 +00:00
KevinX8 17f084fe09 New translations strings.xml (Vietnamese) 2020-12-21 11:10:55 +00:00
KevinX8 76dc7fd531 New translations strings.xml (Ukrainian) 2020-12-21 11:10:54 +00:00
KevinX8 c2828a549a New translations strings.xml (Swedish) 2020-12-21 11:10:51 +00:00
KevinX8 7d5153cd99 New translations strings.xml (Serbian (Cyrillic)) 2020-12-21 11:10:50 +00:00
KevinX8 87aaeacaf3 New translations strings.xml (Russian) 2020-12-21 11:10:47 +00:00
KevinX8 0b1a70f765 New translations strings.xml (Polish) 2020-12-21 11:10:46 +00:00
KevinX8 3b498ccdec New translations strings.xml (Punjabi) 2020-12-21 11:10:44 +00:00
KevinX8 634806581a New translations strings.xml (Norwegian) 2020-12-21 11:10:42 +00:00
KevinX8 99bffea366 New translations strings.xml (Kurdish) 2020-12-21 11:10:39 +00:00
KevinX8 8f075d9501 New translations strings.xml (Korean) 2020-12-21 11:10:38 +00:00
KevinX8 e003ce8897 New translations strings.xml (Georgian) 2020-12-21 11:10:36 +00:00
KevinX8 4c18bdd504 New translations strings.xml (Chinese Simplified) 2020-12-21 11:10:34 +00:00
KevinX8 d2104f10a6 New translations strings.xml (Turkish) 2020-12-21 11:10:32 +00:00
KevinX8 296379d262 New translations strings.xml (Croatian) 2020-12-21 01:56:40 +00:00
KevinX8 d79679e134 New translations strings.xml (Vietnamese) 2020-12-21 01:56:38 +00:00
KevinX8 45192f72df New translations strings.xml (Somali) 2020-12-21 01:56:35 +00:00
KevinX8 22c5ad5864 New translations strings.xml (Croatian) 2020-12-20 13:52:24 +00:00
KevinX8 cf0d8c6d95 New translations strings.xml (Sorani (Kurdish)) 2020-12-20 03:45:45 +00:00
KevinX8 1bf46c99c1 New translations strings.xml (Russian) 2020-12-20 03:45:43 +00:00
KevinX8 edc04feccc New translations strings.xml (Polish) 2020-12-20 03:45:41 +00:00
KevinX8 b6c6bfa40c New translations strings.xml (Korean) 2020-12-20 03:45:40 +00:00
X1nto 2a5e46855c Fixed crash after updating to 2.1.0 2020-12-19 20:09:42 +04:00
KevinX8 938e6bc537 New translations strings.xml (Acholi) 2020-12-19 15:44:34 +00:00
KevinX8 17e311ef20 New translations strings.xml (German) 2020-12-19 15:44:32 +00:00
KevinX8 17d17cd008 New translations strings.xml (Somali) 2020-12-19 15:44:30 +00:00
KevinX8 06211c7f9c
Merge pull request #320 from YTVanced/dev
fixed crash on EMUI
2020-12-19 14:43:17 +00:00
X1nto 983a9bb361 fixed crash on EMUI 2020-12-19 18:35:45 +04:00
KevinX8 bc2326c2f8 Merge remote-tracking branch 'origin/master' 2020-12-19 14:18:54 +00:00
KevinX8 a69b232d38 Updated dependencies 2020-12-19 14:18:36 +00:00
KevinX8 aab7da7c14
Merge pull request #319 from YTVanced/dev
Potential notification fix
2020-12-19 13:39:54 +00:00
X1nto 68330db645 Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2020-12-19 17:38:05 +04:00
X1nto 47951f8846 potential fix of notifications 2020-12-19 17:37:54 +04:00
KevinX8 b5fb17a527
Merge pull request #318 from YTVanced/dev
Manager 2.1.0
2020-12-19 13:07:59 +00:00
Tornike Khintibidze bf98002cbd
Merge pull request #317 from YTVanced/l10n_dev
New Crowdin updates
2020-12-19 15:39:27 +04:00
Tornike Khintibidze 5b2f94f594
Merge branch 'master' into dev 2020-12-19 12:53:38 +04:00
X1nto dfb410f85f removed optional buildToolsVersion 2020-12-19 12:51:00 +04:00
X1nto f637d2eef8 added isFetching LiveData 2020-12-19 12:35:07 +04:00
X1nto d4f1728c09 improved root uninstaller 2020-12-19 12:19:22 +04:00
KevinX8 6838b1a248 New translations strings.xml (Italian) 2020-12-19 03:44:09 +00:00
KevinX8 a75cb638cf New translations strings.xml (Greek) 2020-12-19 03:44:08 +00:00
KevinX8 1b08592a4f New translations strings.xml (Danish) 2020-12-19 03:44:06 +00:00
KevinX8 55bbd412d1 New translations strings.xml (Indonesian) 2020-12-19 03:44:04 +00:00
X1nto 81ace5394b made accent dialog cancelable 2020-12-18 23:58:54 +04:00
X1nto 538f4d82b5 Bumped up version 2020-12-18 21:10:53 +04:00
X1nto 7d5462a87d adjusted splash screen logo size 2020-12-18 20:59:36 +04:00
X1nto b452da43c0 removed predefined font from toolbar title 2020-12-18 20:29:20 +04:00
Tornike Khintibidze f248760938
Merge pull request #315 from YTVanced/l10n_dev
New Crowdin updates
2020-12-18 20:02:54 +04:00
KevinX8 01417a2cf0 New translations strings.xml (Punjabi, Pakistan) 2020-12-18 15:50:04 +00:00
KevinX8 2a171fa52e New translations strings.xml (German) 2020-12-18 15:50:02 +00:00
KevinX8 c6e720ec1a New translations strings.xml (Danish) 2020-12-18 15:50:00 +00:00
KevinX8 67646d5b69 New translations strings.xml (Catalan) 2020-12-18 15:49:58 +00:00
KevinX8 a64c613dbd New translations strings.xml (Afrikaans) 2020-12-18 15:49:56 +00:00
KevinX8 eb1cd4bc81 New translations strings.xml (Indonesian) 2020-12-18 15:49:53 +00:00
KevinX8 2d8adea7d4 New translations strings.xml (Bengali) 2020-12-18 15:49:51 +00:00
KevinX8 80238e73f8 New translations strings.xml (Spanish) 2020-12-18 15:49:49 +00:00
KevinX8 4a571f1671 New translations strings.xml (Somali) 2020-12-18 15:49:46 +00:00
KevinX8 2f50ead0e3 New translations strings.xml (Bengali, India) 2020-12-18 15:49:44 +00:00
KevinX8 1e5588b046 New translations strings.xml (Portuguese) 2020-12-18 15:49:42 +00:00
KevinX8 94b8e499f0 New translations strings.xml (Greek) 2020-12-18 15:49:41 +00:00
KevinX8 1fe5e67796 New translations strings.xml (Romanian) 2020-12-18 15:49:39 +00:00
KevinX8 d04fe4c510 New translations strings.xml (Malayalam) 2020-12-18 15:49:37 +00:00
KevinX8 b4e76f6dbe New translations strings.xml (Estonian) 2020-12-18 15:49:35 +00:00
KevinX8 b75110f660 New translations strings.xml (Chinese Traditional) 2020-12-18 15:49:33 +00:00
KevinX8 cf86018ef1 New translations strings.xml (Dutch) 2020-12-18 15:49:31 +00:00
KevinX8 0928f93af1 New translations strings.xml (Sinhala) 2020-12-18 15:49:29 +00:00
KevinX8 52ea32c0c4 New translations strings.xml (Thai) 2020-12-18 15:49:27 +00:00
KevinX8 30f542bd84 New translations strings.xml (Tamil) 2020-12-18 15:49:25 +00:00
KevinX8 ffa6ef9fda New translations strings.xml (Japanese) 2020-12-18 15:49:24 +00:00
KevinX8 cf5e97e414 New translations strings.xml (Hebrew) 2020-12-18 15:49:22 +00:00
KevinX8 94169eaec5 New translations strings.xml (Czech) 2020-12-18 15:49:19 +00:00
KevinX8 87dd5d1810 New translations strings.xml (French) 2020-12-18 15:49:18 +00:00
KevinX8 4903b5dcab New translations strings.xml (Arabic) 2020-12-18 15:49:16 +00:00
KevinX8 81f623c6eb New translations strings.xml (Finnish) 2020-12-18 15:49:14 +00:00
KevinX8 461781bcdd New translations strings.xml (Italian) 2020-12-18 15:49:12 +00:00
KevinX8 3a484fea3a New translations strings.xml (Pashto) 2020-12-18 15:49:10 +00:00
KevinX8 0de90e5b97 New translations strings.xml (Sorani (Kurdish)) 2020-12-18 15:49:09 +00:00
KevinX8 cc522e92d2 New translations strings.xml (Kurmanji (Kurdish)) 2020-12-18 15:49:07 +00:00
KevinX8 4a481529aa New translations strings.xml (Filipino) 2020-12-18 15:49:05 +00:00
KevinX8 69667ef6ae New translations strings.xml (Hindi) 2020-12-18 15:49:03 +00:00
KevinX8 f7efdca4fe New translations strings.xml (Azerbaijani) 2020-12-18 15:49:01 +00:00
KevinX8 41d4190650 New translations strings.xml (Croatian) 2020-12-18 15:48:59 +00:00
KevinX8 ca78919908 New translations strings.xml (Marathi) 2020-12-18 15:48:57 +00:00
KevinX8 528d73ccaf New translations strings.xml (Portuguese, Brazilian) 2020-12-18 15:48:55 +00:00
KevinX8 05d124b4b3 New translations strings.xml (Vietnamese) 2020-12-18 15:48:53 +00:00
KevinX8 97004f4981 New translations strings.xml (Hungarian) 2020-12-18 15:48:51 +00:00
KevinX8 4e814701ec New translations strings.xml (Chinese Simplified) 2020-12-18 15:48:49 +00:00
KevinX8 8df0583c34 New translations strings.xml (Swedish) 2020-12-18 15:48:48 +00:00
KevinX8 10b8119c19 New translations strings.xml (Serbian (Cyrillic)) 2020-12-18 15:48:46 +00:00
KevinX8 d205c3e9f5 New translations strings.xml (Russian) 2020-12-18 15:48:44 +00:00
KevinX8 f74bcbe4ed New translations strings.xml (Polish) 2020-12-18 15:48:42 +00:00
KevinX8 351ff9185d New translations strings.xml (Punjabi) 2020-12-18 15:48:41 +00:00
KevinX8 ced0085bbc New translations strings.xml (Norwegian) 2020-12-18 15:48:39 +00:00
KevinX8 cdf36ee2fd New translations strings.xml (Kurdish) 2020-12-18 15:48:37 +00:00
KevinX8 6496961a0b New translations strings.xml (Korean) 2020-12-18 15:48:35 +00:00
KevinX8 0d636cb299 New translations strings.xml (Georgian) 2020-12-18 15:48:34 +00:00
KevinX8 e421c401e3 New translations strings.xml (Ukrainian) 2020-12-18 15:48:32 +00:00
KevinX8 7e0388c3df New translations strings.xml (Turkish) 2020-12-18 15:48:30 +00:00
X1nto db64e1c3db restored files 2020-12-18 16:49:53 +04:00
X1nto b820467f7e removed unused strings 2020-12-18 16:43:26 +04:00
X1nto f8e424aa29 updated string 2020-12-18 16:40:50 +04:00
X1nto 9c89954660 removed logs 2020-12-18 16:13:13 +04:00
X1nto fa1eeb8c9d LiveData and accent colot fixes 2020-12-18 16:12:52 +04:00
X1nto 9dea7e95ab added advanced menu for nonroot installer 2020-12-17 11:17:58 +04:00
X1nto ec92a8b415 replaced observable fields with livedata 2020-12-16 17:21:45 +04:00
X1nto 620c96f83b adjusted luminance value 2020-12-16 11:51:31 +04:00
X1nto e4ceea565a Adjusted color picker size to fit all screens 2020-12-16 11:47:02 +04:00
X1nto edc17a81dc fixed preferences 2020-12-15 19:55:30 +04:00
X1nto da444c598a Adjusted color picker size 2020-12-15 16:40:19 +04:00
X1nto 995ea14369 Locked app to portrait 2020-12-15 12:35:11 +04:00
X1nto 8bd9f17e20 Changed RGB wheel to HSL 2020-12-15 12:23:27 +04:00
X1nto 15b289e83e improved hex input field 2020-12-15 11:32:47 +04:00
X1nto cc72b1c7d1 Added accent color picker 2020-12-15 01:18:58 +04:00
X1nto 07f720e39b changed splash screen bg color 2020-12-14 12:01:54 +04:00
X1nto cdd075a62c removed logs 2020-12-13 15:55:14 +04:00
X1nto c67ddce9f1 new icon 2020-12-13 15:54:52 +04:00
X1nto 9ddc7d6bb6 revert some changes 2020-12-12 12:14:12 +04:00
X1nto e681da79e6 updated layout 2020-12-11 23:43:51 +04:00
X1nto ed3b98b3cd equals() optimisation 2020-12-11 23:23:39 +04:00
X1nto 3a9ac80648 cleanup 2020-12-11 23:22:43 +04:00
X1nto 50859d7de0 moved URLs to a Companion Object 2020-12-11 23:03:52 +04:00
X1nto e008bb6c73 removed microg settings button 2020-12-11 20:26:29 +04:00
X1nto 1d2667fb7d Improved root package installer code 2020-12-05 17:39:46 +04:00
ostajic 59193c528c string escape test fix 2020-12-02 00:02:01 +01:00
Tornike Khintibidze 2e71eb3c3e
Merge pull request #298 from HaliksaR/improvement/core-mvi
improvement/core-mvi small refactoring and update examples
2020-11-30 13:33:51 +04:00
HaliksaR 5c478a7f5a improvement/core-mvi write tests 2020-11-30 16:26:01 +07:00
HaliksaR 17c5e04143 improvement/core-mvi small refactoring and update examples 2020-11-30 13:41:54 +07:00
Tornike Khintibidze a6e6d732dc
Merge pull request #294 from HaliksaR/improvement/core-mvi
improvement/core-mvi create core-mvi
2020-11-29 14:17:31 +04:00
HaliksaR defa5590a5 improvement/core-mvi create core-mvi 2020-11-29 05:22:24 +07:00
Tornike Khintibidze 6fd4cea0b1
Merge pull request #293 from crazyuploader/patch-1
Update links in README.md
2020-11-28 22:08:15 +04:00
Jugal Kishore 61fdb54bde
Update README.md
Use latest GitHub release URL instead of a 404 error page
2020-11-28 23:32:50 +05:30
Tornike Khintibidze 9d72738a24
Merge pull request #292 from HaliksaR/feature/home-screen
feature/home-screen (Future functionality) Change realisation.
2020-11-28 20:15:28 +04:00
HaliksaR 19eb04f19a feature/home-screen (Future functionality) Change realisation. 2020-11-28 22:58:02 +07:00
Tornike Khintibidze f4e4ec4825
Merge pull request #291 from HaliksaR/feature/home-screen
feature/home-screen (Future functionality) Added access to the local PackageManager
2020-11-28 14:44:50 +04:00
HaliksaR 8b8e260945 feature/home-screen (Future functionality) Added access to the local PackageManager 2020-11-28 07:11:03 +07:00
Tornike Khintibidze 27854e4ec9
Merge pull request #290 from HaliksaR/feature/home-screen
feature/home-screen (Future functionality) Сovering layers with tests.
2020-11-27 22:08:16 +04:00
HaliksaR 6d98c79e35 feature/home-screen (Future functionality) Сovering layers with tests. 2020-11-28 00:58:41 +07:00
Tornike Khintibidze a38d7e43e2
Merge pull request #287 from HaliksaR/improvement/library-network
improvement/library-network create library-network
2020-11-26 21:17:48 +04:00
Tornike Khintibidze a89cf81e2f
Merge pull request #286 from HaliksaR/improvement/core-presentation
improvement/core-presentation create core-presentation
2020-11-26 21:04:59 +04:00
HaliksaR 81607b3b2c improvement/library-network create library-network and add base functional 2020-11-26 23:59:38 +07:00
HaliksaR feeaadc497 improvement/core-presentation create core-presentation 2020-11-26 23:52:51 +07:00
Tornike Khintibidze 3944b69609
Merge pull request #288 from HaliksaR/feature/home-screen
feature/home-screen (FF) home-screen module
2020-11-26 20:41:59 +04:00
HaliksaR 3fb29c57b5 feature/home-screen (
Future functionality) create home-screen data domain and init presentation and ui
2020-11-26 23:31:51 +07:00
Tornike Khintibidze 3e91ec6a74
Merge pull request #285 from HaliksaR/improvement/core-ui
improvement/core-ui create core-ui and replce base abstracts
2020-11-26 20:01:00 +04:00
HaliksaR e89b0b2b55 improvement/core-ui create core-ui and replase base abstracts 2020-11-26 22:45:47 +07:00
Tornike Khintibidze 7586c50f45
Updated issue template 2020-11-25 11:50:53 +04:00
Tornike Khintibidze df8de693b3
Updated issue template 2020-11-25 11:49:11 +04:00
Tornike Khintibidze 477bda0459
Merge pull request #280 from HaliksaR/improvement/view-binding
Clear All data binding
2020-11-24 00:59:51 +04:00
HaliksaR 939468d3d2 Clear All data binding 2020-11-24 03:35:02 +07:00
Xinto c41e9966f3 Updated README 2020-11-23 20:03:57 +04:00
Xinto dd3dba0fad Switched to Fuel downloader 2020-11-23 20:00:41 +04:00
Xinto a1827fd8c7 Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2020-11-19 14:04:17 +04:00
Xinto 6794286c56 gradle updates 2020-11-19 14:01:03 +04:00
Xinto b7247f5bf8 fixed #272 2020-11-19 12:54:58 +04:00
KevinX8 604a68af34
Merge pull request #262 from YTVanced/dev
v2.0.1 release
2020-11-16 13:43:33 +00:00
KevinX8 e2c6163b19
New Crowdin updates (#261)
* New translations strings.xml (Turkish)

* New translations strings.xml (Azerbaijani)

* New translations strings.xml (Norwegian)

* New translations strings.xml (Punjabi)

* New translations strings.xml (Polish)

* New translations strings.xml (Portuguese)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Tamil)

* New translations strings.xml (Hindi)

* New translations strings.xml (Georgian)

* New translations strings.xml (Sinhala)

* New translations strings.xml (Bengali, India)

* New translations strings.xml (Sorani (Kurdish))

* New translations strings.xml (Marathi)

* New translations strings.xml (Thai)

* New translations strings.xml (Croatian)

* New translations strings.xml (Estonian)

* New translations strings.xml (Kurmanji (Kurdish))

* New translations strings.xml (Pashto)

* New translations strings.xml (Korean)

* New translations strings.xml (Japanese)

* New translations strings.xml (German)

* New translations strings.xml (Romanian)

* New translations strings.xml (Kurdish)

* New translations strings.xml (Serbian (Cyrillic))

* New translations strings.xml (Arabic)

* New translations strings.xml (Bengali)

* New translations strings.xml (French)

* New translations strings.xml (Italian)

* New translations strings.xml (Spanish)

* New translations strings.xml (Catalan)

* New translations strings.xml (Greek)

* New translations strings.xml (Finnish)

* New translations strings.xml (Hebrew)

* New translations strings.xml (Hungarian)

* New translations strings.xml (Punjabi, Pakistan)
2020-11-16 13:36:23 +00:00
Xinto d0b9b99c16 Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2020-11-16 15:52:49 +04:00
Xinto 48f376a246 small updates 2020-11-16 15:52:23 +04:00
KevinX8 6a0792aa91
New Crowdin updates (#246)
* New translations strings.xml (Turkish)

* New translations strings.xml (Portuguese, Brazilian)

* New translations strings.xml (Bengali)

* New translations strings.xml (Finnish)

* New translations strings.xml (Italian)

* New translations strings.xml (Japanese)

* New translations strings.xml (Norwegian)

* New translations strings.xml (Russian)

* New translations strings.xml (Azerbaijani)

* New translations strings.xml (Bengali, India)

* New translations strings.xml (Kurdish)

* New translations strings.xml (Bengali)

* New translations strings.xml (French)

* New translations strings.xml (Korean)

* New translations strings.xml (Dutch)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Tamil)

* New translations strings.xml (Azerbaijani)

* New translations strings.xml (Bengali, India)

* New translations strings.xml (Sorani (Kurdish))

* New translations strings.xml (Serbian (Cyrillic))

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Hindi)

* New translations strings.xml (Turkish)

* New translations strings.xml (Portuguese)

* New translations strings.xml (Japanese)

* New translations strings.xml (Georgian)

* New translations strings.xml (Korean)

* New translations strings.xml (Dutch)

* New translations strings.xml (Norwegian)

* New translations strings.xml (Punjabi)

* New translations strings.xml (Polish)

* New translations strings.xml (Russian)

* New translations strings.xml (Hungarian)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Tamil)

* New translations strings.xml (Azerbaijani)

* New translations strings.xml (Hindi)

* New translations strings.xml (Sinhala)

* New translations strings.xml (Bengali, India)

* New translations strings.xml (Italian)

* New translations strings.xml (Hebrew)

* New translations strings.xml (German)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Kurdish)

* New translations strings.xml (Serbian (Cyrillic))

* New translations strings.xml (Arabic)

* New translations strings.xml (Bengali)

* New translations strings.xml (Finnish)

* New translations strings.xml (Romanian)

* New translations strings.xml (French)

* New translations strings.xml (Spanish)

* New translations strings.xml (Afrikaans)

* New translations strings.xml (Catalan)

* New translations strings.xml (Czech)

* New translations strings.xml (Danish)

* New translations strings.xml (Greek)

* New translations strings.xml (Sorani (Kurdish))
2020-11-15 19:08:58 +00:00
Tornike Khintibidze d076466f8f
Merge pull request #259 from HaliksaR/view-binding-dialogs
View binding BottomSheetDialogFragment
2020-11-15 23:07:53 +04:00
Xinto 98f634051a fixed crash when setting livedata value from a background thread 2020-11-15 23:02:49 +04:00
HaliksaR f8d204a4db ManagerUpdateDialog FIX 2020-11-16 01:15:03 +07:00
HaliksaR 707ed94878 VancedPreferencesDialog migrate to view binding 2020-11-16 01:15:03 +07:00
HaliksaR 94d339732f VancedLanguageSelectionDialog migrate to view binding 2020-11-16 01:15:02 +07:00
HaliksaR 5f030608b0 SelectAppsDialog migrate to view binding 2020-11-16 01:15:02 +07:00
HaliksaR 83ac980ecc MusicPreferencesDialog migrate to view binding 2020-11-16 01:15:02 +07:00
HaliksaR 7e05a3846f ManagerVariantDialog migrate to view binding 2020-11-16 01:15:02 +07:00
HaliksaR 874b5d6f90 ManagerThemeDialog migrate to view binding 2020-11-16 01:15:02 +07:00
HaliksaR d929092888 ManagerLanguageDialog migrate to view binding 2020-11-16 01:15:02 +07:00
HaliksaR a7545071a1 ManagerAccentColorDialog migrate to view binding 2020-11-16 01:15:02 +07:00
HaliksaR 00d3003498 InstallationFilesDetectedDialog migrate to view binding 2020-11-16 01:15:01 +07:00
HaliksaR a3767e4c9e AppVersionSelectorDialog and VancedThemeSelectorDialog migrate to view binding 2020-11-16 01:14:00 +07:00
HaliksaR a1d4cdbbe5 create BindingBottomSheetDialogFragment 2020-11-16 01:14:00 +07:00
Xinto 52bb26b3e0 added back threading to installers bruh 2020-11-15 21:13:27 +04:00
Xinto dc77080d37 cleanup 2020-11-15 21:04:23 +04:00
Xinto bef7ff4cb0 removed threading from installers 2020-11-15 20:54:30 +04:00
Xinto 08cca4b56b updated icons 2020-11-15 20:53:36 +04:00
Xinto 76a867142e fixed livedata getter 2020-11-15 20:15:45 +04:00
Tornike Khintibidze 8c44377e7d
Merge pull request #257 from HaliksaR/view-binding-dialogs
View binding dialogs
2020-11-15 20:08:41 +04:00
Xinto 915f7a3773 even more crash fixes 2020-11-15 20:06:25 +04:00
Xinto 3d86d6b309 made music enabled by default 2020-11-15 19:41:46 +04:00
Xinto ce4b06f2b3 crash fixes in dialogs 2020-11-15 19:39:33 +04:00
HaliksaR e60eec1cd9 URLChangeDialog view binding 2020-11-15 22:00:57 +07:00
HaliksaR d4f01eb8b3 ManagerUpdateDialog, AppDownloadDialog view binding migrate ProgressModel to MutableLiveData 2020-11-15 21:53:25 +07:00
HaliksaR 41cd02c256 AppInfoDialog view binding and add BindingDialogFragment 2020-11-15 21:11:44 +07:00
Xinto 89b7d011b0 fixed crash when no internet connection 2020-11-15 17:22:17 +04:00
Xinto ce5e561354 fixed a visual bug in manager update center 2020-11-15 16:53:09 +04:00
Xinto b53aff9b23 fixed more android 5 and 6 crash 2020-11-15 16:52:24 +04:00
Xinto af76bcb2a6 Bumped up version 2020-11-15 14:48:56 +04:00
Xinto 870725a09a null safety for installation preferences 2020-11-15 14:29:20 +04:00
Xinto 411bb08ba3 fixed conflict 2020-11-15 14:24:32 +04:00
Xinto c33e069e79 language selector fixes 2020-11-15 13:49:40 +04:00
Tornike Khintibidze 354a78a28f
Merge pull request #251 from HaliksaR/improvements/viewbinding
Migrage All Fragments to view binding
2020-11-15 13:21:10 +04:00
Tornike Khintibidze ec9eadf7b9
Merge pull request #245 from seahindeniz/patch-1
Fix grammar
2020-11-15 13:20:50 +04:00
Tornike Khintibidze d01e0f70d4
Merge pull request #253 from HaliksaR/fix-npe
Fix npe
2020-11-15 11:51:52 +04:00
Tornike Khintibidze 051e3cd337
Merge pull request #254 from HaliksaR/fix-coroutine
Small fixes coroutine
2020-11-15 11:51:27 +04:00
HaliksaR 32cd632506 Small fixes coroutine
I could not fix everything, as there were very strange moments in the code ...

Also, not all fixes are as beautiful as we would like.
2020-11-15 07:26:07 +07:00
HaliksaR bff06750cd fix PackageHelper.copy npe 2020-11-15 06:43:29 +07:00
HaliksaR 7d68735706 fix doCommitSession npe 2020-11-15 06:43:29 +07:00
HaliksaR 4b100b7b57 fix getJson npe 2020-11-15 06:43:29 +07:00
HaliksaR ad173c9587 fix checkSHA256 npe 2020-11-15 06:43:29 +07:00
HaliksaR 3b092c9652 fix VancedLanguageSelectionDialog langPrefs npe 2020-11-15 06:43:28 +07:00
HaliksaR b7ba61b5e2 fix VancedDownloader lang npe 2020-11-15 06:43:28 +07:00
HaliksaR 31162db145 fix MiuiHelper npe 2020-11-15 06:43:28 +07:00
HaliksaR 8a3d96a3de WelcomeFragment view binding 2020-11-15 05:24:57 +07:00
HaliksaR e126878035 SettingsFragment view binding, fixed code and add ext 2020-11-15 05:24:57 +07:00
HaliksaR 60b297adc1 SelectAppsFragment view binding 2020-11-15 04:55:29 +07:00
HaliksaR cdd5228447 HomeFragment view binding 2020-11-15 04:54:54 +07:00
HaliksaR 4d14ddf1c6 GrantRootFragment view binding 2020-11-15 04:43:20 +07:00
Tornike Khintibidze 50a59a4eb8
Merge pull request #250 from HaliksaR/improvements/viewbinding
improvements view binding
2020-11-15 01:26:57 +04:00
HaliksaR be23fe821d improvements view binding
Why use a heavy data binding for such things if there is a view binding?
Moreover, data binding is bad!
2020-11-15 04:05:35 +07:00
Sahin D f5708c212e
Fix grammar 2020-11-14 03:08:24 +03:00
KevinX8 1fffa48d64
Merge pull request #237 from YTVanced/dev
2.0 hotfix
2020-11-13 16:29:24 +00:00
KevinX8 ff14e65d13
Merge pull request #236 from YTVanced/l10n_dev
New Crowdin updates
2020-11-13 16:28:54 +00:00
Xinto 2e8ed2cb37 changed switch color for settings 2020-11-13 20:23:28 +04:00
KevinX8 ce8e59a22d New translations strings.xml (Danish) 2020-11-13 16:14:18 +00:00
KevinX8 13a1f7e1b8 New translations strings.xml (Spanish) 2020-11-13 16:14:14 +00:00
KevinX8 205ccc5adc New translations strings.xml (Portuguese, Brazilian) 2020-11-13 16:14:09 +00:00
KevinX8 1e7abb1f9a New translations strings.xml (Serbian (Cyrillic)) 2020-11-13 16:14:07 +00:00
KevinX8 caf9771154 New translations strings.xml (Chinese Traditional) 2020-11-13 16:14:04 +00:00
KevinX8 873e4aa7e8 New translations strings.xml (Italian) 2020-11-13 16:14:00 +00:00
KevinX8 8c062b7b0a New translations strings.xml (Japanese) 2020-11-13 16:13:48 +00:00
Xinto eaec53cd80 fixed a visual bug in manager update dialog 2020-11-13 20:03:11 +04:00
Xinto 32efb91aa8 Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2020-11-13 19:44:08 +04:00
Xinto ebd20f245f cleanup 2020-11-13 19:41:56 +04:00
Xinto a8d35790db fixed nonroot music installer 2020-11-13 19:39:50 +04:00
KevinX8 01f38086c4 update deps 2020-11-13 15:18:41 +00:00
KevinX8 9160836302
Merge pull request #234 from YTVanced/dev
Manager 2.0
2020-11-13 14:36:34 +00:00
KevinX8 92c42ffba5
Merge branch 'master' into dev 2020-11-13 14:35:47 +00:00
KevinX8 931b81c3f3
New Crowdin updates (#225)
* New translations strings.xml (Turkish)

* New translations strings.xml (Portuguese)

* New translations strings.xml (Japanese)

* New translations strings.xml (Georgian)

* New translations strings.xml (Korean)

* New translations strings.xml (Dutch)

* New translations strings.xml (Norwegian)

* New translations strings.xml (Punjabi)

* New translations strings.xml (Polish)

* New translations strings.xml (Russian)

* New translations strings.xml (Hungarian)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Tamil)

* New translations strings.xml (Azerbaijani)

* New translations strings.xml (Hindi)

* New translations strings.xml (Sinhala)

* New translations strings.xml (Bengali, India)

* New translations strings.xml (Italian)

* New translations strings.xml (Hebrew)

* New translations strings.xml (German)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Chinese Simplified)

* New translations strings.xml (Chinese Traditional)

* New translations strings.xml (Kurdish)

* New translations strings.xml (Swedish)

* New translations strings.xml (Serbian (Cyrillic))

* New translations strings.xml (Portuguese, Brazilian)

* New translations strings.xml (Arabic)

* New translations strings.xml (Bengali)

* New translations strings.xml (Finnish)

* New translations strings.xml (Romanian)

* New translations strings.xml (French)

* New translations strings.xml (Spanish)

* New translations strings.xml (Afrikaans)

* New translations strings.xml (Catalan)

* New translations strings.xml (Czech)

* New translations strings.xml (Danish)

* New translations strings.xml (Greek)

* New translations strings.xml (Sorani (Kurdish))

* New translations strings.xml (Turkish)

* New translations strings.xml (Czech)

* New translations strings.xml (Russian)

* New translations strings.xml (Polish)

* New translations strings.xml (Dutch)

* New translations strings.xml (Japanese)

* New translations strings.xml (Italian)

* New translations strings.xml (Greek)

* New translations strings.xml (French)

* New translations strings.xml (German)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Arabic)

* New translations strings.xml (Portuguese, Brazilian)

* New translations strings.xml (Swedish)

* New translations strings.xml (Kurdish)

* New translations strings.xml (Chinese Traditional)

* New translations strings.xml (Chinese Simplified)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Spanish)

* New translations strings.xml (Russian)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Tamil)

* New translations strings.xml (Danish)

* New translations strings.xml (Hungarian)

* New translations strings.xml (Bengali, India)

* New translations strings.xml (Arabic)

* New translations strings.xml (Punjabi)

* New translations strings.xml (Sinhala)

* New translations strings.xml (Bengali, India)

* New translations strings.xml (Chinese Simplified)

* New translations strings.xml (Chinese Traditional)

* New translations strings.xml (Arabic)

* New translations strings.xml (Romanian)

* New translations strings.xml (Hungarian)

* New translations strings.xml (Arabic)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Sorani (Kurdish))

* New translations strings.xml (German)

* New translations strings.xml (Japanese)

* New translations strings.xml (Portuguese)

* New translations strings.xml (Sorani (Kurdish))

* New translations strings.xml (Hebrew)

* New translations strings.xml (Turkish)

* New translations strings.xml (Portuguese)

* New translations strings.xml (Japanese)

* New translations strings.xml (Georgian)

* New translations strings.xml (Korean)

* New translations strings.xml (Dutch)

* New translations strings.xml (Norwegian)

* New translations strings.xml (Punjabi)

* New translations strings.xml (Polish)

* New translations strings.xml (Russian)

* New translations strings.xml (Hungarian)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Tamil)

* New translations strings.xml (Azerbaijani)

* New translations strings.xml (Hindi)

* New translations strings.xml (Sinhala)

* New translations strings.xml (Bengali, India)

* New translations strings.xml (Italian)

* New translations strings.xml (Hebrew)

* New translations strings.xml (German)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Chinese Simplified)

* New translations strings.xml (Chinese Traditional)

* New translations strings.xml (Kurdish)

* New translations strings.xml (Swedish)

* New translations strings.xml (Serbian (Cyrillic))

* New translations strings.xml (Portuguese, Brazilian)

* New translations strings.xml (Arabic)

* New translations strings.xml (Bengali)

* New translations strings.xml (Finnish)

* New translations strings.xml (Romanian)

* New translations strings.xml (French)

* New translations strings.xml (Spanish)

* New translations strings.xml (Afrikaans)

* New translations strings.xml (Catalan)

* New translations strings.xml (Czech)

* New translations strings.xml (Danish)

* New translations strings.xml (Greek)

* New translations strings.xml (Sorani (Kurdish))

* New translations strings.xml (Chinese Simplified)

* New translations strings.xml (Chinese Traditional)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Bengali)

* New translations strings.xml (Romanian)

* New translations strings.xml (Korean)

* New translations strings.xml (Polish)

* New translations strings.xml (Ukrainian)
2020-11-13 14:27:17 +00:00
Xinto 1ccb043918 moved strings to strings.xml 2020-11-13 00:09:06 +04:00
Xinto d397cd787b updated readmeme 2020-11-12 23:59:21 +04:00
Xinto a47cac243f dependency updates 2020-11-12 23:32:03 +04:00
Xinto b20f20e853 moved string to strings.xml 2020-11-12 23:31:13 +04:00
Xinto a6048b4df0 fixed music installer 2020-11-12 23:00:10 +04:00
Xinto 31885da059 music installer fixes 2020-11-10 22:16:29 +04:00
Xinto 1c735c911e updated adguard url 2020-11-10 16:56:07 +04:00
Xinto eda173c327 added a backup url for downloads 2020-11-10 16:49:27 +04:00
Xinto 9094cca5a8 fixed download crash 2020-11-10 16:38:21 +04:00
Xinto cded9e65ea fixed version selector crash 2020-11-10 16:34:14 +04:00
Xinto 57e8c5c1bc Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2020-11-09 22:27:07 +04:00
Xinto 6d883e3fd7 some improvements 2020-11-09 22:26:11 +04:00
Xinto 0d7d19ac2b minor fixes 2020-11-09 22:25:08 +04:00
KevinX8 8efbc8efc7
change url 2020-11-09 09:06:00 +00:00
Xinto b2fa77b640 dev settings cleanup 2020-11-08 17:46:30 +04:00
Xinto 6c421185f3 fixed missing layout file 2020-11-08 17:43:37 +04:00
Xinto dfe276c52b fixed conflicts 2020-11-08 17:41:40 +04:00
Xinto 831fd3e8ad kinda added a root music installer 2020-11-08 17:30:12 +04:00
Xinto 63c11b3474 cleanup 2020-11-08 16:46:17 +04:00
Xinto 4cf99f10a1 minor bug fixes 2020-11-08 16:13:58 +04:00
KevinX8 24678c6ef7
New Crowdin updates (#224)
* New translations strings.xml (Turkish)

* New translations strings.xml (Portuguese)

* New translations strings.xml (Japanese)

* New translations strings.xml (Georgian)

* New translations strings.xml (Korean)

* New translations strings.xml (Dutch)

* New translations strings.xml (Norwegian)

* New translations strings.xml (Punjabi)

* New translations strings.xml (Polish)

* New translations strings.xml (Russian)

* New translations strings.xml (Hungarian)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Tamil)

* New translations strings.xml (Azerbaijani)

* New translations strings.xml (Hindi)

* New translations strings.xml (Sinhala)

* New translations strings.xml (Bengali, India)

* New translations strings.xml (Italian)

* New translations strings.xml (Hebrew)

* New translations strings.xml (German)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Chinese Simplified)

* New translations strings.xml (Chinese Traditional)

* New translations strings.xml (Kurdish)

* New translations strings.xml (Swedish)

* New translations strings.xml (Serbian (Cyrillic))

* New translations strings.xml (Portuguese, Brazilian)

* New translations strings.xml (Arabic)

* New translations strings.xml (Bengali)

* New translations strings.xml (Finnish)

* New translations strings.xml (Romanian)

* New translations strings.xml (French)

* New translations strings.xml (Spanish)

* New translations strings.xml (Afrikaans)

* New translations strings.xml (Catalan)

* New translations strings.xml (Czech)

* New translations strings.xml (Danish)

* New translations strings.xml (Greek)

* New translations strings.xml (Sorani (Kurdish))
2020-11-07 13:11:19 +00:00
Xinto 467fc26360 merge and cleanup 2020-11-05 22:35:48 +04:00
Xinto c897f55039 added a version selector and more dialogs 2020-11-05 22:26:27 +04:00
Tornike Khintibidze 83764ec7fa
Merge pull request #214 from TacoTheDank/dev
Library updates and KTX extensions
2020-11-05 21:17:45 +04:00
TacoTheDank cf0b0de478 Use some KTX extensions 2020-11-05 11:35:49 -05:00
TacoTheDank e856bcbbfe Some Kotlin cleanup 2020-11-05 11:07:13 -05:00
TacoTheDank 7aac687b46 Reorganize third party libraries 2020-11-05 10:36:50 -05:00
Xinto 6015b072b6 fixed crowdin-related issues 2020-11-03 11:28:18 +04:00
Xinto d41095a6f0 updated crowdin init 2020-11-02 19:53:12 +04:00
Xinto 1b7e8db438 removed a test string 2020-11-02 18:57:59 +04:00
Xinto 682ffc758b added a test string 2020-11-02 18:48:20 +04:00
Xinto 7b2d7a997b updated data fetch methods 2020-11-02 18:41:39 +04:00
Xinto 4d1e334dd2 Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2020-11-02 00:49:32 +04:00
Xinto 456c9c0dda moved root installer to a different thread 2020-11-02 00:49:23 +04:00
ostajic 16bd43d7da Test Fix Root 3.4 2020-11-01 19:23:06 +01:00
ostajic 0f19b60e07 Test Fix Root 3.3 2020-11-01 19:06:38 +01:00
ostajic 155407dbc4 Test Fix Root 3.2 2020-11-01 18:09:16 +01:00
ostajic 9118aa848d Test Fix Root 3.1 2020-11-01 17:36:02 +01:00
ostajic d7f49a29bc Merge remote-tracking branch 'origin/dev' into dev 2020-11-01 17:33:34 +01:00
ostajic aa322ecac1 Test Fix Root 3 2020-11-01 17:33:18 +01:00
Xinto 7f2ea8cd0c bumped up dependencies 2020-11-01 19:07:00 +04:00
ostajic 371a6a442f Test Fix Root 2 2020-11-01 15:31:02 +01:00
ostajic 99b5debff1 Merge remote-tracking branch 'origin/dev' into dev 2020-11-01 15:05:15 +01:00
ostajic 2b4be709eb Test Fix Root 2020-11-01 15:04:52 +01:00
Xinto ac17ed7c9a bumped up classpaths 2020-11-01 01:37:50 +04:00
Xinto d36958222c changed codename 2020-11-01 01:22:41 +04:00
Xinto a4b0004100 cleanup 2020-11-01 01:16:58 +04:00
Xinto f242aa8c09 small fixes 2020-11-01 01:10:55 +04:00
Xinto 51b1ec1a12 fix conflicts 2020-10-31 23:52:39 +04:00
Xinto ca637c5114 manager redesign 2020-10-31 23:45:39 +04:00
Tornike Khintibidze cb98cde2ba
Merge pull request #207 from DroidSFT/fixErrorDownloadingAndroid5
Fix constant "Error Downloading ..." on some Android 5.x devices
2020-10-13 18:45:10 +04:00
DroidSFT 881b45410e Fix constant "Error Downloading ..." on some Android 5.x devices 2020-10-13 17:44:33 +03:00
Zoran Ostojic c7bb97de89
Merge pull request #202 from ostajic/dev
Root Installer Fix v9001
2020-10-11 14:53:34 +02:00
ostajic b783bc8d32 Root Installer Fix v9001 2020-10-10 15:55:40 +02:00
ostajic 55ed8ab8fd Root Installer Fix v9001 2020-10-10 15:53:52 +02:00
ostajic 685cdeed17 Root Installer Fix v9001 2020-10-10 15:52:25 +02:00
Zoran Ostojic 2bfcc01719
Merge pull request #201 from ostajic/dev
Root Installer Fix v9001
2020-10-10 15:06:37 +02:00
Zoran Ostojic 3d94d746f7
Merge branch 'dev' into dev 2020-10-10 15:06:13 +02:00
ostajic 8453aa4d14 Root Installer Fix v9001 2020-10-10 15:01:45 +02:00
Tornike Khintibidze e583beccca
Merge pull request #196 from epsimatt/patch-1
update: improved english translations
2020-10-05 16:56:29 +04:00
epsimatt d4066132ab
update: improved english translations 2020-10-05 21:18:04 +09:00
ostajic 84a525c3ef Root Installer Fix v9001 2020-10-03 21:52:57 +02:00
KevinX8 7d7c6f2e6e
Merge pull request #182 from YTVanced/dev
1.3.1 update
2020-10-03 16:20:55 +01:00
KevinX8 6426c3dc2b
Merge pull request #184 from YTVanced/l10n_dev
New Crowdin updates
2020-10-03 16:16:27 +01:00
KevinX8 b17192bdcb New translations strings.xml (Azerbaijani) 2020-10-03 16:15:43 +01:00
KevinX8 e5e8cfd6d2 New translations strings.xml (Vietnamese) 2020-10-03 16:15:24 +01:00
KevinX8 ffcc302699 New translations strings.xml (Arabic) 2020-10-03 16:15:15 +01:00
KevinX8 0ed853f1f6
Merge branch 'master' into dev 2020-10-03 16:09:35 +01:00
KevinX8 7e8141e578
Merge pull request #174 from YTVanced/l10n_dev
New Crowdin updates
2020-10-03 16:06:14 +01:00
Xinto 68e9241ab8 replaced variable call 2020-10-03 15:34:19 +04:00
Xinto 0e450bdbad made dev settings button visible 2020-10-03 15:32:23 +04:00
KevinX8 3f02a1d291 New translations strings.xml (Punjabi) 2020-10-03 05:01:54 +01:00
KevinX8 01517dca43 New translations strings.xml (German) 2020-10-03 05:01:52 +01:00
KevinX8 199812a649 New translations strings.xml (Bengali) 2020-10-03 05:01:50 +01:00
KevinX8 98819ee491 New translations strings.xml (Indonesian) 2020-10-03 05:01:48 +01:00
KevinX8 e3205247e3 New translations strings.xml (Sinhala) 2020-10-03 05:01:45 +01:00
KevinX8 4fff930fb2 New translations strings.xml (Czech) 2020-10-03 05:01:43 +01:00
KevinX8 ba11337970 New translations strings.xml (Finnish) 2020-10-03 05:01:42 +01:00
KevinX8 3cb46a7eb8 New translations strings.xml (Swedish) 2020-10-03 05:01:40 +01:00
KevinX8 0b829ae37e New translations strings.xml (Romanian) 2020-10-03 05:01:39 +01:00
KevinX8 d7e78ef932 New translations strings.xml (Danish) 2020-10-03 05:01:37 +01:00
KevinX8 348233f09f New translations strings.xml (Korean) 2020-10-03 05:01:35 +01:00
KevinX8 7c5280c9ea New translations strings.xml (Greek) 2020-10-03 05:01:33 +01:00
KevinX8 e0ad626cf5 New translations strings.xml (Dutch) 2020-10-03 05:01:32 +01:00
KevinX8 baccd7b9cd New translations strings.xml (Turkish) 2020-10-03 05:01:30 +01:00
KevinX8 a73d408c05 New translations strings.xml (Polish) 2020-10-03 05:01:28 +01:00
KevinX8 a60ce86ee9 New translations strings.xml (Japanese) 2020-10-03 05:01:26 +01:00
KevinX8 08d487a073 New translations strings.xml (Italian) 2020-10-03 05:01:25 +01:00
KevinX8 c093bce117 New translations strings.xml (Spanish) 2020-10-03 05:01:23 +01:00
KevinX8 fd6a5954e0 New translations strings.xml (French) 2020-10-03 05:01:21 +01:00
KevinX8 94b802e7d6 New translations strings.xml (Catalan) 2020-10-03 05:01:20 +01:00
KevinX8 7add661f31 New translations strings.xml (Tamil) 2020-10-03 05:01:18 +01:00
KevinX8 1455fbccd9 New translations strings.xml (Bengali, India) 2020-10-03 05:01:16 +01:00
KevinX8 3b39ba7a70 New translations strings.xml (Hindi) 2020-10-03 05:01:14 +01:00
KevinX8 d970456540 New translations strings.xml (Portuguese, Brazilian) 2020-10-03 05:01:13 +01:00
KevinX8 e6f9567db3 New translations strings.xml (Vietnamese) 2020-10-03 05:01:11 +01:00
KevinX8 cbf1ae03d2 New translations strings.xml (Chinese Traditional) 2020-10-03 05:01:10 +01:00
KevinX8 d728ad1b75 New translations strings.xml (Chinese Simplified) 2020-10-03 05:01:08 +01:00
KevinX8 04918ded85 New translations strings.xml (Afrikaans) 2020-10-03 05:01:06 +01:00
KevinX8 d65933946b New translations strings.xml (Ukrainian) 2020-10-03 05:01:04 +01:00
KevinX8 eadf21a8c2 New translations strings.xml (Russian) 2020-10-03 05:01:03 +01:00
KevinX8 a8ae1b91b8 New translations strings.xml (Portuguese) 2020-10-03 05:01:01 +01:00
KevinX8 fc59ba88e8 New translations strings.xml (Norwegian) 2020-10-03 05:00:59 +01:00
KevinX8 96604f1783 New translations strings.xml (Georgian) 2020-10-03 05:00:57 +01:00
KevinX8 5d8709ea6c New translations strings.xml (Hungarian) 2020-10-03 05:00:56 +01:00
KevinX8 3c20b0635f New translations strings.xml (Hebrew) 2020-10-03 05:00:54 +01:00
KevinX8 944a99a3ff New translations strings.xml (Serbian (Cyrillic)) 2020-10-03 05:00:52 +01:00
KevinX8 61537e7ad3 New translations strings.xml (Arabic) 2020-10-03 05:00:51 +01:00
Xinto 542b937a04 small optimizations 2020-10-03 00:30:02 +04:00
Xinto 555c5e4c5c Revert "added a signature checker for vanced apps" 2020-10-02 22:23:19 +04:00
Xinto f3356f1044 Revert "new signature checking method" 2020-10-02 22:21:28 +04:00
KevinX8 ec203e66f6 New translations strings.xml (Ukrainian) 2020-10-02 17:02:15 +01:00
KevinX8 0b8c9261f6 New translations strings.xml (Swedish) 2020-10-02 17:02:13 +01:00
KevinX8 964a25d5db New translations strings.xml (Japanese) 2020-10-02 17:02:12 +01:00
Xinto 46978f2f6f new signature checking method 2020-10-02 18:43:16 +04:00
Xinto fa7ba49d93 removed an uneccessary parameter 2020-10-02 12:46:07 +04:00
Xinto 32b182074e removed fetching from url changer 2020-10-02 12:44:07 +04:00
KevinX8 80b991f11f New translations strings.xml (Bengali, India) 2020-10-02 05:04:23 +01:00
KevinX8 08602d0cf8 New translations strings.xml (Serbian (Cyrillic)) 2020-10-02 05:04:21 +01:00
KevinX8 7b05b0acc7 New translations strings.xml (Russian) 2020-10-02 05:04:20 +01:00
KevinX8 8b41151fa6 New translations strings.xml (Bengali) 2020-10-02 05:04:18 +01:00
KevinX8 6e73109e4c New translations strings.xml (Korean) 2020-10-02 05:04:17 +01:00
KevinX8 c0e2d4c7ba New translations strings.xml (Punjabi) 2020-10-01 17:02:04 +01:00
KevinX8 c69ee20806 New translations strings.xml (German) 2020-10-01 17:02:02 +01:00
KevinX8 306cf5f05e New translations strings.xml (Bengali) 2020-10-01 17:02:00 +01:00
KevinX8 8c46e33151 New translations strings.xml (Indonesian) 2020-10-01 17:01:59 +01:00
KevinX8 3497071d94 New translations strings.xml (Sinhala) 2020-10-01 17:01:57 +01:00
KevinX8 86d7c6d552 New translations strings.xml (Czech) 2020-10-01 17:01:55 +01:00
KevinX8 b2a26f8779 New translations strings.xml (Finnish) 2020-10-01 17:01:54 +01:00
KevinX8 e31dc28a4c New translations strings.xml (Swedish) 2020-10-01 17:01:52 +01:00
KevinX8 ba5e0d5da0 New translations strings.xml (Romanian) 2020-10-01 17:01:50 +01:00
KevinX8 c84fc4cdfd New translations strings.xml (Danish) 2020-10-01 17:01:48 +01:00
KevinX8 fda7f8c5cb New translations strings.xml (Korean) 2020-10-01 17:01:47 +01:00
KevinX8 366eb3f016 New translations strings.xml (Greek) 2020-10-01 17:01:45 +01:00
KevinX8 e0427aa2d7 New translations strings.xml (Dutch) 2020-10-01 17:01:43 +01:00
KevinX8 05308b2c82 New translations strings.xml (Turkish) 2020-10-01 17:01:41 +01:00
KevinX8 0bc3c6d676 New translations strings.xml (Polish) 2020-10-01 17:01:40 +01:00
KevinX8 5a16144393 New translations strings.xml (Japanese) 2020-10-01 17:01:38 +01:00
KevinX8 c497843fba New translations strings.xml (Italian) 2020-10-01 17:01:36 +01:00
KevinX8 f5966cdbf6 New translations strings.xml (Spanish) 2020-10-01 17:01:34 +01:00
KevinX8 6010983c50 New translations strings.xml (French) 2020-10-01 17:01:32 +01:00
KevinX8 3a1bea59de New translations strings.xml (Catalan) 2020-10-01 17:01:30 +01:00
KevinX8 6992f52d3b New translations strings.xml (Tamil) 2020-10-01 17:01:29 +01:00
KevinX8 3e2abad3aa New translations strings.xml (Bengali, India) 2020-10-01 17:01:27 +01:00
KevinX8 856fd7ee6d New translations strings.xml (Hindi) 2020-10-01 17:01:25 +01:00
KevinX8 b415e6ca18 New translations strings.xml (Portuguese, Brazilian) 2020-10-01 17:01:23 +01:00
KevinX8 7b51ca34db New translations strings.xml (Vietnamese) 2020-10-01 17:01:22 +01:00
KevinX8 2d4cb59579 New translations strings.xml (Chinese Traditional) 2020-10-01 17:01:20 +01:00
KevinX8 995f5dbc81 New translations strings.xml (Chinese Simplified) 2020-10-01 17:01:19 +01:00
KevinX8 fff6fae9a7 New translations strings.xml (Afrikaans) 2020-10-01 17:01:17 +01:00
KevinX8 bb9496f989 New translations strings.xml (Ukrainian) 2020-10-01 17:01:15 +01:00
KevinX8 55a1aff93e New translations strings.xml (Russian) 2020-10-01 17:01:13 +01:00
KevinX8 b86cba47ea New translations strings.xml (Portuguese) 2020-10-01 17:01:11 +01:00
KevinX8 f0bf071418 New translations strings.xml (Norwegian) 2020-10-01 17:01:10 +01:00
KevinX8 7b663162bb New translations strings.xml (Georgian) 2020-10-01 17:01:08 +01:00
KevinX8 08a7c9ab24 New translations strings.xml (Hungarian) 2020-10-01 17:01:07 +01:00
KevinX8 a43ac777d4 New translations strings.xml (Hebrew) 2020-10-01 17:01:05 +01:00
KevinX8 9fc5787238 New translations strings.xml (Serbian (Cyrillic)) 2020-10-01 17:01:03 +01:00
KevinX8 a034d00e60 New translations strings.xml (Arabic) 2020-10-01 17:01:02 +01:00
Xinto add5992657 removed signature check for root vanced 2020-10-01 17:02:05 +04:00
Xinto d5bf4b0a80 added a signature checker for vanced apps 2020-10-01 14:39:01 +04:00
KevinX8 d92dddec4f New translations strings.xml (Russian) 2020-10-01 05:00:48 +01:00
Xinto b948d2cec5 prevent user from downloading root vanced if they don't have a root access 2020-09-30 22:06:21 +04:00
Xinto d81a68a7e9 bumped up version name, code and google gms plugin 2020-09-30 21:07:49 +04:00
KevinX8 9303c4ae8b New translations strings.xml (French) 2020-09-30 16:51:13 +01:00
Xinto e8b16a7cf8 possible fix of firebase events 2020-09-30 19:48:28 +04:00
Xinto a93523b8b6 fixed language counter crash 2020-09-30 19:27:11 +04:00
KevinX8 5bb1375478 New translations strings.xml (Hindi) 2020-09-30 04:41:09 +01:00
Xinto 9c3e3f0b4b fixed sha256 check 2020-09-29 21:42:03 +04:00
KevinX8 bf9e1daaa9 New translations strings.xml (Ukrainian) 2020-09-29 16:44:26 +01:00
KevinX8 3a5559fa4e New translations strings.xml (Finnish) 2020-09-29 16:44:24 +01:00
Xinto c48ccda843 Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2020-09-29 14:48:18 +04:00
Xinto 41fe28a684 manager language selector and url changer fixes 2020-09-29 14:47:38 +04:00
KevinX8 a58ba4643f New translations strings.xml (Indonesian) 2020-09-29 04:47:46 +01:00
KevinX8 255c21fa15 New translations strings.xml (Serbian (Cyrillic)) 2020-09-28 16:50:00 +01:00
KevinX8 f9ef147dee New translations strings.xml (Portuguese, Brazilian) 2020-09-28 04:40:52 +01:00
KevinX8 76a98b186f New translations strings.xml (Norwegian) 2020-09-28 04:40:50 +01:00
KevinX8 a579fb6e83 New translations strings.xml (German) 2020-09-28 04:40:49 +01:00
KevinX8 bfd842bfc3 New translations strings.xml (Indonesian) 2020-09-28 04:40:47 +01:00
KevinX8 0d6870f7b8 New translations strings.xml (Polish) 2020-09-28 04:40:46 +01:00
KevinX8 8c7bec1633
Merge pull request #173 from YTVanced/dev
1.3.0 release
2020-09-27 19:33:00 +01:00
KevinX8 45fc925a73
Merge pull request #172 from YTVanced/l10n_dev
New Crowdin updates
2020-09-27 16:55:01 +01:00
KevinX8 fa99026a43 New translations strings.xml (Punjabi) 2020-09-27 16:47:33 +01:00
KevinX8 e009fbd576 New translations strings.xml (Sinhala) 2020-09-27 16:47:32 +01:00
KevinX8 ffe0e87e06 New translations strings.xml (Indonesian) 2020-09-27 16:47:30 +01:00
KevinX8 3a566d868a New translations strings.xml (Bengali) 2020-09-27 16:47:29 +01:00
KevinX8 d3a33b16c7 New translations strings.xml (Turkish) 2020-09-27 16:47:28 +01:00
KevinX8 f74c0f5b5a New translations strings.xml (Polish) 2020-09-27 16:47:26 +01:00
KevinX8 72b6001384 New translations strings.xml (Swedish) 2020-09-27 16:47:25 +01:00
KevinX8 7d0899edba New translations strings.xml (Portuguese) 2020-09-27 16:47:23 +01:00
KevinX8 027c9f24e6 New translations strings.xml (Russian) 2020-09-27 16:47:22 +01:00
KevinX8 a47abfd389 New translations strings.xml (Serbian (Cyrillic)) 2020-09-27 16:47:20 +01:00
KevinX8 894efbecc0 New translations strings.xml (Norwegian) 2020-09-27 16:47:19 +01:00
KevinX8 5df4e25abf New translations strings.xml (Chinese Simplified) 2020-09-27 16:47:17 +01:00
KevinX8 b23f696d79 New translations strings.xml (Chinese Traditional) 2020-09-27 16:47:16 +01:00
KevinX8 982226d399 New translations strings.xml (Vietnamese) 2020-09-27 16:47:13 +01:00
KevinX8 67c6a699de New translations strings.xml (Portuguese, Brazilian) 2020-09-27 16:47:12 +01:00
KevinX8 e33c262620 New translations strings.xml (Hindi) 2020-09-27 16:47:10 +01:00
KevinX8 96374df731 New translations strings.xml (Bengali, India) 2020-09-27 16:47:09 +01:00
KevinX8 f2a36ec5af New translations strings.xml (Tamil) 2020-09-27 16:47:07 +01:00
KevinX8 01f40ffbb4 New translations strings.xml (Ukrainian) 2020-09-27 16:47:06 +01:00
KevinX8 24e917efbc New translations strings.xml (Japanese) 2020-09-27 16:47:05 +01:00
KevinX8 7999412364 New translations strings.xml (Dutch) 2020-09-27 16:47:03 +01:00
KevinX8 e710d60032 New translations strings.xml (Greek) 2020-09-27 16:47:02 +01:00
KevinX8 9e9cc42099 New translations strings.xml (Korean) 2020-09-27 16:47:00 +01:00
KevinX8 e9783d3088 New translations strings.xml (Italian) 2020-09-27 16:46:59 +01:00
KevinX8 7cc203ad95 New translations strings.xml (Danish) 2020-09-27 16:46:58 +01:00
KevinX8 4bbc5d5dc9 New translations strings.xml (Finnish) 2020-09-27 16:46:56 +01:00
KevinX8 238c961367 New translations strings.xml (French) 2020-09-27 16:46:54 +01:00
KevinX8 9cb21d6adc New translations strings.xml (German) 2020-09-27 16:46:53 +01:00
KevinX8 338d2428e8 New translations strings.xml (Romanian) 2020-09-27 16:46:51 +01:00
KevinX8 ce53d535f5 New translations strings.xml (Spanish) 2020-09-27 16:46:49 +01:00
KevinX8 ad34db03b9 New translations strings.xml (Afrikaans) 2020-09-27 16:46:48 +01:00
KevinX8 4bd0da8e14 New translations strings.xml (Catalan) 2020-09-27 16:46:46 +01:00
KevinX8 d0b6d5173d New translations strings.xml (Hebrew) 2020-09-27 16:46:44 +01:00
KevinX8 e74ab79a6e New translations strings.xml (Hungarian) 2020-09-27 16:46:43 +01:00
KevinX8 cb640eccc1 New translations strings.xml (Georgian) 2020-09-27 16:46:42 +01:00
KevinX8 68a26c7b49 New translations strings.xml (Czech) 2020-09-27 16:46:40 +01:00
KevinX8 79b2bdd25a New translations strings.xml (Arabic) 2020-09-27 16:46:39 +01:00
Xinto 82060465ae added a language selector 2020-09-26 21:09:01 +04:00
Xinto 7cfc16d9b7 some small fixes 2020-09-25 21:01:24 +04:00
Zoran Ostojic 76bfb8ae93
Merge pull request #171 from ostajic/dev
Root Installer Fix
2020-09-25 17:54:40 +02:00
ostajic 440e0d5dd1 Root Installer Fix 2020-09-25 17:39:53 +02:00
Xinto 6699ef912f updated readme 2020-09-25 17:18:39 +04:00
Xinto d20d8fa475 added pause/resume and cancel buttons for downloads 2020-09-25 17:14:38 +04:00
Xinto 19df543c1b a minor layout adjustment 2020-09-22 00:04:10 +04:00
Xinto 90e42d88d2 a minor adjustment 2020-09-21 23:54:17 +04:00
Xinto 7910c3edee fixed package query 2020-09-21 12:37:47 +04:00
Xinto cf9fa512e7 Variant tab rewrite, home screen and navigation optimisations 2020-09-21 11:53:42 +04:00
Xinto f44249f462 fixed issues 2020-09-20 18:41:28 +04:00
Xinto 7d25d5a89f fixed installer 2020-09-19 22:07:10 +04:00
Xinto 7c33fea8fb import cleanup 2020-09-19 18:02:14 +04:00
Xinto a7be68f5b5 Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2020-09-19 17:56:42 +04:00
Xinto baba594900 Optimised changelog viewpager 2020-09-19 17:56:24 +04:00
Zoran Ostojic 52cf75b053
Merge pull request #161 from ostajic/dev
Root Installer Fix
2020-09-19 12:59:08 +02:00
ostajic 92dc34e39f Root Installer Fix 2020-09-19 12:53:44 +02:00
Zoran Ostojic 23e70513e8
Merge pull request #160 from ostajic/dev
Fix links intent
2020-09-19 12:37:57 +02:00
ostajic 41f0b8e115 Fix links intent 2020-09-19 12:33:13 +02:00
Xinto 9b18450ad6 toolbar back button fixes 2020-09-19 12:59:16 +04:00
Tornike Khintibidze 9b98b3239b
Merge pull request #159 from ostajic/dev
Back Button Fix and dupe bug fix
2020-09-19 12:24:41 +04:00
ostajic 6e2d2c1df7 Back Button Fix and dupe bug fix 2020-09-19 10:21:48 +02:00
Zoran Ostojic 229952435c
Merge pull request #158 from ostajic/dev
Back Button Fix
2020-09-19 09:13:05 +02:00
ostajic 11494b11b2 Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev
 Conflicts:
	app/src/main/java/com/vanced/manager/ui/MainActivity.kt
2020-09-19 09:11:58 +02:00
ostajic 215f4801df Back Button Fix 2020-09-19 09:07:32 +02:00
Xinto afddffe8fc fixes and improvements 2020-09-18 21:55:45 +04:00
ostajic 414993a874 Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev
 Conflicts:
	app/src/main/java/com/vanced/manager/core/installer/RootSplitInstallerService.kt
2020-09-18 18:55:36 +02:00
ostajic 55b33df842 Unmount older mounts 2020-09-18 18:55:05 +02:00
Xinto 5136e6938d json fetch and home screen refresh adjustments 2020-09-17 23:26:30 +04:00
Xinto c95a0eaf2b Fixed bugs and improved performance 2020-09-17 14:13:16 +04:00
Xinto 7b628da170 fixed build again 2020-09-16 15:18:22 +04:00
Xinto 7e26d604de fixed build 2020-09-16 14:52:12 +04:00
Xinto b7a6709e24 json improvements 2020-09-16 14:40:01 +04:00
Xinto 66be15088e lifecycle fixes 2020-09-15 22:22:21 -07:00
Xinto fc389f6f37 moved a joke to readmeme 2020-09-15 22:18:07 -07:00
Tornike Khintibidze 4b7faa38cb
Merge pull request #157 from denysvitali/fix/navigation
Fix Navigation
2020-09-15 22:09:12 -07:00
Denys Vitali d99a45accf
fix navigation 2020-09-16 01:52:36 +02:00
Tornike Khintibidze d2160405a8
Update README.md 2020-09-15 11:28:35 -07:00
Xinto f035e06e0b fixed a typo 2020-09-15 11:24:41 -07:00
Xinto 2c15438b55 updated READMEME 2020-09-15 11:21:07 -07:00
Xinto 00e286c575 updated README 2020-09-15 11:19:04 -07:00
Xinto ca74d7145e fixed warnings 2020-09-15 11:10:03 -07:00
Xinto a63b549b91 finished code cleanup 2020-09-15 11:06:29 -07:00
ostajic bf0bde9e50 Fix for normal root installer 2020-09-15 09:17:50 +02:00
ostajic 32047da643 Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev
 Conflicts:
	app/proguard-rules.pro
2020-09-14 00:04:49 +02:00
ostajic b776595059 lag Fix v1 2020-09-13 23:48:03 +02:00
ostajic f93e0e3c9d lag Fix v1 2020-09-13 22:58:33 +02:00
X1nto 24e4285396 proguard fixes 2020-09-13 10:23:05 +04:00
Zoran Ostojic e798e929d6
Merge pull request #147 from ostajic/dev
New Root Install Variant
2020-09-13 03:49:35 +02:00
ostajic 4e33363533 New Root Install Variant 2020-09-13 03:40:14 +02:00
X1nto f2f034ff34 updated summary again 2020-09-12 22:12:37 +04:00
X1nto 4e9b0191ba grammar fixes 2020-09-12 21:56:07 +04:00
X1nto 5f17b01703 updated new installer strings 2020-09-12 21:46:27 +04:00
X1nto dd2cda9098 fixed xml 2020-09-12 21:28:51 +04:00
X1nto cb2200a83b updated summary for new root installer 2020-09-12 21:25:21 +04:00
X1nto e5baad5d5f fixed preference saving 2020-09-12 20:18:05 +04:00
X1nto bfa6885b26 started code cleanup 2020-09-06 14:34:30 +04:00
Zoran Ostojic 43626aadf9
Merge pull request #155 from ostajic/dev
Fix for normal root installer
2020-09-15 09:47:06 +02:00
Tornike Khintibidze 5681b6fb4f
Merge pull request #149 from ostajic/dev
lag Fix v1
2020-09-14 09:20:29 +04:00
X1nto 160a5684f7 started code cleanup 2020-09-06 14:33:04 +04:00
X1nto 4daee42a0b I should've built before pushing commits 2020-09-04 23:41:39 +04:00
X1nto 85d5764e75 fixed build 2020-09-04 23:31:50 +04:00
X1nto 30582b8c17 Bug fixes 2020-09-04 23:14:43 +04:00
ostajic bb18effa8c Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2020-08-31 20:23:53 +02:00
ostajic b2049bb4aa cleanup 2020-08-31 20:13:02 +02:00
Tornike Khintibidze c7075e2ccb
Merge pull request #135 from ostajic/dev
New fixes for new root install using shell to get package install folder and version of package for devices where pm fails
2020-08-31 21:53:29 +04:00
ostajic 20c0eec5de New fixes for new root install using shell to get package install folder and version of package for devices where pm fails 2020-08-31 19:47:23 +02:00
X1nto bd9ddc1bbb string fixes 2020-08-31 20:15:41 +04:00
X1nto cf571d489b bumped up version name 2020-08-31 20:13:23 +04:00
X1nto 7a8322eef2 layout initialization fix 2020-08-31 20:12:20 +04:00
X1nto b5ee717bad fixed build stuff 2020-08-27 14:50:43 +04:00
X1nto e2460ad261 removed firebase config from gitignore 2020-08-26 23:25:01 +04:00
X1nto 4bc3a42ab0 build fixes 2020-08-26 21:21:37 +04:00
X1nto bd356d5292 fixed music layout issues 2020-08-26 19:18:26 +04:00
X1nto fbe3076267 made new installer toggleable 2020-08-26 18:22:36 +04:00
X1nto 1b38101928 Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2020-08-26 16:49:32 +04:00
X1nto 60ba9364e5 Added Music icon 2020-08-26 16:49:16 +04:00
X1nto e0b0ce9130 fixed tablayout and adapter 2020-08-26 16:29:05 +04:00
KevinX8 dbdce26b4b fixed some errors, still need to add ic_music 2020-08-26 15:02:48 +03:00
X1nto b1e0db8598 Model class goes brrrrr 2020-08-26 15:50:02 +04:00
X1nto 3a3624e1be Switched to TabLayout for variant selection 2020-08-26 15:09:34 +04:00
X1nto 3805145aba Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2020-08-25 13:05:27 +04:00
X1nto c800383f30 improvements 2020-08-25 13:05:20 +04:00
Tornike Khintibidze b63213c599
Merge pull request #127 from ostajic/dev
Changed Strings to more descriptive Error Message
2020-08-25 09:18:14 +04:00
ostajic 1cc4a38a1b Changed Strings to more descriptive Error Message 2020-08-25 07:11:36 +02:00
ostajic 2d8b4633d1 Changed Strings to more descriptive Error Message 2020-08-25 07:07:19 +02:00
Tornike Khintibidze f6345c2dd5
Merge pull request #126 from ostajic/dev
Version Check Crash Fix When Youtube Is Not Installed At All
2020-08-25 07:58:18 +04:00
ostajic 8ab16e161f No Youtube Crash Fix 2020-08-25 05:46:25 +02:00
Tornike Khintibidze 9c30b1d0ab
Merge pull request #125 from ostajic/dev
Fix for new error Messages not being displayed
2020-08-25 07:31:05 +04:00
ostajic c44690e530 chcon without -R 2020-08-25 05:05:17 +02:00
ostajic 42b3354d43 Updated Downloader to only download apks if they are needed also sha256 moved from install to download 2020-08-25 03:00:26 +02:00
ostajic 6965cf8585 Error Strings moved to strings.xml 2020-08-24 23:47:54 +02:00
ostajic c48723be24 Error Messages Displayed Correctly 2020-08-24 23:20:48 +02:00
X1nto befde1a66a gradle updates 2020-08-24 23:56:11 +04:00
X1nto 72d84bbece Android R fixes 2020-08-24 21:30:12 +04:00
Tornike Khintibidze 96a9950644
Merge pull request #121 from ostajic/dev
New Root Install Method & Log code & Version Bump
2020-08-24 13:37:47 +04:00
ostajic a21730a8bc Added Sha256 Check on Patch Apk, code cleanup and comments added 2020-08-24 09:47:00 +02:00
ostajic b574177a56 removed thread.sleep and auto start of vanced 2020-08-24 08:09:30 +02:00
ostajic bcf52d8173 fixed broken none root install, and changed back to mv command 2020-08-23 23:46:38 +02:00
ostajic 8794f3cbd5 fix duped folders, and some more testing 2020-08-23 15:01:54 +02:00
ostajic 3c881104d9 Added some delay between stock yt install and patching to prevent system reboot.
also chrown system:system added to prevent youtube from disappearing after restart. (KevinX8 Tip)
2020-08-23 08:35:32 +02:00
ostajic 2ee7096106 Fix Bug With Install when youtube is not pre installed in system and added code check, and returns error message on install if there is one 2020-08-23 07:14:00 +02:00
ostajic b92959d0dd Fix Bug With Install when youtube is not pre installed in system and added code check, and returns error message on install if there is one 2020-08-23 06:37:57 +02:00
ostajic f2cb0e4307 Fix Bug With Install when youtube is not pre installed in system and added code check, and returns error message on install if there is one 2020-08-23 06:37:34 +02:00
ostajic 042a6a72a1 remove dupe and more detailed throw 2020-08-23 02:48:48 +02:00
ostajic d0bdaef772 Version Bump and Target 29 2020-08-23 02:24:43 +02:00
ostajic 412ff6aebb Test New Root Method And Step LogCode 2020-08-23 01:57:22 +02:00
ostajic d8cc154aeb Test New Root Method 2020-08-23 00:51:49 +02:00
Tornike Khintibidze 304fcdf780
Merge pull request #116 from AioiLight/impl-download-dialog
Block dialog closing to tap outside when downloding manager
2020-08-16 19:33:50 +04:00
AioiLight 73ba5fc9bc Block dialog clossing to tap outside when downloding manager 2020-08-16 18:39:27 +09:00
X1nto c80476ce23 Merge branch 'dev' of https://github.com/X1nto/VancedInstaller into dev 2020-08-12 19:25:35 +04:00
X1nto cccbb16c4e import cleanup 2020-08-12 19:23:15 +04:00
X1nto dc13e76a5c fixed crowdin 2020-08-12 19:22:27 +04:00
X1nto dc4b0144e0 more crowdin tests 2020-08-12 18:54:24 +04:00
X1nto 9670a50d1f exception test 2020-08-12 18:16:53 +04:00
X1nto 0f7166b72c fixed build 2020-08-12 17:52:17 +04:00
X1nto 4b45a2acd6 exception handling for crowdin 2020-08-12 17:40:13 +04:00
X1nto 6069553f4a why is kate so sht 2020-08-12 16:35:00 +04:00
X1nto c3c9029b0e more fixes 2020-08-12 16:29:21 +04:00
X1nto 6c2277b0b0 small fixes 2020-08-12 16:21:23 +04:00
Tornike Khintibidze e2e3bfffc2
Merge pull request #113 from spicyfoxx/patch-1
Update strings.xml
2020-08-10 12:52:09 +04:00
spicy d5db86536c
Update strings.xml 2020-08-10 00:14:03 +07:00
spicy 499c373714
Update strings.xml 2020-08-09 22:34:04 +07:00
X1nto cb02c0b9bb Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2020-08-09 19:29:40 +04:00
X1nto 34980c2605 some crash fixes 2020-08-09 19:28:56 +04:00
spicy 6984ce0370
Update strings.xml 2020-08-09 21:33:27 +07:00
spicy 0f3bb6bc4a
Update strings.xml
Nyan~
2020-08-09 21:15:34 +07:00
KevinX8 31262606d3
Merge pull request #110 from YTVanced/dev
1.2.0 Update
2020-08-09 00:06:55 +03:00
KevinX8 f6c13efb6c
Merge pull request #109 from YTVanced/l10n_dev
New Crowdin updates
2020-08-09 00:05:54 +03:00
X1nto 8f026e9a3b fixed a toast message 2020-08-09 00:49:22 +04:00
X1nto 7af0ce994d Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2020-08-09 00:22:03 +04:00
X1nto 71eb1c19d8 improved detection of installation process running 2020-08-09 00:21:08 +04:00
KevinX8 4579a8d246 New translations strings.xml (Bengali, India) 2020-08-08 22:53:27 +03:00
KevinX8 d889e5c354 New translations strings.xml (Bengali) 2020-08-08 22:53:25 +03:00
KevinX8 021cc28d52 New translations strings.xml (Indonesian) 2020-08-08 22:53:24 +03:00
KevinX8 862f63eb6a New translations strings.xml (Sinhala) 2020-08-08 22:53:22 +03:00
KevinX8 1714f2ecb7 New translations strings.xml (Czech) 2020-08-08 22:53:21 +03:00
KevinX8 3f937a61d8 New translations strings.xml (Finnish) 2020-08-08 22:53:19 +03:00
KevinX8 1cae54215b New translations strings.xml (Swedish) 2020-08-08 22:53:18 +03:00
KevinX8 10fbd76841 New translations strings.xml (German) 2020-08-08 22:53:16 +03:00
KevinX8 174017480d New translations strings.xml (Danish) 2020-08-08 22:53:15 +03:00
KevinX8 433204179e New translations strings.xml (Korean) 2020-08-08 22:53:13 +03:00
KevinX8 cb63464c40 New translations strings.xml (Greek) 2020-08-08 22:53:11 +03:00
KevinX8 bee600fba8 New translations strings.xml (Dutch) 2020-08-08 22:53:10 +03:00
KevinX8 84c774dca7 New translations strings.xml (Turkish) 2020-08-08 22:53:09 +03:00
KevinX8 c718ad9ddb New translations strings.xml (Polish) 2020-08-08 22:53:06 +03:00
KevinX8 6001c9da18 New translations strings.xml (Japanese) 2020-08-08 22:53:05 +03:00
KevinX8 b12f09b442 New translations strings.xml (Italian) 2020-08-08 22:53:03 +03:00
KevinX8 0215fcc430 New translations strings.xml (Spanish) 2020-08-08 22:53:02 +03:00
KevinX8 b9e4e6b86f New translations strings.xml (Romanian) 2020-08-08 22:53:00 +03:00
KevinX8 275acc5810 New translations strings.xml (Afrikaans) 2020-08-08 22:52:57 +03:00
KevinX8 2209cc9046 New translations strings.xml (Hindi) 2020-08-08 22:52:55 +03:00
KevinX8 fe7848cd8b New translations strings.xml (Portuguese, Brazilian) 2020-08-08 22:52:54 +03:00
KevinX8 5ae5b862e4 New translations strings.xml (Vietnamese) 2020-08-08 22:52:53 +03:00
KevinX8 cb83e50262 New translations strings.xml (Chinese Traditional) 2020-08-08 22:52:51 +03:00
KevinX8 a67cecf5ae New translations strings.xml (Chinese Simplified) 2020-08-08 22:52:50 +03:00
KevinX8 834ca709b9 New translations strings.xml (Ukrainian) 2020-08-08 22:52:48 +03:00
KevinX8 f9773cb921 New translations strings.xml (French) 2020-08-08 22:52:46 +03:00
KevinX8 8b667e18ff New translations strings.xml (Serbian (Cyrillic)) 2020-08-08 22:52:45 +03:00
KevinX8 f565345f5b New translations strings.xml (Portuguese) 2020-08-08 22:52:44 +03:00
KevinX8 efbfee6b5a New translations strings.xml (Norwegian) 2020-08-08 22:52:42 +03:00
KevinX8 7be1aeb8f5 New translations strings.xml (Georgian) 2020-08-08 22:52:41 +03:00
KevinX8 e62062b184 New translations strings.xml (Hungarian) 2020-08-08 22:52:39 +03:00
KevinX8 f4e1495626 New translations strings.xml (Hebrew) 2020-08-08 22:52:38 +03:00
KevinX8 2533bf39b9 New translations strings.xml (Catalan) 2020-08-08 22:52:36 +03:00
KevinX8 669b2b0e43 New translations strings.xml (Russian) 2020-08-08 22:52:35 +03:00
KevinX8 7c12853d44 New translations strings.xml (Arabic) 2020-08-08 22:52:33 +03:00
X1nto 7bdbf6e9b5 service tests 2020-08-08 22:58:22 +04:00
X1nto 985999899b fixes 2020-08-08 22:30:45 +04:00
X1nto a7e2d4a252 service checker improvements 2020-08-08 22:11:34 +04:00
KevinX8 f65c197c7a add crashalytics 2020-08-08 19:56:17 +03:00
KevinX8 27ba11007b add crashalytics 2020-08-08 19:56:08 +03:00
X1nto 68213c8556 tiny fixes 2020-08-08 19:02:10 +04:00
X1nto 07263e19f1 fixed url changer 2020-08-08 18:02:58 +04:00
X1nto 106c8374f5 improved root error handler 2020-08-08 16:22:32 +04:00
X1nto e1e69d4022 finalised root error handler 2020-08-08 16:05:11 +04:00
X1nto 24a51c949b changed root error handler 2020-08-08 15:02:28 +04:00
X1nto 4356584185 bug fixes 2020-08-08 14:59:56 +04:00
X1nto bce75c1b22 removed ui blocking methods in changelogs 2020-08-08 12:02:28 +04:00
X1nto f03e681ea8 new root error handler 2020-08-08 11:56:59 +04:00
KevinX8 64807674a0 New translations strings.xml (Chinese Traditional) 2020-08-08 10:53:46 +03:00
KevinX8 c67df9f045 New translations strings.xml (Chinese Simplified) 2020-08-08 10:53:44 +03:00
KevinX8 efb740aeb4 New translations strings.xml (Korean) 2020-08-08 10:53:43 +03:00
X1nto 597078e6a7 fixed localbroadcastmanager in uninstall service 2020-08-08 01:04:13 +04:00
X1nto cd710d27b6 Merge branch 'dev' of https://github.com/X1nto/VancedInstaller into dev 2020-08-08 00:33:41 +04:00
X1nto 690c8240aa Fixed crash with language fetching 2020-08-08 00:33:19 +04:00
X1nto 7094fef2bb lang fetch tests 2020-08-08 00:21:10 +04:00
KevinX8 2e6b60ff4d New translations strings.xml (Portuguese, Brazilian) 2020-08-07 22:54:45 +03:00
KevinX8 822dd7957b New translations strings.xml (Ukrainian) 2020-08-07 22:54:44 +03:00
KevinX8 152aa331a8 New translations strings.xml (Russian) 2020-08-07 22:54:42 +03:00
KevinX8 636035cb21 New translations strings.xml (Indonesian) 2020-08-07 22:54:40 +03:00
KevinX8 ba3ca18396 New translations strings.xml (Danish) 2020-08-07 22:54:39 +03:00
KevinX8 9f6ebf363f New translations strings.xml (Italian) 2020-08-07 22:54:37 +03:00
KevinX8 a7ae2825ed New translations strings.xml (Greek) 2020-08-07 22:54:36 +03:00
KevinX8 6d46b63c71 New translations strings.xml (Polish) 2020-08-07 22:54:35 +03:00
KevinX8 36ab91a08e New translations strings.xml (Japanese) 2020-08-07 22:54:33 +03:00
KevinX8 054d627dc8 New translations strings.xml (Spanish) 2020-08-07 22:54:32 +03:00
X1nto e9c3e7aad5 replaced runBlocking methods with coroutinescope 2020-08-07 23:24:35 +04:00
X1nto 90f5d3a337 tiny adjustments to microg layout 2020-08-07 20:58:50 +04:00
X1nto f29af1607e replaced all deprecated methods with kotlin coroutines 2020-08-07 20:51:45 +04:00
KevinX8 d8f4246abd update icon and target android 11 2020-08-07 19:16:34 +03:00
KevinX8 72062e08d5 update icon and target android 11 2020-08-07 19:12:41 +03:00
KevinX8 c32f0f7b53
Merge pull request #107 from YTVanced/l10n_dev
New Crowdin updates
2020-08-07 15:21:26 +03:00
X1nto 1e5ceb0427 changed microg icon 2020-08-07 14:23:23 +04:00
KevinX8 22ac3f5583 New translations strings.xml (Bengali, India) 2020-08-07 10:59:53 +03:00
KevinX8 81f3dad392 New translations strings.xml (Bengali) 2020-08-07 10:59:51 +03:00
KevinX8 9d17005946 New translations strings.xml (Indonesian) 2020-08-07 10:59:50 +03:00
KevinX8 4b9a9f5274 New translations strings.xml (Sinhala) 2020-08-07 10:59:49 +03:00
KevinX8 ccb7c133da New translations strings.xml (Czech) 2020-08-07 10:59:47 +03:00
KevinX8 a35dbeea15 New translations strings.xml (Finnish) 2020-08-07 10:59:45 +03:00
KevinX8 8a6433678d New translations strings.xml (Swedish) 2020-08-07 10:59:43 +03:00
KevinX8 64720ea9ca New translations strings.xml (German) 2020-08-07 10:59:42 +03:00
KevinX8 591d57299a New translations strings.xml (Danish) 2020-08-07 10:59:41 +03:00
KevinX8 549bab80c3 New translations strings.xml (Korean) 2020-08-07 10:59:39 +03:00
KevinX8 6bb4fb5f1d New translations strings.xml (Greek) 2020-08-07 10:59:38 +03:00
KevinX8 df29532e8c New translations strings.xml (Dutch) 2020-08-07 10:59:36 +03:00
KevinX8 0ac2f0c31b New translations strings.xml (Turkish) 2020-08-07 10:59:34 +03:00
KevinX8 8c42d7b911 New translations strings.xml (Polish) 2020-08-07 10:59:33 +03:00
KevinX8 a55599b617 New translations strings.xml (Japanese) 2020-08-07 10:59:31 +03:00
KevinX8 7825fe0a40 New translations strings.xml (Italian) 2020-08-07 10:59:30 +03:00
KevinX8 ca48fede78 New translations strings.xml (Spanish) 2020-08-07 10:59:28 +03:00
KevinX8 1d5389939e New translations strings.xml (Romanian) 2020-08-07 10:59:26 +03:00
KevinX8 2afc4b0e2f New translations strings.xml (Afrikaans) 2020-08-07 10:59:25 +03:00
KevinX8 b3d68fcbe6 New translations strings.xml (Hindi) 2020-08-07 10:59:24 +03:00
KevinX8 38d5dc3ce8 New translations strings.xml (Portuguese, Brazilian) 2020-08-07 10:59:22 +03:00
KevinX8 1173eef8aa New translations strings.xml (Vietnamese) 2020-08-07 10:59:20 +03:00
KevinX8 09917df234 New translations strings.xml (Chinese Traditional) 2020-08-07 10:59:19 +03:00
KevinX8 a6ebc251aa New translations strings.xml (Chinese Simplified) 2020-08-07 10:59:18 +03:00
KevinX8 0306cf7be9 New translations strings.xml (Ukrainian) 2020-08-07 10:59:16 +03:00
KevinX8 219869c3b1 New translations strings.xml (French) 2020-08-07 10:59:14 +03:00
KevinX8 168e5da52d New translations strings.xml (Serbian (Cyrillic)) 2020-08-07 10:59:13 +03:00
KevinX8 a74c6238fa New translations strings.xml (Portuguese) 2020-08-07 10:59:12 +03:00
KevinX8 2f7dc548ce New translations strings.xml (Norwegian) 2020-08-07 10:59:10 +03:00
KevinX8 52e0b9f85e New translations strings.xml (Georgian) 2020-08-07 10:59:08 +03:00
KevinX8 1d890f7dfc New translations strings.xml (Hungarian) 2020-08-07 10:59:07 +03:00
KevinX8 174d325f16 New translations strings.xml (Hebrew) 2020-08-07 10:59:05 +03:00
KevinX8 189eb1cf45 New translations strings.xml (Catalan) 2020-08-07 10:59:03 +03:00
KevinX8 2c78de4132 New translations strings.xml (Russian) 2020-08-07 10:59:01 +03:00
KevinX8 8ba6471505 New translations strings.xml (Arabic) 2020-08-07 10:59:00 +03:00
X1nto 449eca55e7 fixed firebase classpath 2020-08-07 11:33:56 +04:00
X1nto 10be21c875 added option to delete downloaded file 2020-08-07 11:07:49 +04:00
X1nto b5eba37e53 added firebase performance plugin 2020-08-07 10:37:40 +04:00
X1nto a12754123f removed useless logging 2020-08-07 10:18:23 +04:00
KevinX8 7cb886a493 New translations strings.xml (Portuguese, Brazilian) 2020-08-06 23:03:10 +03:00
KevinX8 f286f7e2d3 New translations strings.xml (Chinese Traditional) 2020-08-06 23:03:08 +03:00
KevinX8 9c0118a4cf New translations strings.xml (Chinese Simplified) 2020-08-06 23:03:07 +03:00
KevinX8 24e7303fe0 New translations strings.xml (Ukrainian) 2020-08-06 23:03:05 +03:00
KevinX8 190ab2e3f7 New translations strings.xml (Russian) 2020-08-06 23:03:03 +03:00
KevinX8 7d4c48f849 New translations strings.xml (Indonesian) 2020-08-06 23:03:02 +03:00
KevinX8 9190c569ba New translations strings.xml (Czech) 2020-08-06 23:03:00 +03:00
KevinX8 71745d1b2e New translations strings.xml (Swedish) 2020-08-06 23:02:59 +03:00
KevinX8 9d150d95df New translations strings.xml (Italian) 2020-08-06 23:02:57 +03:00
KevinX8 219672e2c5 New translations strings.xml (Greek) 2020-08-06 23:02:55 +03:00
KevinX8 92f8b8d70f New translations strings.xml (Turkish) 2020-08-06 23:02:54 +03:00
KevinX8 01d2d69f00 New translations strings.xml (Japanese) 2020-08-06 23:02:52 +03:00
KevinX8 c5c48e1af0 New translations strings.xml (Spanish) 2020-08-06 23:02:51 +03:00
X1nto 6c0d0016c4 fixes 2020-08-06 23:02:22 +04:00
X1nto 82626a4f19 bug fixes 2020-08-06 22:37:43 +04:00
X1nto 090b816cd7 installer adjsutments 2020-08-06 22:06:19 +04:00
X1nto ab8b145ead This commit mostly includes debug stuff, also an adjusted launcher icon 2020-08-06 21:17:40 +04:00
X1nto f4acceff24 removed stuff for debugging 2020-08-06 14:44:19 +04:00
X1nto 73a1f639d9 fixed fragment exit animation 2020-08-06 14:41:01 +04:00
X1nto 4e591062bb bug fixes 2020-08-06 14:21:18 +04:00
X1nto 2b7b75cd95 animation tests 2 2020-08-06 13:49:23 +04:00
X1nto ea46304472 animation tests 2020-08-06 13:30:10 +04:00
X1nto 5ba963e366 removed error suppression 2020-08-06 12:49:45 +04:00
X1nto f16104cb0a Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2020-08-06 12:22:25 +04:00
Tornike Khintibidze 66cfe79228
Merge pull request #84 from YTVanced/l10n_dev
New Crowdin updates
2020-08-06 12:09:15 +04:00
KevinX8 0f380b4557 New translations strings.xml (Bengali, India) 2020-08-06 11:07:25 +03:00
KevinX8 1a601deb3b New translations strings.xml (Bengali) 2020-08-06 11:07:23 +03:00
KevinX8 7740f83c5b New translations strings.xml (Indonesian) 2020-08-06 11:07:22 +03:00
KevinX8 e1a2177bad New translations strings.xml (Sinhala) 2020-08-06 11:07:20 +03:00
KevinX8 dfb64f9467 New translations strings.xml (Czech) 2020-08-06 11:07:19 +03:00
KevinX8 57d6d20b69 New translations strings.xml (Finnish) 2020-08-06 11:07:17 +03:00
KevinX8 6860aa5090 New translations strings.xml (Swedish) 2020-08-06 11:07:15 +03:00
KevinX8 ccad1db78f New translations strings.xml (German) 2020-08-06 11:07:13 +03:00
KevinX8 f4a2338526 New translations strings.xml (Danish) 2020-08-06 11:07:12 +03:00
KevinX8 4f0177863c New translations strings.xml (Korean) 2020-08-06 11:07:10 +03:00
KevinX8 a8c0fba56a New translations strings.xml (Greek) 2020-08-06 11:07:09 +03:00
KevinX8 f80c2c7463 New translations strings.xml (Dutch) 2020-08-06 11:07:07 +03:00
KevinX8 24e5893fa5 New translations strings.xml (Turkish) 2020-08-06 11:07:06 +03:00
KevinX8 6926da2965 New translations strings.xml (Polish) 2020-08-06 11:07:04 +03:00
KevinX8 47729b3e15 New translations strings.xml (Japanese) 2020-08-06 11:07:02 +03:00
KevinX8 46477c16e4 New translations strings.xml (Italian) 2020-08-06 11:07:00 +03:00
KevinX8 d4a9907b83 New translations strings.xml (Spanish) 2020-08-06 11:06:59 +03:00
KevinX8 47ab6ff320 New translations strings.xml (Romanian) 2020-08-06 11:06:58 +03:00
KevinX8 76f1dc8959 New translations strings.xml (Afrikaans) 2020-08-06 11:06:56 +03:00
KevinX8 26234deb8e New translations strings.xml (Hindi) 2020-08-06 11:06:54 +03:00
KevinX8 8ce369d890 New translations strings.xml (Portuguese, Brazilian) 2020-08-06 11:06:53 +03:00
KevinX8 a884a20dfe New translations strings.xml (Vietnamese) 2020-08-06 11:06:51 +03:00
KevinX8 67d2ab8a21 New translations strings.xml (Chinese Traditional) 2020-08-06 11:06:50 +03:00
KevinX8 2553579416 New translations strings.xml (Chinese Simplified) 2020-08-06 11:06:48 +03:00
KevinX8 54223f4e1e New translations strings.xml (Ukrainian) 2020-08-06 11:06:47 +03:00
KevinX8 f43d8343be New translations strings.xml (French) 2020-08-06 11:06:45 +03:00
KevinX8 7d14ca2d96 New translations strings.xml (Serbian (Cyrillic)) 2020-08-06 11:06:44 +03:00
KevinX8 e8612334ea New translations strings.xml (Portuguese) 2020-08-06 11:06:42 +03:00
KevinX8 fa979690dd New translations strings.xml (Norwegian) 2020-08-06 11:06:40 +03:00
KevinX8 364961b9f5 New translations strings.xml (Georgian) 2020-08-06 11:06:39 +03:00
KevinX8 bdac057bf5 New translations strings.xml (Hungarian) 2020-08-06 11:06:37 +03:00
KevinX8 3c64e79ed0 New translations strings.xml (Hebrew) 2020-08-06 11:06:35 +03:00
KevinX8 ad19181cb0 New translations strings.xml (Catalan) 2020-08-06 11:06:34 +03:00
KevinX8 384f5819e1 New translations strings.xml (Russian) 2020-08-06 11:06:32 +03:00
KevinX8 49351c7536 New translations strings.xml (Arabic) 2020-08-06 11:06:30 +03:00
X1nto cff32987ff suppresed error 2020-08-06 12:00:27 +04:00
X1nto b5026a7758 bug fixes and improvements 2020-08-06 11:46:07 +04:00
X1nto e9695caf76 ah yeah, It's all coming together 2020-08-05 20:20:19 +04:00
X1nto 122febcad2 haha gradle errors go brrrrr 2020-08-05 16:03:51 +04:00
X1nto 1a9575cf65 chnages to download system 2020-08-05 15:52:09 +04:00
X1nto 8e65ae8d95 more snackbar fixes 2020-08-05 11:27:14 +04:00
X1nto 5a1698aa84 snackbar fixes 2020-08-04 22:25:19 +04:00
X1nto ec638cb0b4 adjustments 2020-08-04 21:10:07 +04:00
X1nto cbc31a64ad Fixes 2020-08-04 19:10:05 +04:00
X1nto 14a964c9d9 broadcast test 4 2020-08-04 17:49:46 +04:00
X1nto 7fe33d4434 broadcast test 3 2020-08-04 17:08:48 +04:00
X1nto f942ceda53 broadcast test 2 2020-08-04 16:31:55 +04:00
X1nto 30c84873a4 broadcast test 2020-08-04 15:42:15 +04:00
X1nto 25d43cc191 fixed an issue with AboutFragment 2020-08-04 14:47:21 +04:00
X1nto 301dd18bb6 updated libraries 2020-08-04 14:39:21 +04:00
X1nto 6429f32660 ux improvements 2020-08-04 14:02:36 +04:00
X1nto 9906ea9d0d ui fixes 2020-08-03 23:29:20 +04:00
KevinX8 96dc20d607 New translations strings.xml (Greek) 2020-08-03 21:21:44 +03:00
X1nto 3222b843ee fixed vanced installation path 2020-08-03 16:13:43 +04:00
X1nto 8b707cfc55 small ui fixes 2020-08-03 15:39:26 +04:00
X1nto bac2de06d8 json array tests 2020-08-03 14:25:40 +04:00
X1nto 355537c6f6 fixed preference getter 2020-08-03 13:54:59 +04:00
X1nto e77314c658 json array improvements 2020-08-03 13:01:25 +04:00
X1nto ecaf591100 haha kotlin coroutines go brrrr 2020-08-03 12:11:20 +04:00
X1nto cc7b19f823 databinding fixes 2020-08-02 23:10:13 +04:00
KevinX8 9ee4fd4f04 New translations strings.xml (Turkish) 2020-08-02 21:28:35 +03:00
X1nto dcafca2230 coroutine fixes 2020-08-02 22:22:33 +04:00
X1nto ac4cc3ff7a reverted to PRDownload 2020-08-02 20:54:49 +04:00
X1nto 50e05c4660 added multi language download support 2020-08-02 20:16:55 +04:00
KevinX8 1542bd1136 New translations strings.xml (Indonesian) 2020-08-01 09:27:35 +03:00
KevinX8 f9697e9acb New translations strings.xml (Bengali) 2020-07-31 21:25:33 +03:00
KevinX8 4a2048813a New translations strings.xml (Indonesian) 2020-07-31 21:25:31 +03:00
KevinX8 dba372e8d9 New translations strings.xml (Sinhala) 2020-07-31 21:25:29 +03:00
KevinX8 033e4d5432 New translations strings.xml (Sinhala) 2020-07-31 09:29:01 +03:00
KevinX8 549fcd9b55 New translations strings.xml (Korean) 2020-07-28 20:04:07 +03:00
KevinX8 7efb80f663 New translations strings.xml (Czech) 2020-07-27 19:36:31 +03:00
KevinX8 0b0462edd5 New translations strings.xml (Dutch) 2020-07-27 07:39:16 +03:00
KevinX8 ac33647995 New translations strings.xml (Finnish) 2020-07-26 19:37:58 +03:00
KevinX8 05a3193502 New translations strings.xml (Swedish) 2020-07-26 00:26:20 +03:00
KevinX8 05845e1b5a New translations strings.xml (Danish) 2020-07-26 00:26:19 +03:00
KevinX8 0838850e9a New translations strings.xml (Korean) 2020-07-24 12:25:49 +03:00
X1nto 43867162d8 fixed issue with uri parsing from ExternalFilesDir 2020-07-23 17:43:01 +04:00
X1nto 924dff3f85 testing 2020-07-23 17:35:04 +04:00
X1nto 488abf1277 UI tests 2020-07-23 14:36:17 +04:00
X1nto a537aa92ed UI tests 2020-07-23 13:34:10 +04:00
X1nto f89ad86cb0 UI tests 2020-07-22 20:43:03 +04:00
X1nto 90d8164f64 UX fixes 2020-07-22 17:33:45 +04:00
KevinX8 6641f29378 New translations strings.xml (Greek) 2020-07-22 05:48:30 +03:00
KevinX8 0a56f02022 New translations strings.xml (Hungarian) 2020-07-22 05:48:28 +03:00
KevinX8 fe009ea1d2 New translations strings.xml (Dutch) 2020-07-21 17:45:21 +03:00
KevinX8 4114c85960 New translations strings.xml (Arabic) 2020-07-20 17:35:41 +03:00
KevinX8 80e809683c New translations strings.xml (Bengali, India) 2020-07-17 14:18:20 +03:00
X1nto 7ab604bee8 fixed attribute parsing in xml 2020-07-17 11:43:26 +04:00
KevinX8 810a4cb971 New translations strings.xml (Romanian) 2020-07-17 02:22:49 +03:00
X1nto 723cdd87ef viewmodel adjustments 2020-07-17 02:08:00 +04:00
X1nto 147042ca49 added a null safety call 2020-07-17 01:55:53 +04:00
X1nto 9cda1b73ec fixed an issue with DataBindingImpl 2020-07-17 01:42:35 +04:00
X1nto 6588ce23a9 bumped up kotlin-reflect 2020-07-17 01:34:40 +04:00
X1nto 2546f7c5e3 manifest cleanup 2020-07-17 01:10:29 +04:00
X1nto 0099dab5d6 haha databinding and cleanup go brrrr 2020-07-17 01:05:31 +04:00
KevinX8 b2a89a75d2 New translations strings.xml (Hungarian) 2020-07-16 14:24:37 +03:00
KevinX8 722250fcd9 New translations strings.xml (Arabic) 2020-07-16 14:24:35 +03:00
KevinX8 ce5b9f209d New translations strings.xml (Serbian (Cyrillic)) 2020-07-16 02:22:20 +03:00
KevinX8 b8af45e1c7 New translations strings.xml (Catalan) 2020-07-16 02:22:18 +03:00
X1nto db2cb4e04b some adjustments 2020-07-15 18:52:31 +04:00
KevinX8 2d591bb436 New translations strings.xml (Catalan) 2020-07-15 14:23:50 +03:00
KevinX8 84bca938f5 New translations strings.xml (Chinese Traditional) 2020-07-14 04:04:15 +03:00
KevinX8 a4bf27b0b4 New translations strings.xml (Chinese Simplified) 2020-07-14 04:04:14 +03:00
KevinX8 91469abf7e New translations strings.xml (Chinese Traditional) 2020-07-13 15:51:24 +03:00
X1nto 2272c21dd8 fixed build 2020-07-12 22:40:01 +04:00
X1nto a694b74e0f fixed getter 2020-07-12 22:34:02 +04:00
X1nto 292405b05e fixed crashes 2020-07-12 22:33:14 +04:00
X1nto 31b1c7aef7 improved json parsing 2020-07-12 22:05:03 +04:00
KevinX8 45cc2cea0e New translations strings.xml (Spanish) 2020-07-12 10:50:28 +01:00
KevinX8 1056afab00
Merge pull request #76 from YTVanced/l10n_dev
New Crowdin updates
2020-07-11 23:29:10 +01:00
Tornike Khintibidze 9c8d85c382
Merge pull request #83 from YTVanced/jsondownload
JSON Parsing from request
2020-07-12 02:16:21 +04:00
xfileFIN 7a1d7cced8 JSON Parsing from request 2020-07-12 00:43:43 +03:00
X1nto 1224e01823 attempt to fix uri 2020-07-11 18:12:03 +04:00
X1nto 89d8be8cdc fixed string literal duplication 2020-07-11 18:07:23 +04:00
X1nto ec78585144 replaced variable with atomic reference 2020-07-11 18:04:21 +04:00
X1nto 4faf4f6c27 removed useless function 2020-07-11 17:42:47 +04:00
X1nto 6d24a08075 test 3 2020-07-11 14:45:39 +04:00
X1nto 3c6ff26e83 test 2 2020-07-11 11:49:55 +04:00
KevinX8 890e6f63b1 New translations strings.xml (Hungarian) 2020-07-11 06:37:58 +01:00
X1nto 33cc1014d0 test 2020-07-11 00:57:48 +04:00
X1nto 62011a7d15 test 2020-07-11 00:56:53 +04:00
X1nto 4c3fcf5109 possible crash fix 2020-07-11 00:32:23 +04:00
X1nto 4c89fc4586 update 2020-07-11 00:04:07 +04:00
X1nto 70cd3e0e58 update 1.2.0 test 2020-07-10 23:09:51 +04:00
KevinX8 ca987b14ba New translations strings.xml (Turkish) 2020-07-10 18:36:25 +01:00
KevinX8 883d3654a2 New translations strings.xml (Turkish) 2020-07-10 06:35:11 +01:00
KevinX8 8fa1844dd0 New translations strings.xml (Hebrew) 2020-07-08 17:48:52 +01:00
KevinX8 71ea029ede New translations strings.xml (Finnish) 2020-07-08 17:48:51 +01:00
KevinX8 79226795dd New translations strings.xml (Vietnamese) 2020-07-08 05:47:48 +01:00
KevinX8 98885cc969 New translations strings.xml (Czech) 2020-07-08 05:47:46 +01:00
KevinX8 9d8e37f582 New translations strings.xml (Bengali, India) 2020-07-07 17:48:57 +01:00
KevinX8 e1c7287f92 New translations strings.xml (Czech) 2020-07-07 17:48:56 +01:00
KevinX8 2c6ae99935 New translations strings.xml (Hindi) 2020-07-07 17:48:54 +01:00
KevinX8 8b6ac83f2b New translations strings.xml (Chinese Traditional) 2020-07-07 05:48:04 +01:00
KevinX8 0b27c05c7d New translations strings.xml (Spanish) 2020-07-07 05:48:03 +01:00
KevinX8 92038ee89e New translations strings.xml (French) 2020-07-07 05:48:01 +01:00
KevinX8 5bc2421d8b New translations strings.xml (Norwegian) 2020-07-06 17:49:31 +01:00
KevinX8 dcdf0d8d2d New translations strings.xml (Korean) 2020-07-06 17:49:29 +01:00
KevinX8 5b99024d95 New translations strings.xml (French) 2020-07-06 17:49:27 +01:00
X1nto caa806bf21 testing 2 2020-07-06 19:44:10 +04:00
X1nto b1e6b0d1b2 testing 2020-07-06 19:29:16 +04:00
X1nto 70affaefda improved code 2020-07-06 18:36:27 +04:00
X1nto d3caeb7554 all main activity code now belongs to MainActivity.kt 2020-07-06 18:29:27 +04:00
X1nto f90101abb7 fixed build 2020-07-06 15:58:02 +04:00
X1nto 5d8ce16a6b added Crowdin integration 2020-07-06 15:38:00 +04:00
X1nto 6ad8592599 mobed dark theme to thems.xml 2020-07-06 12:46:41 +04:00
KevinX8 dfcf6bccd8 New translations strings.xml (Hebrew) 2020-07-06 05:47:38 +01:00
KevinX8 c26af3d9cf New translations strings.xml (Chinese Traditional) 2020-07-05 17:51:31 +01:00
KevinX8 1112237999 New translations strings.xml (Chinese Simplified) 2020-07-05 17:51:29 +01:00
KevinX8 afb80c1bbf New translations strings.xml (Korean) 2020-07-05 17:51:28 +01:00
KevinX8 ca33544f02 New translations strings.xml (Spanish) 2020-07-05 17:51:27 +01:00
X1nto 3ca8235964 fixed button position in update center 2020-07-05 20:16:18 +04:00
X1nto 87964d1fd7 fixed url opening in about menu 2020-07-05 20:15:00 +04:00
X1nto 75202544b6 bumped up version code 2020-07-05 20:06:46 +04:00
X1nto 771e4cd4f2 Merge remote-tracking branch 'origin/dev' into dev 2020-07-05 20:05:45 +04:00
X1nto b45550b9c4 bumped up version 2020-07-05 20:05:25 +04:00
X1nto 9a48f6f79d color test 2 2020-07-05 19:40:30 +04:00
X1nto f53f922299 color test 2020-07-05 19:29:12 +04:00
X1nto dba06dd570 fixed build 2020-07-05 19:06:23 +04:00
X1nto 6909be380b switched to observable field 2020-07-05 19:05:09 +04:00
X1nto 1ddd26604b fixed NullPointerException 2020-07-05 17:23:47 +04:00
X1nto a5475985df fixed build 2020-07-05 17:11:34 +04:00
X1nto 1ba1d7f570 swiperefreshlayout test 2020-07-05 16:49:35 +04:00
KevinX8 ba3ab3f3a5 New translations strings.xml (Bengali, India) 2020-07-05 05:47:47 +01:00
KevinX8 3b98fce692 New translations strings.xml (German) 2020-07-05 05:47:45 +01:00
KevinX8 11d3dfa802 New translations strings.xml (Hebrew) 2020-07-05 05:47:42 +01:00
KevinX8 5b78eaba79 New translations strings.xml (Italian) 2020-07-05 05:47:40 +01:00
KevinX8 f2b0ddaa43 New translations strings.xml (Indonesian) 2020-07-05 05:47:39 +01:00
KevinX8 7c3e764bdb New translations strings.xml (Georgian) 2020-07-05 05:47:37 +01:00
KevinX8 5a0e6a495c New translations strings.xml (Japanese) 2020-07-05 05:47:35 +01:00
KevinX8 62d33fb279 New translations strings.xml (Polish) 2020-07-05 05:47:33 +01:00
KevinX8 94a1cedd78 New translations strings.xml (Portuguese, Brazilian) 2020-07-05 05:47:32 +01:00
KevinX8 b5fa8954ae New translations strings.xml (Chinese Traditional) 2020-07-05 05:47:30 +01:00
KevinX8 7b0c203db3 New translations strings.xml (Chinese Simplified) 2020-07-05 05:47:28 +01:00
KevinX8 9dba12b2b0 New translations strings.xml (Ukrainian) 2020-07-05 05:47:27 +01:00
KevinX8 6ce28eb1f0 New translations strings.xml (Vietnamese) 2020-07-05 05:47:26 +01:00
KevinX8 729c0288de New translations strings.xml (Russian) 2020-07-05 05:47:23 +01:00
KevinX8 9043da50a0 New translations strings.xml (Spanish) 2020-07-05 05:47:19 +01:00
KevinX8 42069bfc61 New translations strings.xml (French) 2020-07-05 05:47:18 +01:00
Paulis Gributs 90c457c4b5
Merge pull request #71 from YTVanced/dev
Release 1.1.0
2020-07-04 18:00:03 +01:00
Paulis Gributs ec2c205c28
Merge pull request #73 from YTVanced/l10n_dev
New Crowdin updates
2020-07-04 17:58:12 +01:00
Paulis Gributs 506267a1cc New translations strings.xml (Bengali, India) 2020-07-04 17:57:36 +01:00
Paulis Gributs af23366c83 New translations strings.xml (Hindi) 2020-07-04 17:57:35 +01:00
Paulis Gributs 52962ef12c New translations strings.xml (Romanian) 2020-07-04 17:57:33 +01:00
Paulis Gributs a354b07507 New translations strings.xml (French) 2020-07-04 17:57:31 +01:00
Paulis Gributs 89089a2a79 New translations strings.xml (Spanish) 2020-07-04 17:57:30 +01:00
Paulis Gributs e4fe195bd3 New translations strings.xml (Afrikaans) 2020-07-04 17:57:29 +01:00
Paulis Gributs 2dda9e0a1d New translations strings.xml (Catalan) 2020-07-04 17:57:27 +01:00
Paulis Gributs 1be8fce4ce New translations strings.xml (Czech) 2020-07-04 17:57:26 +01:00
Paulis Gributs f0d38e0594 New translations strings.xml (Danish) 2020-07-04 17:57:25 +01:00
Paulis Gributs 3a6d8243ab New translations strings.xml (German) 2020-07-04 17:57:23 +01:00
Paulis Gributs 5630c73b00 New translations strings.xml (Greek) 2020-07-04 17:57:21 +01:00
Paulis Gributs 40fc2aa8e8 New translations strings.xml (Finnish) 2020-07-04 17:57:20 +01:00
Paulis Gributs 6159bd23c9 New translations strings.xml (Hebrew) 2020-07-04 17:57:18 +01:00
Paulis Gributs 94cf125e01 New translations strings.xml (Hungarian) 2020-07-04 17:57:17 +01:00
Paulis Gributs 5a6e2f1123 New translations strings.xml (Italian) 2020-07-04 17:57:15 +01:00
Paulis Gributs 36246ce3fe New translations strings.xml (Indonesian) 2020-07-04 17:57:14 +01:00
Paulis Gributs 2783c04a48 New translations strings.xml (Japanese) 2020-07-04 17:57:13 +01:00
Paulis Gributs 3f219064d1 New translations strings.xml (Korean) 2020-07-04 17:57:11 +01:00
Paulis Gributs ebac1902a3 New translations strings.xml (Dutch) 2020-07-04 17:57:10 +01:00
Paulis Gributs 4194727bad New translations strings.xml (Norwegian) 2020-07-04 17:57:09 +01:00
Paulis Gributs 63f9ec5353 New translations strings.xml (Polish) 2020-07-04 17:57:07 +01:00
Paulis Gributs 8393cbaf23 New translations strings.xml (Portuguese) 2020-07-04 17:57:06 +01:00
Paulis Gributs 0b1fe4fc87 New translations strings.xml (Russian) 2020-07-04 17:57:04 +01:00
Paulis Gributs e97fc2977b New translations strings.xml (Serbian (Cyrillic)) 2020-07-04 17:57:03 +01:00
Paulis Gributs 4b7127b4b0 New translations strings.xml (Swedish) 2020-07-04 17:57:01 +01:00
Paulis Gributs e6737d54f1 New translations strings.xml (Turkish) 2020-07-04 17:57:00 +01:00
Paulis Gributs cc9aede6a4 New translations strings.xml (Ukrainian) 2020-07-04 17:56:59 +01:00
Paulis Gributs d53456362a New translations strings.xml (Chinese Simplified) 2020-07-04 17:56:57 +01:00
Paulis Gributs 135eed696c New translations strings.xml (Chinese Traditional) 2020-07-04 17:56:56 +01:00
Paulis Gributs fe0d6d7310 New translations strings.xml (Vietnamese) 2020-07-04 17:56:54 +01:00
Paulis Gributs 2bb7c7c9ec New translations strings.xml (Portuguese, Brazilian) 2020-07-04 17:56:53 +01:00
Paulis Gributs bc28ce16b1 New translations strings.xml (Georgian) 2020-07-04 17:56:52 +01:00
Paulis Gributs 0db910e9d7 New translations strings.xml (Arabic) 2020-07-04 17:56:50 +01:00
X1nto cb988af82d Merge remote-tracking branch 'origin/dev' into dev 2020-07-04 20:49:57 +04:00
X1nto 9754f5878c removed apostrophe 2020-07-04 20:49:38 +04:00
Paulis Gributs 70502a9dca
Merge pull request #72 from YTVanced/l10n_dev
New Crowdin updates
2020-07-04 17:48:18 +01:00
Paulis Gributs c1c6a3a16f New translations strings.xml (Afrikaans) 2020-07-04 17:47:40 +01:00
Paulis Gributs 4921455e2f New translations strings.xml (German) 2020-07-04 17:47:38 +01:00
Paulis Gributs 5b501d9431 New translations strings.xml (Italian) 2020-07-04 17:47:35 +01:00
Paulis Gributs 4198e42562 New translations strings.xml (Vietnamese) 2020-07-04 17:47:28 +01:00
Paulis Gributs 0a7a6eddea New translations strings.xml (Georgian) 2020-07-04 17:47:27 +01:00
Paulis Gributs aee6ca22e3 New translations strings.xml (Bengali, India) 2020-07-04 17:40:06 +01:00
Paulis Gributs 7a91efffc3 New translations strings.xml (Hindi) 2020-07-04 17:40:04 +01:00
Paulis Gributs 1bef4bb030 New translations strings.xml (Romanian) 2020-07-04 17:40:02 +01:00
Paulis Gributs 630dc17b2b New translations strings.xml (French) 2020-07-04 17:40:01 +01:00
Paulis Gributs 6e7c5ba352 New translations strings.xml (Spanish) 2020-07-04 17:39:59 +01:00
Paulis Gributs a379eb63f9 New translations strings.xml (Afrikaans) 2020-07-04 17:39:58 +01:00
Paulis Gributs 26caf35195 New translations strings.xml (Catalan) 2020-07-04 17:39:56 +01:00
Paulis Gributs f60f42a454 New translations strings.xml (Czech) 2020-07-04 17:39:55 +01:00
Paulis Gributs efed596442 New translations strings.xml (Danish) 2020-07-04 17:39:54 +01:00
Paulis Gributs 2cf571871e New translations strings.xml (German) 2020-07-04 17:39:52 +01:00
Paulis Gributs 7c96bf0142 New translations strings.xml (Greek) 2020-07-04 17:39:51 +01:00
Paulis Gributs 02cbc4bd0c New translations strings.xml (Finnish) 2020-07-04 17:39:50 +01:00
Paulis Gributs d24b9074cd New translations strings.xml (Hebrew) 2020-07-04 17:39:48 +01:00
Paulis Gributs 21ebde2681 New translations strings.xml (Hungarian) 2020-07-04 17:39:47 +01:00
Paulis Gributs e0c68a6b1c New translations strings.xml (Italian) 2020-07-04 17:39:46 +01:00
Paulis Gributs 82ccd439e3 New translations strings.xml (Indonesian) 2020-07-04 17:39:43 +01:00
Paulis Gributs 6cd521f81a New translations strings.xml (Japanese) 2020-07-04 17:39:41 +01:00
Paulis Gributs 635b9b0487 New translations strings.xml (Korean) 2020-07-04 17:39:40 +01:00
Paulis Gributs 8b1f433745 New translations strings.xml (Dutch) 2020-07-04 17:39:38 +01:00
Paulis Gributs 171676569a New translations strings.xml (Norwegian) 2020-07-04 17:39:37 +01:00
Paulis Gributs 76802c894e New translations strings.xml (Polish) 2020-07-04 17:39:36 +01:00
Paulis Gributs 5c3204c225 New translations strings.xml (Portuguese) 2020-07-04 17:39:34 +01:00
Paulis Gributs 5663a12d84 New translations strings.xml (Russian) 2020-07-04 17:39:33 +01:00
Paulis Gributs f470962757 New translations strings.xml (Serbian (Cyrillic)) 2020-07-04 17:39:32 +01:00
Paulis Gributs 2385591862 New translations strings.xml (Swedish) 2020-07-04 17:39:31 +01:00
Paulis Gributs fd73492558 New translations strings.xml (Turkish) 2020-07-04 17:39:29 +01:00
Paulis Gributs 00aa2a1898 New translations strings.xml (Ukrainian) 2020-07-04 17:39:28 +01:00
Paulis Gributs ea724a3f04 New translations strings.xml (Chinese Simplified) 2020-07-04 17:39:26 +01:00
Paulis Gributs 91a52663d9 New translations strings.xml (Chinese Traditional) 2020-07-04 17:39:25 +01:00
Paulis Gributs ead6e8a78a New translations strings.xml (Vietnamese) 2020-07-04 17:39:23 +01:00
Paulis Gributs d986814c0a New translations strings.xml (Portuguese, Brazilian) 2020-07-04 17:39:22 +01:00
Paulis Gributs 669a0a759e New translations strings.xml (Georgian) 2020-07-04 17:39:20 +01:00
Paulis Gributs eaa5b499d2 New translations strings.xml (Arabic) 2020-07-04 17:39:19 +01:00
X1nto 157be21a47 small changes 2020-07-04 20:36:59 +04:00
X1nto c5c872f7b9 improved strings 2020-07-04 20:28:44 +04:00
X1nto 02db3da480 import optimisation 2020-07-04 20:06:32 +04:00
X1nto 865d61d413 fixed changelog attaching 2020-07-04 20:06:07 +04:00
X1nto 109b065ab0 fixed versioncode comparing 2020-07-04 19:55:42 +04:00
X1nto 50b17c55e4 fixed crash on external browser selected 2020-07-04 19:40:36 +04:00
X1nto ff86435bd3 fixed bug with back button showing up on home page 2020-07-04 19:35:23 +04:00
X1nto 25295bc9d2 bumped up version 2020-07-04 19:25:45 +04:00
X1nto 5b9665a364 import cleanup 2020-07-04 19:16:46 +04:00
X1nto b8ac9c80a4 Merge remote-tracking branch 'origin/dev' into dev 2020-07-04 19:06:29 +04:00
X1nto f9e0776d95 added option to open links in external broser 2020-07-04 19:06:01 +04:00
Paulis Gributs b1f1a15cde
switched domain as vanced also moved to crowdin 2020-07-04 15:32:43 +01:00
Tornike Khintibidze ef0863649b
Merge pull request #70 from Skrilltrax/use-databinding
Update app to use databinding at more places
2020-07-04 17:52:03 +04:00
Aditya Wasan 41ed18d54c Update app to use databinding at more places
Signed-off-by: Aditya Wasan <adityawasan55@gmail.com>
2020-07-04 19:14:28 +05:30
Paulis Gributs 28513d635a
Merge pull request #66 from YTVanced/l10n_dev
New Crowdin updates
2020-07-04 13:20:50 +01:00
Tornike Khintibidze e93f800dba
Merge pull request #68 from AioiLight/usefullinks-text-wrap
Adjust the width of the layout for some languages
2020-07-04 15:28:58 +04:00
AioiLight c7f71b1af7 Adjust the width of the layout for some languages 2020-07-04 20:14:48 +09:00
Paulis Gributs 5c19c790de New translations strings.xml (Bengali, India) 2020-07-04 05:38:23 +01:00
Paulis Gributs b1d1a208de New translations strings.xml (Hindi) 2020-07-04 05:38:21 +01:00
Paulis Gributs fc5a2a94b8 New translations strings.xml (Romanian) 2020-07-04 05:38:20 +01:00
Paulis Gributs b46ccb8ef8 New translations strings.xml (French) 2020-07-04 05:38:18 +01:00
Paulis Gributs 566a91355c New translations strings.xml (Spanish) 2020-07-04 05:38:17 +01:00
Paulis Gributs 1287b558c3 New translations strings.xml (Afrikaans) 2020-07-04 05:38:15 +01:00
Paulis Gributs 413e9efcda New translations strings.xml (Catalan) 2020-07-04 05:38:14 +01:00
Paulis Gributs a39ead3ea8 New translations strings.xml (Czech) 2020-07-04 05:38:12 +01:00
Paulis Gributs 801ac27577 New translations strings.xml (Danish) 2020-07-04 05:38:11 +01:00
Paulis Gributs 8eaba52bda New translations strings.xml (German) 2020-07-04 05:38:10 +01:00
Paulis Gributs a6d78e42be New translations strings.xml (Greek) 2020-07-04 05:38:08 +01:00
Paulis Gributs 181370ebe8 New translations strings.xml (Finnish) 2020-07-04 05:38:07 +01:00
Paulis Gributs f1a168c8a6 New translations strings.xml (Hebrew) 2020-07-04 05:38:05 +01:00
Paulis Gributs 8b4fdb1699 New translations strings.xml (Hungarian) 2020-07-04 05:38:04 +01:00
Paulis Gributs 8b2eb8d89d New translations strings.xml (Italian) 2020-07-04 05:38:02 +01:00
Paulis Gributs 1c06b9266d New translations strings.xml (Indonesian) 2020-07-04 05:38:01 +01:00
Paulis Gributs 8680a5afd9 New translations strings.xml (Japanese) 2020-07-04 05:37:59 +01:00
Paulis Gributs 18a23baf5d New translations strings.xml (Korean) 2020-07-04 05:37:58 +01:00
Paulis Gributs 54b78a5c31 New translations strings.xml (Dutch) 2020-07-04 05:37:57 +01:00
Paulis Gributs 428940865d New translations strings.xml (Norwegian) 2020-07-04 05:37:55 +01:00
Paulis Gributs 262f02e7a8 New translations strings.xml (Polish) 2020-07-04 05:37:54 +01:00
Paulis Gributs 1f590c07f8 New translations strings.xml (Portuguese) 2020-07-04 05:37:52 +01:00
Paulis Gributs 1e541e1d68 New translations strings.xml (Russian) 2020-07-04 05:37:51 +01:00
Paulis Gributs 91f182f921 New translations strings.xml (Serbian (Cyrillic)) 2020-07-04 05:37:50 +01:00
Paulis Gributs 23fbecacf7 New translations strings.xml (Swedish) 2020-07-04 05:37:48 +01:00
Paulis Gributs 4978d1c57c New translations strings.xml (Turkish) 2020-07-04 05:37:46 +01:00
Paulis Gributs 70f300c45a New translations strings.xml (Ukrainian) 2020-07-04 05:37:44 +01:00
Paulis Gributs 8e477babc3 New translations strings.xml (Chinese Simplified) 2020-07-04 05:37:43 +01:00
Paulis Gributs f7ca9d0eb7 New translations strings.xml (Chinese Traditional) 2020-07-04 05:37:42 +01:00
Paulis Gributs 0ea879e039 New translations strings.xml (Vietnamese) 2020-07-04 05:37:40 +01:00
Paulis Gributs 00d97796ec New translations strings.xml (Portuguese, Brazilian) 2020-07-04 05:37:39 +01:00
Paulis Gributs 2fdf258a49 New translations strings.xml (Georgian) 2020-07-04 05:37:37 +01:00
Paulis Gributs bfbbaedad8 New translations strings.xml (Arabic) 2020-07-04 05:37:36 +01:00
Paulis Gributs e4fb6be922
Merge pull request #64 from YTVanced/master
Update Dev
2020-07-04 00:57:41 +01:00
kevinx8 6341baa048 Revert "Fixed string literal duplication"
This reverts commit 465bca4b
2020-07-04 00:22:50 +01:00
kevinx8 5db3e88446 Revert "Grabbed app names from strings"
This reverts commit e79523ec
2020-07-04 00:22:44 +01:00
Paulis Gributs b740482e40
Specified branch for PRs 2020-07-04 00:18:52 +01:00
Paulis Gributs 716977711e
Merge pull request #63 from TacoTheDank/master
A bit of cleanup and deprecation fixes
2020-07-03 22:46:32 +01:00
TacoTheDank 9064d4e890 Fix a building error, clean up a few tiny things 2020-07-03 17:25:37 -04:00
TacoTheDank dcbce7a02c Fix up fonts 2020-07-03 16:45:23 -04:00
TacoTheDank 7dd95ef840 Replace deprecated libraries 2020-07-03 16:35:05 -04:00
TacoTheDank 8ee262927f Organize libraries 2020-07-03 16:29:40 -04:00
TacoTheDank d49374020a Fix Studio deprecation 2020-07-03 16:26:40 -04:00
TacoTheDank 885f40b47b Delete iml files 2020-07-03 16:24:23 -04:00
Paulis Gributs ec7afc739b
Merge pull request #61 from AioiLight/version-clipboard
Copy version when Vanced and MicroG card long-tapped
2020-07-03 19:48:19 +01:00
Tornike Khintibidze e79523ecf9
Grabbed app names from strings 2020-07-03 22:45:47 +04:00
Tornike Khintibidze 465bca4b00
Fixed string literal duplication 2020-07-03 22:34:51 +04:00
AioiLight c61acf01f6 make string for toast 2020-07-04 02:52:15 +09:00
AioiLight 55f6ac8622 Copy version when MaterialCardView tapped 2020-07-04 02:46:09 +09:00
Paulis Gributs 3155192ddf
Merge pull request #60 from YTVanced/l10n_dev
New Crowdin updates
2020-07-03 17:34:54 +01:00
Paulis Gributs f04718c9d7 New translations strings.xml (Afrikaans) 2020-07-03 17:33:53 +01:00
Paulis Gributs dbf9c687fc New translations strings.xml (Arabic) 2020-07-03 17:33:52 +01:00
Paulis Gributs e2905ecdb2 New translations strings.xml (Catalan) 2020-07-03 17:33:50 +01:00
Paulis Gributs e75d197fc2 New translations strings.xml (Czech) 2020-07-03 17:33:49 +01:00
Paulis Gributs 94e64a20b8 New translations strings.xml (Danish) 2020-07-03 17:33:47 +01:00
Paulis Gributs 621f07423c New translations strings.xml (Finnish) 2020-07-03 17:33:45 +01:00
Paulis Gributs 4efe942305 New translations strings.xml (Hebrew) 2020-07-03 17:33:44 +01:00
Paulis Gributs 324a64ceb4 New translations strings.xml (Hungarian) 2020-07-03 17:33:42 +01:00
Paulis Gributs ae5018f76b New translations strings.xml (Georgian) 2020-07-03 17:33:41 +01:00
Paulis Gributs d84866bc35 New translations strings.xml (Korean) 2020-07-03 17:33:39 +01:00
Paulis Gributs 7dc0a3768b New translations strings.xml (Dutch) 2020-07-03 17:33:37 +01:00
Paulis Gributs 4416f1962b New translations strings.xml (Norwegian) 2020-07-03 17:33:36 +01:00
Paulis Gributs 92c3faf2bc New translations strings.xml (Portuguese) 2020-07-03 17:33:34 +01:00
Paulis Gributs 11255312ae New translations strings.xml (Russian) 2020-07-03 17:33:33 +01:00
Paulis Gributs aead772aa1 New translations strings.xml (Spanish) 2020-07-03 17:33:31 +01:00
Paulis Gributs 9911de3cd8 New translations strings.xml (Serbian (Cyrillic)) 2020-07-03 17:33:30 +01:00
Paulis Gributs 2d8ecdc5b2 New translations strings.xml (Vietnamese) 2020-07-03 17:33:28 +01:00
Paulis Gributs e80727a5a9 New translations strings.xml (Portuguese, Brazilian) 2020-07-03 17:33:27 +01:00
Paulis Gributs 0a571e906c New translations strings.xml (Indonesian) 2020-07-03 17:33:25 +01:00
Paulis Gributs 2eb87552b7 New translations strings.xml (Hindi) 2020-07-03 17:33:24 +01:00
Paulis Gributs 0d2fac9ce1 New translations strings.xml (Bengali, India) 2020-07-03 17:33:22 +01:00
Paulis Gributs dac0848cda New translations strings.xml (Swedish) 2020-07-03 17:33:16 +01:00
Paulis Gributs 0ca9efa349 New translations strings.xml (Romanian) 2020-07-03 17:33:15 +01:00
X1nto b06d5bb0cc removed uploading to discord 2020-07-03 20:32:21 +04:00
Paulis Gributs a13bb970f5 New translations strings.xml (Chinese Traditional) 2020-07-03 17:25:59 +01:00
Paulis Gributs 6c9e974d8c New translations strings.xml (French) 2020-07-03 17:25:57 +01:00
Paulis Gributs c61be7d2af New translations strings.xml (German) 2020-07-03 17:25:56 +01:00
Paulis Gributs 69d29bc86b New translations strings.xml (Greek) 2020-07-03 17:25:55 +01:00
Paulis Gributs 69e7745a1a New translations strings.xml (Italian) 2020-07-03 17:25:53 +01:00
Paulis Gributs 587db633de New translations strings.xml (Japanese) 2020-07-03 17:25:52 +01:00
Paulis Gributs 9934312174 New translations strings.xml (Polish) 2020-07-03 17:25:51 +01:00
Paulis Gributs 5c70de5c2e New translations strings.xml (Turkish) 2020-07-03 17:25:49 +01:00
Paulis Gributs 466e2b436d New translations strings.xml (Ukrainian) 2020-07-03 17:25:48 +01:00
Paulis Gributs 1594a80248 New translations strings.xml (Chinese Simplified) 2020-07-03 17:25:46 +01:00
kevinx8 27cb2b746d fix crowdin 2020-07-03 17:25:26 +01:00
Paulis Gributs d4a44f1a76 Update Crowdin configuration file 2020-07-03 17:21:22 +01:00
X1nto 7590bd06a0 removed unused locales 2020-07-03 20:16:09 +04:00
Paulis Gributs 528801a7b0
Merge pull request #57 from YTVanced/l10n_dev
New Crowdin updates
2020-07-03 17:12:51 +01:00
Paulis Gributs 474d517062 New translations strings.xml (Chinese Traditional) 2020-07-03 17:01:08 +01:00
Paulis Gributs d4cd2c1a87 New translations strings.xml (Chinese Simplified) 2020-07-03 17:01:06 +01:00
Paulis Gributs 3330ceb430 New translations strings.xml (Ukrainian) 2020-07-03 17:01:05 +01:00
Paulis Gributs 4455a0f3ec New translations strings.xml (Turkish) 2020-07-03 17:01:04 +01:00
Paulis Gributs 6fbfc65cce New translations strings.xml (Polish) 2020-07-03 17:01:02 +01:00
Paulis Gributs 2b6eba952c New translations strings.xml (Japanese) 2020-07-03 17:01:01 +01:00
Paulis Gributs 290a1f8d35 New translations strings.xml (Greek) 2020-07-03 17:00:59 +01:00
X1nto c5a019745e Merge branch 'dev' of https://github.com/YTVanced/VancedManager into dev 2020-07-03 19:59:51 +04:00
X1nto d2fadfd5ef Merge branch 'master' of https://github.com/YTVanced/VancedManager into dev 2020-07-03 19:52:12 +04:00
Paulis Gributs 33580abd18
changted to crowdin domain 2020-07-03 16:32:06 +01:00
Paulis Gributs c7207c3333 Update Crowdin configuration file 2020-07-03 16:22:27 +01:00
Paulis Gributs 3edebfce3e Update Crowdin configuration file 2020-07-03 16:06:52 +01:00
X1nto a6e809c209 removed unused strings 2020-07-03 18:43:36 +04:00
Paulis Gributs 54fe7ef6df
Added download counter 2020-07-03 14:34:57 +01:00
X1nto ce599377db small changes 2020-07-03 15:07:14 +04:00
X1nto 3e9ddc856a made notification expandable 2020-07-03 14:03:19 +04:00
X1nto 565e8d8a94 cleaned up strings 2020-07-03 13:16:08 +04:00
X1nto e59a4e50e8 removed useless toast 2020-07-03 01:09:21 +04:00
X1nto 38e15d09f1 removed useless toast 2020-07-03 00:44:08 +04:00
Paulis Gributs 66f875f4b0 Update issue templates 2020-07-02 21:31:06 +01:00
X1nto acac73c86b fixed language name writing 2020-07-03 00:29:55 +04:00
426 changed files with 17487 additions and 6302 deletions

View File

@ -0,0 +1,41 @@
name: Bug Report
description: File a bug report
title: "[Bug]: "
labels: ["bug"]
assignees:
- X1nto
body:
- type: textarea
id: device-info
attributes:
label: Device
description: What device are you using?
value: |
Device:
Operating System:
Android Version:
validations:
required: true
- type: textarea
id: manager-version
attributes:
label: Version
description: What version of Vanced Manager are you using?
validations:
required: true
- type: textarea
id: bug-description
attributes:
label: Bug Description
description: Describe the bug and how to reproduce it in as much detail as possible.
validations:
required: true
- type: checkboxes
id: is-manager-bug
attributes:
label: Additional checks
options:
- label: I have checked other bug reports and this is not a duplicate.
required: true
- label: This is a bug in Vanced Manager and NOT YouTube Vanced/YouTube Vanced Music/Vanced microG.
required: true

1
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1 @@
blank_issues_enabled: false

View File

@ -0,0 +1,29 @@
name: Feature Request
description: Request a feature
title: "[Feature]: "
labels: ["enhancement"]
assignees:
- X1nto
body:
- type: textarea
id: suggestion
attributes:
label: Suggestion
validations:
required: true
- type: textarea
id: suggestion-relevancy
attributes:
label: Additional Information
description: Why is this suggestion relevant?
validations:
required: true
- type: checkboxes
id: is-manager-suggestion
attributes:
label: Additional checks
options:
- label: I have checked other feature requests and this is not a duplicate.
required: true
- label: This is a suggestion for Vanced Manager and NOT YouTube Vanced/YouTube Vanced Music/Vanced microG.
required: true

View File

@ -4,38 +4,32 @@ on:
push:
branches:
- dev
paths-ignore:
- '**.md'
pull_request:
branches:
- dev
paths-ignore:
- '**.md'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: set up JDK 1.8
- name: set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 1.8
java-version: 11
- name: Grant rights
run: chmod +x ./gradlew
- name: Build project with Gradle
run: ./gradlew build
- name: Build Release APK with Gradle
- name: Build debug APK with Gradle
run: ./gradlew assembleDebug
- name: Upload to GitHub
- name: Upload Debug
uses: actions/upload-artifact@v2
with:
name: 'Vanced-Manager'
name: 'Manager'
path: app/build/outputs/apk/debug/app-debug.apk
- name: Upload to Discord
uses: sinshutu/upload-to-discord@master
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
with:
args: app/build/outputs/apk/debug/app-debug.apk

5
.gitignore vendored
View File

@ -3,5 +3,8 @@
build/
out/
app/src/main/java/com/vanced/manager/core/base/DummyJava.java
app/build/
app/release
local.properties
/.github/
*.iml
.vscode/

View File

@ -1,23 +1,64 @@
For anyone who wants to provide translations please submit them to https://vanced.oneskyapp.com as we also use it for YouTube Vanced. Any issues with translations should be posted there too.
======
# Vanced Manager
Hi, when we released Vanced 15.05.54, people were upset because it used the .apks format, which was way harder to install than a traditional .apk file. Even though we wrote clear instructions on how to install the new Vanced build, people still couldn't figure it out.
Then we thought, "why don't we make a manager for vanced, which will download, update and uninstall Vanced and MicroG, have an easy and understandable UI and be less than 5mb?" and that's how Vanced Manager was born.
<div>
[![Github All Releases](https://img.shields.io/github/downloads/YTVanced/VancedManager/total.svg?style=for-the-badge)](https://github.com/YTVanced/VancedManager/releases/latest) [![Github All Releases](https://img.shields.io/github/release/YTVanced/VancedManager.svg?style=for-the-badge)](https://github.com/YTVanced/VancedManager/releases/latest)
</div>
## Introduction
Hi, when we released Vanced 15.05.54, people were upset because it used the .apks format, which was burdensome to install than a traditional .apk file. Even though we wrote clear instructions on how to install the new Vanced build, people still couldn't figure it out.
Then we thought, "why don't we make a manager for vanced, which will download, update and uninstall Vanced and MicroG, have an easy and user-friendly UI and be less than 10mb?" and that's how Vanced Manager was born.
After 3 months of development, we are finally ready to introduce Vanced Manager to the masses. Vanced manager can easily install and uninstall vanced and microg, has various settings for customisation and better experience. The Manager comes with an easy-to-use interface, support for background download and installation*
##### *Due to changes in Android Oreo and up, and because of aggressive battery optimisations in some ROMs, feature may not be available for all devices.
After 3 months of development, we are finally ready to Introduce [Vanced Manager](https://github.com/YTVanced/VancedManager) to the masses!!
## Vanced Developers
- xfileFIN
- KevinX8
- Zanezam
- Laura Almeida
## Features
## Vanced Manager Developer
- Xinto (X1nto)
- Vanced manager can easily install and uninstall Vanced and MicroG.
- It has various settings for customization and better experience.
- The Manager comes with an easy-to-use Interface.
</br>
<div class="note">
<p><strong>NOTE: </strong>Background download/installation feature is no longer supported due to problems with some ROMs, please <b>DO NOT</b> report issues regarding background activity.</p>
</div>
<!-- ##### Background download/installation feature is no longer supported due to problems with some ROMs, please do NOT report issues regarding background activity. -->
## Contributions
Pull Requests should be made to the [Dev](https://github.com/YTVanced/VancedManager) Branch as that is the working branch, master is for Release code only.
For anyone who wants to provide translations please submit them to this [link](https://crowdin.com/project/vanced-manager) as we also use it for YouTube Vanced. Any issues with translations should be posted there too.
## TODO
- [ ] Clean up the ViewModel and DataModel code
- [ ] Migrate to Jetpack Compose when it's officially released
## Building
<div>
[![Build](https://github.com/YTVanced/VancedManager/actions/workflows/debug.yml/badge.svg?branch=dev)](https://github.com/YTVanced/VancedManager/actions/workflows/debug.yml)
</div>
## Using Android Studio
Clone the Repository, open it in Android Studio and build the application.
## Google Advanced Protection Program
If you are using this feature on your Google account, you must either disable it or log out from your Google account before installing Youtube Vanced via Vanced Manager.
The Google Advanced Protection Program does not allow the installation of apps from unknown sources. These security measures are tied to the protected account and not the device. After the installation, you will be able to log back in or enroll again into the program.
## Using Command Line
#### On Windows:
```powershell
.\gradlew.bat assembleDebug
```
#### On Linux/macOS:
```bash
chmod +x gradlew
./gradlew assembleDebug
```
## Credits
- topjohnwu for his wonderful [LibSU](https://github.com/topjohnwu/libsu)
- Mindorks for their amazing [PRDownloader](https://github.com/MindorksOpenSource/PRDownloader)
- aefyr for [SAI](https://github.com/aefyr/SAI), which was an inspiration for our Manager
- 100rabhkr for their [GetJson](https://github.com/100rabhkr/getjson) library

View File

@ -9,9 +9,9 @@ No one really thought there would be problems with this format, because installa
## Problems with .apks format
Main problems with new format were either with device CPU architecture or MemeUI shit with MiUI optimisations. We wrote instructions for VancedHelper but no one used it for troubleshooting. Then some users complained about new format and refused to upgrade to newest version (We don't give a fuck about that) because "I dOn'T WaNT To HaVe OnE MoRE apP To insTalL VanCeD" so we decided to make an installer for Vanced
# Vanced Manager
Ladies and gentlemen, I'm very proud to introduce the new **Vancad Manger 1.0.0™** (typo is intentional)
Ladies and gentlemen, I'm very proud to introduce the new **Vancad Banger 2.0.0.0.0.0.0.0.0.0.0.0.0™** (typo intended)
Vanced Manager is an universal utility for installing/updating Vanced and MicroG. It will push notifications once the update is ready (Now that's what I call pwetty epic).
Vanced manager comes with a slick UI ~~that was stolen from the new Magisk Manager (I'm very sorry John but I looked at your code for about 100 times).~~ Actually, while UI may look very similar to new Magisk Manager's UI, It's still very different (that's a blatant lie, I know).
Vanced Manager comes with a slick UI ~~that was stolen from the new Magisk Manager (I'm very sorry John but I looked at your code for about 100 times). Actually, while UI may look very similar to new Magisk Manager's UI, It's still very different (that's a blatant lie, I know).~~ <- diz shit completely invalid now so suck my balls
Main Menu screenshot taken from tablet
![screenshot](https://i.imgur.com/r2jiq7J.png)
@ -21,16 +21,24 @@ Isn't this lovely and beautiful?
- 1337Potato: shit
- Response: Yes
===================
- Noobbot: The app is not useful because I have YT Premium. Thank you bye
- Response: I hope you get sucked by a di-
- Response: I hope you get sucked by a di-
===================
- Vortextriangle: The app is so useful that I uninstalled it after installing Vanced
- Response: yo that's finna woke
## How does it suck?™
Vanced Manager sucks 100% of your CPU to mine Bitcoins, this is a new technique called CryptocurrencySucker2077. Basically we load up your shit MediaTek MT 8163 with processes that help us mine cryptocurrency, this is how Vanced Team makes money (excluding BAT and AdGuard referrals)
## Credits
### Vanced Manager developers
- X1nto (UI, UX, Downloader, Installer, Signature Checker, PussiSlayer69, Collector of 400 BAT, Professional Liar)
- X1nto (UI, UX, Downloader, Installer, Signature Checker, PussiSlayer69, Collector of 400 BAT, A great liar)
- Koopah (Unix lord, Unmounter of /system, Code criticizer)
### The Vanced Team
- xfileFIN
![xfileFIN](https://i.imgur.com/hLdzTVq.png)

View File

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="Vanced Manager" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="java-gradle" name="Java-Gradle">
<configuration>
<option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />
<option name="BUILDABLE" value="false" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

1
app/.gitignore vendored
View File

@ -1 +0,0 @@
/build

File diff suppressed because one or more lines are too long

View File

@ -1,73 +0,0 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.vanced.manager"
minSdkVersion 21
targetSdkVersion 29
versionCode 10
versionName "1.0.2"
vectorDrawables.useSupportLibrary = true
}
lintOptions {
disable 'MissingTranslation', 'ExtraTranslation'
}
aaptOptions {
noCompress 'apk', '.apk'
}
applicationVariants.all { variant ->
variant.resValue "string", "versionName", variant.versionName
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
dataBinding {
enabled = true
}
// To inline the bytecode built with JVM target 1.8 into
// bytecode that is being built with JVM target 1.6. (e.g. navArgs)
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.core:core-ktx:1.3.0'
implementation 'androidx.fragment:fragment-ktx:1.2.5'
implementation 'androidx.preference:preference-ktx:1.1.1'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.browser:browser:1.2.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.navigation:navigation-fragment-ktx:2.2.2'
implementation 'androidx.navigation:navigation-ui-ktx:2.2.2'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.1.0'
implementation 'com.github.100rabhkr:GetJSON:1.0'
implementation 'com.github.topjohnwu.libsu:core:2.5.1'
implementation 'com.mindorks.android:prdownloader:0.6.0'
}

139
app/build.gradle.kts Normal file
View File

@ -0,0 +1,139 @@
plugins {
id("com.android.application")
kotlin("android")
kotlin("kapt")
id("com.google.gms.google-services")
id("com.google.firebase.crashlytics")
id("com.google.firebase.firebase-perf")
id("androidx.navigation.safeargs.kotlin")
id("kotlin-android")
}
android {
compileSdk = 31
defaultConfig {
applicationId = "com.vanced.manager"
minSdk = 21
targetSdk = 31
versionCode = 262
versionName = "2.6.2 (Crimson)"
vectorDrawables {
useSupportLibrary = true
}
buildConfigField("String[]", "MANAGER_LANGUAGES", "{$languages}")
}
lint {
disable("MissingTranslation", "ExtraTranslation")
}
applicationVariants.all {
resValue("string", "versionName", versionName)
}
buildTypes {
getByName("release") {
isMinifyEnabled = true
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}
buildFeatures {
viewBinding = true
}
packagingOptions {
resources {
excludes += "META-INF/DEPENDENCIES"
excludes += "META-INF/*.kotlin_module"
}
}
// To inline the bytecode built with JVM target 1.8 into
// bytecode that is being built with JVM target 1.6. (e.g. navArgs)
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
kotlinOptions {
jvmTarget = "1.8"
}
}
}
val languages: String get() {
val langs = arrayListOf("en", "bn_BD", "bn_IN", "pa_IN", "pa_PK", "pt_BR", "pt_PT", "zh_CN", "zh_TW")
val exceptions = arrayOf("bn", "pa", "pt", "zh")
File("$projectDir/src/main/res").listFiles()?.filter {
val name = it.name
name.startsWith("values-") && !name.contains("v23")
}?.forEach { dir ->
val dirname = dir.name.substringAfter("-").substringBefore("-")
if (!exceptions.contains(dirname)) {
langs.add(dirname)
}
}
return langs.joinToString(", ") { "\"$it\"" }
}
dependencies {
implementation(project(":core-presentation"))
implementation(project(":core-ui"))
implementation(project(":library-network"))
// Kotlin
implementation(kotlin("stdlib-jdk8"))
implementation(kotlin("reflect"))
// AndroidX
implementation("androidx.appcompat:appcompat:1.3.1")
implementation("androidx.browser:browser:1.3.0")
implementation("androidx.constraintlayout:constraintlayout:2.1.1")
implementation("androidx.core:core-ktx:1.6.0")
implementation("androidx.fragment:fragment-ktx:1.3.6")
implementation("androidx.lifecycle:lifecycle-livedata-core-ktx:2.3.1")
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1")
implementation("androidx.localbroadcastmanager:localbroadcastmanager:1.0.0")
implementation("androidx.navigation:navigation-fragment-ktx:2.3.5")
implementation("androidx.navigation:navigation-ui-ktx:2.3.5")
implementation("androidx.preference:preference-ktx:1.1.1")
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")
implementation("androidx.work:work-runtime-ktx:2.7.0-rc01")
implementation("com.github.madrapps:pikolo:2.0.2")
implementation("com.google.android.material:material:1.5.0-alpha04")
// JSON parser
implementation("com.beust:klaxon:5.5")
// HTTP networking
implementation("com.github.kittinunf.fuel:fuel:2.3.1")
implementation("com.github.kittinunf.fuel:fuel-coroutines:2.3.1")
implementation("com.github.kittinunf.fuel:fuel-json:2.3.1")
implementation("com.squareup.okhttp3:logging-interceptor:4.9.2")
implementation("com.squareup.retrofit2:retrofit:2.9.0")
// Root permissions
val libsuVersion = "3.1.2"
implementation("com.github.topjohnwu.libsu:core:$libsuVersion")
implementation("com.github.topjohnwu.libsu:io:$libsuVersion")
//implementation("com.github.topjohnwu.libsu:busybox:$libsuVersion")
// Layout
implementation("com.google.android.flexbox:flexbox:3.0.0")
// Firebase
implementation("com.google.firebase:firebase-analytics-ktx:19.0.2")
implementation("com.google.firebase:firebase-crashlytics:18.2.3")
implementation("com.google.firebase:firebase-messaging:22.0.0")
implementation("com.google.firebase:firebase-perf:20.0.3")
}

40
app/google-services.json Normal file
View File

@ -0,0 +1,40 @@
{
"project_info": {
"project_number": "840099702732",
"firebase_url": "https://vanced-manager-official.firebaseio.com",
"project_id": "vanced-manager-official",
"storage_bucket": "vanced-manager-official.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:840099702732:android:ca65567b49f622bc359f69",
"android_client_info": {
"package_name": "com.vanced.manager"
}
},
"oauth_client": [
{
"client_id": "840099702732-4fjjofq6on2bpd7jb6f96bk0mkrjkkf6.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyAPI1RUaoCHmmWz9-TLvTKYPYs0ZVKkS2U"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "840099702732-4fjjofq6on2bpd7jb6f96bk0mkrjkkf6.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
}
],
"configuration_version": "1"
}

View File

@ -1,6 +1,6 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
# proguardFiles setting in build.gradle.kts.kts.kts.kts.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
@ -13,10 +13,11 @@
#}
-keep class com.vanced.manager.core.App
-keep class com.crowdin.platform.* { *; }
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
-keepattributes SourceFile, LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.

View File

@ -1,14 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.vanced.manager">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<!-- is required for some Android 5.x devices -->
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />
<queries>
<package android:name="com.vanced.android.youtube" />
<package android:name="com.google.android.youtube" />
<package android:name="com.vanced.android.apps.youtube.music" />
<package android:name="com.google.android.apps.youtube.music" />
<package android:name="com.mgoogle.android.gms" />
<package android:name="com.vanced.faq" />
<package android:name="com.android.vending" />
</queries>
<application
android:name=".core.App"
@ -17,14 +32,13 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
tools:ignore="UnusedAttribute"
tools:replace="android:allowBackup">
android:supportsRtl="true">
<activity
android:name=".ui.core.SplashScreenActivity"
android:name=".ui.SplashScreenActivity"
android:label="@string/app_name"
android:theme="@style/SplashTheme">
android:theme="@style/SplashTheme"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@ -34,21 +48,36 @@
<meta-data
android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />
</activity>
<activity
android:name=".ui.WelcomeActivity"
android:theme="@style/DarkTheme"/>
<activity
android:name=".ui.MainActivity"
android:label="@string/app_name" />
android:configChanges="layoutDirection|locale|keyboardHidden|orientation|screenSize"
android:label="@string/app_name"
android:theme="@style/DarkTheme"
android:exported="true">
<meta-data
android:name="preloaded_fonts"
android:resource="@array/preloaded_fonts" />
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="api.vancedapp.com"/>
</intent-filter>
</activity>
<provider
android:authorities="${applicationId}.provider"
android:name="androidx.core.content.FileProvider"
android:exported="false"
android:grantUriPermissions="true">
android:authorities="${applicationId}.provider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
@ -56,14 +85,22 @@
</provider>
<service android:name=".core.installer.SplitInstallerService" />
<service android:name=".core.installer.RootSplitInstallerService" />
<service android:name=".core.installer.SplitInstaller" />
<service
android:name=".core.firebase.CloudMessaging"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/ic_stat_name" />
<service android:name=".core.installer.AppUninstallerService" />
<service android:name=".core.installer.AppInstallerService" />
<service android:name=".core.installer.AppInstaller" />
<service android:name=".core.downloader.VancedDownloadService" />
<service android:name=".core.downloader.MicrogDownloadService" />
</application>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -0,0 +1,199 @@
package com.vanced.manager.adapter
import android.animation.ValueAnimator
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import androidx.core.animation.addListener
import androidx.core.view.isGone
import androidx.core.view.isVisible
import androidx.core.view.updateLayoutParams
import androidx.fragment.app.FragmentActivity
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.card.MaterialCardView
import com.vanced.manager.R
import com.vanced.manager.databinding.ViewAppExpandableBinding
import com.vanced.manager.model.ButtonTag
import com.vanced.manager.model.DataModel
import com.vanced.manager.ui.dialogs.AppInfoDialog
import com.vanced.manager.ui.dialogs.AppUninstallDialog
import com.vanced.manager.ui.viewmodels.HomeViewModel
import com.vanced.manager.utils.*
class ExpandableAppListAdapter(
private val activity: FragmentActivity,
private val viewModel: HomeViewModel
) : RecyclerView.Adapter<ExpandableAppListAdapter.ListViewHolder>() {
private val apps = mutableListOf<String>()
private val dataModels = mutableListOf<DataModel?>()
private val prefs = getDefaultSharedPreferences(activity)
private val isRoot = prefs.managerVariant == "root"
private var isAnimationRunning = false
inner class ListViewHolder(private val binding: ViewAppExpandableBinding) :
RecyclerView.ViewHolder(binding.root) {
private var isExpanded = false
fun bind(position: Int) {
val dataModel = dataModels[position]
with(binding) {
appTitle.text = dataModel?.appName
appDescription.text = dataModel?.appDescription
dataModel?.appIcon?.let { appIcon.setImageResource(it) }
appClickableLayout.setOnClickListener {
if (isAnimationRunning) return@setOnClickListener
val rootHeight = root.measuredHeight
val expandedViewHeight = appExpandedView.height
val expandedTranslation = appClickableLayout.height.toFloat()
when (isExpanded.also { isExpanded = !isExpanded }) {
true -> {
appExpandedView.toggle(0f, 0.8f, -expandedTranslation)
root.toggleCard(rootHeight - expandedViewHeight)
appExpandArrow.rotateArrow(90f)
}
false -> {
root.toggleCard(rootHeight + expandedViewHeight)
appExpandedView.toggle(1f, 1f, expandedTranslation)
appExpandArrow.rotateArrow(-90f)
}
}
}
appUninstall.setOnClickListener {
AppUninstallDialog.newInstance(
dataModel?.appName,
dataModel?.appPkg
).show(activity.supportFragmentManager, null)
}
appLaunch.setOnClickListener {
viewModel.launchApp(apps[position], isRoot)
}
appInfo.setOnClickListener {
AppInfoDialog.newInstance(
appName = apps[position],
appIcon = dataModel?.appIcon,
changelog = dataModel?.changelog?.value
).show(activity.supportFragmentManager, "info")
}
dataModel?.buttonTag?.observe(activity) { buttonTag ->
appDownload.apply {
setOnClickListener {
viewModel.openInstallDialog(
activity.supportFragmentManager,
buttonTag,
apps[position]
)
}
appDownload.setIconResource(buttonTag.image)
contentDescription = activity.getString(
when (buttonTag) {
ButtonTag.UPDATE -> R.string.accessibility_update
ButtonTag.REINSTALL -> R.string.accessibility_reinstall
else -> R.string.accessibility_download
}
)
}
}
dataModel?.isAppInstalled?.observe(activity) {
appUninstall.isVisible = it
appLaunch.isVisible = it
}
dataModel?.versionName?.observe(activity) {
appVersionLatest.text = it
appDownload.isGone = it == activity.getString(R.string.unavailable)
}
dataModel?.installedVersionName?.observe(activity) {
appVersionInstalled.text = it
}
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ListViewHolder {
val view = ViewAppExpandableBinding.inflate(LayoutInflater.from(activity), parent, false)
return ListViewHolder(view)
}
override fun onBindViewHolder(holder: ListViewHolder, position: Int) {
holder.bind(position)
}
override fun getItemCount(): Int = apps.size
private fun ImageView.rotateArrow(degrees: Float) {
animate().apply {
duration = animationDuration
rotation(degrees)
}
}
private fun View.toggle(
alpha: Float,
scale: Float,
translation: Float
) {
animate().apply {
duration = animationDuration
scaleX(scale)
scaleY(scale)
alpha(alpha)
translationYBy(translation)
}
}
private fun MaterialCardView.toggleCard(resultHeight: Int) {
ValueAnimator.ofInt(measuredHeight, resultHeight).apply {
duration = animationDuration
addUpdateListener { value ->
updateLayoutParams {
height = value.animatedValue as Int
}
}
addListener(
onStart = {
isAnimationRunning = true
},
onEnd = {
isAnimationRunning = false
}
)
}.start()
}
init {
if (prefs.enableVanced) {
if (isRoot) {
dataModels.add(viewModel.vancedRootModel.value)
} else {
dataModels.add(viewModel.vancedModel.value)
}
apps.add(activity.getString(R.string.vanced))
}
if (prefs.enableMusic) {
if (isRoot) {
dataModels.add(viewModel.musicRootModel.value)
} else {
dataModels.add(viewModel.musicModel.value)
}
apps.add(activity.getString(R.string.music))
}
if (!isRoot) {
dataModels.add(viewModel.microgModel.value)
apps.add(activity.getString(R.string.microg))
}
}
companion object {
const val animationDuration = 250L
}
}

View File

@ -0,0 +1,79 @@
package com.vanced.manager.adapter
import android.content.Context
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.google.firebase.messaging.FirebaseMessaging
import com.vanced.manager.R
import com.vanced.manager.databinding.ViewNotificationSettingBinding
import com.vanced.manager.model.NotifModel
import com.vanced.manager.utils.defPrefs
class GetNotifAdapter(private val context: Context) :
RecyclerView.Adapter<GetNotifAdapter.GetNotifViewHolder>() {
private val prefs = context.defPrefs
private val vanced = NotifModel(
"Vanced-Update",
context.getString(R.string.push_notifications, context.getString(R.string.vanced)),
context.getString(R.string.push_notifications_summary, context.getString(R.string.vanced)),
"vanced_notifs"
)
private val music = NotifModel(
"Music-Update",
context.getString(R.string.push_notifications, context.getString(R.string.music)),
context.getString(R.string.push_notifications_summary, context.getString(R.string.music)),
"music_notifs"
)
private val microg = NotifModel(
"MicroG-Update",
context.getString(R.string.push_notifications, context.getString(R.string.microg)),
context.getString(R.string.push_notifications_summary, context.getString(R.string.microg)),
"microg_notifs"
)
private val apps = arrayOf(vanced, music, microg)
inner class GetNotifViewHolder(val binding: ViewNotificationSettingBinding) :
RecyclerView.ViewHolder(binding.root) {
val switch = binding.notifSwitch
fun bind(position: Int) {
val app = apps[position]
with(binding.notifSwitch) {
setKey(app.key)
setSummary(app.switchSummary)
setTitle(app.switchTitle)
setDefaultValue(true)
with(prefs) {
setChecked(
getBoolean(
"enable_" + app.key.substringBefore("_"),
true
) && getBoolean(app.key, true)
)
}
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): GetNotifViewHolder {
val view =
ViewNotificationSettingBinding.inflate(LayoutInflater.from(context), parent, false)
return GetNotifViewHolder(view)
}
override fun onBindViewHolder(holder: GetNotifViewHolder, position: Int) {
holder.bind(position)
holder.switch.setOnCheckedListener { _, isChecked ->
when (isChecked) {
true -> FirebaseMessaging.getInstance().subscribeToTopic(apps[position].topic)
false -> FirebaseMessaging.getInstance().unsubscribeFromTopic(apps[position].topic)
}
}
}
override fun getItemCount(): Int = 3
}

View File

@ -0,0 +1,95 @@
package com.vanced.manager.adapter
import android.content.Context
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.appcompat.content.res.AppCompatResources
import androidx.recyclerview.widget.RecyclerView
import com.vanced.manager.R
import com.vanced.manager.databinding.ViewSocialLinkBinding
import com.vanced.manager.model.LinkModel
import com.vanced.manager.ui.viewmodels.HomeViewModel
class LinkAdapter(
private val context: Context,
private val viewModel: HomeViewModel
) : RecyclerView.Adapter<LinkAdapter.LinkViewHolder>() {
private val instagram = LinkModel(
AppCompatResources.getDrawable(context, R.drawable.ic_instagram),
INSTAGRAM
)
private val youtube = LinkModel(
AppCompatResources.getDrawable(context, R.drawable.ic_youtube),
YOUTUBE
)
private val github = LinkModel(
AppCompatResources.getDrawable(context, R.drawable.ic_github),
GITHUB
)
private val website = LinkModel(
AppCompatResources.getDrawable(context, R.drawable.ic_website),
WEBSITE
)
private val telegram = LinkModel(
AppCompatResources.getDrawable(context, R.drawable.ic_telegram),
TELEGRAM
)
private val twitter = LinkModel(
AppCompatResources.getDrawable(context, R.drawable.ic_twitter),
TWITTER
)
private val discord = LinkModel(
AppCompatResources.getDrawable(context, R.drawable.ic_discord),
DISCORD
)
private val reddit = LinkModel(
AppCompatResources.getDrawable(context, R.drawable.ic_reddit),
REDDIT
)
val links = arrayOf(instagram, youtube, github, website, telegram, twitter, discord, reddit)
inner class LinkViewHolder(private val binding: ViewSocialLinkBinding) :
RecyclerView.ViewHolder(binding.root) {
val logo = binding.linkImage
fun bind(position: Int) {
binding.linkBg.setOnClickListener {
viewModel.openUrl(context, links[position].linkUrl)
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): LinkViewHolder {
val view = ViewSocialLinkBinding.inflate(LayoutInflater.from(context), parent, false)
return LinkViewHolder(view)
}
override fun onBindViewHolder(holder: LinkViewHolder, position: Int) {
holder.bind(position)
holder.logo.setImageDrawable(links[position].linkIcon)
}
override fun getItemCount(): Int = links.size
companion object {
const val INSTAGRAM = "https://instagram.com/vanced.youtube"
const val YOUTUBE = "https://youtube.com/c/YouTubeVanced"
const val GITHUB = "https://github.com/YTVanced/VancedManager"
const val WEBSITE = "https://vancedapp.com"
const val TELEGRAM = "https://t.me/joinchat/AAAAAEHf-pi4jH1SDlAL4w"
const val TWITTER = "https://twitter.com/YTVanced"
const val DISCORD = "https://discord.gg/WCGNdRruzb"
const val REDDIT = "https://www.reddit.com/r/Vanced/"
}
}

View File

@ -1,26 +0,0 @@
package com.vanced.manager.adapter
import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter
import com.vanced.manager.ui.fragments.ManagerChangelogFragment
import com.vanced.manager.ui.fragments.MicrogChangelogFragment
import com.vanced.manager.ui.fragments.VancedChangelogFragment
class SectionPageAdapter(fragment: Fragment) : FragmentStateAdapter(fragment) {
private val fragmentItems = 3
override fun getItemCount(): Int {
return fragmentItems
}
override fun createFragment(position: Int): Fragment {
var fragment: Fragment? = null
when (position) {
0 -> fragment = VancedChangelogFragment()
1 -> fragment = MicrogChangelogFragment()
2 -> fragment = ManagerChangelogFragment()
}
return fragment!!
}
}

View File

@ -1,24 +0,0 @@
package com.vanced.manager.adapter
import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter
import com.vanced.manager.ui.fragments.ManagerChangelogFragment
import com.vanced.manager.ui.fragments.VancedChangelogFragment
class SectionPageRootAdapter(fragment: Fragment) : FragmentStateAdapter(fragment) {
private val fragmentItems = 2
override fun getItemCount(): Int {
return fragmentItems
}
override fun createFragment(position: Int): Fragment {
var fragment: Fragment? = null
when (position) {
0 -> fragment = VancedChangelogFragment()
1 -> fragment = ManagerChangelogFragment()
}
return fragment!!
}
}

View File

@ -0,0 +1,60 @@
package com.vanced.manager.adapter
import android.content.Context
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import androidx.recyclerview.widget.RecyclerView
import com.vanced.manager.R
import com.vanced.manager.databinding.ViewAppCheckboxBinding
import com.vanced.manager.model.SelectAppModel
import com.vanced.manager.utils.enableMusic
import com.vanced.manager.utils.enableVanced
class SelectAppsAdapter(private val context: Context) :
RecyclerView.Adapter<SelectAppsAdapter.SelectAppsViewHolder>() {
private val prefs by lazy { getDefaultSharedPreferences(context) }
private val vanced = SelectAppModel(
context.getString(R.string.vanced),
context.getString(R.string.description_vanced),
"vanced",
prefs.enableVanced
)
private val music = SelectAppModel(
context.getString(R.string.music),
context.getString(R.string.description_vanced_music),
"music",
prefs.enableMusic
)
val apps = arrayOf(vanced, music)
inner class SelectAppsViewHolder(binding: ViewAppCheckboxBinding) :
RecyclerView.ViewHolder(binding.root) {
val appName = binding.appCheckboxText
val appDescription = binding.appCheckboxDescription
val appCard = binding.appCheckboxBg
val checkbox = binding.appCheckbox
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SelectAppsViewHolder {
val view = ViewAppCheckboxBinding.inflate(LayoutInflater.from(context), parent, false)
return SelectAppsViewHolder(view)
}
override fun onBindViewHolder(holder: SelectAppsViewHolder, position: Int) {
holder.appName.text = apps[position].appName
holder.appDescription.text = apps[position].appDescription
holder.checkbox.isChecked = apps[position].isChecked
holder.appCard.setOnClickListener {
holder.checkbox.isChecked = !holder.checkbox.isChecked
apps[position].isChecked = !apps[position].isChecked
}
}
override fun getItemCount(): Int = 2
}

View File

@ -0,0 +1,68 @@
package com.vanced.manager.adapter
import android.content.Context
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.appcompat.content.res.AppCompatResources
import androidx.recyclerview.widget.RecyclerView
import com.vanced.manager.R
import com.vanced.manager.databinding.ViewSponsorBinding
import com.vanced.manager.model.SponsorModel
import com.vanced.manager.ui.viewmodels.HomeViewModel
import com.vanced.manager.utils.LIGHT
import com.vanced.manager.utils.currentTheme
class SponsorAdapter(
private val context: Context,
private val viewModel: HomeViewModel
) : RecyclerView.Adapter<SponsorAdapter.LinkViewHolder>() {
private val brave = SponsorModel(
if (currentTheme == LIGHT) AppCompatResources.getDrawable(
context,
R.drawable.ic_brave_light
) else AppCompatResources.getDrawable(context, R.drawable.ic_brave),
"Brave",
BRAVE
)
private val adguard = SponsorModel(
AppCompatResources.getDrawable(context, R.drawable.ic_adguard),
"AdGuard",
ADGUARD
)
val sponsors = arrayListOf(brave, adguard)
inner class LinkViewHolder(private val binding: ViewSponsorBinding) : RecyclerView.ViewHolder(
binding.root
) {
val logo = binding.sponsorLogo
fun bind(position: Int) {
with(binding) {
sponsorName.text = sponsors[position].name
cardSponsor.setOnClickListener {
viewModel.openUrl(context, sponsors[position].url)
}
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): LinkViewHolder {
val view = ViewSponsorBinding.inflate(LayoutInflater.from(context), parent, false)
return LinkViewHolder(view)
}
override fun onBindViewHolder(holder: LinkViewHolder, position: Int) {
holder.bind(position)
holder.logo.setImageDrawable(sponsors[position].logo)
}
override fun getItemCount(): Int = 2
companion object {
const val BRAVE = "https://vancedapp.com/brave"
const val ADGUARD = "https://adguard.com/?aid=31141&source=manager"
}
}

View File

@ -0,0 +1,23 @@
package com.vanced.manager.adapter
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.viewpager2.adapter.FragmentStateAdapter
import com.vanced.manager.ui.fragments.GrantRootFragment
import com.vanced.manager.ui.fragments.SelectAppsFragment
import com.vanced.manager.ui.fragments.WelcomeFragment
class WelcomePageAdapter(activity: FragmentActivity) : FragmentStateAdapter(activity) {
override fun getItemCount(): Int = 3
override fun createFragment(position: Int): Fragment {
return when (position) {
0 -> WelcomeFragment()
1 -> SelectAppsFragment()
2 -> GrantRootFragment()
else -> throw IllegalArgumentException("Unknown fragment")
}
}
}

View File

@ -1,34 +1,34 @@
package com.vanced.manager.core
import android.app.Application
import android.widget.Toast
import androidx.preference.PreferenceManager
import com.dezlum.codelabs.getjson.GetJson
import com.downloader.PRDownloader
import com.vanced.manager.R
import com.vanced.manager.utils.InternetTools
import com.vanced.manager.utils.NotificationHelper.createNotifChannel
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.topjohnwu.superuser.Shell
import com.vanced.manager.BuildConfig
import com.vanced.manager.utils.loadJson
import com.vanced.manager.utils.managerAccent
import com.vanced.manager.utils.mutableAccentColor
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.launch
class App: Application() {
class App : Application() {
private val prefs by lazy { getDefaultSharedPreferences(this) }
private val scope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
override fun onCreate() {
scope.launch { loadJson(this@App) }
super.onCreate()
//checkUpdates()
PRDownloader.initialize(applicationContext)
createNotifChannel(this)
mutableAccentColor.value = prefs.managerAccent
Shell.enableVerboseLogging = BuildConfig.DEBUG
Shell.setDefaultBuilder(
Shell.Builder
.create()
.setFlags(Shell.FLAG_REDIRECT_STDERR)
//.setInitializers(BusyBoxInstaller::class.java) //TODO fix busybox
.setTimeout(10)
)
}
/*
private fun checkUpdates() {
val checkPrefs = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("auto_check_update", true)
if (checkPrefs) {
if (GetJson().isConnected(this) && InternetTools.isUpdateAvailable()) {
Toast.makeText(this, getString(R.string.update_found), Toast.LENGTH_SHORT).show()
} else
Toast.makeText(this, getString(R.string.update_notfound), Toast.LENGTH_SHORT).show()
}
}
*/
}
}

View File

@ -0,0 +1,37 @@
package com.vanced.manager.core
import androidx.lifecycle.LiveData
import androidx.lifecycle.MediatorLiveData
/**
* CombinedLiveData is a helper class to combine results from two LiveData sources.
* @param combine Function reference that will be used to combine all LiveData data.
* @param R The type of data returned after combining all LiveData data.
* Usage:
* CombinedLiveData(
* getLiveData1(),
* getLiveData2()
* ) { data1, data2 ->
* // Use datas[0], datas[1], ..., datas[N] to return a value
* }
*/
class CombinedLiveData<R, A, B>(
liveDataA: LiveData<A>,
liveDataB: LiveData<B>,
private val combine: (a: A?, b: B?) -> R
) : MediatorLiveData<R>() {
private var a: A? = null
private var b: B? = null
init {
addSource(liveDataA) {
a = it
value = combine(a, b)
}
addSource(liveDataB) {
b = it
value = combine(a, b)
}
}
}

View File

@ -1,63 +0,0 @@
package com.vanced.manager.core
import android.annotation.SuppressLint
import android.content.Context
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.preference.PreferenceManager
import com.dezlum.codelabs.getjson.GetJson
import com.vanced.manager.R
import com.vanced.manager.ui.dialogs.DialogContainer.basicDialog
import com.vanced.manager.ui.dialogs.DialogContainer.showRootDialog
import com.vanced.manager.ui.dialogs.DialogContainer.showSecurityDialog
import com.vanced.manager.ui.dialogs.DialogContainer.statementFalse
import com.vanced.manager.ui.fragments.UpdateCheckFragment
import com.vanced.manager.utils.InternetTools.isUpdateAvailable
import com.vanced.manager.utils.PackageHelper.getPackageVersionName
// This activity will NOT be used in manifest
// since MainActivity will extend it
@SuppressLint("Registered")
open class Main: AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val prefs = PreferenceManager.getDefaultSharedPreferences(this)
val variant = prefs.getString("vanced_variant", "nonroot")
val showRootDialog = prefs.getBoolean("show_root_dialog", true)
when {
prefs.getBoolean("firstStart", true) -> showSecurityDialog(this)
!prefs.getBoolean("statement", true) -> statementFalse(this)
variant == "root" -> {
if (showRootDialog)
showRootDialog(this)
if (getPackageVersionName("com.google.android.youtube", packageManager) == "14.21.54")
basicDialog(getString(R.string.hold_on), getString(R.string.magisk_vanced), this)
}
}
checkUpdates()
}
override fun onPause() {
getSharedPreferences("installPrefs", Context.MODE_PRIVATE).edit().putBoolean("isInstalling", false).apply()
getSharedPreferences("installPrefs", Context.MODE_PRIVATE).edit().putBoolean("isVancedDownloading", false).apply()
getSharedPreferences("installPrefs", Context.MODE_PRIVATE).edit().putBoolean("isMicrogDownloading", false).apply()
super.onPause()
}
private fun checkUpdates() {
if (GetJson().isConnected(this) && isUpdateAvailable()) {
val fm = supportFragmentManager
UpdateCheckFragment().show(fm, "UpdateCheck")
} else {
Toast.makeText(this, getString(R.string.update_notfound), Toast.LENGTH_SHORT).show()
}
}
}

View File

@ -1,7 +0,0 @@
package com.vanced.manager.core.base
import androidx.fragment.app.Fragment
open class BaseFragment : Fragment() {
}

View File

@ -1,74 +0,0 @@
package com.vanced.manager.core.downloader
import android.app.Service
import android.content.Context
import android.content.Intent
import android.os.IBinder
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import com.downloader.Error
import com.downloader.OnDownloadListener
import com.downloader.OnStartOrResumeListener
import com.downloader.PRDownloader
import com.vanced.manager.R
import com.vanced.manager.core.installer.AppInstaller
import com.vanced.manager.ui.fragments.HomeFragment
import com.vanced.manager.utils.InternetTools.getFileNameFromUrl
import com.vanced.manager.utils.InternetTools.getObjectFromJson
import com.vanced.manager.utils.NotificationHelper
import com.vanced.manager.utils.NotificationHelper.cancelNotif
import com.vanced.manager.utils.NotificationHelper.createBasicNotif
class MicrogDownloadService: Service() {
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
downloadMicrog()
stopSelf()
return START_NOT_STICKY
}
private fun downloadMicrog() {
val prefs = getSharedPreferences("installPrefs", Context.MODE_PRIVATE)
val apkUrl = getObjectFromJson("https://vanced.app/api/v1/microg.json", "url", this)
val channel = 420
PRDownloader.download(apkUrl, filesDir.path, "microg.apk")
.build()
.setOnStartOrResumeListener { OnStartOrResumeListener { prefs?.edit()?.putBoolean("isMicrogDownloading", true)?.apply() } }
.setOnProgressListener { progress ->
val mProgress = progress.currentBytes * 100 / progress.totalBytes
NotificationHelper.displayDownloadNotif(
channel,
mProgress.toInt(),
getFileNameFromUrl(apkUrl),
this
)
}
.start(object : OnDownloadListener {
override fun onDownloadComplete() {
prefs?.edit()?.putBoolean("isMicrogDownloading", false)?.apply()
cancelNotif(channel, this@MicrogDownloadService)
val intent = Intent(this@MicrogDownloadService, AppInstaller::class.java)
intent.putExtra("path", "${filesDir.path}/microg.apk")
intent.putExtra("pkg", "com.mgoogle.android.gms")
val mIntent = Intent(HomeFragment.MICROG_DOWNLOADED)
mIntent.action = HomeFragment.MICROG_DOWNLOADED
LocalBroadcastManager.getInstance(this@MicrogDownloadService).sendBroadcast(mIntent)
startService(intent)
}
override fun onError(error: Error) {
prefs?.edit()?.putBoolean("isMicrogDownloading", false)?.apply()
createBasicNotif(getString(R.string.error_downloading, "Microg"), channel, this@MicrogDownloadService)
}
})
}
override fun onDestroy() {
super.onDestroy()
cancelNotif(420, this)
}
override fun onBind(intent: Intent?): IBinder? {
return null
}
}

View File

@ -0,0 +1,29 @@
package com.vanced.manager.core.downloader
import android.content.Context
import com.vanced.manager.R
import com.vanced.manager.utils.*
import com.vanced.manager.utils.DownloadHelper.download
import com.vanced.manager.utils.PackageHelper.install
object MicrogDownloader {
private const val fileName = "microg.apk"
private const val folderName = "microg"
fun downloadMicrog(context: Context) {
val url = microg.value?.string("url") ?: ""
download(url, "$baseInstallUrl/", folderName, fileName, context, onDownloadComplete = {
startMicrogInstall(context)
}, onError = {
downloadingFile.postValue(context.getString(R.string.error_downloading, fileName))
})
}
fun startMicrogInstall(context: Context) {
installing.postValue(true)
postReset()
install("${context.getExternalFilesDir(folderName)}/$fileName", context)
}
}

View File

@ -0,0 +1,87 @@
package com.vanced.manager.core.downloader
import android.content.Context
import com.vanced.manager.R
import com.vanced.manager.utils.*
import com.vanced.manager.utils.AppUtils.musicRootPkg
import com.vanced.manager.utils.AppUtils.validateTheme
import com.vanced.manager.utils.DownloadHelper.download
import com.vanced.manager.utils.PackageHelper.downloadStockCheck
import com.vanced.manager.utils.PackageHelper.install
import com.vanced.manager.utils.PackageHelper.installMusicRoot
object MusicDownloader {
private var variant: String? = null
private var musicVersion: String? = null
private var versionCode: Int? = null
private var baseurl = ""
private var folderName: String? = null
private var downloadPath: String? = null
private var hashUrl: String? = null
fun downloadMusic(context: Context, version: String? = null) {
val prefs = context.defPrefs
musicVersion = version ?: prefs.musicVersion?.getLatestAppVersion(
musicVersions.value?.value ?: listOf("")
)
versionCode = music.value?.int("versionCode")
variant = prefs.managerVariant
baseurl = "$baseInstallUrl/music/v$musicVersion"
folderName = "music/$variant"
downloadPath = context.getExternalFilesDir(folderName)?.path
hashUrl = "$baseurl/hash.json"
downloadApk(context)
}
private fun downloadApk(context: Context, apk: String = "music") {
val url = if (apk == "stock") "$baseurl/stock/${getArch()}.apk" else "$baseurl/$variant.apk"
download(
url,
"$baseurl/",
folderName!!,
getFileNameFromUrl(url),
context,
onDownloadComplete = {
if (variant == "root" && apk != "stock") {
downloadApk(context, "stock")
return@download
}
when (apk) {
"music" -> {
if (variant == "root") {
if (validateTheme(downloadPath!!, "root", hashUrl!!, context)) {
if (downloadStockCheck(musicRootPkg, versionCode!!, context))
downloadApk(context, "stock")
else
startMusicInstall(context)
} else {
downloadApk(context, apk)
}
} else
startMusicInstall(context)
}
"stock" -> startMusicInstall(context)
}
},
onError = {
downloadingFile.postValue(
context.getString(
R.string.error_downloading,
getFileNameFromUrl(url)
)
)
})
}
fun startMusicInstall(context: Context) {
installing.postValue(true)
postReset()
if (variant == "root")
installMusicRoot(context)
else
install("${context.getExternalFilesDir("music/nonroot")}/nonroot.apk", context)
}
}

View File

@ -1,113 +0,0 @@
package com.vanced.manager.core.downloader
import android.app.Service
import android.content.Context
import android.content.Intent
import android.os.Build
import android.os.IBinder
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import androidx.preference.PreferenceManager
import com.downloader.Error
import com.downloader.OnDownloadListener
import com.downloader.OnStartOrResumeListener
import com.downloader.PRDownloader
import com.vanced.manager.R
import com.vanced.manager.core.installer.RootSplitInstallerService
import com.vanced.manager.core.installer.SplitInstaller
import com.vanced.manager.ui.fragments.HomeFragment
import com.vanced.manager.utils.InternetTools.baseUrl
import com.vanced.manager.utils.InternetTools.getFileNameFromUrl
import com.vanced.manager.utils.InternetTools.getObjectFromJson
import com.vanced.manager.utils.NotificationHelper.cancelNotif
import com.vanced.manager.utils.NotificationHelper.createBasicNotif
import com.vanced.manager.utils.NotificationHelper.displayDownloadNotif
class VancedDownloadService: Service() {
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
downloadSplits()
stopSelf()
return START_NOT_STICKY
}
private fun downloadSplits(
type: String = "arch"
) {
val baseUrl = PreferenceManager.getDefaultSharedPreferences(this).getString("install_url", baseUrl)
val vancedVer = getObjectFromJson("https://vanced.app/api/v1/vanced.json", "version", this)
val prefs = getSharedPreferences("installPrefs", Context.MODE_PRIVATE)
val variant = PreferenceManager.getDefaultSharedPreferences(this).getString("vanced_variant", "nonroot")
val lang = prefs?.getString("lang", "en")
val theme = prefs?.getString("theme", "dark")
val arch =
when {
Build.SUPPORTED_ABIS.contains("x86") -> "x86"
Build.SUPPORTED_ABIS.contains("arm64-v8a") -> "arm64_v8a"
else -> "armeabi_v7a"
}
val url =
when (type) {
"arch" -> "$baseUrl/apks/v$vancedVer/$variant/Arch/split_config.$arch.apk"
"theme" -> "$baseUrl/apks/v$vancedVer/$variant/Theme/$theme.apk"
"lang" -> "$baseUrl/apks/v$vancedVer/$variant/Language/split_config.$lang.apk"
"enlang" -> "$baseUrl/apks/v$vancedVer/$variant/Language/split_config.en.apk"
else -> throw NotImplementedError("This type of APK is NOT valid. What the hell did you even do?")
}
val channel = 69
PRDownloader
.download(url, cacheDir.path, getFileNameFromUrl(url))
.build()
.setOnStartOrResumeListener { OnStartOrResumeListener { prefs?.edit()?.putBoolean("isVancedDownloading", true)?.apply() } }
.setOnProgressListener { progress ->
val mProgress = progress.currentBytes * 100 / progress.totalBytes
displayDownloadNotif(channel, mProgress.toInt(), getFileNameFromUrl(url), this)
}
.start(object : OnDownloadListener {
override fun onDownloadComplete() {
when (type) {
"arch" -> downloadSplits("theme")
"theme" -> downloadSplits("lang")
"lang" -> {
if (lang == "en") {
prepareInstall(variant!!)
cancelNotif(channel, this@VancedDownloadService)
} else {
downloadSplits("enlang")
}
}
"enlang" -> {
prepareInstall(variant!!)
cancelNotif(channel, this@VancedDownloadService)
}
}
}
override fun onError(error: Error) {
createBasicNotif(getString(R.string.error_downloading, "Vanced"), channel, this@VancedDownloadService)
}
})
}
private fun prepareInstall(variant: String) {
val intent = Intent(HomeFragment.VANCED_DOWNLOADED)
intent.action = HomeFragment.VANCED_DOWNLOADED
LocalBroadcastManager.getInstance(this).sendBroadcast(intent)
if (variant == "root")
startService(Intent(this, RootSplitInstallerService::class.java))
else
startService(Intent(this, SplitInstaller::class.java))
}
override fun onDestroy() {
super.onDestroy()
cancelNotif(69, this)
}
override fun onBind(intent: Intent?): IBinder? {
return null
}
}

View File

@ -0,0 +1,149 @@
package com.vanced.manager.core.downloader
import android.content.Context
import android.content.SharedPreferences
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.analytics.ktx.logEvent
import com.vanced.manager.R
import com.vanced.manager.utils.*
import com.vanced.manager.utils.AppUtils.log
import com.vanced.manager.utils.AppUtils.validateTheme
import com.vanced.manager.utils.AppUtils.vancedRootPkg
import com.vanced.manager.utils.DownloadHelper.download
import com.vanced.manager.utils.PackageHelper.downloadStockCheck
import com.vanced.manager.utils.PackageHelper.installSplitApkFiles
import com.vanced.manager.utils.PackageHelper.installVancedRoot
import java.io.File
object VancedDownloader {
private lateinit var prefs: SharedPreferences
private lateinit var defPrefs: SharedPreferences
private lateinit var arch: String
private var variant: String? = null
private var theme: String? = null
private var lang = mutableListOf<String>()
private lateinit var themePath: String
private var count: Int = 0
private var succesfulLangCount: Int = 0
private var hashUrl = ""
private var vancedVersionCode = 0
private var vancedVersion: String? = null
private var downloadPath: String? = null
private var folderName: String? = null
fun downloadVanced(context: Context, version: String?) {
defPrefs = context.defPrefs
prefs = context.installPrefs
variant = defPrefs.managerVariant
folderName = "vanced/$variant"
downloadPath = context.getExternalFilesDir(folderName)?.path
File(downloadPath.toString()).deleteRecursively()
prefs.lang?.let {
lang = it.split(", ").toMutableList()
}
theme = prefs.theme
vancedVersion = version ?: defPrefs.vancedVersion?.getLatestAppVersion(
vancedVersions.value?.value ?: listOf("")
)
themePath = "$baseInstallUrl/apks/v$vancedVersion/$variant/Theme"
hashUrl = "apks/v$vancedVersion/$variant/Theme/hash.json"
arch = getArch()
count = 0
vancedVersionCode = vanced.value?.int("versionCode") ?: 0
try {
downloadSplits(context)
} catch (e: Exception) {
log("VMDownloader", e.stackTraceToString())
downloadingFile.postValue(context.getString(R.string.error_downloading, "Vanced"))
}
}
private fun downloadSplits(context: Context, type: String = "theme") {
val url = when (type) {
"theme" -> "$themePath/$theme.apk"
"arch" -> "$baseInstallUrl/apks/v$vancedVersion/$variant/Arch/split_config.$arch.apk"
"stock" -> "$themePath/stock.apk"
"dpi" -> "$themePath/dpi.apk"
"lang" -> "$baseInstallUrl/apks/v$vancedVersion/$variant/Language/split_config.${lang[count]}.apk"
else -> throw NotImplementedError("This type of APK is NOT valid. What the hell did you even do?")
}
download(
url,
"$baseInstallUrl/",
folderName!!,
getFileNameFromUrl(url),
context,
onDownloadComplete = {
when (type) {
"theme" ->
if (variant == "root") {
if (validateTheme(downloadPath!!, theme!!, hashUrl, context)) {
if (downloadStockCheck(vancedRootPkg, vancedVersionCode, context))
downloadSplits(context, "arch")
else
startVancedInstall(context)
} else
downloadSplits(context, "theme")
} else
downloadSplits(context, "arch")
"arch" -> if (variant == "root") downloadSplits(
context,
"stock"
) else downloadSplits(context, "lang")
"stock" -> downloadSplits(context, "dpi")
"dpi" -> downloadSplits(context, "lang")
"lang" -> {
count++
succesfulLangCount++
if (count < lang.size)
downloadSplits(context, "lang")
else
startVancedInstall(context)
}
}
},
onError = {
if (type == "lang") {
count++
when {
count < lang.size -> downloadSplits(context, "lang")
succesfulLangCount == 0 -> {
lang.add("en")
downloadSplits(context, "lang")
}
else -> startVancedInstall(context)
}
} else {
downloadingFile.postValue(
context.getString(
R.string.error_downloading,
getFileNameFromUrl(url)
)
)
}
})
}
fun startVancedInstall(context: Context, variant: String? = this.variant) {
installing.postValue(true)
postReset()
FirebaseAnalytics.getInstance(context).logEvent(FirebaseAnalytics.Event.SELECT_ITEM) {
variant?.let { param("vanced_variant", it) }
theme?.let { param("vanced_theme", it) }
}
if (variant == "root")
installVancedRoot(context)
else
installSplitApkFiles(context, "vanced")
}
}

View File

@ -0,0 +1,12 @@
package com.vanced.manager.core.firebase
import com.google.firebase.messaging.FirebaseMessagingService
import com.vanced.manager.utils.AppUtils.log
class CloudMessaging : FirebaseMessagingService() {
override fun onNewToken(p0: String) {
log("VMC", "Generated new token: $p0")
}
}

View File

@ -1,48 +0,0 @@
package com.vanced.manager.core.fragments
import android.annotation.SuppressLint
import android.os.Bundle
import android.view.MotionEvent
import android.view.View
import android.widget.Toast
import androidx.preference.PreferenceManager
import com.vanced.manager.core.base.BaseFragment
open class About : BaseFragment() {
private var count = 0
private var startMillSec: Long = 0
@SuppressLint("ClickableViewAccessibility")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
view.setOnTouchListener { _, event: MotionEvent ->
val eventAction = event.action
if (eventAction == MotionEvent.ACTION_UP) {
val time = System.currentTimeMillis()
if (startMillSec == 0L || time - startMillSec > 3000) {
startMillSec = time
count = 1
} else {
count++
}
if (count == 5) {
val prefs = PreferenceManager.getDefaultSharedPreferences(requireContext())
val devSettings = prefs.getBoolean("devSettings", false)
if (!devSettings) {
Toast.makeText(requireContext(), "Dev options unlocked!", Toast.LENGTH_SHORT).show()
prefs.edit().putBoolean("devSettings", true).apply()
} else
Toast.makeText(requireContext(), "Dev options already unlocked", Toast.LENGTH_SHORT).show()
}
return@setOnTouchListener true
}
false
}
}
}

View File

@ -1,118 +0,0 @@
package com.vanced.manager.core.fragments
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.ImageView
import android.widget.Toast
import androidx.navigation.findNavController
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.google.android.material.button.MaterialButton
import com.topjohnwu.superuser.Shell
import com.vanced.manager.R
import com.vanced.manager.core.base.BaseFragment
import com.vanced.manager.core.downloader.MicrogDownloadService
import com.vanced.manager.core.downloader.VancedDownloadService
import com.vanced.manager.ui.MainActivity
import com.vanced.manager.ui.dialogs.DialogContainer.showRootDialog
import com.vanced.manager.utils.PackageHelper.uninstallApk
open class Home : BaseFragment(), View.OnClickListener {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val microginstallbtn = view.findViewById<MaterialButton>(R.id.microg_installbtn)
val vancedinstallbtn = view.findViewById<MaterialButton>(R.id.vanced_installbtn)
val microguninstallbtn = view.findViewById<ImageView>(R.id.microg_uninstallbtn)
val vanceduninstallbtn = view.findViewById<ImageView>(R.id.vanced_uninstallbtn)
val rootswitch = view.findViewById<MaterialButton>(R.id.root_switch)
val nonrootswitch = view.findViewById<MaterialButton>(R.id.nonroot_switch)
vancedinstallbtn.setOnClickListener(this)
microginstallbtn.setOnClickListener(this)
microguninstallbtn.setOnClickListener(this)
vanceduninstallbtn.setOnClickListener(this)
rootswitch.setOnClickListener(this)
nonrootswitch.setOnClickListener(this)
}
override fun onResume() {
super.onResume()
val prefs = activity?.getSharedPreferences("installPrefs", Context.MODE_PRIVATE)
val isInstalling = prefs?.getBoolean("isInstalling", false)
if (isInstalling!!) {
activity?.startService(Intent(activity, VancedDownloadService::class.java))
prefs.edit().putBoolean("isInstalling", false).apply()
}
}
override fun onClick(v: View?) {
val prefs = activity?.getSharedPreferences("installPrefs", Context.MODE_PRIVATE)
val isVancedDownloading: Boolean? = prefs?.getBoolean("isVancedDownloading", false)
val isMicrogDownloading: Boolean? = prefs?.getBoolean("isMicrogDownloading", false)
val variant = getDefaultSharedPreferences(activity).getString("vanced_variant", "nonroot")
val vancedPkgName =
if (variant == "root") {
"com.google.android.youtube"
} else {
"com.vanced.android.youtube"
}
when (v?.id) {
R.id.vanced_installbtn -> {
if (!isVancedDownloading!!) {
try {
activity?.cacheDir?.deleteRecursively()
} catch (e: Exception) {
Log.d("VMCache", "Unable to delete cacheDir")
}
if (prefs.getBoolean("valuesModified", false)) {
activity?.startService(
Intent(
activity,
VancedDownloadService::class.java
)
)
} else {
view?.findNavController()?.navigate(R.id.toInstallThemeFragment)
}
} else {
Toast.makeText(activity, activity?.getString(R.string.installation_wait), Toast.LENGTH_SHORT).show()
}
}
R.id.microg_installbtn -> {
if (!isMicrogDownloading!!) {
activity?.startService(Intent(activity, MicrogDownloadService::class.java))
} else {
Toast.makeText(activity, activity?.getString(R.string.installation_wait), Toast.LENGTH_SHORT).show()
}
}
R.id.microg_uninstallbtn -> activity?.let { uninstallApk("com.mgoogle.android.gms", it) }
R.id.vanced_uninstallbtn -> activity?.let { uninstallApk(vancedPkgName, it) }
R.id.nonroot_switch -> writeToVariantPref("nonroot", R.anim.slide_in_left, R.anim.slide_out_right)
R.id.root_switch ->
if (Shell.rootAccess()) {
writeToVariantPref("root", R.anim.slide_in_right, R.anim.slide_out_left)
} else {
writeToVariantPref("nonroot", R.anim.slide_in_left, R.anim.slide_out_right)
Toast.makeText(activity, activity?.getString(R.string.root_not_granted), Toast.LENGTH_SHORT).show()
}
}
}
private fun writeToVariantPref(variant: String, animIn: Int, animOut: Int) {
val prefs = getDefaultSharedPreferences(activity)
if (prefs.getString("vanced_variant", "nonroot") != variant) {
prefs.edit().putString("vanced_variant", variant).apply()
startActivity(Intent(activity, MainActivity::class.java))
activity?.overridePendingTransition(animIn, animOut)
activity?.finish()
} else
Log.d("VMVariant", "$variant is already selected")
}
}

View File

@ -1,37 +0,0 @@
package com.vanced.manager.core.fragments
import android.content.Context
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.RadioButton
import android.widget.RadioGroup
import androidx.navigation.findNavController
import com.vanced.manager.R
import com.vanced.manager.core.base.BaseFragment
open class LanguageInstall : BaseFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val finishButton = view.findViewById<Button>(R.id.vanced_install_finish)
val langGroup = view.findViewById<RadioGroup>(R.id.lang_radiogroup)
val prefs = activity?.getSharedPreferences("installPrefs", Context.MODE_PRIVATE)
val langPref = prefs?.getString("lang", "en")
val button = langGroup.findViewWithTag<RadioButton>(langPref)
button.isChecked = true
finishButton.setOnClickListener {
val selectedLangId = langGroup.checkedRadioButtonId
val selectedButton = view.findViewById<RadioButton>(selectedLangId)
prefs?.edit()?.putString("lang", selectedButton.tag.toString())?.apply()
prefs?.edit()?.putBoolean("isInstalling", true)?.apply()
prefs?.edit()?.putBoolean("valuesModified", true)?.apply()
view.findNavController().navigate(R.id.action_installTo_homeFragment)
}
}
}

View File

@ -1,34 +0,0 @@
package com.vanced.manager.core.fragments
import android.content.Context
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.RadioButton
import android.widget.RadioGroup
import androidx.navigation.findNavController
import com.vanced.manager.R
import com.vanced.manager.core.base.BaseFragment
open class ThemeInstall : BaseFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val nextButton = view.findViewById<Button>(R.id.vanced_next_to_variant)
val themeGroup = view.findViewById<RadioGroup>(R.id.theme_radiogroup)
val prefs = activity?.getSharedPreferences("installPrefs", Context.MODE_PRIVATE)
val themePref = prefs?.getString("theme", "dark")
val button = themeGroup.findViewWithTag<RadioButton>(themePref)
button.isChecked = true
nextButton.setOnClickListener {
val selectedThemeId = themeGroup.checkedRadioButtonId
val selectedButton = view.findViewById<RadioButton>(selectedThemeId)
prefs?.edit()?.putString("theme", selectedButton.tag.toString())?.apply()
view.findNavController().navigate(R.id.toInstallLanguageFragment)
}
}
}

View File

@ -1,38 +0,0 @@
package com.vanced.manager.core.installer
import android.app.PendingIntent
import android.app.Service
import android.content.Intent
import android.content.pm.PackageInstaller
import android.os.IBinder
import java.io.FileInputStream
import java.io.InputStream
class AppInstaller: Service() {
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
val callbackIntent = Intent(applicationContext, AppInstallerService::class.java)
val pendingIntent = PendingIntent.getService(applicationContext, 0, callbackIntent, 0)
val packageInstaller = packageManager.packageInstaller
val params = PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL)
params.setAppPackageName(intent?.getStringExtra("pkg"))
val sessionId = packageInstaller.createSession(params)
val session = packageInstaller.openSession(sessionId)
val inputStream: InputStream = FileInputStream(intent?.getStringExtra("path") as String)
val outputStream = session.openWrite("install", 0, -1)
val buffer = ByteArray(65536)
var c: Int
while (inputStream.read(buffer).also { c = it } != -1) {
outputStream.write(buffer, 0, c)
}
session.fsync(outputStream)
inputStream.close()
outputStream.close()
session.commit(pendingIntent.intentSender)
return START_NOT_STICKY
}
override fun onBind(intent: Intent?): IBinder? {
return null
}
}

View File

@ -1,90 +1,50 @@
package com.vanced.manager.core.installer
import android.app.Service
import android.content.Context
import android.content.Intent
import android.content.pm.PackageInstaller
import android.os.IBinder
import android.util.Log
import android.widget.Toast
import androidx.annotation.Nullable
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import com.vanced.manager.R
import com.vanced.manager.ui.MainActivity
import com.vanced.manager.utils.MiuiHelper
import com.vanced.manager.utils.NotificationHelper.createBasicNotif
import com.vanced.manager.utils.AppUtils.log
import com.vanced.manager.utils.AppUtils.sendCloseDialog
import com.vanced.manager.utils.AppUtils.sendFailure
import com.vanced.manager.utils.AppUtils.sendRefresh
class AppInstallerService: Service() {
class AppInstallerService : Service() {
override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
val notifId = 42
when (intent.getIntExtra(PackageInstaller.EXTRA_STATUS, -999)) {
PackageInstaller.STATUS_PENDING_USER_ACTION -> {
Toast.makeText(this, "Installing...", Toast.LENGTH_SHORT).show()
Log.d(TAG, "Requesting user confirmation for installation")
createBasicNotif(getString(R.string.installing_app, "MicroG"), notifId, this)
log(TAG, "Requesting user confirmation for installation")
val confirmationIntent = intent.getParcelableExtra<Intent>(Intent.EXTRA_INTENT)
confirmationIntent?.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
try {
startActivity(confirmationIntent)
} catch (e: Exception) {
log("VMInstall", "Unable to start installation")
}
}
PackageInstaller.STATUS_SUCCESS -> {
Log.d(TAG, "Installation succeed")
getSharedPreferences("installPrefs", Context.MODE_PRIVATE).edit().putBoolean("isInstalling", false).apply()
val mIntent = Intent(MainActivity.INSTALL_COMPLETED)
mIntent.action = MainActivity.INSTALL_COMPLETED
mIntent.putExtra("package", "normal")
LocalBroadcastManager.getInstance(this).sendBroadcast(mIntent)
createBasicNotif(getString(
R.string.successfully_installed,
"Microg"
), notifId, this)
log(TAG, "Installation succeed")
sendCloseDialog(this)
sendRefresh(this)
}
else -> {
sendFailure(intent.getIntExtra(PackageInstaller.EXTRA_STATUS, -999))
createBasicNotif(
getErrorMessage(intent.getIntExtra(PackageInstaller.EXTRA_STATUS, -999)),
notifId,
this
)
sendCloseDialog(this)
intent.getStringExtra(PackageInstaller.EXTRA_STATUS_MESSAGE)?.let {
sendFailure(it, this)
}
}
}
stopSelf()
return START_NOT_STICKY
}
private fun sendFailure(status: Int) {
val mIntent = Intent(MainActivity.INSTALL_FAILED)
mIntent.action = MainActivity.INSTALL_FAILED
mIntent.putExtra("errorMsg", getErrorMessage(status))
LocalBroadcastManager.getInstance(this).sendBroadcast(mIntent)
}
private fun getErrorMessage(status: Int): String {
return when (status) {
PackageInstaller.STATUS_FAILURE_ABORTED -> getString(R.string.installation_aborted)
PackageInstaller.STATUS_FAILURE_BLOCKED -> getString(R.string.installation_blocked)
PackageInstaller.STATUS_FAILURE_STORAGE -> getString(R.string.installation_storage)
PackageInstaller.STATUS_FAILURE_INVALID -> getString(R.string.installation_invalid)
PackageInstaller.STATUS_FAILURE_INCOMPATIBLE -> getString(R.string.installation_incompatible)
PackageInstaller.STATUS_FAILURE_CONFLICT -> getString(R.string.installation_conflict)
else ->
if (MiuiHelper.isMiui())
getString(R.string.installation_miui)
else
getString(R.string.installation_failed)
}
}
@Nullable
override fun onBind(intent: Intent?): IBinder? {
return null
}
companion object{
companion object {
const val TAG = "VMInstall"
}
}
}

View File

@ -3,19 +3,17 @@ package com.vanced.manager.core.installer
import android.app.Service
import android.content.Intent
import android.content.pm.PackageInstaller
import android.os.Handler
import android.os.IBinder
import android.util.Log
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import com.vanced.manager.ui.MainActivity
import com.vanced.manager.utils.AppUtils.log
import com.vanced.manager.utils.AppUtils.sendRefresh
class AppUninstallerService: Service() {
class AppUninstallerService : Service() {
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
val pkgName = intent?.getStringExtra("pkg")
when (intent?.getIntExtra(PackageInstaller.EXTRA_STATUS, -999)) {
PackageInstaller.STATUS_PENDING_USER_ACTION -> {
Log.d(AppInstallerService.TAG, "Requesting user confirmation for uninstallation")
log(AppInstallerService.TAG, "Requesting user confirmation for uninstallation")
val confirmationIntent = intent.getParcelableExtra<Intent>(Intent.EXTRA_INTENT)
confirmationIntent?.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
try {
@ -23,22 +21,14 @@ class AppUninstallerService: Service() {
} catch (e: Exception) {
}
}
//Delay broadcast until activity (and fragment) show up on the screen
PackageInstaller.STATUS_SUCCESS -> {
Handler().postDelayed({
val mIntent = Intent()
mIntent.action = MainActivity.APP_UNINSTALLED
LocalBroadcastManager.getInstance(this).sendBroadcast(mIntent)
Log.d("VMpm", "Successfully uninstalled $pkgName")
}, 500)
sendRefresh(this)
log("VMpm", "Successfully uninstalled $pkgName")
}
PackageInstaller.STATUS_FAILURE -> {
Handler().postDelayed({
val mIntent = Intent()
mIntent.action = MainActivity.APP_NOT_UNINSTALLED
mIntent.putExtra("pkgName", pkgName)
LocalBroadcastManager.getInstance(this).sendBroadcast(mIntent)
Log.d("VMpm", "Failed to uninstall $pkgName")
}, 500)
sendRefresh(this)
log("VMpm", "Failed to uninstall $pkgName")
}
}
stopSelf()
@ -49,4 +39,4 @@ class AppUninstallerService: Service() {
return null
}
}
}

View File

@ -1,143 +0,0 @@
package com.vanced.manager.core.installer
import android.app.Service
import android.content.Context
import android.content.Intent
import android.os.AsyncTask
import android.os.Build
import android.os.IBinder
import android.util.Log
import androidx.annotation.Nullable
import androidx.annotation.WorkerThread
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import com.topjohnwu.superuser.Shell
import com.vanced.manager.R
import com.vanced.manager.ui.MainActivity
import com.vanced.manager.utils.FileInfo
import com.vanced.manager.utils.NotificationHelper.createBasicNotif
import java.io.File
import java.nio.charset.Charset
import java.text.SimpleDateFormat
import java.util.*
import java.util.regex.Pattern
import kotlin.collections.ArrayList
class RootSplitInstallerService: Service() {
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
Shell.getShell {
val isRoot = it.isRoot
Log.d("AppLog", "isRoot ?$isRoot ")
AsyncTask.execute {
val apkFilesPath = cacheDir.path
val fileInfoList = getFileInfoList(apkFilesPath)
installSplitApkFiles(fileInfoList)
}
}
stopSelf()
return START_NOT_STICKY
}
@WorkerThread
private fun installSplitApkFiles(apkFiles: ArrayList<FileInfo>) {
var sessionId: Int?
val notifId = 666
Log.d("AppLog", "installing split apk files:$apkFiles")
run {
val sessionIdResult = Shell.su("pm install-create -r -t").exec().out
val sessionIdPattern = Pattern.compile("(\\d+)")
val sessionIdMatcher = sessionIdPattern.matcher(sessionIdResult[0])
sessionIdMatcher.find()
sessionId = Integer.parseInt(sessionIdMatcher.group(1)!!)
}
for (apkFile in apkFiles) {
Log.d("AppLog", "installing APK : ${apkFile.name} ${apkFile.fileSize} ")
createBasicNotif(getString(R.string.installing_app, "Vanced"), notifId, this)
val command = arrayOf("su", "-c", "pm", "install-write", "-S", "${apkFile.fileSize}", "$sessionId", apkFile.name)
val process: Process = Runtime.getRuntime().exec(command)
val inputPipe = apkFile.getInputStream()
try {
process.outputStream.use { outputStream -> inputPipe.copyTo(outputStream) }
} catch (e: java.lang.Exception) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
process.destroyForcibly()
else
process.destroy()
throw RuntimeException(e)
}
process.waitFor()
val inputStr = process.inputStream.readBytes().toString(Charset.defaultCharset())
val errStr = process.errorStream.readBytes().toString(Charset.defaultCharset())
val isSucceeded = process.exitValue() == 0
Log.d("AppLog", "isSucceeded?$isSucceeded inputStr:$inputStr errStr:$errStr")
}
Log.d("AppLog", "committing...")
val installResult = Shell.su("pm install-commit $sessionId").exec()
Log.d("AppLog", "succeeded installing?${installResult.isSuccess}")
getSharedPreferences("installPrefs", Context.MODE_PRIVATE).edit().putBoolean("isInstalling", false).apply()
if (installResult.isSuccess) {
val mIntent = Intent(MainActivity.INSTALL_COMPLETED)
mIntent.action = MainActivity.INSTALL_COMPLETED
mIntent.putExtra("package", "split")
LocalBroadcastManager.getInstance(this).sendBroadcast(mIntent)
createBasicNotif(getString(R.string.successfully_installed, "Vanced"), notifId, this)
} else {
val mIntent = Intent(MainActivity.INSTALL_FAILED)
mIntent.action = MainActivity.INSTALL_FAILED
mIntent.putExtra("errorMsg", getString(R.string.installation_signature))
LocalBroadcastManager.getInstance(this).sendBroadcast(mIntent)
createBasicNotif(getString(R.string.installation_signature), notifId, this)
}
}
private fun SimpleDateFormat.tryParse(str: String) = try {
parse(str) != null
} catch (e: Exception) {
false
}
@WorkerThread
private fun getFileInfoList(splitApkPath: String): ArrayList<FileInfo> {
val parentFile = File(splitApkPath)
val result = ArrayList<FileInfo>()
if (parentFile.exists() && parentFile.canRead()) {
val listFiles = parentFile.listFiles() ?: return ArrayList()
for (file in listFiles)
result.add(FileInfo(file.name, file.length(), file))
return result
}
val longLines = Shell.su("ls -l $splitApkPath").exec().out
val pattern = Pattern.compile(" +")
val formatter = SimpleDateFormat("HH:mm", Locale.getDefault())
longLinesLoop@ for (line in longLines) {
val matcher = pattern.matcher(line)
for (i in 0 until 4)
if (!matcher.find())
continue@longLinesLoop
val startSizeStr = matcher.end()
matcher.find()
val endSizeStr = matcher.start()
val fileSizeStr = line.substring(startSizeStr, endSizeStr)
while (true) {
val testTimeStr: String =
line.substring(matcher.end(), line.indexOf(' ', matcher.end()))
if (formatter.tryParse(testTimeStr)) {
//found time, so apk is next
val fileName = line.substring(line.indexOf(' ', matcher.end()) + 1)
if (fileName.endsWith("apk"))
result.add(FileInfo(fileName, fileSizeStr.toLong(), File(splitApkPath, fileName)))
break
}
matcher.find()
}
}
return result
}
@Nullable
override fun onBind(intent: Intent?): IBinder? {
return null
}
}

View File

@ -1,124 +0,0 @@
package com.vanced.manager.core.installer
import android.app.PendingIntent
import android.app.Service
import android.content.Context
import android.content.Intent
import android.content.pm.PackageInstaller
import android.os.IBinder
import android.util.Log
import java.io.*
class SplitInstaller: Service() {
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
installSplitApk(this)
return START_NOT_STICKY
}
override fun onBind(intent: Intent?): IBinder? {
return null
}
private fun installSplitApk(context: Context): Int {
val apkFolderPath = context.cacheDir.path + "/"
val nameSizeMap = HashMap<String, Long>()
var totalSize: Long = 0
var sessionId = 0
val folder = File(apkFolderPath)
val listOfFiles = folder.listFiles()
try {
for (listOfFile in listOfFiles!!) {
if (listOfFile.isFile) {
Log.d("AppLog", "installApk: " + listOfFile.name)
nameSizeMap[listOfFile.name] = listOfFile.length()
totalSize += listOfFile.length()
}
}
} catch (e: Exception) {
e.printStackTrace()
return -1
}
val installParams = PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL)
installParams.setSize(totalSize)
try {
sessionId = context.packageManager.packageInstaller.createSession(installParams)
Log.d("AppLog","Success: created install session [$sessionId]")
for ((key, value) in nameSizeMap) {
doWriteSession(sessionId, apkFolderPath + key, value, key, context)
}
doCommitSession(sessionId, context)
Log.d("AppLog","Success")
} catch (e: IOException) {
e.printStackTrace()
}
return sessionId
}
private fun doWriteSession(sessionId: Int, inPath: String?, sizeBytes: Long, splitName: String, context: Context): Int {
var inPathToUse = inPath
var sizeBytesToUse = sizeBytes
if ("-" == inPathToUse) {
inPathToUse = null
} else if (inPathToUse != null) {
val file = File(inPathToUse)
if (file.isFile)
sizeBytesToUse = file.length()
}
var session: PackageInstaller.Session? = null
var inputStream: InputStream? = null
var out: OutputStream? = null
try {
session = context.packageManager.packageInstaller.openSession(sessionId)
if (inPathToUse != null) {
inputStream = FileInputStream(inPathToUse)
}
out = session.openWrite(splitName, 0, sizeBytesToUse)
var total = 0
val buffer = ByteArray(65536)
var c: Int
while (true) {
c = inputStream!!.read(buffer)
if (c == -1)
break
total += c
out.write(buffer, 0, c)
}
session.fsync(out)
Log.d("AppLog", "Success: streamed $total bytes")
return PackageInstaller.STATUS_SUCCESS
} catch (e: IOException) {
Log.e("AppLog", "Error: failed to write; " + e.message)
return PackageInstaller.STATUS_FAILURE
} finally {
try {
out?.close()
inputStream?.close()
session?.close()
} catch (e: IOException) {
e.printStackTrace()
}
}
}
private fun doCommitSession(sessionId: Int, context: Context) {
var session: PackageInstaller.Session? = null
try {
try {
session = context.packageManager.packageInstaller.openSession(sessionId)
val callbackIntent = Intent(context.applicationContext, SplitInstallerService::class.java)
val pendingIntent = PendingIntent.getService(context.applicationContext, 0, callbackIntent, 0)
session.commit(pendingIntent.intentSender)
session.close()
Log.d("AppLog", "install request sent")
Log.d("AppLog", "doCommitSession: " + context.packageManager.packageInstaller.mySessions)
Log.d("AppLog", "doCommitSession: after session commit ")
} catch (e: IOException) {
e.printStackTrace()
}
} finally {
session!!.close()
}
}
}

View File

@ -1,111 +0,0 @@
package com.vanced.manager.core.installer
import android.app.Notification
import android.app.Service
import android.content.Context
import android.content.Intent
import android.content.pm.PackageInstaller
import android.os.Build
import android.os.IBinder
import android.util.Log
import android.widget.Toast
import androidx.annotation.Nullable
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import com.vanced.manager.R
import com.vanced.manager.ui.MainActivity
import com.vanced.manager.utils.MiuiHelper.isMiui
import com.vanced.manager.utils.NotificationHelper.createBasicNotif
class SplitInstallerService: Service() {
override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
val notifId = 666
when (intent.getIntExtra(PackageInstaller.EXTRA_STATUS, -999)) {
PackageInstaller.STATUS_PENDING_USER_ACTION -> {
Toast.makeText(this, "Installing...", Toast.LENGTH_SHORT).show()
createBasicNotif(getString(R.string.installing_app, "Vanced"), notifId, this)
Log.d(TAG, "Requesting user confirmation for installation")
val confirmationIntent =
intent.getParcelableExtra<Intent>(Intent.EXTRA_INTENT)
confirmationIntent?.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
try {
startActivity(confirmationIntent)
} catch (e: Exception) {
}
}
PackageInstaller.STATUS_SUCCESS -> {
Log.d(TAG, "Installation succeed")
getSharedPreferences("installPrefs", Context.MODE_PRIVATE).edit().putBoolean("isInstalling", false).apply()
val mIntent = Intent(MainActivity.INSTALL_COMPLETED)
mIntent.action = MainActivity.INSTALL_COMPLETED
mIntent.putExtra("package", "split")
LocalBroadcastManager.getInstance(this).sendBroadcast(mIntent)
createBasicNotif(
getString(R.string.successfully_installed, "Vanced"),
notifId,
this
)
}
else -> {
sendFailure(intent.getIntExtra(PackageInstaller.EXTRA_STATUS, -999))
createBasicNotif(
getErrorMessage(intent.getIntExtra(PackageInstaller.EXTRA_STATUS, -999)),
notifId,
this
)
}
}
stopSelf()
return START_NOT_STICKY
}
private fun sendFailure(status: Int) {
val mIntent = Intent(MainActivity.INSTALL_FAILED)
mIntent.action = MainActivity.INSTALL_FAILED
mIntent.putExtra("errorMsg", getErrorMessage(status))
LocalBroadcastManager.getInstance(this).sendBroadcast(mIntent)
}
private fun getErrorMessage(status: Int): String {
return when (status) {
PackageInstaller.STATUS_FAILURE_ABORTED -> getString(R.string.installation_aborted)
PackageInstaller.STATUS_FAILURE_BLOCKED -> getString(R.string.installation_blocked)
PackageInstaller.STATUS_FAILURE_STORAGE -> getString(R.string.installation_storage)
PackageInstaller.STATUS_FAILURE_INVALID -> getString(R.string.installation_invalid)
PackageInstaller.STATUS_FAILURE_INCOMPATIBLE -> getString(R.string.installation_incompatible)
PackageInstaller.STATUS_FAILURE_CONFLICT -> getString(R.string.installation_conflict)
else ->
if (isMiui())
getString(R.string.installation_miui)
else
getString(R.string.installation_failed)
}
}
private fun startForegroundNotif(text: String) {
val notifBuilder =
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
Notification.Builder(this, 666.toString()).setChannelId("69420")
else
Notification.Builder(this).setPriority(Notification.PRIORITY_DEFAULT)
notifBuilder.apply {
setContentTitle(getString(R.string.app_name))
setContentText(text)
setSmallIcon(R.drawable.ic_stat_name)
}
val notif = notifBuilder.build()
startForeground(666, notif)
}
@Nullable
override fun onBind(intent: Intent?): IBinder? {
return null
}
companion object{
const val TAG = "VMInstall"
}
}

View File

@ -0,0 +1,12 @@
package com.vanced.manager.model
import android.graphics.drawable.Drawable
data class AppListModel(
val icon: Drawable?,
val appName: String?,
val remoteVersion: String?,
val installedVersion: String?,
val changelog: String?,
val pkg: String?
)

View File

@ -0,0 +1,6 @@
package com.vanced.manager.model
data class AppVersionsModel(
val version: String,
val value: String
)

View File

@ -0,0 +1,10 @@
package com.vanced.manager.model
import androidx.annotation.DrawableRes
import com.vanced.manager.R
enum class ButtonTag(@DrawableRes val image: Int) {
INSTALL(R.drawable.ic_app_download),
UPDATE(R.drawable.ic_app_update),
REINSTALL(R.drawable.ic_app_reinstall)
}

View File

@ -0,0 +1,81 @@
package com.vanced.manager.model
import android.content.Context
import android.graphics.drawable.Drawable
import android.os.Build
import androidx.annotation.DrawableRes
import androidx.core.content.ContextCompat
import androidx.lifecycle.*
import com.beust.klaxon.JsonObject
import com.vanced.manager.R
import com.vanced.manager.core.CombinedLiveData
import com.vanced.manager.utils.PackageHelper.isPackageInstalled
open class DataModel(
jsonObject: LiveData<JsonObject?>,
context: Context,
val appPkg: String,
val appName: String,
val appDescription: String,
@DrawableRes val appIcon: Int
) {
val isAppInstalled = Transformations.map(jsonObject) { isAppInstalled(appPkg) }
private val versionCode = Transformations.map(jsonObject) { jobj ->
jobj?.int("versionCode") ?: 0
}
private val installedVersionCode = Transformations.map(isAppInstalled) {
getPkgVersionCode(appPkg, it)
}
private val unavailable = context.getString(R.string.unavailable)
private val pm = context.packageManager
val versionName = Transformations.map(jsonObject) { jobj ->
jobj?.string("version") ?: unavailable
}
val changelog = Transformations.map(jsonObject) { jobj ->
jobj?.string("changelog") ?: unavailable
}
val installedVersionName = Transformations.map(isAppInstalled) {
getPkgVersionName(appPkg, it)
}
val buttonTag = CombinedLiveData(versionCode, installedVersionCode) { versionCode, installedVersionCode ->
compareInt(installedVersionCode, versionCode)
}
open fun isAppInstalled(pkg: String): Boolean = isPackageInstalled(pkg, pm)
private fun getPkgVersionName(pkg: String, isAppInstalled: Boolean): String {
return if (isAppInstalled) {
pm?.getPackageInfo(pkg, 0)?.versionName?.removeSuffix("-vanced") ?: unavailable
} else {
unavailable
}
}
@Suppress("DEPRECATION")
private fun getPkgVersionCode(pkg: String, isAppInstalled: Boolean): Int {
return if (isAppInstalled) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P)
pm?.getPackageInfo(pkg, 0)?.longVersionCode?.and(0xFFFFFFFF)?.toInt() ?: 0
else
pm?.getPackageInfo(pkg, 0)?.versionCode ?: 0
} else {
0
}
}
private fun compareInt(int1: Int?, int2: Int?): ButtonTag {
if (int2 != null && int1 != null) {
return when {
int1 == 0 -> ButtonTag.INSTALL
int2 > int1 -> ButtonTag.UPDATE
int1 >= int2 -> ButtonTag.REINSTALL
else -> ButtonTag.INSTALL
}
}
return ButtonTag.INSTALL
}
}

View File

@ -0,0 +1,8 @@
package com.vanced.manager.model
import android.graphics.drawable.Drawable
data class LinkModel(
val linkIcon: Drawable?,
val linkUrl: String
)

View File

@ -0,0 +1,8 @@
package com.vanced.manager.model
data class NotifModel(
val topic: String,
val switchTitle: String,
val switchSummary: String,
val key: String
)

View File

@ -0,0 +1,36 @@
package com.vanced.manager.model
import android.content.Context
import androidx.annotation.DrawableRes
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LiveData
import com.beust.klaxon.JsonObject
import com.vanced.manager.utils.PackageHelper
class RootDataModel(
jsonObject: LiveData<JsonObject?>,
context: Context,
appPkg: String,
appName: String,
appDescription: String,
@DrawableRes appIcon: Int,
//BUG THIS!
//kotlin thinks that this value is null if we use
//private val scriptName: String
//Although it's impossible for it to be null.
//Ironic, isn't it?
private val scriptName: String?
) : DataModel(
jsonObject, context, appPkg, appName, appDescription, appIcon
) {
override fun isAppInstalled(pkg: String): Boolean {
//Adapt to nullable shit
return if (scriptName?.let { PackageHelper.scriptExists(it) } == true) {
super.isAppInstalled(appPkg)
} else {
false
}
}
}

View File

@ -0,0 +1,8 @@
package com.vanced.manager.model
data class SelectAppModel(
val appName: String,
val appDescription: String,
val tag: String,
var isChecked: Boolean
)

View File

@ -0,0 +1,9 @@
package com.vanced.manager.model
import android.graphics.drawable.Drawable
data class SponsorModel(
val logo: Drawable?,
val name: String,
val url: String
)

View File

@ -0,0 +1,6 @@
package com.vanced.manager.model
data class VancedPrefModel(
val name: String,
val value: String
)

View File

@ -1,142 +1,185 @@
package com.vanced.manager.ui
import android.content.BroadcastReceiver
import android.content.ActivityNotFoundException
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.content.res.Configuration
import android.net.Uri
import android.os.Bundle
import android.util.Log
import android.view.MenuItem
import androidx.databinding.DataBindingUtil
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.navigation.NavDestination
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.setupWithNavController
import com.google.android.material.appbar.MaterialToolbar
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.google.firebase.messaging.FirebaseMessaging
import com.vanced.manager.BuildConfig.VERSION_CODE
import com.vanced.manager.R
import com.vanced.manager.core.Main
import com.vanced.manager.databinding.ActivityMainBinding
import com.vanced.manager.ui.dialogs.DialogContainer.installAlertBuilder
import com.vanced.manager.ui.dialogs.DialogContainer.launchVanced
import com.vanced.manager.ui.dialogs.DialogContainer.regularPackageInstalled
import com.vanced.manager.utils.ThemeHelper.setFinalTheme
import com.vanced.manager.ui.dialogs.DialogContainer
import com.vanced.manager.ui.dialogs.ManagerUpdateDialog
import com.vanced.manager.ui.dialogs.URLChangeDialog
import com.vanced.manager.ui.fragments.HomeFragmentDirections
import com.vanced.manager.ui.fragments.SettingsFragmentDirections
import com.vanced.manager.utils.*
import com.vanced.manager.utils.AppUtils.currentLocale
import com.vanced.manager.utils.AppUtils.faqpkg
import com.vanced.manager.utils.AppUtils.log
import com.vanced.manager.utils.AppUtils.playStorePkg
import com.vanced.manager.utils.AppUtils.vancedRootPkg
import com.vanced.manager.utils.PackageHelper.isPackageInstalled
class MainActivity : Main() {
class MainActivity : AppCompatActivity() {
private var isParent = true
private lateinit var binding: ActivityMainBinding
lateinit var binding: ActivityMainBinding
private val navHost by lazy { findNavController(R.id.nav_host) }
override fun onCreate(savedInstanceState: Bundle?) {
setFinalTheme(this)
setFinalTheme()
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
binding.lifecycleOwner = this
val toolbar: MaterialToolbar = findViewById(R.id.home_toolbar)
setSupportActionBar(toolbar)
val navHost = findNavController(R.id.bottom_nav_host)
val appBarConfiguration = AppBarConfiguration(navHost.graph)
toolbar.setupWithNavController(navHost, appBarConfiguration)
navHost.addOnDestinationChangedListener{_, currFrag: NavDestination, _ ->
isParent = when (currFrag.id) {
R.id.home_fragment -> true
else -> false
}
setDisplayHomeAsUpEnabled(!isParent)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
with(binding) {
setSupportActionBar(toolbar)
toolbar.setupWithNavController(
this@MainActivity.navHost,
AppBarConfiguration(this@MainActivity.navHost.graph)
)
}
navHost.addOnDestinationChangedListener { _, currFrag: NavDestination, _ ->
setDisplayHomeAsUpEnabled(currFrag.id != R.id.home_fragment)
}
registerReceivers()
}
private val broadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
when (intent.action) {
INSTALL_COMPLETED -> {
if (intent.getStringExtra("package") == "split")
launchVanced(this@MainActivity)
else
regularPackageInstalled(getString(R.string.successfully_installed, "MicroG"), this@MainActivity)
}
INSTALL_FAILED -> installAlertBuilder(intent.getStringExtra("errorMsg") as String, this@MainActivity)
APP_UNINSTALLED -> {
restartActivity()
Log.d("VMpm", "test")
}
APP_NOT_UNINSTALLED -> installAlertBuilder(getString(R.string.failed_uninstall, intent.getStringExtra("pkgName")), this@MainActivity)
initDialogs(intent.getBooleanExtra("firstLaunch", false))
manager.observe(this) {
if (manager.value?.int("versionCode") ?: 0 > VERSION_CODE) {
ManagerUpdateDialog.newInstance(true).show(this)
}
}
}
override fun onPause() {
super.onPause()
LocalBroadcastManager.getInstance(this).unregisterReceiver(broadcastReceiver)
override fun onBackPressed() {
if (!navHost.popBackStack())
finish()
}
private fun setDisplayHomeAsUpEnabled(isNeeded: Boolean) {
binding.toolbar.navigationIcon = if (isNeeded) ContextCompat.getDrawable(
this,
R.drawable.ic_keyboard_backspace_black_24dp
) else null
}
override fun onResume() {
setFinalTheme(this)
setFinalTheme()
super.onResume()
registerReceivers()
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
val navHost = findNavController(R.id.bottom_nav_host)
when (item.itemId) {
android.R.id.home -> {
onBackPressed()
return true
}
return when (item.itemId) {
R.id.toolbar_about -> {
navHost.navigate(R.id.toAboutFragment)
return true
navHost.navigate(HomeFragmentDirections.toAboutFragment())
true
}
R.id.toolbar_settings -> {
navHost.navigate(R.id.action_settingsFragment)
return true
navHost.navigate(HomeFragmentDirections.toSettingsFragment())
true
}
R.id.dev_settings -> {
navHost.navigate(R.id.toDevSettingsFragment)
R.id.toolbar_log -> {
navHost.navigate(HomeFragmentDirections.toLogFragment())
true
}
R.id.toolbar_update_manager -> {
ManagerUpdateDialog.newInstance(false)
.show(supportFragmentManager, "manager_update")
true
}
R.id.dev_settings -> {
navHost.navigate(SettingsFragmentDirections.toDevSettingsFragment())
return true
}
else -> super.onOptionsItemSelected(item)
}
return false
}
private fun setDisplayHomeAsUpEnabled(isNeeded: Boolean) {
val toolbar: MaterialToolbar = findViewById(R.id.home_toolbar)
when {
isNeeded -> toolbar.setNavigationIcon(R.drawable.ic_keyboard_backspace_black_24dp)
else -> toolbar.navigationIcon = null
override fun attachBaseContext(newBase: Context) {
super.attachBaseContext(LanguageContextWrapper.wrap(newBase))
}
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
//update manager language when system language is changed
@Suppress("DEPRECATION")
if (newConfig.locale != currentLocale) {
recreate() //restarting activity in order to recreate viewmodels, otherwise some text won't update
return
}
}
private fun registerReceivers() {
val intentFilter = IntentFilter()
intentFilter.addAction(INSTALL_COMPLETED)
intentFilter.addAction(INSTALL_FAILED)
intentFilter.addAction(APP_UNINSTALLED)
intentFilter.addAction(APP_NOT_UNINSTALLED)
LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, intentFilter)
when (newConfig.orientation) {
Configuration.ORIENTATION_PORTRAIT -> log(
"VMUI",
"screen orientation changed to portrait"
)
Configuration.ORIENTATION_LANDSCAPE -> log(
"VMUI",
"screen orientation changed to landscape"
)
else -> log("VMUI", "screen orientation changed to [REDACTED]")
}
}
fun restartActivity() {
startActivity(Intent(this@MainActivity, MainActivity::class.java))
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
override fun recreate() {
//needed for setting language smh
startActivity(Intent(this, this::class.java))
finish()
}
companion object {
const val INSTALL_COMPLETED = "Installation completed"
const val INSTALL_FAILED = "it just failed idk"
const val APP_UNINSTALLED = "App uninstalled"
const val APP_NOT_UNINSTALLED = "App not uninstalled"
private fun initDialogs(firstLaunch: Boolean) {
val prefs = getDefaultSharedPreferences(this)
val variant = prefs.managerVariant
prefs.getBoolean("show_root_dialog", true)
if (intent?.data != null && intent.dataString?.startsWith("https") == true) {
val urldialog = URLChangeDialog()
val arg = Bundle()
arg.putString("url", intent.dataString)
urldialog.arguments = arg
urldialog.show(this)
}
if (firstLaunch) {
DialogContainer.showSecurityDialog(this)
with(FirebaseMessaging.getInstance()) {
subscribeToTopic("Vanced-Update")
subscribeToTopic("Music-Update")
subscribeToTopic("MicroG-Update")
}
} else {
if (isMiuiOptimizationsEnabled) {
DialogContainer.miuiDialog(this)
}
}
if (!prefs.getBoolean("statement", true)) {
DialogContainer.statementFalse(this)
}
if (variant == "root") {
if (PackageHelper.getPackageVersionName(vancedRootPkg, packageManager) == "14.21.54") {
DialogContainer.basicDialog(
getString(R.string.hold_on),
getString(R.string.magisk_vanced),
this
)
}
}
}
}

View File

@ -0,0 +1,26 @@
package com.vanced.manager.ui
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.topjohnwu.superuser.Shell
class SplashScreenActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//Preheat the shell
Shell.getShell {
if (getDefaultSharedPreferences(this).getBoolean("firstLaunch", true)) {
startActivity(Intent(this, WelcomeActivity::class.java))
finish()
} else {
startActivity(Intent(this, MainActivity::class.java))
finish()
}
}
}
}

View File

@ -0,0 +1,86 @@
package com.vanced.manager.ui
import android.animation.ValueAnimator
import android.os.Bundle
import android.util.LayoutDirection
import androidx.appcompat.app.AppCompatActivity
import androidx.core.animation.addListener
import androidx.viewpager2.widget.ViewPager2
import com.vanced.manager.adapter.WelcomePageAdapter
import com.vanced.manager.databinding.ActivityWelcomeBinding
import kotlin.math.abs
class WelcomeActivity : AppCompatActivity() {
private lateinit var binding: ActivityWelcomeBinding
private var isRtl = false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityWelcomeBinding.inflate(layoutInflater)
setContentView(binding.root)
isRtl = resources.configuration.layoutDirection == LayoutDirection.RTL
binding.welcomeViewpager.apply {
adapter = WelcomePageAdapter(this@WelcomeActivity)
isUserInputEnabled = false
setPageTransformer { page, position ->
page.apply {
val pageWidth = width.toFloat()
//Thank you, fragula dev!
when {
position > 0 && position < 1 -> {
alpha = 1f
translationX = 0f
}
position > -1 && position <= 0 -> {
alpha = 1.0f - abs(position * 0.7f)
translationX = pageWidth.rtlCompat * position / 1.3F
}
}
}
}
}
}
override fun onBackPressed() {
with(binding) {
if (welcomeViewpager.currentItem == 0) {
super.onBackPressed()
} else {
navigateTo(welcomeViewpager.currentItem - 1)
}
}
}
fun navigateTo(position: Int) {
binding.welcomeViewpager.currentPosition = position
}
private val Float.rtlCompat get() = if (isRtl) this else -this
//Shit way to implement animation duration, but at least it works
private var ViewPager2.currentPosition: Int
get() = currentItem
set(value) {
val pixelsToDrag: Int = width * (value - currentItem)
val animator = ValueAnimator.ofInt(0, pixelsToDrag)
var previousValue = 0
animator.apply {
addUpdateListener { valueAnimator ->
val currentValue = valueAnimator.animatedValue as Int
val currentPxToDrag = (currentValue - previousValue).toFloat()
fakeDragBy(currentPxToDrag.rtlCompat)
previousValue = currentValue
}
addListener(
onStart = { beginFakeDrag() },
onEnd = { endFakeDrag() }
)
duration = 500
start()
}
}
}

View File

@ -0,0 +1,2 @@
package com.vanced.manager.ui.compose

View File

@ -0,0 +1,107 @@
package com.vanced.manager.ui.compose
//import androidx.compose.foundation.clickable
//import androidx.compose.foundation.layout.Column
//import androidx.compose.foundation.layout.ColumnScope
//import androidx.compose.foundation.layout.padding
//import androidx.compose.material.Switch
//import androidx.compose.material.Text
//import androidx.compose.runtime.*
//import androidx.compose.ui.Modifier
//import androidx.compose.ui.graphics.Color
//import androidx.compose.ui.platform.LocalContext
//import androidx.compose.ui.tooling.preview.Preview
//import androidx.compose.ui.unit.dp
//import androidx.compose.ui.unit.em
//import androidx.compose.ui.unit.sp
//import androidx.constraintlayout.compose.ConstraintLayout
//import androidx.core.content.edit
//import androidx.preference.PreferenceManager
//
//@Composable
//@Preview
//inline fun PreferenceCategory(
// categoryTitle: String,
// content: @Composable ColumnScope.() -> Unit
//) {
// Column {
// Text(
// categoryTitle,
// letterSpacing = 0.15.em,
// color = Color(LocalContext.current.accentColor)
// )
// content()
// }
//}
//
//
//@Composable
//@Preview
//inline fun SwitchPreference(
// preferenceTitle: String,
// preferenceDescription: String? = null,
// preferenceKey: String,
// defValue: Boolean = true,
// crossinline onCheckedChange: (Boolean) -> Unit = {}
//) {
// val prefs = PreferenceManager.getDefaultSharedPreferences(LocalContext.current)
// val isChecked = remember { mutableStateOf(prefs.getBoolean(preferenceKey, defValue)) }
// ConstraintLayout(modifier = Modifier.padding(12.dp, 4.dp).clickable {
// isChecked.value = !isChecked.value
// }) {
// val (title, description, switch) = createRefs()
// Text(preferenceTitle, fontSize = 16.sp, modifier = Modifier.constrainAs(title) {
// top.linkTo(parent.top)
// start.linkTo(parent.start)
// end.linkTo(switch.start, 4.dp)
// if (preferenceDescription != null) {
// bottom.linkTo(description.top)
// } else {
// bottom.linkTo(parent.bottom)
// }
// })
// if (preferenceDescription != null) {
// Text(preferenceDescription, fontSize = 13.sp, modifier = Modifier.constrainAs(description) {
// top.linkTo(title.bottom)
// start.linkTo(parent.start)
// end.linkTo(switch.start, 8.dp)
// })
// }
// Switch(
// isChecked.value,
// onCheckedChange = {
// prefs.edit { putBoolean(preferenceKey, it) }
// onCheckedChange(it)
// },
// modifier = Modifier.clickable(false) {}
// )
// }
//}
//
//@Composable
//@Preview
//fun Preference(
// preferenceTitle: String,
// preferenceDescription: String? = null,
// onClick: () -> Unit
//) {
// ConstraintLayout(modifier = Modifier.padding(12.dp, 4.dp).clickable(onClick = onClick)) {
// val (title, description, switch) = createRefs()
// Text(preferenceTitle, fontSize = 16.sp, modifier = Modifier.constrainAs(title) {
// top.linkTo(parent.top)
// start.linkTo(parent.start)
// end.linkTo(switch.start, 4.dp)
// if (preferenceDescription != null) {
// bottom.linkTo(description.top)
// } else {
// bottom.linkTo(parent.bottom)
// }
// })
// if (preferenceDescription != null) {
// Text(preferenceDescription, fontSize = 13.sp, modifier = Modifier.constrainAs(description) {
// top.linkTo(title.bottom)
// })
// }
// }
//
//}

View File

@ -0,0 +1,52 @@
package com.vanced.manager.ui.compose
//import android.content.Context
//import androidx.compose.foundation.isSystemInDarkTheme
//import androidx.compose.material.MaterialTheme
//import androidx.compose.material.darkColors
//import androidx.compose.material.lightColors
//import androidx.compose.runtime.Composable
//import androidx.compose.runtime.MutableState
//import androidx.compose.runtime.mutableStateOf
//import androidx.compose.runtime.remember
//import androidx.compose.ui.graphics.Color
//import androidx.compose.ui.platform.LocalContext
//import androidx.preference.PreferenceManager.getDefaultSharedPreferences
//import com.vanced.manager.utils.mutableAccentColor
//
//const val Dark = "Dark"
//const val SystemDefault = "System Default"
//
//const val defAccentColor: Int = -13732865
//
//val Context.accentColor get() = mutableAccentColor.value ?: getDefaultSharedPreferences(this).getInt("manager_accent_color", defAccentColor)
//
//enum class Theme {
// DARK, LIGHT
//}
//
//val lightColors = lightColors(
// primary = Color(defAccentColor)
//)
//
//val darkColors = darkColors(
// primary = Color(defAccentColor)
//)
//
//fun Context.retrieveTheme(): Theme = when (getDefaultSharedPreferences(this).getString("manager_theme", SystemDefault)) {
// SystemDefault -> if (isSystemInDarkTheme()) Theme.DARK else Theme.LIGHT
// Dark -> Theme.DARK
// else -> Theme.LIGHT
//}
//
//val Context.isDarkTheme: Boolean
// get() = retrieveTheme() == Theme.DARK
//
//fun Context.ManagerTheme(
// content: @Composable () -> Unit
//) {
// MaterialTheme(
// colors = if (isDarkTheme) darkColors else lightColors,
// content = content
// )
//}

View File

@ -0,0 +1,61 @@
package com.vanced.manager.ui.core
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.FrameLayout
import androidx.core.view.isGone
import androidx.core.view.isVisible
import com.vanced.manager.R
import com.vanced.manager.databinding.ViewPreferenceBinding
class EmptyPreference @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0,
defStyleRes: Int = 0
) : FrameLayout(context, attrs, defStyle, defStyleRes) {
private var _binding: ViewPreferenceBinding? = null
val binding: ViewPreferenceBinding
get() = requireNotNull(_binding)
init {
_binding = ViewPreferenceBinding.inflate(LayoutInflater.from(context), this, true)
initAttrs(context, attrs)
}
fun setTitle(newTitle: String) {
binding.preferenceTitle.text = newTitle
}
fun setSummary(newSummary: String) {
with(binding) {
preferenceSummary.text = newSummary
preferenceSummary.isVisible = true
preferenceTitle.setPadding(0, 0, 0, 0)
}
}
private fun initAttrs(context: Context, attrs: AttributeSet?) {
attrs?.let { mAttrs ->
val typedArray =
context.obtainStyledAttributes(mAttrs, R.styleable.EmptyPreference, 0, 0)
val title = typedArray.getText(R.styleable.EmptyPreference_preference_title)
val summary = typedArray.getText(R.styleable.EmptyPreference_preference_summary)
with(binding) {
if (summary != null) {
preferenceSummary.text = summary
} else {
preferenceSummary.isGone = true
preferenceTitle.setPadding(0, 12, 0, 12)
}
preferenceTitle.text = title
}
typedArray.recycle()
}
}
}

View File

@ -0,0 +1,39 @@
package com.vanced.manager.ui.core
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.LinearLayout
import com.vanced.manager.R
import com.vanced.manager.databinding.ViewPreferenceCategoryBinding
class PreferenceCategory @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0
) : LinearLayout(context, attrs, defStyle) {
private var _binding: ViewPreferenceCategoryBinding? = null
val binding: ViewPreferenceCategoryBinding
get() = requireNotNull(_binding)
init {
_binding = ViewPreferenceCategoryBinding.inflate(LayoutInflater.from(context), this, true)
initAttrs(context, attrs)
setPadding(0, 4, 0, 0)
orientation = VERTICAL
}
private fun initAttrs(context: Context, attrs: AttributeSet?) {
attrs.let { mAttrs ->
val typedArray =
context.obtainStyledAttributes(mAttrs, R.styleable.PreferenceCategory, 0, 0)
val title = typedArray.getText(R.styleable.PreferenceCategory_category_title)
binding.categoryTitle.text = title
typedArray.recycle()
}
}
}

View File

@ -0,0 +1,101 @@
package com.vanced.manager.ui.core
import android.content.Context
import android.content.SharedPreferences
import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.CompoundButton
import android.widget.FrameLayout
import androidx.core.content.edit
import com.vanced.manager.R
import com.vanced.manager.databinding.ViewPreferenceSwitchBinding
import com.vanced.manager.utils.defPrefs
class PreferenceSwitch @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyle: Int = 0,
defStyleRes: Int = 0
) : FrameLayout(context, attrs, defStyle, defStyleRes) {
fun interface OnCheckedListener {
fun onChecked(buttonView: CompoundButton, isChecked: Boolean)
}
private val prefs by lazy { context.defPrefs }
var prefKey: String = ""
private set
var defValue: Boolean = false
private set
private var mListener: OnCheckedListener? = null
private val prefListener =
SharedPreferences.OnSharedPreferenceChangeListener { sharedPreferences, key ->
if (key == prefKey) {
binding.preferenceSwitch.isChecked = sharedPreferences.getBoolean(key, defValue)
}
}
private var _binding: ViewPreferenceSwitchBinding? = null
val binding: ViewPreferenceSwitchBinding
get() = requireNotNull(_binding)
init {
_binding = ViewPreferenceSwitchBinding.inflate(LayoutInflater.from(context), this, true)
prefs.registerOnSharedPreferenceChangeListener(prefListener)
attrs?.let { mAttrs ->
with(context.obtainStyledAttributes(mAttrs, R.styleable.PreferenceSwitch, 0, 0)) {
val title = getText(R.styleable.PreferenceSwitch_switch_title)
val summary = getText(R.styleable.PreferenceSwitch_switch_summary)
val key = getText(R.styleable.PreferenceSwitch_switch_key)
val defValue = getBoolean(R.styleable.PreferenceSwitch_switch_def_value, false)
setKey(key)
setDefaultValue(defValue)
setTitle(title)
setSummary(summary)
recycle()
}
}
}
override fun onFinishInflate() {
super.onFinishInflate()
setOnClickListener {
binding.preferenceSwitch.isChecked = !binding.preferenceSwitch.isChecked
}
binding.preferenceSwitch.setOnCheckedChangeListener { buttonView, isChecked ->
prefs.edit { putBoolean(prefKey, isChecked) }
mListener?.onChecked(buttonView, isChecked)
}
}
fun setOnCheckedListener(listener: OnCheckedListener) {
mListener = listener
}
fun setTitle(title: CharSequence?) {
binding.preferenceSwitchTitle.text = title
}
fun setSummary(summary: CharSequence?) {
binding.preferenceSwitchSummary.text = summary
}
fun setKey(key: CharSequence?) {
prefKey = key.toString()
binding.preferenceSwitch.isChecked = prefs.getBoolean(key.toString(), defValue)
}
fun setDefaultValue(newVal: Boolean) {
defValue = newVal
binding.preferenceSwitch.isChecked = prefs.getBoolean(prefKey, newVal)
}
fun setChecked(checked: Boolean) {
binding.preferenceSwitch.isChecked = checked
}
}

View File

@ -1,32 +0,0 @@
package com.vanced.manager.ui.core
import android.content.Context
import android.util.AttributeSet
import androidx.constraintlayout.widget.ConstraintLayout
open class SlidingConstraintLayout : ConstraintLayout {
constructor(context: Context?) : super(context)
constructor(context: Context?, attrs: AttributeSet?) : super(
context,
attrs
)
var xFraction: Float
get() {
val width = width
return if (width != 0)
x / getWidth()
else
x
}
set(xFraction) {
val width = width
val newWidth =
if (width > 0)
xFraction * width
else
(1).toFloat()
x = newWidth
}
}

View File

@ -1,33 +0,0 @@
package com.vanced.manager.ui.core
import android.content.Context
import android.util.AttributeSet
import android.widget.LinearLayout
open class SlidingLinearLayout: LinearLayout {
constructor(context: Context?) : super(context)
constructor(context: Context?, attrs: AttributeSet?) : super(
context,
attrs
)
var yFraction: Float
get() {
val height = height
return if (height != 0)
y / height
else
y
}
set(yFraction) {
val height = height
val newHeight =
if (height > 0)
yFraction * height
else
(1).toFloat()
y = newHeight
}
}

View File

@ -1,31 +0,0 @@
package com.vanced.manager.ui.core
import android.content.Context
import android.util.AttributeSet
import androidx.core.widget.NestedScrollView
open class SlidingNestedScrollView : NestedScrollView {
constructor(context: Context?) : super(context!!)
constructor(context: Context?, attrs: AttributeSet?) : super(
context!!,
attrs
)
var xFraction: Float
get() {
val width = width
return if (width != 0)
x / getWidth()
else
x
}
set(xFraction) {
val width = width
val newWidth =
if (width > 0)
xFraction * width
else
(1).toFloat()
x = newWidth
}
}

View File

@ -1,18 +0,0 @@
package com.vanced.manager.ui.core
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.vanced.manager.R
import com.vanced.manager.ui.MainActivity
class SplashScreenActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
setTheme(R.style.SplashTheme)
super.onCreate(savedInstanceState)
startActivity(Intent(this@SplashScreenActivity, MainActivity::class.java))
finish()
}
}

View File

@ -0,0 +1,19 @@
package com.vanced.manager.ui.core
import android.content.Context
import android.content.res.ColorStateList
import android.util.AttributeSet
import com.google.android.material.card.MaterialCardView
import com.vanced.manager.utils.accentColor
class ThemedAppCard @JvmOverloads constructor(
context: Context,
attributeSet: AttributeSet? = null,
defStyleAttr: Int = 0
) : MaterialCardView(context, attributeSet, defStyleAttr) {
init {
setCardBackgroundColor(ColorStateList.valueOf(accentColor.value!!).withAlpha(35))
}
}

View File

@ -0,0 +1,24 @@
package com.vanced.manager.ui.core
import android.content.Context
import android.content.res.ColorStateList
import android.util.AttributeSet
import android.widget.Toast
import com.google.android.material.button.MaterialButton
import com.vanced.manager.utils.accentColor
class ThemedIconButton @JvmOverloads constructor(
context: Context,
attributeSet: AttributeSet? = null,
defStyleAttr: Int = 0
) : MaterialButton(context, attributeSet, defStyleAttr) {
init {
iconTint = ColorStateList.valueOf(accentColor.value!!)
setOnLongClickListener {
Toast.makeText(context, contentDescription, Toast.LENGTH_SHORT).show()
true
}
}
}

View File

@ -0,0 +1,34 @@
package com.vanced.manager.ui.core
import android.content.Context
import android.util.AttributeSet
import androidx.core.content.res.ResourcesCompat
import androidx.core.graphics.ColorUtils
import com.google.android.material.button.MaterialButton
import com.vanced.manager.R
import com.vanced.manager.utils.accentColor
import com.vanced.manager.utils.lifecycleOwner
class ThemedMaterialButton @JvmOverloads constructor(
context: Context,
attributeSet: AttributeSet? = null,
defStyleAttr: Int = 0
) : MaterialButton(context, attributeSet, defStyleAttr) {
init {
context.lifecycleOwner?.let { owner ->
accentColor.observe(owner) { color ->
setBgColor(color.toInt())
}
}
}
private fun setBgColor(color: Int) {
setBackgroundColor(color)
if (ColorUtils.calculateLuminance(color) < 0.7) {
setTextColor(ResourcesCompat.getColor(resources, R.color.White, null))
} else {
setTextColor(ResourcesCompat.getColor(resources, R.color.Black, null))
}
}
}

View File

@ -0,0 +1,17 @@
package com.vanced.manager.ui.core
import android.content.Context
import android.content.res.ColorStateList
import android.util.AttributeSet
import com.google.android.material.checkbox.MaterialCheckBox
import com.vanced.manager.R
import com.vanced.manager.utils.accentColor
class ThemedMaterialCheckbox @JvmOverloads constructor(
context: Context,
attributeSet: AttributeSet? = null,
) : MaterialCheckBox(context, attributeSet, R.attr.checkboxStyle) {
init {
buttonTintList = ColorStateList.valueOf(accentColor.value!!)
}
}

View File

@ -0,0 +1,17 @@
package com.vanced.manager.ui.core
import android.content.Context
import android.content.res.ColorStateList
import android.util.AttributeSet
import com.google.android.material.radiobutton.MaterialRadioButton
import com.vanced.manager.R
import com.vanced.manager.utils.accentColor
class ThemedMaterialRadioButton @JvmOverloads constructor(
context: Context,
attributeSet: AttributeSet? = null,
) : MaterialRadioButton(context, attributeSet, R.attr.radioButtonStyle) {
init {
buttonTintList = ColorStateList.valueOf(accentColor.value!!)
}
}

View File

@ -0,0 +1,23 @@
package com.vanced.manager.ui.core
import android.content.Context
import android.content.res.ColorStateList
import android.util.AttributeSet
import com.google.android.material.slider.Slider
import com.vanced.manager.utils.accentColor
class ThemedMaterialSlider @JvmOverloads constructor(
context: Context,
attributeSet: AttributeSet? = null,
defStyleAttr: Int = 0
) : Slider(context, attributeSet, defStyleAttr) {
init {
val accentValue = ColorStateList.valueOf(accentColor.value!!)
thumbTintList = accentValue
trackActiveTintList = accentValue
trackInactiveTintList = accentValue.withAlpha(70)
haloTintList = accentValue.withAlpha(60)
}
}

View File

@ -0,0 +1,31 @@
package com.vanced.manager.ui.core
import android.content.Context
import android.content.res.ColorStateList
import android.util.AttributeSet
import androidx.core.graphics.ColorUtils
import com.google.android.material.button.MaterialButton
import com.vanced.manager.utils.accentColor
import com.vanced.manager.utils.lifecycleOwner
class ThemedOutlinedMaterialButton @JvmOverloads constructor(
context: Context,
attributeSet: AttributeSet? = null,
defStyleAttr: Int = 0
) : MaterialButton(context, attributeSet, defStyleAttr) {
init {
context.lifecycleOwner?.let { owner ->
accentColor.observe(owner) { color ->
applyAccent(color.toInt())
}
}
}
private fun applyAccent(color: Int) {
setTextColor(color)
rippleColor = ColorStateList(
arrayOf(intArrayOf()),
intArrayOf(ColorUtils.setAlphaComponent(color, 50))
)
}
}

View File

@ -0,0 +1,31 @@
package com.vanced.manager.ui.core
import android.content.Context
import android.util.AttributeSet
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import com.vanced.manager.R
import com.vanced.manager.utils.accentColor
class ThemedSwipeRefreshlayout @JvmOverloads constructor(
context: Context,
attributeSet: AttributeSet? = null
) : SwipeRefreshLayout(context, attributeSet) {
init {
setColorSchemeColors(accentColor.value!!)
initAttrs(context, attributeSet)
}
private fun initAttrs(context: Context, attributeSet: AttributeSet?) {
attributeSet.let {
val typedAttrs =
context.obtainStyledAttributes(it, R.styleable.ThemedSwipeRefreshlayout, 0, 0)
setProgressBackgroundColorSchemeColor(
typedAttrs.getColor(
R.styleable.ThemedSwipeRefreshlayout_progressBackgroundColor,
0
)
)
typedAttrs.recycle()
}
}
}

View File

@ -0,0 +1,42 @@
package com.vanced.manager.ui.core
import android.content.Context
import android.content.res.ColorStateList
import android.graphics.Color
import android.util.AttributeSet
import androidx.appcompat.widget.SwitchCompat
import androidx.core.graphics.ColorUtils
import androidx.core.graphics.drawable.DrawableCompat
import com.vanced.manager.R
import com.vanced.manager.utils.accentColor
import com.vanced.manager.utils.lifecycleOwner
class ThemedSwitchCompat @JvmOverloads constructor(
context: Context,
attributeSet: AttributeSet? = null,
) : SwitchCompat(context, attributeSet, R.attr.switchStyle) {
private val states =
arrayOf(intArrayOf(-android.R.attr.state_checked), intArrayOf(android.R.attr.state_checked))
init {
context.lifecycleOwner?.let { owner ->
accentColor.observe(owner) { color ->
setSwitchColors(color.toInt())
}
}
}
private fun setSwitchColors(color: Int) {
val thumbColors = intArrayOf(Color.LTGRAY, color)
val trackColors = intArrayOf(Color.GRAY, ColorUtils.setAlphaComponent(color, 70))
DrawableCompat.setTintList(
DrawableCompat.wrap(thumbDrawable),
ColorStateList(states, thumbColors)
)
DrawableCompat.setTintList(
DrawableCompat.wrap(trackDrawable),
ColorStateList(states, trackColors)
)
}
}

View File

@ -0,0 +1,21 @@
package com.vanced.manager.ui.core
import android.content.Context
import android.util.AttributeSet
import androidx.appcompat.widget.AppCompatTextView
import com.vanced.manager.utils.accentColor
import com.vanced.manager.utils.lifecycleOwner
class ThemedTextView @JvmOverloads constructor(
context: Context,
attributeSet: AttributeSet? = null,
defStyleAttr: Int = 0
) : AppCompatTextView(context, attributeSet, defStyleAttr) {
init {
context.lifecycleOwner?.let { owner ->
accentColor.observe(owner) { color ->
setTextColor(color.toInt())
}
}
}
}

View File

@ -0,0 +1,125 @@
package com.vanced.manager.ui.dialogs
import android.annotation.SuppressLint
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.core.view.isVisible
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import com.vanced.manager.R
import com.vanced.manager.core.downloader.MicrogDownloader.downloadMicrog
import com.vanced.manager.core.downloader.MusicDownloader.downloadMusic
import com.vanced.manager.core.downloader.VancedDownloader.downloadVanced
import com.vanced.manager.core.ui.base.BindingDialogFragment
import com.vanced.manager.databinding.DialogAppDownloadBinding
import com.vanced.manager.utils.*
class AppDownloadDialog : BindingDialogFragment<DialogAppDownloadBinding>() {
companion object {
const val CLOSE_DIALOG = "close_dialog"
private const val TAG_APP = "TAG_APP"
private const val TAG_VERSION = "TAG_VERSION"
private const val TAG_INSTALLING = "TAG_INSTALLING"
fun newInstance(
app: String,
version: String? = null,
installing: Boolean = false
): AppDownloadDialog = AppDownloadDialog().apply {
arguments = Bundle().apply {
putString(TAG_APP, app)
putString(TAG_VERSION, version)
putBoolean(TAG_INSTALLING, installing)
}
}
}
private val localBroadcastManager by lazy { LocalBroadcastManager.getInstance(requireActivity()) }
private val broadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
if (intent.action == CLOSE_DIALOG) {
dismiss()
}
}
}
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = DialogAppDownloadBinding.inflate(inflater, container, false)
override fun otherSetups() {
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
bindData()
}
private fun bindData() {
with(binding) {
isCancelable = false
binding.appDownloadProgressbar.applyAccent()
binding.appInstallProgressbar.applyAccent()
bindDownloadProgress()
val app = arguments?.getString(TAG_APP)
appDownloadHeader.text = app
if (arguments?.getBoolean(TAG_INSTALLING) == false) {
when (app) {
getString(R.string.vanced) -> downloadVanced(
requireContext(),
arguments?.getString(TAG_VERSION)
)
getString(R.string.music) -> downloadMusic(
requireContext(),
arguments?.getString(TAG_VERSION)
)
getString(R.string.microg) -> downloadMicrog(requireContext())
}
}
}
}
@SuppressLint("SetTextI18n")
private fun DialogAppDownloadBinding.bindDownloadProgress() {
downloadProgress.observe(viewLifecycleOwner) {
appDownloadProgressbar.progress = it
appDownloadProgress.text = "$it%"
}
installing.observe(viewLifecycleOwner) { installing ->
appDownloadProgressbarContainer.isVisible = !installing
appInstallProgressbar.isVisible = installing
appDownloadFile.isVisible = !installing
appDownloadCancel.isEnabled = !installing
appDownloadCancel.setOnClickListener {
if (installing) {
return@setOnClickListener
}
currentDownload?.cancel()
downloadProgress.value = 0
dismiss()
}
}
downloadingFile.observe(viewLifecycleOwner) {
appDownloadFile.text = it
}
}
override fun onResume() {
super.onResume()
registerReceiver()
}
private fun registerReceiver() {
val intentFilter = IntentFilter()
intentFilter.addAction(CLOSE_DIALOG)
localBroadcastManager.registerReceiver(broadcastReceiver, intentFilter)
}
}

View File

@ -0,0 +1,54 @@
package com.vanced.manager.ui.dialogs
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.annotation.DrawableRes
import com.vanced.manager.R
import com.vanced.manager.core.ui.base.BindingDialogFragment
import com.vanced.manager.databinding.DialogAppInfoBinding
class AppInfoDialog : BindingDialogFragment<DialogAppInfoBinding>() {
companion object {
private const val TAG_APP_NAME = "TAG_APP_NAME"
private const val TAG_APP_ICON = "TAG_APP_ICON"
private const val TAG_CHANGELOG = "TAG_CHANGELOG"
fun newInstance(
appName: String?,
@DrawableRes appIcon: Int?,
changelog: String?
): AppInfoDialog = AppInfoDialog().apply {
arguments = Bundle().apply {
putString(TAG_APP_NAME, appName)
putString(TAG_CHANGELOG, changelog)
if (appIcon != null) {
putInt(TAG_APP_ICON, appIcon)
}
}
}
}
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = DialogAppInfoBinding.inflate(inflater, container, false)
override fun otherSetups() {
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
bindData()
}
private fun bindData() {
with(binding) {
aboutAppName.text = getString(R.string.about_app, arguments?.getString(TAG_APP_NAME))
aboutAppChangelog.text = arguments?.getString(TAG_CHANGELOG)
arguments?.getInt(TAG_APP_ICON)?.let { aboutAppImage.setImageResource(it) }
}
}
}

View File

@ -0,0 +1,62 @@
package com.vanced.manager.ui.dialogs
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.LayoutInflater
import android.view.ViewGroup
import com.vanced.manager.R
import com.vanced.manager.core.ui.base.BindingDialogFragment
import com.vanced.manager.databinding.DialogAppUninstallBinding
import com.vanced.manager.utils.PackageHelper
class AppUninstallDialog : BindingDialogFragment<DialogAppUninstallBinding>() {
companion object {
private const val TAG_APP_NAME = "APP_NAME"
private const val TAG_APP_PACKAGE = "APP_PACKAGE"
fun newInstance(
appName: String?,
appPackage: String?,
) = AppUninstallDialog().apply {
arguments = Bundle().apply {
putString(TAG_APP_NAME, appName)
putString(TAG_APP_PACKAGE, appPackage)
}
}
}
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = DialogAppUninstallBinding.inflate(inflater, container, false)
override fun otherSetups() {
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
bindData()
}
private fun bindData() {
val appName = arguments?.getString(TAG_APP_NAME)
val appPackage = arguments?.getString(TAG_APP_PACKAGE)
with(binding) {
appUninstallConfirm.setOnClickListener {
if (appPackage != null) {
PackageHelper.uninstallApk(
pkg = appPackage,
context = requireActivity()
)
}
dismiss()
}
appUninstallCancel.setOnClickListener {
dismiss()
}
appUninstallMessage.text = getString(R.string.uninstall_app_text, appName)
}
}
}

View File

@ -0,0 +1,94 @@
package com.vanced.manager.ui.dialogs
import android.content.DialogInterface
import android.os.Bundle
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.core.content.edit
import com.google.android.material.radiobutton.MaterialRadioButton
import com.vanced.manager.R
import com.vanced.manager.core.ui.base.BindingBottomSheetDialogFragment
import com.vanced.manager.core.ui.ext.showDialog
import com.vanced.manager.databinding.DialogBottomRadioButtonBinding
import com.vanced.manager.ui.core.ThemedMaterialRadioButton
import com.vanced.manager.utils.checkedButtonTag
import com.vanced.manager.utils.defPrefs
import com.vanced.manager.utils.formatVersion
class AppVersionSelectorDialog :
BindingBottomSheetDialogFragment<DialogBottomRadioButtonBinding>() {
private val prefs by lazy { requireActivity().defPrefs }
companion object {
private const val TAG_VERSIONS = "TAG_VERSIONS"
private const val TAG_APP = "TAG_APP"
fun newInstance(
versions: List<String>?,
app: String
): AppVersionSelectorDialog = AppVersionSelectorDialog().apply {
arguments = Bundle().apply {
val arrayList = arrayListOf<String>()
versions?.let { arrayList.addAll(it) }
putStringArrayList(TAG_VERSIONS, arrayList)
putString(TAG_APP, app)
}
}
}
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = DialogBottomRadioButtonBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
private fun bindData() {
with(binding) {
loadBoxes()?.forEach { mrb ->
dialogRadiogroup.addView(
mrb,
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
}
val tag = root.findViewWithTag<MaterialRadioButton>(
prefs.getString("${arguments?.getString(TAG_APP)}_version", "latest")
)
if (tag != null) {
tag.isChecked = true
}
dialogTitle.text = getString(R.string.version)
dialogSave.setOnClickListener {
val checkedTag = dialogRadiogroup.checkedButtonTag
if (checkedTag != null) {
prefs.edit { putString("${arguments?.getString(TAG_APP)}_version", checkedTag) }
}
dismiss()
}
}
}
private fun loadBoxes() =
arguments?.getStringArrayList(TAG_VERSIONS)?.map { version ->
ThemedMaterialRadioButton(requireActivity()).apply {
text = version.formatVersion(requireActivity())
tag = version
textSize = 18f
}
}
override fun onDismiss(dialog: DialogInterface) {
super.onDismiss(dialog)
if (arguments?.getString(TAG_APP) == "vanced") {
showDialog(VancedPreferencesDialog())
} else {
showDialog(MusicPreferencesDialog())
}
}
}

View File

@ -1,145 +1,132 @@
package com.vanced.manager.ui.dialogs
import android.app.Activity
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import androidx.appcompat.app.AlertDialog
import androidx.core.content.ContextCompat.startActivity
import androidx.core.content.edit
import androidx.preference.PreferenceManager
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.vanced.manager.R
import com.vanced.manager.ui.MainActivity
import com.vanced.manager.utils.InternetTools.openUrl
import com.vanced.manager.utils.MiuiHelper
import com.vanced.manager.utils.isMiuiOptimizationsEnabled
import com.vanced.manager.utils.openUrl
import com.vanced.manager.utils.showWithAccent
object DialogContainer {
fun showSecurityDialog(context: Context) {
AlertDialog.Builder(context)
.setTitle(context.resources.getString(R.string.welcome))
.setMessage(context.resources.getString(R.string.security_context))
.setCancelable(false)
.setPositiveButton(context.resources.getString(R.string.close)) { dialog, _ ->
run {
dialog.dismiss()
if (MiuiHelper.isMiui()) {
showMiuiDialog(context)
}
}
MaterialAlertDialogBuilder(context).apply {
setTitle(context.resources.getString(R.string.welcome))
setMessage(context.resources.getString(R.string.security_context))
setPositiveButton(context.resources.getString(R.string.close)) { dialog, _ ->
dialog.cancel()
}
.create()
.show()
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
prefs.edit().putBoolean("firstStart", false).apply()
}
private fun showMiuiDialog(context: Context) {
AlertDialog.Builder(context)
.setTitle(context.getString(R.string.miui_one_title))
.setMessage(context.getString(R.string.miui_one))
.setPositiveButton(context.getString(R.string.close)) { dialog, _ -> dialog.dismiss() }
.setNeutralButton(context.getString(R.string.guide)) { _, _ ->
openUrl("https://telegra.ph/How-to-install-v15-on-MIUI-02-11", R.color.Telegram, context)
}
.create()
.show()
}
fun showRootDialog(activity: Activity) {
AlertDialog.Builder(activity)
.setTitle(activity.getString(R.string.hold_on))
.setMessage(activity.getString(R.string.disable_signature))
.setPositiveButton(activity.getString(R.string.button_dismiss)) { dialog, _ ->
dialog.dismiss()
}
.setNeutralButton(activity.getString(R.string.guide)) { _, _ ->
openUrl("https://lmgtfy.com/?q=andnixsh+apk+verification+disable", R.color.Twitter, activity)
}
.setOnDismissListener { PreferenceManager.getDefaultSharedPreferences(activity).edit().putBoolean("show_root_dialog", false).apply() }
.create()
.show()
}
//Easter Egg
fun statementFalse(context: Context) {
AlertDialog.Builder(context)
.setTitle("Wait what?")
.setMessage("So this statement is false huh? I'll go with True!")
.setPositiveButton("wut?") { dialog, _ -> dialog.dismiss() }
.create()
.show()
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
prefs.edit().putBoolean("statement", true).apply()
}
fun installAlertBuilder(msg: String, context: Context) {
AlertDialog.Builder(context).apply {
setTitle(context.getString(R.string.error))
setMessage(msg)
setPositiveButton(context.getString(R.string.close)) { dialog, _ -> dialog.dismiss() }
when (msg) {
context.getString(R.string.installation_signature) -> {
setNeutralButton(context.getString(R.string.guide)) { _, _ ->
openUrl("https://lmgtfy.com/?q=andnixsh+apk+verification+disable", R.color.Twitter, context)
}
}
context.getString(R.string.installation_miui) -> {
setNeutralButton(context.getString(R.string.guide)) { _, _ ->
openUrl("https://telegra.ph/How-to-install-v15-on-MIUI-02-11", R.color.Telegram, context)
}
setOnCancelListener {
if (context.isMiuiOptimizationsEnabled) {
miuiDialog(context)
}
}
create()
show()
showWithAccent()
}
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
prefs.edit { putBoolean("firstLaunch", false) }
}
fun miuiDialog(context: Context) {
MaterialAlertDialogBuilder(context).apply {
setTitle(context.getString(R.string.miui_one_title))
setMessage(context.getString(R.string.miui_one))
setNeutralButton(context.getString(R.string.close)) { dialog, _ -> dialog.dismiss() }
setPositiveButton(context.getString(R.string.guide)) { _, _ ->
openUrl(
"https://telegra.ph/How-to-install-v15-on-MIUI-02-11",
R.color.Telegram,
context
)
}
setCancelable(false)
create()
showWithAccent()
}
}
fun regularPackageInstalled(msg: String, activity: MainActivity) {
AlertDialog.Builder(activity)
.setTitle(activity.getString(R.string.success))
.setMessage(msg)
.setPositiveButton(activity.getString(R.string.close)) { _, _ -> activity.restartActivity() }
.setCancelable(false)
.create()
.show()
fun statementFalse(context: Context) {
MaterialAlertDialogBuilder(context).apply {
setTitle("Wait what?")
setMessage("So this statement is false huh? I'll go with True!")
setPositiveButton("wut?") { dialog, _ -> dialog.dismiss() }
create()
showWithAccent()
}
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
prefs.edit { putBoolean("statement", true) }
}
fun basicDialog(title: String, msg: String, activity: Activity) {
AlertDialog.Builder(activity)
.setTitle(title)
.setMessage(msg)
.setPositiveButton(activity.getString(R.string.close)) { dialog, _ -> dialog.dismiss() }
.create()
.show()
}
fun launchVanced(activity: MainActivity) {
val intent = Intent()
intent.component =
if (PreferenceManager.getDefaultSharedPreferences(activity).getString("vanced_variant", "nonroot") == "root")
ComponentName("com.google.android.youtube", "com.google.android.youtube.HomeActivity")
else
ComponentName("com.vanced.android.youtube", "com.google.android.youtube.HomeActivity")
AlertDialog.Builder(activity)
.setTitle(activity.getString(R.string.success))
.setMessage(activity.getString(R.string.vanced_installed))
.setPositiveButton(activity.getString(R.string.launch)) { _, _ ->
run {
startActivity(activity, intent, null)
activity.finish()
fun installAlertBuilder(msg: String, fullMsg: String?, context: Context) {
MaterialAlertDialogBuilder(context).apply {
setTitle(context.getString(R.string.error))
setMessage(msg)
when (msg) {
context.getString(R.string.installation_signature) -> {
setPositiveButton(context.getString(R.string.guide)) { _, _ ->
openUrl(
"https://lmgtfy.com/?q=andnixsh+apk+verification+disable",
R.color.Twitter,
context
)
}
setNeutralButton(context.getString(R.string.close)) { dialog, _ -> dialog.dismiss() }
if (fullMsg != null)
setNegativeButton(context.getString(R.string.advanced)) { _, _ ->
basicDialog(
context.getString(R.string.advanced),
fullMsg,
context
)
}
}
context.getString(R.string.installation_miui) -> {
setPositiveButton(context.getString(R.string.guide)) { _, _ ->
openUrl(
"https://telegra.ph/How-to-install-v15-on-MIUI-02-11",
R.color.Telegram,
context
)
}
setNeutralButton(context.getString(R.string.close)) { dialog, _ -> dialog.dismiss() }
if (fullMsg != null)
setNegativeButton(context.getString(R.string.advanced)) { _, _ ->
basicDialog(
context.getString(R.string.advanced),
fullMsg,
context
)
}
}
else -> {
setPositiveButton(context.getString(R.string.close)) { dialog, _ -> dialog.dismiss() }
if (fullMsg != null)
setNegativeButton(context.getString(R.string.advanced)) { _, _ ->
basicDialog(
context.getString(R.string.advanced),
fullMsg,
context
)
}
}
}
.setNegativeButton(activity.getString(R.string.close)) { dialog, _ ->
run {
dialog.dismiss()
activity.restartActivity()
}
}
.setCancelable(false)
.create()
.show()
create()
showWithAccent()
}
}
}
fun basicDialog(title: String, msg: String, context: Context) {
MaterialAlertDialogBuilder(context).apply {
setTitle(title)
setMessage(msg)
setPositiveButton(context.getString(R.string.close)) { dialog, _ -> dialog.dismiss() }
create()
showWithAccent()
}
}
}

View File

@ -0,0 +1,76 @@
package com.vanced.manager.ui.dialogs
import android.os.Bundle
import android.view.LayoutInflater
import android.view.ViewGroup
import com.vanced.manager.R
import com.vanced.manager.core.downloader.MicrogDownloader.startMicrogInstall
import com.vanced.manager.core.downloader.MusicDownloader.startMusicInstall
import com.vanced.manager.core.downloader.VancedDownloader.startVancedInstall
import com.vanced.manager.core.ui.base.BindingBottomSheetDialogFragment
import com.vanced.manager.core.ui.ext.showDialog
import com.vanced.manager.databinding.DialogInstallationFilesDetectedBinding
import com.vanced.manager.utils.defPrefs
import com.vanced.manager.utils.managerVariant
class InstallationFilesDetectedDialog :
BindingBottomSheetDialogFragment<DialogInstallationFilesDetectedBinding>() {
companion object {
private const val TAG_APP = "TAG_APP"
fun newInstance(
app: String
): InstallationFilesDetectedDialog = InstallationFilesDetectedDialog().apply {
arguments = Bundle().apply {
putString(TAG_APP, app)
}
}
}
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = DialogInstallationFilesDetectedBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
private fun bindData() {
with(binding) {
val app =
arguments?.getString(TAG_APP) ?: throw IllegalArgumentException("app name is null")
installationDetectedTitle.text = getString(R.string.app_install_files_detected, app)
installationDetectedSummary.text =
getString(R.string.app_install_files_detected_summary, app)
installationDetectedRedownload.setOnClickListener {
dismiss()
when (app) {
getString(R.string.vanced) -> showDialog(VancedPreferencesDialog())
getString(R.string.music) -> showDialog(MusicPreferencesDialog())
else -> showDialog(AppDownloadDialog.newInstance(app))
}
}
installationDetectedInstall.setOnClickListener {
dismiss()
when (app) {
getString(R.string.vanced) -> startVancedInstall(
requireContext(),
context?.defPrefs?.managerVariant
)
getString(R.string.music) -> startMusicInstall(requireContext())
getString(R.string.microg) -> startMicrogInstall(requireContext())
}
showDialog(
AppDownloadDialog.newInstance(
app = app,
installing = true
)
)
}
}
}
}

View File

@ -0,0 +1,128 @@
package com.vanced.manager.ui.dialogs
import android.content.DialogInterface
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.view.LayoutInflater
import android.view.ViewGroup
import android.widget.TextView
import android.widget.Toast
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.madrapps.pikolo.listeners.OnColorSelectionListener
import com.vanced.manager.R
import com.vanced.manager.core.ui.base.BindingDialogFragment
import com.vanced.manager.databinding.DialogManagerAccentColorBinding
import com.vanced.manager.utils.*
import com.vanced.manager.utils.AppUtils.log
class ManagerAccentColorDialog : BindingDialogFragment<DialogManagerAccentColorBinding>() {
companion object {
fun newInstance(): ManagerAccentColorDialog = ManagerAccentColorDialog().apply {
arguments = Bundle()
}
}
private val prefs by lazy { getDefaultSharedPreferences(requireActivity()) }
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = DialogManagerAccentColorBinding.inflate(inflater, container, false)
override fun otherSetups() {
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
bindData()
}
override fun onCancel(dialog: DialogInterface) {
super.onCancel(dialog)
mutableAccentColor.value = prefs.getInt("manager_accent_color", defAccentColor)
}
private fun bindData() {
with(binding) {
val accent = prefs.getInt("manager_accent_color", defAccentColor)
hexEdittext.apply {
setText(accent.toHex(), TextView.BufferType.EDITABLE)
addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(
s: CharSequence?,
start: Int,
count: Int,
after: Int
) {
}
override fun onTextChanged(
s: CharSequence?,
start: Int,
before: Int,
count: Int
) {
if (length() == 0) {
setText("#")
setSelection(1)
}
if (accentColor.value?.toHex() != text.toString() && length() == 7) {
try {
val colorFromEditText = Color.parseColor(text.toString())
accentPicker.setColor(colorFromEditText)
mutableAccentColor.value = colorFromEditText
} catch (e: IllegalArgumentException) {
}
}
}
override fun afterTextChanged(s: Editable?) {}
})
}
accentPicker.apply {
setColor(accent)
setColorSelectionListener(object : OnColorSelectionListener {
override fun onColorSelected(color: Int) {
mutableAccentColor.value = color
hexEdittext.setText(color.toHex(), TextView.BufferType.EDITABLE)
}
override fun onColorSelectionEnd(color: Int) {}
override fun onColorSelectionStart(color: Int) {}
})
}
accentCancel.setOnClickListener {
mutableAccentColor.value = accent
dismiss()
}
accentSave.setOnClickListener {
try {
val colorFromEditText = Color.parseColor(hexEdittext.text.toString())
mutableAccentColor.value = colorFromEditText
prefs.managerAccent = colorFromEditText
} catch (e: IllegalArgumentException) {
log("VMTheme", getString(R.string.failed_accent))
Toast.makeText(
requireActivity(),
getString(R.string.failed_accent),
Toast.LENGTH_SHORT
).show()
return@setOnClickListener
}
dismiss()
}
accentReset.setOnClickListener {
prefs.managerAccent = defAccentColor
mutableAccentColor.value = defAccentColor
dismiss()
}
}
}
}

View File

@ -0,0 +1,66 @@
package com.vanced.manager.ui.dialogs
import android.os.Bundle
import android.view.LayoutInflater
import android.view.ViewGroup
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.vanced.manager.BuildConfig.MANAGER_LANGUAGES
import com.vanced.manager.core.ui.base.BindingBottomSheetDialogFragment
import com.vanced.manager.databinding.DialogManagerLanguageBinding
import com.vanced.manager.ui.core.ThemedMaterialRadioButton
import com.vanced.manager.utils.checkedButtonTag
import com.vanced.manager.utils.getLanguageFormat
import com.vanced.manager.utils.managerLang
class ManagerLanguageDialog : BindingBottomSheetDialogFragment<DialogManagerLanguageBinding>() {
companion object {
fun newInstance(): ManagerLanguageDialog = ManagerLanguageDialog().apply {
arguments = Bundle()
}
}
private val prefs by lazy { getDefaultSharedPreferences(requireActivity()) }
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = DialogManagerLanguageBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
private fun bindData() {
with(binding) {
addRadioButtons().forEach { mrb ->
languageRadiogroup.addView(mrb, MATCH_PARENT, WRAP_CONTENT)
}
val language = prefs.managerLang
root.findViewWithTag<ThemedMaterialRadioButton>(language)?.isChecked = true
languageSave.setOnClickListener {
val newPref = binding.languageRadiogroup.checkedButtonTag
if (language != newPref) {
prefs.managerLang = newPref
dismiss()
requireActivity().recreate()
} else {
dismiss()
}
}
}
}
private fun addRadioButtons() =
(arrayOf("System Default") + MANAGER_LANGUAGES).map { lang ->
ThemedMaterialRadioButton(requireActivity()).apply {
text = getLanguageFormat(requireActivity(), lang)
textSize = 18f
tag = lang
}
}
}

View File

@ -0,0 +1,50 @@
package com.vanced.manager.ui.dialogs
import android.os.Bundle
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.google.android.material.radiobutton.MaterialRadioButton
import com.vanced.manager.core.ui.base.BindingBottomSheetDialogFragment
import com.vanced.manager.databinding.DialogManagerThemeBinding
import com.vanced.manager.utils.checkedButtonTag
import com.vanced.manager.utils.managerTheme
class ManagerThemeDialog : BindingBottomSheetDialogFragment<DialogManagerThemeBinding>() {
companion object {
fun newInstance(): ManagerThemeDialog = ManagerThemeDialog().apply {
arguments = Bundle()
}
}
private val prefs by lazy { getDefaultSharedPreferences(requireActivity()) }
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = DialogManagerThemeBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
private fun bindData() {
with(binding) {
val theme = prefs.managerTheme
root.findViewWithTag<MaterialRadioButton>(theme).isChecked = true
themeSave.setOnClickListener {
val newPref = themeRadiogroup.checkedButtonTag
if (theme != newPref) {
prefs.managerTheme = newPref
dismiss()
requireActivity().recreate()
} else {
dismiss()
}
}
}
}
}

View File

@ -0,0 +1,117 @@
package com.vanced.manager.ui.dialogs
import android.annotation.SuppressLint
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.core.view.isVisible
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import com.vanced.manager.BuildConfig.VERSION_CODE
import com.vanced.manager.R
import com.vanced.manager.core.ui.base.BindingDialogFragment
import com.vanced.manager.databinding.DialogManagerUpdateBinding
import com.vanced.manager.utils.DownloadHelper.downloadManager
import com.vanced.manager.utils.applyAccent
import com.vanced.manager.utils.currentDownload
import com.vanced.manager.utils.downloadProgress
import com.vanced.manager.utils.manager
class ManagerUpdateDialog : BindingDialogFragment<DialogManagerUpdateBinding>() {
companion object {
const val CLOSE_DIALOG = "CLOSE_DIALOG"
private const val TAG_FORCE_UPDATE = "TAG_FORCE_UPDATE"
fun newInstance(
forceUpdate: Boolean
): ManagerUpdateDialog = ManagerUpdateDialog().apply {
arguments = Bundle().apply {
putBoolean(TAG_FORCE_UPDATE, forceUpdate)
}
}
}
private val localBroadcastManager by lazy { LocalBroadcastManager.getInstance(requireActivity()) }
private val broadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
when (intent.action) {
CLOSE_DIALOG -> dismiss()
}
}
}
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = DialogManagerUpdateBinding.inflate(inflater, container, false)
override fun otherSetups() {
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
bindData()
if (arguments?.getBoolean(TAG_FORCE_UPDATE) == true) {
binding.managerUpdatePatient.text =
requireActivity().getString(R.string.please_be_patient)
downloadManager(requireActivity())
} else {
checkUpdates()
}
}
private fun bindData() {
with(binding) {
isCancelable = false
managerUpdateProgressbar.applyAccent()
managerUpdateCancel.setOnClickListener {
downloadProgress.value = 0
currentDownload?.cancel()
dismiss()
}
bindDownloadProgress()
}
}
@SuppressLint("SetTextI18n")
private fun DialogManagerUpdateBinding.bindDownloadProgress() {
downloadProgress.observe(viewLifecycleOwner) {
managerUpdateProgressbar.progress = it
managerUpdateProgressbarContainer.isVisible = it != 0
managerUpdateProgress.text = "$it%"
}
}
override fun onResume() {
super.onResume()
registerReceiver()
}
override fun onPause() {
super.onPause()
localBroadcastManager.unregisterReceiver(broadcastReceiver)
}
private fun checkUpdates() {
if (manager.value?.int("versionCode") ?: 0 > VERSION_CODE) {
binding.managerUpdatePatient.text =
requireActivity().getString(R.string.please_be_patient)
downloadManager(requireActivity())
} else {
binding.managerUpdatePatient.text =
requireActivity().getString(R.string.update_not_found)
}
}
private fun registerReceiver() {
val intentFilter = IntentFilter()
intentFilter.addAction(CLOSE_DIALOG)
localBroadcastManager.registerReceiver(broadcastReceiver, intentFilter)
}
}

View File

@ -0,0 +1,56 @@
package com.vanced.manager.ui.dialogs
import android.os.Bundle
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.google.android.material.radiobutton.MaterialRadioButton
import com.topjohnwu.superuser.Shell
import com.vanced.manager.core.ui.base.BindingBottomSheetDialogFragment
import com.vanced.manager.databinding.DialogManagerVariantBinding
import com.vanced.manager.utils.checkedButtonTag
import com.vanced.manager.utils.managerVariant
class ManagerVariantDialog : BindingBottomSheetDialogFragment<DialogManagerVariantBinding>() {
companion object {
fun newInstance(): ManagerVariantDialog = ManagerVariantDialog().apply {
arguments = Bundle()
}
}
private val prefs by lazy { getDefaultSharedPreferences(requireActivity()) }
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = DialogManagerVariantBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
private fun bindData() {
with(binding) {
val variant = prefs.managerVariant
root.findViewWithTag<MaterialRadioButton>(variant).isChecked = true
variantSave.setOnClickListener {
val newPref = variantRadiogroup.checkedButtonTag
if (variant != newPref) {
prefs.managerVariant =
if (newPref == "root" && Shell.rootAccess()) {
"root"
} else {
"nonroot"
}
dismiss()
requireActivity().recreate()
} else {
dismiss()
}
}
}
}
}

View File

@ -0,0 +1,61 @@
package com.vanced.manager.ui.dialogs
import android.os.Bundle
import android.view.LayoutInflater
import android.view.ViewGroup
import com.vanced.manager.R
import com.vanced.manager.core.ui.base.BindingBottomSheetDialogFragment
import com.vanced.manager.core.ui.ext.showDialog
import com.vanced.manager.databinding.DialogMusicPreferencesBinding
import com.vanced.manager.utils.*
class MusicPreferencesDialog : BindingBottomSheetDialogFragment<DialogMusicPreferencesBinding>() {
companion object {
fun newInstance(): MusicPreferencesDialog = MusicPreferencesDialog().apply {
arguments = Bundle()
}
}
private val prefs by lazy { requireActivity().defPrefs }
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = DialogMusicPreferencesBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
private fun bindData() {
with(binding) {
val musicVersionsConv = musicVersions.value?.value?.convertToAppVersions()
musicInstallTitle.text =
getString(R.string.app_installation_preferences, getString(R.string.music))
musicVersion.text = getString(
R.string.chosen_version,
prefs.musicVersion?.formatVersion(requireActivity())
)
openVersionSelectorLayout.setOnClickListener {
dismiss()
showDialog(
AppVersionSelectorDialog.newInstance(
versions = musicVersionsConv,
app = "music"
)
)
}
musicInstall.setOnClickListener {
dismiss()
showDialog(
AppDownloadDialog.newInstance(
app = getString(R.string.music)
)
)
}
}
}
}

View File

@ -0,0 +1,63 @@
package com.vanced.manager.ui.dialogs
import android.os.Bundle
import android.view.LayoutInflater
import android.view.ViewGroup
import android.widget.Toast
import androidx.core.content.edit
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import androidx.recyclerview.widget.LinearLayoutManager
import com.vanced.manager.R
import com.vanced.manager.adapter.SelectAppsAdapter
import com.vanced.manager.core.ui.base.BindingBottomSheetDialogFragment
import com.vanced.manager.databinding.DialogSelectAppsBinding
class SelectAppsDialog : BindingBottomSheetDialogFragment<DialogSelectAppsBinding>() {
companion object {
fun newInstance(): SelectAppsDialog = SelectAppsDialog().apply {
arguments = Bundle()
}
}
private val prefs by lazy { getDefaultSharedPreferences(requireActivity()) }
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = DialogSelectAppsBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
private fun bindData() {
with(binding) {
val ad = SelectAppsAdapter(requireActivity())
selectAppsRecycler.apply {
layoutManager = LinearLayoutManager(requireActivity())
adapter = ad
setHasFixedSize(true)
}
selectAppsSave.setOnClickListener {
if (ad.apps.all { app -> !app.isChecked }) {
Toast.makeText(
requireActivity(),
R.string.select_at_least_one_app,
Toast.LENGTH_SHORT
).show()
return@setOnClickListener
}
prefs.edit {
ad.apps.forEach { app ->
putBoolean("enable_${app.tag}", app.isChecked)
putBoolean("${app.tag}_notifs", app.isChecked)
}
}
dismiss()
}
}
}
}

View File

@ -0,0 +1,75 @@
package com.vanced.manager.ui.dialogs
import android.os.Bundle
import android.view.LayoutInflater
import android.view.ViewGroup
import android.widget.Toast
import androidx.core.content.edit
import com.vanced.manager.R
import com.vanced.manager.core.ui.base.BindingDialogFragment
import com.vanced.manager.databinding.DialogServicedTimerBinding
import com.vanced.manager.utils.PackageHelper
import com.vanced.manager.utils.PackageHelper.getPackageDir
import com.vanced.manager.utils.PackageHelper.getPkgNameRoot
import com.vanced.manager.utils.PackageHelper.scriptExists
import com.vanced.manager.utils.defPrefs
import com.vanced.manager.utils.writeServiceDScript
import java.io.IOException
import java.util.*
class ServiceDTimerDialog : BindingDialogFragment<DialogServicedTimerBinding>() {
private val prefs by lazy { requireActivity().defPrefs }
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): DialogServicedTimerBinding = DialogServicedTimerBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
private fun bindData() {
with(binding) {
servicedSlider.value = prefs.getInt("serviced_sleep_timer", 1).toFloat()
servicedCancel.setOnClickListener {
dismiss()
}
servicedSave.setOnClickListener {
try {
arrayOf("vanced", "music").forEach { app ->
if (scriptExists(app)) {
val apkFPath =
"${PackageHelper.apkInstallPath}/${app.capitalize(Locale.ROOT)}/base.apk"
getPackageDir(
requireActivity(),
getPkgNameRoot(app)
)?.let { it1 ->
requireActivity().writeServiceDScript(
apkFPath,
it1,
app
)
}
}
}
} catch (e: IOException) {
Toast.makeText(
requireActivity(),
R.string.script_save_failed,
Toast.LENGTH_SHORT
).show()
return@setOnClickListener
}
prefs.edit {
putInt("serviced_sleep_timer", servicedSlider.value.toInt())
}
dismiss()
}
}
}
}

View File

@ -0,0 +1,68 @@
package com.vanced.manager.ui.dialogs
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.LayoutInflater
import android.view.ViewGroup
import android.widget.TextView
import androidx.lifecycle.lifecycleScope
import com.vanced.manager.core.ui.base.BindingDialogFragment
import com.vanced.manager.databinding.DialogCustomUrlBinding
import com.vanced.manager.utils.*
import kotlinx.coroutines.launch
class URLChangeDialog : BindingDialogFragment<DialogCustomUrlBinding>() {
private val prefs by lazy { requireActivity().defPrefs }
companion object {
fun newInstance(): URLChangeDialog = URLChangeDialog().apply {
arguments = Bundle()
}
}
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = DialogCustomUrlBinding.inflate(inflater, container, false)
override fun otherSetups() {
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
bindData()
}
private fun bindData() {
with(binding) {
urlInput.setText(
if (arguments != null) {
arguments?.getString("url")
} else {
prefs.installUrl
},
TextView.BufferType.EDITABLE
)
urlSave.setOnClickListener {
val finalUrl =
if (urlInput.text?.startsWith("https://") == true || urlInput.text?.startsWith("http://") == true) {
urlInput.text?.removeSuffix("/").toString()
} else {
"https://${urlInput.text}".removeSuffix("/")
}
saveUrl(finalUrl)
}
urlReset.setOnClickListener { saveUrl(baseUrl) }
}
}
private fun saveUrl(url: String) {
lifecycleScope.launch {
prefs.installUrl = url
baseInstallUrl = url
loadJson(requireActivity())
dismiss()
}
}
}

View File

@ -0,0 +1,87 @@
package com.vanced.manager.ui.dialogs
import android.content.DialogInterface
import android.os.Bundle
import android.view.LayoutInflater
import android.view.ViewGroup
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
import android.widget.LinearLayout
import android.widget.Toast
import com.google.android.material.checkbox.MaterialCheckBox
import com.vanced.manager.R
import com.vanced.manager.core.ui.base.BindingBottomSheetDialogFragment
import com.vanced.manager.core.ui.ext.showDialog
import com.vanced.manager.databinding.DialogVancedLanguageSelectionBinding
import com.vanced.manager.ui.core.ThemedMaterialCheckbox
import com.vanced.manager.utils.installPrefs
import com.vanced.manager.utils.lang
import com.vanced.manager.utils.vanced
import java.util.*
class VancedLanguageSelectionDialog :
BindingBottomSheetDialogFragment<DialogVancedLanguageSelectionBinding>() {
companion object {
fun newInstance(): VancedLanguageSelectionDialog = VancedLanguageSelectionDialog().apply {
arguments = Bundle()
}
}
private val langs = vanced.value?.array<String>("langs")?.value
private val prefs by lazy { requireActivity().installPrefs }
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = DialogVancedLanguageSelectionBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
private fun bindData() {
with(binding) {
langButtonLl.loadBoxes()
vancedInstallFinish.setOnClickListener {
val chosenLangs = mutableListOf<String>()
langs?.forEach { lang ->
if (root.findViewWithTag<MaterialCheckBox>(lang).isChecked) {
chosenLangs.add(lang)
}
}
if (chosenLangs.isEmpty()) {
Toast.makeText(
requireActivity(),
R.string.select_at_least_one_lang,
Toast.LENGTH_SHORT
).show()
return@setOnClickListener
}
prefs.lang = chosenLangs.joinToString()
dismiss()
}
}
}
private fun LinearLayout.loadBoxes() {
val langPrefs = prefs.lang
langs?.forEach { lang ->
val loc = Locale(lang)
val box = ThemedMaterialCheckbox(requireActivity()).apply {
tag = lang
isChecked = langPrefs?.contains(lang) ?: false
text = loc.getDisplayLanguage(loc).capitalize(Locale.ROOT)
textSize = 18F
}
addView(box, MATCH_PARENT, WRAP_CONTENT)
}
}
override fun onDismiss(dialog: DialogInterface) {
super.onDismiss(dialog)
showDialog(VancedPreferencesDialog())
}
}

View File

@ -0,0 +1,84 @@
package com.vanced.manager.ui.dialogs
import android.os.Bundle
import android.view.LayoutInflater
import android.view.ViewGroup
import com.vanced.manager.R
import com.vanced.manager.core.ui.base.BindingBottomSheetDialogFragment
import com.vanced.manager.core.ui.ext.showDialog
import com.vanced.manager.databinding.DialogVancedPreferencesBinding
import com.vanced.manager.utils.*
import java.util.*
class VancedPreferencesDialog : BindingBottomSheetDialogFragment<DialogVancedPreferencesBinding>() {
companion object {
fun newInstance(): VancedPreferencesDialog = VancedPreferencesDialog().apply {
arguments = Bundle()
}
}
private val defPrefs by lazy { requireActivity().defPrefs }
private val installPrefs by lazy { requireActivity().installPrefs }
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = DialogVancedPreferencesBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
private fun bindData() {
with(binding) {
val showLang = mutableListOf<String>()
installPrefs.lang?.split(", ")?.forEach { lang ->
val loc = Locale(lang)
showLang.add(loc.getDisplayLanguage(loc).capitalize(Locale.ROOT))
}
val vancedVersionsConv = vancedVersions.value?.value?.convertToAppVersions()
vancedInstallTitle.text =
getString(R.string.app_installation_preferences, getString(R.string.vanced))
vancedTheme.text = getString(
R.string.chosen_theme,
installPrefs.theme?.convertToAppTheme(requireActivity())
)
vancedVersion.text = getString(
R.string.chosen_version,
defPrefs.vancedVersion?.formatVersion(requireActivity())
)
vancedLang.text = getString(R.string.chosen_lang, showLang)
openThemeSelectorLayout.setOnClickListener {
dismiss()
showDialog(VancedThemeSelectorDialog())
}
openVersionSelectorLayout.setOnClickListener {
dismiss()
showDialog(
AppVersionSelectorDialog.newInstance(
versions = vancedVersionsConv,
app = "vanced"
)
)
}
openLanguageSelectorLayout.setOnClickListener {
dismiss()
showDialog(VancedLanguageSelectionDialog())
}
vancedInstall.setOnClickListener {
if (showLang.isEmpty()) {
installPrefs.lang = "en"
}
dismiss()
showDialog(
AppDownloadDialog.newInstance(
app = getString(R.string.vanced)
)
)
}
}
}
}

View File

@ -0,0 +1,81 @@
package com.vanced.manager.ui.dialogs
import android.content.Context
import android.content.DialogInterface
import android.os.Bundle
import android.view.LayoutInflater
import android.view.ViewGroup
import com.vanced.manager.R
import com.vanced.manager.core.ui.base.BindingBottomSheetDialogFragment
import com.vanced.manager.core.ui.ext.showDialog
import com.vanced.manager.databinding.DialogBottomRadioButtonBinding
import com.vanced.manager.ui.core.ThemedMaterialRadioButton
import com.vanced.manager.utils.checkedButtonTag
import com.vanced.manager.utils.convertToAppTheme
import com.vanced.manager.utils.theme
import com.vanced.manager.utils.vanced
class VancedThemeSelectorDialog :
BindingBottomSheetDialogFragment<DialogBottomRadioButtonBinding>() {
companion object {
fun newInstance(): VancedThemeSelectorDialog = VancedThemeSelectorDialog().apply {
arguments = Bundle()
}
}
private val prefs by lazy {
requireActivity().getSharedPreferences(
"installPrefs",
Context.MODE_PRIVATE
)
}
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = DialogBottomRadioButtonBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
private fun bindData() {
with(binding) {
loadButtons()?.forEach { mrb ->
dialogRadiogroup.addView(
mrb,
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
}
dialogTitle.text = requireActivity().getString(R.string.theme)
val tag = root.findViewWithTag<ThemedMaterialRadioButton>(prefs.theme)
if (tag != null) {
tag.isChecked = true
}
dialogSave.setOnClickListener {
val checkedTag = binding.dialogRadiogroup.checkedButtonTag
if (checkedTag != null) {
prefs.theme = checkedTag
}
dismiss()
}
}
}
private fun loadButtons() = vanced.value?.array<String>("themes")?.value?.map { theme ->
ThemedMaterialRadioButton(requireActivity()).apply {
text = theme.convertToAppTheme(requireActivity())
tag = theme
textSize = 18f
}
}
override fun onDismiss(dialog: DialogInterface) {
super.onDismiss(dialog)
showDialog(VancedPreferencesDialog())
}
}

View File

@ -1,34 +1,84 @@
package com.vanced.manager.ui.fragments
import android.annotation.SuppressLint
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.MotionEvent
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import android.widget.Toast
import androidx.core.content.edit
import androidx.fragment.app.viewModels
import androidx.preference.PreferenceManager
import com.vanced.manager.R
import com.vanced.manager.core.fragments.About
import com.vanced.manager.core.ui.base.BindingFragment
import com.vanced.manager.core.ui.ext.showDialog
import com.vanced.manager.databinding.FragmentAboutBinding
import com.vanced.manager.ui.dialogs.AppInfoDialog
import com.vanced.manager.ui.viewmodels.AboutViewModel
import com.vanced.manager.utils.manager
class AboutFragment : About() {
class AboutFragment : BindingFragment<FragmentAboutBinding>() {
private lateinit var binding: FragmentAboutBinding
private val viewModel: AboutViewModel by viewModels()
private var count = 0
private var startMillSec: Long = 0
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
activity?.title = getString(R.string.title_about)
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_about, container, false)
return binding.root
) = FragmentAboutBinding.inflate(inflater, container, false)
override fun otherSetups() {
dataBind()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
@SuppressLint("ClickableViewAccessibility")
private fun dataBind() {
requireActivity().title = getString(R.string.title_about)
binding.aboutVersionCard.setOnClickListener {
showDialog(
AppInfoDialog.newInstance(
appName = getString(R.string.app_name),
appIcon = R.mipmap.ic_launcher,
changelog = manager.value?.string("changelog")
)
)
}
binding.root.setOnTouchListener { _, event: MotionEvent ->
val eventAction = event.action
if (eventAction == MotionEvent.ACTION_UP) {
val time = System.currentTimeMillis()
if (startMillSec == 0L || time - startMillSec > 3000) {
startMillSec = time
count = 1
} else {
count++
}
val viewModel: AboutViewModel by viewModels()
binding.viewModel = viewModel
if (count == 5) {
val prefs = PreferenceManager.getDefaultSharedPreferences(requireContext())
val devSettings = prefs.getBoolean("devSettings", false)
if (!devSettings) {
Toast.makeText(
requireContext(),
"Dev options unlocked!",
Toast.LENGTH_SHORT
).show()
prefs.edit { putBoolean("devSettings", true) }
} else
Toast.makeText(
requireContext(),
"Dev options already unlocked",
Toast.LENGTH_SHORT
).show()
}
return@setOnTouchListener true
}
false
}
binding.aboutGithubButton.setOnClickListener { viewModel.openUrl("https://github.com/YTVanced/VancedInstaller") }
binding.aboutLicenseButton.setOnClickListener { viewModel.openUrl("https://raw.githubusercontent.com/YTVanced/VancedInstaller/dev/LICENSE") }
}
}

View File

@ -1,56 +0,0 @@
package com.vanced.manager.ui.fragments
import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.TextView
import androidx.fragment.app.DialogFragment
import com.vanced.manager.R
class ChosenPreferenceDialogFragment : DialogFragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
if (dialog != null && dialog?.window != null) {
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
}
return inflater.inflate(R.layout.fragment_chosen_preferences, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val closebtn = view.findViewById<Button>(R.id.chosen_prefs_close)
val resetbtn = view.findViewById<Button>(R.id.chosen_prefs_reset)
val themetxt = view.findViewById<TextView>(R.id.chosen_theme)
val langtxt = view.findViewById<TextView>(R.id.chosen_lang)
val prefs = activity?.getSharedPreferences("installPrefs", Context.MODE_PRIVATE)
themetxt.text = activity?.getString(R.string.chosen_theme, prefs?.getString("theme", "dark"))
langtxt.text = activity?.getString(R.string.chosen_lang, prefs?.getString("lang", "en"))
closebtn.setOnClickListener { dismiss() }
resetbtn.setOnClickListener {
prefs?.edit()?.putString("theme", "dark")?.apply()
prefs?.edit()?.putString("lang", "en")?.apply()
prefs?.edit()?.putBoolean("valuesModified", false)?.apply()
dismiss()
}
}
}

View File

@ -3,47 +3,80 @@ package com.vanced.manager.ui.fragments
import android.content.Intent
import android.os.Build
import android.os.Bundle
import androidx.appcompat.app.AlertDialog
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.PreferenceManager
import com.vanced.manager.R
import com.vanced.manager.ui.MainActivity
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.core.content.edit
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.vanced.manager.core.ui.base.BindingFragment
import com.vanced.manager.databinding.FragmentDevSettingsBinding
import com.vanced.manager.ui.WelcomeActivity
import com.vanced.manager.ui.dialogs.ManagerUpdateDialog
import com.vanced.manager.ui.dialogs.URLChangeDialog
class DevSettingsFragment: PreferenceFragmentCompat() {
class DevSettingsFragment : BindingFragment<FragmentDevSettingsBinding>() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.dev_settings, rootKey)
private val prefs by lazy { getDefaultSharedPreferences(requireActivity()) }
val ftSwitch: Preference? = findPreference("firststart_switch")
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = FragmentDevSettingsBinding.inflate(inflater, container, false)
val prefs = PreferenceManager.getDefaultSharedPreferences(requireContext())
ftSwitch?.setOnPreferenceClickListener {
AlertDialog.Builder(requireContext())
.setTitle("FirstStart activated")
.setMessage("boolean will be activated on next app start")
.setPositiveButton("Restart") { _, _ ->
run {
startActivity(Intent(requireContext(), MainActivity::class.java))
activity?.finish()
}
}
.create()
.show()
prefs.edit().putBoolean("firstStart", true).apply()
true
override fun otherSetups() {
setHasOptionsMenu(true)
bindData()
}
private fun bindData() {
with(binding) {
bindWelcomeLauncher()
bindForceUpdate()
bindChannelURL()
bindKernelArch()
bindAndroidVersion()
}
val archPref: Preference? = findPreference("device_arch")
}
private fun FragmentDevSettingsBinding.bindWelcomeLauncher() {
welcomeScreenLauncher.setOnClickListener {
prefs.edit {
putBoolean("firstLaunch", true)
putBoolean("show_changelog_tooltip", true)
}
startActivity(Intent(requireContext(), WelcomeActivity::class.java))
requireActivity().finish()
}
}
private fun FragmentDevSettingsBinding.bindForceUpdate() {
forceManagerUpdate.setOnClickListener {
ManagerUpdateDialog.newInstance(true).show(
requireActivity().supportFragmentManager,
"update_manager"
)
}
}
private fun FragmentDevSettingsBinding.bindChannelURL() {
channelUrl.setOnClickListener {
URLChangeDialog().show(childFragmentManager.beginTransaction(), null)
}
}
private fun FragmentDevSettingsBinding.bindKernelArch() {
val supportedAbis: Array<String> = Build.SUPPORTED_ABIS
if (supportedAbis.contains("arm64-v8a") || supportedAbis.contains("x86_64")) {
archPref?.summary = "64bit"
} else {
archPref?.summary = "32bit"
}
kernelArch.setSummary(
if (supportedAbis.contains("arm64-v8a") || supportedAbis.contains("x86_64")) {
"64bit"
} else {
"32bit"
}
)
}
private fun FragmentDevSettingsBinding.bindAndroidVersion() {
androidVersion.setSummary("${Build.VERSION.RELEASE} (API ${Build.VERSION.SDK_INT})")
}
}

View File

@ -0,0 +1,55 @@
package com.vanced.manager.ui.fragments
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.ViewGroup
import android.widget.Toast
import androidx.core.content.edit
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.topjohnwu.superuser.Shell
import com.vanced.manager.R
import com.vanced.manager.core.ui.base.BindingFragment
import com.vanced.manager.databinding.FragmentGrantRootBinding
import com.vanced.manager.ui.MainActivity
class GrantRootFragment : BindingFragment<FragmentGrantRootBinding>() {
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = FragmentGrantRootBinding.inflate(inflater, container, false)
override fun otherSetups() {
bindData()
}
private fun bindData() {
with(binding) {
grantRootFinishFab.setOnClickListener { navigateToFirstLaunch() }
grantRootFab.setOnClickListener { grantRoot() }
}
}
private fun navigateToFirstLaunch() {
val intent = Intent(requireActivity(), MainActivity::class.java)
intent.putExtra("firstLaunch", true)
startActivity(intent)
requireActivity().finish()
}
private fun grantRoot() {
if (Shell.rootAccess()) {
getDefaultSharedPreferences(requireActivity()).edit {
putString(
"vanced_variant",
"root"
)
}
navigateToFirstLaunch()
} else {
Toast.makeText(requireActivity(), R.string.root_not_granted, Toast.LENGTH_SHORT).show()
}
}
}

View File

@ -4,159 +4,129 @@ import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.content.res.ColorStateList
import android.graphics.Color
import android.os.Bundle
import android.view.*
import android.view.animation.AccelerateDecelerateInterpolator
import android.widget.ImageButton
import android.widget.ProgressBar
import androidx.databinding.DataBindingUtil
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuInflater
import android.view.ViewGroup
import androidx.fragment.app.viewModels
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import androidx.viewpager2.widget.ViewPager2
import com.google.android.material.button.MaterialButton
import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator
import androidx.preference.PreferenceManager
import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.flexbox.FlexboxLayoutManager
import com.google.android.flexbox.JustifyContent
import com.vanced.manager.BuildConfig.VERSION_CODE
import com.vanced.manager.R
import com.vanced.manager.adapter.SectionPageAdapter
import com.vanced.manager.adapter.SectionPageRootAdapter
import com.vanced.manager.core.fragments.Home
import com.vanced.manager.adapter.ExpandableAppListAdapter
import com.vanced.manager.adapter.LinkAdapter
import com.vanced.manager.adapter.SponsorAdapter
import com.vanced.manager.core.ui.base.BindingFragment
import com.vanced.manager.core.ui.ext.showDialog
import com.vanced.manager.databinding.FragmentHomeBinding
import com.vanced.manager.ui.dialogs.AppInfoDialog
import com.vanced.manager.ui.dialogs.DialogContainer.installAlertBuilder
import com.vanced.manager.ui.viewmodels.HomeViewModel
import com.vanced.manager.utils.isFetching
import com.vanced.manager.utils.manager
class HomeFragment : Home() {
class HomeFragment : BindingFragment<FragmentHomeBinding>() {
private lateinit var binding: FragmentHomeBinding
private var isExpanded: Boolean = false
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
activity?.title = getString(R.string.title_home)
setHasOptionsMenu(true)
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_home, container, false)
return binding.root
companion object {
const val INSTALL_FAILED = "INSTALL_FAILED"
const val REFRESH_HOME = "REFRESH_HOME"
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
private val viewModel: HomeViewModel by viewModels()
val viewModel: HomeViewModel by viewModels()
binding.viewModel = viewModel
private val localBroadcastManager by lazy { LocalBroadcastManager.getInstance(requireActivity()) }
val variantPref = getDefaultSharedPreferences(activity).getString("vanced_variant", "nonroot")
registerReceivers()
override fun binding(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = FragmentHomeBinding.inflate(inflater, container, false)
if (variantPref == "root")
attachRootChangelog()
else {
attachNonrootChangelog()
if (!viewModel.microgInstalled) {
disableVancedButton()
override fun otherSetups() {
bindData()
}
private fun bindData() {
requireActivity().title = getString(R.string.title_home)
setHasOptionsMenu(true)
with(binding) {
homeRefresh.setOnRefreshListener { viewModel.fetchData() }
isFetching.observe(viewLifecycleOwner) { homeRefresh.isRefreshing = it }
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
if (prefs.contains("LastVersionCode")) {
if (prefs.getInt("LastVersionCode", -1) < VERSION_CODE) {
showDialog(
AppInfoDialog.newInstance(
appName = getString(R.string.app_name),
appIcon = R.mipmap.ic_launcher,
changelog = manager.value?.string("changelog")
)
)
prefs.edit().putInt("LastVersionCode", VERSION_CODE).apply()
}
} else prefs.edit().putInt("LastVersionCode", VERSION_CODE).apply()
recyclerAppList.apply {
layoutManager = LinearLayoutManager(requireActivity())
adapter = ExpandableAppListAdapter(requireActivity(), viewModel /*, tooltip*/)
setHasFixedSize(true)
}
recyclerSponsors.apply {
val lm = FlexboxLayoutManager(requireActivity())
lm.justifyContent = JustifyContent.SPACE_EVENLY
layoutManager = lm
setHasFixedSize(true)
adapter = SponsorAdapter(requireActivity(), viewModel)
}
recyclerLinks.apply {
val lm = FlexboxLayoutManager(requireActivity())
lm.justifyContent = JustifyContent.SPACE_EVENLY
layoutManager = lm
setHasFixedSize(true)
adapter = LinkAdapter(requireActivity(), viewModel)
}
}
view.findViewById<ImageButton>(R.id.changelog_button).setOnClickListener {
cardExpandCollapse()
}
}
private fun cardExpandCollapse() {
val viewPagerContainer = view?.findViewById<ViewPager2>(R.id.viewpager)
val tabLayoutContainer = view?.findViewById<TabLayout>(R.id.tablayout)
val arrow = view?.findViewById<ImageButton>(R.id.changelog_button)
if (isExpanded) {
viewPagerContainer?.visibility = View.GONE
tabLayoutContainer?.visibility = View.GONE
isExpanded = false
arrow?.animate()?.rotation(0F)?.interpolator = AccelerateDecelerateInterpolator()
} else {
viewPagerContainer?.visibility = View.VISIBLE
tabLayoutContainer?.visibility = View.VISIBLE
isExpanded = true
arrow?.animate()?.rotation(180F)?.interpolator = AccelerateDecelerateInterpolator()
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.toolbar_menu, menu)
}
override fun onPause() {
super.onPause()
activity?.let { LocalBroadcastManager.getInstance(it).unregisterReceiver(broadcastReceiver) }
localBroadcastManager.unregisterReceiver(broadcastReceiver)
}
override fun onResume() {
super.onResume()
registerReceivers()
}
private val broadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
when (intent.action) {
MICROG_DOWNLOADED -> {
view?.findViewById<ProgressBar>(R.id.microg_installing)?.visibility = View.VISIBLE
//activity?.let { installApp(it, it.filesDir.path + "/microg.apk", "com.mgoogle.android.gms") }
}
VANCED_DOWNLOADED -> {
view?.findViewById<ProgressBar>(R.id.vanced_installing)?.visibility = View.VISIBLE
}
INSTALL_FAILED -> installAlertBuilder(
intent.getStringExtra("errorMsg").toString(),
intent.getStringExtra("fullErrorMsg"),
requireActivity()
)
REFRESH_HOME -> viewModel.fetchData()
}
}
}
private fun registerReceivers() {
val intentFilter = IntentFilter()
intentFilter.addAction(VANCED_DOWNLOADED)
intentFilter.addAction(MICROG_DOWNLOADED)
activity?.let {
LocalBroadcastManager.getInstance(it).registerReceiver(broadcastReceiver, intentFilter)
}
intentFilter.addAction(INSTALL_FAILED)
intentFilter.addAction(REFRESH_HOME)
localBroadcastManager.registerReceiver(broadcastReceiver, intentFilter)
}
private fun attachNonrootChangelog() {
val sectionPageAdapter = SectionPageAdapter(this)
val tabLayout = view?.findViewById(R.id.tablayout) as TabLayout
val viewPager = view?.findViewById(R.id.viewpager) as ViewPager2
viewPager.adapter = sectionPageAdapter
TabLayoutMediator(tabLayout, viewPager) { tab, position ->
when (position) {
0 -> tab.text = "Vanced"
1 -> tab.text = "MicroG"
2 -> tab.text = "Manager"
}
}.attach()
}
private fun attachRootChangelog() {
val sectionPageRootAdapter = SectionPageRootAdapter(this)
val tabLayout = view?.findViewById(R.id.tablayout) as TabLayout
val viewPager = view?.findViewById(R.id.viewpager) as ViewPager2
viewPager.adapter = sectionPageRootAdapter
TabLayoutMediator(tabLayout, viewPager) { tab, position ->
when (position) {
0 -> tab.text = "Vanced"
1 -> tab.text = "Manager"
}
}.attach()
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.toolbar_menu, menu)
super .onCreateOptionsMenu(menu, inflater)
}
private fun disableVancedButton() {
val vancedinstallbtn = view?.findViewById<MaterialButton>(R.id.vanced_installbtn)
vancedinstallbtn?.isEnabled = false
vancedinstallbtn?.backgroundTintList = ColorStateList.valueOf(Color.DKGRAY)
vancedinstallbtn?.setTextColor(ColorStateList.valueOf(Color.GRAY))
vancedinstallbtn?.icon = null
}
companion object {
const val VANCED_DOWNLOADED = "Vanced downloaded"
const val MICROG_DOWNLOADED = "MicroG downloaded"
}
}

Some files were not shown because too many files have changed in this diff Show More