Panagiotis Triantafyllou

accessibility ccms

...@@ -9,12 +9,17 @@ import android.util.Log; ...@@ -9,12 +9,17 @@ import android.util.Log;
9 import android.view.LayoutInflater; 9 import android.view.LayoutInflater;
10 import android.view.View; 10 import android.view.View;
11 import android.view.ViewGroup; 11 import android.view.ViewGroup;
12 +import android.view.accessibility.AccessibilityEvent;
12 import android.widget.ImageView; 13 import android.widget.ImageView;
13 import android.widget.LinearLayout; 14 import android.widget.LinearLayout;
14 import android.widget.RelativeLayout; 15 import android.widget.RelativeLayout;
15 import android.widget.TextView; 16 import android.widget.TextView;
16 17
18 +import androidx.annotation.NonNull;
17 import androidx.appcompat.app.AlertDialog; 19 import androidx.appcompat.app.AlertDialog;
20 +import androidx.core.view.AccessibilityDelegateCompat;
21 +import androidx.core.view.ViewCompat;
22 +import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
18 import androidx.work.OneTimeWorkRequest; 23 import androidx.work.OneTimeWorkRequest;
19 import androidx.work.WorkManager; 24 import androidx.work.WorkManager;
20 25
...@@ -108,6 +113,50 @@ public class ContextualActivity extends Activity implements View.OnClickListener ...@@ -108,6 +113,50 @@ public class ContextualActivity extends Activity implements View.OnClickListener
108 WarpUtils.renderCustomFont(this, R.font.peridot_semi_bold, mFontActivateButton); 113 WarpUtils.renderCustomFont(this, R.font.peridot_semi_bold, mFontActivateButton);
109 WarpUtils.renderCustomFont(this, R.font.peridot_bold, mTvTerms); 114 WarpUtils.renderCustomFont(this, R.font.peridot_bold, mTvTerms);
110 115
116 + //Accessibility
117 + ViewCompat.setAccessibilityDelegate(mFontHeader, new AccessibilityDelegateCompat() {
118 + @Override
119 + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
120 + super.onInitializeAccessibilityNodeInfo(host, info);
121 + info.setClassName("android.widget.TextView");
122 + info.setHeading(true);
123 + }
124 + });
125 + mFontHeader.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
126 +
127 + ViewCompat.setAccessibilityDelegate(mIvBack, new AccessibilityDelegateCompat() {
128 + @Override
129 + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
130 + super.onInitializeAccessibilityNodeInfo(host, info);
131 + info.setClassName("android.widget.Button");
132 + info.setContentDescription(getString(R.string.accessibility_back));
133 + }
134 + });
135 + mIvBack.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
136 + mIvBack.postDelayed(() -> {
137 + mIvBack.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
138 + }, 1000);
139 +
140 + ViewCompat.setAccessibilityDelegate(mLlActivateOffer, new AccessibilityDelegateCompat() {
141 + @Override
142 + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
143 + super.onInitializeAccessibilityNodeInfo(host, info);
144 + info.setClassName("android.widget.Button");
145 + info.setContentDescription(getString(R.string.cos_dlg_positive_button));
146 + }
147 + });
148 +
149 + mTvTermsValue.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
150 + ViewCompat.setAccessibilityDelegate(mLlTerms, new AccessibilityDelegateCompat() {
151 + @Override
152 + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
153 + super.onInitializeAccessibilityNodeInfo(host, info);
154 + info.setClassName("android.widget.Button");
155 + info.setContentDescription(getString(R.string.cos_coupon_terms_title));
156 + info.setStateDescription(getString(R.string.accessibility_collapse));
157 + }
158 + });
159 +
111 initViews(); 160 initViews();
112 } 161 }
113 162
...@@ -143,11 +192,38 @@ public class ContextualActivity extends Activity implements View.OnClickListener ...@@ -143,11 +192,38 @@ public class ContextualActivity extends Activity implements View.OnClickListener
143 if (view.getId() == R.id.ll_terms_inner) { 192 if (view.getId() == R.id.ll_terms_inner) {
144 if (mIsTermsPressed) { 193 if (mIsTermsPressed) {
145 mIsTermsPressed = false; 194 mIsTermsPressed = false;
195 +
196 + mTvTermsValue.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
197 + ViewCompat.setAccessibilityDelegate(mLlTerms, new AccessibilityDelegateCompat() {
198 + @Override
199 + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
200 + super.onInitializeAccessibilityNodeInfo(host, info);
201 + info.setClassName("android.widget.Button");
202 + info.setContentDescription(getString(R.string.cos_coupon_terms_title));
203 + info.setStateDescription(getString(R.string.accessibility_collapse));
204 + }
205 + });
206 +
146 mTvTermsValue.setVisibility(View.GONE); 207 mTvTermsValue.setVisibility(View.GONE);
147 mIvTermsArrow.setImageDrawable(getDrawable(R.drawable.ic_down_dark_new)); 208 mIvTermsArrow.setImageDrawable(getDrawable(R.drawable.ic_down_dark_new));
148 } else { 209 } else {
149 mIsTermsPressed = true; 210 mIsTermsPressed = true;
211 +
212 + ViewCompat.setAccessibilityDelegate(mLlTerms, new AccessibilityDelegateCompat() {
213 + @Override
214 + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) {
215 + super.onInitializeAccessibilityNodeInfo(host, info);
216 + info.setClassName("android.widget.Button");
217 + info.setContentDescription(getString(R.string.cos_coupon_terms_title));
218 + info.setStateDescription(getString(R.string.accessibility_expand));
219 + }
220 + });
221 +
150 mTvTermsValue.setVisibility(View.VISIBLE); 222 mTvTermsValue.setVisibility(View.VISIBLE);
223 +
224 + mTvTermsValue.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
225 + mTvTermsValue.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
226 +
151 mIvTermsArrow.setImageDrawable(getDrawable(R.drawable.ic_up_dark_new)); 227 mIvTermsArrow.setImageDrawable(getDrawable(R.drawable.ic_up_dark_new));
152 } 228 }
153 } 229 }
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
18 android:layout_marginStart="16dp" 18 android:layout_marginStart="16dp"
19 android:scaleType="centerInside" 19 android:scaleType="centerInside"
20 android:src="@drawable/ic_back" 20 android:src="@drawable/ic_back"
21 + android:contentDescription="@string/accessibility_back"
21 app:layout_constraintBottom_toBottomOf="parent" 22 app:layout_constraintBottom_toBottomOf="parent"
22 app:layout_constraintStart_toStartOf="parent" 23 app:layout_constraintStart_toStartOf="parent"
23 app:layout_constraintTop_toTopOf="parent" /> 24 app:layout_constraintTop_toTopOf="parent" />
...@@ -61,6 +62,7 @@ ...@@ -61,6 +62,7 @@
61 android:layout_width="match_parent" 62 android:layout_width="match_parent"
62 android:layout_height="222dp" 63 android:layout_height="222dp"
63 android:scaleType="centerCrop" 64 android:scaleType="centerCrop"
65 + android:contentDescription="@string/accessibility_coupon_image"
64 app:layout_constraintStart_toStartOf="parent" 66 app:layout_constraintStart_toStartOf="parent"
65 app:layout_constraintTop_toTopOf="parent" 67 app:layout_constraintTop_toTopOf="parent"
66 tools:src="@drawable/carousel_banner" /> 68 tools:src="@drawable/carousel_banner" />
......