Panagiotis Triantafyllou

accessibility coupon share, accessibility fixes

......@@ -200,7 +200,7 @@ public class ContextualActivity extends Activity implements View.OnClickListener
tvHeader.setText(R.string.cos_coupon_share_telco);
LinearLayout parent = bottomSheetDialog.findViewById(R.id.ll_share_dialog_view_inner);
ImageView dialogClose = (ImageView) bottomSheetDialog.findViewById(R.id.iv_sender_list_close);
RelativeLayout dialogClose = (RelativeLayout) bottomSheetDialog.findViewById(R.id.rl_sender_list_close);
dialogClose.setOnClickListener(view -> {
mIsActivatePressed = false;
bottomSheetDialog.dismiss();
......
......@@ -496,8 +496,12 @@ public class CouponInfoActivity extends Activity implements View.OnClickListener
if (mCoupon != null) {
if (mIsFromWallet) {
if (mCoupon.getMerchantDetails() != null) {
mTvDescription.setVisibility(View.GONE);
mTvDescription.setText(HtmlCompat.fromHtml(mCoupon.getMerchantDetails().getBody(), HtmlCompat.FROM_HTML_MODE_COMPACT));
mTvDescription.setMovementMethod(LinkMovementMethod.getInstance());
mLlShops.setVisibility(View.VISIBLE);
} else {
mTvDescription.setVisibility(View.GONE);
}
if (mIsUnified) {
......
......@@ -9,13 +9,18 @@ import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.core.view.AccessibilityDelegateCompat;
import androidx.core.view.ViewCompat;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
......@@ -112,6 +117,48 @@ public class CouponShareActivity extends Activity implements View.OnClickListene
WarpUtils.renderCustomFont(this, R.font.peridot_regular, mFontDescription, mTvPhoneHeader, mEdtReceiver);
WarpUtils.renderCustomFont(this, R.font.peridot_semi_bold, mFontButtonShare);
//Accessibility
ViewCompat.setAccessibilityDelegate(mFontHeader, new AccessibilityDelegateCompat() {
@Override
public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
info.setClassName("android.widget.TextView");
info.setHeading(true);
}
});
mFontHeader.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
ViewCompat.setAccessibilityDelegate(mIvBack, new AccessibilityDelegateCompat() {
@Override
public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
info.setClassName("android.widget.Button");
info.setContentDescription(getString(R.string.accessibility_back));
}
});
mIvBack.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
mIvBack.postDelayed(() -> {
mIvBack.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
}, 1000);
ViewCompat.setAccessibilityDelegate(mLlShareButton, new AccessibilityDelegateCompat() {
@Override
public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
info.setClassName("android.widget.Button");
info.setContentDescription(getString(R.string.cos_coupon_share_button));
}
});
ViewCompat.setAccessibilityDelegate(mRlSenderView, new AccessibilityDelegateCompat() {
@Override
public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
info.setClassName("android.widget.Button");
info.setContentDescription(getString(R.string.cos_coupon_share_sender) + ", " + WarplyManagerHelper.formatPhoneNumber(mSender));
}
});
initViews();
}
......@@ -208,10 +255,30 @@ public class CouponShareActivity extends Activity implements View.OnClickListene
bottomSheetDialog.dismiss();
});
LinearLayout parent = bottomSheetDialog.findViewById(R.id.ll_share_dialog_view_inner);
TextView header = bottomSheetDialog.findViewById(R.id.tv_sender_value);
ImageView dialogClose = (ImageView) bottomSheetDialog.findViewById(R.id.iv_sender_list_close);
RelativeLayout dialogClose = (RelativeLayout) bottomSheetDialog.findViewById(R.id.rl_sender_list_close);
dialogClose.setOnClickListener(view -> bottomSheetDialog.dismiss());
ViewCompat.setAccessibilityDelegate(header, new AccessibilityDelegateCompat() {
@Override
public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
info.setClassName("android.widget.TextView");
info.setHeading(true);
}
});
header.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
ViewCompat.setAccessibilityDelegate(dialogClose, new AccessibilityDelegateCompat() {
@Override
public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
info.setClassName("android.widget.Button");
info.setContentDescription(getString(R.string.accessibility_close));
}
});
if (mConsumer != null) {
try {
JSONObject profMeta = new JSONObject(mConsumer.getProfileMetadata());
......@@ -231,6 +298,16 @@ public class CouponShareActivity extends Activity implements View.OnClickListene
mSender = tv.getText().toString();
bottomSheetDialog.dismiss();
});
ViewCompat.setAccessibilityDelegate(textView, new AccessibilityDelegateCompat() {
@Override
public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
info.setClassName("android.widget.TextView");
info.setContentDescription(WarplyManagerHelper.formatPhoneNumber(textView.getText().toString()));
}
});
parent.addView(v, 0, new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
......
......@@ -192,7 +192,7 @@ public class TelcoActivity extends Activity implements View.OnClickListener {
tvHeader.setText(R.string.cos_coupon_share_telco);
LinearLayout parent = bottomSheetDialog.findViewById(R.id.ll_share_dialog_view_inner);
ImageView dialogClose = (ImageView) bottomSheetDialog.findViewById(R.id.iv_sender_list_close);
RelativeLayout dialogClose = (RelativeLayout) bottomSheetDialog.findViewById(R.id.rl_sender_list_close);
dialogClose.setOnClickListener(view -> {
mIsActivatePressed = false;
bottomSheetDialog.dismiss();
......
......@@ -1615,6 +1615,25 @@ public class WarplyManagerHelper {
WorkManager.getInstance(Warply.getWarplyContext()).enqueue(mywork);
}
public static String formatPhoneNumber(String phoneNumber) {
// Remove non-digit characters if any
String digits = phoneNumber.replaceAll("\\D", "");
// Format the digits with spaces after each character
StringBuilder formatted = new StringBuilder();
for (int i = 0; i < digits.length(); i++) {
formatted.append(digits.charAt(i));
formatted.append(" "); // Add a space after every character
}
// Remove the trailing space at the end
if (formatted.length() > 0) {
formatted.deleteCharAt(formatted.length() - 1);
}
return formatted.toString();
}
// ===========================================================
// Inner and Anonymous Classes
// ===========================================================
......
......@@ -18,6 +18,7 @@
android:layout_marginStart="16dp"
android:scaleType="centerInside"
android:src="@drawable/ic_back"
android:contentDescription="@string/accessibility_back"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
......@@ -27,6 +28,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cos_coupon_gift"
android:contentDescription="@string/cos_coupon_gift"
android:textColor="@color/cos_light_black"
android:textSize="19sp"
app:layout_constraintBottom_toBottomOf="parent"
......@@ -61,6 +63,7 @@
android:layout_width="match_parent"
android:layout_height="222dp"
android:scaleType="centerCrop"
android:contentDescription="@string/accessibility_coupon_image"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/carousel_banner" />
......@@ -96,7 +99,7 @@
<RelativeLayout
android:id="@+id/ll_share_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="40dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="32dp"
app:layout_constraintEnd_toEndOf="parent"
......@@ -106,10 +109,11 @@
<TextView
android:id="@+id/tv_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:text="@string/cos_coupon_share_sender"
android:gravity="center_vertical"
android:textColor="@color/cos_gray2"
android:textSize="16sp" />
......@@ -126,7 +130,7 @@
android:id="@+id/v_separator"
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_marginTop="20dp"
android:layout_marginTop="12dp"
android:background="@color/cos_grey7"
app:layout_constraintEnd_toEndOf="@+id/ll_share_view"
app:layout_constraintStart_toStartOf="@+id/ll_share_view"
......@@ -135,7 +139,7 @@
<RelativeLayout
android:id="@+id/ll_share_view2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="40dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="48dp"
app:layout_constraintEnd_toEndOf="parent"
......@@ -145,7 +149,7 @@
<EditText
android:id="@+id/et_phone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:background="@android:color/transparent"
......@@ -160,7 +164,7 @@
android:id="@+id/v_separator2"
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_marginTop="20dp"
android:layout_marginTop="12dp"
android:background="@color/cos_grey7"
app:layout_constraintEnd_toEndOf="@+id/ll_share_view2"
app:layout_constraintStart_toStartOf="@+id/ll_share_view2"
......
......@@ -3,33 +3,43 @@
android:id="@+id/rl_share_dialog_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/shape_cos_white_rounded_top">
android:background="@drawable/shape_cos_white_rounded_top"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/rl_sender_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="40dp"
android:layout_marginBottom="24dp"
android:paddingTop="16dp">
<TextView
android:id="@+id/tv_sender_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_marginStart="24dp"
android:gravity="center_vertical"
android:contentDescription="@string/cos_coupon_share_sender"
android:text="@string/cos_coupon_share_sender"
android:textColor="@color/cos_light_black"
android:textSize="16sp" />
<ImageView
android:id="@+id/iv_sender_list_close"
android:layout_width="16dp"
android:layout_height="16dp"
<RelativeLayout
android:id="@+id/rl_sender_list_close"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_alignParentEnd="true"
android:layout_marginEnd="24dp"
android:src="@drawable/ic_close" />
android:gravity="center">
<ImageView
android:id="@+id/iv_sender_list_close"
android:layout_width="16dp"
android:layout_height="16dp"
android:contentDescription="@string/accessibility_close"
android:src="@drawable/ic_close" />
</RelativeLayout>
</RelativeLayout>
<LinearLayout
......
......@@ -11,17 +11,18 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="12dp"
android:layout_marginTop="16dp">
android:layout_marginTop="10dp">
<TextView
android:id="@+id/tv_phone_share"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="40dp"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:background="@android:color/transparent"
android:textColor="@color/cos_light_black"
android:textSize="16sp"
android:gravity="center_vertical"
tools:text="6987654322" />
</RelativeLayout>
......@@ -29,7 +30,7 @@
android:id="@+id/v_separator2"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="20dp"
android:layout_marginTop="10dp"
android:background="@color/cos_grey7"
app:layout_constraintEnd_toEndOf="@+id/ll_share_view2"
app:layout_constraintStart_toStartOf="@+id/ll_share_view2"
......
......@@ -9,5 +9,6 @@
<enum name="horizontal" value="0" />
<enum name="vertical" value="1" />
</attr>
<attr name="colorPrimary" format="color" />
</declare-styleable>
</resources>
\ No newline at end of file
......
......@@ -262,10 +262,12 @@
<string name="cos_logout_text">Αποσύνδεση</string>
<string name="accessibility_back">Πίσω</string>
<string name="accessibility_close">Κλείσιμο</string>
<string name="accessibility_history">Ιστορικό</string>
<string name="accessibility_coupon_image">Φωτογραφία εκπτωτικού κουπονιού</string>
<string name="accessibility_expand">Ανεπτυγμένο</string>
<string name="accessibility_collapse">Συμπτυγμένο</string>
<string name="accessibility_activate">Διπλό πάτημα για επιλογή</string>
<string-array name="coupons_array">
<item>Κουπόνια</item>
......