From 6ed85f15bc27f5588162fa115c0b636687d12948 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Sat, 8 Feb 2025 09:29:54 -0600 Subject: [PATCH] Use enableEdgeToEdge in MainActivity --- .../todoroo/astrid/activity/MainActivity.kt | 29 +++++++++++++++++-- .../astrid/activity/TaskListFragment.kt | 19 ++++++++++++ 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt index 08491e3f0..93695e66b 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt +++ b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt @@ -6,19 +6,25 @@ package com.todoroo.astrid.activity import android.content.Intent +import android.graphics.Color import android.os.Bundle import android.view.View +import androidx.activity.SystemBarStyle import androidx.activity.compose.rememberLauncherForActivityResult +import androidx.activity.enableEdgeToEdge import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.view.ActionMode 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.MaterialTheme import androidx.compose.material3.ModalBottomSheet import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.core.content.IntentCompat.getParcelableExtra import androidx.lifecycle.Lifecycle @@ -45,12 +51,10 @@ import kotlinx.coroutines.withContext import org.tasks.BuildConfig import org.tasks.R import org.tasks.TasksApplication -import org.tasks.activities.GoogleTaskListSettingsActivity import org.tasks.activities.TagSettingsActivity import org.tasks.analytics.Firebase import org.tasks.billing.Inventory import org.tasks.billing.PurchaseActivity -import org.tasks.caldav.BaseCaldavCalendarSettingsActivity import org.tasks.caldav.BaseCaldavCalendarSettingsActivity.Companion.EXTRA_CALDAV_ACCOUNT import org.tasks.compose.drawer.DrawerAction import org.tasks.compose.drawer.DrawerItem @@ -128,6 +132,17 @@ class MainActivity : AppCompatActivity() { logIntent("onCreate") handleIntent() + enableEdgeToEdge( + statusBarStyle = SystemBarStyle.auto( + lightScrim = Color.TRANSPARENT, + darkScrim = Color.TRANSPARENT + ), + navigationBarStyle = SystemBarStyle.auto( + lightScrim = Color.TRANSPARENT, + darkScrim = Color.TRANSPARENT + ) + ) + binding.composeView.setContent { if (viewModel.drawerOpen.collectAsStateWithLifecycle().value) { TasksTheme(theme = theme.themeBase.index) { @@ -136,9 +151,18 @@ class MainActivity : AppCompatActivity() { confirmValueChange = { true }, ) ModalBottomSheet( + modifier = Modifier.statusBarsPadding(), sheetState = sheetState, containerColor = MaterialTheme.colorScheme.surface, onDismissRequest = { viewModel.closeDrawer() }, + contentWindowInsets = { + WindowInsets( + left = 0, + top = 0, + right = 0, + bottom = 0 + ) + }, ) { val state = viewModel.state.collectAsStateWithLifecycle().value val context = LocalContext.current @@ -443,7 +467,6 @@ class MainActivity : AppCompatActivity() { private fun updateSystemBars(filter: Filter) { with (getFilterColor(filter)) { - applyToNavigationBar(this@MainActivity) applyTaskDescription(this@MainActivity, filter.title ?: getString(R.string.app_name)) } } diff --git a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt index d183e1802..bccfcebe0 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt +++ b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt @@ -14,6 +14,7 @@ import android.content.Intent import android.os.Bundle import android.os.Parcelable import android.speech.RecognizerIntent +import android.util.TypedValue import android.view.LayoutInflater import android.view.Menu import android.view.MenuItem @@ -33,7 +34,10 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.ViewCompositionStrategy import androidx.core.app.ShareCompat import androidx.core.content.IntentCompat +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat import androidx.core.view.isVisible +import androidx.core.view.updatePadding import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.fragment.app.viewModels @@ -125,6 +129,7 @@ import org.tasks.markdown.MarkdownProvider import org.tasks.preferences.Device import org.tasks.preferences.MainPreferences import org.tasks.preferences.Preferences +import org.tasks.preferences.ResourceResolver.getData import org.tasks.scheduling.NotificationSchedulerIntentService import org.tasks.sync.SyncAdapters import org.tasks.tags.TagPickerActivity @@ -283,6 +288,20 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL } } 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() val swipeRefreshLayout: SwipeRefreshLayout val emptyRefreshLayout: SwipeRefreshLayout