mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-23 12:38:33 +00:00
Fix how navigation bar colors are set and interacted with in MainActivity.
This commit is contained in:
@@ -40,7 +40,6 @@ import androidx.compose.ui.graphics.RectangleShape
|
||||
import androidx.compose.ui.graphics.Shape
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.fragment.compose.AndroidFragment
|
||||
import androidx.fragment.compose.rememberFragmentState
|
||||
@@ -112,7 +111,6 @@ import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme
|
||||
import org.thoughtcrime.securesms.util.DynamicTheme
|
||||
import org.thoughtcrime.securesms.util.RemoteConfig
|
||||
import org.thoughtcrime.securesms.util.SplashScreenUtil
|
||||
import org.thoughtcrime.securesms.util.WindowUtil
|
||||
import org.thoughtcrime.securesms.util.viewModel
|
||||
import org.thoughtcrime.securesms.window.AppScaffold
|
||||
import org.thoughtcrime.securesms.window.WindowSizeClass
|
||||
@@ -330,7 +328,6 @@ class MainActivity : PassphraseRequiredActivity(), VoiceNoteMediaControllerOwner
|
||||
|
||||
handleDeepLinkIntent(intent)
|
||||
CachedInflater.from(this).clear()
|
||||
updateNavigationBarColor()
|
||||
|
||||
lifecycleDisposable += vitalsViewModel.vitalsState.subscribe(this::presentVitalsState)
|
||||
}
|
||||
@@ -389,8 +386,6 @@ class MainActivity : PassphraseRequiredActivity(), VoiceNoteMediaControllerOwner
|
||||
.show()
|
||||
}
|
||||
|
||||
updateNavigationBarColor()
|
||||
|
||||
vitalsViewModel.checkSlowNotificationHeuristics()
|
||||
}
|
||||
|
||||
@@ -440,10 +435,6 @@ class MainActivity : PassphraseRequiredActivity(), VoiceNoteMediaControllerOwner
|
||||
handleDonateReturnIntent(intent)
|
||||
}
|
||||
|
||||
private fun updateNavigationBarColor() {
|
||||
WindowUtil.setNavigationBarColor(this, ContextCompat.getColor(this, R.color.signal_colorSurface2))
|
||||
}
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
private fun presentVitalsState(state: VitalsViewModel.State) {
|
||||
when (state) {
|
||||
|
||||
@@ -6,7 +6,6 @@ import android.util.AttributeSet
|
||||
import android.util.DisplayMetrics
|
||||
import android.view.Surface
|
||||
import android.view.View
|
||||
import android.view.WindowInsets
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.constraintlayout.widget.Guideline
|
||||
import androidx.core.content.withStyledAttributes
|
||||
|
||||
@@ -101,46 +101,48 @@ fun MainNavigationBar(
|
||||
state: MainNavigationState,
|
||||
onDestinationSelected: (MainNavigationDestination) -> Unit
|
||||
) {
|
||||
NavigationBar(
|
||||
containerColor = SignalTheme.colors.colorSurface2,
|
||||
contentColor = MaterialTheme.colorScheme.onSurface,
|
||||
modifier = Modifier
|
||||
.navigationBarsPadding()
|
||||
.height(if (state.compact) 48.dp else 80.dp)
|
||||
) {
|
||||
val entries = remember(state.isStoriesFeatureEnabled) {
|
||||
if (state.isStoriesFeatureEnabled) {
|
||||
MainNavigationDestination.entries
|
||||
} else {
|
||||
MainNavigationDestination.entries.filterNot { it == MainNavigationDestination.STORIES }
|
||||
}
|
||||
}
|
||||
|
||||
entries.forEach { destination ->
|
||||
|
||||
val badgeCount = when (destination) {
|
||||
MainNavigationDestination.CHATS -> state.chatsCount
|
||||
MainNavigationDestination.CALLS -> state.callsCount
|
||||
MainNavigationDestination.STORIES -> state.storiesCount
|
||||
Box(modifier = Modifier.background(color = SignalTheme.colors.colorSurface2)) {
|
||||
NavigationBar(
|
||||
containerColor = SignalTheme.colors.colorSurface2,
|
||||
contentColor = MaterialTheme.colorScheme.onSurface,
|
||||
modifier = Modifier
|
||||
.navigationBarsPadding()
|
||||
.height(if (state.compact) 48.dp else 80.dp)
|
||||
) {
|
||||
val entries = remember(state.isStoriesFeatureEnabled) {
|
||||
if (state.isStoriesFeatureEnabled) {
|
||||
MainNavigationDestination.entries
|
||||
} else {
|
||||
MainNavigationDestination.entries.filterNot { it == MainNavigationDestination.STORIES }
|
||||
}
|
||||
}
|
||||
|
||||
val selected = state.selectedDestination == destination
|
||||
NavigationBarItem(
|
||||
selected = selected,
|
||||
icon = {
|
||||
NavigationDestinationIcon(
|
||||
destination = destination,
|
||||
selected = selected
|
||||
)
|
||||
},
|
||||
label = if (state.compact) null else {
|
||||
{ NavigationDestinationLabel(destination) }
|
||||
},
|
||||
onClick = {
|
||||
onDestinationSelected(destination)
|
||||
},
|
||||
modifier = Modifier.drawNavigationBarBadge(count = badgeCount, compact = state.compact)
|
||||
)
|
||||
entries.forEach { destination ->
|
||||
|
||||
val badgeCount = when (destination) {
|
||||
MainNavigationDestination.CHATS -> state.chatsCount
|
||||
MainNavigationDestination.CALLS -> state.callsCount
|
||||
MainNavigationDestination.STORIES -> state.storiesCount
|
||||
}
|
||||
|
||||
val selected = state.selectedDestination == destination
|
||||
NavigationBarItem(
|
||||
selected = selected,
|
||||
icon = {
|
||||
NavigationDestinationIcon(
|
||||
destination = destination,
|
||||
selected = selected
|
||||
)
|
||||
},
|
||||
label = if (state.compact) null else {
|
||||
{ NavigationDestinationLabel(destination) }
|
||||
},
|
||||
onClick = {
|
||||
onDestinationSelected(destination)
|
||||
},
|
||||
modifier = Modifier.drawNavigationBarBadge(count = badgeCount, compact = state.compact)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,6 @@ import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.navigationBarsPadding
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi
|
||||
import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo
|
||||
@@ -196,7 +195,7 @@ private fun ListAndNavigation(
|
||||
bottomNavContent: @Composable () -> Unit,
|
||||
windowSizeClass: WindowSizeClass
|
||||
) {
|
||||
Row(modifier = Modifier.navigationBarsPadding()) {
|
||||
Row {
|
||||
if (windowSizeClass.navigation == Navigation.RAIL) {
|
||||
navRailContent()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user