1 /** 2 * Copyright (C) 2022 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 * in compliance with the License. You may obtain a copy of the License at 6 * 7 * ``` 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * ``` 10 * 11 * Unless required by applicable law or agreed to in writing, software distributed under the License 12 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 13 * or implied. See the License for the specific language governing permissions and limitations under 14 * the License. 15 */ 16 package com.android.healthconnect.controller 17 18 import android.os.Bundle 19 import androidx.activity.viewModels 20 import androidx.navigation.findNavController 21 import com.android.healthconnect.controller.migration.MigrationActivity.Companion.maybeRedirectToMigrationActivity 22 import com.android.healthconnect.controller.migration.MigrationViewModel 23 import com.android.healthconnect.controller.navigation.DestinationChangedListener 24 import com.android.healthconnect.controller.onboarding.OnboardingActivity.Companion.maybeRedirectToOnboardingActivity 25 import com.android.healthconnect.controller.utils.activity.EmbeddingUtils.maybeRedirectIntoTwoPaneSettings 26 import com.android.healthconnect.controller.utils.logging.HealthConnectLogger 27 import com.android.settingslib.collapsingtoolbar.CollapsingToolbarBaseActivity 28 import dagger.hilt.android.AndroidEntryPoint 29 import javax.inject.Inject 30 import kotlinx.coroutines.runBlocking 31 32 /** Entry point activity for Health Connect. */ 33 @AndroidEntryPoint(CollapsingToolbarBaseActivity::class) 34 class MainActivity : Hilt_MainActivity() { 35 @Inject lateinit var logger: HealthConnectLogger 36 private val migrationViewModel: MigrationViewModel by viewModels() 37 onCreatenull38 public override fun onCreate(savedInstanceState: Bundle?) { 39 super.onCreate(savedInstanceState) 40 setContentView(R.layout.activity_main) 41 42 setTitle(R.string.app_label) 43 44 if (maybeRedirectIntoTwoPaneSettings(this)) { 45 return 46 } 47 48 if (maybeRedirectToOnboardingActivity(this, intent)) { 49 return 50 } 51 52 val currentMigrationState = runBlocking { migrationViewModel.getCurrentMigrationUiState() } 53 54 if (maybeRedirectToMigrationActivity(this, currentMigrationState)) { 55 return 56 } 57 } 58 onStartnull59 override fun onStart() { 60 super.onStart() 61 findNavController(R.id.nav_host_fragment) 62 .addOnDestinationChangedListener(DestinationChangedListener(this)) 63 } 64 onResumenull65 override fun onResume() { 66 super.onResume() 67 val currentMigrationState = runBlocking { migrationViewModel.getCurrentMigrationUiState() } 68 69 if (maybeRedirectToMigrationActivity(this, currentMigrationState)) { 70 return 71 } 72 } 73 onBackPressednull74 override fun onBackPressed() { 75 val navController = findNavController(R.id.nav_host_fragment) 76 if (!navController.popBackStack()) { 77 finish() 78 } 79 } 80 onNavigateUpnull81 override fun onNavigateUp(): Boolean { 82 val navController = findNavController(R.id.nav_host_fragment) 83 if (!navController.popBackStack()) { 84 finish() 85 } 86 return true 87 } 88 89 // TODO (b/270864219): implement interaction logging for the menu button 90 // override fun onMenuOpened(featureId: Int, menu: Menu?): Boolean { 91 // logger.logInteraction(ElementName.TOOLBAR_SETTINGS_BUTTON) 92 // return super.onMenuOpened(featureId, menu) 93 // } 94 95 } 96