From eca21cb3bf5e1c5e10ab297a28eecceb800ff881 Mon Sep 17 00:00:00 2001 From: Vineyro Date: Fri, 2 Aug 2024 14:14:33 +0700 Subject: [PATCH] import optimisation --- app/build.gradle | 4 +- .../llc/arma/ble/ExampleInstrumentedTest.kt | 6 +- .../ble/app/framework/di/DatabaseModule.kt | 1 - .../java/llc/arma/ble/app/ui/MainActivity.kt | 29 ++- .../arma/ble/app/ui/common/BottomDialog.kt | 1 - .../llc/arma/ble/app/ui/common/SignalLevel.kt | 3 - .../llc/arma/ble/app/ui/screen/BleInfoView.kt | 22 +- .../ble/app/ui/screen/ble/BleListContract.kt | 1 - .../ble/app/ui/screen/ble/BleListScreen.kt | 30 ++- .../ble/app/ui/screen/ble/BleListViewModel.kt | 3 - .../ui/screen/connection/ConnectionScreen.kt | 26 ++- .../accelerometer/AccelerometerScreen.kt | 4 - .../accelerometer/AccelerometerViewModel.kt | 3 - .../accelerometer/view/AccelEdit.kt | 14 +- .../accelerometer/view/AccelFftAxisEdit.kt | 19 +- .../accelerometer/view/AccelFftModeEdit.kt | 19 +- .../accelerometer/view/AccelFrequencyEdit.kt | 19 +- .../view/AccelRealtimeViewEdit.kt | 17 +- .../accelerometer/view/AccelScaleEdit.kt | 11 +- .../accelerometer/view/AccelViewEdit.kt | 23 ++- .../view/AccelerometerSpectre.kt | 55 +++-- .../accelerometer/view/AcceleromterAccel.kt | 58 ++++-- .../accelerometer/view/AcceleromterHistory.kt | 53 +++-- .../accelerometer/view/DisplayState.kt | 14 +- .../accelerometer/view/HistoryEdit.kt | 11 +- .../accelerometer/view/IntervalEdit.kt | 33 ++- .../accelerometer/view/PowerEdit.kt | 16 +- .../inspection/accelerometer/view/Write.kt | 10 +- .../inspection/beacon/BeaconContract.kt | 1 - .../screen/inspection/beacon/BeaconScreen.kt | 18 +- .../inspection/beacon/BeaconViewModel.kt | 6 - .../inspection/beacon/view/DisplayState.kt | 13 +- .../inspection/beacon/view/PowerEdit.kt | 16 +- .../ui/screen/inspection/beacon/view/Write.kt | 10 +- .../ui/screen/inspection/host/HostScreen.kt | 10 +- .../inspection/host/view/DisplayState.kt | 14 +- .../inspection/host/view/HostHistory.kt | 59 ++++-- .../inspection/host/view/IntervalEdit.kt | 31 ++- .../screen/inspection/host/view/PowerEdit.kt | 15 +- .../ui/screen/inspection/host/view/Write.kt | 10 +- .../host/view/table/BleTableEditContract.kt | 13 +- .../host/view/table/BleTableEditScreen.kt | 100 +++++---- .../host/view/table/BleTableEditViewModel.kt | 28 ++- .../inspection/host/view/table/Write.kt | 193 +++++++----------- .../thermometer/ThermometerScreen.kt | 2 - .../thermometer/view/DisplayState.kt | 16 +- .../thermometer/view/IntervalEdit.kt | 31 ++- .../inspection/thermometer/view/PowerEdit.kt | 15 +- .../thermometer/view/TemperatureHistory.kt | 46 +++-- .../inspection/thermometer/view/Write.kt | 12 +- .../arma/ble/app/ui/screen/main/MainScreen.kt | 3 - .../screen/password/ChangePasswordScreen.kt | 26 ++- .../app/ui/screen/password/view/Display.kt | 22 +- .../app/ui/screen/password/view/Loading.kt | 23 ++- .../ble/app/ui/screen/password/view/Result.kt | 10 +- .../delete/RotationStatisticContract.kt | 1 - .../delete/RotationStatisticScreen.kt | 35 ---- .../delete/RotationStatisticViewModel.kt | 7 - .../statistic/RotationStatisticScreen.kt | 7 +- .../java/llc/arma/ble/app/ui/theme/Theme.kt | 1 - .../llc/arma/ble/data/model/BleNameEntity.kt | 2 - .../ble/data/repository/BleRepositoryImpl.kt | 7 +- .../GetAccelerometerRealtimeData.kt | 7 +- .../ble/data/repository/ReadHostHistory.kt | 11 +- .../java/llc/arma/ble/domain/model/BleName.kt | 3 - .../arma/ble/domain/model/ConnectedBleInfo.kt | 2 - .../llc/arma/ble/domain/model/Rotation.kt | 3 - .../ble/domain/usecase/AddBleToHostTable.kt | 3 +- .../domain/usecase/DeleteRotationsBySerial.kt | 1 - .../arma/ble/domain/usecase/ExportToXlsx.kt | 14 -- .../GetAccelerometerHistoryBySerial.kt | 2 - .../ble/domain/usecase/GetBleAroundFlow.kt | 1 - .../arma/ble/domain/usecase/GetBleBySerial.kt | 4 +- .../arma/ble/domain/usecase/GetFoundBle.kt | 4 - .../domain/usecase/GetHostBleTableBySerial.kt | 9 - app/src/main/res/xml/provider_paths.xml | 2 +- .../test/java/llc/arma/ble/ExampleUnitTest.kt | 3 +- 77 files changed, 840 insertions(+), 537 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index d9d7f3b..4a47d3b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -17,8 +17,8 @@ android { applicationId "llc.arma.ble" minSdk 26 targetSdk 34 - versionCode 33 - versionName "1.4.2" + versionCode 35 + versionName "1.4.4" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { diff --git a/app/src/androidTest/java/llc/arma/ble/ExampleInstrumentedTest.kt b/app/src/androidTest/java/llc/arma/ble/ExampleInstrumentedTest.kt index 1b74337..5e30013 100644 --- a/app/src/androidTest/java/llc/arma/ble/ExampleInstrumentedTest.kt +++ b/app/src/androidTest/java/llc/arma/ble/ExampleInstrumentedTest.kt @@ -1,13 +1,11 @@ package llc.arma.ble -import androidx.test.platform.app.InstrumentationRegistry import androidx.test.ext.junit.runners.AndroidJUnit4 - +import androidx.test.platform.app.InstrumentationRegistry +import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith -import org.junit.Assert.* - /** * Instrumented test, which will execute on an Android device. * diff --git a/app/src/main/java/llc/arma/ble/app/framework/di/DatabaseModule.kt b/app/src/main/java/llc/arma/ble/app/framework/di/DatabaseModule.kt index f2c1c9f..477d739 100644 --- a/app/src/main/java/llc/arma/ble/app/framework/di/DatabaseModule.kt +++ b/app/src/main/java/llc/arma/ble/app/framework/di/DatabaseModule.kt @@ -2,7 +2,6 @@ package llc.arma.ble.app.framework.di import android.app.Application import androidx.room.Room -import androidx.room.RoomDatabase import dagger.Module import dagger.Provides import dagger.hilt.InstallIn diff --git a/app/src/main/java/llc/arma/ble/app/ui/MainActivity.kt b/app/src/main/java/llc/arma/ble/app/ui/MainActivity.kt index 7953b55..1410b5c 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/MainActivity.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/MainActivity.kt @@ -12,21 +12,34 @@ import android.hardware.camera2.CameraManager import android.os.Build import android.os.Bundle import android.view.SurfaceView -import android.view.View import androidx.activity.ComponentActivity import androidx.activity.compose.BackHandler import androidx.activity.compose.setContent -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.navigationBarsPadding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.Button import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.material.ModalBottomSheetLayout import androidx.compose.material.ModalBottomSheetValue import androidx.compose.material.rememberModalBottomSheetState import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext @@ -35,9 +48,6 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.viewinterop.AndroidView import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import androidx.core.view.WindowCompat -import androidx.lifecycle.Lifecycle -import androidx.lifecycle.LifecycleEventObserver -import androidx.lifecycle.LifecycleOwner import com.google.accompanist.permissions.ExperimentalPermissionsApi import com.google.accompanist.permissions.rememberMultiplePermissionsState import dagger.hilt.android.AndroidEntryPoint @@ -108,7 +118,9 @@ class MainActivity : ComponentActivity() { modifier = Modifier.fillMaxWidth() ) { - Column() { + Column( + modifier = Modifier.statusBarsPadding().navigationBarsPadding() + ) { Spacer(modifier = Modifier.height(14.dp)) @@ -128,7 +140,6 @@ class MainActivity : ComponentActivity() { sheetContent() - Spacer(modifier = Modifier.navigationBarsPadding()) } } diff --git a/app/src/main/java/llc/arma/ble/app/ui/common/BottomDialog.kt b/app/src/main/java/llc/arma/ble/app/ui/common/BottomDialog.kt index 6b99a7f..65243d9 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/common/BottomDialog.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/common/BottomDialog.kt @@ -2,7 +2,6 @@ package llc.arma.ble.app.ui.common import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.material.ModalBottomSheetState -import androidx.compose.material.ModalBottomSheetValue import androidx.compose.runtime.Composable import androidx.compose.runtime.compositionLocalOf import androidx.compose.runtime.remember diff --git a/app/src/main/java/llc/arma/ble/app/ui/common/SignalLevel.kt b/app/src/main/java/llc/arma/ble/app/ui/common/SignalLevel.kt index 3bcede3..9f77c9e 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/common/SignalLevel.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/common/SignalLevel.kt @@ -1,6 +1,5 @@ package llc.arma.ble.app.ui.common -import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.defaultMinSize @@ -9,12 +8,10 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.ContentAlpha import androidx.compose.material.LocalContentColor -import androidx.compose.material.MaterialTheme import androidx.compose.material.Surface import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp @Composable diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/BleInfoView.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/BleInfoView.kt index ae71063..303f530 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/BleInfoView.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/BleInfoView.kt @@ -1,11 +1,27 @@ package llc.arma.ble.app.ui.screen -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.* -import androidx.compose.material3.* +import androidx.compose.material.icons.rounded.BatteryFull +import androidx.compose.material.icons.rounded.Key +import androidx.compose.material.icons.rounded.NetworkCell +import androidx.compose.material.icons.rounded.ShortText +import androidx.compose.material3.Divider +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +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 diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/ble/BleListContract.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/ble/BleListContract.kt index c200445..25e12c4 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/ble/BleListContract.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/ble/BleListContract.kt @@ -3,7 +3,6 @@ package llc.arma.ble.app.ui.screen.ble import llc.arma.ble.app.ui.common.ViewEvent import llc.arma.ble.app.ui.common.ViewSideEffect import llc.arma.ble.app.ui.common.ViewState -import llc.arma.ble.domain.model.Ble import llc.arma.ble.domain.model.BleInfo import llc.arma.ble.domain.model.ConnectedBleInfo diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/ble/BleListScreen.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/ble/BleListScreen.kt index e8291b1..e0b0d91 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/ble/BleListScreen.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/ble/BleListScreen.kt @@ -3,20 +3,42 @@ package llc.arma.ble.app.ui.screen.ble import android.os.SystemClock import androidx.compose.foundation.background import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.BoxScope +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.ContentAlpha import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.* -import androidx.compose.material3.* +import androidx.compose.material.icons.rounded.ArrowRightAlt +import androidx.compose.material.icons.rounded.BatteryFull +import androidx.compose.material.icons.rounded.CompareArrows +import androidx.compose.material.icons.rounded.FilterAlt +import androidx.compose.material.icons.rounded.Link +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.LinearProgressIndicator +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableLongStateOf -import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/ble/BleListViewModel.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/ble/BleListViewModel.kt index d7484bd..25f0cad 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/ble/BleListViewModel.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/ble/BleListViewModel.kt @@ -1,15 +1,12 @@ package llc.arma.ble.app.ui.screen.ble -import android.util.Log import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Job -import kotlinx.coroutines.delay import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import llc.arma.ble.app.ui.common.BaseViewModel -import llc.arma.ble.domain.usecase.ExportToXlsx import llc.arma.ble.domain.usecase.GetBleAroundFlow import javax.inject.Inject diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/connection/ConnectionScreen.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/connection/ConnectionScreen.kt index 88988c2..bcc21f2 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/connection/ConnectionScreen.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/connection/ConnectionScreen.kt @@ -1,12 +1,32 @@ package llc.arma.ble.app.ui.screen.connection import androidx.activity.compose.BackHandler -import androidx.compose.animation.* -import androidx.compose.foundation.layout.* +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.ExperimentalAnimationApi +import androidx.compose.animation.SizeTransform +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.slideInVertically +import androidx.compose.animation.slideOutVertically +import androidx.compose.animation.with +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.ArrowBack -import androidx.compose.material3.* +import androidx.compose.material3.CenterAlignedTopAppBar +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/AccelerometerScreen.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/AccelerometerScreen.kt index 27a3c42..18ec3ab 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/AccelerometerScreen.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/AccelerometerScreen.kt @@ -24,15 +24,11 @@ import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.AccelFrequencyEd import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.AccelRealtimeViewEdit import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.AccelScaleEdit import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.AccelViewEdit -import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.AccelerometerSpectre -import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.AccelerometerRealtime -import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.AccelerometerHistory import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.DisplayState import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.HistoryEdit import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.IntervalEdit import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.LoadingState import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.PowerEdit -import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.RealtimeViewMode import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.Write import llc.arma.ble.domain.model.Ble diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/AccelerometerViewModel.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/AccelerometerViewModel.kt index 02f412e..795f4ff 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/AccelerometerViewModel.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/AccelerometerViewModel.kt @@ -7,9 +7,6 @@ import llc.arma.ble.app.ui.common.BaseViewModel import llc.arma.ble.app.ui.mapper.BleMapper import llc.arma.ble.app.ui.mapper.BleViewMapper import llc.arma.ble.app.ui.model.BleView -import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.AccelerometerHistory -import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.AccelerometerRealtime -import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.AccelerometerSpectre import llc.arma.ble.app.ui.screen.inspection.accelerometer.view.RealtimeViewMode import llc.arma.ble.domain.model.Ble import llc.arma.ble.domain.usecase.AccelScale diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelEdit.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelEdit.kt index 00f1e04..a360d0d 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelEdit.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelEdit.kt @@ -1,19 +1,23 @@ package llc.arma.ble.app.ui.screen.inspection.accelerometer.view import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* -import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.KeyboardArrowDown import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.RadioButton import androidx.compose.material3.Surface import androidx.compose.material3.Text -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelFftAxisEdit.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelFftAxisEdit.kt index 2addb55..bbe27a1 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelFftAxisEdit.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelFftAxisEdit.kt @@ -1,28 +1,27 @@ package llc.arma.ble.app.ui.screen.inspection.accelerometer.view import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* -import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.KeyboardArrowDown -import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.RadioButton import androidx.compose.material3.Surface import androidx.compose.material3.Text -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.unit.dp import llc.arma.ble.app.ui.screen.inspection.accelerometer.AccelerometerContract -import llc.arma.ble.domain.usecase.AccelViewMode import llc.arma.ble.domain.usecase.FftAxis -import llc.arma.ble.domain.usecase.FftFrequency -import llc.arma.ble.domain.usecase.FftViewMode @Composable fun AccelFftAxisEdit( diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelFftModeEdit.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelFftModeEdit.kt index 003e172..ecf254f 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelFftModeEdit.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelFftModeEdit.kt @@ -1,27 +1,26 @@ package llc.arma.ble.app.ui.screen.inspection.accelerometer.view import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* -import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.KeyboardArrowDown -import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.RadioButton import androidx.compose.material3.Surface import androidx.compose.material3.Text -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.unit.dp import llc.arma.ble.app.ui.screen.inspection.accelerometer.AccelerometerContract -import llc.arma.ble.domain.usecase.AccelViewMode -import llc.arma.ble.domain.usecase.FftAxis -import llc.arma.ble.domain.usecase.FftFrequency import llc.arma.ble.domain.usecase.FftViewMode @Composable diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelFrequencyEdit.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelFrequencyEdit.kt index 2234faa..2c2e206 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelFrequencyEdit.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelFrequencyEdit.kt @@ -1,28 +1,27 @@ package llc.arma.ble.app.ui.screen.inspection.accelerometer.view import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* -import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.KeyboardArrowDown -import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.RadioButton import androidx.compose.material3.Surface import androidx.compose.material3.Text -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.unit.dp import llc.arma.ble.app.ui.screen.inspection.accelerometer.AccelerometerContract -import llc.arma.ble.domain.usecase.AccelViewMode -import llc.arma.ble.domain.usecase.FftAxis import llc.arma.ble.domain.usecase.FftFrequency -import llc.arma.ble.domain.usecase.FftViewMode @Composable fun AccelFrequencyEdit( diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelRealtimeViewEdit.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelRealtimeViewEdit.kt index e67609f..09888cf 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelRealtimeViewEdit.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelRealtimeViewEdit.kt @@ -1,21 +1,32 @@ package llc.arma.ble.app.ui.screen.inspection.accelerometer.view import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.MaterialTheme import androidx.compose.material3.RadioButton import androidx.compose.material3.Surface import androidx.compose.material3.Text -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.unit.dp import llc.arma.ble.app.ui.screen.inspection.accelerometer.AccelerometerContract import llc.arma.ble.domain.usecase.AccelViewMode -import llc.arma.ble.domain.usecase.AccelViewMode.* +import llc.arma.ble.domain.usecase.AccelViewMode.values val RealtimeViewMode.localized: String get() { diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelScaleEdit.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelScaleEdit.kt index 80a23cd..659678c 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelScaleEdit.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelScaleEdit.kt @@ -1,14 +1,21 @@ package llc.arma.ble.app.ui.screen.inspection.accelerometer.view import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.MaterialTheme import androidx.compose.material3.RadioButton import androidx.compose.material3.Surface import androidx.compose.material3.Text -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelViewEdit.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelViewEdit.kt index f66193d..5d40191 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelViewEdit.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelViewEdit.kt @@ -1,21 +1,38 @@ package llc.arma.ble.app.ui.screen.inspection.accelerometer.view import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.MaterialTheme import androidx.compose.material3.RadioButton import androidx.compose.material3.Surface import androidx.compose.material3.Text -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.unit.dp import llc.arma.ble.app.ui.screen.inspection.accelerometer.AccelerometerContract import llc.arma.ble.domain.usecase.AccelViewMode -import llc.arma.ble.domain.usecase.AccelViewMode.* +import llc.arma.ble.domain.usecase.AccelViewMode.ACCELERATION +import llc.arma.ble.domain.usecase.AccelViewMode.ANGLE +import llc.arma.ble.domain.usecase.AccelViewMode.PEAK_ACCELERATION +import llc.arma.ble.domain.usecase.AccelViewMode.RMS +import llc.arma.ble.domain.usecase.AccelViewMode.ROTATIONS +import llc.arma.ble.domain.usecase.AccelViewMode.VIBRATION +import llc.arma.ble.domain.usecase.AccelViewMode.values val AccelViewMode.localized: String get() { diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelerometerSpectre.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelerometerSpectre.kt index 4cb1e2e..04e01ed 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelerometerSpectre.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AccelerometerSpectre.kt @@ -1,35 +1,39 @@ package llc.arma.ble.app.ui.screen.inspection.accelerometer.view -import android.util.Log import androidx.compose.animation.core.FastOutSlowInEasing import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.core.tween -import androidx.compose.foundation.layout.* -import androidx.compose.material3.* -import androidx.compose.runtime.* -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp -import androidx.hilt.navigation.compose.hiltViewModel -import androidx.lifecycle.viewModelScope -import com.patrykandpatrick.vico.compose.axis.horizontal.bottomAxis -import com.patrykandpatrick.vico.compose.axis.vertical.startAxis -import com.patrykandpatrick.vico.compose.chart.Chart -import com.patrykandpatrick.vico.core.entry.ChartEntryModelProducer -import dagger.hilt.android.lifecycle.HiltViewModel -import kotlinx.coroutines.launch -import llc.arma.ble.app.ui.common.BaseViewModel -import llc.arma.ble.app.ui.common.ViewEvent -import llc.arma.ble.app.ui.common.ViewSideEffect -import llc.arma.ble.app.ui.common.ViewState -import llc.arma.ble.domain.model.BleInfo -import javax.inject.Inject +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.ArrowBack import androidx.compose.material.icons.rounded.Refresh +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.StrokeCap import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.lifecycle.viewModelScope import com.patrykandpatrick.vico.compose.axis.axisGuidelineComponent +import com.patrykandpatrick.vico.compose.axis.horizontal.bottomAxis +import com.patrykandpatrick.vico.compose.axis.vertical.startAxis +import com.patrykandpatrick.vico.compose.chart.Chart import com.patrykandpatrick.vico.compose.chart.column.columnChart import com.patrykandpatrick.vico.compose.chart.scroll.rememberChartScrollState import com.patrykandpatrick.vico.compose.component.textComponent @@ -37,18 +41,27 @@ import com.patrykandpatrick.vico.core.axis.AxisPosition import com.patrykandpatrick.vico.core.axis.formatter.AxisValueFormatter import com.patrykandpatrick.vico.core.component.marker.MarkerComponent import com.patrykandpatrick.vico.core.entry.ChartEntry +import com.patrykandpatrick.vico.core.entry.ChartEntryModelProducer import com.patrykandpatrick.vico.core.entry.FloatEntry +import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Job import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.launch +import llc.arma.ble.app.ui.common.BaseViewModel +import llc.arma.ble.app.ui.common.ViewEvent +import llc.arma.ble.app.ui.common.ViewSideEffect +import llc.arma.ble.app.ui.common.ViewState import llc.arma.ble.domain.common.ProgressState import llc.arma.ble.domain.model.Ble +import llc.arma.ble.domain.model.BleInfo import llc.arma.ble.domain.usecase.AccelScale import llc.arma.ble.domain.usecase.AccelViewMode import llc.arma.ble.domain.usecase.FftAxis import llc.arma.ble.domain.usecase.FftFrequency import llc.arma.ble.domain.usecase.FftViewMode import llc.arma.ble.domain.usecase.GetAccelerometerSpectreBySerial +import javax.inject.Inject class AccelerometerEntry( val frequency: Long, diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AcceleromterAccel.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AcceleromterAccel.kt index 7a755c5..e9c6f85 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AcceleromterAccel.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AcceleromterAccel.kt @@ -1,55 +1,71 @@ package llc.arma.ble.app.ui.screen.inspection.accelerometer.view -import android.util.Log import androidx.compose.animation.core.tween -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material3.* -import androidx.compose.runtime.* -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp -import androidx.hilt.navigation.compose.hiltViewModel -import androidx.lifecycle.viewModelScope -import com.patrykandpatrick.vico.compose.axis.vertical.startAxis -import com.patrykandpatrick.vico.compose.chart.Chart -import com.patrykandpatrick.vico.core.entry.ChartEntryModelProducer -import dagger.hilt.android.lifecycle.HiltViewModel -import kotlinx.coroutines.launch -import llc.arma.ble.app.ui.common.BaseViewModel -import llc.arma.ble.app.ui.common.ViewEvent -import llc.arma.ble.app.ui.common.ViewSideEffect -import llc.arma.ble.app.ui.common.ViewState -import llc.arma.ble.domain.model.BleInfo -import javax.inject.Inject import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.ArrowBack import androidx.compose.material.icons.rounded.Refresh +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.Divider +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier import androidx.compose.ui.draw.rotate import androidx.compose.ui.graphics.StrokeCap import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.lifecycle.viewModelScope import com.patrykandpatrick.vico.compose.axis.axisGuidelineComponent import com.patrykandpatrick.vico.compose.axis.horizontal.bottomAxis +import com.patrykandpatrick.vico.compose.axis.vertical.startAxis +import com.patrykandpatrick.vico.compose.chart.Chart import com.patrykandpatrick.vico.compose.chart.line.lineChart import com.patrykandpatrick.vico.compose.chart.scroll.rememberChartScrollSpec import com.patrykandpatrick.vico.compose.component.textComponent import com.patrykandpatrick.vico.core.chart.decoration.ThresholdLine import com.patrykandpatrick.vico.core.chart.scale.AutoScaleUp import com.patrykandpatrick.vico.core.component.marker.MarkerComponent +import com.patrykandpatrick.vico.core.entry.ChartEntryModelProducer import com.patrykandpatrick.vico.core.entry.FloatEntry import com.patrykandpatrick.vico.core.scroll.AutoScrollCondition import com.patrykandpatrick.vico.core.scroll.InitialScroll +import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Job import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.launch +import llc.arma.ble.app.ui.common.BaseViewModel +import llc.arma.ble.app.ui.common.ViewEvent +import llc.arma.ble.app.ui.common.ViewSideEffect +import llc.arma.ble.app.ui.common.ViewState import llc.arma.ble.domain.model.Ble +import llc.arma.ble.domain.model.BleInfo import llc.arma.ble.domain.usecase.AccelScale import llc.arma.ble.domain.usecase.AccelViewMode -import llc.arma.ble.domain.usecase.AccelViewMode.* +import llc.arma.ble.domain.usecase.AccelViewMode.ACCELERATION +import llc.arma.ble.domain.usecase.AccelViewMode.ANGLE import llc.arma.ble.domain.usecase.FftAxis import llc.arma.ble.domain.usecase.FftFrequency import llc.arma.ble.domain.usecase.FftViewMode import llc.arma.ble.domain.usecase.GetAccelerometerMeasureBySerialFlow +import javax.inject.Inject @Composable fun AccelerometerRealtime( diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AcceleromterHistory.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AcceleromterHistory.kt index 8511887..7149289 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AcceleromterHistory.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/AcceleromterHistory.kt @@ -3,34 +3,38 @@ package llc.arma.ble.app.ui.screen.inspection.accelerometer.view import androidx.compose.animation.core.FastOutSlowInEasing import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.core.tween -import androidx.compose.foundation.layout.* -import androidx.compose.material3.* -import androidx.compose.runtime.* -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp -import androidx.hilt.navigation.compose.hiltViewModel -import androidx.lifecycle.viewModelScope -import com.patrykandpatrick.vico.compose.axis.vertical.startAxis -import com.patrykandpatrick.vico.compose.chart.Chart -import com.patrykandpatrick.vico.core.entry.ChartEntryModelProducer -import dagger.hilt.android.lifecycle.HiltViewModel -import kotlinx.coroutines.launch -import llc.arma.ble.app.ui.common.BaseViewModel -import llc.arma.ble.app.ui.common.ViewEvent -import llc.arma.ble.app.ui.common.ViewSideEffect -import llc.arma.ble.app.ui.common.ViewState -import llc.arma.ble.domain.model.BleInfo -import javax.inject.Inject +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.ArrowBack import androidx.compose.material.icons.rounded.CloudUpload import androidx.compose.material.icons.rounded.Refresh import androidx.compose.material.icons.rounded.TableView +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.StrokeCap import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.lifecycle.viewModelScope import com.patrykandpatrick.vico.compose.axis.axisGuidelineComponent import com.patrykandpatrick.vico.compose.axis.horizontal.bottomAxis +import com.patrykandpatrick.vico.compose.axis.vertical.startAxis +import com.patrykandpatrick.vico.compose.chart.Chart import com.patrykandpatrick.vico.compose.chart.line.lineChart import com.patrykandpatrick.vico.compose.chart.scroll.rememberChartScrollSpec import com.patrykandpatrick.vico.compose.component.textComponent @@ -39,17 +43,23 @@ import com.patrykandpatrick.vico.core.axis.formatter.AxisValueFormatter import com.patrykandpatrick.vico.core.chart.decoration.ThresholdLine import com.patrykandpatrick.vico.core.chart.scale.AutoScaleUp import com.patrykandpatrick.vico.core.component.marker.MarkerComponent -import com.patrykandpatrick.vico.core.component.text.TextComponent import com.patrykandpatrick.vico.core.entry.ChartEntry +import com.patrykandpatrick.vico.core.entry.ChartEntryModelProducer import com.patrykandpatrick.vico.core.entry.FloatEntry import com.patrykandpatrick.vico.core.scroll.AutoScrollCondition import com.patrykandpatrick.vico.core.scroll.InitialScroll +import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Job import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach -import llc.arma.ble.app.ui.screen.inspection.thermometer.view.formatter +import kotlinx.coroutines.launch +import llc.arma.ble.app.ui.common.BaseViewModel +import llc.arma.ble.app.ui.common.ViewEvent +import llc.arma.ble.app.ui.common.ViewSideEffect +import llc.arma.ble.app.ui.common.ViewState import llc.arma.ble.domain.common.ProgressState import llc.arma.ble.domain.model.Ble +import llc.arma.ble.domain.model.BleInfo import llc.arma.ble.domain.usecase.AccelScale import llc.arma.ble.domain.usecase.AccelViewMode import llc.arma.ble.domain.usecase.ExportToXlsx @@ -61,6 +71,7 @@ import llc.arma.ble.domain.usecase.GetBleBySerial import java.text.SimpleDateFormat import java.util.Date import java.util.Locale +import javax.inject.Inject class AccelEntry( val localDate: Long, diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/DisplayState.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/DisplayState.kt index dc1f45e..a61f7c7 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/DisplayState.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/DisplayState.kt @@ -1,7 +1,13 @@ package llc.arma.ble.app.ui.screen.inspection.accelerometer.view import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape @@ -9,7 +15,11 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.KeyboardArrowDown import androidx.compose.material.icons.rounded.KeyboardArrowRight -import androidx.compose.material3.* +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Switch +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/HistoryEdit.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/HistoryEdit.kt index 3add635..c55e740 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/HistoryEdit.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/HistoryEdit.kt @@ -1,7 +1,14 @@ package llc.arma.ble.app.ui.screen.inspection.accelerometer.view import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons @@ -10,7 +17,7 @@ import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/IntervalEdit.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/IntervalEdit.kt index 20eafe7..db897ce 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/IntervalEdit.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/IntervalEdit.kt @@ -1,20 +1,41 @@ package llc.arma.ble.app.ui.screen.inspection.accelerometer.view -import android.util.Log -import androidx.compose.animation.* -import androidx.compose.foundation.layout.* +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.SizeTransform +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.slideInVertically +import androidx.compose.animation.slideOutVertically +import androidx.compose.animation.togetherWith +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.KeyboardArrowDown import androidx.compose.material.icons.rounded.KeyboardArrowUp -import androidx.compose.material3.* -import androidx.compose.runtime.* +import androidx.compose.material3.FilledIconButton +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import llc.arma.ble.app.ui.model.BleView import llc.arma.ble.app.ui.screen.inspection.accelerometer.AccelerometerContract -import llc.arma.ble.app.ui.screen.inspection.thermometer.ThermometerContract @Composable fun IntervalEdit( diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/PowerEdit.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/PowerEdit.kt index 2a7503e..bfc425c 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/PowerEdit.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/PowerEdit.kt @@ -1,21 +1,31 @@ package llc.arma.ble.app.ui.screen.inspection.accelerometer.view import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.MaterialTheme import androidx.compose.material3.RadioButton import androidx.compose.material3.Surface import androidx.compose.material3.Text -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.unit.dp import llc.arma.ble.app.ui.model.BleView import llc.arma.ble.app.ui.screen.inspection.accelerometer.AccelerometerContract -import llc.arma.ble.app.ui.screen.inspection.thermometer.ThermometerContract @Composable fun PowerEdit( diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/Write.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/Write.kt index 287f519..5251a44 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/Write.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/accelerometer/view/Write.kt @@ -2,7 +2,15 @@ package llc.arma.ble.app.ui.screen.inspection.accelerometer.view import androidx.compose.animation.animateContentSize import androidx.compose.foundation.Image -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.CircularProgressIndicator diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/BeaconContract.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/BeaconContract.kt index 0163ec7..0dacd82 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/BeaconContract.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/BeaconContract.kt @@ -4,7 +4,6 @@ import llc.arma.ble.app.ui.common.ViewEvent import llc.arma.ble.app.ui.common.ViewSideEffect import llc.arma.ble.app.ui.common.ViewState import llc.arma.ble.app.ui.model.BleView -import llc.arma.ble.app.ui.screen.inspection.thermometer.ThermometerContract import llc.arma.ble.domain.model.Ble class BeaconContract { diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/BeaconScreen.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/BeaconScreen.kt index f51336e..33a2f8e 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/BeaconScreen.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/BeaconScreen.kt @@ -1,18 +1,17 @@ package llc.arma.ble.app.ui.screen.inspection.beacon -import androidx.compose.foundation.layout.* -import androidx.compose.foundation.shape.CircleShape -import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.CircularProgressIndicator -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Surface -import androidx.compose.material3.Text -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import kotlinx.coroutines.delay import kotlinx.coroutines.flow.launchIn @@ -22,7 +21,6 @@ import llc.arma.ble.app.ui.common.rememberBottomDialogState import llc.arma.ble.app.ui.screen.inspection.beacon.view.DisplayState import llc.arma.ble.app.ui.screen.inspection.beacon.view.PowerEdit import llc.arma.ble.app.ui.screen.inspection.beacon.view.Write -import llc.arma.ble.app.ui.screen.inspection.thermometer.localizedName import llc.arma.ble.domain.model.Ble enum class SheetPage { diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/BeaconViewModel.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/BeaconViewModel.kt index ee49d92..3a2b4f2 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/BeaconViewModel.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/BeaconViewModel.kt @@ -1,19 +1,13 @@ package llc.arma.ble.app.ui.screen.inspection.beacon -import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.delay import kotlinx.coroutines.launch import llc.arma.ble.app.ui.common.BaseViewModel import llc.arma.ble.app.ui.mapper.BleMapper import llc.arma.ble.app.ui.mapper.BleViewMapper import llc.arma.ble.app.ui.model.BleView -import llc.arma.ble.app.ui.screen.inspection.thermometer.ThermometerContract import llc.arma.ble.domain.model.Ble -import llc.arma.ble.domain.model.BleInfo import llc.arma.ble.domain.usecase.WriteBle import javax.inject.Inject diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/view/DisplayState.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/view/DisplayState.kt index 37b7ee2..b17aeee 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/view/DisplayState.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/view/DisplayState.kt @@ -1,7 +1,13 @@ package llc.arma.ble.app.ui.screen.inspection.beacon.view import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape @@ -9,7 +15,10 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.KeyboardArrowDown import androidx.compose.material.icons.rounded.KeyboardArrowRight -import androidx.compose.material3.* +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +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 diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/view/PowerEdit.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/view/PowerEdit.kt index c3d21ec..f9db51a 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/view/PowerEdit.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/view/PowerEdit.kt @@ -1,21 +1,31 @@ package llc.arma.ble.app.ui.screen.inspection.beacon.view import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.MaterialTheme import androidx.compose.material3.RadioButton import androidx.compose.material3.Surface import androidx.compose.material3.Text -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.unit.dp import llc.arma.ble.app.ui.model.BleView import llc.arma.ble.app.ui.screen.inspection.beacon.BeaconContract -import llc.arma.ble.app.ui.screen.inspection.thermometer.ThermometerContract @Composable fun PowerEdit( diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/view/Write.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/view/Write.kt index 3566797..f286248 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/view/Write.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/beacon/view/Write.kt @@ -2,7 +2,15 @@ package llc.arma.ble.app.ui.screen.inspection.beacon.view import androidx.compose.animation.animateContentSize import androidx.compose.foundation.Image -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.CircularProgressIndicator diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/HostScreen.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/HostScreen.kt index 4a16c31..2af021d 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/HostScreen.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/HostScreen.kt @@ -1,9 +1,15 @@ package llc.arma.ble.app.ui.screen.inspection.host -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.CircularProgressIndicator -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.hilt.navigation.compose.hiltViewModel diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/DisplayState.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/DisplayState.kt index 8ec7251..79d4dee 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/DisplayState.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/DisplayState.kt @@ -1,7 +1,13 @@ package llc.arma.ble.app.ui.screen.inspection.host.view import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape @@ -9,7 +15,10 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.KeyboardArrowDown import androidx.compose.material.icons.rounded.KeyboardArrowRight -import androidx.compose.material3.* +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +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 @@ -52,6 +61,7 @@ fun DisplayState( BleMenuItem( title = "Мощность", + subtitle = "${ble.state.tx.value} db", icon = rememberVectorPainter(Icons.Rounded.KeyboardArrowDown) ) { onEvent(HostContract.Event.OnPowerEdit) diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/HostHistory.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/HostHistory.kt index 1ea4c62..87a89a0 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/HostHistory.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/HostHistory.kt @@ -5,36 +5,50 @@ import androidx.compose.animation.core.FastOutSlowInEasing import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.core.tween import androidx.compose.foundation.horizontalScroll -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowColumn +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.verticalScroll import androidx.compose.material.ContentAlpha -import androidx.compose.material3.* -import androidx.compose.runtime.* -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp -import androidx.hilt.navigation.compose.hiltViewModel -import androidx.lifecycle.viewModelScope -import com.patrykandpatrick.vico.compose.chart.Chart -import com.patrykandpatrick.vico.core.entry.ChartEntryModelProducer -import dagger.hilt.android.lifecycle.HiltViewModel -import kotlinx.coroutines.launch -import llc.arma.ble.app.ui.common.BaseViewModel -import llc.arma.ble.app.ui.common.ViewEvent -import llc.arma.ble.app.ui.common.ViewSideEffect -import llc.arma.ble.app.ui.common.ViewState -import llc.arma.ble.domain.model.BleInfo -import javax.inject.Inject import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.ArrowBack import androidx.compose.material.icons.rounded.Refresh +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.FilterChip +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.material3.VerticalDivider +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.StrokeCap import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.lifecycle.viewModelScope import com.patrykandpatrick.vico.compose.axis.horizontal.bottomAxis +import com.patrykandpatrick.vico.compose.chart.Chart import com.patrykandpatrick.vico.compose.chart.column.columnChart import com.patrykandpatrick.vico.compose.chart.scroll.rememberChartScrollSpec import com.patrykandpatrick.vico.core.axis.AxisPosition @@ -43,15 +57,23 @@ import com.patrykandpatrick.vico.core.chart.scale.AutoScaleUp import com.patrykandpatrick.vico.core.component.shape.LineComponent import com.patrykandpatrick.vico.core.component.shape.Shapes.pillShape import com.patrykandpatrick.vico.core.entry.ChartEntry +import com.patrykandpatrick.vico.core.entry.ChartEntryModelProducer import com.patrykandpatrick.vico.core.entry.composed.ComposedChartEntryModelProducer import com.patrykandpatrick.vico.core.scroll.AutoScrollCondition import com.patrykandpatrick.vico.core.scroll.InitialScroll +import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Job import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.launch +import llc.arma.ble.app.ui.common.BaseViewModel +import llc.arma.ble.app.ui.common.ViewEvent +import llc.arma.ble.app.ui.common.ViewSideEffect +import llc.arma.ble.app.ui.common.ViewState import llc.arma.ble.domain.common.ProgressState import llc.arma.ble.domain.model.Ble +import llc.arma.ble.domain.model.BleInfo import llc.arma.ble.domain.model.BleName import llc.arma.ble.domain.usecase.GetBleBySerial import llc.arma.ble.domain.usecase.GetBleNamesFlow @@ -59,6 +81,7 @@ import llc.arma.ble.domain.usecase.GetHostHistoryBySerial import java.text.SimpleDateFormat import java.util.Date import java.util.Locale +import javax.inject.Inject class HostEntry( val localDate: Long, diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/IntervalEdit.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/IntervalEdit.kt index 8fe71fa..2b98c76 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/IntervalEdit.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/IntervalEdit.kt @@ -1,13 +1,36 @@ package llc.arma.ble.app.ui.screen.inspection.host.view -import androidx.compose.animation.* -import androidx.compose.foundation.layout.* +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.SizeTransform +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.slideInVertically +import androidx.compose.animation.slideOutVertically +import androidx.compose.animation.togetherWith +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.KeyboardArrowDown import androidx.compose.material.icons.rounded.KeyboardArrowUp -import androidx.compose.material3.* -import androidx.compose.runtime.* +import androidx.compose.material3.FilledIconButton +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/PowerEdit.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/PowerEdit.kt index da90a6a..160d858 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/PowerEdit.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/PowerEdit.kt @@ -1,14 +1,25 @@ package llc.arma.ble.app.ui.screen.inspection.host.view import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.MaterialTheme import androidx.compose.material3.RadioButton import androidx.compose.material3.Surface import androidx.compose.material3.Text -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/Write.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/Write.kt index a8223d7..88ed1ee 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/Write.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/Write.kt @@ -2,7 +2,15 @@ package llc.arma.ble.app.ui.screen.inspection.host.view import androidx.compose.animation.animateContentSize import androidx.compose.foundation.Image -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.CircularProgressIndicator diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/table/BleTableEditContract.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/table/BleTableEditContract.kt index 0adfb23..0e45adb 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/table/BleTableEditContract.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/table/BleTableEditContract.kt @@ -4,6 +4,7 @@ import llc.arma.ble.app.ui.common.ViewEvent import llc.arma.ble.app.ui.common.ViewSideEffect import llc.arma.ble.app.ui.common.ViewState import llc.arma.ble.domain.model.BleInfo +import llc.arma.ble.domain.model.BleName class BleTableEditContract { @@ -15,14 +16,12 @@ class BleTableEditContract { data object OnWrite: Event() - - data class OnStart( val serial: String ) : Event() data class OnAddBle( - val ble: BleInfo + val ble: BleName ) : Event() } @@ -35,19 +34,19 @@ class BleTableEditContract { data class Display( val bleAround: List, - val newBle: List, - val bleTable: List, + val newTable: List, + val savedBleTable: List, val writeState: WriteState? ) : State() { sealed class WriteState { data class DisplayPreview( - val writeRequest: List + val writeRequest: List ) : WriteState() data class Writing( - val writeRequest: List + val writeRequest: List ) : WriteState() data object Success : WriteState() diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/table/BleTableEditScreen.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/table/BleTableEditScreen.kt index 290a125..cb88c70 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/table/BleTableEditScreen.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/table/BleTableEditScreen.kt @@ -1,5 +1,6 @@ package llc.arma.ble.app.ui.screen.inspection.host.view.table +import androidx.activity.compose.BackHandler import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -34,6 +35,7 @@ import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -44,11 +46,11 @@ import androidx.compose.ui.window.Dialog import androidx.hilt.navigation.compose.hiltViewModel import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.launch import llc.arma.ble.app.ui.common.rememberBottomDialogState import llc.arma.ble.app.ui.screen.ble.BleItem -import llc.arma.ble.app.ui.screen.ble.ItemIcon -import llc.arma.ble.app.ui.screen.ble.icon import llc.arma.ble.domain.model.BleInfo +import llc.arma.ble.domain.model.BleName @OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterialApi::class) @Composable @@ -76,8 +78,20 @@ fun BleTableEditScreen( mutableStateOf(false) } + BackHandler(showSelector) { + showSelector = false + } + + val scope = rememberCoroutineScope() val bottomDialog = rememberBottomDialogState() + BackHandler(bottomDialog.sheetState?.isVisible == true) { + scope.launch { + bottomDialog.hide() + } + + } + Column( modifier = Modifier.fillMaxSize() ) { @@ -190,20 +204,27 @@ fun BleTableEditScreen( if(showSelector) { BleSelectorScreen( - saved = state.bleTable, - selected = state.newBle, + saved = state.savedBleTable.map { it.serial }, + selected = state.newTable.map { it.serial }, bleList = state.bleAround, onClose = { showSelector = false } ) { - viewModel.setEvent(BleTableEditContract.Event.OnAddBle(it)) + viewModel.setEvent( + BleTableEditContract.Event.OnAddBle( + BleName( + serial = it.serial, + name = it.name + ) + ) + ) } } else { var editBle by remember { - mutableStateOf(null) + mutableStateOf(null) } LazyColumn( @@ -212,7 +233,10 @@ fun BleTableEditScreen( .padding(horizontal = 12.dp) ) { - if (state.newBle.isNotEmpty()) { + val savedBleSerials = state.savedBleTable.map { it.serial } + val newBle = state.newTable.filterNot { ble -> savedBleSerials.contains(ble.serial) } + + if (newBle.isNotEmpty()) { item { Text( @@ -222,7 +246,7 @@ fun BleTableEditScreen( ) } - items(items = state.newBle) { + items(items = newBle) { SelectBleItem( ble = it, onClick = { @@ -236,7 +260,7 @@ fun BleTableEditScreen( } - if (state.bleTable.isNotEmpty()) { + if (state.savedBleTable.isNotEmpty()) { item { Text( @@ -246,8 +270,13 @@ fun BleTableEditScreen( ) } - items(items = state.bleTable) { - SavedBleItem(it) + items(items = state.savedBleTable) { ble -> + SavedBleItem( + checked = state.newTable.any { it.serial == ble.serial}, + ble = ble + ){ + viewModel.setEvent(BleTableEditContract.Event.OnAddBle(ble)) + } } } @@ -283,9 +312,7 @@ fun BleTableEditScreen( Dialog( onDismissRequest = { - BleTableEditContract.Event.OnAddBle( - ble = editBle!! - ) + viewModel.setEvent(BleTableEditContract.Event.OnAddBle(ble = editBle!!.copy())) editBle = null } ) { @@ -387,7 +414,7 @@ fun BleTableEditScreen( @Composable fun BleSelectorScreen( saved: List, - selected: List, + selected: List, bleList: List, onClose: () -> Unit, onAddBle: (BleInfo) -> Unit @@ -414,7 +441,7 @@ fun BleSelectorScreen( ) { Checkbox( - checked = selected.any { it.serial == ble.serial }, + checked = selected.any { it == ble.serial }, onCheckedChange = null ) @@ -460,7 +487,7 @@ fun BleSelectorScreen( @Composable fun SelectBleItem( - ble: BleInfo, + ble: BleName, onClick: (() -> Unit)? = null, onRemove: (() -> Unit)? = null, ){ @@ -476,18 +503,6 @@ fun SelectBleItem( ) { - Box { - - ItemIcon { - Icon( - modifier = Modifier.align(Alignment.Center), - imageVector = ble.type.icon, - contentDescription = null - ) - } - - } - Column( modifier = Modifier.weight(1f) ) { @@ -520,15 +535,30 @@ fun SelectBleItem( @Composable fun SavedBleItem( - serial: String + checked: Boolean, + ble: BleName, + onClick: () -> Unit ){ - Box { + Row( + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.SpaceBetween, + modifier = Modifier + .fillMaxWidth() + .clip(RoundedCornerShape(16.dp)) + .clickable { onClick() } + .padding(vertical = 8.dp, horizontal = 16.dp) + .padding(end = 12.dp) + ) { - Text( - text = serial, - modifier = Modifier.padding(horizontal = 16.dp, vertical = 8.dp) - ) + Column { + + Text(text = ble.name) + Text(text = ble.serial) + + } + + Checkbox(checked = checked, onCheckedChange = null) } diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/table/BleTableEditViewModel.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/table/BleTableEditViewModel.kt index 5ef4925..0ed3203 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/table/BleTableEditViewModel.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/table/BleTableEditViewModel.kt @@ -3,9 +3,12 @@ package llc.arma.ble.app.ui.screen.inspection.host.view.table import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.first import kotlinx.coroutines.launch import llc.arma.ble.app.ui.common.BaseViewModel +import llc.arma.ble.domain.model.BleName import llc.arma.ble.domain.usecase.AddBleToHostTable +import llc.arma.ble.domain.usecase.GetBleNamesFlow import llc.arma.ble.domain.usecase.GetFoundBle import llc.arma.ble.domain.usecase.GetHostBleTableBySerial import javax.inject.Inject @@ -13,6 +16,7 @@ import javax.inject.Inject @HiltViewModel class BleTableEditViewModel @Inject constructor( getFoundBle: GetFoundBle, + private val getBleNamesFlow: GetBleNamesFlow, private val addBleToHostTable: AddBleToHostTable, private val getHostBleTableBySerial: GetHostBleTableBySerial ) : BaseViewModel() { @@ -66,13 +70,13 @@ class BleTableEditViewModel @Inject constructor( setState { state.copy( - writeState = BleTableEditContract.State.Display.WriteState.Writing(state.newBle) + writeState = BleTableEditContract.State.Display.WriteState.Writing(state.newTable) ) } addBleToHostTable.invoke( serial = lastSerial, - ble = state.newBle + ble = state.newTable ).fold( onSuccess = { setState { @@ -120,7 +124,7 @@ class BleTableEditViewModel @Inject constructor( if(state is BleTableEditContract.State.Display) { setState { - state.copy(writeState = BleTableEditContract.State.Display.WriteState.DisplayPreview(state.newBle)) + state.copy(writeState = BleTableEditContract.State.Display.WriteState.DisplayPreview(state.newTable)) } } @@ -134,16 +138,16 @@ class BleTableEditViewModel @Inject constructor( if(state is BleTableEditContract.State.Display) { - if(state.newBle.any { it.serial == event.ble.serial}){ + if(state.newTable.any { it.serial == event.ble.serial}){ setState { - state.copy(newBle = state.newBle.filter { it.serial != event.ble.serial}) + state.copy(newTable = state.newTable.filter { it.serial != event.ble.serial}) } } else { setState { - state.copy(newBle = state.newBle.toMutableList().apply { add(event.ble) }) + state.copy(newTable = state.newTable.toMutableList().apply { add(event.ble) }) } } @@ -165,11 +169,21 @@ class BleTableEditViewModel @Inject constructor( viewModelScope.launch { + val names = getBleNamesFlow.invoke().first() + getHostBleTableBySerial(event.serial).fold( onSuccess = { + val savedBle = it.map { ble -> BleName( + name = names.firstOrNull { it.serial == ble }?.name ?: "Безымянный", + serial = ble) } + setState { - BleTableEditContract.State.Display(emptyList(), emptyList(), it, null) + BleTableEditContract.State.Display( + bleAround = emptyList(), + newTable = savedBle, + savedBleTable = savedBle, + writeState = null) } }, diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/table/Write.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/table/Write.kt index 8408279..8e6cc58 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/table/Write.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/host/view/table/Write.kt @@ -2,11 +2,17 @@ package llc.arma.ble.app.ui.screen.inspection.host.view.table import androidx.compose.animation.animateContentSize import androidx.compose.foundation.Image -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.CircleShape -import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface @@ -14,7 +20,6 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.StrokeCap import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.style.TextAlign @@ -42,137 +47,93 @@ fun Write( when (state) { is BleTableEditContract.State.Display.WriteState.DisplayPreview -> { - if(state.writeRequest.isNotEmpty()) { + Box( + modifier = Modifier + .weight(1f) + .padding(vertical = 0.dp, horizontal = 8.dp) + ) { - Box( - modifier = Modifier.padding( - vertical = 0.dp, - horizontal = 8.dp - ) + LazyColumn( + modifier = Modifier + .padding(horizontal = 12.dp) ) { - Row( - verticalAlignment = Alignment.CenterVertically, - modifier = Modifier - .clip(RoundedCornerShape(16.dp)) - .padding(8.dp) - ) { + item { + Text( + style = MaterialTheme.typography.titleLarge, + textAlign = TextAlign.Center, + text = "Новая таблица BLE", + ) + } - LazyColumn( - modifier = Modifier - .weight(1f) - .padding(horizontal = 12.dp) - ) { - - item { - Text( - style = MaterialTheme.typography.titleLarge, - textAlign = TextAlign.Center, - text = "Новые BLE", - ) - } - - items(items = state.writeRequest){ - SelectBleItem(it) - } + items(items = state.writeRequest) { + SelectBleItem(it) + } + if(state.writeRequest.isEmpty()){ + item { + Text( + textAlign = TextAlign.Center, + text = "Пусто", + modifier = Modifier.padding(48.dp).fillMaxWidth() + ) } - } } + } - Spacer(modifier = Modifier.height(20.dp)) + Spacer(modifier = Modifier.height(20.dp)) - Surface( - shape = CircleShape, - color = MaterialTheme.colorScheme.primaryContainer, - onClick = { - onEvent(BleTableEditContract.Event.OnWrite) - }, - modifier = Modifier - .fillMaxWidth() - .padding(8.dp) - .height(50.dp), - ) { + Surface( + shape = CircleShape, + color = MaterialTheme.colorScheme.primaryContainer, + onClick = { + onEvent(BleTableEditContract.Event.OnWrite) + }, + modifier = Modifier + .fillMaxWidth() + .padding(8.dp) + .height(50.dp), + ) { - Box(modifier = Modifier.fillMaxSize()) { + Box(modifier = Modifier.fillMaxSize()) { - Text( - modifier = Modifier.align(Alignment.Center), - color = MaterialTheme.colorScheme.background, - style = MaterialTheme.typography.labelLarge, - text = "Записать" - ) - - } - - } - - Surface( - shape = CircleShape, - color = MaterialTheme.colorScheme.surfaceVariant, - onClick = { - onEvent(BleTableEditContract.Event.OnHideWritePreview) - }, - modifier = Modifier - .fillMaxWidth() - .padding(8.dp) - .height(50.dp), - ) { - - Box(modifier = Modifier.fillMaxSize()) { - - Text( - modifier = Modifier.align(Alignment.Center), - color = MaterialTheme.colorScheme.onSurfaceVariant, - style = MaterialTheme.typography.labelLarge, - text = "Отменить" - ) - - } - - } - - } else { - - Spacer(modifier = Modifier.height(38.dp)) - - Text( - text = "Нет изменений", - modifier = Modifier - .align(Alignment.CenterHorizontally) - ) - - Spacer(modifier = Modifier.height(64.dp)) - - Surface( - modifier = Modifier - .fillMaxWidth() - .padding(8.dp) - .height(50.dp), - shape = CircleShape, - color = MaterialTheme.colorScheme.primary, - onClick = { - onEvent(BleTableEditContract.Event.OnHideWritePreview) - } - ) { - - Box(modifier = Modifier.fillMaxSize()) { - - Text( - modifier = Modifier.align(Alignment.Center), - color = MaterialTheme.colorScheme.onPrimary, - style = MaterialTheme.typography.labelLarge, - text = "Ок" - ) - - } + Text( + modifier = Modifier.align(Alignment.Center), + color = MaterialTheme.colorScheme.background, + style = MaterialTheme.typography.labelLarge, + text = "Записать" + ) } } + Surface( + shape = CircleShape, + color = MaterialTheme.colorScheme.surfaceVariant, + onClick = { + onEvent(BleTableEditContract.Event.OnHideWritePreview) + }, + modifier = Modifier + .fillMaxWidth() + .padding(8.dp) + .height(50.dp), + ) { + + Box(modifier = Modifier.fillMaxSize()) { + + Text( + modifier = Modifier.align(Alignment.Center), + color = MaterialTheme.colorScheme.onSurfaceVariant, + style = MaterialTheme.typography.labelLarge, + text = "Отменить" + ) + + } + + } } is BleTableEditContract.State.Display.WriteState.Writing -> { diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/ThermometerScreen.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/ThermometerScreen.kt index c9a71c3..e3d77ab 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/ThermometerScreen.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/ThermometerScreen.kt @@ -1,8 +1,6 @@ package llc.arma.ble.app.ui.screen.inspection.thermometer import androidx.compose.foundation.layout.Column -import androidx.compose.material.ExperimentalMaterialApi -import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/view/DisplayState.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/view/DisplayState.kt index 90f47a8..83da051 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/view/DisplayState.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/view/DisplayState.kt @@ -1,7 +1,13 @@ package llc.arma.ble.app.ui.screen.inspection.thermometer.view import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape @@ -9,8 +15,11 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.KeyboardArrowDown import androidx.compose.material.icons.rounded.KeyboardArrowRight -import androidx.compose.material.icons.rounded.Refresh -import androidx.compose.material3.* +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Switch +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -18,7 +27,6 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.unit.dp import llc.arma.ble.app.ui.model.BleView import llc.arma.ble.app.ui.screen.BleInfoView -import llc.arma.ble.app.ui.screen.inspection.accelerometer.AccelerometerContract import llc.arma.ble.app.ui.screen.inspection.thermometer.ThermometerContract import llc.arma.ble.domain.model.Ble diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/view/IntervalEdit.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/view/IntervalEdit.kt index b5b623f..43ad621 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/view/IntervalEdit.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/view/IntervalEdit.kt @@ -1,13 +1,36 @@ package llc.arma.ble.app.ui.screen.inspection.thermometer.view -import androidx.compose.animation.* -import androidx.compose.foundation.layout.* +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.SizeTransform +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.slideInVertically +import androidx.compose.animation.slideOutVertically +import androidx.compose.animation.togetherWith +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.KeyboardArrowDown import androidx.compose.material.icons.rounded.KeyboardArrowUp -import androidx.compose.material3.* -import androidx.compose.runtime.* +import androidx.compose.material3.FilledIconButton +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/view/PowerEdit.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/view/PowerEdit.kt index ca82507..4ca9694 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/view/PowerEdit.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/view/PowerEdit.kt @@ -1,14 +1,25 @@ package llc.arma.ble.app.ui.screen.inspection.thermometer.view import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.MaterialTheme import androidx.compose.material3.RadioButton import androidx.compose.material3.Surface import androidx.compose.material3.Text -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/view/TemperatureHistory.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/view/TemperatureHistory.kt index ebaf13f..382c545 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/view/TemperatureHistory.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/view/TemperatureHistory.kt @@ -4,11 +4,28 @@ import androidx.compose.animation.core.FastOutSlowInEasing import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.core.tween import androidx.compose.foundation.gestures.scrollBy -import androidx.compose.foundation.layout.* -import androidx.compose.material3.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.rounded.Refresh +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.StrokeCap +import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.viewModelScope @@ -16,30 +33,27 @@ import com.patrykandpatrick.vico.compose.axis.horizontal.bottomAxis import com.patrykandpatrick.vico.compose.axis.vertical.startAxis import com.patrykandpatrick.vico.compose.chart.Chart import com.patrykandpatrick.vico.compose.chart.line.lineChart +import com.patrykandpatrick.vico.compose.chart.scroll.rememberChartScrollState +import com.patrykandpatrick.vico.core.axis.AxisPosition +import com.patrykandpatrick.vico.core.axis.formatter.AxisValueFormatter +import com.patrykandpatrick.vico.core.entry.ChartEntry import com.patrykandpatrick.vico.core.entry.ChartEntryModelProducer import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import llc.arma.ble.app.ui.common.BaseViewModel import llc.arma.ble.app.ui.common.ViewEvent import llc.arma.ble.app.ui.common.ViewSideEffect import llc.arma.ble.app.ui.common.ViewState -import llc.arma.ble.domain.model.BleInfo -import llc.arma.ble.domain.usecase.GetTemperatureHistoryBySerial -import javax.inject.Inject -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.Refresh -import androidx.compose.ui.graphics.StrokeCap -import androidx.compose.ui.text.style.TextAlign -import com.patrykandpatrick.vico.compose.chart.scroll.rememberChartScrollState -import com.patrykandpatrick.vico.core.axis.AxisPosition -import com.patrykandpatrick.vico.core.axis.formatter.AxisValueFormatter -import com.patrykandpatrick.vico.core.entry.ChartEntry -import kotlinx.coroutines.flow.launchIn -import kotlinx.coroutines.flow.onEach import llc.arma.ble.domain.common.ProgressState import llc.arma.ble.domain.model.Ble +import llc.arma.ble.domain.model.BleInfo +import llc.arma.ble.domain.usecase.GetTemperatureHistoryBySerial import java.text.SimpleDateFormat -import java.util.* +import java.util.Date +import java.util.Locale +import javax.inject.Inject class TemperatureEntry( val localDate: Long, diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/view/Write.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/view/Write.kt index fd506bf..a588782 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/view/Write.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/inspection/thermometer/view/Write.kt @@ -2,7 +2,15 @@ package llc.arma.ble.app.ui.screen.inspection.thermometer.view import androidx.compose.animation.animateContentSize import androidx.compose.foundation.Image -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.CircularProgressIndicator @@ -10,14 +18,12 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.StrokeCap import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp -import kotlinx.coroutines.launch import llc.arma.ble.R import llc.arma.ble.app.ui.screen.inspection.thermometer.ThermometerContract import llc.arma.ble.app.ui.screen.inspection.thermometer.localizedName diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/main/MainScreen.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/main/MainScreen.kt index fdd4568..c113021 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/main/MainScreen.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/main/MainScreen.kt @@ -6,9 +6,6 @@ import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.dialog import androidx.navigation.compose.rememberNavController -import llc.arma.ble.app.ui.screen.inspection.beacon.BeaconContract -import llc.arma.ble.app.ui.screen.inspection.thermometer.ThermometerScreen -import llc.arma.ble.app.ui.screen.inspection.beacon.BeaconScreen import llc.arma.ble.app.ui.screen.ble.BleListContract import llc.arma.ble.app.ui.screen.ble.BleListScreen import llc.arma.ble.app.ui.screen.connection.ConnectionContract diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/password/ChangePasswordScreen.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/password/ChangePasswordScreen.kt index 679aa45..a8bc6e2 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/password/ChangePasswordScreen.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/password/ChangePasswordScreen.kt @@ -1,15 +1,32 @@ package llc.arma.ble.app.ui.screen.password -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.Visibility import androidx.compose.material.icons.rounded.VisibilityOff -import androidx.compose.material3.* -import androidx.compose.runtime.* +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.ImeAction @@ -23,7 +40,6 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import llc.arma.ble.app.ui.screen.password.view.Loading import llc.arma.ble.app.ui.screen.password.view.Result -import llc.arma.ble.app.ui.screen.inspection.thermometer.view.LoadingState @Composable fun ChangePasswordScreen( diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/password/view/Display.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/password/view/Display.kt index d8d4daf..2946014 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/password/view/Display.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/password/view/Display.kt @@ -1,13 +1,29 @@ package llc.arma.ble.app.ui.screen.password.view -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.Visibility import androidx.compose.material.icons.rounded.VisibilityOff -import androidx.compose.material3.* -import androidx.compose.runtime.* +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.input.ImeAction diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/password/view/Loading.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/password/view/Loading.kt index 01067ff..744a3e9 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/password/view/Loading.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/password/view/Loading.kt @@ -1,20 +1,21 @@ package llc.arma.ble.app.ui.screen.password.view -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CircleShape -import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.Visibility -import androidx.compose.material.icons.rounded.VisibilityOff -import androidx.compose.material3.* -import androidx.compose.runtime.* +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.MaterialTheme +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.graphics.StrokeCap -import androidx.compose.ui.text.input.ImeAction -import androidx.compose.ui.text.input.KeyboardType -import androidx.compose.ui.text.input.PasswordVisualTransformation -import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.unit.dp import llc.arma.ble.app.ui.screen.password.ChangePasswordContract diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/password/view/Result.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/password/view/Result.kt index 332816a..0218951 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/password/view/Result.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/password/view/Result.kt @@ -1,9 +1,15 @@ package llc.arma.ble.app.ui.screen.password.view import androidx.compose.foundation.Image -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/rotation/delete/RotationStatisticContract.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/rotation/delete/RotationStatisticContract.kt index a42c416..68f7292 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/rotation/delete/RotationStatisticContract.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/rotation/delete/RotationStatisticContract.kt @@ -3,7 +3,6 @@ package llc.arma.ble.app.ui.screen.rotation.delete import llc.arma.ble.app.ui.common.ViewEvent import llc.arma.ble.app.ui.common.ViewSideEffect import llc.arma.ble.app.ui.common.ViewState -import llc.arma.ble.domain.model.Rotation class RotationDeleteContract { diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/rotation/delete/RotationStatisticScreen.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/rotation/delete/RotationStatisticScreen.kt index 1c8979d..3decaaa 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/rotation/delete/RotationStatisticScreen.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/rotation/delete/RotationStatisticScreen.kt @@ -1,58 +1,23 @@ package llc.arma.ble.app.ui.screen.rotation.delete -import android.icu.text.SimpleDateFormat -import androidx.compose.foundation.clickable -import androidx.compose.foundation.horizontalScroll import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.IntrinsicSize import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxHeight -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.width -import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Button -import androidx.compose.material3.TopAppBar -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.ArrowBack -import androidx.compose.material.icons.rounded.Delete -import androidx.compose.material3.Card -import androidx.compose.material3.DatePicker -import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.HorizontalDivider -import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.TextButton -import androidx.compose.material3.TextField -import androidx.compose.material3.rememberDatePickerState import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import androidx.compose.ui.window.Dialog -import androidx.compose.ui.window.DialogProperties import androidx.hilt.navigation.compose.hiltViewModel import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach -import llc.arma.ble.app.ui.screen.rotation.statistic.RotationStatisticContract -import java.util.Date -import java.util.concurrent.TimeUnit -import kotlin.math.absoluteValue -import kotlin.math.pow -import kotlin.math.roundToInt @Composable fun RotationDeleteScreen( diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/rotation/delete/RotationStatisticViewModel.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/rotation/delete/RotationStatisticViewModel.kt index 144dceb..d70eea4 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/rotation/delete/RotationStatisticViewModel.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/rotation/delete/RotationStatisticViewModel.kt @@ -1,19 +1,12 @@ package llc.arma.ble.app.ui.screen.rotation.delete -import android.icu.util.GregorianCalendar -import android.util.Log import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch import llc.arma.ble.app.ui.common.BaseViewModel import llc.arma.ble.domain.usecase.DeleteRotationsBySerial -import llc.arma.ble.domain.usecase.GetRotationsBySerial -import llc.arma.ble.domain.usecase.GetWheelRadiusBySerial -import llc.arma.ble.domain.usecase.SetWheelRadius -import java.util.concurrent.TimeUnit import javax.inject.Inject -import kotlin.math.absoluteValue @HiltViewModel diff --git a/app/src/main/java/llc/arma/ble/app/ui/screen/rotation/statistic/RotationStatisticScreen.kt b/app/src/main/java/llc/arma/ble/app/ui/screen/rotation/statistic/RotationStatisticScreen.kt index ff95f16..1e78ec7 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/screen/rotation/statistic/RotationStatisticScreen.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/screen/rotation/statistic/RotationStatisticScreen.kt @@ -2,13 +2,11 @@ package llc.arma.ble.app.ui.screen.rotation.statistic import android.icu.text.SimpleDateFormat import androidx.compose.foundation.clickable -import androidx.compose.foundation.horizontalScroll import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.IntrinsicSize import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height @@ -16,14 +14,12 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.items -import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.Button -import androidx.compose.material3.TopAppBar import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.ArrowBack import androidx.compose.material.icons.rounded.ArrowForward import androidx.compose.material.icons.rounded.Delete +import androidx.compose.material3.Button import androidx.compose.material3.Card import androidx.compose.material3.DatePicker import androidx.compose.material3.ExperimentalMaterial3Api @@ -35,6 +31,7 @@ import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TextField +import androidx.compose.material3.TopAppBar import androidx.compose.material3.rememberDatePickerState import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect diff --git a/app/src/main/java/llc/arma/ble/app/ui/theme/Theme.kt b/app/src/main/java/llc/arma/ble/app/ui/theme/Theme.kt index ec9b545..10b7596 100644 --- a/app/src/main/java/llc/arma/ble/app/ui/theme/Theme.kt +++ b/app/src/main/java/llc/arma/ble/app/ui/theme/Theme.kt @@ -2,7 +2,6 @@ package llc.arma.ble.app.ui.theme import android.app.Activity import androidx.compose.foundation.isSystemInDarkTheme -import androidx.compose.material3.ColorScheme import androidx.compose.material3.MaterialTheme import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable diff --git a/app/src/main/java/llc/arma/ble/data/model/BleNameEntity.kt b/app/src/main/java/llc/arma/ble/data/model/BleNameEntity.kt index 4e3adef..1d70573 100644 --- a/app/src/main/java/llc/arma/ble/data/model/BleNameEntity.kt +++ b/app/src/main/java/llc/arma/ble/data/model/BleNameEntity.kt @@ -3,8 +3,6 @@ package llc.arma.ble.data.model import androidx.room.Entity import androidx.room.Index import androidx.room.PrimaryKey -import llc.arma.ble.domain.usecase.AccelScale -import llc.arma.ble.domain.usecase.AccelViewMode @Entity( tableName = "ble_name", diff --git a/app/src/main/java/llc/arma/ble/data/repository/BleRepositoryImpl.kt b/app/src/main/java/llc/arma/ble/data/repository/BleRepositoryImpl.kt index e97e77d..8d04ca1 100644 --- a/app/src/main/java/llc/arma/ble/data/repository/BleRepositoryImpl.kt +++ b/app/src/main/java/llc/arma/ble/data/repository/BleRepositoryImpl.kt @@ -552,7 +552,7 @@ class BleRepositoryImpl @Inject constructor( } override suspend fun addBleToHostTableBySerial(serial: String, ble: List): Result { - return addBleToHostTable(serial, ble, app) + return editBleToHostTable(serial, ble, app) } override suspend fun getHostHistoryBySerial( @@ -738,16 +738,17 @@ class BleRepositoryImpl @Inject constructor( } - connection.discoverServices().findService(serviceUUID)?.findCharacteristic( + service.findCharacteristic( flashWriteUUID )!!.write( DataByteArray.from(9) ) + connection.close() + Result.success(Unit) } catch (err: Throwable){ - err.printStackTrace() Result.failure(BleException.UnexpectedResponse) diff --git a/app/src/main/java/llc/arma/ble/data/repository/GetAccelerometerRealtimeData.kt b/app/src/main/java/llc/arma/ble/data/repository/GetAccelerometerRealtimeData.kt index c38a128..731063e 100644 --- a/app/src/main/java/llc/arma/ble/data/repository/GetAccelerometerRealtimeData.kt +++ b/app/src/main/java/llc/arma/ble/data/repository/GetAccelerometerRealtimeData.kt @@ -13,7 +13,12 @@ import llc.arma.ble.domain.common.BleException import llc.arma.ble.domain.model.Ble import llc.arma.ble.domain.usecase.AccelScale import llc.arma.ble.domain.usecase.AccelViewMode -import llc.arma.ble.domain.usecase.AccelViewMode.* +import llc.arma.ble.domain.usecase.AccelViewMode.ACCELERATION +import llc.arma.ble.domain.usecase.AccelViewMode.ANGLE +import llc.arma.ble.domain.usecase.AccelViewMode.PEAK_ACCELERATION +import llc.arma.ble.domain.usecase.AccelViewMode.RMS +import llc.arma.ble.domain.usecase.AccelViewMode.ROTATIONS +import llc.arma.ble.domain.usecase.AccelViewMode.VIBRATION import llc.arma.ble.domain.usecase.FftAxis import llc.arma.ble.domain.usecase.FftFrequency import llc.arma.ble.domain.usecase.FftViewMode diff --git a/app/src/main/java/llc/arma/ble/data/repository/ReadHostHistory.kt b/app/src/main/java/llc/arma/ble/data/repository/ReadHostHistory.kt index ae66b20..6e245f4 100644 --- a/app/src/main/java/llc/arma/ble/data/repository/ReadHostHistory.kt +++ b/app/src/main/java/llc/arma/ble/data/repository/ReadHostHistory.kt @@ -3,6 +3,7 @@ package llc.arma.ble.data.repository import android.app.Application import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow import llc.arma.ble.data.repository.extensions.checkPermission @@ -352,9 +353,9 @@ suspend fun readHostBleTable( } @OptIn(ExperimentalStdlibApi::class) -suspend fun addBleToHostTable( +suspend fun editBleToHostTable( address: String, - newBleAddress: List, + addBleAddress: List, app: Application, ): Result { @@ -370,7 +371,9 @@ suspend fun addBleToHostTable( ?.findCharacteristic(flashWriteUUID) ?: throw IllegalStateException() - val writeCount = newBleAddress.chunked(40).sumOf { bleAddressBatch -> + characteristic.write(DataByteArray.from(12, 1)) + + val writeCount = addBleAddress.chunked(40).sumOf { bleAddressBatch -> val countPayload = ByteBuffer.allocate(2).putShort(bleAddressBatch.size.toShort()).array().reversed().toByteArray() @@ -389,6 +392,8 @@ suspend fun addBleToHostTable( DataByteArray.from(9) ) + delay(10_000) + Result.success(writeCount) } catch (err: Throwable) { diff --git a/app/src/main/java/llc/arma/ble/domain/model/BleName.kt b/app/src/main/java/llc/arma/ble/domain/model/BleName.kt index fcbe9b6..a052f63 100644 --- a/app/src/main/java/llc/arma/ble/domain/model/BleName.kt +++ b/app/src/main/java/llc/arma/ble/domain/model/BleName.kt @@ -1,8 +1,5 @@ package llc.arma.ble.domain.model -import llc.arma.ble.domain.usecase.AccelScale -import llc.arma.ble.domain.usecase.AccelViewMode - data class BleName( val serial: String, val name: String diff --git a/app/src/main/java/llc/arma/ble/domain/model/ConnectedBleInfo.kt b/app/src/main/java/llc/arma/ble/domain/model/ConnectedBleInfo.kt index 374ba0f..b2cde82 100644 --- a/app/src/main/java/llc/arma/ble/domain/model/ConnectedBleInfo.kt +++ b/app/src/main/java/llc/arma/ble/domain/model/ConnectedBleInfo.kt @@ -1,7 +1,5 @@ package llc.arma.ble.domain.model -import java.util.UUID - class ConnectedBleInfo( val name: String, val serial: String, diff --git a/app/src/main/java/llc/arma/ble/domain/model/Rotation.kt b/app/src/main/java/llc/arma/ble/domain/model/Rotation.kt index 669da9e..cda1590 100644 --- a/app/src/main/java/llc/arma/ble/domain/model/Rotation.kt +++ b/app/src/main/java/llc/arma/ble/domain/model/Rotation.kt @@ -1,8 +1,5 @@ package llc.arma.ble.domain.model -import androidx.room.Entity -import androidx.room.Index - data class Rotation( val bleId: String, diff --git a/app/src/main/java/llc/arma/ble/domain/usecase/AddBleToHostTable.kt b/app/src/main/java/llc/arma/ble/domain/usecase/AddBleToHostTable.kt index 5d37a4d..b84a7f0 100644 --- a/app/src/main/java/llc/arma/ble/domain/usecase/AddBleToHostTable.kt +++ b/app/src/main/java/llc/arma/ble/domain/usecase/AddBleToHostTable.kt @@ -2,7 +2,6 @@ package llc.arma.ble.domain.usecase import llc.arma.ble.domain.Result import llc.arma.ble.domain.common.BleException -import llc.arma.ble.domain.model.BleInfo import llc.arma.ble.domain.model.BleName import llc.arma.ble.domain.repository.BleNameRepository import llc.arma.ble.domain.repository.BleRepository @@ -13,7 +12,7 @@ class AddBleToHostTable @Inject constructor( private val bleNameRepository: BleNameRepository ) { - suspend operator fun invoke(serial: String, ble: List): Result { + suspend operator fun invoke(serial: String, ble: List): Result { bleNameRepository.save( ble.map { diff --git a/app/src/main/java/llc/arma/ble/domain/usecase/DeleteRotationsBySerial.kt b/app/src/main/java/llc/arma/ble/domain/usecase/DeleteRotationsBySerial.kt index 4d733ec..b9437e5 100644 --- a/app/src/main/java/llc/arma/ble/domain/usecase/DeleteRotationsBySerial.kt +++ b/app/src/main/java/llc/arma/ble/domain/usecase/DeleteRotationsBySerial.kt @@ -1,6 +1,5 @@ package llc.arma.ble.domain.usecase -import llc.arma.ble.domain.model.Rotation import llc.arma.ble.domain.repository.RotationsRepository import javax.inject.Inject diff --git a/app/src/main/java/llc/arma/ble/domain/usecase/ExportToXlsx.kt b/app/src/main/java/llc/arma/ble/domain/usecase/ExportToXlsx.kt index 6549c3e..b986769 100644 --- a/app/src/main/java/llc/arma/ble/domain/usecase/ExportToXlsx.kt +++ b/app/src/main/java/llc/arma/ble/domain/usecase/ExportToXlsx.kt @@ -1,22 +1,8 @@ package llc.arma.ble.domain.usecase -import android.app.Application -import llc.arma.ble.R import llc.arma.ble.domain.model.Ble import llc.arma.ble.domain.repository.EmailRepository import llc.arma.ble.domain.repository.XlsxRepository -import org.apache.poi.ss.SpreadsheetVersion -import org.apache.poi.ss.usermodel.WorkbookFactory -import org.apache.poi.ss.util.AreaReference -import org.apache.poi.ss.util.CellReference -import org.apache.poi.util.IOUtils -import org.apache.poi.xssf.usermodel.XSSFCell -import org.apache.poi.xssf.usermodel.XSSFSheet -import org.apache.poi.xssf.usermodel.XSSFTable -import java.io.File -import java.io.FileInputStream -import java.io.FileOutputStream -import java.util.UUID import javax.inject.Inject class ExportToXlsx @Inject constructor( diff --git a/app/src/main/java/llc/arma/ble/domain/usecase/GetAccelerometerHistoryBySerial.kt b/app/src/main/java/llc/arma/ble/domain/usecase/GetAccelerometerHistoryBySerial.kt index 8a4233c..deed259 100644 --- a/app/src/main/java/llc/arma/ble/domain/usecase/GetAccelerometerHistoryBySerial.kt +++ b/app/src/main/java/llc/arma/ble/domain/usecase/GetAccelerometerHistoryBySerial.kt @@ -9,8 +9,6 @@ import llc.arma.ble.domain.model.Ble import llc.arma.ble.domain.model.Rotation import llc.arma.ble.domain.repository.BleRepository import llc.arma.ble.domain.repository.RotationsRepository -import java.time.LocalDateTime -import java.util.Date import java.util.concurrent.TimeUnit import javax.inject.Inject diff --git a/app/src/main/java/llc/arma/ble/domain/usecase/GetBleAroundFlow.kt b/app/src/main/java/llc/arma/ble/domain/usecase/GetBleAroundFlow.kt index 60e9a32..03e272a 100644 --- a/app/src/main/java/llc/arma/ble/domain/usecase/GetBleAroundFlow.kt +++ b/app/src/main/java/llc/arma/ble/domain/usecase/GetBleAroundFlow.kt @@ -3,7 +3,6 @@ package llc.arma.ble.domain.usecase import kotlinx.coroutines.flow.Flow import llc.arma.ble.domain.Result import llc.arma.ble.domain.common.BleException -import llc.arma.ble.domain.model.Ble import llc.arma.ble.domain.model.BleInfo import llc.arma.ble.domain.repository.BleRepository import javax.inject.Inject diff --git a/app/src/main/java/llc/arma/ble/domain/usecase/GetBleBySerial.kt b/app/src/main/java/llc/arma/ble/domain/usecase/GetBleBySerial.kt index 1207671..a7de2f4 100644 --- a/app/src/main/java/llc/arma/ble/domain/usecase/GetBleBySerial.kt +++ b/app/src/main/java/llc/arma/ble/domain/usecase/GetBleBySerial.kt @@ -1,11 +1,11 @@ package llc.arma.ble.domain.usecase import kotlinx.coroutines.flow.Flow +import llc.arma.ble.domain.Result +import llc.arma.ble.domain.common.BleException import llc.arma.ble.domain.model.Ble import llc.arma.ble.domain.repository.BleRepository import javax.inject.Inject -import llc.arma.ble.domain.Result -import llc.arma.ble.domain.common.BleException class GetBleBySerial @Inject constructor( private val bleRepository: BleRepository diff --git a/app/src/main/java/llc/arma/ble/domain/usecase/GetFoundBle.kt b/app/src/main/java/llc/arma/ble/domain/usecase/GetFoundBle.kt index 96ea9a2..8afef31 100644 --- a/app/src/main/java/llc/arma/ble/domain/usecase/GetFoundBle.kt +++ b/app/src/main/java/llc/arma/ble/domain/usecase/GetFoundBle.kt @@ -1,9 +1,5 @@ package llc.arma.ble.domain.usecase -import kotlinx.coroutines.flow.Flow -import llc.arma.ble.domain.Result -import llc.arma.ble.domain.common.BleException -import llc.arma.ble.domain.model.Ble import llc.arma.ble.domain.model.BleInfo import llc.arma.ble.domain.repository.BleRepository import javax.inject.Inject diff --git a/app/src/main/java/llc/arma/ble/domain/usecase/GetHostBleTableBySerial.kt b/app/src/main/java/llc/arma/ble/domain/usecase/GetHostBleTableBySerial.kt index e0fcedb..f4e00e4 100644 --- a/app/src/main/java/llc/arma/ble/domain/usecase/GetHostBleTableBySerial.kt +++ b/app/src/main/java/llc/arma/ble/domain/usecase/GetHostBleTableBySerial.kt @@ -1,17 +1,8 @@ package llc.arma.ble.domain.usecase -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.onEach import llc.arma.ble.domain.Result import llc.arma.ble.domain.common.BleException -import llc.arma.ble.domain.common.ProgressState -import llc.arma.ble.domain.model.Ble -import llc.arma.ble.domain.model.Rotation import llc.arma.ble.domain.repository.BleRepository -import llc.arma.ble.domain.repository.RotationsRepository -import java.time.LocalDateTime -import java.util.Date -import java.util.concurrent.TimeUnit import javax.inject.Inject class GetHostBleTableBySerial @Inject constructor( diff --git a/app/src/main/res/xml/provider_paths.xml b/app/src/main/res/xml/provider_paths.xml index ef021c3..85011ae 100644 --- a/app/src/main/res/xml/provider_paths.xml +++ b/app/src/main/res/xml/provider_paths.xml @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/app/src/test/java/llc/arma/ble/ExampleUnitTest.kt b/app/src/test/java/llc/arma/ble/ExampleUnitTest.kt index 22d6060..8f1d852 100644 --- a/app/src/test/java/llc/arma/ble/ExampleUnitTest.kt +++ b/app/src/test/java/llc/arma/ble/ExampleUnitTest.kt @@ -1,9 +1,8 @@ package llc.arma.ble +import org.junit.Assert.assertEquals import org.junit.Test -import org.junit.Assert.* - /** * Example local unit test, which will execute on the development machine (host). *