diff options
12 files changed, 240 insertions, 228 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index be19251a53..c26d7bedfc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,7 @@ Line wrap the file at 100 chars. Th #### Android - Clarify some of the error messages showed in notifications. - Change and add text in Content blockers informational dialog. +- Update advanced settings scrollbar appearance. ### Deprecated #### Linux diff --git a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/ChangelogDialogTest.kt b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/ChangelogDialogTest.kt index 3fffcb63c1..85a9c49810 100644 --- a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/ChangelogDialogTest.kt +++ b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/ChangelogDialogTest.kt @@ -10,8 +10,8 @@ import io.mockk.impl.annotations.MockK import io.mockk.just import io.mockk.verify import kotlinx.coroutines.flow.MutableStateFlow -import net.mullvad.mullvadvpn.compose.component.AppTheme import net.mullvad.mullvadvpn.compose.dialog.ChangelogDialog +import net.mullvad.mullvadvpn.compose.theme.AppTheme import net.mullvad.mullvadvpn.viewmodel.ChangelogDialogUiState import net.mullvad.mullvadvpn.viewmodel.ChangelogViewModel import org.junit.Before diff --git a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceRevokedScreenTest.kt b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceRevokedScreenTest.kt index 741e57612e..a974346f5f 100644 --- a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceRevokedScreenTest.kt +++ b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceRevokedScreenTest.kt @@ -10,8 +10,8 @@ import io.mockk.impl.annotations.MockK import io.mockk.just import io.mockk.verify import kotlinx.coroutines.flow.MutableStateFlow -import net.mullvad.mullvadvpn.compose.component.AppTheme import net.mullvad.mullvadvpn.compose.state.DeviceRevokedUiState +import net.mullvad.mullvadvpn.compose.theme.AppTheme import net.mullvad.mullvadvpn.viewmodel.DeviceRevokedViewModel import org.junit.Before import org.junit.Rule diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/Scrollbar.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/Scrollbar.kt index da5759ec1c..4af39cf4b5 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/Scrollbar.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/Scrollbar.kt @@ -1,7 +1,7 @@ package net.mullvad.mullvadvpn.compose.component /* - * Code snippet taken from https://gist.github.com/mxalbert1996/33a360fcab2105a31e5355af98216f5a + * Code snippet with minor modifications from: https://gist.github.com/mxalbert1996/33a360fcab2105a31e5355af98216f5a * * MIT License * @@ -51,6 +51,7 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.composed import androidx.compose.ui.draw.drawWithContent +import androidx.compose.ui.geometry.CornerRadius import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color @@ -193,6 +194,7 @@ private fun DrawScope.drawScrollbar( startOffset: Float ) { val thicknessPx = Thickness.toPx() + val radiusPx = Radius.toPx() val topLeft = if (orientation == Orientation.Horizontal) { Offset( @@ -212,7 +214,13 @@ private fun DrawScope.drawScrollbar( Size(thicknessPx, thumbSize) } - drawRect(color = color, topLeft = topLeft, size = size, alpha = alpha()) + drawRoundRect( + color = color, + topLeft = topLeft, + size = size, + alpha = alpha(), + cornerRadius = CornerRadius(radiusPx, radiusPx) + ) } private fun Modifier.drawScrollbar( @@ -270,9 +278,10 @@ private fun Modifier.drawScrollbar( } private val BarColor: Color - @Composable get() = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.5f) + @Composable get() = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.6f) -private val Thickness = 4.dp +private val Thickness = 8.dp +private val Radius = 4.dp private val FadeOutAnimationSpec = tween<Float>(durationMillis = ViewConfiguration.getScrollBarFadeDuration()) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/Theme.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/Theme.kt deleted file mode 100644 index 8257dab2db..0000000000 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/Theme.kt +++ /dev/null @@ -1,9 +0,0 @@ -package net.mullvad.mullvadvpn.compose.component - -import androidx.compose.material.MaterialTheme -import androidx.compose.runtime.Composable - -@Composable -fun AppTheme(content: @Composable () -> Unit) { - MaterialTheme(content = content) -} diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AdvancedSettingScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AdvancedSettingScreen.kt index c85fa54cce..92c58f1f77 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AdvancedSettingScreen.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AdvancedSettingScreen.kt @@ -52,7 +52,6 @@ import net.mullvad.mullvadvpn.compose.dialog.MalwareInfoDialog import net.mullvad.mullvadvpn.compose.dialog.MtuDialog import net.mullvad.mullvadvpn.compose.extensions.itemWithDivider import net.mullvad.mullvadvpn.compose.state.AdvancedSettingsUiState -import net.mullvad.mullvadvpn.compose.theme.CollapsingToolbarTheme import net.mullvad.mullvadvpn.compose.theme.MullvadBlue20 import net.mullvad.mullvadvpn.compose.theme.MullvadDarkBlue import net.mullvad.mullvadvpn.viewmodel.CustomDnsItem @@ -159,185 +158,182 @@ fun AdvancedSettingScreen( var expandContentBlockersState by rememberSaveable { mutableStateOf(false) } val biggerPadding = 54.dp val topPadding = 6.dp - CollapsingToolbarTheme { - val state = rememberCollapsingToolbarScaffoldState() - val progress = state.toolbarState.progress + val state = rememberCollapsingToolbarScaffoldState() + val progress = state.toolbarState.progress - CollapsableAwareToolbarScaffold( - backgroundColor = MullvadDarkBlue, - modifier = Modifier.fillMaxSize(), - state = state, - scrollStrategy = ScrollStrategy.ExitUntilCollapsed, - isEnabledWhenCollapsable = true, - toolbar = { - val scaffoldModifier = - Modifier.road( - whenCollapsed = Alignment.TopCenter, - whenExpanded = Alignment.BottomStart - ) - CollapsingTopBar( - backgroundColor = MullvadDarkBlue, - onBackClicked = { onBackClick() }, - title = stringResource(id = R.string.settings_advanced), - progress = progress, - modifier = scaffoldModifier, - backTitle = stringResource(id = R.string.settings) + CollapsableAwareToolbarScaffold( + backgroundColor = MullvadDarkBlue, + modifier = Modifier.fillMaxSize(), + state = state, + scrollStrategy = ScrollStrategy.ExitUntilCollapsed, + isEnabledWhenCollapsable = true, + toolbar = { + val scaffoldModifier = + Modifier.road( + whenCollapsed = Alignment.TopCenter, + whenExpanded = Alignment.BottomStart ) + CollapsingTopBar( + backgroundColor = MullvadDarkBlue, + onBackClicked = { onBackClick() }, + title = stringResource(id = R.string.settings_advanced), + progress = progress, + modifier = scaffoldModifier, + backTitle = stringResource(id = R.string.settings) + ) + } + ) { + DisposableEffect(lifecycleOwner) { + val observer = LifecycleEventObserver { _, event -> + if (event == Lifecycle.Event.ON_STOP) { + onStopEvent() + } } + lifecycleOwner.lifecycle.addObserver(observer) + onDispose { lifecycleOwner.lifecycle.removeObserver(observer) } + } + LazyColumn( + modifier = + Modifier.drawVerticalScrollbar(lazyListState) + .fillMaxWidth() + .wrapContentHeight() + .animateContentSize(), + state = lazyListState ) { - DisposableEffect(lifecycleOwner) { - val observer = LifecycleEventObserver { _, event -> - if (event == Lifecycle.Event.ON_STOP) { - onStopEvent() - } - } - lifecycleOwner.lifecycle.addObserver(observer) - onDispose { lifecycleOwner.lifecycle.removeObserver(observer) } + item { MtuComposeCell(mtuValue = uiState.mtu, onEditMtu = { onMtuCellClick() }) } + + itemWithDivider { + NavigationComposeCell( + title = stringResource(id = R.string.split_tunneling), + onClick = { onSplitTunnelingNavigationClick.invoke() } + ) } - LazyColumn( - modifier = - Modifier.drawVerticalScrollbar(lazyListState) - .fillMaxWidth() - .wrapContentHeight() - .animateContentSize(), - state = lazyListState - ) { - item { MtuComposeCell(mtuValue = uiState.mtu, onEditMtu = { onMtuCellClick() }) } + itemWithDivider { + ExpandableComposeCell( + title = stringResource(R.string.dns_content_blockers_title), + isExpanded = !expandContentBlockersState, + isEnabled = !uiState.isCustomDnsEnabled, + onInfoClicked = { onContentsBlockersInfoClicked() }, + onCellClicked = { expandContentBlockersState = !expandContentBlockersState } + ) + } + + if (expandContentBlockersState) { itemWithDivider { - NavigationComposeCell( - title = stringResource(id = R.string.split_tunneling), - onClick = { onSplitTunnelingNavigationClick.invoke() } + SwitchComposeCell( + title = stringResource(R.string.block_ads_title), + isToggled = uiState.contentBlockersOptions.blockAds, + isEnabled = !uiState.isCustomDnsEnabled, + onCellClicked = { onToggleBlockAds(it) }, + background = MullvadBlue20 ) } - itemWithDivider { - ExpandableComposeCell( - title = stringResource(R.string.dns_content_blockers_title), - isExpanded = !expandContentBlockersState, + SwitchComposeCell( + title = stringResource(R.string.block_trackers_title), + isToggled = uiState.contentBlockersOptions.blockTrackers, isEnabled = !uiState.isCustomDnsEnabled, - onInfoClicked = { onContentsBlockersInfoClicked() }, - onCellClicked = { expandContentBlockersState = !expandContentBlockersState } + onCellClicked = { onToggleBlockTrackers(it) }, + background = MullvadBlue20 ) } - - if (expandContentBlockersState) { - itemWithDivider { - SwitchComposeCell( - title = stringResource(R.string.block_ads_title), - isToggled = uiState.contentBlockersOptions.blockAds, - isEnabled = !uiState.isCustomDnsEnabled, - onCellClicked = { onToggleBlockAds(it) }, - background = MullvadBlue20 - ) - } - itemWithDivider { - SwitchComposeCell( - title = stringResource(R.string.block_trackers_title), - isToggled = uiState.contentBlockersOptions.blockTrackers, - isEnabled = !uiState.isCustomDnsEnabled, - onCellClicked = { onToggleBlockTrackers(it) }, - background = MullvadBlue20 - ) - } - itemWithDivider { - SwitchComposeCell( - title = stringResource(R.string.block_malware_title), - isToggled = uiState.contentBlockersOptions.blockMalware, - isEnabled = !uiState.isCustomDnsEnabled, - onCellClicked = { onToggleBlockMalware(it) }, - onInfoClicked = { onMalwareInfoClicked() }, - background = MullvadBlue20 - ) - } - itemWithDivider { - SwitchComposeCell( - title = stringResource(R.string.block_gambling_title), - isToggled = uiState.contentBlockersOptions.blockGambling, - isEnabled = !uiState.isCustomDnsEnabled, - onCellClicked = { onToggleBlockGambling(it) }, - background = MullvadBlue20 - ) - } - itemWithDivider { - SwitchComposeCell( - title = stringResource(R.string.block_adult_content_title), - isToggled = uiState.contentBlockersOptions.blockAdultContent, - isEnabled = !uiState.isCustomDnsEnabled, - onCellClicked = { onToggleBlockAdultContent(it) }, - background = MullvadBlue20 - ) - } - - if (uiState.isCustomDnsEnabled) { - item { - ContentBlockersDisableModeCellSubtitle( - Modifier.background(MullvadDarkBlue) - .padding( - start = cellHorizontalSpacing, - top = topPadding, - end = cellHorizontalSpacing, - bottom = cellVerticalSpacing, - ) - ) - } - } + itemWithDivider { + SwitchComposeCell( + title = stringResource(R.string.block_malware_title), + isToggled = uiState.contentBlockersOptions.blockMalware, + isEnabled = !uiState.isCustomDnsEnabled, + onCellClicked = { onToggleBlockMalware(it) }, + onInfoClicked = { onMalwareInfoClicked() }, + background = MullvadBlue20 + ) } - - item { - Spacer(modifier = Modifier.height(cellVerticalSpacing)) + itemWithDivider { SwitchComposeCell( - title = stringResource(R.string.enable_custom_dns), - isToggled = uiState.isCustomDnsEnabled, - isEnabled = uiState.contentBlockersOptions.isAnyBlockerEnabled().not(), - onCellClicked = { newValue -> onToggleDnsClick(newValue) } + title = stringResource(R.string.block_gambling_title), + isToggled = uiState.contentBlockersOptions.blockGambling, + isEnabled = !uiState.isCustomDnsEnabled, + onCellClicked = { onToggleBlockGambling(it) }, + background = MullvadBlue20 ) } - - if (uiState.isCustomDnsEnabled) { - itemsIndexed(uiState.customDnsItems) { index, item -> - DnsCell( - address = item.address, - isUnreachableLocalDnsWarningVisible = - item.isLocal && uiState.isAllowLanEnabled.not(), - onClick = { onDnsClick(index) }, - modifier = Modifier.animateItemPlacement() - ) - Divider() - } - - itemWithDivider { - BaseCell( - onCellClicked = { onDnsClick(null) }, - title = { - Text( - text = stringResource(id = R.string.add_a_server), - color = Color.White, - ) - }, - bodyView = {}, - subtitle = null, - background = MullvadBlue20, - startPadding = biggerPadding - ) - } + itemWithDivider { + SwitchComposeCell( + title = stringResource(R.string.block_adult_content_title), + isToggled = uiState.contentBlockersOptions.blockAdultContent, + isEnabled = !uiState.isCustomDnsEnabled, + onCellClicked = { onToggleBlockAdultContent(it) }, + background = MullvadBlue20 + ) } - item { - CustomDnsCellSubtitle( - isCellClickable = - uiState.contentBlockersOptions.isAnyBlockerEnabled().not(), - modifier = + if (uiState.isCustomDnsEnabled) { + item { + ContentBlockersDisableModeCellSubtitle( Modifier.background(MullvadDarkBlue) .padding( start = cellHorizontalSpacing, top = topPadding, end = cellHorizontalSpacing, - bottom = cellVerticalSpacing + bottom = cellVerticalSpacing, ) + ) + } + } + } + + item { + Spacer(modifier = Modifier.height(cellVerticalSpacing)) + SwitchComposeCell( + title = stringResource(R.string.enable_custom_dns), + isToggled = uiState.isCustomDnsEnabled, + isEnabled = uiState.contentBlockersOptions.isAnyBlockerEnabled().not(), + onCellClicked = { newValue -> onToggleDnsClick(newValue) } + ) + } + + if (uiState.isCustomDnsEnabled) { + itemsIndexed(uiState.customDnsItems) { index, item -> + DnsCell( + address = item.address, + isUnreachableLocalDnsWarningVisible = + item.isLocal && uiState.isAllowLanEnabled.not(), + onClick = { onDnsClick(index) }, + modifier = Modifier.animateItemPlacement() + ) + Divider() + } + + itemWithDivider { + BaseCell( + onCellClicked = { onDnsClick(null) }, + title = { + Text( + text = stringResource(id = R.string.add_a_server), + color = Color.White, + ) + }, + bodyView = {}, + subtitle = null, + background = MullvadBlue20, + startPadding = biggerPadding ) } } + + item { + CustomDnsCellSubtitle( + isCellClickable = uiState.contentBlockersOptions.isAnyBlockerEnabled().not(), + modifier = + Modifier.background(MullvadDarkBlue) + .padding( + start = cellHorizontalSpacing, + top = topPadding, + end = cellHorizontalSpacing, + bottom = cellVerticalSpacing + ) + ) + } } } } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/theme/Theme.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/theme/Theme.kt index e02626029e..d1de017412 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/theme/Theme.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/theme/Theme.kt @@ -1,14 +1,19 @@ package net.mullvad.mullvadvpn.compose.theme import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Shapes -import androidx.compose.material.lightColors +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Shapes +import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable import androidx.compose.ui.unit.dp private val MullvadColorPalette = - lightColors(primary = MullvadBlue, primaryVariant = MullvadDarkBlue, secondary = MullvadRed) + lightColorScheme( + primary = MullvadBlue, + secondary = MullvadDarkBlue, + tertiary = MullvadRed, + onSurfaceVariant = MullvadWhite + ) val Shapes = Shapes( @@ -18,8 +23,8 @@ val Shapes = ) @Composable -fun CollapsingToolbarTheme(content: @Composable () -> Unit) { +fun AppTheme(content: @Composable () -> Unit) { val colors = MullvadColorPalette - MaterialTheme(colors = colors, shapes = Shapes, content = content) + MaterialTheme(colorScheme = colors, shapes = Shapes, content = content) } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/AdvancedFragment.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/AdvancedFragment.kt index a928397453..62661b0455 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/AdvancedFragment.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/AdvancedFragment.kt @@ -9,6 +9,7 @@ import androidx.compose.runtime.collectAsState import androidx.compose.ui.platform.ComposeView import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.compose.screen.AdvancedSettingScreen +import net.mullvad.mullvadvpn.compose.theme.AppTheme import net.mullvad.mullvadvpn.viewmodel.AdvancedSettingsViewModel import org.koin.androidx.viewmodel.ext.android.viewModel @@ -23,32 +24,34 @@ class AdvancedFragment : BaseFragment() { ): View? { return inflater.inflate(R.layout.fragment_compose, container, false).apply { findViewById<ComposeView>(R.id.compose_view).setContent { - val state = vm.uiState.collectAsState().value - AdvancedSettingScreen( - uiState = state, - onMtuCellClick = vm::onMtuCellClick, - onMtuInputChange = vm::onMtuInputChange, - onSaveMtuClick = vm::onSaveMtuClick, - onRestoreMtuClick = vm::onRestoreMtuClick, - onCancelMtuDialogClicked = vm::onCancelDialogClick, - onSplitTunnelingNavigationClick = ::openSplitTunnelingFragment, - onToggleDnsClick = vm::onToggleDnsClick, - onToggleBlockAds = vm::onToggleBlockAds, - onToggleBlockTrackers = vm::onToggleBlockTrackers, - onToggleBlockMalware = vm::onToggleBlockMalware, - onToggleBlockAdultContent = vm::onToggleBlockAdultContent, - onToggleBlockGambling = vm::onToggleBlockGambling, - onDnsClick = vm::onDnsClick, - onDnsInputChange = vm::onDnsInputChange, - onSaveDnsClick = vm::onSaveDnsClick, - onRemoveDnsClick = vm::onRemoveDnsClick, - onCancelDnsDialogClick = vm::onCancelDialogClick, - onContentsBlockersInfoClicked = vm::onContentsBlockerInfoClick, - onMalwareInfoClicked = vm::onMalwareInfoClick, - onDismissInfoClicked = vm::onDismissInfoClick, - onBackClick = { activity?.onBackPressed() }, - onStopEvent = vm::onStopEvent - ) + AppTheme { + val state = vm.uiState.collectAsState().value + AdvancedSettingScreen( + uiState = state, + onMtuCellClick = vm::onMtuCellClick, + onMtuInputChange = vm::onMtuInputChange, + onSaveMtuClick = vm::onSaveMtuClick, + onRestoreMtuClick = vm::onRestoreMtuClick, + onCancelMtuDialogClicked = vm::onCancelDialogClick, + onSplitTunnelingNavigationClick = ::openSplitTunnelingFragment, + onToggleDnsClick = vm::onToggleDnsClick, + onToggleBlockAds = vm::onToggleBlockAds, + onToggleBlockTrackers = vm::onToggleBlockTrackers, + onToggleBlockMalware = vm::onToggleBlockMalware, + onToggleBlockAdultContent = vm::onToggleBlockAdultContent, + onToggleBlockGambling = vm::onToggleBlockGambling, + onDnsClick = vm::onDnsClick, + onDnsInputChange = vm::onDnsInputChange, + onSaveDnsClick = vm::onSaveDnsClick, + onRemoveDnsClick = vm::onRemoveDnsClick, + onCancelDnsDialogClick = vm::onCancelDialogClick, + onContentsBlockersInfoClicked = vm::onContentsBlockerInfoClick, + onMalwareInfoClicked = vm::onMalwareInfoClick, + onDismissInfoClicked = vm::onDismissInfoClick, + onBackClick = { activity?.onBackPressed() }, + onStopEvent = vm::onStopEvent + ) + } } } } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/DeviceListFragment.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/DeviceListFragment.kt index a382381cd8..2dab40c06a 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/DeviceListFragment.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/DeviceListFragment.kt @@ -16,6 +16,7 @@ import kotlinx.coroutines.launch import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.compose.component.ScaffoldWithTopBar import net.mullvad.mullvadvpn.compose.screen.DeviceListScreen +import net.mullvad.mullvadvpn.compose.theme.AppTheme import net.mullvad.mullvadvpn.ui.MainActivity import net.mullvad.mullvadvpn.viewmodel.DeviceListViewModel import org.koin.androidx.viewmodel.ext.android.viewModel @@ -38,20 +39,22 @@ class DeviceListFragment : Fragment() { return inflater.inflate(R.layout.fragment_compose, container, false).apply { findViewById<ComposeView>(R.id.compose_view).setContent { - val topColor = colorResource(R.color.blue) - ScaffoldWithTopBar( - topBarColor = topColor, - statusBarColor = topColor, - navigationBarColor = colorResource(id = R.color.darkBlue), - onSettingsClicked = this@DeviceListFragment::openSettings, - content = { - DeviceListScreen( - viewModel = deviceListViewModel, - onBackClick = { openLoginView(doTriggerAutoLogin = false) }, - onContinueWithLogin = { openLoginView(doTriggerAutoLogin = true) } - ) - } - ) + AppTheme { + val topColor = colorResource(R.color.blue) + ScaffoldWithTopBar( + topBarColor = topColor, + statusBarColor = topColor, + navigationBarColor = colorResource(id = R.color.darkBlue), + onSettingsClicked = this@DeviceListFragment::openSettings, + content = { + DeviceListScreen( + viewModel = deviceListViewModel, + onBackClick = { openLoginView(doTriggerAutoLogin = false) }, + onContinueWithLogin = { openLoginView(doTriggerAutoLogin = true) } + ) + } + ) + } } } } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/DeviceRevokedFragment.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/DeviceRevokedFragment.kt index f63e7d4322..62036a08ae 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/DeviceRevokedFragment.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/DeviceRevokedFragment.kt @@ -9,10 +9,10 @@ import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.res.colorResource import androidx.fragment.app.Fragment import net.mullvad.mullvadvpn.R -import net.mullvad.mullvadvpn.compose.component.AppTheme import net.mullvad.mullvadvpn.compose.component.ScaffoldWithTopBar import net.mullvad.mullvadvpn.compose.screen.DeviceRevokedScreen import net.mullvad.mullvadvpn.compose.state.DeviceRevokedUiState +import net.mullvad.mullvadvpn.compose.theme.AppTheme import net.mullvad.mullvadvpn.ui.MainActivity import net.mullvad.mullvadvpn.viewmodel.DeviceRevokedViewModel import org.koin.androidx.viewmodel.ext.android.viewModel diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/LoadingFragment.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/LoadingFragment.kt index 0c83acf20d..7d33bd85e2 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/LoadingFragment.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/LoadingFragment.kt @@ -8,6 +8,7 @@ import androidx.compose.ui.platform.ComposeView import androidx.fragment.app.Fragment import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.compose.screen.LoadingScreen +import net.mullvad.mullvadvpn.compose.theme.AppTheme import net.mullvad.mullvadvpn.ui.MainActivity import net.mullvad.mullvadvpn.ui.NavigationBarPainter import net.mullvad.mullvadvpn.ui.StatusBarPainter @@ -20,7 +21,7 @@ class LoadingFragment : Fragment(), StatusBarPainter, NavigationBarPainter { ): View { return inflater.inflate(R.layout.fragment_compose, container, false).apply { findViewById<ComposeView>(R.id.compose_view).setContent { - LoadingScreen(this@LoadingFragment::openSettings) + AppTheme { LoadingScreen(this@LoadingFragment::openSettings) } } } } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/PrivacyDisclaimerFragment.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/PrivacyDisclaimerFragment.kt index 9f7b652fd5..4115d5dc07 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/PrivacyDisclaimerFragment.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragment/PrivacyDisclaimerFragment.kt @@ -12,6 +12,7 @@ import androidx.fragment.app.Fragment import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.compose.component.ScaffoldWithTopBar import net.mullvad.mullvadvpn.compose.screen.PrivacyDisclaimerScreen +import net.mullvad.mullvadvpn.compose.theme.AppTheme import net.mullvad.mullvadvpn.lib.endpoint.getApiEndpointConfigurationExtras import net.mullvad.mullvadvpn.ui.MainActivity import net.mullvad.mullvadvpn.ui.NavigationBarPainter @@ -30,19 +31,21 @@ class PrivacyDisclaimerFragment : Fragment(), StatusBarPainter, NavigationBarPai ): View { return inflater.inflate(R.layout.fragment_compose, container, false).apply { findViewById<ComposeView>(R.id.compose_view).setContent { - val topColor = colorResource(R.color.blue) - ScaffoldWithTopBar( - topBarColor = topColor, - statusBarColor = topColor, - navigationBarColor = colorResource(id = R.color.darkBlue), - onSettingsClicked = null, - content = { - PrivacyDisclaimerScreen( - onPrivacyPolicyLinkClicked = { openPrivacyPolicy() }, - onAcceptClicked = { handleAcceptedPrivacyDisclaimer() } - ) - } - ) + AppTheme { + val topColor = colorResource(R.color.blue) + ScaffoldWithTopBar( + topBarColor = topColor, + statusBarColor = topColor, + navigationBarColor = colorResource(id = R.color.darkBlue), + onSettingsClicked = null, + content = { + PrivacyDisclaimerScreen( + onPrivacyPolicyLinkClicked = { openPrivacyPolicy() }, + onAcceptClicked = { handleAcceptedPrivacyDisclaimer() } + ) + } + ) + } } } } |
