teapod/app/src/main/java/org/mosad/teapod/MainActivity.kt

110 lines
3.6 KiB
Kotlin
Raw Normal View History

2020-10-08 22:20:20 +02:00
package org.mosad.teapod
2020-10-11 13:18:20 +02:00
import android.content.Intent
2020-10-08 22:20:20 +02:00
import android.os.Bundle
2020-10-11 13:18:20 +02:00
import android.util.Log
2020-10-11 10:02:00 +02:00
import android.view.MenuItem
2020-10-08 22:20:20 +02:00
import com.google.android.material.bottomnavigation.BottomNavigationView
import androidx.appcompat.app.AppCompatActivity
2020-10-11 10:02:00 +02:00
import androidx.fragment.app.Fragment
import androidx.fragment.app.commit
import kotlinx.android.synthetic.main.activity_main.*
2020-10-08 22:20:20 +02:00
import org.mosad.teapod.parser.AoDParser
2020-10-11 13:18:20 +02:00
import org.mosad.teapod.preferences.EncryptedPreferences
2020-10-11 10:02:00 +02:00
import org.mosad.teapod.ui.MediaFragment
import org.mosad.teapod.ui.account.AccountFragment
import org.mosad.teapod.ui.components.LoginDialog
2020-10-11 10:02:00 +02:00
import org.mosad.teapod.ui.home.HomeFragment
import org.mosad.teapod.ui.library.LibraryFragment
import org.mosad.teapod.ui.search.SearchFragment
import org.mosad.teapod.util.Media
import org.mosad.teapod.util.TMDBApiController
2020-10-08 22:20:20 +02:00
2020-10-11 10:02:00 +02:00
class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemSelectedListener {
private var activeFragment: Fragment = HomeFragment() // the currently active fragment, home at the start
2020-10-08 22:20:20 +02:00
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val navView: BottomNavigationView = findViewById(R.id.nav_view)
2020-10-11 10:02:00 +02:00
navView.setOnNavigationItemSelectedListener(this)
2020-10-08 22:20:20 +02:00
load()
}
2020-10-11 10:02:00 +02:00
override fun onBackPressed() {
if (supportFragmentManager.backStackEntryCount > 0) {
supportFragmentManager.popBackStack()
} else {
if (activeFragment !is HomeFragment) {
nav_view.selectedItemId = R.id.navigation_home
} else {
super.onBackPressed()
}
}
}
override fun onNavigationItemSelected(item: MenuItem): Boolean {
val ret = when (item.itemId) {
R.id.navigation_home -> {
activeFragment = HomeFragment()
true
}
R.id.navigation_library -> {
activeFragment = LibraryFragment()
true
}
R.id.navigation_search -> {
activeFragment = SearchFragment()
true
}
R.id.navigation_account -> {
activeFragment = AccountFragment()
true
}
else -> false
}
supportFragmentManager.commit {
replace(R.id.nav_host_fragment, activeFragment)
}
return ret
}
2020-10-08 22:20:20 +02:00
private fun load() {
2020-10-11 13:18:20 +02:00
EncryptedPreferences.readCredentials(this)
if (EncryptedPreferences.password.isEmpty()) {
Log.i(javaClass.name, "please login!")
LoginDialog(this).positiveButton {
EncryptedPreferences.saveCredentials(login, password, context)
}.negativeButton {
Log.i(javaClass.name, "Login canceled, exiting.")
finish()
}.show()
2020-10-11 13:18:20 +02:00
}
2020-10-08 22:20:20 +02:00
}
2020-10-11 10:02:00 +02:00
fun showDetailFragment(media: Media) {
media.episodes = AoDParser().loadStreams(media) // load the streams for the selected media
2020-10-11 10:02:00 +02:00
val tmdb = TMDBApiController().search(media.title, media.type)
val mediaFragment = MediaFragment(media, tmdb)
2020-10-11 10:02:00 +02:00
supportFragmentManager.commit {
add(R.id.nav_host_fragment, mediaFragment, "MediaFragment")
addToBackStack(null)
show(mediaFragment)
}
}
2020-10-11 13:18:20 +02:00
fun startPlayer(streamUrl: String) {
val intent = Intent(this, PlayerActivity::class.java).apply {
putExtra(getString(R.string.intent_stream_url), streamUrl)
2020-10-11 13:18:20 +02:00
}
startActivity(intent)
}
2020-10-08 22:20:20 +02:00
}