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

192 lines
6.6 KiB
Kotlin
Raw Normal View History

package com.vanced.manager.ui
2020-03-16 15:41:57 +00:00
2020-05-27 16:37:03 +00:00
import android.content.*
2020-03-16 15:41:57 +00:00
import android.os.Bundle
import android.view.MenuItem
2020-05-27 16:37:03 +00:00
import androidx.appcompat.app.AlertDialog
2020-05-05 19:56:43 +00:00
import androidx.appcompat.widget.Toolbar
2020-05-27 16:37:03 +00:00
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import androidx.navigation.NavDestination
import androidx.navigation.findNavController
2020-04-22 09:41:18 +00:00
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.setupWithNavController
import androidx.preference.PreferenceManager
import com.vanced.manager.R
import com.vanced.manager.core.Main
2020-03-16 15:41:57 +00:00
class MainActivity : Main() {
2020-03-16 15:41:57 +00:00
private var isParent = true
2020-03-16 15:41:57 +00:00
override fun onCreate(savedInstanceState: Bundle?) {
2020-05-02 13:05:19 +00:00
super.onCreate(savedInstanceState)
2020-03-16 15:41:57 +00:00
setContentView(R.layout.activity_main)
2020-03-18 18:10:54 +00:00
2020-05-05 19:56:43 +00:00
val toolbar: Toolbar = findViewById(R.id.home_toolbar)
setSupportActionBar(toolbar)
2020-05-14 06:27:07 +00:00
val navHost = findNavController(R.id.bottom_nav_host)
2020-04-22 09:41:18 +00:00
val appBarConfiguration = AppBarConfiguration(navHost.graph)
toolbar.setupWithNavController(navHost, appBarConfiguration)
2020-05-19 20:39:03 +00:00
navHost.addOnDestinationChangedListener{_, currFrag: NavDestination, _ ->
isParent = when (currFrag.id) {
R.id.home_fragment -> true
else -> false
}
setDisplayHomeAsUpEnabled(!isParent)
}
2020-05-27 17:43:21 +00:00
registerReceivers()
2020-05-27 16:37:03 +00:00
}
private val broadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
2020-05-30 17:43:47 +00:00
when (intent.action) {
INSTALL_COMPLETED -> launchVanced()
INSTALL_BLOCKED -> alertBuilder(INSTALL_BLOCKED)
INSTALL_FAILED -> alertBuilder(INSTALL_FAILED)
INSTALL_ABORTED -> alertBuilder(INSTALL_ABORTED)
INSTALL_STORAGE -> alertBuilder(INSTALL_STORAGE)
INSTALL_CONFLICT -> alertBuilder(INSTALL_CONFLICT)
INSTALL_INVALID -> alertBuilder(INSTALL_INVALID)
2020-05-28 09:35:27 +00:00
2020-05-27 16:37:03 +00:00
}
}
}
override fun onDestroy() {
super.onDestroy()
LocalBroadcastManager.getInstance(this).unregisterReceiver(broadcastReceiver)
}
override fun onPause() {
super.onPause()
LocalBroadcastManager.getInstance(this).unregisterReceiver(broadcastReceiver)
}
2020-05-27 16:37:03 +00:00
override fun onResume() {
super.onResume()
2020-05-27 17:43:21 +00:00
registerReceivers()
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
val navHost = findNavController(R.id.bottom_nav_host)
val prefs = PreferenceManager.getDefaultSharedPreferences(this)
2020-05-19 20:39:03 +00:00
val devSettings = prefs.getBoolean("devSettings", false)
when (item.itemId) {
android.R.id.home -> {
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
}
2020-05-03 11:14:09 +00:00
R.id.dev_settings -> {
2020-05-19 20:39:03 +00:00
return if (devSettings) {
navHost.navigate(R.id.toDevSettingsFragment)
2020-05-19 20:39:03 +00:00
true
} else
false
2020-05-03 11:14:09 +00:00
}
else -> super.onOptionsItemSelected(item)
}
return false
}
2020-05-14 06:27:07 +00:00
private fun setDisplayHomeAsUpEnabled(isNeeded: Boolean) {
2020-05-05 19:56:43 +00:00
val toolbar: Toolbar = findViewById(R.id.home_toolbar)
when {
isNeeded -> toolbar.setNavigationIcon(R.drawable.ic_keyboard_backspace_black_24dp)
else -> toolbar.navigationIcon = null
}
}
2020-05-27 16:37:03 +00:00
private fun alertBuilder(msg: String) {
AlertDialog.Builder(this)
.setTitle("Error")
.setMessage("Operation failed because $msg")
.setPositiveButton(getString(R.string.close)) { dialog, _ ->
run {
dialog.dismiss()
recreate()
}
}
.create()
.show()
}
private fun launchVanced() {
val intent = Intent()
2020-06-02 12:19:04 +00:00
intent.component =
if (PreferenceManager.getDefaultSharedPreferences(this).getString("vanced_variant", "Nonroot") == "Root")
ComponentName("com.google.android.youtube", "com.google.android.youtube.HomeActivity")
else
ComponentName("com.vanced.android.youtube", "com.google.android.youtube.HomeActivity")
2020-05-27 16:37:03 +00:00
AlertDialog.Builder(this)
.setTitle("Success!")
.setMessage("Vanced has been successfully installed, do you want to launch it now?")
.setPositiveButton("Launch") {
_, _ -> startActivity(intent)
}
.setNegativeButton("Cancel") {
dialog, _ ->
run {
dialog.dismiss()
recreate()
}
}
.create()
.show()
}
2020-05-27 17:43:21 +00:00
private fun registerReceivers() {
LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, IntentFilter(
INSTALL_COMPLETED
))
LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, IntentFilter(
INSTALL_ABORTED
))
LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, IntentFilter(
INSTALL_BLOCKED
))
LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, IntentFilter(
INSTALL_STORAGE
))
LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, IntentFilter(
INSTALL_CONFLICT
))
LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, IntentFilter(
INSTALL_FAILED
))
LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, IntentFilter(
INSTALL_INVALID
))
}
2020-05-27 16:37:03 +00:00
companion object {
const val INSTALL_COMPLETED = "Installation completed"
const val INSTALL_ABORTED = "user aborted installation"
const val INSTALL_BLOCKED = "user blocked installation"
const val INSTALL_STORAGE = "there was an error with storage.\n Hold up how is that even possible?"
const val INSTALL_CONFLICT = "app conflicts with already installed app"
const val INSTALL_FAILED = "it just failed idk"
const val INSTALL_INVALID = "apk files are invalid"
}
2020-03-16 15:41:57 +00:00
}