• 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 android.view.WindowManager
20 import androidx.activity.result.contract.ActivityResultContracts.*
21 import androidx.activity.viewModels
22 import androidx.navigation.findNavController
23 import com.android.healthconnect.controller.migration.MigrationActivity.Companion.maybeRedirectToMigrationActivity
24 import com.android.healthconnect.controller.migration.MigrationViewModel
25 import com.android.healthconnect.controller.navigation.DestinationChangedListener
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 
31 /** Entry point activity for Health Connect. */
32 @AndroidEntryPoint(CollapsingToolbarBaseActivity::class)
33 class MainActivity : Hilt_MainActivity() {
34 
35     @Inject lateinit var logger: HealthConnectLogger
36 
37     private val migrationViewModel: MigrationViewModel by viewModels()
38 
onCreatenull39     override fun onCreate(savedInstanceState: Bundle?) {
40         super.onCreate(savedInstanceState)
41         // This flag ensures a non system app cannot show an overlay on Health Connect. b/313425281
42         window.addSystemFlags(WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS)
43 
44         setContentView(R.layout.activity_main)
45 
46         setTitle(R.string.app_label)
47 
48         val currentMigrationState = migrationViewModel.getCurrentMigrationUiState()
49 
50         if (maybeRedirectToMigrationActivity(this, currentMigrationState)) {
51             return
52         }
53     }
54 
onStartnull55     override fun onStart() {
56         super.onStart()
57         findNavController(R.id.nav_host_fragment)
58             .addOnDestinationChangedListener(DestinationChangedListener(this))
59     }
60 
onResumenull61     override fun onResume() {
62         super.onResume()
63         val currentMigrationState = migrationViewModel.getCurrentMigrationUiState()
64 
65         if (maybeRedirectToMigrationActivity(this, currentMigrationState)) {
66             return
67         }
68     }
69 
onBackPressednull70     override fun onBackPressed() {
71         val navController = findNavController(R.id.nav_host_fragment)
72         if (!navController.popBackStack()) {
73             finish()
74         }
75     }
76 
onNavigateUpnull77     override fun onNavigateUp(): Boolean {
78         val navController = findNavController(R.id.nav_host_fragment)
79         if (!navController.popBackStack()) {
80             finish()
81         }
82 
83         return true
84     }
85 
86     // TODO (b/270864219): implement interaction logging for the menu button
87     //    override fun onMenuOpened(featureId: Int, menu: Menu?): Boolean {
88     //        logger.logInteraction(ElementName.TOOLBAR_SETTINGS_BUTTON)
89     //        return super.onMenuOpened(featureId, menu)
90     //    }
91 
92 }
93