Panagiotis Triantafyllou

accessibility changes part2

......@@ -6,9 +6,14 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.view.View;
import android.view.accessibility.AccessibilityEvent;
import android.widget.ImageView;
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 androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
......@@ -63,6 +68,30 @@ public class ActiveCouponsActivity extends Activity implements View.OnClickListe
WarpUtils.renderCustomFont(this, R.font.bt_cosmo_bold, mFontHeader);
WarpUtils.renderCustomFont(this, R.font.peridot_regular, mTvEmptyCoupons);
//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);
initViews();
}
......
......@@ -12,14 +12,19 @@ import android.text.method.LinkMovementMethod;
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.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.content.ContextCompat;
import androidx.core.text.HtmlCompat;
import androidx.core.view.AccessibilityDelegateCompat;
import androidx.core.view.ViewCompat;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import androidx.work.OneTimeWorkRequest;
import androidx.work.WorkManager;
......@@ -177,6 +182,59 @@ public class CouponInfoActivity extends Activity implements View.OnClickListener
mTvBarcodeTitle, mFontButtonActiveGiftIt);
WarpUtils.renderCustomFont(this, R.font.peridot_semi_bold, mFontButtonGiftIt, mTvFindIt);
//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(mLlGiftIt, 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_gift_it));
}
});
ViewCompat.setAccessibilityDelegate(mLlShops, 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_shops));
}
});
mTvTermsValue.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
ViewCompat.setAccessibilityDelegate(mLlTerms, 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_terms_title));
info.setStateDescription(getString(R.string.accessibility_collapse));
}
});
initViews();
}
......@@ -282,12 +340,37 @@ public class CouponInfoActivity extends Activity implements View.OnClickListener
}
if (view.getId() == R.id.ll_terms_inner) {
if (mIsTermsShown) {
mTvTermsValue.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
ViewCompat.setAccessibilityDelegate(mLlTerms, 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_terms_title));
info.setStateDescription(getString(R.string.accessibility_collapse));
}
});
mTvTermsValue.setVisibility(View.GONE);
ImageView termsButtonArrow = mLlTerms.findViewById(R.id.iv_terms_arrow);
termsButtonArrow.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.ic_down_dark_new));
mIsTermsShown = false;
} else {
ViewCompat.setAccessibilityDelegate(mLlTerms, 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_terms_title));
info.setStateDescription(getString(R.string.accessibility_expand));
}
});
mTvTermsValue.setVisibility(View.VISIBLE);
mTvTermsValue.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
mTvTermsValue.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
ImageView termsButtonArrow = mLlTerms.findViewById(R.id.iv_terms_arrow);
termsButtonArrow.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.ic_up_dark_new));
mIsTermsShown = true;
......
......@@ -83,7 +83,7 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener
mHistoryPressed = false, mHistoryMarketPressed = false,
mHistoryBadgePressed = false, mUnifiedCountPressed = false,
mGiftsCountPressed = false, mBoxCountPressed = false;
private RelativeLayout mRlDeals, mRlUnified, mRlGifts, mRlBox;
private RelativeLayout mRlDeals, mRlUnified, mRlGifts, mRlBox, mRlHistory;
private boolean mIsDealsEmpty = false, mIsMarketsEmpty = false, mIsCouponsEmpty = false;
private HorizontalScrollView mTilesScroll;
private View mFirstStart, mFirstEnd, mSecondStart, mSecondEnd;
......@@ -145,6 +145,7 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener
mFontQuestionnaire = view.findViewById(R.id.tv_questionnaire);
mFontQuestionnaireCentered = view.findViewById(R.id.tv_questionnaire_centered);
mFontCountDisabled = view.findViewById(R.id.tv_vouchers_count_disabled);
mRlHistory = view.findViewById(R.id.rl_loyalty_history);
if (getContext() != null) {
WarpUtils.renderCustomFont(getContext(), R.font.bt_cosmo_bold, mFontHeader, mTvVouchersTitle,
......@@ -167,12 +168,13 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener
});
mFontHeader.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
ViewCompat.setAccessibilityDelegate(mIvHistory, new AccessibilityDelegateCompat() {
ViewCompat.setAccessibilityDelegate(mRlHistory, new AccessibilityDelegateCompat() {
@Override
public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
info.setClassName("android.widget.Button");
info.setContentDescription("Ιστορικό");
if (getContext() != null)
info.setContentDescription(getContext().getString(R.string.accessibility_history));
}
});
......@@ -181,6 +183,9 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener
public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
info.setClassName("android.widget.Button");
if (getContext() != null)
info.setContentDescription(WarplyManagerHelper.getUserTag(getContext()));
}
});
......@@ -189,6 +194,8 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener
public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
info.setClassName("android.widget.Button");
if (getContext() != null)
info.setContentDescription(WarplyManagerHelper.getUserTag(getContext()));
}
});
......@@ -197,6 +204,8 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener
public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
info.setClassName("android.widget.Button");
if (getContext() != null)
info.setContentDescription(getContext().getString(R.string.cos_profile_preferences));
}
});
......@@ -205,6 +214,8 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener
public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
info.setClassName("android.widget.Button");
if (getContext() != null)
info.setContentDescription(getContext().getString(R.string.cos_profile_preferences));
}
});
......@@ -213,6 +224,8 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener
public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
info.setClassName("android.widget.Button");
if (getContext() != null)
info.setContentDescription(getContext().getString(R.string.cos_vouchers_info_title));
}
});
......@@ -222,6 +235,8 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener
super.onInitializeAccessibilityNodeInfo(host, info);
info.setClassName("android.widget.Button");
info.setEnabled(false);
if (getContext() != null)
info.setContentDescription(getContext().getString(R.string.cos_vouchers_info_title_disabled));
}
});
......@@ -452,7 +467,7 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener
return;
}
/** New History */
if (view.getId() == R.id.iv_loyalty_history) {
if (view.getId() == R.id.rl_loyalty_history) {
if (!mHistoryBadgePressed) {
WarplyAnalyticsManager.logTrackersEvent(getContext(), "click", ("LoyaltyWalletScreen")
.concat(":")
......@@ -870,7 +885,7 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener
mLlQuestionnaireCentered.setOnClickListener(this);
mLlUserBadge.setOnClickListener(this);
mLlUserBadgeCentered.setOnClickListener(this);
mIvHistory.setOnClickListener(this);
mRlHistory.setOnClickListener(this);
// mRlDeals.setOnClickListener(this);
// mRlUnified.setOnClickListener(this);
// mRlGifts.setOnClickListener(this);
......
......@@ -11,8 +11,12 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.content.ContextCompat;
import androidx.core.view.AccessibilityDelegateCompat;
import androidx.core.view.ViewCompat;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
......@@ -98,6 +102,14 @@ public class ActiveCouponAdapter extends RecyclerView.Adapter<ActiveCouponAdapte
if (mIsCustom)
WarpUtils.renderCustomFont(mContext, R.font.peridot_semi_bold, tvCouponDateExpired, tvDateLimit, tvDateLimitTitle);
ViewCompat.setAccessibilityDelegate(view, new AccessibilityDelegateCompat() {
@Override
public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
info.setClassName("android.widget.Button");
}
});
}
}
......
......@@ -19,6 +19,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"
......@@ -30,6 +31,7 @@
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/cos_free_coupons"
android:contentDescription="@string/cos_free_coupons"
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_info_title"
android:contentDescription="@string/cos_coupon_info_title"
android:textColor="@color/cos_light_black"
android:textSize="19sp"
app:layout_constraintBottom_toBottomOf="parent"
......@@ -63,6 +65,7 @@
android:layout_width="match_parent"
android:layout_height="222dp"
android:scaleType="centerCrop"
android:contentDescription="@string/accessibility_coupon_image"
tools:src="@drawable/carousel_banner" />
<LinearLayout
......
......@@ -16,8 +16,6 @@
android:id="@+id/ll_banner_info_new"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="14dp"
android:layout_marginTop="16dp"
android:orientation="vertical">
<LinearLayout
......@@ -29,15 +27,24 @@
<TextView
android:id="@+id/tv_coupons_header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:contentDescription="@string/cos_coupons_header"
android:includeFontPadding="false"
android:maxLines="1"
android:paddingStart="14dp"
android:text="@string/cos_coupons_header"
android:contentDescription="@string/cos_coupons_header"
android:gravity="center_vertical"
android:textColor="@color/cos_light_black"
android:textSize="20sp" />
<RelativeLayout
android:id="@+id/rl_loyalty_history"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingHorizontal="14dp"
android:paddingVertical="16dp">
<ImageView
android:id="@+id/iv_loyalty_history"
android:layout_width="24dp"
......@@ -47,6 +54,7 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</RelativeLayout>
</LinearLayout>
</LinearLayout>
......@@ -54,7 +62,7 @@
android:id="@+id/scr_tiles"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="18dp"
android:layout_marginTop="2dp"
android:fillViewport="true"
android:scrollbars="none">
......@@ -681,9 +689,9 @@
android:id="@+id/tv_vouchers_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/cos_vouchers_title"
android:includeFontPadding="false"
android:maxLines="1"
android:contentDescription="@string/cos_vouchers_title"
android:text="@string/cos_vouchers_title"
android:textColor="@color/cos_light_black"
android:textSize="20sp" />
......@@ -755,9 +763,9 @@
android:id="@+id/tv_vouchers_title_disabled"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/cos_vouchers_title"
android:includeFontPadding="false"
android:maxLines="1"
android:contentDescription="@string/cos_vouchers_title"
android:text="@string/cos_vouchers_title"
android:textColor="@color/cos_light_black"
android:textSize="20sp" />
......
......@@ -261,6 +261,12 @@
<string name="cos_login_text">Σύνδεση</string>
<string name="cos_logout_text">Αποσύνδεση</string>
<string name="accessibility_back">Πίσω</string>
<string name="accessibility_history">Ιστορικό</string>
<string name="accessibility_coupon_image">Φωτογραφία εκπτωτικού κουπονιού</string>
<string name="accessibility_expand">Ανεπτυγμένο</string>
<string name="accessibility_collapse">Συμπτυγμένο</string>
<string-array name="coupons_array">
<item>Κουπόνια</item>
<item>Δώρα</item>
......