• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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