2021-04-30 17:20:15 +00:00
|
|
|
package com.lagradost.cloudstream3
|
|
|
|
|
2021-06-10 23:00:22 +00:00
|
|
|
import android.app.PictureInPictureParams
|
|
|
|
import android.content.pm.PackageManager
|
|
|
|
import android.os.Build
|
2021-04-30 17:20:15 +00:00
|
|
|
import android.os.Bundle
|
|
|
|
import com.google.android.material.bottomnavigation.BottomNavigationView
|
|
|
|
import androidx.appcompat.app.AppCompatActivity
|
2021-06-10 23:00:22 +00:00
|
|
|
import androidx.core.content.ContentProviderCompat.requireContext
|
2021-05-22 22:25:56 +00:00
|
|
|
import androidx.lifecycle.ViewModelStore
|
|
|
|
import androidx.lifecycle.ViewModelStoreOwner
|
2021-04-30 17:20:15 +00:00
|
|
|
import androidx.navigation.findNavController
|
|
|
|
import androidx.navigation.ui.AppBarConfiguration
|
|
|
|
import androidx.navigation.ui.setupWithNavController
|
2021-05-20 21:25:41 +00:00
|
|
|
import com.lagradost.cloudstream3.UIHelper.checkWrite
|
2021-06-10 23:00:22 +00:00
|
|
|
import com.lagradost.cloudstream3.UIHelper.hasPIPPermission
|
2021-05-20 21:25:41 +00:00
|
|
|
import com.lagradost.cloudstream3.UIHelper.requestRW
|
2021-06-10 23:00:22 +00:00
|
|
|
import com.lagradost.cloudstream3.UIHelper.shouldShowPIPMode
|
2021-04-30 17:20:15 +00:00
|
|
|
|
2021-06-10 23:00:22 +00:00
|
|
|
class MainActivity : AppCompatActivity() {
|
|
|
|
/*, ViewModelStoreOwner {
|
|
|
|
private val appViewModelStore: ViewModelStore by lazy {
|
|
|
|
ViewModelStore()
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun getViewModelStore(): ViewModelStore {
|
|
|
|
return appViewModelStore
|
|
|
|
}*/
|
|
|
|
companion object {
|
|
|
|
var isInPlayer: Boolean = false
|
|
|
|
var canShowPipMode: Boolean = false
|
|
|
|
var isInPIPMode: Boolean = false
|
|
|
|
}
|
|
|
|
|
|
|
|
private fun enterPIPMode() {
|
|
|
|
if (!shouldShowPIPMode(isInPlayer) || !canShowPipMode) return
|
|
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
|
|
try {
|
|
|
|
enterPictureInPictureMode(PictureInPictureParams.Builder().build())
|
|
|
|
} catch (e: Exception) {
|
|
|
|
enterPictureInPictureMode()
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
|
|
|
enterPictureInPictureMode()
|
|
|
|
}
|
|
|
|
}
|
2021-05-22 22:25:56 +00:00
|
|
|
}
|
|
|
|
|
2021-06-10 23:00:22 +00:00
|
|
|
override fun onUserLeaveHint() {
|
|
|
|
super.onUserLeaveHint()
|
|
|
|
if (isInPlayer && canShowPipMode) {
|
|
|
|
enterPIPMode()
|
|
|
|
}
|
|
|
|
}
|
2021-05-22 22:25:56 +00:00
|
|
|
|
2021-05-18 13:43:32 +00:00
|
|
|
private fun AppCompatActivity.backPressed(): Boolean {
|
|
|
|
val currentFragment = supportFragmentManager.fragments.last {
|
|
|
|
it.isVisible
|
|
|
|
}
|
|
|
|
|
|
|
|
if (currentFragment != null && supportFragmentManager.fragments.size > 2) {
|
|
|
|
//MainActivity.showNavbar()
|
|
|
|
supportFragmentManager.beginTransaction()
|
|
|
|
.setCustomAnimations(R.anim.enter_anim, R.anim.exit_anim, R.anim.pop_enter, R.anim.pop_exit)
|
|
|
|
.remove(currentFragment)
|
|
|
|
.commitAllowingStateLoss()
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onBackPressed() {
|
|
|
|
if (backPressed()) return
|
|
|
|
super.onBackPressed()
|
|
|
|
}
|
2021-04-30 17:20:15 +00:00
|
|
|
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
|
super.onCreate(savedInstanceState)
|
|
|
|
setContentView(R.layout.activity_main)
|
|
|
|
val navView: BottomNavigationView = findViewById(R.id.nav_view)
|
|
|
|
|
2021-06-10 23:00:22 +00:00
|
|
|
//https://stackoverflow.com/questions/52594181/how-to-know-if-user-has-disabled-picture-in-picture-feature-permission
|
|
|
|
//https://developer.android.com/guide/topics/ui/picture-in-picture
|
|
|
|
canShowPipMode =
|
|
|
|
Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && // OS SUPPORT
|
|
|
|
packageManager.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE) && // HAS FEATURE, MIGHT BE BLOCKED DUE TO POWER DRAIN
|
|
|
|
hasPIPPermission() // CHECK IF FEATURE IS ENABLED IN SETTINGS
|
|
|
|
|
2021-04-30 17:20:15 +00:00
|
|
|
val navController = findNavController(R.id.nav_host_fragment)
|
|
|
|
// Passing each menu ID as a set of Ids because each
|
|
|
|
// menu should be considered as top level destinations.
|
|
|
|
val appBarConfiguration = AppBarConfiguration(setOf(
|
2021-05-12 21:51:02 +00:00
|
|
|
R.id.navigation_home, R.id.navigation_search, R.id.navigation_notifications))
|
2021-04-30 17:20:15 +00:00
|
|
|
//setupActionBarWithNavController(navController, appBarConfiguration)
|
|
|
|
navView.setupWithNavController(navController)
|
2021-05-20 21:25:41 +00:00
|
|
|
|
|
|
|
if (!checkWrite()) {
|
|
|
|
requestRW()
|
|
|
|
if (checkWrite()) return
|
|
|
|
}
|
2021-04-30 17:20:15 +00:00
|
|
|
}
|
|
|
|
}
|