2018-11-12 10:38:37 -08:00
|
|
|
package cash.z.android.wallet.ui.activity
|
|
|
|
|
|
|
|
import android.os.Bundle
|
2019-01-29 10:08:33 -08:00
|
|
|
import android.view.inputmethod.InputMethodManager
|
|
|
|
import android.view.inputmethod.InputMethodManager.HIDE_NOT_ALWAYS
|
2018-12-06 23:16:51 -08:00
|
|
|
import androidx.appcompat.app.AppCompatDelegate
|
2019-01-29 10:08:33 -08:00
|
|
|
import androidx.core.content.getSystemService
|
2018-11-12 10:38:37 -08:00
|
|
|
import androidx.core.view.GravityCompat
|
2018-11-14 09:06:03 -08:00
|
|
|
import androidx.core.view.doOnLayout
|
2018-11-12 10:38:37 -08:00
|
|
|
import androidx.navigation.NavController
|
2019-01-29 10:08:33 -08:00
|
|
|
import androidx.navigation.NavDestination
|
2018-11-12 10:38:37 -08:00
|
|
|
import androidx.navigation.Navigation
|
|
|
|
import androidx.navigation.ui.AppBarConfiguration
|
|
|
|
import androidx.navigation.ui.navigateUp
|
|
|
|
import androidx.navigation.ui.setupActionBarWithNavController
|
|
|
|
import androidx.navigation.ui.setupWithNavController
|
2018-11-14 09:06:03 -08:00
|
|
|
import cash.z.android.wallet.BuildConfig
|
2018-11-12 10:38:37 -08:00
|
|
|
import cash.z.android.wallet.R
|
2019-01-02 21:32:27 -08:00
|
|
|
import cash.z.android.wallet.ZcashWalletApplication
|
2018-11-12 10:38:37 -08:00
|
|
|
import dagger.Module
|
|
|
|
import dagger.android.ContributesAndroidInjector
|
|
|
|
import dagger.android.support.DaggerAppCompatActivity
|
|
|
|
import kotlinx.android.synthetic.main.activity_main.*
|
2018-11-14 09:06:03 -08:00
|
|
|
import kotlinx.android.synthetic.main.nav_header_main.*
|
2019-01-02 21:32:27 -08:00
|
|
|
import cash.z.wallet.sdk.data.Synchronizer
|
|
|
|
import kotlinx.coroutines.GlobalScope
|
2019-01-29 10:08:33 -08:00
|
|
|
import javax.inject.Inject
|
2018-11-12 10:38:37 -08:00
|
|
|
|
2019-01-29 10:08:33 -08:00
|
|
|
class MainActivity : BaseActivity() {
|
|
|
|
|
|
|
|
@Inject
|
|
|
|
lateinit var synchronizer: Synchronizer
|
2018-11-12 10:38:37 -08:00
|
|
|
|
|
|
|
// used to manage the drawer and drawerToggle interactions
|
2018-12-06 23:16:51 -08:00
|
|
|
private lateinit var appBarConfiguration: AppBarConfiguration
|
2018-11-12 10:38:37 -08:00
|
|
|
lateinit var navController: NavController
|
|
|
|
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
|
super.onCreate(savedInstanceState)
|
|
|
|
setContentView(R.layout.activity_main)
|
2019-01-29 10:08:33 -08:00
|
|
|
synchronizer.start(this)
|
2019-01-02 21:32:27 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
override fun onDestroy() {
|
|
|
|
super.onDestroy()
|
|
|
|
synchronizer.stop()
|
2018-11-12 10:38:37 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
override fun onBackPressed() {
|
|
|
|
if (drawer_layout.isDrawerOpen(GravityCompat.START)) {
|
|
|
|
drawer_layout.closeDrawer(GravityCompat.START)
|
|
|
|
} else {
|
|
|
|
super.onBackPressed()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-11-13 08:59:48 -08:00
|
|
|
/**
|
|
|
|
* Let the navController override the default behavior when the drawer icon or back arrow are clicked. This
|
|
|
|
* automatically takes care of the drawer toggle behavior. Note that without overriding this method, the up/drawer
|
|
|
|
* buttons will not function.
|
|
|
|
*/
|
2018-11-12 10:38:37 -08:00
|
|
|
override fun onSupportNavigateUp(): Boolean {
|
|
|
|
return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
|
|
|
|
}
|
|
|
|
|
2018-12-06 23:16:51 -08:00
|
|
|
fun setupNavigation() {
|
2018-11-13 08:59:48 -08:00
|
|
|
// create and setup the navController and appbarConfiguration
|
|
|
|
navController = Navigation.findNavController(this, R.id.nav_host_fragment).also { n ->
|
|
|
|
appBarConfiguration = AppBarConfiguration(n.graph, drawer_layout).also { a ->
|
|
|
|
nav_view.setupWithNavController(n)
|
|
|
|
setupActionBarWithNavController(n, a)
|
|
|
|
}
|
|
|
|
}
|
2019-01-29 10:08:33 -08:00
|
|
|
navController.addOnNavigatedListener { _, _ ->
|
|
|
|
// hide the keyboard anytime we change destinations
|
|
|
|
getSystemService<InputMethodManager>()?.hideSoftInputFromWindow(nav_view.windowToken, HIDE_NOT_ALWAYS)
|
|
|
|
}
|
2018-11-13 08:59:48 -08:00
|
|
|
|
|
|
|
// remove icon tint so that our colored nav icons show through
|
|
|
|
nav_view.itemIconTintList = null
|
|
|
|
|
2018-11-14 09:06:03 -08:00
|
|
|
nav_view.doOnLayout {
|
|
|
|
text_nav_header_subtitle.text = "Version ${BuildConfig.VERSION_NAME}"
|
|
|
|
}
|
2018-11-13 11:03:11 -08:00
|
|
|
}
|
|
|
|
|
2018-12-06 23:16:51 -08:00
|
|
|
companion object {
|
2019-01-14 00:09:02 -08:00
|
|
|
// TODO: placeholder until we have a network service for this
|
|
|
|
const val USD_PER_ZEC = 56.38
|
2018-12-06 23:16:51 -08:00
|
|
|
init {
|
|
|
|
// Enable vector drawable magic
|
|
|
|
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
|
|
|
|
}
|
2018-11-12 10:38:37 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Module
|
|
|
|
abstract class MainActivityModule {
|
|
|
|
@ContributesAndroidInjector
|
|
|
|
abstract fun contributeMainActivity(): MainActivity
|
|
|
|
}
|