@@ -3,8 +3,9 @@ package com.w2sv.wifiwidget.ui.screens.home
33import android.annotation.SuppressLint
44import androidx.activity.compose.BackHandler
55import androidx.compose.foundation.layout.Arrangement
6- import androidx.compose.foundation.layout.Box
76import androidx.compose.foundation.layout.Column
7+ import androidx.compose.foundation.layout.PaddingValues
8+ import androidx.compose.foundation.layout.Row
89import androidx.compose.foundation.layout.Spacer
910import androidx.compose.foundation.layout.fillMaxSize
1011import androidx.compose.foundation.layout.fillMaxWidth
@@ -40,6 +41,7 @@ import com.w2sv.wifiwidget.ui.screens.home.components.widget.WidgetInteractionEl
4041import com.w2sv.wifiwidget.ui.screens.home.components.widget.configuration_dialog.WidgetConfigurationDialog
4142import com.w2sv.wifiwidget.ui.screens.home.components.widget.configuration_dialog.content.PropertyInfoDialog
4243import com.w2sv.wifiwidget.ui.screens.home.components.wifi_status.WifiConnectionInfoCard
44+ import com.w2sv.wifiwidget.ui.utils.landscapeModeActivated
4345import com.w2sv.wifiwidget.ui.viewmodels.HomeScreenViewModel
4446import com.w2sv.wifiwidget.ui.viewmodels.WidgetViewModel
4547import kotlinx.coroutines.launch
@@ -71,49 +73,10 @@ internal fun HomeScreen(
7173 }
7274 }
7375 ) { paddingValues ->
74- Column (
75- modifier = Modifier
76- .padding(paddingValues)
77- .fillMaxSize(),
78- verticalArrangement = Arrangement .SpaceBetween ,
79- horizontalAlignment = Alignment .CenterHorizontally
80- ) {
81- Spacer (Modifier .weight(0.15f ))
82- Box (
83- modifier = Modifier
84- .weight(0.8f )
85- .fillMaxWidth(0.77f ),
86- contentAlignment = Alignment .Center
87- ) {
88- WifiConnectionInfoCard (
89- wifiStatus = homeScreenVM.wifiStatusUIState.status.collectAsState().value,
90- wifiPropertiesViewData = homeScreenVM.wifiStatusUIState.propertiesViewData.collectAsState().value,
91- showSnackbar = homeScreenVM::showSnackbar
92- )
93- }
94-
95- Spacer (Modifier .weight(0.2f ))
96-
97- WidgetCard (
98- widgetInteractionElementsRow = {
99- WidgetInteractionElementsRow (
100- onPinWidgetButtonClick = {
101- when (homeScreenVM.lapUIState.rationalShown) {
102- false -> homeScreenVM.lapUIState.rationalTriggeringAction.value =
103- LocationAccessPermissionRequiringAction .PinWidgetButtonPress
104-
105- true -> attemptWifiWidgetPin(context)
106- }
107- },
108- onWidgetConfigurationButtonClick = {
109- homeScreenVM.showWidgetConfigurationDialog.value = true
110- }
111- )
112- },
113- modifier = Modifier .fillMaxWidth(0.8f )
114- )
115- Spacer (Modifier .weight(0.3f ))
116- CopyrightText (modifier = Modifier .padding(bottom = 10 .dp))
76+ if (landscapeModeActivated) {
77+ LandscapeMode (paddingValues = paddingValues)
78+ } else {
79+ PortraitMode (paddingValues = paddingValues)
11780 }
11881 }
11982
@@ -131,6 +94,95 @@ internal fun HomeScreen(
13194 }
13295}
13396
97+ @Composable
98+ fun LandscapeMode (paddingValues : PaddingValues , homeScreenVM : HomeScreenViewModel = viewModel()) {
99+ val context = LocalContext .current
100+
101+ Row (
102+ modifier = Modifier
103+ .padding(paddingValues)
104+ .padding(vertical = 16 .dp)
105+ .fillMaxSize(),
106+ verticalAlignment = Alignment .CenterVertically ,
107+ horizontalArrangement = Arrangement .SpaceEvenly
108+ ) {
109+ WifiConnectionInfoCard (
110+ wifiStatus = homeScreenVM.wifiStatusUIState.status.collectAsState().value,
111+ wifiPropertiesViewData = homeScreenVM.wifiStatusUIState.propertiesViewData.collectAsState().value,
112+ showSnackbar = homeScreenVM::showSnackbar,
113+ modifier = Modifier .fillMaxWidth(0.4f )
114+ )
115+
116+ WidgetCard (
117+ widgetInteractionElementsRow = {
118+ WidgetInteractionElementsRow (
119+ onPinWidgetButtonClick = {
120+ when (homeScreenVM.lapUIState.rationalShown) {
121+ false -> homeScreenVM.lapUIState.rationalTriggeringAction.value =
122+ LocationAccessPermissionRequiringAction .PinWidgetButtonPress
123+
124+ true -> attemptWifiWidgetPin(context)
125+ }
126+ },
127+ onWidgetConfigurationButtonClick = {
128+ homeScreenVM.showWidgetConfigurationDialog.value = true
129+ }
130+ )
131+ },
132+ modifier = Modifier .fillMaxWidth(0.6f )
133+ )
134+ }
135+ }
136+
137+ @Composable
138+ private fun PortraitMode (
139+ paddingValues : PaddingValues ,
140+ homeScreenVM : HomeScreenViewModel = viewModel()
141+ ) {
142+ val context = LocalContext .current
143+
144+ Column (
145+ modifier = Modifier
146+ .padding(paddingValues)
147+ .fillMaxSize(),
148+ verticalArrangement = Arrangement .SpaceBetween ,
149+ horizontalAlignment = Alignment .CenterHorizontally
150+ ) {
151+ Spacer (Modifier .weight(0.15f ))
152+ WifiConnectionInfoCard (
153+ wifiStatus = homeScreenVM.wifiStatusUIState.status.collectAsState().value,
154+ wifiPropertiesViewData = homeScreenVM.wifiStatusUIState.propertiesViewData.collectAsState().value,
155+ showSnackbar = homeScreenVM::showSnackbar,
156+ modifier = Modifier
157+ .weight(0.8f )
158+ .fillMaxWidth(0.77f )
159+ )
160+
161+ Spacer (Modifier .weight(0.2f ))
162+
163+ WidgetCard (
164+ widgetInteractionElementsRow = {
165+ WidgetInteractionElementsRow (
166+ onPinWidgetButtonClick = {
167+ when (homeScreenVM.lapUIState.rationalShown) {
168+ false -> homeScreenVM.lapUIState.rationalTriggeringAction.value =
169+ LocationAccessPermissionRequiringAction .PinWidgetButtonPress
170+
171+ true -> attemptWifiWidgetPin(context)
172+ }
173+ },
174+ onWidgetConfigurationButtonClick = {
175+ homeScreenVM.showWidgetConfigurationDialog.value = true
176+ }
177+ )
178+ },
179+ modifier = Modifier .fillMaxWidth(0.8f )
180+ )
181+ Spacer (Modifier .weight(0.3f ))
182+ CopyrightText (modifier = Modifier .padding(bottom = 10 .dp))
183+ }
184+ }
185+
134186@Composable
135187private fun OverlayDialogs (
136188 homeScreenVM : HomeScreenViewModel = viewModel(),
0 commit comments