FilePicker and basic zip handling

This commit is contained in:
Alexey 2025-08-06 13:03:54 +03:00
commit ea08a1317a
6 changed files with 59 additions and 11 deletions

View file

@ -29,11 +29,8 @@ android {
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "11"
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
buildFeatures {
compose = true
@ -51,6 +48,8 @@ dependencies {
ksp("androidx.room:room-compiler:$room_version")
implementation("io.github.chochanaresh:filepicker:0.6.0")
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.activity.compose)

View file

@ -92,8 +92,8 @@ fun Main(vm: TileViewModel = viewModel()) {
Box(modifier = Modifier.safeDrawingPadding()
.align(Alignment.CenterEnd)
.rotate(-90F)
.size(240.dp, 40.dp)
.offset(0.dp, 80.dp)
.size(200.dp, 40.dp)
.offset(0.dp, 60.dp)
) {
Slider(
value = sliderValue.floatValue,

View file

@ -1,18 +1,66 @@
package com.mirenkov.ktheightmap
import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.safeDrawingPadding
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import com.mirenkov.ktheightmap.ui.theme.KtHeightMapTheme
import com.nareshchocha.filepickerlibrary.FilePickerResultContracts
import com.nareshchocha.filepickerlibrary.models.PickerData
import com.nareshchocha.filepickerlibrary.models.PopUpConfig
import java.io.FileInputStream
import java.util.zip.ZipEntry
import java.util.zip.ZipInputStream
class SettingsActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val launcher = registerForActivityResult(FilePickerResultContracts.PickDocumentFile()) { result ->
if (result.errorMessage != null) {
Log.e("Picker", result.errorMessage ?: "")
} else {
val filePath = result.selectedFilePath
filePath?.let {
if (!it.endsWith(".zip"))
return@let
ZipInputStream(FileInputStream(it)).use { zipInputStream ->
var entry = zipInputStream.nextEntry
while (entry != null) {
with(entry.name) {
if (count { it == '/' } == 4 && endsWith(".jpg"))
processEntry(entry)
}
entry = zipInputStream.nextEntry
}
}
}
}
}
enableEdgeToEdge()
setContent {
KtHeightMapTheme {
Column(Modifier.fillMaxSize()
.safeDrawingPadding()) {
Button(onClick = {
launcher.launch(null)
}) { Text(text = "Load database") }
}
}
}
}
}
}
fun processEntry(entry: ZipEntry) {
Log.i(TAG, entry.name)
}

View file

@ -1,7 +1,8 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.kotlin.android) apply false
alias(libs.plugins.kotlin.compose) apply false
id("com.google.devtools.ksp") version "2.0.21-1.0.27" apply false
id("com.google.devtools.ksp") version "2.2.0-2.0.2" apply false
}

View file

@ -1,6 +1,6 @@
[versions]
agp = "8.10.1"
kotlin = "2.0.21"
agp = "8.12.0"
kotlin = "2.2.0"
coreKtx = "1.16.0"
junit = "4.13.2"
junitVersion = "1.2.1"

View file

@ -1,6 +1,6 @@
#Thu Jul 24 13:19:06 MSK 2025
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists