Panagiotis Triantafyllou

accessibility market pass, minor fixes

......@@ -12,14 +12,19 @@ import android.text.Spanned;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
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.cardview.widget.CardView;
import androidx.core.content.res.ResourcesCompat;
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;
......@@ -92,6 +97,68 @@ public class MarketPassActivity extends Activity implements View.OnClickListener
mPbLoading.setVisibility(View.VISIBLE);
// WarplyManager.getMarketPassDetails(mMarketPassDetailsCallback);
//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(mIvInfo, 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_market_Pass_info_title));
}
});
ViewCompat.setAccessibilityDelegate(mTvBarcode, new AccessibilityDelegateCompat() {
@Override
public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
info.setClassName("android.widget.TextView");
info.setContentDescription(getString(R.string.accessibility_market_pass_barcode_value) + ", " + mTvBarcode.getText().toString());
}
});
mIvBarcode.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
ViewCompat.setAccessibilityDelegate(mIvBarcode, new AccessibilityDelegateCompat() {
@Override
public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
info.setClassName("android.widget.ImageView");
info.setContentDescription(getString(R.string.accessibility_market_pass_barcode));
}
});
ViewCompat.setAccessibilityDelegate(mLlMap, 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_pass_map));
}
});
initViews();
}
......@@ -148,42 +215,53 @@ public class MarketPassActivity extends Activity implements View.OnClickListener
mIvInfo.setOnClickListener(this);
mLlMap.setOnClickListener(this);
if(WarplyManagerHelper.getMarketPassDetails() != null) {
if (WarplyManagerHelper.getMarketPassDetails() != null) {
// if (mMarketPassDetails != null)
createBarcodeBitmap(WarplyManagerHelper.getMarketPassDetails().getBarcode());
createBarcodeBitmap(WarplyManagerHelper.getMarketPassDetails().getBarcode());
// if (mMarketPassDetails != null) {
String passValue = String.format(Locale.US, "%.2f", WarplyManagerHelper.getMarketPassDetails().getTotalDiscount());
String fullText = String.format(getString(R.string.cos_market_pass_coupons_title), passValue);
int startIndex = fullText.indexOf(passValue);
int endIndex = startIndex + passValue.length();
SpannableStringBuilder sBuilder = new SpannableStringBuilder(fullText);
Typeface typefaceBold = ResourcesCompat.getFont(this, R.font.peridot_bold);
CustomTypefaceSpan typefaceBoldSpan = new CustomTypefaceSpan(typefaceBold);
sBuilder.setSpan(typefaceBoldSpan, startIndex, endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mTvPassCount.setText(sBuilder, TextView.BufferType.SPANNABLE);
String passValue = String.format(Locale.US, "%.2f", WarplyManagerHelper.getMarketPassDetails().getTotalDiscount());
String fullText = String.format(getString(R.string.cos_market_pass_coupons_title), passValue);
int startIndex = fullText.indexOf(passValue);
int endIndex = startIndex + passValue.length();
SpannableStringBuilder sBuilder = new SpannableStringBuilder(fullText);
Typeface typefaceBold = ResourcesCompat.getFont(this, R.font.peridot_bold);
CustomTypefaceSpan typefaceBoldSpan = new CustomTypefaceSpan(typefaceBold);
sBuilder.setSpan(typefaceBoldSpan, startIndex, endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mTvPassCount.setText(sBuilder, TextView.BufferType.SPANNABLE);
// }
// if (mMarketPassDetails != null) {
for (int i = 0; i < WarplyManagerHelper.getMarketPassDetails().getSupermarkets().size(); i++) {
int tempIndex = i;
LayoutInflater vi = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout v = (RelativeLayout) vi.inflate(R.layout.item_sheet_image, null);
for (int i = 0; i < WarplyManagerHelper.getMarketPassDetails().getSupermarkets().size(); i++) {
int tempIndex = i;
LayoutInflater vi = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout v = (RelativeLayout) vi.inflate(R.layout.item_sheet_image, null);
ImageView merchantLogo = (ImageView) v.findViewById(R.id.iv_market_logo);
Glide.with(this)
ImageView merchantLogo = (ImageView) v.findViewById(R.id.iv_market_logo);
Glide.with(this)
// .setDefaultRequestOptions(
// RequestOptions
// .placeholderOf(R.drawable.ic_default_contact_photo)
// .error(R.drawable.ic_default_contact_photo))
.load(WarplyManagerHelper.getMarketPassDetails().getSupermarkets().get(i).getLogo())
.diskCacheStrategy(DiskCacheStrategy.DATA)
.into(merchantLogo);
mLlParentLogosView.addView(v, tempIndex, new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
.load(WarplyManagerHelper.getMarketPassDetails().getSupermarkets().get(i).getLogo())
.diskCacheStrategy(DiskCacheStrategy.DATA)
.into(merchantLogo);
merchantLogo.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
ViewCompat.setAccessibilityDelegate(merchantLogo, new AccessibilityDelegateCompat() {
@Override
public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
info.setClassName("android.widget.ImageView");
info.setContentDescription(WarplyManagerHelper.getMarketPassDetails().getSupermarkets().get(tempIndex).getName());
}
});
mLlParentLogosView.addView(v, tempIndex, new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
}
}
// }
mCvMarketDetails.setVisibility(View.VISIBLE);
......
......@@ -3,10 +3,16 @@ package ly.warp.sdk.activities;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.accessibility.AccessibilityEvent;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.view.AccessibilityDelegateCompat;
import androidx.core.view.ViewCompat;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import ly.warp.sdk.R;
import ly.warp.sdk.utils.WarpUtils;
import ly.warp.sdk.utils.managers.WarplyAnalyticsManager;
......@@ -54,6 +60,39 @@ public class MarketPassInfoActivity extends Activity implements View.OnClickList
WarpUtils.renderCustomFont(this, R.font.peridot_regular, mTvBasketSubtitle,
mTvEshopSubtitle, mTvAbSubtitle);
//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(mLlPassReturn, 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_market_pass_return));
}
});
initViews();
}
......
......@@ -22,6 +22,7 @@
android:layout_height="48dp"
android:layout_marginStart="16dp"
android:scaleType="centerInside"
android:contentDescription="@string/accessibility_back"
android:src="@drawable/ic_back"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
......@@ -33,6 +34,7 @@
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/cos_market_title"
android:contentDescription="@string/cos_market_title"
android:textColor="@color/cos_light_black"
android:textSize="19sp"
app:layout_constraintBottom_toBottomOf="parent"
......@@ -149,8 +151,7 @@
android:layout_height="wrap_content"
android:layout_below="@+id/rl_parent_pass"
android:background="@color/cos_green14"
android:gravity="center"
android:paddingVertical="16dp">
android:gravity="center">
<TextView
android:id="@+id/tv_total_pass_title"
......@@ -160,6 +161,7 @@
android:letterSpacing="0.04"
android:textColor="@color/white"
android:textSize="16sp"
android:paddingVertical="16dp"
app:lineHeight="22dp" />
</LinearLayout>
......
......@@ -22,6 +22,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" />
......@@ -32,6 +33,7 @@
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/cos_market_Pass_info_title"
android:contentDescription="@string/cos_market_Pass_info_title"
android:textColor="@color/cos_light_black"
android:textSize="19sp"
app:layout_constraintBottom_toBottomOf="parent"
......
......@@ -16,6 +16,7 @@
android:layout_height="48dp"
android:layout_marginStart="16dp"
android:scaleType="centerInside"
android:contentDescription="@string/accessibility_back"
android:src="@drawable/ic_back"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
......@@ -26,6 +27,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cos_coupon_shops_title"
android:contentDescription="@string/cos_coupon_shops_title"
android:textColor="@color/cos_light_black"
android:textSize="19sp"
app:layout_constraintBottom_toBottomOf="parent"
......
......@@ -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_shops_title"
android:contentDescription="@string/cos_coupon_shops_title"
android:textColor="@color/cos_light_black"
android:textSize="19sp"
app:layout_constraintBottom_toBottomOf="parent"
......
......@@ -274,6 +274,9 @@
<string name="accessibility_phone">Τηλέφωνο</string>
<string name="accessibility_address">Διεύθυνση</string>
<string name="accessibility_shop_logo">Λογότυπο καταστήματος</string>
<string name="accessibility_market_pass_info">Πληροφορίες</string>
<string name="accessibility_market_pass_barcode_value">Αριθμός barcode</string>
<string name="accessibility_market_pass_barcode">Barcode</string>
<string-array name="coupons_array">
<item>Κουπόνια</item>
......