From dcbd214f431ea278dbf0654362792947512da1c9 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Wed, 17 Jul 2024 19:21:13 +0200 Subject: [PATCH 01/76] removed obsolete code --- .../main/java/at/techbee/jtx/database/properties/Alarm.kt | 8 -------- 1 file changed, 8 deletions(-) diff --git a/app/src/main/java/at/techbee/jtx/database/properties/Alarm.kt b/app/src/main/java/at/techbee/jtx/database/properties/Alarm.kt index 6cd004020..e69adc2d1 100644 --- a/app/src/main/java/at/techbee/jtx/database/properties/Alarm.kt +++ b/app/src/main/java/at/techbee/jtx/database/properties/Alarm.kt @@ -418,14 +418,6 @@ data class Alarm( if (isReadOnly && SettingsStateHolder(context).settingDisableAlarmsReadonly.value) // don't schedule alarm for read only if option was deactivated! return - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { - Log.i( - "scheduleNotification", - "Due to necessity of PendingIntent.FLAG_IMMUTABLE, the notification functionality can only be used from Build Versions > M (Api-Level 23)" - ) - return - } - val notification = createNotification( icalObjectId, alarmId, From bdb6b8a7bb04d8f705c497f07222322eb4eb57a6 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Wed, 17 Jul 2024 20:08:49 +0200 Subject: [PATCH 02/76] version bump added release notes --- app/build.gradle.kts | 4 ++-- fastlane/metadata/android/en-US/changelogs/209000011.txt | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/209000011.txt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 19ab194b2..9bd3017c2 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -29,8 +29,8 @@ android { buildConfigField("long", "buildTime", "${System.currentTimeMillis()}L") minSdk = 23 targetSdk = 34 - versionCode = 209000010 - versionName = "2.09.00-beta01" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) + versionCode = 209000011 + versionName = "2.09.00" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) buildConfigField("String", "versionCodename", "\"Pride is a protest \uD83C\uDF08\"") multiDexEnabled = true vectorDrawables.useSupportLibrary = true diff --git a/fastlane/metadata/android/en-US/changelogs/209000011.txt b/fastlane/metadata/android/en-US/changelogs/209000011.txt new file mode 100644 index 000000000..61e12aa34 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/209000011.txt @@ -0,0 +1,4 @@ +* Improved alarm handling +* Version updates and several technical upgrades + +Attention: From this version the minimum required Android version is Android 6. Due to dependencies Android 5 is not supported anymore. \ No newline at end of file From baf0a4438ad9ff8fef6e8f45a88506cc7c096435 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Wed, 17 Jul 2024 20:22:06 +0200 Subject: [PATCH 03/76] 1504 bug max limit of concurrent alarms 500 reached (#1505) * removed obsolete code * Hopefully fixes max limit of concurrent alarms 500 reached #1504 --- .../techbee/jtx/database/properties/Alarm.kt | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/at/techbee/jtx/database/properties/Alarm.kt b/app/src/main/java/at/techbee/jtx/database/properties/Alarm.kt index e69adc2d1..fbcf3ba19 100644 --- a/app/src/main/java/at/techbee/jtx/database/properties/Alarm.kt +++ b/app/src/main/java/at/techbee/jtx/database/properties/Alarm.kt @@ -444,10 +444,20 @@ data class Alarm( // the alarmManager finally takes care, that the pendingIntent is queued to start the notification Intent that on click would start the contentIntent val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager - if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && alarmManager.canScheduleExactAlarms()) || Build.VERSION.SDK_INT < Build.VERSION_CODES.S) - alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, triggerTime!!, pendingIntent) - else - alarmManager.set(AlarmManager.RTC_WAKEUP, triggerTime!!, pendingIntent) + try { + if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && alarmManager.canScheduleExactAlarms()) || Build.VERSION.SDK_INT < Build.VERSION_CODES.S) + alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, triggerTime!!, pendingIntent) + else + alarmManager.set(AlarmManager.RTC_WAKEUP, triggerTime!!, pendingIntent) + } catch (e: IllegalStateException) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { + alarmManager.cancelAll() + } else { + while(alarmManager.nextAlarmClock!=null) { + alarmManager.cancel(alarmManager.nextAlarmClock.showIntent) + } + } + } } /** From cdf74330706b0f78ff6694a2f5a0feca80dd2b7d Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Wed, 17 Jul 2024 20:22:35 +0200 Subject: [PATCH 04/76] show immediate notification if alarm is in past (#1501) --- .../at/techbee/jtx/ui/detail/DetailViewModel.kt | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/at/techbee/jtx/ui/detail/DetailViewModel.kt b/app/src/main/java/at/techbee/jtx/ui/detail/DetailViewModel.kt index 4f3ec3619..5a0fd6e54 100644 --- a/app/src/main/java/at/techbee/jtx/ui/detail/DetailViewModel.kt +++ b/app/src/main/java/at/techbee/jtx/ui/detail/DetailViewModel.kt @@ -113,6 +113,7 @@ class DetailViewModel(application: Application) : AndroidViewModel(application) val mediaPlayer = MediaPlayer() private var _isAuthenticated = false + private var immediateAlarmTriggeredOnce = false companion object { const val PREFS_DETAIL_JOURNALS = "prefsDetailJournals" @@ -123,6 +124,7 @@ class DetailViewModel(application: Application) : AndroidViewModel(application) fun load(icalObjectId: Long, isAuthenticated: Boolean) { mainICalObjectId = icalObjectId _isAuthenticated = isAuthenticated + immediateAlarmTriggeredOnce = false viewModelScope.launch { withContext(Dispatchers.Main) { changeState.value = DetailChangeState.LOADING } @@ -450,9 +452,16 @@ class DetailViewModel(application: Application) : AndroidViewModel(application) databaseDao.setAlarmNotification(it.id, false) } - if(triggerImmediateAlarm) - NotificationPublisher.triggerImmediateAlarm(it, _application) + val triggerInPastButNotDone = + mutableAlarms.any { alarm -> (alarm.triggerTime?:0L) <= System.currentTimeMillis() } + && mutableAlarms.none { alarm -> (alarm.triggerTime?:0L) > System.currentTimeMillis() } + && it.percent != 100 + && it.status != Status.COMPLETED.status + if(!immediateAlarmTriggeredOnce && (triggerImmediateAlarm || triggerInPastButNotDone)) { + NotificationPublisher.triggerImmediateAlarm(it, _application) + immediateAlarmTriggeredOnce = true + } } } From 7e800d810e12dd7e586b14248595f3cfbadd85d5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Jul 2024 20:22:51 +0200 Subject: [PATCH 05/76] Bump com.googlecode.libphonenumber:libphonenumber (#1500) Bumps [com.googlecode.libphonenumber:libphonenumber](https://github.com/google/libphonenumber) from 8.13.40 to 8.13.41. - [Release notes](https://github.com/google/libphonenumber/releases) - [Changelog](https://github.com/google/libphonenumber/blob/master/making-metadata-changes.md) - [Commits](https://github.com/google/libphonenumber/compare/v8.13.40...v8.13.41) --- updated-dependencies: - dependency-name: com.googlecode.libphonenumber:libphonenumber dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 329b2e0f5..9e4cbdc90 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -32,7 +32,7 @@ kotlinx-coroutines = "1.8.1" kotlinxSerializationJson = "1.7.1" # see https://github.com/google/ksp/releases for version numbers ksp = "2.0.0-1.0.22" -libphonenumber = "8.13.40" +libphonenumber = "8.13.41" mapsCompose = "6.0.0" markdowntext = "1.3.2" mikepenz-aboutLibraries = "11.2.2" From b6083a8bdfb65a97d76d40ee91545611017f41fd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Jul 2024 20:23:02 +0200 Subject: [PATCH 06/76] Bump android-agp from 8.5.0 to 8.5.1 (#1499) Bumps `android-agp` from 8.5.0 to 8.5.1. Updates `com.android.application` from 8.5.0 to 8.5.1 Updates `com.android.test` from 8.5.0 to 8.5.1 --- updated-dependencies: - dependency-name: com.android.application dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: com.android.test dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9e4cbdc90..e9d256909 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,7 @@ [versions] amazonAppstoreSdk = "3.0.5" -android-agp = "8.5.0" +android-agp = "8.5.1" android-desugaring = "2.0.4" androidx-activityCompose = "1.9.0" androidx-appcompat = "1.7.0" From 7c761ae3b4adca0919822ca35966a82e6a14ba01 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Wed, 17 Jul 2024 20:23:36 +0200 Subject: [PATCH 07/76] [BUG] Can't open Board via menu when in any of the other screens #1496 (#1497) --- .../jtx/ui/reusable/destinations/NavigationDrawerDestination.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/at/techbee/jtx/ui/reusable/destinations/NavigationDrawerDestination.kt b/app/src/main/java/at/techbee/jtx/ui/reusable/destinations/NavigationDrawerDestination.kt index ed326e4b7..9015d9b31 100644 --- a/app/src/main/java/at/techbee/jtx/ui/reusable/destinations/NavigationDrawerDestination.kt +++ b/app/src/main/java/at/techbee/jtx/ui/reusable/destinations/NavigationDrawerDestination.kt @@ -24,7 +24,7 @@ enum class NavigationDrawerDestination ( BOARD( titleResource = R.string.navigation_drawer_board, iconRes = R.drawable.ic_widget_jtx, - navigationAction = { navHost, _ -> navHost.popBackStack(BOARD.name, false)} + navigationAction = { navHost, _ -> navHost.navigate(BOARD.name)} ), PRESETS( titleResource = R.string.navigation_drawer_presets, From b88a628a1c43e431839875c7cb9073946e66105c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Jul 2024 20:24:46 +0200 Subject: [PATCH 08/76] Bump com.google.maps.android:maps-compose from 6.0.0 to 6.1.0 (#1495) Bumps [com.google.maps.android:maps-compose](https://github.com/googlemaps/android-maps-compose) from 6.0.0 to 6.1.0. - [Release notes](https://github.com/googlemaps/android-maps-compose/releases) - [Changelog](https://github.com/googlemaps/android-maps-compose/blob/main/.releaserc) - [Commits](https://github.com/googlemaps/android-maps-compose/compare/v6.0.0...v6.1.0) --- updated-dependencies: - dependency-name: com.google.maps.android:maps-compose dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e9d256909..b0654bd67 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -33,7 +33,7 @@ kotlinxSerializationJson = "1.7.1" # see https://github.com/google/ksp/releases for version numbers ksp = "2.0.0-1.0.22" libphonenumber = "8.13.41" -mapsCompose = "6.0.0" +mapsCompose = "6.1.0" markdowntext = "1.3.2" mikepenz-aboutLibraries = "11.2.2" mockitoCore = "5.12.0" From a0c047e5132d224833d810d96e840ad8cd821237 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Jul 2024 20:25:05 +0200 Subject: [PATCH 09/76] Bump com.google.devtools.ksp from 2.0.0-1.0.22 to 2.0.0-1.0.23 (#1498) Bumps [com.google.devtools.ksp](https://github.com/google/ksp) from 2.0.0-1.0.22 to 2.0.0-1.0.23. - [Release notes](https://github.com/google/ksp/releases) - [Commits](https://github.com/google/ksp/compare/2.0.0-1.0.22...2.0.0-1.0.23) --- updated-dependencies: - dependency-name: com.google.devtools.ksp dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b0654bd67..2caef0526 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -31,7 +31,7 @@ kotlin = "2.0.0" kotlinx-coroutines = "1.8.1" kotlinxSerializationJson = "1.7.1" # see https://github.com/google/ksp/releases for version numbers -ksp = "2.0.0-1.0.22" +ksp = "2.0.0-1.0.23" libphonenumber = "8.13.41" mapsCompose = "6.1.0" markdowntext = "1.3.2" From f0c83d15f5f2d963bc138785c8fc7407a47cf9c9 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Wed, 17 Jul 2024 20:27:25 +0200 Subject: [PATCH 10/76] version bump 2.9.1-alpha01 --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 9bd3017c2..a38ec0e26 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -29,8 +29,8 @@ android { buildConfigField("long", "buildTime", "${System.currentTimeMillis()}L") minSdk = 23 targetSdk = 34 - versionCode = 209000011 - versionName = "2.09.00" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) + versionCode = 209010001 + versionName = "2.09.01-alpha01" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) buildConfigField("String", "versionCodename", "\"Pride is a protest \uD83C\uDF08\"") multiDexEnabled = true vectorDrawables.useSupportLibrary = true From ad3c0470c4f268c85941d24c842c5233a2baecb4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 18 Jul 2024 21:37:01 +0200 Subject: [PATCH 11/76] Bump io.coil-kt:coil-compose from 2.6.0 to 2.7.0 (#1507) Bumps [io.coil-kt:coil-compose](https://github.com/coil-kt/coil) from 2.6.0 to 2.7.0. - [Release notes](https://github.com/coil-kt/coil/releases) - [Changelog](https://github.com/coil-kt/coil/blob/main/CHANGELOG.md) - [Commits](https://github.com/coil-kt/coil/compare/2.6.0...2.7.0) --- updated-dependencies: - dependency-name: io.coil-kt:coil-compose dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2caef0526..1ad9d9a1d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -19,7 +19,7 @@ annotation = "1.8.0" biometricKtx = "1.2.0-alpha05" bitfire-ical4android = "83cda23ceb" calendarCompose = "2.5.2" -coilCompose = "2.6.0" +coilCompose = "2.7.0" compose-accompanist = "0.34.0" compose-bom = "2024.06.00" compose-navigation = "2.7.7" From 9d8807d5be21107980969a513b81096219a9b060 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 18 Jul 2024 21:37:15 +0200 Subject: [PATCH 12/76] Bump sh.calvin.reorderable:reorderable from 2.1.1 to 2.2.0 (#1506) Bumps [sh.calvin.reorderable:reorderable](https://github.com/Calvin-LL/Reorderable) from 2.1.1 to 2.2.0. - [Release notes](https://github.com/Calvin-LL/Reorderable/releases) - [Commits](https://github.com/Calvin-LL/Reorderable/compare/v2.1.1...v2.2.0) --- updated-dependencies: - dependency-name: sh.calvin.reorderable:reorderable dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1ad9d9a1d..7e6870d70 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -41,7 +41,7 @@ osmdroidAndroid = "6.1.18" playServicesLocation = "21.3.0" playServicesMaps = "19.0.0" profileinstaller = "1.3.1" -reorderable = "2.1.1" +reorderable = "2.2.0" uiTextGoogleFonts = "1.6.8" room = "2.6.1" volley = "1.2.1" From 382f2879ccdf33d97beb8da48beaf5acdca9a3c0 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Thu, 18 Jul 2024 21:40:26 +0200 Subject: [PATCH 13/76] Allow choosing parents from subtasks (#1509) --- app/src/main/java/at/techbee/jtx/ui/detail/DetailViewModel.kt | 1 + app/src/main/java/at/techbee/jtx/ui/list/ListViewModel.kt | 3 +++ 2 files changed, 4 insertions(+) diff --git a/app/src/main/java/at/techbee/jtx/ui/detail/DetailViewModel.kt b/app/src/main/java/at/techbee/jtx/ui/detail/DetailViewModel.kt index 5a0fd6e54..9dea059b2 100644 --- a/app/src/main/java/at/techbee/jtx/ui/detail/DetailViewModel.kt +++ b/app/src/main/java/at/techbee/jtx/ui/detail/DetailViewModel.kt @@ -219,6 +219,7 @@ class DetailViewModel(application: Application) : AndroidViewModel(application) } ?: emptyList() else emptyList(), searchAccount = if (sameAccount) collection.value?.accountName?.let { listOf(it) } ?: emptyList() else emptyList(), + flatView = true, orderBy = OrderBy.LAST_MODIFIED, sortOrder = SortOrder.DESC, hideBiometricProtected = if (_isAuthenticated) emptyList() else ListSettings.getProtectedClassificationsFromSettings( diff --git a/app/src/main/java/at/techbee/jtx/ui/list/ListViewModel.kt b/app/src/main/java/at/techbee/jtx/ui/list/ListViewModel.kt index f4706dec4..49bc7f3a6 100644 --- a/app/src/main/java/at/techbee/jtx/ui/list/ListViewModel.kt +++ b/app/src/main/java/at/techbee/jtx/ui/list/ListViewModel.kt @@ -213,6 +213,9 @@ open class ListViewModel(application: Application, val module: Module) : Android selectFromAllListQuery.postValue(ICal4List.constructQuery( modules = listOf(Module.JOURNAL, Module.NOTE, Module.TODO), searchText = searchText, + flatView = true, + orderBy = OrderBy.LAST_MODIFIED, + sortOrder = SortOrder.DESC, hideBiometricProtected = if(isAuthenticated) emptyList() else ListSettings.getProtectedClassificationsFromSettings(_application) )) } From 0a0a74292bda7f4184f915e747802195087713b8 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Thu, 18 Jul 2024 21:45:43 +0200 Subject: [PATCH 14/76] version bump --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index a38ec0e26..90ee14ed1 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -29,8 +29,8 @@ android { buildConfigField("long", "buildTime", "${System.currentTimeMillis()}L") minSdk = 23 targetSdk = 34 - versionCode = 209010001 - versionName = "2.09.01-alpha01" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) + versionCode = 209010002 + versionName = "2.09.01-beta01" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) buildConfigField("String", "versionCodename", "\"Pride is a protest \uD83C\uDF08\"") multiDexEnabled = true vectorDrawables.useSupportLibrary = true From 902c7c84dcc2885ea9d4619bc134370f3374c452 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Mon, 29 Jul 2024 23:12:55 +0200 Subject: [PATCH 15/76] added setting to expand/collapse parents by default --- app/src/main/java/at/techbee/jtx/ui/list/ListScreen.kt | 1 + .../main/java/at/techbee/jtx/ui/list/ListScreenList.kt | 4 ++++ .../java/at/techbee/jtx/ui/settings/SettingsScreen.kt | 8 ++++++++ .../at/techbee/jtx/ui/settings/SettingsStateHolder.kt | 1 + .../java/at/techbee/jtx/ui/settings/SwitchSetting.kt | 10 ++++++++++ app/src/main/res/values/strings.xml | 1 + 6 files changed, 25 insertions(+) diff --git a/app/src/main/java/at/techbee/jtx/ui/list/ListScreen.kt b/app/src/main/java/at/techbee/jtx/ui/list/ListScreen.kt index eb6bd53b0..94d601329 100644 --- a/app/src/main/java/at/techbee/jtx/ui/list/ListScreen.kt +++ b/app/src/main/java/at/techbee/jtx/ui/list/ListScreen.kt @@ -91,6 +91,7 @@ fun ListScreen( isSubtasksExpandedDefault = settingsStateHolder.settingAutoExpandSubtasks.value, isSubnotesExpandedDefault = settingsStateHolder.settingAutoExpandSubnotes.value, isAttachmentsExpandedDefault = settingsStateHolder.settingAutoExpandAttachments.value, + isParentsExpandedDefault = settingsStateHolder.settingAutoExpandParents.value, settingShowProgressMaintasks = settingsStateHolder.settingShowProgressForMainTasks.value, settingShowProgressSubtasks = settingsStateHolder.settingShowProgressForSubTasks.value, settingProgressIncrement = settingsStateHolder.settingStepForProgress.value, diff --git a/app/src/main/java/at/techbee/jtx/ui/list/ListScreenList.kt b/app/src/main/java/at/techbee/jtx/ui/list/ListScreenList.kt index 352b7ae64..ba4c747d4 100644 --- a/app/src/main/java/at/techbee/jtx/ui/list/ListScreenList.kt +++ b/app/src/main/java/at/techbee/jtx/ui/list/ListScreenList.kt @@ -100,6 +100,7 @@ fun ListScreenList( isSubtasksExpandedDefault: Boolean, isSubnotesExpandedDefault: Boolean, isAttachmentsExpandedDefault: Boolean, + isParentsExpandedDefault: Boolean, settingShowProgressMaintasks: Boolean, settingShowProgressSubtasks: Boolean, settingProgressIncrement: DropdownSettingOption, @@ -244,6 +245,7 @@ fun ListScreenList( isSubtasksExpandedDefault = isSubtasksExpandedDefault, isSubnotesExpandedDefault = isSubnotesExpandedDefault, isAttachmentsExpandedDefault = isAttachmentsExpandedDefault, + isParentsExpandedDefault = isParentsExpandedDefault, settingShowProgressMaintasks = settingShowProgressMaintasks, settingShowProgressSubtasks = settingShowProgressSubtasks, settingDisplayTimezone = settingDisplayTimezone, @@ -377,6 +379,7 @@ fun ListScreenList_TODO() { isSubtasksExpandedDefault = true, isSubnotesExpandedDefault = true, isAttachmentsExpandedDefault = true, + isParentsExpandedDefault = true, settingShowProgressMaintasks = true, settingShowProgressSubtasks = true, settingProgressIncrement = DropdownSettingOption.PROGRESS_STEP_1, @@ -461,6 +464,7 @@ fun ListScreenList_JOURNAL() { isSubtasksExpandedDefault = false, isSubnotesExpandedDefault = false, isAttachmentsExpandedDefault = false, + isParentsExpandedDefault = false, settingShowProgressMaintasks = false, settingShowProgressSubtasks = false, settingProgressIncrement = DropdownSettingOption.PROGRESS_STEP_1, diff --git a/app/src/main/java/at/techbee/jtx/ui/settings/SettingsScreen.kt b/app/src/main/java/at/techbee/jtx/ui/settings/SettingsScreen.kt index f77e6a598..370fbd6d7 100644 --- a/app/src/main/java/at/techbee/jtx/ui/settings/SettingsScreen.kt +++ b/app/src/main/java/at/techbee/jtx/ui/settings/SettingsScreen.kt @@ -71,6 +71,7 @@ import at.techbee.jtx.ui.settings.DropdownSetting.SETTING_PROTECT_BIOMETRIC import at.techbee.jtx.ui.settings.DropdownSetting.SETTING_THEME import at.techbee.jtx.ui.settings.SwitchSetting.SETTING_ACCESSIBILITY_MODE import at.techbee.jtx.ui.settings.SwitchSetting.SETTING_AUTO_EXPAND_ATTACHMENTS +import at.techbee.jtx.ui.settings.SwitchSetting.SETTING_AUTO_EXPAND_PARENTS import at.techbee.jtx.ui.settings.SwitchSetting.SETTING_AUTO_EXPAND_SUBNOTES import at.techbee.jtx.ui.settings.SwitchSetting.SETTING_AUTO_EXPAND_SUBTASKS import at.techbee.jtx.ui.settings.SwitchSetting.SETTING_DISABLE_ALARMS_FOR_READONLY @@ -393,6 +394,13 @@ fun SettingsScreen( settingsStateHolder.settingAutoExpandAttachments.value = it SETTING_AUTO_EXPAND_ATTACHMENTS.saveSetting(it, settingsStateHolder.prefs) }) + SwitchSettingElement( + setting = SETTING_AUTO_EXPAND_PARENTS, + checked = settingsStateHolder.settingAutoExpandParents, + onCheckedChanged = { + settingsStateHolder.settingAutoExpandParents.value = it + SETTING_AUTO_EXPAND_PARENTS.saveSetting(it, settingsStateHolder.prefs) + }) } ExpandableSettingsSection( diff --git a/app/src/main/java/at/techbee/jtx/ui/settings/SettingsStateHolder.kt b/app/src/main/java/at/techbee/jtx/ui/settings/SettingsStateHolder.kt index dd7f0a9cb..e3828f75c 100644 --- a/app/src/main/java/at/techbee/jtx/ui/settings/SettingsStateHolder.kt +++ b/app/src/main/java/at/techbee/jtx/ui/settings/SettingsStateHolder.kt @@ -36,6 +36,7 @@ class SettingsStateHolder(val context: Context) { var settingAutoExpandSubtasks = mutableStateOf(SwitchSetting.SETTING_AUTO_EXPAND_SUBTASKS.getSetting(prefs)) var settingAutoExpandSubnotes = mutableStateOf(SwitchSetting.SETTING_AUTO_EXPAND_SUBNOTES.getSetting(prefs)) var settingAutoExpandAttachments = mutableStateOf(SwitchSetting.SETTING_AUTO_EXPAND_ATTACHMENTS.getSetting(prefs)) + var settingAutoExpandParents = mutableStateOf(SwitchSetting.SETTING_AUTO_EXPAND_PARENTS.getSetting(prefs)) var settingShowProgressForMainTasks = mutableStateOf(SwitchSetting.SETTING_SHOW_PROGRESS_FOR_MAINTASKS.getSetting(prefs)) var settingShowProgressForSubTasks = mutableStateOf(SwitchSetting.SETTING_SHOW_PROGRESS_FOR_SUBTASKS.getSetting(prefs)) diff --git a/app/src/main/java/at/techbee/jtx/ui/settings/SwitchSetting.kt b/app/src/main/java/at/techbee/jtx/ui/settings/SwitchSetting.kt index e82bb1c45..b9a0e2ee6 100644 --- a/app/src/main/java/at/techbee/jtx/ui/settings/SwitchSetting.kt +++ b/app/src/main/java/at/techbee/jtx/ui/settings/SwitchSetting.kt @@ -25,6 +25,7 @@ import androidx.compose.material.icons.outlined.Fullscreen import androidx.compose.material.icons.outlined.MyLocation import androidx.compose.material.icons.outlined.PublishedWithChanges import androidx.compose.material.icons.outlined.RestartAlt +import androidx.compose.material.icons.outlined.SubdirectoryArrowRight import androidx.compose.material.icons.outlined.SwipeDown import androidx.compose.material.icons.outlined.TaskAlt import androidx.compose.material3.Icon @@ -80,6 +81,15 @@ enum class SwitchSetting( title = R.string.settings_default_expand_attachments, default = false ), + SETTING_AUTO_EXPAND_PARENTS( + key = "settings_auto_expand_parents", + icon = { Icon( + Icons.Outlined.SubdirectoryArrowRight, null, modifier = Modifier.padding( + 16.dp + )) }, + title = R.string.settings_default_expand_parents, + default = false + ), SETTING_SHOW_PROGRESS_FOR_MAINTASKS( key = "settings_show_progress_for_maintasks_in_list", icon = { Icon( diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3ede468d2..0df35be42 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -395,6 +395,7 @@ Thank you!" "Expand subtasks in list by default" "Expand subnotes in list by default" "Expand attachments in list by default" + "Expand parents in list by default" "https://www.paypal.com/donate?hosted_button_id=8BVX7PUVVTCWY" "https://jtx.techbee.at/contribute" "Sorry" From ff92be305e1da32c1be506f888b5ca33bd003a60 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Mon, 29 Jul 2024 23:14:35 +0200 Subject: [PATCH 16/76] Revert "added setting to expand/collapse parents by default" This reverts commit 902c7c84dcc2885ea9d4619bc134370f3374c452. --- app/src/main/java/at/techbee/jtx/ui/list/ListScreen.kt | 1 - .../main/java/at/techbee/jtx/ui/list/ListScreenList.kt | 4 ---- .../java/at/techbee/jtx/ui/settings/SettingsScreen.kt | 8 -------- .../at/techbee/jtx/ui/settings/SettingsStateHolder.kt | 1 - .../java/at/techbee/jtx/ui/settings/SwitchSetting.kt | 10 ---------- app/src/main/res/values/strings.xml | 1 - 6 files changed, 25 deletions(-) diff --git a/app/src/main/java/at/techbee/jtx/ui/list/ListScreen.kt b/app/src/main/java/at/techbee/jtx/ui/list/ListScreen.kt index 94d601329..eb6bd53b0 100644 --- a/app/src/main/java/at/techbee/jtx/ui/list/ListScreen.kt +++ b/app/src/main/java/at/techbee/jtx/ui/list/ListScreen.kt @@ -91,7 +91,6 @@ fun ListScreen( isSubtasksExpandedDefault = settingsStateHolder.settingAutoExpandSubtasks.value, isSubnotesExpandedDefault = settingsStateHolder.settingAutoExpandSubnotes.value, isAttachmentsExpandedDefault = settingsStateHolder.settingAutoExpandAttachments.value, - isParentsExpandedDefault = settingsStateHolder.settingAutoExpandParents.value, settingShowProgressMaintasks = settingsStateHolder.settingShowProgressForMainTasks.value, settingShowProgressSubtasks = settingsStateHolder.settingShowProgressForSubTasks.value, settingProgressIncrement = settingsStateHolder.settingStepForProgress.value, diff --git a/app/src/main/java/at/techbee/jtx/ui/list/ListScreenList.kt b/app/src/main/java/at/techbee/jtx/ui/list/ListScreenList.kt index ba4c747d4..352b7ae64 100644 --- a/app/src/main/java/at/techbee/jtx/ui/list/ListScreenList.kt +++ b/app/src/main/java/at/techbee/jtx/ui/list/ListScreenList.kt @@ -100,7 +100,6 @@ fun ListScreenList( isSubtasksExpandedDefault: Boolean, isSubnotesExpandedDefault: Boolean, isAttachmentsExpandedDefault: Boolean, - isParentsExpandedDefault: Boolean, settingShowProgressMaintasks: Boolean, settingShowProgressSubtasks: Boolean, settingProgressIncrement: DropdownSettingOption, @@ -245,7 +244,6 @@ fun ListScreenList( isSubtasksExpandedDefault = isSubtasksExpandedDefault, isSubnotesExpandedDefault = isSubnotesExpandedDefault, isAttachmentsExpandedDefault = isAttachmentsExpandedDefault, - isParentsExpandedDefault = isParentsExpandedDefault, settingShowProgressMaintasks = settingShowProgressMaintasks, settingShowProgressSubtasks = settingShowProgressSubtasks, settingDisplayTimezone = settingDisplayTimezone, @@ -379,7 +377,6 @@ fun ListScreenList_TODO() { isSubtasksExpandedDefault = true, isSubnotesExpandedDefault = true, isAttachmentsExpandedDefault = true, - isParentsExpandedDefault = true, settingShowProgressMaintasks = true, settingShowProgressSubtasks = true, settingProgressIncrement = DropdownSettingOption.PROGRESS_STEP_1, @@ -464,7 +461,6 @@ fun ListScreenList_JOURNAL() { isSubtasksExpandedDefault = false, isSubnotesExpandedDefault = false, isAttachmentsExpandedDefault = false, - isParentsExpandedDefault = false, settingShowProgressMaintasks = false, settingShowProgressSubtasks = false, settingProgressIncrement = DropdownSettingOption.PROGRESS_STEP_1, diff --git a/app/src/main/java/at/techbee/jtx/ui/settings/SettingsScreen.kt b/app/src/main/java/at/techbee/jtx/ui/settings/SettingsScreen.kt index 370fbd6d7..f77e6a598 100644 --- a/app/src/main/java/at/techbee/jtx/ui/settings/SettingsScreen.kt +++ b/app/src/main/java/at/techbee/jtx/ui/settings/SettingsScreen.kt @@ -71,7 +71,6 @@ import at.techbee.jtx.ui.settings.DropdownSetting.SETTING_PROTECT_BIOMETRIC import at.techbee.jtx.ui.settings.DropdownSetting.SETTING_THEME import at.techbee.jtx.ui.settings.SwitchSetting.SETTING_ACCESSIBILITY_MODE import at.techbee.jtx.ui.settings.SwitchSetting.SETTING_AUTO_EXPAND_ATTACHMENTS -import at.techbee.jtx.ui.settings.SwitchSetting.SETTING_AUTO_EXPAND_PARENTS import at.techbee.jtx.ui.settings.SwitchSetting.SETTING_AUTO_EXPAND_SUBNOTES import at.techbee.jtx.ui.settings.SwitchSetting.SETTING_AUTO_EXPAND_SUBTASKS import at.techbee.jtx.ui.settings.SwitchSetting.SETTING_DISABLE_ALARMS_FOR_READONLY @@ -394,13 +393,6 @@ fun SettingsScreen( settingsStateHolder.settingAutoExpandAttachments.value = it SETTING_AUTO_EXPAND_ATTACHMENTS.saveSetting(it, settingsStateHolder.prefs) }) - SwitchSettingElement( - setting = SETTING_AUTO_EXPAND_PARENTS, - checked = settingsStateHolder.settingAutoExpandParents, - onCheckedChanged = { - settingsStateHolder.settingAutoExpandParents.value = it - SETTING_AUTO_EXPAND_PARENTS.saveSetting(it, settingsStateHolder.prefs) - }) } ExpandableSettingsSection( diff --git a/app/src/main/java/at/techbee/jtx/ui/settings/SettingsStateHolder.kt b/app/src/main/java/at/techbee/jtx/ui/settings/SettingsStateHolder.kt index e3828f75c..dd7f0a9cb 100644 --- a/app/src/main/java/at/techbee/jtx/ui/settings/SettingsStateHolder.kt +++ b/app/src/main/java/at/techbee/jtx/ui/settings/SettingsStateHolder.kt @@ -36,7 +36,6 @@ class SettingsStateHolder(val context: Context) { var settingAutoExpandSubtasks = mutableStateOf(SwitchSetting.SETTING_AUTO_EXPAND_SUBTASKS.getSetting(prefs)) var settingAutoExpandSubnotes = mutableStateOf(SwitchSetting.SETTING_AUTO_EXPAND_SUBNOTES.getSetting(prefs)) var settingAutoExpandAttachments = mutableStateOf(SwitchSetting.SETTING_AUTO_EXPAND_ATTACHMENTS.getSetting(prefs)) - var settingAutoExpandParents = mutableStateOf(SwitchSetting.SETTING_AUTO_EXPAND_PARENTS.getSetting(prefs)) var settingShowProgressForMainTasks = mutableStateOf(SwitchSetting.SETTING_SHOW_PROGRESS_FOR_MAINTASKS.getSetting(prefs)) var settingShowProgressForSubTasks = mutableStateOf(SwitchSetting.SETTING_SHOW_PROGRESS_FOR_SUBTASKS.getSetting(prefs)) diff --git a/app/src/main/java/at/techbee/jtx/ui/settings/SwitchSetting.kt b/app/src/main/java/at/techbee/jtx/ui/settings/SwitchSetting.kt index b9a0e2ee6..e82bb1c45 100644 --- a/app/src/main/java/at/techbee/jtx/ui/settings/SwitchSetting.kt +++ b/app/src/main/java/at/techbee/jtx/ui/settings/SwitchSetting.kt @@ -25,7 +25,6 @@ import androidx.compose.material.icons.outlined.Fullscreen import androidx.compose.material.icons.outlined.MyLocation import androidx.compose.material.icons.outlined.PublishedWithChanges import androidx.compose.material.icons.outlined.RestartAlt -import androidx.compose.material.icons.outlined.SubdirectoryArrowRight import androidx.compose.material.icons.outlined.SwipeDown import androidx.compose.material.icons.outlined.TaskAlt import androidx.compose.material3.Icon @@ -81,15 +80,6 @@ enum class SwitchSetting( title = R.string.settings_default_expand_attachments, default = false ), - SETTING_AUTO_EXPAND_PARENTS( - key = "settings_auto_expand_parents", - icon = { Icon( - Icons.Outlined.SubdirectoryArrowRight, null, modifier = Modifier.padding( - 16.dp - )) }, - title = R.string.settings_default_expand_parents, - default = false - ), SETTING_SHOW_PROGRESS_FOR_MAINTASKS( key = "settings_show_progress_for_maintasks_in_list", icon = { Icon( diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0df35be42..3ede468d2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -395,7 +395,6 @@ Thank you!" "Expand subtasks in list by default" "Expand subnotes in list by default" "Expand attachments in list by default" - "Expand parents in list by default" "https://www.paypal.com/donate?hosted_button_id=8BVX7PUVVTCWY" "https://jtx.techbee.at/contribute" "Sorry" From eb9ca18ca40d9822dd8955499af4045de9c6f19e Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Sat, 10 Aug 2024 08:47:40 +0200 Subject: [PATCH 17/76] version bump --- app/build.gradle.kts | 4 ++-- fastlane/metadata/android/en-US/changelogs/209010003.txt | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/209010003.txt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 90ee14ed1..78fc7c091 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -29,8 +29,8 @@ android { buildConfigField("long", "buildTime", "${System.currentTimeMillis()}L") minSdk = 23 targetSdk = 34 - versionCode = 209010002 - versionName = "2.09.01-beta01" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) + versionCode = 209010003 + versionName = "2.09.01" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) buildConfigField("String", "versionCodename", "\"Pride is a protest \uD83C\uDF08\"") multiDexEnabled = true vectorDrawables.useSupportLibrary = true diff --git a/fastlane/metadata/android/en-US/changelogs/209010003.txt b/fastlane/metadata/android/en-US/changelogs/209010003.txt new file mode 100644 index 000000000..aaaa697b4 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/209010003.txt @@ -0,0 +1,2 @@ +- Show a notification immediately when an alarm is set in the past +- Allow linking entries to parents that can be sub-entries \ No newline at end of file From 42b5f9cc5444e13f4f7bec141415b4fbdf3b286a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 10 Aug 2024 08:48:46 +0200 Subject: [PATCH 18/76] Bump com.googlecode.libphonenumber:libphonenumber (#1533) Bumps [com.googlecode.libphonenumber:libphonenumber](https://github.com/google/libphonenumber) from 8.13.41 to 8.13.43. - [Release notes](https://github.com/google/libphonenumber/releases) - [Changelog](https://github.com/google/libphonenumber/blob/master/making-metadata-changes.md) - [Commits](https://github.com/google/libphonenumber/compare/v8.13.41...v8.13.43) --- updated-dependencies: - dependency-name: com.googlecode.libphonenumber:libphonenumber dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7e6870d70..9ccafa113 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -32,7 +32,7 @@ kotlinx-coroutines = "1.8.1" kotlinxSerializationJson = "1.7.1" # see https://github.com/google/ksp/releases for version numbers ksp = "2.0.0-1.0.23" -libphonenumber = "8.13.41" +libphonenumber = "8.13.43" mapsCompose = "6.1.0" markdowntext = "1.3.2" mikepenz-aboutLibraries = "11.2.2" From 2311bd59cef83b03002a4247d854c6507f898dd9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 10 Aug 2024 08:49:32 +0200 Subject: [PATCH 19/76] Bump androidx.annotation:annotation from 1.8.0 to 1.8.2 (#1531) Bumps androidx.annotation:annotation from 1.8.0 to 1.8.2. --- updated-dependencies: - dependency-name: androidx.annotation:annotation dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9ccafa113..3fb8d397c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -15,7 +15,7 @@ androidx-test-runner = "1.6.1" androidx-test-rules = "1.6.1" androidx-test-junit = "1.2.1" androidx-work = "2.9.0" -annotation = "1.8.0" +annotation = "1.8.2" biometricKtx = "1.2.0-alpha05" bitfire-ical4android = "83cda23ceb" calendarCompose = "2.5.2" From 0e9ff5c0f57926d6995d402647140c2d38cb7975 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 10 Aug 2024 08:50:17 +0200 Subject: [PATCH 20/76] Bump gradle/actions from 3 to 4 (#1528) Bumps [gradle/actions](https://github.com/gradle/actions) from 3 to 4. - [Release notes](https://github.com/gradle/actions/releases) - [Commits](https://github.com/gradle/actions/compare/v3...v4) --- updated-dependencies: - dependency-name: gradle/actions dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/android-tests.yml | 2 +- .github/workflows/create-alpha.yml | 2 +- .github/workflows/create-baseline-profiles.yml | 2 +- .github/workflows/create-beta.yml | 2 +- .github/workflows/create-release.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/android-tests.yml b/.github/workflows/android-tests.yml index 58b7532b0..065a63a36 100644 --- a/.github/workflows/android-tests.yml +++ b/.github/workflows/android-tests.yml @@ -19,7 +19,7 @@ jobs: with: distribution: temurin java-version: 17 - - uses: gradle/actions/setup-gradle@v3 + - uses: gradle/actions/setup-gradle@v4 - name: Enable KVM group perms run: | diff --git a/.github/workflows/create-alpha.yml b/.github/workflows/create-alpha.yml index fe45a0e27..9f0a6bc5f 100644 --- a/.github/workflows/create-alpha.yml +++ b/.github/workflows/create-alpha.yml @@ -17,7 +17,7 @@ jobs: with: distribution: temurin java-version: 17 - - uses: gradle/actions/setup-gradle@v3 + - uses: gradle/actions/setup-gradle@v4 - name: Prepare keystore run: echo ${{ secrets.android_keystore_base64 }} | base64 -d >$GITHUB_WORKSPACE/keystore.jks diff --git a/.github/workflows/create-baseline-profiles.yml b/.github/workflows/create-baseline-profiles.yml index 7d653da5b..e2526053f 100644 --- a/.github/workflows/create-baseline-profiles.yml +++ b/.github/workflows/create-baseline-profiles.yml @@ -50,7 +50,7 @@ jobs: # Sets gradle up - name: Setup Gradle - uses: gradle/actions/setup-gradle@v3 + uses: gradle/actions/setup-gradle@v4 # Grants execute permission to gradle (safety step) - name: Grant Permissions to gradlew diff --git a/.github/workflows/create-beta.yml b/.github/workflows/create-beta.yml index 37c68fb5a..70bfb281b 100644 --- a/.github/workflows/create-beta.yml +++ b/.github/workflows/create-beta.yml @@ -17,7 +17,7 @@ jobs: with: distribution: temurin java-version: 17 - - uses: gradle/actions/setup-gradle@v3 + - uses: gradle/actions/setup-gradle@v4 - name: Prepare keystore run: echo ${{ secrets.android_keystore_base64 }} | base64 -d >$GITHUB_WORKSPACE/keystore.jks diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 7a99bcee7..1dfe6d6e4 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -19,7 +19,7 @@ jobs: with: distribution: temurin java-version: 17 - - uses: gradle/actions/setup-gradle@v3 + - uses: gradle/actions/setup-gradle@v4 - name: Prepare keystore run: echo ${{ secrets.android_keystore_base64 }} | base64 -d >$GITHUB_WORKSPACE/keystore.jks From 51b61931438a6768096ffb0a67d74a17e6e854ca Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Sat, 10 Aug 2024 08:50:44 +0200 Subject: [PATCH 21/76] added setting to expand/collapse parents by default (#1522) --- app/src/main/java/at/techbee/jtx/ui/list/ListScreen.kt | 1 + .../main/java/at/techbee/jtx/ui/list/ListScreenList.kt | 4 ++++ .../java/at/techbee/jtx/ui/settings/SettingsScreen.kt | 8 ++++++++ .../at/techbee/jtx/ui/settings/SettingsStateHolder.kt | 1 + .../java/at/techbee/jtx/ui/settings/SwitchSetting.kt | 10 ++++++++++ app/src/main/res/values/strings.xml | 1 + 6 files changed, 25 insertions(+) diff --git a/app/src/main/java/at/techbee/jtx/ui/list/ListScreen.kt b/app/src/main/java/at/techbee/jtx/ui/list/ListScreen.kt index eb6bd53b0..94d601329 100644 --- a/app/src/main/java/at/techbee/jtx/ui/list/ListScreen.kt +++ b/app/src/main/java/at/techbee/jtx/ui/list/ListScreen.kt @@ -91,6 +91,7 @@ fun ListScreen( isSubtasksExpandedDefault = settingsStateHolder.settingAutoExpandSubtasks.value, isSubnotesExpandedDefault = settingsStateHolder.settingAutoExpandSubnotes.value, isAttachmentsExpandedDefault = settingsStateHolder.settingAutoExpandAttachments.value, + isParentsExpandedDefault = settingsStateHolder.settingAutoExpandParents.value, settingShowProgressMaintasks = settingsStateHolder.settingShowProgressForMainTasks.value, settingShowProgressSubtasks = settingsStateHolder.settingShowProgressForSubTasks.value, settingProgressIncrement = settingsStateHolder.settingStepForProgress.value, diff --git a/app/src/main/java/at/techbee/jtx/ui/list/ListScreenList.kt b/app/src/main/java/at/techbee/jtx/ui/list/ListScreenList.kt index 352b7ae64..ba4c747d4 100644 --- a/app/src/main/java/at/techbee/jtx/ui/list/ListScreenList.kt +++ b/app/src/main/java/at/techbee/jtx/ui/list/ListScreenList.kt @@ -100,6 +100,7 @@ fun ListScreenList( isSubtasksExpandedDefault: Boolean, isSubnotesExpandedDefault: Boolean, isAttachmentsExpandedDefault: Boolean, + isParentsExpandedDefault: Boolean, settingShowProgressMaintasks: Boolean, settingShowProgressSubtasks: Boolean, settingProgressIncrement: DropdownSettingOption, @@ -244,6 +245,7 @@ fun ListScreenList( isSubtasksExpandedDefault = isSubtasksExpandedDefault, isSubnotesExpandedDefault = isSubnotesExpandedDefault, isAttachmentsExpandedDefault = isAttachmentsExpandedDefault, + isParentsExpandedDefault = isParentsExpandedDefault, settingShowProgressMaintasks = settingShowProgressMaintasks, settingShowProgressSubtasks = settingShowProgressSubtasks, settingDisplayTimezone = settingDisplayTimezone, @@ -377,6 +379,7 @@ fun ListScreenList_TODO() { isSubtasksExpandedDefault = true, isSubnotesExpandedDefault = true, isAttachmentsExpandedDefault = true, + isParentsExpandedDefault = true, settingShowProgressMaintasks = true, settingShowProgressSubtasks = true, settingProgressIncrement = DropdownSettingOption.PROGRESS_STEP_1, @@ -461,6 +464,7 @@ fun ListScreenList_JOURNAL() { isSubtasksExpandedDefault = false, isSubnotesExpandedDefault = false, isAttachmentsExpandedDefault = false, + isParentsExpandedDefault = false, settingShowProgressMaintasks = false, settingShowProgressSubtasks = false, settingProgressIncrement = DropdownSettingOption.PROGRESS_STEP_1, diff --git a/app/src/main/java/at/techbee/jtx/ui/settings/SettingsScreen.kt b/app/src/main/java/at/techbee/jtx/ui/settings/SettingsScreen.kt index f77e6a598..370fbd6d7 100644 --- a/app/src/main/java/at/techbee/jtx/ui/settings/SettingsScreen.kt +++ b/app/src/main/java/at/techbee/jtx/ui/settings/SettingsScreen.kt @@ -71,6 +71,7 @@ import at.techbee.jtx.ui.settings.DropdownSetting.SETTING_PROTECT_BIOMETRIC import at.techbee.jtx.ui.settings.DropdownSetting.SETTING_THEME import at.techbee.jtx.ui.settings.SwitchSetting.SETTING_ACCESSIBILITY_MODE import at.techbee.jtx.ui.settings.SwitchSetting.SETTING_AUTO_EXPAND_ATTACHMENTS +import at.techbee.jtx.ui.settings.SwitchSetting.SETTING_AUTO_EXPAND_PARENTS import at.techbee.jtx.ui.settings.SwitchSetting.SETTING_AUTO_EXPAND_SUBNOTES import at.techbee.jtx.ui.settings.SwitchSetting.SETTING_AUTO_EXPAND_SUBTASKS import at.techbee.jtx.ui.settings.SwitchSetting.SETTING_DISABLE_ALARMS_FOR_READONLY @@ -393,6 +394,13 @@ fun SettingsScreen( settingsStateHolder.settingAutoExpandAttachments.value = it SETTING_AUTO_EXPAND_ATTACHMENTS.saveSetting(it, settingsStateHolder.prefs) }) + SwitchSettingElement( + setting = SETTING_AUTO_EXPAND_PARENTS, + checked = settingsStateHolder.settingAutoExpandParents, + onCheckedChanged = { + settingsStateHolder.settingAutoExpandParents.value = it + SETTING_AUTO_EXPAND_PARENTS.saveSetting(it, settingsStateHolder.prefs) + }) } ExpandableSettingsSection( diff --git a/app/src/main/java/at/techbee/jtx/ui/settings/SettingsStateHolder.kt b/app/src/main/java/at/techbee/jtx/ui/settings/SettingsStateHolder.kt index dd7f0a9cb..e3828f75c 100644 --- a/app/src/main/java/at/techbee/jtx/ui/settings/SettingsStateHolder.kt +++ b/app/src/main/java/at/techbee/jtx/ui/settings/SettingsStateHolder.kt @@ -36,6 +36,7 @@ class SettingsStateHolder(val context: Context) { var settingAutoExpandSubtasks = mutableStateOf(SwitchSetting.SETTING_AUTO_EXPAND_SUBTASKS.getSetting(prefs)) var settingAutoExpandSubnotes = mutableStateOf(SwitchSetting.SETTING_AUTO_EXPAND_SUBNOTES.getSetting(prefs)) var settingAutoExpandAttachments = mutableStateOf(SwitchSetting.SETTING_AUTO_EXPAND_ATTACHMENTS.getSetting(prefs)) + var settingAutoExpandParents = mutableStateOf(SwitchSetting.SETTING_AUTO_EXPAND_PARENTS.getSetting(prefs)) var settingShowProgressForMainTasks = mutableStateOf(SwitchSetting.SETTING_SHOW_PROGRESS_FOR_MAINTASKS.getSetting(prefs)) var settingShowProgressForSubTasks = mutableStateOf(SwitchSetting.SETTING_SHOW_PROGRESS_FOR_SUBTASKS.getSetting(prefs)) diff --git a/app/src/main/java/at/techbee/jtx/ui/settings/SwitchSetting.kt b/app/src/main/java/at/techbee/jtx/ui/settings/SwitchSetting.kt index e82bb1c45..b9a0e2ee6 100644 --- a/app/src/main/java/at/techbee/jtx/ui/settings/SwitchSetting.kt +++ b/app/src/main/java/at/techbee/jtx/ui/settings/SwitchSetting.kt @@ -25,6 +25,7 @@ import androidx.compose.material.icons.outlined.Fullscreen import androidx.compose.material.icons.outlined.MyLocation import androidx.compose.material.icons.outlined.PublishedWithChanges import androidx.compose.material.icons.outlined.RestartAlt +import androidx.compose.material.icons.outlined.SubdirectoryArrowRight import androidx.compose.material.icons.outlined.SwipeDown import androidx.compose.material.icons.outlined.TaskAlt import androidx.compose.material3.Icon @@ -80,6 +81,15 @@ enum class SwitchSetting( title = R.string.settings_default_expand_attachments, default = false ), + SETTING_AUTO_EXPAND_PARENTS( + key = "settings_auto_expand_parents", + icon = { Icon( + Icons.Outlined.SubdirectoryArrowRight, null, modifier = Modifier.padding( + 16.dp + )) }, + title = R.string.settings_default_expand_parents, + default = false + ), SETTING_SHOW_PROGRESS_FOR_MAINTASKS( key = "settings_show_progress_for_maintasks_in_list", icon = { Icon( diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3ede468d2..0df35be42 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -395,6 +395,7 @@ Thank you!" "Expand subtasks in list by default" "Expand subnotes in list by default" "Expand attachments in list by default" + "Expand parents in list by default" "https://www.paypal.com/donate?hosted_button_id=8BVX7PUVVTCWY" "https://jtx.techbee.at/contribute" "Sorry" From 37ac813e69a3cd256a0460bb6cdbb7d67f3e766e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 10 Aug 2024 08:52:05 +0200 Subject: [PATCH 22/76] Bump softprops/action-gh-release from 2.0.6 to 2.0.8 (#1511) Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.6 to 2.0.8. - [Release notes](https://github.com/softprops/action-gh-release/releases) - [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md) - [Commits](https://github.com/softprops/action-gh-release/compare/v2.0.6...v2.0.8) --- updated-dependencies: - dependency-name: softprops/action-gh-release dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/create-beta.yml | 2 +- .github/workflows/create-release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/create-beta.yml b/.github/workflows/create-beta.yml index 70bfb281b..54464779c 100644 --- a/.github/workflows/create-beta.yml +++ b/.github/workflows/create-beta.yml @@ -53,7 +53,7 @@ jobs: run: cp app/build/outputs/apk/ose/release/app-ose-release.apk jtxBoard-${{ github.ref_name }}.apk - name: Create Github release - uses: softprops/action-gh-release@v2.0.6 + uses: softprops/action-gh-release@v2.0.8 with: prerelease: ${{ contains(github.ref_name, '-alpha') || contains(github.ref_name, '-beta') || contains(github.ref_name, '-rc') }} files: | diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 1dfe6d6e4..3bda9702c 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -66,7 +66,7 @@ jobs: run: cp app/build/outputs/apk/ose/release/app-ose-release.apk jtxBoard-${{ github.ref_name }}.apk - name: Create Github release - uses: softprops/action-gh-release@v2.0.6 + uses: softprops/action-gh-release@v2.0.8 with: prerelease: ${{ contains(github.ref_name, '-alpha') || contains(github.ref_name, '-beta') || contains(github.ref_name, '-rc') }} files: | From 18fb089c99b9b7b329f22c4654a648ad9abb6fcc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 10 Aug 2024 08:52:29 +0200 Subject: [PATCH 23/76] Bump com.kizitonwose.calendar:compose from 2.5.2 to 2.5.4 (#1527) Bumps [com.kizitonwose.calendar:compose](https://github.com/kizitonwose/calendar) from 2.5.2 to 2.5.4. - [Release notes](https://github.com/kizitonwose/calendar/releases) - [Commits](https://github.com/kizitonwose/calendar/compare/2.5.2...2.5.4) --- updated-dependencies: - dependency-name: com.kizitonwose.calendar:compose dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3fb8d397c..a60d36d57 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -18,7 +18,7 @@ androidx-work = "2.9.0" annotation = "1.8.2" biometricKtx = "1.2.0-alpha05" bitfire-ical4android = "83cda23ceb" -calendarCompose = "2.5.2" +calendarCompose = "2.5.4" coilCompose = "2.7.0" compose-accompanist = "0.34.0" compose-bom = "2024.06.00" From 2fc79eb1a33913973440cde65be278ac195d5291 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 10 Aug 2024 08:52:44 +0200 Subject: [PATCH 24/76] Bump sh.calvin.reorderable:reorderable from 2.2.0 to 2.3.0 (#1523) Bumps [sh.calvin.reorderable:reorderable](https://github.com/Calvin-LL/Reorderable) from 2.2.0 to 2.3.0. - [Release notes](https://github.com/Calvin-LL/Reorderable/releases) - [Commits](https://github.com/Calvin-LL/Reorderable/compare/v2.2.0...v2.3.0) --- updated-dependencies: - dependency-name: sh.calvin.reorderable:reorderable dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a60d36d57..07494630f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -41,7 +41,7 @@ osmdroidAndroid = "6.1.18" playServicesLocation = "21.3.0" playServicesMaps = "19.0.0" profileinstaller = "1.3.1" -reorderable = "2.2.0" +reorderable = "2.3.0" uiTextGoogleFonts = "1.6.8" room = "2.6.1" volley = "1.2.1" From a0cbfb7a0910ef94147c6b8ee8b05b0d97ae7c22 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 10 Aug 2024 08:52:55 +0200 Subject: [PATCH 25/76] Bump com.google.maps.android:maps-compose from 6.1.0 to 6.1.1 (#1517) Bumps [com.google.maps.android:maps-compose](https://github.com/googlemaps/android-maps-compose) from 6.1.0 to 6.1.1. - [Release notes](https://github.com/googlemaps/android-maps-compose/releases) - [Changelog](https://github.com/googlemaps/android-maps-compose/blob/main/.releaserc) - [Commits](https://github.com/googlemaps/android-maps-compose/compare/v6.1.0...v6.1.1) --- updated-dependencies: - dependency-name: com.google.maps.android:maps-compose dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 07494630f..781f11a5b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -33,7 +33,7 @@ kotlinxSerializationJson = "1.7.1" # see https://github.com/google/ksp/releases for version numbers ksp = "2.0.0-1.0.23" libphonenumber = "8.13.43" -mapsCompose = "6.1.0" +mapsCompose = "6.1.1" markdowntext = "1.3.2" mikepenz-aboutLibraries = "11.2.2" mockitoCore = "5.12.0" From dd19a832a388106ce5e72054ff57ff61cfd0db42 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 10 Aug 2024 08:53:07 +0200 Subject: [PATCH 26/76] Bump androidx.activity:activity-compose from 1.9.0 to 1.9.1 (#1514) Bumps androidx.activity:activity-compose from 1.9.0 to 1.9.1. --- updated-dependencies: - dependency-name: androidx.activity:activity-compose dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 781f11a5b..f8c7a9537 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,7 +4,7 @@ amazonAppstoreSdk = "3.0.5" android-agp = "8.5.1" android-desugaring = "2.0.4" -androidx-activityCompose = "1.9.0" +androidx-activityCompose = "1.9.1" androidx-appcompat = "1.7.0" androidx-arch = "2.2.0" androidx-core = "1.13.1" From 9a40ebdd4430224d9bf368f59a5164371764b5f3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 10 Aug 2024 08:53:27 +0200 Subject: [PATCH 27/76] Bump androidx-lifecycle from 2.8.3 to 2.8.4 (#1513) Bumps `androidx-lifecycle` from 2.8.3 to 2.8.4. Updates `androidx.lifecycle:lifecycle-runtime-compose` from 2.8.3 to 2.8.4 Updates `androidx.lifecycle:lifecycle-viewmodel-ktx` from 2.8.3 to 2.8.4 Updates `androidx.lifecycle:lifecycle-viewmodel-compose` from 2.8.3 to 2.8.4 --- updated-dependencies: - dependency-name: androidx.lifecycle:lifecycle-runtime-compose dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: androidx.lifecycle:lifecycle-viewmodel-ktx dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: androidx.lifecycle:lifecycle-viewmodel-compose dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f8c7a9537..01c5bcbb9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -8,7 +8,7 @@ androidx-activityCompose = "1.9.1" androidx-appcompat = "1.7.0" androidx-arch = "2.2.0" androidx-core = "1.13.1" -androidx-lifecycle = "2.8.3" +androidx-lifecycle = "2.8.4" androidx-preference = "1.2.1" androidx-test-core = "1.6.1" androidx-test-runner = "1.6.1" From dccb71104dabf8224d77461be18030f7cd13c096 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 10 Aug 2024 08:53:55 +0200 Subject: [PATCH 28/76] Bump com.google.devtools.ksp from 2.0.0-1.0.23 to 2.0.10-1.0.24 (#1530) Bumps [com.google.devtools.ksp](https://github.com/google/ksp) from 2.0.0-1.0.23 to 2.0.10-1.0.24. - [Release notes](https://github.com/google/ksp/releases) - [Commits](https://github.com/google/ksp/compare/2.0.0-1.0.23...2.0.10-1.0.24) --- updated-dependencies: - dependency-name: com.google.devtools.ksp dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 01c5bcbb9..e7316466f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -31,7 +31,7 @@ kotlin = "2.0.0" kotlinx-coroutines = "1.8.1" kotlinxSerializationJson = "1.7.1" # see https://github.com/google/ksp/releases for version numbers -ksp = "2.0.0-1.0.23" +ksp = "2.0.10-1.0.24" libphonenumber = "8.13.43" mapsCompose = "6.1.1" markdowntext = "1.3.2" From ebdfc3d27e38ace4c0354e0be6063063ee93b1c2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 10 Aug 2024 08:54:20 +0200 Subject: [PATCH 29/76] Bump kotlin from 2.0.0 to 2.0.10 (#1529) Bumps `kotlin` from 2.0.0 to 2.0.10. Updates `org.jetbrains.kotlin:kotlin-stdlib` from 2.0.0 to 2.0.10 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v2.0.0...v2.0.10) Updates `org.jetbrains.kotlin.plugin.compose` from 2.0.0 to 2.0.10 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v2.0.0...v2.0.10) Updates `org.jetbrains.kotlin.android` from 2.0.0 to 2.0.10 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v2.0.0...v2.0.10) Updates `org.jetbrains.kotlin.plugin.parcelize` from 2.0.0 to 2.0.10 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v2.0.0...v2.0.10) Updates `org.jetbrains.kotlin.plugin.serialization` from 2.0.0 to 2.0.10 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v2.0.0...v2.0.10) --- updated-dependencies: - dependency-name: org.jetbrains.kotlin:kotlin-stdlib dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.jetbrains.kotlin.plugin.compose dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.jetbrains.kotlin.android dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.jetbrains.kotlin.plugin.parcelize dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.jetbrains.kotlin.plugin.serialization dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e7316466f..70d1f97ef 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -27,7 +27,7 @@ glance = "1.1.0" godaddy-colorpicker = "0.7.0" #huawei = "1.8.1.300" #huawei-iap = "6.10.0.300" -kotlin = "2.0.0" +kotlin = "2.0.10" kotlinx-coroutines = "1.8.1" kotlinxSerializationJson = "1.7.1" # see https://github.com/google/ksp/releases for version numbers From cc0952d7c75a25fd57f0217fd9178a69f080bdb2 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Sat, 10 Aug 2024 11:44:08 +0200 Subject: [PATCH 30/76] [Feature] Open list from collection (filtered by the collection) #1534 (#1535) --- .../jtx/ui/collections/CollectionsScreen.kt | 23 ++++++++++++++++++- .../jtx/ui/settings/SettingsStateHolder.kt | 2 +- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/at/techbee/jtx/ui/collections/CollectionsScreen.kt b/app/src/main/java/at/techbee/jtx/ui/collections/CollectionsScreen.kt index 62a257bb0..db908073d 100644 --- a/app/src/main/java/at/techbee/jtx/ui/collections/CollectionsScreen.kt +++ b/app/src/main/java/at/techbee/jtx/ui/collections/CollectionsScreen.kt @@ -42,18 +42,22 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.navigation.NavHostController import androidx.navigation.compose.rememberNavController +import androidx.preference.PreferenceManager import at.techbee.jtx.R import at.techbee.jtx.database.ICalCollection import at.techbee.jtx.database.Module +import at.techbee.jtx.database.locals.StoredListSettingData import at.techbee.jtx.database.views.CollectionsView import at.techbee.jtx.ui.GlobalStateHolder import at.techbee.jtx.ui.reusable.appbars.JtxNavigationDrawer import at.techbee.jtx.ui.reusable.appbars.JtxTopAppBar import at.techbee.jtx.ui.reusable.appbars.OverflowMenu +import at.techbee.jtx.ui.reusable.destinations.FilteredListDestination import at.techbee.jtx.ui.reusable.dialogs.CollectionsAddOrEditDialog import at.techbee.jtx.ui.reusable.dialogs.SelectModuleForTxtImportDialog import at.techbee.jtx.ui.settings.DropdownSettingOption import at.techbee.jtx.ui.settings.SettingsStateHolder +import at.techbee.jtx.ui.settings.SettingsStateHolder.Companion.PREFS_LAST_MODULE import at.techbee.jtx.util.DateTimeUtils import at.techbee.jtx.util.SyncUtil @@ -305,8 +309,25 @@ fun CollectionsScreen( } }, onCollectionClicked = { collection -> - if (globalStateHolder.icalString2Import.value?.isNotEmpty() == true && !collection.readonly) + if (globalStateHolder.icalString2Import.value?.isNotEmpty() == true && !collection.readonly) { importCollection = collection + } else { + val prefs = PreferenceManager.getDefaultSharedPreferences(context) + val lastUsedModule = try { Module.valueOf(prefs.getString(PREFS_LAST_MODULE, null)?: Module.JOURNAL.name) } catch (e: java.lang.IllegalArgumentException) { Module.JOURNAL } + + navController.navigate( + FilteredListDestination.FilteredList.getRoute( + module = when { + lastUsedModule == Module.JOURNAL && collection.supportsVJOURNAL -> lastUsedModule + lastUsedModule == Module.NOTE && collection.supportsVJOURNAL -> lastUsedModule + lastUsedModule == Module.TODO && collection.supportsVTODO -> lastUsedModule + collection.supportsVTODO -> Module.TODO + else -> Module.JOURNAL + }, + storedListSettingData = StoredListSettingData(searchCollection = listOf(collection.displayName?:"")) + ) + ) + } }, onDeleteAccount = { account -> collectionsViewModel.removeAccount(account) } ) diff --git a/app/src/main/java/at/techbee/jtx/ui/settings/SettingsStateHolder.kt b/app/src/main/java/at/techbee/jtx/ui/settings/SettingsStateHolder.kt index e3828f75c..46b1423c6 100644 --- a/app/src/main/java/at/techbee/jtx/ui/settings/SettingsStateHolder.kt +++ b/app/src/main/java/at/techbee/jtx/ui/settings/SettingsStateHolder.kt @@ -19,7 +19,7 @@ class SettingsStateHolder(val context: Context) { companion object { private const val SETTINGS_PRO_INFO_SHOWN = "settingsProInfoShown" - private const val PREFS_LAST_MODULE = "lastUsedModule" + const val PREFS_LAST_MODULE = "lastUsedModule" private const val PREFS_DETAIL_TOP_APP_BAR_MODE = "detailTopAppBarMode" } From 027093951b31817ed6627b0dea9bd4798093b60d Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Sat, 10 Aug 2024 11:45:22 +0200 Subject: [PATCH 31/76] version bump --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 78fc7c091..469cb7518 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -29,8 +29,8 @@ android { buildConfigField("long", "buildTime", "${System.currentTimeMillis()}L") minSdk = 23 targetSdk = 34 - versionCode = 209010003 - versionName = "2.09.01" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) + versionCode = 209020001 + versionName = "2.09.02-alpha01" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) buildConfigField("String", "versionCodename", "\"Pride is a protest \uD83C\uDF08\"") multiDexEnabled = true vectorDrawables.useSupportLibrary = true From 616606d8a8786c872bb57916d58fe341a575557d Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Sun, 11 Aug 2024 22:04:26 +0200 Subject: [PATCH 32/76] New Crowdin updates (#1536) * Update source file strings.xml * New translations strings.xml (Czech) * New translations strings.xml (German) * New translations strings.xml (Dutch) * New translations strings.xml (Portuguese) * New translations strings.xml (Portuguese, Brazilian) --- app/src/main/res/values-cs/strings.xml | 1 + app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values-nl/strings.xml | 1 + 3 files changed, 3 insertions(+) diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 64c468526..cc54618f9 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -383,6 +383,7 @@ Děkujeme vám!" "Rozbalovat dílčí úkoly v seznamu ve výchozím nastavení" "Rozbalovat dílčí poznámky v seznamu ve výchozím nastavení" "Rozbalovat přílohy v seznamu ve výchozím nastavení" + "Ve výchozím nastavení rozbalovat nadřezené položky" "Omlouváme se" "Zpět" "Podrobnosti" diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index d524774f8..fad6691d7 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -384,6 +384,7 @@ Danke!" "Unteraufgaben standardmäßig erweitern" "Unternotizen standardmäßig erweitern" "Anhänge standardmäßig erweitern" + "Übergeordnete Einträge in der Liste standardmäßig erweitern" "Sorry" "Zurück" "Details" diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index d88a105a4..e2fd248e5 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -383,6 +383,7 @@ Dank u!" "Subtaken standaard uitvouwen in lijst" "Subtaken standaard uitvouwen in lijst" "Subtaken standaard uitvouwen in lijst" + "Bovenliggende elementen automatisch uitklappen in lijst" "Sorry" "Terug" "Details" From ef3f50efdbd0d1dd75d6d7869a50c4e52d147522 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 15 Aug 2024 22:41:20 +0200 Subject: [PATCH 33/76] Bump androidx.test:runner from 1.6.1 to 1.6.2 (#1543) Bumps androidx.test:runner from 1.6.1 to 1.6.2. --- updated-dependencies: - dependency-name: androidx.test:runner dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 70d1f97ef..2035c5d52 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,7 +11,7 @@ androidx-core = "1.13.1" androidx-lifecycle = "2.8.4" androidx-preference = "1.2.1" androidx-test-core = "1.6.1" -androidx-test-runner = "1.6.1" +androidx-test-runner = "1.6.2" androidx-test-rules = "1.6.1" androidx-test-junit = "1.2.1" androidx-work = "2.9.0" From a0b2cd5119a553c60f94786b62145dec7381cbbf Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Thu, 15 Aug 2024 22:41:37 +0200 Subject: [PATCH 34/76] New translations strings.xml (Catalan) (#1542) --- app/src/main/res/values-ca/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 9e1eac891..6fc18439c 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -384,6 +384,7 @@ Gràcies!" "Expandeix les tasques en llista per defecte" "Expandeix les sub-notes en llista per defecte" "Expandeix els adjunts en llista per defecte" + "Expandeix els elements superiors en llistes per defecte" "Disculpa" "Enrere" "Detalls" From 0416faab6b8b897aa84ed6933ff56b65b40876c4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 15 Aug 2024 22:41:53 +0200 Subject: [PATCH 35/76] Bump androidx-work from 2.9.0 to 2.9.1 (#1540) Bumps `androidx-work` from 2.9.0 to 2.9.1. Updates `androidx.work:work-runtime-ktx` from 2.9.0 to 2.9.1 Updates `androidx.work:work-testing` from 2.9.0 to 2.9.1 --- updated-dependencies: - dependency-name: androidx.work:work-runtime-ktx dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: androidx.work:work-testing dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2035c5d52..c94866ae6 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -14,7 +14,7 @@ androidx-test-core = "1.6.1" androidx-test-runner = "1.6.2" androidx-test-rules = "1.6.1" androidx-test-junit = "1.2.1" -androidx-work = "2.9.0" +androidx-work = "2.9.1" annotation = "1.8.2" biometricKtx = "1.2.0-alpha05" bitfire-ical4android = "83cda23ceb" From ceeac07958aec2201c259a1da81419b469f5848d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 15 Aug 2024 22:42:19 +0200 Subject: [PATCH 36/76] Bump android-agp from 8.5.1 to 8.5.2 (#1541) Bumps `android-agp` from 8.5.1 to 8.5.2. Updates `com.android.application` from 8.5.1 to 8.5.2 Updates `com.android.test` from 8.5.1 to 8.5.2 --- updated-dependencies: - dependency-name: com.android.application dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: com.android.test dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c94866ae6..0561e124e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,7 @@ [versions] amazonAppstoreSdk = "3.0.5" -android-agp = "8.5.1" +android-agp = "8.5.2" android-desugaring = "2.0.4" androidx-activityCompose = "1.9.1" androidx-appcompat = "1.7.0" From 2447df34eb0444169daa1907e3e60cc28944efb3 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Thu, 15 Aug 2024 22:43:42 +0200 Subject: [PATCH 37/76] version bump --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 469cb7518..8ffc2cf50 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -29,8 +29,8 @@ android { buildConfigField("long", "buildTime", "${System.currentTimeMillis()}L") minSdk = 23 targetSdk = 34 - versionCode = 209020001 - versionName = "2.09.02-alpha01" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) + versionCode = 209020002 + versionName = "2.09.02-beta01" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) buildConfigField("String", "versionCodename", "\"Pride is a protest \uD83C\uDF08\"") multiDexEnabled = true vectorDrawables.useSupportLibrary = true From 0d119da435de699afd0abc8e70fe539dbe7de23d Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Fri, 1 Nov 2024 12:55:14 +0100 Subject: [PATCH 38/76] version bump --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 8ffc2cf50..63c74b0ea 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -29,8 +29,8 @@ android { buildConfigField("long", "buildTime", "${System.currentTimeMillis()}L") minSdk = 23 targetSdk = 34 - versionCode = 209020002 - versionName = "2.09.02-beta01" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) + versionCode = 209020003 + versionName = "2.09.02-beta02" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) buildConfigField("String", "versionCodename", "\"Pride is a protest \uD83C\uDF08\"") multiDexEnabled = true vectorDrawables.useSupportLibrary = true From bd2d3dc29a666dc1d9aaea31c9c84e99ba56c793 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Nov 2024 21:27:46 +0100 Subject: [PATCH 39/76] Bump com.googlecode.libphonenumber:libphonenumber (#1607) Bumps [com.googlecode.libphonenumber:libphonenumber](https://github.com/google/libphonenumber) from 8.13.43 to 8.13.49. - [Release notes](https://github.com/google/libphonenumber/releases) - [Changelog](https://github.com/google/libphonenumber/blob/master/making-metadata-changes.md) - [Commits](https://github.com/google/libphonenumber/compare/v8.13.43...v8.13.49) --- updated-dependencies: - dependency-name: com.googlecode.libphonenumber:libphonenumber dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0561e124e..4ec3cd66f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -32,7 +32,7 @@ kotlinx-coroutines = "1.8.1" kotlinxSerializationJson = "1.7.1" # see https://github.com/google/ksp/releases for version numbers ksp = "2.0.10-1.0.24" -libphonenumber = "8.13.43" +libphonenumber = "8.13.49" mapsCompose = "6.1.1" markdowntext = "1.3.2" mikepenz-aboutLibraries = "11.2.2" From 9f18e1d25d1f6fd3c093520fb22afbd22805a369 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Tue, 5 Nov 2024 21:36:02 +0100 Subject: [PATCH 40/76] Updated compose-bom --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4ec3cd66f..2d41d2d62 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -21,7 +21,7 @@ bitfire-ical4android = "83cda23ceb" calendarCompose = "2.5.4" coilCompose = "2.7.0" compose-accompanist = "0.34.0" -compose-bom = "2024.06.00" +compose-bom = "2024.08.00" compose-navigation = "2.7.7" glance = "1.1.0" godaddy-colorpicker = "0.7.0" From 31dceefbed7329ce0d6575f2df74c2cca3710b1a Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Tue, 5 Nov 2024 21:36:22 +0100 Subject: [PATCH 41/76] version bump --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 63c74b0ea..70dcb9ee4 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -29,8 +29,8 @@ android { buildConfigField("long", "buildTime", "${System.currentTimeMillis()}L") minSdk = 23 targetSdk = 34 - versionCode = 209020003 - versionName = "2.09.02-beta02" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) + versionCode = 209020004 + versionName = "2.09.02-beta03" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) buildConfigField("String", "versionCodename", "\"Pride is a protest \uD83C\uDF08\"") multiDexEnabled = true vectorDrawables.useSupportLibrary = true From 51a41abf7c02d2f097a3992c378dbcc43090c182 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Wed, 6 Nov 2024 18:35:05 +0100 Subject: [PATCH 42/76] version bump --- app/build.gradle.kts | 2 +- fastlane/metadata/android/en-US/changelogs/209020005.txt | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/209020005.txt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 70dcb9ee4..501f32e24 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -30,7 +30,7 @@ android { minSdk = 23 targetSdk = 34 versionCode = 209020004 - versionName = "2.09.02-beta03" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) + versionName = "2.09.02" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) buildConfigField("String", "versionCodename", "\"Pride is a protest \uD83C\uDF08\"") multiDexEnabled = true vectorDrawables.useSupportLibrary = true diff --git a/fastlane/metadata/android/en-US/changelogs/209020005.txt b/fastlane/metadata/android/en-US/changelogs/209020005.txt new file mode 100644 index 000000000..e5a09da28 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/209020005.txt @@ -0,0 +1,2 @@ +- Open filtered list from collections overview +- Added setting to automatically collapse/expand parents in list \ No newline at end of file From 90eec262ebb580c1fdcfdaefc0611c8d2c67d4f2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2024 18:36:23 +0100 Subject: [PATCH 43/76] Bump mikepenz-aboutLibraries from 11.2.2 to 11.2.3 (#1558) Bumps `mikepenz-aboutLibraries` from 11.2.2 to 11.2.3. Updates `com.mikepenz:aboutlibraries-compose-m3` from 11.2.2 to 11.2.3 - [Release notes](https://github.com/mikepenz/AboutLibraries/releases) - [Commits](https://github.com/mikepenz/AboutLibraries/compare/11.2.2...11.2.3) Updates `com.mikepenz.aboutlibraries.plugin` from 11.2.2 to 11.2.3 --- updated-dependencies: - dependency-name: com.mikepenz:aboutlibraries-compose-m3 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: com.mikepenz.aboutlibraries.plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2d41d2d62..ff59e5602 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -35,7 +35,7 @@ ksp = "2.0.10-1.0.24" libphonenumber = "8.13.49" mapsCompose = "6.1.1" markdowntext = "1.3.2" -mikepenz-aboutLibraries = "11.2.2" +mikepenz-aboutLibraries = "11.2.3" mockitoCore = "5.12.0" osmdroidAndroid = "6.1.18" playServicesLocation = "21.3.0" From badd73387db19a9afebe78cdf5123f7c38f3375e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2024 18:36:42 +0100 Subject: [PATCH 44/76] Bump androidx.benchmark:benchmark-macro-junit4 from 1.2.4 to 1.3.3 (#1590) Bumps androidx.benchmark:benchmark-macro-junit4 from 1.2.4 to 1.3.3. --- updated-dependencies: - dependency-name: androidx.benchmark:benchmark-macro-junit4 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ff59e5602..96afa8c3b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -51,7 +51,7 @@ android-billing = "7.0.0" android-review = "2.0.1" espressoCore = "3.6.1" uiautomator = "2.3.0" -benchmarkMacroJunit4 = "1.2.4" +benchmarkMacroJunit4 = "1.3.3" baselineprofile = "1.2.4" [libraries] From ebc851497ffd0e956dcb34cf7c0bc897d5ebfb72 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2024 18:39:27 +0100 Subject: [PATCH 45/76] Bump androidx.baselineprofile from 1.2.4 to 1.3.3 (#1589) Bumps androidx.baselineprofile from 1.2.4 to 1.3.3. --- updated-dependencies: - dependency-name: androidx.baselineprofile dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 96afa8c3b..43faa8a1d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -52,7 +52,7 @@ android-review = "2.0.1" espressoCore = "3.6.1" uiautomator = "2.3.0" benchmarkMacroJunit4 = "1.3.3" -baselineprofile = "1.2.4" +baselineprofile = "1.3.3" [libraries] amazon-appstore-sdk = { module = "com.amazon.device:amazon-appstore-sdk", version.ref = "amazonAppstoreSdk" } From 96868fdab5e14d36beb8506edf7c798057fbf4f5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2024 18:42:08 +0100 Subject: [PATCH 46/76] Bump softprops/action-gh-release from 2.0.8 to 2.0.9 (#1611) Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.0.8 to 2.0.9. - [Release notes](https://github.com/softprops/action-gh-release/releases) - [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md) - [Commits](https://github.com/softprops/action-gh-release/compare/v2.0.8...v2.0.9) --- updated-dependencies: - dependency-name: softprops/action-gh-release dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/create-beta.yml | 2 +- .github/workflows/create-release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/create-beta.yml b/.github/workflows/create-beta.yml index 54464779c..e11ecea7b 100644 --- a/.github/workflows/create-beta.yml +++ b/.github/workflows/create-beta.yml @@ -53,7 +53,7 @@ jobs: run: cp app/build/outputs/apk/ose/release/app-ose-release.apk jtxBoard-${{ github.ref_name }}.apk - name: Create Github release - uses: softprops/action-gh-release@v2.0.8 + uses: softprops/action-gh-release@v2.0.9 with: prerelease: ${{ contains(github.ref_name, '-alpha') || contains(github.ref_name, '-beta') || contains(github.ref_name, '-rc') }} files: | diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 3bda9702c..9e4c4f3b0 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -66,7 +66,7 @@ jobs: run: cp app/build/outputs/apk/ose/release/app-ose-release.apk jtxBoard-${{ github.ref_name }}.apk - name: Create Github release - uses: softprops/action-gh-release@v2.0.8 + uses: softprops/action-gh-release@v2.0.9 with: prerelease: ${{ contains(github.ref_name, '-alpha') || contains(github.ref_name, '-beta') || contains(github.ref_name, '-rc') }} files: | From 83b8e2341673bb5d832fedae063f6880636e51b5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2024 18:44:12 +0100 Subject: [PATCH 47/76] Bump org.osmdroid:osmdroid-android from 6.1.18 to 6.1.20 (#1546) Bumps [org.osmdroid:osmdroid-android](https://github.com/osmdroid/osmdroid) from 6.1.18 to 6.1.20. - [Release notes](https://github.com/osmdroid/osmdroid/releases) - [Changelog](https://github.com/osmdroid/osmdroid/blob/master/CHANGELOG.md) - [Commits](https://github.com/osmdroid/osmdroid/compare/osmdroid-parent-6.1.18...osmdroid-parent-6.1.20) --- updated-dependencies: - dependency-name: org.osmdroid:osmdroid-android dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 43faa8a1d..bb8eed459 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -37,7 +37,7 @@ mapsCompose = "6.1.1" markdowntext = "1.3.2" mikepenz-aboutLibraries = "11.2.3" mockitoCore = "5.12.0" -osmdroidAndroid = "6.1.18" +osmdroidAndroid = "6.1.20" playServicesLocation = "21.3.0" playServicesMaps = "19.0.0" profileinstaller = "1.3.1" From ebc9a8f2c34dd1c7fe09bd46ce7e2bdc05f8a228 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2024 18:56:53 +0100 Subject: [PATCH 48/76] Bump sh.calvin.reorderable:reorderable from 2.3.0 to 2.4.0 (#1593) Bumps [sh.calvin.reorderable:reorderable](https://github.com/Calvin-LL/Reorderable) from 2.3.0 to 2.4.0. - [Release notes](https://github.com/Calvin-LL/Reorderable/releases) - [Commits](https://github.com/Calvin-LL/Reorderable/compare/v2.3.0...v2.4.0) --- updated-dependencies: - dependency-name: sh.calvin.reorderable:reorderable dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index bb8eed459..60f7b780a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -41,7 +41,7 @@ osmdroidAndroid = "6.1.20" playServicesLocation = "21.3.0" playServicesMaps = "19.0.0" profileinstaller = "1.3.1" -reorderable = "2.3.0" +reorderable = "2.4.0" uiTextGoogleFonts = "1.6.8" room = "2.6.1" volley = "1.2.1" From 4eadef168659999fb92418573cc8e25efee998eb Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Wed, 6 Nov 2024 19:02:29 +0100 Subject: [PATCH 49/76] version bump --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 501f32e24..b8e63b10b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -29,8 +29,8 @@ android { buildConfigField("long", "buildTime", "${System.currentTimeMillis()}L") minSdk = 23 targetSdk = 34 - versionCode = 209020004 - versionName = "2.09.02" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) + versionCode = 209030001 + versionName = "2.09.03-alpha01" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) buildConfigField("String", "versionCodename", "\"Pride is a protest \uD83C\uDF08\"") multiDexEnabled = true vectorDrawables.useSupportLibrary = true From 660ef2a3bb88ba4c6ace6fdb9e61df58d93fba61 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Wed, 6 Nov 2024 19:04:49 +0100 Subject: [PATCH 50/76] ksp + kotlin update --- gradle/libs.versions.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 60f7b780a..2e3ad9545 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -27,11 +27,11 @@ glance = "1.1.0" godaddy-colorpicker = "0.7.0" #huawei = "1.8.1.300" #huawei-iap = "6.10.0.300" -kotlin = "2.0.10" +kotlin = "2.0.21" kotlinx-coroutines = "1.8.1" kotlinxSerializationJson = "1.7.1" # see https://github.com/google/ksp/releases for version numbers -ksp = "2.0.10-1.0.24" +ksp = "2.0.21-1.0.26" libphonenumber = "8.13.49" mapsCompose = "6.1.1" markdowntext = "1.3.2" From bd459de61991ea307ed932ed571ea85b53b25f07 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Wed, 6 Nov 2024 19:07:16 +0100 Subject: [PATCH 51/76] uiTextGoogleFonts update --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2e3ad9545..165ee8443 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -42,7 +42,7 @@ playServicesLocation = "21.3.0" playServicesMaps = "19.0.0" profileinstaller = "1.3.1" reorderable = "2.4.0" -uiTextGoogleFonts = "1.6.8" +uiTextGoogleFonts = "1.7.5" room = "2.6.1" volley = "1.2.1" From 6d9cac32205b6c878ac76d18badb90d6129b1943 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Wed, 6 Nov 2024 19:07:31 +0100 Subject: [PATCH 52/76] profileinstaller update --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 165ee8443..2ffc194c1 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -40,7 +40,7 @@ mockitoCore = "5.12.0" osmdroidAndroid = "6.1.20" playServicesLocation = "21.3.0" playServicesMaps = "19.0.0" -profileinstaller = "1.3.1" +profileinstaller = "1.4.1" reorderable = "2.4.0" uiTextGoogleFonts = "1.7.5" room = "2.6.1" From 81c703db0fe0ae6cee478cca8e674a84506838b8 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Wed, 6 Nov 2024 19:07:55 +0100 Subject: [PATCH 53/76] android-review update --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2ffc194c1..e9b454405 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -48,7 +48,7 @@ volley = "1.2.1" # gplay and managed build variants android-billing = "7.0.0" -android-review = "2.0.1" +android-review = "2.0.2" espressoCore = "3.6.1" uiautomator = "2.3.0" benchmarkMacroJunit4 = "1.3.3" From fe3bc3c451a80e268a64fb5620edbab27a0568ce Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Wed, 6 Nov 2024 19:08:13 +0100 Subject: [PATCH 54/76] androidx-core update --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e9b454405..7410d3fff 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -7,7 +7,7 @@ android-desugaring = "2.0.4" androidx-activityCompose = "1.9.1" androidx-appcompat = "1.7.0" androidx-arch = "2.2.0" -androidx-core = "1.13.1" +androidx-core = "1.15.0" androidx-lifecycle = "2.8.4" androidx-preference = "1.2.1" androidx-test-core = "1.6.1" From fa617b71cb8653e0ba65f221fffe0c07eb003e67 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Wed, 6 Nov 2024 19:08:44 +0100 Subject: [PATCH 55/76] androidx-activityCompose update --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7410d3fff..cabfcfc5d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,7 +4,7 @@ amazonAppstoreSdk = "3.0.5" android-agp = "8.5.2" android-desugaring = "2.0.4" -androidx-activityCompose = "1.9.1" +androidx-activityCompose = "1.9.3" androidx-appcompat = "1.7.0" androidx-arch = "2.2.0" androidx-core = "1.15.0" From 9c7d3cd6aa6a369bf9c331b79ab1494e09177e69 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Wed, 6 Nov 2024 19:08:58 +0100 Subject: [PATCH 56/76] android-desugaring update --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index cabfcfc5d..596771643 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ [versions] amazonAppstoreSdk = "3.0.5" android-agp = "8.5.2" -android-desugaring = "2.0.4" +android-desugaring = "2.1.2" androidx-activityCompose = "1.9.3" androidx-appcompat = "1.7.0" androidx-arch = "2.2.0" From 77b77204b561f036f2f5916379a419bc7aca64ae Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Wed, 6 Nov 2024 19:09:17 +0100 Subject: [PATCH 57/76] androidx-lifecycle update --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 596771643..6d342db78 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -8,7 +8,7 @@ androidx-activityCompose = "1.9.3" androidx-appcompat = "1.7.0" androidx-arch = "2.2.0" androidx-core = "1.15.0" -androidx-lifecycle = "2.8.4" +androidx-lifecycle = "2.8.7" androidx-preference = "1.2.1" androidx-test-core = "1.6.1" androidx-test-runner = "1.6.2" From 16d291b37b94711539a38dc85f87cdaef18cfed6 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Wed, 6 Nov 2024 19:09:39 +0100 Subject: [PATCH 58/76] annotation update --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 6d342db78..ab8b154f1 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -15,7 +15,7 @@ androidx-test-runner = "1.6.2" androidx-test-rules = "1.6.1" androidx-test-junit = "1.2.1" androidx-work = "2.9.1" -annotation = "1.8.2" +annotation = "1.9.1" biometricKtx = "1.2.0-alpha05" bitfire-ical4android = "83cda23ceb" calendarCompose = "2.5.4" From f331205b6783fe73e1f572121b2f6d377e15c4d6 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Wed, 6 Nov 2024 19:09:54 +0100 Subject: [PATCH 59/76] androidx-work update --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ab8b154f1..644bb3f19 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -14,7 +14,7 @@ androidx-test-core = "1.6.1" androidx-test-runner = "1.6.2" androidx-test-rules = "1.6.1" androidx-test-junit = "1.2.1" -androidx-work = "2.9.1" +androidx-work = "2.10.0" annotation = "1.9.1" biometricKtx = "1.2.0-alpha05" bitfire-ical4android = "83cda23ceb" From 73301e3d2d638f7cbe8bc3ec3a7c41a166df5813 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Wed, 6 Nov 2024 19:15:38 +0100 Subject: [PATCH 60/76] revert androidx-core update --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 644bb3f19..e1f4dfd7b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -7,7 +7,7 @@ android-desugaring = "2.1.2" androidx-activityCompose = "1.9.3" androidx-appcompat = "1.7.0" androidx-arch = "2.2.0" -androidx-core = "1.15.0" +androidx-core = "1.13.1" androidx-lifecycle = "2.8.7" androidx-preference = "1.2.1" androidx-test-core = "1.6.1" From 61fd7413f3149dd28fcdf2e4eade9ea7d18c1884 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Wed, 6 Nov 2024 19:18:28 +0100 Subject: [PATCH 61/76] Revert "androidx-work update" This reverts commit f331205b6783fe73e1f572121b2f6d377e15c4d6. --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e1f4dfd7b..10feccd61 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -14,7 +14,7 @@ androidx-test-core = "1.6.1" androidx-test-runner = "1.6.2" androidx-test-rules = "1.6.1" androidx-test-junit = "1.2.1" -androidx-work = "2.10.0" +androidx-work = "2.9.1" annotation = "1.9.1" biometricKtx = "1.2.0-alpha05" bitfire-ical4android = "83cda23ceb" From 7fd61d1f6d94f4d8551655cd5a159bc7b1ffd249 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Wed, 6 Nov 2024 19:23:08 +0100 Subject: [PATCH 62/76] glance update --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 10feccd61..0f6bd8a23 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -23,7 +23,7 @@ coilCompose = "2.7.0" compose-accompanist = "0.34.0" compose-bom = "2024.08.00" compose-navigation = "2.7.7" -glance = "1.1.0" +glance = "1.1.1" godaddy-colorpicker = "0.7.0" #huawei = "1.8.1.300" #huawei-iap = "6.10.0.300" From 51cc131d86a20dbf51090713cadbce6acfdaa3d9 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Wed, 6 Nov 2024 19:25:12 +0100 Subject: [PATCH 63/76] version bump --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index b8e63b10b..fd006f3d4 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -29,8 +29,8 @@ android { buildConfigField("long", "buildTime", "${System.currentTimeMillis()}L") minSdk = 23 targetSdk = 34 - versionCode = 209030001 - versionName = "2.09.03-alpha01" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) + versionCode = 209030002 + versionName = "2.09.03-alpha02" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) buildConfigField("String", "versionCodename", "\"Pride is a protest \uD83C\uDF08\"") multiDexEnabled = true vectorDrawables.useSupportLibrary = true From 18593aea172df577a31d089fa6db15e81f6feb27 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Wed, 6 Nov 2024 19:25:44 +0100 Subject: [PATCH 64/76] Update 209020004.txt --- .../android/en-US/changelogs/{209020005.txt => 209020004.txt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename fastlane/metadata/android/en-US/changelogs/{209020005.txt => 209020004.txt} (100%) diff --git a/fastlane/metadata/android/en-US/changelogs/209020005.txt b/fastlane/metadata/android/en-US/changelogs/209020004.txt similarity index 100% rename from fastlane/metadata/android/en-US/changelogs/209020005.txt rename to fastlane/metadata/android/en-US/changelogs/209020004.txt From fc29dcf112db677ca840b5aaf04810a2a76bf62a Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Sun, 10 Nov 2024 18:12:08 +0100 Subject: [PATCH 65/76] android-billing = "7.1.1" --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0f6bd8a23..d114106f8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -47,7 +47,7 @@ room = "2.6.1" volley = "1.2.1" # gplay and managed build variants -android-billing = "7.0.0" +android-billing = "7.1.1" android-review = "2.0.2" espressoCore = "3.6.1" uiautomator = "2.3.0" From 3dd63f52d587a3b71313001424354e0c188411f2 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Sun, 10 Nov 2024 18:14:26 +0100 Subject: [PATCH 66/76] Sort grouped categories and resources correctly (#1621) --- .../techbee/jtx/database/relations/ICal4ListRel.kt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/at/techbee/jtx/database/relations/ICal4ListRel.kt b/app/src/main/java/at/techbee/jtx/database/relations/ICal4ListRel.kt index cf391b715..b749b11e5 100644 --- a/app/src/main/java/at/techbee/jtx/database/relations/ICal4ListRel.kt +++ b/app/src/main/java/at/techbee/jtx/database/relations/ICal4ListRel.kt @@ -97,7 +97,12 @@ data class ICal4ListRel( this[context.getString(R.string.filter_no_category)] = mutableListOf(sortedEntry) } } - } + }.toSortedMap( + if(sortOrder == SortOrder.DESC) + compareByDescending { it.uppercase() } + else + compareBy { it.uppercase() } + ) GroupBy.RESOURCE -> mutableMapOf>().apply { sortedList.forEach { sortedEntry -> if (sortedEntry.resources.isNotEmpty()) { @@ -114,7 +119,12 @@ data class ICal4ListRel( this[context.getString(R.string.filter_no_resource)] = mutableListOf(sortedEntry) } } - } + }.toSortedMap( + if(sortOrder == SortOrder.DESC) + compareByDescending { it.uppercase() } + else + compareBy { it.uppercase() } + ) //GroupBy.CATEGORY -> sortedList.groupBy { if(it.categories.isEmpty()) context.getString(R.string.filter_no_category) else it.categories.joinToString(separator = ", ") { category -> category.text } }.toSortedMap() //GroupBy.RESOURCE -> sortedList.groupBy { if(it.resources.isEmpty()) context.getString(R.string.filter_no_resource) else it.resources.joinToString(separator = ", ") { resource -> resource.text?:"" } }.toSortedMap() GroupBy.STATUS -> sortedList.groupBy { From 8b878c4db0b1975a13b8b791051af3869fcb587d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 10 Nov 2024 18:16:43 +0100 Subject: [PATCH 67/76] Bump org.jetbrains.kotlinx:kotlinx-serialization-json (#1615) Bumps [org.jetbrains.kotlinx:kotlinx-serialization-json](https://github.com/Kotlin/kotlinx.serialization) from 1.7.1 to 1.7.3. - [Release notes](https://github.com/Kotlin/kotlinx.serialization/releases) - [Changelog](https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md) - [Commits](https://github.com/Kotlin/kotlinx.serialization/compare/v1.7.1...v1.7.3) --- updated-dependencies: - dependency-name: org.jetbrains.kotlinx:kotlinx-serialization-json dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d114106f8..06809a08b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -29,7 +29,7 @@ godaddy-colorpicker = "0.7.0" #huawei-iap = "6.10.0.300" kotlin = "2.0.21" kotlinx-coroutines = "1.8.1" -kotlinxSerializationJson = "1.7.1" +kotlinxSerializationJson = "1.7.3" # see https://github.com/google/ksp/releases for version numbers ksp = "2.0.21-1.0.26" libphonenumber = "8.13.49" From 0a03e07bbdb9be7bb7623c8f54f0299efa3775ef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 10 Nov 2024 18:18:05 +0100 Subject: [PATCH 68/76] Bump kotlinx-coroutines from 1.8.1 to 1.9.0 (#1614) Bumps `kotlinx-coroutines` from 1.8.1 to 1.9.0. Updates `org.jetbrains.kotlinx:kotlinx-coroutines-core` from 1.8.1 to 1.9.0 - [Release notes](https://github.com/Kotlin/kotlinx.coroutines/releases) - [Changelog](https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md) - [Commits](https://github.com/Kotlin/kotlinx.coroutines/compare/1.8.1...1.9.0) Updates `org.jetbrains.kotlinx:kotlinx-coroutines-test` from 1.8.1 to 1.9.0 - [Release notes](https://github.com/Kotlin/kotlinx.coroutines/releases) - [Changelog](https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md) - [Commits](https://github.com/Kotlin/kotlinx.coroutines/compare/1.8.1...1.9.0) --- updated-dependencies: - dependency-name: org.jetbrains.kotlinx:kotlinx-coroutines-core dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: org.jetbrains.kotlinx:kotlinx-coroutines-test dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 06809a08b..1d62bfd54 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -28,7 +28,7 @@ godaddy-colorpicker = "0.7.0" #huawei = "1.8.1.300" #huawei-iap = "6.10.0.300" kotlin = "2.0.21" -kotlinx-coroutines = "1.8.1" +kotlinx-coroutines = "1.9.0" kotlinxSerializationJson = "1.7.3" # see https://github.com/google/ksp/releases for version numbers ksp = "2.0.21-1.0.26" From 2bd69b51beb1af1179814d288f2d4e2d3561dc68 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 10 Nov 2024 18:24:25 +0100 Subject: [PATCH 69/76] Bump com.kizitonwose.calendar:compose from 2.5.4 to 2.6.0 (#1617) Bumps [com.kizitonwose.calendar:compose](https://github.com/kizitonwose/calendar) from 2.5.4 to 2.6.0. - [Release notes](https://github.com/kizitonwose/calendar/releases) - [Commits](https://github.com/kizitonwose/calendar/compare/2.5.4...2.6.0) --- updated-dependencies: - dependency-name: com.kizitonwose.calendar:compose dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1d62bfd54..0fba32650 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -18,7 +18,7 @@ androidx-work = "2.9.1" annotation = "1.9.1" biometricKtx = "1.2.0-alpha05" bitfire-ical4android = "83cda23ceb" -calendarCompose = "2.5.4" +calendarCompose = "2.6.0" coilCompose = "2.7.0" compose-accompanist = "0.34.0" compose-bom = "2024.08.00" From fd9ede5eb056f73f8ea784ad567eb3ab2b1576fe Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Sun, 10 Nov 2024 18:29:48 +0100 Subject: [PATCH 70/76] version bump --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index fd006f3d4..ee86ca4ce 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -29,8 +29,8 @@ android { buildConfigField("long", "buildTime", "${System.currentTimeMillis()}L") minSdk = 23 targetSdk = 34 - versionCode = 209030002 - versionName = "2.09.03-alpha02" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) + versionCode = 209030003 + versionName = "2.09.03-beta01" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) buildConfigField("String", "versionCodename", "\"Pride is a protest \uD83C\uDF08\"") multiDexEnabled = true vectorDrawables.useSupportLibrary = true From 7d1e6d87982ae39a2e5a58022603b2a18426fa75 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 10 Nov 2024 22:18:21 +0100 Subject: [PATCH 71/76] Bump androidx.compose:compose-bom from 2024.06.00 to 2024.10.01 (#1608) * Bump androidx.compose:compose-bom from 2024.06.00 to 2024.10.01 Bumps androidx.compose:compose-bom from 2024.06.00 to 2024.10.01. --- updated-dependencies: - dependency-name: androidx.compose:compose-bom dependency-type: direct:production ... Signed-off-by: dependabot[bot] * Bump androidx.compose:compose-bom from 2024.06.00 to 2024.10.01 Bumps androidx.compose:compose-bom from 2024.06.00 to 2024.10.01. --- updated-dependencies: - dependency-name: androidx.compose:compose-bom dependency-type: direct:production ... Signed-off-by: dependabot[bot] * Replaced PullToRefreshContainer with PullToRefreshBox * compose-navigation = "2.8.3" --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> --- .../java/at/techbee/jtx/ui/list/ListScreen.kt | 244 +++++++------- .../techbee/jtx/ui/list/ListScreenCompact.kt | 269 +++++++--------- .../at/techbee/jtx/ui/list/ListScreenGrid.kt | 172 ++++------ .../techbee/jtx/ui/list/ListScreenKanban.kt | 247 +++++++------- .../at/techbee/jtx/ui/list/ListScreenList.kt | 302 ++++++++---------- .../jtx/ui/list/ListScreenTabContainer.kt | 57 +++- gradle/libs.versions.toml | 4 +- 7 files changed, 591 insertions(+), 704 deletions(-) diff --git a/app/src/main/java/at/techbee/jtx/ui/list/ListScreen.kt b/app/src/main/java/at/techbee/jtx/ui/list/ListScreen.kt index 94d601329..64eb5dfd4 100644 --- a/app/src/main/java/at/techbee/jtx/ui/list/ListScreen.kt +++ b/app/src/main/java/at/techbee/jtx/ui/list/ListScreen.kt @@ -10,12 +10,9 @@ package at.techbee.jtx.ui.list import android.widget.Toast -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState -import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.navigation.NavController import at.techbee.jtx.database.ICalDatabase @@ -24,7 +21,6 @@ import at.techbee.jtx.database.views.ICal4List import at.techbee.jtx.flavored.BillingManager import at.techbee.jtx.ui.reusable.destinations.DetailDestination import at.techbee.jtx.ui.settings.SettingsStateHolder -import at.techbee.jtx.util.SyncUtil @Composable @@ -35,7 +31,6 @@ fun ListScreen( val context = LocalContext.current val database = ICalDatabase.getInstance(context).iCalDatabaseDao() val settingsStateHolder = SettingsStateHolder(context) - val isPullRefreshEnabled = SyncUtil.availableSyncApps(context).any { SyncUtil.isSyncAppCompatible(it, context) } && settingsStateHolder.settingSyncOnPullRefresh.value listViewModel.toastMessage.value?.let { Toast.makeText(context, it, Toast.LENGTH_SHORT).show() @@ -73,132 +68,123 @@ fun ListScreen( ) } - Column(modifier = Modifier.fillMaxSize()) { - when (listViewModel.listSettings.viewMode.value) { - ViewMode.LIST -> { - ListScreenList( - groupedList = groupedList, - subtasksLive = listViewModel.allSubtasks, - subnotesLive = listViewModel.allSubnotes, - parentsLive = listViewModel.allParents, - selectedEntries = listViewModel.selectedEntries, - attachmentsLive = listViewModel.allAttachmentsMap, - scrollOnceId = listViewModel.scrollOnceId, - listSettings = listViewModel.listSettings, - storedCategories = database.getStoredCategories().observeAsState(emptyList()).value, - storedResources = database.getStoredResources().observeAsState(emptyList()).value, - storedStatuses = database.getStoredStatuses().observeAsState(emptyList()).value, - isSubtasksExpandedDefault = settingsStateHolder.settingAutoExpandSubtasks.value, - isSubnotesExpandedDefault = settingsStateHolder.settingAutoExpandSubnotes.value, - isAttachmentsExpandedDefault = settingsStateHolder.settingAutoExpandAttachments.value, - isParentsExpandedDefault = settingsStateHolder.settingAutoExpandParents.value, - settingShowProgressMaintasks = settingsStateHolder.settingShowProgressForMainTasks.value, - settingShowProgressSubtasks = settingsStateHolder.settingShowProgressForSubTasks.value, - settingProgressIncrement = settingsStateHolder.settingStepForProgress.value, - settingLinkProgressToSubtasks = settingsStateHolder.settingLinkProgressToSubtasks.value, - settingDisplayTimezone = settingsStateHolder.settingDisplayTimezone.value, - settingIsAccessibilityMode = settingsStateHolder.settingAccessibilityMode.value, - isPullRefreshEnabled = isPullRefreshEnabled, - markdownEnabled = listViewModel.listSettings.markdownEnabled.value, - player = listViewModel.mediaPlayer, - isListDragAndDropEnabled = listViewModel.listSettings.orderBy.value == OrderBy.DRAG_AND_DROP || listViewModel.listSettings.orderBy2.value == OrderBy.DRAG_AND_DROP, - isSubtaskDragAndDropEnabled = listViewModel.listSettings.subtasksOrderBy.value == OrderBy.DRAG_AND_DROP, - isSubnoteDragAndDropEnabled = listViewModel.listSettings.subnotesOrderBy.value == OrderBy.DRAG_AND_DROP, - onClick = { itemId, ical4list, isReadOnly -> processOnClick(itemId, ical4list, isReadOnly) }, - onLongClick = { itemId, ical4list -> processOnLongClick(itemId, ical4list) }, - onProgressChanged = { itemId, newPercent -> - processOnProgressChanged(itemId, newPercent) - }, - onExpandedChanged = { itemId: Long, isSubtasksExpanded: Boolean, isSubnotesExpanded: Boolean, isParentsExpanded: Boolean, isAttachmentsExpanded: Boolean -> - listViewModel.updateExpanded( - itemId, - isSubtasksExpanded, - isSubnotesExpanded, - isParentsExpanded, - isAttachmentsExpanded - ) - }, - onSyncRequested = { listViewModel.syncAccounts() }, - onSaveListSettings = { listViewModel.saveListSettings() }, - onUpdateSortOrder = { listViewModel.updateSortOrder(it) } - ) - } - ViewMode.GRID -> { - ListScreenGrid( - list = list, - subtasksLive = listViewModel.allSubtasks, - storedCategories = database.getStoredCategories().observeAsState(emptyList()).value, - storedStatuses = database.getStoredStatuses().observeAsState(emptyList()).value, - selectedEntries = listViewModel.selectedEntries, - scrollOnceId = listViewModel.scrollOnceId, - settingLinkProgressToSubtasks = settingsStateHolder.settingLinkProgressToSubtasks.value, - isPullRefreshEnabled = isPullRefreshEnabled, - markdownEnabled = listViewModel.listSettings.markdownEnabled.value, - player = listViewModel.mediaPlayer, - onClick = { itemId, ical4list, isReadOnly -> processOnClick(itemId, ical4list, isReadOnly) }, - onLongClick = { itemId, ical4list -> processOnLongClick(itemId, ical4list) }, - onProgressChanged = { itemId, newPercent -> - processOnProgressChanged(itemId, newPercent) - }, - onSyncRequested = { listViewModel.syncAccounts() }, - isListDragAndDropEnabled = listViewModel.listSettings.orderBy.value == OrderBy.DRAG_AND_DROP || listViewModel.listSettings.orderBy2.value == OrderBy.DRAG_AND_DROP + + when (listViewModel.listSettings.viewMode.value) { + ViewMode.LIST -> { + ListScreenList( + groupedList = groupedList, + subtasksLive = listViewModel.allSubtasks, + subnotesLive = listViewModel.allSubnotes, + parentsLive = listViewModel.allParents, + selectedEntries = listViewModel.selectedEntries, + attachmentsLive = listViewModel.allAttachmentsMap, + scrollOnceId = listViewModel.scrollOnceId, + listSettings = listViewModel.listSettings, + storedCategories = database.getStoredCategories().observeAsState(emptyList()).value, + storedResources = database.getStoredResources().observeAsState(emptyList()).value, + storedStatuses = database.getStoredStatuses().observeAsState(emptyList()).value, + isSubtasksExpandedDefault = settingsStateHolder.settingAutoExpandSubtasks.value, + isSubnotesExpandedDefault = settingsStateHolder.settingAutoExpandSubnotes.value, + isAttachmentsExpandedDefault = settingsStateHolder.settingAutoExpandAttachments.value, + isParentsExpandedDefault = settingsStateHolder.settingAutoExpandParents.value, + settingShowProgressMaintasks = settingsStateHolder.settingShowProgressForMainTasks.value, + settingShowProgressSubtasks = settingsStateHolder.settingShowProgressForSubTasks.value, + settingProgressIncrement = settingsStateHolder.settingStepForProgress.value, + settingLinkProgressToSubtasks = settingsStateHolder.settingLinkProgressToSubtasks.value, + settingDisplayTimezone = settingsStateHolder.settingDisplayTimezone.value, + settingIsAccessibilityMode = settingsStateHolder.settingAccessibilityMode.value, + markdownEnabled = listViewModel.listSettings.markdownEnabled.value, + player = listViewModel.mediaPlayer, + isListDragAndDropEnabled = listViewModel.listSettings.orderBy.value == OrderBy.DRAG_AND_DROP || listViewModel.listSettings.orderBy2.value == OrderBy.DRAG_AND_DROP, + isSubtaskDragAndDropEnabled = listViewModel.listSettings.subtasksOrderBy.value == OrderBy.DRAG_AND_DROP, + isSubnoteDragAndDropEnabled = listViewModel.listSettings.subnotesOrderBy.value == OrderBy.DRAG_AND_DROP, + onClick = { itemId, ical4list, isReadOnly -> processOnClick(itemId, ical4list, isReadOnly) }, + onLongClick = { itemId, ical4list -> processOnLongClick(itemId, ical4list) }, + onProgressChanged = { itemId, newPercent -> + processOnProgressChanged(itemId, newPercent) + }, + onExpandedChanged = { itemId: Long, isSubtasksExpanded: Boolean, isSubnotesExpanded: Boolean, isParentsExpanded: Boolean, isAttachmentsExpanded: Boolean -> + listViewModel.updateExpanded( + itemId, + isSubtasksExpanded, + isSubnotesExpanded, + isParentsExpanded, + isAttachmentsExpanded ) - } - ViewMode.COMPACT -> { - ListScreenCompact( - groupedList = groupedList, - subtasksLive = listViewModel.allSubtasks, - storedCategories = database.getStoredCategories().observeAsState(emptyList()).value, - storedStatuses = database.getStoredStatuses().observeAsState(emptyList()).value, - selectedEntries = listViewModel.selectedEntries, - scrollOnceId = listViewModel.scrollOnceId, - listSettings = listViewModel.listSettings, - settingLinkProgressToSubtasks = settingsStateHolder.settingLinkProgressToSubtasks.value, - isPullRefreshEnabled = isPullRefreshEnabled, - player = listViewModel.mediaPlayer, - isListDragAndDropEnabled = listViewModel.listSettings.orderBy.value == OrderBy.DRAG_AND_DROP || listViewModel.listSettings.orderBy2.value == OrderBy.DRAG_AND_DROP, - isSubtaskDragAndDropEnabled = listViewModel.listSettings.subtasksOrderBy.value == OrderBy.DRAG_AND_DROP, - onClick = { itemId, ical4list, isReadOnly -> processOnClick(itemId, ical4list, isReadOnly) }, - onLongClick = { itemId, ical4list -> processOnLongClick(itemId, ical4list) }, - onProgressChanged = { itemId, newPercent -> processOnProgressChanged(itemId, newPercent) }, - onSyncRequested = { listViewModel.syncAccounts() }, - onSaveListSettings = { listViewModel.saveListSettings() }, - onUpdateSortOrder = { listViewModel.updateSortOrder(it) } - ) - } - ViewMode.KANBAN -> { - ListScreenKanban( - module = listViewModel.module, - list = list, - subtasksLive = listViewModel.allSubtasks, - storedCategories = database.getStoredCategories().observeAsState(emptyList()).value, - storedStatuses = database.getStoredStatuses().observeAsState(emptyList()).value, - selectedEntries = listViewModel.selectedEntries, - kanbanColumnsStatus = listViewModel.listSettings.kanbanColumnsStatus, - kanbanColumnsXStatus = listViewModel.listSettings.kanbanColumnsXStatus, - kanbanColumnsCategory = listViewModel.listSettings.kanbanColumnsCategory, - scrollOnceId = listViewModel.scrollOnceId, - settingLinkProgressToSubtasks = settingsStateHolder.settingLinkProgressToSubtasks.value, - isPullRefreshEnabled = isPullRefreshEnabled, - markdownEnabled = listViewModel.listSettings.markdownEnabled.value, - player = listViewModel.mediaPlayer, - onClick = { itemId, ical4list, isReadOnly -> processOnClick(itemId, ical4list, isReadOnly) }, - onLongClick = { itemId, ical4list -> processOnLongClick(itemId, ical4list) }, - onStatusChanged = { itemId, newStatus, scrollOnce -> listViewModel.updateStatus(itemId, newStatus, scrollOnce) }, - onXStatusChanged = { itemId, newXStatus, scrollOnce -> listViewModel.updateXStatus(itemId, newXStatus, scrollOnce) }, - onSwapCategories = { itemId, oldCategory, newCategory -> listViewModel.swapCategories(itemId, oldCategory, newCategory) }, - onSyncRequested = { listViewModel.syncAccounts() } - ) - } - ViewMode.WEEK -> { - ListScreenWeek( - list = list, - selectedEntries = listViewModel.selectedEntries, - scrollOnceId = listViewModel.scrollOnceId, - onClick = { itemId, ical4list, isReadOnly -> processOnClick(itemId, ical4list, isReadOnly) }, - onLongClick = { itemId, ical4list -> processOnLongClick(itemId, ical4list) }, + }, + onSaveListSettings = { listViewModel.saveListSettings() }, + onUpdateSortOrder = { listViewModel.updateSortOrder(it) } + ) + } + ViewMode.GRID -> { + ListScreenGrid( + list = list, + subtasksLive = listViewModel.allSubtasks, + storedCategories = database.getStoredCategories().observeAsState(emptyList()).value, + storedStatuses = database.getStoredStatuses().observeAsState(emptyList()).value, + selectedEntries = listViewModel.selectedEntries, + scrollOnceId = listViewModel.scrollOnceId, + settingLinkProgressToSubtasks = settingsStateHolder.settingLinkProgressToSubtasks.value, + markdownEnabled = listViewModel.listSettings.markdownEnabled.value, + player = listViewModel.mediaPlayer, + onClick = { itemId, ical4list, isReadOnly -> processOnClick(itemId, ical4list, isReadOnly) }, + onLongClick = { itemId, ical4list -> processOnLongClick(itemId, ical4list) }, + onProgressChanged = { itemId, newPercent -> + processOnProgressChanged(itemId, newPercent) + }, + isListDragAndDropEnabled = listViewModel.listSettings.orderBy.value == OrderBy.DRAG_AND_DROP || listViewModel.listSettings.orderBy2.value == OrderBy.DRAG_AND_DROP ) - } + } + ViewMode.COMPACT -> { + ListScreenCompact( + groupedList = groupedList, + subtasksLive = listViewModel.allSubtasks, + storedCategories = database.getStoredCategories().observeAsState(emptyList()).value, + storedStatuses = database.getStoredStatuses().observeAsState(emptyList()).value, + selectedEntries = listViewModel.selectedEntries, + scrollOnceId = listViewModel.scrollOnceId, + listSettings = listViewModel.listSettings, + settingLinkProgressToSubtasks = settingsStateHolder.settingLinkProgressToSubtasks.value, + player = listViewModel.mediaPlayer, + isListDragAndDropEnabled = listViewModel.listSettings.orderBy.value == OrderBy.DRAG_AND_DROP || listViewModel.listSettings.orderBy2.value == OrderBy.DRAG_AND_DROP, + isSubtaskDragAndDropEnabled = listViewModel.listSettings.subtasksOrderBy.value == OrderBy.DRAG_AND_DROP, + onClick = { itemId, ical4list, isReadOnly -> processOnClick(itemId, ical4list, isReadOnly) }, + onLongClick = { itemId, ical4list -> processOnLongClick(itemId, ical4list) }, + onProgressChanged = { itemId, newPercent -> processOnProgressChanged(itemId, newPercent) }, + onSaveListSettings = { listViewModel.saveListSettings() }, + onUpdateSortOrder = { listViewModel.updateSortOrder(it) } + ) + } + ViewMode.KANBAN -> { + ListScreenKanban( + module = listViewModel.module, + list = list, + subtasksLive = listViewModel.allSubtasks, + storedCategories = database.getStoredCategories().observeAsState(emptyList()).value, + storedStatuses = database.getStoredStatuses().observeAsState(emptyList()).value, + selectedEntries = listViewModel.selectedEntries, + kanbanColumnsStatus = listViewModel.listSettings.kanbanColumnsStatus, + kanbanColumnsXStatus = listViewModel.listSettings.kanbanColumnsXStatus, + kanbanColumnsCategory = listViewModel.listSettings.kanbanColumnsCategory, + scrollOnceId = listViewModel.scrollOnceId, + settingLinkProgressToSubtasks = settingsStateHolder.settingLinkProgressToSubtasks.value, + markdownEnabled = listViewModel.listSettings.markdownEnabled.value, + player = listViewModel.mediaPlayer, + onClick = { itemId, ical4list, isReadOnly -> processOnClick(itemId, ical4list, isReadOnly) }, + onLongClick = { itemId, ical4list -> processOnLongClick(itemId, ical4list) }, + onStatusChanged = { itemId, newStatus, scrollOnce -> listViewModel.updateStatus(itemId, newStatus, scrollOnce) }, + onXStatusChanged = { itemId, newXStatus, scrollOnce -> listViewModel.updateXStatus(itemId, newXStatus, scrollOnce) }, + onSwapCategories = { itemId, oldCategory, newCategory -> listViewModel.swapCategories(itemId, oldCategory, newCategory) } + ) + } + ViewMode.WEEK -> { + ListScreenWeek( + list = list, + selectedEntries = listViewModel.selectedEntries, + scrollOnceId = listViewModel.scrollOnceId, + onClick = { itemId, ical4list, isReadOnly -> processOnClick(itemId, ical4list, isReadOnly) }, + onLongClick = { itemId, ical4list -> processOnLongClick(itemId, ical4list) }, + ) } } } diff --git a/app/src/main/java/at/techbee/jtx/ui/list/ListScreenCompact.kt b/app/src/main/java/at/techbee/jtx/ui/list/ListScreenCompact.kt index 28157a0b8..dd4ad4242 100644 --- a/app/src/main/java/at/techbee/jtx/ui/list/ListScreenCompact.kt +++ b/app/src/main/java/at/techbee/jtx/ui/list/ListScreenCompact.kt @@ -19,7 +19,6 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items @@ -30,14 +29,11 @@ import androidx.compose.material.icons.outlined.ArrowDropUp import androidx.compose.material.icons.outlined.VerticalAlignTop import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults -import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.material3.TextButton -import androidx.compose.material3.pulltorefresh.PullToRefreshContainer -import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -52,7 +48,6 @@ import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb -import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview @@ -78,7 +73,7 @@ import sh.calvin.reorderable.rememberReorderableLazyListState import java.util.UUID -@OptIn(ExperimentalFoundationApi::class, ExperimentalMaterial3Api::class) +@OptIn(ExperimentalFoundationApi::class) @Composable fun ListScreenCompact( groupedList: Map>, @@ -89,14 +84,12 @@ fun ListScreenCompact( scrollOnceId: MutableLiveData, listSettings: ListSettings, settingLinkProgressToSubtasks: Boolean, - isPullRefreshEnabled: Boolean, player: MediaPlayer?, isListDragAndDropEnabled: Boolean, isSubtaskDragAndDropEnabled: Boolean, onProgressChanged: (itemId: Long, newPercent: Int) -> Unit, onClick: (itemId: Long, list: List, isReadOnly: Boolean) -> Unit, onLongClick: (itemId: Long, list: List) -> Unit, - onSyncRequested: () -> Unit, onSaveListSettings: () -> Unit, onUpdateSortOrder: (List) -> Unit ) { @@ -115,168 +108,150 @@ fun ListScreenCompact( } val scope = rememberCoroutineScope() - val pullToRefreshState = rememberPullToRefreshState( - enabled = { isPullRefreshEnabled } - ) - LaunchedEffect(pullToRefreshState.isRefreshing) { - if(pullToRefreshState.isRefreshing) { - onSyncRequested() - pullToRefreshState.endRefresh() - } - } - - Box( - contentAlignment = Alignment.TopCenter, - modifier = Modifier.fillMaxSize().nestedScroll(pullToRefreshState.nestedScrollConnection) + LazyColumn( + modifier = Modifier + .padding(start = 2.dp, end = 2.dp) + .fillMaxSize(), + state = listState, ) { - LazyColumn( - modifier = Modifier.padding(start = 2.dp, end = 2.dp).fillMaxSize(), - state = listState, - ) { - groupedList.forEach { (groupName, group) -> + groupedList.forEach { (groupName, group) -> - if (groupedList.keys.size > 1) { - stickyHeader { + if (groupedList.keys.size > 1) { + stickyHeader { - Row( - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.Center, - modifier = Modifier - .fillMaxWidth() - .background(MaterialTheme.colorScheme.background) + Row( + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.Center, + modifier = Modifier + .fillMaxWidth() + .background(MaterialTheme.colorScheme.background) - ) { - TextButton(onClick = { - if (listSettings.collapsedGroups.contains(groupName)) - listSettings.collapsedGroups.remove(groupName) - else - listSettings.collapsedGroups.add(groupName) - onSaveListSettings() - }) { - Text( - text = groupName, - style = MaterialTheme.typography.titleMedium, - modifier = Modifier.padding(horizontal = 4.dp) - ) + ) { + TextButton(onClick = { + if (listSettings.collapsedGroups.contains(groupName)) + listSettings.collapsedGroups.remove(groupName) + else + listSettings.collapsedGroups.add(groupName) + onSaveListSettings() + }) { + Text( + text = groupName, + style = MaterialTheme.typography.titleMedium, + modifier = Modifier.padding(horizontal = 4.dp) + ) - if (listSettings.collapsedGroups.contains(groupName)) - Icon(Icons.Outlined.ArrowDropUp, stringResource(R.string.list_collapse)) - else - Icon(Icons.Outlined.ArrowDropDown, stringResource(R.string.list_expand)) - } + if (listSettings.collapsedGroups.contains(groupName)) + Icon(Icons.Outlined.ArrowDropUp, stringResource(R.string.list_collapse)) + else + Icon(Icons.Outlined.ArrowDropDown, stringResource(R.string.list_expand)) } } } + } - if (groupedList.keys.size <= 1 || (groupedList.keys.size > 1 && !listSettings.collapsedGroups.contains(groupName))) { - items( - items = group.toList(), - key = { item -> - if(listSettings.groupBy.value == GroupBy.CATEGORY || listSettings.groupBy.value == GroupBy.RESOURCE) - item.iCal4List.id.toString() + UUID.randomUUID() - else - item.iCal4List.id - } - ) - { iCal4ListRelObject -> + if (groupedList.keys.size <= 1 || (groupedList.keys.size > 1 && !listSettings.collapsedGroups.contains(groupName))) { + items( + items = group.toList(), + key = { item -> + if(listSettings.groupBy.value == GroupBy.CATEGORY || listSettings.groupBy.value == GroupBy.RESOURCE) + item.iCal4List.id.toString() + UUID.randomUUID() + else + item.iCal4List.id + } + ) + { iCal4ListRelObject -> - var currentSubtasks = - subtasks.filter { iCal4ListRel -> iCal4ListRel.relatedto.any { relatedto -> relatedto.reltype == Reltype.PARENT.name && relatedto.text == iCal4ListRelObject.iCal4List.uid } } - .map { it.iCal4List } - if (listSettings.isExcludeDone.value) // exclude done if applicable - currentSubtasks = currentSubtasks.filter { subtask -> subtask.percent != 100 && subtask.status != Status.COMPLETED.status } + var currentSubtasks = + subtasks.filter { iCal4ListRel -> iCal4ListRel.relatedto.any { relatedto -> relatedto.reltype == Reltype.PARENT.name && relatedto.text == iCal4ListRelObject.iCal4List.uid } } + .map { it.iCal4List } + if (listSettings.isExcludeDone.value) // exclude done if applicable + currentSubtasks = currentSubtasks.filter { subtask -> subtask.percent != 100 && subtask.status != Status.COMPLETED.status } - if (scrollId != null) { - LaunchedEffect(group) { - val index = group.indexOfFirst { iCalObject -> iCalObject.iCal4List.id == scrollId } - if (index > -1) { - listState.scrollToItem(index) - scrollOnceId.postValue(null) - } + if (scrollId != null) { + LaunchedEffect(group) { + val index = group.indexOfFirst { iCalObject -> iCalObject.iCal4List.id == scrollId } + if (index > -1) { + listState.scrollToItem(index) + scrollOnceId.postValue(null) } } + } - ReorderableItem( - reorderableLazyListState, - key = iCal4ListRelObject.iCal4List.id - ) { _ -> - ListCardCompact( - iCal4ListRelObject.iCal4List, - storedCategories = storedCategories, - storedStatuses = storedStatuses, - subtasks = currentSubtasks, - progressUpdateDisabled = settingLinkProgressToSubtasks && currentSubtasks.isNotEmpty(), - selected = selectedEntries, - player = player, - isSubtaskDragAndDropEnabled = isSubtaskDragAndDropEnabled, - dragHandle = { - if(isListDragAndDropEnabled) - DragHandleLazy(this) - }, - modifier = Modifier - .fillMaxWidth() - .padding(top = 4.dp, bottom = 4.dp) - .clip(jtxCardCornerShape) - .combinedClickable( - onClick = { - onClick( + ReorderableItem( + reorderableLazyListState, + key = iCal4ListRelObject.iCal4List.id + ) { _ -> + ListCardCompact( + iCal4ListRelObject.iCal4List, + storedCategories = storedCategories, + storedStatuses = storedStatuses, + subtasks = currentSubtasks, + progressUpdateDisabled = settingLinkProgressToSubtasks && currentSubtasks.isNotEmpty(), + selected = selectedEntries, + player = player, + isSubtaskDragAndDropEnabled = isSubtaskDragAndDropEnabled, + dragHandle = { + if(isListDragAndDropEnabled) + DragHandleLazy(this) + }, + modifier = Modifier + .fillMaxWidth() + .padding(top = 4.dp, bottom = 4.dp) + .clip(jtxCardCornerShape) + .combinedClickable( + onClick = { + onClick( + iCal4ListRelObject.iCal4List.id, + groupedList + .flatMap { it.value } + .map { it.iCal4List }, + iCal4ListRelObject.iCal4List.isReadOnly, + ) + }, + onLongClick = { + if (!iCal4ListRelObject.iCal4List.isReadOnly) + onLongClick( iCal4ListRelObject.iCal4List.id, groupedList .flatMap { it.value } - .map { it.iCal4List }, - iCal4ListRelObject.iCal4List.isReadOnly, - ) - }, - onLongClick = { - if (!iCal4ListRelObject.iCal4List.isReadOnly) - onLongClick( - iCal4ListRelObject.iCal4List.id, - groupedList - .flatMap { it.value } - .map { it.iCal4List }) - } - ), - onProgressChanged = onProgressChanged, - onClick = onClick, - onLongClick = onLongClick, - onUpdateSortOrder = onUpdateSortOrder - ) - } - - if (iCal4ListRelObject != group.last()) - HorizontalDivider( - color = MaterialTheme.colorScheme.onSurfaceVariant, - modifier = Modifier.alpha(0.25f) - ) + .map { it.iCal4List }) + } + ), + onProgressChanged = onProgressChanged, + onClick = onClick, + onLongClick = onLongClick, + onUpdateSortOrder = onUpdateSortOrder + ) } + + if (iCal4ListRelObject != group.last()) + HorizontalDivider( + color = MaterialTheme.colorScheme.onSurfaceVariant, + modifier = Modifier.alpha(0.25f) + ) } } } + } - PullToRefreshContainer( - modifier = Modifier.align(Alignment.TopCenter).offset(y = (-30).dp), - state = pullToRefreshState, - ) - - Crossfade(listState.canScrollBackward, label = "showScrollUp") { - if(it) { - Box( - contentAlignment = Alignment.BottomCenter, - modifier = Modifier.fillMaxSize() + Crossfade(listState.canScrollBackward, label = "showScrollUp") { + if(it) { + Box( + contentAlignment = Alignment.BottomCenter, + modifier = Modifier.fillMaxSize() + ) { + Button( + onClick = { + scope.launch { listState.scrollToItem(0) } + }, + colors = ButtonDefaults.filledTonalButtonColors(), + modifier = Modifier + .padding(8.dp) + .alpha(0.33f) ) { - Button( - onClick = { - scope.launch { listState.scrollToItem(0) } - }, - colors = ButtonDefaults.filledTonalButtonColors(), - modifier = Modifier - .padding(8.dp) - .alpha(0.33f) - ) { - Icon(Icons.Outlined.VerticalAlignTop, stringResource(R.string.list_scroll_to_top)) - } + Icon(Icons.Outlined.VerticalAlignTop, stringResource(R.string.list_scroll_to_top)) } } } @@ -335,14 +310,12 @@ fun ListScreenCompact_TODO() { selectedEntries = remember { mutableStateListOf() }, listSettings = listSettings, settingLinkProgressToSubtasks = false, - isPullRefreshEnabled = true, player = null, isListDragAndDropEnabled = true, isSubtaskDragAndDropEnabled = true, onProgressChanged = { _, _ -> }, onClick = { _, _, _ -> }, onLongClick = { _, _ -> }, - onSyncRequested = { }, onSaveListSettings = { }, onUpdateSortOrder = { } ) @@ -402,14 +375,12 @@ fun ListScreenCompact_JOURNAL() { scrollOnceId = MutableLiveData(null), listSettings = listSettings, settingLinkProgressToSubtasks = false, - isPullRefreshEnabled = true, player = null, isListDragAndDropEnabled = true, isSubtaskDragAndDropEnabled = true, onProgressChanged = { _, _ -> }, onClick = { _, _, _ -> }, onLongClick = { _, _ -> }, - onSyncRequested = { }, onSaveListSettings = { }, onUpdateSortOrder = { } ) diff --git a/app/src/main/java/at/techbee/jtx/ui/list/ListScreenGrid.kt b/app/src/main/java/at/techbee/jtx/ui/list/ListScreenGrid.kt index a7f8a812c..070b51a62 100644 --- a/app/src/main/java/at/techbee/jtx/ui/list/ListScreenGrid.kt +++ b/app/src/main/java/at/techbee/jtx/ui/list/ListScreenGrid.kt @@ -17,7 +17,6 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.staggeredgrid.LazyVerticalStaggeredGrid import androidx.compose.foundation.lazy.staggeredgrid.StaggeredGridCells @@ -27,11 +26,8 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.VerticalAlignTop import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults -import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.pulltorefresh.PullToRefreshContainer -import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -46,7 +42,6 @@ import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb -import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview @@ -71,7 +66,7 @@ import sh.calvin.reorderable.ReorderableItem import sh.calvin.reorderable.rememberReorderableLazyStaggeredGridState -@OptIn(ExperimentalFoundationApi::class, ExperimentalMaterial3Api::class) +@OptIn(ExperimentalFoundationApi::class) @Composable fun ListScreenGrid( list: List, @@ -81,14 +76,12 @@ fun ListScreenGrid( selectedEntries: SnapshotStateList, scrollOnceId: MutableLiveData, settingLinkProgressToSubtasks: Boolean, - isPullRefreshEnabled: Boolean, markdownEnabled: Boolean, player: MediaPlayer?, isListDragAndDropEnabled: Boolean, onProgressChanged: (itemId: Long, newPercent: Int) -> Unit, onClick: (itemId: Long, list: List, isReadOnly: Boolean) -> Unit, - onLongClick: (itemId: Long, list: List) -> Unit, - onSyncRequested: () -> Unit + onLongClick: (itemId: Long, list: List) -> Unit ) { val context = LocalContext.current @@ -115,106 +108,81 @@ fun ListScreenGrid( } } - val pullToRefreshState = rememberPullToRefreshState( - enabled = { isPullRefreshEnabled } - ) - LaunchedEffect(pullToRefreshState.isRefreshing) { - if(pullToRefreshState.isRefreshing) { - onSyncRequested() - pullToRefreshState.endRefresh() - } - } - - Box( - modifier = Modifier - .fillMaxSize() - .nestedScroll(pullToRefreshState.nestedScrollConnection), - contentAlignment = Alignment.TopCenter + LazyVerticalStaggeredGrid( + state = gridState, + columns = StaggeredGridCells.Adaptive(150.dp), + contentPadding = PaddingValues(8.dp), + verticalItemSpacing = 8.dp, + horizontalArrangement = Arrangement.spacedBy(8.dp), + modifier = Modifier.fillMaxSize() ) { + items( + items = list, + key = { item -> item.iCal4List.id } + ) + { iCal4ListRelObject -> - LazyVerticalStaggeredGrid( - state = gridState, - columns = StaggeredGridCells.Adaptive(150.dp), - contentPadding = PaddingValues(8.dp), - verticalItemSpacing = 8.dp, - horizontalArrangement = Arrangement.spacedBy(8.dp), - modifier = Modifier.fillMaxSize() - ) { - items( - items = list, - key = { item -> item.iCal4List.id } - ) - { iCal4ListRelObject -> - - val currentSubtasks = - subtasks.filter { iCal4ListRel -> iCal4ListRel.relatedto.any { relatedto -> relatedto.reltype == Reltype.PARENT.name && relatedto.text == iCal4ListRelObject.iCal4List.uid } } - .map { it.iCal4List } + val currentSubtasks = + subtasks.filter { iCal4ListRel -> iCal4ListRel.relatedto.any { relatedto -> relatedto.reltype == Reltype.PARENT.name && relatedto.text == iCal4ListRelObject.iCal4List.uid } } + .map { it.iCal4List } - ReorderableItem( - state = reorderableLazyListState, - key = iCal4ListRelObject.iCal4List.id - ) { + ReorderableItem( + state = reorderableLazyListState, + key = iCal4ListRelObject.iCal4List.id + ) { - ListCardGrid( - iCal4ListRelObject.iCal4List, - storedCategories = storedCategories, - storedStatuses = storedStatuses, - selected = selectedEntries.contains(iCal4ListRelObject.iCal4List.id), - progressUpdateDisabled = settingLinkProgressToSubtasks && currentSubtasks.isNotEmpty(), - markdownEnabled = markdownEnabled, - player = player, - modifier = Modifier - .fillMaxWidth() - .clip(jtxCardCornerShape) - .combinedClickable( - onClick = { - onClick( + ListCardGrid( + iCal4ListRelObject.iCal4List, + storedCategories = storedCategories, + storedStatuses = storedStatuses, + selected = selectedEntries.contains(iCal4ListRelObject.iCal4List.id), + progressUpdateDisabled = settingLinkProgressToSubtasks && currentSubtasks.isNotEmpty(), + markdownEnabled = markdownEnabled, + player = player, + modifier = Modifier + .fillMaxWidth() + .clip(jtxCardCornerShape) + .combinedClickable( + onClick = { + onClick( + iCal4ListRelObject.iCal4List.id, + list.map { it.iCal4List }, + iCal4ListRelObject.iCal4List.isReadOnly + ) + }, + onLongClick = { + if (!iCal4ListRelObject.iCal4List.isReadOnly) + onLongClick( iCal4ListRelObject.iCal4List.id, - list.map { it.iCal4List }, - iCal4ListRelObject.iCal4List.isReadOnly - ) - }, - onLongClick = { - if (!iCal4ListRelObject.iCal4List.isReadOnly) - onLongClick( - iCal4ListRelObject.iCal4List.id, - list.map { it.iCal4List }) - } - ), - onProgressChanged = onProgressChanged, - dragHandle = { - if(isListDragAndDropEnabled) - DragHandleLazy(this) - }, - ) - } + list.map { it.iCal4List }) + } + ), + onProgressChanged = onProgressChanged, + dragHandle = { + if(isListDragAndDropEnabled) + DragHandleLazy(this) + }, + ) } } + } - PullToRefreshContainer( - modifier = Modifier - .align(Alignment.TopCenter) - .offset(y = (-30).dp), - state = pullToRefreshState, - ) - - Crossfade(gridState.canScrollBackward, label = "showScrollUp") { - if (it) { - Box( - contentAlignment = Alignment.BottomCenter, - modifier = Modifier.fillMaxSize() + Crossfade(gridState.canScrollBackward, label = "showScrollUp") { + if (it) { + Box( + contentAlignment = Alignment.BottomCenter, + modifier = Modifier.fillMaxSize() + ) { + Button( + onClick = { + scope.launch { gridState.scrollToItem(0) } + }, + colors = ButtonDefaults.filledTonalButtonColors(), + modifier = Modifier + .padding(8.dp) + .alpha(0.33f) ) { - Button( - onClick = { - scope.launch { gridState.scrollToItem(0) } - }, - colors = ButtonDefaults.filledTonalButtonColors(), - modifier = Modifier - .padding(8.dp) - .alpha(0.33f) - ) { - Icon(Icons.Outlined.VerticalAlignTop, stringResource(R.string.list_scroll_to_top)) - } + Icon(Icons.Outlined.VerticalAlignTop, stringResource(R.string.list_scroll_to_top)) } } } @@ -266,13 +234,11 @@ fun ListScreenGrid_TODO() { selectedEntries = remember { mutableStateListOf() }, scrollOnceId = MutableLiveData(null), settingLinkProgressToSubtasks = false, - isPullRefreshEnabled = true, markdownEnabled = false, player = null, onProgressChanged = { _, _ -> }, onClick = { _, _, _ -> }, onLongClick = { _, _ -> }, - onSyncRequested = { }, isListDragAndDropEnabled = true ) } @@ -323,13 +289,11 @@ fun ListScreenGrid_JOURNAL() { selectedEntries = remember { mutableStateListOf() }, scrollOnceId = MutableLiveData(null), settingLinkProgressToSubtasks = false, - isPullRefreshEnabled = true, markdownEnabled = false, player = null, onProgressChanged = { _, _ -> }, onClick = { _, _, _ -> }, onLongClick = { _, _ -> }, - onSyncRequested = { }, isListDragAndDropEnabled = false ) } diff --git a/app/src/main/java/at/techbee/jtx/ui/list/ListScreenKanban.kt b/app/src/main/java/at/techbee/jtx/ui/list/ListScreenKanban.kt index 1544038dd..42d75bd6e 100644 --- a/app/src/main/java/at/techbee/jtx/ui/list/ListScreenKanban.kt +++ b/app/src/main/java/at/techbee/jtx/ui/list/ListScreenKanban.kt @@ -22,20 +22,15 @@ import androidx.compose.foundation.gestures.Orientation import androidx.compose.foundation.gestures.draggable import androidx.compose.foundation.gestures.rememberDraggableState import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.offset import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState -import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text -import androidx.compose.material3.pulltorefresh.PullToRefreshContainer -import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -50,7 +45,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb -import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign @@ -73,8 +67,7 @@ import kotlin.math.abs import kotlin.math.roundToInt -@OptIn(ExperimentalFoundationApi::class, ExperimentalMaterial3Api::class -) +@OptIn(ExperimentalFoundationApi::class) @Composable fun ListScreenKanban( module: Module, @@ -88,15 +81,13 @@ fun ListScreenKanban( kanbanColumnsCategory: SnapshotStateList, scrollOnceId: MutableLiveData, settingLinkProgressToSubtasks: Boolean, - isPullRefreshEnabled: Boolean, markdownEnabled: Boolean, player: MediaPlayer?, onStatusChanged: (itemid: Long, status: Status, scrollOnce: Boolean) -> Unit, onXStatusChanged: (itemid: Long, status: ExtendedStatus, scrollOnce: Boolean) -> Unit, onSwapCategories: (itemid: Long, old: String, new: String) -> Unit, onClick: (itemId: Long, list: List, isReadOnly: Boolean) -> Unit, - onLongClick: (itemId: Long, list: List) -> Unit, - onSyncRequested: () -> Unit + onLongClick: (itemId: Long, list: List) -> Unit ) { val context = LocalContext.current @@ -134,152 +125,132 @@ fun ListScreenKanban( } } - val pullToRefreshState = rememberPullToRefreshState( - enabled = { isPullRefreshEnabled } - ) - LaunchedEffect(pullToRefreshState.isRefreshing) { - if(pullToRefreshState.isRefreshing) { - onSyncRequested() - pullToRefreshState.endRefresh() - } - } - - Box( - modifier = Modifier.fillMaxSize().nestedScroll(pullToRefreshState.nestedScrollConnection), - contentAlignment = Alignment.TopCenter - ) { - Row(modifier = Modifier.fillMaxWidth()) { + Row(modifier = Modifier.fillMaxWidth()) { - columns.forEachIndexed { index, column -> + columns.forEachIndexed { index, column -> - val listState = rememberLazyListState() + val listState = rememberLazyListState() - if (scrollId != null) { - LaunchedEffect(list) { - val itemIndex = groupedList[column]?.indexOfFirst { iCal4ListRelObject -> iCal4ListRelObject.iCal4List.id == scrollId } ?: -1 - if (itemIndex > -1) { - listState.scrollToItem(itemIndex) - scrollOnceId.postValue(null) - } + if (scrollId != null) { + LaunchedEffect(list) { + val itemIndex = groupedList[column]?.indexOfFirst { iCal4ListRelObject -> iCal4ListRelObject.iCal4List.id == scrollId } ?: -1 + if (itemIndex > -1) { + listState.scrollToItem(itemIndex) + scrollOnceId.postValue(null) } } + } - LazyColumn( - state = listState, - contentPadding = PaddingValues(4.dp), - verticalArrangement = Arrangement.spacedBy(8.dp), - horizontalAlignment = Alignment.CenterHorizontally, - modifier = Modifier.fillMaxWidth().weight(1F) - ) { - - stickyHeader { - Text( - text = column, - modifier = Modifier - .align(Alignment.CenterVertically) - .background(MaterialTheme.colorScheme.background) - .fillMaxWidth(), - style = MaterialTheme.typography.titleSmall, - textAlign = TextAlign.Center - ) - } + LazyColumn( + state = listState, + contentPadding = PaddingValues(4.dp), + verticalArrangement = Arrangement.spacedBy(8.dp), + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier.fillMaxWidth().weight(1F) + ) { - items( - items = groupedList[column]?: emptyList(), - key = { item -> item.iCal4List.id } + stickyHeader { + Text( + text = column, + modifier = Modifier + .align(Alignment.CenterVertically) + .background(MaterialTheme.colorScheme.background) + .fillMaxWidth(), + style = MaterialTheme.typography.titleSmall, + textAlign = TextAlign.Center ) - { iCal4ListRelObject -> + } - val currentSubtasks = - subtasks.filter { iCal4ListRel -> iCal4ListRel.relatedto.any { relatedto -> relatedto.reltype == Reltype.PARENT.name && relatedto.text == iCal4ListRel.iCal4List.uid } } - .map { it.iCal4List } + items( + items = groupedList[column]?: emptyList(), + key = { item -> item.iCal4List.id } + ) + { iCal4ListRelObject -> - var offsetX by remember { mutableFloatStateOf(0f) } // see https://developer.android.com/jetpack/compose/gestures - val maxOffset = 50f + val currentSubtasks = + subtasks.filter { iCal4ListRel -> iCal4ListRel.relatedto.any { relatedto -> relatedto.reltype == Reltype.PARENT.name && relatedto.text == iCal4ListRel.iCal4List.uid } } + .map { it.iCal4List } - ListCardKanban( - iCal4ListRelObject.iCal4List, - storedCategories = storedCategories, - storedStatuses = storedStatuses, - selected = selectedEntries.contains(iCal4ListRelObject.iCal4List.id), - markdownEnabled = markdownEnabled, - player = player, - modifier = Modifier - .clip(jtxCardCornerShape) - .combinedClickable( - onClick = { onClick(iCal4ListRelObject.iCal4List.id, list.map { it.iCal4List }, iCal4ListRelObject.iCal4List.isReadOnly) }, - onLongClick = { - if (!iCal4ListRelObject.iCal4List.isReadOnly) - onLongClick(iCal4ListRelObject.iCal4List.id, list.map { it.iCal4List }) - } - ) - .fillMaxWidth() - .offset { IntOffset(offsetX.roundToInt(), 0) } - .draggable( - orientation = Orientation.Horizontal, - state = rememberDraggableState { delta -> - if (iCal4ListRelObject.iCal4List.isReadOnly) // no drag state for read only objects! - return@rememberDraggableState - if (settingLinkProgressToSubtasks && currentSubtasks.isNotEmpty()) - return@rememberDraggableState // no drag is status depends on subtasks - if (abs(offsetX) <= maxOffset) // once maxOffset is reached, we don't update anymore - offsetX += delta - }, - onDragStopped = { - if (abs(offsetX) > maxOffset / 2 && !iCal4ListRelObject.iCal4List.isReadOnly) { + var offsetX by remember { mutableFloatStateOf(0f) } // see https://developer.android.com/jetpack/compose/gestures + val maxOffset = 50f - val draggedToColumn = when { - offsetX < 0f && index > 0 -> index - 1 - offsetX > 0F && index < columns.lastIndex -> index + 1 - else -> { - offsetX = 0f - return@draggable - } + ListCardKanban( + iCal4ListRelObject.iCal4List, + storedCategories = storedCategories, + storedStatuses = storedStatuses, + selected = selectedEntries.contains(iCal4ListRelObject.iCal4List.id), + markdownEnabled = markdownEnabled, + player = player, + modifier = Modifier + .clip(jtxCardCornerShape) + .combinedClickable( + onClick = { onClick(iCal4ListRelObject.iCal4List.id, list.map { it.iCal4List }, iCal4ListRelObject.iCal4List.isReadOnly) }, + onLongClick = { + if (!iCal4ListRelObject.iCal4List.isReadOnly) + onLongClick(iCal4ListRelObject.iCal4List.id, list.map { it.iCal4List }) + } + ) + .fillMaxWidth() + .offset { IntOffset(offsetX.roundToInt(), 0) } + .draggable( + orientation = Orientation.Horizontal, + state = rememberDraggableState { delta -> + if (iCal4ListRelObject.iCal4List.isReadOnly) // no drag state for read only objects! + return@rememberDraggableState + if (settingLinkProgressToSubtasks && currentSubtasks.isNotEmpty()) + return@rememberDraggableState // no drag is status depends on subtasks + if (abs(offsetX) <= maxOffset) // once maxOffset is reached, we don't update anymore + offsetX += delta + }, + onDragStopped = { + if (abs(offsetX) > maxOffset / 2 && !iCal4ListRelObject.iCal4List.isReadOnly) { + + val draggedToColumn = when { + offsetX < 0f && index > 0 -> index - 1 + offsetX > 0F && index < columns.lastIndex -> index + 1 + else -> { + offsetX = 0f + return@draggable } + } - when { - kanbanColumnsXStatus.isNotEmpty() -> storedStatuses - .find { xstatus -> xstatus.module == module && xstatus.xstatus == columns[draggedToColumn] } - ?.let { xstatus -> - onXStatusChanged(iCal4ListRelObject.iCal4List.id, xstatus, true) - } + when { + kanbanColumnsXStatus.isNotEmpty() -> storedStatuses + .find { xstatus -> xstatus.module == module && xstatus.xstatus == columns[draggedToColumn] } + ?.let { xstatus -> + onXStatusChanged(iCal4ListRelObject.iCal4List.id, xstatus, true) + } - kanbanColumnsCategory.isNotEmpty() -> onSwapCategories(iCal4ListRelObject.iCal4List.id, column, columns[draggedToColumn]) + kanbanColumnsCategory.isNotEmpty() -> onSwapCategories(iCal4ListRelObject.iCal4List.id, column, columns[draggedToColumn]) - else -> Status.entries - .find { status -> context.getString(status.stringResource) == columns[draggedToColumn] } - ?.let { status -> - onStatusChanged(iCal4ListRelObject.iCal4List.id, status, true) - } - } + else -> Status.entries + .find { status -> context.getString(status.stringResource) == columns[draggedToColumn] } + ?.let { status -> + onStatusChanged(iCal4ListRelObject.iCal4List.id, status, true) + } + } - // make a short vibration - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { - val vibratorManager = context.getSystemService(VIBRATOR_MANAGER_SERVICE) as VibratorManager - val vibrator = vibratorManager.defaultVibrator - val vibrationEffect = VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK) - vibrator.vibrate(vibrationEffect) - } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - @Suppress("DEPRECATION") - val vibrator = context.getSystemService(VIBRATOR_SERVICE) as Vibrator - val vibrationEffect = VibrationEffect.createOneShot(150, 10) - vibrator.vibrate(vibrationEffect) - } + // make a short vibration + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + val vibratorManager = context.getSystemService(VIBRATOR_MANAGER_SERVICE) as VibratorManager + val vibrator = vibratorManager.defaultVibrator + val vibrationEffect = VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK) + vibrator.vibrate(vibrationEffect) + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + @Suppress("DEPRECATION") + val vibrator = context.getSystemService(VIBRATOR_SERVICE) as Vibrator + val vibrationEffect = VibrationEffect.createOneShot(150, 10) + vibrator.vibrate(vibrationEffect) } - offsetX = 0f } - ), - ) - } + offsetX = 0f + } + ), + ) } } } - - PullToRefreshContainer( - modifier = Modifier.align(Alignment.TopCenter).offset(y = (-30).dp), - state = pullToRefreshState, - ) } } @@ -332,15 +303,13 @@ fun ListScreenKanban_TODO() { kanbanColumnsCategory = remember { mutableStateListOf() }, scrollOnceId = MutableLiveData(null), settingLinkProgressToSubtasks = false, - isPullRefreshEnabled = true, markdownEnabled = false, player = null, onStatusChanged = { _, _, _ -> }, onXStatusChanged = { _, _, _ -> }, onSwapCategories = { _, _, _ -> }, onClick = { _, _, _ -> }, - onLongClick = { _, _ -> }, - onSyncRequested = { } + onLongClick = { _, _ -> } ) } } @@ -394,15 +363,13 @@ fun ListScreenKanban_JOURNAL() { kanbanColumnsCategory = remember { mutableStateListOf() }, scrollOnceId = MutableLiveData(null), settingLinkProgressToSubtasks = false, - isPullRefreshEnabled = true, markdownEnabled = false, player = null, onStatusChanged = { _, _, _ -> }, onXStatusChanged = { _, _, _ -> }, onSwapCategories = { _, _, _ -> }, onClick = { _, _, _ -> }, - onLongClick = { _, _ -> }, - onSyncRequested = { } + onLongClick = { _, _ -> } ) } } diff --git a/app/src/main/java/at/techbee/jtx/ui/list/ListScreenList.kt b/app/src/main/java/at/techbee/jtx/ui/list/ListScreenList.kt index ba4c747d4..9f55fe6d6 100644 --- a/app/src/main/java/at/techbee/jtx/ui/list/ListScreenList.kt +++ b/app/src/main/java/at/techbee/jtx/ui/list/ListScreenList.kt @@ -19,7 +19,6 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items @@ -30,13 +29,10 @@ import androidx.compose.material.icons.outlined.ArrowDropUp import androidx.compose.material.icons.outlined.VerticalAlignTop import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults -import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.material3.TextButton -import androidx.compose.material3.pulltorefresh.PullToRefreshContainer -import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -51,7 +47,6 @@ import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb -import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource @@ -82,8 +77,7 @@ import sh.calvin.reorderable.rememberReorderableLazyListState import java.util.UUID -@OptIn(ExperimentalFoundationApi::class, ExperimentalMaterial3Api::class -) +@OptIn(ExperimentalFoundationApi::class) @Composable fun ListScreenList( groupedList: Map>, @@ -107,7 +101,6 @@ fun ListScreenList( settingDisplayTimezone: DropdownSettingOption, settingLinkProgressToSubtasks: Boolean, settingIsAccessibilityMode: Boolean, - isPullRefreshEnabled: Boolean, markdownEnabled: Boolean, player: MediaPlayer?, isListDragAndDropEnabled: Boolean, @@ -117,7 +110,6 @@ fun ListScreenList( onLongClick: (itemId: Long, list: List) -> Unit, onProgressChanged: (itemId: Long, newPercent: Int) -> Unit, onExpandedChanged: (itemId: Long, isSubtasksExpanded: Boolean, isSubnotesExpanded: Boolean, isParentsExpanded: Boolean, isAttachmentsExpanded: Boolean) -> Unit, - onSyncRequested: () -> Unit, onSaveListSettings: () -> Unit, onUpdateSortOrder: (List) -> Unit ) { @@ -139,183 +131,163 @@ fun ListScreenList( } ICalDatabase.getInstance(context).iCalDatabaseDao().updateSortOrder(reordered.map { it.id }) } - val pullToRefreshState = rememberPullToRefreshState( - enabled = { isPullRefreshEnabled } - ) - LaunchedEffect(pullToRefreshState.isRefreshing) { - if(pullToRefreshState.isRefreshing) { - onSyncRequested() - pullToRefreshState.endRefresh() - } - } - Box( - contentAlignment = Alignment.TopCenter, - modifier = Modifier.fillMaxSize().nestedScroll(pullToRefreshState.nestedScrollConnection) + LazyColumn( + modifier = Modifier.padding(start = 8.dp, end = 8.dp, top = 4.dp), + state = listState, ) { + groupedList.forEach { (groupName, group) -> - LazyColumn( - modifier = Modifier.padding(start = 8.dp, end = 8.dp, top = 4.dp), - state = listState, - ) { - groupedList.forEach { (groupName, group) -> + if (groupedList.keys.size > 1) { + stickyHeader { - if (groupedList.keys.size > 1) { - stickyHeader { - - Row( - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.Center, - modifier = Modifier - .fillMaxWidth() - .background(MaterialTheme.colorScheme.background) + Row( + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.Center, + modifier = Modifier + .fillMaxWidth() + .background(MaterialTheme.colorScheme.background) - ) { - TextButton(onClick = { - if (listSettings.collapsedGroups.contains(groupName)) - listSettings.collapsedGroups.remove(groupName) - else - listSettings.collapsedGroups.add(groupName) - onSaveListSettings() - }) { - Text( - text = groupName, - style = MaterialTheme.typography.titleMedium, - modifier = Modifier.padding(horizontal = 4.dp) - ) + ) { + TextButton(onClick = { + if (listSettings.collapsedGroups.contains(groupName)) + listSettings.collapsedGroups.remove(groupName) + else + listSettings.collapsedGroups.add(groupName) + onSaveListSettings() + }) { + Text( + text = groupName, + style = MaterialTheme.typography.titleMedium, + modifier = Modifier.padding(horizontal = 4.dp) + ) - if (listSettings.collapsedGroups.contains(groupName)) - Icon(Icons.Outlined.ArrowDropUp, stringResource(R.string.list_collapse)) - else - Icon(Icons.Outlined.ArrowDropDown, stringResource(R.string.list_expand)) - } + if (listSettings.collapsedGroups.contains(groupName)) + Icon(Icons.Outlined.ArrowDropUp, stringResource(R.string.list_collapse)) + else + Icon(Icons.Outlined.ArrowDropDown, stringResource(R.string.list_expand)) } } } + } - if (groupedList.keys.size <= 1 || (groupedList.keys.size > 1 && !listSettings.collapsedGroups.contains(groupName))) { - items( - items = group, - key = { item -> - if(listSettings.groupBy.value == GroupBy.CATEGORY || listSettings.groupBy.value == GroupBy.RESOURCE) - item.iCal4List.id.toString() + UUID.randomUUID() - else - item.iCal4List.id - } - ) { iCal4ListRelObject -> - - var currentSubtasks = - subtasks.filter { iCal4ListRel -> iCal4ListRel.relatedto.any { relatedto -> relatedto.reltype == Reltype.PARENT.name && relatedto.text == iCal4ListRelObject.iCal4List.uid } } - .map { it.iCal4List } - if (listSettings.isExcludeDone.value) // exclude done if applicable - currentSubtasks = - currentSubtasks.filter { subtask -> subtask.percent != 100 && subtask.status != Status.COMPLETED.status } - - val currentSubnotes = - subnotes.filter { iCal4ListRel -> iCal4ListRel.relatedto.any { relatedto -> relatedto.reltype == Reltype.PARENT.name && relatedto.text == iCal4ListRelObject.iCal4List.uid } } - .map { it.iCal4List } - val currentParents = parents.filter { iCal4ListRel -> iCal4ListRelObject.relatedto.any { related -> related.text == iCal4ListRel.iCal4List.uid } }.map { it.iCal4List } - val currentAttachments = attachments[iCal4ListRelObject.iCal4List.id] - - if (scrollId != null) { - LaunchedEffect(group) { - val index = - group.indexOfFirst { iCalObject -> iCalObject.iCal4List.id == scrollId } - if (index > -1) { - listState.scrollToItem(index) - scrollOnceId.postValue(null) - } + if (groupedList.keys.size <= 1 || (groupedList.keys.size > 1 && !listSettings.collapsedGroups.contains(groupName))) { + items( + items = group, + key = { item -> + if(listSettings.groupBy.value == GroupBy.CATEGORY || listSettings.groupBy.value == GroupBy.RESOURCE) + item.iCal4List.id.toString() + UUID.randomUUID() + else + item.iCal4List.id + } + ) { iCal4ListRelObject -> + + var currentSubtasks = + subtasks.filter { iCal4ListRel -> iCal4ListRel.relatedto.any { relatedto -> relatedto.reltype == Reltype.PARENT.name && relatedto.text == iCal4ListRelObject.iCal4List.uid } } + .map { it.iCal4List } + if (listSettings.isExcludeDone.value) // exclude done if applicable + currentSubtasks = + currentSubtasks.filter { subtask -> subtask.percent != 100 && subtask.status != Status.COMPLETED.status } + + val currentSubnotes = + subnotes.filter { iCal4ListRel -> iCal4ListRel.relatedto.any { relatedto -> relatedto.reltype == Reltype.PARENT.name && relatedto.text == iCal4ListRelObject.iCal4List.uid } } + .map { it.iCal4List } + val currentParents = parents.filter { iCal4ListRel -> iCal4ListRelObject.relatedto.any { related -> related.text == iCal4ListRel.iCal4List.uid } }.map { it.iCal4List } + val currentAttachments = attachments[iCal4ListRelObject.iCal4List.id] + + if (scrollId != null) { + LaunchedEffect(group) { + val index = + group.indexOfFirst { iCalObject -> iCalObject.iCal4List.id == scrollId } + if (index > -1) { + listState.scrollToItem(index) + scrollOnceId.postValue(null) } } + } - ReorderableItem(reorderableLazyListState, key = iCal4ListRelObject.iCal4List.id) { - ListCard( - iCalObject = iCal4ListRelObject.iCal4List, - categories = iCal4ListRelObject.categories, - resources = iCal4ListRelObject.resources, - subtasks = currentSubtasks, - subnotes = currentSubnotes, - parents = currentParents, - storedCategories = storedCategories, - storedResources = storedResources, - storedStatuses = storedStatuses, - selected = selectedEntries, - attachments = currentAttachments ?: emptyList(), - isSubtasksExpandedDefault = isSubtasksExpandedDefault, - isSubnotesExpandedDefault = isSubnotesExpandedDefault, - isAttachmentsExpandedDefault = isAttachmentsExpandedDefault, - isParentsExpandedDefault = isParentsExpandedDefault, - settingShowProgressMaintasks = settingShowProgressMaintasks, - settingShowProgressSubtasks = settingShowProgressSubtasks, - settingDisplayTimezone = settingDisplayTimezone, - settingIsAccessibilityMode = settingIsAccessibilityMode, - progressIncrement = settingProgressIncrement.getProgressStepKeyAsInt(), - linkProgressToSubtasks = settingLinkProgressToSubtasks, - markdownEnabled = markdownEnabled, - onClick = onClick, - onLongClick = onLongClick, - onProgressChanged = onProgressChanged, - onExpandedChanged = onExpandedChanged, - onUpdateSortOrder = onUpdateSortOrder, - player = player, - isSubtaskDragAndDropEnabled = isSubtaskDragAndDropEnabled, - isSubnoteDragAndDropEnabled = isSubnoteDragAndDropEnabled, - dragHandle = { - if(isListDragAndDropEnabled) - DragHandleLazy(this) - }, - modifier = Modifier - .fillMaxWidth() - .padding(bottom = 8.dp) - .clip(jtxCardCornerShape) - .combinedClickable( - onClick = { - onClick( + ReorderableItem(reorderableLazyListState, key = iCal4ListRelObject.iCal4List.id) { + ListCard( + iCalObject = iCal4ListRelObject.iCal4List, + categories = iCal4ListRelObject.categories, + resources = iCal4ListRelObject.resources, + subtasks = currentSubtasks, + subnotes = currentSubnotes, + parents = currentParents, + storedCategories = storedCategories, + storedResources = storedResources, + storedStatuses = storedStatuses, + selected = selectedEntries, + attachments = currentAttachments ?: emptyList(), + isSubtasksExpandedDefault = isSubtasksExpandedDefault, + isSubnotesExpandedDefault = isSubnotesExpandedDefault, + isAttachmentsExpandedDefault = isAttachmentsExpandedDefault, + isParentsExpandedDefault = isParentsExpandedDefault, + settingShowProgressMaintasks = settingShowProgressMaintasks, + settingShowProgressSubtasks = settingShowProgressSubtasks, + settingDisplayTimezone = settingDisplayTimezone, + settingIsAccessibilityMode = settingIsAccessibilityMode, + progressIncrement = settingProgressIncrement.getProgressStepKeyAsInt(), + linkProgressToSubtasks = settingLinkProgressToSubtasks, + markdownEnabled = markdownEnabled, + onClick = onClick, + onLongClick = onLongClick, + onProgressChanged = onProgressChanged, + onExpandedChanged = onExpandedChanged, + onUpdateSortOrder = onUpdateSortOrder, + player = player, + isSubtaskDragAndDropEnabled = isSubtaskDragAndDropEnabled, + isSubnoteDragAndDropEnabled = isSubnoteDragAndDropEnabled, + dragHandle = { + if(isListDragAndDropEnabled) + DragHandleLazy(this) + }, + modifier = Modifier + .fillMaxWidth() + .padding(bottom = 8.dp) + .clip(jtxCardCornerShape) + .combinedClickable( + onClick = { + onClick( + iCal4ListRelObject.iCal4List.id, + groupedList + .flatMap { it.value } + .map { it.iCal4List }, + iCal4ListRelObject.iCal4List.isReadOnly + ) + }, + onLongClick = { + if (!iCal4ListRelObject.iCal4List.isReadOnly && BillingManager.getInstance().isProPurchased.value == true) + onLongClick( iCal4ListRelObject.iCal4List.id, groupedList .flatMap { it.value } - .map { it.iCal4List }, - iCal4ListRelObject.iCal4List.isReadOnly - ) - }, - onLongClick = { - if (!iCal4ListRelObject.iCal4List.isReadOnly && BillingManager.getInstance().isProPurchased.value == true) - onLongClick( - iCal4ListRelObject.iCal4List.id, - groupedList - .flatMap { it.value } - .map { it.iCal4List }) - } - ) - .testTag("benchmark:ListCard") - ) - } + .map { it.iCal4List }) + } + ) + .testTag("benchmark:ListCard") + ) } } } } + } - PullToRefreshContainer( - modifier = Modifier.align(Alignment.TopCenter).offset(y = (-30).dp), - state = pullToRefreshState, - ) - - Crossfade(listState.canScrollBackward, label = "showScrollUp") { - if (it) { - Box( - contentAlignment = Alignment.BottomCenter, - modifier = Modifier.fillMaxSize() + Crossfade(listState.canScrollBackward, label = "showScrollUp") { + if (it) { + Box( + contentAlignment = Alignment.BottomCenter, + modifier = Modifier.fillMaxSize() + ) { + Button( + onClick = { + scope.launch { listState.scrollToItem(0) } + }, + colors = ButtonDefaults.filledTonalButtonColors(), + modifier = Modifier.padding(8.dp).alpha(0.33f) ) { - Button( - onClick = { - scope.launch { listState.scrollToItem(0) } - }, - colors = ButtonDefaults.filledTonalButtonColors(), - modifier = Modifier.padding(8.dp).alpha(0.33f) - ) { - Icon(Icons.Outlined.VerticalAlignTop, stringResource(R.string.list_scroll_to_top)) - } + Icon(Icons.Outlined.VerticalAlignTop, stringResource(R.string.list_scroll_to_top)) } } } @@ -386,7 +358,6 @@ fun ListScreenList_TODO() { settingLinkProgressToSubtasks = false, settingDisplayTimezone = DropdownSettingOption.DISPLAY_TIMEZONE_LOCAL, settingIsAccessibilityMode = false, - isPullRefreshEnabled = true, markdownEnabled = false, player = null, isListDragAndDropEnabled = true, @@ -397,7 +368,6 @@ fun ListScreenList_TODO() { onLongClick = { _, _ -> }, listSettings = listSettings, onExpandedChanged = { _, _, _, _, _ -> }, - onSyncRequested = { }, onSaveListSettings = { }, onUpdateSortOrder = { } ) @@ -471,7 +441,6 @@ fun ListScreenList_JOURNAL() { settingDisplayTimezone = DropdownSettingOption.DISPLAY_TIMEZONE_LOCAL, settingLinkProgressToSubtasks = false, settingIsAccessibilityMode = false, - isPullRefreshEnabled = true, markdownEnabled = false, player = null, isListDragAndDropEnabled = true, @@ -482,7 +451,6 @@ fun ListScreenList_JOURNAL() { onLongClick = { _, _ -> }, listSettings = listSettings, onExpandedChanged = { _, _, _, _, _ -> }, - onSyncRequested = { }, onSaveListSettings = { }, onUpdateSortOrder = { } ) diff --git a/app/src/main/java/at/techbee/jtx/ui/list/ListScreenTabContainer.kt b/app/src/main/java/at/techbee/jtx/ui/list/ListScreenTabContainer.kt index 86ddcb85b..e0b561702 100644 --- a/app/src/main/java/at/techbee/jtx/ui/list/ListScreenTabContainer.kt +++ b/app/src/main/java/at/techbee/jtx/ui/list/ListScreenTabContainer.kt @@ -17,9 +17,8 @@ import android.location.LocationManager import android.widget.Toast import androidx.biometric.BiometricPrompt import androidx.compose.animation.AnimatedVisibility -import androidx.compose.foundation.ExperimentalFoundationApi -import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.pager.HorizontalPager @@ -45,6 +44,8 @@ import androidx.compose.material3.Scaffold import androidx.compose.material3.SheetValue import androidx.compose.material3.Tab import androidx.compose.material3.Text +import androidx.compose.material3.pulltorefresh.PullToRefreshBox +import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState import androidx.compose.material3.rememberDrawerState import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable @@ -102,8 +103,7 @@ import kotlin.time.Duration.Companion.seconds @OptIn( - ExperimentalMaterial3Api::class, - ExperimentalFoundationApi::class, ExperimentalPermissionsApi::class + ExperimentalMaterial3Api::class, ExperimentalPermissionsApi::class ) @Composable fun ListScreenTabContainer( @@ -190,6 +190,10 @@ fun ListScreenTabContainer( var showUpdateEntriesDialog by rememberSaveable { mutableStateOf(false) } var showCollectionSelectorDialog by rememberSaveable { mutableStateOf(false) } + var isRefreshing by remember { mutableStateOf(false) } + val isPullRefreshEnabled = remember { + SyncUtil.availableSyncApps(context).any { SyncUtil.isSyncAppCompatible(it, context) } && settingsStateHolder.settingSyncOnPullRefresh.value + } fun getActiveViewModel() = when (pagerState.currentPage) { enabledTabs.indexOf(ListTabDestination.Journals) -> icalListViewModelJournals @@ -677,11 +681,11 @@ fun ListScreenTabContainer( JtxNavigationDrawer( drawerState, mainContent = { - Column { + Column(modifier = Modifier.fillMaxSize()) { if(enabledTabs.size > 1) { PrimaryTabRow( - selectedTabIndex = pagerState.currentPage // adding the indicator might make a smooth movement of the tabIndicator, but Accompanist does not support all components (TODO: Check again in future) https://www.geeksforgeeks.org/tab-layout-in-android-using-jetpack-compose/ + selectedTabIndex = pagerState.currentPage ) { enabledTabs.forEach { enabledTab -> Tab( @@ -776,13 +780,40 @@ fun ListScreenTabContainer( ) } - Box { - HorizontalPager( - state = pagerState, - userScrollEnabled = !filterSheetState.isVisible, - verticalAlignment = Alignment.Top - ) { page -> - + HorizontalPager( + state = pagerState, + userScrollEnabled = !filterSheetState.isVisible, + verticalAlignment = Alignment.Top, + modifier = Modifier.fillMaxSize() + ) { page -> + + // TODO: Remove this stupid condition once PullToRefreshBox allows a disabled state! + if (isPullRefreshEnabled) { + PullToRefreshBox( + state = rememberPullToRefreshState(), + onRefresh = { + //TODO: Get rid of this stupid workaround with isRefreshing and delay once the new version properly makes the animation disappear!!! + isRefreshing = true + listViewModel.syncAccounts() + scope.launch { + delay(100) + isRefreshing = false + } + }, + isRefreshing = isRefreshing, + contentAlignment = Alignment.TopCenter, + modifier = Modifier.fillMaxSize() + ) { + ListScreen( + listViewModel = when (enabledTabs[page].module) { + Module.JOURNAL -> icalListViewModelJournals + Module.NOTE -> icalListViewModelNotes + Module.TODO -> icalListViewModelTodos + }, + navController = navController + ) + } + } else { ListScreen( listViewModel = when (enabledTabs[page].module) { Module.JOURNAL -> icalListViewModelJournals diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0fba32650..eb7bf167f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -21,8 +21,8 @@ bitfire-ical4android = "83cda23ceb" calendarCompose = "2.6.0" coilCompose = "2.7.0" compose-accompanist = "0.34.0" -compose-bom = "2024.08.00" -compose-navigation = "2.7.7" +compose-bom = "2024.10.01" +compose-navigation = "2.8.3" glance = "1.1.1" godaddy-colorpicker = "0.7.0" #huawei = "1.8.1.300" From 001d51fdd2dbc10e4ff4fa6b8b87b17a8bd188fa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 10 Nov 2024 22:40:39 +0100 Subject: [PATCH 72/76] Bump com.google.accompanist:accompanist-permissions (#1619) Bumps [com.google.accompanist:accompanist-permissions](https://github.com/google/accompanist) from 0.34.0 to 0.36.0. - [Release notes](https://github.com/google/accompanist/releases) - [Commits](https://github.com/google/accompanist/compare/v0.34.0...v0.36.0) --- updated-dependencies: - dependency-name: com.google.accompanist:accompanist-permissions dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index eb7bf167f..515fe4330 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -20,7 +20,7 @@ biometricKtx = "1.2.0-alpha05" bitfire-ical4android = "83cda23ceb" calendarCompose = "2.6.0" coilCompose = "2.7.0" -compose-accompanist = "0.34.0" +compose-accompanist = "0.36.0" compose-bom = "2024.10.01" compose-navigation = "2.8.3" glance = "1.1.1" From 6db185121aa75d6242a0d6c16c5b6bf6819acac6 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Sun, 10 Nov 2024 22:42:39 +0100 Subject: [PATCH 73/76] version bump --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index ee86ca4ce..9f44d8674 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -29,8 +29,8 @@ android { buildConfigField("long", "buildTime", "${System.currentTimeMillis()}L") minSdk = 23 targetSdk = 34 - versionCode = 209030003 - versionName = "2.09.03-beta01" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) + versionCode = 209030004 + versionName = "2.09.03-beta02" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) buildConfigField("String", "versionCodename", "\"Pride is a protest \uD83C\uDF08\"") multiDexEnabled = true vectorDrawables.useSupportLibrary = true From 6d9ca11e67abdabfdbbeee3948384592bfc772d9 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Mon, 11 Nov 2024 20:00:53 +0100 Subject: [PATCH 74/76] [BUG] Widget font color does not adjust to dark mode #1560 (#1623) --- .../main/java/at/techbee/jtx/widgets/ListWidget.kt | 14 ++++++++++++++ .../at/techbee/jtx/widgets/ListWidgetContent.kt | 4 ++++ .../java/at/techbee/jtx/widgets/ListWidgetEntry.kt | 14 +++++++------- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/at/techbee/jtx/widgets/ListWidget.kt b/app/src/main/java/at/techbee/jtx/widgets/ListWidget.kt index 3b7507616..2fd749650 100644 --- a/app/src/main/java/at/techbee/jtx/widgets/ListWidget.kt +++ b/app/src/main/java/at/techbee/jtx/widgets/ListWidget.kt @@ -184,6 +184,19 @@ class ListWidget : GlanceAppWidget() { ) } + val defaultOnSurfaceVariantColor = GlanceTheme.colors.onSurfaceVariant + val entryHeaderTextColor = remember(listWidgetConfig) { + if (listWidgetConfig.widgetColorEntries == null) + defaultOnSurfaceVariantColor + else + FixedColorProvider( + if(UiUtil.isDarkColor(entryColor.getColor(context))) + Color.White.copy(alpha = if(listWidgetConfig.widgetAlphaEntries < MIN_ALPHA_FOR_TEXT) MIN_ALPHA_FOR_TEXT else listWidgetConfig.widgetAlphaEntries) + else + Color.Black.copy(alpha = if(listWidgetConfig.widgetAlphaEntries < MIN_ALPHA_FOR_TEXT) MIN_ALPHA_FOR_TEXT else listWidgetConfig.widgetAlphaEntries) + ) + } + GlanceTheme { ListWidgetContent( listWidgetConfig, @@ -194,6 +207,7 @@ class ListWidget : GlanceAppWidget() { textColor = textColor, entryColor = entryColor, entryTextColor = entryTextColor, + entryHeaderTextColor = entryHeaderTextColor, onCheckedChange = { iCalObjectId, checked -> scope.launch(Dispatchers.IO) { val settingsStateHolder = SettingsStateHolder(context) diff --git a/app/src/main/java/at/techbee/jtx/widgets/ListWidgetContent.kt b/app/src/main/java/at/techbee/jtx/widgets/ListWidgetContent.kt index 45761015e..3f66a75e9 100644 --- a/app/src/main/java/at/techbee/jtx/widgets/ListWidgetContent.kt +++ b/app/src/main/java/at/techbee/jtx/widgets/ListWidgetContent.kt @@ -50,6 +50,7 @@ fun ListWidgetContent( textColor: ColorProvider, entryColor: ColorProvider, entryTextColor: ColorProvider, + entryHeaderTextColor: ColorProvider, onCheckedChange: (iCalObjectId: Long, checked: Boolean) -> Unit, onOpenWidgetConfig: () -> Unit, onAddNew: () -> Unit, @@ -149,6 +150,7 @@ fun ListWidgetContent( obj = entry.iCal4List, entryColor = entryColor, textColor = entryTextColor, + headerTextColor = entryHeaderTextColor, checkboxPosition = listWidgetConfig.checkboxPosition, showDescription = listWidgetConfig.showDescription, onCheckedChange = onCheckedChange, @@ -177,6 +179,7 @@ fun ListWidgetContent( obj = subtask.iCal4List, entryColor = entryColor, textColor = entryTextColor, + headerTextColor = entryHeaderTextColor, checkboxPosition = listWidgetConfig.checkboxPosition, showDescription = listWidgetConfig.showDescription, onCheckedChange = onCheckedChange, @@ -204,6 +207,7 @@ fun ListWidgetContent( obj = subnote.iCal4List, entryColor = entryColor, textColor = entryTextColor, + headerTextColor = entryHeaderTextColor, checkboxPosition = listWidgetConfig.checkboxPosition, showDescription = listWidgetConfig.showDescription, onCheckedChange = onCheckedChange, diff --git a/app/src/main/java/at/techbee/jtx/widgets/ListWidgetEntry.kt b/app/src/main/java/at/techbee/jtx/widgets/ListWidgetEntry.kt index 1d45c04cc..53af4b4af 100644 --- a/app/src/main/java/at/techbee/jtx/widgets/ListWidgetEntry.kt +++ b/app/src/main/java/at/techbee/jtx/widgets/ListWidgetEntry.kt @@ -50,6 +50,7 @@ fun ListEntry( obj: ICal4List, entryColor: ColorProvider, textColor: ColorProvider, + headerTextColor: ColorProvider, checkboxPosition: CheckboxPosition, showDescription: Boolean, onCheckedChange: (iCalObjectId: Long, checked: Boolean) -> Unit, @@ -57,8 +58,7 @@ fun ListEntry( ) { val context = LocalContext.current - val metaBarColor = ColorProvider(textColor.getColor(context).copy(alpha = 0.7f)) - val textStyleMetaInfo = TextStyle(fontStyle = FontStyle.Italic, fontSize = 12.sp, color = metaBarColor) + val textStyleMetaInfo = TextStyle(fontStyle = FontStyle.Italic, fontSize = 12.sp, color = headerTextColor) val textStyleDateOverdue = textStyleMetaInfo.copy(color = ColorProvider(Color.Red), fontWeight = FontWeight.Bold) val textStyleSummary = TextStyle(fontWeight = FontWeight.Bold, fontSize = 14.sp, color = textColor) val textStyleDescription = TextStyle(color = textColor, fontSize = 12.sp) @@ -108,7 +108,7 @@ fun ListEntry( provider = ImageProvider(if (obj.module == Module.TODO.name) R.drawable.ic_widget_start else R.drawable.ic_start2), contentDescription = context.getString(R.string.started), modifier = GlanceModifier.size(imageSize).padding(end = 4.dp), - colorFilter = ColorFilter.tint(metaBarColor) + colorFilter = ColorFilter.tint(textStyleMetaInfo.color) ) Text( text = ICalObject.getDtstartTextInfo( @@ -128,7 +128,7 @@ fun ListEntry( provider = ImageProvider(R.drawable.ic_widget_due), contentDescription = context.getString(R.string.due), modifier = GlanceModifier.size(imageSize).padding(end = 4.dp), - colorFilter = ColorFilter.tint(metaBarColor) + colorFilter = ColorFilter.tint(textStyleMetaInfo.color) ) Text( text = ICalObject.getDueTextInfo( @@ -149,7 +149,7 @@ fun ListEntry( provider = ImageProvider(R.drawable.ic_priority), contentDescription = context.getString(R.string.priority), modifier = GlanceModifier.size(imageSize).padding(end = 4.dp), - colorFilter = ColorFilter.tint(metaBarColor) + colorFilter = ColorFilter.tint(textStyleMetaInfo.color) ) Text( text = obj.priority.toString(), @@ -164,7 +164,7 @@ fun ListEntry( provider = ImageProvider(R.drawable.ic_status), contentDescription = context.getString(R.string.status), modifier = GlanceModifier.size(imageSize).padding(end = 4.dp), - colorFilter = ColorFilter.tint(metaBarColor) + colorFilter = ColorFilter.tint(textStyleMetaInfo.color) ) Text( text = obj.xstatus @@ -181,7 +181,7 @@ fun ListEntry( provider = ImageProvider(R.drawable.ic_classification), contentDescription = context.getString(R.string.classification), modifier = GlanceModifier.size(imageSize).padding(end = 4.dp), - colorFilter = ColorFilter.tint(metaBarColor) + colorFilter = ColorFilter.tint(textStyleMetaInfo.color) ) Text( text = Classification.getClassificationFromString(obj.classification)?.let { context.getString(it.stringResource) } ?: "", From f58856d25d63d10a032c97a4f7a3b6c39c6b0642 Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Mon, 11 Nov 2024 20:02:34 +0100 Subject: [PATCH 75/76] version bump --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 9f44d8674..e72a55965 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -29,8 +29,8 @@ android { buildConfigField("long", "buildTime", "${System.currentTimeMillis()}L") minSdk = 23 targetSdk = 34 - versionCode = 209030004 - versionName = "2.09.03-beta02" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) + versionCode = 209030005 + versionName = "2.09.03-beta03" // keep -release as a suffix also for release, build flavor adds the suffix e.g. .gplay (e.g. 1.00.00-rc0.gplay) buildConfigField("String", "versionCodename", "\"Pride is a protest \uD83C\uDF08\"") multiDexEnabled = true vectorDrawables.useSupportLibrary = true From 406d06801c7cebb8e7308a4f9a3d56f75ec64acf Mon Sep 17 00:00:00 2001 From: Patrick Lang <72232737+patrickunterwegs@users.noreply.github.com> Date: Mon, 11 Nov 2024 20:12:23 +0100 Subject: [PATCH 76/76] New Crowdin updates (#1545) * New translations strings.xml (French) * New translations strings.xml (Greek) * New translations strings.xml (Portuguese, Brazilian) * New translations strings.xml (Portuguese, Brazilian) * New translations strings.xml (Italian) * New translations strings.xml (Italian) * New translations strings.xml (Italian) * New translations strings.xml (Italian) * New translations strings.xml (Japanese) * New translations strings.xml (Punjabi) * New translations strings.xml (Punjabi) * New translations strings.xml (Polish) --- app/src/main/res/values-el/strings.xml | 1 + app/src/main/res/values-fr/strings.xml | 4 ++ app/src/main/res/values-it/strings.xml | 59 ++++++++++++++++++-------- app/src/main/res/values-ja/strings.xml | 1 + app/src/main/res/values-pa/strings.xml | 14 +++++- app/src/main/res/values-pl/strings.xml | 51 ++++++++++++++++++++++ app/src/main/res/values-pt/strings.xml | 12 ++++++ 7 files changed, 124 insertions(+), 18 deletions(-) diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 142f5aeda..79f879cbd 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -382,6 +382,7 @@ "Ανάπτυξη των δευτερευουσών εργασιών στη λίστα από προεπιλογή" "Ανάπτυξη των δευτερευουσών σημειώσεων στη λίστα από προεπιλογή" "Ανάπτυξη των επισυναπτωμένων στην λίστα από προεπιλογή" + "Ανάπτυξη των κύριων επισυναπτωμένων στην λίστα από προεπιλογή" "Συγνώμη" "Πίσω" "Λεπτομέριες" diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index e638cbad5..de922d5c8 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -358,6 +358,7 @@ "Afficher l'heure dans le fuseau horaire local" "Afficher l'heure dans le fuseau horaire d'origine" "Afficher l'heure en local et dans le fuseau horaire d'origine (vue détaillée seulement)" + "Police" "Vous aimez jtx Board?" "Le développement d'une application est complexe et la maintenance et le support sont des tâches difficiles. Si vous aimez cette application et si vous souhaitez en assurer le développement continu, pensez à faire un don :-) Merci !" @@ -382,6 +383,7 @@ Merci !" "Développer les sous-tâches dans la liste par défaut" "Développer les sous-notes dans la liste par défaut" "Développer les pièces jointes dans la liste par défaut" + "Développer les parents en liste par défaut" "Désolé" "Retour" "Détails" @@ -521,6 +523,7 @@ Merci !" "Alarmes en plein écran" "Affiche les alarmes en plein écran lorsque l'appareil est verrouillé" "Mode d'accessibilité" + "Assurer une taille de police minimale pour les petits élements" "Veuillez autoriser les notifications en plein écran dans les paramètres du système." "Synchroniser au démarrage de l'appli" "Synchroniser lors du tirage au sort" @@ -609,6 +612,7 @@ Merci !" "Mettre à jour le widget" "Note : Ceci est une fonctionnalité expérimentale! Des changements d'opacité réduits dans le thème de couleur peuvent ne pas être reflétés immédiatement!" "Note : Ceci est une fonctionnalité expérimentale ! Les changements dans le thème de couleur ne seront pas reflétés ! Ne choisissez aucune couleur pour revenir à la valeur par défaut du système." + "Définir des catégories par défaut pour les nouvelles entrées depuis le widget" "Opacité" "Général" "Fermer" diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 5e9c86f0f..3677cf570 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -1,7 +1,7 @@ - "jtx Board sync Diari, Note e Attività" + "jtx Board sincronizza Diari, Note & Attività" "sincronizza il contenuto della jtx Board con altre applicazioni come DAVx⁵" @@ -49,7 +49,7 @@ "Tavola" "Sincronizzazione" "Informazioni / Licenza" - "Diari, Note ed Attività" + "diari, note & attività" "Impostazioni" "Notizie e aggiornamenti" "Link esterni" @@ -102,7 +102,7 @@ "Aggiungi link allegato" "Aggiungi una sottoattività" "Aggiunta rapida sottoattività" - "Aggiunta rapida subnota" + "Aggiunta rapida sottonota" "Aggiungi link allegato" "Ripeti ogni" "in poi" @@ -157,7 +157,7 @@ Mostra l\'avanzamento delle sottoattività nell\'elenco Mostra i progressi per le attività principali "Impostazioni dell'app" - "Seleziona Tipo MI per le note audio" + "Seleziona formato per le note audio" "Sincronizza con %1$s" "jtx Board non fornisce la sincronizzazione del server, ma supporta la sincronizzazione tramite DAVx5. Questo metodo ti permetterà di utilizzare un server CalDAV-compatibile di tua scelta per memorizzare, eseguire il backup e sincronizzare i tuoi dati." @@ -184,7 +184,7 @@ "Grazie a" "jtx Board è un'app open source che apprezza la partecipazione e il contributo della comunità open source. In questa pagina vorremmo attribuire gli sforzi dei membri della comunità per le traduzioni." "Se desideri modificare/aggiungere traduzioni o aggiungere nuove lingue a questa app, sentiti libero di unirti al progetto jtx Board sulla piattaforma di traduzione Crowdin:" - "Partecipa a Crowdin.com" + "Partecipa su Crowdin.com" "Congratulazioni, questa è la tua prima annotazione nel diario :-)" "I Diari possono essere utilizzati per conservare i tuoi appunti per una data specifica. Utilizzare questa funzionalità ad esempio per i protocolli, i verbali delle riunioni, le voci del diario e così via. Se modifichi questa voce, vedrai le opzioni per aggiungere categorie, partecipanti, allegati, … Sentiti libero di eliminare questa voce quando vuoi!" "Congratulazioni, questa è la tua prima nota :-)" @@ -192,7 +192,7 @@ "Congratulazioni, questa è la tua prima voce di Attività :-)" "Oltre ai Diari e alle Note, le Attività possono avere un inizio pianificato, una data di scadenza e una data di completamento. Possono essere verificati al termine o è possibile impostare un avanzamento. Modifica questa voce per controllare tutte le opzioni :-)" "#PrimiPassi" - "Salva e modifica" + "Salva & modifica" "Salva & nuovo" "Salva & chiudi" "Registra allegato audio" @@ -200,7 +200,7 @@ "Aggiungere contenuto a un Diario, una Nota o un'Attività?" "Aggiungi" "Modifica" - "Resettare" + "Reimposta" "Applica" "n/d" "Collezione" @@ -217,7 +217,7 @@ "All'inizio" "Alla scadenza" "prima dell'inizio" - "Dopo l'inizio" + "dopo l'inizio" "prima della scadenza" "dopo la scadenza" "minuti" @@ -235,7 +235,7 @@ "Eliminare \"%1$s\"?" "La cancellazione di una collezione cancellerà anche tutti i diari, le note e le attività all'interno di questa collezione. Questo non può essere annullato. Sei sicuro di voler continuare?" "Aggiungi collezione locale" - "Notizie e aggiornamenti" + "Notizie & Note di Rilascio" "Colore" "Nessuna priorità" "1 - Più alto" @@ -273,7 +273,7 @@ "Relativo a" "Commenti" "Allegati" - "Notificazioni" + "Notifiche" "Ricorrenza" "Eccezioni" "Aggiunte" @@ -319,6 +319,7 @@ Senza risorse Ordina sottoattività per Ordina note collegate per + "Trascina & Rilascia" "Nessun filtro" "Altro (%1$d)" "Meno" @@ -382,6 +383,7 @@ Grazie!" "Espansione predefinita delle sottoattività nell'elenco" "Espansione predefinita delle note secondarie nell'elenco" "Espansione predefinita degli allegati nell'elenco" + "Espansione predefinita dei genitori nell'elenco" "Spiacente" "Indietro" "Dettagli" @@ -392,9 +394,12 @@ Grazie!" "Inizio (giorno)" "Inizio (settimana)" "Inizio (mese)" + "Scadenza (giorno)" "Scadenza (settimana)" "Scadenza (mese)" "Settimana %1$d/%2$d" + "Riassunto/Descrizione" + "Stato/Classificazione/Priorità" "Fuso orario" "Non impostato" "Inverti selezione" @@ -442,8 +447,8 @@ Grazie!" "Scollega dal genitore" "Rimuovere la relazione come sotto-voce? La voce rimarrà come voce autonoma." "Modifica commento" - "Aggiungere nota secondaria" - "Modifica sottoattività" + "Aggiungere sotto-nota" + "Modifica sotto-attività" "Modifica nota secondaria" "jtx Board visualizza le notifiche quando gli allarmi sono in scadenza. Per utilizzare questa funzione, concedere l'autorizzazione alle notifiche." "jtx Board può usare la vostra posizione per zoomare automaticamente verso la vostra posizione quando si usano le mappe. Se si desidera utilizzare questa funzione, concedere l'autorizzazione alla localizzazione grossolana." @@ -470,16 +475,19 @@ Grazie!" "Staccare questo elemento dalla serie ti permetterà di avere sotto-attività indipendenti o note collegate, ma non ci sarà più link alla serie originale. Vorresti continuare?" "Attenzione: Questa operazione non può essere annullata!" "Scollega dalla serie" + "Applicazione di sincronizzazione obsoleta" "La tua versione attuale di %1$s non è compatibile con questa versione di jtx Board. Si prega di aggiornare a %1$s %2$s o successivamente! La sincronizzazione attraverso %1$s è attualmente sospesa." "Salva la configurazione del filtro corrente" - "Mio filtro" + "Il mio filtro" "Aggiungi/modifica preimpostazione categoria" "Aggiungi/modifica preimpostazione risorsa" "Aggiungi/modifica preimpostato di stato" "Aggiungi voce audio" "Vista compatta" "Vista Kanban" + "Vista per settimana" "Impostazioni delle attività" + "Impostazioni Allarmi" "Impostazioni Attività (stato/progresso)" "Impostazioni Di Sincronizzazione" "Impostare una data di inizio predefinita per le attività" @@ -509,6 +517,8 @@ Grazie!" "Mantieni lo stato, avanzamento & completato in sincronizzazione" "Attenzione: Questa è una funzione sperimentale" "Crea nuove voci con la posizione corrente" + "Concedi l'accesso alla tua posizione durante l'utilizzo di questa app per utilizzare questa funzionalità." + "Allarmi persistenti" "Mantieni le notifiche fino al termine o al rinvio" "Allarmi a schermo intero" "Mostra gli allarmi a schermo intero quando il dispositivo è bloccato" @@ -531,11 +541,15 @@ Grazie!" "Seleziona lingua" "Sistema predefinito" "Filtri speciali" - "Filtro preimpostati" + "Filtri preimpostati" "Si prega di aggiungere/aggiornare/eliminare le preimpostazioni del filtro dal menu filtro nella vista elenco." "Qualsiasi" "Tutti/e" "Nessuno/a" + "Data: %1$s - %2$s" + "Inizi(at)o: %1$s - %2$s" + "Scadenza: %1$s - %2$s" + "Completato: %1$s - %2$s" "Data nel passato" "Oggi" @@ -555,6 +569,7 @@ Grazie!" Voci biometriche protette sbloccate "Allarme automatico" "Sempre in scadenza" + "Sempre al salvataggio (sperimentale)" "Attivare per creare automaticamente gli allarmi. Scegliere ´\"Sempre attivo\" per non creare un allarme, ma per essere avvisati in ogni caso quando un'attività è in scadenza." "Proteggi le voci con la biometria" "Questa funzione nasconde le voci selezionate fino a quando non vengono sbloccate con dati biometrici, ma non crittografa/decifrano i dati in background." @@ -568,7 +583,7 @@ Grazie!" "Senza data di scadenza" "Aggiungere una raccolta locale o sincronizzare una raccolta remota che supporti questo modulo." "Quindi ordinare per" - "Gruppo per" + "Raggruppa per" "Il raggruppamento è disponibile per l'elenco e la vista compatta" "Salva come preimpostato" "Vista piana" @@ -597,6 +612,7 @@ Grazie!" "Aggiornamento del widget" "Nota: Questa è una funzione sperimentale! Con cambiamenti di opacità ridotti nel tema di colore potrebbe non essere riflessa immediatamente!" "Nota: Questa è una funzione sperimentale! Le modifiche al tema dei colori non saranno riflesse! Scegli nessun colore per tornare al valore predefinito di sistema." + "Imposta categorie predefinite per le nuove voci dal widget" "Opacità" "Generale" "Ripiega" @@ -607,8 +623,8 @@ Grazie!" "Sfondo del widget" "Sfondo delle voci" "Mostra descrizione" - "Vero Scuro (AMOLED)" - "Contrasto (e-Inchiostro)" + "Nero Puro (AMOLED)" + "Contrasto (e-Ink)" "Impostazioni diari" "Impostazioni Delle Note" "Impostare una data/ora predefinita per i diari" @@ -640,6 +656,7 @@ Grazie!" \"Stato esteso Filtri attivi: "Kanban" + "Colonne Kanban" basato su stati standard basato su stati estesi basato sulla prima categoria @@ -652,4 +669,12 @@ Grazie!" "jtx Board può avvisarti quando sei vicino alle coordinate date. Si prega di impostare l'autorizzazione di posizione per 'Consenti tutto il tempo' e concedere l'autorizzazione di notifica per utilizzare questa funzione." "Geofence attivato" "jtx Board ha bisogno del permesso di pianificare gli avvisi esatti, altrimenti le notifiche di allarme potrebbero essere ritardate. Si prega di concedere questa autorizzazione per utilizzare questa funzione." + "Chiama %1$s" + "E-mail a %1$s" + Crea sottoattività in massa + Crea note collegate in massa + Il testo sembra contenere più sottoattività. Vuoi creare %d sottoattività? + Il testo sembra contenere più note collegate. Vuoi creare %d note collegate? + Crea multipli + Crea singolo diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 1c461f6fa..b06f2e7b7 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -382,6 +382,7 @@ "デフォルトでサブ ToDo を一覧に展開" "デフォルトでサブメモを一覧に展開" "デフォルトで添付ファイルを一覧に展開" + "デフォルトでリストに親を展開する" "申し訳ありません" "戻る" "詳細" diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 41114f99a..ee7fa5f22 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -19,7 +19,8 @@ "ਲੰਬਕਾਰ" "ਅਨਲਿੰਕ ਕਰੋ" "ਬੰਦ" - "ਮਨਜ਼ੂਰੀਆਂ" + "ਟਿਕਾਣੇ ਦੀ ਮਨਜ਼ੂਰੀ ਰੋਕੀ ਗਈ" + "ਮਨਜੂਰੀਆਂ" "ਮੌਜੂਦਾ ਟਿਕਾਣਾ" "ਜਰਨਲ ਸ਼ਾਮਲ ਕਰੋ" "ਨੋਟ ਸ਼ਾਮਲ ਕਰੋ" @@ -105,6 +106,8 @@ "ਅਟੈਚਮੈਂਟ ਲਿੰਕ ਜੋੜੋ" "ਰੋਜ਼ਾਨਾ ਦੁਹਰਾਓ" "ਚਾਲੂ" + "ਤੇ" + "ਮਹੀਨੇ ਦਾ ਦਿਨ" "ਅਖੀਰਲਾ" "ਵਾਰੀ" "ਦੁਹਰਾਓ ਨੂੰ ਸੈੱਟ ਕਰਨ ਲਈ ਇੱਕ ਸ਼ੁਰੂਆਤੀ ਮਿਤੀ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ!" @@ -113,6 +116,15 @@ "ਸਮਾਂ ਜੋੜੋ" "ਸਮੇਂ ਵਿੱਚ ਤਰਮੀਮ ਕਰੋ" "ਸਮਾਂ ਖੇਤਰ ਸ਼ਾਮਲ ਕਰੋ" + "ਸਮਾਂ ਖੇਤਰ ਸ਼ਾਮਲ ਕਰੋ" + "\"%1$s\" ਮਿਟਾਓ?" + "ਇਸ ਐਂਟਰੀ ਨੂੰ ਖ਼ਾਰਜ ਕਰਨਾ ਹੈ?" + "ਮੁਕੰਮਲ ਹੋਏ ਸਾਰੇ ਕਾਰਜ ਮਿਟਾਉਣੇ ਹਨ?" + "ਧਿਆਨ ਦਿਓ: ਉਪ-ਕਾਰਜ ਆਪਣੀ ਸਥਿਤੀ ਤੋਂ ਸੁਤੰਤਰ ਤੌਰ 'ਤੇ ਮਿਟਾ ਦਿੱਤੇ ਜਾਂਦੇ ਹਨ ਜੇਕਰ ਉਹਨਾਂ ਦੇ ਪਿੱਤਰ ਕਾਰਜ ਦੀ ਕੀਤੇ ਵਜੋਂ ਨਿਸ਼ਾਨਦੇਹੀ ਕਰ ਦਿੱਤੀ ਗਈ ਹੋਵੇ। ਇਸ ਕਾਰਵਾਈ ਨੂੰ ਅਣਕੀਤਾ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ!" + "ਕੀ ਤੁਸੀਂ ਯਕੀਨੀ ਤੌਰ 'ਤੇ \"%1$s\" ਨੂੰ ਮਿਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?" + "ਕੀ ਤੁਸੀਂ ਯਕੀਨੀ ਤੌਰ 'ਤੇ ਇਸ ਐਂਟਰੀ ਨੂੰ ਰੱਦ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ? ਇਹ ਐਂਟਰੀ ਸੁਰੱਖਿਅਤ ਨਹੀਂ ਕੀਤੀ ਜਾਵੇਗੀ।" + "ਨਿਯਤ ਮਿਤੀ ਸ਼ੁਰੂਆਤੀ ਮਿਤੀ ਤੋਂ ਪਹਿਲਾਂ ਨਹੀਂ ਹੋ ਸਕਦੀ।" + "ਐਪ ਦੀ ਇਜਾਜ਼ਤ" diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 903e1b7df..1f6ad98d2 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -207,8 +207,20 @@ "Właściciel: %1$s" "Połącz z zadaniem głównym" "Zadanie główne" + "Podzadanie/-notatka" + "Załącz wybrane jako …" "Kolekcje" + "Szablony" + "Data/Czas" + "Czas trwania" + "Na początku" + "W terminie" + "przed rozpoczęciem" + "po rozpoczęciu" + "przed terminem" + "po terminie" + "Minut" "Godzina(-ny)" "Dzień/Dni" @@ -216,10 +228,14 @@ "Notatki: %1$s" "Zadania: %1$s" + "Kolekcje są zbiorem wpisów podobnie foldery z plikami. Możesz tworzyć nowe lokalne kolekcje za pomocą menu lub zsynchronizować nowe kolekcje zdalne, jeśli masz zainstalowaną aplikację synchronizacji (np. DAVx5)." + "Menu kolekcji" "Dodaj lokalną Kolekcję" "Edytuj lokalną Kolekcję" "Usunąć \"%1$s\"?" + "Usunięcie kolekcji spowoduje również usunięcie wszystkich dzienników, notatek i zadań w tej kolekcji. Tej operacji nie można cofnąć. Czy na pewno chcesz kontynuować?" "Dodaj lokalną Kolekcję" + "Aktualności & Informacje o wersji" "Kolor" "Bez priorytetu" "Najwyższy" @@ -232,16 +248,27 @@ "tydzień/tygodnie" "miesiąc/miesiące" "rok/lata" + "Zapisano pomyślnie" + "Wystąpił błąd podczas zapisywania wybranego pliku!" + "Dodaj zdalną kolekcję (%1$s)" + "Pokaż w %1$s" "Wyeksportuj jako .ics" "Dziennik" "Notatka" "Zadanie" "Konto" + "Stan" "Klasyfikacja" "Kategoria" + "Zasób" "Priorytet" + "Tylko do odczytu" + "Przesyłanie w toku" + "Adres URL" "Lokalizacja" "Uczestnicy" + "Zasoby" + "Organizer" "Kontakt" "Związane z" "Komentarze" @@ -249,17 +276,40 @@ "Alarmy" "Powtarzanie" "Wyjątki" + "Dodatki" "Tytuł" "Opis" "Szukaj" + Szukaj dzienników + Szukaj notatek + Szukaj zadań "Filtr" + "Widoczność" + "Kolejność" "Synchornizuj teraz" + "Do" + "Ukończone" + "Rozpoczęto" + "Dodaj czas" + "Postęp" "Kategorie" "Podzadania" + "Połączenie z zadaniem głównym" "Niski" "Niższy" "Najniższy" + "Termin w przyszłości" + "Ten wpis jest częścią serii." + "Ten wpis powtarza się co" + "Przenieś wszystkie wpisy z \"%1$s\" do" + "Uwaga: Można wybrać tylko kolekcje z możliwością zapisu i kolekcje z obsługą tych samych komponentów (dzienniki, notatki, zadania)." "Przenieść wpisy" + "Brak czasu" + "Nie wybrano daty" + "Bez daty rozpoczęcia" + "Bez terminu zakończenia" + "Bez daty wykonania" + "Pokaż tylko pasujące wpisy podrzędne" "Utworzono" "Ostatnio zmodyfikowano" "Importuj z .ics" @@ -277,6 +327,7 @@ "Dziękujemy za zakup jtx Board Pro!" "Dziękujemy!" "Widok siatki" + "Dzienniki" "Cofnij" "Szczegóły" "Odtwórz" diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 7e4658b32..d6334f112 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -161,10 +161,20 @@ "Sincronizar com %1$s" "jtx Board não fornece sincronização com servidor por si mesmo, mas suporta a sincronização pelo DAVx⁵. Esse método permite que você use qualquer servidor CalDAV de sua escolha para armazenar, fazer backup e sincronizar seus dados." "kSync é um aplicativo baseado no DAVx⁵ desenvolvido por Infomaniak especialmente para seus serviços. Enquanto o DAVx⁵ está aberto a qualquer servidor CalDAV compatível, kSync só permite sincronização com contas Infomaniak." + "Parabéns! :-)" + "Nós detectamos %1$s no seu telefone." + "Instruções de instalação" + "Confira %1$s!" "Não detectamos %1$s no seu telefone." "Saiba mais sobre %1$s" "Baixar %1$s" + "Adicione uma conta em %1$s" + "Falhou em abrir %1$s, por favor, abra o app manualmente." + "Olá, eu sou Patrick, o desenvolvedor do jtx Board. Eu estou dedicando muito tempo e esforço neste app que eu estou oferecendo para você de graça. Se você gosta do meu app, por favor mande algum carinho e faça uma pequena doação!" + "Obrigado!" + "Doar com" + "Se você gostaria de considerar outro método de doação, por favor, visite nosso site:" "Nenhum aplicativo foi encontrado para abrir este arquivo/URL." "Item recorrente agora é uma exceção." "Tarefas concluídas excluídas (%d)." @@ -176,6 +186,8 @@ "Parabéns, esta é a sua primeira entrada no diário :-)" "Os diários podem ser usados para guardar as suas notas para uma data específica. Utilizar esta funcionalidade por exemplo para protocolos, atas de reunião, entradas do diário e assim por diante. Se você editar esta postagem, você verá as opções para adicionar categorias, participantes, anexos, … Sinta-se à vontade para apagar esta entrada quando quiser!" "Parabéns, esta é a sua primeira nota :-)" + "Notas são notas tradicionais e não estão ligadas a uma data específica. Como entradas de diário, você pode adicionar anexos, participantes e mais quando edita ou adiciona uma entrada. Aliás, você pode também adicionar subtarefas a qualquer entrada, não importa se é uma entrada de diário, nota ou tarefa!" + "Parabéns, esta é a sua primeira tarefa :-)" "Vincular a um nível superior"