From 58ddd3c8cc8c428708fb1a76a9fe090b59c038bf Mon Sep 17 00:00:00 2001 From: Josia Pietsch Date: Thu, 20 Mar 2025 14:08:21 +0100 Subject: [PATCH 1/5] fix #130 - revert part of 9043461 as ViewPager2 causes an issue with opening the keyboard --- .../android/launcher/ui/list/ListActivity.kt | 26 ++++++++++--------- app/src/main/res/layout/list.xml | 7 ++++- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/list/ListActivity.kt b/app/src/main/java/de/jrpie/android/launcher/ui/list/ListActivity.kt index 59d83e5..fe27f0f 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/list/ListActivity.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/list/ListActivity.kt @@ -9,8 +9,7 @@ import android.window.OnBackInvokedDispatcher import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.content.res.AppCompatResources import androidx.fragment.app.Fragment -import androidx.viewpager2.adapter.FragmentStateAdapter -import com.google.android.material.tabs.TabLayoutMediator +import androidx.fragment.app.FragmentPagerAdapter import de.jrpie.android.launcher.Application import de.jrpie.android.launcher.R import de.jrpie.android.launcher.actions.LauncherAction @@ -225,13 +224,10 @@ class ListActivity : AppCompatActivity(), UIObject { updateTitle() val sectionsPagerAdapter = ListSectionsPagerAdapter(this) - binding.listViewpager.apply { - adapter = sectionsPagerAdapter - currentItem = 0 + binding.listViewpager.let { + it.adapter = sectionsPagerAdapter + binding.listTabs.setupWithViewPager(it) } - TabLayoutMediator(binding.listTabs, binding.listViewpager) { tab, position -> - tab.text = sectionsPagerAdapter.getPageTitle(position) - }.attach() } } @@ -243,11 +239,17 @@ private val TAB_TITLES = arrayOf( /** * The [ListSectionsPagerAdapter] returns the fragment, * which corresponds to the selected tab in [ListActivity]. + * + * This should eventually be replaced by a [FragmentStateAdapter] + * However this keyboard does not open when using [ViewPager2] + * so currently [ViewPager] is used here. + * https://github.com/jrpie/launcher/issues/130 */ +@Suppress("deprecation") class ListSectionsPagerAdapter(private val activity: ListActivity) : - FragmentStateAdapter(activity) { + FragmentPagerAdapter(activity.supportFragmentManager) { - override fun createFragment(position: Int): Fragment { + override fun getItem(position: Int): Fragment { return when (position) { 0 -> ListFragmentApps() 1 -> ListFragmentOther() @@ -255,11 +257,11 @@ class ListSectionsPagerAdapter(private val activity: ListActivity) : } } - fun getPageTitle(position: Int): CharSequence { + override fun getPageTitle(position: Int): CharSequence { return activity.resources.getString(TAB_TITLES[position]) } - override fun getItemCount(): Int { + override fun getCount(): Int { return when (activity.intention) { ListActivity.ListActivityIntention.VIEW -> 1 else -> 2 diff --git a/app/src/main/res/layout/list.xml b/app/src/main/res/layout/list.xml index 45bcb85..8a3b5d9 100644 --- a/app/src/main/res/layout/list.xml +++ b/app/src/main/res/layout/list.xml @@ -95,7 +95,12 @@ - + Date: Thu, 20 Mar 2025 14:12:29 +0100 Subject: [PATCH 2/5] 0.1.2 --- app/build.gradle | 4 ++-- fastlane/metadata/android/en-US/changelogs/42.txt | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/42.txt diff --git a/app/build.gradle b/app/build.gradle index 9c779e1..349f75c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,8 +23,8 @@ android { minSdkVersion 21 targetSdkVersion 35 compileSdk 35 - versionCode 41 - versionName "0.1.1" + versionCode 42 + versionName "0.1.2" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/fastlane/metadata/android/en-US/changelogs/42.txt b/fastlane/metadata/android/en-US/changelogs/42.txt new file mode 100644 index 0000000..39011cf --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/42.txt @@ -0,0 +1 @@ +* Fixed bug where keyboard does not open automatically From 54409b63121fe6d6bca3c71dee9980da5944fab7 Mon Sep 17 00:00:00 2001 From: Josia Pietsch Date: Thu, 20 Mar 2025 14:55:22 +0100 Subject: [PATCH 3/5] fix #133 --- .../jrpie/android/launcher/ui/HomeActivity.kt | 22 +++++++------------ .../launcher/ui/TouchGestureDetector.kt | 14 ++++++++++-- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/HomeActivity.kt b/app/src/main/java/de/jrpie/android/launcher/ui/HomeActivity.kt index a658cd1..53a0876 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/HomeActivity.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/HomeActivity.kt @@ -2,10 +2,10 @@ package de.jrpie.android.launcher.ui import android.annotation.SuppressLint import android.content.SharedPreferences +import android.content.res.Configuration import android.content.res.Resources import android.os.Build import android.os.Bundle -import android.util.DisplayMetrics import android.view.KeyEvent import android.view.MotionEvent import android.view.View @@ -56,22 +56,11 @@ class HomeActivity : UIObject, AppCompatActivity() { super.onCreate(savedInstanceState) super.onCreate() - val displayMetrics = DisplayMetrics() - - @Suppress("deprecation") // required to support API < 30 - windowManager.defaultDisplay.getMetrics(displayMetrics) - - val width = displayMetrics.widthPixels - val height = displayMetrics.heightPixels - touchGestureDetector = TouchGestureDetector( - this, - width, - height, + this, 0, 0, LauncherPreferences.enabled_gestures().edgeSwipeEdgeWidth() / 100f ) - - + touchGestureDetector.updateScreenSize(windowManager) // Initialise layout binding = HomeBinding.inflate(layoutInflater) @@ -103,6 +92,11 @@ class HomeActivity : UIObject, AppCompatActivity() { } } + override fun onConfigurationChanged(newConfig: Configuration) { + super.onConfigurationChanged(newConfig) + touchGestureDetector.updateScreenSize(windowManager) + } + override fun onStart() { super.onStart() diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/TouchGestureDetector.kt b/app/src/main/java/de/jrpie/android/launcher/ui/TouchGestureDetector.kt index 9000fa8..8e8ed4e 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/TouchGestureDetector.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/TouchGestureDetector.kt @@ -5,8 +5,10 @@ import android.graphics.Insets import android.os.Build import android.os.Handler import android.os.Looper +import android.util.DisplayMetrics import android.view.MotionEvent import android.view.ViewConfiguration +import android.view.WindowManager import androidx.annotation.RequiresApi import de.jrpie.android.launcher.actions.Gesture import de.jrpie.android.launcher.preferences.LauncherPreferences @@ -17,8 +19,8 @@ import kotlin.math.tan class TouchGestureDetector( private val context: Context, - val width: Int, - val height: Int, + var width: Int, + var height: Int, var edgeWidth: Float ) { private val ANGULAR_THRESHOLD = tan(Math.PI / 6) @@ -319,6 +321,14 @@ class TouchGestureDetector( } } + fun updateScreenSize(windowManager: WindowManager) { + val displayMetrics = DisplayMetrics() + @Suppress("deprecation") // required to support API < 30 + windowManager.defaultDisplay.getMetrics(displayMetrics) + width = displayMetrics.widthPixels + height = displayMetrics.heightPixels + } + @RequiresApi(Build.VERSION_CODES.Q) fun setSystemGestureInsets(insets: Insets) { systemGestureInsetTop = insets.top From 7fc58fe38482a692b297a746358e3a04daf01a87 Mon Sep 17 00:00:00 2001 From: Josia Pietsch Date: Thu, 20 Mar 2025 15:52:12 +0100 Subject: [PATCH 4/5] 0.1.3 --- app/build.gradle | 4 ++-- fastlane/metadata/android/en-US/changelogs/43.txt | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/43.txt diff --git a/app/build.gradle b/app/build.gradle index 349f75c..c280794 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,8 +23,8 @@ android { minSdkVersion 21 targetSdkVersion 35 compileSdk 35 - versionCode 42 - versionName "0.1.2" + versionCode 43 + versionName "0.1.3" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/fastlane/metadata/android/en-US/changelogs/43.txt b/fastlane/metadata/android/en-US/changelogs/43.txt new file mode 100644 index 0000000..2bca600 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/43.txt @@ -0,0 +1 @@ +* Fixed gesture detection in landscape orientation From 8e140e2e69d88ab3190642cc271ffb0f793e7c82 Mon Sep 17 00:00:00 2001 From: Josia Pietsch Date: Thu, 20 Mar 2025 16:23:01 +0100 Subject: [PATCH 5/5] rename tab "Apps" to "Actions" and "Volume Up/Down" to "Volume Up/Down Key" --- .../jrpie/android/launcher/ui/settings/SettingsActivity.kt | 2 +- app/src/main/res/values-de/strings.xml | 6 +++--- app/src/main/res/values/strings.xml | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/settings/SettingsActivity.kt b/app/src/main/java/de/jrpie/android/launcher/ui/settings/SettingsActivity.kt index 4c464e5..cd59726 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/settings/SettingsActivity.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/settings/SettingsActivity.kt @@ -109,7 +109,7 @@ class SettingsActivity : AppCompatActivity(), UIObject { } private val TAB_TITLES = arrayOf( - R.string.settings_tab_app, + R.string.settings_tab_actions, R.string.settings_tab_launcher, R.string.settings_tab_meta ) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 735aa9d..d07ff7d 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -14,7 +14,7 @@ - --> Einstellungen - Apps + Aktionen Launcher Meta Settings - Apps + Actions Launcher Meta @@ -85,9 +85,9 @@ Λ (Reverse) Bottom right -> top mid -> bottom left - Volume Up + Volume Up Key Press the volume up button - Volume Down + Volume Down Key Press the volume down button Double Click Double click an empty area