From fdc8fad13462448c23335ec49e1cef4d2649b74e Mon Sep 17 00:00:00 2001 From: ottoptj Date: Mon, 9 Sep 2024 09:50:14 +0300 Subject: [PATCH] Added accessibility actions for the contact menu --- .../eu/ottop/yamlauncher/AppMenuAdapter.kt | 7 +++ .../eu/ottop/yamlauncher/ContactsAdapter.kt | 22 ++++++-- .../java/eu/ottop/yamlauncher/MainActivity.kt | 50 ++++++++++++------- app/src/main/res/values/strings.xml | 5 +- 4 files changed, 58 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/eu/ottop/yamlauncher/AppMenuAdapter.kt b/app/src/main/java/eu/ottop/yamlauncher/AppMenuAdapter.kt index e82c455..256b037 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/AppMenuAdapter.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/AppMenuAdapter.kt @@ -188,6 +188,13 @@ class AppMenuAdapter( activity.backToHome() true } + + if (sharedPreferenceManager.areContactsEnabled()) { + ViewCompat.addAccessibilityAction(holder.textView, activity.getString(R.string.switch_to_contacts)) { _, _ -> + activity.switchMenus() + true + } + } } override fun getItemCount(): Int { diff --git a/app/src/main/java/eu/ottop/yamlauncher/ContactsAdapter.kt b/app/src/main/java/eu/ottop/yamlauncher/ContactsAdapter.kt index 639ca2a..8a075ce 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/ContactsAdapter.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/ContactsAdapter.kt @@ -1,26 +1,26 @@ package eu.ottop.yamlauncher import android.annotation.SuppressLint -import android.content.Context import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.FrameLayout import android.widget.TextView import androidx.core.content.res.ResourcesCompat +import androidx.core.view.ViewCompat import androidx.recyclerview.widget.RecyclerView import eu.ottop.yamlauncher.settings.SharedPreferenceManager import eu.ottop.yamlauncher.utils.UIUtils class ContactsAdapter( - private val context: Context, + private val activity: MainActivity, private var contacts: MutableList>, private val contactClickListener: OnContactClickListener ) : RecyclerView.Adapter() { - private val uiUtils = UIUtils(context) - private val sharedPreferenceManager = SharedPreferenceManager(context) + private val uiUtils = UIUtils(activity) + private val sharedPreferenceManager = SharedPreferenceManager(activity) interface OnContactClickListener { fun onContactClick(contactId: Int) @@ -49,7 +49,7 @@ class ContactsAdapter( override fun onBindViewHolder(holder: AppViewHolder, position: Int) { val contact = contacts[position] holder.textView.setCompoundDrawablesWithIntrinsicBounds( - ResourcesCompat.getDrawable(context.resources, R.drawable.ic_empty, null),null, ResourcesCompat.getDrawable(context.resources, R.drawable.ic_empty, null),null) + ResourcesCompat.getDrawable(activity.resources, R.drawable.ic_empty, null),null, ResourcesCompat.getDrawable(activity.resources, R.drawable.ic_empty, null),null) uiUtils.setAppAlignment(holder.textView) @@ -63,6 +63,18 @@ class ContactsAdapter( holder.textView.text = contact.first holder.textView.visibility = View.VISIBLE + + ViewCompat.addAccessibilityAction(holder.textView, "Close App Menu") { _, _ -> + activity.backToHome() + true + } + + if (sharedPreferenceManager.areContactsEnabled()) { + ViewCompat.addAccessibilityAction(holder.textView, activity.getString(R.string.switch_to_apps)) { _, _ -> + activity.switchMenus() + true + } + } } override fun getItemCount(): Int { diff --git a/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt b/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt index e30d9f4..215b37f 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt @@ -742,29 +742,41 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh setupRecyclerListener(contactRecycler, contactMenuLinearLayoutManager) searchSwitcher.setOnClickListener { - menuView.showNext() - when (menuView.displayedChild) { - 0 -> { - searchSwitcher.setImageDrawable( - ResourcesCompat.getDrawable( - resources, - R.drawable.contacts_24px, - null - ) - ) - searchSwitcher.contentDescription = getString(R.string.switch_to_contacts) - } - 1 -> { - lifecycleScope.launch(Dispatchers.Default) { - filterItems(searchView.text.toString()) - } - searchSwitcher.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.apps_24px, null)) - searchSwitcher.contentDescription = getString(R.string.switch_to_apps) - } + switchMenus() + } + } + + fun switchMenus() { + menuView.showNext() + when (menuView.displayedChild) { + 0 -> { + setAppViewDetails() + } + 1 -> { + setContactViewDetails() } } } + private fun setAppViewDetails() { + searchSwitcher.setImageDrawable( + ResourcesCompat.getDrawable( + resources, + R.drawable.contacts_24px, + null + ) + ) + searchSwitcher.contentDescription = getString(R.string.switch_to_contacts) + } + + private fun setContactViewDetails() { + lifecycleScope.launch(Dispatchers.Default) { + filterItems(searchView.text.toString()) + } + searchSwitcher.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.apps_24px, null)) + searchSwitcher.contentDescription = getString(R.string.switch_to_apps) + } + private fun getContacts(filterString: String): MutableList> { val contacts = mutableListOf>() diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 71e6a4b..3e6b22e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -12,6 +12,9 @@ Search… + Switch to Contacts + Switch to Apps + Reset Info @@ -44,6 +47,4 @@ %1$s%2$s The permission is required for double tap to work for locking the screen.\n\nIt is only needed if you want to use the double tap to lock screen feature in YAM Launcher. - Switch to Contacts - Switch to Apps \ No newline at end of file