From e86ed34fe5b27b74aada55ffe71b3fc7ca75a5c8 Mon Sep 17 00:00:00 2001 From: Josia Pietsch Date: Wed, 28 Aug 2024 20:40:48 +0200 Subject: [PATCH 1/6] feature: reworked date & time settings --- .../de/jrpie/android/launcher/Functions.kt | 12 +- .../de/jrpie/android/launcher/HomeActivity.kt | 74 ++++++--- .../launcher/SettingsFragmentLauncher.kt | 35 ++-- app/src/main/res/layout/settings_launcher.xml | 156 ++++++++++++++---- app/src/main/res/values-de/strings.xml | 16 +- app/src/main/res/values-es/strings.xml | 25 +-- app/src/main/res/values-fr/strings.xml | 11 +- app/src/main/res/values/strings.xml | 28 +--- .../metadata/android/en-US/changelogs/21.txt | 1 + 9 files changed, 214 insertions(+), 144 deletions(-) diff --git a/app/src/main/java/de/jrpie/android/launcher/Functions.kt b/app/src/main/java/de/jrpie/android/launcher/Functions.kt index ea442e7..994af4c 100644 --- a/app/src/main/java/de/jrpie/android/launcher/Functions.kt +++ b/app/src/main/java/de/jrpie/android/launcher/Functions.kt @@ -56,7 +56,11 @@ const val PREF_THEME = "theme" const val PREF_SCREEN_TIMEOUT_DISABLED = "disableTimeout" const val PREF_SCREEN_FULLSCREEN = "useFullScreen" -const val PREF_DATE_FORMAT = "dateFormat" + +const val PREF_DATE_LOCALIZED = "dateLocalized" +const val PREF_DATE_VISIBLE = "dateVisible" +const val PREF_TIME_VISIBLE = "timeVisible" +const val PREF_DATE_TIME_FLIP = "dateTimeFlip" const val PREF_DOUBLE_ACTIONS_ENABLED = "enableDoubleActions" const val PREF_EDGE_ACTIONS_ENABLED = "enableEdgeActions" @@ -425,6 +429,7 @@ fun loadSettings(context: Context) { vibrantColor = preferences.getInt(PREF_VIBRANT, 0) } + fun resetSettings(context: Context) { val editor = getPreferences(context).edit() @@ -439,7 +444,10 @@ fun resetSettings(context: Context) { .putString(PREF_THEME, "finn") .putBoolean(PREF_SCREEN_TIMEOUT_DISABLED, false) .putBoolean(PREF_SEARCH_AUTO_LAUNCH, false) - .putInt(PREF_DATE_FORMAT, 0) + .putBoolean(PREF_DATE_VISIBLE, true) + .putBoolean(PREF_TIME_VISIBLE, true) + .putBoolean(PREF_DATE_TIME_FLIP, false) + .putBoolean(PREF_DATE_LOCALIZED, false) .putBoolean(PREF_SCREEN_FULLSCREEN, true) .putBoolean(PREF_DOUBLE_ACTIONS_ENABLED, false) diff --git a/app/src/main/java/de/jrpie/android/launcher/HomeActivity.kt b/app/src/main/java/de/jrpie/android/launcher/HomeActivity.kt index 830f0eb..d82acda 100644 --- a/app/src/main/java/de/jrpie/android/launcher/HomeActivity.kt +++ b/app/src/main/java/de/jrpie/android/launcher/HomeActivity.kt @@ -8,10 +8,11 @@ import android.view.KeyEvent import android.view.MotionEvent import androidx.appcompat.app.AppCompatActivity import androidx.core.view.GestureDetectorCompat +import androidx.core.view.isVisible import de.jrpie.android.launcher.BuildConfig.VERSION_NAME +import de.jrpie.android.launcher.databinding.HomeBinding import de.jrpie.android.launcher.list.other.LauncherAction import de.jrpie.android.launcher.tutorial.TutorialActivity -import de.jrpie.android.launcher.databinding.HomeBinding import java.text.SimpleDateFormat import java.util.* import kotlin.concurrent.fixedRateTimer @@ -20,7 +21,6 @@ import kotlin.math.max import kotlin.math.min - /** * [HomeActivity] is the actual application Launcher, * what makes this application special / unique. @@ -39,8 +39,6 @@ class HomeActivity: UIObject, AppCompatActivity(), private lateinit var binding: HomeBinding - - private var bufferedPointerCount = 1 // how many fingers on screen private var pointerBufferTimer = Timer() @@ -105,34 +103,58 @@ class HomeActivity: UIObject, AppCompatActivity(), super.onStart() } - override fun onResume() { - super.onResume() + private fun updateClock() { + clockTimer?.cancel() + val preferences = getPreferences(this) + val locale = Locale.getDefault() + val dateVisible = preferences.getBoolean(PREF_DATE_VISIBLE, true) + val timeVisible = preferences.getBoolean(PREF_TIME_VISIBLE, true) - // Applying the date / time format (changeable in settings) - val dFormat = getPreferences(this).getInt(PREF_DATE_FORMAT, 0) - val upperFMT = resources.getStringArray(R.array.settings_launcher_time_formats_upper) - val lowerFMT = resources.getStringArray(R.array.settings_launcher_time_formats_lower) + var dateFMT = "yyyy-MM-dd" + var timeFMT = "HH:mm:ss" + if (preferences.getBoolean(PREF_DATE_LOCALIZED, false)) { + dateFMT = android.text.format.DateFormat.getBestDateTimePattern(locale, dateFMT) + timeFMT = android.text.format.DateFormat.getBestDateTimePattern(locale, timeFMT) + } - val dateFormat = SimpleDateFormat(upperFMT[dFormat], Locale.getDefault()) - val timeFormat = SimpleDateFormat(lowerFMT[dFormat], Locale.getDefault()) + var upperFormat = SimpleDateFormat(dateFMT, locale) + var lowerFormat = SimpleDateFormat(timeFMT, locale) + var upperVisible = dateVisible + var lowerVisible = timeVisible + if(preferences.getBoolean(PREF_DATE_TIME_FLIP, false)) { + upperFormat = lowerFormat.also { lowerFormat = upperFormat } + upperVisible = lowerVisible.also { lowerVisible = upperVisible } + } + + binding.homeUpperView.isVisible = upperVisible + binding.homeLowerView.isVisible = lowerVisible clockTimer = fixedRateTimer("clockTimer", true, 0L, 100) { this@HomeActivity.runOnUiThread { - val t = timeFormat.format(Date()) - if (binding.homeLowerView.text != t) - binding.homeLowerView.text = t - - val d = dateFormat.format(Date()) - if (binding.homeUpperView.text != d) - binding.homeUpperView.text = d + if (lowerVisible) { + val t = lowerFormat.format(Date()) + if (binding.homeLowerView.text != t) + binding.homeLowerView.text = t + } + if (upperVisible) { + val d = upperFormat.format(Date()) + if (binding.homeUpperView.text != d) + binding.homeUpperView.text = d + } } } } + override fun onResume() { + super.onResume() + updateClock() + } + override fun onPause() { super.onPause() clockTimer.cancel() + } override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { @@ -230,16 +252,18 @@ class HomeActivity: UIObject, AppCompatActivity(), val preferences = getPreferences(this) binding.homeUpperView.setOnClickListener { - when (preferences.getInt(PREF_DATE_FORMAT, 0)) { - 0 -> Gesture.DATE(this) - else -> Gesture.TIME(this) + if(preferences.getBoolean(PREF_DATE_TIME_FLIP, false)) { + Gesture.TIME(this) + } else { + Gesture.DATE(this) } } binding.homeLowerView.setOnClickListener { - when (preferences.getInt(PREF_DATE_FORMAT, 0)) { - 0 -> Gesture.TIME(this) - else -> Gesture.DATE(this) + if(preferences.getBoolean(PREF_DATE_TIME_FLIP, false)) { + Gesture.DATE(this) + } else { + Gesture.TIME(this) } } } diff --git a/app/src/main/java/de/jrpie/android/launcher/settings/launcher/SettingsFragmentLauncher.kt b/app/src/main/java/de/jrpie/android/launcher/settings/launcher/SettingsFragmentLauncher.kt index e4c6cf3..39ec80b 100644 --- a/app/src/main/java/de/jrpie/android/launcher/settings/launcher/SettingsFragmentLauncher.kt +++ b/app/src/main/java/de/jrpie/android/launcher/settings/launcher/SettingsFragmentLauncher.kt @@ -9,13 +9,16 @@ import android.widget.AdapterView import android.widget.ArrayAdapter import android.widget.Switch import androidx.fragment.app.Fragment -import de.jrpie.android.launcher.PREF_DATE_FORMAT +import de.jrpie.android.launcher.PREF_DATE_LOCALIZED +import de.jrpie.android.launcher.PREF_DATE_TIME_FLIP +import de.jrpie.android.launcher.PREF_DATE_VISIBLE import de.jrpie.android.launcher.PREF_DOUBLE_ACTIONS_ENABLED import de.jrpie.android.launcher.PREF_EDGE_ACTIONS_ENABLED import de.jrpie.android.launcher.PREF_SCREEN_FULLSCREEN import de.jrpie.android.launcher.PREF_SCREEN_TIMEOUT_DISABLED import de.jrpie.android.launcher.PREF_SEARCH_AUTO_KEYBOARD import de.jrpie.android.launcher.PREF_SEARCH_AUTO_LAUNCH +import de.jrpie.android.launcher.PREF_TIME_VISIBLE import de.jrpie.android.launcher.R import de.jrpie.android.launcher.UIObject import de.jrpie.android.launcher.getPreferences @@ -62,6 +65,10 @@ class SettingsFragmentLauncher : Fragment(), UIObject { setSwitchColor(binding.settingsLauncherSwitchEnableDouble, vibrantColor) setSwitchColor(binding.settingsLauncherSwitchEnableEdge, vibrantColor) + setSwitchColor(binding.settingsLauncherSwitchDateLocalized, vibrantColor) + setSwitchColor(binding.settingsLauncherSwitchDateVisible, vibrantColor) + setSwitchColor(binding.settingsLauncherSwitchTimeVisible, vibrantColor) + setSwitchColor(binding.settingsLauncherSwitchDateTimeFlip, vibrantColor) setButtonColor(binding.settingsLauncherButtonChooseWallpaper, vibrantColor) } @@ -93,7 +100,10 @@ class SettingsFragmentLauncher : Fragment(), UIObject { startActivity(intent) } - + bindSwitchToPref(binding.settingsLauncherSwitchDateLocalized, PREF_DATE_LOCALIZED, false) { } + bindSwitchToPref(binding.settingsLauncherSwitchDateVisible, PREF_DATE_VISIBLE, true) {} + bindSwitchToPref(binding.settingsLauncherSwitchTimeVisible, PREF_TIME_VISIBLE, true) {} + bindSwitchToPref(binding.settingsLauncherSwitchDateTimeFlip, PREF_DATE_TIME_FLIP, false) {} bindSwitchToPref(binding.settingsLauncherSwitchScreenTimeout, PREF_SCREEN_TIMEOUT_DISABLED, false) { activity?.let{setWindowFlags(it.window)} @@ -109,27 +119,6 @@ class SettingsFragmentLauncher : Fragment(), UIObject { override fun adjustLayout() { - val preferences = getPreferences(requireActivity()) - // Load values into the date-format spinner - val staticAdapter = ArrayAdapter.createFromResource( - requireActivity(), R.array.settings_launcher_time_format_spinner_items, - android.R.layout.simple_spinner_item ) - - staticAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) - binding.settingsLauncherFormatSpinner.adapter = staticAdapter - - binding.settingsLauncherFormatSpinner.setSelection(preferences.getInt(PREF_DATE_FORMAT, 0)) - - binding.settingsLauncherFormatSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { - override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) { - preferences.edit() - .putInt(PREF_DATE_FORMAT, position) - .apply() - } - - override fun onNothingSelected(parent: AdapterView<*>?) { } - } - // Load values into the theme spinner val staticThemeAdapter = ArrayAdapter.createFromResource( requireActivity(), R.array.settings_launcher_theme_spinner_items, diff --git a/app/src/main/res/layout/settings_launcher.xml b/app/src/main/res/layout/settings_launcher.xml index 38a8d6f..5d085cf 100644 --- a/app/src/main/res/layout/settings_launcher.xml +++ b/app/src/main/res/layout/settings_launcher.xml @@ -1,7 +1,5 @@ - @@ -44,33 +42,11 @@ android:text="@string/settings_launcher_section_appearance" android:textColor="#ccc" android:textSize="18sp" + android:layout_marginBottom="16sp" tools:layout_editor_absoluteX="32dp" tools:layout_editor_absoluteY="16dp" /> - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - \ No newline at end of file + diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 336c3b3..d3b9717 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -54,15 +54,11 @@ --> Erscheinung - Datumsformat - - Standard - Invertiert - Uhrzeit - Deutsch - Nichts - - + Zeit anzeigen + Datum anzeigen + Lokalisiertes Datumsformat verwenden + Datum und Uhrzeit tauschen + Theme Standard @@ -164,4 +160,4 @@ Einstellungen Mehr Optionen - \ No newline at end of file + diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 0207fd0..2922da8 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -64,30 +64,7 @@ --> Apariencia - Formato de fecha - - Normal - Inverso - Solo hora - Alemán - Nada - - - dd-MM-yyyy - HH:mm:ss - HH:mm:ss - HH:mm:ss - - - - HH:mm:ss - dd-MM-yyyy - - dd.MM.yyyy - - - - Tema + Formato de fecha Normal Oscuro diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 3cf0c7b..33c1cd3 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -46,14 +46,7 @@ - --> Apparence - Format de date - - Défaut - Inversé - Temps - Allemand - Rien - + Format de date Theme Défaut @@ -137,4 +130,4 @@ Balayer vers le haut (à gauche de l\'écran) Balayer vers le haut (à droite de l\'écran) Balayer vers le bas (à droite de l\'écran) - \ No newline at end of file + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4a65b31..4f93a71 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -70,28 +70,6 @@ --> Appearance - Date format - - Default - Inverse - Time only - German - Nothing - - - yyyy-MM-dd - HH:mm:ss - HH:mm:ss - HH:mm:ss - - - - HH:mm:ss - yyyy-MM-dd - - dd.MM.yyyy - - Theme @@ -99,6 +77,12 @@ Dark + + Show time + Show date + Use localized date format + Flip date and time + Choose a wallpaper Change wallpaper diff --git a/fastlane/metadata/android/en-US/changelogs/21.txt b/fastlane/metadata/android/en-US/changelogs/21.txt index a139b6c..3838e1f 100644 --- a/fastlane/metadata/android/en-US/changelogs/21.txt +++ b/fastlane/metadata/android/en-US/changelogs/21.txt @@ -11,3 +11,4 @@ All Apps: Settings: - Fixed settings for small displays - Removed sensitivity setting (everybody was setting it to maximum anyway) +- Reworked date & time settings From 631dbf0cdb05ea0de62914883a26108d2de8f97a Mon Sep 17 00:00:00 2001 From: Josia Pietsch Date: Wed, 28 Aug 2024 20:54:54 +0200 Subject: [PATCH 2/6] fix: improved german translation --- app/src/main/res/values-de/strings.xml | 29 +++++++++++++++++--------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index d3b9717..9eeb4e5 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -25,14 +25,22 @@ - Settings : Apps - --> - Hochwischen + Nach oben wischen Doppelt hoch - Runterwischen + Nach unten wischen Doppelt runter - Linkswischen + Nach links wischen Doppelt links - Rechtswischen + Nach rechts wischen Doppelt rechts + Nach rechts wischen (oben) + Nach rechts wischen (unten) + "Nach links wischen (unten) " + Nach links wischen (oben) + Nach oben wischen (links) + Nach oben wischen (rechts) + Nach unten wischen (links) + Nach unten wischen (rechts) Lautstärke + Lautstärke - Doppelklick @@ -52,7 +60,7 @@ - Settings : Launcher - --> - Erscheinung + Aussehen Zeit anzeigen Datum anzeigen @@ -70,14 +78,15 @@ Bildschirm - Bildschirm wach halten - Vollbild verwenden + Bildschirm nicht ausschalten + Vollbild Funktionen Doppelte Wischaktionen - Suchergebisse launchen - Tastatur in Suche öffnen + Kantenwischaktionen + Suchergebnis starten + Tastatur automatisch öffnen Empfindlichkeit @@ -93,7 +102,7 @@ Zum Launcher Tutorial Zurücksetzen - All deine Einstellungen gehen verloren. Weitermachen? + Alle Einstellungen gehen verloren. Weitermachen? Einen Fehler melden From d4f672fc5195b4acca370525b345f5db8bcc5ef3 Mon Sep 17 00:00:00 2001 From: Josia Pietsch Date: Wed, 28 Aug 2024 20:57:24 +0200 Subject: [PATCH 3/6] changed default settings --- app/src/main/java/de/jrpie/android/launcher/Functions.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/de/jrpie/android/launcher/Functions.kt b/app/src/main/java/de/jrpie/android/launcher/Functions.kt index 994af4c..13caadb 100644 --- a/app/src/main/java/de/jrpie/android/launcher/Functions.kt +++ b/app/src/main/java/de/jrpie/android/launcher/Functions.kt @@ -449,8 +449,8 @@ fun resetSettings(context: Context) { .putBoolean(PREF_DATE_TIME_FLIP, false) .putBoolean(PREF_DATE_LOCALIZED, false) .putBoolean(PREF_SCREEN_FULLSCREEN, true) - .putBoolean(PREF_DOUBLE_ACTIONS_ENABLED, false) - + .putBoolean(PREF_DOUBLE_ACTIONS_ENABLED, true) + .putBoolean(PREF_EDGE_ACTIONS_ENABLED, true) Gesture.values().forEach { editor.putString(it.id, it.pickDefaultApp(context)) } editor.apply() From eeb31d6cf1880f10b99b37f52a547f6de48c7ab6 Mon Sep 17 00:00:00 2001 From: Josia Pietsch Date: Wed, 28 Aug 2024 21:02:27 +0200 Subject: [PATCH 4/6] version j-0.0.9 --- app/build.gradle | 4 ++-- app/src/main/res/values-zh-rCN/strings.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index c8e8002..3324ccf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,8 +23,8 @@ android { applicationId "de.jrpie.android.launcher" minSdkVersion 21 targetSdkVersion 35 - versionCode 20 - versionName "j-0.0.8" + versionCode 21 + versionName "j-0.0.9" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 6693572..48fde2c 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -40,7 +40,7 @@ 浏览全部应用 安装应用 没有找到应用市场 - 日期格式 + 日期格式 选择一个壁纸 换壁纸 保持屏幕常亮 From 7c6ea1a16e255ac188005959a6c8351eb84800e0 Mon Sep 17 00:00:00 2001 From: Josia Pietsch Date: Wed, 28 Aug 2024 21:06:58 +0200 Subject: [PATCH 5/6] updated changelog --- fastlane/metadata/android/en-US/changelogs/21.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fastlane/metadata/android/en-US/changelogs/21.txt b/fastlane/metadata/android/en-US/changelogs/21.txt index 3838e1f..9abeb95 100644 --- a/fastlane/metadata/android/en-US/changelogs/21.txt +++ b/fastlane/metadata/android/en-US/changelogs/21.txt @@ -1,5 +1,6 @@ - Chinese translation (thank you, yzqzss!) -- improved French translation +- improved French translation (thank you, toby-bro!) +- improved German translation All Apps: - Removed three dots in app list (use long click instead) From ac30fc6ed51717947666f08ba6a8b5c9ccaa91cc Mon Sep 17 00:00:00 2001 From: Josia Pietsch Date: Thu, 29 Aug 2024 01:00:50 +0200 Subject: [PATCH 6/6] increase version code, enable gradle configuration cache --- app/build.gradle | 2 +- gradle.properties | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 3324ccf..f48fd2e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,7 +23,7 @@ android { applicationId "de.jrpie.android.launcher" minSdkVersion 21 targetSdkVersion 35 - versionCode 21 + versionCode 22 versionName "j-0.0.9" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/gradle.properties b/gradle.properties index 4795480..519dc7f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -21,3 +21,4 @@ android.enableJetifier=true kotlin.code.style=official android.nonTransitiveRClass=false android.nonFinalResIds=false +org.gradle.configuration-cache=true