diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 153e5da..8247bdc 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -74,63 +74,44 @@ dependencies { debugImplementation(libs.ui.tooling) debugImplementation(libs.ui.test.manifest) + + //-- Navigation val nav_version = "2.5.3" - // Java language implementation - implementation("androidx.navigation:navigation-fragment:$nav_version") - implementation("androidx.navigation:navigation-ui:$nav_version") - - // Kotlin implementation("androidx.navigation:navigation-fragment-ktx:$nav_version") implementation("androidx.navigation:navigation-ui-ktx:$nav_version") - - // Feature module Support implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") - - // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") - - // Jetpack Compose Integration implementation("androidx.navigation:navigation-compose:$nav_version") - val room_version = "2.5.1" - - implementation("androidx.room:room-runtime:$room_version") - annotationProcessor("androidx.room:room-compiler:$room_version") + //-- Room // To use Kotlin annotation processing tool (kapt) //kapt("androidx.room:room-compiler:$room_version") // To use Kotlin Symbol Processing (KSP) + val room_version = "2.5.1" + ksp("androidx.room:room-compiler:$room_version") - - // optional - Kotlin Extensions and Coroutines support for Room + annotationProcessor("androidx.room:room-compiler:$room_version") + implementation("androidx.room:room-runtime:$room_version") implementation("androidx.room:room-ktx:$room_version") - - // optional - Guava support for Room, including Optional and ListenableFuture implementation("androidx.room:room-guava:$room_version") - - // optional - Test helpers testImplementation("androidx.room:room-testing:$room_version") - - // optional - Paging 3 Integration implementation("androidx.room:room-paging:$room_version") - implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.0") - - // Ktor + //-- Ktor val ktor_version = "2.3.1" implementation("io.ktor:ktor-client-core:$ktor_version") implementation("io.ktor:ktor-client-cio:$ktor_version") - + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.0") implementation(platform("dev.forkhandles:forkhandles-bom:2.6.0.0")) implementation("dev.forkhandles:result4k") - implementation("io.ktor:ktor-client-core:2.3.1") implementation("io.ktor:ktor-client-okhttp:2.3.1") - implementation("androidx.security:security-crypto-ktx:1.1.0-alpha06") + // For Identity Credential APIs implementation("androidx.security:security-identity-credential:1.0.0-alpha03") @@ -143,10 +124,14 @@ dependencies { implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.4.0") - // Map Compose library + + //-- Map Compose library implementation("ovh.plrapps:mapcompose:2.7.1") - // Glide - implementation ("com.github.bumptech.glide:glide:4.14.2") + + //-- Glide + implementation("com.github.bumptech.glide:glide:4.14.2") implementation("com.github.bumptech.glide:compose:1.0.0-alpha.1") - } \ No newline at end of file + + +} \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/MainActivity.kt b/app/src/main/java/ru/nm17/narodmon/MainActivity.kt index 72011a6..fb62ffc 100644 --- a/app/src/main/java/ru/nm17/narodmon/MainActivity.kt +++ b/app/src/main/java/ru/nm17/narodmon/MainActivity.kt @@ -1,27 +1,16 @@ -@file:OptIn( - ExperimentalMaterial3Api::class, ExperimentalMaterial3Api::class, - ExperimentalMaterial3Api::class -) + package ru.nm17.narodmon import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent -import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Person -import androidx.compose.material.icons.rounded.Add -import androidx.compose.material.icons.rounded.Menu -import androidx.compose.material3.BottomAppBar import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -33,64 +22,17 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource -import androidx.compose.ui.unit.dp -import androidx.navigation.compose.NavHost -import androidx.navigation.compose.composable -import androidx.navigation.compose.rememberNavController import androidx.room.Room -import androidx.security.crypto.EncryptedSharedPreferences -import androidx.security.crypto.MasterKeys import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import ru.nm17.narodmon.db.AppDatabase import ru.nm17.narodmon.db.entities.KVSetting import ru.nm17.narodmon.ui.dialogs.AgreementDialog -import ru.nm17.narodmon.ui.sensorsScreen.SensorsScreen +import ru.nm17.narodmon.ui.navHost.AppNavHost import ru.nm17.narodmon.ui.theme.NarodMonTheme -@OptIn(ExperimentalMaterial3Api::class) -@Composable -fun AppNavHost() { - val navController = rememberNavController() - val coScope = rememberCoroutineScope() - NavHost(navController = navController, startDestination = "sensors") { - composable("agreement") { - - } - - composable("sensors") { - Scaffold(bottomBar = { - BottomAppBar(actions = { - Image( - Icons.Rounded.Menu, - contentDescription = null - ) - }, floatingActionButton = { - FloatingActionButton(onClick = { /*TODO*/ }) { - Image( - Icons.Rounded.Add, - contentDescription = "" - ) - } - }, - contentPadding = PaddingValues(start = 16.dp) - ) - }) { - Column(modifier = Modifier.padding(it)) { - SensorsScreen(navController) - } - } - - } - } - - /*...*/ - -} - class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -153,11 +95,7 @@ class MainActivity : ComponentActivity() { } } else { AppNavHost() - } - - // A surface container using the 'background' color from the theme - } } } diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/SensorEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/SensorEntity.kt new file mode 100644 index 0000000..438c953 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/SensorEntity.kt @@ -0,0 +1,16 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities + + +data class SensorEntity( + val changed: Int, + val fav: Int, + val id: Int, + val mac: String, + val name: String, + val pub: Int, + val time: Int, + val trend: Int, + val type: Int, + val unit: String, + val value: Double +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/addLike/AddLikeRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/addLike/AddLikeRequestEntity.kt new file mode 100644 index 0000000..a755a22 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/addLike/AddLikeRequestEntity.kt @@ -0,0 +1,8 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.addLike + +data class AddLikeRequestEntity( + val api_key: String, + val cmd: String, + val id: Int, + val uuid: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/addLike/AddLikeResponseEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/addLike/AddLikeResponseEntity.kt new file mode 100644 index 0000000..a70ff7e --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/addLike/AddLikeResponseEntity.kt @@ -0,0 +1,7 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.addLike + +data class AddLikeResponseEntity( + val id: Int, + val liked: Int, + val time: Int +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/appInit/AppInitRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/appInit/AppInitRequestEntity.kt new file mode 100644 index 0000000..85c311f --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/appInit/AppInitRequestEntity.kt @@ -0,0 +1,11 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.appInit + +data class AppInitRequestEntity( + val api_key: String, + val cmd: String, + val lang: String, + val platform: String, + val utc: Int, + val uuid: String, + val version: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/appInit/AppInitResponseEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/appInit/AppInitResponseEntity.kt new file mode 100644 index 0000000..563bc0b --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/appInit/AppInitResponseEntity.kt @@ -0,0 +1,14 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.appInit + +data class AppInitResponseEntity( + val addr: String, + val favorites: List, + val lat: Double, + val latest: String, + val login: String, + val lon: Double, + val timestamp: Int, + val types: List, + val url: String, + val vip: Int +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/appInit/AppInitTypeEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/appInit/AppInitTypeEntity.kt new file mode 100644 index 0000000..d04303b --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/appInit/AppInitTypeEntity.kt @@ -0,0 +1,7 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.appInit + +data class AppInitTypeEntity( + val name: String, + val type: Int, + val unit: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/bugReport/BugReportRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/bugReport/BugReportRequestEntity.kt new file mode 100644 index 0000000..bb3fabb --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/bugReport/BugReportRequestEntity.kt @@ -0,0 +1,12 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.bugReport + +data class BugReportRequestEntity( + val api_key: String, + val cmd: String, + val email: String, + val logs: String, + val mess: String, + val name: String, + val time: Int, + val uuid: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/disLike/DisLikeRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/disLike/DisLikeRequestEntity.kt new file mode 100644 index 0000000..0066457 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/disLike/DisLikeRequestEntity.kt @@ -0,0 +1,8 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.disLike + +data class DisLikeRequestEntity( + val api_key: String, + val cmd: String, + val id: Int, + val uuid: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/disLike/DisLikeResponseEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/disLike/DisLikeResponseEntity.kt new file mode 100644 index 0000000..4d863e2 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/disLike/DisLikeResponseEntity.kt @@ -0,0 +1,7 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.disLike + +data class DisLikeResponseEntity( + val id: Int, + val liked: Int, + val time: Int +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/mapBounds/MapBoundsDeviceEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/mapBounds/MapBoundsDeviceEntity.kt new file mode 100644 index 0000000..cab15fa --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/mapBounds/MapBoundsDeviceEntity.kt @@ -0,0 +1,12 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.mapBounds + +data class MapBoundsDeviceEntity( + val id: Int, + val lat: Double, + val lon: Double, + val name: String, + val time: Int, + val type: Int, + val unit: String, + val value: Double +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/mapBounds/MapBoundsRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/mapBounds/MapBoundsRequestEntity.kt new file mode 100644 index 0000000..14b1dad --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/mapBounds/MapBoundsRequestEntity.kt @@ -0,0 +1,10 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.mapBounds + +data class MapBoundsRequestEntity( + val api_key: String, + val bounds: List, + val cmd: String, + val lang: String, + val limit: Int, + val uuid: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/mapBounds/MapBoundsResponseEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/mapBounds/MapBoundsResponseEntity.kt new file mode 100644 index 0000000..b14d742 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/mapBounds/MapBoundsResponseEntity.kt @@ -0,0 +1,6 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.mapBounds + +data class MapBoundsResponseEntity( + val devices: List, + val webcams: List +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/mapBounds/MapBoundsWebcamEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/mapBounds/MapBoundsWebcamEntity.kt new file mode 100644 index 0000000..3a3f613 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/mapBounds/MapBoundsWebcamEntity.kt @@ -0,0 +1,10 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.mapBounds + +data class MapBoundsWebcamEntity( + val id: Int, + val image: String, + val lat: Double, + val lon: Double, + val name: String, + val time: Int +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/nameSensor/NameSensorRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/nameSensor/NameSensorRequestEntity.kt new file mode 100644 index 0000000..3dc5ebe --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/nameSensor/NameSensorRequestEntity.kt @@ -0,0 +1,9 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.nameSensor + +data class NameSensorRequestEntity( + val api_key: String, + val cmd: String, + val id: Int, + val name: String, + val uuid: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/pubSensor/PubSensorRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/pubSensor/PubSensorRequestEntity.kt new file mode 100644 index 0000000..024c610 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/pubSensor/PubSensorRequestEntity.kt @@ -0,0 +1,8 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.pubSensor + +data class PubSensorRequestEntity( + val api_key: String, + val cmd: String, + val id: Int, + val uuid: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/pubSensor/PubSensorResponseEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/pubSensor/PubSensorResponseEntity.kt new file mode 100644 index 0000000..ea4a731 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/pubSensor/PubSensorResponseEntity.kt @@ -0,0 +1,6 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.pubSensor + +data class PubSensorResponseEntity( + val code: Int, + val id: Int +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sendCommand/SendCommandRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sendCommand/SendCommandRequestEntity.kt new file mode 100644 index 0000000..a57b0ca --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sendCommand/SendCommandRequestEntity.kt @@ -0,0 +1,9 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.sendCommand + +data class SendCommandRequestEntity( + val api_key: String, + val cmd: String, + val command: String, + val id: Int, + val uuid: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sendComplaint/SendComplaintRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sendComplaint/SendComplaintRequestEntity.kt new file mode 100644 index 0000000..ea19abe --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sendComplaint/SendComplaintRequestEntity.kt @@ -0,0 +1,13 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.sendComplaint + +data class SendComplaintRequestEntity( + val api_key: String, + val cmd: String, + val email: String, + val id: Int, + val name: String, + val problem: String, + val time: Int, + val uuid: String, + val value: Int +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sendMessage/SendMessageRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sendMessage/SendMessageRequestEntity.kt new file mode 100644 index 0000000..376e59e --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sendMessage/SendMessageRequestEntity.kt @@ -0,0 +1,12 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.sendMessage + +data class SendMessageRequestEntity( + val api_key: String, + val cmd: String, + val email: String, + val mess: String, + val name: String, + val subj: String, + val uid: Int, + val uuid: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsHistory/HistoryDataEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsHistory/HistoryDataEntity.kt new file mode 100644 index 0000000..5b8d10b --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsHistory/HistoryDataEntity.kt @@ -0,0 +1,7 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.sensorsHistory + +data class HistoryDataEntity( + val id: Int, + val time: Int, + val value: Double +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsHistory/HistorySensorEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsHistory/HistorySensorEntity.kt new file mode 100644 index 0000000..9552e72 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsHistory/HistorySensorEntity.kt @@ -0,0 +1,8 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.sensorsHistory + +data class HistorySensorEntity( + val id: Int, + val name: String, + val type: Int, + val unit: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsHistory/SensorsHistoryRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsHistory/SensorsHistoryRequestEntity.kt new file mode 100644 index 0000000..ae1cd97 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsHistory/SensorsHistoryRequestEntity.kt @@ -0,0 +1,10 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.sensorsHistory + +data class SensorsHistoryRequestEntity( + val api_key: String, + val cmd: String, + val id: Int, + val offset: Int, + val period: String, + val uuid: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsHistory/SensorsHistoryResponseEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsHistory/SensorsHistoryResponseEntity.kt new file mode 100644 index 0000000..d3290de --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsHistory/SensorsHistoryResponseEntity.kt @@ -0,0 +1,6 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.sensorsHistory + +data class SensorsHistoryResponseEntity( + val `data`: List, + val sensors: List +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsNearby/NearbyDeviceEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsNearby/NearbyDeviceEntity.kt new file mode 100644 index 0000000..3966c5b --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsNearby/NearbyDeviceEntity.kt @@ -0,0 +1,19 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.sensorsNearby + +import ru.nm17.narodmon.appNarodMonApiClient.entities.SensorEntity + + +data class NearbyDeviceEntity( + val cmd: Int, + val distance: Double, + val id: Int, + val lat: Double, + val location: String, + val lon: Double, + val mac: String, + val my: Int, + val name: String, + val owner: String, + val sensors: List, + val time: Int +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsNearby/SensorsNearbyRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsNearby/SensorsNearbyRequestEntity.kt new file mode 100644 index 0000000..3f7b7a8 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsNearby/SensorsNearbyRequestEntity.kt @@ -0,0 +1,12 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.sensorsNearby + +data class SensorsNearbyRequestEntity( + val api_key: String, + val cmd: String, + val lang: String, + val lat: Double, + val lon: Double, + val radius: Int, + val types: List, + val uuid: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsNearby/SensorsNearbyResponseEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsNearby/SensorsNearbyResponseEntity.kt new file mode 100644 index 0000000..1417fa2 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsNearby/SensorsNearbyResponseEntity.kt @@ -0,0 +1,5 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.sensorsNearby + +data class SensorsNearbyResponseEntity( + val devices: List +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsOnDevice/SensorOnDeviceEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsOnDevice/SensorOnDeviceEntity.kt new file mode 100644 index 0000000..3c223f2 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsOnDevice/SensorOnDeviceEntity.kt @@ -0,0 +1,19 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.sensorsOnDevice + +import ru.nm17.narodmon.ui.entities.SensorEntity + +data class SensorOnDeviceEntity( + val cmd: Int, + val distance: Double, + val id: Int, + val info: String, + val location: String, + val mac: String, + val my: Int, + val name: String, + val owner: String, + val photo: String, + val sensors: List, + val site: String, + val time: Int +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsOnDevice/SensorsOnDeviceRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsOnDevice/SensorsOnDeviceRequestEntity.kt new file mode 100644 index 0000000..1c9a0ca --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsOnDevice/SensorsOnDeviceRequestEntity.kt @@ -0,0 +1,9 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.sensorsOnDevice + +data class SensorsOnDeviceRequestEntity( + val api_key: String, + val cmd: String, + val devices: List, + val lang: String, + val uuid: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsOnDevice/SensorsOnDeviceResponseEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsOnDevice/SensorsOnDeviceResponseEntity.kt new file mode 100644 index 0000000..7ca1537 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsOnDevice/SensorsOnDeviceResponseEntity.kt @@ -0,0 +1,5 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.sensorsOnDevice + +data class SensorsOnDeviceResponseEntity( + val devices: List +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsValues/SensorValueEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsValues/SensorValueEntity.kt new file mode 100644 index 0000000..2a26c28 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsValues/SensorValueEntity.kt @@ -0,0 +1,10 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.sensorsValues + +data class SensorValueEntity( + val changed: Int, + val id: Int, + val time: Int, + val trend: Int, + val type: Int, + val value: Int +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsValues/SensorsValuesRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsValues/SensorsValuesRequestEntity.kt new file mode 100644 index 0000000..1d0315f --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsValues/SensorsValuesRequestEntity.kt @@ -0,0 +1,8 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.sensorsValues + +data class SensorsValuesRequestEntity( + val api_key: String, + val cmd: String, + val sensors: List, + val uuid: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsValues/SensorsValuesResponseEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsValues/SensorsValuesResponseEntity.kt new file mode 100644 index 0000000..36242aa --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/sensorsValues/SensorsValuesResponseEntity.kt @@ -0,0 +1,5 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.sensorsValues + +data class SensorsValuesResponseEntity( + val sensors: List +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userFavorites/FavoriteSensorEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userFavorites/FavoriteSensorEntity.kt new file mode 100644 index 0000000..6bb7817 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userFavorites/FavoriteSensorEntity.kt @@ -0,0 +1,9 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.userFavorites + +data class FavoriteSensorEntity( + val id: Int, + val name: String, + val time: Int, + val type: Int, + val value: Double +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userFavorites/FavoriteWebcamEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userFavorites/FavoriteWebcamEntity.kt new file mode 100644 index 0000000..68157b6 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userFavorites/FavoriteWebcamEntity.kt @@ -0,0 +1,8 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.userFavorites + +data class FavoriteWebcamEntity( + val id: Int, + val image: String, + val name: String, + val time: Int +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userFavorites/UserFavoritesRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userFavorites/UserFavoritesRequestEntity.kt new file mode 100644 index 0000000..a5a536f --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userFavorites/UserFavoritesRequestEntity.kt @@ -0,0 +1,10 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.userFavorites + +data class UserFavoritesRequestEntity( + val api_key: String, + val cmd: String, + val lang: String, + val sensors: List, + val uuid: String, + val webcams: List +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userFavorites/UserFavoritesResponseEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userFavorites/UserFavoritesResponseEntity.kt new file mode 100644 index 0000000..8371cfc --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userFavorites/UserFavoritesResponseEntity.kt @@ -0,0 +1,6 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.userFavorites + +data class UserFavoritesResponseEntity( + val sensors: List, + val webcams: List +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLocation/CellEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLocation/CellEntity.kt new file mode 100644 index 0000000..a5e1a74 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLocation/CellEntity.kt @@ -0,0 +1,6 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.userLocation + +data class CellEntity( + val bssid: String, + val rssi: Int +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLocation/UserLocationByAddrRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLocation/UserLocationByAddrRequestEntity.kt new file mode 100644 index 0000000..aacfd3a --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLocation/UserLocationByAddrRequestEntity.kt @@ -0,0 +1,9 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.userLocation + +data class UserLocationByAddrRequestEntity( + val addr: String, + val api_key: String, + val cmd: String, + val lang: String, + val uuid: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLocation/UserLocationByCellRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLocation/UserLocationByCellRequestEntity.kt new file mode 100644 index 0000000..8c61a53 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLocation/UserLocationByCellRequestEntity.kt @@ -0,0 +1,9 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.userLocation + +data class UserLocationByCellRequestEntity( + val api_key: String, + val cells: List, + val cmd: String, + val lang: String, + val uuid: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLocation/UserLocationByCoordRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLocation/UserLocationByCoordRequestEntity.kt new file mode 100644 index 0000000..48e8b4c --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLocation/UserLocationByCoordRequestEntity.kt @@ -0,0 +1,10 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.userLocation + +data class UserLocationByCoordRequestEntity( + val api_key: String, + val cmd: String, + val lang: String, + val lat: Double, + val lon: Double, + val uuid: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLocation/UserLocationByWifiRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLocation/UserLocationByWifiRequestEntity.kt new file mode 100644 index 0000000..5c76ca2 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLocation/UserLocationByWifiRequestEntity.kt @@ -0,0 +1,9 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.userLocation + +data class UserLocationByWifiRequestEntity( + val api_key: String, + val cmd: String, + val lang: String, + val uuid: String, + val wifi: List +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLocation/UserLocationResponseEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLocation/UserLocationResponseEntity.kt new file mode 100644 index 0000000..aeddce1 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLocation/UserLocationResponseEntity.kt @@ -0,0 +1,7 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.userLocation + +data class UserLocationResponseEntity( + val addr: String, + val lat: Double, + val lon: Double +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLocation/WifiEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLocation/WifiEntity.kt new file mode 100644 index 0000000..6ea7e0b --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLocation/WifiEntity.kt @@ -0,0 +1,6 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.userLocation + +data class WifiEntity( + val bssid: String, + val rssi: Int +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLogon/UserLogonRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLogon/UserLogonRequestEntity.kt new file mode 100644 index 0000000..b3a08c6 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLogon/UserLogonRequestEntity.kt @@ -0,0 +1,10 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.userLogon + +data class UserLogonRequestEntity( + val api_key: String, + val cmd: String, + val hash: String, + val lang: String, + val login: String, + val uuid: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLogon/UserLogonResponseEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLogon/UserLogonResponseEntity.kt new file mode 100644 index 0000000..c93ba41 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLogon/UserLogonResponseEntity.kt @@ -0,0 +1,8 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.userLogon + +data class UserLogonResponseEntity( + val login: String, + val tz: Int, + val uid: Int, + val vip: Int +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLogout/UserLogoutRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLogout/UserLogoutRequestEntity.kt new file mode 100644 index 0000000..995411d --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLogout/UserLogoutRequestEntity.kt @@ -0,0 +1,7 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.userLogout + +data class UserLogoutRequestEntity( + val api_key: String, + val cmd: String, + val uuid: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLogout/UserLogoutResponseEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLogout/UserLogoutResponseEntity.kt new file mode 100644 index 0000000..6a9974e --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/userLogout/UserLogoutResponseEntity.kt @@ -0,0 +1,6 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.userLogout + +data class UserLogoutResponseEntity( + val login: String, + val uid: Int +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/weatherReport/WeatherReportRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/weatherReport/WeatherReportRequestEntity.kt new file mode 100644 index 0000000..2536fa5 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/weatherReport/WeatherReportRequestEntity.kt @@ -0,0 +1,14 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.weatherReport + +data class WeatherReportRequestEntity( + val api_key: String, + val cmd: String, + val humid: String, + val lang: String, + val lat: Double, + val lon: Double, + val press: String, + val temp: String, + val uuid: String, + val wind: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/weatherReport/WeatherReportResponseEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/weatherReport/WeatherReportResponseEntity.kt new file mode 100644 index 0000000..2d2ea8a --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/weatherReport/WeatherReportResponseEntity.kt @@ -0,0 +1,5 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.weatherReport + +data class WeatherReportResponseEntity( + val result: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/webcamImages/WebcamImageEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/webcamImages/WebcamImageEntity.kt new file mode 100644 index 0000000..17b1dd9 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/webcamImages/WebcamImageEntity.kt @@ -0,0 +1,6 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.webcamImages + +data class WebcamImageEntity( + val image: String, + val time: Int +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/webcamImages/WebcamImagesRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/webcamImages/WebcamImagesRequestEntity.kt new file mode 100644 index 0000000..df1565e --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/webcamImages/WebcamImagesRequestEntity.kt @@ -0,0 +1,9 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.webcamImages + +data class WebcamImagesRequestEntity( + val api_key: String, + val cmd: String, + val id: Int, + val limit: Int, + val uuid: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/webcamImages/WebcamImagesResponseEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/webcamImages/WebcamImagesResponseEntity.kt new file mode 100644 index 0000000..a94d70f --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/webcamImages/WebcamImagesResponseEntity.kt @@ -0,0 +1,9 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.webcamImages + +data class WebcamImagesResponseEntity( + val distance: Double, + val id: Int, + val images: List, + val location: String, + val name: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/webcamsNearby/WebcamNearbyEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/webcamsNearby/WebcamNearbyEntity.kt new file mode 100644 index 0000000..146a9b4 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/webcamsNearby/WebcamNearbyEntity.kt @@ -0,0 +1,15 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.webcamsNearby + +data class WebcamNearbyEntity( + val distance: Double, + val fav: Int, + val id: Int, + val image: String, + val lat: Double, + val location: String, + val lon: Double, + val my: Int, + val name: String, + val owner: String, + val time: Int +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/webcamsNearby/WebcamsNearbyRequestEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/webcamsNearby/WebcamsNearbyRequestEntity.kt new file mode 100644 index 0000000..cab52b4 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/webcamsNearby/WebcamsNearbyRequestEntity.kt @@ -0,0 +1,11 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.webcamsNearby + +data class WebcamsNearbyRequestEntity( + val api_key: String, + val cmd: String, + val lang: String, + val lat: Double, + val lon: Double, + val radius: Int, + val uuid: String +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/webcamsNearby/WebcamsResponseEntity.kt b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/webcamsNearby/WebcamsResponseEntity.kt new file mode 100644 index 0000000..f766e9c --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/appNarodMonApiClient/entities/webcamsNearby/WebcamsResponseEntity.kt @@ -0,0 +1,5 @@ +package ru.nm17.narodmon.appNarodMonApiClient.entities.webcamsNearby + +data class WebcamsResponseEntity( + val webcams: List +) \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/ui/elements/SettingsItem.kt b/app/src/main/java/ru/nm17/narodmon/ui/elements/SettingsItem.kt new file mode 100644 index 0000000..daf382f --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/ui/elements/SettingsItem.kt @@ -0,0 +1,50 @@ +package ru.nm17.narodmon.ui.elements + +import androidx.annotation.StringRes +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material3.Icon +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import ru.nm17.narodmon.R + +/** + * Кнопка, которая нужна для настроек. + * @param titleId Id заголовка кнопки + * @param leadingItem Заполнить, когда нужно вставить Composable перед заголовком(например [Icon], [FilterCheckbox] или [Switch] + */ +@Composable +fun SettingsItem( + @StringRes titleId: Int, + leadingItem: @Composable (() -> Unit)? = null, + onClick: () -> Unit = {} +) { + Row(modifier = Modifier.padding(16.dp)) { + if (leadingItem != null) { + leadingItem.invoke() + Spacer(modifier = Modifier.size(16.dp)) + } + Column(modifier = Modifier + .fillMaxWidth() + .clickable { onClick.invoke() }) { + Text(text = stringResource(id = titleId)) + } + } + +} + +@Preview(showBackground = true) +@Composable +fun PreviewSettingsItem() { + SettingsItem(R.string.about_app) {} +} \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/ui/messagesScreen/MessagesScreen.kt b/app/src/main/java/ru/nm17/narodmon/ui/messagesScreen/MessagesScreen.kt new file mode 100644 index 0000000..f2c8b8f --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/ui/messagesScreen/MessagesScreen.kt @@ -0,0 +1,16 @@ +package ru.nm17.narodmon.ui.messagesScreen + +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview + +@Composable +fun MessagesScreen() { + Text(text = "todo") +} + +@Preview +@Composable +fun PreviewMessagesScreen() { + MessagesScreen() +} \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/ui/navHost/AppNavHost.kt b/app/src/main/java/ru/nm17/narodmon/ui/navHost/AppNavHost.kt new file mode 100644 index 0000000..9697fa4 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/ui/navHost/AppNavHost.kt @@ -0,0 +1,30 @@ +package ru.nm17.narodmon.ui.navHost + +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController +import ru.nm17.narodmon.ui.settings.SettingsNavigation + + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun AppNavHost() { + val navController = rememberNavController() + NavHost(navController = navController, startDestination = "main") { + composable("main") { + MainScreen(navController) + } + composable("settings") { + SettingsNavigation() + } + } +} + +@Preview +@Composable +fun PreviewAppNavHost() { + AppNavHost() +} diff --git a/app/src/main/java/ru/nm17/narodmon/ui/navHost/MainScreen.kt b/app/src/main/java/ru/nm17/narodmon/ui/navHost/MainScreen.kt new file mode 100644 index 0000000..d2569b2 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/ui/navHost/MainScreen.kt @@ -0,0 +1,83 @@ +package ru.nm17.narodmon.ui.navHost + +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Icon +import androidx.compose.material3.NavigationBar +import androidx.compose.material3.NavigationBarItem +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.navigation.NavController +import androidx.navigation.NavGraph.Companion.findStartDestination +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController +import ru.nm17.narodmon.ui.sensorsScreen.SensorsScreen +import ru.nm17.narodmon.ui.theme.NarodMonTheme +import ru.nm17.narodmon.ui.webCamsScreen.WebCamsScreen + + +val items = listOf( + MainScreenSealed.Sensors, + MainScreenSealed.Webcams, + MainScreenSealed.Messages +) + +@Composable +fun MainScreen(outerNavController: NavController) { + val navController = rememberNavController() + + Scaffold( + bottomBar = { + NavigationBar { + + items.forEach { screen -> + NavigationBarItem( + selected = navController.currentDestination?.route == screen.route, + onClick = { + navController.navigate(screen.route) { + popUpTo(navController.graph.findStartDestination().id) { + saveState = true + } + launchSingleTop = true + restoreState = true + } + }, + label = { Text(text = stringResource(id = screen.resourceId)) }, + icon = { + Icon( + painter = painterResource(id = screen.iconId), + contentDescription = "" + ) + }) + } + } + }, + modifier = Modifier.fillMaxSize() + ) { + NavHost( + navController, + startDestination = MainScreenSealed.Sensors.route, + Modifier.padding(it) + ) { + composable(MainScreenSealed.Sensors.route) { + SensorsScreen(outerNavController) + } + composable(MainScreenSealed.Webcams.route) { WebCamsScreen(navController) } + composable(MainScreenSealed.Messages.route) { } + } + } +} + +@Preview +@Composable +fun PreviewMainScreen() { + NarodMonTheme { + MainScreen(rememberNavController()) + } +} \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/ui/navHost/MainScreenSealed.kt b/app/src/main/java/ru/nm17/narodmon/ui/navHost/MainScreenSealed.kt new file mode 100644 index 0000000..89fcdde --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/ui/navHost/MainScreenSealed.kt @@ -0,0 +1,18 @@ +package ru.nm17.narodmon.ui.navHost + +import androidx.annotation.DrawableRes +import androidx.annotation.StringRes +import ru.nm17.narodmon.R + +sealed class MainScreenSealed( + val route: String, + @StringRes val resourceId: Int, + @DrawableRes val iconId: Int +) { + object Sensors : MainScreenSealed("sensors", R.string.sensors_page_title, R.drawable.ic_home) + object Webcams : MainScreenSealed("webcams", R.string.webcams, R.drawable.ic_webcam) + + object Messages : MainScreenSealed("messages", R.string.messages, R.drawable.ic_message) + + object Settings : MainScreenSealed("settings", R.string.settings, R.drawable.ic_settings) +} \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/ui/sensorsScreen/SensorsScreen.kt b/app/src/main/java/ru/nm17/narodmon/ui/sensorsScreen/SensorsScreen.kt index d40161b..8ded59d 100644 --- a/app/src/main/java/ru/nm17/narodmon/ui/sensorsScreen/SensorsScreen.kt +++ b/app/src/main/java/ru/nm17/narodmon/ui/sensorsScreen/SensorsScreen.kt @@ -1,8 +1,6 @@ package ru.nm17.narodmon.ui.sensorsScreen -import androidx.compose.animation.AnimatedContent import androidx.compose.animation.AnimatedVisibility -import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxHeight @@ -13,29 +11,23 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ArrowDropDown -import androidx.compose.material.icons.rounded.ArrowDropDown +import androidx.compose.material.icons.outlined.Settings import androidx.compose.material.icons.rounded.Check -import androidx.compose.material.icons.rounded.Person import androidx.compose.material3.BottomSheetScaffold import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FilterChip import androidx.compose.material3.Icon -import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.IconButton import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.SearchBar import androidx.compose.material3.SearchBarDefaults import androidx.compose.material3.SheetValue import androidx.compose.material3.Text -import androidx.compose.material3.TextField -import androidx.compose.material3.TextFieldColors -import androidx.compose.material3.TextFieldDefaults import androidx.compose.material3.rememberBottomSheetScaffoldState import androidx.compose.runtime.Composable 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 @@ -45,28 +37,23 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.navigation.NavController import androidx.navigation.compose.rememberNavController -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch -import ovh.plrapps.mapcompose.core.debounce import ru.nm17.narodmon.R import ru.nm17.narodmon.db.entities.SensorType import ru.nm17.narodmon.ui.dialogs.FilterSensorsDialog -import ru.nm17.narodmon.ui.elements.SensorItem import ru.nm17.narodmon.ui.dialogs.SortSensorsDialog +import ru.nm17.narodmon.ui.elements.SensorItem import ru.nm17.narodmon.ui.elements.TileMap import ru.nm17.narodmon.ui.entities.SensorEntity import ru.nm17.narodmon.ui.entities.SensorSortingUiEntity import ru.nm17.narodmon.ui.entities.SortingTypes +import ru.nm17.narodmon.ui.navHost.MainScreenSealed import ru.nm17.narodmon.ui.theme.NarodMonTheme import ru.nm17.narodmon.ui.toChipTitle -@OptIn(ExperimentalMaterial3Api::class, ExperimentalAnimationApi::class) +@OptIn(ExperimentalMaterial3Api::class) @Composable -fun SensorsScreen(navController: NavController) { - val coroutineScope = rememberCoroutineScope() +fun SensorsScreen(outerNavController: NavController) { var searchQuery by remember { mutableStateOf("") } var searchActive by remember { mutableStateOf(false) } @@ -119,108 +106,100 @@ fun SensorsScreen(navController: NavController) { mutableStateOf(SheetHeight.ExtraExpanded) } - BottomSheetScaffold( - modifier = Modifier.fillMaxSize(), - sheetPeekHeight = when (sheetHeight) { - SheetHeight.ExtraExpanded -> 256.dp - SheetHeight.Expanded -> 128.dp - SheetHeight.Hidden -> 0.dp - }, - scaffoldState = scaffoldState, - sheetContent = { - AnimatedVisibility(visible = scaffoldState.bottomSheetState.currentValue == SheetValue.Expanded) { - OutlinedTextField( - value = searchQuery, - onValueChange = { searchQuery = it }, - placeholder = { Text(stringResource(R.string.search)) }, - shape = SearchBarDefaults.inputFieldShape, - modifier = Modifier - .fillMaxWidth() - .padding(horizontal = 8.dp, vertical = 8.dp) - ) - } - - LazyRow( - horizontalArrangement = Arrangement.spacedBy(12.dp, Alignment.CenterHorizontally), + BottomSheetScaffold(modifier = Modifier.fillMaxSize(), sheetPeekHeight = when (sheetHeight) { + SheetHeight.ExtraExpanded -> 256.dp + SheetHeight.Expanded -> 128.dp + SheetHeight.Hidden -> 0.dp + }, scaffoldState = scaffoldState, sheetContent = { + AnimatedVisibility(visible = scaffoldState.bottomSheetState.currentValue == SheetValue.Expanded) { + OutlinedTextField( + value = searchQuery, + onValueChange = { searchQuery = it }, + placeholder = { Text(stringResource(R.string.search)) }, + shape = SearchBarDefaults.inputFieldShape, modifier = Modifier .fillMaxWidth() - .padding(horizontal = 16.dp), - ) { - item { - FilterChip( - selected = false, - onClick = { filterShow = true }, - leadingIcon = { - Icon( - painter = painterResource(id = R.drawable.ic_filter), - contentDescription = stringResource(id = R.string.sensors_filter) - ) - }, - trailingIcon = { -// Icon( -// Icons.Filled.ArrowDropDown, -// "", -// tint = MaterialTheme.colorScheme.onBackground -// ) - }, + .padding(horizontal = 8.dp, vertical = 8.dp) + ) + } - label = { Text(text = stringResource(R.string.sensors_filter)) }, - ) - } - item { - FilterChip( - selected = sortingType.sortingType != SortingTypes.DISTANCE, - onClick = { sortingShow = true }, - leadingIcon = { - Icon( - painter = painterResource(id = R.drawable.ic_sort), - contentDescription = stringResource(id = R.string.sensors_sorting) - ) - }, - trailingIcon = { + LazyRow( + horizontalArrangement = Arrangement.spacedBy(12.dp, Alignment.CenterHorizontally), + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp), + ) { + item { + FilterChip( + selected = false, + onClick = { filterShow = true }, + leadingIcon = { + Icon( + painter = painterResource(id = R.drawable.ic_filter), + contentDescription = stringResource(id = R.string.sensors_filter) + ) + }, + trailingIcon = { // Icon( // Icons.Filled.ArrowDropDown, // "", // tint = MaterialTheme.colorScheme.onBackground // ) - }, - label = { - Text( - text = stringResource( - if (sortingType.sortingType == SortingTypes.DISTANCE) R.string.sensors_sorting - else sortingType.stringRes - ).toChipTitle(), + }, + + label = { Text(text = stringResource(R.string.sensors_filter)) }, + ) + } + item { + FilterChip(selected = sortingType.sortingType != SortingTypes.DISTANCE, + onClick = { sortingShow = true }, + leadingIcon = { + Icon( + painter = painterResource(id = R.drawable.ic_sort), + contentDescription = stringResource(id = R.string.sensors_sorting) + ) + }, + trailingIcon = { +// Icon( +// Icons.Filled.ArrowDropDown, +// "", +// tint = MaterialTheme.colorScheme.onBackground +// ) + }, + label = { + Text( + text = stringResource( + if (sortingType.sortingType == SortingTypes.DISTANCE) R.string.sensors_sorting + else sortingType.stringRes + ).toChipTitle(), + ) + }) + } + + item { + FilterChip( + selected = filterMine, + onClick = { filterMine = !filterMine }, + leadingIcon = { + if (filterMine) { + Icon( + Icons.Rounded.Check, contentDescription = "" ) } - ) - } - - item { - FilterChip( - selected = filterMine, - onClick = { filterMine = !filterMine }, - leadingIcon = { - if (filterMine) { - Icon( - Icons.Rounded.Check, - contentDescription = "" - ) - } - }, - label = { Text(text = stringResource(R.string.sensors_mine)) }, - ) - } - } - - LazyColumn( - modifier = Modifier.fillMaxHeight(), - ) { - items(sensorEntities) { sensor -> - SensorItem(sensor) - } + }, + label = { Text(text = stringResource(R.string.sensors_mine)) }, + ) } } - ) { + + LazyColumn( + modifier = Modifier.fillMaxHeight(), + ) { + items(sensorEntities) { sensor -> + SensorItem(sensor) + } + } + }) { Box(modifier = Modifier.fillMaxSize()) { SearchBar( query = searchQuery, @@ -231,18 +210,24 @@ fun SensorsScreen(navController: NavController) { }, onQueryChange = { query -> searchQuery = query }, onSearch = { searchActive = false }, - placeholder = { Text(stringResource(R.string.search)) }, + placeholder = { Text(stringResource(R.string.search_sensors)) }, + trailingIcon = { + IconButton(onClick = { outerNavController.navigate(MainScreenSealed.Settings.route) }) { + Icon( + Icons.Outlined.Settings, + contentDescription = stringResource(R.string.settings) + ) + } + }, modifier = Modifier .fillMaxWidth() .padding( horizontal = if (!searchActive) 8.dp else 0.dp, - vertical = if (!searchActive) 16.dp else 0.dp ) ) {} TileMap( - modifier = Modifier - .fillMaxSize() + modifier = Modifier.fillMaxSize() ) { sheetHeight = SheetHeight.Expanded // TODO придумать, чтобы менялось на SheetHeight.ExtraExpanded после взаимодействия с картой @@ -251,25 +236,18 @@ fun SensorsScreen(navController: NavController) { } } if (sortingShow) { - SortSensorsDialog( - sortingType, - onApply = { - sortingType = it - sortingShow = false - }, - onDismissRequest = { - sortingShow = false - } - ) + SortSensorsDialog(sortingType, onApply = { + sortingType = it + sortingShow = false + }, onDismissRequest = { + sortingShow = false + }) } if (filterShow) { - FilterSensorsDialog( - onApply = { - // TODO применение фильтров - filterShow = false - }, - onDismissRequest = { filterShow = false } - ) + FilterSensorsDialog(onApply = { + // TODO применение фильтров + filterShow = false + }, onDismissRequest = { filterShow = false }) } } diff --git a/app/src/main/java/ru/nm17/narodmon/ui/settings/Settings.kt b/app/src/main/java/ru/nm17/narodmon/ui/settings/Settings.kt new file mode 100644 index 0000000..6ff326e --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/ui/settings/Settings.kt @@ -0,0 +1,12 @@ +package ru.nm17.narodmon.ui.settings + +import androidx.annotation.StringRes +import ru.nm17.narodmon.R + +sealed class Settings(val route: String, @StringRes val resourceId: Int) { + + object Main : Settings("settings_main", R.string.settings) + object AboutApp : Settings("settings_about_app", R.string.about_app) + + object Debug : Settings("settings_debug_menu", R.string.debug_menu) +} \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/ui/settings/SettingsNavigation.kt b/app/src/main/java/ru/nm17/narodmon/ui/settings/SettingsNavigation.kt new file mode 100644 index 0000000..f8cc7a2 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/ui/settings/SettingsNavigation.kt @@ -0,0 +1,39 @@ +package ru.nm17.narodmon.ui.settings + +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun SettingsNavigation() { + val navController = rememberNavController() + Scaffold(topBar = { + TopAppBar(title = { Text(text = navController.currentDestination?.route ?: "") }) + }) { + NavHost( + navController = navController, + startDestination = Settings.Main.route, + modifier = Modifier.padding(it) + ) { + composable(Settings.Main.route) { SettingsScreen(navController) } + composable(Settings.AboutApp.route) { } + composable(Settings.Debug.route) { } + } + + } +} + +@Preview +@Composable +fun PreviewSettingsNavigation() { + SettingsNavigation() +} \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/ui/settings/SettingsScreen.kt b/app/src/main/java/ru/nm17/narodmon/ui/settings/SettingsScreen.kt new file mode 100644 index 0000000..fb75ba0 --- /dev/null +++ b/app/src/main/java/ru/nm17/narodmon/ui/settings/SettingsScreen.kt @@ -0,0 +1,37 @@ +package ru.nm17.narodmon.ui.settings + +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.navigation.NavController +import androidx.navigation.compose.rememberNavController +import ru.nm17.narodmon.R +import ru.nm17.narodmon.ui.elements.SettingsItem +import ru.nm17.narodmon.ui.theme.NarodMonTheme + +@Composable +fun SettingsScreen(navController: NavController) { + LazyColumn(modifier = Modifier.fillMaxSize()) { + item { + SettingsItem(titleId = R.string.debug_menu) { + navController.navigate(Settings.Debug.route) + } + } + item { + SettingsItem(R.string.about_app) { + navController.navigate(Settings.AboutApp.route) + } + } + + } +} + +@Preview(showBackground = true, showSystemUi = false) +@Composable +fun PreviewSettingsScreen() { + NarodMonTheme { + SettingsScreen(rememberNavController()) + } +} \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/ui/theme/Theme.kt b/app/src/main/java/ru/nm17/narodmon/ui/theme/Theme.kt index 666d520..4b5a002 100644 --- a/app/src/main/java/ru/nm17/narodmon/ui/theme/Theme.kt +++ b/app/src/main/java/ru/nm17/narodmon/ui/theme/Theme.kt @@ -10,15 +10,16 @@ import androidx.compose.material3.dynamicLightColorScheme import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable import androidx.compose.runtime.SideEffect +import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalView import androidx.core.view.WindowCompat private val DarkColorScheme = darkColorScheme( - primary = Purple80, - secondary = PurpleGrey80, - tertiary = Pink80 + primary = Purple80, + secondary = PurpleGrey80, + tertiary = Pink80 ) private val LightColorScheme = lightColorScheme( @@ -26,23 +27,23 @@ private val LightColorScheme = lightColorScheme( secondary = PurpleGrey80, tertiary = Pink80 - /* Other default colors to override - background = Color(0xFFFFFBFE), - surface = Color(0xFFFFFBFE), - onPrimary = Color.White, - onSecondary = Color.White, - onTertiary = Color.White, - onBackground = Color(0xFF1C1B1F), - onSurface = Color(0xFF1C1B1F), - */ + /* Other default colors to override +background = Color(0xFFFFFBFE), +surface = Color(0xFFFFFBFE), +onPrimary = Color.White, +onSecondary = Color.White, +onTertiary = Color.White, +onBackground = Color(0xFF1C1B1F), +onSurface = Color(0xFF1C1B1F), +*/ ) @Composable fun NarodMonTheme( - darkTheme: Boolean = isSystemInDarkTheme(), - // Dynamic color is available on Android 12+ - dynamicColor: Boolean = true, - content: @Composable () -> Unit + darkTheme: Boolean = isSystemInDarkTheme(), + // Dynamic color is available on Android 12+ + dynamicColor: Boolean = true, + content: @Composable () -> Unit ) { val colorScheme = when { dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { @@ -57,14 +58,16 @@ fun NarodMonTheme( if (!view.isInEditMode) { SideEffect { val window = (view.context as Activity).window - window.statusBarColor = colorScheme.primary.toArgb() - WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = darkTheme + WindowCompat.setDecorFitsSystemWindows(window, false) + window.statusBarColor = Color.Transparent.toArgb() + + WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = !darkTheme } } MaterialTheme( - colorScheme = colorScheme, - typography = Typography, - content = content + colorScheme = colorScheme, + typography = Typography, + content = content ) } \ No newline at end of file diff --git a/app/src/main/java/ru/nm17/narodmon/ui/webCamsScreen/WebCamsScreen.kt b/app/src/main/java/ru/nm17/narodmon/ui/webCamsScreen/WebCamsScreen.kt index 98298b9..38a4a3a 100644 --- a/app/src/main/java/ru/nm17/narodmon/ui/webCamsScreen/WebCamsScreen.kt +++ b/app/src/main/java/ru/nm17/narodmon/ui/webCamsScreen/WebCamsScreen.kt @@ -1,6 +1,5 @@ package ru.nm17.narodmon.ui.webCamsScreen -import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.runtime.Composable @@ -8,13 +7,13 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.viewinterop.AndroidView +import androidx.navigation.NavController +import androidx.navigation.compose.rememberNavController import ru.nm17.narodmon.ui.theme.NarodMonTheme @Composable -fun WebCamsScreen() { +fun WebCamsScreen(navController: NavController) { var webCams by remember { mutableStateOf( @@ -58,6 +57,6 @@ fun WebCamsScreen() { @Composable fun PreviewWebCams() { NarodMonTheme { - WebCamsScreen() + WebCamsScreen(rememberNavController()) } } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml new file mode 100644 index 0000000..3cdad40 --- /dev/null +++ b/app/src/main/res/drawable/ic_home.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_message.xml b/app/src/main/res/drawable/ic_message.xml new file mode 100644 index 0000000..dfb81a6 --- /dev/null +++ b/app/src/main/res/drawable/ic_message.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_settings.xml b/app/src/main/res/drawable/ic_settings.xml new file mode 100644 index 0000000..c624d19 --- /dev/null +++ b/app/src/main/res/drawable/ic_settings.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_webcam.xml b/app/src/main/res/drawable/ic_webcam.xml new file mode 100644 index 0000000..a6fd65e --- /dev/null +++ b/app/src/main/res/drawable/ic_webcam.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ac3adf6..9e74ffa 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -52,4 +52,10 @@ Применить От дальних к ближним Отменить + Веб-камеры + Сообщения + Настройки + Поиск датчиков + О приложении + Debug-меню \ No newline at end of file