Skip to content

Commit

Permalink
MOPPAND-1130: Adjusting accessibility behaviour for Personal code and…
Browse files Browse the repository at this point in the history
… Phone number fields of Signing view.
  • Loading branch information
ambrose40 committed Nov 29, 2023
1 parent 5081472 commit d214ae9
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 27 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package ee.ria.DigiDoc.android.accessibility;

import static android.content.Context.ACCESSIBILITY_SERVICE;
import static android.text.TextUtils.isEmpty;
import static java.util.Objects.nonNull;

import android.content.Context;
import android.content.res.Configuration;
Expand Down Expand Up @@ -81,6 +83,7 @@ public static void sendAccessibilityEvent(Context context, int eventType, CharSe
}
}

/** @noinspection unused*/
public static void sendDelayedAccessibilityEvent(Context context, int eventType, CharSequence message) {
AccessibilityManager accessibilityManager = (AccessibilityManager) context.getSystemService(ACCESSIBILITY_SERVICE);
if (accessibilityManager.isEnabled()) {
Expand All @@ -98,7 +101,7 @@ public static void setViewAccessibilityPaneTitle(View view, @StringRes int title
public static void setContentDescription(View view, @Nullable String text) {
ViewCompat.setAccessibilityDelegate(view, new AccessibilityDelegateCompat() {
@Override
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCompat info) {
public void onInitializeAccessibilityNodeInfo(@NonNull View host, @NonNull AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
String contentDescription = "";
if (text == null || text.isEmpty()) {
Expand All @@ -115,6 +118,7 @@ public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCo
});
}

/** @noinspection unused*/
public static void disableContentDescription(View view) {
view.setContentDescription(null);
}
Expand Down Expand Up @@ -150,8 +154,34 @@ public static void setSingleCharactersContentDescription(TextView textView, @Nul
public void onInitializeAccessibilityNodeInfo(@NonNull View host, @NonNull AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
StringBuilder textViewAccessibility = getTextViewAccessibility(textView);
if (nonNull(title)) {
info.setText(title + " " + textViewAccessibility);
info.setContentDescription(title + " " + textViewAccessibility);
host.setContentDescription(title + " " + textViewAccessibility);
} else {
info.setText(textViewAccessibility);
info.setContentDescription(textViewAccessibility);
host.setContentDescription(textViewAccessibility);
}
}
});
}

if (title != null) {
public static void setSingleCharactersContentDescriptionWithHint(TextView textView, @Nullable String title, String hint) {
ViewCompat.setAccessibilityDelegate(textView, new AccessibilityDelegateCompat() {
@Override
public void onInitializeAccessibilityNodeInfo(@NonNull View host, @NonNull AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
StringBuilder textViewAccessibility = getTextViewAccessibility(textView);
if (isEmpty(textViewAccessibility)) {
textView.setHint(hint);
if (!isEmpty(textView.getHint())) {
textViewAccessibility = new StringBuilder(textView.getHint().toString());
}
} else {
textView.setHint(" ");
}
if (nonNull(title)) {
info.setText(title + " " + textViewAccessibility);
info.setContentDescription(title + " " + textViewAccessibility);
host.setContentDescription(title + " " + textViewAccessibility);
Expand Down Expand Up @@ -200,7 +230,7 @@ public static boolean isSmallFontEnabled(Resources resources) {
public static void setCustomClickAccessibilityFeedBack(TextView titleView, ExpandableLayout containerView) {
ViewCompat.setAccessibilityDelegate(titleView, new AccessibilityDelegateCompat() {
@Override
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCompat info) {
public void onInitializeAccessibilityNodeInfo(@NonNull View host, @NonNull AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
String message;
if (containerView.isExpanded()) {
Expand All @@ -223,6 +253,7 @@ private static String combineMessages(CharSequence... messages) {
return combinedMessage.toString();
}

/** @noinspection deprecation*/
private static AccessibilityEvent getAccessibilityEvent() {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) {
return new AccessibilityEvent();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,6 @@ public void method(int method) {
idCardView.setVisibility(method == R.id.signatureUpdateSignatureAddMethodIdCard ? VISIBLE : GONE);
switch (method) {
case R.id.signatureUpdateSignatureAddMethodMobileId:
mobileIdView.setDefaultPhoneNoPrefix("372");
break;
case R.id.signatureUpdateSignatureAddMethodSmartId:
case R.id.signatureUpdateSignatureAddMethodIdCard:
break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import android.content.Context;
import android.text.Editable;
import android.text.InputFilter;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.accessibility.AccessibilityManager;
Expand Down Expand Up @@ -134,15 +133,6 @@ public MobileIdRequest request() {
public void response(@Nullable MobileIdResponse response, @Nullable RadioGroup methodView) {
}

public void setDefaultPhoneNoPrefix(String phoneNoPrefix) {
if (TextUtils.isEmpty(phoneNoView.getText())) {
phoneNoView.setText(phoneNoPrefix, TextView.BufferType.EDITABLE);
phoneNoView.setHint(getResources().getString(R.string.mobile_id_country_code_and_phone_number_placeholder));
} else {
phoneNoView.setHint("");
}
}

private void setDefaultCheckBoxToggle() {
rememberMeView.setChecked(true);
}
Expand All @@ -167,7 +157,11 @@ public boolean positiveButtonEnabled() {
private void setAccessibilityDescription() {
phoneNoView.setContentDescription(AccessibilityUtils.getTextViewAccessibility(phoneNoView));
personalCodeView.setContentDescription(AccessibilityUtils.getTextViewAccessibility(personalCodeView));
AccessibilityUtils.setSingleCharactersContentDescription(phoneNoView, getResources().getString(R.string.signature_update_mobile_id_phone_no));
AccessibilityUtils.setSingleCharactersContentDescriptionWithHint(
phoneNoView,
getResources().getString(R.string.signature_update_mobile_id_phone_no),
getResources().getString(R.string.mobile_id_country_code_and_phone_number_placeholder)
);
AccessibilityUtils.setSingleCharactersContentDescription(personalCodeView, getResources().getString(R.string.signature_update_mobile_id_personal_code));
AccessibilityUtils.setEditTextCursorToEnd(phoneNoView);
AccessibilityUtils.setEditTextCursorToEnd(personalCodeView);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -234,12 +234,8 @@ private void setPersonalCodeViewFilters(int country) {
}
}
if (country == 0) {
if (pos == -1) {
inputFilters = Arrays.copyOf(inputFilters, inputFilters.length + 1);
inputFilters[inputFilters.length - 1] = new InputFilter.LengthFilter(11);
}
personalCodeView.setText(Objects.requireNonNull(personalCodeView.getText()).subSequence(0,
Math.min(personalCodeView.getText().length(), 11)));
personalCodeView.setText(Objects.requireNonNull(personalCodeView.getText())
.subSequence(0, Math.min(personalCodeView.getText().length(), 11)));
} else {
if (pos != -1) {
InputFilter[] copy = Arrays.copyOf(inputFilters, inputFilters.length - 1);
Expand All @@ -256,10 +252,8 @@ private void setupContentDescriptions(RadioButton radioButton, CharSequence cont
public void onPopulateAccessibilityEvent(
@NonNull View host, @NonNull AccessibilityEvent event) {
if (!event.getText().isEmpty() &&
(event.getText().get(0).toString().equals(
getResources().getString(R.string.signature_update_signature_add_method_mobile_id)) ||
event.getText().get(0).toString().equals(
getResources().getString(R.string.signature_update_signature_add_method_id_card)))) {
(event.getText().get(0).toString().equals(getResources().getString(R.string.signature_update_signature_add_method_mobile_id)) ||
event.getText().get(0).toString().equals(getResources().getString(R.string.signature_update_signature_add_method_id_card)))) {
event.getText().clear();
event.getText().add(getContentDescription());
}
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/layout/signature_update_mobile_id.xml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
android:inputType="phone"
android:digits="0123456789"
android:imeOptions="actionDone"
android:lines="1"
android:maxLines="1"
android:hint="@string/mobile_id_country_code_and_phone_number_placeholder"
android:accessibilityTraversalAfter="@id/signatureUpdateMobileIdPhoneNoText"
Expand Down Expand Up @@ -79,6 +80,7 @@
android:layout_height="wrap_content"
android:inputType="number"
android:imeOptions="actionDone"
android:lines="1"
android:maxLines="1"
android:accessibilityTraversalAfter="@id/signatureUpdateMobileIdPersonalCodeText"
android:minHeight="@dimen/material_baseline_grid_6x"
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/layout/signature_update_smart_id.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
android:focusable="true"
android:focusableInTouchMode="true">


<TextView
android:id="@+id/signatureUpdateSmartIdMessage"
android:layout_width="match_parent"
Expand Down Expand Up @@ -76,6 +75,7 @@
android:layout_height="wrap_content"
android:inputType="number"
android:imeOptions="actionDone"
android:lines="1"
android:maxLines="1"
android:minHeight="@dimen/material_baseline_grid_6x"
android:accessibilityTraversalAfter="@id/signatureUpdateSmartIdCountry"
Expand Down

0 comments on commit d214ae9

Please sign in to comment.