Panagiotis Triantafyllou

deh part3

...@@ -16,6 +16,7 @@ import ly.warp.sdk.io.adapters.OfferAdapter; ...@@ -16,6 +16,7 @@ import ly.warp.sdk.io.adapters.OfferAdapter;
16 import ly.warp.sdk.io.models.DummyDataProvider; 16 import ly.warp.sdk.io.models.DummyDataProvider;
17 import ly.warp.sdk.io.models.OfferCategory; 17 import ly.warp.sdk.io.models.OfferCategory;
18 import ly.warp.sdk.io.models.OfferItem; 18 import ly.warp.sdk.io.models.OfferItem;
19 +import ly.warp.sdk.utils.WarpUtils;
19 import ly.warp.sdk.utils.WarplyManagerHelper; 20 import ly.warp.sdk.utils.WarplyManagerHelper;
20 import ly.warp.sdk.views.HorizontalSpaceItemDecoration; 21 import ly.warp.sdk.views.HorizontalSpaceItemDecoration;
21 22
...@@ -62,6 +63,9 @@ public class HomeActivity extends Activity implements View.OnClickListener, Offe ...@@ -62,6 +63,9 @@ public class HomeActivity extends Activity implements View.OnClickListener, Offe
62 private RecyclerView mRvPurchases; 63 private RecyclerView mRvPurchases;
63 private OfferAdapter mPurchasesAdapter; 64 private OfferAdapter mPurchasesAdapter;
64 65
66 + private TextView mTvAllOffers, mTvAllFavorites, mTvAllViability, mTvAllFamily,
67 + mTvAllCoffee, mTvAllTravelling, mTvAllKids, mTvAllPurchases;
68 +
65 // =========================================================== 69 // ===========================================================
66 // Methods for/from SuperClass/Interfaces 70 // Methods for/from SuperClass/Interfaces
67 // =========================================================== 71 // ===========================================================
...@@ -120,34 +124,49 @@ public class HomeActivity extends Activity implements View.OnClickListener, Offe ...@@ -120,34 +124,49 @@ public class HomeActivity extends Activity implements View.OnClickListener, Offe
120 // Initialize Top Offers section 124 // Initialize Top Offers section
121 mTvCategoryTopOffers = findViewById(R.id.tv_recycler_category1); 125 mTvCategoryTopOffers = findViewById(R.id.tv_recycler_category1);
122 mRvTopOffers = findViewById(R.id.rl_recycler1); 126 mRvTopOffers = findViewById(R.id.rl_recycler1);
127 + mTvAllOffers = findViewById(R.id.tv_recycler_all1);
123 128
124 // Initialize Favorites section 129 // Initialize Favorites section
125 mTvCategoryFavorites = findViewById(R.id.tv_recycler_category2); 130 mTvCategoryFavorites = findViewById(R.id.tv_recycler_category2);
126 mRvFavorites = findViewById(R.id.rl_recycler2); 131 mRvFavorites = findViewById(R.id.rl_recycler2);
132 + mTvAllFavorites = findViewById(R.id.tv_recycler_all2);
127 133
128 // Initialize Viability section 134 // Initialize Viability section
129 mTvCategoryViability = findViewById(R.id.tv_recycler_category3); 135 mTvCategoryViability = findViewById(R.id.tv_recycler_category3);
130 mRvViability = findViewById(R.id.rl_recycler3); 136 mRvViability = findViewById(R.id.rl_recycler3);
137 + mTvAllViability = findViewById(R.id.tv_recycler_all3);
131 138
132 // Initialize Family section 139 // Initialize Family section
133 mTvCategoryFamily = findViewById(R.id.tv_recycler_category4); 140 mTvCategoryFamily = findViewById(R.id.tv_recycler_category4);
134 mRvFamily = findViewById(R.id.rl_recycler4); 141 mRvFamily = findViewById(R.id.rl_recycler4);
142 + mTvAllFamily = findViewById(R.id.tv_recycler_all4);
135 143
136 // Initialize Food & Coffee section 144 // Initialize Food & Coffee section
137 mTvCategoryFoodCoffee = findViewById(R.id.tv_recycler_category5); 145 mTvCategoryFoodCoffee = findViewById(R.id.tv_recycler_category5);
138 mRvFoodCoffee = findViewById(R.id.rl_recycler5); 146 mRvFoodCoffee = findViewById(R.id.rl_recycler5);
147 + mTvAllCoffee = findViewById(R.id.tv_recycler_all5);
139 148
140 // Initialize Travelling section 149 // Initialize Travelling section
141 mTvCategoryTravelling = findViewById(R.id.tv_recycler_category6); 150 mTvCategoryTravelling = findViewById(R.id.tv_recycler_category6);
142 mRvTravelling = findViewById(R.id.rl_recycler6); 151 mRvTravelling = findViewById(R.id.rl_recycler6);
152 + mTvAllTravelling = findViewById(R.id.tv_recycler_all6);
143 153
144 // Initialize Kids section 154 // Initialize Kids section
145 mTvCategoryKids = findViewById(R.id.tv_recycler_category7); 155 mTvCategoryKids = findViewById(R.id.tv_recycler_category7);
146 mRvKids = findViewById(R.id.rl_recycler7); 156 mRvKids = findViewById(R.id.rl_recycler7);
157 + mTvAllKids = findViewById(R.id.tv_recycler_all7);
147 158
148 // Initialize Purchases section 159 // Initialize Purchases section
149 mTvCategoryPurchases = findViewById(R.id.tv_recycler_category8); 160 mTvCategoryPurchases = findViewById(R.id.tv_recycler_category8);
150 mRvPurchases = findViewById(R.id.rl_recycler8); 161 mRvPurchases = findViewById(R.id.rl_recycler8);
162 + mTvAllPurchases = findViewById(R.id.tv_recycler_all8);
163 +
164 + WarpUtils.renderCustomFont(this, R.font.ping_lcg_bold, mTvCategoryTopOffers,
165 + mTvCategoryFavorites, mTvCategoryViability, mTvCategoryFamily, mTvCategoryFoodCoffee,
166 + mTvCategoryTravelling, mTvCategoryKids, mTvCategoryPurchases);
167 +
168 + WarpUtils.renderCustomFont(this, R.font.ping_lcg_regular, mTvAllOffers, mTvAllFavorites,
169 + mTvAllViability, mTvAllFamily, mTvAllCoffee, mTvAllTravelling, mTvAllKids, mTvAllPurchases);
151 } 170 }
152 171
153 /** 172 /**
......
...@@ -5,8 +5,11 @@ import android.content.ClipData; ...@@ -5,8 +5,11 @@ import android.content.ClipData;
5 import android.content.ClipboardManager; 5 import android.content.ClipboardManager;
6 import android.content.Context; 6 import android.content.Context;
7 import android.content.Intent; 7 import android.content.Intent;
8 +import android.graphics.Color;
9 +import android.os.Build;
8 import android.os.Bundle; 10 import android.os.Bundle;
9 import android.view.View; 11 import android.view.View;
12 +import android.view.WindowInsetsController;
10 import android.widget.ImageView; 13 import android.widget.ImageView;
11 import android.widget.LinearLayout; 14 import android.widget.LinearLayout;
12 import android.widget.TextView; 15 import android.widget.TextView;
...@@ -14,6 +17,7 @@ import android.widget.Toast; ...@@ -14,6 +17,7 @@ import android.widget.Toast;
14 17
15 import ly.warp.sdk.R; 18 import ly.warp.sdk.R;
16 import ly.warp.sdk.io.models.OfferItem; 19 import ly.warp.sdk.io.models.OfferItem;
20 +import ly.warp.sdk.utils.WarpUtils;
17 21
18 public class SingleCouponActivity extends Activity implements View.OnClickListener { 22 public class SingleCouponActivity extends Activity implements View.OnClickListener {
19 // =========================================================== 23 // ===========================================================
...@@ -27,17 +31,16 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen ...@@ -27,17 +31,16 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen
27 31
28 private ImageView mIvBack; 32 private ImageView mIvBack;
29 private OfferItem mOfferItem; 33 private OfferItem mOfferItem;
30 - private TextView mTvTitle, mTvSmallDescription; 34 + private TextView mTvSmallDescription;
31 - private TextView mTvDescription;
32 private TextView mTvFullDescription; 35 private TextView mTvFullDescription;
33 private TextView mTvEndDate; 36 private TextView mTvEndDate;
34 private TextView mTvValue; 37 private TextView mTvValue;
35 private TextView mTvMoreButton; 38 private TextView mTvMoreButton;
36 private ImageView mIvImage; 39 private ImageView mIvImage;
37 - 40 +
38 private String mFullDescriptionText; 41 private String mFullDescriptionText;
39 private boolean mIsDescriptionExpanded = false; 42 private boolean mIsDescriptionExpanded = false;
40 - 43 +
41 // Coupon code section 44 // Coupon code section
42 private LinearLayout mCouponCodeContainer; 45 private LinearLayout mCouponCodeContainer;
43 private LinearLayout mCouponCodeHeader; 46 private LinearLayout mCouponCodeHeader;
...@@ -45,16 +48,18 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen ...@@ -45,16 +48,18 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen
45 private ImageView mIvCouponArrow; 48 private ImageView mIvCouponArrow;
46 private ImageView mIvCopyCode; 49 private ImageView mIvCopyCode;
47 private TextView mTvCouponCode; 50 private TextView mTvCouponCode;
51 + private TextView mTvCouponCodeTitle;
48 private boolean mIsCouponCodeExpanded = false; 52 private boolean mIsCouponCodeExpanded = false;
49 - 53 +
50 // QR code section 54 // QR code section
51 private LinearLayout mQrCodeContainer; 55 private LinearLayout mQrCodeContainer;
52 private LinearLayout mQrCodeHeader; 56 private LinearLayout mQrCodeHeader;
53 private LinearLayout mQrCodeContent; 57 private LinearLayout mQrCodeContent;
54 private ImageView mIvQrArrow; 58 private ImageView mIvQrArrow;
55 private ImageView mIvQrCode; 59 private ImageView mIvQrCode;
60 + private TextView mTvQrCodeTitle;
56 private boolean mIsQrCodeExpanded = false; 61 private boolean mIsQrCodeExpanded = false;
57 - 62 +
58 // Terms of Use section 63 // Terms of Use section
59 private LinearLayout mTermsContainer; 64 private LinearLayout mTermsContainer;
60 private LinearLayout mTermsHeader; 65 private LinearLayout mTermsHeader;
...@@ -63,6 +68,8 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen ...@@ -63,6 +68,8 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen
63 private TextView mTvTermsText; 68 private TextView mTvTermsText;
64 private boolean mIsTermsExpanded = false; 69 private boolean mIsTermsExpanded = false;
65 70
71 + private TextView mTvHeaderTitle, mTvTermsTitle, mTvShopsTitle, mTvWebsiteTitle, mTVMoreTitle;
72 +
66 73
67 // =========================================================== 74 // ===========================================================
68 // Methods for/from SuperClass/Interfaces 75 // Methods for/from SuperClass/Interfaces
...@@ -72,6 +79,9 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen ...@@ -72,6 +79,9 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen
72 public void onCreate(Bundle savedInstanceState) { 79 public void onCreate(Bundle savedInstanceState) {
73 super.onCreate(savedInstanceState); 80 super.onCreate(savedInstanceState);
74 setContentView(R.layout.activity_single_coupon); 81 setContentView(R.layout.activity_single_coupon);
82 +
83 + // Setup white status bar
84 + setupStatusBar();
75 85
76 // Get offer item from intent 86 // Get offer item from intent
77 Intent intent = getIntent(); 87 Intent intent = getIntent();
...@@ -81,6 +91,32 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen ...@@ -81,6 +91,32 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen
81 91
82 initViews(); 92 initViews();
83 } 93 }
94 +
95 + /**
96 + * Sets up the status bar to be white with dark icons
97 + */
98 + private void setupStatusBar() {
99 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
100 + // API 30+
101 + WindowInsetsController controller = getWindow().getInsetsController();
102 + if (controller != null) {
103 + controller.setSystemBarsAppearance(
104 + WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS,
105 + WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS
106 + );
107 + }
108 + getWindow().setStatusBarColor(Color.WHITE);
109 + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
110 + // API 23+
111 + getWindow().getDecorView().setSystemUiVisibility(
112 + View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
113 + );
114 + getWindow().setStatusBarColor(Color.WHITE);
115 + } else {
116 + // For older versions, just set a light gray color
117 + getWindow().setStatusBarColor(Color.parseColor("#F5F5F5"));
118 + }
119 + }
84 120
85 @Override 121 @Override
86 public void onResume() { 122 public void onResume() {
...@@ -102,7 +138,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen ...@@ -102,7 +138,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen
102 mTvValue = findViewById(R.id.tv_coupon_value); 138 mTvValue = findViewById(R.id.tv_coupon_value);
103 mIvImage = findViewById(R.id.iv_coupon_image); 139 mIvImage = findViewById(R.id.iv_coupon_image);
104 mTvMoreButton = findViewById(R.id.tv_more_button); 140 mTvMoreButton = findViewById(R.id.tv_more_button);
105 - 141 +
106 // Initialize coupon code section 142 // Initialize coupon code section
107 mCouponCodeContainer = findViewById(R.id.coupon_code_container); 143 mCouponCodeContainer = findViewById(R.id.coupon_code_container);
108 mCouponCodeHeader = findViewById(R.id.coupon_code_header); 144 mCouponCodeHeader = findViewById(R.id.coupon_code_header);
...@@ -110,14 +146,16 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen ...@@ -110,14 +146,16 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen
110 mIvCouponArrow = findViewById(R.id.iv_coupon_arrow); 146 mIvCouponArrow = findViewById(R.id.iv_coupon_arrow);
111 mIvCopyCode = findViewById(R.id.iv_copy_code); 147 mIvCopyCode = findViewById(R.id.iv_copy_code);
112 mTvCouponCode = findViewById(R.id.tv_coupon_code); 148 mTvCouponCode = findViewById(R.id.tv_coupon_code);
113 - 149 + mTvCouponCodeTitle = findViewById(R.id.tv_coupon_code_title);
150 +
114 // Initialize QR code section 151 // Initialize QR code section
115 mQrCodeContainer = findViewById(R.id.qr_code_container); 152 mQrCodeContainer = findViewById(R.id.qr_code_container);
116 mQrCodeHeader = findViewById(R.id.qr_code_header); 153 mQrCodeHeader = findViewById(R.id.qr_code_header);
117 mQrCodeContent = findViewById(R.id.qr_code_content); 154 mQrCodeContent = findViewById(R.id.qr_code_content);
118 mIvQrArrow = findViewById(R.id.iv_qr_arrow); 155 mIvQrArrow = findViewById(R.id.iv_qr_arrow);
119 mIvQrCode = findViewById(R.id.iv_qr_code); 156 mIvQrCode = findViewById(R.id.iv_qr_code);
120 - 157 + mTvQrCodeTitle = findViewById(R.id.tv_qr_code_title);
158 +
121 // Initialize Terms of Use section 159 // Initialize Terms of Use section
122 mTermsContainer = findViewById(R.id.terms_container); 160 mTermsContainer = findViewById(R.id.terms_container);
123 mTermsHeader = findViewById(R.id.terms_header); 161 mTermsHeader = findViewById(R.id.terms_header);
...@@ -125,15 +163,28 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen ...@@ -125,15 +163,28 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen
125 mIvTermsArrow = findViewById(R.id.iv_terms_arrow); 163 mIvTermsArrow = findViewById(R.id.iv_terms_arrow);
126 mTvTermsText = findViewById(R.id.tv_terms_text); 164 mTvTermsText = findViewById(R.id.tv_terms_text);
127 165
166 + mTvHeaderTitle = findViewById(R.id.tv_header_title);
167 + mTvTermsTitle = findViewById(R.id.tv_terms_title);
168 + mTvShopsTitle = findViewById(R.id.tv_shops_title);
169 + mTvWebsiteTitle = findViewById(R.id.tv_website_title);
170 + mTVMoreTitle = findViewById(R.id.tv_more_title);
171 +
172 + WarpUtils.renderCustomFont(this, R.font.ping_lcg_bold, mTvHeaderTitle, mTvValue,
173 + mTvCouponCode, mTvTermsTitle, mTvShopsTitle, mTvWebsiteTitle);
174 +
175 + WarpUtils.renderCustomFont(this, R.font.ping_lcg_regular, mTvSmallDescription,
176 + mTvEndDate, mTvFullDescription, mTvCouponCodeTitle, mTvQrCodeTitle, mTvTermsText,
177 + mTVMoreTitle, mTvMoreButton);
178 +
128 // Populate views with offer data 179 // Populate views with offer data
129 if (mOfferItem != null) { 180 if (mOfferItem != null) {
130 mTvValue.setText(mOfferItem.getValue()); 181 mTvValue.setText(mOfferItem.getValue());
131 mTvSmallDescription.setText(mOfferItem.getDescription()); 182 mTvSmallDescription.setText(mOfferItem.getDescription());
132 - 183 +
133 // Store the full description text 184 // Store the full description text
134 mFullDescriptionText = mOfferItem.getFullDescription(); 185 mFullDescriptionText = mOfferItem.getFullDescription();
135 mTvFullDescription.setText(mFullDescriptionText); 186 mTvFullDescription.setText(mFullDescriptionText);
136 - 187 +
137 // Format and set the end date 188 // Format and set the end date
138 String endDate = mOfferItem.getEndDate(); 189 String endDate = mOfferItem.getEndDate();
139 if (endDate != null && !endDate.isEmpty()) { 190 if (endDate != null && !endDate.isEmpty()) {
...@@ -152,21 +203,21 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen ...@@ -152,21 +203,21 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen
152 if (imageResId != 0) { 203 if (imageResId != 0) {
153 mIvImage.setImageResource(imageResId); 204 mIvImage.setImageResource(imageResId);
154 } 205 }
155 - 206 +
156 // Setup the More button 207 // Setup the More button
157 setupMoreButton(); 208 setupMoreButton();
158 - 209 +
159 // Setup coupon code section 210 // Setup coupon code section
160 setupCouponCodeSection(); 211 setupCouponCodeSection();
161 - 212 +
162 // Setup QR code section 213 // Setup QR code section
163 setupQrCodeSection(); 214 setupQrCodeSection();
164 - 215 +
165 // Setup Terms of Use section 216 // Setup Terms of Use section
166 setupTermsSection(); 217 setupTermsSection();
167 } 218 }
168 } 219 }
169 - 220 +
170 /** 221 /**
171 * Sets up the coupon code expandable section 222 * Sets up the coupon code expandable section
172 */ 223 */
...@@ -179,7 +230,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen ...@@ -179,7 +230,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen
179 couponCode = "coupon_" + mOfferItem.getId().toLowerCase(); 230 couponCode = "coupon_" + mOfferItem.getId().toLowerCase();
180 } 231 }
181 mTvCouponCode.setText(couponCode); 232 mTvCouponCode.setText(couponCode);
182 - 233 +
183 // Set click listener for the header to expand/collapse 234 // Set click listener for the header to expand/collapse
184 mCouponCodeHeader.setOnClickListener(new View.OnClickListener() { 235 mCouponCodeHeader.setOnClickListener(new View.OnClickListener() {
185 @Override 236 @Override
...@@ -187,7 +238,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen ...@@ -187,7 +238,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen
187 toggleCouponCodeExpansion(); 238 toggleCouponCodeExpansion();
188 } 239 }
189 }); 240 });
190 - 241 +
191 // Set click listener for the entire container as well 242 // Set click listener for the entire container as well
192 mCouponCodeContainer.setOnClickListener(new View.OnClickListener() { 243 mCouponCodeContainer.setOnClickListener(new View.OnClickListener() {
193 @Override 244 @Override
...@@ -195,7 +246,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen ...@@ -195,7 +246,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen
195 toggleCouponCodeExpansion(); 246 toggleCouponCodeExpansion();
196 } 247 }
197 }); 248 });
198 - 249 +
199 // Set click listener for the copy button 250 // Set click listener for the copy button
200 mIvCopyCode.setOnClickListener(new View.OnClickListener() { 251 mIvCopyCode.setOnClickListener(new View.OnClickListener() {
201 @Override 252 @Override
...@@ -204,7 +255,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen ...@@ -204,7 +255,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen
204 } 255 }
205 }); 256 });
206 } 257 }
207 - 258 +
208 /** 259 /**
209 * Toggles between expanded and collapsed states for the coupon code section 260 * Toggles between expanded and collapsed states for the coupon code section
210 */ 261 */
...@@ -221,26 +272,26 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen ...@@ -221,26 +272,26 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen
221 mIsCouponCodeExpanded = true; 272 mIsCouponCodeExpanded = true;
222 } 273 }
223 } 274 }
224 - 275 +
225 /** 276 /**
226 * Copies the coupon code to the clipboard 277 * Copies the coupon code to the clipboard
227 */ 278 */
228 private void copyCouponCodeToClipboard() { 279 private void copyCouponCodeToClipboard() {
229 String couponCode = mTvCouponCode.getText().toString(); 280 String couponCode = mTvCouponCode.getText().toString();
230 - 281 +
231 // Get clipboard manager 282 // Get clipboard manager
232 ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); 283 ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
233 - 284 +
234 // Create clip 285 // Create clip
235 ClipData clip = ClipData.newPlainText("Coupon Code", couponCode); 286 ClipData clip = ClipData.newPlainText("Coupon Code", couponCode);
236 - 287 +
237 // Set the clipboard's primary clip 288 // Set the clipboard's primary clip
238 clipboard.setPrimaryClip(clip); 289 clipboard.setPrimaryClip(clip);
239 - 290 +
240 // Show toast message 291 // Show toast message
241 Toast.makeText(this, R.string.demo_copy_success, Toast.LENGTH_SHORT).show(); 292 Toast.makeText(this, R.string.demo_copy_success, Toast.LENGTH_SHORT).show();
242 } 293 }
243 - 294 +
244 /** 295 /**
245 * Sets up the "More" button for expanding/collapsing the description text 296 * Sets up the "More" button for expanding/collapsing the description text
246 */ 297 */
...@@ -253,7 +304,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen ...@@ -253,7 +304,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen
253 if (mTvFullDescription.getLineCount() > 3) { 304 if (mTvFullDescription.getLineCount() > 3) {
254 // Show the More button 305 // Show the More button
255 mTvMoreButton.setVisibility(View.VISIBLE); 306 mTvMoreButton.setVisibility(View.VISIBLE);
256 - 307 +
257 // Set click listener for the More button 308 // Set click listener for the More button
258 mTvMoreButton.setOnClickListener(new View.OnClickListener() { 309 mTvMoreButton.setOnClickListener(new View.OnClickListener() {
259 @Override 310 @Override
...@@ -265,7 +316,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen ...@@ -265,7 +316,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen
265 } 316 }
266 }); 317 });
267 } 318 }
268 - 319 +
269 /** 320 /**
270 * Toggles between expanded and collapsed states for the description text 321 * Toggles between expanded and collapsed states for the description text
271 */ 322 */
...@@ -294,7 +345,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen ...@@ -294,7 +345,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen
294 toggleQrCodeExpansion(); 345 toggleQrCodeExpansion();
295 } 346 }
296 }); 347 });
297 - 348 +
298 // Set click listener for the entire container as well 349 // Set click listener for the entire container as well
299 mQrCodeContainer.setOnClickListener(new View.OnClickListener() { 350 mQrCodeContainer.setOnClickListener(new View.OnClickListener() {
300 @Override 351 @Override
...@@ -303,7 +354,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen ...@@ -303,7 +354,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen
303 } 354 }
304 }); 355 });
305 } 356 }
306 - 357 +
307 /** 358 /**
308 * Toggles between expanded and collapsed states for the QR code section 359 * Toggles between expanded and collapsed states for the QR code section
309 */ 360 */
...@@ -332,7 +383,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen ...@@ -332,7 +383,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen
332 toggleTermsExpansion(); 383 toggleTermsExpansion();
333 } 384 }
334 }); 385 });
335 - 386 +
336 // Set click listener for the entire container as well 387 // Set click listener for the entire container as well
337 mTermsContainer.setOnClickListener(new View.OnClickListener() { 388 mTermsContainer.setOnClickListener(new View.OnClickListener() {
338 @Override 389 @Override
...@@ -341,7 +392,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen ...@@ -341,7 +392,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen
341 } 392 }
342 }); 393 });
343 } 394 }
344 - 395 +
345 /** 396 /**
346 * Toggles between expanded and collapsed states for the Terms of Use section 397 * Toggles between expanded and collapsed states for the Terms of Use section
347 */ 398 */
......
...@@ -24,6 +24,7 @@ import ly.warp.sdk.R; ...@@ -24,6 +24,7 @@ import ly.warp.sdk.R;
24 import ly.warp.sdk.io.models.DummyDataProvider; 24 import ly.warp.sdk.io.models.DummyDataProvider;
25 import ly.warp.sdk.io.models.OfferItem; 25 import ly.warp.sdk.io.models.OfferItem;
26 import ly.warp.sdk.utils.TopRoundedCornersTransformation; 26 import ly.warp.sdk.utils.TopRoundedCornersTransformation;
27 +import ly.warp.sdk.utils.WarpUtils;
27 28
28 /** 29 /**
29 * Adapter for displaying offer items in a RecyclerView 30 * Adapter for displaying offer items in a RecyclerView
...@@ -102,6 +103,9 @@ public class OfferAdapter extends RecyclerView.Adapter<OfferAdapter.OfferViewHol ...@@ -102,6 +103,9 @@ public class OfferAdapter extends RecyclerView.Adapter<OfferAdapter.OfferViewHol
102 tvDescription = itemView.findViewById(R.id.tv_description); 103 tvDescription = itemView.findViewById(R.id.tv_description);
103 tvValidity = itemView.findViewById(R.id.tv_validity); 104 tvValidity = itemView.findViewById(R.id.tv_validity);
104 105
106 + WarpUtils.renderCustomFont(context, R.font.ping_lcg_bold, tvPrice, tvTitle);
107 + WarpUtils.renderCustomFont(context, R.font.ping_lcg_regular, tvDescription, tvValidity);
108 +
105 // Set click listeners 109 // Set click listeners
106 itemView.setOnClickListener(v -> { 110 itemView.setOnClickListener(v -> {
107 int position = getAdapterPosition(); 111 int position = getAdapterPosition();
......
...@@ -80,7 +80,6 @@ ...@@ -80,7 +80,6 @@
80 android:layout_height="wrap_content" 80 android:layout_height="wrap_content"
81 android:layout_weight="1" 81 android:layout_weight="1"
82 android:textColor="@color/black2" 82 android:textColor="@color/black2"
83 - android:textStyle="bold"
84 android:textSize="16sp" 83 android:textSize="16sp"
85 tools:text="Top Offers (10)" /> 84 tools:text="Top Offers (10)" />
86 85
...@@ -127,7 +126,6 @@ ...@@ -127,7 +126,6 @@
127 android:layout_height="wrap_content" 126 android:layout_height="wrap_content"
128 android:layout_weight="1" 127 android:layout_weight="1"
129 android:textColor="@color/black2" 128 android:textColor="@color/black2"
130 - android:textStyle="bold"
131 android:textSize="16sp" 129 android:textSize="16sp"
132 tools:text="Favorites (10)" /> 130 tools:text="Favorites (10)" />
133 131
...@@ -174,7 +172,6 @@ ...@@ -174,7 +172,6 @@
174 android:layout_height="wrap_content" 172 android:layout_height="wrap_content"
175 android:layout_weight="1" 173 android:layout_weight="1"
176 android:textColor="@color/black2" 174 android:textColor="@color/black2"
177 - android:textStyle="bold"
178 android:textSize="16sp" 175 android:textSize="16sp"
179 tools:text="Viability (10)" /> 176 tools:text="Viability (10)" />
180 177
...@@ -221,7 +218,6 @@ ...@@ -221,7 +218,6 @@
221 android:layout_height="wrap_content" 218 android:layout_height="wrap_content"
222 android:layout_weight="1" 219 android:layout_weight="1"
223 android:textColor="@color/black2" 220 android:textColor="@color/black2"
224 - android:textStyle="bold"
225 android:textSize="16sp" 221 android:textSize="16sp"
226 tools:text="Family (10)" /> 222 tools:text="Family (10)" />
227 223
...@@ -268,7 +264,6 @@ ...@@ -268,7 +264,6 @@
268 android:layout_height="wrap_content" 264 android:layout_height="wrap_content"
269 android:layout_weight="1" 265 android:layout_weight="1"
270 android:textColor="@color/black2" 266 android:textColor="@color/black2"
271 - android:textStyle="bold"
272 android:textSize="16sp" 267 android:textSize="16sp"
273 tools:text="Food and Coffee (10)" /> 268 tools:text="Food and Coffee (10)" />
274 269
...@@ -315,7 +310,6 @@ ...@@ -315,7 +310,6 @@
315 android:layout_height="wrap_content" 310 android:layout_height="wrap_content"
316 android:layout_weight="1" 311 android:layout_weight="1"
317 android:textColor="@color/black2" 312 android:textColor="@color/black2"
318 - android:textStyle="bold"
319 android:textSize="16sp" 313 android:textSize="16sp"
320 tools:text="Travelling (10)" /> 314 tools:text="Travelling (10)" />
321 315
...@@ -362,7 +356,6 @@ ...@@ -362,7 +356,6 @@
362 android:layout_height="wrap_content" 356 android:layout_height="wrap_content"
363 android:layout_weight="1" 357 android:layout_weight="1"
364 android:textColor="@color/black2" 358 android:textColor="@color/black2"
365 - android:textStyle="bold"
366 android:textSize="16sp" 359 android:textSize="16sp"
367 tools:text="Kids (10)" /> 360 tools:text="Kids (10)" />
368 361
...@@ -410,7 +403,6 @@ ...@@ -410,7 +403,6 @@
410 android:layout_height="wrap_content" 403 android:layout_height="wrap_content"
411 android:layout_weight="1" 404 android:layout_weight="1"
412 android:textColor="@color/black2" 405 android:textColor="@color/black2"
413 - android:textStyle="bold"
414 android:textSize="16sp" 406 android:textSize="16sp"
415 tools:text="Purchases (10)" /> 407 tools:text="Purchases (10)" />
416 408
......
...@@ -41,13 +41,13 @@ ...@@ -41,13 +41,13 @@
41 android:src="@drawable/ic_back" /> 41 android:src="@drawable/ic_back" />
42 42
43 <TextView 43 <TextView
44 + android:id="@+id/tv_header_title"
44 android:layout_width="wrap_content" 45 android:layout_width="wrap_content"
45 android:layout_height="wrap_content" 46 android:layout_height="wrap_content"
46 android:includeFontPadding="false" 47 android:includeFontPadding="false"
47 android:text="@string/demo_offer" 48 android:text="@string/demo_offer"
48 android:textColor="@color/black4" 49 android:textColor="@color/black4"
49 - android:textSize="16sp" 50 + android:textSize="16sp" />
50 - android:textStyle="bold" />
51 </LinearLayout> 51 </LinearLayout>
52 </LinearLayout> 52 </LinearLayout>
53 53
...@@ -85,6 +85,7 @@ ...@@ -85,6 +85,7 @@
85 android:src="@drawable/ic_info" /> 85 android:src="@drawable/ic_info" />
86 86
87 <TextView 87 <TextView
88 + android:id="@+id/tv_more_title"
88 android:layout_width="wrap_content" 89 android:layout_width="wrap_content"
89 android:layout_height="wrap_content" 90 android:layout_height="wrap_content"
90 android:includeFontPadding="false" 91 android:includeFontPadding="false"
...@@ -127,7 +128,6 @@ ...@@ -127,7 +128,6 @@
127 android:maxLines="1" 128 android:maxLines="1"
128 android:textColor="@color/pink2" 129 android:textColor="@color/pink2"
129 android:textSize="23sp" 130 android:textSize="23sp"
130 - android:textStyle="bold"
131 tools:text="@string/demo_more" /> 131 tools:text="@string/demo_more" />
132 132
133 <TextView 133 <TextView
...@@ -181,7 +181,7 @@ ...@@ -181,7 +181,7 @@
181 android:layout_height="wrap_content" 181 android:layout_height="wrap_content"
182 android:layout_marginTop="16dp" 182 android:layout_marginTop="16dp"
183 android:ellipsize="end" 183 android:ellipsize="end"
184 - android:lineSpacingExtra="4dp" 184 + android:lineSpacingExtra="2dp"
185 android:maxLines="4" 185 android:maxLines="4"
186 android:textColor="@color/black5" 186 android:textColor="@color/black5"
187 android:textSize="17sp" 187 android:textSize="17sp"
...@@ -215,6 +215,7 @@ ...@@ -215,6 +215,7 @@
215 android:orientation="horizontal"> 215 android:orientation="horizontal">
216 216
217 <TextView 217 <TextView
218 + android:id="@+id/tv_coupon_code_title"
218 android:layout_width="0dp" 219 android:layout_width="0dp"
219 android:layout_height="wrap_content" 220 android:layout_height="wrap_content"
220 android:layout_weight="1" 221 android:layout_weight="1"
...@@ -247,8 +248,7 @@ ...@@ -247,8 +248,7 @@
247 android:includeFontPadding="false" 248 android:includeFontPadding="false"
248 android:text="test_coupon_code" 249 android:text="test_coupon_code"
249 android:textColor="@color/black2" 250 android:textColor="@color/black2"
250 - android:textSize="23sp" 251 + android:textSize="23sp" />
251 - android:textStyle="bold" />
252 252
253 <ImageView 253 <ImageView
254 android:id="@+id/iv_copy_code" 254 android:id="@+id/iv_copy_code"
...@@ -275,6 +275,7 @@ ...@@ -275,6 +275,7 @@
275 android:orientation="horizontal"> 275 android:orientation="horizontal">
276 276
277 <TextView 277 <TextView
278 + android:id="@+id/tv_qr_code_title"
278 android:layout_width="0dp" 279 android:layout_width="0dp"
279 android:layout_height="wrap_content" 280 android:layout_height="wrap_content"
280 android:layout_weight="1" 281 android:layout_weight="1"
...@@ -324,12 +325,12 @@ ...@@ -324,12 +325,12 @@
324 android:orientation="horizontal"> 325 android:orientation="horizontal">
325 326
326 <TextView 327 <TextView
328 + android:id="@+id/tv_terms_title"
327 android:layout_width="wrap_content" 329 android:layout_width="wrap_content"
328 android:layout_height="wrap_content" 330 android:layout_height="wrap_content"
329 android:text="@string/demo_terms" 331 android:text="@string/demo_terms"
330 android:textColor="@color/black2" 332 android:textColor="@color/black2"
331 - android:textSize="15sp" 333 + android:textSize="15sp"/>
332 - android:textStyle="bold" />
333 334
334 <ImageView 335 <ImageView
335 android:id="@+id/iv_terms_arrow" 336 android:id="@+id/iv_terms_arrow"
...@@ -369,12 +370,13 @@ ...@@ -369,12 +370,13 @@
369 android:orientation="horizontal"> 370 android:orientation="horizontal">
370 371
371 <TextView 372 <TextView
373 + android:id="@+id/tv_shops_title"
372 android:layout_width="wrap_content" 374 android:layout_width="wrap_content"
373 android:layout_height="wrap_content" 375 android:layout_height="wrap_content"
374 android:text="@string/demo_shops" 376 android:text="@string/demo_shops"
375 android:textColor="@color/white" 377 android:textColor="@color/white"
376 - android:textStyle="bold" 378 + android:textSize="15sp"
377 - android:textSize="15sp" /> 379 + android:textStyle="bold" />
378 </LinearLayout> 380 </LinearLayout>
379 381
380 <LinearLayout 382 <LinearLayout
...@@ -386,12 +388,13 @@ ...@@ -386,12 +388,13 @@
386 android:orientation="horizontal"> 388 android:orientation="horizontal">
387 389
388 <TextView 390 <TextView
391 + android:id="@+id/tv_website_title"
389 android:layout_width="wrap_content" 392 android:layout_width="wrap_content"
390 android:layout_height="wrap_content" 393 android:layout_height="wrap_content"
391 android:text="@string/demo_website" 394 android:text="@string/demo_website"
392 android:textColor="@color/black2" 395 android:textColor="@color/black2"
393 - android:textStyle="bold" 396 + android:textSize="15sp"
394 - android:textSize="15sp" /> 397 + android:textStyle="bold" />
395 </LinearLayout> 398 </LinearLayout>
396 </LinearLayout> 399 </LinearLayout>
397 </LinearLayout> 400 </LinearLayout>
......
...@@ -33,7 +33,6 @@ ...@@ -33,7 +33,6 @@
33 android:gravity="center" 33 android:gravity="center"
34 android:textColor="@android:color/white" 34 android:textColor="@android:color/white"
35 android:textSize="16sp" 35 android:textSize="16sp"
36 - android:textStyle="bold"
37 tools:text="17,95€" /> 36 tools:text="17,95€" />
38 37
39 <!-- Content Section --> 38 <!-- Content Section -->
...@@ -59,7 +58,6 @@ ...@@ -59,7 +58,6 @@
59 android:maxLines="1" 58 android:maxLines="1"
60 android:textColor="@color/black2" 59 android:textColor="@color/black2"
61 android:textSize="16sp" 60 android:textSize="16sp"
62 - android:textStyle="bold"
63 app:layout_constraintEnd_toStartOf="@+id/gl_vertical_70" 61 app:layout_constraintEnd_toStartOf="@+id/gl_vertical_70"
64 app:layout_constraintStart_toStartOf="parent" 62 app:layout_constraintStart_toStartOf="parent"
65 app:layout_constraintTop_toTopOf="parent" 63 app:layout_constraintTop_toTopOf="parent"
......