VancedManager/app/src/main/java/com/vanced/manager/ui/MainActivity.kt

179 lines
5.6 KiB
Kotlin
Raw Normal View History

package com.vanced.manager.ui
2020-03-16 15:41:57 +00:00
import android.content.Context
2020-03-16 15:41:57 +00:00
import android.os.Bundle
import android.util.Log
import android.view.MenuItem
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
2020-06-04 07:35:26 +00:00
import androidx.databinding.DataBindingUtil
2020-08-26 12:29:05 +00:00
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
2020-07-06 11:38:00 +00:00
import com.crowdin.platform.Crowdin
import com.crowdin.platform.LoadingStateListener
import com.google.android.material.tabs.TabLayout
2020-09-06 10:33:04 +00:00
import com.google.android.material.tabs.TabLayoutMediator
2020-08-06 07:46:07 +00:00
import com.google.firebase.messaging.FirebaseMessaging
import com.topjohnwu.superuser.Shell
import com.vanced.manager.R
2020-09-19 13:56:24 +00:00
import com.vanced.manager.adapter.VariantAdapter
2020-06-04 07:35:26 +00:00
import com.vanced.manager.databinding.ActivityMainBinding
import com.vanced.manager.ui.dialogs.DialogContainer
import com.vanced.manager.ui.fragments.UpdateCheckFragment
import com.vanced.manager.utils.AppUtils.installing
import com.vanced.manager.utils.InternetTools
import com.vanced.manager.utils.PackageHelper
2020-06-19 15:48:14 +00:00
import com.vanced.manager.utils.ThemeHelper.setFinalTheme
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
2020-07-11 21:43:43 +00:00
import kotlinx.coroutines.launch
2020-03-16 15:41:57 +00:00
class MainActivity : AppCompatActivity() {
2020-03-16 15:41:57 +00:00
2020-06-04 07:35:26 +00:00
private lateinit var binding: ActivityMainBinding
2020-09-18 17:55:45 +00:00
2020-07-06 11:38:00 +00:00
private val loadingObserver = object : LoadingStateListener {
val tag = "VMLocalisation"
override fun onDataChanged() {
Log.d(tag, "Loaded data")
}
override fun onFailure(throwable: Throwable) {
Log.d(tag, "Failed to load data")
}
}
2020-08-31 16:12:20 +00:00
2020-08-26 12:29:05 +00:00
private val tabListener = object : TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab) {
if (tab.position == 1 && !Shell.rootAccess()) {
Toast.makeText(this@MainActivity, getString(R.string.root_not_granted), Toast.LENGTH_SHORT).show()
return
}
2020-08-31 16:12:20 +00:00
getDefaultSharedPreferences(this@MainActivity).edit().putString("vanced_variant",
2020-08-26 12:29:05 +00:00
when (tab.position) {
2020-09-12 16:18:05 +00:00
1 -> "root"
2020-08-31 16:12:20 +00:00
else -> "nonroot"
2020-08-26 12:29:05 +00:00
}
2020-09-04 19:14:43 +00:00
).apply()
2020-08-26 12:29:05 +00:00
}
override fun onTabUnselected(tab: TabLayout.Tab) {
2020-08-31 16:12:20 +00:00
return
2020-08-26 12:29:05 +00:00
}
override fun onTabReselected(tab: TabLayout.Tab) {
2020-08-31 16:12:20 +00:00
return
2020-08-26 12:29:05 +00:00
}
}
override fun onCreate(savedInstanceState: Bundle?) {
setFinalTheme(this)
super.onCreate(savedInstanceState)
2020-09-16 05:18:07 +00:00
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
with(binding) {
lifecycleOwner = this@MainActivity
setSupportActionBar(homeToolbar)
2020-09-19 13:56:24 +00:00
mainViewpager.adapter = VariantAdapter(this@MainActivity)
2020-09-16 05:18:07 +00:00
mainViewpager.isUserInputEnabled = false
TabLayoutMediator(mainTablayout, mainViewpager) { tab, position ->
2020-09-04 19:14:43 +00:00
tab.text = if (position == 1) "root" else "nonroot"
}.attach()
2020-09-04 19:14:43 +00:00
mainTablayout.getTabAt(
if (getDefaultSharedPreferences(this@MainActivity).getString("vanced_variant", "nonroot") == "root")
1
else
0
)?.select()
}
initDialogs()
}
2020-05-27 16:37:03 +00:00
override fun onPause() {
super.onPause()
2020-07-06 11:38:00 +00:00
Crowdin.unregisterDataLoadingObserver(loadingObserver)
2020-08-31 16:12:20 +00:00
binding.mainTablayout.removeOnTabSelectedListener(tabListener)
2020-05-27 16:37:03 +00:00
}
2020-05-27 16:37:03 +00:00
override fun onResume() {
2020-06-19 15:48:14 +00:00
setFinalTheme(this)
2020-05-27 16:37:03 +00:00
super.onResume()
2020-08-06 07:46:07 +00:00
Crowdin.registerDataLoadingObserver(loadingObserver)
2020-08-31 16:12:20 +00:00
binding.mainTablayout.addOnTabSelectedListener(tabListener)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
if (installing) {
2020-08-06 07:46:07 +00:00
return false
}
2020-08-06 07:46:07 +00:00
when (item.itemId) {
android.R.id.home -> {
2020-09-04 19:14:43 +00:00
return false
}
2020-08-06 07:46:07 +00:00
R.id.toolbar_about -> {
2020-08-27 10:50:43 +00:00
return false
2020-08-06 07:46:07 +00:00
}
R.id.toolbar_settings -> {
2020-08-27 10:50:43 +00:00
return false
2020-08-06 07:46:07 +00:00
}
R.id.dev_settings -> {
2020-08-27 10:50:43 +00:00
return false
2020-08-06 07:46:07 +00:00
}
else -> super.onOptionsItemSelected(item)
}
2020-08-06 07:46:07 +00:00
return false
}
2020-05-14 06:27:07 +00:00
2020-07-06 11:38:00 +00:00
override fun attachBaseContext(newBase: Context) {
super.attachBaseContext(Crowdin.wrapContext(newBase))
}
2020-05-27 16:37:03 +00:00
private fun initDialogs() {
2020-08-26 12:29:05 +00:00
val prefs = getDefaultSharedPreferences(this)
val variant = prefs.getString("vanced_variant", "nonroot")
prefs.getBoolean("show_root_dialog", true)
when {
2020-08-06 07:46:07 +00:00
prefs.getBoolean("firstStart", true) -> {
DialogContainer.showSecurityDialog(this)
with(FirebaseMessaging.getInstance()) {
subscribeToTopic("Vanced-Update")
subscribeToTopic("MicroG-Update")
}
}
!prefs.getBoolean("statement", true) -> DialogContainer.statementFalse(this)
variant == "root" -> {
if (PackageHelper.getPackageVersionName(
"com.google.android.youtube",
packageManager
) == "14.21.54")
DialogContainer.basicDialog(
getString(R.string.hold_on),
getString(R.string.magisk_vanced),
this
)
}
}
checkUpdates()
}
private fun checkUpdates() {
CoroutineScope(Dispatchers.Main).launch {
if (InternetTools.isUpdateAvailable()) {
UpdateCheckFragment().show(supportFragmentManager, "UpdateCheck")
2020-07-11 21:43:43 +00:00
}
}
}
2020-03-16 15:41:57 +00:00
}