0
0
Fork 0
mirror of https://github.com/YTVanced/VancedManager synced 2024-11-25 12:45:12 +00:00

Merge pull request #4 from YTVanced/dev

sync fork with base
This commit is contained in:
Tornike Khintibidze 2020-04-30 20:05:12 +04:00 committed by GitHub
commit 3c88e8277d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
82 changed files with 1314 additions and 719 deletions

28
.github/workflows/android.yml vendored Normal file
View file

@ -0,0 +1,28 @@
name: Build & Publish Debug APK
on:
push:
branches:
- dev
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Make Gradle executable
run: chmod +x ./gradlew
- name: Build with Gradle
run: ./gradlew build
- name: Build Debug APK
run: ./gradlew assembleDebug
- name: Releasing using Hub
uses: ShaunLWM/action-release-debugapk@master
env:
GITHUB_TOKEN: ${{ secrets.TOKEN }}
APP_FOLDER: app
RELEASE_TITLE: New Build

1
.gitignore vendored
View file

@ -2,3 +2,4 @@
.idea/
build/
out/
local.properties

View file

@ -7,9 +7,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 **Vanced Manager ci Alpha Ui Preview Test Build 0.3.1™** which only has a UI at the time lol
Ladies and gentlemen, I'm very proud to introduce the new **Vanced Manager ci Alpha Ui Preview Test Build 0.4.0™** which only has a UI at the time lol
Vanced Manager is an universal utility for installing/updating Vanced and MicroG. It will push notifications once the update is ready and for root users, it can also automatically download and install them (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 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).
Main Menu screenshot taken from tablet
![screenshot](https://i.imgur.com/okeGnlE.png)

View file

@ -4,8 +4,8 @@
<facet type="android-gradle" name="Android-Gradle">
<configuration>
<option name="GRADLE_PROJECT_PATH" value=":api" />
<option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" value="3.6.1" />
<option name="LAST_KNOWN_AGP_VERSION" value="3.6.1" />
<option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" value="3.6.3" />
<option name="LAST_KNOWN_AGP_VERSION" value="3.6.3" />
</configuration>
</facet>
<facet type="android" name="Android">
@ -32,7 +32,7 @@
</compilerSettings>
<compilerArguments>
<option name="destination" value="$MODULE_DIR$/build/tmp/kotlin-classes/debug" />
<option name="classpath" value="$USER_HOME$/.gradle/caches/transforms-2/files-2.1/906801bd8eedd543c2fcbd8760c214dc/jetified-kotlin-android-extensions-runtime-1.3.61.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/a6ee74fb178b3ea5a892efce09fbf14f/jetified-kotlin-stdlib-jdk7-1.3.61.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/2277d7565c8c733363501349d51125ad/jetified-core-ktx-1.0.2-api.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/8c33874182974c323a04f40a626452c3/jetified-kotlin-stdlib-1.3.61.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/710a6a007d3afc426d16b6e039176053/jetified-kotlin-stdlib-common-1.3.61.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/37b2db17f3474094fa0bbcb93412368e/jetified-annotations-13.0.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/273ec28f85a60e20fe49194ab8f012a2/appcompat-1.0.2-api.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/2b2493273aea6ed72fe683c570a2fe54/fragment-1.0.0-api.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/526064812d062c2b559a19f3c7b685ef/vectordrawable-animated-1.0.0-api.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/286f408a9b38af97745db9468c6c6de8/legacy-support-core-ui-1.0.0-api.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/5c56372a7ace7aa8c6e1b8a25b442f97/legacy-support-core-utils-1.0.0-api.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/1496cc64787b94d3101b43d27f5f0c1d/vectordrawable-1.0.1-api.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/3f597a675e0dced4e69dc6514a92c184/loader-1.0.0-api.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/6e36c5267b3ca51fdf75177b25e90817/viewpager-1.0.0-api.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/d8e72c7daf37aa447d92e84c05ab9acf/coordinatorlayout-1.0.0-api.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/675fb8ac46037f96bf818653017729a6/drawerlayout-1.0.0-api.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/1d02d5d4c5387ec2e60b8951315edf0d/slidingpanelayout-1.0.0-api.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/082ba1b7e0063ff8eab2fc487b8009d8/customview-1.0.0-api.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/18c5a845d858ab8f399404f997a5e846/swiperefreshlayout-1.0.0-api.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/f929cc63f148d518cbe02fd4809df469/asynclayoutinflater-1.0.0-api.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/da29613ea93b89cf1e0f490073bab19d/core-1.0.2-api.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/3413cb8c19998a22f4302c898f065df3/versionedparcelable-1.0.0-api.jar:/home/hope/.gradle/caches/modules-2/files-2.1/androidx.collection/collection/1.0.0/42858b26cafdaa69b6149f45dfc2894007bc2c7a/collection-1.0.0.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/70941b0fa6d94b1ca397a5bf2ddcb0af/cursoradapter-1.0.0-api.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/eea16df56f938e5deda46614478d189f/lifecycle-runtime-2.0.0-api.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/8c112935acc502e6cdf14553161ae528/documentfile-1.0.0-api.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/e44f98e282420a53c61932f07788486f/localbroadcastmanager-1.0.0-api.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/e41fae70dc9ce0d3c6b93640751d999a/print-1.0.0-api.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/7a7515bd95cd10b8ce3b32b20633eddb/lifecycle-viewmodel-2.0.0-api.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/d5ab8b4fb10d3f1d5cbf518c9cd0e4a6/lifecycle-livedata-2.0.0-api.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/a460f54149c82ffd1e24c453f10f22e8/lifecycle-livedata-core-2.0.0-api.jar:/home/hope/.gradle/caches/modules-2/files-2.1/androidx.lifecycle/lifecycle-common/2.0.0/e070ffae07452331bc5684734fce6831d531785c/lifecycle-common-2.0.0.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/c16c643d1a59ed2eca32fd41fb3dad82/core-runtime-2.0.0-api.jar:/home/hope/.gradle/caches/modules-2/files-2.1/androidx.arch.core/core-common/2.0.0/bb21b9a11761451b51624ac428d1f1bb5deeac38/core-common-2.0.0.jar:/home/hope/.gradle/caches/transforms-2/files-2.1/cd3fca000496694d0c8706c90d9c1dc0/interpolator-1.0.0-api.jar:/home/hope/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.0.2/2f1d597d48e5309e935ce1212eedf5ae69d3f97/annotation-1.0.2.jar:/home/hope/Android/Sdk/platforms/android-29/android.jar" />
<option name="classpath" value="$MODULE_DIR$/build/intermediates/compile_only_not_namespaced_r_class_jar/debug/R.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/2007790f728a1209fc7f4c998ef37192/jetified-kotlin-android-extensions-runtime-1.3.72.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/04a3f47a61e66bdc148e7c91fa0eb96d/jetified-kotlin-stdlib-jdk7-1.3.72.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/95c964fca064d85ea75a548e65e10166/jetified-core-ktx-1.0.2-api.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/88fdafa44c425dc99960dc38fd21e606/jetified-kotlin-stdlib-1.3.72.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/3fc56f9567b3362c5e198a251df74ff8/jetified-kotlin-stdlib-common-1.3.72.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/e6b13d476c07d97a8633c2e07ebe8ba6/jetified-annotations-13.0.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/116c49b6cc9ec52d11afdf70461e1f6e/appcompat-1.0.2-api.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/77b611b33add6a23fa4c7b5bb3953eae/fragment-1.0.0-api.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/b7b989360159f8400799e1bee717d9d6/vectordrawable-animated-1.0.0-api.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/c47fd7d7dc02ea3dddd5829307ed47b4/legacy-support-core-ui-1.0.0-api.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/0597bc315b8daa2a39db6f912dd7fef9/legacy-support-core-utils-1.0.0-api.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/86eb5e85623fc1c570639f917d1b60e1/vectordrawable-1.0.1-api.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/51995cd66ee66f63d9e1fa81d31aba40/loader-1.0.0-api.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/8261cc7dc801583621ae1686e77b20ba/viewpager-1.0.0-api.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/c3fbd0da3a7b0ed87fa307c6e1c9150f/coordinatorlayout-1.0.0-api.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/f60d503848a7312f41ea0c690e81db3c/drawerlayout-1.0.0-api.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/78dab6ef604983c68e9fa7da625a4c99/slidingpanelayout-1.0.0-api.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/df2f814cba6709de2245fe751785df12/customview-1.0.0-api.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/f6b087e5c3383f2243d985d144af9ece/swiperefreshlayout-1.0.0-api.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/ab18de97c4fa444df769be83004a8958/asynclayoutinflater-1.0.0-api.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/b6deceb2d054c33d2827a9a2a32aec4b/core-1.0.2-api.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/d8926a4a3427edee86f29ddf104a05cd/versionedparcelable-1.0.0-api.jar:/Users/Xinto/.gradle/caches/modules-2/files-2.1/androidx.collection/collection/1.0.0/42858b26cafdaa69b6149f45dfc2894007bc2c7a/collection-1.0.0.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/f380750b489f5a279ada37357a1586b3/cursoradapter-1.0.0-api.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/0bae51e8ce65a98e90b67b7ca0d94ca2/lifecycle-runtime-2.0.0-api.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/02682a11fd5ebaa8e055575838fb83a1/documentfile-1.0.0-api.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/954ab66de19329692601713f1041e30a/localbroadcastmanager-1.0.0-api.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/62dbd37bbe25623b96220010fba40082/print-1.0.0-api.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/2b44792743bacf58b1b9b8b08bc5597b/lifecycle-viewmodel-2.0.0-api.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/54d93caba0b752e51ee425b8e71a2171/lifecycle-livedata-2.0.0-api.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/e4c5900a83f53f4e334e8eded8f47bb8/lifecycle-livedata-core-2.0.0-api.jar:/Users/Xinto/.gradle/caches/modules-2/files-2.1/androidx.lifecycle/lifecycle-common/2.0.0/e070ffae07452331bc5684734fce6831d531785c/lifecycle-common-2.0.0.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/ed9a093e6599a9582ff978de64122224/core-runtime-2.0.0-api.jar:/Users/Xinto/.gradle/caches/modules-2/files-2.1/androidx.arch.core/core-common/2.0.0/bb21b9a11761451b51624ac428d1f1bb5deeac38/core-common-2.0.0.jar:/Users/Xinto/.gradle/caches/transforms-2/files-2.1/7a74caff008b00f69ea01931ee62716e/interpolator-1.0.0-api.jar:/Users/Xinto/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.0.2/2f1d597d48e5309e935ce1212eedf5ae69d3f97/annotation-1.0.2.jar:/Users/Xinto/Library/Android/sdk/platforms/android-29/android.jar" />
<option name="noStdlib" value="true" />
<option name="noReflect" value="true" />
<option name="moduleName" value="api_debug" />
@ -48,13 +48,13 @@
<option name="pluginClasspaths">
<array>
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.intellij.deps/trove4j/1.0.20181211/216c2e14b070f334479d800987affe4054cd563f/trove4j-1.0.20181211.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-android-extensions/1.3.61/54ca7c214a5cd73cd887a42002266e25440097f2/kotlin-android-extensions-1.3.61.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-embeddable/1.3.61/c35c0833d5a1e3d229359758482c480306724618/kotlin-compiler-embeddable-1.3.61.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-daemon-embeddable/1.3.61/4de83e41a92c8395d89ab2e81d26b788ba163824/kotlin-daemon-embeddable-1.3.61.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-reflect/1.3.61/2e07c9a84c9e118efb70eede7e579fd663932122/kotlin-reflect-1.3.61.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-script-runtime/1.3.61/e5feb39c8de63dcbdc1154b34ca4413874231605/kotlin-script-runtime-1.3.61.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.3.61/65abb71d5afb850b68be03987b08e2c864ca3110/kotlin-stdlib-common-1.3.61.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.3.61/4702105e97f7396ae41b113fdbdc180ec1eb1e36/kotlin-stdlib-1.3.61.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-android-extensions/1.3.72/ecbb105a12a9766d2188f454b3bc3aab46cb80b6/kotlin-android-extensions-1.3.72.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-embeddable/1.3.72/fb72232c8fa977d5e07d33c43381ddbdc5edab6/kotlin-compiler-embeddable-1.3.72.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-daemon-embeddable/1.3.72/53bbaa2816dbf6bdb85f629451b1fcc88f2164d2/kotlin-daemon-embeddable-1.3.72.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-reflect/1.3.72/86613e1a669a701b0c660bfd2af4f82a7ae11fca/kotlin-reflect-1.3.72.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-script-runtime/1.3.72/657d8d34d91e1964b4439378c09933e840bfe8d5/kotlin-script-runtime-1.3.72.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.3.72/6ca8bee3d88957eaaaef077c41c908c9940492d8/kotlin-stdlib-common-1.3.72.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.3.72/8032138f12c0180bc4e51fe139d4c52b46db6109/kotlin-stdlib-1.3.72.jar" />
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar" />
</array>
</option>
@ -139,10 +139,10 @@
<orderEntry type="library" scope="TEST" name="Gradle: androidx.test:runner:1.1.1@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.test:monitor:1.1.1@aar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: androidx.test.espresso:espresso-idling-resource:3.1.1@aar" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.3.61@jar" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61@jar" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.3.61@jar" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61@jar" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.3.72@jar" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.72@jar" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.3.72@jar" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:1.3.72@jar" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains:annotations:13.0@jar" level="project" />
<orderEntry type="library" name="Gradle: androidx.collection:collection:1.0.0@jar" level="project" />
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-common:2.0.0@jar" level="project" />

File diff suppressed because one or more lines are too long

View file

@ -11,8 +11,8 @@ android {
applicationId "com.vanced.manager"
minSdkVersion 21
targetSdkVersion 29
versionCode 1
versionName "1.0"
versionCode 2
versionName "1.0.1 beta"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@ -51,14 +51,14 @@ dependencies {
implementation 'androidx.core:core-ktx:1.2.0'
implementation 'com.google.android.material:material:1.1.0'
implementation 'androidx.fragment:fragment-ktx:1.2.4'
implementation 'androidx.preference:preference-ktx:1.1.0'
implementation 'androidx.preference:preference-ktx:1.1.1'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.browser:browser:1.2.0'
implementation 'androidx.navigation:navigation-fragment:2.2.1'
implementation 'androidx.navigation:navigation-ui:2.2.1'
implementation 'androidx.navigation:navigation-fragment:2.2.2'
implementation 'androidx.navigation:navigation-ui:2.2.2'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.navigation:navigation-fragment-ktx:2.2.1'
implementation 'androidx.navigation:navigation-ui-ktx:2.2.1'
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'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'

BIN
app/release/app-release.apk Normal file

Binary file not shown.

1
app/release/output.json Normal file
View file

@ -0,0 +1 @@
[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release","dirName":""},"path":"app-release.apk","properties":{}}]

View file

@ -23,6 +23,11 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />
</activity>
<activity
android:name=".ui.MainActivity"

View file

@ -0,0 +1,56 @@
package com.vanced.manager.core
import android.annotation.SuppressLint
import android.os.Build
import android.os.Bundle
import androidx.appcompat.app.AlertDialog
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.vanced.manager.R
import com.vanced.manager.ui.core.ThemeActivity
// This activity will NOT be used in manifest
// since MainActivity will extend it
@SuppressLint("Registered")
open class Main: ThemeActivity() {
@SuppressLint("ObsoleteSdkInt")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val prefs = getSharedPreferences("prefs", MODE_PRIVATE)
val firstStart = prefs.getBoolean("firstStart", true)
if (firstStart) {
//A little surprise for those who
//love lowering minSdkVersions
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
showUnsupportedSdkDialog()
} else showSecurityDialog()
}
}
private fun showSecurityDialog() {
AlertDialog.Builder(this)
.setTitle(resources.getString(R.string.welcome))
.setMessage(resources.getString(R.string.security_context))
.setPositiveButton(resources.getString(R.string.close)) { dialog, _ -> dialog.dismiss() }
.create()
.show()
val prefs = getSharedPreferences("prefs", MODE_PRIVATE)
val editor = prefs.edit()
editor.putBoolean("firstStart", false)
editor.apply()
}
private fun showUnsupportedSdkDialog() {
AlertDialog.Builder(this)
.setTitle(resources.getString(R.string.whoops))
.setMessage(resources.getString(R.string.unsupported_version_context))
.setPositiveButton(
"OK"
) { _, _ -> finish() }
.create()
.show()
}
}

View file

@ -1,5 +1,6 @@
package com.vanced.manager.ui.core
package com.vanced.manager.core.base
import android.content.pm.PackageManager
import android.net.Uri
import androidx.browser.customtabs.CustomTabsIntent
import androidx.core.content.ContextCompat
@ -14,4 +15,13 @@ open class BaseFragment : Fragment() {
customTabsIntent.launchUrl(requireContext(), Uri.parse(Url))
}
fun isPackageInstalled(packageName: String, packageManager: PackageManager): Boolean {
return try {
packageManager.getPackageInfo(packageName, 0)
true
} catch (e: PackageManager.NameNotFoundException) {
false
}
}
}

View file

@ -0,0 +1,26 @@
package com.vanced.manager.core.fragments
import android.os.Bundle
import android.view.View
import android.widget.Button
import com.vanced.manager.R
import com.vanced.manager.core.base.BaseFragment
open class About : BaseFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val githubSource = getView()?.findViewById(R.id.about_github_button) as Button
val license = getView()?.findViewById(R.id.about_license_button) as Button
githubSource.setOnClickListener {
openUrl("https://github.com/YTvanced/VancedInstaller", R.color.GitHub)
}
license.setOnClickListener {
openUrl("https://raw.githubusercontent.com/YTVanced/VancedInstaller/dev/LICENSE", R.color.GitHub)
}
}
}

View file

@ -0,0 +1,90 @@
package com.vanced.manager.core.fragments
import android.content.ComponentName
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.view.View
import android.widget.Button
import androidx.navigation.findNavController
import com.vanced.manager.R
import com.vanced.manager.core.base.BaseFragment
open class Home : BaseFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val pm = activity?.packageManager
//Damn that's a lot of buttons
val microginstallbtn = view.findViewById<Button>(R.id.microg_installbtn)
val microguninstallbtn = view.findViewById<Button>(R.id.microg_uninstallbtn)
val microgsettingsbtn = view.findViewById<Button>(R.id.microg_settingsbtn)
val vancedinstallbtn = view.findViewById<Button>(R.id.vanced_installbtn)
val bravebtn = view.findViewById<Button>(R.id.brave_button)
val websitebtn = view.findViewById<Button>(R.id.website_button)
val discordbtn = view.findViewById<Button>(R.id.discordbtn)
val telegrambtn = view.findViewById<Button>(R.id.tgbtn)
val twitterbtn = view.findViewById<Button>(R.id.twitterbtn)
val redditbtn = view.findViewById<Button>(R.id.redditbtn)
//we need to check whether these apps are installed or not
val microgStatus = pm?.let { isPackageInstalled("com.mgoogle.android.gms", it) }
val vancedStatus = pm?.let { isPackageInstalled("com.vanced.android.youtube", it) }
vancedinstallbtn.setOnClickListener {
view.findNavController().navigate(R.id.toInstallThemeFragment)
}
microginstallbtn.setOnClickListener {
openUrl("https://youtu.be/dQw4w9WgXcQ", R.color.YT)
}
if (microgStatus!!) {
microguninstallbtn.setOnClickListener {
val uri = Uri.parse("package:com.mgoogle.android.gms")
val mgUninstall = Intent(Intent.ACTION_DELETE, uri)
startActivity(mgUninstall)
}
microgsettingsbtn.setOnClickListener {
val intent = Intent()
intent.component = ComponentName(
"com.mgoogle.android.gms",
"org.microg.gms.ui.SettingsActivity"
)
startActivity(intent)
}
} else {
microgsettingsbtn.visibility = View.INVISIBLE
microguninstallbtn.visibility = View.INVISIBLE
}
bravebtn.setOnClickListener {
openUrl("https://brave.com/van874", R.color.Brave)
}
websitebtn.setOnClickListener {
openUrl("https://vanced.app", R.color.Vanced)
}
discordbtn.setOnClickListener {
openUrl("https://discord.gg/TUVd7rd", R.color.Discord)
}
telegrambtn.setOnClickListener {
openUrl("https://t.me/joinchat/AAAAAEHf-pi4jH1SDlAL4w", R.color.Telegram)
}
twitterbtn.setOnClickListener {
openUrl("https://twitter.com/YTVanced", R.color.Twitter)
}
redditbtn.setOnClickListener {
openUrl("https://reddit.com/r/vanced", R.color.Reddit)
}
}
}

View file

@ -0,0 +1,24 @@
package com.vanced.manager.core.fragments
import android.os.Bundle
import android.view.View
import android.widget.Button
import androidx.fragment.app.Fragment
import androidx.navigation.findNavController
import com.vanced.manager.R
import com.vanced.manager.ui.fragments.LanguageScrollviewFragment
open class LanguageInstall : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val finishButton = getView()?.findViewById(R.id.vanced_install_finish) as Button
finishButton.setOnClickListener {
view.findNavController().navigate(R.id.action_installTo_homeFragment)
}
}
}

View file

@ -0,0 +1,22 @@
package com.vanced.manager.core.fragments
import android.os.Bundle
import android.view.View
import android.widget.Button
import androidx.fragment.app.Fragment
import androidx.navigation.findNavController
import com.vanced.manager.R
open class ThemeInstall : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val nextButton = getView()?.findViewById(R.id.vanced_next_to_variant) as Button
nextButton.setOnClickListener {
view.findNavController().navigate(R.id.toInstallVariantFragment)
}
}
}

View file

@ -0,0 +1,21 @@
package com.vanced.manager.core.fragments
import android.os.Bundle
import android.view.View
import android.widget.Button
import androidx.fragment.app.Fragment
import androidx.navigation.findNavController
import com.vanced.manager.R
open class VariantInstall : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val nextButton = getView()?.findViewById(R.id.vanced_next_to_language) as Button
nextButton.setOnClickListener {
view.findNavController().navigate(R.id.toInstallLanguageFragment)
}
}
}

View file

@ -3,17 +3,18 @@ package com.vanced.manager.ui
import android.os.Bundle
import android.view.MenuItem
import android.view.View
import androidx.appcompat.app.AlertDialog
import androidx.core.view.forEach
import android.view.animation.Animation
import android.view.animation.AnimationUtils
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 com.google.android.material.bottomnavigation.BottomNavigationView
import com.vanced.manager.R
import com.vanced.manager.ui.core.ThemeActivity
import com.vanced.manager.core.Main
class MainActivity : ThemeActivity() {
class MainActivity : Main() {
private var isParent = true
@ -22,16 +23,16 @@ class MainActivity : ThemeActivity() {
setContentView(R.layout.activity_main)
val toolbar: MaterialToolbar = findViewById(R.id.home_toolbar)
setSupportActionBar(toolbar)
val prefs = getSharedPreferences("prefs", MODE_PRIVATE)
val firstStart = prefs.getBoolean("firstStart", true)
if (firstStart) {
showSecurityDialog()
}
val navHost = findNavController(R.id.bottom_nav_host)
val appBarConfiguration = AppBarConfiguration(navHost.graph)
toolbar.setupWithNavController(navHost, appBarConfiguration)
//WARNING: Reserved code!
//DO NOT TOUCH!
/*
val navBar = findViewById<BottomNavigationView>(R.id.bottom_nav)
navBar.setupWithNavController(navHost)
@ -51,41 +52,68 @@ class MainActivity : ThemeActivity() {
navBar.setOnNavigationItemReselectedListener {
}
*/
navHost.addOnDestinationChangedListener{_, currfrag: NavDestination, _ ->
//WARNING: Reserved code 2
//DO NOT TOUCH
/*
val navBarHide: Animation = AnimationUtils.loadAnimation(applicationContext, R.anim.navbar_exit)
val navBarShow: Animation = AnimationUtils.loadAnimation(applicationContext, R.anim.navbar_enter)
when (currfrag.id) {
R.id.home_fragment, R.id.settings_fragment -> navBar.visibility = View.VISIBLE
else -> navBar.visibility = View.INVISIBLE
R.id.home_fragment, R.id.settings_fragment -> {
if (navBar.visibility != View.VISIBLE) {
navBar.visibility = View.VISIBLE
navBar.startAnimation(navBarShow)
}
}
else -> {
if (navBar.visibility != View.GONE) {
navBar.startAnimation(navBarHide)
navBar.visibility = View.GONE
}
}
}
*/
isParent = when (currfrag.id) {
R.id.home_fragment, R.id.settings_fragment -> true
R.id.home_fragment -> true
else -> false
}
setDisplayHomeAsUpEnabled(!isParent)
navBar.menu.forEach {
if (it.itemId == currfrag.id) {
it.isChecked = true
}
}
}
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
val navHost = findNavController(R.id.bottom_nav_host)
when (item.itemId) {
android.R.id.home -> {
findNavController(R.id.bottom_nav_host).navigate(R.id.action_homeFragment)
onBackPressed()
return true
}
R.id.toolbar_about -> {
navHost.navigate(R.id.toAboutFragment)
return true
}
R.id.toolbar_settings -> {
navHost.navigate(R.id.action_settingsFragment)
return true
}
R.id.secret_settings -> {
navHost.navigate(R.id.toSecretSettingsFragment)
return true
}
else -> super.onOptionsItemSelected(item)
}
return true
return false
}
private fun setDisplayHomeAsUpEnabled(isNeeded: Boolean) {
val toolbar: MaterialToolbar = findViewById(R.id.home_toolbar)
when {
@ -93,19 +121,4 @@ class MainActivity : ThemeActivity() {
else -> toolbar.navigationIcon = null
}
}
private fun showSecurityDialog() {
AlertDialog.Builder(this)
.setTitle("Welcome!")
.setMessage("Before we implement a proper security system to check whether app was modified or not, please be sure that you downloaded manager from vanced.app/github")
.setPositiveButton("close"
) { dialog, _ -> dialog.dismiss() }
.create().show()
val prefs = getSharedPreferences("prefs", MODE_PRIVATE)
val editor = prefs.edit()
editor.putBoolean("firstStart", false)
editor.apply()
}
}

View file

@ -2,16 +2,24 @@ package com.vanced.manager.ui.core
import android.annotation.SuppressLint
import android.app.ActivityManager
import android.content.Context
import android.content.SharedPreferences
import android.content.res.Configuration
import android.os.Build
import android.os.Bundle
import android.util.DisplayMetrics
import android.view.KeyEvent
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.res.ResourcesCompat
import androidx.preference.PreferenceManager
import com.vanced.manager.R
import java.util.*
// This activity will NOT be used in manifest
// since MainActivity will extend it
@SuppressLint("Registered")
open class ThemeActivity : AppCompatActivity() {
private lateinit var currentTheme: String
private lateinit var pref: SharedPreferences
@ -20,20 +28,32 @@ open class ThemeActivity : AppCompatActivity() {
currentTheme = pref.getString("theme_mode", "").toString()
setFinalTheme(currentTheme)
super.onCreate(savedInstanceState)
if (android.os.Build.VERSION.SDK_INT < 28) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) {
setTaskBG()
}
super.onCreate(savedInstanceState)
}
override fun onResume() {
super.onResume()
val theme = pref.getString("theme_mode", "")
//if for some weird reasons we get invalid
//theme, recreate activity
if (currentTheme != theme)
recreate()
setTaskBG()
//set Task Header color in recents menu for
//devices with lower Android version than Pie
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) {
setTaskBG()
}
super.onResume()
}
//This stupid ass AppCompatDelegate does
//not want to work, so I have to use my
//own implementation of theme switching
private fun setFinalTheme(currentTheme: String) {
when (currentTheme) {
"LIGHT" -> setTheme(R.style.LightTheme_Blue)
@ -47,10 +67,14 @@ open class ThemeActivity : AppCompatActivity() {
else -> setTheme(R.style.LightTheme_Blue)
}
}
private fun setTaskBG() {
val label = getString(R.string.app_name)
val color = ResourcesCompat.getColor(resources, R.color.Black, null)
val taskDec: ActivityManager.TaskDescription = ActivityManager.TaskDescription(label, null, color)
val taskDec: ActivityManager.TaskDescription =
ActivityManager.TaskDescription(label, null, color)
setTaskDescription(taskDec)
}
}

View file

@ -0,0 +1,31 @@
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
(-9999).toFloat()
x = newWidth
}
}

View file

@ -0,0 +1,31 @@
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
(-9999).toFloat()
x = newWidth
}
}

View file

@ -1,45 +1,24 @@
package com.vanced.manager.ui.fragments
import android.os.Bundle
import android.view.*
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import android.widget.TextView
import androidx.navigation.fragment.findNavController
import com.vanced.manager.R
import com.vanced.manager.ui.core.BaseFragment
import com.vanced.manager.core.fragments.About
/**
* A simple [Fragment] subclass.
*/
class AboutFragment : BaseFragment() {
override fun onStart() {
super.onStart()
activity?.title = getString(R.string.title_about)
}
class AboutFragment : About() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
activity?.title = getString(R.string.title_about)
return inflater.inflate(R.layout.fragment_about, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val githubSource = getView()?.findViewById(R.id.about_github_button) as TextView
val license = getView()?.findViewById(R.id.about_license_button) as TextView
githubSource.setOnClickListener{
openUrl("https://github.com/YTvanced/VancedInstaller", R.color.GitHub)
}
license.setOnClickListener{
openUrl("https://raw.githubusercontent.com/YTVanced/VancedInstaller/dev/LICENSE", R.color.GitHub)
}
}
}

View file

@ -1,40 +1,41 @@
package com.vanced.manager.ui.fragments
import android.content.ComponentName
import android.net.Uri
import android.content.Context
import android.net.ConnectivityManager
import android.net.Network
import android.net.NetworkCapabilities
import android.net.NetworkRequest
import android.os.Bundle
import android.widget.Button
import android.content.pm.PackageManager
import android.content.Intent
import android.view.*
import androidx.navigation.findNavController
import android.view.animation.Animation
import android.view.animation.AnimationUtils
import androidx.viewpager2.widget.ViewPager2
import com.google.android.material.card.MaterialCardView
import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator
import com.vanced.manager.adapter.SectionPageAdapter
import com.vanced.manager.R
import com.vanced.manager.ui.core.BaseFragment
import com.vanced.manager.adapter.SectionPageAdapter
import com.vanced.manager.core.fragments.Home
class HomeFragment : BaseFragment() {
class HomeFragment : Home() {
private lateinit var sectionPageAdapter: SectionPageAdapter
private lateinit var viewPager: ViewPager2
override fun onStart() {
super.onStart()
activity?.title = getString(R.string.title_home)
setHasOptionsMenu(true)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
activity?.title = getString(R.string.title_home)
setHasOptionsMenu(true)
return inflater.inflate(R.layout.fragment_home, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
connectionStatus()
super.onViewCreated(view, savedInstanceState)
sectionPageAdapter = SectionPageAdapter(this)
@ -49,93 +50,71 @@ class HomeFragment : BaseFragment() {
}
}.attach()
val pm = activity?.packageManager
val microginstallbtn = getView()?.findViewById(R.id.microg_installbtn) as Button
val microguninstallbtn = getView()?.findViewById(R.id.microg_uninstallbtn) as Button
val microgsettingsbtn = getView()?.findViewById(R.id.microg_settingsbtn) as Button
val vancedinstallbtn = getView()?.findViewById(R.id.vanced_installbtn) as Button
val bravebtn = getView()?.findViewById(R.id.brave_button) as Button
val websitebtn = getView()?.findViewById(R.id.website_button) as Button
val discordbtn = getView()?.findViewById(R.id.discordbtn) as Button
val telegrambtn = getView()?.findViewById(R.id.tgbtn) as Button
val twitterbtn = getView()?.findViewById(R.id.twitterbtn) as Button
val redditbtn = getView()?.findViewById(R.id.redditbtn) as Button
val microgStatus = pm?.let { isPackageInstalled("com.mgoogle.android.gms", it) }
val vancedStatus = pm?.let { isPackageInstalled("com.vanced.android.youtube", it)}
vancedinstallbtn.setOnClickListener{
view.findNavController().navigate(R.id.toInstallThemeFragment)
}
microginstallbtn.setOnClickListener {
openUrl("https://youtu.be/dQw4w9WgXcQ", R.color.YT)
}
if (microgStatus!!) {
microguninstallbtn.setOnClickListener {
val uri = Uri.parse("package:com.mgoogle.android.gms")
val mgUninstall = Intent(Intent.ACTION_DELETE, uri)
startActivity(mgUninstall)
}
microgsettingsbtn.setOnClickListener {
val intent = Intent()
intent.component = ComponentName(
"com.mgoogle.android.gms",
"org.microg.gms.ui.SettingsActivity"
)
startActivity(intent)
}
}
else {
microgsettingsbtn.visibility = View.INVISIBLE
microguninstallbtn.visibility = View.INVISIBLE
}
bravebtn.setOnClickListener {
openUrl("https://brave.com/van874", R.color.Brave)
}
websitebtn.setOnClickListener {
openUrl("https://vanced.app", R.color.Vanced)
}
discordbtn.setOnClickListener {
openUrl("https://discord.gg/TUVd7rd", R.color.Discord)
}
telegrambtn.setOnClickListener {
openUrl("https://t.me/joinchat/AAAAAEHf-pi4jH1SDIAL4w", R.color.Telegram)
}
twitterbtn.setOnClickListener {
openUrl("https://twitter.com/YTVanced", R.color.Twitter)
}
redditbtn.setOnClickListener {
openUrl("https://reddit.com/r/vanced", R.color.Reddit)
}
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.toolbar_menu, menu)
super .onCreateOptionsMenu(menu, inflater)
}
override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) {
R.id.about -> view?.findNavController()?.navigate(R.id.toAboutFragment)
else -> null
}?.let { true } ?: super.onOptionsItemSelected(item)
private fun isPackageInstalled(packageName: String, packageManager: PackageManager): Boolean {
return try {
packageManager.getPackageInfo(packageName, 0)
true
} catch (e: PackageManager.NameNotFoundException) {
false
private var networkCallback = object: ConnectivityManager.NetworkCallback() {
override fun onLost(network: Network) {
super.onLost(network)
activity?.runOnUiThread {
val animationShow: Animation = AnimationUtils.loadAnimation(requireContext(), R.anim.view_enter)
val networkErrorLayout = view?.findViewById<MaterialCardView>(R.id.home_network_wrapper)
networkErrorLayout?.visibility = View.VISIBLE
networkErrorLayout?.startAnimation(animationShow)
}
}
override fun onUnavailable() {
super.onUnavailable()
activity?.runOnUiThread {
val networkErrorLayout = view?.findViewById<MaterialCardView>(R.id.home_network_wrapper)
networkErrorLayout?.visibility = View.VISIBLE
}
}
override fun onAvailable(network: Network) {
super.onAvailable(network)
activity?.runOnUiThread {
val animationHide: Animation = AnimationUtils.loadAnimation(requireContext(), R.anim.view_exit)
val networkErrorLayout = view?.findViewById<MaterialCardView>(R.id.home_network_wrapper)
networkErrorLayout?.startAnimation(animationHide)
networkErrorLayout?.visibility = View.GONE
}
}
}
private fun connectionStatus() {
val connectivityManager = context?.applicationContext?.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val networkRequest = NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.build()
try {
connectivityManager.unregisterNetworkCallback(networkCallback)
} catch (e: Exception) {
}
connectivityManager.registerNetworkCallback(networkRequest, networkCallback)
}
}

View file

@ -5,8 +5,6 @@ import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.TextView
import com.vanced.manager.R
/**
@ -18,7 +16,7 @@ class LanguageScrollviewFragment : Fragment() {
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_language_scrollview, container, false)
return inflater.inflate(R.layout.include_language_scrollview, container, false)
}
}

View file

@ -1,32 +1,14 @@
package com.vanced.manager.ui.fragments
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.preference.PreferenceFragmentCompat
import com.vanced.manager.R
class SecretSettingsFragment : Fragment() {
class SecretSettingsFragment : PreferenceFragmentCompat() {
override fun onStart() {
super.onStart()
activity?.title = getString(R.string.title_settings)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.secret_settings, rootKey)
activity?.title = "Secret Settings"
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return TextView(activity).apply {
setText(R.string.title_settings)
}
}
}

View file

@ -4,8 +4,8 @@ import android.content.res.Configuration
import android.os.Bundle
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import androidx.navigation.findNavController
import androidx.fragment.app.FragmentManager
import androidx.preference.DialogPreference
import androidx.preference.ListPreference
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
@ -13,16 +13,18 @@ import com.vanced.manager.R
class SettingsFragment : PreferenceFragmentCompat() {
override fun onStart() {
super.onStart()
activity?.title = getString(R.string.title_settings)
setHasOptionsMenu(true)
}
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.preferences, rootKey)
activity?.title = getString(R.string.title_settings)
setHasOptionsMenu(true)
val updateCheck: Preference? = findPreference("update_check")
updateCheck?.setOnPreferenceClickListener {
val fm = childFragmentManager.beginTransaction()
val updateDialog = UpdateCheckFragment()
updateDialog.show(fm, "Update Center")
true
}
val themeSwitch: ListPreference? = findPreference("theme_mode")
themeSwitch?.setOnPreferenceChangeListener { _, _ ->
@ -59,11 +61,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.secret_settings_menu, menu)
super .onCreateOptionsMenu(menu, inflater)
}
override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) {
R.id.secret_settings -> view?.findNavController()?.navigate(R.id.toSecretSettingsFragment)
else -> null
}?.let { true } ?: super.onOptionsItemSelected(item)
}

View file

@ -1,26 +1,36 @@
package com.vanced.manager.ui.fragments
import android.app.Dialog
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import androidx.fragment.app.DialogFragment
import com.vanced.manager.R
/**
* A simple [Fragment] subclass.
*/
class UpdateCheckFragment : DialogFragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
if (dialog != null && dialog?.window != null) {
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
}
return inflater.inflate(R.layout.fragment_update_check, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val closebtn = view.findViewById<Button>(R.id.update_center_dismiss)
closebtn.setOnClickListener { dismiss() }
}
}

View file

@ -1,45 +1,20 @@
package com.vanced.manager.ui.fragments
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import androidx.navigation.findNavController
import com.vanced.manager.R
import kotlinx.android.synthetic.main.fragment_vanced_language_selection.view.*
import com.vanced.manager.core.fragments.LanguageInstall
class VancedLanguageSelectionFragment : Fragment() {
override fun onStart() {
super.onStart()
activity?.title = getString(R.string.title_install)
}
class VancedLanguageSelectionFragment : LanguageInstall() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
activity?.title = getString(R.string.title_install)
return inflater.inflate(R.layout.fragment_vanced_language_selection, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val fragmentManager = childFragmentManager
val finishButton = getView()?.findViewById(R.id.vanced_install_finish) as Button
finishButton.setOnClickListener {
view.findNavController().navigate(R.id.action_installTo_homeFragment)
}
fragmentManager
.beginTransaction()
.replace(R.id.language_choose_frame, LanguageScrollviewFragment())
.commit()
}
}

View file

@ -1,39 +1,20 @@
package com.vanced.manager.ui.fragments
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.TextView
import androidx.fragment.app.FragmentManager
import androidx.navigation.findNavController
import com.vanced.manager.R
import com.vanced.manager.core.fragments.ThemeInstall
class VancedThemeSelectionFragment : Fragment() {
override fun onStart() {
super.onStart()
activity?.title = getString(R.string.title_install)
}
class VancedThemeSelectionFragment : ThemeInstall() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
activity?.title = getString(R.string.title_install)
return inflater.inflate(R.layout.fragment_vanced_theme_selection, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val fragmentManager = activity?.supportFragmentManager
val nextButton = getView()?.findViewById(R.id.vanced_next_to_variant) as Button
nextButton.setOnClickListener{
view.findNavController().navigate(R.id.toInstallVariantFragment)
}
}
}

View file

@ -1,39 +1,23 @@
package com.vanced.manager.ui.fragments
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import androidx.navigation.findNavController
import androidx.navigation.fragment.findNavController
import com.vanced.manager.R
import com.vanced.manager.core.fragments.VariantInstall
class VancedVariantSelectionFragment : Fragment() {
override fun onStart() {
super.onStart()
activity?.title = getString(R.string.title_install)
}
class VancedVariantSelectionFragment : VariantInstall() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
activity?.title = getString(R.string.title_install)
return inflater.inflate(R.layout.fragment_vanced_variant_selection, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val fragmentManager = activity?.supportFragmentManager
val nextButton = getView()?.findViewById(R.id.vanced_next_to_language) as Button
nextButton.setOnClickListener{
view.findNavController().navigate(R.id.toInstallLanguageFragment)
}
}
}

View file

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:duration="@android:integer/config_shortAnimTime"
android:fromAlpha="0"
android:toAlpha="1" />
<scale
android:fromXScale="0.7"
android:toXScale="1"
android:fromYScale="0.7"
android:toYScale="1"
android:pivotX="50%p"
android:pivotY="50%p" />
</set>

View file

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:duration="@android:integer/config_shortAnimTime"
android:fromAlpha="1"
android:toAlpha="0" />
<scale
android:fromXScale="1.2"
android:toXScale="1"
android:fromYScale="1.2"
android:toYScale="1"
android:pivotX="50%p"
android:pivotY="50%p" />
</set>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromYDelta="50%p"
android:toYDelta="0" />
</set>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromYDelta="0"
android:toYDelta="100%p" />
</set>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromYDelta="-100%p"
android:toYDelta="0" />
</set>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromYDelta="0"
android:toYDelta="-100%p" />
</set>

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="together">
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="scaleX"
android:valueFrom="0.8"
android:valueTo="1"
android:valueType="floatType"/>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="scaleY"
android:valueFrom="0.8"
android:valueTo="1"
android:valueType="floatType"/>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="alpha"
android:valueFrom="0"
android:valueTo="1"
android:valueType="floatType" />
</set>

View file

@ -2,10 +2,10 @@
<set xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator
android:duration="500"
android:propertyName="x"
android:valueFrom="-1000"
android:duration="@android:integer/config_mediumAnimTime"
android:valueType="floatType"
android:valueFrom="-1.0"
android:valueTo="0"
android:valueType="floatType" />
android:propertyName="xFraction" />
</set>

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="together">
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="scaleX"
android:valueFrom="1.1"
android:valueTo="1"
android:valueType="floatType"/>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="scaleY"
android:valueFrom="1.1"
android:valueTo="1"
android:valueType="floatType"/>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="alpha"
android:valueFrom="0"
android:valueTo="1"
android:valueType="floatType" />
</set>

View file

@ -2,10 +2,10 @@
<set xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator
android:duration="500"
android:propertyName="x"
android:valueFrom="1000"
android:duration="@android:integer/config_mediumAnimTime"
android:valueType="floatType"
android:valueFrom="1.0"
android:valueTo="0"
android:valueType="floatType" />
android:propertyName="xFraction" />
</set>

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="together">
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="scaleX"
android:valueFrom="1"
android:valueTo="0.8"
android:valueType="floatType"/>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="scaleY"
android:valueFrom="1"
android:valueTo="0.8"
android:valueType="floatType"/>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="alpha"
android:valueFrom="1"
android:valueTo="0"
android:valueType="floatType" />
</set>

View file

@ -2,10 +2,10 @@
<set xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator
android:duration="500"
android:propertyName="x"
android:duration="@android:integer/config_mediumAnimTime"
android:valueType="floatType"
android:valueFrom="0"
android:valueTo="-1000"
android:valueType="floatType" />
android:valueTo="-1.0"
android:propertyName="xFraction" />
</set>

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="together">
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="scaleX"
android:valueFrom="1"
android:valueTo="1.1"
android:valueType="floatType"/>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="scaleX"
android:valueFrom="1"
android:valueTo="1.1"
android:valueType="floatType"/>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="alpha"
android:valueFrom="1"
android:valueTo="0"
android:valueType="floatType" />
</set>

View file

@ -2,10 +2,10 @@
<set xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator
android:duration="500"
android:propertyName="x"
android:duration="@android:integer/config_mediumAnimTime"
android:valueType="floatType"
android:valueFrom="0"
android:valueTo="1000"
android:valueType="floatType" />
android:valueTo="1.0"
android:propertyName="xFraction" />
</set>

View file

@ -1,9 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="34dp"
android:height="34dp"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="?attr/toolbarIconColor"
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,17h-2v-6h2v6zM13,9h-2L11,7h2v2z"/>
</vector>

View file

@ -5,6 +5,6 @@
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FF000000"
android:fillColor="?attr/toolbarIconColor"
android:pathData="M19.1,12.9a2.8,2.8 0,0 0,0.1 -0.9,2.8 2.8,0 0,0 -0.1,-0.9l2.1,-1.6a0.7,0.7 0,0 0,0.1 -0.6L19.4,5.5a0.7,0.7 0,0 0,-0.6 -0.2l-2.4,1a6.5,6.5 0,0 0,-1.6 -0.9l-0.4,-2.6a0.5,0.5 0,0 0,-0.5 -0.4H10.1a0.5,0.5 0,0 0,-0.5 0.4L9.3,5.4a5.6,5.6 0,0 0,-1.7 0.9l-2.4,-1a0.4,0.4 0,0 0,-0.5 0.2l-2,3.4c-0.1,0.2 0,0.4 0.2,0.6l2,1.6a2.8,2.8 0,0 0,-0.1 0.9,2.8 2.8,0 0,0 0.1,0.9L2.8,14.5a0.7,0.7 0,0 0,-0.1 0.6l1.9,3.4a0.7,0.7 0,0 0,0.6 0.2l2.4,-1a6.5,6.5 0,0 0,1.6 0.9l0.4,2.6a0.5,0.5 0,0 0,0.5 0.4h3.8a0.5,0.5 0,0 0,0.5 -0.4l0.3,-2.6a5.6,5.6 0,0 0,1.7 -0.9l2.4,1a0.4,0.4 0,0 0,0.5 -0.2l2,-3.4c0.1,-0.2 0,-0.4 -0.2,-0.6ZM12,15.6A3.6,3.6 0,1 1,15.6 12,3.6 3.6,0 0,1 12,15.6Z"/>
</vector>

View file

@ -0,0 +1,10 @@
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#1490D7"
android:pathData="M19.1,12.9a2.8,2.8 0,0 0,0.1 -0.9,2.8 2.8,0 0,0 -0.1,-0.9l2.1,-1.6a0.7,0.7 0,0 0,0.1 -0.6L19.4,5.5a0.7,0.7 0,0 0,-0.6 -0.2l-2.4,1a6.5,6.5 0,0 0,-1.6 -0.9l-0.4,-2.6a0.5,0.5 0,0 0,-0.5 -0.4H10.1a0.5,0.5 0,0 0,-0.5 0.4L9.3,5.4a5.6,5.6 0,0 0,-1.7 0.9l-2.4,-1a0.4,0.4 0,0 0,-0.5 0.2l-2,3.4c-0.1,0.2 0,0.4 0.2,0.6l2,1.6a2.8,2.8 0,0 0,-0.1 0.9,2.8 2.8,0 0,0 0.1,0.9L2.8,14.5a0.7,0.7 0,0 0,-0.1 0.6l1.9,3.4a0.7,0.7 0,0 0,0.6 0.2l2.4,-1a6.5,6.5 0,0 0,1.6 0.9l0.4,2.6a0.5,0.5 0,0 0,0.5 0.4h3.8a0.5,0.5 0,0 0,0.5 -0.4l0.3,-2.6a5.6,5.6 0,0 0,1.7 -0.9l2.4,1a0.4,0.4 0,0 0,0.5 -0.2l2,-3.4c0.1,-0.2 0,-0.4 -0.2,-0.6ZM12,15.6A3.6,3.6 0,1 1,15.6 12,3.6 3.6,0 0,1 12,15.6Z"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#1490D7"
android:pathData="M19.35,10.04C18.67,6.59 15.64,4 12,4 9.11,4 6.6,5.64 5.35,8.04 2.34,8.36 0,10.91 0,14c0,3.31 2.69,6 6,6h13c2.76,0 5,-2.24 5,-5 0,-2.64 -2.05,-4.78 -4.65,-4.96zM19,18L6,18c-2.21,0 -4,-1.79 -4,-4 0,-2.05 1.53,-3.76 3.56,-3.97l1.07,-0.11 0.5,-0.95C8.08,7.14 9.94,6 12,6c2.62,0 4.88,1.86 5.39,4.43l0.3,1.5 1.53,0.11c1.56,0.1 2.78,1.41 2.78,2.96 0,1.65 -1.35,3 -3,3zM13.45,10h-2.9v3L8,13l4,4 4,-4h-2.55z"/>
</vector>

View file

@ -1,36 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.AboutActivity"
android:background="?colorSurface">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/about_appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="1dp"
android:background="?colorSurface"
android:layout_alignParentTop="true">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/about_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:titleTextColor="?attr/toolbarIconColor"
android:background="@android:color/transparent"/>
</com.google.android.material.appbar.AppBarLayout>
<FrameLayout
android:id="@+id/frame_layout_about"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/about_appbar"
android:layout_alignParentBottom="true">
</FrameLayout>
</RelativeLayout>

View file

@ -13,9 +13,9 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/home_appbar"
android:layout_above="@id/bottom_nav"
app:defaultNavHost="true"
app:navGraph="@navigation/mobile_navigation"/>
<!--android:layout_above="@id/bottom_nav"-->
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/home_appbar"
@ -37,6 +37,7 @@
</com.google.android.material.appbar.AppBarLayout>
<!--
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_nav"
android:layout_width="match_parent"
@ -45,5 +46,6 @@
android:layout_alignParentBottom="true"
app:labelVisibilityMode="unlabeled"
app:menu="@menu/bottom_nav_menu" />
-->
</RelativeLayout>

View file

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?colorSurface"
tools:context=".ui.core.SplashScreenActivity">
<ImageView
android:layout_width="match_parent"
android:layout_height="400dp"
android:src="@drawable/ic_launcher_foreground"
android:layout_gravity="center"/>
</FrameLayout>

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView
<com.vanced.manager.ui.core.SlidingNestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
@ -9,16 +10,28 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/twelvedp"
android:layout_marginTop="4dp"
android:background="?colorSurface"
android:clipToPadding="false"
android:orientation="vertical">
<include
android:id="@+id/home_network_wrapper"
layout="@layout/include_network_error"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginStart="@dimen/stdp"
android:layout_marginEnd="@dimen/stdp"
android:visibility="gone"
tools:visibility="visible"/>
<include
android:id="@+id/home_vanced_wrapper"
layout="@layout/include_vanced"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginStart="@dimen/stdp"
android:layout_marginEnd="@dimen/stdp" />
@ -52,4 +65,4 @@
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</com.vanced.manager.ui.core.SlidingNestedScrollView>

View file

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Layout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent">
</Layout>

View file

@ -2,12 +2,14 @@
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:cardCornerRadius="8dp"
app:contentPadding="6dp"
app:contentPaddingRight="6dp"
app:contentPaddingLeft="6dp"
app:cardElevation="0dp"
tools:context=".ui.fragments.UpdateCheckFragment">
<androidx.constraintlayout.widget.ConstraintLayout
@ -18,40 +20,52 @@
android:id="@+id/update_center_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Update Center"
android:text="@string/update_center"
android:textAlignment="center"
android:textSize="18sp"
android:fontFamily="@font/exo_semibold"
android:textColor="?attr/colorOnSurfaceVariant"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
<androidx.core.widget.ContentLoadingProgressBar
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
<ProgressBar
android:id="@+id/update_center_progressbar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/update_center_text"
android:progress="10"/>
app:layout_constraintBottom_toTopOf="@id/update_button_container"/>
<com.google.android.material.button.MaterialButton
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width="wrap_content"
<LinearLayout
android:id="@+id/update_button_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/update_center_progressbar"
app:layout_constraintEnd_toEndOf="parent"
android:text="Close"
android:textAllCaps="false"/>
<com.google.android.material.button.MaterialButton
style="@style/Widget.MaterialComponents.Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/update_center_progressbar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:text="Re-check"
android:textAllCaps="false"/>
app:layout_constraintEnd_toEndOf="parent">
<com.google.android.material.button.MaterialButton
android:id="@+id/update_center_dismiss"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="4dp"
android:text="@string/close"
android:textAllCaps="false"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/update_center_recheck"
style="@style/Widget.MaterialComponents.Button.UnelevatedButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:text="@string/re_check"
android:textAllCaps="false"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -1,66 +1,82 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView
<com.vanced.manager.ui.core.SlidingConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="@dimen/eightdp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="12dp"
app:cardBackgroundColor="?colorSurfaceVariant"
app:cardElevation="0dp"
app:cardPreventCornerOverlap="true">
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
app:cardCornerRadius="@dimen/eightdp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="12dp"
app:cardBackgroundColor="?colorSurfaceVariant"
app:cardElevation="0dp"
app:cardPreventCornerOverlap="true"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/install_language_title"
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
android:textSize="18sp"
android:textAlignment="center"
android:textColor="?attr/colorOnSurfaceVariant"
android:fontFamily="@font/exo_bold"
android:text="@string/choose_preferred_language" />
android:layout_height="match_parent">
<TextView
android:id="@+id/install_language_note"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/install_language_title"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:textSize="13sp"
android:fontFamily="@font/exo_semibold"
android:text="@string/choose_preferred_language_note" />
<TextView
android:id="@+id/install_language_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
android:textSize="18sp"
android:textAlignment="center"
android:textColor="?attr/colorOnSurfaceVariant"
android:fontFamily="@font/exo_bold"
android:text="@string/choose_preferred_language" />
<FrameLayout
android:id="@+id/language_choose_frame"
android:layout_width="match_parent"
android:layout_height="360dp"
android:layout_marginTop="4dp"
app:layout_constraintTop_toBottomOf="@id/install_language_note"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<TextView
android:id="@+id/install_language_note"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/install_language_title"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:textSize="13sp"
android:fontFamily="@font/exo_semibold"
android:text="@string/choose_preferred_language_note" />
<com.google.android.material.button.MaterialButton
android:id="@+id/vanced_install_finish"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/language_choose_frame"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="6dp"
android:text="@string/finish"
android:textAllCaps="false"
app:icon="@drawable/ic_done_black_24dp"
app:iconGravity="end"/>
<FrameLayout
android:id="@+id/language_choose_frame"
android:layout_width="match_parent"
android:layout_height="360dp"
android:layout_marginEnd="2dp"
app:layout_constraintTop_toBottomOf="@id/install_language_note"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" >
</androidx.constraintlayout.widget.ConstraintLayout>
<include
layout="@layout/include_language_scrollview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</com.google.android.material.card.MaterialCardView>
</FrameLayout>
<com.google.android.material.button.MaterialButton
style="@style/Widget.AppCompat.Button.Borderless"
android:id="@+id/vanced_install_finish"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/language_choose_frame"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="6dp"
android:text="@string/finish"
android:textAllCaps="false"
app:icon="@drawable/ic_done_black_24dp"
app:iconGravity="end"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
</com.vanced.manager.ui.core.SlidingConstraintLayout>

View file

@ -1,71 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView
<com.vanced.manager.ui.core.SlidingConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="@dimen/eightdp"
app:cardBackgroundColor="?colorSurfaceVariant"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="12dp"
app:cardElevation="0dp"
app:cardPreventCornerOverlap="true">
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="12dp"
app:cardElevation="0dp"
app:cardCornerRadius="@dimen/eightdp"
app:cardBackgroundColor="?colorSurfaceVariant"
app:cardPreventCornerOverlap="true"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/install_theme_title"
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
android:textSize="18sp"
android:textAlignment="center"
android:textColor="?attr/colorOnSurfaceVariant"
android:fontFamily="@font/exo_bold"
android:text="@string/choose_preferred_theme" />
android:layout_height="wrap_content">
<RadioGroup
android:id="@+id/vanced_theme_buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/install_theme_title"
app:layout_constraintStart_toStartOf="parent"
android:checkedButton="@id/button_light_dark">
<com.google.android.material.radiobutton.MaterialRadioButton
android:id="@+id/button_light_dark"
<TextView
android:id="@+id/install_theme_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
android:textSize="18sp"
android:text="Light + Dark"
android:fontFamily="@font/exo_semibold"/>
android:textAlignment="center"
android:textColor="?attr/colorOnSurfaceVariant"
android:fontFamily="@font/exo_bold"
android:text="@string/choose_preferred_theme" />
<com.google.android.material.radiobutton.MaterialRadioButton
android:id="@+id/button_light_black"
<RadioGroup
android:id="@+id/vanced_theme_buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:fontFamily="@font/exo_semibold"
android:text="Light + Black"/>
app:layout_constraintTop_toBottomOf="@id/install_theme_title"
app:layout_constraintStart_toStartOf="parent"
android:checkedButton="@id/button_light_dark">
</RadioGroup>
<com.google.android.material.radiobutton.MaterialRadioButton
android:id="@+id/button_light_dark"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="@string/install_light_dark"
android:fontFamily="@font/exo_semibold"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/vanced_next_to_variant"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/vanced_theme_buttons"
android:layout_marginEnd="6dp"
android:text="@string/next"
android:textAllCaps="false"
app:icon="@drawable/ic_keyboard_next"
app:iconGravity="end"/>
<com.google.android.material.radiobutton.MaterialRadioButton
android:id="@+id/button_light_black"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:fontFamily="@font/exo_semibold"
android:text="@string/install_light_black"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</RadioGroup>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.button.MaterialButton
style="@style/Widget.AppCompat.Button.Borderless"
android:id="@+id/vanced_next_to_variant"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/vanced_theme_buttons"
android:layout_marginEnd="6dp"
android:text="@string/next"
android:textAllCaps="false"
app:icon="@drawable/ic_keyboard_next"
app:iconGravity="end"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
</com.vanced.manager.ui.core.SlidingConstraintLayout>

View file

@ -1,72 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView
<com.vanced.manager.ui.core.SlidingConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="12dp"
app:cardCornerRadius="@dimen/eightdp"
app:cardBackgroundColor="?colorSurfaceVariant"
app:cardElevation="0dp"
app:cardPreventCornerOverlap="true">
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="12dp"
android:layout_gravity="center_horizontal"
app:cardCornerRadius="@dimen/eightdp"
app:cardBackgroundColor="?colorSurfaceVariant"
app:cardElevation="0dp"
app:cardPreventCornerOverlap="true"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/install_theme_title"
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
android:textColor="?attr/colorOnSurfaceVariant"
android:textAlignment="center"
android:textSize="18sp"
android:fontFamily="@font/exo_bold"
android:text="@string/choose_preferred_variant" />
android:layout_height="wrap_content">
<RadioGroup
android:id="@+id/vanced_variant_buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checkedButton="@id/button_nonroot"
app:layout_constraintTop_toBottomOf="@id/install_theme_title"
app:layout_constraintStart_toStartOf="parent">
<com.google.android.material.radiobutton.MaterialRadioButton
android:id="@+id/button_nonroot"
<TextView
android:id="@+id/install_theme_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/exo_semibold"
android:text="non-root"
android:textSize="18sp" />
<com.google.android.material.radiobutton.MaterialRadioButton
android:id="@+id/button_root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/exo_semibold"
app:layout_constraintTop_toTopOf="parent"
android:textColor="?attr/colorOnSurfaceVariant"
android:textAlignment="center"
android:textSize="18sp"
android:text="root"/>
android:fontFamily="@font/exo_bold"
android:text="@string/choose_preferred_variant" />
</RadioGroup>
<RadioGroup
android:id="@+id/vanced_variant_buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checkedButton="@id/button_nonroot"
app:layout_constraintTop_toBottomOf="@id/install_theme_title"
app:layout_constraintStart_toStartOf="parent">
<com.google.android.material.button.MaterialButton
android:id="@+id/vanced_next_to_language"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/vanced_variant_buttons"
android:layout_marginEnd="6dp"
android:text="@string/next"
android:textAllCaps="false"
app:icon="@drawable/ic_keyboard_next"
app:iconGravity="end"/>
<com.google.android.material.radiobutton.MaterialRadioButton
android:id="@+id/button_nonroot"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/exo_semibold"
android:text="@string/install_nonroot"
android:textSize="18sp" />
<com.google.android.material.radiobutton.MaterialRadioButton
android:id="@+id/button_root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/exo_semibold"
android:textSize="18sp"
android:text="@string/install_root"/>
</RadioGroup>
<com.google.android.material.button.MaterialButton
style="@style/Widget.AppCompat.Button.Borderless"
android:id="@+id/vanced_next_to_language"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/vanced_variant_buttons"
android:layout_marginEnd="6dp"
android:text="@string/next"
android:textAllCaps="false"
app:icon="@drawable/ic_keyboard_next"
app:iconGravity="end"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
</com.google.android.material.card.MaterialCardView>
</com.vanced.manager.ui.core.SlidingConstraintLayout>

View file

@ -2,6 +2,7 @@
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="8dp"
@ -10,7 +11,8 @@
app:cardElevation="0dp"
app:contentPaddingRight="8dp"
app:contentPaddingLeft="8dp"
app:contentPaddingBottom="8dp">
app:contentPaddingBottom="8dp"
tools:ignore="HardcodedText">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
@ -20,8 +22,9 @@
android:id="@+id/about_card_vancedTeam"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Manager Devs"
android:text="@string/manager_devs"
android:textSize="24sp"
android:textColor="?attr/colorOnSurfaceVariant"
android:fontFamily="@font/exo_semibold"
android:layout_marginTop="4dp"
app:layout_constraintTop_toTopOf="parent"

View file

@ -28,7 +28,7 @@
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="v0.3.2 alpha"
android:text="v1.0.0 beta"
android:textColor="#fff"
android:textAlignment="center"
android:textSize="18sp"

View file

@ -2,6 +2,7 @@
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="wrap_content"
android:layout_width="match_parent"
app:cardBackgroundColor="?colorSurfaceVariant"
@ -19,7 +20,8 @@
android:id="@+id/about_card_vancedTeam"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sources"
android:text="@string/sources"
android:textColor="?attr/colorOnSurfaceVariant"
android:textSize="24sp"
android:fontFamily="@font/exo_semibold"
android:layout_marginTop="2dp"
@ -59,24 +61,27 @@
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/about_license_button"
app:layout_constraintBottom_toBottomOf="parent"
app:icon="@drawable/github"
app:iconGravity="textStart"
app:iconPadding="0dp"/>
<com.google.android.material.button.MaterialButton
tools:ignore="HardcodedText"
android:id="@+id/about_license_button"
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_marginStart="16dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="GPL"
android:textSize="21sp"
android:fontFamily="@font/exo_semibold"
android:background="@android:color/transparent"
android:backgroundTint="@android:color/transparent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@id/about_github_button"
app:layout_constraintEnd_toEndOf="parent"
app:icon="@drawable/ic_assignment_black_24dp"
app:iconGravity="textStart"
app:iconPadding="0dp"/>
app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -2,6 +2,7 @@
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="8dp"
@ -10,7 +11,8 @@
app:cardElevation="0dp"
app:contentPaddingRight="8dp"
app:contentPaddingLeft="8dp"
app:contentPaddingBottom="8dp">
app:contentPaddingBottom="8dp"
tools:ignore="HardcodedText">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
@ -20,8 +22,9 @@
android:id="@+id/about_card_vancedTeam"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Vanced Team"
android:text="@string/vanced_team"
android:textSize="24sp"
android:textColor="?attr/colorOnSurfaceVariant"
android:fontFamily="@font/exo_semibold"
android:layout_marginTop="4dp"
app:layout_constraintTop_toTopOf="parent"
@ -56,7 +59,7 @@
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="- Laura Almeida (waman)"
android:text="- Laura Almeida"
android:textSize="18sp" />
</LinearLayout>

View file

@ -89,7 +89,7 @@
<com.google.android.material.button.MaterialButton
android:id="@+id/microg_installbtn"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="117dp"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:fontFamily="@font/exo_semibold"
android:text="@string/install"
@ -98,9 +98,9 @@
app:icon="@drawable/outline_cloud_download_24"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toEndOf="@+id/microg_title"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/microg_uninstallbtn"/>
app:layout_constraintBottom_toTopOf="@id/microg_uninstallbtn"
android:scrollbars="none"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/microg_settingsbtn"
@ -108,29 +108,30 @@
android:layout_width="30dp"
android:layout_height="40dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:fontFamily="@font/exo_semibold"
app:backgroundTint="?colorPrimary"
app:icon="@drawable/ic_settings_black_24dp"
app:iconGravity="textStart"
app:iconPadding="0dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toStartOf="@id/microg_installbtn"/>
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/microg_uninstallbtn"
android:scrollbars="none"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/microg_uninstallbtn"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="117dp"
android:layout_width="30dp"
android:layout_height="40dp"
android:fontFamily="@font/exo_semibold"
android:text="@string/uninstall"
app:iconPadding="0dp"
android:textAllCaps="false"
app:backgroundTint="?attr/colorError"
app:icon="@drawable/ic_delete_black_24dp"
app:iconGravity="textStart"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/microg_installbtn"/>
app:layout_constraintTop_toBottomOf="@id/microg_installbtn"
android:scrollbars="none"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="@dimen/eightdp"
app:cardBackgroundColor="?colorSurfaceVariant"
app:cardElevation="0dp"
app:cardPreventCornerOverlap="true"
app:contentPaddingRight="8dp"
app:contentPaddingLeft="8dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/network_errortxt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
android:text="@string/network_error"
android:fontFamily="@font/exo_semibold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:textColor="?attr/colorError"
android:textSize="18sp"
android:gravity="center" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>

View file

@ -90,7 +90,7 @@
android:id="@+id/vanced_installbtn"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
app:backgroundTint="?colorPrimary"
android:layout_width="117dp"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:text="@string/install"
android:textAllCaps="false"
@ -99,22 +99,24 @@
app:layout_constraintBottom_toTopOf="@id/vanced_uninstallbtn"
app:layout_constraintHorizontal_bias="1.0"
android:fontFamily="@font/exo_semibold"
app:icon="@drawable/outline_cloud_download_24"/>
app:icon="@drawable/outline_cloud_download_24"
android:scrollbars="none"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/vanced_uninstallbtn"
style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="117dp"
android:layout_width="30dp"
android:layout_height="40dp"
android:fontFamily="@font/exo_semibold"
android:text="@string/uninstall"
app:iconPadding="0dp"
android:textAllCaps="false"
app:backgroundTint="?attr/colorError"
app:icon="@drawable/ic_delete_black_24dp"
app:iconGravity="textStart"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/vanced_installbtn"/>
app:layout_constraintTop_toBottomOf="@id/vanced_installbtn"
android:scrollbars="none"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -7,9 +7,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/eightdp"
android:layout_marginEnd="@dimen/eightdp"
android:paddingTop="@dimen/eightdp"
app:cardBackgroundColor="#6958D0"
android:paddingBottom="2dp"
app:cardCornerRadius="@dimen/eightdp"
app:cardElevation="0dp">

View file

@ -3,9 +3,15 @@
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/about"
android:id="@+id/toolbar_settings"
android:title="@string/title_about"
android:icon="@drawable/ic_settings_black_24dp"
app:showAsAction="ifRoom" />
<item
android:id="@+id/toolbar_about"
android:title="@string/title_about"
android:icon="@drawable/ic_info_black_24dp"
app:showAsAction="always" />
app:showAsAction="ifRoom" />
</menu>

View file

@ -12,13 +12,21 @@
android:label="@string/title_home"
tools:layout="@layout/fragment_home">
<action
android:id="@+id/action_settingsFragment"
app:destination="@id/settings_fragment"
app:enterAnim="@animator/fragment_enter"
app:exitAnim="@animator/fragment_exit"
app:popEnterAnim="@animator/fragment_enter_pop"
app:popExitAnim="@animator/fragment_exit_pop" />
<action
android:id="@+id/toAboutFragment"
app:destination="@id/about_fragment"
app:enterAnim="@anim/nav_default_enter_anim"
app:exitAnim="@anim/nav_default_exit_anim"
app:popEnterAnim="@anim/nav_default_pop_enter_anim"
app:popExitAnim="@anim/nav_default_pop_exit_anim" />
app:enterAnim="@animator/fragment_enter"
app:exitAnim="@animator/fragment_exit"
app:popEnterAnim="@animator/fragment_enter_pop"
app:popExitAnim="@animator/fragment_exit_pop" />
<action
android:id="@+id/toInstallThemeFragment"
@ -38,10 +46,12 @@
<action
android:id="@+id/toSecretSettingsFragment"
app:destination="@id/secret_settings_fragment"
app:enterAnim="@anim/fragment_fade_enter"
app:exitAnim="@anim/fragment_fade_exit"
app:popEnterAnim="@anim/nav_default_pop_enter_anim"
app:popExitAnim="@anim/nav_default_pop_exit_anim" />
app:enterAnim="@animator/fragment_enter"
app:exitAnim="@animator/fragment_exit"
app:popEnterAnim="@animator/fragment_enter_pop"
app:popExitAnim="@animator/fragment_exit_pop" />
<deepLink app:uri="vncdmngr://open_settings_fragment" />
</fragment>
@ -65,6 +75,8 @@
app:popEnterAnim="@animator/fragment_enter_left"
app:popExitAnim="@animator/fragment_exit_right" />
<deepLink app:uri="vncdmngr://open_install_fragment" />
</fragment>
<fragment
@ -104,27 +116,16 @@
<fragment
android:id="@+id/secret_settings_fragment"
android:name="com.vanced.manager.ui.fragments.SecretSettingsFragment"
android:label="@string/title_install" />
<action
android:id="@+id/action_settingsFragment"
app:destination="@id/settings_fragment"
app:enterAnim="@anim/nav_default_enter_anim"
app:exitAnim="@anim/nav_default_exit_anim"
app:popEnterAnim="@anim/nav_default_pop_enter_anim"
app:popExitAnim="@anim/nav_default_pop_exit_anim"
app:popUpTo="@id/settings_fragment"
app:popUpToInclusive="true"/>
android:label="Secret Settings" />
<action
android:id="@+id/action_homeFragment"
app:destination="@id/home_fragment"
app:enterAnim="@anim/nav_default_enter_anim"
app:exitAnim="@anim/nav_default_exit_anim"
app:popEnterAnim="@anim/nav_default_pop_enter_anim"
app:popExitAnim="@anim/nav_default_pop_exit_anim"
app:enterAnim="@animator/fragment_enter"
app:exitAnim="@animator/fragment_exit"
app:popEnterAnim="@animator/fragment_enter_pop"
app:popExitAnim="@animator/fragment_exit_pop"
app:popUpTo="@id/home_fragment"
app:popUpToInclusive="true"/>
app:popUpToInclusive="true" />
</navigation>
</navigation>

View file

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<resources>
<!-- Global Strings -->
<string name="close">დახურვა</string>
<string name="security_context">გთხოვთ დარწმუნდით რომ აპი გადმოწერეთ vanced.app-იდან, Vanced Discord სერვერიდან ან GitHub-იდან</string>
<string name="unsupported_version_context">არ ვიცი როგორ მაგრამ თქვენ როგორღაც დააყენეთ Vanced Manager-ი ძველ Android-ის ვერსიაზე. აპი დაიხურება</string>
<string name="welcome">მოგესალმებით</string>
<string name="whoops">უფს!</string>
<!-- Main Activity -->
<string name="title_about">შესახებ</string>
<string name="title_home">საწყისი</string>
<string name="title_install">ინსტალაცია</string>
<string name="title_settings">პარამეტრები</string>
<!-- Home Page -->
<string name="brave_browser">Brave Browser</string>
<string name="changelogs">ცვლილებები</string>
<string name="install">ინსტალაცია</string>
<string name="installed">დაინსტალირებული:</string>
<string name="latest">უახლესი:</string>
<string name="n_a">N/A</string>
<string name="network_error">კავშირი არ არის</string>
<string name="reddit">Reddit</string>
<string name="update">განახლება</string>
<string name="useful_links">საჭირო ლინკები</string>
<string name="vanced_medias">Vanced სოციალურ ქსელებზე</string>
<string name="website">Website</string>
<string name="website_text">Vanced-ის ოფიციალური ვებსაიტი</string>
<string name="support_us">დაგვიჭირეთ მხარი Brave-ის გადმოწერით</string>
<!-- Settings -->
<string name="check_updates">განახლებების შემოწმება</string>
<string name="category_interface">ინტერფეისი</string>
<string name="category_manager">მენეჯერი</string>
<string name="theme">თემა</string>
<string name="theme_summary">აირჩიეთ სასურველი თემა</string>
<string name="push_notifications">შეტყობინებები</string>
<string name="push_notifications_summary">მიიღეთ შეტყობინება როდესაც განახლება გამოვა</string>
<string name="re_check">გადამოწმება</string>
<string name="update_center">განახლების ცენტრი</string>
<!-- Install Page -->
<string name="choose_preferred_language">აირჩიეთ სასურველი ენა Vanced-ისთვის</string>
<string name="choose_preferred_language_note">შენიშვნა: თუ თქვენ აირჩევთ სხვა ენას გარდა ინგლისურისა, ინგლისური მაინც იქნება დაყენებული როგორც დამატებითი ენა</string>
<string name="choose_preferred_theme">აირჩიეთ სასურველი თემა Vanced-ისთვის</string>
<string name="choose_preferred_variant">აირჩიეთ სასურველი ვარიანტი Vanced-სთვის</string>
<string name="finish">დასრულება</string>
<string name="install_light_black">ღია + შავი</string>
<string name="install_light_dark">ღია + მუქი</string>
<string name="install_nonroot">Non-root</string>
<string name="install_root">Root</string>
<string name="next">შემდეგი</string>
<!-- About Page -->
<string name="manager_devs">Manager-ის დეველოპერები</string>
<string name="sources">წყაროები</string>
<string name="vanced_team">Vanced-ის გუნდი</string>
</resources>

View file

@ -22,6 +22,7 @@
<item name="colorDisabledVariant">#66808080</item>
<item name="iconColor">?colorPrimaryVariant</item>
<item name="toolbarIconColor">?colorOnPrimary</item>
<item name="DialogBG">#111111</item>
</style>

View file

@ -14,15 +14,27 @@
</string-array>
<string-array name="languages">
<item>Coming soon(tm)</item>
<item>English</item>
<item>ქართული</item>
</string-array>
<string-array name="languages_value">
<item>0</item>
<item>en</item>
<item>ka</item>
</string-array>
<string-array name="accent_color">
<item>NaN</item>
</string-array>
<string-array name="syke">
<item>SYKE</item>
</string-array>
<string-array name="yomama">
<item>Yo</item>
<item>mama</item>
<item>fat</item>
</string-array>
</resources>

View file

@ -9,5 +9,6 @@
<attr name="colorSurfaceSurfaceVariant" format="color" />
<attr name="iconColor" format="reference|color" />
<attr name="toolbarIconColor" format="reference|color"/>
<attr name="DialogBG" format="reference|color" />
</resources>

View file

@ -11,5 +11,6 @@
<color name="GitHub">#17191A</color>
<color name="Black">#000000</color>
<color name="White">#ffffff</color>
</resources>

View file

@ -7,5 +7,7 @@
<string name="twitter" translatable="false">Twitter</string>
<string name="vanced" translatable="false">Vanced</string>
<string name="microg" translatable="false">MicroG</string>
<string name="shortcut_settings" translatable="false">Settings</string>
<string name="shortcut_install" translatable="false">Install</string>
</resources>

View file

@ -1,24 +1,28 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<resources>
<!-- Global Strings -->
<string name="close">Close</string>
<string name="security_context">Please make sure you downloaded app from vanced.app, Vanced Discord server or GitHub</string>
<string name="unsupported_version_context">I don\'t know how but you probably installed Vanced Manager on unsupported Android version. The app will now close</string>
<string name="welcome">Welcome</string>
<string name="whoops">Whoops!</string>
<!-- Main Activity -->
<string name="title_about">About</string>
<string name="title_home">Home</string>
<string name="title_install">Install</string>
<string name="title_settings">Settings</string>
<!-- Home Page -->
<string name="brave_browser">Brave Browser</string>
<string name="changelogs">Changelogs</string>
<string name="github_bot">Bot</string>
<string name="github_manager">Manager</string>
<string name="github_projects">GitHub projects</string>
<string name="github_website">Website</string>
<string name="install">Install</string>
<string name="installed">Installed:</string>
<string name="latest">Latest:</string>
<string name="n_a">N/A</string>
<string name="network_error">Network connection unavailable</string>
<string name="reddit">Reddit</string>
<string name="uninstall">Uninstall</string>
<string name="update">Update</string>
<string name="useful_links">Useful Links</string>
<string name="vanced_medias">Vanced on Social Media</string>
@ -32,11 +36,10 @@
<string name="category_manager">Manager</string>
<string name="theme">Theme</string>
<string name="theme_summary">Choose your preferred theme</string>
<string name="language">Language</string>
<string name="language_summary">Choose your preferred language</string>
<string name="push_notifications">Push Notifications</string>
<string name="push_notifications_summary">Receive push notifications when update is released</string>
<string name="re_check">Re-check</string>
<string name="update_center">Update Center</string>
<!-- Install Page -->
<string name="choose_preferred_language">Choose your preferred language for Vanced</string>
@ -44,8 +47,15 @@
<string name="choose_preferred_theme">Choose your preferred theme for Vanced</string>
<string name="choose_preferred_variant">Choose your preferred variant for Vanced</string>
<string name="finish">Finish</string>
<string name="install_light_black">Light + Black</string>
<string name="install_light_dark">Light + Dark</string>
<string name="install_nonroot">Non-root</string>
<string name="install_root">Root</string>
<string name="next">Next</string>
<string name="title_install">Install</string>
<!-- About Page -->
<string name="manager_devs">Manager Devs</string>
<string name="sources">Sources</string>
<string name="vanced_team">Vanced Team</string>
</resources>

View file

@ -19,4 +19,19 @@
<item name="android:statusBarColor">#000000</item>
</style>
<style name="DialogTheme" parent="@style/Theme.MaterialComponents.Dialog.Alert">
<item name="cornerFamily">rounded</item>
<item name="cornerSize">8dp</item>
<item name="android:textColor">?colorOnSurfaceVariant</item>
<item name="android:textColorPrimary">?colorOnSurfaceVariant</item>
<item name="colorSurface">?DialogBG</item>
<item name="android:buttonBarPositiveButtonStyle">@style/DialogPositiveButton</item>
</style>
<style name="DialogPositiveButton" parent="Widget.MaterialComponents.Button.TextButton">
<item name="android:textColor">?colorPrimary</item>
<item name="textAllCaps">false</item>
<item name="backgroundTint">@android:color/transparent</item>
</style>
</resources>

View file

@ -22,6 +22,7 @@
<item name="colorDisabledVariant">#000000</item>
<item name="iconColor">?colorPrimaryVariant</item>
<item name="toolbarIconColor">#111111</item>
<item name="DialogBG">#ffffff</item>
</style>

View file

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
<shortcut
android:enabled="true"
android:shortcutId="settings"
android:icon="@drawable/ic_shortcut_settings_black_24dp"
android:shortcutShortLabel="@string/title_settings">
<intent
android:action="com.vanced.manager.OPEN_SETTINGS"
android:targetClass="com.vanced.manager.ui.MainActivity"
android:targetPackage="com.vanced.manager"
android:data="vncdmngr://open_settings_fragment"/>
</shortcut>
<shortcut
android:enabled="true"
android:shortcutId="install"
android:icon="@drawable/shortcut_cloud_download_24"
android:shortcutShortLabel="@string/title_install">
<intent
android:action="com.vanced.manager.OPEN_INSTALL"
android:targetClass="com.vanced.manager.ui.MainActivity"
android:targetPackage="com.vanced.manager"
android:data="vncdmngr://open_install_fragment"/>
</shortcut>
</shortcuts>

View file

@ -15,28 +15,12 @@
<ListPreference
android:icon="@drawable/ic_brush_black_24dp"
android:key="theme_mode"
android:title="Theme"
android:title="@string/theme"
android:summary="@string/theme_summary"
android:entries="@array/theme_modes"
android:entryValues="@array/theme_modes_values"
android:defaultValue="LIGHT"/>
<ListPreference
android:icon="@drawable/ic_palette_black_24dp"
android:key="accent_color"
android:title="Accent Color"
app:isPreferenceVisible="false"
android:entries="@array/accent_color"
android:entryValues="@array/accent_color"/>
<ListPreference
android:key="language"
android:icon="@drawable/ic_language_black_24dp"
android:title="@string/language"
android:summary="@string/language_summary"
android:entries="@array/languages"
android:entryValues="@array/languages_value"/>
</PreferenceCategory>
<PreferenceCategory

View file

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android" >
<SwitchPreference
android:key="ss_switch"
android:title="Useless Switch"
android:summaryOff="This switch does nothing"
android:summaryOn="You're just wasting your time"/>
<CheckBoxPreference
android:key="ss_checkbox"
android:title="Useless Checkbox"
android:summaryOff="This doesn't do anything either"
android:summaryOn="Dude just stop" />
<DropDownPreference
android:key="ss_syke"
android:title="Ok this one is quite useful"
android:entries="@array/syke"
android:entryValues="@array/syke" />
<SeekBarPreference
android:key="ss_speed"
android:title="Vanced Manager Speed Controller" />
<ListPreference
android:key="ss_yomama"
android:title="This one is cool"
android:entries="@array/yomama"
android:entryValues="@array/yomama" />
</PreferenceScreen>

View file

@ -1,14 +1,14 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = '1.3.61'
ext.kotlin_version = '1.3.72'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.1'
classpath 'com.android.tools.build:gradle:3.6.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong

View file

@ -19,3 +19,4 @@ android.useAndroidX=true
android.enableJetifier=true
# Kotlin code style for this project: "official" or "obsolete":
kotlin.code.style=official
org.gradle.configureondemand=true

View file

@ -1,8 +0,0 @@
## This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
#Wed Mar 18 20:50:18 EET 2020
sdk.dir=/home/hope/Android/Sdk