From fbc2e6c033121da886fb25abb4019e7b0d4dc7dc Mon Sep 17 00:00:00 2001 From: Klaus-Hendrik Wolf Date: Thu, 21 Dec 2023 22:06:26 +0100 Subject: [PATCH] feat(drawer): Start first app by pressing Enter in search field (#158) --- .../slimlauncher/adapters/AppDrawerAdapter.kt | 4 ++++ .../sduduzog/slimlauncher/ui/main/HomeFragment.kt | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/app/src/main/java/com/sduduzog/slimlauncher/adapters/AppDrawerAdapter.kt b/app/src/main/java/com/sduduzog/slimlauncher/adapters/AppDrawerAdapter.kt index ed7d6f9e..ca8fd468 100644 --- a/app/src/main/java/com/sduduzog/slimlauncher/adapters/AppDrawerAdapter.kt +++ b/app/src/main/java/com/sduduzog/slimlauncher/adapters/AppDrawerAdapter.kt @@ -44,6 +44,10 @@ class AppDrawerAdapter( } } + fun getFirstApp(): UnlauncherApp { + return filteredApps.first() + } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val view = LayoutInflater.from(parent.context) .inflate(R.layout.add_app_fragment_list_item, parent, false) diff --git a/app/src/main/java/com/sduduzog/slimlauncher/ui/main/HomeFragment.kt b/app/src/main/java/com/sduduzog/slimlauncher/ui/main/HomeFragment.kt index 2cf5f766..819b655a 100644 --- a/app/src/main/java/com/sduduzog/slimlauncher/ui/main/HomeFragment.kt +++ b/app/src/main/java/com/sduduzog/slimlauncher/ui/main/HomeFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.MenuItem import android.view.View import android.view.ViewGroup +import android.view.inputmethod.EditorInfo import android.view.inputmethod.InputMethodManager import android.widget.PopupMenu import android.widget.Toast @@ -204,6 +205,17 @@ class HomeFragment : BaseFragment(), OnLaunchAppListener { app_drawer_edit_text.addTextChangedListener(appDrawerAdapter.searchBoxListener) + app_drawer_edit_text.setOnEditorActionListener { _, actionId, _ -> + if(actionId == EditorInfo.IME_ACTION_DONE && appDrawerAdapter.itemCount > 0) { + val firstApp = appDrawerAdapter.getFirstApp() + launchApp(firstApp.packageName, firstApp.className, firstApp.userSerial) + home_fragment.transitionToStart() + true + } else { + false + } + } + home_fragment.setTransitionListener(object : TransitionListener { override fun onTransitionCompleted(motionLayout: MotionLayout?, currentId: Int) { val inputMethodManager = requireContext().getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager