Skip to content

Commit 687bd6e

Browse files
committed
Use TextButton in dialogs
1 parent 720df00 commit 687bd6e

File tree

3 files changed

+108
-76
lines changed

3 files changed

+108
-76
lines changed
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
package com.paulcoding.hviewer.ui.page.settings
2+
3+
import androidx.compose.foundation.background
4+
import androidx.compose.foundation.layout.Arrangement
5+
import androidx.compose.foundation.layout.Box
6+
import androidx.compose.foundation.layout.Column
7+
import androidx.compose.foundation.layout.Row
8+
import androidx.compose.foundation.layout.Spacer
9+
import androidx.compose.foundation.layout.fillMaxSize
10+
import androidx.compose.foundation.layout.fillMaxWidth
11+
import androidx.compose.foundation.layout.padding
12+
import androidx.compose.foundation.layout.width
13+
import androidx.compose.foundation.text.KeyboardActions
14+
import androidx.compose.foundation.text.KeyboardOptions
15+
import androidx.compose.material3.MaterialTheme
16+
import androidx.compose.material3.OutlinedTextField
17+
import androidx.compose.material3.Text
18+
import androidx.compose.material3.TextButton
19+
import androidx.compose.runtime.Composable
20+
import androidx.compose.runtime.LaunchedEffect
21+
import androidx.compose.runtime.getValue
22+
import androidx.compose.runtime.mutableStateOf
23+
import androidx.compose.runtime.remember
24+
import androidx.compose.runtime.setValue
25+
import androidx.compose.ui.Alignment
26+
import androidx.compose.ui.Modifier
27+
import androidx.compose.ui.focus.FocusRequester
28+
import androidx.compose.ui.focus.focusRequester
29+
import androidx.compose.ui.graphics.Color
30+
import androidx.compose.ui.text.input.ImeAction
31+
import androidx.compose.ui.text.input.KeyboardType
32+
import androidx.compose.ui.unit.dp
33+
import androidx.compose.ui.window.Dialog
34+
import androidx.compose.ui.window.DialogProperties
35+
36+
37+
@Composable
38+
fun InputRemoteModal(
39+
initialText: String = "",
40+
setVisible: (Boolean) -> Unit,
41+
onSubmit: (url: String) -> Unit
42+
) {
43+
var text by remember { mutableStateOf(initialText) }
44+
val focusRequester = remember { FocusRequester() }
45+
46+
fun submit() {
47+
setVisible(false)
48+
onSubmit(text)
49+
}
50+
51+
fun dismiss() {
52+
setVisible(false)
53+
}
54+
55+
LaunchedEffect(Unit) {
56+
focusRequester.requestFocus()
57+
}
58+
59+
Dialog(
60+
onDismissRequest = { dismiss() },
61+
properties = DialogProperties(dismissOnClickOutside = true)
62+
) {
63+
Box(
64+
modifier = Modifier
65+
.fillMaxSize()
66+
) {
67+
Column(
68+
modifier = Modifier
69+
.background(Color.White)
70+
.align(Alignment.Center)
71+
.padding(16.dp),
72+
horizontalAlignment = Alignment.CenterHorizontally,
73+
verticalArrangement = Arrangement.spacedBy(12.dp)
74+
) {
75+
OutlinedTextField(
76+
text,
77+
onValueChange = { text = it },
78+
modifier = Modifier.focusRequester(focusRequester),
79+
label = { Text("Remote Url") },
80+
keyboardOptions = KeyboardOptions(
81+
keyboardType = KeyboardType.Text,
82+
imeAction = ImeAction.Send
83+
),
84+
keyboardActions = KeyboardActions(
85+
onSend = { submit() }
86+
),
87+
placeholder = { Text("https://github.com/paulcoding810/h-viewer-scripts") }
88+
)
89+
Row(
90+
modifier = Modifier.fillMaxWidth(),
91+
verticalAlignment = Alignment.CenterVertically,
92+
horizontalArrangement = Arrangement.End
93+
) {
94+
TextButton(onClick = { dismiss() }) {
95+
Text("Cancel", color = MaterialTheme.colorScheme.error)
96+
}
97+
Spacer(modifier = Modifier.width(12.dp))
98+
TextButton(onClick = { submit() }) {
99+
Text("OK", color = MaterialTheme.colorScheme.primary)
100+
}
101+
}
102+
}
103+
}
104+
}
105+
}

app/src/main/java/com/paulcoding/hviewer/ui/page/settings/LockModal.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import androidx.compose.foundation.layout.Spacer
66
import androidx.compose.foundation.layout.height
77
import androidx.compose.foundation.layout.padding
88
import androidx.compose.foundation.layout.width
9+
import androidx.compose.material3.MaterialTheme
910
import androidx.compose.material3.Surface
1011
import androidx.compose.material3.Text
1112
import androidx.compose.material3.TextButton
@@ -38,11 +39,11 @@ fun LockModal(onDismiss: () -> Unit, onPinConfirmed: (String) -> Unit = {}) {
3839
Spacer(modifier = Modifier.height(12.dp))
3940
Row(modifier = Modifier.align(Alignment.End)) {
4041
TextButton(onClick = { dismiss() }) {
41-
Text("Cancel")
42+
Text("Cancel", color = MaterialTheme.colorScheme.error)
4243
}
4344
Spacer(modifier = Modifier.width(12.dp))
4445
TextButton(onClick = { onPinConfirmed(pin) }) {
45-
Text("OK")
46+
Text("OK", color = MaterialTheme.colorScheme.primary)
4647
}
4748
}
4849
}

app/src/main/java/com/paulcoding/hviewer/ui/page/settings/SettingsPage.kt

Lines changed: 0 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -162,78 +162,4 @@ fun SettingsPage(appViewModel: AppViewModel, goBack: () -> Boolean, onLockEnable
162162
onAppLockEnabled(it)
163163
}
164164
}
165-
}
166-
167-
@Composable
168-
fun InputRemoteModal(
169-
initialText: String = "",
170-
setVisible: (Boolean) -> Unit,
171-
onSubmit: (url: String) -> Unit
172-
) {
173-
var text by remember { mutableStateOf(initialText) }
174-
val focusRequester = remember { FocusRequester() }
175-
176-
fun submit() {
177-
setVisible(false)
178-
onSubmit(text)
179-
}
180-
181-
fun dismiss() {
182-
setVisible(false)
183-
}
184-
185-
LaunchedEffect(Unit) {
186-
focusRequester.requestFocus()
187-
}
188-
189-
Dialog(
190-
onDismissRequest = { dismiss() },
191-
properties = DialogProperties(dismissOnClickOutside = true)
192-
) {
193-
Box(
194-
modifier = Modifier
195-
.fillMaxSize()
196-
) {
197-
Column(
198-
modifier = Modifier
199-
.background(Color.White)
200-
.align(Alignment.Center)
201-
.padding(16.dp),
202-
horizontalAlignment = Alignment.CenterHorizontally,
203-
verticalArrangement = Arrangement.spacedBy(12.dp)
204-
) {
205-
OutlinedTextField(
206-
text,
207-
onValueChange = { text = it },
208-
modifier = Modifier.focusRequester(focusRequester),
209-
label = { Text("Remote Url") },
210-
keyboardOptions = KeyboardOptions(
211-
keyboardType = KeyboardType.Text,
212-
imeAction = ImeAction.Send
213-
),
214-
keyboardActions = KeyboardActions(
215-
onSend = { submit() }
216-
),
217-
placeholder = { Text("https://github.com/paulcoding810/h-viewer-scripts") }
218-
)
219-
Row(
220-
modifier = Modifier.fillMaxWidth(),
221-
verticalAlignment = Alignment.CenterVertically,
222-
horizontalArrangement = Arrangement.End
223-
) {
224-
Text(
225-
"Cancel",
226-
color = MaterialTheme.colorScheme.error,
227-
modifier = Modifier.clickable {
228-
dismiss()
229-
})
230-
Spacer(modifier = Modifier.width(16.dp))
231-
Text("OK", color = MaterialTheme.colorScheme.primary,
232-
modifier = Modifier.clickable {
233-
submit()
234-
})
235-
}
236-
}
237-
}
238-
}
239165
}

0 commit comments

Comments
 (0)