UI Previews
UI Previews was added for service dialogs
This commit is contained in:
@@ -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() },
|
||||
|
||||
@@ -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 = {}
|
||||
)
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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 = {})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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],
|
||||
{}, {},
|
||||
{_ -> },
|
||||
{},
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user