Panagiotis Triantafyllou

new mfy ui

...@@ -4,7 +4,6 @@ import android.app.Activity; ...@@ -4,7 +4,6 @@ import android.app.Activity;
4 import android.content.Context; 4 import android.content.Context;
5 import android.content.Intent; 5 import android.content.Intent;
6 import android.os.Bundle; 6 import android.os.Bundle;
7 -import android.os.Parcelable;
8 import android.text.TextUtils; 7 import android.text.TextUtils;
9 import android.util.Log; 8 import android.util.Log;
10 import android.view.View; 9 import android.view.View;
...@@ -21,24 +20,24 @@ import org.json.JSONObject; ...@@ -21,24 +20,24 @@ import org.json.JSONObject;
21 20
22 import java.io.Serializable; 21 import java.io.Serializable;
23 import java.util.ArrayList; 22 import java.util.ArrayList;
24 -import java.util.HashSet; 23 +import java.util.HashMap;
24 +import java.util.Map;
25 +import java.util.TreeMap;
25 26
26 import io.github.inflationx.viewpump.ViewPumpContextWrapper; 27 import io.github.inflationx.viewpump.ViewPumpContextWrapper;
27 import ly.warp.sdk.R; 28 import ly.warp.sdk.R;
28 import ly.warp.sdk.io.models.Campaign; 29 import ly.warp.sdk.io.models.Campaign;
29 import ly.warp.sdk.io.models.CampaignList; 30 import ly.warp.sdk.io.models.CampaignList;
30 import ly.warp.sdk.io.models.LoyaltyContextualOfferModel; 31 import ly.warp.sdk.io.models.LoyaltyContextualOfferModel;
31 -import ly.warp.sdk.io.models.LoyaltyGiftsForYouPackage;
32 import ly.warp.sdk.io.models.LoyaltySDKFirebaseEventModel; 32 import ly.warp.sdk.io.models.LoyaltySDKFirebaseEventModel;
33 -import ly.warp.sdk.io.models.MergedGifts;
34 import ly.warp.sdk.io.models.MergedMore; 33 import ly.warp.sdk.io.models.MergedMore;
35 import ly.warp.sdk.utils.WarpJSONParser; 34 import ly.warp.sdk.utils.WarpJSONParser;
36 import ly.warp.sdk.utils.WarpUtils; 35 import ly.warp.sdk.utils.WarpUtils;
37 import ly.warp.sdk.utils.WarplyManagerHelper; 36 import ly.warp.sdk.utils.WarplyManagerHelper;
38 import ly.warp.sdk.utils.managers.WarplyEventBusManager; 37 import ly.warp.sdk.utils.managers.WarplyEventBusManager;
39 -import ly.warp.sdk.views.adapters.MergedGiftsAdapter;
40 import ly.warp.sdk.views.adapters.MergedMoreAdapter; 38 import ly.warp.sdk.views.adapters.MergedMoreAdapter;
41 import ly.warp.sdk.views.adapters.MoreCampaignAdapter; 39 import ly.warp.sdk.views.adapters.MoreCampaignAdapter;
40 +import ly.warp.sdk.views.adapters.MoreContextualAdapter;
42 41
43 42
44 public class MoreForYouActivity extends Activity implements View.OnClickListener { 43 public class MoreForYouActivity extends Activity implements View.OnClickListener {
...@@ -58,14 +57,35 @@ public class MoreForYouActivity extends Activity implements View.OnClickListener ...@@ -58,14 +57,35 @@ public class MoreForYouActivity extends Activity implements View.OnClickListener
58 private MergedMoreAdapter mAdapterMergedMore; 57 private MergedMoreAdapter mAdapterMergedMore;
59 private LinearLayout mLlMorePopup; 58 private LinearLayout mLlMorePopup;
60 private ArrayList<Campaign> mValuesList = new ArrayList<>(); 59 private ArrayList<Campaign> mValuesList = new ArrayList<>();
61 - // private HashSet<Campaign> mHashSetList = new HashSet<>();
62 private ArrayList<LoyaltyContextualOfferModel> mContextualList = new ArrayList<>(); 60 private ArrayList<LoyaltyContextualOfferModel> mContextualList = new ArrayList<>();
63 private ArrayList<MergedMore> mData = new ArrayList(); 61 private ArrayList<MergedMore> mData = new ArrayList();
64 62
63 + /**
64 + * New Implementation
65 + */
66 + private Map<String, ArrayList<Campaign>> mUniqueSectionList = new HashMap<>();
67 + private RecyclerView mResearchItems;
68 + private TextView mTvResearchSection;
69 + private LinearLayout mLlResearchItems;
70 + private RecyclerView mExclusiveItems;
71 + private TextView mTvExclusiveSection;
72 + private LinearLayout mLlExclusiveItems;
73 + private RecyclerView mContestItems;
74 + private TextView mTvContestSection;
75 + private LinearLayout mLlContestItems;
76 + private MoreCampaignAdapter mAdapterResearch, mAdapterExclusive, mAdapterContest;
77 + private RecyclerView mContextualItems;
78 + private TextView mTvContextualSection;
79 + private LinearLayout mLlContextualItems;
80 + private MoreContextualAdapter mAdapterContextual;
81 +
82 + /**
83 + * New Implementation
84 + */
85 +
65 // =========================================================== 86 // ===========================================================
66 // Methods for/from SuperClass/Interfaces 87 // Methods for/from SuperClass/Interfaces
67 // =========================================================== 88 // ===========================================================
68 -
69 @Override 89 @Override
70 public void onCreate(Bundle savedInstanceState) { 90 public void onCreate(Bundle savedInstanceState) {
71 super.onCreate(savedInstanceState); 91 super.onCreate(savedInstanceState);
...@@ -78,13 +98,26 @@ public class MoreForYouActivity extends Activity implements View.OnClickListener ...@@ -78,13 +98,26 @@ public class MoreForYouActivity extends Activity implements View.OnClickListener
78 98
79 mRecyclerMore = findViewById(R.id.rv_more_items); 99 mRecyclerMore = findViewById(R.id.rv_more_items);
80 100
81 -// if (WarplyManagerHelper.getUniqueCampaignList().get("more_for_you") != null && WarplyManagerHelper.getUniqueCampaignList().get("more_for_you").size() > 0) { 101 + /** New Implementation */
82 -// mHashSetList.addAll(WarplyManagerHelper.getUniqueCampaignList().get("more_for_you")); 102 + mTvResearchSection = findViewById(R.id.tv_research_section);
83 -// mValuesList.clear(); 103 + mLlResearchItems = findViewById(R.id.ll_research_items);
84 -// mValuesList.addAll(mHashSetList); 104 + mResearchItems = findViewById(R.id.rv_research_items);
85 -// } 105 + mTvExclusiveSection = findViewById(R.id.tv_exclusive_section);
86 - 106 + mLlExclusiveItems = findViewById(R.id.ll_exclusive_items);
87 - filterItems(); 107 + mExclusiveItems = findViewById(R.id.rv_exclusive_items);
108 + mTvContestSection = findViewById(R.id.tv_contest_section);
109 + mLlContestItems = findViewById(R.id.ll_contest_items);
110 + mContestItems = findViewById(R.id.rv_contest_items);
111 + mTvContextualSection = findViewById(R.id.tv_contextual_section);
112 + mLlContextualItems = findViewById(R.id.ll_contextual_items);
113 + mContextualItems = findViewById(R.id.rv_contextual_items);
114 + /** New Implementation */
115 +
116 +// filterItems();
117 +
118 + /** New Implementation */
119 + filterItemsNew();
120 + /** New Implementation */
88 121
89 if (WarplyManagerHelper.getCCMSLoyaltyCampaigns() != null && WarplyManagerHelper.getCCMSLoyaltyCampaigns().size() > 0) { 122 if (WarplyManagerHelper.getCCMSLoyaltyCampaigns() != null && WarplyManagerHelper.getCCMSLoyaltyCampaigns().size() > 0) {
90 mContextualList.clear(); 123 mContextualList.clear();
...@@ -95,12 +128,16 @@ public class MoreForYouActivity extends Activity implements View.OnClickListener ...@@ -95,12 +128,16 @@ public class MoreForYouActivity extends Activity implements View.OnClickListener
95 } 128 }
96 } 129 }
97 130
98 - mergeDatasets( 131 +// mergeDatasets(
99 - mValuesList, 132 +// mValuesList,
100 - mContextualList 133 +// mContextualList
101 - ); 134 +// );
135 +
136 +// initViews();
102 137
103 - initViews(); 138 + /** New Implementation */
139 + initViewsNew();
140 + /** New Implementation */
104 } 141 }
105 142
106 @Override 143 @Override
...@@ -140,7 +177,11 @@ public class MoreForYouActivity extends Activity implements View.OnClickListener ...@@ -140,7 +177,11 @@ public class MoreForYouActivity extends Activity implements View.OnClickListener
140 @Subscribe() 177 @Subscribe()
141 public void onMessageEvent(WarplyEventBusManager event) { 178 public void onMessageEvent(WarplyEventBusManager event) {
142 if (event.getCcmsAdded() != null || event.getCampaignsAdded() != null) { 179 if (event.getCcmsAdded() != null || event.getCampaignsAdded() != null) {
143 - filterItems(); 180 +// filterItems();
181 +
182 + /** New Implementation */
183 + filterItemsNew();
184 + /** New Implementation */
144 185
145 if (WarplyManagerHelper.getCCMSLoyaltyCampaigns() != null && WarplyManagerHelper.getCCMSLoyaltyCampaigns().size() > 0) { 186 if (WarplyManagerHelper.getCCMSLoyaltyCampaigns() != null && WarplyManagerHelper.getCCMSLoyaltyCampaigns().size() > 0) {
146 mContextualList.clear(); 187 mContextualList.clear();
...@@ -151,68 +192,16 @@ public class MoreForYouActivity extends Activity implements View.OnClickListener ...@@ -151,68 +192,16 @@ public class MoreForYouActivity extends Activity implements View.OnClickListener
151 } 192 }
152 } 193 }
153 194
154 - mergeDatasets( 195 +// mergeDatasets(
155 - mValuesList, 196 +// mValuesList,
156 - mContextualList 197 +// mContextualList
157 - ); 198 +// );
158 199
159 - runOnUiThread(() -> { 200 +// initViews2();
160 -// if (mValuesList != null && mValuesList.size() > 0) { 201 +
161 - if (mData != null && mData.size() > 0) { 202 + /** New Implementation */
162 -// mAdapterMore = new MoreCampaignAdapter(this, mValuesList); 203 + initViewsNew2();
163 - mAdapterMergedMore = new MergedMoreAdapter(MoreForYouActivity.this, mData); 204 + /** New Implementation */
164 -// mRecyclerMore.setAdapter(mAdapterMore);
165 - mRecyclerMore.setAdapter(mAdapterMergedMore);
166 - mAdapterMergedMore.getPositionClicks()
167 - .doOnNext(dataItem -> {
168 - if (dataItem.getDataType() == 1) {
169 - WarpUtils.log("MFY_CLICK " + dataItem.getCampaign().toString());
170 - EventBus.getDefault().post(new WarplyEventBusManager(new LoyaltySDKFirebaseEventModel()));
171 -
172 - try {
173 - JSONObject extraFields = WarpJSONParser.getJSONFromString(dataItem.getCampaign().getExtraFields());
174 - if (extraFields != null) {
175 - if (extraFields.has("type") && extraFields.optString("type").equals("telco")) {
176 - for (LoyaltyContextualOfferModel ccms : WarplyManagerHelper.getCCMSLoyaltyCampaigns()) {
177 - if (ccms.getLoyaltyCampaignId().equals(dataItem.getCampaign().getSessionUUID())) {
178 - Intent intent = new Intent(MoreForYouActivity.this, TelcoActivity.class);
179 - intent.putExtra("ccms", ccms);
180 - intent.putExtra("loyalty", (Serializable) dataItem.getCampaign());
181 - startActivity(intent);
182 - break;
183 - }
184 - }
185 - return;
186 - }
187 - if (extraFields.has("ccms_offer") && extraFields.optString("ccms_offer").equals("true")) {
188 - for (LoyaltyContextualOfferModel ccms : WarplyManagerHelper.getCCMSLoyaltyCampaigns()) {
189 - if (ccms.getLoyaltyCampaignId().equals(dataItem.getCampaign().getSessionUUID())) {
190 - WarpUtils.log("CCMS_CLICK " + ccms.toString());
191 - startActivity(WarpViewActivity.createIntentFromURL(this, WarplyManagerHelper.constructCcmsUrl(dataItem.getCampaign(), ccms)));
192 - break;
193 - }
194 - }
195 - } else {
196 - startActivity(WarpViewActivity.createIntentFromURL(this, WarplyManagerHelper.constructCampaignUrl(dataItem.getCampaign())));
197 - }
198 - }
199 - } catch (Exception exception) {
200 - startActivity(WarpViewActivity.createIntentFromURL(this, WarplyManagerHelper.constructCampaignUrl(dataItem.getCampaign())));
201 - }
202 - } else if (dataItem.getDataType() == 2) {
203 - Intent intent = new Intent(MoreForYouActivity.this, ContextualActivity.class);
204 - intent.putExtra("ccms", dataItem.getCCMS());
205 - startActivity(intent);
206 - }
207 - })
208 - .doOnError(error -> {
209 - })
210 - .subscribe();
211 - mAdapterMergedMore.notifyDataSetChanged();
212 - } else {
213 - mRecyclerMore.setVisibility(View.GONE);
214 - }
215 - });
216 } 205 }
217 } 206 }
218 207
...@@ -285,6 +274,247 @@ public class MoreForYouActivity extends Activity implements View.OnClickListener ...@@ -285,6 +274,247 @@ public class MoreForYouActivity extends Activity implements View.OnClickListener
285 } 274 }
286 } 275 }
287 276
277 + private void initViews2() {
278 + runOnUiThread(() -> {
279 +// if (mValuesList != null && mValuesList.size() > 0) {
280 + if (mData != null && mData.size() > 0) {
281 +// mAdapterMore = new MoreCampaignAdapter(this, mValuesList);
282 + mAdapterMergedMore = new MergedMoreAdapter(MoreForYouActivity.this, mData);
283 +// mRecyclerMore.setAdapter(mAdapterMore);
284 + mRecyclerMore.setAdapter(mAdapterMergedMore);
285 + mAdapterMergedMore.getPositionClicks()
286 + .doOnNext(dataItem -> {
287 + if (dataItem.getDataType() == 1) {
288 + WarpUtils.log("MFY_CLICK " + dataItem.getCampaign().toString());
289 + EventBus.getDefault().post(new WarplyEventBusManager(new LoyaltySDKFirebaseEventModel()));
290 +
291 + try {
292 + JSONObject extraFields = WarpJSONParser.getJSONFromString(dataItem.getCampaign().getExtraFields());
293 + if (extraFields != null) {
294 + if (extraFields.has("type") && extraFields.optString("type").equals("telco")) {
295 + for (LoyaltyContextualOfferModel ccms : WarplyManagerHelper.getCCMSLoyaltyCampaigns()) {
296 + if (ccms.getLoyaltyCampaignId().equals(dataItem.getCampaign().getSessionUUID())) {
297 + Intent intent = new Intent(MoreForYouActivity.this, TelcoActivity.class);
298 + intent.putExtra("ccms", ccms);
299 + intent.putExtra("loyalty", (Serializable) dataItem.getCampaign());
300 + startActivity(intent);
301 + break;
302 + }
303 + }
304 + return;
305 + }
306 + if (extraFields.has("ccms_offer") && extraFields.optString("ccms_offer").equals("true")) {
307 + for (LoyaltyContextualOfferModel ccms : WarplyManagerHelper.getCCMSLoyaltyCampaigns()) {
308 + if (ccms.getLoyaltyCampaignId().equals(dataItem.getCampaign().getSessionUUID())) {
309 + WarpUtils.log("CCMS_CLICK " + ccms.toString());
310 + startActivity(WarpViewActivity.createIntentFromURL(this, WarplyManagerHelper.constructCcmsUrl(dataItem.getCampaign(), ccms)));
311 + break;
312 + }
313 + }
314 + } else {
315 + startActivity(WarpViewActivity.createIntentFromURL(this, WarplyManagerHelper.constructCampaignUrl(dataItem.getCampaign())));
316 + }
317 + }
318 + } catch (Exception exception) {
319 + startActivity(WarpViewActivity.createIntentFromURL(this, WarplyManagerHelper.constructCampaignUrl(dataItem.getCampaign())));
320 + }
321 + } else if (dataItem.getDataType() == 2) {
322 + Intent intent = new Intent(MoreForYouActivity.this, ContextualActivity.class);
323 + intent.putExtra("ccms", dataItem.getCCMS());
324 + startActivity(intent);
325 + }
326 + })
327 + .doOnError(error -> {
328 + })
329 + .subscribe();
330 + mAdapterMergedMore.notifyDataSetChanged();
331 + } else {
332 + mRecyclerMore.setVisibility(View.GONE);
333 + }
334 + });
335 + }
336 +
337 + private void initViewsNew() {
338 + mIvBack.setOnClickListener(this);
339 + mIvPopupClose.setOnClickListener(this);
340 +
341 + if (mUniqueSectionList != null) {
342 + String firstKey = (String) mUniqueSectionList.keySet().toArray()[0];
343 + if (mUniqueSectionList.get(firstKey) != null && mUniqueSectionList.get(firstKey).size() > 0) {
344 + mTvResearchSection.setText(firstKey.substring(1));
345 + mResearchItems.setNestedScrollingEnabled(false);
346 + mResearchItems.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
347 + mAdapterResearch = new MoreCampaignAdapter(this, mUniqueSectionList.get(firstKey));
348 + mResearchItems.setAdapter(mAdapterResearch);
349 + mAdapterResearch.getPositionClicks()
350 + .doOnNext(this::handleMoreItemClick)
351 + .doOnError(error -> {
352 + })
353 + .subscribe();
354 +
355 + mLlResearchItems.setVisibility(View.VISIBLE);
356 + }
357 +
358 + String secondKey = (String) mUniqueSectionList.keySet().toArray()[1];
359 + if (mUniqueSectionList.get(secondKey) != null && mUniqueSectionList.get(secondKey).size() > 0) {
360 + mTvExclusiveSection.setText(secondKey.substring(1));
361 + mExclusiveItems.setNestedScrollingEnabled(false);
362 + mExclusiveItems.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
363 + mAdapterExclusive = new MoreCampaignAdapter(this, mUniqueSectionList.get(secondKey));
364 + mExclusiveItems.setAdapter(mAdapterExclusive);
365 + mAdapterExclusive.getPositionClicks()
366 + .doOnNext(this::handleMoreItemClick)
367 + .doOnError(error -> {
368 + })
369 + .subscribe();
370 +
371 + mLlExclusiveItems.setVisibility(View.VISIBLE);
372 + }
373 +
374 + String thirdKey = (String) mUniqueSectionList.keySet().toArray()[2];
375 + if (mUniqueSectionList.get(thirdKey) != null && mUniqueSectionList.get(thirdKey).size() > 0) {
376 + mTvContestSection.setText(thirdKey.substring(1));
377 + mContestItems.setNestedScrollingEnabled(false);
378 + mContestItems.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
379 + mAdapterContest = new MoreCampaignAdapter(this, mUniqueSectionList.get(thirdKey));
380 + mContestItems.setAdapter(mAdapterContest);
381 + mAdapterContest.getPositionClicks()
382 + .doOnNext(this::handleMoreItemClick)
383 + .doOnError(error -> {
384 + })
385 + .subscribe();
386 +
387 + mLlContestItems.setVisibility(View.VISIBLE);
388 + }
389 +
390 + if (mContextualList != null && mContextualList.size() > 0) {
391 + mTvContextualSection.setText(getString(R.string.cos_mfy_other));
392 + mContextualItems.setNestedScrollingEnabled(false);
393 + mContextualItems.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
394 + mAdapterContextual = new MoreContextualAdapter(this, mContextualList);
395 + mContextualItems.setAdapter(mAdapterContextual);
396 + mAdapterContextual.getPositionClicks()
397 + .doOnNext(this::handleMoreContextualItemClick)
398 + .doOnError(error -> {
399 + })
400 + .subscribe();
401 +
402 + mLlContextualItems.setVisibility(View.VISIBLE);
403 + }
404 + }
405 + }
406 +
407 + private void initViewsNew2() {
408 + mIvBack.setOnClickListener(this);
409 + mIvPopupClose.setOnClickListener(this);
410 +
411 + if (mUniqueSectionList != null) {
412 + String firstKey = (String) mUniqueSectionList.keySet().toArray()[0];
413 + if (mUniqueSectionList.get(firstKey) != null && mUniqueSectionList.get(firstKey).size() > 0) {
414 + mTvResearchSection.setText(firstKey.substring(1));
415 + mResearchItems.setNestedScrollingEnabled(false);
416 + mAdapterResearch = new MoreCampaignAdapter(this, mUniqueSectionList.get(firstKey));
417 + mResearchItems.setAdapter(mAdapterResearch);
418 + mAdapterResearch.getPositionClicks()
419 + .doOnNext(this::handleMoreItemClick)
420 + .doOnError(error -> {
421 + })
422 + .subscribe();
423 + mAdapterResearch.notifyDataSetChanged();
424 +
425 + mLlResearchItems.setVisibility(View.VISIBLE);
426 + }
427 +
428 + String secondKey = (String) mUniqueSectionList.keySet().toArray()[1];
429 + if (mUniqueSectionList.get(secondKey) != null && mUniqueSectionList.get(secondKey).size() > 0) {
430 + mTvExclusiveSection.setText(secondKey.substring(1));
431 + mExclusiveItems.setNestedScrollingEnabled(false);
432 + mAdapterExclusive = new MoreCampaignAdapter(this, mUniqueSectionList.get(secondKey));
433 + mExclusiveItems.setAdapter(mAdapterExclusive);
434 + mAdapterExclusive.getPositionClicks()
435 + .doOnNext(this::handleMoreItemClick)
436 + .doOnError(error -> {
437 + })
438 + .subscribe();
439 + mAdapterExclusive.notifyDataSetChanged();
440 +
441 + mLlExclusiveItems.setVisibility(View.VISIBLE);
442 + }
443 +
444 + String thirdKey = (String) mUniqueSectionList.keySet().toArray()[2];
445 + if (mUniqueSectionList.get(thirdKey) != null && mUniqueSectionList.get(thirdKey).size() > 0) {
446 + mTvContestSection.setText(thirdKey.substring(1));
447 + mContestItems.setNestedScrollingEnabled(false);
448 + mAdapterContest = new MoreCampaignAdapter(this, mUniqueSectionList.get(thirdKey));
449 + mContestItems.setAdapter(mAdapterContest);
450 + mAdapterContest.getPositionClicks()
451 + .doOnNext(this::handleMoreItemClick)
452 + .doOnError(error -> {
453 + })
454 + .subscribe();
455 + mAdapterContest.notifyDataSetChanged();
456 +
457 + mLlContestItems.setVisibility(View.VISIBLE);
458 + }
459 +
460 + if (mContextualList != null && mContextualList.size() > 0) {
461 + mTvContextualSection.setText(getString(R.string.cos_mfy_other));
462 + mContextualItems.setNestedScrollingEnabled(false);
463 + mAdapterContextual = new MoreContextualAdapter(this, mContextualList);
464 + mContextualItems.setAdapter(mAdapterContextual);
465 + mAdapterContextual.getPositionClicks()
466 + .doOnNext(this::handleMoreContextualItemClick)
467 + .doOnError(error -> {
468 + })
469 + .subscribe();
470 + mAdapterContextual.notifyDataSetChanged();
471 +
472 + mLlContextualItems.setVisibility(View.VISIBLE);
473 + }
474 + }
475 + }
476 +
477 + private void handleMoreItemClick(Campaign moreItem) {
478 + EventBus.getDefault().post(new WarplyEventBusManager(new LoyaltySDKFirebaseEventModel()));
479 +
480 + try {
481 + JSONObject extraFields = WarpJSONParser.getJSONFromString(moreItem.getExtraFields());
482 + if (extraFields != null) {
483 + if (extraFields.has("type") && extraFields.optString("type").equals("telco")) {
484 + for (LoyaltyContextualOfferModel ccms : WarplyManagerHelper.getCCMSLoyaltyCampaigns()) {
485 + if (ccms.getLoyaltyCampaignId().equals(moreItem.getSessionUUID())) {
486 + Intent intent = new Intent(MoreForYouActivity.this, TelcoActivity.class);
487 + intent.putExtra("ccms", ccms);
488 + intent.putExtra("loyalty", (Serializable) moreItem);
489 + startActivity(intent);
490 + break;
491 + }
492 + }
493 + return;
494 + }
495 + if (extraFields.has("ccms_offer") && extraFields.optString("ccms_offer").equals("true")) {
496 + for (LoyaltyContextualOfferModel ccms : WarplyManagerHelper.getCCMSLoyaltyCampaigns()) {
497 + if (ccms.getLoyaltyCampaignId().equals(moreItem.getSessionUUID())) {
498 + WarpUtils.log("CCMS_CLICK " + ccms.toString());
499 + startActivity(WarpViewActivity.createIntentFromURL(this, WarplyManagerHelper.constructCcmsUrl(moreItem, ccms)));
500 + break;
501 + }
502 + }
503 + } else {
504 + startActivity(WarpViewActivity.createIntentFromURL(this, WarplyManagerHelper.constructCampaignUrl(moreItem)));
505 + }
506 + }
507 + } catch (Exception exception) {
508 + startActivity(WarpViewActivity.createIntentFromURL(this, WarplyManagerHelper.constructCampaignUrl(moreItem)));
509 + }
510 + }
511 +
512 + private void handleMoreContextualItemClick(LoyaltyContextualOfferModel ccmsItem) {
513 + Intent intent = new Intent(MoreForYouActivity.this, ContextualActivity.class);
514 + intent.putExtra("ccms", ccmsItem);
515 + startActivity(intent);
516 + }
517 +
288 private void mergeDatasets(ArrayList<Campaign> campaignList, 518 private void mergeDatasets(ArrayList<Campaign> campaignList,
289 ArrayList<LoyaltyContextualOfferModel> ccmsList) { 519 ArrayList<LoyaltyContextualOfferModel> ccmsList) {
290 mData.clear(); 520 mData.clear();
...@@ -310,30 +540,82 @@ public class MoreForYouActivity extends Activity implements View.OnClickListener ...@@ -310,30 +540,82 @@ public class MoreForYouActivity extends Activity implements View.OnClickListener
310 } 540 }
311 } 541 }
312 542
313 - private void filterItems() { 543 +// private void filterItems() {
314 - mValuesList.clear(); 544 +// mValuesList.clear();
315 - ArrayList<Campaign> gfyList = new ArrayList<>(); 545 +// ArrayList<Campaign> gfyList = new ArrayList<>();
546 +// if (WarplyManagerHelper.getCampaignListAll() != null && WarplyManagerHelper.getCampaignListAll().size() > 0) {
547 +// Log.v("Got L:{" + String.valueOf(WarplyManagerHelper.getCampaignListAll().size()) + "}", " LOYALTY campaigns");
548 +// if (WarplyManagerHelper.getCCMSLoyaltyCampaigns() == null || WarplyManagerHelper.getCCMSLoyaltyCampaigns().size() == 0) {
549 +// Log.v("Got C:{0}", " CCMS campaigns");
550 +// for (Campaign camp : WarplyManagerHelper.getCampaignListAll()) {
551 +// if (camp.getOfferCategory().equals("more_for_you")) {
552 +// try {
553 +// JSONObject extraFields = WarpJSONParser.getJSONFromString(camp.getExtraFields());
554 +// if (extraFields != null) {
555 +// if (extraFields.length() == 0 || !(extraFields.has("ccms_offer") || extraFields.has("type"))) {
556 +// gfyList.add(camp);
557 +// }
558 +// }
559 +// } catch (Exception exception) {
560 +// gfyList.add(camp);
561 +// }
562 +// }
563 +// }
564 +// } else {
565 +// int ccmsCount = 0;
566 +// Log.v("Got C:{" + String.valueOf(WarplyManagerHelper.getCCMSLoyaltyCampaigns().size()) + "}", " CCMS campaigns");
567 +// for (Campaign camp : WarplyManagerHelper.getCampaignListAll()) {
568 +// if (camp.getOfferCategory().equals("more_for_you")) {
569 +// try {
570 +// JSONObject extraFields = WarpJSONParser.getJSONFromString(camp.getExtraFields());
571 +// if (extraFields != null) {
572 +// if (extraFields.has("ccms_offer") && extraFields.optString("ccms_offer").equals("true")) {
573 +// for (LoyaltyContextualOfferModel ccms : WarplyManagerHelper.getCCMSLoyaltyCampaigns()) {
574 +// if (ccms.getLoyaltyCampaignId().equals(camp.getSessionUUID())) {
575 +// gfyList.add(camp);
576 +// ccmsCount++;
577 +// break;
578 +// }
579 +// }
580 +// } else {
581 +// gfyList.add(camp);
582 +// }
583 +// }
584 +// } catch (Exception exception) {
585 +// gfyList.add(camp);
586 +// }
587 +// }
588 +// }
589 +// Log.v("Got M:{" + String.valueOf(ccmsCount) + "}", " Matched campaigns");
590 +// }
591 +//
592 +// mValuesList.addAll(gfyList);
593 +// }
594 +// }
595 +
596 + /**
597 + * New Implementation
598 + */
599 + private void filterItemsNew() {
600 + mUniqueSectionList.clear();
601 + ArrayList<Campaign> mfyList = new ArrayList<>();
316 if (WarplyManagerHelper.getCampaignListAll() != null && WarplyManagerHelper.getCampaignListAll().size() > 0) { 602 if (WarplyManagerHelper.getCampaignListAll() != null && WarplyManagerHelper.getCampaignListAll().size() > 0) {
317 - Log.v("Got L:{" + String.valueOf(WarplyManagerHelper.getCampaignListAll().size()) + "}", " LOYALTY campaigns");
318 if (WarplyManagerHelper.getCCMSLoyaltyCampaigns() == null || WarplyManagerHelper.getCCMSLoyaltyCampaigns().size() == 0) { 603 if (WarplyManagerHelper.getCCMSLoyaltyCampaigns() == null || WarplyManagerHelper.getCCMSLoyaltyCampaigns().size() == 0) {
319 - Log.v("Got C:{0}", " CCMS campaigns");
320 for (Campaign camp : WarplyManagerHelper.getCampaignListAll()) { 604 for (Campaign camp : WarplyManagerHelper.getCampaignListAll()) {
321 if (camp.getOfferCategory().equals("more_for_you")) { 605 if (camp.getOfferCategory().equals("more_for_you")) {
322 try { 606 try {
323 JSONObject extraFields = WarpJSONParser.getJSONFromString(camp.getExtraFields()); 607 JSONObject extraFields = WarpJSONParser.getJSONFromString(camp.getExtraFields());
324 if (extraFields != null) { 608 if (extraFields != null) {
325 if (extraFields.length() == 0 || !(extraFields.has("ccms_offer") || extraFields.has("type"))) { 609 if (extraFields.length() == 0 || !(extraFields.has("ccms_offer") || extraFields.has("type"))) {
326 - gfyList.add(camp); 610 + mfyList.add(camp);
327 } 611 }
328 } 612 }
329 } catch (Exception exception) { 613 } catch (Exception exception) {
330 - gfyList.add(camp); 614 + mfyList.add(camp);
331 } 615 }
332 } 616 }
333 } 617 }
334 } else { 618 } else {
335 - int ccmsCount = 0;
336 - Log.v("Got C:{" + String.valueOf(WarplyManagerHelper.getCCMSLoyaltyCampaigns().size()) + "}", " CCMS campaigns");
337 for (Campaign camp : WarplyManagerHelper.getCampaignListAll()) { 619 for (Campaign camp : WarplyManagerHelper.getCampaignListAll()) {
338 if (camp.getOfferCategory().equals("more_for_you")) { 620 if (camp.getOfferCategory().equals("more_for_you")) {
339 try { 621 try {
...@@ -342,26 +624,46 @@ public class MoreForYouActivity extends Activity implements View.OnClickListener ...@@ -342,26 +624,46 @@ public class MoreForYouActivity extends Activity implements View.OnClickListener
342 if (extraFields.has("ccms_offer") && extraFields.optString("ccms_offer").equals("true")) { 624 if (extraFields.has("ccms_offer") && extraFields.optString("ccms_offer").equals("true")) {
343 for (LoyaltyContextualOfferModel ccms : WarplyManagerHelper.getCCMSLoyaltyCampaigns()) { 625 for (LoyaltyContextualOfferModel ccms : WarplyManagerHelper.getCCMSLoyaltyCampaigns()) {
344 if (ccms.getLoyaltyCampaignId().equals(camp.getSessionUUID())) { 626 if (ccms.getLoyaltyCampaignId().equals(camp.getSessionUUID())) {
345 - gfyList.add(camp); 627 + mfyList.add(camp);
346 - ccmsCount++;
347 break; 628 break;
348 } 629 }
349 } 630 }
350 } else { 631 } else {
351 - gfyList.add(camp); 632 + mfyList.add(camp);
352 } 633 }
353 } 634 }
354 } catch (Exception exception) { 635 } catch (Exception exception) {
355 - gfyList.add(camp); 636 + mfyList.add(camp);
637 + }
638 + }
639 + }
640 + }
641 +
642 + if (mfyList != null && mfyList.size() > 0) {
643 + for (Campaign campaignItem : mfyList) {
644 + JSONObject extraFields = WarpJSONParser.getJSONFromString(campaignItem.getExtraFields());
645 + if (extraFields != null && extraFields.has("category_title")) {
646 + String categoryTitle = extraFields.optString("category_title");
647 +
648 + if (mUniqueSectionList.containsKey(categoryTitle.trim())) {
649 + CampaignList tempCampaignList = (CampaignList) mUniqueSectionList.get(categoryTitle.trim());
650 + tempCampaignList.add(campaignItem);
651 + mUniqueSectionList.put(categoryTitle.trim(), tempCampaignList);
652 + } else {
653 + CampaignList tempCampaignList = new CampaignList();
654 + tempCampaignList.add(campaignItem);
655 + mUniqueSectionList.put(categoryTitle.trim(), tempCampaignList);
356 } 656 }
357 } 657 }
358 } 658 }
359 - Log.v("Got M:{" + String.valueOf(ccmsCount) + "}", " Matched campaigns");
360 } 659 }
361 660
362 - mValuesList.addAll(gfyList); 661 + Map<String, ArrayList<Campaign>> treeMap = new TreeMap<String, ArrayList<Campaign>>(mUniqueSectionList);
662 + mUniqueSectionList.clear();
663 + mUniqueSectionList = treeMap;
363 } 664 }
364 } 665 }
666 + /** New Implementation */
365 667
366 // =========================================================== 668 // ===========================================================
367 // Inner and Anonymous Classes 669 // Inner and Anonymous Classes
......
...@@ -31,17 +31,17 @@ package ly.warp.sdk.io.models; ...@@ -31,17 +31,17 @@ package ly.warp.sdk.io.models;
31 */ 31 */
32 32
33 public class HealthEventModel { 33 public class HealthEventModel {
34 - private double steps; 34 + private double meters;
35 35
36 public HealthEventModel() { 36 public HealthEventModel() {
37 - this.steps = 0.0d; 37 + this.meters = 0.0d;
38 } 38 }
39 39
40 - public double getSteps() { 40 + public double getMeters() {
41 - return steps; 41 + return meters;
42 } 42 }
43 43
44 - public void setSteps(double steps) { 44 + public void setMeters(double meters) {
45 - this.steps = steps; 45 + this.meters = meters;
46 } 46 }
47 } 47 }
......
...@@ -211,7 +211,7 @@ public class WarplyHealthService extends Service implements SensorEventListener ...@@ -211,7 +211,7 @@ public class WarplyHealthService extends Service implements SensorEventListener
211 mSteps++; 211 mSteps++;
212 mStepsAll++; 212 mStepsAll++;
213 HealthEventModel healthSteps = new HealthEventModel(); 213 HealthEventModel healthSteps = new HealthEventModel();
214 - healthSteps.setSteps((mStepsAll * 0.762)); 214 + healthSteps.setMeters((mStepsAll * 0.762));
215 EventBus.getDefault().post(new WarplyEventBusManager(healthSteps)); 215 EventBus.getDefault().post(new WarplyEventBusManager(healthSteps));
216 WarpUtils.setStepsMetersCounter(this, (mStepsAll * 0.762)); 216 WarpUtils.setStepsMetersCounter(this, (mStepsAll * 0.762));
217 WarpUtils.setStepsCounter(this, mSteps); 217 WarpUtils.setStepsCounter(this, mSteps);
......
...@@ -745,7 +745,7 @@ public class WarplyManagerHelper { ...@@ -745,7 +745,7 @@ public class WarplyManagerHelper {
745 */ 745 */
746 public static void setSeasonalList(ArrayList<LoyaltyGiftsForYouPackage> seasonalCoupons) { 746 public static void setSeasonalList(ArrayList<LoyaltyGiftsForYouPackage> seasonalCoupons) {
747 mSeasonalList.clear(); 747 mSeasonalList.clear();
748 - mSeasonalList.addAll(seasonalCoupons); 748 + mSeasonalList = seasonalCoupons;
749 } 749 }
750 750
751 /** 751 /**
......
...@@ -22,8 +22,7 @@ import io.reactivex.subjects.PublishSubject; ...@@ -22,8 +22,7 @@ import io.reactivex.subjects.PublishSubject;
22 import ly.warp.sdk.R; 22 import ly.warp.sdk.R;
23 import ly.warp.sdk.io.models.Campaign; 23 import ly.warp.sdk.io.models.Campaign;
24 24
25 - 25 +public class MoreCampaignAdapter extends RecyclerView.Adapter<MoreCampaignAdapter.MoreCampaignViewHolder> {
26 -public class MoreCampaignAdapter extends RecyclerView.Adapter<MoreCampaignAdapter.ProfileCampaignViewHolder> {
27 26
28 private Context mContext; 27 private Context mContext;
29 private ArrayList<Campaign> mCampaigns; 28 private ArrayList<Campaign> mCampaigns;
...@@ -34,25 +33,17 @@ public class MoreCampaignAdapter extends RecyclerView.Adapter<MoreCampaignAdapte ...@@ -34,25 +33,17 @@ public class MoreCampaignAdapter extends RecyclerView.Adapter<MoreCampaignAdapte
34 this.mCampaigns = campaignList; 33 this.mCampaigns = campaignList;
35 } 34 }
36 35
37 - public class ProfileCampaignViewHolder extends RecyclerView.ViewHolder { 36 + public class MoreCampaignViewHolder extends RecyclerView.ViewHolder {
38 private ImageView ivCampaignTitle, ivIsNew; 37 private ImageView ivCampaignTitle, ivIsNew;
39 private TextView tvCampaignTitle, tvCampaignSubtitle, tvCampaignMessage; 38 private TextView tvCampaignTitle, tvCampaignSubtitle, tvCampaignMessage;
40 39
41 - public ProfileCampaignViewHolder(View view) { 40 + public MoreCampaignViewHolder(View view) {
42 - super(view);
43 - ivCampaignTitle = view.findViewById(R.id.iv_campaign_logo);
44 - tvCampaignTitle = view.findViewById(R.id.tv_campaign_title);
45 - }
46 -
47 - public ProfileCampaignViewHolder(View view, boolean vertical) {
48 super(view); 41 super(view);
49 ivCampaignTitle = view.findViewById(R.id.iv_campaign_logo); 42 ivCampaignTitle = view.findViewById(R.id.iv_campaign_logo);
50 tvCampaignTitle = view.findViewById(R.id.tv_campaign_title); 43 tvCampaignTitle = view.findViewById(R.id.tv_campaign_title);
51 ivIsNew = view.findViewById(R.id.iv_campaign_new); 44 ivIsNew = view.findViewById(R.id.iv_campaign_new);
52 - if (vertical) { 45 + tvCampaignSubtitle = view.findViewById(R.id.tv_campaign_subtitle);
53 - tvCampaignSubtitle = view.findViewById(R.id.tv_campaign_subtitle); 46 + tvCampaignMessage = view.findViewById(R.id.tv_campaign_message);
54 - tvCampaignMessage = view.findViewById(R.id.tv_campaign_message);
55 - }
56 } 47 }
57 } 48 }
58 49
...@@ -76,15 +67,15 @@ public class MoreCampaignAdapter extends RecyclerView.Adapter<MoreCampaignAdapte ...@@ -76,15 +67,15 @@ public class MoreCampaignAdapter extends RecyclerView.Adapter<MoreCampaignAdapte
76 } 67 }
77 68
78 @Override 69 @Override
79 - public ProfileCampaignViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 70 + public MoreCampaignViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
80 View itemView; 71 View itemView;
81 72
82 itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_profile_recycler_vertical, parent, false); 73 itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_profile_recycler_vertical, parent, false);
83 - return new ProfileCampaignViewHolder(itemView, true); 74 + return new MoreCampaignViewHolder(itemView);
84 } 75 }
85 76
86 @Override 77 @Override
87 - public void onBindViewHolder(final ProfileCampaignViewHolder holder, int position) { 78 + public void onBindViewHolder(final MoreCampaignViewHolder holder, int position) {
88 Campaign campaignItem = mCampaigns.get(position); 79 Campaign campaignItem = mCampaigns.get(position);
89 80
90 if (campaignItem != null) { 81 if (campaignItem != null) {
......
1 +package ly.warp.sdk.views.adapters;
2 +
3 +import android.content.Context;
4 +import android.text.TextUtils;
5 +import android.view.LayoutInflater;
6 +import android.view.View;
7 +import android.view.ViewGroup;
8 +import android.widget.ImageView;
9 +import android.widget.TextView;
10 +
11 +import androidx.recyclerview.widget.RecyclerView;
12 +
13 +import com.bumptech.glide.Glide;
14 +import com.bumptech.glide.load.engine.DiskCacheStrategy;
15 +import com.bumptech.glide.load.resource.bitmap.CenterCrop;
16 +import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
17 +
18 +import java.util.ArrayList;
19 +
20 +import io.reactivex.Observable;
21 +import io.reactivex.subjects.PublishSubject;
22 +import ly.warp.sdk.R;
23 +import ly.warp.sdk.io.models.Campaign;
24 +import ly.warp.sdk.io.models.LoyaltyContextualOfferModel;
25 +
26 +public class MoreContextualAdapter extends RecyclerView.Adapter<MoreContextualAdapter.MoreContextualViewHolder> {
27 +
28 + private Context mContext;
29 + private ArrayList<LoyaltyContextualOfferModel> mCampaigns;
30 + private final PublishSubject<LoyaltyContextualOfferModel> onClickSubject = PublishSubject.create();
31 +
32 + public MoreContextualAdapter(Context mContext, ArrayList<LoyaltyContextualOfferModel> campaignList) {
33 + this.mContext = mContext;
34 + this.mCampaigns = campaignList;
35 + }
36 +
37 + public class MoreContextualViewHolder extends RecyclerView.ViewHolder {
38 + private ImageView ivCampaignTitle, ivIsNew;
39 + private TextView tvCampaignTitle, tvCampaignSubtitle, tvCampaignMessage;
40 +
41 + public MoreContextualViewHolder(View view) {
42 + super(view);
43 + ivCampaignTitle = view.findViewById(R.id.iv_campaign_logo);
44 + tvCampaignTitle = view.findViewById(R.id.tv_campaign_title);
45 + ivIsNew = view.findViewById(R.id.iv_campaign_new);
46 + tvCampaignSubtitle = view.findViewById(R.id.tv_campaign_subtitle);
47 + tvCampaignMessage = view.findViewById(R.id.tv_campaign_message);
48 + }
49 + }
50 +
51 + @Override
52 + public int getItemCount() {
53 + if (mCampaigns == null)
54 + return 0;
55 + else
56 + return mCampaigns.size();
57 + }
58 +
59 +
60 + public LoyaltyContextualOfferModel getItem(int id) {
61 + return mCampaigns.get(id);
62 + }
63 +
64 + public void updateData(ArrayList<LoyaltyContextualOfferModel> campaignList) {
65 + mCampaigns.clear();
66 + mCampaigns.addAll(campaignList);
67 + notifyDataSetChanged();
68 + }
69 +
70 + @Override
71 + public MoreContextualViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
72 + View itemView;
73 +
74 + itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_profile_recycler_vertical, parent, false);
75 + return new MoreContextualViewHolder(itemView);
76 + }
77 +
78 + @Override
79 + public void onBindViewHolder(final MoreContextualViewHolder holder, int position) {
80 + LoyaltyContextualOfferModel campaignItem = mCampaigns.get(position);
81 +
82 + if (campaignItem != null) {
83 + if (!TextUtils.isEmpty(campaignItem.getImageUrl())) {
84 + Glide.with(mContext)
85 + .load(campaignItem.getImageUrl())
86 + .transform(new CenterCrop(), new RoundedCorners(4))
87 + .diskCacheStrategy(DiskCacheStrategy.DATA)
88 + .into(holder.ivCampaignTitle);
89 + } else {
90 + Glide.with(mContext)
91 + .load(R.drawable.ic_cosmote_logo_horizontal_grey)
92 + .into(holder.ivCampaignTitle);
93 + }
94 +
95 + holder.tvCampaignTitle.setText(campaignItem.getTitle());
96 + holder.tvCampaignSubtitle.setText(campaignItem.getSubtitle());
97 + holder.tvCampaignMessage.setText(campaignItem.getMessage());
98 + holder.ivIsNew.setVisibility(View.GONE);
99 +
100 + holder.itemView.setOnClickListener(v -> onClickSubject.onNext(campaignItem));
101 + }
102 + }
103 +
104 + public Observable<LoyaltyContextualOfferModel> getPositionClicks() {
105 + return onClickSubject.cache();
106 + }
107 +
108 +}
...@@ -25,13 +25,13 @@ ...@@ -25,13 +25,13 @@
25 25
26 <TextView 26 <TextView
27 android:id="@+id/textView3" 27 android:id="@+id/textView3"
28 + fontPath="fonts/pf_square_sans_pro_bold.ttf"
28 android:layout_width="206dp" 29 android:layout_width="206dp"
29 android:layout_height="32dp" 30 android:layout_height="32dp"
30 android:gravity="center" 31 android:gravity="center"
32 + android:text="@string/cos_more_title"
31 android:textColor="@color/grey" 33 android:textColor="@color/grey"
32 android:textSize="17sp" 34 android:textSize="17sp"
33 - fontPath="fonts/pf_square_sans_pro_bold.ttf"
34 - android:text="@string/cos_more_title"
35 app:layout_constraintBottom_toBottomOf="parent" 35 app:layout_constraintBottom_toBottomOf="parent"
36 app:layout_constraintEnd_toEndOf="parent" 36 app:layout_constraintEnd_toEndOf="parent"
37 app:layout_constraintHorizontal_bias="0.356" 37 app:layout_constraintHorizontal_bias="0.356"
...@@ -46,62 +46,188 @@ ...@@ -46,62 +46,188 @@
46 android:background="@drawable/shape_cos_loyalty" 46 android:background="@drawable/shape_cos_loyalty"
47 android:orientation="vertical"> 47 android:orientation="vertical">
48 48
49 - <LinearLayout 49 + <ScrollView
50 - android:id="@+id/ll_more_popup"
51 android:layout_width="match_parent" 50 android:layout_width="match_parent"
52 - android:layout_height="wrap_content" 51 + android:layout_height="match_parent"
53 - android:layout_marginTop="24dp" 52 + android:fillViewport="true">
54 - android:background="@drawable/shape_cos_gradient5"
55 - android:orientation="vertical"
56 - android:paddingVertical="16dp"
57 - android:visibility="gone"
58 - tools:visibility="visible">
59 -
60 - <ImageView
61 - android:id="@+id/iv_popup_more_close"
62 - android:layout_width="20dp"
63 - android:layout_height="20dp"
64 - android:layout_marginStart="16dp"
65 - android:src="@drawable/ic_close_white" />
66 -
67 - <ImageView
68 - android:layout_width="48dp"
69 - android:layout_height="wrap_content"
70 - android:layout_gravity="center"
71 - android:scaleType="centerInside"
72 - android:src="@drawable/ic_heart" />
73 53
74 - <TextView 54 + <RelativeLayout
75 - android:layout_width="wrap_content" 55 + android:layout_width="match_parent"
76 - android:layout_height="wrap_content"
77 - android:layout_gravity="center"
78 - android:layout_marginTop="8dp"
79 - android:layout_marginBottom="12dp"
80 - android:text="@string/cos_popup_more_title"
81 - android:textColor="@android:color/white"
82 - android:textSize="18sp"
83 - android:textStyle="bold" />
84 -
85 - <TextView
86 - android:layout_width="wrap_content"
87 android:layout_height="wrap_content" 56 android:layout_height="wrap_content"
88 - android:layout_gravity="center" 57 + android:orientation="vertical">
89 - android:layout_marginHorizontal="40dp" 58 +
90 - android:gravity="center" 59 + <LinearLayout
91 - android:text="@string/cos_popup_more_subtitle" 60 + android:id="@+id/ll_more_popup"
92 - android:textColor="@android:color/white" 61 + android:layout_width="match_parent"
93 - android:textSize="16sp" /> 62 + android:layout_height="wrap_content"
94 - </LinearLayout> 63 + android:layout_marginTop="24dp"
95 - 64 + android:background="@drawable/shape_cos_gradient5"
96 - <androidx.recyclerview.widget.RecyclerView 65 + android:orientation="vertical"
97 - android:id="@+id/rv_more_items" 66 + android:paddingVertical="16dp"
98 - android:layout_width="match_parent" 67 + android:visibility="gone"
99 - android:layout_height="match_parent" 68 + tools:visibility="gone">
100 - android:layout_below="@+id/ll_more_popup" 69 +
101 - android:layout_marginTop="4dp" 70 + <ImageView
102 - android:clipToPadding="false" 71 + android:id="@+id/iv_popup_more_close"
103 - android:orientation="vertical" 72 + android:layout_width="20dp"
104 - android:paddingTop="44dp" 73 + android:layout_height="20dp"
105 - android:paddingBottom="24dp" /> 74 + android:layout_marginStart="16dp"
75 + android:src="@drawable/ic_close_white" />
76 +
77 + <ImageView
78 + android:layout_width="48dp"
79 + android:layout_height="wrap_content"
80 + android:layout_gravity="center"
81 + android:scaleType="centerInside"
82 + android:src="@drawable/ic_heart" />
83 +
84 + <TextView
85 + android:layout_width="wrap_content"
86 + android:layout_height="wrap_content"
87 + android:layout_gravity="center"
88 + android:layout_marginTop="8dp"
89 + android:layout_marginBottom="12dp"
90 + android:text="@string/cos_popup_more_title"
91 + android:textColor="@android:color/white"
92 + android:textSize="18sp"
93 + android:textStyle="bold" />
94 +
95 + <TextView
96 + android:layout_width="wrap_content"
97 + android:layout_height="wrap_content"
98 + android:layout_gravity="center"
99 + android:layout_marginHorizontal="40dp"
100 + android:gravity="center"
101 + android:text="@string/cos_popup_more_subtitle"
102 + android:textColor="@android:color/white"
103 + android:textSize="16sp" />
104 + </LinearLayout>
105 +
106 + <androidx.recyclerview.widget.RecyclerView
107 + android:id="@+id/rv_more_items"
108 + android:layout_width="match_parent"
109 + android:layout_height="match_parent"
110 + android:layout_below="@+id/ll_more_popup"
111 + android:layout_marginTop="4dp"
112 + android:clipToPadding="false"
113 + android:orientation="vertical"
114 + android:paddingTop="44dp"
115 + android:paddingBottom="24dp"
116 + android:visibility="gone" />
117 +
118 + <LinearLayout
119 + android:id="@+id/ll_research_items"
120 + android:layout_width="match_parent"
121 + android:layout_height="wrap_content"
122 + android:layout_below="@+id/ll_more_popup"
123 + android:orientation="vertical"
124 + android:paddingTop="44dp"
125 + android:visibility="gone">
126 +
127 + <TextView
128 + android:id="@+id/tv_research_section"
129 + fontPath="fonts/pf_square_sans_pro_bold.ttf"
130 + android:layout_width="wrap_content"
131 + android:layout_height="wrap_content"
132 + android:layout_marginHorizontal="16dp"
133 + android:textColor="@android:color/white"
134 + android:textSize="16sp"
135 + tools:text="ΕΡΕΥΝΑ" />
136 +
137 + <androidx.recyclerview.widget.RecyclerView
138 + android:id="@+id/rv_research_items"
139 + android:layout_width="match_parent"
140 + android:layout_height="wrap_content"
141 + android:layout_marginTop="4dp"
142 + android:clipToPadding="false"
143 + android:orientation="vertical"
144 + android:paddingBottom="4dp" />
145 + </LinearLayout>
146 +
147 + <LinearLayout
148 + android:id="@+id/ll_exclusive_items"
149 + android:layout_width="match_parent"
150 + android:layout_height="wrap_content"
151 + android:layout_below="@+id/ll_research_items"
152 + android:orientation="vertical"
153 + android:visibility="gone">
154 +
155 + <TextView
156 + android:id="@+id/tv_exclusive_section"
157 + fontPath="fonts/pf_square_sans_pro_bold.ttf"
158 + android:layout_width="wrap_content"
159 + android:layout_height="wrap_content"
160 + android:layout_marginHorizontal="16dp"
161 + android:textColor="@android:color/white"
162 + android:textSize="16sp"
163 + tools:text="ΕΡΕΥΝΑ" />
164 +
165 + <androidx.recyclerview.widget.RecyclerView
166 + android:id="@+id/rv_exclusive_items"
167 + android:layout_width="match_parent"
168 + android:layout_height="wrap_content"
169 + android:layout_marginTop="4dp"
170 + android:clipToPadding="false"
171 + android:orientation="vertical"
172 + android:paddingBottom="4dp" />
173 + </LinearLayout>
174 +
175 + <LinearLayout
176 + android:id="@+id/ll_contest_items"
177 + android:layout_width="match_parent"
178 + android:layout_height="wrap_content"
179 + android:layout_below="@+id/ll_exclusive_items"
180 + android:orientation="vertical"
181 + android:visibility="gone">
182 +
183 + <TextView
184 + android:id="@+id/tv_contest_section"
185 + fontPath="fonts/pf_square_sans_pro_bold.ttf"
186 + android:layout_width="wrap_content"
187 + android:layout_height="wrap_content"
188 + android:layout_marginHorizontal="16dp"
189 + android:textColor="@android:color/white"
190 + android:textSize="16sp"
191 + tools:text="ΕΡΕΥΝΑ" />
192 +
193 + <androidx.recyclerview.widget.RecyclerView
194 + android:id="@+id/rv_contest_items"
195 + android:layout_width="match_parent"
196 + android:layout_height="wrap_content"
197 + android:layout_marginTop="4dp"
198 + android:clipToPadding="false"
199 + android:orientation="vertical"
200 + android:paddingBottom="4dp" />
201 + </LinearLayout>
202 +
203 + <LinearLayout
204 + android:id="@+id/ll_contextual_items"
205 + android:layout_width="match_parent"
206 + android:layout_height="wrap_content"
207 + android:layout_below="@+id/ll_contest_items"
208 + android:orientation="vertical"
209 + android:visibility="gone">
210 +
211 + <TextView
212 + android:id="@+id/tv_contextual_section"
213 + fontPath="fonts/pf_square_sans_pro_bold.ttf"
214 + android:layout_width="wrap_content"
215 + android:layout_height="wrap_content"
216 + android:layout_marginHorizontal="16dp"
217 + android:textColor="@android:color/white"
218 + android:textSize="16sp"
219 + tools:text="ΕΡΕΥΝΑ" />
220 +
221 + <androidx.recyclerview.widget.RecyclerView
222 + android:id="@+id/rv_contextual_items"
223 + android:layout_width="match_parent"
224 + android:layout_height="wrap_content"
225 + android:layout_marginTop="4dp"
226 + android:clipToPadding="false"
227 + android:orientation="vertical"
228 + android:paddingBottom="4dp" />
229 + </LinearLayout>
230 + </RelativeLayout>
231 + </ScrollView>
106 </RelativeLayout> 232 </RelativeLayout>
107 </RelativeLayout> 233 </RelativeLayout>
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -132,6 +132,7 @@ ...@@ -132,6 +132,7 @@
132 <string name="cos_empty_shared_coupons">Δεν έχεις μοιραστεί ακόμη κουπόνια</string> 132 <string name="cos_empty_shared_coupons">Δεν έχεις μοιραστεί ακόμη κουπόνια</string>
133 <string name="cos_empty_expired_coupons">Δεν έχεις εξαργυρώσει ακόμη κουπόνια</string> 133 <string name="cos_empty_expired_coupons">Δεν έχεις εξαργυρώσει ακόμη κουπόνια</string>
134 <string name="cos_dlg_pacing_goal">Πέτυχες το στόχο του μήνα! Διάλεξε το δώρο που επιθυμείς να ενεργοποιήσεις!</string> 134 <string name="cos_dlg_pacing_goal">Πέτυχες το στόχο του μήνα! Διάλεξε το δώρο που επιθυμείς να ενεργοποιήσεις!</string>
135 + <string name="cos_mfy_other">ΆΛΛΕΣ</string>
135 136
136 <string-array name="coupons_array"> 137 <string-array name="coupons_array">
137 <item>Κουπόνια</item> 138 <item>Κουπόνια</item>
......