archive-97f2350/app/src/main/java/uk/orllewin/sianel/ui/TwoPaneLayout.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package uk.orllewin.sianel.ui
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.VerticalDivider
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import uk.orllewin.sianel.R
@Composable
fun TwoPaneLayout(
viewModel: MainViewModel,
onPickVideo: () -> Unit,
paddingValues: PaddingValues,
modifier: Modifier = Modifier,
) {
Row(modifier = modifier.fillMaxSize()) {
Box(modifier = Modifier
.weight(1f)
.fillMaxHeight()) {
// ListScreen handles its own paddingValues so it can scroll under the nav bar.
ListScreen(viewModel, paddingValues)
}
VerticalDivider()
Box(
modifier = Modifier
.weight(1f)
.fillMaxHeight()
.padding(paddingValues),
) {
if (viewModel.pending != null) {
UploadScreen(
viewModel = viewModel,
onUpload = { viewModel.confirmUpload() },
onCancel = { viewModel.cancelPending() },
)
} else {
ChoosePane(
enabled = viewModel.password.isNotBlank() &&
viewModel.uploadProgress == null,
onPickVideo = onPickVideo,
)
}
}
}
}
@Composable
private fun ChoosePane(
enabled: Boolean,
onPickVideo: () -> Unit,
) {
Column(
modifier = Modifier
.fillMaxSize()
.padding(24.dp),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center,
) {
Button(
onClick = onPickVideo,
enabled = enabled,
) {
Text(stringResource(R.string.choose_video))
}
if (!enabled) {
Text(
text = stringResource(R.string.set_your_password_to_upload_videos),
style = MaterialTheme.typography.bodySmall,
modifier = Modifier.padding(top = 12.dp),
)
}
}
}