moved methods out of singletones
This commit is contained in:
parent
834dad0946
commit
f47dd376b2
|
@ -92,21 +92,21 @@ class AppListAdapter(
|
||||||
init {
|
init {
|
||||||
|
|
||||||
if (prefs.getBoolean("enable_vanced", true)) {
|
if (prefs.getBoolean("enable_vanced", true)) {
|
||||||
dataModels.add(viewModel.vanced.value)
|
dataModels.add(viewModel.vancedModel.value)
|
||||||
rootDataModels.add(viewModel.vancedRoot.value)
|
rootDataModels.add(viewModel.vancedRootModel.value)
|
||||||
apps.add(context.getString(R.string.vanced))
|
apps.add(context.getString(R.string.vanced))
|
||||||
itemCount++
|
itemCount++
|
||||||
}
|
}
|
||||||
|
|
||||||
if (prefs.getBoolean("enable_music", true)) {
|
if (prefs.getBoolean("enable_music", true)) {
|
||||||
dataModels.add(viewModel.music.value)
|
dataModels.add(viewModel.musicModel.value)
|
||||||
rootDataModels.add(viewModel.musicRoot.value)
|
rootDataModels.add(viewModel.musicRootModel.value)
|
||||||
apps.add(context.getString(R.string.music))
|
apps.add(context.getString(R.string.music))
|
||||||
itemCount++
|
itemCount++
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isRoot) {
|
if (!isRoot) {
|
||||||
dataModels.add(viewModel.microg.value)
|
dataModels.add(viewModel.microgModel.value)
|
||||||
apps.add(context.getString(R.string.microg))
|
apps.add(context.getString(R.string.microg))
|
||||||
itemCount++
|
itemCount++
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ import com.crowdin.platform.CrowdinConfig
|
||||||
import com.crowdin.platform.data.model.AuthConfig
|
import com.crowdin.platform.data.model.AuthConfig
|
||||||
import com.crowdin.platform.data.remote.NetworkType
|
import com.crowdin.platform.data.remote.NetworkType
|
||||||
import com.vanced.manager.BuildConfig.*
|
import com.vanced.manager.BuildConfig.*
|
||||||
import com.vanced.manager.utils.InternetTools.loadJson
|
import com.vanced.manager.utils.loadJson
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.SupervisorJob
|
import kotlinx.coroutines.SupervisorJob
|
||||||
|
|
|
@ -4,10 +4,10 @@ import android.content.Context
|
||||||
import com.vanced.manager.R
|
import com.vanced.manager.R
|
||||||
import com.vanced.manager.utils.DownloadHelper.download
|
import com.vanced.manager.utils.DownloadHelper.download
|
||||||
import com.vanced.manager.utils.DownloadHelper.downloadProgress
|
import com.vanced.manager.utils.DownloadHelper.downloadProgress
|
||||||
import com.vanced.manager.utils.Extensions.getDefaultPrefs
|
|
||||||
import com.vanced.manager.utils.Extensions.getInstallUrl
|
|
||||||
import com.vanced.manager.utils.InternetTools.microg
|
|
||||||
import com.vanced.manager.utils.PackageHelper.install
|
import com.vanced.manager.utils.PackageHelper.install
|
||||||
|
import com.vanced.manager.utils.getDefaultPrefs
|
||||||
|
import com.vanced.manager.utils.getInstallUrl
|
||||||
|
import com.vanced.manager.utils.microg
|
||||||
|
|
||||||
object MicrogDownloader {
|
object MicrogDownloader {
|
||||||
|
|
||||||
|
|
|
@ -3,16 +3,11 @@ package com.vanced.manager.core.downloader
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
|
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
|
||||||
import com.vanced.manager.R
|
import com.vanced.manager.R
|
||||||
|
import com.vanced.manager.utils.*
|
||||||
import com.vanced.manager.utils.AppUtils.musicRootPkg
|
import com.vanced.manager.utils.AppUtils.musicRootPkg
|
||||||
import com.vanced.manager.utils.AppUtils.validateTheme
|
import com.vanced.manager.utils.AppUtils.validateTheme
|
||||||
import com.vanced.manager.utils.DeviceUtils.getArch
|
|
||||||
import com.vanced.manager.utils.DownloadHelper.download
|
import com.vanced.manager.utils.DownloadHelper.download
|
||||||
import com.vanced.manager.utils.DownloadHelper.downloadProgress
|
import com.vanced.manager.utils.DownloadHelper.downloadProgress
|
||||||
import com.vanced.manager.utils.Extensions.getInstallUrl
|
|
||||||
import com.vanced.manager.utils.Extensions.getLatestAppVersion
|
|
||||||
import com.vanced.manager.utils.InternetTools.getFileNameFromUrl
|
|
||||||
import com.vanced.manager.utils.InternetTools.music
|
|
||||||
import com.vanced.manager.utils.InternetTools.musicVersions
|
|
||||||
import com.vanced.manager.utils.PackageHelper.downloadStockCheck
|
import com.vanced.manager.utils.PackageHelper.downloadStockCheck
|
||||||
import com.vanced.manager.utils.PackageHelper.install
|
import com.vanced.manager.utils.PackageHelper.install
|
||||||
import com.vanced.manager.utils.PackageHelper.installMusicRoot
|
import com.vanced.manager.utils.PackageHelper.installMusicRoot
|
||||||
|
|
|
@ -6,17 +6,11 @@ import androidx.preference.PreferenceManager.getDefaultSharedPreferences
|
||||||
import com.google.firebase.analytics.FirebaseAnalytics
|
import com.google.firebase.analytics.FirebaseAnalytics
|
||||||
import com.google.firebase.analytics.ktx.logEvent
|
import com.google.firebase.analytics.ktx.logEvent
|
||||||
import com.vanced.manager.R
|
import com.vanced.manager.R
|
||||||
|
import com.vanced.manager.utils.*
|
||||||
import com.vanced.manager.utils.AppUtils.validateTheme
|
import com.vanced.manager.utils.AppUtils.validateTheme
|
||||||
import com.vanced.manager.utils.AppUtils.vancedRootPkg
|
import com.vanced.manager.utils.AppUtils.vancedRootPkg
|
||||||
import com.vanced.manager.utils.DeviceUtils.getArch
|
|
||||||
import com.vanced.manager.utils.DownloadHelper.download
|
import com.vanced.manager.utils.DownloadHelper.download
|
||||||
import com.vanced.manager.utils.DownloadHelper.downloadProgress
|
import com.vanced.manager.utils.DownloadHelper.downloadProgress
|
||||||
import com.vanced.manager.utils.Extensions.getInstallUrl
|
|
||||||
import com.vanced.manager.utils.Extensions.getLatestAppVersion
|
|
||||||
import com.vanced.manager.utils.InternetTools.getFileNameFromUrl
|
|
||||||
import com.vanced.manager.utils.InternetTools.vanced
|
|
||||||
import com.vanced.manager.utils.InternetTools.vancedVersions
|
|
||||||
import com.vanced.manager.utils.LanguageHelper.getDefaultVancedLanguages
|
|
||||||
import com.vanced.manager.utils.PackageHelper.downloadStockCheck
|
import com.vanced.manager.utils.PackageHelper.downloadStockCheck
|
||||||
import com.vanced.manager.utils.PackageHelper.installVanced
|
import com.vanced.manager.utils.PackageHelper.installVanced
|
||||||
import com.vanced.manager.utils.PackageHelper.installVancedRoot
|
import com.vanced.manager.utils.PackageHelper.installVancedRoot
|
||||||
|
|
|
@ -7,8 +7,8 @@ import androidx.lifecycle.LiveData
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import com.beust.klaxon.JsonObject
|
import com.beust.klaxon.JsonObject
|
||||||
import com.vanced.manager.R
|
import com.vanced.manager.R
|
||||||
import com.vanced.manager.utils.Extensions.lifecycleOwner
|
|
||||||
import com.vanced.manager.utils.PackageHelper.isPackageInstalled
|
import com.vanced.manager.utils.PackageHelper.isPackageInstalled
|
||||||
|
import com.vanced.manager.utils.lifecycleOwner
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package com.vanced.manager.model
|
package com.vanced.manager.model
|
||||||
|
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import com.github.kittinunf.fuel.core.requests.CancellableRequest
|
|
||||||
import okhttp3.ResponseBody
|
import okhttp3.ResponseBody
|
||||||
import retrofit2.Call
|
import retrofit2.Call
|
||||||
|
|
||||||
|
|
|
@ -25,13 +25,7 @@ import com.vanced.manager.ui.dialogs.ManagerUpdateDialog
|
||||||
import com.vanced.manager.ui.dialogs.URLChangeDialog
|
import com.vanced.manager.ui.dialogs.URLChangeDialog
|
||||||
import com.vanced.manager.ui.fragments.HomeFragmentDirections
|
import com.vanced.manager.ui.fragments.HomeFragmentDirections
|
||||||
import com.vanced.manager.ui.fragments.SettingsFragmentDirections
|
import com.vanced.manager.ui.fragments.SettingsFragmentDirections
|
||||||
import com.vanced.manager.utils.Extensions.show
|
import com.vanced.manager.utils.*
|
||||||
import com.vanced.manager.utils.InternetTools.manager
|
|
||||||
import com.vanced.manager.utils.LanguageContextWrapper
|
|
||||||
import com.vanced.manager.utils.LanguageHelper.authCrowdin
|
|
||||||
import com.vanced.manager.utils.LanguageHelper.onActivityResult
|
|
||||||
import com.vanced.manager.utils.PackageHelper
|
|
||||||
import com.vanced.manager.utils.ThemeHelper.setFinalTheme
|
|
||||||
|
|
||||||
|
|
||||||
class MainActivity : AppCompatActivity() {
|
class MainActivity : AppCompatActivity() {
|
||||||
|
|
|
@ -6,10 +6,10 @@ import androidx.core.content.res.ResourcesCompat
|
||||||
import androidx.core.graphics.ColorUtils
|
import androidx.core.graphics.ColorUtils
|
||||||
import com.google.android.material.button.MaterialButton
|
import com.google.android.material.button.MaterialButton
|
||||||
import com.vanced.manager.R
|
import com.vanced.manager.R
|
||||||
import com.vanced.manager.utils.Extensions.getDefaultPrefs
|
import com.vanced.manager.utils.accentColor
|
||||||
import com.vanced.manager.utils.Extensions.lifecycleOwner
|
import com.vanced.manager.utils.defAccentColor
|
||||||
import com.vanced.manager.utils.ThemeHelper.accentColor
|
import com.vanced.manager.utils.getDefaultPrefs
|
||||||
import com.vanced.manager.utils.ThemeHelper.defAccentColor
|
import com.vanced.manager.utils.lifecycleOwner
|
||||||
|
|
||||||
class ThemedMaterialButton @JvmOverloads constructor(
|
class ThemedMaterialButton @JvmOverloads constructor(
|
||||||
context: Context,
|
context: Context,
|
||||||
|
|
|
@ -5,10 +5,8 @@ import android.content.res.ColorStateList
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import com.google.android.material.checkbox.MaterialCheckBox
|
import com.google.android.material.checkbox.MaterialCheckBox
|
||||||
import com.vanced.manager.R
|
import com.vanced.manager.R
|
||||||
import com.vanced.manager.utils.Extensions.getDefaultPrefs
|
import com.vanced.manager.utils.defAccentColor
|
||||||
import com.vanced.manager.utils.Extensions.lifecycleOwner
|
import com.vanced.manager.utils.getDefaultPrefs
|
||||||
import com.vanced.manager.utils.ThemeHelper.accentColor
|
|
||||||
import com.vanced.manager.utils.ThemeHelper.defAccentColor
|
|
||||||
|
|
||||||
class ThemedMaterialCheckbox @JvmOverloads constructor(
|
class ThemedMaterialCheckbox @JvmOverloads constructor(
|
||||||
context: Context,
|
context: Context,
|
||||||
|
|
|
@ -5,10 +5,8 @@ import android.content.res.ColorStateList
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import com.google.android.material.radiobutton.MaterialRadioButton
|
import com.google.android.material.radiobutton.MaterialRadioButton
|
||||||
import com.vanced.manager.R
|
import com.vanced.manager.R
|
||||||
import com.vanced.manager.utils.Extensions.getDefaultPrefs
|
import com.vanced.manager.utils.defAccentColor
|
||||||
import com.vanced.manager.utils.Extensions.lifecycleOwner
|
import com.vanced.manager.utils.getDefaultPrefs
|
||||||
import com.vanced.manager.utils.ThemeHelper.accentColor
|
|
||||||
import com.vanced.manager.utils.ThemeHelper.defAccentColor
|
|
||||||
|
|
||||||
class ThemedMaterialRadioButton @JvmOverloads constructor(
|
class ThemedMaterialRadioButton @JvmOverloads constructor(
|
||||||
context: Context,
|
context: Context,
|
||||||
|
|
|
@ -4,8 +4,8 @@ import android.content.Context
|
||||||
import android.content.res.ColorStateList
|
import android.content.res.ColorStateList
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import com.google.android.material.slider.Slider
|
import com.google.android.material.slider.Slider
|
||||||
import com.vanced.manager.utils.Extensions.getDefaultPrefs
|
import com.vanced.manager.utils.defAccentColor
|
||||||
import com.vanced.manager.utils.ThemeHelper
|
import com.vanced.manager.utils.getDefaultPrefs
|
||||||
|
|
||||||
class ThemedMaterialSlider@JvmOverloads constructor(
|
class ThemedMaterialSlider@JvmOverloads constructor(
|
||||||
context: Context,
|
context: Context,
|
||||||
|
@ -14,7 +14,7 @@ class ThemedMaterialSlider@JvmOverloads constructor(
|
||||||
) : Slider(context, attributeSet, defStyleAttr) {
|
) : Slider(context, attributeSet, defStyleAttr) {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
thumbStrokeColor = ColorStateList.valueOf(context.getDefaultPrefs().getInt("manager_accent_color", ThemeHelper.defAccentColor))
|
thumbStrokeColor = ColorStateList.valueOf(context.getDefaultPrefs().getInt("manager_accent_color", defAccentColor))
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -5,10 +5,10 @@ import android.content.res.ColorStateList
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import androidx.core.graphics.ColorUtils
|
import androidx.core.graphics.ColorUtils
|
||||||
import com.google.android.material.button.MaterialButton
|
import com.google.android.material.button.MaterialButton
|
||||||
import com.vanced.manager.utils.Extensions.getDefaultPrefs
|
import com.vanced.manager.utils.accentColor
|
||||||
import com.vanced.manager.utils.Extensions.lifecycleOwner
|
import com.vanced.manager.utils.defAccentColor
|
||||||
import com.vanced.manager.utils.ThemeHelper.accentColor
|
import com.vanced.manager.utils.getDefaultPrefs
|
||||||
import com.vanced.manager.utils.ThemeHelper.defAccentColor
|
import com.vanced.manager.utils.lifecycleOwner
|
||||||
|
|
||||||
|
|
||||||
class ThemedOutlinedMaterialButton @JvmOverloads constructor(
|
class ThemedOutlinedMaterialButton @JvmOverloads constructor(
|
||||||
|
|
|
@ -4,8 +4,8 @@ import android.content.Context
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||||
import com.vanced.manager.R
|
import com.vanced.manager.R
|
||||||
import com.vanced.manager.utils.Extensions.getDefaultPrefs
|
import com.vanced.manager.utils.defAccentColor
|
||||||
import com.vanced.manager.utils.ThemeHelper.defAccentColor
|
import com.vanced.manager.utils.getDefaultPrefs
|
||||||
|
|
||||||
class ThemedSwipeRefreshlayout @JvmOverloads constructor(
|
class ThemedSwipeRefreshlayout @JvmOverloads constructor(
|
||||||
context: Context,
|
context: Context,
|
||||||
|
|
|
@ -8,10 +8,10 @@ import androidx.appcompat.widget.SwitchCompat
|
||||||
import androidx.core.graphics.ColorUtils
|
import androidx.core.graphics.ColorUtils
|
||||||
import androidx.core.graphics.drawable.DrawableCompat
|
import androidx.core.graphics.drawable.DrawableCompat
|
||||||
import com.vanced.manager.R
|
import com.vanced.manager.R
|
||||||
import com.vanced.manager.utils.Extensions.getDefaultPrefs
|
import com.vanced.manager.utils.accentColor
|
||||||
import com.vanced.manager.utils.Extensions.lifecycleOwner
|
import com.vanced.manager.utils.defAccentColor
|
||||||
import com.vanced.manager.utils.ThemeHelper.accentColor
|
import com.vanced.manager.utils.getDefaultPrefs
|
||||||
import com.vanced.manager.utils.ThemeHelper.defAccentColor
|
import com.vanced.manager.utils.lifecycleOwner
|
||||||
|
|
||||||
class ThemedSwitchCompat @JvmOverloads constructor(
|
class ThemedSwitchCompat @JvmOverloads constructor(
|
||||||
context: Context,
|
context: Context,
|
||||||
|
|
|
@ -3,10 +3,10 @@ package com.vanced.manager.ui.core
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import androidx.appcompat.widget.AppCompatTextView
|
import androidx.appcompat.widget.AppCompatTextView
|
||||||
import com.vanced.manager.utils.Extensions.getDefaultPrefs
|
import com.vanced.manager.utils.accentColor
|
||||||
import com.vanced.manager.utils.Extensions.lifecycleOwner
|
import com.vanced.manager.utils.defAccentColor
|
||||||
import com.vanced.manager.utils.ThemeHelper.accentColor
|
import com.vanced.manager.utils.getDefaultPrefs
|
||||||
import com.vanced.manager.utils.ThemeHelper.defAccentColor
|
import com.vanced.manager.utils.lifecycleOwner
|
||||||
|
|
||||||
class ThemedTextView @JvmOverloads constructor(
|
class ThemedTextView @JvmOverloads constructor(
|
||||||
context: Context,
|
context: Context,
|
||||||
|
|
|
@ -18,7 +18,7 @@ import com.vanced.manager.core.downloader.VancedDownloader.downloadVanced
|
||||||
import com.vanced.manager.core.ui.base.BindingDialogFragment
|
import com.vanced.manager.core.ui.base.BindingDialogFragment
|
||||||
import com.vanced.manager.databinding.DialogAppDownloadBinding
|
import com.vanced.manager.databinding.DialogAppDownloadBinding
|
||||||
import com.vanced.manager.utils.DownloadHelper.downloadProgress
|
import com.vanced.manager.utils.DownloadHelper.downloadProgress
|
||||||
import com.vanced.manager.utils.Extensions.applyAccent
|
import com.vanced.manager.utils.applyAccent
|
||||||
|
|
||||||
class AppDownloadDialog : BindingDialogFragment<DialogAppDownloadBinding>() {
|
class AppDownloadDialog : BindingDialogFragment<DialogAppDownloadBinding>() {
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,8 @@ import com.vanced.manager.core.ui.base.BindingBottomSheetDialogFragment
|
||||||
import com.vanced.manager.core.ui.ext.showDialog
|
import com.vanced.manager.core.ui.ext.showDialog
|
||||||
import com.vanced.manager.databinding.DialogBottomRadioButtonBinding
|
import com.vanced.manager.databinding.DialogBottomRadioButtonBinding
|
||||||
import com.vanced.manager.ui.core.ThemedMaterialRadioButton
|
import com.vanced.manager.ui.core.ThemedMaterialRadioButton
|
||||||
import com.vanced.manager.utils.Extensions.getCheckedButtonTag
|
import com.vanced.manager.utils.getCheckedButtonTag
|
||||||
import com.vanced.manager.utils.Extensions.getDefaultPrefs
|
import com.vanced.manager.utils.getDefaultPrefs
|
||||||
|
|
||||||
class AppVersionSelectorDialog : BindingBottomSheetDialogFragment<DialogBottomRadioButtonBinding>() {
|
class AppVersionSelectorDialog : BindingBottomSheetDialogFragment<DialogBottomRadioButtonBinding>() {
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,9 @@ import androidx.core.content.edit
|
||||||
import androidx.preference.PreferenceManager
|
import androidx.preference.PreferenceManager
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import com.vanced.manager.R
|
import com.vanced.manager.R
|
||||||
import com.vanced.manager.utils.Extensions.applyAccent
|
import com.vanced.manager.utils.applyAccent
|
||||||
import com.vanced.manager.utils.InternetTools.openUrl
|
import com.vanced.manager.utils.isMiui
|
||||||
import com.vanced.manager.utils.MiuiHelper
|
import com.vanced.manager.utils.openUrl
|
||||||
|
|
||||||
object DialogContainer {
|
object DialogContainer {
|
||||||
|
|
||||||
|
@ -19,12 +19,12 @@ object DialogContainer {
|
||||||
dialog.dismiss()
|
dialog.dismiss()
|
||||||
}
|
}
|
||||||
setOnDismissListener {
|
setOnDismissListener {
|
||||||
if (MiuiHelper.isMiui()) {
|
if (isMiui()) {
|
||||||
applyAccentMiuiDialog(context)
|
applyAccentMiuiDialog(context)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setOnCancelListener {
|
setOnCancelListener {
|
||||||
if (MiuiHelper.isMiui()) {
|
if (isMiui()) {
|
||||||
applyAccentMiuiDialog(context)
|
applyAccentMiuiDialog(context)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,10 +16,10 @@ import com.madrapps.pikolo.listeners.OnColorSelectionListener
|
||||||
import com.vanced.manager.R
|
import com.vanced.manager.R
|
||||||
import com.vanced.manager.core.ui.base.BindingDialogFragment
|
import com.vanced.manager.core.ui.base.BindingDialogFragment
|
||||||
import com.vanced.manager.databinding.DialogManagerAccentColorBinding
|
import com.vanced.manager.databinding.DialogManagerAccentColorBinding
|
||||||
import com.vanced.manager.utils.Extensions.toHex
|
import com.vanced.manager.utils.accentColor
|
||||||
import com.vanced.manager.utils.ThemeHelper.accentColor
|
import com.vanced.manager.utils.defAccentColor
|
||||||
import com.vanced.manager.utils.ThemeHelper.defAccentColor
|
import com.vanced.manager.utils.mutableAccentColor
|
||||||
import com.vanced.manager.utils.ThemeHelper.mutableAccentColor
|
import com.vanced.manager.utils.toHex
|
||||||
|
|
||||||
class ManagerAccentColorDialog : BindingDialogFragment<DialogManagerAccentColorBinding>() {
|
class ManagerAccentColorDialog : BindingDialogFragment<DialogManagerAccentColorBinding>() {
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,8 @@ import com.vanced.manager.BuildConfig.MANAGER_LANGUAGES
|
||||||
import com.vanced.manager.core.ui.base.BindingBottomSheetDialogFragment
|
import com.vanced.manager.core.ui.base.BindingBottomSheetDialogFragment
|
||||||
import com.vanced.manager.databinding.DialogManagerLanguageBinding
|
import com.vanced.manager.databinding.DialogManagerLanguageBinding
|
||||||
import com.vanced.manager.ui.core.ThemedMaterialRadioButton
|
import com.vanced.manager.ui.core.ThemedMaterialRadioButton
|
||||||
import com.vanced.manager.utils.Extensions.getCheckedButtonTag
|
import com.vanced.manager.utils.getCheckedButtonTag
|
||||||
import com.vanced.manager.utils.LanguageHelper.getLanguageFormat
|
import com.vanced.manager.utils.getLanguageFormat
|
||||||
|
|
||||||
class ManagerLanguageDialog : BindingBottomSheetDialogFragment<DialogManagerLanguageBinding>() {
|
class ManagerLanguageDialog : BindingBottomSheetDialogFragment<DialogManagerLanguageBinding>() {
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ import androidx.preference.PreferenceManager.getDefaultSharedPreferences
|
||||||
import com.google.android.material.radiobutton.MaterialRadioButton
|
import com.google.android.material.radiobutton.MaterialRadioButton
|
||||||
import com.vanced.manager.core.ui.base.BindingBottomSheetDialogFragment
|
import com.vanced.manager.core.ui.base.BindingBottomSheetDialogFragment
|
||||||
import com.vanced.manager.databinding.DialogManagerThemeBinding
|
import com.vanced.manager.databinding.DialogManagerThemeBinding
|
||||||
import com.vanced.manager.utils.Extensions.getCheckedButtonTag
|
import com.vanced.manager.utils.getCheckedButtonTag
|
||||||
|
|
||||||
class ManagerThemeDialog : BindingBottomSheetDialogFragment<DialogManagerThemeBinding>() {
|
class ManagerThemeDialog : BindingBottomSheetDialogFragment<DialogManagerThemeBinding>() {
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,8 @@ import com.vanced.manager.core.ui.base.BindingDialogFragment
|
||||||
import com.vanced.manager.databinding.DialogManagerUpdateBinding
|
import com.vanced.manager.databinding.DialogManagerUpdateBinding
|
||||||
import com.vanced.manager.utils.DownloadHelper.downloadManager
|
import com.vanced.manager.utils.DownloadHelper.downloadManager
|
||||||
import com.vanced.manager.utils.DownloadHelper.downloadProgress
|
import com.vanced.manager.utils.DownloadHelper.downloadProgress
|
||||||
import com.vanced.manager.utils.Extensions.applyAccent
|
import com.vanced.manager.utils.applyAccent
|
||||||
import com.vanced.manager.utils.InternetTools.manager
|
import com.vanced.manager.utils.manager
|
||||||
|
|
||||||
class ManagerUpdateDialog : BindingDialogFragment<DialogManagerUpdateBinding>() {
|
class ManagerUpdateDialog : BindingDialogFragment<DialogManagerUpdateBinding>() {
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ import com.google.android.material.radiobutton.MaterialRadioButton
|
||||||
import com.topjohnwu.superuser.Shell
|
import com.topjohnwu.superuser.Shell
|
||||||
import com.vanced.manager.core.ui.base.BindingBottomSheetDialogFragment
|
import com.vanced.manager.core.ui.base.BindingBottomSheetDialogFragment
|
||||||
import com.vanced.manager.databinding.DialogManagerVariantBinding
|
import com.vanced.manager.databinding.DialogManagerVariantBinding
|
||||||
import com.vanced.manager.utils.Extensions.getCheckedButtonTag
|
import com.vanced.manager.utils.getCheckedButtonTag
|
||||||
|
|
||||||
class ManagerVariantDialog : BindingBottomSheetDialogFragment<DialogManagerVariantBinding>() {
|
class ManagerVariantDialog : BindingBottomSheetDialogFragment<DialogManagerVariantBinding>() {
|
||||||
|
|
||||||
|
|
|
@ -7,9 +7,9 @@ import com.vanced.manager.R
|
||||||
import com.vanced.manager.core.ui.base.BindingBottomSheetDialogFragment
|
import com.vanced.manager.core.ui.base.BindingBottomSheetDialogFragment
|
||||||
import com.vanced.manager.core.ui.ext.showDialog
|
import com.vanced.manager.core.ui.ext.showDialog
|
||||||
import com.vanced.manager.databinding.DialogMusicPreferencesBinding
|
import com.vanced.manager.databinding.DialogMusicPreferencesBinding
|
||||||
import com.vanced.manager.utils.Extensions.convertToAppVersions
|
import com.vanced.manager.utils.convertToAppVersions
|
||||||
import com.vanced.manager.utils.Extensions.getDefaultPrefs
|
import com.vanced.manager.utils.getDefaultPrefs
|
||||||
import com.vanced.manager.utils.InternetTools.musicVersions
|
import com.vanced.manager.utils.musicVersions
|
||||||
|
|
||||||
class MusicPreferencesDialog : BindingBottomSheetDialogFragment<DialogMusicPreferencesBinding>() {
|
class MusicPreferencesDialog : BindingBottomSheetDialogFragment<DialogMusicPreferencesBinding>() {
|
||||||
|
|
||||||
|
|
|
@ -8,12 +8,12 @@ import androidx.core.content.edit
|
||||||
import com.vanced.manager.R
|
import com.vanced.manager.R
|
||||||
import com.vanced.manager.core.ui.base.BindingDialogFragment
|
import com.vanced.manager.core.ui.base.BindingDialogFragment
|
||||||
import com.vanced.manager.databinding.DialogServicedTimerBinding
|
import com.vanced.manager.databinding.DialogServicedTimerBinding
|
||||||
import com.vanced.manager.utils.Extensions.getDefaultPrefs
|
|
||||||
import com.vanced.manager.utils.Extensions.writeServiceDScript
|
|
||||||
import com.vanced.manager.utils.PackageHelper
|
import com.vanced.manager.utils.PackageHelper
|
||||||
import com.vanced.manager.utils.PackageHelper.getPackageDir
|
import com.vanced.manager.utils.PackageHelper.getPackageDir
|
||||||
import com.vanced.manager.utils.PackageHelper.getPkgNameRoot
|
import com.vanced.manager.utils.PackageHelper.getPkgNameRoot
|
||||||
import com.vanced.manager.utils.PackageHelper.scriptExists
|
import com.vanced.manager.utils.PackageHelper.scriptExists
|
||||||
|
import com.vanced.manager.utils.getDefaultPrefs
|
||||||
|
import com.vanced.manager.utils.writeServiceDScript
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,8 @@ import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
|
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
|
||||||
import com.vanced.manager.core.ui.base.BindingDialogFragment
|
import com.vanced.manager.core.ui.base.BindingDialogFragment
|
||||||
import com.vanced.manager.databinding.DialogCustomUrlBinding
|
import com.vanced.manager.databinding.DialogCustomUrlBinding
|
||||||
import com.vanced.manager.utils.InternetTools.baseUrl
|
import com.vanced.manager.utils.baseUrl
|
||||||
import com.vanced.manager.utils.InternetTools.loadJson
|
import com.vanced.manager.utils.loadJson
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
class URLChangeDialog : BindingDialogFragment<DialogCustomUrlBinding>() {
|
class URLChangeDialog : BindingDialogFragment<DialogCustomUrlBinding>() {
|
||||||
|
|
|
@ -17,8 +17,8 @@ import com.vanced.manager.core.ui.base.BindingBottomSheetDialogFragment
|
||||||
import com.vanced.manager.core.ui.ext.showDialog
|
import com.vanced.manager.core.ui.ext.showDialog
|
||||||
import com.vanced.manager.databinding.DialogVancedLanguageSelectionBinding
|
import com.vanced.manager.databinding.DialogVancedLanguageSelectionBinding
|
||||||
import com.vanced.manager.ui.core.ThemedMaterialCheckbox
|
import com.vanced.manager.ui.core.ThemedMaterialCheckbox
|
||||||
import com.vanced.manager.utils.InternetTools.vanced
|
import com.vanced.manager.utils.getDefaultVancedLanguages
|
||||||
import com.vanced.manager.utils.LanguageHelper.getDefaultVancedLanguages
|
import com.vanced.manager.utils.vanced
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class VancedLanguageSelectionDialog : BindingBottomSheetDialogFragment<DialogVancedLanguageSelectionBinding>() {
|
class VancedLanguageSelectionDialog : BindingBottomSheetDialogFragment<DialogVancedLanguageSelectionBinding>() {
|
||||||
|
|
|
@ -9,11 +9,7 @@ import com.vanced.manager.R
|
||||||
import com.vanced.manager.core.ui.base.BindingBottomSheetDialogFragment
|
import com.vanced.manager.core.ui.base.BindingBottomSheetDialogFragment
|
||||||
import com.vanced.manager.core.ui.ext.showDialog
|
import com.vanced.manager.core.ui.ext.showDialog
|
||||||
import com.vanced.manager.databinding.DialogVancedPreferencesBinding
|
import com.vanced.manager.databinding.DialogVancedPreferencesBinding
|
||||||
import com.vanced.manager.utils.Extensions.convertToAppTheme
|
import com.vanced.manager.utils.*
|
||||||
import com.vanced.manager.utils.Extensions.convertToAppVersions
|
|
||||||
import com.vanced.manager.utils.Extensions.getDefaultPrefs
|
|
||||||
import com.vanced.manager.utils.InternetTools.vancedVersions
|
|
||||||
import com.vanced.manager.utils.LanguageHelper.getDefaultVancedLanguages
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class VancedPreferencesDialog : BindingBottomSheetDialogFragment<DialogVancedPreferencesBinding>() {
|
class VancedPreferencesDialog : BindingBottomSheetDialogFragment<DialogVancedPreferencesBinding>() {
|
||||||
|
|
|
@ -11,9 +11,9 @@ import com.vanced.manager.core.ui.base.BindingBottomSheetDialogFragment
|
||||||
import com.vanced.manager.core.ui.ext.showDialog
|
import com.vanced.manager.core.ui.ext.showDialog
|
||||||
import com.vanced.manager.databinding.DialogBottomRadioButtonBinding
|
import com.vanced.manager.databinding.DialogBottomRadioButtonBinding
|
||||||
import com.vanced.manager.ui.core.ThemedMaterialRadioButton
|
import com.vanced.manager.ui.core.ThemedMaterialRadioButton
|
||||||
import com.vanced.manager.utils.Extensions.convertToAppTheme
|
import com.vanced.manager.utils.convertToAppTheme
|
||||||
import com.vanced.manager.utils.Extensions.getCheckedButtonTag
|
import com.vanced.manager.utils.getCheckedButtonTag
|
||||||
import com.vanced.manager.utils.InternetTools.vanced
|
import com.vanced.manager.utils.vanced
|
||||||
|
|
||||||
class VancedThemeSelectorDialog : BindingBottomSheetDialogFragment<DialogBottomRadioButtonBinding>() {
|
class VancedThemeSelectorDialog : BindingBottomSheetDialogFragment<DialogBottomRadioButtonBinding>() {
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ import com.vanced.manager.core.ui.ext.showDialog
|
||||||
import com.vanced.manager.databinding.FragmentAboutBinding
|
import com.vanced.manager.databinding.FragmentAboutBinding
|
||||||
import com.vanced.manager.ui.dialogs.AppInfoDialog
|
import com.vanced.manager.ui.dialogs.AppInfoDialog
|
||||||
import com.vanced.manager.ui.viewmodels.AboutViewModel
|
import com.vanced.manager.ui.viewmodels.AboutViewModel
|
||||||
import com.vanced.manager.utils.InternetTools.manager
|
import com.vanced.manager.utils.manager
|
||||||
|
|
||||||
class AboutFragment : BindingFragment<FragmentAboutBinding>() {
|
class AboutFragment : BindingFragment<FragmentAboutBinding>() {
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ import com.vanced.manager.databinding.FragmentDevSettingsBinding
|
||||||
import com.vanced.manager.ui.WelcomeActivity
|
import com.vanced.manager.ui.WelcomeActivity
|
||||||
import com.vanced.manager.ui.dialogs.ManagerUpdateDialog
|
import com.vanced.manager.ui.dialogs.ManagerUpdateDialog
|
||||||
import com.vanced.manager.ui.dialogs.URLChangeDialog
|
import com.vanced.manager.ui.dialogs.URLChangeDialog
|
||||||
import com.vanced.manager.utils.LanguageHelper.authCrowdin
|
import com.vanced.manager.utils.authCrowdin
|
||||||
|
|
||||||
class DevSettingsFragment : BindingFragment<FragmentDevSettingsBinding>() {
|
class DevSettingsFragment : BindingFragment<FragmentDevSettingsBinding>() {
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ import com.vanced.manager.databinding.FragmentHomeBinding
|
||||||
import com.vanced.manager.ui.dialogs.DialogContainer.installAlertBuilder
|
import com.vanced.manager.ui.dialogs.DialogContainer.installAlertBuilder
|
||||||
import com.vanced.manager.ui.viewmodels.HomeViewModel
|
import com.vanced.manager.ui.viewmodels.HomeViewModel
|
||||||
import com.vanced.manager.ui.viewmodels.HomeViewModelFactory
|
import com.vanced.manager.ui.viewmodels.HomeViewModelFactory
|
||||||
import com.vanced.manager.utils.InternetTools.isFetching
|
import com.vanced.manager.utils.isFetching
|
||||||
|
|
||||||
open class HomeFragment : BindingFragment<FragmentHomeBinding>() {
|
open class HomeFragment : BindingFragment<FragmentHomeBinding>() {
|
||||||
|
|
||||||
|
|
|
@ -18,10 +18,10 @@ import com.vanced.manager.core.ui.base.BindingFragment
|
||||||
import com.vanced.manager.core.ui.ext.showDialog
|
import com.vanced.manager.core.ui.ext.showDialog
|
||||||
import com.vanced.manager.databinding.FragmentSettingsBinding
|
import com.vanced.manager.databinding.FragmentSettingsBinding
|
||||||
import com.vanced.manager.ui.dialogs.*
|
import com.vanced.manager.ui.dialogs.*
|
||||||
import com.vanced.manager.utils.Extensions.toHex
|
import com.vanced.manager.utils.accentColor
|
||||||
import com.vanced.manager.utils.LanguageHelper.getLanguageFormat
|
import com.vanced.manager.utils.defAccentColor
|
||||||
import com.vanced.manager.utils.ThemeHelper.accentColor
|
import com.vanced.manager.utils.getLanguageFormat
|
||||||
import com.vanced.manager.utils.ThemeHelper.defAccentColor
|
import com.vanced.manager.utils.toHex
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
class SettingsFragment : BindingFragment<FragmentSettingsBinding>() {
|
class SettingsFragment : BindingFragment<FragmentSettingsBinding>() {
|
||||||
|
|
|
@ -3,12 +3,12 @@ package com.vanced.manager.ui.viewmodels
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import androidx.lifecycle.AndroidViewModel
|
import androidx.lifecycle.AndroidViewModel
|
||||||
import com.vanced.manager.R
|
import com.vanced.manager.R
|
||||||
import com.vanced.manager.utils.InternetTools
|
import com.vanced.manager.utils.openUrl
|
||||||
|
|
||||||
class AboutViewModel(application: Application): AndroidViewModel(application) {
|
class AboutViewModel(application: Application): AndroidViewModel(application) {
|
||||||
|
|
||||||
fun openUrl(url: String) {
|
fun openUrl(url: String) {
|
||||||
InternetTools.openUrl(url, R.color.GitHub, getApplication())
|
openUrl(url, R.color.GitHub, getApplication())
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -26,15 +26,13 @@ import com.vanced.manager.ui.dialogs.AppDownloadDialog
|
||||||
import com.vanced.manager.ui.dialogs.InstallationFilesDetectedDialog
|
import com.vanced.manager.ui.dialogs.InstallationFilesDetectedDialog
|
||||||
import com.vanced.manager.ui.dialogs.MusicPreferencesDialog
|
import com.vanced.manager.ui.dialogs.MusicPreferencesDialog
|
||||||
import com.vanced.manager.ui.dialogs.VancedPreferencesDialog
|
import com.vanced.manager.ui.dialogs.VancedPreferencesDialog
|
||||||
|
import com.vanced.manager.utils.*
|
||||||
import com.vanced.manager.utils.AppUtils.managerPkg
|
import com.vanced.manager.utils.AppUtils.managerPkg
|
||||||
import com.vanced.manager.utils.AppUtils.microgPkg
|
import com.vanced.manager.utils.AppUtils.microgPkg
|
||||||
import com.vanced.manager.utils.AppUtils.musicPkg
|
import com.vanced.manager.utils.AppUtils.musicPkg
|
||||||
import com.vanced.manager.utils.AppUtils.musicRootPkg
|
import com.vanced.manager.utils.AppUtils.musicRootPkg
|
||||||
import com.vanced.manager.utils.AppUtils.vancedPkg
|
import com.vanced.manager.utils.AppUtils.vancedPkg
|
||||||
import com.vanced.manager.utils.AppUtils.vancedRootPkg
|
import com.vanced.manager.utils.AppUtils.vancedRootPkg
|
||||||
import com.vanced.manager.utils.Extensions.show
|
|
||||||
import com.vanced.manager.utils.InternetTools
|
|
||||||
import com.vanced.manager.utils.InternetTools.loadJson
|
|
||||||
import com.vanced.manager.utils.PackageHelper.apkExist
|
import com.vanced.manager.utils.PackageHelper.apkExist
|
||||||
import com.vanced.manager.utils.PackageHelper.musicApkExists
|
import com.vanced.manager.utils.PackageHelper.musicApkExists
|
||||||
import com.vanced.manager.utils.PackageHelper.uninstallApk
|
import com.vanced.manager.utils.PackageHelper.uninstallApk
|
||||||
|
@ -46,12 +44,12 @@ open class HomeViewModel(private val activity: FragmentActivity): ViewModel() {
|
||||||
|
|
||||||
private val prefs = getDefaultSharedPreferences(activity)
|
private val prefs = getDefaultSharedPreferences(activity)
|
||||||
|
|
||||||
val vanced = MutableLiveData<DataModel>()
|
val vancedModel = MutableLiveData<DataModel>()
|
||||||
val vancedRoot = MutableLiveData<RootDataModel>()
|
val vancedRootModel = MutableLiveData<RootDataModel>()
|
||||||
val microg = MutableLiveData<DataModel>()
|
val microgModel = MutableLiveData<DataModel>()
|
||||||
val music = MutableLiveData<DataModel>()
|
val musicModel = MutableLiveData<DataModel>()
|
||||||
val musicRoot = MutableLiveData<RootDataModel>()
|
val musicRootModel = MutableLiveData<RootDataModel>()
|
||||||
val manager = MutableLiveData<DataModel>()
|
val managerModel = MutableLiveData<DataModel>()
|
||||||
|
|
||||||
fun fetchData() {
|
fun fetchData() {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
|
@ -73,7 +71,7 @@ open class HomeViewModel(private val activity: FragmentActivity): ViewModel() {
|
||||||
else -> R.color.Vanced
|
else -> R.color.Vanced
|
||||||
}
|
}
|
||||||
|
|
||||||
InternetTools.openUrl(url, color, activity)
|
openUrl(url, color, activity)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun launchApp(app: String, isRoot: Boolean) {
|
fun launchApp(app: String, isRoot: Boolean) {
|
||||||
|
@ -93,7 +91,7 @@ open class HomeViewModel(private val activity: FragmentActivity): ViewModel() {
|
||||||
|
|
||||||
fun openInstallDialog(view: View, app: String) {
|
fun openInstallDialog(view: View, app: String) {
|
||||||
val variant = prefs.getString("vanced_variant", "nonroot")
|
val variant = prefs.getString("vanced_variant", "nonroot")
|
||||||
if (variant == "nonroot" && app != activity.getString(R.string.microg) && !microg.value?.isAppInstalled?.value!!) {
|
if (variant == "nonroot" && app != activity.getString(R.string.microg) && !microgModel.value?.isAppInstalled?.value!!) {
|
||||||
microgToast.show()
|
microgToast.show()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -157,11 +155,11 @@ open class HomeViewModel(private val activity: FragmentActivity): ViewModel() {
|
||||||
}
|
}
|
||||||
|
|
||||||
init {
|
init {
|
||||||
vanced.value = DataModel(InternetTools.vanced, activity, vancedPkg, activity.getString(R.string.vanced), AppCompatResources.getDrawable(activity, R.drawable.ic_vanced))
|
vancedModel.value = DataModel(vanced, activity, vancedPkg, activity.getString(R.string.vanced), AppCompatResources.getDrawable(activity, R.drawable.ic_vanced))
|
||||||
vancedRoot.value = RootDataModel(InternetTools.vanced, activity, vancedRootPkg, activity.getString(R.string.vanced), AppCompatResources.getDrawable(activity, R.drawable.ic_vanced), "vanced")
|
vancedRootModel.value = RootDataModel(vanced, activity, vancedRootPkg, activity.getString(R.string.vanced), AppCompatResources.getDrawable(activity, R.drawable.ic_vanced), "vanced")
|
||||||
music.value = DataModel(InternetTools.music, activity, musicPkg, activity.getString(R.string.music), AppCompatResources.getDrawable(activity, R.drawable.ic_music))
|
musicModel.value = DataModel(music, activity, musicPkg, activity.getString(R.string.music), AppCompatResources.getDrawable(activity, R.drawable.ic_music))
|
||||||
musicRoot.value = RootDataModel(InternetTools.music, activity, musicRootPkg, activity.getString(R.string.music), AppCompatResources.getDrawable(activity, R.drawable.ic_music), "music")
|
musicRootModel.value = RootDataModel(music, activity, musicRootPkg, activity.getString(R.string.music), AppCompatResources.getDrawable(activity, R.drawable.ic_music), "music")
|
||||||
microg.value = DataModel(InternetTools.microg, activity, microgPkg, activity.getString(R.string.microg), AppCompatResources.getDrawable(activity, R.drawable.ic_microg))
|
microgModel.value = DataModel(microg, activity, microgPkg, activity.getString(R.string.microg), AppCompatResources.getDrawable(activity, R.drawable.ic_microg))
|
||||||
manager.value = DataModel(InternetTools.manager, activity, managerPkg, activity.getString(R.string.app_name), AppCompatResources.getDrawable(activity, R.mipmap.ic_launcher))
|
managerModel.value = DataModel(manager, activity, managerPkg, activity.getString(R.string.app_name), AppCompatResources.getDrawable(activity, R.mipmap.ic_launcher))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,6 @@ import com.vanced.manager.R
|
||||||
import com.vanced.manager.ui.dialogs.AppDownloadDialog
|
import com.vanced.manager.ui.dialogs.AppDownloadDialog
|
||||||
import com.vanced.manager.ui.fragments.HomeFragment
|
import com.vanced.manager.ui.fragments.HomeFragment
|
||||||
import com.vanced.manager.utils.DownloadHelper.downloadProgress
|
import com.vanced.manager.utils.DownloadHelper.downloadProgress
|
||||||
import com.vanced.manager.utils.InternetTools.getSha256
|
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
@ -92,7 +91,7 @@ object AppUtils: CoroutineScope by CoroutineScope(Dispatchers.IO) {
|
||||||
context: Context,
|
context: Context,
|
||||||
): Boolean {
|
): Boolean {
|
||||||
val themeF = File(downloadPath, "$apk.apk")
|
val themeF = File(downloadPath, "$apk.apk")
|
||||||
return runBlocking { InternetTools.checkSHA256(getSha256(hashUrl, apk, context), themeF) }
|
return runBlocking { checkSHA256(getSha256(hashUrl, apk, context), themeF) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getErrorMessage(status: String, context: Context): String {
|
private fun getErrorMessage(status: String, context: Context): String {
|
||||||
|
@ -111,7 +110,7 @@ object AppUtils: CoroutineScope by CoroutineScope(Dispatchers.IO) {
|
||||||
status.contains("Files_Missing_VA") -> context.getString(R.string.files_missing_va)
|
status.contains("Files_Missing_VA") -> context.getString(R.string.files_missing_va)
|
||||||
status.contains("Path_Missing") -> context.getString(R.string.path_missing)
|
status.contains("Path_Missing") -> context.getString(R.string.path_missing)
|
||||||
else ->
|
else ->
|
||||||
if (MiuiHelper.isMiui())
|
if (isMiui())
|
||||||
context.getString(R.string.installation_miui)
|
context.getString(R.string.installation_miui)
|
||||||
else
|
else
|
||||||
context.getString(R.string.installation_failed)
|
context.getString(R.string.installation_failed)
|
||||||
|
@ -127,7 +126,7 @@ object AppUtils: CoroutineScope by CoroutineScope(Dispatchers.IO) {
|
||||||
PackageInstaller.STATUS_FAILURE_INVALID -> context.getString(R.string.installation_invalid)
|
PackageInstaller.STATUS_FAILURE_INVALID -> context.getString(R.string.installation_invalid)
|
||||||
PackageInstaller.STATUS_FAILURE_STORAGE -> context.getString(R.string.installation_storage)
|
PackageInstaller.STATUS_FAILURE_STORAGE -> context.getString(R.string.installation_storage)
|
||||||
else ->
|
else ->
|
||||||
if (MiuiHelper.isMiui())
|
if (isMiui())
|
||||||
context.getString(R.string.installation_miui)
|
context.getString(R.string.installation_miui)
|
||||||
else
|
else
|
||||||
context.getString(R.string.installation_failed)
|
context.getString(R.string.installation_failed)
|
||||||
|
|
|
@ -2,12 +2,8 @@ package com.vanced.manager.utils
|
||||||
|
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
|
|
||||||
object DeviceUtils {
|
fun getArch(): String = when {
|
||||||
|
|
||||||
fun getArch(): String = when {
|
|
||||||
Build.SUPPORTED_ABIS.contains("x86") -> "x86"
|
Build.SUPPORTED_ABIS.contains("x86") -> "x86"
|
||||||
Build.SUPPORTED_ABIS.contains("arm64-v8a") -> "arm64_v8a"
|
Build.SUPPORTED_ABIS.contains("arm64-v8a") -> "arm64_v8a"
|
||||||
else -> "armeabi_v7a"
|
else -> "armeabi_v7a"
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -17,50 +17,45 @@ import com.google.android.material.radiobutton.MaterialRadioButton
|
||||||
import com.topjohnwu.superuser.io.SuFile
|
import com.topjohnwu.superuser.io.SuFile
|
||||||
import com.topjohnwu.superuser.io.SuFileOutputStream
|
import com.topjohnwu.superuser.io.SuFileOutputStream
|
||||||
import com.vanced.manager.R
|
import com.vanced.manager.R
|
||||||
import com.vanced.manager.utils.InternetTools.baseUrl
|
|
||||||
import com.vanced.manager.utils.ThemeHelper.accentColor
|
|
||||||
import com.vanced.manager.utils.ThemeHelper.defAccentColor
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
object Extensions {
|
fun RadioGroup.getCheckedButtonTag(): String? {
|
||||||
|
|
||||||
fun RadioGroup.getCheckedButtonTag(): String? {
|
|
||||||
return findViewById<MaterialRadioButton>(checkedRadioButtonId)?.tag?.toString()
|
return findViewById<MaterialRadioButton>(checkedRadioButtonId)?.tag?.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun DialogFragment.show(activity: FragmentActivity) {
|
fun DialogFragment.show(activity: FragmentActivity) {
|
||||||
try {
|
try {
|
||||||
show(activity.supportFragmentManager, "")
|
show(activity.supportFragmentManager, "")
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.d("VMUI", e.stackTraceToString())
|
Log.d("VMUI", e.stackTraceToString())
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Context.getDefaultPrefs(): SharedPreferences = getDefaultSharedPreferences(this)
|
fun Context.getDefaultPrefs(): SharedPreferences = getDefaultSharedPreferences(this)
|
||||||
|
|
||||||
//Not sure how much this can affect performance
|
//Not sure how much this can affect performance
|
||||||
//but if anyone can improve this even slightly,
|
//but if anyone can improve this even slightly,
|
||||||
//feel free to open a PR
|
//feel free to open a PR
|
||||||
fun List<String>.convertToAppVersions(): List<String> {
|
fun List<String>.convertToAppVersions(): List<String> {
|
||||||
val versionsModel = arrayListOf("latest")
|
val versionsModel = arrayListOf("latest")
|
||||||
for (i in reversed().indices) {
|
for (i in reversed().indices) {
|
||||||
versionsModel.add(this[i])
|
versionsModel.add(this[i])
|
||||||
}
|
}
|
||||||
return versionsModel
|
return versionsModel
|
||||||
}
|
}
|
||||||
|
|
||||||
fun String.convertToAppTheme(context: Context): String {
|
fun String.convertToAppTheme(context: Context): String {
|
||||||
return context.getString(R.string.light_plus_other, this.capitalize(Locale.ROOT))
|
return context.getString(R.string.light_plus_other, this.capitalize(Locale.ROOT))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun String.getLatestAppVersion(versions: List<String>): String {
|
fun String.getLatestAppVersion(versions: List<String>): String {
|
||||||
return if (this == "latest") versions.reversed()[0] else this
|
return if (this == "latest") versions.reversed()[0] else this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun SharedPreferences.getInstallUrl() = getString("install_url", baseUrl)
|
fun SharedPreferences.getInstallUrl() = getString("install_url", baseUrl)
|
||||||
|
|
||||||
fun Context.lifecycleOwner(): LifecycleOwner? {
|
fun Context.lifecycleOwner(): LifecycleOwner? {
|
||||||
var curContext = this
|
var curContext = this
|
||||||
var maxDepth = 20
|
var maxDepth = 20
|
||||||
while (maxDepth-- > 0 && curContext !is LifecycleOwner) {
|
while (maxDepth-- > 0 && curContext !is LifecycleOwner) {
|
||||||
|
@ -71,20 +66,20 @@ object Extensions {
|
||||||
} else {
|
} else {
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Int.toHex(): String = java.lang.String.format("#%06X", 0xFFFFFF and this)
|
fun Int.toHex(): String = java.lang.String.format("#%06X", 0xFFFFFF and this)
|
||||||
|
|
||||||
//Material team decided to keep their LinearProgressIndicator final
|
//Material team decided to keep their LinearProgressIndicator final
|
||||||
//At least extension methods exist
|
//At least extension methods exist
|
||||||
fun LinearProgressIndicator.applyAccent() {
|
fun LinearProgressIndicator.applyAccent() {
|
||||||
with(accentColor.value ?: context.getDefaultPrefs().getInt("manager_accent_color", defAccentColor)) {
|
with(accentColor.value ?: context.getDefaultPrefs().getInt("manager_accent_color", defAccentColor)) {
|
||||||
setIndicatorColor(this)
|
setIndicatorColor(this)
|
||||||
trackColor = ColorUtils.setAlphaComponent(this, 70)
|
trackColor = ColorUtils.setAlphaComponent(this, 70)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun MaterialAlertDialogBuilder.applyAccent() {
|
fun MaterialAlertDialogBuilder.applyAccent() {
|
||||||
with(accentColor.value ?: context.getDefaultPrefs().getInt("manager_accent_color", defAccentColor)) {
|
with(accentColor.value ?: context.getDefaultPrefs().getInt("manager_accent_color", defAccentColor)) {
|
||||||
show().apply {
|
show().apply {
|
||||||
getButton(DialogInterface.BUTTON_POSITIVE).setTextColor(this@with)
|
getButton(DialogInterface.BUTTON_POSITIVE).setTextColor(this@with)
|
||||||
|
@ -92,13 +87,11 @@ object Extensions {
|
||||||
getButton(DialogInterface.BUTTON_NEUTRAL).setTextColor(this@with)
|
getButton(DialogInterface.BUTTON_NEUTRAL).setTextColor(this@with)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Context.writeServiceDScript(apkFPath: String, path: String, app: String) {
|
fun Context.writeServiceDScript(apkFPath: String, path: String, app: String) {
|
||||||
val shellFileZ = SuFile.open("/data/adb/service.d/$app.sh")
|
val shellFileZ = SuFile.open("/data/adb/service.d/$app.sh")
|
||||||
shellFileZ.createNewFile()
|
shellFileZ.createNewFile()
|
||||||
val code = """#!/system/bin/sh${"\n"}while [ "`getprop sys.boot_completed | tr -d '\r' `" != "1" ]; do sleep ${getDefaultPrefs().getInt("serviced_sleep_timer", 1)}; done${"\n"}chcon u:object_r:apk_data_file:s0 $apkFPath${"\n"}mount -o bind $apkFPath $path"""
|
val code = """#!/system/bin/sh${"\n"}while [ "`getprop sys.boot_completed | tr -d '\r' `" != "1" ]; do sleep ${getDefaultPrefs().getInt("serviced_sleep_timer", 1)}; done${"\n"}chcon u:object_r:apk_data_file:s0 $apkFPath${"\n"}mount -o bind $apkFPath $path"""
|
||||||
SuFileOutputStream(shellFileZ).use { out -> out.write(code.toByteArray())}
|
SuFileOutputStream(shellFileZ).use { out -> out.write(code.toByteArray())}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -14,31 +14,27 @@ import androidx.preference.PreferenceManager.getDefaultSharedPreferences
|
||||||
import com.beust.klaxon.JsonArray
|
import com.beust.klaxon.JsonArray
|
||||||
import com.beust.klaxon.JsonObject
|
import com.beust.klaxon.JsonObject
|
||||||
import com.vanced.manager.R
|
import com.vanced.manager.R
|
||||||
import com.vanced.manager.library.network.okhttp.interceptors.LOG_INTERCEPTOR
|
|
||||||
import com.vanced.manager.utils.AppUtils.generateChecksum
|
import com.vanced.manager.utils.AppUtils.generateChecksum
|
||||||
import com.vanced.manager.utils.Extensions.getDefaultPrefs
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
object InternetTools {
|
private const val TAG = "VMNetTools"
|
||||||
|
|
||||||
private const val TAG = "VMNetTools"
|
val vanced = MutableLiveData<JsonObject?>()
|
||||||
|
val music = MutableLiveData<JsonObject?>()
|
||||||
|
val microg = MutableLiveData<JsonObject?>()
|
||||||
|
val manager = MutableLiveData<JsonObject?>()
|
||||||
|
|
||||||
val vanced = MutableLiveData<JsonObject?>()
|
val vancedVersions = MutableLiveData<JsonArray<String>>()
|
||||||
val music = MutableLiveData<JsonObject?>()
|
val musicVersions = MutableLiveData<JsonArray<String>>()
|
||||||
val microg = MutableLiveData<JsonObject?>()
|
|
||||||
val manager = MutableLiveData<JsonObject?>()
|
|
||||||
|
|
||||||
val vancedVersions = MutableLiveData<JsonArray<String>>()
|
val isFetching = MutableLiveData<Boolean>()
|
||||||
val musicVersions = MutableLiveData<JsonArray<String>>()
|
|
||||||
|
|
||||||
val isFetching = MutableLiveData<Boolean>()
|
//var braveTiers = MutableLiveData<JsonObject?>()
|
||||||
|
|
||||||
//var braveTiers = MutableLiveData<JsonObject?>()
|
fun openUrl(url: String, color: Int, context: Context) {
|
||||||
|
|
||||||
fun openUrl(url: String, color: Int, context: Context) {
|
|
||||||
try {
|
try {
|
||||||
val customTabPrefs = getDefaultSharedPreferences(context).getBoolean("use_custom_tabs", true)
|
val customTabPrefs = getDefaultSharedPreferences(context).getBoolean("use_custom_tabs", true)
|
||||||
if (customTabPrefs) {
|
if (customTabPrefs) {
|
||||||
|
@ -54,11 +50,11 @@ object InternetTools {
|
||||||
} catch (e: ActivityNotFoundException) {
|
} catch (e: ActivityNotFoundException) {
|
||||||
Toast.makeText(context, R.string.error, Toast.LENGTH_SHORT).show()
|
Toast.makeText(context, R.string.error, Toast.LENGTH_SHORT).show()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getFileNameFromUrl(url: String) = url.substring(url.lastIndexOf('/') + 1, url.length)
|
fun getFileNameFromUrl(url: String) = url.substring(url.lastIndexOf('/') + 1, url.length)
|
||||||
|
|
||||||
suspend fun loadJson(context: Context) = withContext(Dispatchers.IO) {
|
suspend fun loadJson(context: Context) = withContext(Dispatchers.IO) {
|
||||||
isFetching.postValue(true)
|
isFetching.postValue(true)
|
||||||
val installUrl = context.getDefaultPrefs().getString("install_url", baseUrl)
|
val installUrl = context.getDefaultPrefs().getString("install_url", baseUrl)
|
||||||
val calendar = Calendar.getInstance()
|
val calendar = Calendar.getInstance()
|
||||||
|
@ -66,8 +62,8 @@ object InternetTools {
|
||||||
val minute = calendar.get(Calendar.MINUTE)
|
val minute = calendar.get(Calendar.MINUTE)
|
||||||
val second = calendar.get(Calendar.SECOND)
|
val second = calendar.get(Calendar.SECOND)
|
||||||
val fetchTime = "fetchTime=$hour$minute$second"
|
val fetchTime = "fetchTime=$hour$minute$second"
|
||||||
val latest = JsonHelper.getJson("$installUrl/latest.json?$fetchTime")
|
val latest = getJson("$installUrl/latest.json?$fetchTime")
|
||||||
val versions = JsonHelper.getJson("$installUrl/versions.json?$fetchTime")
|
val versions = getJson("$installUrl/versions.json?$fetchTime")
|
||||||
// braveTiers.apply {
|
// braveTiers.apply {
|
||||||
// set(getJson("$installUrl/sponsor.json"))
|
// set(getJson("$installUrl/sponsor.json"))
|
||||||
// notifyChange()
|
// notifyChange()
|
||||||
|
@ -80,23 +76,23 @@ object InternetTools {
|
||||||
microg.postValue(latest?.obj("microg"))
|
microg.postValue(latest?.obj("microg"))
|
||||||
manager.postValue(latest?.obj("manager"))
|
manager.postValue(latest?.obj("manager"))
|
||||||
isFetching.postValue(false)
|
isFetching.postValue(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun getJsonString(file: String, obj: String, context: Context): String {
|
private suspend fun getJsonString(file: String, obj: String, context: Context): String {
|
||||||
val installUrl = context.getDefaultPrefs().getString("install_url", baseUrl)
|
val installUrl = context.getDefaultPrefs().getString("install_url", baseUrl)
|
||||||
return try {
|
return try {
|
||||||
JsonHelper.getJson("$installUrl/$file")?.string(obj) ?: context.getString(R.string.unavailable)
|
getJson("$installUrl/$file")?.string(obj) ?: context.getString(R.string.unavailable)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.e(TAG, "Error: ", e)
|
Log.e(TAG, "Error: ", e)
|
||||||
context.getString(R.string.unavailable)
|
context.getString(R.string.unavailable)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun getSha256(hashUrl: String, obj: String, context: Context): String {
|
suspend fun getSha256(hashUrl: String, obj: String, context: Context): String {
|
||||||
return getJsonString(hashUrl, obj, context)
|
return getJsonString(hashUrl, obj, context)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun checkSHA256(sha256: String, updateFile: File): Boolean {
|
fun checkSHA256(sha256: String, updateFile: File): Boolean {
|
||||||
return try {
|
return try {
|
||||||
val dataBuffer = updateFile.readBytes()
|
val dataBuffer = updateFile.readBytes()
|
||||||
// Generate the checksum
|
// Generate the checksum
|
||||||
|
@ -107,8 +103,6 @@ object InternetTools {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
const val baseUrl = "https://vancedapp.com/api/v1"
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const val baseUrl = "https://vancedapp.com/api/v1"
|
|
@ -7,11 +7,9 @@ import com.beust.klaxon.Parser
|
||||||
import com.github.kittinunf.fuel.coroutines.awaitString
|
import com.github.kittinunf.fuel.coroutines.awaitString
|
||||||
import com.github.kittinunf.fuel.httpGet
|
import com.github.kittinunf.fuel.httpGet
|
||||||
|
|
||||||
object JsonHelper {
|
private var dataMap: HashMap<String, JsonObject> = HashMap()
|
||||||
|
|
||||||
private var dataMap: HashMap<String, JsonObject> = HashMap()
|
suspend fun getJson(url: String): JsonObject? {
|
||||||
|
|
||||||
suspend fun getJson(url: String): JsonObject? {
|
|
||||||
return try {
|
return try {
|
||||||
if (dataMap.containsKey(url)) {
|
if (dataMap.containsKey(url)) {
|
||||||
dataMap[url]
|
dataMap[url]
|
||||||
|
@ -23,16 +21,14 @@ object JsonHelper {
|
||||||
//This null is NEEDED, do NOT try to "fix" NPE here!!!
|
//This null is NEEDED, do NOT try to "fix" NPE here!!!
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun getSuspendJson(url: String): JsonObject =
|
private suspend fun getSuspendJson(url: String): JsonObject =
|
||||||
Parser.default().parse(
|
Parser.default().parse(
|
||||||
StringBuilder(url.httpGet().awaitString())
|
StringBuilder(url.httpGet().awaitString())
|
||||||
) as JsonObject
|
) as JsonObject
|
||||||
|
|
||||||
suspend fun getJsonArray(url: String): JsonArray<String> =
|
suspend fun getJsonArray(url: String): JsonArray<String> =
|
||||||
Klaxon().parseArray<String>(
|
Klaxon().parseArray<String>(
|
||||||
url.httpGet().awaitString()
|
url.httpGet().awaitString()
|
||||||
) as JsonArray<String>
|
) as JsonArray<String>
|
||||||
|
|
||||||
}
|
|
|
@ -11,12 +11,9 @@ import android.provider.Settings
|
||||||
import androidx.annotation.RequiresApi
|
import androidx.annotation.RequiresApi
|
||||||
import com.crowdin.platform.Crowdin
|
import com.crowdin.platform.Crowdin
|
||||||
import com.vanced.manager.R
|
import com.vanced.manager.R
|
||||||
import com.vanced.manager.utils.InternetTools.vanced
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
object LanguageHelper {
|
fun getLanguageFormat(context: Context, language: String): String {
|
||||||
|
|
||||||
fun getLanguageFormat(context: Context, language: String): String {
|
|
||||||
return when {
|
return when {
|
||||||
language == "System Default" -> context.getString(R.string.system_default)
|
language == "System Default" -> context.getString(R.string.system_default)
|
||||||
language.length > 2 -> {
|
language.length > 2 -> {
|
||||||
|
@ -32,10 +29,10 @@ object LanguageHelper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("DEPRECATION")
|
@Suppress("DEPRECATION")
|
||||||
fun getDefaultVancedLanguages(): String {
|
fun getDefaultVancedLanguages(): String {
|
||||||
val serverLangs = vanced.value?.array("langs") ?: mutableListOf("")
|
val serverLangs = vanced.value?.array("langs") ?: mutableListOf("")
|
||||||
val sysLocales = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) Resources.getSystem().configuration.locales.toLangTags() else arrayOf(Resources.getSystem().configuration.locale.language)
|
val sysLocales = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) Resources.getSystem().configuration.locales.toLangTags() else arrayOf(Resources.getSystem().configuration.locale.language)
|
||||||
val finalLangs = mutableListOf<String>()
|
val finalLangs = mutableListOf<String>()
|
||||||
|
@ -47,18 +44,18 @@ object LanguageHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
return finalLangs.distinct().sorted().joinToString(", ")
|
return finalLangs.distinct().sorted().joinToString(", ")
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(Build.VERSION_CODES.N)
|
@RequiresApi(Build.VERSION_CODES.N)
|
||||||
fun LocaleList.toLangTags(): Array<String> {
|
fun LocaleList.toLangTags(): Array<String> {
|
||||||
val langTags: Array<String> = this.toLanguageTags().split(",").toTypedArray()
|
val langTags: Array<String> = this.toLanguageTags().split(",").toTypedArray()
|
||||||
for (i in 0 until this.size()) {
|
for (i in 0 until this.size()) {
|
||||||
langTags[i] = langTags[i].substring(0, 2)
|
langTags[i] = langTags[i].substring(0, 2)
|
||||||
}
|
}
|
||||||
return langTags
|
return langTags
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Activity.authCrowdin() {
|
fun Activity.authCrowdin() {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
if (!Settings.canDrawOverlays(this)) {
|
if (!Settings.canDrawOverlays(this)) {
|
||||||
val intent = Intent(
|
val intent = Intent(
|
||||||
|
@ -70,14 +67,12 @@ object LanguageHelper {
|
||||||
}
|
}
|
||||||
Crowdin.authorize(this)
|
Crowdin.authorize(this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Activity.onActivityResult(requestCode: Int) {
|
fun Activity.onActivityResult(requestCode: Int) {
|
||||||
if (requestCode == 69 && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
if (requestCode == 69 && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
if (Settings.canDrawOverlays(this)) {
|
if (Settings.canDrawOverlays(this)) {
|
||||||
Crowdin.authorize(this)
|
Crowdin.authorize(this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -4,13 +4,11 @@ import java.io.BufferedReader
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.io.InputStreamReader
|
import java.io.InputStreamReader
|
||||||
|
|
||||||
object MiuiHelper {
|
private const val MIUI_PROP_NAME = "ro.miui.ui.version.name"
|
||||||
|
|
||||||
private const val MIUI_PROP_NAME = "ro.miui.ui.version.name"
|
fun isMiui(): Boolean = !getSystemProps(MIUI_PROP_NAME).isNullOrEmpty()
|
||||||
|
|
||||||
fun isMiui(): Boolean = !getSystemProps(MIUI_PROP_NAME).isNullOrEmpty()
|
private fun getSystemProps(propname: String): String? {
|
||||||
|
|
||||||
private fun getSystemProps(propname: String): String? {
|
|
||||||
var input: BufferedReader? = null
|
var input: BufferedReader? = null
|
||||||
return try {
|
return try {
|
||||||
val process = Runtime.getRuntime().exec("getprop $propname")
|
val process = Runtime.getRuntime().exec("getprop $propname")
|
||||||
|
@ -21,5 +19,4 @@ object MiuiHelper {
|
||||||
} finally {
|
} finally {
|
||||||
input?.close()
|
input?.close()
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -18,9 +18,6 @@ import com.vanced.manager.utils.AppUtils.sendCloseDialog
|
||||||
import com.vanced.manager.utils.AppUtils.sendFailure
|
import com.vanced.manager.utils.AppUtils.sendFailure
|
||||||
import com.vanced.manager.utils.AppUtils.sendRefresh
|
import com.vanced.manager.utils.AppUtils.sendRefresh
|
||||||
import com.vanced.manager.utils.AppUtils.vancedRootPkg
|
import com.vanced.manager.utils.AppUtils.vancedRootPkg
|
||||||
import com.vanced.manager.utils.Extensions.writeServiceDScript
|
|
||||||
import com.vanced.manager.utils.InternetTools.music
|
|
||||||
import com.vanced.manager.utils.InternetTools.vanced
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
|
@ -5,16 +5,13 @@ import android.content.res.Configuration
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.LiveData
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import com.vanced.manager.R
|
import com.vanced.manager.R
|
||||||
import com.vanced.manager.utils.Extensions.getDefaultPrefs
|
|
||||||
|
|
||||||
object ThemeHelper {
|
const val defAccentColor: Int = -13732865
|
||||||
|
|
||||||
const val defAccentColor: Int = -13732865
|
val mutableAccentColor = MutableLiveData<Int>()
|
||||||
|
val accentColor: LiveData<Int> = mutableAccentColor
|
||||||
|
|
||||||
val mutableAccentColor = MutableLiveData<Int>()
|
fun Activity.setFinalTheme() {
|
||||||
val accentColor: LiveData<Int> = mutableAccentColor
|
|
||||||
|
|
||||||
fun Activity.setFinalTheme() {
|
|
||||||
when (getDefaultPrefs().getString("manager_theme", "System Default")) {
|
when (getDefaultPrefs().getString("manager_theme", "System Default")) {
|
||||||
"Light" -> setTheme(R.style.LightTheme)
|
"Light" -> setTheme(R.style.LightTheme)
|
||||||
"Dark" -> setTheme(R.style.DarkTheme)
|
"Dark" -> setTheme(R.style.DarkTheme)
|
||||||
|
@ -26,6 +23,4 @@ object ThemeHelper {
|
||||||
}
|
}
|
||||||
else -> setTheme(R.style.LightTheme)
|
else -> setTheme(R.style.LightTheme)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue