UI Previews

UI Previews was added for service dialogs
This commit is contained in:
2024-01-02 20:25:49 +07:00
parent 70cd547fb7
commit 77a3b19b24
6 changed files with 92 additions and 11 deletions

View File

@@ -15,7 +15,7 @@ import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import com.helible.pilot.components.scannerScreen.BluetoothScannerScreen
import com.helible.pilot.components.scannerScreen.ScannerScreen
import com.helible.pilot.components.deviceScreen.DeviceControlScreen
import com.helible.pilot.viewmodels.AppPreferences
import com.helible.pilot.viewmodels.SavedPreferencesImpl
@@ -101,7 +101,7 @@ class MainActivity : ComponentActivity() {
startDestination = "device"
) {
composable("scanner") {
BluetoothScannerScreen(
ScannerScreen(
bluetoothState = bluetoothState,
selectedDevice = selectedDevice,
startScan = { bluetoothViewModel.startScan() },

View File

@@ -6,8 +6,8 @@ import androidx.compose.material3.Divider
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
@Composable
fun RequiredHardwareFeatures(
@@ -36,3 +36,16 @@ fun RequiredHardwareFeatures(
)
}
}
@Preview
@Composable
fun RequiredHardwareFeaturesPreview() {
RequiredHardwareFeatures(
title = "Turn on Bluetooth",
description = "App requires Bluetooth turned on to continue",
confirmButtonText = "Turn on",
featureState = false,
requestFeature = {},
onDismissRequest = {}
)
}

View File

@@ -13,6 +13,7 @@ import androidx.compose.material3.Divider
import androidx.compose.material3.Text
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
@Composable
@@ -82,6 +83,16 @@ fun PermissionDialog(
)
}
@Preview
@Composable
fun PermissionDialogPreview() {
PermissionDialog(
LocationPermissionTextProvider(),
false,
{}, {}, {}, {}
)
}
interface PermissionTextProvider {
fun getDescription(isPermanentDeclined: Boolean): String
}

View File

@@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
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.foundation.layout.size
import androidx.compose.material3.CardDefaults
@@ -22,8 +21,9 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.helible.pilot.dataclasses.BluetoothDevice
import com.helible.pilot.R
import com.helible.pilot.dataclasses.BluetoothDevice
@SuppressLint("MissingPermission")
@Composable
@@ -44,7 +44,9 @@ fun DeviceItem(
)
) {
Row(modifier = Modifier.padding(8.dp)) {
Column(verticalArrangement = Arrangement.Center, modifier = Modifier.fillMaxHeight()) {
Column(verticalArrangement = Arrangement.Center,
modifier = Modifier.fillMaxHeight().weight(1f, true)
) {
Text(
text = deviceInfo.name,
fontWeight = FontWeight.Bold,
@@ -56,9 +58,10 @@ fun DeviceItem(
)
}
if (deviceInfo.isScanned) {
Box(contentAlignment = Alignment.CenterEnd, modifier = Modifier.fillMaxSize()) {
val icon = getSignalIconForRssiValue(deviceInfo.rssi)
Box(contentAlignment = Alignment.CenterEnd, modifier = Modifier.weight(0.3f)) {
Icon(
painterResource(id = getSignalIconForRssiValue(deviceInfo.rssi)),
painterResource(id = icon),
contentDescription = null,
modifier = Modifier
.fillMaxHeight()

View File

@@ -7,14 +7,15 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.helible.pilot.components.scannerScreen.DeviceItem
import com.helible.pilot.dataclasses.BluetoothUiState
import com.helible.pilot.dataclasses.BluetoothDevice
@@ -101,4 +102,27 @@ fun DiscoveredDevicesList(
}
}
}
}
}
@Preview
@Composable
fun DiscoveredDevicesListPreview() {
val state = BluetoothUiState(
pairedBluetoothDevices = listOf(
BluetoothDevice("My car", "AA:BB:CC:DD:FF", -70, false),
BluetoothDevice("Speaker", "AA:BB:CC:DD:FF", -20, false),
BluetoothDevice("My TV", "AA:BB:CC:DD:FF", 10, false),
BluetoothDevice("My phone", "AA:BB:CC:DD:FF", -50, false),
BluetoothDevice("Mi Band 6", "AA:BB:CC:DD:FF", -100, false),
),
scannedBluetoothDevices = listOf(
BluetoothDevice("Watch", "AA:BB:CC:DD:FF", -10, true),
BluetoothDevice("Mi Cleaner", "AA:BB:CC:DD:FF", -90, true),
BluetoothDevice("My fridge", "AA:BB:CC:DD:FF", -100, true),
BluetoothDevice("Unknown device", "AA:BB:CC:DD:FF", -130, true)
)
)
Surface {
DiscoveredDevicesList(bluetoothState = state, selectedDevice = null, choiceDevice = {})
}
}

View File

@@ -18,6 +18,7 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.constraintlayout.compose.ConstraintLayout
import androidx.constraintlayout.compose.Dimension
@@ -28,7 +29,7 @@ import com.helible.pilot.dataclasses.BluetoothDevice
@SuppressLint("MissingPermission")
@Composable
fun BluetoothScannerScreen(
fun ScannerScreen(
bluetoothState: BluetoothUiState,
selectedDevice: BluetoothDevice?,
startScan: () -> Unit,
@@ -106,4 +107,33 @@ fun BluetoothScannerScreen(
}
}
}
}
@Preview
@Composable
fun ScannerScreenPreview() {
val state = BluetoothUiState(
pairedBluetoothDevices = listOf(
BluetoothDevice("My car", "AA:BB:CC:DD:FF", -70, false),
BluetoothDevice("Speaker", "AA:BB:CC:DD:FF", -20, false),
BluetoothDevice("My TV", "AA:BB:CC:DD:FF", 10, false),
BluetoothDevice("My phone", "AA:BB:CC:DD:FF", -50, false),
BluetoothDevice("Mi Band 6", "AA:BB:CC:DD:FF", -100, false),
),
scannedBluetoothDevices = listOf(
BluetoothDevice("Watch", "AA:BB:CC:DD:FF", -10, true),
BluetoothDevice("Mi Cleaner", "AA:BB:CC:DD:FF", -90, true),
BluetoothDevice("My fridge", "AA:BB:CC:DD:FF", -100, true),
BluetoothDevice("Unknown device", "AA:BB:CC:DD:FF", -130, true)
)
)
Surface {
ScannerScreen(
state,
state.scannedBluetoothDevices[1],
{}, {},
{_ -> },
{},
)
}
}