Skip to content

Commit 99193ef

Browse files
committed
nicer radio selection for post visibility
1 parent 6f5475d commit 99193ef

1 file changed

Lines changed: 52 additions & 12 deletions

File tree

  • shared/src/commonMain/kotlin/site/remlit/snowdrop/view/settings

shared/src/commonMain/kotlin/site/remlit/snowdrop/view/settings/SettingsView.kt

Lines changed: 52 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,11 @@ import androidx.compose.foundation.clickable
99
import androidx.compose.foundation.layout.Arrangement
1010
import androidx.compose.foundation.layout.Column
1111
import androidx.compose.foundation.layout.Row
12+
import androidx.compose.foundation.layout.fillMaxWidth
13+
import androidx.compose.foundation.layout.height
1214
import androidx.compose.foundation.layout.padding
1315
import androidx.compose.foundation.lazy.LazyColumn
16+
import androidx.compose.foundation.selection.selectable
1417
import androidx.compose.material3.Card
1518
import androidx.compose.material3.HorizontalDivider
1619
import androidx.compose.material3.Icon
@@ -28,6 +31,7 @@ import androidx.compose.runtime.remember
2831
import androidx.compose.runtime.setValue
2932
import androidx.compose.ui.Alignment
3033
import androidx.compose.ui.Modifier
34+
import androidx.compose.ui.semantics.Role
3135
import androidx.compose.ui.unit.dp
3236
import androidx.lifecycle.compose.collectAsStateWithLifecycle
3337
import com.russhwolf.settings.ExperimentalSettingsApi
@@ -121,51 +125,87 @@ fun SettingsView() = ViewSurface {
121125
modifier = Modifier.padding(horizontal = 10.dp)
122126
) {
123127
Row(
124-
verticalAlignment = Alignment.CenterVertically
128+
verticalAlignment = Alignment.CenterVertically,
129+
modifier = Modifier
130+
.fillMaxWidth()
131+
.height(42.dp)
132+
.selectable(
133+
selected = defaultVisibility == "public",
134+
role = Role.RadioButton,
135+
onClick = { blockingSettings.putString("default_visibility", "public") }
136+
)
125137
) {
126138
RadioButton(
127139
selected = defaultVisibility == "public",
128-
onClick = { blockingSettings.putString("default_visibility", "public") }
140+
onClick = null,
141+
modifier = Modifier.padding(start = 10.dp)
129142
)
130143
Text(
131144
"Public",
132-
modifier = Modifier.padding(start = 10.dp)
145+
modifier = Modifier.padding(start = 20.dp)
133146
)
134147
}
135148
Row(
136-
verticalAlignment = Alignment.CenterVertically
149+
verticalAlignment = Alignment.CenterVertically,
150+
modifier = Modifier
151+
.fillMaxWidth()
152+
.height(42.dp)
153+
.selectable(
154+
selected = defaultVisibility == "unlisted",
155+
role = Role.RadioButton,
156+
onClick = { blockingSettings.putString("default_visibility", "unlisted") }
157+
)
137158
) {
138159
RadioButton(
139160
selected = defaultVisibility == "unlisted",
140-
onClick = { blockingSettings.putString("default_visibility", "unlisted") }
161+
onClick = null,
162+
modifier = Modifier.padding(start = 10.dp)
141163
)
142164
Text(
143165
"Unlisted",
144-
modifier = Modifier.padding(start = 10.dp)
166+
modifier = Modifier.padding(start = 20.dp)
145167
)
146168
}
147169
Row(
148-
verticalAlignment = Alignment.CenterVertically
170+
verticalAlignment = Alignment.CenterVertically,
171+
modifier = Modifier
172+
.fillMaxWidth()
173+
.height(42.dp)
174+
.selectable(
175+
selected = defaultVisibility == "private",
176+
role = Role.RadioButton,
177+
onClick = { blockingSettings.putString("default_visibility", "private") }
178+
)
149179
) {
150180
RadioButton(
151181
selected = defaultVisibility == "private",
152-
onClick = { blockingSettings.putString("default_visibility", "private") }
182+
onClick = null,
183+
modifier = Modifier.padding(start = 10.dp)
153184
)
154185
Text(
155186
"Followers",
156-
modifier = Modifier.padding(start = 10.dp)
187+
modifier = Modifier.padding(start = 20.dp)
157188
)
158189
}
159190
Row(
160-
verticalAlignment = Alignment.CenterVertically
191+
verticalAlignment = Alignment.CenterVertically,
192+
modifier = Modifier
193+
.fillMaxWidth()
194+
.height(42.dp)
195+
.selectable(
196+
selected = defaultVisibility == "direct",
197+
role = Role.RadioButton,
198+
onClick = { blockingSettings.putString("default_visibility", "direct") }
199+
)
161200
) {
162201
RadioButton(
163202
selected = defaultVisibility == "direct",
164-
onClick = { blockingSettings.putString("default_visibility", "direct") }
203+
onClick = null,
204+
modifier = Modifier.padding(start = 10.dp)
165205
)
166206
Text(
167207
"Direct",
168-
modifier = Modifier.padding(start = 10.dp)
208+
modifier = Modifier.padding(start = 20.dp)
169209
)
170210
}
171211
}

0 commit comments

Comments
 (0)