Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // RootActivity
- var baseFragment: BaseFragment? = null
- var currentFragmentId: Int = 0
- var isAdvancedFab = true
- var isRotate = false
- @ExperimentalCoroutinesApi
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- ActivityRootBinding.inflate(layoutInflater).apply {
- binding = this
- setContentView(root)
- navController.navInflater.inflate(R.navigation.contact_graph).apply {
- startDestination = R.id.menuContacts
- }
- mainBottomNavigationMenu.setupWithNavController(navController)
- registeredServiceCallInterceptor()
- registerFAB(this)
- registerDynamicLinksListener()
- checkPermissions()
- }
- }
- override fun onResume() {
- super.onResume()
- binding?.apply {
- fabContainer.floatButton.visibility = setViewVisibility(false)
- navController.addOnDestinationChangedListener { _, destination, _ ->
- destinationListener(this, destination)
- }
- }
- }
- override fun onDestroy() {
- super.onDestroy()
- binding = null
- }
- fun fabState(state: FabState) {
- binding?.let { bind ->
- bind.fabContainer.apply {
- when (state) {
- is FabState.InitState -> {
- viewAnimation.init(fabOpenKeypad)
- viewAnimation.init(fabAddContact)
- }
- is FabState.OpenState -> {
- viewAnimation.showIn(fabOpenKeypad)
- viewAnimation.showIn(fabAddContact)
- }
- is FabState.CloseState -> {
- viewAnimation.showOut(fabOpenKeypad)
- viewAnimation.showOut(fabAddContact)
- }
- is FabState.SimpleState -> Unit
- is FabState.ResetState -> {
- viewAnimation.reset(fabOpenKeypad)
- viewAnimation.reset(fabAddContact)
- isRotate = viewAnimation.rotateFab(floatButton, false)
- }
- }
- }
- }
- }
- private fun registerFAB(binding: ActivityRootBinding) {
- binding.apply {
- fabState(FabState.InitState)
- fabContainer.apply {
- floatButton.setOnClickListener { fab -> baseFragment?.floatClick(fab) }
- fabOpenKeypad.setOnClickListener { baseFragment?.keypadClick() }
- fabAddContact.setOnClickListener { baseFragment?.addContactClick() }
- }
- }
- }
- private fun destinationListener(binding: ActivityRootBinding, destination: NavDestination) {
- binding.apply {
- Log.v("RootActivity!!!!", " destinationListener...")
- fabState(FabState.ResetState)
- mainBottomNavigationMenu.visibility = setViewVisibility(
- when (destination.id) {
- R.id.menuContacts -> true
- R.id.groupsFragment -> true
- R.id.menuJournal -> true
- R.id.menuCalendar -> true
- R.id.menuSettings -> true
- else -> false
- }
- )
- fabContainer.floatButton.visibility = setViewVisibility(
- when (destination.id) {
- R.id.menuContacts -> true
- R.id.menuCalendar -> true
- else -> false
- }
- )
- isAdvancedFab = when (destination.id) {
- R.id.groupsFragment -> false
- R.id.filtersContainerFragment -> false
- R.id.menuCalendar -> false
- R.id.calendarDayFragment -> false
- R.id.calendarWeekFragment -> false
- R.id.calendarMonthFragment -> false
- R.id.newEventFragment -> false
- R.id.repeatSettingsFragment -> false
- else -> true
- }
- }
- }
- // BaseFragment
- override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- super.onViewCreated(view, savedInstanceState)
- setupFAB()
- setupUI(view)
- setupObserver()
- }
- override fun onResume() {
- super.onResume()
- activity?.let { fa ->
- if (fa is RootActivity) {
- fa.baseFragment = this
- fa.currentFragmentId = currentDestination()
- fa.fabState(FabState.ResetState)
- }
- }
- }
- open fun floatClick(fab: View) {
- activity?.let { fa ->
- if (fa is RootActivity) {
- if (fa.isAdvancedFab) fa.isRotate = viewAnimation.rotateFab(fab, !fa.isRotate)
- fabAction(fa)
- mainFabNavigate(fa.currentFragmentId)
- }
- }
- }
- open fun addContactClick() { }
- open fun keypadClick() { }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement