93 Commits

Author SHA1 Message Date
d262331d1b Update .github/workflows/build.yml 2026-05-23 14:45:03 +02:00
7440e85987 Update app/build.gradle 2026-05-23 14:42:40 +02:00
2351512af8 Update app/build.gradle 2026-05-23 14:42:30 +02:00
ae2cde3545 Update app/build.gradle 2026-05-23 14:06:23 +02:00
soraefir
1000319b8f Bump java version workflow to 21 2026-05-23 11:45:32 +02:00
soraefir
8c4c5e16e0 Fix build error with backuprules 2026-05-23 11:42:03 +02:00
soraefir
0ce1e604a8 Update node deps 2026-05-23 11:39:04 +02:00
soraefir
757783534c Fix build, errors and spring cleaning 2026-05-23 11:35:02 +02:00
soraefir
3eba48ea7d WIP
# Conflicts:
#	build.gradle
#	gradle/wrapper/gradle-wrapper.properties
2026-05-23 10:53:36 +02:00
bot
cf886b9581 Merge pull request 'Lock file maintenance' (#501) from renovate/lock-file-maintenance into main 2026-05-23 04:01:46 +02:00
Renovate Bot
f2ff152c07 Lock file maintenance 2026-05-23 02:01:43 +00:00
bot
19b152db8c Merge pull request 'Update dependency mapshaper to v0.7.19' (#500) from renovate/mapshaper-0.x-lockfile into main 2026-05-21 04:01:48 +02:00
Renovate Bot
18dff78e5b Update dependency mapshaper to v0.7.19 2026-05-21 02:01:40 +00:00
bot
9b16a30c9a Merge pull request 'Update dependency androidx.compose.ui:ui-tooling to v1.11.2' (#499) from renovate/androidx.compose.ui-ui-tooling-1.x into main 2026-05-21 04:01:25 +02:00
Renovate Bot
62bf040093 Update dependency androidx.compose.ui:ui-tooling to v1.11.2 2026-05-21 02:01:22 +00:00
bot
60bafc6798 Merge pull request 'Update dependency androidx.compose.material:material to v1.11.2' (#498) from renovate/androidx.compose.material-material-1.x into main 2026-05-20 04:01:24 +02:00
bot
bf206efc1f Merge pull request 'Update dependency androidx.compose:compose-bom to v2026.05.01' (#497) from renovate/androidx.compose-compose-bom-2026.x into main 2026-05-20 04:01:22 +02:00
Renovate Bot
c42f72a856 Update dependency androidx.compose.material:material to v1.11.2 2026-05-20 02:01:21 +00:00
Renovate Bot
c6a890aee3 Update dependency androidx.compose:compose-bom to v2026.05.01 2026-05-20 02:01:19 +00:00
bot
59450cf480 Merge pull request 'Update dependency mapshaper to v0.7.18' (#496) from renovate/mapshaper-0.x-lockfile into main 2026-05-19 04:01:44 +02:00
Renovate Bot
7f068ea10f Update dependency mapshaper to v0.7.18 2026-05-19 02:01:35 +00:00
bot
f9763d7b53 Merge pull request 'Lock file maintenance' (#495) from renovate/lock-file-maintenance into main 2026-05-16 04:02:06 +02:00
Renovate Bot
f2e9f44dee Lock file maintenance 2026-05-16 02:02:05 +00:00
bot
1039e220fb Merge pull request 'Update dependency mapshaper to v0.7.17' (#494) from renovate/mapshaper-0.x-lockfile into main 2026-05-16 04:01:45 +02:00
Renovate Bot
a810345e2b Update dependency mapshaper to v0.7.17 2026-05-16 02:01:36 +00:00
bot
4dc5213e6f Merge pull request 'Update dependency com.google.android.material:material to v1.14.0' (#493) from renovate/com.google.android.material-material-1.x into main 2026-05-14 04:02:04 +02:00
bot
5f313a20d5 Merge pull request 'Update dependency mapshaper to v0.7.16' (#492) from renovate/mapshaper-0.x-lockfile into main 2026-05-14 04:01:59 +02:00
Renovate Bot
01eae6daf9 Update dependency com.google.android.material:material to v1.14.0 2026-05-14 02:01:58 +00:00
Renovate Bot
7ae7ebb9b3 Update dependency mapshaper to v0.7.16 2026-05-14 02:01:50 +00:00
bot
a4e64e43f3 Merge pull request 'Update dependency mapshaper to v0.7.15' (#491) from renovate/mapshaper-0.x-lockfile into main 2026-05-13 04:02:32 +02:00
Renovate Bot
a1e73f5844 Update dependency mapshaper to v0.7.15 2026-05-13 02:02:24 +00:00
bot
a6189c77ef Merge pull request 'Update dependency gradle to v9.5.1' (#490) from renovate/gradle-9.x into main 2026-05-13 04:02:08 +02:00
Renovate Bot
1b36ae84d7 Update dependency gradle to v9.5.1 2026-05-13 02:01:54 +00:00
bot
c609cccdc6 Merge pull request 'Update plugin com.mikepenz.aboutlibraries.plugin to v14.2.0' (#489) from renovate/com.mikepenz.aboutlibraries.plugin-14.x into main 2026-05-11 04:02:16 +02:00
bot
1360c5eeef Merge pull request 'Update dependency mapshaper to v0.7.13' (#488) from renovate/mapshaper-0.x-lockfile into main 2026-05-11 04:02:10 +02:00
Renovate Bot
d087eddc29 Update plugin com.mikepenz.aboutlibraries.plugin to v14.2.0 2026-05-11 02:02:09 +00:00
Renovate Bot
1910a8672b Update dependency mapshaper to v0.7.13 2026-05-11 02:02:00 +00:00
bot
787175ee37 Merge pull request 'Update dependency com.mikepenz:aboutlibraries-core to v14.2.0' (#487) from renovate/com.mikepenz-aboutlibraries-core-14.x into main 2026-05-10 04:02:13 +02:00
Renovate Bot
90285d5efa Update dependency com.mikepenz:aboutlibraries-core to v14.2.0 2026-05-10 02:02:09 +00:00
bot
66b06d608d Merge pull request 'Update dependency com.mikepenz:aboutlibraries-compose-m3 to v14.2.0' (#486) from renovate/com.mikepenz-aboutlibraries-compose-m3-14.x into main 2026-05-10 04:01:53 +02:00
Renovate Bot
cabaa02f59 Update dependency com.mikepenz:aboutlibraries-compose-m3 to v14.2.0 2026-05-10 02:01:45 +00:00
bot
ee60dffa17 Merge pull request 'Update dependency com.mikepenz:aboutlibraries to v14.2.0' (#485) from renovate/com.mikepenz-aboutlibraries-14.x into main 2026-05-09 04:01:57 +02:00
Renovate Bot
98a2558ad2 Update dependency com.mikepenz:aboutlibraries to v14.2.0 2026-05-09 02:01:51 +00:00
bot
d820c0e5fa Merge pull request 'Update dependency mapshaper to v0.7.12' (#484) from renovate/mapshaper-0.x-lockfile into main 2026-05-09 04:01:42 +02:00
Renovate Bot
61bba0c099 Update dependency mapshaper to v0.7.12 2026-05-09 02:01:34 +00:00
bot
c58f1359cd Merge pull request 'Update dependency androidx.compose:compose-bom to v2026.05.00' (#483) from renovate/androidx.compose-compose-bom-2026.x into main 2026-05-08 04:01:49 +02:00
bot
942e3a6235 Merge pull request 'Update dependency mapshaper to v0.7.10' (#482) from renovate/mapshaper-0.x-lockfile into main 2026-05-08 04:01:45 +02:00
Renovate Bot
d43535f772 Update dependency androidx.compose:compose-bom to v2026.05.00 2026-05-08 02:01:44 +00:00
Renovate Bot
e12c7194e6 Update dependency mapshaper to v0.7.10 2026-05-08 02:01:36 +00:00
bot
47277d3609 Merge pull request 'Update plugin com.android.library to v9.2.1' (#479) from renovate/com.android.library-9.x into main 2026-05-07 04:01:42 +02:00
bot
2a8bb6d1b4 Merge pull request 'Update dependency androidx.compose.ui:ui-tooling to v1.11.1' (#481) from renovate/androidx.compose.ui-ui-tooling-1.x into main 2026-05-07 04:01:41 +02:00
Renovate Bot
7ad2eff27b Update plugin com.android.library to v9.2.1 2026-05-07 02:01:37 +00:00
bot
b52c16c242 Merge pull request 'Update dependency androidx.compose.material:material to v1.11.1' (#480) from renovate/androidx.compose.material-material-1.x into main 2026-05-07 04:01:36 +02:00
Renovate Bot
caeb0f69a5 Update dependency androidx.compose.ui:ui-tooling to v1.11.1 2026-05-07 02:01:35 +00:00
Renovate Bot
74b4fe4ac4 Update dependency androidx.compose.material:material to v1.11.1 2026-05-07 02:01:32 +00:00
bot
504ae87174 Merge pull request 'Update plugin com.android.application to v9.2.1' (#478) from renovate/com.android.application-9.x into main 2026-05-06 10:00:18 +02:00
Renovate Bot
06bba3ceaf Update plugin com.android.application to v9.2.1 2026-05-06 08:00:13 +00:00
bot
70defaf916 Merge pull request 'Update dependency mapshaper to v0.7.9' (#477) from renovate/mapshaper-0.x-lockfile into main 2026-05-05 04:02:04 +02:00
Renovate Bot
dfcebe327f Update dependency mapshaper to v0.7.9 2026-05-05 02:01:54 +00:00
bot
3b27613e99 Merge pull request 'Update dependency com.mikepenz:aboutlibraries-core to v14.1.0' (#476) from renovate/com.mikepenz-aboutlibraries-core-14.x into main 2026-05-04 04:01:25 +02:00
Renovate Bot
bff39001a4 Update dependency com.mikepenz:aboutlibraries-core to v14.1.0 2026-05-04 02:01:17 +00:00
bot
e77c8dc49e Merge pull request 'Update dependency com.mikepenz:aboutlibraries-compose-m3 to v14.1.0' (#475) from renovate/com.mikepenz-aboutlibraries-compose-m3-14.x into main 2026-05-03 04:02:23 +02:00
Renovate Bot
c4da784b95 Update dependency com.mikepenz:aboutlibraries-compose-m3 to v14.1.0 2026-05-03 02:02:16 +00:00
bot
cbf1871cec Merge pull request 'Update dependency mapshaper to v0.7.8' (#474) from renovate/mapshaper-0.x-lockfile into main 2026-05-03 04:02:02 +02:00
Renovate Bot
9ed40a67bc Update dependency mapshaper to v0.7.8 2026-05-03 02:01:52 +00:00
bot
8e699d0b22 Merge pull request 'Update dependency com.mikepenz:aboutlibraries to v14.1.0' (#473) from renovate/com.mikepenz-aboutlibraries-14.x into main 2026-05-02 04:01:52 +02:00
Renovate Bot
9424517eb4 Update dependency com.mikepenz:aboutlibraries to v14.1.0 2026-05-02 02:01:47 +00:00
bot
acd6753112 Merge pull request 'Update dependency mapshaper to v0.7.7' (#472) from renovate/mapshaper-0.x-lockfile into main 2026-05-02 04:01:39 +02:00
Renovate Bot
6fa02d117b Update dependency mapshaper to v0.7.7 2026-05-02 02:01:31 +00:00
bot
f83ff7aca1 Merge pull request 'Update dependency mapshaper to v0.7.6' (#471) from renovate/mapshaper-0.x-lockfile into main 2026-05-01 04:01:52 +02:00
Renovate Bot
89bd79b542 Update dependency mapshaper to v0.7.6 2026-05-01 02:01:43 +00:00
bot
4db4757701 Merge pull request 'Update dependency jsdom to v29.1.1' (#470) from renovate/jsdom-29.x-lockfile into main 2026-05-01 04:01:37 +02:00
Renovate Bot
f57f29cda6 Update dependency jsdom to v29.1.1 2026-05-01 02:01:28 +00:00
bot
51ff021d37 Merge pull request 'Update dependency mapshaper to v0.7.5' (#469) from renovate/mapshaper-0.x-lockfile into main 2026-04-30 04:01:45 +02:00
Renovate Bot
c6f9bf7fc5 Update dependency mapshaper to v0.7.5 2026-04-30 02:01:35 +00:00
bot
9385442542 Merge pull request 'Update dependency gradle to v9.5.0' (#468) from renovate/gradle-9.x into main 2026-04-29 04:02:22 +02:00
Renovate Bot
19a185a6c3 Update dependency gradle to v9.5.0 2026-04-29 02:02:12 +00:00
bot
725de6c7b3 Merge pull request 'Update dependency mapshaper to v0.7.4' (#467) from renovate/mapshaper-0.x-lockfile into main 2026-04-29 04:01:39 +02:00
Renovate Bot
5228ac2508 Update dependency mapshaper to v0.7.4 2026-04-29 02:01:31 +00:00
bot
80d6693ef3 Merge pull request 'Update dependency jsdom to v29.1.0' (#466) from renovate/jsdom-29.x-lockfile into main 2026-04-28 04:01:42 +02:00
Renovate Bot
9d3ce7410a Update dependency jsdom to v29.1.0 2026-04-28 02:01:36 +00:00
bot
989fd1cea0 Merge pull request 'Update dependency androidx.compose.material:material to v1.11.0' (#464) from renovate/androidx.compose.material-material-1.x into main 2026-04-27 04:01:33 +02:00
bot
d3b11fbb02 Merge pull request 'Update dependency androidx.compose.ui:ui-tooling to v1.11.0' (#465) from renovate/androidx.compose.ui-ui-tooling-1.x into main 2026-04-27 04:01:30 +02:00
Renovate Bot
9a8c13e148 Update dependency androidx.compose.ui:ui-tooling to v1.11.0 2026-04-27 02:01:28 +00:00
Renovate Bot
4f65a86302 Update dependency androidx.compose.material:material to v1.11.0 2026-04-27 02:01:25 +00:00
bot
8c559f73f7 Merge pull request 'Update dependency @turf/turf to v7.3.5' (#453) from renovate/turf-turf-7.x-lockfile into main 2026-04-26 04:02:09 +02:00
Renovate Bot
1e77399412 Update dependency @turf/turf to v7.3.5 2026-04-26 02:02:08 +00:00
bot
6f2d9cacc4 Merge pull request 'Update dependency mapshaper to v0.7.3' (#463) from renovate/mapshaper-0.x-lockfile into main 2026-04-26 04:01:55 +02:00
Renovate Bot
f6209562ff Update dependency mapshaper to v0.7.3 2026-04-26 02:01:48 +00:00
bot
9e692dae6a Merge pull request 'Update plugin org.jetbrains.kotlin.plugin.serialization to v2.3.21' (#462) from renovate/org.jetbrains.kotlin.plugin.serialization-2.x into main 2026-04-25 04:10:56 +02:00
Renovate Bot
16458b014f Update plugin org.jetbrains.kotlin.plugin.serialization to v2.3.21 2026-04-25 02:03:25 +00:00
bot
af262b0ad2 Merge pull request 'Update dependency mapshaper to v0.7.1' (#461) from renovate/mapshaper-0.x-lockfile into main 2026-04-25 04:02:56 +02:00
Renovate Bot
5a81ae5170 Update dependency mapshaper to v0.7.1 2026-04-25 02:02:46 +00:00
20 changed files with 4685 additions and 3866 deletions

View File

@@ -24,6 +24,8 @@ jobs:
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: set up secrets
run: |
@@ -42,14 +44,16 @@ jobs:
- name: set up JDK
uses: actions/setup-java@v5
with:
java-version: 17
java-version: 21
distribution: "temurin"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6
- name: Build APK
run: ./gradlew assembleSignedRelease
run: |
VERSION_CODE=$(git rev-list --count HEAD)
./gradlew assembleSignedRelease -PVERSION_CODE=$VERSION_CODE
- name: Release
uses: softprops/action-gh-release@v3

View File

@@ -1,27 +1,25 @@
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'org.jetbrains.kotlin.plugin.serialization' version '2.3.20'
id 'org.jetbrains.kotlin.plugin.serialization' version '2.3.21'
id 'org.jetbrains.kotlin.plugin.compose' version '2.3.21'
id 'com.mikepenz.aboutlibraries.plugin' version '14.0.1'
id 'com.mikepenz.aboutlibraries.plugin' version '14.2.0'
}
android {
namespace 'net.helcel.beans'
compileSdk 36
compileSdk = 37
defaultConfig {
buildConfigField("String", "APP_NAME", "\"Beans\"")
manifestPlaceholders["APP_NAME"] = "Beans"
applicationId 'net.helcel.beans'
minSdk 28
targetSdk 36
versionCode 4
versionName "1.1a"
minSdk = 28
targetSdk = 37
versionName "1.2b"
versionCode project.hasProperty('VERSION_CODE') ? project.property('VERSION_CODE').toInteger() : 1
}
signingConfigs {
create("release") {
register("release") {
try {
def keystorePropertiesFile = rootProject.file("app/keystore.properties")
def keystoreProperties = new Properties()
@@ -36,20 +34,18 @@ android {
}
}
}
buildTypes {
debug {
debuggable true
}
release {
minifyEnabled true
shrinkResources false
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
signedRelease {
minifyEnabled true
shrinkResources false
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig = signingConfigs.getByName("release")
}
@@ -78,10 +74,6 @@ android {
kotlinCompilerExtensionVersion = "2.2.20"
}
kotlin {
jvmToolchain(21)
}
lint {
disable 'UsingMaterialAndMaterial3Libraries'
}
@@ -91,12 +83,11 @@ aboutLibraries {
library {
exclusionPatterns = [~"androidx.*", ~"com.google.android.*", ~"org.jetbrains.*"]
}
excludeFields = ["generated"]
}
dependencies {
implementation 'androidx.compose.material3:material3:1.4.0'
implementation "androidx.compose.material:material:1.10.6"
implementation "androidx.compose.material:material:1.11.2"
implementation 'androidx.compose.material:material-icons-extended:1.7.8'
implementation 'androidx.navigation:navigation-compose:2.9.8'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.1.5'
@@ -108,17 +99,17 @@ dependencies {
implementation "androidx.activity:activity-ktx:1.13.0"
implementation 'androidx.compose.ui:ui-tooling-preview'
implementation 'com.google.android.material:material:1.13.0'
implementation 'com.google.android.material:material:1.14.0'
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.11.0'
implementation 'com.caverock:androidsvg-aar:1.4'
implementation 'com.github.chrisbanes:PhotoView:2.3.0'
implementation 'com.mikepenz:aboutlibraries:14.0.1'
implementation 'com.mikepenz:aboutlibraries-compose-m3:14.0.1'
implementation 'com.mikepenz:aboutlibraries-core:14.0.1'
implementation 'com.mikepenz:aboutlibraries:14.2.0'
implementation 'com.mikepenz:aboutlibraries-compose-m3:14.2.0'
implementation 'com.mikepenz:aboutlibraries-core:14.2.0'
implementation platform('androidx.compose:compose-bom:2026.04.01')
debugImplementation 'androidx.compose.ui:ui-tooling:1.10.6'
implementation platform('androidx.compose:compose-bom:2026.05.01')
debugImplementation 'androidx.compose.ui:ui-tooling:1.11.2'
}

View File

@@ -8,8 +8,7 @@
android:hardwareAccelerated="false"
android:icon="@mipmap/ic_launcher_round"
android:label="${APP_NAME}"
android:supportsRtl="true"
tools:replace="android:allowBackup">
android:supportsRtl="true">
<activity
android:name=".activity.MainScreen"
android:exported="true">

View File

@@ -16,7 +16,6 @@ import androidx.compose.material.Scaffold
import androidx.compose.material.Text
import androidx.compose.material.TopAppBar
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.DateRange
import androidx.compose.material.icons.filled.Edit
import androidx.compose.material.icons.filled.Percent
import androidx.compose.material.icons.filled.Settings

View File

@@ -152,11 +152,17 @@ fun SettingsMainScreen(onExit: ()->Unit = {}) {
fun SettingsScreen(navController: NavHostController = settingsNav()) {
val context = LocalContext.current
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
val keyTheme = stringResource(R.string.key_theme)
val defaultTheme = stringResource(R.string.system)
val keyProjection = stringResource(R.string.key_projection)
val keyGroup = stringResource(R.string.key_group)
val offString = stringResource(R.string.off)
var showEdit by remember { mutableStateOf(false) }
var theme by remember { mutableStateOf(prefs.getString(context.getString(R.string.key_theme), context.getString(R.string.system))!!) }
var projection by remember { mutableStateOf(prefs.getString(context.getString(R.string.key_projection), "default")!!) }
var groups by remember { mutableStateOf(prefs.getString(context.getString(R.string.key_group), context.getString(R.string.off))!!) }
var theme by remember { mutableStateOf(prefs.getString(keyTheme, defaultTheme)!!) }
var projection by remember { mutableStateOf(prefs.getString(keyProjection, "default")!!) }
var groups by remember { mutableStateOf(prefs.getString(keyGroup,offString)!!) }
if(showEdit)
EditPlaceDialog(true) {
@@ -179,7 +185,7 @@ fun SettingsScreen(navController: NavHostController = settingsNav()) {
)
MultiPreference(arrayOf(stringResource(R.string.system),stringResource(R.string.light),stringResource(R.string.dark)), theme) { newTheme ->
theme = newTheme
prefs.edit { putString(context.getString(R.string.key_theme), newTheme) }
prefs.edit { putString(keyTheme, newTheme) }
}
HorizontalDivider()
}
@@ -192,7 +198,7 @@ fun SettingsScreen(navController: NavHostController = settingsNav()) {
)
MultiPreference(arrayOf(stringResource(R.string.mercator), stringResource(R.string.azimuthalequidistant)), projection) { newProj ->
projection = newProj
prefs.edit { putString(context.getString(R.string.key_projection), newProj) }
prefs.edit { putString(keyProjection, newProj) }
Settings.refreshProjection()
}
HorizontalDivider()
@@ -219,11 +225,11 @@ fun SettingsScreen(navController: NavHostController = settingsNav()) {
arrayOf(stringResource(R.string.on), stringResource(R.string.off)),
groups
) { key ->
if (key == context.getString(R.string.off)) {
if (key == offString) {
showDialog=true
}
groups = key
prefs.edit { putString(context.getString(R.string.key_group), key) }
prefs.edit { putString(keyGroup, key) }
}
HorizontalDivider()
}
@@ -283,9 +289,13 @@ fun SettingsScreen(navController: NavHostController = settingsNav()) {
@Composable
fun RegionalScreen() {
val context = LocalContext.current
val keyRegional = stringResource(R.string.key_regional)
val offString = stringResource(R.string.off)
val onString = stringResource(R.string.on)
val prefs = PreferenceManager.getDefaultSharedPreferences(context)
var selected by remember { mutableStateOf(prefs.getString(context.getString(R.string.key_regional),context.getString(R.string.off))!!)}
var regional by remember{ mutableStateOf(prefs.getString(context.getString(R.string.key_regional), context.getString(R.string.off))!!)}
var selected by remember { mutableStateOf(prefs.getString(keyRegional, offString)!!)}
var regional by remember{ mutableStateOf(prefs.getString(keyRegional, offString)!!)}
var showDialog by remember{mutableStateOf(false)}
var showLoad by remember{mutableStateOf(false)}
@@ -305,7 +315,7 @@ fun RegionalScreen() {
regional= selected
prefs.edit {
putString(
context.getString(R.string.key_regional),
keyRegional,
regional
)
}
@@ -332,12 +342,12 @@ fun RegionalScreen() {
val scope = rememberCoroutineScope()
MultiPreference(arrayOf(stringResource(R.string.on),stringResource(R.string.off)),regional) { key ->
when (key) {
context.getString(R.string.off) -> { showDialog=true
offString -> { showDialog=true
selected=key
}
context.getString(R.string.on) -> {
onString -> {
regional = key
prefs.edit { putString(context.getString(R.string.key_regional), key) }
prefs.edit { putString(keyRegional, key) }
showLoad=true
scope.launch {
withContext(Dispatchers.IO) {
@@ -354,7 +364,7 @@ fun RegionalScreen() {
@Composable
fun MultiPreference(list: Array<String>, selected: String, onSelected: (String) -> Unit) {
Column(Modifier.padding(2.dp)) {
list.map { value ->
list.forEach { value ->
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier

View File

@@ -115,7 +115,6 @@ fun StatsList(activeMode: LocType, countMode: Boolean) {
@Composable
fun StatsRow(group: Groups.Group, activeMode: LocType, countMode: Boolean) {
val context = LocalContext.current
val visited = remember(group, activeMode) {
Data.visits.getVisitedByValue(group.key)
@@ -124,18 +123,18 @@ fun StatsRow(group: Groups.Group, activeMode: LocType, countMode: Boolean) {
val count = when (activeMode) {
LocType.WORLD -> World.WWW.children.filter { it.code in visited }.size
LocType.COUNTRY -> World.WWW.children.flatMap { it.children.filter { c -> c.code in visited } }.size
LocType.STATE -> World.WWW.children.flatMap { itc->itc.children.flatMap { it.children.filter { it.code in visited } } }.size
LocType.STATE -> World.WWW.children.flatMap { a->a.children.flatMap { b->b.children.filter { c->c.code in visited } } }.size
else -> 0
}
val area = when (activeMode) {
LocType.WORLD -> World.WWW.children.filter { it.code in visited }.sumOf { it.area }
LocType.COUNTRY -> World.WWW.children.flatMap { it.children.filter { c -> c.code in visited } }.sumOf { it.area }
LocType.STATE -> World.WWW.children.flatMap { it.children.flatMap { it.children.filter { it.code in visited } } }.sumOf { it.area }
LocType.STATE -> World.WWW.children.flatMap { a->a.children.flatMap { b->b.children.filter { c->c.code in visited } } }.sumOf { it.area }
else -> 0
}
val displayValue = if (countMode) count.toString() else context.getString(R.string.number_with_unit, area, "km²")
val displayValue = if (countMode) count.toString() else stringResource(R.string.number_with_unit, area, "km²")
val backgroundColor = group.color.color
val textColor = getContrastColor(backgroundColor)

View File

@@ -58,7 +58,7 @@ fun syncVisited(loc: GeoLoc?=World.WWW){
loc?.children?.forEach { tt ->
tt.children.forEach {itc->
if(Data.visits.getVisited(itc) in listOf(AUTO_GROUP,NO_GROUP)) {
if(itc.children.any { itcc -> Data.visits.getVisited(itcc) != NO_GROUP })
if(itc.children.any { c -> Data.visits.getVisited(c) != NO_GROUP })
Data.visits.setVisited(itc, AUTO_GROUP)
else
Data.visits.setVisited(itc, NO_GROUP)
@@ -126,7 +126,6 @@ fun EditPlaceScreen(loc: GeoLoc, onExit:()->Unit={}) {
}
}
LazyColumn(
modifier = Modifier.fillMaxSize()
) {

View File

@@ -7,7 +7,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import com.mikepenz.aboutlibraries.ui.compose.DefaultChipColors
import com.mikepenz.aboutlibraries.ui.compose.DefaultLibraryColors
import com.mikepenz.aboutlibraries.ui.compose.android.rememberLibraries
import com.mikepenz.aboutlibraries.ui.compose.android.produceLibraries
import com.mikepenz.aboutlibraries.ui.compose.m3.LibrariesContainer
import net.helcel.beans.R
import net.helcel.beans.activity.SysTheme
@@ -16,14 +16,14 @@ import net.helcel.beans.activity.SysTheme
@Preview
@Composable
fun LicenseScreen() {
val libraries = rememberLibraries(R.raw.aboutlibraries)
val libraries = produceLibraries(R.raw.aboutlibraries)
SysTheme {
LibrariesContainer(
libraries = libraries.value,
modifier = Modifier.fillMaxSize(),
colors = DefaultLibraryColors(
backgroundColor = MaterialTheme.colors.background,
contentColor = MaterialTheme.colors.onBackground,
libraryBackgroundColor = MaterialTheme.colors.background,
libraryContentColor = MaterialTheme.colors.onBackground,
licenseChipColors = DefaultChipColors(
containerColor = MaterialTheme.colors.primary,
contentColor = MaterialTheme.colors.onPrimary,
@@ -37,6 +37,8 @@ fun LicenseScreen() {
contentColor = MaterialTheme.colors.onSecondary,
),
dialogConfirmButtonColor = MaterialTheme.colors.primary,
dialogBackgroundColor = MaterialTheme.colors.onPrimary,
dialogContentColor = MaterialTheme.colors.primary,
)
)
}

View File

@@ -2,6 +2,7 @@ package net.helcel.beans.countries
import net.helcel.beans.countries.Country.*
@Suppress("RedundantSuppression", "SpellCheckingInspection", "unused")
enum class Group(override val fullName: String, override val children: Set<GeoLoc>) : GeoLoc {
EEE(

View File

@@ -24,53 +24,53 @@ const val AUTO_GROUP = -1
@Serializable
class Groups(val id: Int, private val grps: HashMap<Int, Group>) {
class Groups(val id: Int, private val groups: HashMap<Int, Group>) {
@kotlinx.serialization.Transient
private val _groupsFlow = MutableStateFlow<List<Group>>(grps.values.toList())
private val _groupsFlow = MutableStateFlow<List<Group>>(groups.values.toList())
@kotlinx.serialization.Transient
val groupsFlow: StateFlow<List<Group>> = _groupsFlow.asStateFlow()
fun setGroup(key: Int, name: String, col: ColorDrawable) {
grps[key] = Group(key, name, col)
_groupsFlow.value = grps.values.toList()
groups[key] = Group(key, name, col)
_groupsFlow.value = groups.values.toList()
}
fun deleteGroup(key: Int) {
grps.remove(key)
_groupsFlow.value = grps.values.toList()
groups.remove(key)
_groupsFlow.value = groups.values.toList()
}
fun getGroupFromKey(key: Int): Group {
return grps.getOrDefault(key, EmptyGroup())
return groups.getOrDefault(key, EmptyGroup())
}
fun genKey(): Int {
val key = rnd.nextInt()
if (grps.containsKey(key) || key in listOf(NO_GROUP, DEFAULT_GROUP, AUTO_GROUP)) return genKey()
if (groups.containsKey(key) || key in listOf(NO_GROUP, DEFAULT_GROUP, AUTO_GROUP)) return genKey()
return key
}
fun size(): Int {
return grps.size
return groups.size
}
fun getUniqueEntry(): Group? {
assert(size() == 1)
return if (grps.size == 1) {
grps[grps.keys.first()]
return if (groups.size == 1) {
groups[groups.keys.first()]
} else {
null
}
}
fun getGroupFromPos(pos: Int): Pair<Int, Group> {
if(grps.keys.isEmpty()) return Pair(NO_GROUP,Group(NO_GROUP,"-"))
val key = grps.keys.toList()[pos]
if(groups.keys.isEmpty()) return Pair(NO_GROUP,Group(NO_GROUP,"-"))
val key = groups.keys.toList()[pos]
return Pair(key, getGroupFromKey(key))
}
fun findGroupPos(key: Int): Int {
return grps.keys.toList().indexOf(key)
return groups.keys.toList().indexOf(key)
}
class EmptyGroup : Group(0, "")

View File

@@ -2,4 +2,5 @@
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
<monochrome android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon>

View File

@@ -1,6 +1,6 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id 'com.android.application' version '9.2.0' apply false
id 'com.android.library' version '9.2.0' apply false
id 'com.android.application' version '9.2.1' apply false
id 'com.android.library' version '9.2.1' apply false
id 'org.jetbrains.kotlin.android' version '2.3.21' apply false
}

View File

@@ -1,24 +1,9 @@
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
android.enableJetifier=false
# Kotlin code style for this project: "official" or "obsolete":
kotlin.code.style=official
# Enables namespacing of each library's R class so that its R class includes only the
# resources declared in the library itself and none from the library's dependencies,
# thereby reducing the size of the R class for that library
android.nonTransitiveRClass=true
android.uniquePackageNames=false
android.dependency.useConstraints=false
android.r8.strictFullModeForKeepRules=false

Binary file not shown.

View File

@@ -1,8 +1,10 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionSha256Sum=2ab2958f2a1e51120c326cad6f385153bb11ee93b3c216c5fccebfdfbb7ec6cb
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip
distributionSha256Sum=bafc141b619ad6350fd975fc903156dd5c151998cc8b058e8c1044ab5f7b031f
distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip
networkTimeout=10000
retries=0
retryBackOffMs=500
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

2
gradlew vendored
View File

@@ -57,7 +57,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/2d6327017519d23b96af35865dc997fcb544fb40/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# https://github.com/gradle/gradle/blob/3d91ce3b8caaf77ad09f381f43615b715b53f72c/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.

31
gradlew.bat vendored
View File

@@ -23,8 +23,8 @@
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
@rem Set local scope for the variables, and ensure extensions are enabled
setlocal EnableExtensions
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@@ -51,7 +51,7 @@ echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
"%COMSPEC%" /c exit 1
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
@@ -65,7 +65,7 @@ echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
"%COMSPEC%" /c exit 1
:execute
@rem Setup the command line
@@ -73,21 +73,10 @@ goto fail
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
@rem endlocal doesn't take effect until after the line is parsed and variables are expanded
@rem which allows us to clear the local environment before executing the java command
endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
:exitWithErrorLevel
@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts
"%COMSPEC%" /c exit %ERRORLEVEL%

View File

@@ -1,9 +1,9 @@
{
"dependencies": {
"@turf/area": "^7.0.0",
"@turf/turf": "^7.0.0",
"jsdom": "^29.0.0",
"mapshaper": "^0.7.0"
"@turf/area": "^7.3.5",
"@turf/turf": "^7.3.5",
"jsdom": "^29.1.1",
"mapshaper": "^0.7.19"
},
"type": "module"
}

View File

@@ -6,6 +6,9 @@ pluginManagement {
maven { url 'https://jitpack.io' }
}
}
plugins {
id 'org.gradle.toolchains.foojay-resolver-convention' version '1.0.0'
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {

8303
yarn.lock

File diff suppressed because it is too large Load Diff