From 182f0b29b0aaaef51f578d76eb15fbcdfbee5b57 Mon Sep 17 00:00:00 2001 From: 2ndbeam <2ndbeam@disroot.org> Date: Tue, 30 Sep 2025 12:34:04 +0300 Subject: [PATCH] automated scale range setting --- app/src/main/java/com/mirenkov/ktheightmap/MainActivity.kt | 4 +++- app/src/main/java/com/mirenkov/ktheightmap/TileDao.kt | 3 +++ app/src/main/java/com/mirenkov/ktheightmap/TileRepository.kt | 4 ++++ app/src/main/java/com/mirenkov/ktheightmap/TileViewModel.kt | 5 ++++- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/mirenkov/ktheightmap/MainActivity.kt b/app/src/main/java/com/mirenkov/ktheightmap/MainActivity.kt index ce22994..3db792a 100644 --- a/app/src/main/java/com/mirenkov/ktheightmap/MainActivity.kt +++ b/app/src/main/java/com/mirenkov/ktheightmap/MainActivity.kt @@ -3,6 +3,7 @@ package com.mirenkov.ktheightmap import android.app.Application import android.content.Intent import android.os.Bundle +import android.util.Log import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge @@ -84,6 +85,7 @@ class MainActivity : ComponentActivity() { @Composable fun Main(vm: TileViewModel = viewModel()) { var scale by rememberSaveable { vm.scale } + val maxScale by rememberSaveable { vm.maxLevel } val coroutineScope = rememberCoroutineScope() val tileContainer = TileContainer(vm, coroutineScope) KtHeightMapTheme { @@ -111,7 +113,7 @@ fun Main(vm: TileViewModel = viewModel()) { Slider( value = scale, onValueChange = { scale = it }, - valueRange = 1F..14F, + valueRange = 2F..maxScale.toFloat(), modifier = Modifier.align(Alignment.CenterStart) ) } diff --git a/app/src/main/java/com/mirenkov/ktheightmap/TileDao.kt b/app/src/main/java/com/mirenkov/ktheightmap/TileDao.kt index 60f38f2..cd7abfb 100644 --- a/app/src/main/java/com/mirenkov/ktheightmap/TileDao.kt +++ b/app/src/main/java/com/mirenkov/ktheightmap/TileDao.kt @@ -14,4 +14,7 @@ interface TileDao { @Query("delete from tiles") fun clearTiles() + + @Query("select max(level) from tiles") + fun maxLevel(): Int? } \ No newline at end of file diff --git a/app/src/main/java/com/mirenkov/ktheightmap/TileRepository.kt b/app/src/main/java/com/mirenkov/ktheightmap/TileRepository.kt index 5b07937..a5eaf79 100644 --- a/app/src/main/java/com/mirenkov/ktheightmap/TileRepository.kt +++ b/app/src/main/java/com/mirenkov/ktheightmap/TileRepository.kt @@ -21,4 +21,8 @@ class TileRepository(private val tileDao: TileDao) { fun clearTiles() { coroutineScope.launch(Dispatchers.IO) { tileDao.clearTiles() } } + + fun getMaxLevel(): Int { + return coroutineScope.future(Dispatchers.IO){ tileDao.maxLevel() }.join() ?: 1 + } } \ No newline at end of file diff --git a/app/src/main/java/com/mirenkov/ktheightmap/TileViewModel.kt b/app/src/main/java/com/mirenkov/ktheightmap/TileViewModel.kt index e915479..971e59b 100644 --- a/app/src/main/java/com/mirenkov/ktheightmap/TileViewModel.kt +++ b/app/src/main/java/com/mirenkov/ktheightmap/TileViewModel.kt @@ -2,6 +2,7 @@ package com.mirenkov.ktheightmap import android.app.Application import androidx.compose.runtime.mutableFloatStateOf +import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.ui.text.input.TextFieldValue import androidx.lifecycle.ViewModel @@ -17,7 +18,8 @@ class TileViewModel(application: Application): ViewModel() { val mapOffsetX = mutableFloatStateOf(-646.65625F) val mapOffsetY = mutableFloatStateOf(-1157.2814F) - val scale = mutableFloatStateOf(1F) + val scale = mutableFloatStateOf(2F) + var maxLevel = mutableIntStateOf(1) var halvedOffsetX: Float? = null var halvedOffsetY: Float? = null @@ -29,5 +31,6 @@ class TileViewModel(application: Application): ViewModel() { val tileDb = TileDB.getInstance(application) val tileDao = tileDb.tileDao() repository = TileRepository(tileDao) + maxLevel.intValue = repository.getMaxLevel() } } \ No newline at end of file