Panagiotis Triantafyllou

my rewards accessibility

...@@ -10,6 +10,7 @@ import android.text.TextUtils; ...@@ -10,6 +10,7 @@ import android.text.TextUtils;
10 import android.view.LayoutInflater; 10 import android.view.LayoutInflater;
11 import android.view.View; 11 import android.view.View;
12 import android.view.ViewGroup; 12 import android.view.ViewGroup;
13 +import android.view.accessibility.AccessibilityEvent;
13 import android.widget.HorizontalScrollView; 14 import android.widget.HorizontalScrollView;
14 import android.widget.ImageView; 15 import android.widget.ImageView;
15 import android.widget.LinearLayout; 16 import android.widget.LinearLayout;
...@@ -20,6 +21,9 @@ import androidx.annotation.NonNull; ...@@ -20,6 +21,9 @@ import androidx.annotation.NonNull;
20 import androidx.appcompat.app.AlertDialog; 21 import androidx.appcompat.app.AlertDialog;
21 import androidx.cardview.widget.CardView; 22 import androidx.cardview.widget.CardView;
22 import androidx.constraintlayout.widget.ConstraintLayout; 23 import androidx.constraintlayout.widget.ConstraintLayout;
24 +import androidx.core.view.AccessibilityDelegateCompat;
25 +import androidx.core.view.ViewCompat;
26 +import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
23 import androidx.fragment.app.Fragment; 27 import androidx.fragment.app.Fragment;
24 28
25 import org.greenrobot.eventbus.EventBus; 29 import org.greenrobot.eventbus.EventBus;
...@@ -152,6 +156,75 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener ...@@ -152,6 +156,75 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener
152 WarpUtils.renderCustomFont(getContext(), R.font.peridot_semi_bold, mFontCountDisabled); 156 WarpUtils.renderCustomFont(getContext(), R.font.peridot_semi_bold, mFontCountDisabled);
153 } 157 }
154 158
159 + //Accessibility
160 + ViewCompat.setAccessibilityDelegate(mFontHeader, new AccessibilityDelegateCompat() {
161 + @Override
162 + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
163 + super.onInitializeAccessibilityNodeInfo(host, info);
164 + info.setClassName("android.widget.TextView");
165 + info.setHeading(true);
166 + }
167 + });
168 + mFontHeader.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
169 +
170 + ViewCompat.setAccessibilityDelegate(mIvHistory, new AccessibilityDelegateCompat() {
171 + @Override
172 + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
173 + super.onInitializeAccessibilityNodeInfo(host, info);
174 + info.setClassName("android.widget.Button");
175 + info.setContentDescription("Ιστορικό");
176 + }
177 + });
178 +
179 + ViewCompat.setAccessibilityDelegate(mLlUserBadge, new AccessibilityDelegateCompat() {
180 + @Override
181 + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
182 + super.onInitializeAccessibilityNodeInfo(host, info);
183 + info.setClassName("android.widget.Button");
184 + }
185 + });
186 +
187 + ViewCompat.setAccessibilityDelegate(mLlUserBadgeCentered, new AccessibilityDelegateCompat() {
188 + @Override
189 + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
190 + super.onInitializeAccessibilityNodeInfo(host, info);
191 + info.setClassName("android.widget.Button");
192 + }
193 + });
194 +
195 + ViewCompat.setAccessibilityDelegate(mLlQuestionnaire, new AccessibilityDelegateCompat() {
196 + @Override
197 + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
198 + super.onInitializeAccessibilityNodeInfo(host, info);
199 + info.setClassName("android.widget.Button");
200 + }
201 + });
202 +
203 + ViewCompat.setAccessibilityDelegate(mLlQuestionnaireCentered, new AccessibilityDelegateCompat() {
204 + @Override
205 + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
206 + super.onInitializeAccessibilityNodeInfo(host, info);
207 + info.setClassName("android.widget.Button");
208 + }
209 + });
210 +
211 + ViewCompat.setAccessibilityDelegate(mCvVouchers, new AccessibilityDelegateCompat() {
212 + @Override
213 + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
214 + super.onInitializeAccessibilityNodeInfo(host, info);
215 + info.setClassName("android.widget.Button");
216 + }
217 + });
218 +
219 + ViewCompat.setAccessibilityDelegate(mCvVouchersDisabled, new AccessibilityDelegateCompat() {
220 + @Override
221 + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
222 + super.onInitializeAccessibilityNodeInfo(host, info);
223 + info.setClassName("android.widget.Button");
224 + info.setEnabled(false);
225 + }
226 + });
227 +
155 defineAndSortTiles(); 228 defineAndSortTiles();
156 createTiles(); 229 createTiles();
157 230
...@@ -597,6 +670,15 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener ...@@ -597,6 +670,15 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener
597 if (getContext() != null) { 670 if (getContext() != null) {
598 WarpUtils.renderCustomFont(getContext(), R.font.peridot_semi_bold, mTvDealsCountBadge, mFontDealsCountBadge); 671 WarpUtils.renderCustomFont(getContext(), R.font.peridot_semi_bold, mTvDealsCountBadge, mFontDealsCountBadge);
599 } 672 }
673 +
674 + ViewCompat.setAccessibilityDelegate(view, new AccessibilityDelegateCompat() {
675 + @Override
676 + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
677 + super.onInitializeAccessibilityNodeInfo(host, info);
678 + info.setClassName("android.widget.Button");
679 + }
680 + });
681 +
600 mLlTilesParent.addView(view); 682 mLlTilesParent.addView(view);
601 } 683 }
602 /** Unified Coupons List */ 684 /** Unified Coupons List */
...@@ -623,6 +705,15 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener ...@@ -623,6 +705,15 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener
623 if (getContext() != null) { 705 if (getContext() != null) {
624 WarpUtils.renderCustomFont(getContext(), R.font.peridot_semi_bold, mTvUnifiedCountBadge, mFontUnifiedCountBadge); 706 WarpUtils.renderCustomFont(getContext(), R.font.peridot_semi_bold, mTvUnifiedCountBadge, mFontUnifiedCountBadge);
625 } 707 }
708 +
709 + ViewCompat.setAccessibilityDelegate(view, new AccessibilityDelegateCompat() {
710 + @Override
711 + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
712 + super.onInitializeAccessibilityNodeInfo(host, info);
713 + info.setClassName("android.widget.Button");
714 + }
715 + });
716 +
626 mLlTilesParent.addView(view); 717 mLlTilesParent.addView(view);
627 } 718 }
628 /** Coupon List */ 719 /** Coupon List */
...@@ -649,6 +740,15 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener ...@@ -649,6 +740,15 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener
649 if (getContext() != null) { 740 if (getContext() != null) {
650 WarpUtils.renderCustomFont(getContext(), R.font.peridot_semi_bold, mTvGiftsCountBadge, mFontGiftsCountBadge); 741 WarpUtils.renderCustomFont(getContext(), R.font.peridot_semi_bold, mTvGiftsCountBadge, mFontGiftsCountBadge);
651 } 742 }
743 +
744 + ViewCompat.setAccessibilityDelegate(view, new AccessibilityDelegateCompat() {
745 + @Override
746 + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
747 + super.onInitializeAccessibilityNodeInfo(host, info);
748 + info.setClassName("android.widget.Button");
749 + }
750 + });
751 +
652 mLlTilesParent.addView(view); 752 mLlTilesParent.addView(view);
653 } 753 }
654 /** Box Badge */ 754 /** Box Badge */
...@@ -676,6 +776,15 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener ...@@ -676,6 +776,15 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener
676 if (getContext() != null) { 776 if (getContext() != null) {
677 WarpUtils.renderCustomFont(getContext(), R.font.peridot_semi_bold, mTvBoxCountBadge, mFontBoxCountBadge); 777 WarpUtils.renderCustomFont(getContext(), R.font.peridot_semi_bold, mTvBoxCountBadge, mFontBoxCountBadge);
678 } 778 }
779 +
780 + ViewCompat.setAccessibilityDelegate(view, new AccessibilityDelegateCompat() {
781 + @Override
782 + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
783 + super.onInitializeAccessibilityNodeInfo(host, info);
784 + info.setClassName("android.widget.Button");
785 + }
786 + });
787 +
679 mLlTilesParent.addView(view); 788 mLlTilesParent.addView(view);
680 } 789 }
681 } 790 }
...@@ -778,6 +887,9 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener ...@@ -778,6 +887,9 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener
778 .setPositiveButton(R.string.cos_dlg_positive_button2, (dialogPositive, whichPositive) -> { 887 .setPositiveButton(R.string.cos_dlg_positive_button2, (dialogPositive, whichPositive) -> {
779 dialogPositive.dismiss(); 888 dialogPositive.dismiss();
780 }) 889 })
890 + .setNegativeButton(R.string.cos_dlg_negative_button2, (dialogNegative, whichPositive) -> {
891 + dialogNegative.dismiss();
892 + })
781 .setCancelable(false) 893 .setCancelable(false)
782 .show(); 894 .show();
783 } 895 }
...@@ -792,6 +904,9 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener ...@@ -792,6 +904,9 @@ public class MyRewardsFragment extends Fragment implements View.OnClickListener
792 .setPositiveButton(R.string.cos_dlg_return, (dialogPositive, whichPositive) -> { 904 .setPositiveButton(R.string.cos_dlg_return, (dialogPositive, whichPositive) -> {
793 dialogPositive.dismiss(); 905 dialogPositive.dismiss();
794 }) 906 })
907 + .setNegativeButton(R.string.cos_dlg_negative_button2, (dialogNegative, whichPositive) -> {
908 + dialogNegative.dismiss();
909 + })
795 .setCancelable(false) 910 .setCancelable(false)
796 .show(); 911 .show();
797 } 912 }
......
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
34 android:includeFontPadding="false" 34 android:includeFontPadding="false"
35 android:maxLines="1" 35 android:maxLines="1"
36 android:text="@string/cos_coupons_header" 36 android:text="@string/cos_coupons_header"
37 + android:contentDescription="@string/cos_coupons_header"
37 android:textColor="@color/cos_light_black" 38 android:textColor="@color/cos_light_black"
38 android:textSize="20sp" /> 39 android:textSize="20sp" />
39 40
...@@ -41,6 +42,7 @@ ...@@ -41,6 +42,7 @@
41 android:id="@+id/iv_loyalty_history" 42 android:id="@+id/iv_loyalty_history"
42 android:layout_width="24dp" 43 android:layout_width="24dp"
43 android:layout_height="24dp" 44 android:layout_height="24dp"
45 + android:contentDescription="Ιστορικό"
44 android:src="@drawable/ic_history_black" 46 android:src="@drawable/ic_history_black"
45 app:layout_constraintBottom_toBottomOf="parent" 47 app:layout_constraintBottom_toBottomOf="parent"
46 app:layout_constraintStart_toStartOf="parent" 48 app:layout_constraintStart_toStartOf="parent"
...@@ -681,6 +683,7 @@ ...@@ -681,6 +683,7 @@
681 android:layout_height="wrap_content" 683 android:layout_height="wrap_content"
682 android:includeFontPadding="false" 684 android:includeFontPadding="false"
683 android:maxLines="1" 685 android:maxLines="1"
686 + android:contentDescription="@string/cos_vouchers_title"
684 android:text="@string/cos_vouchers_title" 687 android:text="@string/cos_vouchers_title"
685 android:textColor="@color/cos_light_black" 688 android:textColor="@color/cos_light_black"
686 android:textSize="20sp" /> 689 android:textSize="20sp" />
...@@ -754,6 +757,7 @@ ...@@ -754,6 +757,7 @@
754 android:layout_height="wrap_content" 757 android:layout_height="wrap_content"
755 android:includeFontPadding="false" 758 android:includeFontPadding="false"
756 android:maxLines="1" 759 android:maxLines="1"
760 + android:contentDescription="@string/cos_vouchers_title"
757 android:text="@string/cos_vouchers_title" 761 android:text="@string/cos_vouchers_title"
758 android:textColor="@color/cos_light_black" 762 android:textColor="@color/cos_light_black"
759 android:textSize="20sp" /> 763 android:textSize="20sp" />
......