Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,14 @@ package com.ichi2.anki
import android.animation.Animator
import android.content.Context
import android.content.res.ColorStateList
import android.os.Bundle
import android.view.KeyEvent
import android.view.MotionEvent
import android.view.View
import android.widget.LinearLayout
import androidx.core.view.AccessibilityDelegateCompat
import androidx.core.view.ViewCompat
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat
import com.google.android.material.color.MaterialColors
import com.ichi2.anki.databinding.ActivityHomescreenBinding
import com.ichi2.anki.databinding.FloatingAddButtonBinding
Expand Down Expand Up @@ -59,9 +63,11 @@ class DeckPickerFloatingActionMenu(
val isFragmented: Boolean
get() = studyOptionsFrame != null

@Suppress("DEPRECATION")
private fun showFloatingActionMenu() {
toggleListener?.onBeginToggle(isOpening = true)
deckPicker.activeSnackBar?.dismiss()
binding.fabMain.announceForAccessibility(context.getString(R.string.fab_menu_opened))
linearLayout.alpha = 0.5f
studyOptionsFrame?.let { it.alpha = 0.5f }
isFABOpen = true
Expand Down Expand Up @@ -143,8 +149,10 @@ class DeckPickerFloatingActionMenu(
* Case 2: When the user opens the side navigation drawer (without touching the FAB). In that case we don't
* want to show any type of rise and shrink animation for the FAB so we put the value `false` for the parameter.
*/
@Suppress("DEPRECATION")
fun closeFloatingActionMenu(applyRiseAndShrinkAnimation: Boolean) {
toggleListener?.onBeginToggle(isOpening = false)
binding.fabMain.announceForAccessibility(context.getString(R.string.fab_menu_closed))
if (applyRiseAndShrinkAnimation) {
linearLayout.alpha = 1f
studyOptionsFrame?.let { it.alpha = 1f }
Expand Down Expand Up @@ -346,6 +354,28 @@ class DeckPickerFloatingActionMenu(
}

init {
ViewCompat.setAccessibilityDelegate(
binding.fabMain,
object : AccessibilityDelegateCompat() {
override fun performAccessibilityAction(
host: View,
action: Int,
args: Bundle?,
): Boolean {
if (action == AccessibilityNodeInfoCompat.ACTION_CLICK) {
Timber.d("FAB main button: TalkBack CLICK action performed")
if (!isFABOpen) {
showFloatingActionMenu()
} else {
addNote()
}
return true
}
return super.performAccessibilityAction(host, action, args)
}
},
)

binding.fabMain.setOnTouchListener(
object : DoubleTapListener(context) {
override fun onDoubleTap(e: MotionEvent?) {
Expand Down
4 changes: 3 additions & 1 deletion AnkiDroid/src/main/res/values/02-strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -450,5 +450,7 @@ opening the system text to speech settings fails">Failed to open text to speech

<!-- Whitespace is OK -->
<string name="list_separator" comment="The character and spacing to display between elements of a list, for example ', ' in 'Apple, Banana, Cherry" tools:ignore="TranslationTypo">, </string>
<!-- Accessibility -->
<string name="fab_menu_opened">Menu opened</string>
<string name="fab_menu_closed">Menu closed</string>
</resources>

Loading