From b07df9698a6ebe15de5d4b75daf6e2714aab4345 Mon Sep 17 00:00:00 2001 From: ekager Date: Wed, 21 Aug 2019 22:36:01 -0700 Subject: [PATCH] For #4868 - Update content description of tabs button with number of tabs --- .../toolbar/TabCounterToolbarButton.kt | 29 ++++++++++++++----- app/src/main/res/values/strings.xml | 5 ++++ 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/TabCounterToolbarButton.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/TabCounterToolbarButton.kt index f0cb37eed..2f69a54f7 100644 --- a/app/src/main/java/org/mozilla/fenix/components/toolbar/TabCounterToolbarButton.kt +++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/TabCounterToolbarButton.kt @@ -4,6 +4,7 @@ package org.mozilla.fenix.components.toolbar +import android.content.Context import android.util.TypedValue import android.view.View import android.view.ViewGroup @@ -31,14 +32,16 @@ class TabCounterToolbarButton( setOnClickListener { showTabs.invoke() } - contentDescription = - parent.context.getString(R.string.mozac_feature_tabs_toolbar_tabs_button) + + val count = sessionManager.sessions.count { + it.private == isPrivate + } + + contentDescription = getDescriptionForTabCount(context, count) addOnAttachStateChangeListener(object : View.OnAttachStateChangeListener { override fun onViewAttachedToWindow(v: View?) { - setCount(sessionManager.sessions.count { - it.private == isPrivate - }) + setCount(count) } override fun onViewDetachedFromWindow(v: View?) { /* no-op */ } @@ -59,9 +62,21 @@ class TabCounterToolbarButton( override fun bind(view: View) = Unit private fun updateCount() { - reference.get()?.setCountWithAnimation(sessionManager.sessions.count { + val count = sessionManager.sessions.count { it.private == isPrivate - }) + } + + reference.get()?.let { + it.contentDescription = getDescriptionForTabCount(it.context, count) + it.setCountWithAnimation(count) + } + } + + private fun getDescriptionForTabCount(context: Context?, count: Int): String? { + return if (count > 1) context?.getString( + R.string.tab_counter_content_description_multi_tab, + count + ) else context?.getString(R.string.tab_counter_content_description_one_tab) } private val sessionManagerObserver = object : SessionManager.Observer { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 569e54cce..69ddcc6ca 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -810,4 +810,9 @@ %s | OSS Libraries + + + 1 tab + + %d tabs