Use enableEdgeToEdge in MainActivity

pull/3329/head
Alex Baker 10 months ago
parent 5409173830
commit 6ed85f15bc

@ -6,19 +6,25 @@
package com.todoroo.astrid.activity package com.todoroo.astrid.activity
import android.content.Intent import android.content.Intent
import android.graphics.Color
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.activity.SystemBarStyle
import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.enableEdgeToEdge
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.view.ActionMode import androidx.appcompat.view.ActionMode
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ModalBottomSheet import androidx.compose.material3.ModalBottomSheet
import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.core.content.IntentCompat.getParcelableExtra import androidx.core.content.IntentCompat.getParcelableExtra
import androidx.lifecycle.Lifecycle import androidx.lifecycle.Lifecycle
@ -45,12 +51,10 @@ import kotlinx.coroutines.withContext
import org.tasks.BuildConfig import org.tasks.BuildConfig
import org.tasks.R import org.tasks.R
import org.tasks.TasksApplication import org.tasks.TasksApplication
import org.tasks.activities.GoogleTaskListSettingsActivity
import org.tasks.activities.TagSettingsActivity import org.tasks.activities.TagSettingsActivity
import org.tasks.analytics.Firebase import org.tasks.analytics.Firebase
import org.tasks.billing.Inventory import org.tasks.billing.Inventory
import org.tasks.billing.PurchaseActivity import org.tasks.billing.PurchaseActivity
import org.tasks.caldav.BaseCaldavCalendarSettingsActivity
import org.tasks.caldav.BaseCaldavCalendarSettingsActivity.Companion.EXTRA_CALDAV_ACCOUNT import org.tasks.caldav.BaseCaldavCalendarSettingsActivity.Companion.EXTRA_CALDAV_ACCOUNT
import org.tasks.compose.drawer.DrawerAction import org.tasks.compose.drawer.DrawerAction
import org.tasks.compose.drawer.DrawerItem import org.tasks.compose.drawer.DrawerItem
@ -128,6 +132,17 @@ class MainActivity : AppCompatActivity() {
logIntent("onCreate") logIntent("onCreate")
handleIntent() handleIntent()
enableEdgeToEdge(
statusBarStyle = SystemBarStyle.auto(
lightScrim = Color.TRANSPARENT,
darkScrim = Color.TRANSPARENT
),
navigationBarStyle = SystemBarStyle.auto(
lightScrim = Color.TRANSPARENT,
darkScrim = Color.TRANSPARENT
)
)
binding.composeView.setContent { binding.composeView.setContent {
if (viewModel.drawerOpen.collectAsStateWithLifecycle().value) { if (viewModel.drawerOpen.collectAsStateWithLifecycle().value) {
TasksTheme(theme = theme.themeBase.index) { TasksTheme(theme = theme.themeBase.index) {
@ -136,9 +151,18 @@ class MainActivity : AppCompatActivity() {
confirmValueChange = { true }, confirmValueChange = { true },
) )
ModalBottomSheet( ModalBottomSheet(
modifier = Modifier.statusBarsPadding(),
sheetState = sheetState, sheetState = sheetState,
containerColor = MaterialTheme.colorScheme.surface, containerColor = MaterialTheme.colorScheme.surface,
onDismissRequest = { viewModel.closeDrawer() }, onDismissRequest = { viewModel.closeDrawer() },
contentWindowInsets = {
WindowInsets(
left = 0,
top = 0,
right = 0,
bottom = 0
)
},
) { ) {
val state = viewModel.state.collectAsStateWithLifecycle().value val state = viewModel.state.collectAsStateWithLifecycle().value
val context = LocalContext.current val context = LocalContext.current
@ -443,7 +467,6 @@ class MainActivity : AppCompatActivity() {
private fun updateSystemBars(filter: Filter) { private fun updateSystemBars(filter: Filter) {
with (getFilterColor(filter)) { with (getFilterColor(filter)) {
applyToNavigationBar(this@MainActivity)
applyTaskDescription(this@MainActivity, filter.title ?: getString(R.string.app_name)) applyTaskDescription(this@MainActivity, filter.title ?: getString(R.string.app_name))
} }
} }

@ -14,6 +14,7 @@ import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.os.Parcelable import android.os.Parcelable
import android.speech.RecognizerIntent import android.speech.RecognizerIntent
import android.util.TypedValue
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
@ -33,7 +34,10 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.ViewCompositionStrategy import androidx.compose.ui.platform.ViewCompositionStrategy
import androidx.core.app.ShareCompat import androidx.core.app.ShareCompat
import androidx.core.content.IntentCompat import androidx.core.content.IntentCompat
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
@ -125,6 +129,7 @@ import org.tasks.markdown.MarkdownProvider
import org.tasks.preferences.Device import org.tasks.preferences.Device
import org.tasks.preferences.MainPreferences import org.tasks.preferences.MainPreferences
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.preferences.ResourceResolver.getData
import org.tasks.scheduling.NotificationSchedulerIntentService import org.tasks.scheduling.NotificationSchedulerIntentService
import org.tasks.sync.SyncAdapters import org.tasks.sync.SyncAdapters
import org.tasks.tags.TagPickerActivity import org.tasks.tags.TagPickerActivity
@ -283,6 +288,20 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL
} }
} }
binding = FragmentTaskListBinding.inflate(inflater, container, false) binding = FragmentTaskListBinding.inflate(inflater, container, false)
ViewCompat.setOnApplyWindowInsetsListener(binding.toolbar) { view, windowInsets ->
val actionBarHeight = TypedValue.complexToDimensionPixelSize(
getData(requireContext(), android.R.attr.actionBarSize),
resources.displayMetrics
)
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
val params = view.layoutParams
params.height = actionBarHeight + insets.top
view.layoutParams = params
view.updatePadding(top = insets.top)
windowInsets
}
filter = getFilter() filter = getFilter()
val swipeRefreshLayout: SwipeRefreshLayout val swipeRefreshLayout: SwipeRefreshLayout
val emptyRefreshLayout: SwipeRefreshLayout val emptyRefreshLayout: SwipeRefreshLayout

Loading…
Cancel
Save