Skip to content

Commit 58a9d24

Browse files
committed
Fix HomeScreen in Landscape mode
1 parent a17b95b commit 58a9d24

File tree

2 files changed

+100
-45
lines changed

2 files changed

+100
-45
lines changed

app/src/main/kotlin/com/w2sv/wifiwidget/ui/screens/home/HomeScreen.kt

Lines changed: 96 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ package com.w2sv.wifiwidget.ui.screens.home
33
import android.annotation.SuppressLint
44
import androidx.activity.compose.BackHandler
55
import androidx.compose.foundation.layout.Arrangement
6-
import androidx.compose.foundation.layout.Box
76
import androidx.compose.foundation.layout.Column
7+
import androidx.compose.foundation.layout.PaddingValues
8+
import androidx.compose.foundation.layout.Row
89
import androidx.compose.foundation.layout.Spacer
910
import androidx.compose.foundation.layout.fillMaxSize
1011
import androidx.compose.foundation.layout.fillMaxWidth
@@ -40,6 +41,7 @@ import com.w2sv.wifiwidget.ui.screens.home.components.widget.WidgetInteractionEl
4041
import com.w2sv.wifiwidget.ui.screens.home.components.widget.configuration_dialog.WidgetConfigurationDialog
4142
import com.w2sv.wifiwidget.ui.screens.home.components.widget.configuration_dialog.content.PropertyInfoDialog
4243
import com.w2sv.wifiwidget.ui.screens.home.components.wifi_status.WifiConnectionInfoCard
44+
import com.w2sv.wifiwidget.ui.utils.landscapeModeActivated
4345
import com.w2sv.wifiwidget.ui.viewmodels.HomeScreenViewModel
4446
import com.w2sv.wifiwidget.ui.viewmodels.WidgetViewModel
4547
import 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
135187
private fun OverlayDialogs(
136188
homeScreenVM: HomeScreenViewModel = viewModel(),

app/src/main/kotlin/com/w2sv/wifiwidget/ui/screens/home/components/widget/WidgetCard.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.w2sv.wifiwidget.ui.screens.home.components.widget
22

33
import androidx.compose.foundation.layout.Row
44
import androidx.compose.foundation.layout.Spacer
5+
import androidx.compose.foundation.layout.fillMaxWidth
56
import androidx.compose.foundation.layout.height
67
import androidx.compose.foundation.layout.padding
78
import androidx.compose.foundation.layout.size
@@ -52,7 +53,9 @@ internal fun WidgetInteractionElementsRow(
5253
Row(verticalAlignment = Alignment.CenterVertically, modifier = modifier) {
5354
PinWidgetButton(
5455
onClick = onPinWidgetButtonClick,
55-
modifier = Modifier.size(180.dp, 60.dp)
56+
modifier = Modifier
57+
.fillMaxWidth(0.7f)
58+
.height(60.dp)
5659
)
5760

5861
Spacer(modifier = Modifier.width(32.dp))

0 commit comments

Comments
 (0)